diff --git a/2025/docs/en/0x02_2025-What_are_Application_Security_Risks.md b/2025/docs/en/0x02_2025-What_are_Application_Security_Risks.md
index df1e9d066..e38da3d57 100644
--- a/2025/docs/en/0x02_2025-What_are_Application_Security_Risks.md
+++ b/2025/docs/en/0x02_2025-What_are_Application_Security_Risks.md
@@ -40,7 +40,7 @@ Vectors
dynamic by situation picture
- By Application exposure (by environment
+ By Application exposure (by environment)
|
Avg Weighted Exploit
diff --git a/node_modules/.bin/esparse b/node_modules/.bin/esparse
new file mode 120000
index 000000000..7423b18b2
--- /dev/null
+++ b/node_modules/.bin/esparse
@@ -0,0 +1 @@
+../esprima/bin/esparse.js
\ No newline at end of file
diff --git a/node_modules/.bin/esvalidate b/node_modules/.bin/esvalidate
new file mode 120000
index 000000000..16069effb
--- /dev/null
+++ b/node_modules/.bin/esvalidate
@@ -0,0 +1 @@
+../esprima/bin/esvalidate.js
\ No newline at end of file
diff --git a/node_modules/.bin/js-yaml b/node_modules/.bin/js-yaml
new file mode 120000
index 000000000..9dbd010d4
--- /dev/null
+++ b/node_modules/.bin/js-yaml
@@ -0,0 +1 @@
+../js-yaml/bin/js-yaml.js
\ No newline at end of file
diff --git a/node_modules/.bin/json5 b/node_modules/.bin/json5
new file mode 120000
index 000000000..217f37981
--- /dev/null
+++ b/node_modules/.bin/json5
@@ -0,0 +1 @@
+../json5/lib/cli.js
\ No newline at end of file
diff --git a/node_modules/.bin/markdown-it b/node_modules/.bin/markdown-it
new file mode 120000
index 000000000..894bcdb61
--- /dev/null
+++ b/node_modules/.bin/markdown-it
@@ -0,0 +1 @@
+../markdown-it/bin/markdown-it.js
\ No newline at end of file
diff --git a/node_modules/.bin/markdownlint b/node_modules/.bin/markdownlint
new file mode 120000
index 000000000..f2b1093a6
--- /dev/null
+++ b/node_modules/.bin/markdownlint
@@ -0,0 +1 @@
+../markdownlint-cli/markdownlint.js
\ No newline at end of file
diff --git a/node_modules/.bin/mkdirp b/node_modules/.bin/mkdirp
new file mode 120000
index 000000000..017896ceb
--- /dev/null
+++ b/node_modules/.bin/mkdirp
@@ -0,0 +1 @@
+../mkdirp/bin/cmd.js
\ No newline at end of file
diff --git a/node_modules/.bin/rc b/node_modules/.bin/rc
new file mode 120000
index 000000000..48b3cda74
--- /dev/null
+++ b/node_modules/.bin/rc
@@ -0,0 +1 @@
+../rc/cli.js
\ No newline at end of file
diff --git a/node_modules/.bin/resolve b/node_modules/.bin/resolve
new file mode 120000
index 000000000..b6afda6c7
--- /dev/null
+++ b/node_modules/.bin/resolve
@@ -0,0 +1 @@
+../resolve/bin/resolve
\ No newline at end of file
diff --git a/node_modules/.bin/rimraf b/node_modules/.bin/rimraf
new file mode 120000
index 000000000..4cd49a49d
--- /dev/null
+++ b/node_modules/.bin/rimraf
@@ -0,0 +1 @@
+../rimraf/bin.js
\ No newline at end of file
diff --git a/node_modules/.bin/semver b/node_modules/.bin/semver
new file mode 120000
index 000000000..317eb293d
--- /dev/null
+++ b/node_modules/.bin/semver
@@ -0,0 +1 @@
+../semver/bin/semver
\ No newline at end of file
diff --git a/node_modules/.bin/textlint b/node_modules/.bin/textlint
new file mode 120000
index 000000000..79026c194
--- /dev/null
+++ b/node_modules/.bin/textlint
@@ -0,0 +1 @@
+../textlint/bin/textlint.js
\ No newline at end of file
diff --git a/node_modules/.bin/textlint-formatter b/node_modules/.bin/textlint-formatter
new file mode 120000
index 000000000..6d7bea9b9
--- /dev/null
+++ b/node_modules/.bin/textlint-formatter
@@ -0,0 +1 @@
+../@textlint/linter-formatter/bin/cmd.js
\ No newline at end of file
diff --git a/node_modules/.package-lock.json b/node_modules/.package-lock.json
new file mode 100644
index 000000000..26579ea78
--- /dev/null
+++ b/node_modules/.package-lock.json
@@ -0,0 +1,3973 @@
+{
+ "name": "owasptop10",
+ "version": "1.0.0",
+ "lockfileVersion": 2,
+ "requires": true,
+ "packages": {
+ "node_modules/@azu/format-text": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@azu/format-text/-/format-text-1.0.2.tgz",
+ "integrity": "sha512-Swi4N7Edy1Eqq82GxgEECXSSLyn6GOb5htRFPzBDdUkECGXtlf12ynO5oJSpWKPwCaUssOu7NfhDcCWpIC6Ywg==",
+ "dev": true
+ },
+ "node_modules/@azu/style-format": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@azu/style-format/-/style-format-1.0.1.tgz",
+ "integrity": "sha512-AHcTojlNBdD/3/KxIKlg8sxIWHfOtQszLvOpagLTO+bjC3u7SAszu1lf//u7JJC50aUSH+BVWDD/KvaA6Gfn5g==",
+ "dev": true,
+ "dependencies": {
+ "@azu/format-text": "^1.0.1"
+ }
+ },
+ "node_modules/@textlint/ast-node-types": {
+ "version": "4.4.3",
+ "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-4.4.3.tgz",
+ "integrity": "sha512-qi2jjgO6Tn3KNPGnm6B7p6QTEPvY95NFsIAaJuwbulur8iJUEenp1OnoUfiDaC/g2WPPEFkcfXpmnu8XEMFo2A==",
+ "dev": true
+ },
+ "node_modules/@textlint/ast-tester": {
+ "version": "2.3.5",
+ "resolved": "https://registry.npmjs.org/@textlint/ast-tester/-/ast-tester-2.3.5.tgz",
+ "integrity": "sha512-sbw0Edx22/Fa9fwObpus5KyhCnGKhyP1tU7flA7kwTi9EqQq2KFztz1c/QQWpgqymbdSPWg7HpAvGf4ru4FDZg==",
+ "dev": true,
+ "dependencies": {
+ "@textlint/ast-node-types": "^4.4.3"
+ }
+ },
+ "node_modules/@textlint/ast-traverse": {
+ "version": "2.3.5",
+ "resolved": "https://registry.npmjs.org/@textlint/ast-traverse/-/ast-traverse-2.3.5.tgz",
+ "integrity": "sha512-yo1gIoXDx2bNs1JjC9viRxJpErNsfPtzb585KcVwWxxWmu3tXlT2iz13iKdjj5FMYPJe/PORe7lYqymkSUZ7kg==",
+ "dev": true,
+ "dependencies": {
+ "@textlint/ast-node-types": "^4.4.3"
+ }
+ },
+ "node_modules/@textlint/feature-flag": {
+ "version": "3.3.5",
+ "resolved": "https://registry.npmjs.org/@textlint/feature-flag/-/feature-flag-3.3.5.tgz",
+ "integrity": "sha512-S4JhbDQGu1Sutnvqs96nwxqwaErHrL49/QQDR8i/YNsINlurfKJbmktotb+w+qzeSibDibKzB8feOMVBXmO9Ww==",
+ "dev": true,
+ "dependencies": {
+ "map-like": "^2.0.0"
+ }
+ },
+ "node_modules/@textlint/fixer-formatter": {
+ "version": "3.3.5",
+ "resolved": "https://registry.npmjs.org/@textlint/fixer-formatter/-/fixer-formatter-3.3.5.tgz",
+ "integrity": "sha512-FHfOQLvJV88vgAI9wwbAjtffo4ZtAW0bV8xkC3dY2DdVyo+7Tnhz0l2XPw2VFmyzpeHx9Slqw8nEv46YEs4JaQ==",
+ "dev": true,
+ "dependencies": {
+ "@textlint/module-interop": "^1.2.5",
+ "@textlint/types": "^1.5.5",
+ "chalk": "^1.1.3",
+ "debug": "^4.3.1",
+ "diff": "^4.0.2",
+ "is-file": "^1.0.0",
+ "string-width": "^1.0.2",
+ "strip-ansi": "^6.0.0",
+ "text-table": "^0.2.0",
+ "try-resolve": "^1.0.1"
+ }
+ },
+ "node_modules/@textlint/get-config-base-dir": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@textlint/get-config-base-dir/-/get-config-base-dir-2.0.0.tgz",
+ "integrity": "sha512-J3cG1pl2llYD4ZaZMe0qVgVaHT8RvT+/SW1FHQ8HRceNalMM9O0Y8iIgtl4GGOx4vMghoIPKFVLASw8P8bJ3ZA==",
+ "dev": true
+ },
+ "node_modules/@textlint/kernel": {
+ "version": "3.4.5",
+ "resolved": "https://registry.npmjs.org/@textlint/kernel/-/kernel-3.4.5.tgz",
+ "integrity": "sha512-KGeOq4mbjPe3okDtPw7mbnTX/wP66ndmRKAoOz8gOKDIDRlH8nOG/av6k6xbVhdMk9+ZnomqU8jSSYwTZHzAnA==",
+ "dev": true,
+ "dependencies": {
+ "@textlint/ast-node-types": "^4.4.3",
+ "@textlint/ast-tester": "^2.3.5",
+ "@textlint/ast-traverse": "^2.3.5",
+ "@textlint/feature-flag": "^3.3.5",
+ "@textlint/source-code-fixer": "^3.4.5",
+ "@textlint/types": "^1.5.5",
+ "@textlint/utils": "^1.2.5",
+ "debug": "^4.3.1",
+ "deep-equal": "^1.1.1",
+ "map-like": "^2.0.0",
+ "structured-source": "^3.0.2"
+ }
+ },
+ "node_modules/@textlint/linter-formatter": {
+ "version": "3.3.5",
+ "resolved": "https://registry.npmjs.org/@textlint/linter-formatter/-/linter-formatter-3.3.5.tgz",
+ "integrity": "sha512-ujQwgGGK4nVYRuNeW8zDyxax2Z8FTRips5f3VBhWpJaR7hlqdh1iNahul8iJ+1JbfXiHm+51a01myoqGGh1ENA==",
+ "dev": true,
+ "dependencies": {
+ "@azu/format-text": "^1.0.1",
+ "@azu/style-format": "^1.0.0",
+ "@textlint/module-interop": "^1.2.5",
+ "@textlint/types": "^1.5.5",
+ "chalk": "^1.1.3",
+ "concat-stream": "^1.6.2",
+ "debug": "^4.3.1",
+ "is-file": "^1.0.0",
+ "js-yaml": "^3.14.1",
+ "optionator": "^0.9.1",
+ "pluralize": "^2.0.0",
+ "string-width": "^1.0.2",
+ "strip-ansi": "^6.0.0",
+ "table": "^3.8.3",
+ "text-table": "^0.2.0",
+ "try-resolve": "^1.0.1",
+ "xml-escape": "^1.1.0"
+ },
+ "bin": {
+ "textlint-formatter": "bin/cmd.js"
+ }
+ },
+ "node_modules/@textlint/markdown-to-ast": {
+ "version": "6.3.5",
+ "resolved": "https://registry.npmjs.org/@textlint/markdown-to-ast/-/markdown-to-ast-6.3.5.tgz",
+ "integrity": "sha512-DjVEy61klC8OjQYP+iIukI95pjCM58jhpE046apqGWLo6JQSatfscJlcxmbRivfTQSVsa00RF2ciUFBmw3bobg==",
+ "dev": true,
+ "dependencies": {
+ "@textlint/ast-node-types": "^4.4.3",
+ "debug": "^4.3.1",
+ "remark-frontmatter": "^1.3.3",
+ "remark-parse": "^5.0.0",
+ "structured-source": "^3.0.2",
+ "traverse": "^0.6.6",
+ "unified": "^6.2.0"
+ }
+ },
+ "node_modules/@textlint/module-interop": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/@textlint/module-interop/-/module-interop-1.2.5.tgz",
+ "integrity": "sha512-+yEluCSbj6oxk9ENFojVcSxURvXOg7AU3vBiVHPjPEShaqbzZZ6tcut6gbDcIYhEDUkegZGmGwyfOe+wNABhKw==",
+ "dev": true
+ },
+ "node_modules/@textlint/regexp-string-matcher": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@textlint/regexp-string-matcher/-/regexp-string-matcher-1.1.1.tgz",
+ "integrity": "sha512-rrNUCKGKYBrZALotSF8D5A8xD05VHX6kxv0BP805Ig2M73Ha6LK+de31+ZocGm4CO+sikVFYyMCPPJhp7bCXcw==",
+ "dev": true,
+ "dependencies": {
+ "escape-string-regexp": "^2.0.0",
+ "execall": "^2.0.0",
+ "lodash.sortby": "^4.7.0",
+ "lodash.uniq": "^4.5.0",
+ "lodash.uniqwith": "^4.5.0",
+ "to-regex": "^3.0.2"
+ }
+ },
+ "node_modules/@textlint/regexp-string-matcher/node_modules/escape-string-regexp": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
+ "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@textlint/source-code-fixer": {
+ "version": "3.4.5",
+ "resolved": "https://registry.npmjs.org/@textlint/source-code-fixer/-/source-code-fixer-3.4.5.tgz",
+ "integrity": "sha512-YUcBg6zs7H5ycLwWdfv5LHWlBx7iBAQL6vHY2uPw8AMPYgzU6/f91NGBU/QR7/FVw0e7v9zMngcRN1hMOxpFCw==",
+ "dev": true,
+ "dependencies": {
+ "@textlint/types": "^1.5.5",
+ "debug": "^4.3.1"
+ }
+ },
+ "node_modules/@textlint/text-to-ast": {
+ "version": "3.3.5",
+ "resolved": "https://registry.npmjs.org/@textlint/text-to-ast/-/text-to-ast-3.3.5.tgz",
+ "integrity": "sha512-+1+Kj7wuQHgc43RowVN/KWz3/aevk2RHARX8/p9Y+pE25HRJ36KZo1PLSYYx82NnWpvZTXB3QONWiAukdv6jBg==",
+ "dev": true,
+ "dependencies": {
+ "@textlint/ast-node-types": "^4.4.3"
+ }
+ },
+ "node_modules/@textlint/textlint-plugin-markdown": {
+ "version": "5.3.5",
+ "resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-markdown/-/textlint-plugin-markdown-5.3.5.tgz",
+ "integrity": "sha512-x1/DJa+6wsR4LwkL+JA5OdEoZ/PhxtkKb20IqHTsLwQIeDL4aNWT6GrAk0HKTOomzsyNrUBuvzYiCy/f75LtBw==",
+ "dev": true,
+ "dependencies": {
+ "@textlint/markdown-to-ast": "^6.3.5"
+ }
+ },
+ "node_modules/@textlint/textlint-plugin-text": {
+ "version": "4.3.5",
+ "resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-text/-/textlint-plugin-text-4.3.5.tgz",
+ "integrity": "sha512-ygjzswWrzlCiNNCy1+WF0oI8tNCk+1fS/nJEtG7DHuTVvE0OTn4MdWJXOD8sd+ZffXr+uFmEqMisHo06+RpQCg==",
+ "dev": true,
+ "dependencies": {
+ "@textlint/text-to-ast": "^3.3.5"
+ }
+ },
+ "node_modules/@textlint/types": {
+ "version": "1.5.5",
+ "resolved": "https://registry.npmjs.org/@textlint/types/-/types-1.5.5.tgz",
+ "integrity": "sha512-80P6fcqgsG9bP6JgR6W/E/oIx+71pplaicYCvvB4vMIeGk0OnWls4Q21kCpDYmq/C/ABtZ/Gy/Ov/8ExQPeQ7A==",
+ "dev": true,
+ "dependencies": {
+ "@textlint/ast-node-types": "^4.4.3"
+ }
+ },
+ "node_modules/@textlint/utils": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/@textlint/utils/-/utils-1.2.5.tgz",
+ "integrity": "sha512-2vgz4x3tKK+R9N0OlOovJClRCHubxZi86ki218cvRVpoU9pPrHwkwZud+rjItDl2xFBj7Gujww7c0W1wyytWVQ==",
+ "dev": true
+ },
+ "node_modules/@types/unist": {
+ "version": "2.0.11",
+ "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz",
+ "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==",
+ "dev": true
+ },
+ "node_modules/ajv": {
+ "version": "4.11.8",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz",
+ "integrity": "sha512-I/bSHSNEcFFqXLf91nchoNB9D1Kie3QKcWdchYUaoIg1+1bdWDkdfdlvdIOJbi9U8xR0y+MWc5D+won9v95WlQ==",
+ "dev": true,
+ "dependencies": {
+ "co": "^4.6.0",
+ "json-stable-stringify": "^1.0.1"
+ }
+ },
+ "node_modules/ajv-keywords": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz",
+ "integrity": "sha512-vuBv+fm2s6cqUyey2A7qYcvsik+GMDJsw8BARP2sDE76cqmaZVarsvHf7Vx6VJ0Xk8gLl+u3MoAPf6gKzJefeA==",
+ "dev": true,
+ "peerDependencies": {
+ "ajv": ">=4.10.0"
+ }
+ },
+ "node_modules/ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/argparse": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "dev": true,
+ "dependencies": {
+ "sprintf-js": "~1.0.2"
+ }
+ },
+ "node_modules/array-buffer-byte-length": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz",
+ "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==",
+ "dev": true,
+ "dependencies": {
+ "call-bound": "^1.0.3",
+ "is-array-buffer": "^3.0.5"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/arraybuffer.prototype.slice": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz",
+ "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==",
+ "dev": true,
+ "dependencies": {
+ "array-buffer-byte-length": "^1.0.1",
+ "call-bind": "^1.0.8",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.5",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.6",
+ "is-array-buffer": "^3.0.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/assign-symbols": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
+ "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/async-function": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz",
+ "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/available-typed-arrays": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz",
+ "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==",
+ "dev": true,
+ "dependencies": {
+ "possible-typed-array-names": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/bail": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz",
+ "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==",
+ "dev": true,
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "dev": true
+ },
+ "node_modules/boundary": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/boundary/-/boundary-1.0.1.tgz",
+ "integrity": "sha512-AaLhxHwYVh55iOTJncV3DE5o7RakEUSSj64XXEWRTiIhlp7aDI8qR0vY/k8Uw0Z234VjZi/iG/WxfrvqYPUCww==",
+ "dev": true
+ },
+ "node_modules/brace-expansion": {
+ "version": "1.1.13",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz",
+ "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/buffer-from": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
+ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
+ "dev": true
+ },
+ "node_modules/call-bind": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz",
+ "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==",
+ "dev": true,
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.0",
+ "es-define-property": "^1.0.0",
+ "get-intrinsic": "^1.2.4",
+ "set-function-length": "^1.2.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/call-bind-apply-helpers": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
+ "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
+ "dev": true,
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/call-bound": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz",
+ "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==",
+ "dev": true,
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.2",
+ "get-intrinsic": "^1.3.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^2.2.1",
+ "escape-string-regexp": "^1.0.2",
+ "has-ansi": "^2.0.0",
+ "strip-ansi": "^3.0.0",
+ "supports-color": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/chalk/node_modules/strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/character-entities": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz",
+ "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==",
+ "dev": true,
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/character-entities-legacy": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz",
+ "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==",
+ "dev": true,
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/character-reference-invalid": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz",
+ "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==",
+ "dev": true,
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/charenc": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz",
+ "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==",
+ "dev": true,
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/clone-regexp": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/clone-regexp/-/clone-regexp-2.2.0.tgz",
+ "integrity": "sha512-beMpP7BOtTipFuW8hrJvREQ2DrRu3BE7by0ZpibtfBA+qfHYvMGTc2Yb1JMYPKg/JUw0CHYvpg796aNTSW9z7Q==",
+ "dev": true,
+ "dependencies": {
+ "is-regexp": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/co": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
+ "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==",
+ "dev": true,
+ "engines": {
+ "iojs": ">= 1.0.0",
+ "node": ">= 0.12.0"
+ }
+ },
+ "node_modules/code-point-at": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
+ "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/collapse-white-space": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.6.tgz",
+ "integrity": "sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==",
+ "dev": true,
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/commander": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz",
+ "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+ "dev": true
+ },
+ "node_modules/concat-stream": {
+ "version": "1.6.2",
+ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
+ "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
+ "dev": true,
+ "engines": [
+ "node >= 0.8"
+ ],
+ "dependencies": {
+ "buffer-from": "^1.0.0",
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.2.2",
+ "typedarray": "^0.0.6"
+ }
+ },
+ "node_modules/core-util-is": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
+ "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==",
+ "dev": true
+ },
+ "node_modules/crypt": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz",
+ "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==",
+ "dev": true,
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/data-view-buffer": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz",
+ "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bound": "^1.0.3",
+ "es-errors": "^1.3.0",
+ "is-data-view": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/data-view-byte-length": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz",
+ "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bound": "^1.0.3",
+ "es-errors": "^1.3.0",
+ "is-data-view": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/inspect-js"
+ }
+ },
+ "node_modules/data-view-byte-offset": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz",
+ "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "es-errors": "^1.3.0",
+ "is-data-view": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/debug": {
+ "version": "4.4.3",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
+ "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
+ "dev": true,
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/deep-equal": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.2.tgz",
+ "integrity": "sha512-5tdhKF6DbU7iIzrIOa1AOUt39ZRm13cmL1cGEh//aqR8x9+tNfbywRf0n5FD/18OKMdo7DNEtrX2t22ZAkI+eg==",
+ "dev": true,
+ "dependencies": {
+ "is-arguments": "^1.1.1",
+ "is-date-object": "^1.0.5",
+ "is-regex": "^1.1.4",
+ "object-is": "^1.1.5",
+ "object-keys": "^1.1.1",
+ "regexp.prototype.flags": "^1.5.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/deep-extend": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
+ "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/deep-is": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
+ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
+ "dev": true
+ },
+ "node_modules/define-data-property": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
+ "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
+ "dev": true,
+ "dependencies": {
+ "es-define-property": "^1.0.0",
+ "es-errors": "^1.3.0",
+ "gopd": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/define-properties": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz",
+ "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==",
+ "dev": true,
+ "dependencies": {
+ "define-data-property": "^1.0.1",
+ "has-property-descriptors": "^1.0.0",
+ "object-keys": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/define-property": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
+ "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
+ "dev": true,
+ "dependencies": {
+ "is-descriptor": "^1.0.2",
+ "isobject": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/diff": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.4.tgz",
+ "integrity": "sha512-X07nttJQkwkfKfvTPG/KSnE2OMdcUCao6+eXF3wmnIQRn2aPAHH3VxDbDOdegkd6JbPsXqShpvEOHfAT+nCNwQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.3.1"
+ }
+ },
+ "node_modules/dunder-proto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
+ "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
+ "dev": true,
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.1",
+ "es-errors": "^1.3.0",
+ "gopd": "^1.2.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/entities": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.3.tgz",
+ "integrity": "sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==",
+ "dev": true
+ },
+ "node_modules/error-ex": {
+ "version": "1.3.4",
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz",
+ "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==",
+ "dev": true,
+ "dependencies": {
+ "is-arrayish": "^0.2.1"
+ }
+ },
+ "node_modules/es-abstract": {
+ "version": "1.24.1",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.1.tgz",
+ "integrity": "sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw==",
+ "dev": true,
+ "dependencies": {
+ "array-buffer-byte-length": "^1.0.2",
+ "arraybuffer.prototype.slice": "^1.0.4",
+ "available-typed-arrays": "^1.0.7",
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.4",
+ "data-view-buffer": "^1.0.2",
+ "data-view-byte-length": "^1.0.2",
+ "data-view-byte-offset": "^1.0.1",
+ "es-define-property": "^1.0.1",
+ "es-errors": "^1.3.0",
+ "es-object-atoms": "^1.1.1",
+ "es-set-tostringtag": "^2.1.0",
+ "es-to-primitive": "^1.3.0",
+ "function.prototype.name": "^1.1.8",
+ "get-intrinsic": "^1.3.0",
+ "get-proto": "^1.0.1",
+ "get-symbol-description": "^1.1.0",
+ "globalthis": "^1.0.4",
+ "gopd": "^1.2.0",
+ "has-property-descriptors": "^1.0.2",
+ "has-proto": "^1.2.0",
+ "has-symbols": "^1.1.0",
+ "hasown": "^2.0.2",
+ "internal-slot": "^1.1.0",
+ "is-array-buffer": "^3.0.5",
+ "is-callable": "^1.2.7",
+ "is-data-view": "^1.0.2",
+ "is-negative-zero": "^2.0.3",
+ "is-regex": "^1.2.1",
+ "is-set": "^2.0.3",
+ "is-shared-array-buffer": "^1.0.4",
+ "is-string": "^1.1.1",
+ "is-typed-array": "^1.1.15",
+ "is-weakref": "^1.1.1",
+ "math-intrinsics": "^1.1.0",
+ "object-inspect": "^1.13.4",
+ "object-keys": "^1.1.1",
+ "object.assign": "^4.1.7",
+ "own-keys": "^1.0.1",
+ "regexp.prototype.flags": "^1.5.4",
+ "safe-array-concat": "^1.1.3",
+ "safe-push-apply": "^1.0.0",
+ "safe-regex-test": "^1.1.0",
+ "set-proto": "^1.0.0",
+ "stop-iteration-iterator": "^1.1.0",
+ "string.prototype.trim": "^1.2.10",
+ "string.prototype.trimend": "^1.0.9",
+ "string.prototype.trimstart": "^1.0.8",
+ "typed-array-buffer": "^1.0.3",
+ "typed-array-byte-length": "^1.0.3",
+ "typed-array-byte-offset": "^1.0.4",
+ "typed-array-length": "^1.0.7",
+ "unbox-primitive": "^1.1.0",
+ "which-typed-array": "^1.1.19"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/es-define-property": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
+ "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-errors": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
+ "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-object-atoms": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
+ "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
+ "dev": true,
+ "dependencies": {
+ "es-errors": "^1.3.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-set-tostringtag": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz",
+ "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==",
+ "dev": true,
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.6",
+ "has-tostringtag": "^1.0.2",
+ "hasown": "^2.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-to-primitive": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz",
+ "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==",
+ "dev": true,
+ "dependencies": {
+ "is-callable": "^1.2.7",
+ "is-date-object": "^1.0.5",
+ "is-symbol": "^1.0.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/esprima": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+ "dev": true,
+ "bin": {
+ "esparse": "bin/esparse.js",
+ "esvalidate": "bin/esvalidate.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/execall": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/execall/-/execall-2.0.0.tgz",
+ "integrity": "sha512-0FU2hZ5Hh6iQnarpRtQurM/aAvp3RIbfvgLHrcqJYzhXyV2KFruhuChf9NC6waAhiUR7FFtlugkI4p7f2Fqlow==",
+ "dev": true,
+ "dependencies": {
+ "clone-regexp": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/extend": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
+ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
+ "dev": true
+ },
+ "node_modules/extend-shallow": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
+ "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
+ "dev": true,
+ "dependencies": {
+ "assign-symbols": "^1.0.0",
+ "is-extendable": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
+ "dev": true
+ },
+ "node_modules/fault": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/fault/-/fault-1.0.4.tgz",
+ "integrity": "sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==",
+ "dev": true,
+ "dependencies": {
+ "format": "^0.2.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/file-entry-cache": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz",
+ "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==",
+ "dev": true,
+ "dependencies": {
+ "flat-cache": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/find-up": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
+ "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==",
+ "dev": true,
+ "dependencies": {
+ "locate-path": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/flat-cache": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz",
+ "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==",
+ "dev": true,
+ "dependencies": {
+ "flatted": "^2.0.0",
+ "rimraf": "2.6.3",
+ "write": "1.0.3"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/flatted": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz",
+ "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==",
+ "dev": true
+ },
+ "node_modules/for-each": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz",
+ "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==",
+ "dev": true,
+ "dependencies": {
+ "is-callable": "^1.2.7"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/format": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz",
+ "integrity": "sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.4.x"
+ }
+ },
+ "node_modules/fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
+ "dev": true
+ },
+ "node_modules/function-bind": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/function.prototype.name": {
+ "version": "1.1.8",
+ "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz",
+ "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.3",
+ "define-properties": "^1.2.1",
+ "functions-have-names": "^1.2.3",
+ "hasown": "^2.0.2",
+ "is-callable": "^1.2.7"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/functions-have-names": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
+ "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/generator-function": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz",
+ "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/get-intrinsic": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
+ "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.2",
+ "es-define-property": "^1.0.1",
+ "es-errors": "^1.3.0",
+ "es-object-atoms": "^1.1.1",
+ "function-bind": "^1.1.2",
+ "get-proto": "^1.0.1",
+ "gopd": "^1.2.0",
+ "has-symbols": "^1.1.0",
+ "hasown": "^2.0.2",
+ "math-intrinsics": "^1.1.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-proto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
+ "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
+ "dev": true,
+ "dependencies": {
+ "dunder-proto": "^1.0.1",
+ "es-object-atoms": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/get-stdin": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz",
+ "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/get-symbol-description": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz",
+ "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==",
+ "dev": true,
+ "dependencies": {
+ "call-bound": "^1.0.3",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.6"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/glob": {
+ "version": "7.1.7",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz",
+ "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==",
+ "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me",
+ "dev": true,
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/globalthis": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz",
+ "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==",
+ "dev": true,
+ "dependencies": {
+ "define-properties": "^1.2.1",
+ "gopd": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/gopd": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
+ "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/graceful-fs": {
+ "version": "4.2.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
+ "dev": true
+ },
+ "node_modules/has-ansi": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
+ "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/has-bigints": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz",
+ "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-property-descriptors": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
+ "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
+ "dev": true,
+ "dependencies": {
+ "es-define-property": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-proto": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz",
+ "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==",
+ "dev": true,
+ "dependencies": {
+ "dunder-proto": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-symbols": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
+ "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-tostringtag": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
+ "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
+ "dev": true,
+ "dependencies": {
+ "has-symbols": "^1.0.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/hasown": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
+ "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
+ "dev": true,
+ "dependencies": {
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/hosted-git-info": {
+ "version": "2.8.9",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
+ "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
+ "dev": true
+ },
+ "node_modules/ignore": {
+ "version": "5.1.9",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.9.tgz",
+ "integrity": "sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+ "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.",
+ "dev": true,
+ "dependencies": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "dev": true
+ },
+ "node_modules/ini": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
+ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
+ "dev": true
+ },
+ "node_modules/internal-slot": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz",
+ "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==",
+ "dev": true,
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "hasown": "^2.0.2",
+ "side-channel": "^1.1.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/is-accessor-descriptor": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.1.tgz",
+ "integrity": "sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==",
+ "dev": true,
+ "dependencies": {
+ "hasown": "^2.0.0"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/is-alphabetical": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz",
+ "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==",
+ "dev": true,
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/is-alphanumerical": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz",
+ "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==",
+ "dev": true,
+ "dependencies": {
+ "is-alphabetical": "^1.0.0",
+ "is-decimal": "^1.0.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/is-arguments": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz",
+ "integrity": "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==",
+ "dev": true,
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "has-tostringtag": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-array-buffer": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz",
+ "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.3",
+ "get-intrinsic": "^1.2.6"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-arrayish": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+ "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
+ "dev": true
+ },
+ "node_modules/is-async-function": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz",
+ "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==",
+ "dev": true,
+ "dependencies": {
+ "async-function": "^1.0.0",
+ "call-bound": "^1.0.3",
+ "get-proto": "^1.0.1",
+ "has-tostringtag": "^1.0.2",
+ "safe-regex-test": "^1.1.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-bigint": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz",
+ "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==",
+ "dev": true,
+ "dependencies": {
+ "has-bigints": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-boolean-object": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz",
+ "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==",
+ "dev": true,
+ "dependencies": {
+ "call-bound": "^1.0.3",
+ "has-tostringtag": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-buffer": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+ "dev": true
+ },
+ "node_modules/is-callable": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
+ "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-core-module": {
+ "version": "2.16.1",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz",
+ "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==",
+ "dev": true,
+ "dependencies": {
+ "hasown": "^2.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-data-descriptor": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.1.tgz",
+ "integrity": "sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==",
+ "dev": true,
+ "dependencies": {
+ "hasown": "^2.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/is-data-view": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz",
+ "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==",
+ "dev": true,
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "get-intrinsic": "^1.2.6",
+ "is-typed-array": "^1.1.13"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-date-object": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz",
+ "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==",
+ "dev": true,
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "has-tostringtag": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-decimal": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz",
+ "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==",
+ "dev": true,
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/is-descriptor": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz",
+ "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==",
+ "dev": true,
+ "dependencies": {
+ "is-accessor-descriptor": "^1.0.1",
+ "is-data-descriptor": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "dev": true,
+ "dependencies": {
+ "is-plain-object": "^2.0.4"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-file": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-file/-/is-file-1.0.0.tgz",
+ "integrity": "sha512-ZGMuc+xA8mRnrXtmtf2l/EkIW2zaD2LSBWlaOVEF6yH4RTndHob65V4SwWWdtGKVthQfXPVKsXqw4TDUjbVxVQ==",
+ "dev": true
+ },
+ "node_modules/is-finalizationregistry": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz",
+ "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==",
+ "dev": true,
+ "dependencies": {
+ "call-bound": "^1.0.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+ "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==",
+ "dev": true,
+ "dependencies": {
+ "number-is-nan": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-generator-function": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz",
+ "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==",
+ "dev": true,
+ "dependencies": {
+ "call-bound": "^1.0.4",
+ "generator-function": "^2.0.0",
+ "get-proto": "^1.0.1",
+ "has-tostringtag": "^1.0.2",
+ "safe-regex-test": "^1.1.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-hexadecimal": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz",
+ "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==",
+ "dev": true,
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/is-map": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz",
+ "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-negative-zero": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz",
+ "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-number-object": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz",
+ "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==",
+ "dev": true,
+ "dependencies": {
+ "call-bound": "^1.0.3",
+ "has-tostringtag": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-plain-obj": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
+ "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "dev": true,
+ "dependencies": {
+ "isobject": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-regex": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz",
+ "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==",
+ "dev": true,
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "gopd": "^1.2.0",
+ "has-tostringtag": "^1.0.2",
+ "hasown": "^2.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-regexp": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-2.1.0.tgz",
+ "integrity": "sha512-OZ4IlER3zmRIoB9AqNhEggVxqIH4ofDns5nRrPS6yQxXE1TPCUpFznBfRQmQa8uC+pXqjMnukiJBxCisIxiLGA==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/is-set": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz",
+ "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-shared-array-buffer": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz",
+ "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==",
+ "dev": true,
+ "dependencies": {
+ "call-bound": "^1.0.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-string": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz",
+ "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==",
+ "dev": true,
+ "dependencies": {
+ "call-bound": "^1.0.3",
+ "has-tostringtag": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-symbol": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz",
+ "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==",
+ "dev": true,
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "has-symbols": "^1.1.0",
+ "safe-regex-test": "^1.1.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-typed-array": {
+ "version": "1.1.15",
+ "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz",
+ "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==",
+ "dev": true,
+ "dependencies": {
+ "which-typed-array": "^1.1.16"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-utf8": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
+ "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==",
+ "dev": true
+ },
+ "node_modules/is-weakmap": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz",
+ "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-weakref": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz",
+ "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==",
+ "dev": true,
+ "dependencies": {
+ "call-bound": "^1.0.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-weakset": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz",
+ "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bound": "^1.0.3",
+ "get-intrinsic": "^1.2.6"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-whitespace-character": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz",
+ "integrity": "sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w==",
+ "dev": true,
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/is-word-character": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.4.tgz",
+ "integrity": "sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA==",
+ "dev": true,
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
+ "dev": true
+ },
+ "node_modules/isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/js-yaml": {
+ "version": "3.14.2",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz",
+ "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==",
+ "dev": true,
+ "dependencies": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/json-parse-better-errors": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
+ "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
+ "dev": true
+ },
+ "node_modules/json-stable-stringify": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.3.0.tgz",
+ "integrity": "sha512-qtYiSSFlwot9XHtF9bD9c7rwKjr+RecWT//ZnPvSmEjpV5mmPOCN4j8UjY5hbjNkOwZ/jQv3J6R1/pL7RwgMsg==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.4",
+ "isarray": "^2.0.5",
+ "jsonify": "^0.0.1",
+ "object-keys": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/json-stable-stringify/node_modules/isarray": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
+ "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
+ "dev": true
+ },
+ "node_modules/json5": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
+ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
+ "dev": true,
+ "bin": {
+ "json5": "lib/cli.js"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/jsonc-parser": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz",
+ "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==",
+ "dev": true
+ },
+ "node_modules/jsonify": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.1.tgz",
+ "integrity": "sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/levn": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
+ "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
+ "dev": true,
+ "dependencies": {
+ "prelude-ls": "^1.2.1",
+ "type-check": "~0.4.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/linkify-it": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz",
+ "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==",
+ "dev": true,
+ "dependencies": {
+ "uc.micro": "^1.0.1"
+ }
+ },
+ "node_modules/load-json-file": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
+ "integrity": "sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==",
+ "dev": true,
+ "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"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/locate-path": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
+ "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==",
+ "dev": true,
+ "dependencies": {
+ "p-locate": "^2.0.0",
+ "path-exists": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/lodash": {
+ "version": "4.17.23",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz",
+ "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==",
+ "dev": true
+ },
+ "node_modules/lodash.differencewith": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.differencewith/-/lodash.differencewith-4.5.0.tgz",
+ "integrity": "sha512-/8JFjydAS+4bQuo3CpLMBv7WxGFyk7/etOAsrQUCu0a9QVDemxv0YQ0rFyeZvqlUD314SERfNlgnlqqHmaQ0Cg==",
+ "dev": true
+ },
+ "node_modules/lodash.flatten": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz",
+ "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==",
+ "dev": true
+ },
+ "node_modules/lodash.sortby": {
+ "version": "4.7.0",
+ "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz",
+ "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==",
+ "dev": true
+ },
+ "node_modules/lodash.uniq": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
+ "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==",
+ "dev": true
+ },
+ "node_modules/lodash.uniqwith": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.uniqwith/-/lodash.uniqwith-4.5.0.tgz",
+ "integrity": "sha512-7lYL8bLopMoy4CTICbxygAUq6CdRJ36vFc80DucPueUee+d5NBRxz3FdT9Pes/HEx5mPoT9jwnsEJWz1N7uq7Q==",
+ "dev": true
+ },
+ "node_modules/log-symbols": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz",
+ "integrity": "sha512-mmPrW0Fh2fxOzdBbFv4g1m6pR72haFLPJ2G5SJEELf1y+iaQrDG6cWCPjy54RHYbZAt7X+ls690Kw62AdWXBzQ==",
+ "dev": true,
+ "dependencies": {
+ "chalk": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/map-like": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/map-like/-/map-like-2.0.0.tgz",
+ "integrity": "sha512-CbgcN622YzXC+k9oUroBSPFVX4in/w66mab/zpvSfFeUezSGD8C13c2RetyM1eo1jkp3sKrzvmf2HFEp5QOdZA==",
+ "dev": true
+ },
+ "node_modules/markdown-escapes": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.4.tgz",
+ "integrity": "sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==",
+ "dev": true,
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/markdown-it": {
+ "version": "12.0.2",
+ "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.0.2.tgz",
+ "integrity": "sha512-4Lkvjbv2kK+moL9TbeV+6/NHx+1Q+R/NIdUlFlkqkkzUcTod4uiyTJRiBidKR9qXSdkNFkgv+AELY8KN9vSgVA==",
+ "dev": true,
+ "dependencies": {
+ "argparse": "^2.0.1",
+ "entities": "~2.0.0",
+ "linkify-it": "^3.0.1",
+ "mdurl": "^1.0.1",
+ "uc.micro": "^1.0.5"
+ },
+ "bin": {
+ "markdown-it": "bin/markdown-it.js"
+ }
+ },
+ "node_modules/markdown-it/node_modules/argparse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+ "dev": true
+ },
+ "node_modules/markdownlint": {
+ "version": "0.22.0",
+ "resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.22.0.tgz",
+ "integrity": "sha512-J4B+iMc12pOdp/wfYi03W2qfAfEyiZzq3qvQh/8vOMNU8vXYY6Jg440EY7dWTBCqROhb1i4nAn3BTByJ5kdx1w==",
+ "dev": true,
+ "dependencies": {
+ "markdown-it": "12.0.2"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/markdownlint-cli": {
+ "version": "0.26.0",
+ "resolved": "https://registry.npmjs.org/markdownlint-cli/-/markdownlint-cli-0.26.0.tgz",
+ "integrity": "sha512-biLfeGNZG9nw0yJbtFBzRlew2/P5w7JSseKwolSox3zejs7dLpGvPgqbC+iqJnqqGWcWLtXaXh8bBEKWmfl10A==",
+ "dev": true,
+ "dependencies": {
+ "commander": "~6.2.1",
+ "deep-extend": "~0.6.0",
+ "get-stdin": "~8.0.0",
+ "glob": "~7.1.6",
+ "ignore": "~5.1.8",
+ "js-yaml": "~3.14.1",
+ "jsonc-parser": "~3.0.0",
+ "lodash.differencewith": "~4.5.0",
+ "lodash.flatten": "~4.4.0",
+ "markdownlint": "~0.22.0",
+ "markdownlint-rule-helpers": "~0.13.0",
+ "minimatch": "~3.0.4",
+ "minimist": "~1.2.5",
+ "rc": "~1.2.8"
+ },
+ "bin": {
+ "markdownlint": "markdownlint.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/markdownlint-rule-helpers": {
+ "version": "0.13.0",
+ "resolved": "https://registry.npmjs.org/markdownlint-rule-helpers/-/markdownlint-rule-helpers-0.13.0.tgz",
+ "integrity": "sha512-rRY0itbcHG4e+ntz0bbY3AIceSJMKS0TafEMgEtKVHRZ54/JUSy6/4ypCL618RlJvYRej+xMLxX5nkJqIeTZaQ==",
+ "dev": true
+ },
+ "node_modules/math-intrinsics": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
+ "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/md5": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz",
+ "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==",
+ "dev": true,
+ "dependencies": {
+ "charenc": "0.0.2",
+ "crypt": "0.0.2",
+ "is-buffer": "~1.1.6"
+ }
+ },
+ "node_modules/mdurl": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz",
+ "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==",
+ "dev": true
+ },
+ "node_modules/minimatch": {
+ "version": "3.0.8",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz",
+ "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/minimist": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
+ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/mkdirp": {
+ "version": "0.5.6",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
+ "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
+ "dev": true,
+ "dependencies": {
+ "minimist": "^1.2.6"
+ },
+ "bin": {
+ "mkdirp": "bin/cmd.js"
+ }
+ },
+ "node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "dev": true
+ },
+ "node_modules/normalize-package-data": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
+ "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
+ "dev": true,
+ "dependencies": {
+ "hosted-git-info": "^2.1.4",
+ "resolve": "^1.10.0",
+ "semver": "2 || 3 || 4 || 5",
+ "validate-npm-package-license": "^3.0.1"
+ }
+ },
+ "node_modules/number-is-nan": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
+ "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object-inspect": {
+ "version": "1.13.4",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz",
+ "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/object-is": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz",
+ "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/object-keys": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/object.assign": {
+ "version": "4.1.7",
+ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz",
+ "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.3",
+ "define-properties": "^1.2.1",
+ "es-object-atoms": "^1.0.0",
+ "has-symbols": "^1.1.0",
+ "object-keys": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+ "dev": true,
+ "dependencies": {
+ "wrappy": "1"
+ }
+ },
+ "node_modules/optionator": {
+ "version": "0.9.4",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz",
+ "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==",
+ "dev": true,
+ "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"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/own-keys": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz",
+ "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==",
+ "dev": true,
+ "dependencies": {
+ "get-intrinsic": "^1.2.6",
+ "object-keys": "^1.1.1",
+ "safe-push-apply": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/p-limit": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
+ "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
+ "dev": true,
+ "dependencies": {
+ "p-try": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/p-locate": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
+ "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==",
+ "dev": true,
+ "dependencies": {
+ "p-limit": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/p-try": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
+ "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/parse-entities": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-1.2.2.tgz",
+ "integrity": "sha512-NzfpbxW/NPrzZ/yYSoQxyqUZMZXIdCfE0OIN4ESsnptHJECoUk3FZktxNuzQf4tjt5UEopnxpYJbvYuxIFDdsg==",
+ "dev": true,
+ "dependencies": {
+ "character-entities": "^1.0.0",
+ "character-entities-legacy": "^1.0.0",
+ "character-reference-invalid": "^1.0.0",
+ "is-alphanumerical": "^1.0.0",
+ "is-decimal": "^1.0.0",
+ "is-hexadecimal": "^1.0.0"
+ }
+ },
+ "node_modules/parse-json": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
+ "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==",
+ "dev": true,
+ "dependencies": {
+ "error-ex": "^1.2.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/path-parse": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+ "dev": true
+ },
+ "node_modules/path-to-glob-pattern": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/path-to-glob-pattern/-/path-to-glob-pattern-1.0.2.tgz",
+ "integrity": "sha512-ryF65N5MBB9XOjE5mMOi+0bMrh1F0ORQmqDSSERvv5zD62Cfc5QC6rK1AR1xuDIG1I091CkNENblbteWy1bXgw==",
+ "dev": true
+ },
+ "node_modules/path-type": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
+ "integrity": "sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==",
+ "dev": true,
+ "dependencies": {
+ "graceful-fs": "^4.1.2",
+ "pify": "^2.0.0",
+ "pinkie-promise": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/pinkie": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
+ "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/pinkie-promise": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
+ "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==",
+ "dev": true,
+ "dependencies": {
+ "pinkie": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/pluralize": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-2.0.0.tgz",
+ "integrity": "sha512-TqNZzQCD4S42De9IfnnBvILN7HAW7riLqsCyp8lgjXeysyPlX5HhqKAcJHHHb9XskE4/a+7VGC9zzx8Ls0jOAw==",
+ "dev": true
+ },
+ "node_modules/possible-typed-array-names": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz",
+ "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/prelude-ls": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
+ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/process-nextick-args": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
+ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
+ "dev": true
+ },
+ "node_modules/rc": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
+ "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
+ "dev": true,
+ "dependencies": {
+ "deep-extend": "^0.6.0",
+ "ini": "~1.3.0",
+ "minimist": "^1.2.0",
+ "strip-json-comments": "~2.0.1"
+ },
+ "bin": {
+ "rc": "cli.js"
+ }
+ },
+ "node_modules/rc-config-loader": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/rc-config-loader/-/rc-config-loader-3.0.0.tgz",
+ "integrity": "sha512-bwfUSB37TWkHfP+PPjb/x8BUjChFmmBK44JMfVnU7paisWqZl/o5k7ttCH+EQLnrbn2Aq8Fo1LAsyUiz+WF4CQ==",
+ "dev": true,
+ "dependencies": {
+ "debug": "^4.1.1",
+ "js-yaml": "^3.12.0",
+ "json5": "^2.1.1",
+ "require-from-string": "^2.0.2"
+ }
+ },
+ "node_modules/read-pkg": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
+ "integrity": "sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==",
+ "dev": true,
+ "dependencies": {
+ "load-json-file": "^1.0.0",
+ "normalize-package-data": "^2.3.2",
+ "path-type": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/read-pkg-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz",
+ "integrity": "sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==",
+ "dev": true,
+ "dependencies": {
+ "find-up": "^2.0.0",
+ "read-pkg": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/read-pkg-up/node_modules/load-json-file": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
+ "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==",
+ "dev": true,
+ "dependencies": {
+ "graceful-fs": "^4.1.2",
+ "parse-json": "^4.0.0",
+ "pify": "^3.0.0",
+ "strip-bom": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/read-pkg-up/node_modules/parse-json": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
+ "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==",
+ "dev": true,
+ "dependencies": {
+ "error-ex": "^1.3.1",
+ "json-parse-better-errors": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/read-pkg-up/node_modules/path-type": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
+ "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
+ "dev": true,
+ "dependencies": {
+ "pify": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/read-pkg-up/node_modules/pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/read-pkg-up/node_modules/read-pkg": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
+ "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==",
+ "dev": true,
+ "dependencies": {
+ "load-json-file": "^4.0.0",
+ "normalize-package-data": "^2.3.2",
+ "path-type": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/read-pkg-up/node_modules/strip-bom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+ "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/readable-stream": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+ "dev": true,
+ "dependencies": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "node_modules/reflect.getprototypeof": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz",
+ "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.8",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.9",
+ "es-errors": "^1.3.0",
+ "es-object-atoms": "^1.0.0",
+ "get-intrinsic": "^1.2.7",
+ "get-proto": "^1.0.1",
+ "which-builtin-type": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/regex-not": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
+ "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
+ "dev": true,
+ "dependencies": {
+ "extend-shallow": "^3.0.2",
+ "safe-regex": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/regexp.prototype.flags": {
+ "version": "1.5.4",
+ "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz",
+ "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.8",
+ "define-properties": "^1.2.1",
+ "es-errors": "^1.3.0",
+ "get-proto": "^1.0.1",
+ "gopd": "^1.2.0",
+ "set-function-name": "^2.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/remark-frontmatter": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/remark-frontmatter/-/remark-frontmatter-1.3.3.tgz",
+ "integrity": "sha512-fM5eZPBvu2pVNoq3ZPW22q+5Ativ1oLozq2qYt9I2oNyxiUd/tDl0iLLntEVAegpZIslPWg1brhcP1VsaSVUag==",
+ "dev": true,
+ "dependencies": {
+ "fault": "^1.0.1",
+ "xtend": "^4.0.1"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/remark-parse": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-5.0.0.tgz",
+ "integrity": "sha512-b3iXszZLH1TLoyUzrATcTQUZrwNl1rE70rVdSruJFlDaJ9z5aMkhrG43Pp68OgfHndL/ADz6V69Zow8cTQu+JA==",
+ "dev": true,
+ "dependencies": {
+ "collapse-white-space": "^1.0.2",
+ "is-alphabetical": "^1.0.0",
+ "is-decimal": "^1.0.0",
+ "is-whitespace-character": "^1.0.0",
+ "is-word-character": "^1.0.0",
+ "markdown-escapes": "^1.0.0",
+ "parse-entities": "^1.1.0",
+ "repeat-string": "^1.5.4",
+ "state-toggle": "^1.0.0",
+ "trim": "0.0.1",
+ "trim-trailing-lines": "^1.0.0",
+ "unherit": "^1.0.4",
+ "unist-util-remove-position": "^1.0.0",
+ "vfile-location": "^2.0.0",
+ "xtend": "^4.0.1"
+ }
+ },
+ "node_modules/repeat-string": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
+ "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/replace-ext": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz",
+ "integrity": "sha512-vuNYXC7gG7IeVNBC1xUllqCcZKRbJoSPOBhnTEcAIiKCsbuef6zO3F0Rve3isPMMoNoQRWjQwbAgAjHUHniyEA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/require-from-string": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
+ "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/resolve": {
+ "version": "1.22.11",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz",
+ "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==",
+ "dev": true,
+ "dependencies": {
+ "is-core-module": "^2.16.1",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
+ },
+ "bin": {
+ "resolve": "bin/resolve"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/ret": {
+ "version": "0.1.15",
+ "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
+ "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.12"
+ }
+ },
+ "node_modules/rimraf": {
+ "version": "2.6.3",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
+ "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
+ "deprecated": "Rimraf versions prior to v4 are no longer supported",
+ "dev": true,
+ "dependencies": {
+ "glob": "^7.1.3"
+ },
+ "bin": {
+ "rimraf": "bin.js"
+ }
+ },
+ "node_modules/safe-array-concat": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz",
+ "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.2",
+ "get-intrinsic": "^1.2.6",
+ "has-symbols": "^1.1.0",
+ "isarray": "^2.0.5"
+ },
+ "engines": {
+ "node": ">=0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/safe-array-concat/node_modules/isarray": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
+ "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
+ "dev": true
+ },
+ "node_modules/safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "dev": true
+ },
+ "node_modules/safe-push-apply": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz",
+ "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==",
+ "dev": true,
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "isarray": "^2.0.5"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/safe-push-apply/node_modules/isarray": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
+ "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
+ "dev": true
+ },
+ "node_modules/safe-regex": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
+ "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==",
+ "dev": true,
+ "dependencies": {
+ "ret": "~0.1.10"
+ }
+ },
+ "node_modules/safe-regex-test": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz",
+ "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==",
+ "dev": true,
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "es-errors": "^1.3.0",
+ "is-regex": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/semver": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver"
+ }
+ },
+ "node_modules/set-function-length": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz",
+ "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==",
+ "dev": true,
+ "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"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/set-function-name": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz",
+ "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==",
+ "dev": true,
+ "dependencies": {
+ "define-data-property": "^1.1.4",
+ "es-errors": "^1.3.0",
+ "functions-have-names": "^1.2.3",
+ "has-property-descriptors": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/set-proto": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz",
+ "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==",
+ "dev": true,
+ "dependencies": {
+ "dunder-proto": "^1.0.1",
+ "es-errors": "^1.3.0",
+ "es-object-atoms": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/side-channel": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz",
+ "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==",
+ "dev": true,
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "object-inspect": "^1.13.3",
+ "side-channel-list": "^1.0.0",
+ "side-channel-map": "^1.0.1",
+ "side-channel-weakmap": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/side-channel-list": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz",
+ "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==",
+ "dev": true,
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "object-inspect": "^1.13.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/side-channel-map": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz",
+ "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==",
+ "dev": true,
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.5",
+ "object-inspect": "^1.13.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/side-channel-weakmap": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz",
+ "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==",
+ "dev": true,
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.5",
+ "object-inspect": "^1.13.3",
+ "side-channel-map": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/slice-ansi": {
+ "version": "0.0.4",
+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz",
+ "integrity": "sha512-up04hB2hR92PgjpyU3y/eg91yIBILyjVY26NvvciY3EVVPjybkMszMpXQ9QAkcS3I5rtJBDLoTxxg+qvW8c7rw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/spdx-correct": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz",
+ "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==",
+ "dev": true,
+ "dependencies": {
+ "spdx-expression-parse": "^3.0.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "node_modules/spdx-exceptions": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz",
+ "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==",
+ "dev": true
+ },
+ "node_modules/spdx-expression-parse": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
+ "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
+ "dev": true,
+ "dependencies": {
+ "spdx-exceptions": "^2.1.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "node_modules/spdx-license-ids": {
+ "version": "3.0.23",
+ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.23.tgz",
+ "integrity": "sha512-CWLcCCH7VLu13TgOH+r8p1O/Znwhqv/dbb6lqWy67G+pT1kHmeD/+V36AVb/vq8QMIQwVShJ6Ssl5FPh0fuSdw==",
+ "dev": true
+ },
+ "node_modules/sprintf-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
+ "dev": true
+ },
+ "node_modules/state-toggle": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.3.tgz",
+ "integrity": "sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ==",
+ "dev": true,
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/stop-iteration-iterator": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz",
+ "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==",
+ "dev": true,
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "internal-slot": "^1.1.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "dependencies": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "node_modules/string-width": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+ "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==",
+ "dev": true,
+ "dependencies": {
+ "code-point-at": "^1.0.0",
+ "is-fullwidth-code-point": "^1.0.0",
+ "strip-ansi": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/string-width/node_modules/strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/string.prototype.trim": {
+ "version": "1.2.10",
+ "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz",
+ "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.2",
+ "define-data-property": "^1.1.4",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.5",
+ "es-object-atoms": "^1.0.0",
+ "has-property-descriptors": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/string.prototype.trimend": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz",
+ "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.2",
+ "define-properties": "^1.2.1",
+ "es-object-atoms": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/string.prototype.trimstart": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz",
+ "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-object-atoms": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-ansi/node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-bom": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
+ "integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==",
+ "dev": true,
+ "dependencies": {
+ "is-utf8": "^0.2.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/strip-json-comments": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
+ "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/structured-source": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/structured-source/-/structured-source-3.0.2.tgz",
+ "integrity": "sha512-Ap7JHfKgmH40SUjumqyKTHYHNZ8GvGQskP34ks0ElHCDEig+bYGpmXVksxPSrgcY9rkJqhVMzfeg5GIpZelfpQ==",
+ "dev": true,
+ "dependencies": {
+ "boundary": "^1.0.1"
+ }
+ },
+ "node_modules/supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/supports-preserve-symlinks-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/table": {
+ "version": "3.8.3",
+ "resolved": "https://registry.npmjs.org/table/-/table-3.8.3.tgz",
+ "integrity": "sha512-RZuzIOtzFbprLCE0AXhkI0Xi42ZJLZhCC+qkwuMLf/Vjz3maWpA8gz1qMdbmNoI9cOROT2Am/DxeRyXenrL11g==",
+ "dev": true,
+ "dependencies": {
+ "ajv": "^4.7.0",
+ "ajv-keywords": "^1.0.0",
+ "chalk": "^1.1.1",
+ "lodash": "^4.0.0",
+ "slice-ansi": "0.0.4",
+ "string-width": "^2.0.0"
+ }
+ },
+ "node_modules/table/node_modules/ansi-regex": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz",
+ "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/table/node_modules/is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/table/node_modules/string-width": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+ "dev": true,
+ "dependencies": {
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/table/node_modules/strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/text-table": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
+ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
+ "dev": true
+ },
+ "node_modules/textlint": {
+ "version": "11.9.1",
+ "resolved": "https://registry.npmjs.org/textlint/-/textlint-11.9.1.tgz",
+ "integrity": "sha512-7eC76od8ILhLl3O10h1rd0QxlVaQkR1nqTD7PrszrlGGe8mXS2VNaOXEiAm8PPUMQBdjB5n8/cpeZ+AbDJdNTw==",
+ "dev": true,
+ "dependencies": {
+ "@textlint/ast-node-types": "^4.4.3",
+ "@textlint/ast-traverse": "^2.3.5",
+ "@textlint/feature-flag": "^3.3.5",
+ "@textlint/fixer-formatter": "^3.3.5",
+ "@textlint/kernel": "^3.4.5",
+ "@textlint/linter-formatter": "^3.3.5",
+ "@textlint/module-interop": "^1.2.5",
+ "@textlint/textlint-plugin-markdown": "^5.3.5",
+ "@textlint/textlint-plugin-text": "^4.3.5",
+ "@textlint/types": "^1.5.5",
+ "@textlint/utils": "^1.2.5",
+ "debug": "^4.3.1",
+ "deep-equal": "^1.1.1",
+ "file-entry-cache": "^5.0.1",
+ "get-stdin": "^5.0.1",
+ "glob": "^7.1.7",
+ "is-file": "^1.0.0",
+ "log-symbols": "^1.0.2",
+ "map-like": "^2.0.0",
+ "md5": "^2.3.0",
+ "mkdirp": "^0.5.0",
+ "optionator": "^0.9.1",
+ "path-to-glob-pattern": "^1.0.2",
+ "rc-config-loader": "^3.0.0",
+ "read-pkg": "^1.1.0",
+ "read-pkg-up": "^3.0.0",
+ "structured-source": "^3.0.2",
+ "try-resolve": "^1.0.1",
+ "unique-concat": "^0.2.2"
+ },
+ "bin": {
+ "textlint": "bin/textlint.js"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/textlint-filter-rule-comments": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/textlint-filter-rule-comments/-/textlint-filter-rule-comments-1.3.0.tgz",
+ "integrity": "sha512-kSk/XcZYKYe4sb44XhYAYPeMFtqKJIMtcju/jwyZxpkn8gRuRMZ4+rB0wJmGRrD0c8tx3hHDAH1JY9ccahMKcA==",
+ "dev": true
+ },
+ "node_modules/textlint-filter-rule-whitelist": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/textlint-filter-rule-whitelist/-/textlint-filter-rule-whitelist-2.0.0.tgz",
+ "integrity": "sha512-6FBQJZWq2UO1UoX1Z/t3e9vRmQbOF1Z9xRsOUnEzAsd+dGiMrbByE+vaj9SSkLaFzXREIqtg5Widd7ZPF5GOIg==",
+ "deprecated": "Use textlint-filter-rule-allowlist instead of it: https://github.com/textlint/textlint-filter-rule-allowlist/pull/9",
+ "dev": true,
+ "dependencies": {
+ "@textlint/ast-node-types": "^4.0.2",
+ "@textlint/get-config-base-dir": "^2.0.0",
+ "@textlint/regexp-string-matcher": "^1.0.2",
+ "rc-config-loader": "^2.0.1"
+ },
+ "peerDependencies": {
+ "textlint": ">= 9.0.0"
+ }
+ },
+ "node_modules/textlint-filter-rule-whitelist/node_modules/rc-config-loader": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/rc-config-loader/-/rc-config-loader-2.0.5.tgz",
+ "integrity": "sha512-T464K2MQlnNWOblUDIglpFhyN+zYJq7jSlL++/N0hUkcmIXeNFumwXFVdtf8qhUGohn4RYQ0wdi74R575I44PQ==",
+ "dev": true,
+ "dependencies": {
+ "debug": "^4.1.1",
+ "js-yaml": "^3.12.0",
+ "json5": "^2.1.0",
+ "object-assign": "^4.1.0",
+ "object-keys": "^1.0.12",
+ "path-exists": "^3.0.0",
+ "require-from-string": "^2.0.2"
+ }
+ },
+ "node_modules/textlint-rule-helper": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/textlint-rule-helper/-/textlint-rule-helper-2.5.0.tgz",
+ "integrity": "sha512-QIbFPtyqLy0g5BJn8mryk9iHzGYicNaFIpLFPiEnb4RXxrEGeQ2W2aARQ9yEXLIAqo+OwK4ndWBAWkbgJEPzTQ==",
+ "dev": true,
+ "dependencies": {
+ "@textlint/ast-node-types": "^15.2.1",
+ "structured-source": "^4.0.0",
+ "unist-util-visit": "^2.0.3"
+ }
+ },
+ "node_modules/textlint-rule-helper/node_modules/@textlint/ast-node-types": {
+ "version": "15.5.2",
+ "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-15.5.2.tgz",
+ "integrity": "sha512-fCaOxoup5LIyBEo7R1oYWE7V4bSX0KQeHh66twon9e9usaLE3ijgF8QjYsR6joCssdeCHVd0wHm7ppsEyTr6vg==",
+ "dev": true
+ },
+ "node_modules/textlint-rule-helper/node_modules/boundary": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/boundary/-/boundary-2.0.0.tgz",
+ "integrity": "sha512-rJKn5ooC9u8q13IMCrW0RSp31pxBCHE3y9V/tp3TdWSLf8Em3p6Di4NBpfzbJge9YjjFEsD0RtFEjtvHL5VyEA==",
+ "dev": true
+ },
+ "node_modules/textlint-rule-helper/node_modules/structured-source": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/structured-source/-/structured-source-4.0.0.tgz",
+ "integrity": "sha512-qGzRFNJDjFieQkl/sVOI2dUjHKRyL9dAJi2gCPGJLbJHBIkyOHxjuocpIEfbLioX+qSJpvbYdT49/YCdMznKxA==",
+ "dev": true,
+ "dependencies": {
+ "boundary": "^2.0.0"
+ }
+ },
+ "node_modules/textlint-rule-terminology": {
+ "version": "2.1.6",
+ "resolved": "https://registry.npmjs.org/textlint-rule-terminology/-/textlint-rule-terminology-2.1.6.tgz",
+ "integrity": "sha512-3OdV/0DE8RpIYcshz+5wFaDwNYIlqfsBA8TODgNd68T339rn+K69ak5hoXUBSSuTousbAbCFDPqTILG20os44A==",
+ "dev": true,
+ "dependencies": {
+ "lodash": "^4.17.15",
+ "strip-json-comments": "^3.0.1",
+ "textlint-rule-helper": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=8.9"
+ }
+ },
+ "node_modules/textlint-rule-terminology/node_modules/strip-json-comments": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/textlint/node_modules/get-stdin": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-5.0.1.tgz",
+ "integrity": "sha512-jZV7n6jGE3Gt7fgSTJoz91Ak5MuTLwMwkoYdjxuJ/AmjIsE1UC03y/IWkZCQGEvVNS9qoRNwy5BCqxImv0FVeA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "node_modules/to-regex": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
+ "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
+ "dev": true,
+ "dependencies": {
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "regex-not": "^1.0.2",
+ "safe-regex": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/traverse": {
+ "version": "0.6.11",
+ "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.11.tgz",
+ "integrity": "sha512-vxXDZg8/+p3gblxB6BhhG5yWVn1kGRlaL8O78UDXc3wRnPizB5g83dcvWV1jpDMIPnjZjOFuxlMmE82XJ4407w==",
+ "dev": true,
+ "dependencies": {
+ "gopd": "^1.2.0",
+ "typedarray.prototype.slice": "^1.0.5",
+ "which-typed-array": "^1.1.18"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/trim": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz",
+ "integrity": "sha512-YzQV+TZg4AxpKxaTHK3c3D+kRDCGVEE7LemdlQZoQXn0iennk10RsIoY6ikzAqJTc9Xjl9C1/waHom/J86ziAQ==",
+ "deprecated": "Use String.prototype.trim() instead",
+ "dev": true
+ },
+ "node_modules/trim-trailing-lines": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.4.tgz",
+ "integrity": "sha512-rjUWSqnfTNrjbB9NQWfPMH/xRK1deHeGsHoVfpxJ++XeYXE0d6B1En37AHfw3jtfTU7dzMzZL2jjpe8Qb5gLIQ==",
+ "dev": true,
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/trough": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz",
+ "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==",
+ "dev": true,
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/try-resolve": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/try-resolve/-/try-resolve-1.0.1.tgz",
+ "integrity": "sha512-yHeaPjCBzVaXwWl5IMUapTaTC2rn/eBYg2fsG2L+CvJd+ttFbk0ylDnpTO3wVhosmE1tQEvcebbBeKLCwScQSQ==",
+ "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
+ "dev": true
+ },
+ "node_modules/type-check": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
+ "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
+ "dev": true,
+ "dependencies": {
+ "prelude-ls": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/typed-array-buffer": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz",
+ "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==",
+ "dev": true,
+ "dependencies": {
+ "call-bound": "^1.0.3",
+ "es-errors": "^1.3.0",
+ "is-typed-array": "^1.1.14"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/typed-array-byte-length": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz",
+ "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.8",
+ "for-each": "^0.3.3",
+ "gopd": "^1.2.0",
+ "has-proto": "^1.2.0",
+ "is-typed-array": "^1.1.14"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/typed-array-byte-offset": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz",
+ "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==",
+ "dev": true,
+ "dependencies": {
+ "available-typed-arrays": "^1.0.7",
+ "call-bind": "^1.0.8",
+ "for-each": "^0.3.3",
+ "gopd": "^1.2.0",
+ "has-proto": "^1.2.0",
+ "is-typed-array": "^1.1.15",
+ "reflect.getprototypeof": "^1.0.9"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/typed-array-length": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz",
+ "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "for-each": "^0.3.3",
+ "gopd": "^1.0.1",
+ "is-typed-array": "^1.1.13",
+ "possible-typed-array-names": "^1.0.0",
+ "reflect.getprototypeof": "^1.0.6"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/typedarray": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
+ "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==",
+ "dev": true
+ },
+ "node_modules/typedarray.prototype.slice": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/typedarray.prototype.slice/-/typedarray.prototype.slice-1.0.5.tgz",
+ "integrity": "sha512-q7QNVDGTdl702bVFiI5eY4l/HkgCM6at9KhcFbgUAzezHFbOVy4+0O/lCjsABEQwbZPravVfBIiBVGo89yzHFg==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.8",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.9",
+ "es-errors": "^1.3.0",
+ "get-proto": "^1.0.1",
+ "math-intrinsics": "^1.1.0",
+ "typed-array-buffer": "^1.0.3",
+ "typed-array-byte-offset": "^1.0.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/uc.micro": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz",
+ "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==",
+ "dev": true
+ },
+ "node_modules/unbox-primitive": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz",
+ "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==",
+ "dev": true,
+ "dependencies": {
+ "call-bound": "^1.0.3",
+ "has-bigints": "^1.0.2",
+ "has-symbols": "^1.1.0",
+ "which-boxed-primitive": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/unherit": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.3.tgz",
+ "integrity": "sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ==",
+ "dev": true,
+ "dependencies": {
+ "inherits": "^2.0.0",
+ "xtend": "^4.0.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/unified": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/unified/-/unified-6.2.0.tgz",
+ "integrity": "sha512-1k+KPhlVtqmG99RaTbAv/usu85fcSRu3wY8X+vnsEhIxNP5VbVIDiXnLqyKIG+UMdyTg0ZX9EI6k2AfjJkHPtA==",
+ "dev": true,
+ "dependencies": {
+ "bail": "^1.0.0",
+ "extend": "^3.0.0",
+ "is-plain-obj": "^1.1.0",
+ "trough": "^1.0.0",
+ "vfile": "^2.0.0",
+ "x-is-string": "^0.1.0"
+ }
+ },
+ "node_modules/unique-concat": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/unique-concat/-/unique-concat-0.2.2.tgz",
+ "integrity": "sha512-nFT3frbsvTa9rrc71FJApPqXF8oIhVHbX3IWgObQi1mF7WrW48Ys70daL7o4evZUtmUf6Qn6WK0LbHhyO0hpXw==",
+ "dev": true
+ },
+ "node_modules/unist-util-is": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz",
+ "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==",
+ "dev": true,
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-remove-position": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-1.1.4.tgz",
+ "integrity": "sha512-tLqd653ArxJIPnKII6LMZwH+mb5q+n/GtXQZo6S6csPRs5zB0u79Yw8ouR3wTw8wxvdJFhpP6Y7jorWdCgLO0A==",
+ "dev": true,
+ "dependencies": {
+ "unist-util-visit": "^1.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-remove-position/node_modules/unist-util-is": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-3.0.0.tgz",
+ "integrity": "sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==",
+ "dev": true
+ },
+ "node_modules/unist-util-remove-position/node_modules/unist-util-visit": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.4.1.tgz",
+ "integrity": "sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==",
+ "dev": true,
+ "dependencies": {
+ "unist-util-visit-parents": "^2.0.0"
+ }
+ },
+ "node_modules/unist-util-remove-position/node_modules/unist-util-visit-parents": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz",
+ "integrity": "sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==",
+ "dev": true,
+ "dependencies": {
+ "unist-util-is": "^3.0.0"
+ }
+ },
+ "node_modules/unist-util-stringify-position": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-1.1.2.tgz",
+ "integrity": "sha512-pNCVrk64LZv1kElr0N1wPiHEUoXNVFERp+mlTg/s9R5Lwg87f9bM/3sQB99w+N9D/qnM9ar3+AKDBwo/gm/iQQ==",
+ "dev": true
+ },
+ "node_modules/unist-util-visit": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz",
+ "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==",
+ "dev": true,
+ "dependencies": {
+ "@types/unist": "^2.0.0",
+ "unist-util-is": "^4.0.0",
+ "unist-util-visit-parents": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-visit-parents": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz",
+ "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==",
+ "dev": true,
+ "dependencies": {
+ "@types/unist": "^2.0.0",
+ "unist-util-is": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
+ "dev": true
+ },
+ "node_modules/validate-npm-package-license": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
+ "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
+ "dev": true,
+ "dependencies": {
+ "spdx-correct": "^3.0.0",
+ "spdx-expression-parse": "^3.0.0"
+ }
+ },
+ "node_modules/vfile": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/vfile/-/vfile-2.3.0.tgz",
+ "integrity": "sha512-ASt4mBUHcTpMKD/l5Q+WJXNtshlWxOogYyGYYrg4lt/vuRjC1EFQtlAofL5VmtVNIZJzWYFJjzGWZ0Gw8pzW1w==",
+ "dev": true,
+ "dependencies": {
+ "is-buffer": "^1.1.4",
+ "replace-ext": "1.0.0",
+ "unist-util-stringify-position": "^1.0.0",
+ "vfile-message": "^1.0.0"
+ }
+ },
+ "node_modules/vfile-location": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-2.0.6.tgz",
+ "integrity": "sha512-sSFdyCP3G6Ka0CEmN83A2YCMKIieHx0EDaj5IDP4g1pa5ZJ4FJDvpO0WODLxo4LUX4oe52gmSCK7Jw4SBghqxA==",
+ "dev": true,
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/vfile-message": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-1.1.1.tgz",
+ "integrity": "sha512-1WmsopSGhWt5laNir+633LszXvZ+Z/lxveBf6yhGsqnQIhlhzooZae7zV6YVM1Sdkw68dtAW3ow0pOdPANugvA==",
+ "dev": true,
+ "dependencies": {
+ "unist-util-stringify-position": "^1.1.1"
+ }
+ },
+ "node_modules/which-boxed-primitive": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz",
+ "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==",
+ "dev": true,
+ "dependencies": {
+ "is-bigint": "^1.1.0",
+ "is-boolean-object": "^1.2.1",
+ "is-number-object": "^1.1.1",
+ "is-string": "^1.1.1",
+ "is-symbol": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/which-builtin-type": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz",
+ "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==",
+ "dev": true,
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "function.prototype.name": "^1.1.6",
+ "has-tostringtag": "^1.0.2",
+ "is-async-function": "^2.0.0",
+ "is-date-object": "^1.1.0",
+ "is-finalizationregistry": "^1.1.0",
+ "is-generator-function": "^1.0.10",
+ "is-regex": "^1.2.1",
+ "is-weakref": "^1.0.2",
+ "isarray": "^2.0.5",
+ "which-boxed-primitive": "^1.1.0",
+ "which-collection": "^1.0.2",
+ "which-typed-array": "^1.1.16"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/which-builtin-type/node_modules/isarray": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
+ "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
+ "dev": true
+ },
+ "node_modules/which-collection": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz",
+ "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==",
+ "dev": true,
+ "dependencies": {
+ "is-map": "^2.0.3",
+ "is-set": "^2.0.3",
+ "is-weakmap": "^2.0.2",
+ "is-weakset": "^2.0.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/which-typed-array": {
+ "version": "1.1.20",
+ "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.20.tgz",
+ "integrity": "sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==",
+ "dev": true,
+ "dependencies": {
+ "available-typed-arrays": "^1.0.7",
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.4",
+ "for-each": "^0.3.5",
+ "get-proto": "^1.0.1",
+ "gopd": "^1.2.0",
+ "has-tostringtag": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/word-wrap": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
+ "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
+ "dev": true
+ },
+ "node_modules/write": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz",
+ "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==",
+ "dev": true,
+ "dependencies": {
+ "mkdirp": "^0.5.1"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/x-is-string": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/x-is-string/-/x-is-string-0.1.0.tgz",
+ "integrity": "sha512-GojqklwG8gpzOVEVki5KudKNoq7MbbjYZCbyWzEz7tyPA7eleiE0+ePwOWQQRb5fm86rD3S8Tc0tSFf3AOv50w==",
+ "dev": true
+ },
+ "node_modules/xml-escape": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/xml-escape/-/xml-escape-1.1.0.tgz",
+ "integrity": "sha512-B/T4sDK8Z6aUh/qNr7mjKAwwncIljFuUP+DO/D5hloYFj+90O88z8Wf7oSucZTHxBAsC1/CTP4rtx/x1Uf72Mg==",
+ "dev": true
+ },
+ "node_modules/xtend": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
+ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.4"
+ }
+ }
+ }
+}
diff --git a/node_modules/@azu/format-text/README.md b/node_modules/@azu/format-text/README.md
new file mode 100644
index 000000000..85727e34d
--- /dev/null
+++ b/node_modules/@azu/format-text/README.md
@@ -0,0 +1,23 @@
+## @azu/format-text
+
+String formatting library inspired from Python
+
+Fork of [azer/format-text](https://github.com/azer/format-text "azer/format-text: String formatting library inspired from Python")
+
+### Install
+
+```bash
+$ npm install @azu/format-text
+```
+
+### Usage
+
+```js
+format = require('@azu/format-text')
+
+format('Hello {0}. The weather is currently {1}°.', 'Kitty', '67')
+// => Hello Kitty. The weather is currently 67°.
+
+format('Hello {name}, The weather is currently {degree}°', { name:'Kitty', degree: 67 })
+// => Hello Kitty. The weather is currently 67°.
+```
\ No newline at end of file
diff --git a/node_modules/@azu/format-text/index.js b/node_modules/@azu/format-text/index.js
new file mode 100644
index 000000000..2116910da
--- /dev/null
+++ b/node_modules/@azu/format-text/index.js
@@ -0,0 +1,31 @@
+module.exports = format;
+
+function format(text) {
+ var context;
+
+ if (typeof arguments[1] == 'object' && arguments[1]) {
+ context = arguments[1];
+ } else {
+ context = Array.prototype.slice.call(arguments, 1);
+ }
+
+ return String(text).replace(/\{?\{([^{}]+)}}?/g, replace(context));
+};
+
+function replace (context, nil){
+ return function (tag, name) {
+ if (tag.substring(0, 2) == '{{' && tag.substring(tag.length - 2) == '}}') {
+ return '{' + name + '}';
+ }
+
+ if (!context.hasOwnProperty(name)) {
+ return tag;
+ }
+
+ if (typeof context[name] == 'function') {
+ return context[name]();
+ }
+
+ return context[name];
+ }
+}
diff --git a/node_modules/@azu/format-text/package.json b/node_modules/@azu/format-text/package.json
new file mode 100644
index 000000000..f20a4c77b
--- /dev/null
+++ b/node_modules/@azu/format-text/package.json
@@ -0,0 +1,21 @@
+{
+ "name": "@azu/format-text",
+ "version": "1.0.2",
+ "description": "String formatting library inspired from Python",
+ "main": "index.js",
+ "scripts": {
+ "test": "mocha test.js"
+ },
+ "files": [
+ "index.js"
+ ],
+ "devDependencies": {
+ "mocha": "^10.2.0"
+ },
+ "repository": {
+ "url": "git@github.com:azu/format-text.git",
+ "type": "git"
+ },
+ "author": "azu",
+ "license": "BSD-3-Clause"
+}
diff --git a/node_modules/@azu/style-format/LICENSE b/node_modules/@azu/style-format/LICENSE
new file mode 100644
index 000000000..8c450ad6a
--- /dev/null
+++ b/node_modules/@azu/style-format/LICENSE
@@ -0,0 +1,13 @@
+ DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
+ Version 2, December 2004
+
+ Copyright (C) 2016 azu
+
+ Everyone is permitted to copy and distribute verbatim or modified
+ copies of this license document, and changing it is allowed as long
+ as the name is changed.
+
+ DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. You just DO WHAT THE FUCK YOU WANT TO.
diff --git a/node_modules/@azu/style-format/README.md b/node_modules/@azu/style-format/README.md
new file mode 100644
index 000000000..cbbaeb3b3
--- /dev/null
+++ b/node_modules/@azu/style-format/README.md
@@ -0,0 +1,30 @@
+## style-format
+
+Library to easily style texts with string formatting.
+It's based on [ansi-codes](http://github.com/azer/ansi-codes) and [format-text](http://github.com/azu/format-text)
+
+## Install
+
+```bash
+$ npm install @azu/style-format
+```
+
+## Usage
+
+```js
+format('{blue} hello {green} world')
+// => hello world
+
+format('{bold}{red} span {yellow} eggs {reset}')
+// => span eggs
+```
+
+## Reference
+
+See [ansi-codes](http://github.com/azer/ansi-codes) for reference.
+
+## License
+
+MIT
+
+Original is [style-format](http://github.com/azer/style-format).
diff --git a/node_modules/@azu/style-format/ansi-codes.js b/node_modules/@azu/style-format/ansi-codes.js
new file mode 100644
index 000000000..75a42c4f7
--- /dev/null
+++ b/node_modules/@azu/style-format/ansi-codes.js
@@ -0,0 +1,52 @@
+// LICENSE : MIT
+module.exports = {
+ reset : "\033[0m",
+ bold : "\033[1m",
+ italic : "\033[3m",
+ blink : "\033[5m",
+ underline : "\033[4m",
+ underlineOff : "\033[24m",
+ inverse : "\033[7m",
+ inverseOff : "\033[27m",
+ strikethrough : "\033[9m",
+ strikethroughOff : "\033[29m",
+
+ def : "\033[39m",
+ white : "\033[37m",
+ black : "\033[30m",
+ grey : "\x1B[90m",
+ red : "\033[31m",
+ green : "\033[32m",
+ blue : "\033[34m",
+ yellow : "\033[33m",
+ magenta : "\033[35m",
+ cyan : "\033[36m",
+
+ defBg : "\033[49m",
+ whiteBg : "\033[47m",
+ blackBg : "\033[40m",
+ redBg : "\033[41m",
+ greenBg : "\033[42m",
+ blueBg : "\033[44m",
+ yellowBg : "\033[43m",
+ magentaBg : "\033[45m",
+ cyanBg : "\033[46m",
+
+ brightBlack : "\033[90m",
+ brightRed : "\033[91m",
+ brightGreen : "\033[92m",
+ brightYellow : "\033[93m",
+ brightBlue : "\033[94m",
+ brightMagenta : "\033[95m",
+ brightCyan : "\033[96m",
+ brightWhite : "\033[97m",
+
+ brightBlackBg : "\033[100m",
+ brightRedBg : "\033[101m",
+ brightGreenBg : "\033[102m",
+ brightYellowBg : "\033[103m",
+ brightBlueBg : "\033[104m",
+ brightMagentaBg : "\033[105m",
+ brightCyanBg : "\033[106m",
+ brightWhiteBg : "\033[107m"
+}
\ No newline at end of file
diff --git a/node_modules/@azu/style-format/index.js b/node_modules/@azu/style-format/index.js
new file mode 100644
index 000000000..9dc017c32
--- /dev/null
+++ b/node_modules/@azu/style-format/index.js
@@ -0,0 +1,8 @@
+var format = require("@azu/format-text");
+var ansi = require("./ansi-codes");
+
+module.exports = styleFormat;
+
+function styleFormat (text) {
+ return format(text, ansi);
+}
diff --git a/node_modules/@azu/style-format/package.json b/node_modules/@azu/style-format/package.json
new file mode 100644
index 000000000..4f25d596a
--- /dev/null
+++ b/node_modules/@azu/style-format/package.json
@@ -0,0 +1,27 @@
+{
+ "name": "@azu/style-format",
+ "version": "1.0.1",
+ "description": "Library to easily style texts with string formatting",
+ "main": "index.js",
+ "dependencies": {
+ "@azu/format-text": "^1.0.1"
+ },
+ "keywords": [
+ "style",
+ "text",
+ "format"
+ ],
+ "scripts": {
+ "test": "node test.js"
+ },
+ "files": [
+ "index.js",
+ "ansi-codes.js"
+ ],
+ "repository": {
+ "url": "git@github.com:azu/style-format.git",
+ "type": "git"
+ },
+ "author": "azu",
+ "license": "WTFPL"
+}
diff --git a/node_modules/@textlint/ast-node-types/CHANGELOG.md b/node_modules/@textlint/ast-node-types/CHANGELOG.md
new file mode 100644
index 000000000..dfffdaad0
--- /dev/null
+++ b/node_modules/@textlint/ast-node-types/CHANGELOG.md
@@ -0,0 +1,386 @@
+# Change Log
+
+All notable changes to this project will be documented in this file.
+See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+
+## [4.4.3](https://github.com/textlint/textlint/compare/@textlint/ast-node-types@4.4.2...@textlint/ast-node-types@4.4.3) (2021-05-08)
+
+**Note:** Version bump only for package @textlint/ast-node-types
+
+
+
+
+
+
+## [4.4.2](https://github.com/textlint/textlint/compare/@textlint/ast-node-types@4.4.1...@textlint/ast-node-types@4.4.2) (2021-03-19)
+
+
+### Chores
+
+* **deps:** update dependency mocha to ^8.3.0 ([0464adb](https://github.com/textlint/textlint/commit/0464adb))
+* **deps:** update dependency mocha to ^8.3.1 ([cc509ed](https://github.com/textlint/textlint/commit/cc509ed))
+* **deps:** update patch updates ([183eb8d](https://github.com/textlint/textlint/commit/183eb8d))
+
+
+
+
+
+
+## [4.4.1](https://github.com/textlint/textlint/compare/@textlint/ast-node-types@4.3.4...@textlint/ast-node-types@4.4.1) (2021-01-22)
+
+
+### Bug Fixes
+
+* **ast-node-types:** deprecated "ReferenceDef" type ([#701](https://github.com/textlint/textlint/issues/701)) ([a088520](https://github.com/textlint/textlint/commit/a088520))
+
+
+### Chores
+
+* **deps:** update minor updates ([7ef0be6](https://github.com/textlint/textlint/commit/7ef0be6))
+* **deps:** update minor updates ([2f3dcb6](https://github.com/textlint/textlint/commit/2f3dcb6))
+* **deps:** update patch updates ([3d9660b](https://github.com/textlint/textlint/commit/3d9660b))
+* **deps:** update patch updates ([fe2ad4f](https://github.com/textlint/textlint/commit/fe2ad4f))
+* **deps:** update patch updates ([e438ff2](https://github.com/textlint/textlint/commit/e438ff2))
+* **deps:** update patch updates ([4f4c206](https://github.com/textlint/textlint/commit/4f4c206))
+* **deps:** update TypeScript deps ([#705](https://github.com/textlint/textlint/issues/705)) ([1baa72a](https://github.com/textlint/textlint/commit/1baa72a))
+* use [@monorepo-utils](https://github.com/monorepo-utils)/workspaces-to-typescript-project-references ([#699](https://github.com/textlint/textlint/issues/699)) ([eff1943](https://github.com/textlint/textlint/commit/eff1943))
+
+
+### Features
+
+* **source-code-fixer:** add `[@textlint](https://github.com/textlint)/source-code-fixer` ([#736](https://github.com/textlint/textlint/issues/736)) ([bf7235a](https://github.com/textlint/textlint/commit/bf7235a))
+
+
+
+
+
+
+# [4.4.0](https://github.com/textlint/textlint/compare/@textlint/ast-node-types@4.3.4...@textlint/ast-node-types@4.4.0) (2021-01-22)
+
+
+### Bug Fixes
+
+* **ast-node-types:** deprecated "ReferenceDef" type ([#701](https://github.com/textlint/textlint/issues/701)) ([a088520](https://github.com/textlint/textlint/commit/a088520))
+
+
+### Chores
+
+* **deps:** update minor updates ([7ef0be6](https://github.com/textlint/textlint/commit/7ef0be6))
+* **deps:** update minor updates ([2f3dcb6](https://github.com/textlint/textlint/commit/2f3dcb6))
+* **deps:** update patch updates ([3d9660b](https://github.com/textlint/textlint/commit/3d9660b))
+* **deps:** update patch updates ([fe2ad4f](https://github.com/textlint/textlint/commit/fe2ad4f))
+* **deps:** update patch updates ([e438ff2](https://github.com/textlint/textlint/commit/e438ff2))
+* **deps:** update patch updates ([4f4c206](https://github.com/textlint/textlint/commit/4f4c206))
+* **deps:** update TypeScript deps ([#705](https://github.com/textlint/textlint/issues/705)) ([1baa72a](https://github.com/textlint/textlint/commit/1baa72a))
+* use [@monorepo-utils](https://github.com/monorepo-utils)/workspaces-to-typescript-project-references ([#699](https://github.com/textlint/textlint/issues/699)) ([eff1943](https://github.com/textlint/textlint/commit/eff1943))
+
+
+### Features
+
+* **source-code-fixer:** add `[@textlint](https://github.com/textlint)/source-code-fixer` ([#736](https://github.com/textlint/textlint/issues/736)) ([bf7235a](https://github.com/textlint/textlint/commit/bf7235a))
+
+
+
+
+
+
+## [4.3.5](https://github.com/textlint/textlint/compare/@textlint/ast-node-types@4.3.4...@textlint/ast-node-types@4.3.5) (2020-12-22)
+
+
+### Bug Fixes
+
+* **ast-node-types:** deprecated "ReferenceDef" type ([#701](https://github.com/textlint/textlint/issues/701)) ([a088520](https://github.com/textlint/textlint/commit/a088520))
+
+
+### Chores
+
+* **deps:** update minor updates ([7ef0be6](https://github.com/textlint/textlint/commit/7ef0be6))
+* **deps:** update minor updates ([2f3dcb6](https://github.com/textlint/textlint/commit/2f3dcb6))
+* **deps:** update patch updates ([3d9660b](https://github.com/textlint/textlint/commit/3d9660b))
+* **deps:** update patch updates ([fe2ad4f](https://github.com/textlint/textlint/commit/fe2ad4f))
+* **deps:** update patch updates ([e438ff2](https://github.com/textlint/textlint/commit/e438ff2))
+* **deps:** update patch updates ([4f4c206](https://github.com/textlint/textlint/commit/4f4c206))
+* **deps:** update TypeScript deps ([#705](https://github.com/textlint/textlint/issues/705)) ([1baa72a](https://github.com/textlint/textlint/commit/1baa72a))
+* use [@monorepo-utils](https://github.com/monorepo-utils)/workspaces-to-typescript-project-references ([#699](https://github.com/textlint/textlint/issues/699)) ([eff1943](https://github.com/textlint/textlint/commit/eff1943))
+
+
+
+
+
+
+## [4.3.4](https://github.com/textlint/textlint/compare/@textlint/ast-node-types@4.3.3...@textlint/ast-node-types@4.3.4) (2020-07-24)
+
+
+### Bug Fixes
+
+* improve "module" supports ([5ba5182](https://github.com/textlint/textlint/commit/5ba5182))
+
+
+
+
+
+
+## [4.3.3](https://github.com/textlint/textlint/compare/@textlint/ast-node-types@4.3.2...@textlint/ast-node-types@4.3.3) (2020-07-24)
+
+
+### Bug Fixes
+
+* "clean" command should remove tsconfig.module.tsbuildinfo ([76ac72a](https://github.com/textlint/textlint/commit/76ac72a))
+
+
+
+
+
+
+## [4.3.2](https://github.com/textlint/textlint/compare/@textlint/ast-node-types@4.3.1...@textlint/ast-node-types@4.3.2) (2020-07-24)
+
+
+### Bug Fixes
+
+* **@textlint/kernel:** fix export only type definition ([1234930](https://github.com/textlint/textlint/commit/1234930))
+
+
+
+
+
+
+## [4.3.1](https://github.com/textlint/textlint/compare/@textlint/ast-node-types@4.3.0...@textlint/ast-node-types@4.3.1) (2020-07-24)
+
+
+### Bug Fixes
+
+* include module ([2de05f7](https://github.com/textlint/textlint/commit/2de05f7))
+
+
+
+
+
+
+# [4.3.0](https://github.com/textlint/textlint/compare/@textlint/ast-node-types@4.2.5...@textlint/ast-node-types@4.3.0) (2020-07-24)
+
+
+### Chores
+
+* **deps:** update devDepencies ([#667](https://github.com/textlint/textlint/issues/667)) ([0503af6](https://github.com/textlint/textlint/commit/0503af6))
+
+
+### Code Refactoring
+
+* **typescript:** Use TypeScript Project References ([#668](https://github.com/textlint/textlint/issues/668)) ([bbffd43](https://github.com/textlint/textlint/commit/bbffd43))
+
+
+### Tests
+
+* migrate mocha.opts to .mocharc.json ([#682](https://github.com/textlint/textlint/issues/682)) ([332ae5e](https://github.com/textlint/textlint/commit/332ae5e))
+
+
+
+
+
+
+## [4.2.5](https://github.com/textlint/textlint/compare/@textlint/ast-node-types@4.2.4...@textlint/ast-node-types@4.2.5) (2019-10-14)
+
+
+### Tests
+
+* **ast-node-types:** fix type error ([9a678c5](https://github.com/textlint/textlint/commit/9a678c5))
+
+
+
+
+
+
+## [4.2.4](https://github.com/textlint/textlint/compare/@textlint/ast-node-types@4.2.2...@textlint/ast-node-types@4.2.4) (2019-07-20)
+
+
+### Code Refactoring
+
+* **utils:** move implementation from types to utils ([#611](https://github.com/textlint/textlint/issues/611)) ([cd9adbe](https://github.com/textlint/textlint/commit/cd9adbe))
+
+
+
+
+
+
+## [4.2.3](https://github.com/textlint/textlint/compare/@textlint/ast-node-types@4.2.2...@textlint/ast-node-types@4.2.3) (2019-07-13)
+
+
+### Code Refactoring
+
+* **utils:** move implementation from types to utils ([#611](https://github.com/textlint/textlint/issues/611)) ([cd9adbe](https://github.com/textlint/textlint/commit/cd9adbe))
+
+
+
+
+
+
+## [4.2.2](https://github.com/textlint/textlint/compare/@textlint/ast-node-types@4.2.1...@textlint/ast-node-types@4.2.2) (2019-04-30)
+
+
+### Chores
+
+* **deps:** update deps && devDeps ([a19463b](https://github.com/textlint/textlint/commit/a19463b))
+
+
+### Styles
+
+* apply prettier ([925a5a5](https://github.com/textlint/textlint/commit/925a5a5))
+
+
+
+
+
+
+## [4.2.1](https://github.com/textlint/textlint/compare/@textlint/ast-node-types@4.2.0...@textlint/ast-node-types@4.2.1) (2019-01-03)
+
+**Note:** Version bump only for package @textlint/ast-node-types
+
+
+
+
+
+
+# [4.2.0](https://github.com/textlint/textlint/compare/@textlint/ast-node-types@4.1.0...@textlint/ast-node-types@4.2.0) (2019-01-03)
+
+
+### Documentation
+
+* **rule:** add Type name and Node Type mapping table ([5ace9d1](https://github.com/textlint/textlint/commit/5ace9d1))
+
+
+### Features
+
+* **ast-node-types:** add `*Exit` type as constant value ([7106f5d](https://github.com/textlint/textlint/commit/7106f5d))
+* **ast-node-types:** add `TypeofTxtNode` type function ([69bc1ea](https://github.com/textlint/textlint/commit/69bc1ea))
+
+
+### Tests
+
+* **ast-note-types:** fix tests ([e708b7c](https://github.com/textlint/textlint/commit/e708b7c))
+
+
+
+
+
+
+# [4.1.0](https://github.com/textlint/textlint/compare/@textlint/ast-node-types@4.0.3...@textlint/ast-node-types@4.1.0) (2019-01-01)
+
+
+### Chores
+
+* **deps:** update TypeScript deps ([3ea7fb0](https://github.com/textlint/textlint/commit/3ea7fb0))
+
+
+### Code Refactoring
+
+* **types:** move type definition for rule to [@textlint](https://github.com/textlint)/types ([9be6e16](https://github.com/textlint/textlint/commit/9be6e16))
+
+
+
+
+
+## [4.0.3](https://github.com/textlint/textlint/compare/@textlint/ast-node-types@4.0.2...@textlint/ast-node-types@4.0.3) (2018-07-22)
+
+
+### Chores
+
+* **deps:** update mocha ([5df8af4](https://github.com/textlint/textlint/commit/5df8af4))
+
+
+### Code Refactoring
+
+* **kernel:** separate linter and fixer descriptor ([b5bc8bd](https://github.com/textlint/textlint/commit/b5bc8bd))
+
+
+
+
+
+## [4.0.2](https://github.com/textlint/textlint/compare/@textlint/ast-node-types@4.0.1...@textlint/ast-node-types@4.0.2) (2018-03-25)
+
+
+### Chores
+
+* **test:** use `ts-node-test-register` for TypeScript testing ([be746d8](https://github.com/textlint/textlint/commit/be746d8)), closes [#451](https://github.com/textlint/textlint/issues/451)
+
+
+
+
+
+## [4.0.1](https://github.com/textlint/textlint/compare/@textlint/ast-node-types@4.0.0...@textlint/ast-node-types@4.0.1) (2018-01-18)
+
+
+
+
+**Note:** Version bump only for package @textlint/ast-node-types
+
+
+# [4.0.0](https://github.com/textlint/textlint/compare/@textlint/ast-node-types@3.0.1...@textlint/ast-node-types@4.0.0) (2017-12-31)
+
+
+### Chores
+
+* **ast-node-types:** Make ASTNodeTypes enum ([8ae3e67](https://github.com/textlint/textlint/commit/8ae3e67))
+
+
+### BREAKING CHANGES
+
+* **ast-node-types:** TypeScript need to user it as enum
+
+
+
+
+
+## [3.0.1](https://github.com/textlint/textlint/compare/@textlint/ast-node-types@3.0.0...@textlint/ast-node-types@3.0.1) (2017-12-25)
+
+
+### Bug Fixes
+
+* **monorepo:** fix TypeScript module resolution in monorepo ([d5df499](https://github.com/textlint/textlint/commit/d5df499))
+
+
+
+
+
+# [3.0.0](https://github.com/textlint/textlint/compare/@textlint/ast-node-types@3.0.0-next.0...@textlint/ast-node-types@3.0.0) (2017-12-18)
+
+
+
+
+**Note:** Version bump only for package @textlint/ast-node-types
+
+
+# [3.0.0-next.0](https://github.com/textlint/textlint/compare/@textlint/ast-node-types@2.0.0...@textlint/ast-node-types@3.0.0-next.0) (2017-12-15)
+
+
+### Bug Fixes
+
+* **ast-node-types:** Make TxtNode non-weak type ([#382](https://github.com/textlint/textlint/issues/382)) ([81c0145](https://github.com/textlint/textlint/commit/81c0145))
+
+
+
+
+
+## [1.1.2](https://github.com/textlint/textlint/compare/@textlint/ast-node-types@1.1.1...@textlint/ast-node-types@1.1.2) (2017-05-05)
+
+
+### Bug Fixes
+
+* **docs:** README ([dd98f5c](https://github.com/textlint/textlint/commit/dd98f5c))
+
+
+
+
+
+## [1.1.1](https://github.com/textlint/textlint/compare/@textlint/ast-node-types@1.1.0...@textlint/ast-node-types@1.1.1) (2017-05-05)
+
+
+
+
+
+# 1.1.0 (2017-05-05)
+
+
+### Features
+
+* **ast-node-types:** add ast-node-types ([2ba6583](https://github.com/textlint/textlint/commit/2ba6583))
+* **packages:** add [@textlint](https://github.com/textlint)/ast-node-types package ([66fb289](https://github.com/textlint/textlint/commit/66fb289))
diff --git a/node_modules/@textlint/ast-node-types/LICENSE b/node_modules/@textlint/ast-node-types/LICENSE
new file mode 100644
index 000000000..fca71ec20
--- /dev/null
+++ b/node_modules/@textlint/ast-node-types/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2014-present azu
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/node_modules/@textlint/ast-node-types/README.md b/node_modules/@textlint/ast-node-types/README.md
new file mode 100644
index 000000000..a0e4d8a8f
--- /dev/null
+++ b/node_modules/@textlint/ast-node-types/README.md
@@ -0,0 +1,65 @@
+# @textlint/ast-node-types
+
+The definition for textlint AST Node types.
+
+This module for parse plugin.
+
+
+For more details, see [TxtNode document](https://github.com/textlint/textlint/blob/master/docs/txtnode.md).
+
+## Installation
+
+ npm install @textlint/ast-node-types
+
+## Usage
+
+```js
+import { ASTNodeTypes } from "@textlint/ast-node-types";
+console.log(ASTNodeTypes.Document); // => string
+```
+
+### Type interface for TxtNode
+
+This library include type interface of [TxtNode](https://github.com/textlint/textlint/blob/master/docs/txtnode.md).
+TypeScript user can use it as type of TxtNode.
+
+```ts
+// type interface
+import { TxtNode } from "@textlint/ast-node-types";
+
+```
+
+
+## For parser creator
+
+Please use it for creating your textlint-plugin parser.
+
+Use it by
+
+- textlint internal
+- `@textlint/text-to-ast`
+- `@textlint/markdown-to-ast`
+
+## Versioning
+
+- major: Breaking Change
+- minor: Adding new type
+- patch: Fixing issues
+
+## Tests
+
+ npm test
+
+## Contributing
+
+If you want to new type for AST, Please file issue :)
+
+1. Fork it!
+2. Create your feature branch: `git checkout -b my-new-feature`
+3. Commit your changes: `git commit -am 'Add some feature'`
+4. Push to the branch: `git push origin my-new-feature`
+5. Submit a pull request :D
+
+## License
+
+MIT
diff --git a/node_modules/@textlint/ast-node-types/module/TypeofTxtNode.d.ts b/node_modules/@textlint/ast-node-types/module/TypeofTxtNode.d.ts
new file mode 100644
index 000000000..93aebc731
--- /dev/null
+++ b/node_modules/@textlint/ast-node-types/module/TypeofTxtNode.d.ts
@@ -0,0 +1,9 @@
+import { ASTNodeTypes, TxtNode, TxtParentNode, TxtTextNode } from "./index";
+/**
+ * Return TxtNode type of ASTNodeTypes | string
+ *
+ * @example
+ * ```
+ * type NodeType = TxtNodeTypeOfNode;
+ */
+export declare type TypeofTxtNode = T extends ASTNodeTypes.Document ? TxtParentNode : T extends ASTNodeTypes.DocumentExit ? TxtParentNode : T extends ASTNodeTypes.Paragraph ? TxtParentNode : T extends ASTNodeTypes.ParagraphExit ? TxtParentNode : T extends ASTNodeTypes.BlockQuote ? TxtParentNode : T extends ASTNodeTypes.BlockQuoteExit ? TxtParentNode : T extends ASTNodeTypes.List ? TxtParentNode : T extends ASTNodeTypes.ListExit ? TxtParentNode : T extends ASTNodeTypes.ListItem ? TxtParentNode : T extends ASTNodeTypes.ListItemExit ? TxtParentNode : T extends ASTNodeTypes.Header ? TxtParentNode : T extends ASTNodeTypes.HeaderExit ? TxtParentNode : T extends ASTNodeTypes.CodeBlock ? TxtParentNode : T extends ASTNodeTypes.CodeBlockExit ? TxtParentNode : T extends ASTNodeTypes.HtmlBlock ? TxtParentNode : T extends ASTNodeTypes.HtmlBlockExit ? TxtParentNode : T extends ASTNodeTypes.Link ? TxtParentNode : T extends ASTNodeTypes.LinkExit ? TxtParentNode : T extends ASTNodeTypes.Delete ? TxtParentNode : T extends ASTNodeTypes.DeleteExit ? TxtParentNode : T extends ASTNodeTypes.Emphasis ? TxtParentNode : T extends ASTNodeTypes.EmphasisExit ? TxtParentNode : T extends ASTNodeTypes.Strong ? TxtParentNode : T extends ASTNodeTypes.StrongExit ? TxtParentNode : T extends ASTNodeTypes.Break ? TxtNode : T extends ASTNodeTypes.BreakExit ? TxtNode : T extends ASTNodeTypes.Image ? TxtNode : T extends ASTNodeTypes.ImageExit ? TxtNode : T extends ASTNodeTypes.HorizontalRule ? TxtNode : T extends ASTNodeTypes.HorizontalRuleExit ? TxtNode : T extends ASTNodeTypes.Comment ? TxtTextNode : T extends ASTNodeTypes.CommentExit ? TxtTextNode : T extends ASTNodeTypes.Str ? TxtTextNode : T extends ASTNodeTypes.StrExit ? TxtTextNode : T extends ASTNodeTypes.Code ? TxtTextNode : T extends ASTNodeTypes.CodeExit ? TxtTextNode : T extends ASTNodeTypes.Html ? TxtTextNode : T extends ASTNodeTypes.HtmlExit ? TxtTextNode : any;
diff --git a/node_modules/@textlint/ast-node-types/module/TypeofTxtNode.js b/node_modules/@textlint/ast-node-types/module/TypeofTxtNode.js
new file mode 100644
index 000000000..df77dd741
--- /dev/null
+++ b/node_modules/@textlint/ast-node-types/module/TypeofTxtNode.js
@@ -0,0 +1,2 @@
+export {};
+//# sourceMappingURL=TypeofTxtNode.js.map
\ No newline at end of file
diff --git a/node_modules/@textlint/ast-node-types/module/TypeofTxtNode.js.map b/node_modules/@textlint/ast-node-types/module/TypeofTxtNode.js.map
new file mode 100644
index 000000000..8c7eff295
--- /dev/null
+++ b/node_modules/@textlint/ast-node-types/module/TypeofTxtNode.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"TypeofTxtNode.js","sourceRoot":"","sources":["../src/TypeofTxtNode.ts"],"names":[],"mappings":""}
\ No newline at end of file
diff --git a/node_modules/@textlint/ast-node-types/module/index.d.ts b/node_modules/@textlint/ast-node-types/module/index.d.ts
new file mode 100644
index 000000000..0fb352a3e
--- /dev/null
+++ b/node_modules/@textlint/ast-node-types/module/index.d.ts
@@ -0,0 +1,116 @@
+/**
+ * AST Node types list on TxtNode.
+ * Constant value of types
+ * @see https://github.com/textlint/textlint/blob/master/docs/txtnode.md
+ */
+import { TypeofTxtNode } from "./TypeofTxtNode";
+export declare enum ASTNodeTypes {
+ Document = "Document",
+ DocumentExit = "Document:exit",
+ Paragraph = "Paragraph",
+ ParagraphExit = "Paragraph:exit",
+ BlockQuote = "BlockQuote",
+ BlockQuoteExit = "BlockQuote:exit",
+ ListItem = "ListItem",
+ ListItemExit = "ListItem:exit",
+ List = "List",
+ ListExit = "List:exit",
+ Header = "Header",
+ HeaderExit = "Header:exit",
+ CodeBlock = "CodeBlock",
+ CodeBlockExit = "CodeBlock:exit",
+ HtmlBlock = "HtmlBlock",
+ HtmlBlockExit = "HtmlBlock:exit",
+ HorizontalRule = "HorizontalRule",
+ HorizontalRuleExit = "HorizontalRule:exit",
+ Comment = "Comment",
+ CommentExit = "Comment:exit",
+ /**
+ * @deprecated
+ */
+ ReferenceDef = "ReferenceDef",
+ /**
+ * @deprecated
+ */
+ ReferenceDefExit = "ReferenceDef:exit",
+ Str = "Str",
+ StrExit = "Str:exit",
+ Break = "Break",
+ BreakExit = "Break:exit",
+ Emphasis = "Emphasis",
+ EmphasisExit = "Emphasis:exit",
+ Strong = "Strong",
+ StrongExit = "Strong:exit",
+ Html = "Html",
+ HtmlExit = "Html:exit",
+ Link = "Link",
+ LinkExit = "Link:exit",
+ Image = "Image",
+ ImageExit = "Image:exit",
+ Code = "Code",
+ CodeExit = "Code:exit",
+ Delete = "Delete",
+ DeleteExit = "Delete:exit"
+}
+/**
+ * Key of ASTNodeTypes or any string
+ * For example, TxtNodeType is "Document".
+ */
+export declare type TxtNodeType = keyof typeof ASTNodeTypes | string;
+/**
+ * Type utility for TxtNodeType
+ * Return TxtNode interface for the TxtNodeTYpe
+ */
+export { TypeofTxtNode };
+/**
+ * Any TxtNode types
+ */
+export declare type AnyTxtNode = TxtNode | TxtTextNode | TxtParentNode;
+/**
+ * Basic TxtNode
+ * Probably, Real TxtNode implementation has more properties.
+ */
+export interface TxtNode {
+ type: TxtNodeType;
+ raw: string;
+ range: TextNodeRange;
+ loc: TxtNodeLineLocation;
+ parent?: TxtNode;
+ [index: string]: any;
+}
+/**
+ * Location
+ */
+export interface TxtNodeLineLocation {
+ start: TxtNodePosition;
+ end: TxtNodePosition;
+}
+/**
+ * Position's line start with 1.
+ * Position's column start with 0.
+ * This is for compatibility with JavaScript AST.
+ * https://gist.github.com/azu/8866b2cb9b7a933e01fe
+ */
+export interface TxtNodePosition {
+ line: number;
+ column: number;
+}
+/**
+ * Range start with 0
+ */
+export declare type TextNodeRange = [number, number];
+/**
+ * Text Node.
+ * Text Node has inline value.
+ * For example, `Str` Node is an TxtTextNode.
+ */
+export interface TxtTextNode extends TxtNode {
+ value: string;
+}
+/**
+ * Parent Node.
+ * Parent Node has children that are consist of TxtNode or TxtTextNode
+ */
+export interface TxtParentNode extends TxtNode {
+ children: Array;
+}
diff --git a/node_modules/@textlint/ast-node-types/module/index.js b/node_modules/@textlint/ast-node-types/module/index.js
new file mode 100644
index 000000000..8eeea0199
--- /dev/null
+++ b/node_modules/@textlint/ast-node-types/module/index.js
@@ -0,0 +1,53 @@
+// MIT © 2017 azu
+"use strict";
+export var ASTNodeTypes;
+(function (ASTNodeTypes) {
+ ASTNodeTypes["Document"] = "Document";
+ ASTNodeTypes["DocumentExit"] = "Document:exit";
+ ASTNodeTypes["Paragraph"] = "Paragraph";
+ ASTNodeTypes["ParagraphExit"] = "Paragraph:exit";
+ ASTNodeTypes["BlockQuote"] = "BlockQuote";
+ ASTNodeTypes["BlockQuoteExit"] = "BlockQuote:exit";
+ ASTNodeTypes["ListItem"] = "ListItem";
+ ASTNodeTypes["ListItemExit"] = "ListItem:exit";
+ ASTNodeTypes["List"] = "List";
+ ASTNodeTypes["ListExit"] = "List:exit";
+ ASTNodeTypes["Header"] = "Header";
+ ASTNodeTypes["HeaderExit"] = "Header:exit";
+ ASTNodeTypes["CodeBlock"] = "CodeBlock";
+ ASTNodeTypes["CodeBlockExit"] = "CodeBlock:exit";
+ ASTNodeTypes["HtmlBlock"] = "HtmlBlock";
+ ASTNodeTypes["HtmlBlockExit"] = "HtmlBlock:exit";
+ ASTNodeTypes["HorizontalRule"] = "HorizontalRule";
+ ASTNodeTypes["HorizontalRuleExit"] = "HorizontalRule:exit";
+ ASTNodeTypes["Comment"] = "Comment";
+ ASTNodeTypes["CommentExit"] = "Comment:exit";
+ /**
+ * @deprecated
+ */
+ ASTNodeTypes["ReferenceDef"] = "ReferenceDef";
+ /**
+ * @deprecated
+ */
+ ASTNodeTypes["ReferenceDefExit"] = "ReferenceDef:exit";
+ // inline
+ ASTNodeTypes["Str"] = "Str";
+ ASTNodeTypes["StrExit"] = "Str:exit";
+ ASTNodeTypes["Break"] = "Break";
+ ASTNodeTypes["BreakExit"] = "Break:exit";
+ ASTNodeTypes["Emphasis"] = "Emphasis";
+ ASTNodeTypes["EmphasisExit"] = "Emphasis:exit";
+ ASTNodeTypes["Strong"] = "Strong";
+ ASTNodeTypes["StrongExit"] = "Strong:exit";
+ ASTNodeTypes["Html"] = "Html";
+ ASTNodeTypes["HtmlExit"] = "Html:exit";
+ ASTNodeTypes["Link"] = "Link";
+ ASTNodeTypes["LinkExit"] = "Link:exit";
+ ASTNodeTypes["Image"] = "Image";
+ ASTNodeTypes["ImageExit"] = "Image:exit";
+ ASTNodeTypes["Code"] = "Code";
+ ASTNodeTypes["CodeExit"] = "Code:exit";
+ ASTNodeTypes["Delete"] = "Delete";
+ ASTNodeTypes["DeleteExit"] = "Delete:exit";
+})(ASTNodeTypes || (ASTNodeTypes = {}));
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/node_modules/@textlint/ast-node-types/module/index.js.map b/node_modules/@textlint/ast-node-types/module/index.js.map
new file mode 100644
index 000000000..400f4346c
--- /dev/null
+++ b/node_modules/@textlint/ast-node-types/module/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,iBAAiB;AACjB,YAAY,CAAC;AASb,MAAM,CAAN,IAAY,YAgDX;AAhDD,WAAY,YAAY;IACpB,qCAAqB,CAAA;IACrB,8CAA8B,CAAA;IAC9B,uCAAuB,CAAA;IACvB,gDAAgC,CAAA;IAChC,yCAAyB,CAAA;IACzB,kDAAkC,CAAA;IAClC,qCAAqB,CAAA;IACrB,8CAA8B,CAAA;IAC9B,6BAAa,CAAA;IACb,sCAAsB,CAAA;IACtB,iCAAiB,CAAA;IACjB,0CAA0B,CAAA;IAC1B,uCAAuB,CAAA;IACvB,gDAAgC,CAAA;IAChC,uCAAuB,CAAA;IACvB,gDAAgC,CAAA;IAChC,iDAAiC,CAAA;IACjC,0DAA0C,CAAA;IAC1C,mCAAmB,CAAA;IACnB,4CAA4B,CAAA;IAC5B;;OAEG;IACH,6CAA6B,CAAA;IAC7B;;OAEG;IACH,sDAAsC,CAAA;IACtC,SAAS;IACT,2BAAW,CAAA;IACX,oCAAoB,CAAA;IACpB,+BAAe,CAAA;IACf,wCAAwB,CAAA;IACxB,qCAAqB,CAAA;IACrB,8CAA8B,CAAA;IAC9B,iCAAiB,CAAA;IACjB,0CAA0B,CAAA;IAC1B,6BAAa,CAAA;IACb,sCAAsB,CAAA;IACtB,6BAAa,CAAA;IACb,sCAAsB,CAAA;IACtB,+BAAe,CAAA;IACf,wCAAwB,CAAA;IACxB,6BAAa,CAAA;IACb,sCAAsB,CAAA;IACtB,iCAAiB,CAAA;IACjB,0CAA0B,CAAA;AAC9B,CAAC,EAhDW,YAAY,KAAZ,YAAY,QAgDvB"}
\ No newline at end of file
diff --git a/node_modules/@textlint/ast-node-types/package.json b/node_modules/@textlint/ast-node-types/package.json
new file mode 100644
index 000000000..10074a80e
--- /dev/null
+++ b/node_modules/@textlint/ast-node-types/package.json
@@ -0,0 +1,38 @@
+{
+ "name": "@textlint/ast-node-types",
+ "version": "4.4.3",
+ "description": "textlint AST node type definition.",
+ "keywords": [
+ "textlint"
+ ],
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/textlint/textlint.git"
+ },
+ "license": "MIT",
+ "author": "azu",
+ "main": "./lib/index.js",
+ "module": "./module/index.js",
+ "types": "./lib/index.d.ts",
+ "files": [
+ "bin/",
+ "lib/",
+ "module/",
+ "src/"
+ ],
+ "scripts": {
+ "build": "tsc -b && tsc -b tsconfig.module.json",
+ "clean": "rimraf lib/ module/ tsconfig.tsbuildinfo tsconfig.module.tsbuildinfo",
+ "prepublish": "npm run build",
+ "test": "mocha \"test/**/*.{js,ts}\""
+ },
+ "devDependencies": {
+ "cross-env": "^7.0.3",
+ "mocha": "^8.4.0",
+ "rimraf": "^3.0.2",
+ "ts-node": "^9.1.1",
+ "ts-node-test-register": "^9.0.1",
+ "typescript": "~4.0.2"
+ },
+ "gitHead": "4cb1e78aa38cd0e942c61f352ffb29bb36f80a7b"
+}
diff --git a/node_modules/@textlint/ast-node-types/src/TypeofTxtNode.ts b/node_modules/@textlint/ast-node-types/src/TypeofTxtNode.ts
new file mode 100644
index 000000000..d819563a9
--- /dev/null
+++ b/node_modules/@textlint/ast-node-types/src/TypeofTxtNode.ts
@@ -0,0 +1,91 @@
+import { ASTNodeTypes, TxtNode, TxtParentNode, TxtTextNode } from "./index";
+/**
+ * Return TxtNode type of ASTNodeTypes | string
+ *
+ * @example
+ * ```
+ * type NodeType = TxtNodeTypeOfNode;
+ */
+export type TypeofTxtNode =
+ // Root
+ T extends ASTNodeTypes.Document
+ ? TxtParentNode
+ : T extends ASTNodeTypes.DocumentExit
+ ? TxtParentNode // Paragraph Str.
+ : T extends ASTNodeTypes.Paragraph
+ ? TxtParentNode
+ : T extends ASTNodeTypes.ParagraphExit
+ ? TxtParentNode // > Str
+ : T extends ASTNodeTypes.BlockQuote
+ ? TxtParentNode
+ : T extends ASTNodeTypes.BlockQuoteExit
+ ? TxtParentNode // - item
+ : T extends ASTNodeTypes.List
+ ? TxtParentNode
+ : T extends ASTNodeTypes.ListExit
+ ? TxtParentNode // - item
+ : T extends ASTNodeTypes.ListItem
+ ? TxtParentNode
+ : T extends ASTNodeTypes.ListItemExit
+ ? TxtParentNode // # Str
+ : T extends ASTNodeTypes.Header
+ ? TxtParentNode
+ : T extends ASTNodeTypes.HeaderExit
+ ? TxtParentNode
+ : /* ```
+ * code
+ * ```
+ */
+ T extends ASTNodeTypes.CodeBlock
+ ? TxtParentNode
+ : T extends ASTNodeTypes.CodeBlockExit
+ ? TxtParentNode // \n
+ : T extends ASTNodeTypes.HtmlBlock
+ ? TxtParentNode
+ : T extends ASTNodeTypes.HtmlBlockExit
+ ? TxtParentNode // [link](https://example.com)
+ : T extends ASTNodeTypes.Link
+ ? TxtParentNode
+ : T extends ASTNodeTypes.LinkExit
+ ? TxtParentNode // ~~Str~~
+ : T extends ASTNodeTypes.Delete
+ ? TxtParentNode
+ : T extends ASTNodeTypes.DeleteExit
+ ? TxtParentNode // *Str*
+ : T extends ASTNodeTypes.Emphasis
+ ? TxtParentNode
+ : T extends ASTNodeTypes.EmphasisExit
+ ? TxtParentNode // __Str__
+ : T extends ASTNodeTypes.Strong
+ ? TxtParentNode
+ : T extends ASTNodeTypes.StrongExit
+ ? TxtParentNode // Str
+ : T extends ASTNodeTypes.Break
+ ? TxtNode
+ : T extends ASTNodeTypes.BreakExit
+ ? TxtNode // 
+ : T extends ASTNodeTypes.Image
+ ? TxtNode
+ : T extends ASTNodeTypes.ImageExit
+ ? TxtNode // ----
+ : T extends ASTNodeTypes.HorizontalRule
+ ? TxtNode
+ : T extends ASTNodeTypes.HorizontalRuleExit
+ ? TxtNode //
+ : T extends ASTNodeTypes.Comment
+ ? TxtTextNode
+ : T extends ASTNodeTypes.CommentExit
+ ? TxtTextNode // Str
+ : T extends ASTNodeTypes.Str
+ ? TxtTextNode
+ : T extends ASTNodeTypes.StrExit
+ ? TxtTextNode // `code`
+ : T extends ASTNodeTypes.Code
+ ? TxtTextNode
+ : T extends ASTNodeTypes.CodeExit
+ ? TxtTextNode // Str
+ : T extends ASTNodeTypes.Html
+ ? TxtTextNode
+ : T extends ASTNodeTypes.HtmlExit
+ ? TxtTextNode
+ : any;
diff --git a/node_modules/@textlint/ast-node-types/src/index.ts b/node_modules/@textlint/ast-node-types/src/index.ts
new file mode 100644
index 000000000..5c6a0fe61
--- /dev/null
+++ b/node_modules/@textlint/ast-node-types/src/index.ts
@@ -0,0 +1,134 @@
+// MIT © 2017 azu
+"use strict";
+
+/**
+ * AST Node types list on TxtNode.
+ * Constant value of types
+ * @see https://github.com/textlint/textlint/blob/master/docs/txtnode.md
+ */
+import { TypeofTxtNode } from "./TypeofTxtNode";
+
+export enum ASTNodeTypes {
+ Document = "Document",
+ DocumentExit = "Document:exit",
+ Paragraph = "Paragraph",
+ ParagraphExit = "Paragraph:exit",
+ BlockQuote = "BlockQuote",
+ BlockQuoteExit = "BlockQuote:exit",
+ ListItem = "ListItem",
+ ListItemExit = "ListItem:exit",
+ List = "List",
+ ListExit = "List:exit",
+ Header = "Header",
+ HeaderExit = "Header:exit",
+ CodeBlock = "CodeBlock",
+ CodeBlockExit = "CodeBlock:exit",
+ HtmlBlock = "HtmlBlock",
+ HtmlBlockExit = "HtmlBlock:exit",
+ HorizontalRule = "HorizontalRule",
+ HorizontalRuleExit = "HorizontalRule:exit",
+ Comment = "Comment",
+ CommentExit = "Comment:exit",
+ /**
+ * @deprecated
+ */
+ ReferenceDef = "ReferenceDef",
+ /**
+ * @deprecated
+ */
+ ReferenceDefExit = "ReferenceDef:exit",
+ // inline
+ Str = "Str",
+ StrExit = "Str:exit",
+ Break = "Break", // well-known Hard Break
+ BreakExit = "Break:exit", // well-known Hard Break
+ Emphasis = "Emphasis",
+ EmphasisExit = "Emphasis:exit",
+ Strong = "Strong",
+ StrongExit = "Strong:exit",
+ Html = "Html",
+ HtmlExit = "Html:exit",
+ Link = "Link",
+ LinkExit = "Link:exit",
+ Image = "Image",
+ ImageExit = "Image:exit",
+ Code = "Code",
+ CodeExit = "Code:exit",
+ Delete = "Delete",
+ DeleteExit = "Delete:exit"
+}
+
+/**
+ * Key of ASTNodeTypes or any string
+ * For example, TxtNodeType is "Document".
+ */
+export type TxtNodeType = keyof typeof ASTNodeTypes | string;
+
+/**
+ * Type utility for TxtNodeType
+ * Return TxtNode interface for the TxtNodeTYpe
+ */
+export { TypeofTxtNode };
+
+/**
+ * Any TxtNode types
+ */
+export type AnyTxtNode = TxtNode | TxtTextNode | TxtParentNode;
+
+/**
+ * Basic TxtNode
+ * Probably, Real TxtNode implementation has more properties.
+ */
+export interface TxtNode {
+ type: TxtNodeType;
+ raw: string;
+ range: TextNodeRange;
+ loc: TxtNodeLineLocation;
+ // parent is runtime information
+ // Not need in AST
+ // For example, top Root Node like `Document` has not parent.
+ parent?: TxtNode;
+
+ [index: string]: any;
+}
+
+/**
+ * Location
+ */
+export interface TxtNodeLineLocation {
+ start: TxtNodePosition;
+ end: TxtNodePosition;
+}
+
+/**
+ * Position's line start with 1.
+ * Position's column start with 0.
+ * This is for compatibility with JavaScript AST.
+ * https://gist.github.com/azu/8866b2cb9b7a933e01fe
+ */
+export interface TxtNodePosition {
+ line: number; // start with 1
+ column: number; // start with 0
+}
+
+/**
+ * Range start with 0
+ */
+export type TextNodeRange = [number, number];
+
+/**
+ * Text Node.
+ * Text Node has inline value.
+ * For example, `Str` Node is an TxtTextNode.
+ */
+export interface TxtTextNode extends TxtNode {
+ value: string;
+}
+
+/**
+ * Parent Node.
+ * Parent Node has children that are consist of TxtNode or TxtTextNode
+ */
+export interface TxtParentNode extends TxtNode {
+ children: Array;
+}
diff --git a/node_modules/@textlint/ast-tester/CHANGELOG.md b/node_modules/@textlint/ast-tester/CHANGELOG.md
new file mode 100644
index 000000000..3a3701e09
--- /dev/null
+++ b/node_modules/@textlint/ast-tester/CHANGELOG.md
@@ -0,0 +1,424 @@
+# Change Log
+
+All notable changes to this project will be documented in this file.
+See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+
+## [2.3.5](https://github.com/textlint/textlint/compare/@textlint/ast-tester@2.3.4...@textlint/ast-tester@2.3.5) (2021-05-08)
+
+**Note:** Version bump only for package @textlint/ast-tester
+
+
+
+
+
+## [2.3.4](https://github.com/textlint/textlint/compare/@textlint/ast-tester@2.3.3...@textlint/ast-tester@2.3.4) (2021-03-21)
+
+**Note:** Version bump only for package @textlint/ast-tester
+
+
+
+
+
+
+## [2.3.3](https://github.com/textlint/textlint/compare/@textlint/ast-tester@2.3.2...@textlint/ast-tester@2.3.3) (2021-03-19)
+
+
+### Chores
+
+* **deps:** update dependency [@types](https://github.com/types)/mocha to v8.2.1 ([da2d6e7](https://github.com/textlint/textlint/commit/da2d6e7))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.27 ([c1c0b86](https://github.com/textlint/textlint/commit/c1c0b86))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.28 ([136e255](https://github.com/textlint/textlint/commit/136e255))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.29 ([74af03b](https://github.com/textlint/textlint/commit/74af03b))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.30 ([4872821](https://github.com/textlint/textlint/commit/4872821))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.31 ([95821ad](https://github.com/textlint/textlint/commit/95821ad))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.32 ([0b0a384](https://github.com/textlint/textlint/commit/0b0a384))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.33 ([a05e2d9](https://github.com/textlint/textlint/commit/a05e2d9))
+* **deps:** update dependency mocha to ^8.3.0 ([0464adb](https://github.com/textlint/textlint/commit/0464adb))
+* **deps:** update dependency mocha to ^8.3.1 ([cc509ed](https://github.com/textlint/textlint/commit/cc509ed))
+* **deps:** update patch updates ([183eb8d](https://github.com/textlint/textlint/commit/183eb8d))
+
+
+
+
+
+
+## [2.3.2](https://github.com/textlint/textlint/compare/@textlint/ast-tester@2.3.1...@textlint/ast-tester@2.3.2) (2021-02-06)
+
+
+### Chores
+
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.25 ([cc5c800](https://github.com/textlint/textlint/commit/cc5c800))
+
+
+
+
+
+
+## [2.3.1](https://github.com/textlint/textlint/compare/@textlint/ast-tester@2.2.4...@textlint/ast-tester@2.3.1) (2021-01-22)
+
+
+### Chores
+
+* **deps:** update dependency [@types](https://github.com/types)/mocha to v8.0.4 ([fd60f20](https://github.com/textlint/textlint/commit/fd60f20))
+* **deps:** update dependency [@types](https://github.com/types)/mocha to v8.2.0 ([5ced72d](https://github.com/textlint/textlint/commit/5ced72d))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.11.2 ([6ac372a](https://github.com/textlint/textlint/commit/6ac372a))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.11.5 ([b0e73f5](https://github.com/textlint/textlint/commit/b0e73f5))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.11.8 ([33679af](https://github.com/textlint/textlint/commit/33679af))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.10 ([96ba315](https://github.com/textlint/textlint/commit/96ba315))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.12 ([f62f2e3](https://github.com/textlint/textlint/commit/f62f2e3))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.13 ([608afd4](https://github.com/textlint/textlint/commit/608afd4))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.14 ([8417f8a](https://github.com/textlint/textlint/commit/8417f8a))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.16 ([7209803](https://github.com/textlint/textlint/commit/7209803))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.17 ([9ec5481](https://github.com/textlint/textlint/commit/9ec5481))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.19 ([bd050c9](https://github.com/textlint/textlint/commit/bd050c9))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.21 ([464d58a](https://github.com/textlint/textlint/commit/464d58a))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.22 ([5e5d214](https://github.com/textlint/textlint/commit/5e5d214))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.5 ([1ed7006](https://github.com/textlint/textlint/commit/1ed7006))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.6 ([507a41b](https://github.com/textlint/textlint/commit/507a41b))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.7 ([64f97eb](https://github.com/textlint/textlint/commit/64f97eb))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.8 ([8de7d16](https://github.com/textlint/textlint/commit/8de7d16))
+* **deps:** update minor updates ([7ef0be6](https://github.com/textlint/textlint/commit/7ef0be6))
+* **deps:** update minor updates ([2f3dcb6](https://github.com/textlint/textlint/commit/2f3dcb6))
+* **deps:** update minor updates ([7a53517](https://github.com/textlint/textlint/commit/7a53517))
+* **deps:** update minor updates ([#712](https://github.com/textlint/textlint/issues/712)) ([8c42a19](https://github.com/textlint/textlint/commit/8c42a19))
+* **deps:** update patch updates ([24fe2a9](https://github.com/textlint/textlint/commit/24fe2a9))
+* **deps:** update patch updates ([3d9660b](https://github.com/textlint/textlint/commit/3d9660b))
+* **deps:** update patch updates ([fe2ad4f](https://github.com/textlint/textlint/commit/fe2ad4f))
+* **deps:** update patch updates ([e438ff2](https://github.com/textlint/textlint/commit/e438ff2))
+* **deps:** update patch updates ([9df50df](https://github.com/textlint/textlint/commit/9df50df))
+* **deps:** update patch updates ([4f4c206](https://github.com/textlint/textlint/commit/4f4c206))
+* **deps:** update patch updates ([1a0e41f](https://github.com/textlint/textlint/commit/1a0e41f))
+* **deps:** update TypeScript deps ([#705](https://github.com/textlint/textlint/issues/705)) ([1baa72a](https://github.com/textlint/textlint/commit/1baa72a))
+* use [@monorepo-utils](https://github.com/monorepo-utils)/workspaces-to-typescript-project-references ([#699](https://github.com/textlint/textlint/issues/699)) ([eff1943](https://github.com/textlint/textlint/commit/eff1943))
+
+
+### Features
+
+* **source-code-fixer:** add `[@textlint](https://github.com/textlint)/source-code-fixer` ([#736](https://github.com/textlint/textlint/issues/736)) ([bf7235a](https://github.com/textlint/textlint/commit/bf7235a))
+
+
+
+
+
+
+# [2.3.0](https://github.com/textlint/textlint/compare/@textlint/ast-tester@2.2.4...@textlint/ast-tester@2.3.0) (2021-01-22)
+
+
+### Chores
+
+* **deps:** update dependency [@types](https://github.com/types)/mocha to v8.0.4 ([fd60f20](https://github.com/textlint/textlint/commit/fd60f20))
+* **deps:** update dependency [@types](https://github.com/types)/mocha to v8.2.0 ([5ced72d](https://github.com/textlint/textlint/commit/5ced72d))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.11.2 ([6ac372a](https://github.com/textlint/textlint/commit/6ac372a))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.11.5 ([b0e73f5](https://github.com/textlint/textlint/commit/b0e73f5))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.11.8 ([33679af](https://github.com/textlint/textlint/commit/33679af))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.10 ([96ba315](https://github.com/textlint/textlint/commit/96ba315))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.12 ([f62f2e3](https://github.com/textlint/textlint/commit/f62f2e3))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.13 ([608afd4](https://github.com/textlint/textlint/commit/608afd4))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.14 ([8417f8a](https://github.com/textlint/textlint/commit/8417f8a))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.16 ([7209803](https://github.com/textlint/textlint/commit/7209803))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.17 ([9ec5481](https://github.com/textlint/textlint/commit/9ec5481))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.19 ([bd050c9](https://github.com/textlint/textlint/commit/bd050c9))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.21 ([464d58a](https://github.com/textlint/textlint/commit/464d58a))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.22 ([5e5d214](https://github.com/textlint/textlint/commit/5e5d214))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.5 ([1ed7006](https://github.com/textlint/textlint/commit/1ed7006))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.6 ([507a41b](https://github.com/textlint/textlint/commit/507a41b))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.7 ([64f97eb](https://github.com/textlint/textlint/commit/64f97eb))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.8 ([8de7d16](https://github.com/textlint/textlint/commit/8de7d16))
+* **deps:** update minor updates ([7ef0be6](https://github.com/textlint/textlint/commit/7ef0be6))
+* **deps:** update minor updates ([2f3dcb6](https://github.com/textlint/textlint/commit/2f3dcb6))
+* **deps:** update minor updates ([7a53517](https://github.com/textlint/textlint/commit/7a53517))
+* **deps:** update minor updates ([#712](https://github.com/textlint/textlint/issues/712)) ([8c42a19](https://github.com/textlint/textlint/commit/8c42a19))
+* **deps:** update patch updates ([24fe2a9](https://github.com/textlint/textlint/commit/24fe2a9))
+* **deps:** update patch updates ([3d9660b](https://github.com/textlint/textlint/commit/3d9660b))
+* **deps:** update patch updates ([fe2ad4f](https://github.com/textlint/textlint/commit/fe2ad4f))
+* **deps:** update patch updates ([e438ff2](https://github.com/textlint/textlint/commit/e438ff2))
+* **deps:** update patch updates ([9df50df](https://github.com/textlint/textlint/commit/9df50df))
+* **deps:** update patch updates ([4f4c206](https://github.com/textlint/textlint/commit/4f4c206))
+* **deps:** update patch updates ([1a0e41f](https://github.com/textlint/textlint/commit/1a0e41f))
+* **deps:** update TypeScript deps ([#705](https://github.com/textlint/textlint/issues/705)) ([1baa72a](https://github.com/textlint/textlint/commit/1baa72a))
+* use [@monorepo-utils](https://github.com/monorepo-utils)/workspaces-to-typescript-project-references ([#699](https://github.com/textlint/textlint/issues/699)) ([eff1943](https://github.com/textlint/textlint/commit/eff1943))
+
+
+### Features
+
+* **source-code-fixer:** add `[@textlint](https://github.com/textlint)/source-code-fixer` ([#736](https://github.com/textlint/textlint/issues/736)) ([bf7235a](https://github.com/textlint/textlint/commit/bf7235a))
+
+
+
+
+
+
+## [2.2.5](https://github.com/textlint/textlint/compare/@textlint/ast-tester@2.2.4...@textlint/ast-tester@2.2.5) (2020-12-22)
+
+
+### Chores
+
+* **deps:** update dependency [@types](https://github.com/types)/mocha to v8.0.4 ([fd60f20](https://github.com/textlint/textlint/commit/fd60f20))
+* **deps:** update dependency [@types](https://github.com/types)/mocha to v8.2.0 ([5ced72d](https://github.com/textlint/textlint/commit/5ced72d))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.11.2 ([6ac372a](https://github.com/textlint/textlint/commit/6ac372a))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.11.5 ([b0e73f5](https://github.com/textlint/textlint/commit/b0e73f5))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.11.8 ([33679af](https://github.com/textlint/textlint/commit/33679af))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.10 ([96ba315](https://github.com/textlint/textlint/commit/96ba315))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.12 ([f62f2e3](https://github.com/textlint/textlint/commit/f62f2e3))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.13 ([608afd4](https://github.com/textlint/textlint/commit/608afd4))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.14 ([8417f8a](https://github.com/textlint/textlint/commit/8417f8a))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.5 ([1ed7006](https://github.com/textlint/textlint/commit/1ed7006))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.6 ([507a41b](https://github.com/textlint/textlint/commit/507a41b))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.7 ([64f97eb](https://github.com/textlint/textlint/commit/64f97eb))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.8 ([8de7d16](https://github.com/textlint/textlint/commit/8de7d16))
+* **deps:** update minor updates ([7ef0be6](https://github.com/textlint/textlint/commit/7ef0be6))
+* **deps:** update minor updates ([2f3dcb6](https://github.com/textlint/textlint/commit/2f3dcb6))
+* **deps:** update minor updates ([7a53517](https://github.com/textlint/textlint/commit/7a53517))
+* **deps:** update minor updates ([#712](https://github.com/textlint/textlint/issues/712)) ([8c42a19](https://github.com/textlint/textlint/commit/8c42a19))
+* **deps:** update patch updates ([3d9660b](https://github.com/textlint/textlint/commit/3d9660b))
+* **deps:** update patch updates ([fe2ad4f](https://github.com/textlint/textlint/commit/fe2ad4f))
+* **deps:** update patch updates ([e438ff2](https://github.com/textlint/textlint/commit/e438ff2))
+* **deps:** update patch updates ([9df50df](https://github.com/textlint/textlint/commit/9df50df))
+* **deps:** update patch updates ([4f4c206](https://github.com/textlint/textlint/commit/4f4c206))
+* **deps:** update patch updates ([1a0e41f](https://github.com/textlint/textlint/commit/1a0e41f))
+* **deps:** update TypeScript deps ([#705](https://github.com/textlint/textlint/issues/705)) ([1baa72a](https://github.com/textlint/textlint/commit/1baa72a))
+* use [@monorepo-utils](https://github.com/monorepo-utils)/workspaces-to-typescript-project-references ([#699](https://github.com/textlint/textlint/issues/699)) ([eff1943](https://github.com/textlint/textlint/commit/eff1943))
+
+
+
+
+
+
+## [2.2.4](https://github.com/textlint/textlint/compare/@textlint/ast-tester@2.2.3...@textlint/ast-tester@2.2.4) (2020-07-24)
+
+
+### Bug Fixes
+
+* improve "module" supports ([5ba5182](https://github.com/textlint/textlint/commit/5ba5182))
+
+
+
+
+
+
+## [2.2.3](https://github.com/textlint/textlint/compare/@textlint/ast-tester@2.2.2...@textlint/ast-tester@2.2.3) (2020-07-24)
+
+
+### Bug Fixes
+
+* "clean" command should remove tsconfig.module.tsbuildinfo ([76ac72a](https://github.com/textlint/textlint/commit/76ac72a))
+
+
+
+
+
+
+## [2.2.2](https://github.com/textlint/textlint/compare/@textlint/ast-tester@2.2.1...@textlint/ast-tester@2.2.2) (2020-07-24)
+
+
+### Bug Fixes
+
+* **@textlint/kernel:** fix export only type definition ([1234930](https://github.com/textlint/textlint/commit/1234930))
+
+
+
+
+
+
+## [2.2.1](https://github.com/textlint/textlint/compare/@textlint/ast-tester@2.2.0...@textlint/ast-tester@2.2.1) (2020-07-24)
+
+
+### Bug Fixes
+
+* include module ([2de05f7](https://github.com/textlint/textlint/commit/2de05f7))
+
+
+
+
+
+
+# [2.2.0](https://github.com/textlint/textlint/compare/@textlint/ast-tester@2.1.6...@textlint/ast-tester@2.2.0) (2020-07-24)
+
+
+### Chores
+
+* **deps:** update devDepencies ([#667](https://github.com/textlint/textlint/issues/667)) ([0503af6](https://github.com/textlint/textlint/commit/0503af6))
+
+
+### Code Refactoring
+
+* **typescript:** Use TypeScript Project References ([#668](https://github.com/textlint/textlint/issues/668)) ([bbffd43](https://github.com/textlint/textlint/commit/bbffd43))
+
+
+### Tests
+
+* migrate mocha.opts to .mocharc.json ([#682](https://github.com/textlint/textlint/issues/682)) ([332ae5e](https://github.com/textlint/textlint/commit/332ae5e))
+
+
+
+
+
+
+## [2.1.6](https://github.com/textlint/textlint/compare/@textlint/ast-tester@2.1.5...@textlint/ast-tester@2.1.6) (2019-10-14)
+
+**Note:** Version bump only for package @textlint/ast-tester
+
+
+
+
+
+
+## [2.1.5](https://github.com/textlint/textlint/compare/@textlint/ast-tester@2.1.3...@textlint/ast-tester@2.1.5) (2019-07-20)
+
+
+### Code Refactoring
+
+* **utils:** move implementation from types to utils ([#611](https://github.com/textlint/textlint/issues/611)) ([cd9adbe](https://github.com/textlint/textlint/commit/cd9adbe))
+
+
+
+
+
+
+## [2.1.4](https://github.com/textlint/textlint/compare/@textlint/ast-tester@2.1.3...@textlint/ast-tester@2.1.4) (2019-07-13)
+
+
+### Code Refactoring
+
+* **utils:** move implementation from types to utils ([#611](https://github.com/textlint/textlint/issues/611)) ([cd9adbe](https://github.com/textlint/textlint/commit/cd9adbe))
+
+
+
+
+
+
+## [2.1.3](https://github.com/textlint/textlint/compare/@textlint/ast-tester@2.1.2...@textlint/ast-tester@2.1.3) (2019-04-30)
+
+
+### Chores
+
+* **deps:** update deps && devDeps ([a19463b](https://github.com/textlint/textlint/commit/a19463b))
+
+
+
+
+
+
+## [2.1.2](https://github.com/textlint/textlint/compare/@textlint/ast-tester@2.1.1...@textlint/ast-tester@2.1.2) (2019-01-03)
+
+**Note:** Version bump only for package @textlint/ast-tester
+
+
+
+
+
+
+## [2.1.1](https://github.com/textlint/textlint/compare/@textlint/ast-tester@2.1.0...@textlint/ast-tester@2.1.1) (2019-01-03)
+
+
+### Chores
+
+* **ast-tester:** remove "noEmit" option ([85642be](https://github.com/textlint/textlint/commit/85642be))
+* **ast-tester:** rename index file to index.ts ([5149101](https://github.com/textlint/textlint/commit/5149101))
+
+
+### Code Refactoring
+
+* **ast-tester:** Convert to TypeScript ([2bb1247](https://github.com/textlint/textlint/commit/2bb1247)), closes [#567](https://github.com/textlint/textlint/issues/567)
+
+
+
+
+
+
+# [2.1.0](https://github.com/textlint/textlint/compare/@textlint/ast-tester@2.0.8...@textlint/ast-tester@2.1.0) (2019-01-01)
+
+
+### Chores
+
+* **deps:** update TypeScript deps ([3ea7fb0](https://github.com/textlint/textlint/commit/3ea7fb0))
+
+
+
+
+
+## [2.0.8](https://github.com/textlint/textlint/compare/@textlint/ast-tester@2.0.7...@textlint/ast-tester@2.0.8) (2018-07-22)
+
+
+### Chores
+
+* **deps:** update mocha ([5df8af4](https://github.com/textlint/textlint/commit/5df8af4))
+
+
+
+
+
+## [2.0.7](https://github.com/textlint/textlint/compare/@textlint/ast-tester@2.0.6...@textlint/ast-tester@2.0.7) (2018-04-02)
+
+
+
+
+**Note:** Version bump only for package @textlint/ast-tester
+
+
+## [2.0.6](https://github.com/textlint/textlint/compare/@textlint/ast-tester@2.0.5...@textlint/ast-tester@2.0.6) (2018-04-02)
+
+
+
+
+**Note:** Version bump only for package @textlint/ast-tester
+
+
+## [2.0.5](https://github.com/textlint/textlint/compare/@textlint/ast-tester@2.0.4...@textlint/ast-tester@2.0.5) (2018-03-25)
+
+
+
+
+**Note:** Version bump only for package @textlint/ast-tester
+
+
+## [2.0.4](https://github.com/textlint/textlint/compare/@textlint/ast-tester@2.0.3...@textlint/ast-tester@2.0.4) (2018-01-27)
+
+
+
+
+**Note:** Version bump only for package @textlint/ast-tester
+
+
+## 2.0.3 (2018-01-18)
+
+
+### Bug Fixes
+
+* **ast-tester:** add `publishConfig` ([e7a150b](https://github.com/textlint/textlint/commit/e7a150b))
+
+
+
+
+
+## [2.0.2](https://github.com/textlint/textlint/compare/textlint-ast-test@2.0.1...textlint-ast-test@2.0.2) (2018-01-12)
+
+
+
+
+**Note:** Version bump only for package textlint-ast-test
+
+
+## [2.0.1](https://github.com/textlint/textlint/compare/textlint-ast-test@2.0.0...textlint-ast-test@2.0.1) (2017-12-25)
+
+
+
+
+**Note:** Version bump only for package textlint-ast-test
+
+
+# [2.0.0](https://github.com/textlint/textlint/compare/textlint-ast-test@2.0.0-next.0...textlint-ast-test@2.0.0) (2017-12-18)
+
+
+
+
+**Note:** Version bump only for package textlint-ast-test
+
+
+# 2.0.0-next.0 (2017-12-15)
+
+
+### Bug Fixes
+
+* **npm:** add files ([2d709e6](https://github.com/textlint/textlint/commit/2d709e6))
+* **npm:** fix repo info ([7bd1c0b](https://github.com/textlint/textlint/commit/7bd1c0b))
diff --git a/node_modules/@textlint/ast-tester/LICENSE b/node_modules/@textlint/ast-tester/LICENSE
new file mode 100644
index 000000000..ffd6b4aa2
--- /dev/null
+++ b/node_modules/@textlint/ast-tester/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2016 azu
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/node_modules/@textlint/ast-tester/README.md b/node_modules/@textlint/ast-tester/README.md
new file mode 100644
index 000000000..82b0f50e7
--- /dev/null
+++ b/node_modules/@textlint/ast-tester/README.md
@@ -0,0 +1,48 @@
+# @textlint/ast-tester
+
+Compliance tests for [textlint](https://github.com/textlint/textlint "textlint")'s AST(Abstract Syntax Tree).
+
+It check compliance of AST at minimum.
+
+- [textlint/txtnode.md at master · textlint/textlint](https://github.com/textlint/textlint/blob/master/docs/txtnode.md "textlint/txtnode.md at master · textlint/textlint")
+
+If you have created [Processor](https://github.com/textlint/textlint/blob/master/docs/plugin.md "Processor") plugin for textlint, you can use it for testing the plugin.
+
+## Installation
+
+ npm install -D @textlint/ast-tester
+
+## Usage
+
+### `test(textlintAST): void`
+
+if the AST is invalid, then throw Error
+
+### `isTxtAST(textlintAST): boolean`
+
+if the AST is valid, then return `true`.
+
+```js
+import {test, isTxtAST} from "@textlint/ast-tester";
+import yourParse from "your-parser";
+// recommenced: test much pattern test
+const AST = yourParse("This is text");
+test(AST);// if the AST is invalid, then throw Error
+
+isTxtAST(AST);// true or false
+```
+## Tests
+
+ npm test
+
+## Contributing
+
+1. Fork it!
+2. Create your feature branch: `git checkout -b my-new-feature`
+3. Commit your changes: `git commit -am 'Add some feature'`
+4. Push to the branch: `git push origin my-new-feature`
+5. Submit a pull request :D
+
+## License
+
+MIT
diff --git a/node_modules/@textlint/ast-tester/module/index.d.ts b/node_modules/@textlint/ast-tester/module/index.d.ts
new file mode 100644
index 000000000..2c2898e35
--- /dev/null
+++ b/node_modules/@textlint/ast-tester/module/index.d.ts
@@ -0,0 +1,3 @@
+import { TxtNode } from "@textlint/ast-node-types";
+export declare function isTxtAST(node: any): node is TxtNode;
+export declare function test(node: any): void;
diff --git a/node_modules/@textlint/ast-tester/module/index.js b/node_modules/@textlint/ast-tester/module/index.js
new file mode 100644
index 000000000..90c2db2d9
--- /dev/null
+++ b/node_modules/@textlint/ast-tester/module/index.js
@@ -0,0 +1,81 @@
+// LICENSE : MIT
+"use strict";
+import * as assert from "assert";
+import { test as UnistTest } from "./unist-test";
+export function isTxtAST(node) {
+ try {
+ test(node);
+ }
+ catch (error) {
+ return false;
+ }
+ return true;
+}
+export function test(node) {
+ // test unist that is weak.
+ UnistTest(node);
+ assert.strictEqual(typeof node, "object");
+ assert.strictEqual(typeof node.type, "string");
+ assert.ok(node.type.length >= 1);
+ assert.doesNotThrow(function () {
+ JSON.parse(JSON.stringify(node));
+ });
+ // children
+ if (node.children !== null && node.children !== undefined) {
+ assert.ok(Array.isArray(node.children));
+ node.children.forEach(test);
+ }
+ // value
+ if (node.value !== null && node.value !== undefined) {
+ assert.strictEqual(typeof node.value, "string");
+ }
+ // raw
+ assert.ok(node.raw !== null && node.raw !== undefined);
+ assert.strictEqual(typeof node.raw, "string");
+ // loc
+ var loc = node.loc;
+ assert.ok(loc !== null && loc !== undefined);
+ assert.strictEqual(typeof loc, "object");
+ var start = loc.start;
+ var end = loc.end;
+ if (start !== null && start !== undefined) {
+ assert.strictEqual(typeof start, "object");
+ if (start.line !== null && start.line !== undefined) {
+ assert.strictEqual(typeof start.line, "number");
+ assert.ok(start.line >= 0); // allow `0` for `null`.
+ }
+ if (start.column !== null && start.column !== undefined) {
+ assert.strictEqual(typeof start.column, "number");
+ assert.ok(start.column >= 0); // allow `0` for `null`.
+ }
+ if (start.offset !== null && start.offset !== undefined) {
+ assert.strictEqual(typeof start.offset, "number");
+ assert.ok(start.offset >= 0);
+ }
+ }
+ if (end !== null && end !== undefined) {
+ assert.strictEqual(typeof end, "object");
+ if (end.line !== null && end.line !== undefined) {
+ assert.strictEqual(typeof end.line, "number");
+ assert.ok(end.line >= 0); // allow `0` for `null`.
+ }
+ if (end.column !== null && end.column !== undefined) {
+ assert.strictEqual(typeof end.column, "number");
+ assert.ok(end.column >= 0); // allow `0` for `null`.
+ }
+ if (end.offset !== null && end.offset !== undefined) {
+ assert.strictEqual(typeof end.offset, "number");
+ assert.ok(end.offset >= 0);
+ }
+ }
+ // range
+ var range = node.range;
+ assert.ok(range !== null && range !== undefined);
+ assert.ok(Array.isArray(range));
+ range.forEach(function (index) {
+ assert.strictEqual(typeof index, "number");
+ assert.ok(index >= 0);
+ });
+ assert.ok(range[0] <= range[1]);
+}
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/node_modules/@textlint/ast-tester/module/index.js.map b/node_modules/@textlint/ast-tester/module/index.js.map
new file mode 100644
index 000000000..135088c8c
--- /dev/null
+++ b/node_modules/@textlint/ast-tester/module/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/@textlint/ast-tester/module/unist-test.d.ts b/node_modules/@textlint/ast-tester/module/unist-test.d.ts
new file mode 100644
index 000000000..3991e35a2
--- /dev/null
+++ b/node_modules/@textlint/ast-tester/module/unist-test.d.ts
@@ -0,0 +1,2 @@
+export declare function isUnist(node: any): boolean;
+export declare function test(node: any): void;
diff --git a/node_modules/@textlint/ast-tester/module/unist-test.js b/node_modules/@textlint/ast-tester/module/unist-test.js
new file mode 100644
index 000000000..770b1c694
--- /dev/null
+++ b/node_modules/@textlint/ast-tester/module/unist-test.js
@@ -0,0 +1,73 @@
+// LICENSE : MIT
+"use strict";
+import * as assert from "assert";
+// https://github.com/wooorm/unist
+export function isUnist(node) {
+ try {
+ test(node);
+ }
+ catch (error) {
+ return false;
+ }
+ return true;
+}
+export function test(node) {
+ assert.strictEqual(typeof node, "object");
+ assert.strictEqual(typeof node.type, "string");
+ assert.ok(node.type.length >= 1);
+ assert.doesNotThrow(function () {
+ JSON.parse(JSON.stringify(node));
+ });
+ if (node.children !== null && node.children !== undefined) {
+ assert.ok(Array.isArray(node.children));
+ node.children.forEach(test);
+ }
+ if (node.value !== null && node.value !== undefined) {
+ assert.strictEqual(typeof node.value, "string");
+ }
+ var position = node.position;
+ if (position !== null && position !== undefined) {
+ assert.strictEqual(typeof position, "object");
+ var start = position.start;
+ var indent = position.indent;
+ var end = position.end;
+ if (start !== null && start !== undefined) {
+ assert.strictEqual(typeof start, "object");
+ if (start.line !== null && start.line !== undefined) {
+ assert.strictEqual(typeof start.line, "number");
+ assert.ok(start.line >= 0); // allow `0` for `null`.
+ }
+ if (start.column !== null && start.column !== undefined) {
+ assert.strictEqual(typeof start.column, "number");
+ assert.ok(start.column >= 0); // allow `0` for `null`.
+ }
+ if (start.offset !== null && start.offset !== undefined) {
+ assert.strictEqual(typeof start.offset, "number");
+ assert.ok(start.offset >= 0);
+ }
+ }
+ if (end !== null && end !== undefined) {
+ assert.strictEqual(typeof end, "object");
+ if (end.line !== null && end.line !== undefined) {
+ assert.strictEqual(typeof end.line, "number");
+ assert.ok(end.line >= 0); // allow `0` for `null`.
+ }
+ if (end.column !== null && end.column !== undefined) {
+ assert.strictEqual(typeof end.column, "number");
+ assert.ok(end.column >= 0); // allow `0` for `null`.
+ }
+ if (end.offset !== null && end.offset !== undefined) {
+ assert.strictEqual(typeof end.offset, "number");
+ assert.ok(end.offset >= 0);
+ }
+ }
+ if (indent !== null && indent !== undefined) {
+ assert.ok(Array.isArray(indent));
+ indent.forEach(function (indentation) {
+ assert.strictEqual(typeof indentation, "number");
+ assert.ok(indentation >= 0);
+ });
+ }
+ }
+}
+//# sourceMappingURL=unist-test.js.map
\ No newline at end of file
diff --git a/node_modules/@textlint/ast-tester/module/unist-test.js.map b/node_modules/@textlint/ast-tester/module/unist-test.js.map
new file mode 100644
index 000000000..0d54fd7f7
--- /dev/null
+++ b/node_modules/@textlint/ast-tester/module/unist-test.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"unist-test.js","sourceRoot":"","sources":["../src/unist-test.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/@textlint/ast-tester/package.json b/node_modules/@textlint/ast-tester/package.json
new file mode 100644
index 000000000..c34e64d9e
--- /dev/null
+++ b/node_modules/@textlint/ast-tester/package.json
@@ -0,0 +1,59 @@
+{
+ "name": "@textlint/ast-tester",
+ "version": "2.3.5",
+ "description": "Compliance tests for textlint's AST(Abstract Syntax Tree).",
+ "keywords": [
+ "ast",
+ "suite",
+ "test",
+ "testing",
+ "textlint"
+ ],
+ "homepage": "https://github.com/textlint/textlint/tree/master/packages/@textlint/ast-tester",
+ "bugs": {
+ "url": "https://github.com/textlint/textlint/issues"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/textlint/textlint.git"
+ },
+ "license": "MIT",
+ "author": "azu",
+ "main": "lib/index.js",
+ "module": "./module/index.js",
+ "types": "lib/index.d.ts",
+ "directories": {
+ "test": "test"
+ },
+ "files": [
+ "bin/",
+ "lib/",
+ "module/",
+ "src/"
+ ],
+ "scripts": {
+ "build": "tsc -b && tsc -b tsconfig.module.json",
+ "clean": "rimraf lib/ module/ tsconfig.tsbuildinfo tsconfig.module.tsbuildinfo",
+ "prepublish": "npm run --if-present build",
+ "test": "mocha \"test/**/*.{js,ts}\"",
+ "watch": "tsc -b --watch"
+ },
+ "dependencies": {
+ "@textlint/ast-node-types": "^4.4.3"
+ },
+ "devDependencies": {
+ "@types/mocha": "^8.2.2",
+ "@types/node": "^14.14.44",
+ "cross-env": "^7.0.3",
+ "mocha": "^8.4.0",
+ "rimraf": "^3.0.2",
+ "ts-node": "^9.1.1",
+ "ts-node-test-register": "^9.0.1",
+ "typescript": "^4.0.2"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "email": "azuciao@gmail.com",
+ "gitHead": "4cb1e78aa38cd0e942c61f352ffb29bb36f80a7b"
+}
diff --git a/node_modules/@textlint/ast-tester/src/index.ts b/node_modules/@textlint/ast-tester/src/index.ts
new file mode 100644
index 000000000..71341319c
--- /dev/null
+++ b/node_modules/@textlint/ast-tester/src/index.ts
@@ -0,0 +1,92 @@
+// LICENSE : MIT
+"use strict";
+import * as assert from "assert";
+import { TxtNode } from "@textlint/ast-node-types";
+import { test as UnistTest } from "./unist-test";
+
+export function isTxtAST(node: any): node is TxtNode {
+ try {
+ test(node);
+ } catch (error) {
+ return false;
+ }
+ return true;
+}
+
+export function test(node: any) {
+ // test unist that is weak.
+ UnistTest(node);
+ assert.strictEqual(typeof node, "object");
+ assert.strictEqual(typeof node.type, "string");
+ assert.ok(node.type.length >= 1);
+
+ assert.doesNotThrow(function () {
+ JSON.parse(JSON.stringify(node));
+ });
+
+ // children
+ if (node.children !== null && node.children !== undefined) {
+ assert.ok(Array.isArray(node.children));
+ node.children.forEach(test);
+ }
+
+ // value
+ if (node.value !== null && node.value !== undefined) {
+ assert.strictEqual(typeof node.value, "string");
+ }
+ // raw
+ assert.ok(node.raw !== null && node.raw !== undefined);
+ assert.strictEqual(typeof node.raw, "string");
+ // loc
+ const loc = node.loc;
+ assert.ok(loc !== null && loc !== undefined);
+ assert.strictEqual(typeof loc, "object");
+ const start = loc.start;
+ const end = loc.end;
+ if (start !== null && start !== undefined) {
+ assert.strictEqual(typeof start, "object");
+
+ if (start.line !== null && start.line !== undefined) {
+ assert.strictEqual(typeof start.line, "number");
+ assert.ok(start.line >= 0); // allow `0` for `null`.
+ }
+
+ if (start.column !== null && start.column !== undefined) {
+ assert.strictEqual(typeof start.column, "number");
+ assert.ok(start.column >= 0); // allow `0` for `null`.
+ }
+
+ if (start.offset !== null && start.offset !== undefined) {
+ assert.strictEqual(typeof start.offset, "number");
+ assert.ok(start.offset >= 0);
+ }
+ }
+
+ if (end !== null && end !== undefined) {
+ assert.strictEqual(typeof end, "object");
+
+ if (end.line !== null && end.line !== undefined) {
+ assert.strictEqual(typeof end.line, "number");
+ assert.ok(end.line >= 0); // allow `0` for `null`.
+ }
+
+ if (end.column !== null && end.column !== undefined) {
+ assert.strictEqual(typeof end.column, "number");
+ assert.ok(end.column >= 0); // allow `0` for `null`.
+ }
+
+ if (end.offset !== null && end.offset !== undefined) {
+ assert.strictEqual(typeof end.offset, "number");
+ assert.ok(end.offset >= 0);
+ }
+ }
+ // range
+ const range = node.range;
+ assert.ok(range !== null && range !== undefined);
+ assert.ok(Array.isArray(range));
+ range.forEach(function (index: number) {
+ assert.strictEqual(typeof index, "number");
+ assert.ok(index >= 0);
+ });
+ assert.ok(range[0] <= range[1]);
+}
diff --git a/node_modules/@textlint/ast-tester/src/unist-test.ts b/node_modules/@textlint/ast-tester/src/unist-test.ts
new file mode 100644
index 000000000..2900bb10c
--- /dev/null
+++ b/node_modules/@textlint/ast-tester/src/unist-test.ts
@@ -0,0 +1,88 @@
+// LICENSE : MIT
+"use strict";
+import * as assert from "assert";
+
+// https://github.com/wooorm/unist
+export function isUnist(node: any): boolean {
+ try {
+ test(node);
+ } catch (error) {
+ return false;
+ }
+ return true;
+}
+
+export function test(node: any) {
+ assert.strictEqual(typeof node, "object");
+ assert.strictEqual(typeof node.type, "string");
+ assert.ok(node.type.length >= 1);
+
+ assert.doesNotThrow(function () {
+ JSON.parse(JSON.stringify(node));
+ });
+
+ if (node.children !== null && node.children !== undefined) {
+ assert.ok(Array.isArray(node.children));
+ node.children.forEach(test);
+ }
+
+ if (node.value !== null && node.value !== undefined) {
+ assert.strictEqual(typeof node.value, "string");
+ }
+
+ const position = node.position;
+ if (position !== null && position !== undefined) {
+ assert.strictEqual(typeof position, "object");
+
+ const start = position.start;
+ const indent = position.indent;
+ const end = position.end;
+
+ if (start !== null && start !== undefined) {
+ assert.strictEqual(typeof start, "object");
+
+ if (start.line !== null && start.line !== undefined) {
+ assert.strictEqual(typeof start.line, "number");
+ assert.ok(start.line >= 0); // allow `0` for `null`.
+ }
+
+ if (start.column !== null && start.column !== undefined) {
+ assert.strictEqual(typeof start.column, "number");
+ assert.ok(start.column >= 0); // allow `0` for `null`.
+ }
+
+ if (start.offset !== null && start.offset !== undefined) {
+ assert.strictEqual(typeof start.offset, "number");
+ assert.ok(start.offset >= 0);
+ }
+ }
+
+ if (end !== null && end !== undefined) {
+ assert.strictEqual(typeof end, "object");
+
+ if (end.line !== null && end.line !== undefined) {
+ assert.strictEqual(typeof end.line, "number");
+ assert.ok(end.line >= 0); // allow `0` for `null`.
+ }
+
+ if (end.column !== null && end.column !== undefined) {
+ assert.strictEqual(typeof end.column, "number");
+ assert.ok(end.column >= 0); // allow `0` for `null`.
+ }
+
+ if (end.offset !== null && end.offset !== undefined) {
+ assert.strictEqual(typeof end.offset, "number");
+ assert.ok(end.offset >= 0);
+ }
+ }
+
+ if (indent !== null && indent !== undefined) {
+ assert.ok(Array.isArray(indent));
+
+ indent.forEach(function (indentation: number) {
+ assert.strictEqual(typeof indentation, "number");
+ assert.ok(indentation >= 0);
+ });
+ }
+ }
+}
diff --git a/node_modules/@textlint/ast-traverse/CHANGELOG.md b/node_modules/@textlint/ast-traverse/CHANGELOG.md
new file mode 100644
index 000000000..63548b8d3
--- /dev/null
+++ b/node_modules/@textlint/ast-traverse/CHANGELOG.md
@@ -0,0 +1,474 @@
+# Change Log
+
+All notable changes to this project will be documented in this file.
+See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+
+## [2.3.5](https://github.com/textlint/textlint/compare/@textlint/ast-traverse@2.3.4...@textlint/ast-traverse@2.3.5) (2021-05-08)
+
+**Note:** Version bump only for package @textlint/ast-traverse
+
+
+
+
+
+## [2.3.4](https://github.com/textlint/textlint/compare/@textlint/ast-traverse@2.3.3...@textlint/ast-traverse@2.3.4) (2021-03-21)
+
+**Note:** Version bump only for package @textlint/ast-traverse
+
+
+
+
+
+
+## [2.3.3](https://github.com/textlint/textlint/compare/@textlint/ast-traverse@2.3.2...@textlint/ast-traverse@2.3.3) (2021-03-19)
+
+
+### Chores
+
+* **deps:** update dependency [@types](https://github.com/types)/mocha to v8.2.1 ([da2d6e7](https://github.com/textlint/textlint/commit/da2d6e7))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.27 ([c1c0b86](https://github.com/textlint/textlint/commit/c1c0b86))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.28 ([136e255](https://github.com/textlint/textlint/commit/136e255))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.29 ([74af03b](https://github.com/textlint/textlint/commit/74af03b))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.30 ([4872821](https://github.com/textlint/textlint/commit/4872821))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.31 ([95821ad](https://github.com/textlint/textlint/commit/95821ad))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.32 ([0b0a384](https://github.com/textlint/textlint/commit/0b0a384))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.33 ([a05e2d9](https://github.com/textlint/textlint/commit/a05e2d9))
+* **deps:** update dependency mocha to ^8.3.0 ([0464adb](https://github.com/textlint/textlint/commit/0464adb))
+* **deps:** update dependency mocha to ^8.3.1 ([cc509ed](https://github.com/textlint/textlint/commit/cc509ed))
+* **deps:** update patch updates ([183eb8d](https://github.com/textlint/textlint/commit/183eb8d))
+
+
+
+
+
+
+## [2.3.2](https://github.com/textlint/textlint/compare/@textlint/ast-traverse@2.3.1...@textlint/ast-traverse@2.3.2) (2021-02-06)
+
+
+### Chores
+
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.25 ([cc5c800](https://github.com/textlint/textlint/commit/cc5c800))
+
+
+
+
+
+
+## [2.3.1](https://github.com/textlint/textlint/compare/@textlint/ast-traverse@2.2.5...@textlint/ast-traverse@2.3.1) (2021-01-22)
+
+
+### Bug Fixes
+
+* fix tsconfig ([a722a6f](https://github.com/textlint/textlint/commit/a722a6f))
+
+
+### Chores
+
+* **deps:** update dependency [@types](https://github.com/types)/mocha to v8.0.4 ([fd60f20](https://github.com/textlint/textlint/commit/fd60f20))
+* **deps:** update dependency [@types](https://github.com/types)/mocha to v8.2.0 ([5ced72d](https://github.com/textlint/textlint/commit/5ced72d))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.11.2 ([6ac372a](https://github.com/textlint/textlint/commit/6ac372a))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.11.5 ([b0e73f5](https://github.com/textlint/textlint/commit/b0e73f5))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.11.8 ([33679af](https://github.com/textlint/textlint/commit/33679af))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.10 ([96ba315](https://github.com/textlint/textlint/commit/96ba315))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.12 ([f62f2e3](https://github.com/textlint/textlint/commit/f62f2e3))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.13 ([608afd4](https://github.com/textlint/textlint/commit/608afd4))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.14 ([8417f8a](https://github.com/textlint/textlint/commit/8417f8a))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.16 ([7209803](https://github.com/textlint/textlint/commit/7209803))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.17 ([9ec5481](https://github.com/textlint/textlint/commit/9ec5481))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.19 ([bd050c9](https://github.com/textlint/textlint/commit/bd050c9))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.21 ([464d58a](https://github.com/textlint/textlint/commit/464d58a))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.22 ([5e5d214](https://github.com/textlint/textlint/commit/5e5d214))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.5 ([1ed7006](https://github.com/textlint/textlint/commit/1ed7006))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.6 ([507a41b](https://github.com/textlint/textlint/commit/507a41b))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.7 ([64f97eb](https://github.com/textlint/textlint/commit/64f97eb))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.8 ([8de7d16](https://github.com/textlint/textlint/commit/8de7d16))
+* **deps:** update minor updates ([7ef0be6](https://github.com/textlint/textlint/commit/7ef0be6))
+* **deps:** update minor updates ([2f3dcb6](https://github.com/textlint/textlint/commit/2f3dcb6))
+* **deps:** update minor updates ([7a53517](https://github.com/textlint/textlint/commit/7a53517))
+* **deps:** update minor updates ([#712](https://github.com/textlint/textlint/issues/712)) ([8c42a19](https://github.com/textlint/textlint/commit/8c42a19))
+* **deps:** update patch updates ([24fe2a9](https://github.com/textlint/textlint/commit/24fe2a9))
+* **deps:** update patch updates ([3d9660b](https://github.com/textlint/textlint/commit/3d9660b))
+* **deps:** update patch updates ([fe2ad4f](https://github.com/textlint/textlint/commit/fe2ad4f))
+* **deps:** update patch updates ([e438ff2](https://github.com/textlint/textlint/commit/e438ff2))
+* **deps:** update patch updates ([9df50df](https://github.com/textlint/textlint/commit/9df50df))
+* **deps:** update patch updates ([4f4c206](https://github.com/textlint/textlint/commit/4f4c206))
+* **deps:** update patch updates ([1a0e41f](https://github.com/textlint/textlint/commit/1a0e41f))
+* **deps:** update TypeScript deps ([#705](https://github.com/textlint/textlint/issues/705)) ([1baa72a](https://github.com/textlint/textlint/commit/1baa72a))
+* use [@monorepo-utils](https://github.com/monorepo-utils)/workspaces-to-typescript-project-references ([#699](https://github.com/textlint/textlint/issues/699)) ([eff1943](https://github.com/textlint/textlint/commit/eff1943))
+
+
+### Features
+
+* **source-code-fixer:** add `[@textlint](https://github.com/textlint)/source-code-fixer` ([#736](https://github.com/textlint/textlint/issues/736)) ([bf7235a](https://github.com/textlint/textlint/commit/bf7235a))
+
+
+
+
+
+
+# [2.3.0](https://github.com/textlint/textlint/compare/@textlint/ast-traverse@2.2.5...@textlint/ast-traverse@2.3.0) (2021-01-22)
+
+
+### Bug Fixes
+
+* fix tsconfig ([a722a6f](https://github.com/textlint/textlint/commit/a722a6f))
+
+
+### Chores
+
+* **deps:** update dependency [@types](https://github.com/types)/mocha to v8.0.4 ([fd60f20](https://github.com/textlint/textlint/commit/fd60f20))
+* **deps:** update dependency [@types](https://github.com/types)/mocha to v8.2.0 ([5ced72d](https://github.com/textlint/textlint/commit/5ced72d))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.11.2 ([6ac372a](https://github.com/textlint/textlint/commit/6ac372a))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.11.5 ([b0e73f5](https://github.com/textlint/textlint/commit/b0e73f5))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.11.8 ([33679af](https://github.com/textlint/textlint/commit/33679af))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.10 ([96ba315](https://github.com/textlint/textlint/commit/96ba315))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.12 ([f62f2e3](https://github.com/textlint/textlint/commit/f62f2e3))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.13 ([608afd4](https://github.com/textlint/textlint/commit/608afd4))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.14 ([8417f8a](https://github.com/textlint/textlint/commit/8417f8a))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.16 ([7209803](https://github.com/textlint/textlint/commit/7209803))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.17 ([9ec5481](https://github.com/textlint/textlint/commit/9ec5481))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.19 ([bd050c9](https://github.com/textlint/textlint/commit/bd050c9))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.21 ([464d58a](https://github.com/textlint/textlint/commit/464d58a))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.22 ([5e5d214](https://github.com/textlint/textlint/commit/5e5d214))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.5 ([1ed7006](https://github.com/textlint/textlint/commit/1ed7006))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.6 ([507a41b](https://github.com/textlint/textlint/commit/507a41b))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.7 ([64f97eb](https://github.com/textlint/textlint/commit/64f97eb))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.8 ([8de7d16](https://github.com/textlint/textlint/commit/8de7d16))
+* **deps:** update minor updates ([7ef0be6](https://github.com/textlint/textlint/commit/7ef0be6))
+* **deps:** update minor updates ([2f3dcb6](https://github.com/textlint/textlint/commit/2f3dcb6))
+* **deps:** update minor updates ([7a53517](https://github.com/textlint/textlint/commit/7a53517))
+* **deps:** update minor updates ([#712](https://github.com/textlint/textlint/issues/712)) ([8c42a19](https://github.com/textlint/textlint/commit/8c42a19))
+* **deps:** update patch updates ([24fe2a9](https://github.com/textlint/textlint/commit/24fe2a9))
+* **deps:** update patch updates ([3d9660b](https://github.com/textlint/textlint/commit/3d9660b))
+* **deps:** update patch updates ([fe2ad4f](https://github.com/textlint/textlint/commit/fe2ad4f))
+* **deps:** update patch updates ([e438ff2](https://github.com/textlint/textlint/commit/e438ff2))
+* **deps:** update patch updates ([9df50df](https://github.com/textlint/textlint/commit/9df50df))
+* **deps:** update patch updates ([4f4c206](https://github.com/textlint/textlint/commit/4f4c206))
+* **deps:** update patch updates ([1a0e41f](https://github.com/textlint/textlint/commit/1a0e41f))
+* **deps:** update TypeScript deps ([#705](https://github.com/textlint/textlint/issues/705)) ([1baa72a](https://github.com/textlint/textlint/commit/1baa72a))
+* use [@monorepo-utils](https://github.com/monorepo-utils)/workspaces-to-typescript-project-references ([#699](https://github.com/textlint/textlint/issues/699)) ([eff1943](https://github.com/textlint/textlint/commit/eff1943))
+
+
+### Features
+
+* **source-code-fixer:** add `[@textlint](https://github.com/textlint)/source-code-fixer` ([#736](https://github.com/textlint/textlint/issues/736)) ([bf7235a](https://github.com/textlint/textlint/commit/bf7235a))
+
+
+
+
+
+
+## [2.2.6](https://github.com/textlint/textlint/compare/@textlint/ast-traverse@2.2.5...@textlint/ast-traverse@2.2.6) (2020-12-22)
+
+
+### Bug Fixes
+
+* fix tsconfig ([a722a6f](https://github.com/textlint/textlint/commit/a722a6f))
+
+
+### Chores
+
+* **deps:** update dependency [@types](https://github.com/types)/mocha to v8.0.4 ([fd60f20](https://github.com/textlint/textlint/commit/fd60f20))
+* **deps:** update dependency [@types](https://github.com/types)/mocha to v8.2.0 ([5ced72d](https://github.com/textlint/textlint/commit/5ced72d))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.11.2 ([6ac372a](https://github.com/textlint/textlint/commit/6ac372a))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.11.5 ([b0e73f5](https://github.com/textlint/textlint/commit/b0e73f5))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.11.8 ([33679af](https://github.com/textlint/textlint/commit/33679af))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.10 ([96ba315](https://github.com/textlint/textlint/commit/96ba315))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.12 ([f62f2e3](https://github.com/textlint/textlint/commit/f62f2e3))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.13 ([608afd4](https://github.com/textlint/textlint/commit/608afd4))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.14 ([8417f8a](https://github.com/textlint/textlint/commit/8417f8a))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.5 ([1ed7006](https://github.com/textlint/textlint/commit/1ed7006))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.6 ([507a41b](https://github.com/textlint/textlint/commit/507a41b))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.7 ([64f97eb](https://github.com/textlint/textlint/commit/64f97eb))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.8 ([8de7d16](https://github.com/textlint/textlint/commit/8de7d16))
+* **deps:** update minor updates ([7ef0be6](https://github.com/textlint/textlint/commit/7ef0be6))
+* **deps:** update minor updates ([2f3dcb6](https://github.com/textlint/textlint/commit/2f3dcb6))
+* **deps:** update minor updates ([7a53517](https://github.com/textlint/textlint/commit/7a53517))
+* **deps:** update minor updates ([#712](https://github.com/textlint/textlint/issues/712)) ([8c42a19](https://github.com/textlint/textlint/commit/8c42a19))
+* **deps:** update patch updates ([3d9660b](https://github.com/textlint/textlint/commit/3d9660b))
+* **deps:** update patch updates ([fe2ad4f](https://github.com/textlint/textlint/commit/fe2ad4f))
+* **deps:** update patch updates ([e438ff2](https://github.com/textlint/textlint/commit/e438ff2))
+* **deps:** update patch updates ([9df50df](https://github.com/textlint/textlint/commit/9df50df))
+* **deps:** update patch updates ([4f4c206](https://github.com/textlint/textlint/commit/4f4c206))
+* **deps:** update patch updates ([1a0e41f](https://github.com/textlint/textlint/commit/1a0e41f))
+* **deps:** update TypeScript deps ([#705](https://github.com/textlint/textlint/issues/705)) ([1baa72a](https://github.com/textlint/textlint/commit/1baa72a))
+* use [@monorepo-utils](https://github.com/monorepo-utils)/workspaces-to-typescript-project-references ([#699](https://github.com/textlint/textlint/issues/699)) ([eff1943](https://github.com/textlint/textlint/commit/eff1943))
+
+
+
+
+
+
+## [2.2.5](https://github.com/textlint/textlint/compare/@textlint/ast-traverse@2.2.4...@textlint/ast-traverse@2.2.5) (2020-07-24)
+
+
+### Bug Fixes
+
+* improve "module" supports ([5ba5182](https://github.com/textlint/textlint/commit/5ba5182))
+
+
+
+
+
+
+## [2.2.4](https://github.com/textlint/textlint/compare/@textlint/ast-traverse@2.2.3...@textlint/ast-traverse@2.2.4) (2020-07-24)
+
+
+### Bug Fixes
+
+* "clean" command should remove tsconfig.module.tsbuildinfo ([76ac72a](https://github.com/textlint/textlint/commit/76ac72a))
+
+
+
+
+
+
+## [2.2.3](https://github.com/textlint/textlint/compare/@textlint/ast-traverse@2.2.2...@textlint/ast-traverse@2.2.3) (2020-07-24)
+
+
+### Bug Fixes
+
+* **@textlint/kernel:** fix export only type definition ([1234930](https://github.com/textlint/textlint/commit/1234930))
+
+
+
+
+
+
+## [2.2.2](https://github.com/textlint/textlint/compare/@textlint/ast-traverse@2.2.1...@textlint/ast-traverse@2.2.2) (2020-07-24)
+
+**Note:** Version bump only for package @textlint/ast-traverse
+
+
+
+
+
+
+## [2.2.1](https://github.com/textlint/textlint/compare/@textlint/ast-traverse@2.2.0...@textlint/ast-traverse@2.2.1) (2020-07-24)
+
+
+### Bug Fixes
+
+* include module ([2de05f7](https://github.com/textlint/textlint/commit/2de05f7))
+
+
+
+
+
+
+# [2.2.0](https://github.com/textlint/textlint/compare/@textlint/ast-traverse@2.1.7...@textlint/ast-traverse@2.2.0) (2020-07-24)
+
+
+### Chores
+
+* **deps:** update devDepencies ([#667](https://github.com/textlint/textlint/issues/667)) ([0503af6](https://github.com/textlint/textlint/commit/0503af6))
+
+
+### Code Refactoring
+
+* **typescript:** Use TypeScript Project References ([#668](https://github.com/textlint/textlint/issues/668)) ([bbffd43](https://github.com/textlint/textlint/commit/bbffd43))
+
+
+### Tests
+
+* migrate mocha.opts to .mocharc.json ([#682](https://github.com/textlint/textlint/issues/682)) ([332ae5e](https://github.com/textlint/textlint/commit/332ae5e))
+
+
+
+
+
+
+## [2.1.7](https://github.com/textlint/textlint/compare/@textlint/ast-traverse@2.1.6...@textlint/ast-traverse@2.1.7) (2020-02-07)
+
+**Note:** Version bump only for package @textlint/ast-traverse
+
+
+
+
+
+
+## [2.1.6](https://github.com/textlint/textlint/compare/@textlint/ast-traverse@2.1.5...@textlint/ast-traverse@2.1.6) (2019-10-14)
+
+**Note:** Version bump only for package @textlint/ast-traverse
+
+
+
+
+
+
+## [2.1.5](https://github.com/textlint/textlint/compare/@textlint/ast-traverse@2.1.3...@textlint/ast-traverse@2.1.5) (2019-07-20)
+
+
+### Code Refactoring
+
+* **utils:** move implementation from types to utils ([#611](https://github.com/textlint/textlint/issues/611)) ([cd9adbe](https://github.com/textlint/textlint/commit/cd9adbe))
+
+
+
+
+
+
+## [2.1.4](https://github.com/textlint/textlint/compare/@textlint/ast-traverse@2.1.3...@textlint/ast-traverse@2.1.4) (2019-07-13)
+
+
+### Code Refactoring
+
+* **utils:** move implementation from types to utils ([#611](https://github.com/textlint/textlint/issues/611)) ([cd9adbe](https://github.com/textlint/textlint/commit/cd9adbe))
+
+
+
+
+
+
+## [2.1.3](https://github.com/textlint/textlint/compare/@textlint/ast-traverse@2.1.2...@textlint/ast-traverse@2.1.3) (2019-04-30)
+
+
+### Chores
+
+* **deps:** update deps && devDeps ([a19463b](https://github.com/textlint/textlint/commit/a19463b))
+
+
+
+
+
+
+## [2.1.2](https://github.com/textlint/textlint/compare/@textlint/ast-traverse@2.1.1...@textlint/ast-traverse@2.1.2) (2019-01-03)
+
+**Note:** Version bump only for package @textlint/ast-traverse
+
+
+
+
+
+
+## [2.1.1](https://github.com/textlint/textlint/compare/@textlint/ast-traverse@2.1.0...@textlint/ast-traverse@2.1.1) (2019-01-03)
+
+**Note:** Version bump only for package @textlint/ast-traverse
+
+
+
+
+
+
+# [2.1.0](https://github.com/textlint/textlint/compare/@textlint/ast-traverse@2.0.9...@textlint/ast-traverse@2.1.0) (2019-01-01)
+
+
+### Chores
+
+* **deps:** update TypeScript deps ([3ea7fb0](https://github.com/textlint/textlint/commit/3ea7fb0))
+
+
+
+
+
+## [2.0.9](https://github.com/textlint/textlint/compare/@textlint/ast-traverse@2.0.8...@textlint/ast-traverse@2.0.9) (2018-07-22)
+
+
+### Chores
+
+* **deps:** update mocha ([5df8af4](https://github.com/textlint/textlint/commit/5df8af4))
+
+
+### Code Refactoring
+
+* **kernel:** separate linter and fixer descriptor ([b5bc8bd](https://github.com/textlint/textlint/commit/b5bc8bd))
+* **typescript:** update to TypeScript 2.8 ([f7b2b08](https://github.com/textlint/textlint/commit/f7b2b08))
+
+
+
+
+
+## [2.0.8](https://github.com/textlint/textlint/compare/@textlint/ast-traverse@2.0.7...@textlint/ast-traverse@2.0.8) (2018-04-02)
+
+
+
+
+**Note:** Version bump only for package @textlint/ast-traverse
+
+
+## [2.0.7](https://github.com/textlint/textlint/compare/@textlint/ast-traverse@2.0.6...@textlint/ast-traverse@2.0.7) (2018-04-02)
+
+
+
+
+**Note:** Version bump only for package @textlint/ast-traverse
+
+
+## [2.0.6](https://github.com/textlint/textlint/compare/@textlint/ast-traverse@2.0.5...@textlint/ast-traverse@2.0.6) (2018-03-25)
+
+
+### Chores
+
+* **test:** use `ts-node-test-register` for TypeScript testing ([be746d8](https://github.com/textlint/textlint/commit/be746d8)), closes [#451](https://github.com/textlint/textlint/issues/451)
+
+
+
+
+
+## 2.0.5 (2018-01-27)
+
+
+### Bug Fixes
+
+* **ast-traverse:** add `publishConfig` ([2ceeb99](https://github.com/textlint/textlint/commit/2ceeb99))
+
+
+### Code Refactoring
+
+* **txt-ast-traverse:** move to [@textlint](https://github.com/textlint)/ast-traverse ([7629a50](https://github.com/textlint/textlint/commit/7629a50))
+
+
+
+
+
+## [2.0.4](https://github.com/textlint/textlint/compare/txt-ast-traverse@2.0.3...txt-ast-traverse@2.0.4) (2018-01-18)
+
+
+
+
+**Note:** Version bump only for package txt-ast-traverse
+
+
+## [2.0.3](https://github.com/textlint/textlint/compare/txt-ast-traverse@2.0.2...txt-ast-traverse@2.0.3) (2018-01-12)
+
+
+
+
+**Note:** Version bump only for package txt-ast-traverse
+
+
+## [2.0.2](https://github.com/textlint/textlint/compare/txt-ast-traverse@2.0.1...txt-ast-traverse@2.0.2) (2017-12-31)
+
+
+
+
+**Note:** Version bump only for package txt-ast-traverse
+
+
+## [2.0.1](https://github.com/textlint/textlint/compare/txt-ast-traverse@2.0.0...txt-ast-traverse@2.0.1) (2017-12-25)
+
+
+### Bug Fixes
+
+* **monorepo:** fix TypeScript module resolution in monorepo ([d5df499](https://github.com/textlint/textlint/commit/d5df499))
+* **txt-ast-traverse:** fix test scripts ([a78f99b](https://github.com/textlint/textlint/commit/a78f99b))
+* **txt-ast-traverse:** fix txt-ast-traverse test reference ([190723b](https://github.com/textlint/textlint/commit/190723b))
+
+
+
+
+
+# [2.0.0](https://github.com/textlint/textlint/compare/txt-ast-traverse@2.0.0-next.0...txt-ast-traverse@2.0.0) (2017-12-18)
+
+
+
+
+**Note:** Version bump only for package txt-ast-traverse
+
+
+# 2.0.0-next.0 (2017-12-15)
+
+
+### Features
+
+* **traverse:** implement #parents and #current ([79c473e](https://github.com/textlint/textlint/commit/79c473e))
diff --git a/node_modules/@textlint/ast-traverse/LICENSE b/node_modules/@textlint/ast-traverse/LICENSE
new file mode 100644
index 000000000..c7add0598
--- /dev/null
+++ b/node_modules/@textlint/ast-traverse/LICENSE
@@ -0,0 +1,23 @@
+Copyright (c) 2015 azu
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+Includes Estraverse
+Copyright (C) 2012-2013 Yusuke Suzuki
+https://github.com/estools/estraverse/blob/master/LICENSE.BSD
diff --git a/node_modules/@textlint/ast-traverse/README.md b/node_modules/@textlint/ast-traverse/README.md
new file mode 100644
index 000000000..33210c755
--- /dev/null
+++ b/node_modules/@textlint/ast-traverse/README.md
@@ -0,0 +1,254 @@
+# @textlint/ast-traverse
+
+@textlint/ast-traverse provide traversal functions for [TxtAST](https://github.com/textlint/textlint/blob/master/docs/txtnode.md "TxtAST").
+
+This traverse function is a fork of [estraverse](https://github.com/estools/estraverse "Estraverse") for [@textlint/markdown-to-ast](https://github.com/textlint/textlint/tree/master/packages/@textlint/markdown-to-ast/ "textlint/markdown-to-ast").
+
+This library is a part of [textlint/textlint](https://github.com/textlint/textlint "textlint/textlint").
+
+## Installation
+
+```
+npm install @textlint/ast-traverse
+```
+
+## Usage
+
+```js
+var parse = require("@textlint/markdown-to-ast").parse,
+ Syntax = require("@textlint/markdown-to-ast").Syntax;
+var traverse = require("@textlint/ast-traverse").traverse,
+ VisitorOption = require("@textlint/ast-traverse").VisitorOption;
+var AST = parse("# Header\nHello*world*");
+traverse(AST, {
+ enter(node) {
+ console.log("enter", node.type);
+ if (node.type === Syntax.Strong) {
+ return VisitorOption.Skip;
+ }
+ },
+ leave(node) {
+ console.log("leave", node.type);
+ }
+});
+```
+
+Traversal rule is the same with [Estraverse](https://github.com/estools/estraverse "Estraverse").
+
+## Example
+
+Markdown:
+
+```markdown
+Hello *world*
+```
+
+AST:
+
+```json
+{
+ "start_line": 1,
+ "start_column": 1,
+ "end_line": 0,
+ "children": [
+ {
+ "start_line": 1,
+ "start_column": 1,
+ "end_line": 0,
+ "inline_content": [
+ {
+ "c": "Hello",
+ "raw": "Hello",
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 0
+ },
+ "end": {
+ "line": 1,
+ "column": 5
+ }
+ },
+ "range": [
+ 0,
+ 5
+ ],
+ "type": "Str"
+ },
+ {
+ "c": " ",
+ "raw": " ",
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 5
+ },
+ "end": {
+ "line": 1,
+ "column": 6
+ }
+ },
+ "range": [
+ 5,
+ 6
+ ],
+ "type": "Str"
+ },
+ {
+ "c": [
+ {
+ "c": "world",
+ "raw": "world",
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 0
+ },
+ "end": {
+ "line": 1,
+ "column": 5
+ }
+ },
+ "range": [
+ 0,
+ 5
+ ],
+ "type": "Str"
+ }
+ ],
+ "raw": "*world*",
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 6
+ },
+ "end": {
+ "line": 1,
+ "column": 13
+ }
+ },
+ "range": [
+ 6,
+ 13
+ ],
+ "type": "Emphasis"
+ }
+ ],
+ "children": [],
+ "raw": "Hello *world*",
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 0
+ },
+ "end": {
+ "line": 1,
+ "column": 13
+ }
+ },
+ "range": [
+ 0,
+ 13
+ ],
+ "type": "Paragraph"
+ }
+ ],
+ "raw": "Hello *world*",
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 0
+ },
+ "end": {
+ "line": 1,
+ "column": 13
+ }
+ },
+ "range": [
+ 0,
+ 13
+ ],
+ "type": "Document"
+}
+```
+
+Traversal all from Root(Document node):
+
+```
+[enter, Syntax.Document],
+// # Header
+[enter, Syntax.Header],
+[enter, Syntax.Str],
+[leave, Syntax.Str],
+[leave, Syntax.Header],
+// => Paragraph
+[enter, Syntax.Paragraph],
+[enter, Syntax.Str],
+[leave, Syntax.Str],
+// *world*
+[enter, Syntax.Emphasis],
+[enter, Syntax.Str],
+[leave, Syntax.Str],
+[leave, Syntax.Emphasis],
+// <= Paragraph
+[leave, Syntax.Paragraph],
+// End
+[leave, Syntax.Document]
+```
+
+## NOTE
+
+You want to set property on Node.
+
+Bad example:
+
+```js
+var TraverseController = require("@textlint/ast-traverse").Controller;
+var controller = new TraverseController();
+controller.traverse(ast, {
+ enter: function (node, parent) {
+ node.parent = parent;// it cause a circular reference!
+ // do something
+ something(node);
+ }
+});
+```
+
+`node.parent = parent;` cause a circular reference!
+
+Correct example:
+
+```js
+var TraverseController = require("@textlint/ast-traverse").Controller;
+var controller = new TraverseController();
+controller.traverse(ast, {
+ enter: function (node, parent) {
+ // set property as non-enumerable value
+ Object.defineProperty(node, "parent", {
+ value: parent
+ });
+ // do something
+ something(node);
+ }
+});
+```
+
+
+## Contributing
+
+1. Fork it!
+2. Create your feature branch: `git checkout -b my-new-feature`
+3. Commit your changes: `git commit -am 'Add some feature'`
+4. Push to the branch: `git push origin my-new-feature`
+5. Submit a pull request :D
+
+## License
+
+MIT
+
+and
+
+Includes [Estraverse](https://github.com/estools/estraverse "Estraverse")
+
+ Copyright (C) 2012-2013 Yusuke Suzuki
+ https://github.com/estools/estraverse/blob/master/LICENSE.BSD
diff --git a/node_modules/@textlint/ast-traverse/module/index.d.ts b/node_modules/@textlint/ast-traverse/module/index.d.ts
new file mode 100644
index 000000000..8ed100acc
--- /dev/null
+++ b/node_modules/@textlint/ast-traverse/module/index.d.ts
@@ -0,0 +1,42 @@
+import { AnyTxtNode, TxtNode, TxtParentNode } from "@textlint/ast-node-types";
+export declare class TxtElement {
+ node: AnyTxtNode | null;
+ constructor(node: AnyTxtNode | null);
+}
+declare const VisitorOption: {
+ Break: {};
+ Skip: {};
+};
+declare class Controller {
+ private __worklist;
+ private __leavelist;
+ private __current;
+ private __willStartTraverse;
+ private __execute;
+ /**
+ * Gets parent nodes of current node.
+ * The parent nodes are returned in order from the closest parent to the outer ones.
+ * Current node is {@link current}.
+ * @returns {Array}
+ * @public
+ */
+ parents(): TxtNode[];
+ /**
+ * Gets current node during traverse.
+ * @returns {TxtNode|null}
+ * @public
+ */
+ current(): TxtNode | null;
+ /**
+ * Traverse AST with visitor
+ * @param {TxtParentNode} root
+ * @param {Visitor} visitor
+ */
+ traverse(root: TxtParentNode, visitor: Visitor): void;
+}
+export interface Visitor {
+ enter?(node: TxtNode, parent?: TxtParentNode): any | void;
+ leave?(node: TxtNode, parent?: TxtParentNode): any | void;
+}
+declare function traverse(root: TxtParentNode, visitor: Visitor): void;
+export { Controller, traverse, VisitorOption };
diff --git a/node_modules/@textlint/ast-traverse/module/index.js b/node_modules/@textlint/ast-traverse/module/index.js
new file mode 100644
index 000000000..fa5372220
--- /dev/null
+++ b/node_modules/@textlint/ast-traverse/module/index.js
@@ -0,0 +1,163 @@
+// LICENSE : MIT
+"use strict";
+/**
+ * is TxtNode?
+ */
+function isNode(node) {
+ if (node == null) {
+ return false;
+ }
+ return typeof node === "object" && (typeof node.type === "string" || typeof node.t === "string");
+}
+var TxtElement = /** @class */ (function () {
+ function TxtElement(node) {
+ this.node = node;
+ }
+ return TxtElement;
+}());
+export { TxtElement };
+var BREAK = {};
+var SKIP = {};
+var VisitorOption = {
+ Break: BREAK,
+ Skip: SKIP
+};
+var Controller = /** @class */ (function () {
+ function Controller() {
+ }
+ Controller.prototype.__willStartTraverse = function () {
+ this.__current = null;
+ this.__worklist = [];
+ this.__leavelist = [];
+ };
+ Controller.prototype.__execute = function (callback, element) {
+ var result = undefined;
+ var previous = this.__current;
+ this.__current = element;
+ if (callback) {
+ var parentNode = this.__leavelist[this.__leavelist.length - 1].node;
+ // ignore null element
+ if (!element.node) {
+ return;
+ }
+ result = callback.call(this, element.node, parentNode);
+ }
+ this.__current = previous;
+ return result;
+ };
+ /**
+ * Gets parent nodes of current node.
+ * The parent nodes are returned in order from the closest parent to the outer ones.
+ * Current node is {@link current}.
+ * @returns {Array}
+ * @public
+ */
+ Controller.prototype.parents = function () {
+ var i, iz;
+ // first node is sentinel
+ var result = [];
+ for (i = 1, iz = this.__leavelist.length; i < iz; ++i) {
+ var txtElement = this.__leavelist[i];
+ var node = txtElement.node;
+ if (node) {
+ result.push(node);
+ }
+ }
+ return result;
+ };
+ /**
+ * Gets current node during traverse.
+ * @returns {TxtNode|null}
+ * @public
+ */
+ Controller.prototype.current = function () {
+ if (!this.__current) {
+ return null;
+ }
+ return this.__current.node;
+ };
+ /**
+ * Traverse AST with visitor
+ * @param {TxtParentNode} root
+ * @param {Visitor} visitor
+ */
+ Controller.prototype.traverse = function (root, visitor) {
+ // Note: This is based https://github.com/estools/estraverse
+ // Avoid recursive call by design
+ var ret;
+ this.__willStartTraverse();
+ // Stop object
+ var sentinel = new TxtElement(null);
+ // reference
+ var worklist = this.__worklist;
+ var leavelist = this.__leavelist;
+ // initialize
+ worklist.push(new TxtElement(root));
+ leavelist.push(new TxtElement(null));
+ while (worklist.length) {
+ var element = worklist.pop();
+ if (element === undefined) {
+ continue;
+ }
+ if (element === sentinel) {
+ element = leavelist.pop();
+ if (element === undefined) {
+ continue;
+ }
+ ret = this.__execute(visitor.leave, element);
+ if (ret === BREAK) {
+ return;
+ }
+ continue;
+ }
+ if (element.node) {
+ ret = this.__execute(visitor.enter, element);
+ if (ret === BREAK) {
+ return;
+ }
+ worklist.push(sentinel);
+ leavelist.push(element);
+ if (ret === SKIP) {
+ continue;
+ }
+ var node = element.node;
+ var candidates = Object.keys(node);
+ var current = candidates.length;
+ while ((current -= 1) >= 0) {
+ var key = candidates[current];
+ var candidate = node[key];
+ if (!candidate) {
+ continue;
+ }
+ if (Array.isArray(candidate)) {
+ var current2 = candidate.length;
+ while ((current2 -= 1) >= 0) {
+ if (!candidate[current2]) {
+ continue;
+ }
+ if (isNode(candidate[current2])) {
+ element = new TxtElement(candidate[current2]);
+ }
+ else {
+ continue;
+ }
+ if (element) {
+ worklist.push(element);
+ }
+ }
+ }
+ else if (isNode(candidate)) {
+ worklist.push(new TxtElement(candidate));
+ }
+ }
+ }
+ }
+ };
+ return Controller;
+}());
+function traverse(root, visitor) {
+ var controller = new Controller();
+ return controller.traverse(root, visitor);
+}
+export { Controller, traverse, VisitorOption };
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/node_modules/@textlint/ast-traverse/module/index.js.map b/node_modules/@textlint/ast-traverse/module/index.js.map
new file mode 100644
index 000000000..83e6232d5
--- /dev/null
+++ b/node_modules/@textlint/ast-traverse/module/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAChB,YAAY,CAAC;AAGb;;GAEG;AACH,SAAS,MAAM,CAAC,IAAS;IACrB,IAAI,IAAI,IAAI,IAAI,EAAE;QACd,OAAO,KAAK,CAAC;KAChB;IACD,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC;AACrG,CAAC;AAED;IACI,oBAAmB,IAAuB;QAAvB,SAAI,GAAJ,IAAI,CAAmB;IAAG,CAAC;IAClD,iBAAC;AAAD,CAAC,AAFD,IAEC;;AAED,IAAM,KAAK,GAAG,EAAE,CAAC;AACjB,IAAM,IAAI,GAAG,EAAE,CAAC;AAChB,IAAM,aAAa,GAAG;IAClB,KAAK,EAAE,KAAK;IACZ,IAAI,EAAE,IAAI;CACb,CAAC;AAEF;IAAA;IAwJA,CAAC;IAnJW,wCAAmB,GAA3B;QACI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;IAC1B,CAAC;IAEO,8BAAS,GAAjB,UACI,QAA6F,EAC7F,OAAmB;QAEnB,IAAI,MAAM,GAAG,SAAS,CAAC;QAEvB,IAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC;QACzB,IAAI,QAAQ,EAAE;YACV,IAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAqB,CAAC;YACvF,sBAAsB;YACtB,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;gBACf,OAAO;aACV;YACD,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;SAC1D;QACD,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAE1B,OAAO,MAAM,CAAC;IAClB,CAAC;IAED;;;;;;OAMG;IACH,4BAAO,GAAP;QACI,IAAI,CAAC,EAAE,EAAE,CAAC;QACV,yBAAyB;QACzB,IAAM,MAAM,GAAc,EAAE,CAAC;QAC7B,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE;YACnD,IAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACvC,IAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;YAC7B,IAAI,IAAI,EAAE;gBACN,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACrB;SACJ;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IAED;;;;OAIG;IACH,4BAAO,GAAP;QACI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACjB,OAAO,IAAI,CAAC;SACf;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;IAC/B,CAAC;IAED;;;;OAIG;IACH,6BAAQ,GAAR,UAAS,IAAmB,EAAE,OAAgB;QAC1C,4DAA4D;QAC5D,iCAAiC;QACjC,IAAI,GAAG,CAAC;QACR,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAE3B,cAAc;QACd,IAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;QAEtC,YAAY;QACZ,IAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC;QACjC,IAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC;QAEnC,aAAa;QACb,QAAQ,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;QACpC,SAAS,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;QAErC,OAAO,QAAQ,CAAC,MAAM,EAAE;YACpB,IAAI,OAAO,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC;YAC7B,IAAI,OAAO,KAAK,SAAS,EAAE;gBACvB,SAAS;aACZ;YACD,IAAI,OAAO,KAAK,QAAQ,EAAE;gBACtB,OAAO,GAAG,SAAS,CAAC,GAAG,EAAE,CAAC;gBAC1B,IAAI,OAAO,KAAK,SAAS,EAAE;oBACvB,SAAS;iBACZ;gBACD,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;gBAE7C,IAAI,GAAG,KAAK,KAAK,EAAE;oBACf,OAAO;iBACV;gBACD,SAAS;aACZ;YAED,IAAI,OAAO,CAAC,IAAI,EAAE;gBACd,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;gBAE7C,IAAI,GAAG,KAAK,KAAK,EAAE;oBACf,OAAO;iBACV;gBAED,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACxB,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAExB,IAAI,GAAG,KAAK,IAAI,EAAE;oBACd,SAAS;iBACZ;gBAED,IAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;gBAC1B,IAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAErC,IAAI,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC;gBAChC,OAAO,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE;oBACxB,IAAM,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;oBAChC,IAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC5B,IAAI,CAAC,SAAS,EAAE;wBACZ,SAAS;qBACZ;oBAED,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;wBAC1B,IAAI,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC;wBAChC,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE;4BACzB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;gCACtB,SAAS;6BACZ;4BACD,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE;gCAC7B,OAAO,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;6BACjD;iCAAM;gCACH,SAAS;6BACZ;4BACD,IAAI,OAAO,EAAE;gCACT,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;6BAC1B;yBACJ;qBACJ;yBAAM,IAAI,MAAM,CAAC,SAAS,CAAC,EAAE;wBAC1B,QAAQ,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;qBAC5C;iBACJ;aACJ;SACJ;IACL,CAAC;IACL,iBAAC;AAAD,CAAC,AAxJD,IAwJC;AAQD,SAAS,QAAQ,CAAC,IAAmB,EAAE,OAAgB;IACnD,IAAM,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC;IACpC,OAAO,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC9C,CAAC;AAED,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC"}
\ No newline at end of file
diff --git a/node_modules/@textlint/ast-traverse/package.json b/node_modules/@textlint/ast-traverse/package.json
new file mode 100644
index 000000000..781848003
--- /dev/null
+++ b/node_modules/@textlint/ast-traverse/package.json
@@ -0,0 +1,56 @@
+{
+ "name": "@textlint/ast-traverse",
+ "version": "2.3.5",
+ "description": "TxtNode traverse library",
+ "keywords": [
+ "AST",
+ "traverse"
+ ],
+ "homepage": "https://github.com/textlint/textlint/tree/master/packages/@textlint/ast-traverse",
+ "bugs": {
+ "url": "https://github.com/textlint/textlint/issues"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/textlint/textlint.git"
+ },
+ "license": "MIT",
+ "author": "azu",
+ "main": "./lib/index.js",
+ "module": "./module/index.js",
+ "types": "./lib/index.d.ts",
+ "directories": {
+ "test": "test/"
+ },
+ "files": [
+ "bin/",
+ "lib/",
+ "module/",
+ "src/"
+ ],
+ "scripts": {
+ "build": "tsc -b && tsc -b tsconfig.module.json",
+ "clean": "rimraf lib/ module/ tsconfig.tsbuildinfo tsconfig.module.tsbuildinfo",
+ "prepublish": "npm run --if-present build",
+ "test": "mocha \"test/**/*.ts\"",
+ "watch": "tsc -b --watch"
+ },
+ "dependencies": {
+ "@textlint/ast-node-types": "^4.4.3"
+ },
+ "devDependencies": {
+ "@textlint/markdown-to-ast": "^6.3.5",
+ "@types/mocha": "^8.2.2",
+ "@types/node": "^14.14.44",
+ "cross-env": "^7.0.3",
+ "mocha": "^8.4.0",
+ "rimraf": "^3.0.2",
+ "ts-node": "^9.1.1",
+ "ts-node-test-register": "^9.0.1",
+ "typescript": "~4.0.2"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "gitHead": "4cb1e78aa38cd0e942c61f352ffb29bb36f80a7b"
+}
diff --git a/node_modules/@textlint/ast-traverse/src/index.ts b/node_modules/@textlint/ast-traverse/src/index.ts
new file mode 100644
index 000000000..f5c937b60
--- /dev/null
+++ b/node_modules/@textlint/ast-traverse/src/index.ts
@@ -0,0 +1,191 @@
+// LICENSE : MIT
+"use strict";
+import { AnyTxtNode, TxtNode, TxtParentNode } from "@textlint/ast-node-types";
+
+/**
+ * is TxtNode?
+ */
+function isNode(node: any): node is TxtNode {
+ if (node == null) {
+ return false;
+ }
+ return typeof node === "object" && (typeof node.type === "string" || typeof node.t === "string");
+}
+
+export class TxtElement {
+ constructor(public node: AnyTxtNode | null) {}
+}
+
+const BREAK = {};
+const SKIP = {};
+const VisitorOption = {
+ Break: BREAK,
+ Skip: SKIP
+};
+
+class Controller {
+ private __worklist!: TxtElement[];
+ private __leavelist!: TxtElement[];
+ private __current!: null | TxtElement;
+
+ private __willStartTraverse() {
+ this.__current = null;
+ this.__worklist = [];
+ this.__leavelist = [];
+ }
+
+ private __execute(
+ callback: ((this: Controller, current: AnyTxtNode, parent: TxtParentNode) => any) | undefined,
+ element: TxtElement
+ ) {
+ let result = undefined;
+
+ const previous = this.__current;
+ this.__current = element;
+ if (callback) {
+ const parentNode = this.__leavelist[this.__leavelist.length - 1].node as TxtParentNode;
+ // ignore null element
+ if (!element.node) {
+ return;
+ }
+ result = callback.call(this, element.node, parentNode);
+ }
+ this.__current = previous;
+
+ return result;
+ }
+
+ /**
+ * Gets parent nodes of current node.
+ * The parent nodes are returned in order from the closest parent to the outer ones.
+ * Current node is {@link current}.
+ * @returns {Array}
+ * @public
+ */
+ parents(): TxtNode[] {
+ let i, iz;
+ // first node is sentinel
+ const result: TxtNode[] = [];
+ for (i = 1, iz = this.__leavelist.length; i < iz; ++i) {
+ const txtElement = this.__leavelist[i];
+ const node = txtElement.node;
+ if (node) {
+ result.push(node);
+ }
+ }
+ return result;
+ }
+
+ /**
+ * Gets current node during traverse.
+ * @returns {TxtNode|null}
+ * @public
+ */
+ current(): TxtNode | null {
+ if (!this.__current) {
+ return null;
+ }
+ return this.__current.node;
+ }
+
+ /**
+ * Traverse AST with visitor
+ * @param {TxtParentNode} root
+ * @param {Visitor} visitor
+ */
+ traverse(root: TxtParentNode, visitor: Visitor) {
+ // Note: This is based https://github.com/estools/estraverse
+ // Avoid recursive call by design
+ let ret;
+ this.__willStartTraverse();
+
+ // Stop object
+ const sentinel = new TxtElement(null);
+
+ // reference
+ const worklist = this.__worklist;
+ const leavelist = this.__leavelist;
+
+ // initialize
+ worklist.push(new TxtElement(root));
+ leavelist.push(new TxtElement(null));
+
+ while (worklist.length) {
+ let element = worklist.pop();
+ if (element === undefined) {
+ continue;
+ }
+ if (element === sentinel) {
+ element = leavelist.pop();
+ if (element === undefined) {
+ continue;
+ }
+ ret = this.__execute(visitor.leave, element);
+
+ if (ret === BREAK) {
+ return;
+ }
+ continue;
+ }
+
+ if (element.node) {
+ ret = this.__execute(visitor.enter, element);
+
+ if (ret === BREAK) {
+ return;
+ }
+
+ worklist.push(sentinel);
+ leavelist.push(element);
+
+ if (ret === SKIP) {
+ continue;
+ }
+
+ const node = element.node;
+ const candidates = Object.keys(node);
+
+ let current = candidates.length;
+ while ((current -= 1) >= 0) {
+ const key = candidates[current];
+ const candidate = node[key];
+ if (!candidate) {
+ continue;
+ }
+
+ if (Array.isArray(candidate)) {
+ let current2 = candidate.length;
+ while ((current2 -= 1) >= 0) {
+ if (!candidate[current2]) {
+ continue;
+ }
+ if (isNode(candidate[current2])) {
+ element = new TxtElement(candidate[current2]);
+ } else {
+ continue;
+ }
+ if (element) {
+ worklist.push(element);
+ }
+ }
+ } else if (isNode(candidate)) {
+ worklist.push(new TxtElement(candidate));
+ }
+ }
+ }
+ }
+ }
+}
+
+export interface Visitor {
+ enter?(node: TxtNode, parent?: TxtParentNode): any | void;
+
+ leave?(node: TxtNode, parent?: TxtParentNode): any | void;
+}
+
+function traverse(root: TxtParentNode, visitor: Visitor) {
+ const controller = new Controller();
+ return controller.traverse(root, visitor);
+}
+
+export { Controller, traverse, VisitorOption };
diff --git a/node_modules/@textlint/feature-flag/CHANGELOG.md b/node_modules/@textlint/feature-flag/CHANGELOG.md
new file mode 100644
index 000000000..a4f363cc3
--- /dev/null
+++ b/node_modules/@textlint/feature-flag/CHANGELOG.md
@@ -0,0 +1,403 @@
+# Change Log
+
+All notable changes to this project will be documented in this file.
+See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+
+## [3.3.5](https://github.com/textlint/textlint/compare/@textlint/feature-flag@3.3.4...@textlint/feature-flag@3.3.5) (2021-05-08)
+
+**Note:** Version bump only for package @textlint/feature-flag
+
+
+
+
+
+## [3.3.4](https://github.com/textlint/textlint/compare/@textlint/feature-flag@3.3.3...@textlint/feature-flag@3.3.4) (2021-03-21)
+
+**Note:** Version bump only for package @textlint/feature-flag
+
+
+
+
+
+
+## [3.3.3](https://github.com/textlint/textlint/compare/@textlint/feature-flag@3.3.2...@textlint/feature-flag@3.3.3) (2021-03-19)
+
+
+### Chores
+
+* **deps:** update dependency [@types](https://github.com/types)/mocha to v8.2.1 ([da2d6e7](https://github.com/textlint/textlint/commit/da2d6e7))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.27 ([c1c0b86](https://github.com/textlint/textlint/commit/c1c0b86))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.28 ([136e255](https://github.com/textlint/textlint/commit/136e255))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.29 ([74af03b](https://github.com/textlint/textlint/commit/74af03b))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.30 ([4872821](https://github.com/textlint/textlint/commit/4872821))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.31 ([95821ad](https://github.com/textlint/textlint/commit/95821ad))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.32 ([0b0a384](https://github.com/textlint/textlint/commit/0b0a384))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.33 ([a05e2d9](https://github.com/textlint/textlint/commit/a05e2d9))
+* **deps:** update dependency mocha to ^8.3.0 ([0464adb](https://github.com/textlint/textlint/commit/0464adb))
+* **deps:** update dependency mocha to ^8.3.1 ([cc509ed](https://github.com/textlint/textlint/commit/cc509ed))
+* **deps:** update patch updates ([183eb8d](https://github.com/textlint/textlint/commit/183eb8d))
+
+
+
+
+
+
+## [3.3.2](https://github.com/textlint/textlint/compare/@textlint/feature-flag@3.3.1...@textlint/feature-flag@3.3.2) (2021-02-06)
+
+
+### Chores
+
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.25 ([cc5c800](https://github.com/textlint/textlint/commit/cc5c800))
+
+
+
+
+
+
+## [3.3.1](https://github.com/textlint/textlint/compare/@textlint/feature-flag@3.2.4...@textlint/feature-flag@3.3.1) (2021-01-22)
+
+
+### Chores
+
+* **deps:** update dependency [@types](https://github.com/types)/mocha to v8.0.4 ([fd60f20](https://github.com/textlint/textlint/commit/fd60f20))
+* **deps:** update dependency [@types](https://github.com/types)/mocha to v8.2.0 ([5ced72d](https://github.com/textlint/textlint/commit/5ced72d))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.11.2 ([6ac372a](https://github.com/textlint/textlint/commit/6ac372a))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.11.5 ([b0e73f5](https://github.com/textlint/textlint/commit/b0e73f5))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.11.8 ([33679af](https://github.com/textlint/textlint/commit/33679af))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.10 ([96ba315](https://github.com/textlint/textlint/commit/96ba315))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.12 ([f62f2e3](https://github.com/textlint/textlint/commit/f62f2e3))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.13 ([608afd4](https://github.com/textlint/textlint/commit/608afd4))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.14 ([8417f8a](https://github.com/textlint/textlint/commit/8417f8a))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.16 ([7209803](https://github.com/textlint/textlint/commit/7209803))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.17 ([9ec5481](https://github.com/textlint/textlint/commit/9ec5481))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.19 ([bd050c9](https://github.com/textlint/textlint/commit/bd050c9))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.21 ([464d58a](https://github.com/textlint/textlint/commit/464d58a))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.22 ([5e5d214](https://github.com/textlint/textlint/commit/5e5d214))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.5 ([1ed7006](https://github.com/textlint/textlint/commit/1ed7006))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.6 ([507a41b](https://github.com/textlint/textlint/commit/507a41b))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.7 ([64f97eb](https://github.com/textlint/textlint/commit/64f97eb))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.8 ([8de7d16](https://github.com/textlint/textlint/commit/8de7d16))
+* **deps:** update minor updates ([7ef0be6](https://github.com/textlint/textlint/commit/7ef0be6))
+* **deps:** update minor updates ([2f3dcb6](https://github.com/textlint/textlint/commit/2f3dcb6))
+* **deps:** update minor updates ([7a53517](https://github.com/textlint/textlint/commit/7a53517))
+* **deps:** update minor updates ([#712](https://github.com/textlint/textlint/issues/712)) ([8c42a19](https://github.com/textlint/textlint/commit/8c42a19))
+* **deps:** update patch updates ([24fe2a9](https://github.com/textlint/textlint/commit/24fe2a9))
+* **deps:** update patch updates ([3d9660b](https://github.com/textlint/textlint/commit/3d9660b))
+* **deps:** update patch updates ([fe2ad4f](https://github.com/textlint/textlint/commit/fe2ad4f))
+* **deps:** update patch updates ([e438ff2](https://github.com/textlint/textlint/commit/e438ff2))
+* **deps:** update patch updates ([9df50df](https://github.com/textlint/textlint/commit/9df50df))
+* **deps:** update patch updates ([4f4c206](https://github.com/textlint/textlint/commit/4f4c206))
+* **deps:** update patch updates ([1a0e41f](https://github.com/textlint/textlint/commit/1a0e41f))
+* **deps:** update TypeScript deps ([#705](https://github.com/textlint/textlint/issues/705)) ([1baa72a](https://github.com/textlint/textlint/commit/1baa72a))
+* use [@monorepo-utils](https://github.com/monorepo-utils)/workspaces-to-typescript-project-references ([#699](https://github.com/textlint/textlint/issues/699)) ([eff1943](https://github.com/textlint/textlint/commit/eff1943))
+
+
+### Features
+
+* **source-code-fixer:** add `[@textlint](https://github.com/textlint)/source-code-fixer` ([#736](https://github.com/textlint/textlint/issues/736)) ([bf7235a](https://github.com/textlint/textlint/commit/bf7235a))
+
+
+
+
+
+
+# [3.3.0](https://github.com/textlint/textlint/compare/@textlint/feature-flag@3.2.4...@textlint/feature-flag@3.3.0) (2021-01-22)
+
+
+### Chores
+
+* **deps:** update dependency [@types](https://github.com/types)/mocha to v8.0.4 ([fd60f20](https://github.com/textlint/textlint/commit/fd60f20))
+* **deps:** update dependency [@types](https://github.com/types)/mocha to v8.2.0 ([5ced72d](https://github.com/textlint/textlint/commit/5ced72d))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.11.2 ([6ac372a](https://github.com/textlint/textlint/commit/6ac372a))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.11.5 ([b0e73f5](https://github.com/textlint/textlint/commit/b0e73f5))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.11.8 ([33679af](https://github.com/textlint/textlint/commit/33679af))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.10 ([96ba315](https://github.com/textlint/textlint/commit/96ba315))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.12 ([f62f2e3](https://github.com/textlint/textlint/commit/f62f2e3))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.13 ([608afd4](https://github.com/textlint/textlint/commit/608afd4))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.14 ([8417f8a](https://github.com/textlint/textlint/commit/8417f8a))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.16 ([7209803](https://github.com/textlint/textlint/commit/7209803))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.17 ([9ec5481](https://github.com/textlint/textlint/commit/9ec5481))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.19 ([bd050c9](https://github.com/textlint/textlint/commit/bd050c9))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.21 ([464d58a](https://github.com/textlint/textlint/commit/464d58a))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.22 ([5e5d214](https://github.com/textlint/textlint/commit/5e5d214))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.5 ([1ed7006](https://github.com/textlint/textlint/commit/1ed7006))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.6 ([507a41b](https://github.com/textlint/textlint/commit/507a41b))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.7 ([64f97eb](https://github.com/textlint/textlint/commit/64f97eb))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.8 ([8de7d16](https://github.com/textlint/textlint/commit/8de7d16))
+* **deps:** update minor updates ([7ef0be6](https://github.com/textlint/textlint/commit/7ef0be6))
+* **deps:** update minor updates ([2f3dcb6](https://github.com/textlint/textlint/commit/2f3dcb6))
+* **deps:** update minor updates ([7a53517](https://github.com/textlint/textlint/commit/7a53517))
+* **deps:** update minor updates ([#712](https://github.com/textlint/textlint/issues/712)) ([8c42a19](https://github.com/textlint/textlint/commit/8c42a19))
+* **deps:** update patch updates ([24fe2a9](https://github.com/textlint/textlint/commit/24fe2a9))
+* **deps:** update patch updates ([3d9660b](https://github.com/textlint/textlint/commit/3d9660b))
+* **deps:** update patch updates ([fe2ad4f](https://github.com/textlint/textlint/commit/fe2ad4f))
+* **deps:** update patch updates ([e438ff2](https://github.com/textlint/textlint/commit/e438ff2))
+* **deps:** update patch updates ([9df50df](https://github.com/textlint/textlint/commit/9df50df))
+* **deps:** update patch updates ([4f4c206](https://github.com/textlint/textlint/commit/4f4c206))
+* **deps:** update patch updates ([1a0e41f](https://github.com/textlint/textlint/commit/1a0e41f))
+* **deps:** update TypeScript deps ([#705](https://github.com/textlint/textlint/issues/705)) ([1baa72a](https://github.com/textlint/textlint/commit/1baa72a))
+* use [@monorepo-utils](https://github.com/monorepo-utils)/workspaces-to-typescript-project-references ([#699](https://github.com/textlint/textlint/issues/699)) ([eff1943](https://github.com/textlint/textlint/commit/eff1943))
+
+
+### Features
+
+* **source-code-fixer:** add `[@textlint](https://github.com/textlint)/source-code-fixer` ([#736](https://github.com/textlint/textlint/issues/736)) ([bf7235a](https://github.com/textlint/textlint/commit/bf7235a))
+
+
+
+
+
+
+## [3.2.5](https://github.com/textlint/textlint/compare/@textlint/feature-flag@3.2.4...@textlint/feature-flag@3.2.5) (2020-12-22)
+
+
+### Chores
+
+* **deps:** update dependency [@types](https://github.com/types)/mocha to v8.0.4 ([fd60f20](https://github.com/textlint/textlint/commit/fd60f20))
+* **deps:** update dependency [@types](https://github.com/types)/mocha to v8.2.0 ([5ced72d](https://github.com/textlint/textlint/commit/5ced72d))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.11.2 ([6ac372a](https://github.com/textlint/textlint/commit/6ac372a))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.11.5 ([b0e73f5](https://github.com/textlint/textlint/commit/b0e73f5))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.11.8 ([33679af](https://github.com/textlint/textlint/commit/33679af))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.10 ([96ba315](https://github.com/textlint/textlint/commit/96ba315))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.12 ([f62f2e3](https://github.com/textlint/textlint/commit/f62f2e3))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.13 ([608afd4](https://github.com/textlint/textlint/commit/608afd4))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.14 ([8417f8a](https://github.com/textlint/textlint/commit/8417f8a))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.5 ([1ed7006](https://github.com/textlint/textlint/commit/1ed7006))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.6 ([507a41b](https://github.com/textlint/textlint/commit/507a41b))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.7 ([64f97eb](https://github.com/textlint/textlint/commit/64f97eb))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.8 ([8de7d16](https://github.com/textlint/textlint/commit/8de7d16))
+* **deps:** update minor updates ([7ef0be6](https://github.com/textlint/textlint/commit/7ef0be6))
+* **deps:** update minor updates ([2f3dcb6](https://github.com/textlint/textlint/commit/2f3dcb6))
+* **deps:** update minor updates ([7a53517](https://github.com/textlint/textlint/commit/7a53517))
+* **deps:** update minor updates ([#712](https://github.com/textlint/textlint/issues/712)) ([8c42a19](https://github.com/textlint/textlint/commit/8c42a19))
+* **deps:** update patch updates ([3d9660b](https://github.com/textlint/textlint/commit/3d9660b))
+* **deps:** update patch updates ([fe2ad4f](https://github.com/textlint/textlint/commit/fe2ad4f))
+* **deps:** update patch updates ([e438ff2](https://github.com/textlint/textlint/commit/e438ff2))
+* **deps:** update patch updates ([9df50df](https://github.com/textlint/textlint/commit/9df50df))
+* **deps:** update patch updates ([4f4c206](https://github.com/textlint/textlint/commit/4f4c206))
+* **deps:** update patch updates ([1a0e41f](https://github.com/textlint/textlint/commit/1a0e41f))
+* **deps:** update TypeScript deps ([#705](https://github.com/textlint/textlint/issues/705)) ([1baa72a](https://github.com/textlint/textlint/commit/1baa72a))
+* use [@monorepo-utils](https://github.com/monorepo-utils)/workspaces-to-typescript-project-references ([#699](https://github.com/textlint/textlint/issues/699)) ([eff1943](https://github.com/textlint/textlint/commit/eff1943))
+
+
+
+
+
+
+## [3.2.4](https://github.com/textlint/textlint/compare/@textlint/feature-flag@3.2.3...@textlint/feature-flag@3.2.4) (2020-07-24)
+
+
+### Bug Fixes
+
+* improve "module" supports ([5ba5182](https://github.com/textlint/textlint/commit/5ba5182))
+
+
+
+
+
+
+## [3.2.3](https://github.com/textlint/textlint/compare/@textlint/feature-flag@3.2.2...@textlint/feature-flag@3.2.3) (2020-07-24)
+
+
+### Bug Fixes
+
+* "clean" command should remove tsconfig.module.tsbuildinfo ([76ac72a](https://github.com/textlint/textlint/commit/76ac72a))
+
+
+
+
+
+
+## [3.2.2](https://github.com/textlint/textlint/compare/@textlint/feature-flag@3.2.1...@textlint/feature-flag@3.2.2) (2020-07-24)
+
+
+### Bug Fixes
+
+* **@textlint/kernel:** fix export only type definition ([1234930](https://github.com/textlint/textlint/commit/1234930))
+
+
+
+
+
+
+## [3.2.1](https://github.com/textlint/textlint/compare/@textlint/feature-flag@3.2.0...@textlint/feature-flag@3.2.1) (2020-07-24)
+
+
+### Bug Fixes
+
+* include module ([2de05f7](https://github.com/textlint/textlint/commit/2de05f7))
+
+
+
+
+
+
+# [3.2.0](https://github.com/textlint/textlint/compare/@textlint/feature-flag@3.1.6...@textlint/feature-flag@3.2.0) (2020-07-24)
+
+
+### Chores
+
+* **deps:** update devDepencies ([#667](https://github.com/textlint/textlint/issues/667)) ([0503af6](https://github.com/textlint/textlint/commit/0503af6))
+
+
+### Code Refactoring
+
+* **typescript:** Use TypeScript Project References ([#668](https://github.com/textlint/textlint/issues/668)) ([bbffd43](https://github.com/textlint/textlint/commit/bbffd43))
+
+
+### Tests
+
+* migrate mocha.opts to .mocharc.json ([#682](https://github.com/textlint/textlint/issues/682)) ([332ae5e](https://github.com/textlint/textlint/commit/332ae5e))
+
+
+
+
+
+
+## [3.1.6](https://github.com/textlint/textlint/compare/@textlint/feature-flag@3.1.4...@textlint/feature-flag@3.1.6) (2020-01-07)
+
+
+### Bug Fixes
+
+* **@textlint/feature-flag:** fix build config ([308835a](https://github.com/textlint/textlint/commit/308835a))
+
+
+### Tests
+
+* **@textlint/feature-flag:** fix import path ([ec9110a](https://github.com/textlint/textlint/commit/ec9110a))
+
+
+
+
+
+
+## [3.1.5](https://github.com/textlint/textlint/compare/@textlint/feature-flag@3.1.4...@textlint/feature-flag@3.1.5) (2019-11-03)
+
+
+### Bug Fixes
+
+* **@textlint/feature-flag:** fix build config ([308835a](https://github.com/textlint/textlint/commit/308835a))
+
+
+### Tests
+
+* **@textlint/feature-flag:** fix import path ([ec9110a](https://github.com/textlint/textlint/commit/ec9110a))
+
+
+
+
+
+
+## [3.1.4](https://github.com/textlint/textlint/compare/@textlint/feature-flag@3.1.3...@textlint/feature-flag@3.1.4) (2019-10-14)
+
+**Note:** Version bump only for package @textlint/feature-flag
+
+
+
+
+
+
+## [3.1.3](https://github.com/textlint/textlint/compare/@textlint/feature-flag@3.1.2...@textlint/feature-flag@3.1.3) (2019-04-30)
+
+
+### Chores
+
+* **deps:** update deps && devDeps ([a19463b](https://github.com/textlint/textlint/commit/a19463b))
+
+
+
+
+
+
+## [3.1.2](https://github.com/textlint/textlint/compare/@textlint/feature-flag@3.1.1...@textlint/feature-flag@3.1.2) (2019-01-03)
+
+**Note:** Version bump only for package @textlint/feature-flag
+
+
+
+
+
+
+## [3.1.1](https://github.com/textlint/textlint/compare/@textlint/feature-flag@3.1.0...@textlint/feature-flag@3.1.1) (2019-01-03)
+
+**Note:** Version bump only for package @textlint/feature-flag
+
+
+
+
+
+
+# [3.1.0](https://github.com/textlint/textlint/compare/@textlint/feature-flag@3.0.5...@textlint/feature-flag@3.1.0) (2019-01-01)
+
+
+### Chores
+
+* **deps:** update TypeScript deps ([3ea7fb0](https://github.com/textlint/textlint/commit/3ea7fb0))
+
+
+
+
+
+## [3.0.5](https://github.com/textlint/textlint/compare/@textlint/feature-flag@3.0.4...@textlint/feature-flag@3.0.5) (2018-07-22)
+
+
+### Chores
+
+* **deps:** update mocha ([5df8af4](https://github.com/textlint/textlint/commit/5df8af4))
+
+
+
+
+
+## [3.0.4](https://github.com/textlint/textlint/compare/@textlint/feature-flag@3.0.3...@textlint/feature-flag@3.0.4) (2018-01-18)
+
+
+
+
+**Note:** Version bump only for package @textlint/feature-flag
+
+
+## [3.0.3](https://github.com/textlint/textlint/compare/@textlint/feature-flag@3.0.2...@textlint/feature-flag@3.0.3) (2018-01-12)
+
+
+
+
+**Note:** Version bump only for package @textlint/feature-flag
+
+
+## [3.0.2](https://github.com/textlint/textlint/compare/@textlint/feature-flag@3.0.1...@textlint/feature-flag@3.0.2) (2017-12-31)
+
+
+### Bug Fixes
+
+* **feature-flag:** Update MapLile@2 ([5b261f0](https://github.com/textlint/textlint/commit/5b261f0))
+
+
+
+
+
+## [3.0.1](https://github.com/textlint/textlint/compare/@textlint/feature-flag@3.0.0...@textlint/feature-flag@3.0.1) (2017-12-25)
+
+
+
+
+**Note:** Version bump only for package @textlint/feature-flag
+
+
+# [3.0.0](https://github.com/textlint/textlint/compare/@textlint/feature-flag@3.0.0-next.0...@textlint/feature-flag@3.0.0) (2017-12-18)
+
+
+
+
+**Note:** Version bump only for package @textlint/feature-flag
+
+
+# [3.0.0-next.0](https://github.com/textlint/textlint/compare/@textlint/feature-flag@2.0.0...@textlint/feature-flag@3.0.0-next.0) (2017-12-15)
+
+
+
+
+**Note:** Version bump only for package @textlint/feature-flag
+
+
+## 1.0.1 (2017-05-18)
diff --git a/node_modules/@textlint/feature-flag/LICENSE b/node_modules/@textlint/feature-flag/LICENSE
new file mode 100644
index 000000000..97d7cf637
--- /dev/null
+++ b/node_modules/@textlint/feature-flag/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2017 azu
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/node_modules/@textlint/feature-flag/README.md b/node_modules/@textlint/feature-flag/README.md
new file mode 100644
index 000000000..caaf892ba
--- /dev/null
+++ b/node_modules/@textlint/feature-flag/README.md
@@ -0,0 +1,65 @@
+# @textlint/feature-flag
+
+textlint internal feature flag manager.
+
+## Install
+
+Install with [npm](https://www.npmjs.com/):
+
+ npm install @textlint/feature-flag
+
+## Usage
+
+```js
+import { coreFlags, isFeatureEnabled, setFeature } from "@textlint/feature-flag";
+// core flag
+assert.ok(coreFlags.runningCLI === false);
+assert.ok(coreFlags.runningTester === false); // default loose
+coreFlags.runningCLI = true;
+coreFlags.runningTester = true;
+coreFlags.experimental = true;
+assert.ok(coreFlags.runningCLI === true);
+assert.ok(coreFlags.runningTester === true);
+assert.ok(coreFlags.experimental === true);
+// feature-flag
+try{
+ isFeatureEnabled("test")
+}catch(error){
+ // default strict
+}
+setFeature("test", true);
+assert.ok(isFeatureEnabled("test") === true);
+
+```
+
+
+## Changelog
+
+See [Releases page](https://github.com/textlint/textlint/releases).
+
+## Running tests
+
+Install devDependencies and Run `npm test`:
+
+ npm i -d && npm test
+
+## Contributing
+
+Pull requests and stars are always welcome.
+
+For bugs and feature requests, [please create an issue](https://github.com/textlint/textlint/issues).
+
+1. Fork it!
+2. Create your feature branch: `git checkout -b my-new-feature`
+3. Commit your changes: `git commit -am 'Add some feature'`
+4. Push to the branch: `git push origin my-new-feature`
+5. Submit a pull request :D
+
+## Author
+
+- [github/azu](https://github.com/azu)
+- [twitter/azu_re](https://twitter.com/azu_re)
+
+## License
+
+MIT © azu
diff --git a/node_modules/@textlint/feature-flag/module/index.d.ts b/node_modules/@textlint/feature-flag/module/index.d.ts
new file mode 100644
index 000000000..8e7bebaf6
--- /dev/null
+++ b/node_modules/@textlint/feature-flag/module/index.d.ts
@@ -0,0 +1,38 @@
+/**
+ * IT IS FOR TESTING
+ */
+export declare const resetFlags: () => void;
+/**
+ * set feature flag
+ * @param {string} flagName
+ * @param {boolean} status
+ */
+export declare const setFeature: (flagName: string, status: boolean) => void;
+/**
+ * If the feature flag of `flagName` is enabled, return true.
+ * @param {string} flagName
+ * @param {boolean=false} [loose]
+ * @returns {boolean}
+ */
+export declare const isFeatureEnabled: (flagName: string, { loose }?: {
+ loose?: boolean | undefined;
+}) => boolean;
+/**
+ * Core flags
+ * @type {{experimental, experimental, runningCLI, runningCLI, runningTester, runningTester}}
+ */
+export declare const coreFlags: {
+ experimental: boolean;
+ runningCLI: boolean;
+ runningTester: boolean;
+};
+/**
+ * if current is not experimental, throw error message.
+ * @param message
+ */
+export declare function throwWithoutExperimental(message: string): void;
+/**
+ * if current is in testing, throw error message.
+ * @param {string} message
+ */
+export declare function throwIfTesting(message: string): void;
diff --git a/node_modules/@textlint/feature-flag/module/index.js b/node_modules/@textlint/feature-flag/module/index.js
new file mode 100644
index 000000000..4170a2ca7
--- /dev/null
+++ b/node_modules/@textlint/feature-flag/module/index.js
@@ -0,0 +1,98 @@
+// MIT © 2017 azu
+"use strict";
+import { MapLike } from "map-like";
+var flagMap = new MapLike();
+/**
+ * IT IS FOR TESTING
+ */
+export var resetFlags = function () {
+ flagMap.clear();
+};
+/**
+ * set feature flag
+ * @param {string} flagName
+ * @param {boolean} status
+ */
+export var setFeature = function (flagName, status) {
+ flagMap.set(flagName, status);
+};
+/**
+ * If the feature flag of `flagName` is enabled, return true.
+ * @param {string} flagName
+ * @param {boolean=false} [loose]
+ * @returns {boolean}
+ */
+export var isFeatureEnabled = function (flagName, _a) {
+ var _b = _a === void 0 ? {} : _a, _c = _b.loose, loose = _c === void 0 ? false : _c;
+ if (!flagMap.has(flagName)) {
+ if (loose) {
+ // loose-mode, return false
+ return false;
+ }
+ else {
+ throw new Error("@textlint/feature-flag:Error: " + flagName + " is not defined.");
+ }
+ }
+ var status = flagMap.get(flagName);
+ if (typeof status !== "boolean") {
+ throw new Error("flag should be boolean, but it is :" + status);
+ }
+ return status;
+};
+// == CORE Flags
+// if run textlint --experimental, set experimental true by default
+if (typeof process !== "undefined" && Array.isArray(process.argv) && process.argv.indexOf("--experimental") !== -1) {
+ setFeature("core.experimental", true);
+}
+/**
+ * Core flags
+ * @type {{experimental, experimental, runningCLI, runningCLI, runningTester, runningTester}}
+ */
+export var coreFlags = {
+ // Experimental
+ get experimental() {
+ return isFeatureEnabled("core.experimental", {
+ loose: true
+ });
+ },
+ set experimental(status) {
+ setFeature("core.experimental", status);
+ },
+ // CLI
+ get runningCLI() {
+ return isFeatureEnabled("core.runningCLI", {
+ loose: true
+ });
+ },
+ set runningCLI(status) {
+ setFeature("core.runningCLI", status);
+ },
+ // textlint-tester
+ get runningTester() {
+ return isFeatureEnabled("core.runningTester", {
+ loose: true
+ });
+ },
+ set runningTester(status) {
+ setFeature("core.runningTester", status);
+ }
+};
+/**
+ * if current is not experimental, throw error message.
+ * @param message
+ */
+export function throwWithoutExperimental(message) {
+ if (coreFlags.runningCLI && !coreFlags.experimental) {
+ throw Error(message);
+ }
+}
+/**
+ * if current is in testing, throw error message.
+ * @param {string} message
+ */
+export function throwIfTesting(message) {
+ if (coreFlags.runningTester) {
+ throw Error(message);
+ }
+}
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/node_modules/@textlint/feature-flag/module/index.js.map b/node_modules/@textlint/feature-flag/module/index.js.map
new file mode 100644
index 000000000..d8e9189d9
--- /dev/null
+++ b/node_modules/@textlint/feature-flag/module/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,iBAAiB;AACjB,YAAY,CAAC;AACb,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAEnC,IAAM,OAAO,GAAG,IAAI,OAAO,EAAmB,CAAC;AAC/C;;GAEG;AACH,MAAM,CAAC,IAAM,UAAU,GAAG;IACtB,OAAO,CAAC,KAAK,EAAE,CAAC;AACpB,CAAC,CAAC;AACF;;;;GAIG;AACH,MAAM,CAAC,IAAM,UAAU,GAAG,UAAC,QAAgB,EAAE,MAAe;IACxD,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AAClC,CAAC,CAAC;AACF;;;;;GAKG;AACH,MAAM,CAAC,IAAM,gBAAgB,GAAG,UAAC,QAAgB,EAAE,EAAsB;QAAtB,qBAAoB,EAAE,KAAA,EAApB,aAAa,EAAb,KAAK,mBAAG,KAAK,KAAA;IAC9D,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;QACxB,IAAI,KAAK,EAAE;YACP,2BAA2B;YAC3B,OAAO,KAAK,CAAC;SAChB;aAAM;YACH,MAAM,IAAI,KAAK,CAAC,mCAAiC,QAAQ,qBAAkB,CAAC,CAAC;SAChF;KACJ;IACD,IAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACrC,IAAI,OAAO,MAAM,KAAK,SAAS,EAAE;QAC7B,MAAM,IAAI,KAAK,CAAC,wCAAsC,MAAQ,CAAC,CAAC;KACnE;IACD,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC;AAEF,gBAAgB;AAChB,mEAAmE;AACnE,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,EAAE;IAChH,UAAU,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC;CACzC;AACD;;;GAGG;AACH,MAAM,CAAC,IAAM,SAAS,GAAG;IACrB,eAAe;IACf,IAAI,YAAY;QACZ,OAAO,gBAAgB,CAAC,mBAAmB,EAAE;YACzC,KAAK,EAAE,IAAI;SACd,CAAC,CAAC;IACP,CAAC;IACD,IAAI,YAAY,CAAC,MAAe;QAC5B,UAAU,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;IAC5C,CAAC;IACD,MAAM;IACN,IAAI,UAAU;QACV,OAAO,gBAAgB,CAAC,iBAAiB,EAAE;YACvC,KAAK,EAAE,IAAI;SACd,CAAC,CAAC;IACP,CAAC;IACD,IAAI,UAAU,CAAC,MAAe;QAC1B,UAAU,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;IAC1C,CAAC;IACD,kBAAkB;IAClB,IAAI,aAAa;QACb,OAAO,gBAAgB,CAAC,oBAAoB,EAAE;YAC1C,KAAK,EAAE,IAAI;SACd,CAAC,CAAC;IACP,CAAC;IACD,IAAI,aAAa,CAAC,MAAM;QACpB,UAAU,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;IAC7C,CAAC;CACJ,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CAAC,OAAe;IACpD,IAAI,SAAS,CAAC,UAAU,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE;QACjD,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC;KACxB;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,OAAe;IAC1C,IAAI,SAAS,CAAC,aAAa,EAAE;QACzB,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC;KACxB;AACL,CAAC"}
\ No newline at end of file
diff --git a/node_modules/@textlint/feature-flag/package.json b/node_modules/@textlint/feature-flag/package.json
new file mode 100644
index 000000000..0be250353
--- /dev/null
+++ b/node_modules/@textlint/feature-flag/package.json
@@ -0,0 +1,51 @@
+{
+ "name": "@textlint/feature-flag",
+ "version": "3.3.5",
+ "description": "textlint internal feature flag manager.",
+ "keywords": [
+ "textlint"
+ ],
+ "homepage": "https://github.com/textlint/textlint/tree/master/packages/@textlint/feature-flag/",
+ "bugs": {
+ "url": "https://github.com/textlint/textlint/issues"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/textlint/textlint.git"
+ },
+ "license": "MIT",
+ "author": "azu",
+ "type": "lib/index.d.ts",
+ "main": "lib/index.js",
+ "module": "./module/index.js",
+ "directories": {
+ "test": "test"
+ },
+ "files": [
+ "bin/",
+ "lib/",
+ "module/",
+ "src/"
+ ],
+ "scripts": {
+ "build": "tsc -b && tsc -b tsconfig.module.json",
+ "clean": "rimraf lib/ module/ tsconfig.tsbuildinfo tsconfig.module.tsbuildinfo",
+ "prepublish": "npm run --if-present build",
+ "test": "mocha \"test/**/*.ts\"",
+ "watch": "tsc -b --watch"
+ },
+ "dependencies": {
+ "map-like": "^2.0.0"
+ },
+ "devDependencies": {
+ "@types/mocha": "^8.2.2",
+ "@types/node": "^14.14.44",
+ "cross-env": "^7.0.3",
+ "mocha": "^8.4.0",
+ "rimraf": "^3.0.2",
+ "ts-node": "^9.1.1",
+ "ts-node-test-register": "^9.0.1",
+ "typescript": "^4.0.2"
+ },
+ "gitHead": "4cb1e78aa38cd0e942c61f352ffb29bb36f80a7b"
+}
diff --git a/node_modules/@textlint/feature-flag/src/index.ts b/node_modules/@textlint/feature-flag/src/index.ts
new file mode 100644
index 000000000..6db077b75
--- /dev/null
+++ b/node_modules/@textlint/feature-flag/src/index.ts
@@ -0,0 +1,99 @@
+// MIT © 2017 azu
+"use strict";
+import { MapLike } from "map-like";
+
+const flagMap = new MapLike();
+/**
+ * IT IS FOR TESTING
+ */
+export const resetFlags = () => {
+ flagMap.clear();
+};
+/**
+ * set feature flag
+ * @param {string} flagName
+ * @param {boolean} status
+ */
+export const setFeature = (flagName: string, status: boolean) => {
+ flagMap.set(flagName, status);
+};
+/**
+ * If the feature flag of `flagName` is enabled, return true.
+ * @param {string} flagName
+ * @param {boolean=false} [loose]
+ * @returns {boolean}
+ */
+export const isFeatureEnabled = (flagName: string, { loose = false } = {}): boolean => {
+ if (!flagMap.has(flagName)) {
+ if (loose) {
+ // loose-mode, return false
+ return false;
+ } else {
+ throw new Error(`@textlint/feature-flag:Error: ${flagName} is not defined.`);
+ }
+ }
+ const status = flagMap.get(flagName);
+ if (typeof status !== "boolean") {
+ throw new Error(`flag should be boolean, but it is :${status}`);
+ }
+ return status;
+};
+
+// == CORE Flags
+// if run textlint --experimental, set experimental true by default
+if (typeof process !== "undefined" && Array.isArray(process.argv) && process.argv.indexOf("--experimental") !== -1) {
+ setFeature("core.experimental", true);
+}
+/**
+ * Core flags
+ * @type {{experimental, experimental, runningCLI, runningCLI, runningTester, runningTester}}
+ */
+export const coreFlags = {
+ // Experimental
+ get experimental() {
+ return isFeatureEnabled("core.experimental", {
+ loose: true
+ });
+ },
+ set experimental(status: boolean) {
+ setFeature("core.experimental", status);
+ },
+ // CLI
+ get runningCLI() {
+ return isFeatureEnabled("core.runningCLI", {
+ loose: true
+ });
+ },
+ set runningCLI(status: boolean) {
+ setFeature("core.runningCLI", status);
+ },
+ // textlint-tester
+ get runningTester() {
+ return isFeatureEnabled("core.runningTester", {
+ loose: true
+ });
+ },
+ set runningTester(status) {
+ setFeature("core.runningTester", status);
+ }
+};
+
+/**
+ * if current is not experimental, throw error message.
+ * @param message
+ */
+export function throwWithoutExperimental(message: string) {
+ if (coreFlags.runningCLI && !coreFlags.experimental) {
+ throw Error(message);
+ }
+}
+
+/**
+ * if current is in testing, throw error message.
+ * @param {string} message
+ */
+export function throwIfTesting(message: string) {
+ if (coreFlags.runningTester) {
+ throw Error(message);
+ }
+}
diff --git a/node_modules/@textlint/fixer-formatter/CHANGELOG.md b/node_modules/@textlint/fixer-formatter/CHANGELOG.md
new file mode 100644
index 000000000..449ad1e96
--- /dev/null
+++ b/node_modules/@textlint/fixer-formatter/CHANGELOG.md
@@ -0,0 +1,599 @@
+# Change Log
+
+All notable changes to this project will be documented in this file.
+See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+
+## [3.3.5](https://github.com/textlint/textlint/compare/@textlint/fixer-formatter@3.3.4...@textlint/fixer-formatter@3.3.5) (2021-05-08)
+
+**Note:** Version bump only for package @textlint/fixer-formatter
+
+
+
+
+
+## [3.3.4](https://github.com/textlint/textlint/compare/@textlint/fixer-formatter@3.3.3...@textlint/fixer-formatter@3.3.4) (2021-03-21)
+
+**Note:** Version bump only for package @textlint/fixer-formatter
+
+
+
+
+
+
+## [3.3.3](https://github.com/textlint/textlint/compare/@textlint/fixer-formatter@3.3.2...@textlint/fixer-formatter@3.3.3) (2021-03-19)
+
+
+### Chores
+
+* **deps:** update dependency [@types](https://github.com/types)/mocha to v8.2.1 ([da2d6e7](https://github.com/textlint/textlint/commit/da2d6e7))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.27 ([c1c0b86](https://github.com/textlint/textlint/commit/c1c0b86))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.28 ([136e255](https://github.com/textlint/textlint/commit/136e255))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.29 ([74af03b](https://github.com/textlint/textlint/commit/74af03b))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.30 ([4872821](https://github.com/textlint/textlint/commit/4872821))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.31 ([95821ad](https://github.com/textlint/textlint/commit/95821ad))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.32 ([0b0a384](https://github.com/textlint/textlint/commit/0b0a384))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.33 ([a05e2d9](https://github.com/textlint/textlint/commit/a05e2d9))
+* **deps:** update dependency mocha to ^8.3.0 ([0464adb](https://github.com/textlint/textlint/commit/0464adb))
+* **deps:** update dependency mocha to ^8.3.1 ([cc509ed](https://github.com/textlint/textlint/commit/cc509ed))
+* **deps:** update patch updates ([183eb8d](https://github.com/textlint/textlint/commit/183eb8d))
+
+
+
+
+
+
+## [3.3.2](https://github.com/textlint/textlint/compare/@textlint/fixer-formatter@3.3.1...@textlint/fixer-formatter@3.3.2) (2021-02-06)
+
+
+### Chores
+
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.25 ([cc5c800](https://github.com/textlint/textlint/commit/cc5c800))
+
+
+
+
+
+
+## [3.3.1](https://github.com/textlint/textlint/compare/@textlint/fixer-formatter@3.2.5...@textlint/fixer-formatter@3.3.1) (2021-01-22)
+
+
+### Bug Fixes
+
+* **deps:** update dependency debug to ^4.2.0 ([6db0ba9](https://github.com/textlint/textlint/commit/6db0ba9))
+* **deps:** update dependency debug to ^4.3.0 ([9dea96a](https://github.com/textlint/textlint/commit/9dea96a))
+
+
+### Chores
+
+* **deps:** update dependency [@types](https://github.com/types)/mocha to v8.0.4 ([fd60f20](https://github.com/textlint/textlint/commit/fd60f20))
+* **deps:** update dependency [@types](https://github.com/types)/mocha to v8.2.0 ([5ced72d](https://github.com/textlint/textlint/commit/5ced72d))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.11.2 ([6ac372a](https://github.com/textlint/textlint/commit/6ac372a))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.11.5 ([b0e73f5](https://github.com/textlint/textlint/commit/b0e73f5))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.11.8 ([33679af](https://github.com/textlint/textlint/commit/33679af))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.10 ([96ba315](https://github.com/textlint/textlint/commit/96ba315))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.12 ([f62f2e3](https://github.com/textlint/textlint/commit/f62f2e3))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.13 ([608afd4](https://github.com/textlint/textlint/commit/608afd4))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.14 ([8417f8a](https://github.com/textlint/textlint/commit/8417f8a))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.16 ([7209803](https://github.com/textlint/textlint/commit/7209803))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.17 ([9ec5481](https://github.com/textlint/textlint/commit/9ec5481))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.19 ([bd050c9](https://github.com/textlint/textlint/commit/bd050c9))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.21 ([464d58a](https://github.com/textlint/textlint/commit/464d58a))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.22 ([5e5d214](https://github.com/textlint/textlint/commit/5e5d214))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.5 ([1ed7006](https://github.com/textlint/textlint/commit/1ed7006))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.6 ([507a41b](https://github.com/textlint/textlint/commit/507a41b))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.7 ([64f97eb](https://github.com/textlint/textlint/commit/64f97eb))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.8 ([8de7d16](https://github.com/textlint/textlint/commit/8de7d16))
+* **deps:** update minor updates ([7ef0be6](https://github.com/textlint/textlint/commit/7ef0be6))
+* **deps:** update minor updates ([2f3dcb6](https://github.com/textlint/textlint/commit/2f3dcb6))
+* **deps:** update minor updates ([7a53517](https://github.com/textlint/textlint/commit/7a53517))
+* **deps:** update minor updates ([#712](https://github.com/textlint/textlint/issues/712)) ([8c42a19](https://github.com/textlint/textlint/commit/8c42a19))
+* **deps:** update patch updates ([24fe2a9](https://github.com/textlint/textlint/commit/24fe2a9))
+* **deps:** update patch updates ([3d9660b](https://github.com/textlint/textlint/commit/3d9660b))
+* **deps:** update patch updates ([fe2ad4f](https://github.com/textlint/textlint/commit/fe2ad4f))
+* **deps:** update patch updates ([e438ff2](https://github.com/textlint/textlint/commit/e438ff2))
+* **deps:** update patch updates ([9df50df](https://github.com/textlint/textlint/commit/9df50df))
+* **deps:** update patch updates ([4f4c206](https://github.com/textlint/textlint/commit/4f4c206))
+* **deps:** update patch updates ([1a0e41f](https://github.com/textlint/textlint/commit/1a0e41f))
+* **deps:** update patch updates ([9157dda](https://github.com/textlint/textlint/commit/9157dda))
+* **deps:** update TypeScript deps ([#705](https://github.com/textlint/textlint/issues/705)) ([1baa72a](https://github.com/textlint/textlint/commit/1baa72a))
+* use [@monorepo-utils](https://github.com/monorepo-utils)/workspaces-to-typescript-project-references ([#699](https://github.com/textlint/textlint/issues/699)) ([eff1943](https://github.com/textlint/textlint/commit/eff1943))
+
+
+### Features
+
+* **source-code-fixer:** add `[@textlint](https://github.com/textlint)/source-code-fixer` ([#736](https://github.com/textlint/textlint/issues/736)) ([bf7235a](https://github.com/textlint/textlint/commit/bf7235a))
+
+
+
+
+
+
+# [3.3.0](https://github.com/textlint/textlint/compare/@textlint/fixer-formatter@3.2.5...@textlint/fixer-formatter@3.3.0) (2021-01-22)
+
+
+### Bug Fixes
+
+* **deps:** update dependency debug to ^4.2.0 ([6db0ba9](https://github.com/textlint/textlint/commit/6db0ba9))
+* **deps:** update dependency debug to ^4.3.0 ([9dea96a](https://github.com/textlint/textlint/commit/9dea96a))
+
+
+### Chores
+
+* **deps:** update dependency [@types](https://github.com/types)/mocha to v8.0.4 ([fd60f20](https://github.com/textlint/textlint/commit/fd60f20))
+* **deps:** update dependency [@types](https://github.com/types)/mocha to v8.2.0 ([5ced72d](https://github.com/textlint/textlint/commit/5ced72d))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.11.2 ([6ac372a](https://github.com/textlint/textlint/commit/6ac372a))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.11.5 ([b0e73f5](https://github.com/textlint/textlint/commit/b0e73f5))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.11.8 ([33679af](https://github.com/textlint/textlint/commit/33679af))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.10 ([96ba315](https://github.com/textlint/textlint/commit/96ba315))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.12 ([f62f2e3](https://github.com/textlint/textlint/commit/f62f2e3))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.13 ([608afd4](https://github.com/textlint/textlint/commit/608afd4))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.14 ([8417f8a](https://github.com/textlint/textlint/commit/8417f8a))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.16 ([7209803](https://github.com/textlint/textlint/commit/7209803))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.17 ([9ec5481](https://github.com/textlint/textlint/commit/9ec5481))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.19 ([bd050c9](https://github.com/textlint/textlint/commit/bd050c9))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.21 ([464d58a](https://github.com/textlint/textlint/commit/464d58a))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.22 ([5e5d214](https://github.com/textlint/textlint/commit/5e5d214))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.5 ([1ed7006](https://github.com/textlint/textlint/commit/1ed7006))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.6 ([507a41b](https://github.com/textlint/textlint/commit/507a41b))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.7 ([64f97eb](https://github.com/textlint/textlint/commit/64f97eb))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.8 ([8de7d16](https://github.com/textlint/textlint/commit/8de7d16))
+* **deps:** update minor updates ([7ef0be6](https://github.com/textlint/textlint/commit/7ef0be6))
+* **deps:** update minor updates ([2f3dcb6](https://github.com/textlint/textlint/commit/2f3dcb6))
+* **deps:** update minor updates ([7a53517](https://github.com/textlint/textlint/commit/7a53517))
+* **deps:** update minor updates ([#712](https://github.com/textlint/textlint/issues/712)) ([8c42a19](https://github.com/textlint/textlint/commit/8c42a19))
+* **deps:** update patch updates ([24fe2a9](https://github.com/textlint/textlint/commit/24fe2a9))
+* **deps:** update patch updates ([3d9660b](https://github.com/textlint/textlint/commit/3d9660b))
+* **deps:** update patch updates ([fe2ad4f](https://github.com/textlint/textlint/commit/fe2ad4f))
+* **deps:** update patch updates ([e438ff2](https://github.com/textlint/textlint/commit/e438ff2))
+* **deps:** update patch updates ([9df50df](https://github.com/textlint/textlint/commit/9df50df))
+* **deps:** update patch updates ([4f4c206](https://github.com/textlint/textlint/commit/4f4c206))
+* **deps:** update patch updates ([1a0e41f](https://github.com/textlint/textlint/commit/1a0e41f))
+* **deps:** update patch updates ([9157dda](https://github.com/textlint/textlint/commit/9157dda))
+* **deps:** update TypeScript deps ([#705](https://github.com/textlint/textlint/issues/705)) ([1baa72a](https://github.com/textlint/textlint/commit/1baa72a))
+* use [@monorepo-utils](https://github.com/monorepo-utils)/workspaces-to-typescript-project-references ([#699](https://github.com/textlint/textlint/issues/699)) ([eff1943](https://github.com/textlint/textlint/commit/eff1943))
+
+
+### Features
+
+* **source-code-fixer:** add `[@textlint](https://github.com/textlint)/source-code-fixer` ([#736](https://github.com/textlint/textlint/issues/736)) ([bf7235a](https://github.com/textlint/textlint/commit/bf7235a))
+
+
+
+
+
+
+## [3.2.6](https://github.com/textlint/textlint/compare/@textlint/fixer-formatter@3.2.5...@textlint/fixer-formatter@3.2.6) (2020-12-22)
+
+
+### Bug Fixes
+
+* **deps:** update dependency debug to ^4.2.0 ([6db0ba9](https://github.com/textlint/textlint/commit/6db0ba9))
+* **deps:** update dependency debug to ^4.3.0 ([9dea96a](https://github.com/textlint/textlint/commit/9dea96a))
+
+
+### Chores
+
+* **deps:** update dependency [@types](https://github.com/types)/mocha to v8.0.4 ([fd60f20](https://github.com/textlint/textlint/commit/fd60f20))
+* **deps:** update dependency [@types](https://github.com/types)/mocha to v8.2.0 ([5ced72d](https://github.com/textlint/textlint/commit/5ced72d))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.11.2 ([6ac372a](https://github.com/textlint/textlint/commit/6ac372a))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.11.5 ([b0e73f5](https://github.com/textlint/textlint/commit/b0e73f5))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.11.8 ([33679af](https://github.com/textlint/textlint/commit/33679af))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.10 ([96ba315](https://github.com/textlint/textlint/commit/96ba315))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.12 ([f62f2e3](https://github.com/textlint/textlint/commit/f62f2e3))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.13 ([608afd4](https://github.com/textlint/textlint/commit/608afd4))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.14 ([8417f8a](https://github.com/textlint/textlint/commit/8417f8a))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.5 ([1ed7006](https://github.com/textlint/textlint/commit/1ed7006))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.6 ([507a41b](https://github.com/textlint/textlint/commit/507a41b))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.7 ([64f97eb](https://github.com/textlint/textlint/commit/64f97eb))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.8 ([8de7d16](https://github.com/textlint/textlint/commit/8de7d16))
+* **deps:** update minor updates ([7ef0be6](https://github.com/textlint/textlint/commit/7ef0be6))
+* **deps:** update minor updates ([2f3dcb6](https://github.com/textlint/textlint/commit/2f3dcb6))
+* **deps:** update minor updates ([7a53517](https://github.com/textlint/textlint/commit/7a53517))
+* **deps:** update minor updates ([#712](https://github.com/textlint/textlint/issues/712)) ([8c42a19](https://github.com/textlint/textlint/commit/8c42a19))
+* **deps:** update patch updates ([3d9660b](https://github.com/textlint/textlint/commit/3d9660b))
+* **deps:** update patch updates ([fe2ad4f](https://github.com/textlint/textlint/commit/fe2ad4f))
+* **deps:** update patch updates ([e438ff2](https://github.com/textlint/textlint/commit/e438ff2))
+* **deps:** update patch updates ([9df50df](https://github.com/textlint/textlint/commit/9df50df))
+* **deps:** update patch updates ([4f4c206](https://github.com/textlint/textlint/commit/4f4c206))
+* **deps:** update patch updates ([1a0e41f](https://github.com/textlint/textlint/commit/1a0e41f))
+* **deps:** update patch updates ([9157dda](https://github.com/textlint/textlint/commit/9157dda))
+* **deps:** update TypeScript deps ([#705](https://github.com/textlint/textlint/issues/705)) ([1baa72a](https://github.com/textlint/textlint/commit/1baa72a))
+* use [@monorepo-utils](https://github.com/monorepo-utils)/workspaces-to-typescript-project-references ([#699](https://github.com/textlint/textlint/issues/699)) ([eff1943](https://github.com/textlint/textlint/commit/eff1943))
+
+
+
+
+
+
+## [3.2.5](https://github.com/textlint/textlint/compare/@textlint/fixer-formatter@3.2.4...@textlint/fixer-formatter@3.2.5) (2020-07-24)
+
+
+### Bug Fixes
+
+* improve "module" supports ([5ba5182](https://github.com/textlint/textlint/commit/5ba5182))
+
+
+
+
+
+
+## [3.2.4](https://github.com/textlint/textlint/compare/@textlint/fixer-formatter@3.2.3...@textlint/fixer-formatter@3.2.4) (2020-07-24)
+
+
+### Bug Fixes
+
+* "clean" command should remove tsconfig.module.tsbuildinfo ([76ac72a](https://github.com/textlint/textlint/commit/76ac72a))
+
+
+
+
+
+
+## [3.2.3](https://github.com/textlint/textlint/compare/@textlint/fixer-formatter@3.2.2...@textlint/fixer-formatter@3.2.3) (2020-07-24)
+
+
+### Bug Fixes
+
+* **@textlint/kernel:** fix export only type definition ([1234930](https://github.com/textlint/textlint/commit/1234930))
+
+
+
+
+
+
+## [3.2.2](https://github.com/textlint/textlint/compare/@textlint/fixer-formatter@3.2.1...@textlint/fixer-formatter@3.2.2) (2020-07-24)
+
+**Note:** Version bump only for package @textlint/fixer-formatter
+
+
+
+
+
+
+## [3.2.1](https://github.com/textlint/textlint/compare/@textlint/fixer-formatter@3.2.0...@textlint/fixer-formatter@3.2.1) (2020-07-24)
+
+
+### Bug Fixes
+
+* include module ([2de05f7](https://github.com/textlint/textlint/commit/2de05f7))
+
+
+
+
+
+
+# [3.2.0](https://github.com/textlint/textlint/compare/@textlint/fixer-formatter@3.1.13...@textlint/fixer-formatter@3.2.0) (2020-07-24)
+
+
+### Chores
+
+* **deps:** update devDepencies ([#667](https://github.com/textlint/textlint/issues/667)) ([0503af6](https://github.com/textlint/textlint/commit/0503af6))
+
+
+### Code Refactoring
+
+* **typescript:** Use TypeScript Project References ([#668](https://github.com/textlint/textlint/issues/668)) ([bbffd43](https://github.com/textlint/textlint/commit/bbffd43))
+
+
+### Tests
+
+* migrate mocha.opts to .mocharc.json ([#682](https://github.com/textlint/textlint/issues/682)) ([332ae5e](https://github.com/textlint/textlint/commit/332ae5e))
+
+
+
+
+
+
+## [3.1.13](https://github.com/textlint/textlint/compare/@textlint/fixer-formatter@3.1.12...@textlint/fixer-formatter@3.1.13) (2020-02-07)
+
+**Note:** Version bump only for package @textlint/fixer-formatter
+
+
+
+
+
+
+## [3.1.12](https://github.com/textlint/textlint/compare/@textlint/fixer-formatter@3.1.11...@textlint/fixer-formatter@3.1.12) (2020-01-08)
+
+
+### Tests
+
+* **fixer-formatter:** use strip-ansi for --no-color ([ddc53b2](https://github.com/textlint/textlint/commit/ddc53b2))
+
+
+
+
+
+
+## [3.1.11](https://github.com/textlint/textlint/compare/@textlint/fixer-formatter@3.1.9...@textlint/fixer-formatter@3.1.11) (2020-01-07)
+
+**Note:** Version bump only for package @textlint/fixer-formatter
+
+
+
+
+
+
+## [3.1.10](https://github.com/textlint/textlint/compare/@textlint/fixer-formatter@3.1.9...@textlint/fixer-formatter@3.1.10) (2019-11-03)
+
+**Note:** Version bump only for package @textlint/fixer-formatter
+
+
+
+
+
+
+## [3.1.9](https://github.com/textlint/textlint/compare/@textlint/fixer-formatter@3.1.8...@textlint/fixer-formatter@3.1.9) (2019-10-14)
+
+**Note:** Version bump only for package @textlint/fixer-formatter
+
+
+
+
+
+
+## [3.1.8](https://github.com/textlint/textlint/compare/@textlint/fixer-formatter@3.1.5...@textlint/fixer-formatter@3.1.8) (2019-07-20)
+
+
+### Chores
+
+* **deps:** update diff library ([#608](https://github.com/textlint/textlint/issues/608)) ([893d57c](https://github.com/textlint/textlint/commit/893d57c))
+
+
+### Code Refactoring
+
+* **utils:** move implementation from types to utils ([#611](https://github.com/textlint/textlint/issues/611)) ([cd9adbe](https://github.com/textlint/textlint/commit/cd9adbe))
+* use [@textlint](https://github.com/textlint)/module-interop instead of interop-require ([10d34a6](https://github.com/textlint/textlint/commit/10d34a6))
+
+
+
+
+
+
+## [3.1.7](https://github.com/textlint/textlint/compare/@textlint/fixer-formatter@3.1.5...@textlint/fixer-formatter@3.1.7) (2019-07-13)
+
+
+### Chores
+
+* **deps:** update diff library ([#608](https://github.com/textlint/textlint/issues/608)) ([893d57c](https://github.com/textlint/textlint/commit/893d57c))
+
+
+### Code Refactoring
+
+* **utils:** move implementation from types to utils ([#611](https://github.com/textlint/textlint/issues/611)) ([cd9adbe](https://github.com/textlint/textlint/commit/cd9adbe))
+
+
+
+
+
+
+## [3.1.6](https://github.com/textlint/textlint/compare/@textlint/fixer-formatter@3.1.5...@textlint/fixer-formatter@3.1.6) (2019-07-04)
+
+
+### Chores
+
+* **deps:** update diff library ([#608](https://github.com/textlint/textlint/issues/608)) ([893d57c](https://github.com/textlint/textlint/commit/893d57c))
+
+
+
+
+
+
+## [3.1.5](https://github.com/textlint/textlint/compare/@textlint/fixer-formatter@3.1.4...@textlint/fixer-formatter@3.1.5) (2019-04-30)
+
+
+### Chores
+
+* **deps:** update deps && devDeps ([a19463b](https://github.com/textlint/textlint/commit/a19463b))
+
+
+
+
+
+
+## [3.1.4](https://github.com/textlint/textlint/compare/@textlint/fixer-formatter@3.1.3...@textlint/fixer-formatter@3.1.4) (2019-04-30)
+
+**Note:** Version bump only for package @textlint/fixer-formatter
+
+
+
+
+
+
+## [3.1.3](https://github.com/textlint/textlint/compare/@textlint/fixer-formatter@3.1.2...@textlint/fixer-formatter@3.1.3) (2019-02-10)
+
+
+### Bug Fixes
+
+* **textlint:** add reasonable debug log ([3931810](https://github.com/textlint/textlint/commit/3931810))
+
+
+
+
+
+
+## [3.1.2](https://github.com/textlint/textlint/compare/@textlint/fixer-formatter@3.1.1...@textlint/fixer-formatter@3.1.2) (2019-01-03)
+
+**Note:** Version bump only for package @textlint/fixer-formatter
+
+
+
+
+
+
+## [3.1.1](https://github.com/textlint/textlint/compare/@textlint/fixer-formatter@3.1.0...@textlint/fixer-formatter@3.1.1) (2019-01-03)
+
+**Note:** Version bump only for package @textlint/fixer-formatter
+
+
+
+
+
+
+# [3.1.0](https://github.com/textlint/textlint/compare/@textlint/fixer-formatter@3.0.9...@textlint/fixer-formatter@3.1.0) (2019-01-01)
+
+
+### Chores
+
+* **deps:** update TypeScript deps ([3ea7fb0](https://github.com/textlint/textlint/commit/3ea7fb0))
+
+
+### Code Refactoring
+
+* **fixer-formatter:** use [@textlint](https://github.com/textlint)/types instead of [@textlint](https://github.com/textlint)/kernel ([ef96a80](https://github.com/textlint/textlint/commit/ef96a80))
+
+
+### Styles
+
+* **eslint:** apply eslint to all files ([6a9573f](https://github.com/textlint/textlint/commit/6a9573f))
+* **prettier:** format style by prettier ([19a2901](https://github.com/textlint/textlint/commit/19a2901))
+
+
+
+
+
+## [3.0.9](https://github.com/textlint/textlint/compare/@textlint/fixer-formatter@3.0.8...@textlint/fixer-formatter@3.0.9) (2018-12-24)
+
+
+
+
+**Note:** Version bump only for package @textlint/fixer-formatter
+
+
+## [3.0.8](https://github.com/textlint/textlint/compare/@textlint/fixer-formatter@3.0.7...@textlint/fixer-formatter@3.0.8) (2018-07-22)
+
+
+### Chores
+
+* **deps:** update mocha ([5df8af4](https://github.com/textlint/textlint/commit/5df8af4))
+
+
+### Code Refactoring
+
+* **kernel:** separate linter and fixer descriptor ([b5bc8bd](https://github.com/textlint/textlint/commit/b5bc8bd))
+
+
+
+
+
+## [3.0.7](https://github.com/textlint/textlint/compare/@textlint/fixer-formatter@3.0.6...@textlint/fixer-formatter@3.0.7) (2018-04-02)
+
+
+
+
+**Note:** Version bump only for package @textlint/fixer-formatter
+
+
+## [3.0.6](https://github.com/textlint/textlint/compare/@textlint/fixer-formatter@3.0.5...@textlint/fixer-formatter@3.0.6) (2018-04-02)
+
+
+
+
+**Note:** Version bump only for package @textlint/fixer-formatter
+
+
+## [3.0.5](https://github.com/textlint/textlint/compare/@textlint/fixer-formatter@3.0.4...@textlint/fixer-formatter@3.0.5) (2018-03-25)
+
+
+### Chores
+
+* **test:** use `ts-node-test-register` for TypeScript testing ([be746d8](https://github.com/textlint/textlint/commit/be746d8)), closes [#451](https://github.com/textlint/textlint/issues/451)
+
+
+
+
+
+## [3.0.4](https://github.com/textlint/textlint/compare/@textlint/fixer-formatter@3.0.3...@textlint/fixer-formatter@3.0.4) (2018-01-27)
+
+
+
+
+**Note:** Version bump only for package @textlint/fixer-formatter
+
+
+## 3.0.3 (2018-01-18)
+
+
+### Bug Fixes
+
+* **fixer-formatter:** add `publishConfig` ([3e89e3c](https://github.com/textlint/textlint/commit/3e89e3c))
+
+
+
+
+
+## [3.0.2](https://github.com/textlint/textlint/compare/textlint-fixer-formatter@3.0.1...textlint-fixer-formatter@3.0.2) (2018-01-12)
+
+
+
+
+**Note:** Version bump only for package textlint-fixer-formatter
+
+
+# [3.0.0](https://github.com/textlint/textlint/compare/textlint-fixer-formatter@2.1.0...textlint-fixer-formatter@3.0.0) (2017-12-31)
+
+
+### Chores
+
+* **fixer-formatter:** rename `getFormatterList` to `getFixerFormatterList` ([75420c3](https://github.com/textlint/textlint/commit/75420c3))
+
+
+### BREAKING CHANGES
+
+* **fixer-formatter:** `getFormatterList` method is renamed.
+
+
+
+
+
+# [2.1.0](https://github.com/textlint/textlint/compare/textlint-fixer-formatter@2.0.1...textlint-fixer-formatter@2.1.0) (2017-12-25)
+
+
+### Features
+
+* **textlint-fixer-formatter:** add getFormatterList function ([8de3fef](https://github.com/textlint/textlint/commit/8de3fef))
+
+
+
+
+
+## [2.0.1](https://github.com/textlint/textlint/compare/textlint-fixer-formatter@2.0.0...textlint-fixer-formatter@2.0.1) (2017-12-19)
+
+
+
+
+**Note:** Version bump only for package textlint-fixer-formatter
+
+
+# [2.0.0](https://github.com/textlint/textlint/compare/textlint-fixer-formatter@2.0.0-next.2...textlint-fixer-formatter@2.0.0) (2017-12-18)
+
+
+
+
+**Note:** Version bump only for package textlint-fixer-formatter
+
+
+# [2.0.0-next.2](https://github.com/textlint/textlint/compare/textlint-fixer-formatter@2.0.0-next.1...textlint-fixer-formatter@2.0.0-next.2) (2017-12-18)
+
+
+
+
+**Note:** Version bump only for package textlint-fixer-formatter
+
+
+# [2.0.0-next.1](https://github.com/textlint/textlint/compare/textlint-fixer-formatter@2.0.0-next.0...textlint-fixer-formatter@2.0.0-next.1) (2017-12-17)
+
+
+
+
+**Note:** Version bump only for package textlint-fixer-formatter
+
+
+# 2.0.0-next.0 (2017-12-15)
+
+
+### Bug Fixes
+
+* **textlint-fixer-formatter:** change files path ([68c6d0f](https://github.com/textlint/textlint/commit/68c6d0f))
+* **textlint-fixer-formatter:** Fill missing dependencies ([9ded710](https://github.com/textlint/textlint/commit/9ded710))
+* **textlint-fixer-formatter:** use paths ([734806f](https://github.com/textlint/textlint/commit/734806f))
diff --git a/node_modules/@textlint/fixer-formatter/LICENSE b/node_modules/@textlint/fixer-formatter/LICENSE
new file mode 100644
index 000000000..fca71ec20
--- /dev/null
+++ b/node_modules/@textlint/fixer-formatter/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2014-present azu
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/node_modules/@textlint/fixer-formatter/README.md b/node_modules/@textlint/fixer-formatter/README.md
new file mode 100644
index 000000000..cea4d5812
--- /dev/null
+++ b/node_modules/@textlint/fixer-formatter/README.md
@@ -0,0 +1,19 @@
+# @textlint/fixer-formatter
+
+textlint output formatter for fixer
+
+## Installation
+
+ npm install @textlint/fixer-formatter
+
+## Usage
+
+- [ ] TBD
+
+## Tests
+
+ npm test
+
+## License
+
+MIT
diff --git a/node_modules/@textlint/fixer-formatter/module/formatters/compats.d.ts b/node_modules/@textlint/fixer-formatter/module/formatters/compats.d.ts
new file mode 100644
index 000000000..014933f7f
--- /dev/null
+++ b/node_modules/@textlint/fixer-formatter/module/formatters/compats.d.ts
@@ -0,0 +1,2 @@
+import type { TextlintFixResult } from "@textlint/types";
+export declare function format(results: TextlintFixResult[]): string;
diff --git a/node_modules/@textlint/fixer-formatter/module/formatters/compats.js b/node_modules/@textlint/fixer-formatter/module/formatters/compats.js
new file mode 100644
index 000000000..cb78d5328
--- /dev/null
+++ b/node_modules/@textlint/fixer-formatter/module/formatters/compats.js
@@ -0,0 +1,33 @@
+// LICENSE : MIT
+"use strict";
+function getMessageType(message) {
+ if (message.fatal || message.severity === 2) {
+ return "Error";
+ }
+ else {
+ return "Warning";
+ }
+}
+export function format(results) {
+ var output = "";
+ var total = 0;
+ results.forEach(function (result) {
+ var messages = result.applyingMessages;
+ total += messages.length;
+ messages.forEach(function (message) {
+ output += "Fixed✔ ";
+ output += result.filePath + ": ";
+ output += "line " + (message.line || 0);
+ output += ", col " + (message.column || 0);
+ output += ", " + getMessageType(message);
+ output += " - " + message.message;
+ output += message.ruleId ? " (" + message.ruleId + ")" : "";
+ output += "\n";
+ });
+ });
+ if (total > 0) {
+ output += "\n\nFixed " + total + " problem" + (total !== 1 ? "s" : "");
+ }
+ return output;
+}
+//# sourceMappingURL=compats.js.map
\ No newline at end of file
diff --git a/node_modules/@textlint/fixer-formatter/module/formatters/compats.js.map b/node_modules/@textlint/fixer-formatter/module/formatters/compats.js.map
new file mode 100644
index 000000000..67698240a
--- /dev/null
+++ b/node_modules/@textlint/fixer-formatter/module/formatters/compats.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"compats.js","sourceRoot":"","sources":["../../src/formatters/compats.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAChB,YAAY,CAAC;AAEb,SAAS,cAAc,CAAC,OAAY;IAChC,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,QAAQ,KAAK,CAAC,EAAE;QACzC,OAAO,OAAO,CAAC;KAClB;SAAM;QACH,OAAO,SAAS,CAAC;KACpB;AACL,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,OAA4B;IAC/C,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,OAAO,CAAC,OAAO,CAAC,UAAC,MAAM;QACnB,IAAM,QAAQ,GAAG,MAAM,CAAC,gBAAgB,CAAC;QACzC,KAAK,IAAI,QAAQ,CAAC,MAAM,CAAC;QAEzB,QAAQ,CAAC,OAAO,CAAC,UAAC,OAAO;YACrB,MAAM,IAAI,SAAS,CAAC;YACpB,MAAM,IAAO,MAAM,CAAC,QAAQ,OAAI,CAAC;YACjC,MAAM,IAAI,WAAQ,OAAO,CAAC,IAAI,IAAI,CAAC,CAAE,CAAC;YACtC,MAAM,IAAI,YAAS,OAAO,CAAC,MAAM,IAAI,CAAC,CAAE,CAAC;YACzC,MAAM,IAAI,OAAK,cAAc,CAAC,OAAO,CAAG,CAAC;YACzC,MAAM,IAAI,QAAM,OAAO,CAAC,OAAS,CAAC;YAClC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAK,OAAO,CAAC,MAAM,MAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACvD,MAAM,IAAI,IAAI,CAAC;QACnB,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,IAAI,KAAK,GAAG,CAAC,EAAE;QACX,MAAM,IAAI,eAAa,KAAK,iBAAW,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAE,CAAC;KACnE;IAED,OAAO,MAAM,CAAC;AAClB,CAAC"}
\ No newline at end of file
diff --git a/node_modules/@textlint/fixer-formatter/module/formatters/diff.d.ts b/node_modules/@textlint/fixer-formatter/module/formatters/diff.d.ts
new file mode 100644
index 000000000..6aa0506b5
--- /dev/null
+++ b/node_modules/@textlint/fixer-formatter/module/formatters/diff.d.ts
@@ -0,0 +1,2 @@
+import type { TextlintFixResult } from "@textlint/types";
+export default function (results: TextlintFixResult[], options: any): any;
diff --git a/node_modules/@textlint/fixer-formatter/module/formatters/diff.js b/node_modules/@textlint/fixer-formatter/module/formatters/diff.js
new file mode 100644
index 000000000..af3b1cbe5
--- /dev/null
+++ b/node_modules/@textlint/fixer-formatter/module/formatters/diff.js
@@ -0,0 +1,128 @@
+"use strict";
+var fs = require("fs");
+var isFile = require("is-file");
+var jsdiff = require("diff");
+var chalk = require("chalk");
+var stripAnsi = require("strip-ansi");
+/**
+ * Given a word and a count, append an s if count is not one.
+ * @param {string} word A word in its singular form.
+ * @param {number} count A number controlling whether word should be pluralized.
+ * @returns {string} The original word with an s on the end if count is not one.
+ */
+function pluralize(word, count) {
+ return count === 1 ? word : word + "s";
+}
+function isModified(part) {
+ if (!part) {
+ return false;
+ }
+ return typeof part === "object" && (part.removed || part.added);
+}
+function addMarkEachLine(mark, text) {
+ if (text.length === 0) {
+ return "\n";
+ }
+ var lines = text.split("\n");
+ var markedLines = lines
+ .filter(function (line) { return line.length > 0; })
+ .map(function (line) {
+ return mark + line;
+ });
+ return markedLines.join("\n") + "\n";
+}
+export default function (results, options) {
+ // default: true
+ var useColor = options.color !== undefined ? options.color : true;
+ var output = "\n";
+ var totalFixed = 0;
+ var errors = 0;
+ var summaryColor = "yellow";
+ var greenColor = "green";
+ results.forEach(function (result) {
+ var filePath = result.filePath;
+ var messages = result.applyingMessages;
+ // still error count
+ var remainingMessages = result.remainingMessages;
+ errors += remainingMessages.length;
+ totalFixed += messages.length;
+ if (messages.length === 0) {
+ return;
+ }
+ if (!isFile(filePath)) {
+ return;
+ }
+ output += chalk.underline(result.filePath) + "\n";
+ var originalContent = fs.readFileSync(filePath, "utf-8");
+ var diff = jsdiff.diffLines(originalContent, result.output);
+ diff.forEach(function (part, index) {
+ var prevLine = diff[index - 1];
+ var nextLine = diff[index + 1];
+ if (!isModified(part) && part.count > 1) {
+ var greyColor = "grey";
+ /*
+
+ first line
+ ....
+ */
+ if (isModified(prevLine)) {
+ var lines = part.value.split("\n");
+ output += chalk[greyColor](lines[0]) + "\n";
+ }
+ output += chalk[greyColor]("...");
+ if (isModified(nextLine)) {
+ var lines = part.value.split("\n");
+ output += chalk[greyColor](lines[lines.length - 1]) + "\n";
+ }
+ /*
+ ...
+ last line
+
+ */
+ return;
+ }
+ // green for additions, red for deletions
+ // grey for common parts
+ var lineColor;
+ var diffMark = "";
+ if (part.added) {
+ lineColor = "green";
+ diffMark = "+ ";
+ }
+ else if (part.removed) {
+ lineColor = "red";
+ diffMark = "- ";
+ }
+ else {
+ lineColor = "grey";
+ diffMark = "";
+ }
+ output += chalk[lineColor](addMarkEachLine(diffMark, part.value));
+ });
+ output += "\n\n";
+ });
+ if (totalFixed > 0) {
+ output += chalk[greenColor].bold([
+ // http://www.fileformat.info/info/unicode/char/2714/index.htm
+ "✔ Fixed ",
+ totalFixed,
+ pluralize(" problem", totalFixed),
+ "\n"
+ ].join(""));
+ }
+ if (errors > 0) {
+ output += chalk[summaryColor].bold([
+ // http://www.fileformat.info/info/unicode/char/2716/index.htm
+ "✖ Remaining ",
+ errors,
+ pluralize(" problem", errors),
+ "\n"
+ ].join(""));
+ }
+ var finalOutput = totalFixed > 0 ? output : "";
+ if (!useColor) {
+ return stripAnsi(finalOutput);
+ }
+ return finalOutput;
+}
+//# sourceMappingURL=diff.js.map
\ No newline at end of file
diff --git a/node_modules/@textlint/fixer-formatter/module/formatters/diff.js.map b/node_modules/@textlint/fixer-formatter/module/formatters/diff.js.map
new file mode 100644
index 000000000..90289cbf6
--- /dev/null
+++ b/node_modules/@textlint/fixer-formatter/module/formatters/diff.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/formatters/diff.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/@textlint/fixer-formatter/module/formatters/json.d.ts b/node_modules/@textlint/fixer-formatter/module/formatters/json.d.ts
new file mode 100644
index 000000000..f3622500e
--- /dev/null
+++ b/node_modules/@textlint/fixer-formatter/module/formatters/json.d.ts
@@ -0,0 +1,2 @@
+import type { TextlintFixResult } from "@textlint/types";
+export default function (results: TextlintFixResult[]): string;
diff --git a/node_modules/@textlint/fixer-formatter/module/formatters/json.js b/node_modules/@textlint/fixer-formatter/module/formatters/json.js
new file mode 100644
index 000000000..10606ecf9
--- /dev/null
+++ b/node_modules/@textlint/fixer-formatter/module/formatters/json.js
@@ -0,0 +1,6 @@
+// LICENSE : MIT
+"use strict";
+export default function (results) {
+ return JSON.stringify(results);
+}
+//# sourceMappingURL=json.js.map
\ No newline at end of file
diff --git a/node_modules/@textlint/fixer-formatter/module/formatters/json.js.map b/node_modules/@textlint/fixer-formatter/module/formatters/json.js.map
new file mode 100644
index 000000000..62a93328e
--- /dev/null
+++ b/node_modules/@textlint/fixer-formatter/module/formatters/json.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"json.js","sourceRoot":"","sources":["../../src/formatters/json.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAChB,YAAY,CAAC;AAEb,MAAM,CAAC,OAAO,WAAW,OAA4B;IACjD,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AACnC,CAAC"}
\ No newline at end of file
diff --git a/node_modules/@textlint/fixer-formatter/module/formatters/stylish.d.ts b/node_modules/@textlint/fixer-formatter/module/formatters/stylish.d.ts
new file mode 100644
index 000000000..6aa0506b5
--- /dev/null
+++ b/node_modules/@textlint/fixer-formatter/module/formatters/stylish.d.ts
@@ -0,0 +1,2 @@
+import type { TextlintFixResult } from "@textlint/types";
+export default function (results: TextlintFixResult[], options: any): any;
diff --git a/node_modules/@textlint/fixer-formatter/module/formatters/stylish.js b/node_modules/@textlint/fixer-formatter/module/formatters/stylish.js
new file mode 100644
index 000000000..8ec622ff4
--- /dev/null
+++ b/node_modules/@textlint/fixer-formatter/module/formatters/stylish.js
@@ -0,0 +1,88 @@
+"use strict";
+var chalk = require("chalk");
+var table = require("text-table");
+var widthOfString = require("string-width");
+var stripAnsi = require("strip-ansi");
+/**
+ * Given a word and a count, append an s if count is not one.
+ * @param {string} word A word in its singular form.
+ * @param {number} count A number controlling whether word should be pluralized.
+ * @returns {string} The original word with an s on the end if count is not one.
+ */
+function pluralize(word, count) {
+ return count === 1 ? word : word + "s";
+}
+export default function (results, options) {
+ // default: true
+ var useColor = options.color !== undefined ? options.color : true;
+ var output = "\n";
+ var totalFixed = 0;
+ var errors = 0;
+ var summaryColor = "yellow";
+ var greenColor = "green";
+ results.forEach(function (result) {
+ if (!result.applyingMessages || !result.remainingMessages) {
+ return;
+ }
+ var messages = result.applyingMessages;
+ // still error count
+ var remainingMessages = result.remainingMessages;
+ errors += remainingMessages.length;
+ if (messages.length === 0) {
+ return;
+ }
+ output += chalk.underline(result.filePath) + "\n";
+ output += table(messages.map(function (message) {
+ // fixable
+ totalFixed++;
+ var messageType = chalk[greenColor].bold("\u2714 ");
+ return [
+ "",
+ message.line || 0,
+ message.column || 0,
+ messageType,
+ message.message.replace(/\.$/, ""),
+ chalk.gray(message.ruleId || "")
+ ];
+ }), {
+ align: ["", "r", "l"],
+ stringLength: function (str) {
+ var lines = chalk.stripColor(str).split("\n");
+ return Math.max.apply(null, lines.map(function (line) {
+ return widthOfString(line);
+ }));
+ }
+ })
+ .split("\n")
+ .map(function (el) {
+ return el.replace(/(\d+)\s+(\d+)/, function (_m, p1, p2) {
+ return chalk.gray(p1 + ":" + p2);
+ });
+ })
+ .join("\n") + "\n\n";
+ });
+ if (totalFixed > 0) {
+ output += chalk[greenColor].bold([
+ // http://www.fileformat.info/info/unicode/char/2714/index.htm
+ "\u2714 Fixed ",
+ totalFixed,
+ pluralize(" problem", totalFixed),
+ "\n"
+ ].join(""));
+ }
+ if (errors > 0) {
+ output += chalk[summaryColor].bold([
+ // http://www.fileformat.info/info/unicode/char/2716/index.htm
+ "\u2716 Remaining ",
+ errors,
+ pluralize(" problem", errors),
+ "\n"
+ ].join(""));
+ }
+ var finalOutput = totalFixed > 0 ? output : "";
+ if (!useColor) {
+ return stripAnsi(finalOutput);
+ }
+ return finalOutput;
+}
+//# sourceMappingURL=stylish.js.map
\ No newline at end of file
diff --git a/node_modules/@textlint/fixer-formatter/module/formatters/stylish.js.map b/node_modules/@textlint/fixer-formatter/module/formatters/stylish.js.map
new file mode 100644
index 000000000..0d1cf5bd2
--- /dev/null
+++ b/node_modules/@textlint/fixer-formatter/module/formatters/stylish.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"stylish.js","sourceRoot":"","sources":["../../src/formatters/stylish.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/@textlint/fixer-formatter/module/index.d.ts b/node_modules/@textlint/fixer-formatter/module/index.d.ts
new file mode 100644
index 000000000..84a9b11ba
--- /dev/null
+++ b/node_modules/@textlint/fixer-formatter/module/index.d.ts
@@ -0,0 +1,10 @@
+import type { TextlintFixResult } from "@textlint/types";
+export declare type FormatterConfig = {
+ color?: boolean;
+ formatterName: string;
+};
+export declare function createFormatter(formatterConfig: FormatterConfig): (results: TextlintFixResult[]) => string;
+export interface FixerFormatterDetail {
+ name: string;
+}
+export declare function getFixerFormatterList(): FixerFormatterDetail[];
diff --git a/node_modules/@textlint/fixer-formatter/module/index.js b/node_modules/@textlint/fixer-formatter/module/index.js
new file mode 100644
index 000000000..84b9aa706
--- /dev/null
+++ b/node_modules/@textlint/fixer-formatter/module/index.js
@@ -0,0 +1,55 @@
+// LICENSE : MIT
+"use strict";
+import { moduleInterop } from "@textlint/module-interop";
+var fs = require("fs");
+var path = require("path");
+var tryResolve = require("try-resolve");
+var isFile = require("is-file");
+var debug = require("debug")("textlint:textfix-formatter");
+export function createFormatter(formatterConfig) {
+ var formatterName = formatterConfig.formatterName;
+ debug("formatterName: " + formatterName);
+ var formatter;
+ var formatterPath;
+ if (fs.existsSync(formatterName)) {
+ formatterPath = formatterName;
+ }
+ else if (fs.existsSync(path.resolve(process.cwd(), formatterName))) {
+ formatterPath = path.resolve(process.cwd(), formatterName);
+ }
+ else {
+ if (isFile(path.join(__dirname, "formatters/", formatterName) + ".js")) {
+ formatterPath = path.join(__dirname, "formatters/", formatterName) + ".js";
+ }
+ else if (isFile(path.join(__dirname, "formatters/", formatterName) + ".ts")) {
+ formatterPath = path.join(__dirname, "formatters/", formatterName) + ".ts";
+ }
+ else {
+ var pkgPath = tryResolve("textlint-formatter-" + formatterName) || tryResolve(formatterName);
+ if (pkgPath) {
+ formatterPath = pkgPath;
+ }
+ }
+ }
+ try {
+ formatter = moduleInterop(require(formatterPath));
+ }
+ catch (ex) {
+ throw new Error("Could not find formatter " + formatterName + "\nSee https://github.com/textlint/textlint/issues/148\n" + ex);
+ }
+ debug("use formatter: " + formatterPath);
+ return function (results) {
+ return formatter(results, formatterConfig);
+ };
+}
+export function getFixerFormatterList() {
+ return fs
+ .readdirSync(path.join(__dirname, "formatters"))
+ .filter(function (file) {
+ return path.extname(file) === ".js";
+ })
+ .map(function (file) {
+ return { name: path.basename(file, ".js") };
+ });
+}
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/node_modules/@textlint/fixer-formatter/module/index.js.map b/node_modules/@textlint/fixer-formatter/module/index.js.map
new file mode 100644
index 000000000..8d54082bf
--- /dev/null
+++ b/node_modules/@textlint/fixer-formatter/module/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAChB,YAAY,CAAC;AAGb,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD,IAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AACzB,IAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AAC7B,IAAM,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;AAE1C,IAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;AAClC,IAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,4BAA4B,CAAC,CAAC;AAI7D,MAAM,UAAU,eAAe,CAAC,eAAgC;IAC5D,IAAM,aAAa,GAAG,eAAe,CAAC,aAAa,CAAC;IACpD,KAAK,CAAC,oBAAkB,aAAe,CAAC,CAAC;IACzC,IAAI,SAAqF,CAAC;IAC1F,IAAI,aAAa,CAAC;IAClB,IAAI,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE;QAC9B,aAAa,GAAG,aAAa,CAAC;KACjC;SAAM,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,CAAC,CAAC,EAAE;QAClE,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,CAAC,CAAC;KAC9D;SAAM;QACH,IAAI,MAAM,CAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,aAAa,CAAC,QAAK,CAAC,EAAE;YACpE,aAAa,GAAM,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,aAAa,CAAC,QAAK,CAAC;SAC9E;aAAM,IAAI,MAAM,CAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,aAAa,CAAC,QAAK,CAAC,EAAE;YAC3E,aAAa,GAAM,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,aAAa,CAAC,QAAK,CAAC;SAC9E;aAAM;YACH,IAAM,OAAO,GAAG,UAAU,CAAC,wBAAsB,aAAe,CAAC,IAAI,UAAU,CAAC,aAAa,CAAC,CAAC;YAC/F,IAAI,OAAO,EAAE;gBACT,aAAa,GAAG,OAAO,CAAC;aAC3B;SACJ;KACJ;IACD,IAAI;QACA,SAAS,GAAG,aAAa,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;KACrD;IAAC,OAAO,EAAE,EAAE;QACT,MAAM,IAAI,KAAK,CAAC,8BAA4B,aAAa,+DAE/D,EAAI,CAAC,CAAC;KACH;IACD,KAAK,CAAC,oBAAkB,aAAe,CAAC,CAAC;IACzC,OAAO,UAAU,OAA4B;QACzC,OAAO,SAAS,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IAC/C,CAAC,CAAC;AACN,CAAC;AAMD,MAAM,UAAU,qBAAqB;IACjC,OAAO,EAAE;SACJ,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;SAC/C,MAAM,CAAC,UAAC,IAAY;QACjB,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC;IACxC,CAAC,CAAC;SACD,GAAG,CAAC,UAAC,IAAY;QACd,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;IAChD,CAAC,CAAC,CAAC;AACX,CAAC"}
\ No newline at end of file
diff --git a/node_modules/@textlint/fixer-formatter/package.json b/node_modules/@textlint/fixer-formatter/package.json
new file mode 100644
index 000000000..8bd1ee7ae
--- /dev/null
+++ b/node_modules/@textlint/fixer-formatter/package.json
@@ -0,0 +1,64 @@
+{
+ "name": "@textlint/fixer-formatter",
+ "version": "3.3.5",
+ "description": "textlint output formatter for fixer",
+ "keywords": [
+ "AST",
+ "lint",
+ "linting",
+ "markdown",
+ "plugable",
+ "text",
+ "textlint"
+ ],
+ "homepage": "https://github.com/textlint/textlint#readme",
+ "bugs": {
+ "url": "https://github.com/textlint/textlint/issues"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/textlint/textlint.git"
+ },
+ "license": "MIT",
+ "author": "azu",
+ "main": "lib/index.js",
+ "types": "lib/index.d.ts",
+ "files": [
+ "bin/",
+ "lib/",
+ "module/",
+ "src/"
+ ],
+ "scripts": {
+ "build": "tsc -b && tsc -b tsconfig.module.json",
+ "clean": "rimraf lib/ module/ tsconfig.tsbuildinfo tsconfig.module.tsbuildinfo",
+ "prepublish": "npm run build",
+ "test": "mocha \"test/**/*.{js,ts}\""
+ },
+ "dependencies": {
+ "@textlint/module-interop": "^1.2.5",
+ "@textlint/types": "^1.5.5",
+ "chalk": "^1.1.3",
+ "debug": "^4.3.1",
+ "diff": "^4.0.2",
+ "is-file": "^1.0.0",
+ "string-width": "^1.0.2",
+ "strip-ansi": "^6.0.0",
+ "text-table": "^0.2.0",
+ "try-resolve": "^1.0.1"
+ },
+ "devDependencies": {
+ "@types/mocha": "^8.2.2",
+ "@types/node": "^14.14.44",
+ "cross-env": "^7.0.3",
+ "mocha": "^8.4.0",
+ "rimraf": "^3.0.2",
+ "ts-node": "^9.1.1",
+ "ts-node-test-register": "^9.0.1",
+ "typescript": "~4.0.2"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "gitHead": "4cb1e78aa38cd0e942c61f352ffb29bb36f80a7b"
+}
diff --git a/node_modules/@textlint/fixer-formatter/src/formatters/compats.ts b/node_modules/@textlint/fixer-formatter/src/formatters/compats.ts
new file mode 100644
index 000000000..9ac6fbfce
--- /dev/null
+++ b/node_modules/@textlint/fixer-formatter/src/formatters/compats.ts
@@ -0,0 +1,37 @@
+// LICENSE : MIT
+"use strict";
+import type { TextlintFixResult } from "@textlint/types";
+function getMessageType(message: any) {
+ if (message.fatal || message.severity === 2) {
+ return "Error";
+ } else {
+ return "Warning";
+ }
+}
+
+export function format(results: TextlintFixResult[]) {
+ let output = "";
+ let total = 0;
+
+ results.forEach((result) => {
+ const messages = result.applyingMessages;
+ total += messages.length;
+
+ messages.forEach((message) => {
+ output += "Fixed✔ ";
+ output += `${result.filePath}: `;
+ output += `line ${message.line || 0}`;
+ output += `, col ${message.column || 0}`;
+ output += `, ${getMessageType(message)}`;
+ output += ` - ${message.message}`;
+ output += message.ruleId ? ` (${message.ruleId})` : "";
+ output += "\n";
+ });
+ });
+
+ if (total > 0) {
+ output += `\n\nFixed ${total} problem${total !== 1 ? "s" : ""}`;
+ }
+
+ return output;
+}
diff --git a/node_modules/@textlint/fixer-formatter/src/formatters/diff.ts b/node_modules/@textlint/fixer-formatter/src/formatters/diff.ts
new file mode 100644
index 000000000..039285776
--- /dev/null
+++ b/node_modules/@textlint/fixer-formatter/src/formatters/diff.ts
@@ -0,0 +1,139 @@
+"use strict";
+import type { TextlintFixResult } from "@textlint/types";
+const fs = require("fs");
+const isFile = require("is-file");
+const jsdiff = require("diff");
+const chalk = require("chalk");
+const stripAnsi = require("strip-ansi");
+/**
+ * Given a word and a count, append an s if count is not one.
+ * @param {string} word A word in its singular form.
+ * @param {number} count A number controlling whether word should be pluralized.
+ * @returns {string} The original word with an s on the end if count is not one.
+ */
+function pluralize(word: string, count: number): string {
+ return count === 1 ? word : `${word}s`;
+}
+
+function isModified(part: any) {
+ if (!part) {
+ return false;
+ }
+ return typeof part === "object" && (part.removed || part.added);
+}
+
+function addMarkEachLine(mark: string, text: any) {
+ if (text.length === 0) {
+ return "\n";
+ }
+ const lines = text.split("\n");
+ const markedLines = lines
+ .filter((line: string) => line.length > 0)
+ .map((line: string) => {
+ return mark + line;
+ });
+ return `${markedLines.join("\n")}\n`;
+}
+
+export default function (results: TextlintFixResult[], options: any) {
+ // default: true
+ const useColor = options.color !== undefined ? options.color : true;
+ let output = "\n";
+ let totalFixed = 0;
+ let errors = 0;
+ const summaryColor = "yellow";
+ const greenColor = "green";
+
+ results.forEach(function (result) {
+ const filePath = result.filePath;
+ const messages = result.applyingMessages;
+ // still error count
+ const remainingMessages = result.remainingMessages;
+ errors += remainingMessages.length;
+ totalFixed += messages.length;
+ if (messages.length === 0) {
+ return;
+ }
+ if (!isFile(filePath)) {
+ return;
+ }
+ output += `${chalk.underline(result.filePath)}\n`;
+
+ const originalContent = fs.readFileSync(filePath, "utf-8");
+ const diff = jsdiff.diffLines(originalContent, result.output);
+
+ diff.forEach(function (part: any, index: number) {
+ const prevLine = diff[index - 1];
+ const nextLine = diff[index + 1];
+ if (!isModified(part) && part.count > 1) {
+ const greyColor = "grey";
+ /*
+
+ first line
+ ....
+ */
+ if (isModified(prevLine)) {
+ const lines = part.value.split("\n");
+ output += `${chalk[greyColor](lines[0])}\n`;
+ }
+ output += chalk[greyColor]("...");
+ if (isModified(nextLine)) {
+ const lines = part.value.split("\n");
+ output += `${chalk[greyColor](lines[lines.length - 1])}\n`;
+ }
+ /*
+ ...
+ last line
+
+ */
+ return;
+ }
+ // green for additions, red for deletions
+ // grey for common parts
+ let lineColor;
+ let diffMark = "";
+ if (part.added) {
+ lineColor = "green";
+ diffMark = "+ ";
+ } else if (part.removed) {
+ lineColor = "red";
+ diffMark = "- ";
+ } else {
+ lineColor = "grey";
+ diffMark = "";
+ }
+ output += chalk[lineColor](addMarkEachLine(diffMark, part.value));
+ });
+ output += "\n\n";
+ });
+
+ if (totalFixed > 0) {
+ output += chalk[greenColor].bold(
+ [
+ // http://www.fileformat.info/info/unicode/char/2714/index.htm
+ "✔ Fixed ",
+ totalFixed,
+ pluralize(" problem", totalFixed),
+ "\n"
+ ].join("")
+ );
+ }
+
+ if (errors > 0) {
+ output += chalk[summaryColor].bold(
+ [
+ // http://www.fileformat.info/info/unicode/char/2716/index.htm
+ "✖ Remaining ",
+ errors,
+ pluralize(" problem", errors),
+ "\n"
+ ].join("")
+ );
+ }
+
+ const finalOutput = totalFixed > 0 ? output : "";
+ if (!useColor) {
+ return stripAnsi(finalOutput);
+ }
+ return finalOutput;
+}
diff --git a/node_modules/@textlint/fixer-formatter/src/formatters/json.ts b/node_modules/@textlint/fixer-formatter/src/formatters/json.ts
new file mode 100644
index 000000000..246435d60
--- /dev/null
+++ b/node_modules/@textlint/fixer-formatter/src/formatters/json.ts
@@ -0,0 +1,6 @@
+// LICENSE : MIT
+"use strict";
+import type { TextlintFixResult } from "@textlint/types";
+export default function (results: TextlintFixResult[]) {
+ return JSON.stringify(results);
+}
diff --git a/node_modules/@textlint/fixer-formatter/src/formatters/stylish.ts b/node_modules/@textlint/fixer-formatter/src/formatters/stylish.ts
new file mode 100644
index 000000000..9fce6cf59
--- /dev/null
+++ b/node_modules/@textlint/fixer-formatter/src/formatters/stylish.ts
@@ -0,0 +1,107 @@
+"use strict";
+import type { TextlintFixResult } from "@textlint/types";
+
+const chalk = require("chalk");
+const table = require("text-table");
+const widthOfString = require("string-width");
+const stripAnsi = require("strip-ansi");
+
+/**
+ * Given a word and a count, append an s if count is not one.
+ * @param {string} word A word in its singular form.
+ * @param {number} count A number controlling whether word should be pluralized.
+ * @returns {string} The original word with an s on the end if count is not one.
+ */
+function pluralize(word: string, count: number): string {
+ return count === 1 ? word : `${word}s`;
+}
+
+export default function (results: TextlintFixResult[], options: any) {
+ // default: true
+ const useColor = options.color !== undefined ? options.color : true;
+ let output = "\n";
+ let totalFixed = 0;
+ let errors = 0;
+ const summaryColor = "yellow";
+ const greenColor = "green";
+
+ results.forEach(function (result) {
+ if (!result.applyingMessages || !result.remainingMessages) {
+ return;
+ }
+ const messages = result.applyingMessages;
+ // still error count
+ const remainingMessages = result.remainingMessages;
+ errors += remainingMessages.length;
+ if (messages.length === 0) {
+ return;
+ }
+ output += `${chalk.underline(result.filePath)}\n`;
+
+ output += `${table(
+ messages.map(function (message) {
+ // fixable
+ totalFixed++;
+ const messageType = chalk[greenColor].bold("\u2714 ");
+
+ return [
+ "",
+ message.line || 0,
+ message.column || 0,
+ messageType,
+ message.message.replace(/\.$/, ""),
+ chalk.gray(message.ruleId || "")
+ ];
+ }),
+ {
+ align: ["", "r", "l"],
+ stringLength: (str: string) => {
+ const lines = chalk.stripColor(str).split("\n");
+ return Math.max.apply(
+ null,
+ lines.map(function (line: string) {
+ return widthOfString(line);
+ })
+ );
+ }
+ }
+ )
+ .split("\n")
+ .map(function (el: string) {
+ return el.replace(/(\d+)\s+(\d+)/, function (_m, p1, p2) {
+ return chalk.gray(`${p1}:${p2}`);
+ });
+ })
+ .join("\n")}\n\n`;
+ });
+
+ if (totalFixed > 0) {
+ output += chalk[greenColor].bold(
+ [
+ // http://www.fileformat.info/info/unicode/char/2714/index.htm
+ "\u2714 Fixed ",
+ totalFixed,
+ pluralize(" problem", totalFixed),
+ "\n"
+ ].join("")
+ );
+ }
+
+ if (errors > 0) {
+ output += chalk[summaryColor].bold(
+ [
+ // http://www.fileformat.info/info/unicode/char/2716/index.htm
+ "\u2716 Remaining ",
+ errors,
+ pluralize(" problem", errors),
+ "\n"
+ ].join("")
+ );
+ }
+
+ const finalOutput = totalFixed > 0 ? output : "";
+ if (!useColor) {
+ return stripAnsi(finalOutput);
+ }
+ return finalOutput;
+}
diff --git a/node_modules/@textlint/fixer-formatter/src/index.ts b/node_modules/@textlint/fixer-formatter/src/index.ts
new file mode 100644
index 000000000..d06592e67
--- /dev/null
+++ b/node_modules/@textlint/fixer-formatter/src/index.ts
@@ -0,0 +1,63 @@
+// LICENSE : MIT
+"use strict";
+import type { TextlintFixResult } from "@textlint/types";
+
+import { moduleInterop } from "@textlint/module-interop";
+
+const fs = require("fs");
+const path = require("path");
+const tryResolve = require("try-resolve");
+
+const isFile = require("is-file");
+const debug = require("debug")("textlint:textfix-formatter");
+
+export type FormatterConfig = { color?: boolean; formatterName: string };
+
+export function createFormatter(formatterConfig: FormatterConfig) {
+ const formatterName = formatterConfig.formatterName;
+ debug(`formatterName: ${formatterName}`);
+ let formatter: (results: TextlintFixResult[], formatterConfig: FormatterConfig) => string;
+ let formatterPath;
+ if (fs.existsSync(formatterName)) {
+ formatterPath = formatterName;
+ } else if (fs.existsSync(path.resolve(process.cwd(), formatterName))) {
+ formatterPath = path.resolve(process.cwd(), formatterName);
+ } else {
+ if (isFile(`${path.join(__dirname, "formatters/", formatterName)}.js`)) {
+ formatterPath = `${path.join(__dirname, "formatters/", formatterName)}.js`;
+ } else if (isFile(`${path.join(__dirname, "formatters/", formatterName)}.ts`)) {
+ formatterPath = `${path.join(__dirname, "formatters/", formatterName)}.ts`;
+ } else {
+ const pkgPath = tryResolve(`textlint-formatter-${formatterName}`) || tryResolve(formatterName);
+ if (pkgPath) {
+ formatterPath = pkgPath;
+ }
+ }
+ }
+ try {
+ formatter = moduleInterop(require(formatterPath));
+ } catch (ex) {
+ throw new Error(`Could not find formatter ${formatterName}
+See https://github.com/textlint/textlint/issues/148
+${ex}`);
+ }
+ debug(`use formatter: ${formatterPath}`);
+ return function (results: TextlintFixResult[]) {
+ return formatter(results, formatterConfig);
+ };
+}
+
+export interface FixerFormatterDetail {
+ name: string;
+}
+
+export function getFixerFormatterList(): FixerFormatterDetail[] {
+ return fs
+ .readdirSync(path.join(__dirname, "formatters"))
+ .filter((file: string) => {
+ return path.extname(file) === ".js";
+ })
+ .map((file: string) => {
+ return { name: path.basename(file, ".js") };
+ });
+}
diff --git a/node_modules/@textlint/get-config-base-dir/LICENSE b/node_modules/@textlint/get-config-base-dir/LICENSE
new file mode 100644
index 000000000..97d7cf637
--- /dev/null
+++ b/node_modules/@textlint/get-config-base-dir/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2017 azu
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/node_modules/@textlint/get-config-base-dir/README.md b/node_modules/@textlint/get-config-base-dir/README.md
new file mode 100644
index 000000000..48e9f5ba0
--- /dev/null
+++ b/node_modules/@textlint/get-config-base-dir/README.md
@@ -0,0 +1,62 @@
+# @textlint/get-config-base-dir [](https://travis-ci.org/textlint/get-config-base-dir)
+
+`Context#getConfigBaseDir` ponyfill for textlint ^8.x.x
+
+Historically, `Context#getConfigBaseDir` is added in textlint 9.0.0.
+
+- [RuleContext API](https://github.com/textlint/textlint/blob/master/docs/rule.md#rulecontext-api "RuleContext API")
+-
+
+## Behavior
+
+This ponyfill provide backward compatibility for textlint 8.x.x.
+
+- If you use textlint^9.0.0, use native Context#getConfigBaseDir.
+- If you use textlint < 9.0.0, fallback method
+
+## Install
+
+Install with [npm](https://www.npmjs.com/):
+
+ npm install @textlint/get-config-base-dir
+
+## Usage
+
+```js
+import { getConfigBaseDir } from "@textlint/get-config-base-dir"
+const report = (context) => {
+ const textlintRcDir = getConfigBaseDir(context);
+}
+```
+
+
+## Changelog
+
+See [Releases page](https://github.com/textlint/get-config-base-dir/releases).
+
+## Running tests
+
+Install devDependencies and Run `npm test`:
+
+ npm i -d && npm test
+
+## Contributing
+
+Pull requests and stars are always welcome.
+
+For bugs and feature requests, [please create an issue](https://github.com/textlint/get-config-base-dir/issues).
+
+1. Fork it!
+2. Create your feature branch: `git checkout -b my-new-feature`
+3. Commit your changes: `git commit -am 'Add some feature'`
+4. Push to the branch: `git push origin my-new-feature`
+5. Submit a pull request :D
+
+## Author
+
+- [github/azu](https://github.com/azu)
+- [twitter/azu_re](https://twitter.com/azu_re)
+
+## License
+
+MIT © azu
diff --git a/node_modules/@textlint/get-config-base-dir/package.json b/node_modules/@textlint/get-config-base-dir/package.json
new file mode 100644
index 000000000..2eb03ed09
--- /dev/null
+++ b/node_modules/@textlint/get-config-base-dir/package.json
@@ -0,0 +1,62 @@
+{
+ "directories": {
+ "lib": "lib",
+ "test": "test"
+ },
+ "author": "azu",
+ "license": "MIT",
+ "files": [
+ "bin/",
+ "lib/",
+ "src/"
+ ],
+ "name": "@textlint/get-config-base-dir",
+ "version": "2.0.0",
+ "description": "Context#getConfigBaseDir ponyfill for textlint ^8.x.x",
+ "main": "lib/get-config-base-dir.js",
+ "scripts": {
+ "prettier": "prettier --write '**/*.{js,jsx,ts,tsx,css}'",
+ "precommit": "lint-staged",
+ "postcommit": "git reset",
+ "test": "mocha test",
+ "build": "cross-env NODE_ENV=production babel src --out-dir lib --source-maps",
+ "watch": "babel src --out-dir lib --watch --source-maps",
+ "prepublish": "npm run --if-present build"
+ },
+ "keywords": [
+ "textlint",
+ "ponyfill"
+ ],
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/textlint/get-config-base-dir.git"
+ },
+ "bugs": {
+ "url": "https://github.com/textlint/get-config-base-dir/issues"
+ },
+ "homepage": "https://github.com/textlint/get-config-base-dir",
+ "devDependencies": {
+ "babel-cli": "^6.26.0",
+ "babel-preset-env": "^1.6.1",
+ "babel-preset-jsdoc-to-assert": "^4.0.0",
+ "babel-preset-power-assert": "^1.0.0",
+ "babel-register": "^6.26.0",
+ "cross-env": "^5.1.1",
+ "husky": "^0.14.3",
+ "lint-staged": "^6.0.0",
+ "mocha": "^4.0.1",
+ "power-assert": "^1.4.4",
+ "prettier": "^1.8.2",
+ "textlint": "^9.1.1"
+ },
+ "prettier": {
+ "printWidth": 120,
+ "tabWidth": 4
+ },
+ "lint-staged": {
+ "*.{js,jsx,ts,tsx,css}": [
+ "prettier --write",
+ "git add"
+ ]
+ }
+}
diff --git a/node_modules/@textlint/get-config-base-dir/src/get-config-base-dir.js b/node_modules/@textlint/get-config-base-dir/src/get-config-base-dir.js
new file mode 100644
index 000000000..52e1ea191
--- /dev/null
+++ b/node_modules/@textlint/get-config-base-dir/src/get-config-base-dir.js
@@ -0,0 +1,21 @@
+// MIT © 2017 azu
+"use strict";
+const path = require("path");
+/**
+ * Get config base dir from Context.
+ * If you use textlint^9.0.0, use native Context#getConfigBaseDir.
+ * If you use textlint < 9.0.0, fallback method
+ * @see https://github.com/textlint/textlint/releases/tag/textlint%409.0.0
+ * @param {*} context
+ * @returns {string|undefined}
+ */
+export const getConfigBaseDir = context => {
+ if (typeof context.getConfigBaseDir === "function") {
+ return context.getConfigBaseDir();
+ }
+ // Old fallback that use deprecated `config` value
+ // https://github.com/textlint/textlint/issues/294
+ const textlintRcFilePath = context.config ? context.config.configFile : null;
+ // .textlinrc directory
+ return textlintRcFilePath ? path.dirname(textlintRcFilePath) : undefined;
+};
diff --git a/node_modules/@textlint/kernel/CHANGELOG.md b/node_modules/@textlint/kernel/CHANGELOG.md
new file mode 100644
index 000000000..d15cc8715
--- /dev/null
+++ b/node_modules/@textlint/kernel/CHANGELOG.md
@@ -0,0 +1,737 @@
+# Change Log
+
+All notable changes to this project will be documented in this file.
+See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+
+## [3.4.5](https://github.com/textlint/textlint/compare/@textlint/kernel@3.4.4...@textlint/kernel@3.4.5) (2021-05-08)
+
+**Note:** Version bump only for package @textlint/kernel
+
+
+
+
+
+## [3.4.4](https://github.com/textlint/textlint/compare/@textlint/kernel@3.4.3...@textlint/kernel@3.4.4) (2021-03-21)
+
+**Note:** Version bump only for package @textlint/kernel
+
+
+
+
+
+
+## [3.4.3](https://github.com/textlint/textlint/compare/@textlint/kernel@3.4.2...@textlint/kernel@3.4.3) (2021-03-19)
+
+
+### Chores
+
+* **deps:** update dependency [@types](https://github.com/types)/mocha to v8.2.1 ([da2d6e7](https://github.com/textlint/textlint/commit/da2d6e7))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.27 ([c1c0b86](https://github.com/textlint/textlint/commit/c1c0b86))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.28 ([136e255](https://github.com/textlint/textlint/commit/136e255))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.29 ([74af03b](https://github.com/textlint/textlint/commit/74af03b))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.30 ([4872821](https://github.com/textlint/textlint/commit/4872821))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.31 ([95821ad](https://github.com/textlint/textlint/commit/95821ad))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.32 ([0b0a384](https://github.com/textlint/textlint/commit/0b0a384))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.33 ([a05e2d9](https://github.com/textlint/textlint/commit/a05e2d9))
+* **deps:** update dependency mocha to ^8.3.0 ([0464adb](https://github.com/textlint/textlint/commit/0464adb))
+* **deps:** update dependency mocha to ^8.3.1 ([cc509ed](https://github.com/textlint/textlint/commit/cc509ed))
+* **deps:** update patch updates ([183eb8d](https://github.com/textlint/textlint/commit/183eb8d))
+
+
+
+
+
+
+## [3.4.2](https://github.com/textlint/textlint/compare/@textlint/kernel@3.4.1...@textlint/kernel@3.4.2) (2021-02-06)
+
+
+### Bug Fixes
+
+* **kernel:** fix `configBaseDir()` return correct base dir ([#742](https://github.com/textlint/textlint/issues/742)) ([8ae2dc1](https://github.com/textlint/textlint/commit/8ae2dc1))
+
+
+### Chores
+
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.25 ([cc5c800](https://github.com/textlint/textlint/commit/cc5c800))
+
+
+
+
+
+
+## [3.4.1](https://github.com/textlint/textlint/compare/@textlint/kernel@3.3.6...@textlint/kernel@3.4.1) (2021-01-22)
+
+
+### Bug Fixes
+
+* **@textlint/kernel:** fix [@ts-expect-error](https://github.com/ts-expect-error) issue ([d58d79e](https://github.com/textlint/textlint/commit/d58d79e))
+* **deps:** update dependency debug to ^4.2.0 ([6db0ba9](https://github.com/textlint/textlint/commit/6db0ba9))
+* **deps:** update dependency debug to ^4.3.0 ([9dea96a](https://github.com/textlint/textlint/commit/9dea96a))
+* **textlint:** textlint can't apply adjacent fixes ([#732](https://github.com/textlint/textlint/issues/732)) ([9ce71eb](https://github.com/textlint/textlint/commit/9ce71eb))
+* fix tsconfig ([a722a6f](https://github.com/textlint/textlint/commit/a722a6f))
+
+
+### Chores
+
+* **deps:** update dependency [@types](https://github.com/types)/mocha to v8.0.4 ([fd60f20](https://github.com/textlint/textlint/commit/fd60f20))
+* **deps:** update dependency [@types](https://github.com/types)/mocha to v8.2.0 ([5ced72d](https://github.com/textlint/textlint/commit/5ced72d))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.11.2 ([6ac372a](https://github.com/textlint/textlint/commit/6ac372a))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.11.5 ([b0e73f5](https://github.com/textlint/textlint/commit/b0e73f5))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.11.8 ([33679af](https://github.com/textlint/textlint/commit/33679af))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.10 ([96ba315](https://github.com/textlint/textlint/commit/96ba315))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.12 ([f62f2e3](https://github.com/textlint/textlint/commit/f62f2e3))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.13 ([608afd4](https://github.com/textlint/textlint/commit/608afd4))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.14 ([8417f8a](https://github.com/textlint/textlint/commit/8417f8a))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.16 ([7209803](https://github.com/textlint/textlint/commit/7209803))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.17 ([9ec5481](https://github.com/textlint/textlint/commit/9ec5481))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.19 ([bd050c9](https://github.com/textlint/textlint/commit/bd050c9))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.21 ([464d58a](https://github.com/textlint/textlint/commit/464d58a))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.22 ([5e5d214](https://github.com/textlint/textlint/commit/5e5d214))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.5 ([1ed7006](https://github.com/textlint/textlint/commit/1ed7006))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.6 ([507a41b](https://github.com/textlint/textlint/commit/507a41b))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.7 ([64f97eb](https://github.com/textlint/textlint/commit/64f97eb))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.8 ([8de7d16](https://github.com/textlint/textlint/commit/8de7d16))
+* **deps:** update minor updates ([7ef0be6](https://github.com/textlint/textlint/commit/7ef0be6))
+* **deps:** update minor updates ([2f3dcb6](https://github.com/textlint/textlint/commit/2f3dcb6))
+* **deps:** update minor updates ([7a53517](https://github.com/textlint/textlint/commit/7a53517))
+* **deps:** update minor updates ([#712](https://github.com/textlint/textlint/issues/712)) ([8c42a19](https://github.com/textlint/textlint/commit/8c42a19))
+* **deps:** update patch updates ([24fe2a9](https://github.com/textlint/textlint/commit/24fe2a9))
+* **deps:** update patch updates ([3d9660b](https://github.com/textlint/textlint/commit/3d9660b))
+* **deps:** update patch updates ([fe2ad4f](https://github.com/textlint/textlint/commit/fe2ad4f))
+* **deps:** update patch updates ([e438ff2](https://github.com/textlint/textlint/commit/e438ff2))
+* **deps:** update patch updates ([9df50df](https://github.com/textlint/textlint/commit/9df50df))
+* **deps:** update patch updates ([4f4c206](https://github.com/textlint/textlint/commit/4f4c206))
+* **deps:** update patch updates ([1a0e41f](https://github.com/textlint/textlint/commit/1a0e41f))
+* **deps:** update patch updates ([9157dda](https://github.com/textlint/textlint/commit/9157dda))
+* **deps:** update TypeScript deps ([#705](https://github.com/textlint/textlint/issues/705)) ([1baa72a](https://github.com/textlint/textlint/commit/1baa72a))
+* use [@monorepo-utils](https://github.com/monorepo-utils)/workspaces-to-typescript-project-references ([#699](https://github.com/textlint/textlint/issues/699)) ([eff1943](https://github.com/textlint/textlint/commit/eff1943))
+
+
+### Features
+
+* **source-code-fixer:** add `[@textlint](https://github.com/textlint)/source-code-fixer` ([#736](https://github.com/textlint/textlint/issues/736)) ([bf7235a](https://github.com/textlint/textlint/commit/bf7235a))
+
+
+
+
+
+
+# [3.4.0](https://github.com/textlint/textlint/compare/@textlint/kernel@3.3.6...@textlint/kernel@3.4.0) (2021-01-22)
+
+
+### Bug Fixes
+
+* **@textlint/kernel:** fix [@ts-expect-error](https://github.com/ts-expect-error) issue ([d58d79e](https://github.com/textlint/textlint/commit/d58d79e))
+* **deps:** update dependency debug to ^4.2.0 ([6db0ba9](https://github.com/textlint/textlint/commit/6db0ba9))
+* **deps:** update dependency debug to ^4.3.0 ([9dea96a](https://github.com/textlint/textlint/commit/9dea96a))
+* **textlint:** textlint can't apply adjacent fixes ([#732](https://github.com/textlint/textlint/issues/732)) ([9ce71eb](https://github.com/textlint/textlint/commit/9ce71eb))
+* fix tsconfig ([a722a6f](https://github.com/textlint/textlint/commit/a722a6f))
+
+
+### Chores
+
+* **deps:** update dependency [@types](https://github.com/types)/mocha to v8.0.4 ([fd60f20](https://github.com/textlint/textlint/commit/fd60f20))
+* **deps:** update dependency [@types](https://github.com/types)/mocha to v8.2.0 ([5ced72d](https://github.com/textlint/textlint/commit/5ced72d))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.11.2 ([6ac372a](https://github.com/textlint/textlint/commit/6ac372a))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.11.5 ([b0e73f5](https://github.com/textlint/textlint/commit/b0e73f5))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.11.8 ([33679af](https://github.com/textlint/textlint/commit/33679af))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.10 ([96ba315](https://github.com/textlint/textlint/commit/96ba315))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.12 ([f62f2e3](https://github.com/textlint/textlint/commit/f62f2e3))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.13 ([608afd4](https://github.com/textlint/textlint/commit/608afd4))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.14 ([8417f8a](https://github.com/textlint/textlint/commit/8417f8a))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.16 ([7209803](https://github.com/textlint/textlint/commit/7209803))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.17 ([9ec5481](https://github.com/textlint/textlint/commit/9ec5481))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.19 ([bd050c9](https://github.com/textlint/textlint/commit/bd050c9))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.21 ([464d58a](https://github.com/textlint/textlint/commit/464d58a))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.22 ([5e5d214](https://github.com/textlint/textlint/commit/5e5d214))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.5 ([1ed7006](https://github.com/textlint/textlint/commit/1ed7006))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.6 ([507a41b](https://github.com/textlint/textlint/commit/507a41b))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.7 ([64f97eb](https://github.com/textlint/textlint/commit/64f97eb))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.8 ([8de7d16](https://github.com/textlint/textlint/commit/8de7d16))
+* **deps:** update minor updates ([7ef0be6](https://github.com/textlint/textlint/commit/7ef0be6))
+* **deps:** update minor updates ([2f3dcb6](https://github.com/textlint/textlint/commit/2f3dcb6))
+* **deps:** update minor updates ([7a53517](https://github.com/textlint/textlint/commit/7a53517))
+* **deps:** update minor updates ([#712](https://github.com/textlint/textlint/issues/712)) ([8c42a19](https://github.com/textlint/textlint/commit/8c42a19))
+* **deps:** update patch updates ([24fe2a9](https://github.com/textlint/textlint/commit/24fe2a9))
+* **deps:** update patch updates ([3d9660b](https://github.com/textlint/textlint/commit/3d9660b))
+* **deps:** update patch updates ([fe2ad4f](https://github.com/textlint/textlint/commit/fe2ad4f))
+* **deps:** update patch updates ([e438ff2](https://github.com/textlint/textlint/commit/e438ff2))
+* **deps:** update patch updates ([9df50df](https://github.com/textlint/textlint/commit/9df50df))
+* **deps:** update patch updates ([4f4c206](https://github.com/textlint/textlint/commit/4f4c206))
+* **deps:** update patch updates ([1a0e41f](https://github.com/textlint/textlint/commit/1a0e41f))
+* **deps:** update patch updates ([9157dda](https://github.com/textlint/textlint/commit/9157dda))
+* **deps:** update TypeScript deps ([#705](https://github.com/textlint/textlint/issues/705)) ([1baa72a](https://github.com/textlint/textlint/commit/1baa72a))
+* use [@monorepo-utils](https://github.com/monorepo-utils)/workspaces-to-typescript-project-references ([#699](https://github.com/textlint/textlint/issues/699)) ([eff1943](https://github.com/textlint/textlint/commit/eff1943))
+
+
+### Features
+
+* **source-code-fixer:** add `[@textlint](https://github.com/textlint)/source-code-fixer` ([#736](https://github.com/textlint/textlint/issues/736)) ([bf7235a](https://github.com/textlint/textlint/commit/bf7235a))
+
+
+
+
+
+
+## [3.3.7](https://github.com/textlint/textlint/compare/@textlint/kernel@3.3.6...@textlint/kernel@3.3.7) (2020-12-22)
+
+
+### Bug Fixes
+
+* **@textlint/kernel:** fix [@ts-expect-error](https://github.com/ts-expect-error) issue ([d58d79e](https://github.com/textlint/textlint/commit/d58d79e))
+* **deps:** update dependency debug to ^4.2.0 ([6db0ba9](https://github.com/textlint/textlint/commit/6db0ba9))
+* **deps:** update dependency debug to ^4.3.0 ([9dea96a](https://github.com/textlint/textlint/commit/9dea96a))
+* **textlint:** textlint can't apply adjacent fixes ([#732](https://github.com/textlint/textlint/issues/732)) ([9ce71eb](https://github.com/textlint/textlint/commit/9ce71eb))
+* fix tsconfig ([a722a6f](https://github.com/textlint/textlint/commit/a722a6f))
+
+
+### Chores
+
+* **deps:** update dependency [@types](https://github.com/types)/mocha to v8.0.4 ([fd60f20](https://github.com/textlint/textlint/commit/fd60f20))
+* **deps:** update dependency [@types](https://github.com/types)/mocha to v8.2.0 ([5ced72d](https://github.com/textlint/textlint/commit/5ced72d))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.11.2 ([6ac372a](https://github.com/textlint/textlint/commit/6ac372a))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.11.5 ([b0e73f5](https://github.com/textlint/textlint/commit/b0e73f5))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.11.8 ([33679af](https://github.com/textlint/textlint/commit/33679af))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.10 ([96ba315](https://github.com/textlint/textlint/commit/96ba315))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.12 ([f62f2e3](https://github.com/textlint/textlint/commit/f62f2e3))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.13 ([608afd4](https://github.com/textlint/textlint/commit/608afd4))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.14 ([8417f8a](https://github.com/textlint/textlint/commit/8417f8a))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.5 ([1ed7006](https://github.com/textlint/textlint/commit/1ed7006))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.6 ([507a41b](https://github.com/textlint/textlint/commit/507a41b))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.7 ([64f97eb](https://github.com/textlint/textlint/commit/64f97eb))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.8 ([8de7d16](https://github.com/textlint/textlint/commit/8de7d16))
+* **deps:** update minor updates ([7ef0be6](https://github.com/textlint/textlint/commit/7ef0be6))
+* **deps:** update minor updates ([2f3dcb6](https://github.com/textlint/textlint/commit/2f3dcb6))
+* **deps:** update minor updates ([7a53517](https://github.com/textlint/textlint/commit/7a53517))
+* **deps:** update minor updates ([#712](https://github.com/textlint/textlint/issues/712)) ([8c42a19](https://github.com/textlint/textlint/commit/8c42a19))
+* **deps:** update patch updates ([3d9660b](https://github.com/textlint/textlint/commit/3d9660b))
+* **deps:** update patch updates ([fe2ad4f](https://github.com/textlint/textlint/commit/fe2ad4f))
+* **deps:** update patch updates ([e438ff2](https://github.com/textlint/textlint/commit/e438ff2))
+* **deps:** update patch updates ([9df50df](https://github.com/textlint/textlint/commit/9df50df))
+* **deps:** update patch updates ([4f4c206](https://github.com/textlint/textlint/commit/4f4c206))
+* **deps:** update patch updates ([1a0e41f](https://github.com/textlint/textlint/commit/1a0e41f))
+* **deps:** update patch updates ([9157dda](https://github.com/textlint/textlint/commit/9157dda))
+* **deps:** update TypeScript deps ([#705](https://github.com/textlint/textlint/issues/705)) ([1baa72a](https://github.com/textlint/textlint/commit/1baa72a))
+* use [@monorepo-utils](https://github.com/monorepo-utils)/workspaces-to-typescript-project-references ([#699](https://github.com/textlint/textlint/issues/699)) ([eff1943](https://github.com/textlint/textlint/commit/eff1943))
+
+
+
+
+
+
+## [3.3.6](https://github.com/textlint/textlint/compare/@textlint/kernel@3.3.5...@textlint/kernel@3.3.6) (2020-07-24)
+
+
+### Bug Fixes
+
+* improve "module" supports ([5ba5182](https://github.com/textlint/textlint/commit/5ba5182))
+
+
+
+
+
+
+## [3.3.5](https://github.com/textlint/textlint/compare/@textlint/kernel@3.3.4...@textlint/kernel@3.3.5) (2020-07-24)
+
+
+### Bug Fixes
+
+* "clean" command should remove tsconfig.module.tsbuildinfo ([76ac72a](https://github.com/textlint/textlint/commit/76ac72a))
+
+
+
+
+
+
+## [3.3.4](https://github.com/textlint/textlint/compare/@textlint/kernel@3.3.3...@textlint/kernel@3.3.4) (2020-07-24)
+
+
+### Bug Fixes
+
+* **@textlint/kernel:** fix export only type definition ([1234930](https://github.com/textlint/textlint/commit/1234930))
+
+
+
+
+
+
+## [3.3.3](https://github.com/textlint/textlint/compare/@textlint/kernel@3.3.2...@textlint/kernel@3.3.3) (2020-07-24)
+
+**Note:** Version bump only for package @textlint/kernel
+
+
+
+
+
+
+## [3.3.2](https://github.com/textlint/textlint/compare/@textlint/kernel@3.3.1...@textlint/kernel@3.3.2) (2020-07-24)
+
+
+### Bug Fixes
+
+* **@textlint/kernel:** down to deep-equal@2 ([70a4263](https://github.com/textlint/textlint/commit/70a4263))
+
+
+
+
+
+
+## [3.3.1](https://github.com/textlint/textlint/compare/@textlint/kernel@3.3.0...@textlint/kernel@3.3.1) (2020-07-24)
+
+
+### Bug Fixes
+
+* include module ([2de05f7](https://github.com/textlint/textlint/commit/2de05f7))
+
+
+
+
+
+
+# [3.3.0](https://github.com/textlint/textlint/compare/@textlint/kernel@3.2.1...@textlint/kernel@3.3.0) (2020-07-24)
+
+
+### Chores
+
+* **deps:** update devDepencies ([#667](https://github.com/textlint/textlint/issues/667)) ([0503af6](https://github.com/textlint/textlint/commit/0503af6))
+
+
+### Code Refactoring
+
+* **typescript:** Use TypeScript Project References ([#668](https://github.com/textlint/textlint/issues/668)) ([bbffd43](https://github.com/textlint/textlint/commit/bbffd43))
+
+
+### Tests
+
+* migrate mocha.opts to .mocharc.json ([#682](https://github.com/textlint/textlint/issues/682)) ([332ae5e](https://github.com/textlint/textlint/commit/332ae5e))
+
+
+
+
+
+
+## [3.2.1](https://github.com/textlint/textlint/compare/@textlint/kernel@3.2.0...@textlint/kernel@3.2.1) (2020-02-07)
+
+
+### Code Refactoring
+
+* **kernel:** use promise instead of bluebird ([c5eb768](https://github.com/textlint/textlint/commit/c5eb768))
+
+
+
+
+
+
+# [3.2.0](https://github.com/textlint/textlint/compare/@textlint/kernel@3.1.9...@textlint/kernel@3.2.0) (2020-01-07)
+
+
+### Features
+
+* **kernel): support `prePrecess(:** { text, ast }` return value ([16301d7](https://github.com/textlint/textlint/commit/16301d7))
+
+
+### Tests
+
+* **kernel:** update dummyText ([1a88f98](https://github.com/textlint/textlint/commit/1a88f98))
+
+
+
+
+
+
+## [3.1.10](https://github.com/textlint/textlint/compare/@textlint/kernel@3.1.9...@textlint/kernel@3.1.10) (2019-11-03)
+
+**Note:** Version bump only for package @textlint/kernel
+
+
+
+
+
+
+## [3.1.9](https://github.com/textlint/textlint/compare/@textlint/kernel@3.1.8...@textlint/kernel@3.1.9) (2019-10-14)
+
+**Note:** Version bump only for package @textlint/kernel
+
+
+
+
+
+
+## [3.1.8](https://github.com/textlint/textlint/compare/@textlint/kernel@3.1.6...@textlint/kernel@3.1.8) (2019-07-20)
+
+
+### Code Refactoring
+
+* **kernel:** remove object-assign ([24eed59](https://github.com/textlint/textlint/commit/24eed59))
+* **utils:** move implementation from types to utils ([#611](https://github.com/textlint/textlint/issues/611)) ([cd9adbe](https://github.com/textlint/textlint/commit/cd9adbe))
+
+
+
+
+
+
+## [3.1.7](https://github.com/textlint/textlint/compare/@textlint/kernel@3.1.6...@textlint/kernel@3.1.7) (2019-07-13)
+
+
+### Code Refactoring
+
+* **utils:** move implementation from types to utils ([#611](https://github.com/textlint/textlint/issues/611)) ([cd9adbe](https://github.com/textlint/textlint/commit/cd9adbe))
+
+
+
+
+
+
+## [3.1.6](https://github.com/textlint/textlint/compare/@textlint/kernel@3.1.5...@textlint/kernel@3.1.6) (2019-04-30)
+
+
+### Chores
+
+* **deps:** update deps && devDeps ([a19463b](https://github.com/textlint/textlint/commit/a19463b))
+
+
+
+
+
+
+## [3.1.5](https://github.com/textlint/textlint/compare/@textlint/kernel@3.1.4...@textlint/kernel@3.1.5) (2019-04-30)
+
+
+### Bug Fixes
+
+* **test:** fix integration tests ([24422ad](https://github.com/textlint/textlint/commit/24422ad))
+
+
+### Code Refactoring
+
+* **textlint:** move normalization logic to [@textlint](https://github.com/textlint)/types ([9930809](https://github.com/textlint/textlint/commit/9930809))
+
+
+
+
+
+
+## [3.1.4](https://github.com/textlint/textlint/compare/@textlint/kernel@3.1.3...@textlint/kernel@3.1.4) (2019-02-10)
+
+
+### Bug Fixes
+
+* **textlint:** fix regression for ignoreReport ([8d1c195](https://github.com/textlint/textlint/commit/8d1c195)), closes [#586](https://github.com/textlint/textlint/issues/586) [#586](https://github.com/textlint/textlint/issues/586)
+
+
+
+
+
+
+## [3.1.3](https://github.com/textlint/textlint/compare/@textlint/kernel@3.1.2...@textlint/kernel@3.1.3) (2019-02-10)
+
+
+### Bug Fixes
+
+* **textlint:** add reasonable debug log ([3931810](https://github.com/textlint/textlint/commit/3931810))
+
+
+
+
+
+
+## [3.1.2](https://github.com/textlint/textlint/compare/@textlint/kernel@3.1.1...@textlint/kernel@3.1.2) (2019-01-03)
+
+
+### Bug Fixes
+
+* **textlint:** fix internal typing ([e2fde6c](https://github.com/textlint/textlint/commit/e2fde6c))
+
+
+
+
+
+
+## [3.1.1](https://github.com/textlint/textlint/compare/@textlint/kernel@3.1.0...@textlint/kernel@3.1.1) (2019-01-03)
+
+**Note:** Version bump only for package @textlint/kernel
+
+
+
+
+
+
+# [3.1.0](https://github.com/textlint/textlint/compare/@textlint/kernel@3.0.1...@textlint/kernel@3.1.0) (2019-01-01)
+
+
+### Bug Fixes
+
+* **kernel:** fix type error ([214c287](https://github.com/textlint/textlint/commit/214c287))
+* **kernel:** refer to TextlintRuleContextReportFunctionArgs ([27e6968](https://github.com/textlint/textlint/commit/27e6968))
+* **types:** fix name of type definition ([67d9c49](https://github.com/textlint/textlint/commit/67d9c49))
+
+
+### Chores
+
+* **deps:** update eslint deps ([5bf2d38](https://github.com/textlint/textlint/commit/5bf2d38))
+* **deps:** update TypeScript deps ([3ea7fb0](https://github.com/textlint/textlint/commit/3ea7fb0))
+
+
+### Code Refactoring
+
+* **kernel:** move report()/shouldIgnore() definition to types ([601ce3a](https://github.com/textlint/textlint/commit/601ce3a))
+* **kernel:** remove SeverityLevel.ts from kernel ([88a306c](https://github.com/textlint/textlint/commit/88a306c))
+* **types:** move type definition for rule to [@textlint](https://github.com/textlint)/types ([9be6e16](https://github.com/textlint/textlint/commit/9be6e16))
+
+
+### Documentation
+
+* **types:** Update README ([ab1e2ba](https://github.com/textlint/textlint/commit/ab1e2ba))
+
+
+### Features
+
+* **types:** Move TextlintResult/TextlintMessage type to [@textlint](https://github.com/textlint)/types ([b2a03a1](https://github.com/textlint/textlint/commit/b2a03a1))
+
+
+### Styles
+
+* **prettier:** format style by prettier ([19a2901](https://github.com/textlint/textlint/commit/19a2901))
+
+
+### Tests
+
+* **deps:** update no-todo rule reference ([6cecc88](https://github.com/textlint/textlint/commit/6cecc88))
+* **types:** Move SourceCode test to types ([ec61d65](https://github.com/textlint/textlint/commit/ec61d65))
+
+
+
+
+
+## [3.0.1](https://github.com/textlint/textlint/compare/@textlint/kernel@3.0.0...@textlint/kernel@3.0.1) (2018-12-24)
+
+
+### Bug Fixes
+
+* **kernel:** fix applyFix order on Node.js 11 ([714a90c](https://github.com/textlint/textlint/commit/714a90c))
+
+
+
+
+
+# [3.0.0](https://github.com/textlint/textlint/compare/@textlint/kernel@2.0.9...@textlint/kernel@3.0.0) (2018-07-22)
+
+
+### Bug Fixes
+
+* **kernel:** kernel use TextlintrcDescriptor ([efd89c2](https://github.com/textlint/textlint/commit/efd89c2))
+* **kernel:** make rule and plugin's option value {} by default ([b7aa63d](https://github.com/textlint/textlint/commit/b7aa63d))
+
+
+### Chores
+
+* **deps:** update mocha ([5df8af4](https://github.com/textlint/textlint/commit/5df8af4))
+* remove [@textlint](https://github.com/textlint)/textlintrc-descriptor ([3613e1f](https://github.com/textlint/textlint/commit/3613e1f))
+* **kernel:** add comment ([582d0d6](https://github.com/textlint/textlint/commit/582d0d6))
+* **kernel:** add Processor validation ([86ed609](https://github.com/textlint/textlint/commit/86ed609))
+* **kernel:** fix test title ([4eeeff8](https://github.com/textlint/textlint/commit/4eeeff8))
+* **kernel:** support instance availableExtensions() method ([b821fc5](https://github.com/textlint/textlint/commit/b821fc5))
+* **textlint:** make static availableExtensions() optional ([d471637](https://github.com/textlint/textlint/commit/d471637))
+* **textlint:** use shallowMerge ([95d056d](https://github.com/textlint/textlint/commit/95d056d))
+
+
+### Code Refactoring
+
+* **kernel:** merge textlintrc-descriptor to kernel ([3c01067](https://github.com/textlint/textlint/commit/3c01067))
+* **kernel:** remove TextlintRuleDescriptorType ([a5b0f30](https://github.com/textlint/textlint/commit/a5b0f30))
+* **kernel:** Replace Object.freeze directly with factory function ([c43580b](https://github.com/textlint/textlint/commit/c43580b))
+* **kernel:** separate linter and fixer descriptor ([b5bc8bd](https://github.com/textlint/textlint/commit/b5bc8bd))
+* **kernel:** use textlintrc-descriptor instead of rule-creator-helper ([f0eb4bf](https://github.com/textlint/textlint/commit/f0eb4bf))
+* **textlintrc-descriptor:** Introduce textlintrc-descriptor ([6177794](https://github.com/textlint/textlint/commit/6177794))
+* **typescript:** update to TypeScript 2.8 ([f7b2b08](https://github.com/textlint/textlint/commit/f7b2b08))
+
+
+### Features
+
+* **kernel:** Freeze Context ([7fc9ec8](https://github.com/textlint/textlint/commit/7fc9ec8)), closes [#508](https://github.com/textlint/textlint/issues/508) [#508](https://github.com/textlint/textlint/issues/508)
+* **textlint:** support availableExtensions() instance method in plugin ([a7cd053](https://github.com/textlint/textlint/commit/a7cd053))
+
+
+### Tests
+
+* **kernel:** Add missing Readonly ([c5313c8](https://github.com/textlint/textlint/commit/c5313c8))
+* **kernel:** add plugin's option tests ([f362257](https://github.com/textlint/textlint/commit/f362257))
+* **textlint:** add tests for object-to-kernel-format ([5fbb22d](https://github.com/textlint/textlint/commit/5fbb22d))
+
+
+### BREAKING CHANGES
+
+* **kernel:** Previously, textlint pass `true` to rule and plugin as default value of option.
+This commit change the default value to `{}` (empty object).
+
+fix https://github.com/textlint/textlint/issues/535
+
+
+
+
+
+## [2.0.9](https://github.com/textlint/textlint/compare/@textlint/kernel@2.0.8...@textlint/kernel@2.0.9) (2018-04-02)
+
+
+
+
+**Note:** Version bump only for package @textlint/kernel
+
+
+## [2.0.8](https://github.com/textlint/textlint/compare/@textlint/kernel@2.0.7...@textlint/kernel@2.0.8) (2018-04-02)
+
+
+
+
+**Note:** Version bump only for package @textlint/kernel
+
+
+## [2.0.7](https://github.com/textlint/textlint/compare/@textlint/kernel@2.0.6...@textlint/kernel@2.0.7) (2018-03-25)
+
+
+### Chores
+
+* **test:** use `ts-node-test-register` for TypeScript testing ([be746d8](https://github.com/textlint/textlint/commit/be746d8)), closes [#451](https://github.com/textlint/textlint/issues/451)
+
+
+
+
+
+## [2.0.6](https://github.com/textlint/textlint/compare/@textlint/kernel@2.0.5...@textlint/kernel@2.0.6) (2018-01-27)
+
+
+### Code Refactoring
+
+* **ast-traverse:** update usage of [@textlint](https://github.com/textlint)/ast-traverse ([133ab5a](https://github.com/textlint/textlint/commit/133ab5a))
+* **plugin-markdown:** update usage of [@textlint](https://github.com/textlint)/textlint-plugin-markdown ([d34ee08](https://github.com/textlint/textlint/commit/d34ee08))
+
+
+
+
+
+## [2.0.5](https://github.com/textlint/textlint/compare/@textlint/kernel@2.0.4...@textlint/kernel@2.0.5) (2018-01-18)
+
+
+
+
+**Note:** Version bump only for package @textlint/kernel
+
+
+## [2.0.4](https://github.com/textlint/textlint/compare/@textlint/kernel@2.0.3...@textlint/kernel@2.0.4) (2018-01-12)
+
+
+### Bug Fixes
+
+* **kernel:** fix return type of `SourceCode#getSource` ([1b55894](https://github.com/textlint/textlint/commit/1b55894))
+* **kernel:** pass the file path to preProcess() that is on FixerProcessor ([#458](https://github.com/textlint/textlint/issues/458)) ([5b947aa](https://github.com/textlint/textlint/commit/5b947aa))
+
+
+
+
+
+## [2.0.2](https://github.com/textlint/textlint/compare/@textlint/kernel@2.0.1...@textlint/kernel@2.0.2) (2017-12-25)
+
+
+### Bug Fixes
+
+* **kernel:** fix import path ([02d98fe](https://github.com/textlint/textlint/commit/02d98fe))
+* **monorepo:** fix TypeScript module resolution in monorepo ([d5df499](https://github.com/textlint/textlint/commit/d5df499))
+
+
+
+
+
+## [2.0.1](https://github.com/textlint/textlint/compare/@textlint/kernel@2.0.0...@textlint/kernel@2.0.1) (2017-12-19)
+
+
+
+
+**Note:** Version bump only for package @textlint/kernel
+
+
+# [2.0.0](https://github.com/textlint/textlint/compare/@textlint/kernel@2.0.0-next.2...@textlint/kernel@2.0.0) (2017-12-18)
+
+
+
+
+**Note:** Version bump only for package @textlint/kernel
+
+
+# [2.0.0-next.2](https://github.com/textlint/textlint/compare/@textlint/kernel@2.0.0-next.1...@textlint/kernel@2.0.0-next.2) (2017-12-18)
+
+
+
+
+**Note:** Version bump only for package @textlint/kernel
+
+
+# [2.0.0-next.1](https://github.com/textlint/textlint/compare/@textlint/kernel@2.0.0-next.0...@textlint/kernel@2.0.0-next.1) (2017-12-17)
+
+
+
+
+**Note:** Version bump only for package @textlint/kernel
+
+
+# [2.0.0-next.0](https://github.com/textlint/textlint/compare/@textlint/kernel@1.0.3...@textlint/kernel@2.0.0-next.0) (2017-12-15)
+
+
+### Bug Fixes
+
+* **textlint:** fix kernel test ([#374](https://github.com/textlint/textlint/issues/374)) ([d6953cc](https://github.com/textlint/textlint/commit/d6953cc))
+* **textlint-fixer-formatter:** use paths ([734806f](https://github.com/textlint/textlint/commit/734806f))
+
+
+
+
+
+## [1.0.3](https://github.com/textlint/textlint/compare/@textlint/kernel@1.0.2...@textlint/kernel@1.0.3) (2017-11-05)
+
+
+### Bug Fixes
+
+* **textlint:** support scoped preset module ([#329](https://github.com/textlint/textlint/issues/329)) ([a2c8f6b](https://github.com/textlint/textlint/commit/a2c8f6b))
+
+
+
+
+
+## [1.0.2](https://github.com/textlint/textlint/compare/@textlint/kernel@1.0.1...@textlint/kernel@1.0.2) (2017-11-03)
+
+
+
+
+**Note:** Version bump only for package @textlint/kernel
+
+
+# [1.0.0](https://github.com/textlint/textlint/compare/@textlint/kernel@1.0.0-beta.0...@textlint/kernel@1.0.0) (2017-10-28)
+
+
+
+
+**Note:** Version bump only for package @textlint/kernel
+
+
+## [0.2.1](https://github.com/textlint/textlint/compare/@textlint/kernel@0.2.0...@textlint/kernel@0.2.1) (2017-05-21)
+
+
+
+
+
+# [0.2.0](https://github.com/textlint/textlint/compare/@textlint/kernel@0.1.0...@textlint/kernel@0.2.0) (2017-05-21)
+
+
+### Features
+
+* **textlint-kernel:** add `configBaseDir` option (#295) ([85dad8a](https://github.com/textlint/textlint/commit/85dad8a))
+
+
+
+
+
+# 0.1.0 (2017-05-18)
+
+
+### Features
+
+* **textlint-kernel:** Add [@textlint](https://github.com/textlint)/kernel (#292) ([30473c3](https://github.com/textlint/textlint/commit/30473c3))
diff --git a/node_modules/@textlint/kernel/LICENSE b/node_modules/@textlint/kernel/LICENSE
new file mode 100644
index 000000000..97d7cf637
--- /dev/null
+++ b/node_modules/@textlint/kernel/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2017 azu
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/node_modules/@textlint/kernel/README.md b/node_modules/@textlint/kernel/README.md
new file mode 100644
index 000000000..7fdb4fae3
--- /dev/null
+++ b/node_modules/@textlint/kernel/README.md
@@ -0,0 +1,105 @@
+# @textlint/kernel
+
+textlint kernel is core logic by pure JavaScript.
+
+This module is a low layer of textlint.
+
+No plugin, No rule, No filter rule by default.
+
+## Install
+
+Install with [npm](https://www.npmjs.com/):
+
+ npm install @textlint/kernel
+
+## Usage
+
+```js
+import { TextlintKernel } from "@textlint/kernel";
+const kernel = new TextlintKernel();
+const options = {
+ filePath: "/path/to/file.md",
+ ext: ".md",
+ plugins: [
+ {
+ pluginId: "markdown",
+ plugin: require("@textlint/textlint-plugin-markdown")
+ }
+ ],
+ rules: [
+ {
+ ruleId: "no-todo",
+ rule: require("textlint-rule-no-todo").default
+ }
+ ]
+};
+kernel.lintText("TODO: text", options).then(result => {
+ assert.ok(typeof result.filePath === "string");
+ assert.ok(result.messages.length === 1);
+});
+```
+
+Notes: Preset is a collection of Rules.
+Currently, `presets` option does not exist.
+
+## Type Interface
+
+`@textlint/kernel` export core types of textlint.
+
+If you use TypeScript, this types help you.
+
+```ts
+// Types
+import {
+ TextlintResult,
+ TextlintFixResult,
+ TextlintFixCommand,
+ TextlintMessage,
+ // Kernel rule/filter/plugin format
+ TextlintKernelRule,
+ TextlintKernelFilterRule,
+ TextlintKernelPlugin,
+ // textlint rule interface
+ TextlintRuleCreator,
+ TextlintRuleOptions,
+ // textlint filter rule interface
+ TextlintFilterRuleCreator,
+ TextlintFilterRuleOptions,
+ // textlint plugin interface
+ TextlintPluginCreator,
+ TextlintPluginOptions,
+ TextlintPluginProcessor,
+ TextlintPluginProcessorConstructor
+} from "@textlint/kernel";
+```
+
+## Changelog
+
+See [Releases page](https://github.com/textlint/textlint/releases).
+
+## Running tests
+
+Install devDependencies and Run `npm test`:
+
+ npm i -d && npm test
+
+## Contributing
+
+Pull requests and stars are always welcome.
+
+For bugs and feature requests, [please create an issue](https://github.com/textlint/textlint/issues).
+
+1. Fork it!
+2. Create your feature branch: `git checkout -b my-new-feature`
+3. Commit your changes: `git commit -am 'Add some feature'`
+4. Push to the branch: `git push origin my-new-feature`
+5. Submit a pull request :D
+
+## Author
+
+- [github/azu](https://github.com/azu)
+- [twitter/azu_re](https://twitter.com/azu_re)
+
+## License
+
+MIT © azu
diff --git a/node_modules/@textlint/kernel/module/context/TextlintFilterRuleContextImpl.d.ts b/node_modules/@textlint/kernel/module/context/TextlintFilterRuleContextImpl.d.ts
new file mode 100644
index 000000000..dbc6e9b3f
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/context/TextlintFilterRuleContextImpl.d.ts
@@ -0,0 +1,59 @@
+import type { TextlintRuleSeverityLevel, TextlintFilterRuleContextArgs, TextlintFilterRuleContext } from "@textlint/types";
+import { ASTNodeTypes, TxtNode } from "@textlint/ast-node-types";
+import { TextlintRuleErrorImpl } from "./TextlintRuleErrorImpl";
+export declare class TextlintFilterRuleContextImpl implements TextlintFilterRuleContext {
+ private _ruleId;
+ private _ignoreReport;
+ private _sourceCode;
+ private _configBaseDir?;
+ private _severityLevel;
+ constructor(args: TextlintFilterRuleContextArgs);
+ /**
+ * Rule id
+ * @returns {string}
+ */
+ get id(): string;
+ get severity(): TextlintRuleSeverityLevel;
+ /**
+ * Node's type values
+ * @type {TextLintNodeType}
+ */
+ get Syntax(): typeof ASTNodeTypes;
+ /**
+ * CustomError object
+ * @type {RuleError}
+ */
+ get RuleError(): typeof TextlintRuleErrorImpl;
+ shouldIgnore: (range: [number, number], optional?: {}) => void;
+ /**
+ * Not use
+ * @returns {() => void}
+ */
+ get report(): () => never;
+ /**
+ * get file path current processing.
+ */
+ getFilePath: () => string | undefined;
+ /**
+ * Gets the source code for the given node.
+ * @param {TxtNode=} node The AST node to get the text for.
+ * @param {int=} beforeCount The number of characters before the node to retrieve.
+ * @param {int=} afterCount The number of characters after the node to retrieve.
+ * @returns {string} The text representing the AST node.
+ */
+ getSource: (node?: TxtNode | undefined, beforeCount?: number | undefined, afterCount?: number | undefined) => string;
+ /**
+ * get config base directory path
+ * config base directory path often is the place of .textlintrc
+ *
+ * e.g.) /path/to/dir/.textlintrc
+ * `getConfigBaseDir()` return `"/path/to/dir/"`.
+ *
+ * When using textlint as module, it is specified by `configBaseDir`
+ * If not found the value, return undefined.
+ *
+ * You can use it for resolving relative path from config dir.
+ * @returns {string|undefined}
+ */
+ getConfigBaseDir: () => string | undefined;
+}
diff --git a/node_modules/@textlint/kernel/module/context/TextlintFilterRuleContextImpl.js b/node_modules/@textlint/kernel/module/context/TextlintFilterRuleContextImpl.js
new file mode 100644
index 000000000..1b781388c
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/context/TextlintFilterRuleContextImpl.js
@@ -0,0 +1,106 @@
+import * as assert from "assert";
+import { TextlintRuleErrorImpl } from "./TextlintRuleErrorImpl";
+var TextlintFilterRuleContextImpl = /** @class */ (function () {
+ function TextlintFilterRuleContextImpl(args) {
+ var _this = this;
+ this.shouldIgnore = function (range, optional) {
+ if (optional === void 0) { optional = {}; }
+ assert.ok(Array.isArray(range) && typeof range[0] === "number" && typeof range[1] === "number", "shouldIgnore([number, number]); accept range.");
+ _this._ignoreReport({ ruleId: _this._ruleId, range: range, optional: optional });
+ };
+ /**
+ * get file path current processing.
+ */
+ this.getFilePath = function () {
+ return _this._sourceCode.getFilePath();
+ };
+ /**
+ * Gets the source code for the given node.
+ * @param {TxtNode=} node The AST node to get the text for.
+ * @param {int=} beforeCount The number of characters before the node to retrieve.
+ * @param {int=} afterCount The number of characters after the node to retrieve.
+ * @returns {string} The text representing the AST node.
+ */
+ this.getSource = function (node, beforeCount, afterCount) {
+ return _this._sourceCode.getSource(node, beforeCount, afterCount);
+ };
+ /**
+ * get config base directory path
+ * config base directory path often is the place of .textlintrc
+ *
+ * e.g.) /path/to/dir/.textlintrc
+ * `getConfigBaseDir()` return `"/path/to/dir/"`.
+ *
+ * When using textlint as module, it is specified by `configBaseDir`
+ * If not found the value, return undefined.
+ *
+ * You can use it for resolving relative path from config dir.
+ * @returns {string|undefined}
+ */
+ this.getConfigBaseDir = function () {
+ return _this._configBaseDir;
+ };
+ this._ruleId = args.ruleId;
+ this._sourceCode = args.sourceCode;
+ this._ignoreReport = args.ignoreReport;
+ this._configBaseDir = args.configBaseDir;
+ this._severityLevel = args.severityLevel;
+ Object.freeze(this);
+ }
+ Object.defineProperty(TextlintFilterRuleContextImpl.prototype, "id", {
+ /**
+ * Rule id
+ * @returns {string}
+ */
+ get: function () {
+ return this._ruleId;
+ },
+ enumerable: false,
+ configurable: true
+ });
+ Object.defineProperty(TextlintFilterRuleContextImpl.prototype, "severity", {
+ get: function () {
+ return this._severityLevel;
+ },
+ enumerable: false,
+ configurable: true
+ });
+ Object.defineProperty(TextlintFilterRuleContextImpl.prototype, "Syntax", {
+ /**
+ * Node's type values
+ * @type {TextLintNodeType}
+ */
+ get: function () {
+ return this._sourceCode.getSyntax();
+ },
+ enumerable: false,
+ configurable: true
+ });
+ Object.defineProperty(TextlintFilterRuleContextImpl.prototype, "RuleError", {
+ /**
+ * CustomError object
+ * @type {RuleError}
+ */
+ get: function () {
+ return TextlintRuleErrorImpl;
+ },
+ enumerable: false,
+ configurable: true
+ });
+ Object.defineProperty(TextlintFilterRuleContextImpl.prototype, "report", {
+ /**
+ * Not use
+ * @returns {() => void}
+ */
+ get: function () {
+ return function () {
+ throw new Error("Filter rule can not report");
+ };
+ },
+ enumerable: false,
+ configurable: true
+ });
+ return TextlintFilterRuleContextImpl;
+}());
+export { TextlintFilterRuleContextImpl };
+//# sourceMappingURL=TextlintFilterRuleContextImpl.js.map
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/context/TextlintFilterRuleContextImpl.js.map b/node_modules/@textlint/kernel/module/context/TextlintFilterRuleContextImpl.js.map
new file mode 100644
index 000000000..13bab91d3
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/context/TextlintFilterRuleContextImpl.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"TextlintFilterRuleContextImpl.js","sourceRoot":"","sources":["../../src/context/TextlintFilterRuleContextImpl.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEhE;IAOI,uCAAY,IAAmC;QAA/C,iBAOC;QA8BD,iBAAY,GAAG,UAAC,KAAuB,EAAE,QAAa;YAAb,yBAAA,EAAA,aAAa;YAClD,MAAM,CAAC,EAAE,CACL,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,EACpF,+CAA+C,CAClD,CAAC;YACF,KAAI,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,KAAI,CAAC,OAAO,EAAE,KAAK,OAAA,EAAE,QAAQ,UAAA,EAAE,CAAC,CAAC;QAClE,CAAC,CAAC;QAYF;;WAEG;QACH,gBAAW,GAAG;YACV,OAAO,KAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;QAC1C,CAAC,CAAC;QAEF;;;;;;WAMG;QACH,cAAS,GAAG,UAAC,IAAc,EAAE,WAAoB,EAAE,UAAmB;YAClE,OAAO,KAAI,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;QACrE,CAAC,CAAC;QAEF;;;;;;;;;;;;WAYG;QACH,qBAAgB,GAAG;YACf,OAAO,KAAI,CAAC,cAAc,CAAC;QAC/B,CAAC,CAAC;QAvFE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC;QACnC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC;QACvC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC;QACzC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC;QACzC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAMD,sBAAI,6CAAE;QAJN;;;WAGG;aACH;YACI,OAAO,IAAI,CAAC,OAAO,CAAC;QACxB,CAAC;;;OAAA;IAED,sBAAI,mDAAQ;aAAZ;YACI,OAAO,IAAI,CAAC,cAAc,CAAC;QAC/B,CAAC;;;OAAA;IAMD,sBAAI,iDAAM;QAJV;;;WAGG;aACH;YACI,OAAO,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC;QACxC,CAAC;;;OAAA;IAMD,sBAAI,oDAAS;QAJb;;;WAGG;aACH;YACI,OAAO,qBAAqB,CAAC;QACjC,CAAC;;;OAAA;IAcD,sBAAI,iDAAM;QAJV;;;WAGG;aACH;YACI,OAAO;gBACH,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;YAClD,CAAC,CAAC;QACN,CAAC;;;OAAA;IAoCL,oCAAC;AAAD,CAAC,AAhGD,IAgGC"}
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/context/TextlintRuleContextFixCommandGeneratorImpl.d.ts b/node_modules/@textlint/kernel/module/context/TextlintRuleContextFixCommandGeneratorImpl.d.ts
new file mode 100644
index 000000000..b1f5d8142
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/context/TextlintRuleContextFixCommandGeneratorImpl.d.ts
@@ -0,0 +1,113 @@
+import { TxtNode } from "@textlint/ast-node-types";
+import type { TextlintRuleContextFixCommandGenerator, TextlintSourceCodeRange } from "@textlint/types";
+/**
+ * Creates code fixing commands for rules.
+ * It create command for fixing texts.
+ * The `range` arguments of these command is should be **relative** value from reported node.
+ * See {@link SourceLocation} class for more detail.
+ * @constructor
+ */
+export declare class TextlintRuleContextFixCommandGeneratorImpl implements TextlintRuleContextFixCommandGenerator {
+ /**
+ * Creates a fix command that inserts text after the given node or token.
+ * The fix is not applied until applyFixes() is called.
+ * @param {TxtNode} node The node or token to insert after.
+ * @param {string} text The text to insert.
+ * @returns {IntermediateFixCommand} The fix command.
+ */
+ insertTextAfter(node: TxtNode, text: string): {
+ range: number[];
+ text: string;
+ isAbsolute: boolean;
+ };
+ /**
+ * Creates a fix command that inserts text after the specified range in the source text.
+ * The fix is not applied until applyFixes() is called.
+ * @param {number[]} range The range to replace, first item is start of range, second
+ * is end of range.
+ * The `range` should be **relative** value from reported node.
+ * @param {string} text The text to insert.
+ * @returns {IntermediateFixCommand} The fix command.
+ */
+ insertTextAfterRange(range: TextlintSourceCodeRange, text: string): {
+ range: number[];
+ text: string;
+ isAbsolute: boolean;
+ };
+ /**
+ * Creates a fix command that inserts text before the given node or token.
+ * The fix is not applied until applyFixes() is called.
+ * @param {TxtNode} node The node or token to insert before.
+ * @param {string} text The text to insert.
+ * @returns {IntermediateFixCommand} The fix command.
+ */
+ insertTextBefore(node: TxtNode, text: string): {
+ range: number[];
+ text: string;
+ isAbsolute: boolean;
+ };
+ /**
+ * Creates a fix command that inserts text before the specified range in the source text.
+ * The fix is not applied until applyFixes() is called.
+ * @param {number[]} range The range to replace, first item is start of range, second
+ * is end of range.
+ * The `range` should be **relative** value from reported node.
+ * @param {string} text The text to insert.
+ * @returns {IntermediateFixCommand} The fix command.
+ */
+ insertTextBeforeRange(range: TextlintSourceCodeRange, text: string): {
+ range: number[];
+ text: string;
+ isAbsolute: boolean;
+ };
+ /**
+ * Creates a fix command that replaces text at the node or token.
+ * The fix is not applied until applyFixes() is called.
+ * @param {TxtNode} node The node or token to remove.
+ * @param {string} text The text to insert.
+ * @returns {IntermediateFixCommand} The fix command.
+ */
+ replaceText(node: TxtNode, text: string): {
+ range: import("@textlint/ast-node-types").TextNodeRange;
+ text: string;
+ isAbsolute: boolean;
+ };
+ /**
+ * Creates a fix command that replaces text at the specified range in the source text.
+ * The fix is not applied until applyFixes() is called.
+ * @param {number[]} range The range to replace, first item is start of range, second
+ * is end of range.
+ * The `range` should be **relative** value from reported node.
+ * @param {string} text The text to insert.
+ * @returns {IntermediateFixCommand} The fix command.
+ */
+ replaceTextRange(range: TextlintSourceCodeRange, text: string): {
+ range: TextlintSourceCodeRange;
+ text: string;
+ isAbsolute: boolean;
+ };
+ /**
+ * Creates a fix command that removes the node or token from the source.
+ * The fix is not applied until applyFixes() is called.
+ * @param {TxtNode} node The node or token to remove.
+ * @returns {IntermediateFixCommand} The fix command.
+ */
+ remove(node: TxtNode): {
+ range: import("@textlint/ast-node-types").TextNodeRange;
+ text: string;
+ isAbsolute: boolean;
+ };
+ /**
+ * Creates a fix command that removes the specified range of text from the source.
+ * The fix is not applied until applyFixes() is called.
+ * @param {number[]} range The range to remove, first item is start of range, second
+ * is end of range.
+ * The `range` should be **relative** value from reported node.
+ * @returns {IntermediateFixCommand} The fix command.
+ */
+ removeRange(range: TextlintSourceCodeRange): {
+ range: TextlintSourceCodeRange;
+ text: string;
+ isAbsolute: boolean;
+ };
+}
diff --git a/node_modules/@textlint/kernel/module/context/TextlintRuleContextFixCommandGeneratorImpl.js b/node_modules/@textlint/kernel/module/context/TextlintRuleContextFixCommandGeneratorImpl.js
new file mode 100644
index 000000000..71fc6e4e0
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/context/TextlintRuleContextFixCommandGeneratorImpl.js
@@ -0,0 +1,139 @@
+import * as assert from "assert";
+/**
+ * Creates a fix command that inserts text at the specified index in the source text.
+ * @param {number} index The 0-based index at which to insert the new text.
+ * @param {string} text The text to insert.
+ * @returns {IntermediateFixCommand} The fix command.
+ * @private
+ */
+function insertTextAt(index, text) {
+ assert.ok(text, "text must be string");
+ return {
+ range: [index, index],
+ text: text,
+ isAbsolute: false
+ };
+}
+/**
+ * Creates a fix command that inserts text at the specified index in the source text.
+ * @param {number} index The 0-based index at which to insert the new text.
+ * @param {string} text The text to insert.
+ * @returns {IntermediateFixCommand} The fix command.
+ * @private
+ */
+function insertTextAtAbsolute(index, text) {
+ assert.ok(text, "text must be string");
+ return {
+ range: [index, index],
+ text: text,
+ isAbsolute: true
+ };
+}
+/**
+ * Creates code fixing commands for rules.
+ * It create command for fixing texts.
+ * The `range` arguments of these command is should be **relative** value from reported node.
+ * See {@link SourceLocation} class for more detail.
+ * @constructor
+ */
+var TextlintRuleContextFixCommandGeneratorImpl = /** @class */ (function () {
+ function TextlintRuleContextFixCommandGeneratorImpl() {
+ }
+ /**
+ * Creates a fix command that inserts text after the given node or token.
+ * The fix is not applied until applyFixes() is called.
+ * @param {TxtNode} node The node or token to insert after.
+ * @param {string} text The text to insert.
+ * @returns {IntermediateFixCommand} The fix command.
+ */
+ TextlintRuleContextFixCommandGeneratorImpl.prototype.insertTextAfter = function (node, text) {
+ return insertTextAtAbsolute(node.range[1], text);
+ };
+ /**
+ * Creates a fix command that inserts text after the specified range in the source text.
+ * The fix is not applied until applyFixes() is called.
+ * @param {number[]} range The range to replace, first item is start of range, second
+ * is end of range.
+ * The `range` should be **relative** value from reported node.
+ * @param {string} text The text to insert.
+ * @returns {IntermediateFixCommand} The fix command.
+ */
+ TextlintRuleContextFixCommandGeneratorImpl.prototype.insertTextAfterRange = function (range, text) {
+ return insertTextAt(range[1], text);
+ };
+ /**
+ * Creates a fix command that inserts text before the given node or token.
+ * The fix is not applied until applyFixes() is called.
+ * @param {TxtNode} node The node or token to insert before.
+ * @param {string} text The text to insert.
+ * @returns {IntermediateFixCommand} The fix command.
+ */
+ TextlintRuleContextFixCommandGeneratorImpl.prototype.insertTextBefore = function (node, text) {
+ return insertTextAtAbsolute(node.range[0], text);
+ };
+ /**
+ * Creates a fix command that inserts text before the specified range in the source text.
+ * The fix is not applied until applyFixes() is called.
+ * @param {number[]} range The range to replace, first item is start of range, second
+ * is end of range.
+ * The `range` should be **relative** value from reported node.
+ * @param {string} text The text to insert.
+ * @returns {IntermediateFixCommand} The fix command.
+ */
+ TextlintRuleContextFixCommandGeneratorImpl.prototype.insertTextBeforeRange = function (range, text) {
+ return insertTextAt(range[0], text);
+ };
+ /**
+ * Creates a fix command that replaces text at the node or token.
+ * The fix is not applied until applyFixes() is called.
+ * @param {TxtNode} node The node or token to remove.
+ * @param {string} text The text to insert.
+ * @returns {IntermediateFixCommand} The fix command.
+ */
+ TextlintRuleContextFixCommandGeneratorImpl.prototype.replaceText = function (node, text) {
+ return {
+ range: node.range,
+ text: text,
+ isAbsolute: true
+ };
+ };
+ /**
+ * Creates a fix command that replaces text at the specified range in the source text.
+ * The fix is not applied until applyFixes() is called.
+ * @param {number[]} range The range to replace, first item is start of range, second
+ * is end of range.
+ * The `range` should be **relative** value from reported node.
+ * @param {string} text The text to insert.
+ * @returns {IntermediateFixCommand} The fix command.
+ */
+ TextlintRuleContextFixCommandGeneratorImpl.prototype.replaceTextRange = function (range, text) {
+ return {
+ range: range,
+ text: text,
+ isAbsolute: false
+ };
+ };
+ /**
+ * Creates a fix command that removes the node or token from the source.
+ * The fix is not applied until applyFixes() is called.
+ * @param {TxtNode} node The node or token to remove.
+ * @returns {IntermediateFixCommand} The fix command.
+ */
+ TextlintRuleContextFixCommandGeneratorImpl.prototype.remove = function (node) {
+ return this.replaceText(node, "");
+ };
+ /**
+ * Creates a fix command that removes the specified range of text from the source.
+ * The fix is not applied until applyFixes() is called.
+ * @param {number[]} range The range to remove, first item is start of range, second
+ * is end of range.
+ * The `range` should be **relative** value from reported node.
+ * @returns {IntermediateFixCommand} The fix command.
+ */
+ TextlintRuleContextFixCommandGeneratorImpl.prototype.removeRange = function (range) {
+ return this.replaceTextRange(range, "");
+ };
+ return TextlintRuleContextFixCommandGeneratorImpl;
+}());
+export { TextlintRuleContextFixCommandGeneratorImpl };
+//# sourceMappingURL=TextlintRuleContextFixCommandGeneratorImpl.js.map
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/context/TextlintRuleContextFixCommandGeneratorImpl.js.map b/node_modules/@textlint/kernel/module/context/TextlintRuleContextFixCommandGeneratorImpl.js.map
new file mode 100644
index 000000000..2751ddd59
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/context/TextlintRuleContextFixCommandGeneratorImpl.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"TextlintRuleContextFixCommandGeneratorImpl.js","sourceRoot":"","sources":["../../src/context/TextlintRuleContextFixCommandGeneratorImpl.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAIjC;;;;;;GAMG;AACH,SAAS,YAAY,CAAC,KAAa,EAAE,IAAY;IAC7C,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAC;IACvC,OAAO;QACH,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;QACrB,IAAI,MAAA;QACJ,UAAU,EAAE,KAAK;KACpB,CAAC;AACN,CAAC;AAED;;;;;;GAMG;AACH,SAAS,oBAAoB,CAAC,KAAa,EAAE,IAAY;IACrD,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAC;IACvC,OAAO;QACH,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;QACrB,IAAI,MAAA;QACJ,UAAU,EAAE,IAAI;KACnB,CAAC;AACN,CAAC;AAED;;;;;;GAMG;AACH;IAAA;IAsGA,CAAC;IArGG;;;;;;OAMG;IACH,oEAAe,GAAf,UAAgB,IAAa,EAAE,IAAY;QACvC,OAAO,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACrD,CAAC;IAED;;;;;;;;OAQG;IACH,yEAAoB,GAApB,UAAqB,KAA8B,EAAE,IAAY;QAC7D,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACxC,CAAC;IAED;;;;;;OAMG;IACH,qEAAgB,GAAhB,UAAiB,IAAa,EAAE,IAAY;QACxC,OAAO,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACrD,CAAC;IAED;;;;;;;;OAQG;IACH,0EAAqB,GAArB,UAAsB,KAA8B,EAAE,IAAY;QAC9D,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACxC,CAAC;IAED;;;;;;OAMG;IACH,gEAAW,GAAX,UAAY,IAAa,EAAE,IAAY;QACnC,OAAO;YACH,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,IAAI,MAAA;YACJ,UAAU,EAAE,IAAI;SACnB,CAAC;IACN,CAAC;IAED;;;;;;;;OAQG;IACH,qEAAgB,GAAhB,UAAiB,KAA8B,EAAE,IAAY;QACzD,OAAO;YACH,KAAK,OAAA;YACL,IAAI,MAAA;YACJ,UAAU,EAAE,KAAK;SACpB,CAAC;IACN,CAAC;IAED;;;;;OAKG;IACH,2DAAM,GAAN,UAAO,IAAa;QAChB,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACtC,CAAC;IAED;;;;;;;OAOG;IACH,gEAAW,GAAX,UAAY,KAA8B;QACtC,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC5C,CAAC;IACL,iDAAC;AAAD,CAAC,AAtGD,IAsGC"}
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/context/TextlintRuleContextImpl.d.ts b/node_modules/@textlint/kernel/module/context/TextlintRuleContextImpl.d.ts
new file mode 100644
index 000000000..8cf6e8bcd
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/context/TextlintRuleContextImpl.d.ts
@@ -0,0 +1,66 @@
+import { TextlintRuleContext, TextlintRuleContextArgs, TextlintRuleError, TextlintRuleReportedObject, TextlintRuleSeverityLevel } from "@textlint/types";
+import { ASTNodeTypes, TxtNode } from "@textlint/ast-node-types";
+import { TextlintRuleContextFixCommandGeneratorImpl } from "./TextlintRuleContextFixCommandGeneratorImpl";
+import { TextlintRuleErrorImpl } from "./TextlintRuleErrorImpl";
+export declare class TextlintRuleContextImpl implements TextlintRuleContext {
+ private _ruleId;
+ private _sourceCode;
+ private _report;
+ private _configBaseDir?;
+ private _severityLevel;
+ constructor(args: TextlintRuleContextArgs);
+ /**
+ * Rule id
+ * @returns {string}
+ */
+ get id(): string;
+ /**
+ * severity level
+ */
+ get severity(): TextlintRuleSeverityLevel;
+ /**
+ * Node's type values
+ * @type {ASTNodeTypes}
+ */
+ get Syntax(): typeof ASTNodeTypes;
+ /**
+ * CustomError object
+ * @type {RuleError}
+ */
+ get RuleError(): typeof TextlintRuleErrorImpl;
+ /**
+ * Rule fixer command object
+ * @type {RuleFixer}
+ */
+ get fixer(): TextlintRuleContextFixCommandGeneratorImpl;
+ /**
+ * report function that is called in a rule
+ */
+ report: (node: TxtNode, ruleError: TextlintRuleError | TextlintRuleReportedObject, _shouldNotUsed?: any) => void;
+ /**
+ * get file path current processing.
+ */
+ getFilePath: () => string | undefined;
+ /**
+ * Gets the source code for the given node.
+ * @param {TxtNode=} node The AST node to get the text for.
+ * @param {int=} beforeCount The number of characters before the node to retrieve.
+ * @param {int=} afterCount The number of characters after the node to retrieve.
+ * @returns {string} The text representing the AST node.
+ */
+ getSource: (node?: TxtNode | undefined, beforeCount?: number | undefined, afterCount?: number | undefined) => string;
+ /**
+ * get config base directory path
+ * config base directory path often is the place of .textlintrc
+ *
+ * e.g.) /path/to/dir/.textlintrc
+ * `getConfigBaseDir()` return `"/path/to/dir/"`.
+ *
+ * When using textlint as module, it is specified by `configBaseDir`
+ * If not found the value, return undefined.
+ *
+ * You can use it for resolving relative path from config dir.
+ * @returns {string|undefined}
+ */
+ getConfigBaseDir: () => string | undefined;
+}
diff --git a/node_modules/@textlint/kernel/module/context/TextlintRuleContextImpl.js b/node_modules/@textlint/kernel/module/context/TextlintRuleContextImpl.js
new file mode 100644
index 000000000..3b3ee217f
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/context/TextlintRuleContextImpl.js
@@ -0,0 +1,122 @@
+import assert from "assert";
+import { TextlintRuleContextFixCommandGeneratorImpl } from "./TextlintRuleContextFixCommandGeneratorImpl";
+import { TextlintRuleSeverityLevelKeys } from "./TextlintRuleSeverityLevelKeys";
+import { TextlintRuleErrorImpl } from "./TextlintRuleErrorImpl";
+var ruleFixer = new TextlintRuleContextFixCommandGeneratorImpl();
+var TextlintRuleContextImpl = /** @class */ (function () {
+ function TextlintRuleContextImpl(args) {
+ var _this = this;
+ /**
+ * report function that is called in a rule
+ */
+ this.report = function (node, ruleError, _shouldNotUsed) {
+ assert.ok(!(node instanceof TextlintRuleErrorImpl), "1st argument should be node. Usage: `report(node, ruleError);`");
+ assert.ok(_shouldNotUsed === undefined, "3rd argument should not be used. Usage: `report(node, ruleError);`");
+ if (ruleError instanceof TextlintRuleErrorImpl) {
+ // severity come from `.textlintrc` option like `{ "" : { serverity: "warning" } } `
+ _this._report({ ruleId: _this._ruleId, node: node, severity: _this._severityLevel, ruleError: ruleError });
+ }
+ else {
+ var ruleReportedObject = ruleError;
+ // severity come from report arguments like `report(node, { severity: 1 })`
+ var level = ruleReportedObject.severity || TextlintRuleSeverityLevelKeys.error;
+ _this._report({ ruleId: _this._ruleId, node: node, severity: level, ruleError: ruleReportedObject });
+ }
+ };
+ /**
+ * get file path current processing.
+ */
+ this.getFilePath = function () {
+ return _this._sourceCode.getFilePath();
+ };
+ /**
+ * Gets the source code for the given node.
+ * @param {TxtNode=} node The AST node to get the text for.
+ * @param {int=} beforeCount The number of characters before the node to retrieve.
+ * @param {int=} afterCount The number of characters after the node to retrieve.
+ * @returns {string} The text representing the AST node.
+ */
+ this.getSource = function (node, beforeCount, afterCount) {
+ return _this._sourceCode.getSource(node, beforeCount, afterCount);
+ };
+ /**
+ * get config base directory path
+ * config base directory path often is the place of .textlintrc
+ *
+ * e.g.) /path/to/dir/.textlintrc
+ * `getConfigBaseDir()` return `"/path/to/dir/"`.
+ *
+ * When using textlint as module, it is specified by `configBaseDir`
+ * If not found the value, return undefined.
+ *
+ * You can use it for resolving relative path from config dir.
+ * @returns {string|undefined}
+ */
+ this.getConfigBaseDir = function () {
+ return _this._configBaseDir;
+ };
+ this._ruleId = args.ruleId;
+ this._sourceCode = args.sourceCode;
+ this._report = args.report;
+ this._configBaseDir = args.configBaseDir;
+ this._severityLevel = args.severityLevel;
+ Object.freeze(this);
+ }
+ Object.defineProperty(TextlintRuleContextImpl.prototype, "id", {
+ /**
+ * Rule id
+ * @returns {string}
+ */
+ get: function () {
+ return this._ruleId;
+ },
+ enumerable: false,
+ configurable: true
+ });
+ Object.defineProperty(TextlintRuleContextImpl.prototype, "severity", {
+ /**
+ * severity level
+ */
+ get: function () {
+ return this._severityLevel;
+ },
+ enumerable: false,
+ configurable: true
+ });
+ Object.defineProperty(TextlintRuleContextImpl.prototype, "Syntax", {
+ /**
+ * Node's type values
+ * @type {ASTNodeTypes}
+ */
+ get: function () {
+ return this._sourceCode.getSyntax();
+ },
+ enumerable: false,
+ configurable: true
+ });
+ Object.defineProperty(TextlintRuleContextImpl.prototype, "RuleError", {
+ /**
+ * CustomError object
+ * @type {RuleError}
+ */
+ get: function () {
+ return TextlintRuleErrorImpl;
+ },
+ enumerable: false,
+ configurable: true
+ });
+ Object.defineProperty(TextlintRuleContextImpl.prototype, "fixer", {
+ /**
+ * Rule fixer command object
+ * @type {RuleFixer}
+ */
+ get: function () {
+ return ruleFixer;
+ },
+ enumerable: false,
+ configurable: true
+ });
+ return TextlintRuleContextImpl;
+}());
+export { TextlintRuleContextImpl };
+//# sourceMappingURL=TextlintRuleContextImpl.js.map
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/context/TextlintRuleContextImpl.js.map b/node_modules/@textlint/kernel/module/context/TextlintRuleContextImpl.js.map
new file mode 100644
index 000000000..f01f56b99
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/context/TextlintRuleContextImpl.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"TextlintRuleContextImpl.js","sourceRoot":"","sources":["../../src/context/TextlintRuleContextImpl.ts"],"names":[],"mappings":"AAUA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,0CAA0C,EAAE,MAAM,8CAA8C,CAAC;AAC1G,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAChF,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,IAAM,SAAS,GAAG,IAAI,0CAA0C,EAAE,CAAC;AAEnE;IAOI,iCAAY,IAA6B;QAAzC,iBAOC;QAyCD;;WAEG;QACH,WAAM,GAAG,UAAC,IAAa,EAAE,SAAyD,EAAE,cAAoB;YACpG,MAAM,CAAC,EAAE,CACL,CAAC,CAAC,IAAI,YAAY,qBAAqB,CAAC,EACxC,gEAAgE,CACnE,CAAC;YACF,MAAM,CAAC,EAAE,CAAC,cAAc,KAAK,SAAS,EAAE,oEAAoE,CAAC,CAAC;YAC9G,IAAI,SAAS,YAAY,qBAAqB,EAAE;gBAC5C,+FAA+F;gBAC/F,KAAI,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,KAAI,CAAC,OAAO,EAAE,IAAI,MAAA,EAAE,QAAQ,EAAE,KAAI,CAAC,cAAc,EAAE,SAAS,WAAA,EAAE,CAAC,CAAC;aAC1F;iBAAM;gBACH,IAAM,kBAAkB,GAA+B,SAAS,CAAC;gBACjE,2EAA2E;gBAC3E,IAAM,KAAK,GAAG,kBAAkB,CAAC,QAAQ,IAAI,6BAA6B,CAAC,KAAK,CAAC;gBACjF,KAAI,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,KAAI,CAAC,OAAO,EAAE,IAAI,MAAA,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC,CAAC;aAChG;QACL,CAAC,CAAC;QAEF;;WAEG;QACH,gBAAW,GAAG;YACV,OAAO,KAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;QAC1C,CAAC,CAAC;QAEF;;;;;;WAMG;QACH,cAAS,GAAG,UAAC,IAAc,EAAE,WAAoB,EAAE,UAAmB;YAClE,OAAO,KAAI,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;QACrE,CAAC,CAAC;QAEF;;;;;;;;;;;;WAYG;QACH,qBAAgB,GAAG;YACf,OAAO,KAAI,CAAC,cAAc,CAAC;QAC/B,CAAC,CAAC;QApGE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC;QACnC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC;QACzC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC;QACzC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAMD,sBAAI,uCAAE;QAJN;;;WAGG;aACH;YACI,OAAO,IAAI,CAAC,OAAO,CAAC;QACxB,CAAC;;;OAAA;IAKD,sBAAI,6CAAQ;QAHZ;;WAEG;aACH;YACI,OAAO,IAAI,CAAC,cAAc,CAAC;QAC/B,CAAC;;;OAAA;IAMD,sBAAI,2CAAM;QAJV;;;WAGG;aACH;YACI,OAAO,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC;QACxC,CAAC;;;OAAA;IAMD,sBAAI,8CAAS;QAJb;;;WAGG;aACH;YACI,OAAO,qBAAqB,CAAC;QACjC,CAAC;;;OAAA;IAMD,sBAAI,0CAAK;QAJT;;;WAGG;aACH;YACI,OAAO,SAAS,CAAC;QACrB,CAAC;;;OAAA;IAwDL,8BAAC;AAAD,CAAC,AA7GD,IA6GC"}
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/context/TextlintRuleErrorImpl.d.ts b/node_modules/@textlint/kernel/module/context/TextlintRuleErrorImpl.d.ts
new file mode 100644
index 000000000..606775dc4
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/context/TextlintRuleErrorImpl.d.ts
@@ -0,0 +1,17 @@
+import type { TextlintRuleContextFixCommand, TextlintRuleErrorPadding, TextlintRuleError } from "@textlint/types";
+export declare class TextlintRuleErrorImpl implements TextlintRuleError {
+ message: string;
+ line?: number;
+ column?: number;
+ index?: number;
+ fix?: TextlintRuleContextFixCommand;
+ /**
+ * RuleError is like Error object.
+ * It's used for adding to TextlintResult.
+ * @param message error message should start with lowercase letter
+ * @param [paddingLocation] - the object has padding {line, column} for actual error reason
+ * @constructor
+ */
+ constructor(message: string, paddingLocation?: number | TextlintRuleErrorPadding);
+ toString(): string;
+}
diff --git a/node_modules/@textlint/kernel/module/context/TextlintRuleErrorImpl.js b/node_modules/@textlint/kernel/module/context/TextlintRuleErrorImpl.js
new file mode 100644
index 000000000..b007f58cc
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/context/TextlintRuleErrorImpl.js
@@ -0,0 +1,53 @@
+// LICENSE : MIT
+"use strict";
+var TextlintRuleErrorImpl = /** @class */ (function () {
+ /**
+ * RuleError is like Error object.
+ * It's used for adding to TextlintResult.
+ * @param message error message should start with lowercase letter
+ * @param [paddingLocation] - the object has padding {line, column} for actual error reason
+ * @constructor
+ */
+ function TextlintRuleErrorImpl(message, paddingLocation) {
+ this.message = message;
+ if (typeof paddingLocation === "object") {
+ /**
+ * padding lineNumber
+ * @type {number}
+ */
+ this.line = paddingLocation.line;
+ /**
+ * padding column
+ * @type {number}
+ */
+ this.column = paddingLocation.column;
+ /**
+ * padding index
+ * @type {number}
+ */
+ this.index = paddingLocation.index;
+ /**
+ * fixCommand object
+ * @type {TextlintRuleContextFixCommand}
+ */
+ this.fix = paddingLocation.fix;
+ }
+ else if (typeof paddingLocation === "number") {
+ // this is deprecated
+ // should pass padding as object.
+ this.column = paddingLocation;
+ }
+ }
+ TextlintRuleErrorImpl.prototype.toString = function () {
+ return JSON.stringify({
+ message: this.message,
+ line: this.line,
+ column: this.column,
+ index: this.index,
+ fix: this.fix
+ });
+ };
+ return TextlintRuleErrorImpl;
+}());
+export { TextlintRuleErrorImpl };
+//# sourceMappingURL=TextlintRuleErrorImpl.js.map
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/context/TextlintRuleErrorImpl.js.map b/node_modules/@textlint/kernel/module/context/TextlintRuleErrorImpl.js.map
new file mode 100644
index 000000000..5f99fbfc3
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/context/TextlintRuleErrorImpl.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"TextlintRuleErrorImpl.js","sourceRoot":"","sources":["../../src/context/TextlintRuleErrorImpl.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAChB,YAAY,CAAC;AAIb;IAOI;;;;;;OAMG;IACH,+BAAY,OAAe,EAAE,eAAmD;QAC5E,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,OAAO,eAAe,KAAK,QAAQ,EAAE;YACrC;;;eAGG;YACH,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC;YACjC;;;eAGG;YACH,IAAI,CAAC,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC;YACrC;;;eAGG;YACH,IAAI,CAAC,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC;YACnC;;;eAGG;YACH,IAAI,CAAC,GAAG,GAAG,eAAe,CAAC,GAAG,CAAC;SAClC;aAAM,IAAI,OAAO,eAAe,KAAK,QAAQ,EAAE;YAC5C,qBAAqB;YACrB,iCAAiC;YACjC,IAAI,CAAC,MAAM,GAAG,eAAe,CAAC;SACjC;IACL,CAAC;IAED,wCAAQ,GAAR;QACI,OAAO,IAAI,CAAC,SAAS,CAAC;YAClB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,GAAG,EAAE,IAAI,CAAC,GAAG;SAChB,CAAC,CAAC;IACP,CAAC;IACL,4BAAC;AAAD,CAAC,AArDD,IAqDC"}
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/context/TextlintRuleSeverityLevelKeys.d.ts b/node_modules/@textlint/kernel/module/context/TextlintRuleSeverityLevelKeys.d.ts
new file mode 100644
index 000000000..c8feb444c
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/context/TextlintRuleSeverityLevelKeys.d.ts
@@ -0,0 +1,7 @@
+import type { TextlintRuleSeverityLevel } from "@textlint/types";
+/**
+ * Keys of TextlintRuleSeverityLevel
+ */
+export declare const TextlintRuleSeverityLevelKeys: {
+ [index: string]: TextlintRuleSeverityLevel;
+};
diff --git a/node_modules/@textlint/kernel/module/context/TextlintRuleSeverityLevelKeys.js b/node_modules/@textlint/kernel/module/context/TextlintRuleSeverityLevelKeys.js
new file mode 100644
index 000000000..fa0258db9
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/context/TextlintRuleSeverityLevelKeys.js
@@ -0,0 +1,10 @@
+/**
+ * Keys of TextlintRuleSeverityLevel
+ */
+export var TextlintRuleSeverityLevelKeys = {
+ none: 0,
+ info: 0,
+ warning: 1,
+ error: 2
+};
+//# sourceMappingURL=TextlintRuleSeverityLevelKeys.js.map
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/context/TextlintRuleSeverityLevelKeys.js.map b/node_modules/@textlint/kernel/module/context/TextlintRuleSeverityLevelKeys.js.map
new file mode 100644
index 000000000..d6e3c613a
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/context/TextlintRuleSeverityLevelKeys.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"TextlintRuleSeverityLevelKeys.js","sourceRoot":"","sources":["../../src/context/TextlintRuleSeverityLevelKeys.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,CAAC,IAAM,6BAA6B,GAEtC;IACA,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;IACP,OAAO,EAAE,CAAC;IACV,KAAK,EAAE,CAAC;CACX,CAAC"}
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/context/TextlintSourceCodeImpl.d.ts b/node_modules/@textlint/kernel/module/context/TextlintSourceCodeImpl.d.ts
new file mode 100644
index 000000000..0b3521e87
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/context/TextlintSourceCodeImpl.d.ts
@@ -0,0 +1,57 @@
+import type { TextlintSourceCode, TextlintSourceCodeArgs, TextlintSourceCodeLocation, TextlintSourceCodePosition, TextlintSourceCodeRange } from "@textlint/types";
+import { AnyTxtNode, ASTNodeTypes } from "@textlint/ast-node-types";
+/**
+ * This class represent of source code.
+ */
+export declare class TextlintSourceCodeImpl implements TextlintSourceCode {
+ hasBOM: boolean;
+ text: string;
+ ast: AnyTxtNode;
+ filePath: string | undefined;
+ ext: string;
+ private _structuredSource;
+ /**
+ * @param {string} text
+ * @param {Object} ast
+ * @param {string} ext
+ * @param {string} [filePath]
+ */
+ constructor({ text, ast, ext, filePath }: TextlintSourceCodeArgs);
+ /**
+ * @returns {ASTNodeTypes}
+ */
+ getSyntax(): typeof ASTNodeTypes;
+ /**
+ * get filePath
+ * @returns {string|undefined}
+ */
+ getFilePath(): string | undefined;
+ /**
+ * Gets the source code for the given node.
+ * @param {AnyTxtNode=} node The AST node to get the text for.
+ * @param {int=} beforeCount The number of characters before the node to retrieve.
+ * @param {int=} afterCount The number of characters after the node to retrieve.
+ * @returns {string} The text representing the AST node.
+ */
+ getSource(node?: AnyTxtNode, beforeCount?: number, afterCount?: number): string;
+ /**
+ * @param {TextlintSourceCodeLocation} loc - location indicator.
+ * @return {[ number, number ]} range.
+ */
+ locationToRange(loc: TextlintSourceCodeLocation): TextlintSourceCodeRange;
+ /**
+ * @param {[ number, number ]} range - pair of indice.
+ * @return {TextlintSourceCodeLocation} location.
+ */
+ rangeToLocation(range: TextlintSourceCodeRange): TextlintSourceCodeLocation;
+ /**
+ * @param {Position} pos - position indicator.
+ * @return {number} index.
+ */
+ positionToIndex(pos: TextlintSourceCodePosition): number;
+ /**
+ * @param {number} index - index to the source code.
+ * @return {Position} position.
+ */
+ indexToPosition(index: number): TextlintSourceCodePosition;
+}
diff --git a/node_modules/@textlint/kernel/module/context/TextlintSourceCodeImpl.js b/node_modules/@textlint/kernel/module/context/TextlintSourceCodeImpl.js
new file mode 100644
index 000000000..eff78db1e
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/context/TextlintSourceCodeImpl.js
@@ -0,0 +1,110 @@
+import { ASTNodeTypes } from "@textlint/ast-node-types";
+import * as assert from "assert";
+import StructuredSource from "structured-source";
+/**
+ * Validates that the given AST has the required information.
+ * @param {AnyTxtNode} [ast] The Program node of the AST to check.
+ * @throws {Error} If the AST doesn't contain the correct information.
+ * @returns {void}
+ * @private
+ */
+function validate(ast) {
+ if (!ast.loc) {
+ throw new Error("AST is missing location information.");
+ }
+ if (!ast.range) {
+ throw new Error("AST is missing range information");
+ }
+}
+/**
+ * This class represent of source code.
+ */
+var TextlintSourceCodeImpl = /** @class */ (function () {
+ /**
+ * @param {string} text
+ * @param {Object} ast
+ * @param {string} ext
+ * @param {string} [filePath]
+ */
+ function TextlintSourceCodeImpl(_a) {
+ var _b = _a.text, text = _b === void 0 ? "" : _b, ast = _a.ast, ext = _a.ext, filePath = _a.filePath;
+ validate(ast);
+ assert.ok(ext || filePath, "should be set either of fileExt or filePath.");
+ this.hasBOM = text.charCodeAt(0) === 0xfeff;
+ this.text = this.hasBOM ? text.slice(1) : text;
+ /**
+ * @type StructuredSource
+ */
+ this._structuredSource = new StructuredSource(this.text);
+ this.ast = ast;
+ this.filePath = filePath;
+ /**
+ * fileType .md .txt ...
+ * @type {string}
+ */
+ this.ext = ext;
+ }
+ /**
+ * @returns {ASTNodeTypes}
+ */
+ TextlintSourceCodeImpl.prototype.getSyntax = function () {
+ return ASTNodeTypes;
+ };
+ /**
+ * get filePath
+ * @returns {string|undefined}
+ */
+ TextlintSourceCodeImpl.prototype.getFilePath = function () {
+ return this.filePath;
+ };
+ /**
+ * Gets the source code for the given node.
+ * @param {AnyTxtNode=} node The AST node to get the text for.
+ * @param {int=} beforeCount The number of characters before the node to retrieve.
+ * @param {int=} afterCount The number of characters after the node to retrieve.
+ * @returns {string} The text representing the AST node.
+ */
+ TextlintSourceCodeImpl.prototype.getSource = function (node, beforeCount, afterCount) {
+ var currentText = this.text;
+ if (node) {
+ var start = Math.max(node.range[0] - (beforeCount || 0), 0);
+ var end = node.range[1] + (afterCount || 0);
+ return currentText.slice(start, end);
+ }
+ else {
+ return currentText;
+ }
+ };
+ // StructuredSource wrapper
+ /**
+ * @param {TextlintSourceCodeLocation} loc - location indicator.
+ * @return {[ number, number ]} range.
+ */
+ TextlintSourceCodeImpl.prototype.locationToRange = function (loc) {
+ return this._structuredSource.locationToRange(loc);
+ };
+ /**
+ * @param {[ number, number ]} range - pair of indice.
+ * @return {TextlintSourceCodeLocation} location.
+ */
+ TextlintSourceCodeImpl.prototype.rangeToLocation = function (range) {
+ return this._structuredSource.rangeToLocation(range);
+ };
+ /**
+ * @param {Position} pos - position indicator.
+ * @return {number} index.
+ */
+ TextlintSourceCodeImpl.prototype.positionToIndex = function (pos) {
+ return this._structuredSource.positionToIndex(pos);
+ };
+ /**
+ * @param {number} index - index to the source code.
+ * @return {Position} position.
+ */
+ TextlintSourceCodeImpl.prototype.indexToPosition = function (index) {
+ return this._structuredSource.indexToPosition(index);
+ };
+ return TextlintSourceCodeImpl;
+}());
+export { TextlintSourceCodeImpl };
+//# sourceMappingURL=TextlintSourceCodeImpl.js.map
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/context/TextlintSourceCodeImpl.js.map b/node_modules/@textlint/kernel/module/context/TextlintSourceCodeImpl.js.map
new file mode 100644
index 000000000..a1b2c8fa9
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/context/TextlintSourceCodeImpl.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"TextlintSourceCodeImpl.js","sourceRoot":"","sources":["../../src/context/TextlintSourceCodeImpl.ts"],"names":[],"mappings":"AAOA,OAAO,EAAc,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,gBAAgB,MAAM,mBAAmB,CAAC;AAEjD;;;;;;GAMG;AACH,SAAS,QAAQ,CAAC,GAAe;IAC7B,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE;QACV,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;KAC3D;IAED,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE;QACZ,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;KACvD;AACL,CAAC;AAED;;GAEG;AACH;IASI;;;;;OAKG;IACH,gCAAY,EAAyD;YAAvD,YAAS,EAAT,IAAI,mBAAG,EAAE,KAAA,EAAE,GAAG,SAAA,EAAE,GAAG,SAAA,EAAE,QAAQ,cAAA;QACvC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACd,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,QAAQ,EAAE,8CAA8C,CAAC,CAAC;QAC3E,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC;QAC5C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC/C;;WAEG;QACH,IAAI,CAAC,iBAAiB,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzD,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB;;;WAGG;QACH,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,0CAAS,GAAT;QACI,OAAO,YAAY,CAAC;IACxB,CAAC;IAED;;;OAGG;IACH,4CAAW,GAAX;QACI,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED;;;;;;OAMG;IACH,0CAAS,GAAT,UAAU,IAAiB,EAAE,WAAoB,EAAE,UAAmB;QAClE,IAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC;QAC9B,IAAI,IAAI,EAAE;YACN,IAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC9D,IAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC;YAC9C,OAAO,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;SACxC;aAAM;YACH,OAAO,WAAW,CAAC;SACtB;IACL,CAAC;IAED,2BAA2B;IAC3B;;;OAGG;IACH,gDAAe,GAAf,UAAgB,GAA+B;QAC3C,OAAO,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;IACvD,CAAC;IAED;;;OAGG;IACH,gDAAe,GAAf,UAAgB,KAA8B;QAC1C,OAAO,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IACzD,CAAC;IAED;;;OAGG;IACH,gDAAe,GAAf,UAAgB,GAA+B;QAC3C,OAAO,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;IACvD,CAAC;IAED;;;OAGG;IACH,gDAAe,GAAf,UAAgB,KAAa;QACzB,OAAO,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IACzD,CAAC;IACL,6BAAC;AAAD,CAAC,AAlGD,IAkGC"}
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/core/source-location.d.ts b/node_modules/@textlint/kernel/module/core/source-location.d.ts
new file mode 100644
index 000000000..a9c72cfda
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/core/source-location.d.ts
@@ -0,0 +1,25 @@
+import type { TextlintMessageFixCommand, TextlintRuleContextReportFunctionArgs, TextlintRuleError, TextlintSourceCode } from "@textlint/types";
+export interface ReportMessage {
+ ruleId: string;
+ node: any;
+ severity: number;
+ ruleError: TextlintRuleError;
+}
+export default class SourceLocation {
+ private source;
+ constructor(source: TextlintSourceCode);
+ /**
+ * adjust node's location with error's padding location.
+ */
+ adjust(reportArgs: TextlintRuleContextReportFunctionArgs): {
+ line: number;
+ column: number;
+ fix?: TextlintMessageFixCommand;
+ };
+ private toAbsoluteLocation;
+ /**
+ * Adjust `fix` command range
+ * if `fix.isAbsolute` is not absolute position, adjust the position from the `node`.
+ */
+ private toAbsolutePositionFix;
+}
diff --git a/node_modules/@textlint/kernel/module/core/source-location.js b/node_modules/@textlint/kernel/module/core/source-location.js
new file mode 100644
index 000000000..bdafb07b3
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/core/source-location.js
@@ -0,0 +1,145 @@
+import assert from "assert";
+import { throwIfTesting } from "@textlint/feature-flag";
+var SourceLocation = /** @class */ (function () {
+ function SourceLocation(source) {
+ this.source = source;
+ }
+ /**
+ * adjust node's location with error's padding location.
+ */
+ SourceLocation.prototype.adjust = function (reportArgs) {
+ var node = reportArgs.node, ruleError = reportArgs.ruleError, ruleId = reportArgs.ruleId;
+ var errorPrefix = "[" + ruleId + "]" || "";
+ var padding = ruleError;
+ /*
+ FIXME: It is old and un-document way
+ new RuleError("message", index);
+ */
+ var _backwardCompatibleIndexValue;
+ if (typeof padding === "number") {
+ _backwardCompatibleIndexValue = padding;
+ throwIfTesting(errorPrefix + " This is un-document way:\nreport(node, new RuleError(\"message\", index);\n\nPlease use { index }: \n\nreport(node, new RuleError(\"message\", {\n index: paddingLineColumn\n});\n");
+ }
+ // when running from textlint-tester, assert
+ if (padding.line === undefined && padding.column !== undefined) {
+ // FIXME: Backward compatible <= textlint.5.5
+ throwIfTesting(errorPrefix + " Have to use a sets with \"line\" and \"column\".\nSee FAQ: https://github.com/textlint/textlint/blob/master/docs/faq/line-column-or-index.md \n\nreport(node, new RuleError(\"message\", {\n line: paddingLineNumber,\n column: paddingLineColumn\n});\n\nOR use \"index\" property insteadof only \"column\".\n\nreport(node, new RuleError(\"message\", {\n index: paddingLineColumn\n});\n");
+ }
+ // When either one of {column, line} or {index} is not used, throw error
+ if ((padding.line !== undefined || padding.column !== undefined) && padding.index !== undefined) {
+ // Introduced textlint 5.6
+ // https://github.com/textlint/textlint/releases/tag/5.6.0
+ // Always throw Error
+ throw new Error(errorPrefix + " Have to use one of {line, column} or {index}.\nYou should use either one:\n\nuse \"line\" and \"column\" property\n\nreport(node, new RuleError(\"message\", {\n line: paddingLineNumber,\n column: paddingLineColumn\n});\n\nOR \n\nuse \"index\" property\n\nreport(node, new RuleError(\"message\", {\n index: paddingIndexValue\n});\n");
+ }
+ var adjustedLoc = this.toAbsoluteLocation(node, padding, _backwardCompatibleIndexValue);
+ var adjustedFix = this.toAbsolutePositionFix(node, padding);
+ /*
+ {
+ line,
+ column
+ fix?
+ }
+ */
+ return Object.assign({}, adjustedLoc, adjustedFix);
+ };
+ SourceLocation.prototype.toAbsoluteLocation = function (node, padding, _paddingIndex) {
+ var nodeRange = node.range;
+ var line = node.loc.start.line;
+ var column = node.loc.start.column;
+ // when use {index}
+ if (padding.index !== undefined || _paddingIndex !== undefined) {
+ var startNodeIndex = nodeRange[0];
+ var paddingIndex = _paddingIndex || padding.index;
+ var position = this.source.indexToPosition(startNodeIndex + paddingIndex);
+ return {
+ column: position.column,
+ line: position.line
+ };
+ }
+ // when use {line, column}
+ if (padding.line !== undefined && padding.column !== undefined) {
+ if (padding.line > 0) {
+ var addedLine = line + padding.line;
+ // when report with padding {line, column}, message.column should be 0 + padding.column.
+ // In other word, padding line > 0 and message.column start with 0.
+ if (padding.column > 0) {
+ return {
+ line: addedLine,
+ column: padding.column
+ };
+ }
+ else {
+ return {
+ line: addedLine,
+ column: column
+ };
+ }
+ }
+ }
+ // when use { line } only
+ if (padding.line !== undefined && padding.line > 0) {
+ var addedLine = line + padding.line;
+ return {
+ line: addedLine,
+ column: column
+ };
+ }
+ // when use { column } only
+ // FIXME: backward compatible @ un-document
+ // Remove next version 6?
+ /*
+ new RuleError({
+ column: index
+ });
+ */
+ if (padding.column !== undefined && padding.column > 0) {
+ var addedColumn = column + padding.column;
+ return {
+ line: line,
+ column: addedColumn
+ };
+ }
+ return {
+ column: column,
+ line: line
+ };
+ };
+ /**
+ * Adjust `fix` command range
+ * if `fix.isAbsolute` is not absolute position, adjust the position from the `node`.
+ */
+ SourceLocation.prototype.toAbsolutePositionFix = function (node, ruleErrorObject) {
+ var nodeRange = node.range;
+ // if not found `fix`, return empty object
+ if (ruleErrorObject.fix === undefined) {
+ return {};
+ }
+ assert.ok(typeof ruleErrorObject.fix === "object", "fix should be FixCommand object");
+ // if absolute position return self
+ if (ruleErrorObject.fix.isAbsolute) {
+ return {
+ // remove other property that is not related `fix`
+ // the return object will be merged by `Object.assign`
+ fix: {
+ range: ruleErrorObject.fix.range,
+ text: ruleErrorObject.fix.text
+ }
+ };
+ }
+ // if relative position return adjusted position
+ return {
+ // fix(command) is relative from node's range
+ fix: {
+ range: [
+ nodeRange[0] + ruleErrorObject.fix.range[0],
+ nodeRange[0] + ruleErrorObject.fix.range[1]
+ ],
+ text: ruleErrorObject.fix.text
+ }
+ };
+ };
+ return SourceLocation;
+}());
+export default SourceLocation;
+//# sourceMappingURL=source-location.js.map
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/core/source-location.js.map b/node_modules/@textlint/kernel/module/core/source-location.js.map
new file mode 100644
index 000000000..2bc32ff3f
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/core/source-location.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"source-location.js","sourceRoot":"","sources":["../../src/core/source-location.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/descriptor/Descriptor.d.ts b/node_modules/@textlint/kernel/module/descriptor/Descriptor.d.ts
new file mode 100644
index 000000000..21c698b91
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/descriptor/Descriptor.d.ts
@@ -0,0 +1,5 @@
+export interface Descriptor {
+ id: string;
+ equals(target: this): boolean;
+ toKernel(): T;
+}
diff --git a/node_modules/@textlint/kernel/module/descriptor/Descriptor.js b/node_modules/@textlint/kernel/module/descriptor/Descriptor.js
new file mode 100644
index 000000000..87ccede8d
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/descriptor/Descriptor.js
@@ -0,0 +1,2 @@
+export {};
+//# sourceMappingURL=Descriptor.js.map
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/descriptor/Descriptor.js.map b/node_modules/@textlint/kernel/module/descriptor/Descriptor.js.map
new file mode 100644
index 000000000..6271b5a40
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/descriptor/Descriptor.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"Descriptor.js","sourceRoot":"","sources":["../../src/descriptor/Descriptor.ts"],"names":[],"mappings":""}
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/descriptor/DescriptorUtil.d.ts b/node_modules/@textlint/kernel/module/descriptor/DescriptorUtil.d.ts
new file mode 100644
index 000000000..0e89396a6
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/descriptor/DescriptorUtil.d.ts
@@ -0,0 +1,9 @@
+import { Descriptor } from "./Descriptor";
+/**
+ * Remove duplicated descriptor
+ * For example, A1 equals to A2
+ * [A1, B, A2]
+ * => filter
+ * [A1, B]
+ */
+export declare const filterDuplicateDescriptor: >(descriptors: T[]) => T[];
diff --git a/node_modules/@textlint/kernel/module/descriptor/DescriptorUtil.js b/node_modules/@textlint/kernel/module/descriptor/DescriptorUtil.js
new file mode 100644
index 000000000..01eb9a164
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/descriptor/DescriptorUtil.js
@@ -0,0 +1,20 @@
+/**
+ * Remove duplicated descriptor
+ * For example, A1 equals to A2
+ * [A1, B, A2]
+ * => filter
+ * [A1, B]
+ */
+export var filterDuplicateDescriptor = function (descriptors) {
+ var newDescriptorList = [];
+ descriptors.forEach(function (descriptor) {
+ var existsDescriptor = newDescriptorList.some(function (existDescriptor) {
+ return existDescriptor.equals(descriptor);
+ });
+ if (!existsDescriptor) {
+ newDescriptorList.push(descriptor);
+ }
+ });
+ return newDescriptorList;
+};
+//# sourceMappingURL=DescriptorUtil.js.map
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/descriptor/DescriptorUtil.js.map b/node_modules/@textlint/kernel/module/descriptor/DescriptorUtil.js.map
new file mode 100644
index 000000000..4da56c043
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/descriptor/DescriptorUtil.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"DescriptorUtil.js","sourceRoot":"","sources":["../../src/descriptor/DescriptorUtil.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,MAAM,CAAC,IAAM,yBAAyB,GAAG,UAA4B,WAAgB;IACjF,IAAM,iBAAiB,GAAQ,EAAE,CAAC;IAClC,WAAW,CAAC,OAAO,CAAC,UAAC,UAAU;QAC3B,IAAM,gBAAgB,GAAG,iBAAiB,CAAC,IAAI,CAAC,UAAC,eAAe;YAC5D,OAAO,eAAe,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,gBAAgB,EAAE;YACnB,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SACtC;IACL,CAAC,CAAC,CAAC;IACH,OAAO,iBAAiB,CAAC;AAC7B,CAAC,CAAC"}
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/descriptor/DescriptorsFactory.d.ts b/node_modules/@textlint/kernel/module/descriptor/DescriptorsFactory.d.ts
new file mode 100644
index 000000000..6388b466e
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/descriptor/DescriptorsFactory.d.ts
@@ -0,0 +1,7 @@
+import { TextlintKernelFilterRule, TextlintKernelPlugin, TextlintKernelRule } from "../textlint-kernel-interface";
+import { TextlintFilterRuleDescriptors } from "./TextlintFilterRuleDescriptors";
+import { TextlintRuleDescriptors } from "./TextlintRuleDescriptors";
+import { TextlintPluginDescriptors } from "./TextlintPluginDescriptors";
+export declare const createTextlintRuleDescriptors: (rules: TextlintKernelRule[]) => TextlintRuleDescriptors;
+export declare const createTextlintFilterRuleDescriptors: (rules: TextlintKernelFilterRule[]) => TextlintFilterRuleDescriptors;
+export declare const createTextlintPluginDescriptors: (rules: TextlintKernelPlugin[]) => TextlintPluginDescriptors;
diff --git a/node_modules/@textlint/kernel/module/descriptor/DescriptorsFactory.js b/node_modules/@textlint/kernel/module/descriptor/DescriptorsFactory.js
new file mode 100644
index 000000000..c3d8af197
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/descriptor/DescriptorsFactory.js
@@ -0,0 +1,28 @@
+// LICENSE : MIT
+"use strict";
+import { TextlintFilterRuleDescriptor } from "./TextlintFilterRuleDescriptor";
+import { TextlintFilterRuleDescriptors } from "./TextlintFilterRuleDescriptors";
+import { TextlintRuleDescriptors } from "./TextlintRuleDescriptors";
+import { TextlintLintableRuleDescriptor } from "./TextlintLintableRuleDescriptor";
+import { TextlintPluginDescriptors } from "./TextlintPluginDescriptors";
+import { TextlintPluginDescriptor } from "./TextlintPluginDescriptor";
+import { hasFixer } from "./rule-creator-helper";
+import { TextlintFixableRuleDescriptor } from "./TextlintFixableRuleDescriptor";
+export var createTextlintRuleDescriptors = function (rules) {
+ var ruleOrFixableRuleDescriptorList = rules.map(function (rule) {
+ if (hasFixer(rule.rule)) {
+ return new TextlintFixableRuleDescriptor(rule);
+ }
+ else {
+ return new TextlintLintableRuleDescriptor(rule);
+ }
+ });
+ return new TextlintRuleDescriptors(ruleOrFixableRuleDescriptorList);
+};
+export var createTextlintFilterRuleDescriptors = function (rules) {
+ return new TextlintFilterRuleDescriptors(rules.map(function (rule) { return new TextlintFilterRuleDescriptor(rule); }));
+};
+export var createTextlintPluginDescriptors = function (rules) {
+ return new TextlintPluginDescriptors(rules.map(function (rule) { return new TextlintPluginDescriptor(rule); }));
+};
+//# sourceMappingURL=DescriptorsFactory.js.map
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/descriptor/DescriptorsFactory.js.map b/node_modules/@textlint/kernel/module/descriptor/DescriptorsFactory.js.map
new file mode 100644
index 000000000..ef028a395
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/descriptor/DescriptorsFactory.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"DescriptorsFactory.js","sourceRoot":"","sources":["../../src/descriptor/DescriptorsFactory.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAChB,YAAY,CAAC;AAEb,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAChF,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAC;AAClF,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAEhF,MAAM,CAAC,IAAM,6BAA6B,GAAG,UAAC,KAA2B;IACrE,IAAM,+BAA+B,GAAG,KAAK,CAAC,GAAG,CAAC,UAAC,IAAI;QACnD,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACrB,OAAO,IAAI,6BAA6B,CAAC,IAAI,CAAC,CAAC;SAClD;aAAM;YACH,OAAO,IAAI,8BAA8B,CAAC,IAAI,CAAC,CAAC;SACnD;IACL,CAAC,CAAC,CAAC;IACH,OAAO,IAAI,uBAAuB,CAAC,+BAA+B,CAAC,CAAC;AACxE,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,mCAAmC,GAAG,UAAC,KAAiC;IACjF,OAAO,IAAI,6BAA6B,CAAC,KAAK,CAAC,GAAG,CAAC,UAAC,IAAI,IAAK,OAAA,IAAI,4BAA4B,CAAC,IAAI,CAAC,EAAtC,CAAsC,CAAC,CAAC,CAAC;AAC1G,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,+BAA+B,GAAG,UAAC,KAA6B;IACzE,OAAO,IAAI,yBAAyB,CAAC,KAAK,CAAC,GAAG,CAAC,UAAC,IAAI,IAAK,OAAA,IAAI,wBAAwB,CAAC,IAAI,CAAC,EAAlC,CAAkC,CAAC,CAAC,CAAC;AAClG,CAAC,CAAC"}
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/descriptor/TextlintFilterRuleDescriptor.d.ts b/node_modules/@textlint/kernel/module/descriptor/TextlintFilterRuleDescriptor.d.ts
new file mode 100644
index 000000000..eb5eb27ab
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/descriptor/TextlintFilterRuleDescriptor.d.ts
@@ -0,0 +1,33 @@
+import { TextlintKernelFilterRule } from "../textlint-kernel-interface";
+import { Descriptor } from "./Descriptor";
+import type { TextlintFilterRuleOptions, TextlintFilterRuleReporter } from "@textlint/types";
+/**
+ * Textlint Rule Descriptor.
+ * It handle RuleCreator and RuleOption.
+ */
+export declare class TextlintFilterRuleDescriptor implements Descriptor {
+ private kernelFilterRule;
+ constructor(kernelFilterRule: TextlintKernelFilterRule);
+ get id(): string;
+ get rule(): TextlintFilterRuleReporter;
+ /**
+ * Return true if this rule is enabled.
+ */
+ get enabled(): boolean;
+ /**
+ * Return filter function
+ * You should check hasLiner before call this.
+ */
+ get filter(): TextlintFilterRuleReporter;
+ /**
+ * Return normalized rule option object.
+ * If the rule have not option, return `true` by default.
+ */
+ get normalizedOptions(): TextlintFilterRuleOptions;
+ get rawOptions(): undefined | boolean | TextlintFilterRuleOptions;
+ /**
+ * Return true if descriptor is same
+ */
+ equals(descriptor: this): boolean;
+ toKernel(): TextlintKernelFilterRule;
+}
diff --git a/node_modules/@textlint/kernel/module/descriptor/TextlintFilterRuleDescriptor.js b/node_modules/@textlint/kernel/module/descriptor/TextlintFilterRuleDescriptor.js
new file mode 100644
index 000000000..9d2d198d0
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/descriptor/TextlintFilterRuleDescriptor.js
@@ -0,0 +1,88 @@
+// LICENSE : MIT
+"use strict";
+import { getFilter } from "./rule-creator-helper";
+import deepEqual from "deep-equal";
+/**
+ * Textlint Rule Descriptor.
+ * It handle RuleCreator and RuleOption.
+ */
+var TextlintFilterRuleDescriptor = /** @class */ (function () {
+ function TextlintFilterRuleDescriptor(kernelFilterRule) {
+ this.kernelFilterRule = kernelFilterRule;
+ }
+ Object.defineProperty(TextlintFilterRuleDescriptor.prototype, "id", {
+ get: function () {
+ return this.kernelFilterRule.ruleId;
+ },
+ enumerable: false,
+ configurable: true
+ });
+ Object.defineProperty(TextlintFilterRuleDescriptor.prototype, "rule", {
+ get: function () {
+ return this.kernelFilterRule.rule;
+ },
+ enumerable: false,
+ configurable: true
+ });
+ Object.defineProperty(TextlintFilterRuleDescriptor.prototype, "enabled", {
+ /**
+ * Return true if this rule is enabled.
+ */
+ get: function () {
+ return this.rawOptions !== false;
+ },
+ enumerable: false,
+ configurable: true
+ });
+ Object.defineProperty(TextlintFilterRuleDescriptor.prototype, "filter", {
+ /**
+ * Return filter function
+ * You should check hasLiner before call this.
+ */
+ get: function () {
+ return getFilter(this.rule);
+ },
+ enumerable: false,
+ configurable: true
+ });
+ Object.defineProperty(TextlintFilterRuleDescriptor.prototype, "normalizedOptions", {
+ /**
+ * Return normalized rule option object.
+ * If the rule have not option, return `true` by default.
+ */
+ get: function () {
+ // default: { ruleName: true }
+ var DefaultRuleConfigValue = {};
+ if (typeof this.kernelFilterRule.options === "boolean" || this.kernelFilterRule.options === undefined) {
+ return DefaultRuleConfigValue;
+ }
+ else {
+ return this.kernelFilterRule.options;
+ }
+ },
+ enumerable: false,
+ configurable: true
+ });
+ Object.defineProperty(TextlintFilterRuleDescriptor.prototype, "rawOptions", {
+ get: function () {
+ return this.kernelFilterRule.options;
+ },
+ enumerable: false,
+ configurable: true
+ });
+ /**
+ * Return true if descriptor is same
+ */
+ TextlintFilterRuleDescriptor.prototype.equals = function (descriptor) {
+ return (this.rule === descriptor.rule &&
+ deepEqual(this.normalizedOptions, descriptor.normalizedOptions, {
+ strict: true
+ }));
+ };
+ TextlintFilterRuleDescriptor.prototype.toKernel = function () {
+ return this.kernelFilterRule;
+ };
+ return TextlintFilterRuleDescriptor;
+}());
+export { TextlintFilterRuleDescriptor };
+//# sourceMappingURL=TextlintFilterRuleDescriptor.js.map
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/descriptor/TextlintFilterRuleDescriptor.js.map b/node_modules/@textlint/kernel/module/descriptor/TextlintFilterRuleDescriptor.js.map
new file mode 100644
index 000000000..a621281d9
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/descriptor/TextlintFilterRuleDescriptor.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"TextlintFilterRuleDescriptor.js","sourceRoot":"","sources":["../../src/descriptor/TextlintFilterRuleDescriptor.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAChB,YAAY,CAAC;AACb,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAIlD,OAAO,SAAS,MAAM,YAAY,CAAC;AAEnC;;;GAGG;AACH;IACI,sCAAoB,gBAA0C;QAA1C,qBAAgB,GAAhB,gBAAgB,CAA0B;IAAG,CAAC;IAElE,sBAAI,4CAAE;aAAN;YACI,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;QACxC,CAAC;;;OAAA;IAED,sBAAI,8CAAI;aAAR;YACI,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;QACtC,CAAC;;;OAAA;IAKD,sBAAI,iDAAO;QAHX;;WAEG;aACH;YACI,OAAO,IAAI,CAAC,UAAU,KAAK,KAAK,CAAC;QACrC,CAAC;;;OAAA;IAMD,sBAAI,gDAAM;QAJV;;;WAGG;aACH;YACI,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC;;;OAAA;IAMD,sBAAI,2DAAiB;QAJrB;;;WAGG;aACH;YACI,8BAA8B;YAC9B,IAAM,sBAAsB,GAAG,EAAE,CAAC;YAClC,IAAI,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,KAAK,SAAS,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,KAAK,SAAS,EAAE;gBACnG,OAAO,sBAAsB,CAAC;aACjC;iBAAM;gBACH,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;aACxC;QACL,CAAC;;;OAAA;IAED,sBAAI,oDAAU;aAAd;YACI,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;QACzC,CAAC;;;OAAA;IAED;;OAEG;IACH,6CAAM,GAAN,UAAO,UAAgB;QACnB,OAAO,CACH,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,IAAI;YAC7B,SAAS,CAAC,IAAI,CAAC,iBAAiB,EAAE,UAAU,CAAC,iBAAiB,EAAE;gBAC5D,MAAM,EAAE,IAAI;aACf,CAAC,CACL,CAAC;IACN,CAAC;IAED,+CAAQ,GAAR;QACI,OAAO,IAAI,CAAC,gBAAgB,CAAC;IACjC,CAAC;IACL,mCAAC;AAAD,CAAC,AA3DD,IA2DC"}
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/descriptor/TextlintFilterRuleDescriptors.d.ts b/node_modules/@textlint/kernel/module/descriptor/TextlintFilterRuleDescriptors.d.ts
new file mode 100644
index 000000000..29ef65dd5
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/descriptor/TextlintFilterRuleDescriptors.d.ts
@@ -0,0 +1,26 @@
+import { TextlintKernelFilterRule } from "../textlint-kernel-interface";
+import { TextlintFilterRuleDescriptor } from "./TextlintFilterRuleDescriptor";
+/**
+ * The collection class of TextlintFilterRuleDescriptor
+ */
+export declare class TextlintFilterRuleDescriptors {
+ private ruleDescriptorList;
+ constructor(ruleDescriptorList?: TextlintFilterRuleDescriptor[]);
+ /**
+ * Convert this to TextlintKernel rules format
+ * @returns {Array}
+ */
+ toKernelFilterRulesFormat(): Array;
+ /**
+ * Return enabled descriptors
+ */
+ get descriptors(): TextlintFilterRuleDescriptor[];
+ /**
+ * Return all descriptors that include disabled descriptors
+ */
+ get allDescriptors(): TextlintFilterRuleDescriptor[];
+ /**
+ * filter duplicated descriptors
+ */
+ withoutDuplicated(): TextlintFilterRuleDescriptors;
+}
diff --git a/node_modules/@textlint/kernel/module/descriptor/TextlintFilterRuleDescriptors.js b/node_modules/@textlint/kernel/module/descriptor/TextlintFilterRuleDescriptors.js
new file mode 100644
index 000000000..b3a893212
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/descriptor/TextlintFilterRuleDescriptors.js
@@ -0,0 +1,54 @@
+// LICENSE : MIT
+"use strict";
+import { filterDuplicateDescriptor } from "./DescriptorUtil";
+/**
+ * The collection class of TextlintFilterRuleDescriptor
+ */
+var TextlintFilterRuleDescriptors = /** @class */ (function () {
+ function TextlintFilterRuleDescriptors(ruleDescriptorList) {
+ if (ruleDescriptorList === void 0) { ruleDescriptorList = []; }
+ this.ruleDescriptorList = ruleDescriptorList;
+ }
+ /**
+ * Convert this to TextlintKernel rules format
+ * @returns {Array}
+ */
+ TextlintFilterRuleDescriptors.prototype.toKernelFilterRulesFormat = function () {
+ return this.withoutDuplicated().descriptors.map(function (descriptor) {
+ return descriptor.toKernel();
+ });
+ };
+ Object.defineProperty(TextlintFilterRuleDescriptors.prototype, "descriptors", {
+ /**
+ * Return enabled descriptors
+ */
+ get: function () {
+ return this.ruleDescriptorList.filter(function (descriptor) {
+ return descriptor.enabled;
+ });
+ },
+ enumerable: false,
+ configurable: true
+ });
+ Object.defineProperty(TextlintFilterRuleDescriptors.prototype, "allDescriptors", {
+ /**
+ * Return all descriptors that include disabled descriptors
+ */
+ get: function () {
+ return this.ruleDescriptorList;
+ },
+ enumerable: false,
+ configurable: true
+ });
+ /**
+ * filter duplicated descriptors
+ */
+ TextlintFilterRuleDescriptors.prototype.withoutDuplicated = function () {
+ // remove last duplicated item
+ var newDescriptorList = filterDuplicateDescriptor(this.ruleDescriptorList);
+ return new TextlintFilterRuleDescriptors(newDescriptorList);
+ };
+ return TextlintFilterRuleDescriptors;
+}());
+export { TextlintFilterRuleDescriptors };
+//# sourceMappingURL=TextlintFilterRuleDescriptors.js.map
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/descriptor/TextlintFilterRuleDescriptors.js.map b/node_modules/@textlint/kernel/module/descriptor/TextlintFilterRuleDescriptors.js.map
new file mode 100644
index 000000000..4ffc6f26f
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/descriptor/TextlintFilterRuleDescriptors.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"TextlintFilterRuleDescriptors.js","sourceRoot":"","sources":["../../src/descriptor/TextlintFilterRuleDescriptors.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAChB,YAAY,CAAC;AAGb,OAAO,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAE7D;;GAEG;AACH;IACI,uCAAoB,kBAAuD;QAAvD,mCAAA,EAAA,uBAAuD;QAAvD,uBAAkB,GAAlB,kBAAkB,CAAqC;IAAG,CAAC;IAE/E;;;OAGG;IACH,iEAAyB,GAAzB;QACI,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,UAAC,UAAU;YACvD,OAAO,UAAU,CAAC,QAAQ,EAAE,CAAC;QACjC,CAAC,CAAC,CAAC;IACP,CAAC;IAKD,sBAAI,sDAAW;QAHf;;WAEG;aACH;YACI,OAAO,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,UAAC,UAAU;gBAC7C,OAAO,UAAU,CAAC,OAAO,CAAC;YAC9B,CAAC,CAAC,CAAC;QACP,CAAC;;;OAAA;IAKD,sBAAI,yDAAc;QAHlB;;WAEG;aACH;YACI,OAAO,IAAI,CAAC,kBAAkB,CAAC;QACnC,CAAC;;;OAAA;IAED;;OAEG;IACH,yDAAiB,GAAjB;QACI,8BAA8B;QAC9B,IAAM,iBAAiB,GAAG,yBAAyB,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC7E,OAAO,IAAI,6BAA6B,CAAC,iBAAiB,CAAC,CAAC;IAChE,CAAC;IACL,oCAAC;AAAD,CAAC,AArCD,IAqCC"}
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/descriptor/TextlintFixableRuleDescriptor.d.ts b/node_modules/@textlint/kernel/module/descriptor/TextlintFixableRuleDescriptor.d.ts
new file mode 100644
index 000000000..52fecef1e
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/descriptor/TextlintFixableRuleDescriptor.d.ts
@@ -0,0 +1,14 @@
+import { TextlintLintableRuleDescriptor } from "./TextlintLintableRuleDescriptor";
+import type { TextlintRuleReporter } from "@textlint/types";
+/**
+ * Textlint Fixable Rule Descriptor.
+ * It is inherit **Rule** Descriptor and add fixer() method.
+ * It handle RuleCreator and RuleOption.
+ */
+export declare class TextlintFixableRuleDescriptor extends TextlintLintableRuleDescriptor {
+ /**
+ * Return fixer function
+ * You should check hasFixer before call this.
+ */
+ get fixer(): TextlintRuleReporter;
+}
diff --git a/node_modules/@textlint/kernel/module/descriptor/TextlintFixableRuleDescriptor.js b/node_modules/@textlint/kernel/module/descriptor/TextlintFixableRuleDescriptor.js
new file mode 100644
index 000000000..9ae4f3611
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/descriptor/TextlintFixableRuleDescriptor.js
@@ -0,0 +1,42 @@
+// LICENSE : MIT
+"use strict";
+var __extends = (this && this.__extends) || (function () {
+ var extendStatics = function (d, b) {
+ extendStatics = Object.setPrototypeOf ||
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
+ return extendStatics(d, b);
+ };
+ return function (d, b) {
+ extendStatics(d, b);
+ function __() { this.constructor = d; }
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+ };
+})();
+import { getFixer } from "./rule-creator-helper";
+import { TextlintLintableRuleDescriptor } from "./TextlintLintableRuleDescriptor";
+/**
+ * Textlint Fixable Rule Descriptor.
+ * It is inherit **Rule** Descriptor and add fixer() method.
+ * It handle RuleCreator and RuleOption.
+ */
+var TextlintFixableRuleDescriptor = /** @class */ (function (_super) {
+ __extends(TextlintFixableRuleDescriptor, _super);
+ function TextlintFixableRuleDescriptor() {
+ return _super !== null && _super.apply(this, arguments) || this;
+ }
+ Object.defineProperty(TextlintFixableRuleDescriptor.prototype, "fixer", {
+ /**
+ * Return fixer function
+ * You should check hasFixer before call this.
+ */
+ get: function () {
+ return getFixer(this.rule);
+ },
+ enumerable: false,
+ configurable: true
+ });
+ return TextlintFixableRuleDescriptor;
+}(TextlintLintableRuleDescriptor));
+export { TextlintFixableRuleDescriptor };
+//# sourceMappingURL=TextlintFixableRuleDescriptor.js.map
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/descriptor/TextlintFixableRuleDescriptor.js.map b/node_modules/@textlint/kernel/module/descriptor/TextlintFixableRuleDescriptor.js.map
new file mode 100644
index 000000000..65d603ea2
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/descriptor/TextlintFixableRuleDescriptor.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"TextlintFixableRuleDescriptor.js","sourceRoot":"","sources":["../../src/descriptor/TextlintFixableRuleDescriptor.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAChB,YAAY,CAAC;;;;;;;;;;;;;;AACb,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAC;AAGlF;;;;GAIG;AACH;IAAmD,iDAA8B;IAAjF;;IAQA,CAAC;IAHG,sBAAI,gDAAK;QAJT;;;WAGG;aACH;YACI,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC;;;OAAA;IACL,oCAAC;AAAD,CAAC,AARD,CAAmD,8BAA8B,GAQhF"}
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/descriptor/TextlintKernelDescriptor.d.ts b/node_modules/@textlint/kernel/module/descriptor/TextlintKernelDescriptor.d.ts
new file mode 100644
index 000000000..2449b9dee
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/descriptor/TextlintKernelDescriptor.d.ts
@@ -0,0 +1,38 @@
+import { TextlintKernelFilterRule, TextlintKernelPlugin, TextlintKernelRule } from "../textlint-kernel-interface";
+import { TextlintRuleDescriptors } from "./TextlintRuleDescriptors";
+import { TextlintPluginDescriptors } from "./TextlintPluginDescriptors";
+import { TextlintFilterRuleDescriptors } from "./TextlintFilterRuleDescriptors";
+import { TextlintPluginDescriptor } from "./TextlintPluginDescriptor";
+export interface TextlintKernelDescriptorArgs {
+ rules: TextlintKernelRule[];
+ filterRules: TextlintKernelFilterRule[];
+ plugins: TextlintKernelPlugin[];
+}
+export declare class TextlintKernelDescriptor {
+ private args;
+ rule: TextlintRuleDescriptors;
+ filterRule: TextlintFilterRuleDescriptors;
+ plugin: TextlintPluginDescriptors;
+ constructor(args: TextlintKernelDescriptorArgs);
+ /**
+ * Return available extensions of plugins
+ */
+ get availableExtensions(): string[];
+ /**
+ * Merge constructor args and partialArgs
+ * It shallow merge partialArgs.
+ * It means that overwrite root properties by partialArgs.
+ */
+ shallowMerge(partialArgs: Partial): TextlintKernelDescriptor;
+ /**
+ * find PluginDescriptor with extension.
+ * This is forward match.
+ *
+ * If following config of textlint, this method prefer to select MarkdownA for markdown.
+ *
+ * {
+ * "plugins": [MarkdownA, MarkdownB]
+ * }
+ */
+ findPluginDescriptorWithExt(ext: string): TextlintPluginDescriptor | undefined;
+}
diff --git a/node_modules/@textlint/kernel/module/descriptor/TextlintKernelDescriptor.js b/node_modules/@textlint/kernel/module/descriptor/TextlintKernelDescriptor.js
new file mode 100644
index 000000000..31b3e28ca
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/descriptor/TextlintKernelDescriptor.js
@@ -0,0 +1,54 @@
+var __assign = (this && this.__assign) || function () {
+ __assign = Object.assign || function(t) {
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
+ s = arguments[i];
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
+ t[p] = s[p];
+ }
+ return t;
+ };
+ return __assign.apply(this, arguments);
+};
+import { createTextlintFilterRuleDescriptors, createTextlintPluginDescriptors, createTextlintRuleDescriptors } from "./DescriptorsFactory";
+var TextlintKernelDescriptor = /** @class */ (function () {
+ function TextlintKernelDescriptor(args) {
+ this.args = args;
+ this.rule = createTextlintRuleDescriptors(args.rules);
+ this.filterRule = createTextlintFilterRuleDescriptors(args.filterRules);
+ this.plugin = createTextlintPluginDescriptors(args.plugins);
+ }
+ Object.defineProperty(TextlintKernelDescriptor.prototype, "availableExtensions", {
+ /**
+ * Return available extensions of plugins
+ */
+ get: function () {
+ return this.plugin.availableExtensions;
+ },
+ enumerable: false,
+ configurable: true
+ });
+ /**
+ * Merge constructor args and partialArgs
+ * It shallow merge partialArgs.
+ * It means that overwrite root properties by partialArgs.
+ */
+ TextlintKernelDescriptor.prototype.shallowMerge = function (partialArgs) {
+ return new TextlintKernelDescriptor(__assign(__assign({}, this.args), partialArgs));
+ };
+ /**
+ * find PluginDescriptor with extension.
+ * This is forward match.
+ *
+ * If following config of textlint, this method prefer to select MarkdownA for markdown.
+ *
+ * {
+ * "plugins": [MarkdownA, MarkdownB]
+ * }
+ */
+ TextlintKernelDescriptor.prototype.findPluginDescriptorWithExt = function (ext) {
+ return this.plugin.findPluginDescriptorWithExt(ext);
+ };
+ return TextlintKernelDescriptor;
+}());
+export { TextlintKernelDescriptor };
+//# sourceMappingURL=TextlintKernelDescriptor.js.map
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/descriptor/TextlintKernelDescriptor.js.map b/node_modules/@textlint/kernel/module/descriptor/TextlintKernelDescriptor.js.map
new file mode 100644
index 000000000..1e27248b6
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/descriptor/TextlintKernelDescriptor.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"TextlintKernelDescriptor.js","sourceRoot":"","sources":["../../src/descriptor/TextlintKernelDescriptor.ts"],"names":[],"mappings":";;;;;;;;;;;AAIA,OAAO,EACH,mCAAmC,EACnC,+BAA+B,EAC/B,6BAA6B,EAChC,MAAM,sBAAsB,CAAC;AAS9B;IAKI,kCAAoB,IAAkC;QAAlC,SAAI,GAAJ,IAAI,CAA8B;QAClD,IAAI,CAAC,IAAI,GAAG,6BAA6B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtD,IAAI,CAAC,UAAU,GAAG,mCAAmC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACxE,IAAI,CAAC,MAAM,GAAG,+BAA+B,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAChE,CAAC;IAKD,sBAAI,yDAAmB;QAHvB;;WAEG;aACH;YACI,OAAO,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC;QAC3C,CAAC;;;OAAA;IAED;;;;OAIG;IACH,+CAAY,GAAZ,UAAa,WAAkD;QAC3D,OAAO,IAAI,wBAAwB,uBAC5B,IAAI,CAAC,IAAI,GACT,WAAW,EAChB,CAAC;IACP,CAAC;IAED;;;;;;;;;OASG;IACH,8DAA2B,GAA3B,UAA4B,GAAW;QACnC,OAAO,IAAI,CAAC,MAAM,CAAC,2BAA2B,CAAC,GAAG,CAAC,CAAC;IACxD,CAAC;IACL,+BAAC;AAAD,CAAC,AA3CD,IA2CC"}
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/descriptor/TextlintLintableRuleDescriptor.d.ts b/node_modules/@textlint/kernel/module/descriptor/TextlintLintableRuleDescriptor.d.ts
new file mode 100644
index 000000000..21d0d5b3e
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/descriptor/TextlintLintableRuleDescriptor.d.ts
@@ -0,0 +1,35 @@
+import { TextlintKernelRule } from "../textlint-kernel-interface";
+import type { TextlintRuleModule, TextlintRuleOptions, TextlintRuleReporter } from "@textlint/types";
+/**
+ * Textlint Rule Descriptor.
+ * It handle RuleCreator and RuleOption.
+ */
+export declare class TextlintLintableRuleDescriptor {
+ private textlintKernelRule;
+ constructor(textlintKernelRule: TextlintKernelRule);
+ get id(): string;
+ /**
+ * Rule module-self
+ */
+ get rule(): TextlintRuleModule;
+ /**
+ * Return true if this rule is enabled.
+ */
+ get enabled(): boolean;
+ /**
+ * Return linter function
+ * You should check hasLiner before call this.
+ */
+ get linter(): TextlintRuleReporter;
+ /**
+ * Return normalized rule option object.
+ * If the rule have not option, return `true` by default.
+ */
+ get normalizedOptions(): TextlintRuleOptions;
+ get rawOptions(): boolean | undefined | TextlintRuleOptions;
+ /**
+ * Return true if descriptor is same
+ */
+ equals(descriptor: TextlintLintableRuleDescriptor): boolean;
+ toKernel(): TextlintKernelRule;
+}
diff --git a/node_modules/@textlint/kernel/module/descriptor/TextlintLintableRuleDescriptor.js b/node_modules/@textlint/kernel/module/descriptor/TextlintLintableRuleDescriptor.js
new file mode 100644
index 000000000..8fad860b6
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/descriptor/TextlintLintableRuleDescriptor.js
@@ -0,0 +1,92 @@
+// LICENSE : MIT
+"use strict";
+import { assertRuleShape, getLinter } from "./rule-creator-helper";
+import deepEqual from "deep-equal";
+/**
+ * Textlint Rule Descriptor.
+ * It handle RuleCreator and RuleOption.
+ */
+var TextlintLintableRuleDescriptor = /** @class */ (function () {
+ function TextlintLintableRuleDescriptor(textlintKernelRule) {
+ this.textlintKernelRule = textlintKernelRule;
+ assertRuleShape(textlintKernelRule.rule, textlintKernelRule.ruleId);
+ }
+ Object.defineProperty(TextlintLintableRuleDescriptor.prototype, "id", {
+ get: function () {
+ return this.textlintKernelRule.ruleId;
+ },
+ enumerable: false,
+ configurable: true
+ });
+ Object.defineProperty(TextlintLintableRuleDescriptor.prototype, "rule", {
+ /**
+ * Rule module-self
+ */
+ get: function () {
+ return this.textlintKernelRule.rule;
+ },
+ enumerable: false,
+ configurable: true
+ });
+ Object.defineProperty(TextlintLintableRuleDescriptor.prototype, "enabled", {
+ /**
+ * Return true if this rule is enabled.
+ */
+ get: function () {
+ return this.rawOptions !== false;
+ },
+ enumerable: false,
+ configurable: true
+ });
+ Object.defineProperty(TextlintLintableRuleDescriptor.prototype, "linter", {
+ /**
+ * Return linter function
+ * You should check hasLiner before call this.
+ */
+ get: function () {
+ return getLinter(this.rule);
+ },
+ enumerable: false,
+ configurable: true
+ });
+ Object.defineProperty(TextlintLintableRuleDescriptor.prototype, "normalizedOptions", {
+ /**
+ * Return normalized rule option object.
+ * If the rule have not option, return `true` by default.
+ */
+ get: function () {
+ // default: { ruleName: true }
+ var DefaultRuleConfigValue = {};
+ if (typeof this.textlintKernelRule.options === "boolean" || this.textlintKernelRule.options === undefined) {
+ return DefaultRuleConfigValue;
+ }
+ else {
+ return this.textlintKernelRule.options;
+ }
+ },
+ enumerable: false,
+ configurable: true
+ });
+ Object.defineProperty(TextlintLintableRuleDescriptor.prototype, "rawOptions", {
+ get: function () {
+ return this.textlintKernelRule.options;
+ },
+ enumerable: false,
+ configurable: true
+ });
+ /**
+ * Return true if descriptor is same
+ */
+ TextlintLintableRuleDescriptor.prototype.equals = function (descriptor) {
+ return (this.rule === descriptor.rule &&
+ deepEqual(this.normalizedOptions, descriptor.normalizedOptions, {
+ strict: true
+ }));
+ };
+ TextlintLintableRuleDescriptor.prototype.toKernel = function () {
+ return this.textlintKernelRule;
+ };
+ return TextlintLintableRuleDescriptor;
+}());
+export { TextlintLintableRuleDescriptor };
+//# sourceMappingURL=TextlintLintableRuleDescriptor.js.map
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/descriptor/TextlintLintableRuleDescriptor.js.map b/node_modules/@textlint/kernel/module/descriptor/TextlintLintableRuleDescriptor.js.map
new file mode 100644
index 000000000..1f7331bea
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/descriptor/TextlintLintableRuleDescriptor.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"TextlintLintableRuleDescriptor.js","sourceRoot":"","sources":["../../src/descriptor/TextlintLintableRuleDescriptor.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAChB,YAAY,CAAC;AAEb,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAEnE,OAAO,SAAS,MAAM,YAAY,CAAC;AAEnC;;;GAGG;AACH;IACI,wCAAoB,kBAAsC;QAAtC,uBAAkB,GAAlB,kBAAkB,CAAoB;QACtD,eAAe,CAAC,kBAAkB,CAAC,IAAI,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC;IACxE,CAAC;IAED,sBAAI,8CAAE;aAAN;YACI,OAAO,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC;QAC1C,CAAC;;;OAAA;IAKD,sBAAI,gDAAI;QAHR;;WAEG;aACH;YACI,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;QACxC,CAAC;;;OAAA;IAKD,sBAAI,mDAAO;QAHX;;WAEG;aACH;YACI,OAAO,IAAI,CAAC,UAAU,KAAK,KAAK,CAAC;QACrC,CAAC;;;OAAA;IAMD,sBAAI,kDAAM;QAJV;;;WAGG;aACH;YACI,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC;;;OAAA;IAMD,sBAAI,6DAAiB;QAJrB;;;WAGG;aACH;YACI,8BAA8B;YAC9B,IAAM,sBAAsB,GAAG,EAAE,CAAC;YAClC,IAAI,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,KAAK,SAAS,IAAI,IAAI,CAAC,kBAAkB,CAAC,OAAO,KAAK,SAAS,EAAE;gBACvG,OAAO,sBAAsB,CAAC;aACjC;iBAAM;gBACH,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC;aAC1C;QACL,CAAC;;;OAAA;IAED,sBAAI,sDAAU;aAAd;YACI,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC;QAC3C,CAAC;;;OAAA;IAED;;OAEG;IACH,+CAAM,GAAN,UAAO,UAA0C;QAC7C,OAAO,CACH,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,IAAI;YAC7B,SAAS,CAAC,IAAI,CAAC,iBAAiB,EAAE,UAAU,CAAC,iBAAiB,EAAE;gBAC5D,MAAM,EAAE,IAAI;aACf,CAAC,CACL,CAAC;IACN,CAAC;IAED,iDAAQ,GAAR;QACI,OAAO,IAAI,CAAC,kBAAkB,CAAC;IACnC,CAAC;IACL,qCAAC;AAAD,CAAC,AAhED,IAgEC"}
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/descriptor/TextlintPluginDescriptor.d.ts b/node_modules/@textlint/kernel/module/descriptor/TextlintPluginDescriptor.d.ts
new file mode 100644
index 000000000..1235bdb11
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/descriptor/TextlintPluginDescriptor.d.ts
@@ -0,0 +1,24 @@
+import { TextlintKernelPlugin } from "../textlint-kernel-interface";
+import { Descriptor } from "./Descriptor";
+import type { TextlintPluginOptions, TextlintPluginProcessor } from "@textlint/types";
+/**
+ * Textlint Plugin Descriptor
+ */
+export declare class TextlintPluginDescriptor implements Descriptor {
+ private plugin;
+ processor: TextlintPluginProcessor;
+ constructor(plugin: TextlintKernelPlugin);
+ get id(): string;
+ /**
+ * Return true if this rule is enabled.
+ */
+ get enabled(): boolean;
+ /**
+ * Return available extension of this plugin
+ */
+ get availableExtensions(): string[];
+ get normalizedOptions(): TextlintPluginOptions;
+ get rawOptions(): boolean | TextlintPluginOptions | undefined;
+ toKernel(): TextlintKernelPlugin;
+ equals(target: this): boolean;
+}
diff --git a/node_modules/@textlint/kernel/module/descriptor/TextlintPluginDescriptor.js b/node_modules/@textlint/kernel/module/descriptor/TextlintPluginDescriptor.js
new file mode 100644
index 000000000..6a5f29975
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/descriptor/TextlintPluginDescriptor.js
@@ -0,0 +1,91 @@
+"use strict";
+import deepEqual from "deep-equal";
+/**
+ * Get instance/static `availableExtensions()` from TextlintPluginProcessor
+ */
+var getAvailableExtensions = function (pluginProcessor) {
+ if (typeof pluginProcessor.availableExtensions === "function") {
+ return pluginProcessor.availableExtensions();
+ }
+ // It is compatible for textlint@10<=
+ // Recommended: `availableExtensions()` should be defined as instance method.
+ // https://github.com/textlint/textlint/issues/531
+ var PluginProcessorConstructor = pluginProcessor.constructor;
+ if (typeof PluginProcessorConstructor.availableExtensions === "function") {
+ return PluginProcessorConstructor.availableExtensions();
+ }
+ throw new Error("Plugin(" + pluginProcessor + ") should implement availableExtensions() method");
+};
+/**
+ * Textlint Plugin Descriptor
+ */
+var TextlintPluginDescriptor = /** @class */ (function () {
+ function TextlintPluginDescriptor(plugin) {
+ this.plugin = plugin;
+ this.plugin = plugin;
+ if (!this.plugin.plugin.Processor) {
+ throw new Error("Plugin should have Processor property.\nmodule.exports = {\n Processor: class Processor{ ... }\n}\n");
+ }
+ this.processor = new plugin.plugin.Processor(this.normalizedOptions);
+ }
+ Object.defineProperty(TextlintPluginDescriptor.prototype, "id", {
+ get: function () {
+ return this.plugin.pluginId;
+ },
+ enumerable: false,
+ configurable: true
+ });
+ Object.defineProperty(TextlintPluginDescriptor.prototype, "enabled", {
+ /**
+ * Return true if this rule is enabled.
+ */
+ get: function () {
+ return this.rawOptions !== false;
+ },
+ enumerable: false,
+ configurable: true
+ });
+ Object.defineProperty(TextlintPluginDescriptor.prototype, "availableExtensions", {
+ /**
+ * Return available extension of this plugin
+ */
+ get: function () {
+ return getAvailableExtensions(this.processor);
+ },
+ enumerable: false,
+ configurable: true
+ });
+ Object.defineProperty(TextlintPluginDescriptor.prototype, "normalizedOptions", {
+ get: function () {
+ // default: { ruleName: true }
+ var DefaultPluginOption = {};
+ if (typeof this.plugin.options === "boolean" || this.plugin.options === undefined) {
+ return DefaultPluginOption;
+ }
+ else {
+ return this.plugin.options;
+ }
+ },
+ enumerable: false,
+ configurable: true
+ });
+ Object.defineProperty(TextlintPluginDescriptor.prototype, "rawOptions", {
+ get: function () {
+ return this.plugin.options;
+ },
+ enumerable: false,
+ configurable: true
+ });
+ TextlintPluginDescriptor.prototype.toKernel = function () {
+ return this.plugin;
+ };
+ TextlintPluginDescriptor.prototype.equals = function (target) {
+ return (this.plugin.plugin === target.plugin.plugin &&
+ deepEqual(this.plugin.options, target.plugin.options, {
+ strict: true
+ }));
+ };
+ return TextlintPluginDescriptor;
+}());
+export { TextlintPluginDescriptor };
+//# sourceMappingURL=TextlintPluginDescriptor.js.map
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/descriptor/TextlintPluginDescriptor.js.map b/node_modules/@textlint/kernel/module/descriptor/TextlintPluginDescriptor.js.map
new file mode 100644
index 000000000..9f4a66e15
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/descriptor/TextlintPluginDescriptor.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"TextlintPluginDescriptor.js","sourceRoot":"","sources":["../../src/descriptor/TextlintPluginDescriptor.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAQb,OAAO,SAAS,MAAM,YAAY,CAAC;AAEnC;;GAEG;AACH,IAAM,sBAAsB,GAAG,UAAC,eAAwC;IACpE,IAAI,OAAO,eAAe,CAAC,mBAAmB,KAAK,UAAU,EAAE;QAC3D,OAAO,eAAe,CAAC,mBAAmB,EAAE,CAAC;KAChD;IACD,qCAAqC;IACrC,6EAA6E;IAC7E,kDAAkD;IAClD,IAAM,0BAA0B,GAAG,eAAe,CAAC,WAAiD,CAAC;IACrG,IAAI,OAAO,0BAA0B,CAAC,mBAAmB,KAAK,UAAU,EAAE;QACtE,OAAO,0BAA0B,CAAC,mBAAmB,EAAE,CAAC;KAC3D;IACD,MAAM,IAAI,KAAK,CAAC,YAAU,eAAe,oDAAiD,CAAC,CAAC;AAChG,CAAC,CAAC;AAEF;;GAEG;AACH;IAGI,kCAAoB,MAA4B;QAA5B,WAAM,GAAN,MAAM,CAAsB;QAC5C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE;YAC/B,MAAM,IAAI,KAAK,CAAC,sGAI3B,CAAC,CAAC;SACM;QACD,IAAI,CAAC,SAAS,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACzE,CAAC;IAED,sBAAI,wCAAE;aAAN;YACI,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;QAChC,CAAC;;;OAAA;IAKD,sBAAI,6CAAO;QAHX;;WAEG;aACH;YACI,OAAO,IAAI,CAAC,UAAU,KAAK,KAAK,CAAC;QACrC,CAAC;;;OAAA;IAKD,sBAAI,yDAAmB;QAHvB;;WAEG;aACH;YACI,OAAO,sBAAsB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAClD,CAAC;;;OAAA;IAED,sBAAI,uDAAiB;aAArB;YACI,8BAA8B;YAC9B,IAAM,mBAAmB,GAAG,EAAE,CAAC;YAC/B,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE;gBAC/E,OAAO,mBAAmB,CAAC;aAC9B;iBAAM;gBACH,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;aAC9B;QACL,CAAC;;;OAAA;IAED,sBAAI,gDAAU;aAAd;YACI,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;QAC/B,CAAC;;;OAAA;IAED,2CAAQ,GAAR;QACI,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;IAED,yCAAM,GAAN,UAAO,MAAY;QACf,OAAO,CACH,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM;YAC3C,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE;gBAClD,MAAM,EAAE,IAAI;aACf,CAAC,CACL,CAAC;IACN,CAAC;IACL,+BAAC;AAAD,CAAC,AA3DD,IA2DC"}
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/descriptor/TextlintPluginDescriptors.d.ts b/node_modules/@textlint/kernel/module/descriptor/TextlintPluginDescriptors.d.ts
new file mode 100644
index 000000000..927e15798
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/descriptor/TextlintPluginDescriptors.d.ts
@@ -0,0 +1,36 @@
+import { TextlintKernelPlugin } from "../textlint-kernel-interface";
+import { TextlintPluginDescriptor } from "./TextlintPluginDescriptor";
+/**
+ * Collection class of TextlintPluginDescriptor
+ */
+export declare class TextlintPluginDescriptors {
+ private pluginDescriptorList;
+ constructor(pluginDescriptorList?: TextlintPluginDescriptor[]);
+ /**
+ * Return enabled descriptors
+ */
+ get descriptors(): TextlintPluginDescriptor[];
+ /**
+ * Return all descriptors that include disabled descriptors
+ */
+ get allDescriptors(): TextlintPluginDescriptor[];
+ /**
+ * Return available extensions
+ * It is not includes disabled plugin's extensions.
+ */
+ get availableExtensions(): string[];
+ /**
+ * find PluginDescriptor with extension.
+ * This is forward match.
+ */
+ findPluginDescriptorWithExt(ext: string): TextlintPluginDescriptor | undefined;
+ /**
+ * filter duplicated descriptors
+ */
+ withoutDuplicated(): TextlintPluginDescriptors;
+ /**
+ * Convert this to TextlintKernel rules format
+ * @returns {Array}
+ */
+ toKernelPluginsFormat(): TextlintKernelPlugin[];
+}
diff --git a/node_modules/@textlint/kernel/module/descriptor/TextlintPluginDescriptors.js b/node_modules/@textlint/kernel/module/descriptor/TextlintPluginDescriptors.js
new file mode 100644
index 000000000..cc3da1d47
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/descriptor/TextlintPluginDescriptors.js
@@ -0,0 +1,74 @@
+"use strict";
+import { filterDuplicateDescriptor } from "./DescriptorUtil";
+/**
+ * Collection class of TextlintPluginDescriptor
+ */
+var TextlintPluginDescriptors = /** @class */ (function () {
+ function TextlintPluginDescriptors(pluginDescriptorList) {
+ if (pluginDescriptorList === void 0) { pluginDescriptorList = []; }
+ this.pluginDescriptorList = pluginDescriptorList;
+ }
+ Object.defineProperty(TextlintPluginDescriptors.prototype, "descriptors", {
+ /**
+ * Return enabled descriptors
+ */
+ get: function () {
+ return this.pluginDescriptorList.filter(function (descriptor) {
+ return descriptor.enabled;
+ });
+ },
+ enumerable: false,
+ configurable: true
+ });
+ Object.defineProperty(TextlintPluginDescriptors.prototype, "allDescriptors", {
+ /**
+ * Return all descriptors that include disabled descriptors
+ */
+ get: function () {
+ return this.pluginDescriptorList;
+ },
+ enumerable: false,
+ configurable: true
+ });
+ Object.defineProperty(TextlintPluginDescriptors.prototype, "availableExtensions", {
+ /**
+ * Return available extensions
+ * It is not includes disabled plugin's extensions.
+ */
+ get: function () {
+ return this.descriptors.reduce(function (extensions, descriptor) {
+ return extensions.concat(descriptor.availableExtensions);
+ }, []);
+ },
+ enumerable: false,
+ configurable: true
+ });
+ /**
+ * find PluginDescriptor with extension.
+ * This is forward match.
+ */
+ TextlintPluginDescriptors.prototype.findPluginDescriptorWithExt = function (ext) {
+ return this.descriptors.find(function (descriptor) {
+ return descriptor.availableExtensions.includes(ext);
+ });
+ };
+ /**
+ * filter duplicated descriptors
+ */
+ TextlintPluginDescriptors.prototype.withoutDuplicated = function () {
+ var newDescriptorList = filterDuplicateDescriptor(this.pluginDescriptorList);
+ return new TextlintPluginDescriptors(newDescriptorList);
+ };
+ /**
+ * Convert this to TextlintKernel rules format
+ * @returns {Array}
+ */
+ TextlintPluginDescriptors.prototype.toKernelPluginsFormat = function () {
+ return this.descriptors.map(function (descriptor) {
+ return descriptor.toKernel();
+ });
+ };
+ return TextlintPluginDescriptors;
+}());
+export { TextlintPluginDescriptors };
+//# sourceMappingURL=TextlintPluginDescriptors.js.map
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/descriptor/TextlintPluginDescriptors.js.map b/node_modules/@textlint/kernel/module/descriptor/TextlintPluginDescriptors.js.map
new file mode 100644
index 000000000..1a3e8f9cd
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/descriptor/TextlintPluginDescriptors.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"TextlintPluginDescriptors.js","sourceRoot":"","sources":["../../src/descriptor/TextlintPluginDescriptors.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAGb,OAAO,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAE7D;;GAEG;AACH;IACI,mCAAoB,oBAAqD;QAArD,qCAAA,EAAA,yBAAqD;QAArD,yBAAoB,GAApB,oBAAoB,CAAiC;IAAG,CAAC;IAK7E,sBAAI,kDAAW;QAHf;;WAEG;aACH;YACI,OAAO,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,UAAC,UAAU;gBAC/C,OAAO,UAAU,CAAC,OAAO,CAAC;YAC9B,CAAC,CAAC,CAAC;QACP,CAAC;;;OAAA;IAKD,sBAAI,qDAAc;QAHlB;;WAEG;aACH;YACI,OAAO,IAAI,CAAC,oBAAoB,CAAC;QACrC,CAAC;;;OAAA;IAMD,sBAAI,0DAAmB;QAJvB;;;WAGG;aACH;YACI,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,UAAC,UAAU,EAAE,UAAU;gBAClD,OAAO,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC;YAC7D,CAAC,EAAE,EAAc,CAAC,CAAC;QACvB,CAAC;;;OAAA;IAED;;;OAGG;IACH,+DAA2B,GAA3B,UAA4B,GAAW;QACnC,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAC,UAAU;YACpC,OAAO,UAAU,CAAC,mBAAmB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACH,qDAAiB,GAAjB;QACI,IAAM,iBAAiB,GAAG,yBAAyB,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAC/E,OAAO,IAAI,yBAAyB,CAAC,iBAAiB,CAAC,CAAC;IAC5D,CAAC;IAED;;;OAGG;IACH,yDAAqB,GAArB;QACI,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAC,UAAU;YACnC,OAAO,UAAU,CAAC,QAAQ,EAAE,CAAC;QACjC,CAAC,CAAC,CAAC;IACP,CAAC;IACL,gCAAC;AAAD,CAAC,AAxDD,IAwDC"}
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/descriptor/TextlintRuleDescriptors.d.ts b/node_modules/@textlint/kernel/module/descriptor/TextlintRuleDescriptors.d.ts
new file mode 100644
index 000000000..bb8cd1897
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/descriptor/TextlintRuleDescriptors.d.ts
@@ -0,0 +1,36 @@
+import { TextlintKernelRule } from "../textlint-kernel-interface";
+import { TextlintLintableRuleDescriptor } from "./TextlintLintableRuleDescriptor";
+import { TextlintFixableRuleDescriptor } from "./TextlintFixableRuleDescriptor";
+export declare type TextlintRuleAllRuleDescriptor = TextlintLintableRuleDescriptor | TextlintFixableRuleDescriptor;
+/**
+ * The collection class of TextlintRuleDescriptor
+ */
+export declare class TextlintRuleDescriptors {
+ private ruleDescriptorList;
+ constructor(ruleDescriptorList?: TextlintRuleAllRuleDescriptor[]);
+ /**
+ * Convert this to TextlintKernel rules format
+ * @returns {Array}
+ */
+ toKernelRulesFormat(): Array;
+ /**
+ * Return enabled lintable descriptors
+ */
+ get lintableDescriptors(): TextlintLintableRuleDescriptor[];
+ /**
+ * Return enabled fixable descriptors
+ */
+ get fixableDescriptors(): TextlintFixableRuleDescriptor[];
+ /**
+ * Return enabled descriptors
+ */
+ get descriptors(): TextlintRuleAllRuleDescriptor[];
+ /**
+ * Return all descriptors that include disabled descriptors
+ */
+ get allDescriptors(): TextlintRuleAllRuleDescriptor[];
+ /**
+ * filter duplicated descriptors
+ */
+ withoutDuplicated(): TextlintRuleDescriptors;
+}
diff --git a/node_modules/@textlint/kernel/module/descriptor/TextlintRuleDescriptors.js b/node_modules/@textlint/kernel/module/descriptor/TextlintRuleDescriptors.js
new file mode 100644
index 000000000..054663d9f
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/descriptor/TextlintRuleDescriptors.js
@@ -0,0 +1,78 @@
+// LICENSE : MIT
+"use strict";
+import { TextlintLintableRuleDescriptor } from "./TextlintLintableRuleDescriptor";
+import { filterDuplicateDescriptor } from "./DescriptorUtil";
+import { TextlintFixableRuleDescriptor } from "./TextlintFixableRuleDescriptor";
+/**
+ * The collection class of TextlintRuleDescriptor
+ */
+var TextlintRuleDescriptors = /** @class */ (function () {
+ function TextlintRuleDescriptors(ruleDescriptorList) {
+ if (ruleDescriptorList === void 0) { ruleDescriptorList = []; }
+ this.ruleDescriptorList = ruleDescriptorList;
+ }
+ /**
+ * Convert this to TextlintKernel rules format
+ * @returns {Array}
+ */
+ TextlintRuleDescriptors.prototype.toKernelRulesFormat = function () {
+ return this.withoutDuplicated().lintableDescriptors.map(function (descriptor) {
+ return descriptor.toKernel();
+ });
+ };
+ Object.defineProperty(TextlintRuleDescriptors.prototype, "lintableDescriptors", {
+ /**
+ * Return enabled lintable descriptors
+ */
+ get: function () {
+ return this.descriptors.filter(function (descriptor) {
+ // fixable is also lintable
+ return descriptor instanceof TextlintLintableRuleDescriptor;
+ });
+ },
+ enumerable: false,
+ configurable: true
+ });
+ Object.defineProperty(TextlintRuleDescriptors.prototype, "fixableDescriptors", {
+ /**
+ * Return enabled fixable descriptors
+ */
+ get: function () {
+ return this.descriptors.filter(function (descriptor) {
+ return descriptor instanceof TextlintFixableRuleDescriptor;
+ });
+ },
+ enumerable: false,
+ configurable: true
+ });
+ Object.defineProperty(TextlintRuleDescriptors.prototype, "descriptors", {
+ /**
+ * Return enabled descriptors
+ */
+ get: function () {
+ return this.ruleDescriptorList.filter(function (descriptor) { return descriptor.enabled; });
+ },
+ enumerable: false,
+ configurable: true
+ });
+ Object.defineProperty(TextlintRuleDescriptors.prototype, "allDescriptors", {
+ /**
+ * Return all descriptors that include disabled descriptors
+ */
+ get: function () {
+ return this.ruleDescriptorList;
+ },
+ enumerable: false,
+ configurable: true
+ });
+ /**
+ * filter duplicated descriptors
+ */
+ TextlintRuleDescriptors.prototype.withoutDuplicated = function () {
+ var newDescriptorList = filterDuplicateDescriptor(this.ruleDescriptorList);
+ return new TextlintRuleDescriptors(newDescriptorList);
+ };
+ return TextlintRuleDescriptors;
+}());
+export { TextlintRuleDescriptors };
+//# sourceMappingURL=TextlintRuleDescriptors.js.map
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/descriptor/TextlintRuleDescriptors.js.map b/node_modules/@textlint/kernel/module/descriptor/TextlintRuleDescriptors.js.map
new file mode 100644
index 000000000..4d0570c12
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/descriptor/TextlintRuleDescriptors.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"TextlintRuleDescriptors.js","sourceRoot":"","sources":["../../src/descriptor/TextlintRuleDescriptors.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAChB,YAAY,CAAC;AAEb,OAAO,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAC;AAClF,OAAO,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAIhF;;GAEG;AACH;IACI,iCAAoB,kBAAwD;QAAxD,mCAAA,EAAA,uBAAwD;QAAxD,uBAAkB,GAAlB,kBAAkB,CAAsC;IAAG,CAAC;IAEhF;;;OAGG;IACH,qDAAmB,GAAnB;QACI,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC,mBAAmB,CAAC,GAAG,CAAC,UAAC,UAAU;YAC/D,OAAO,UAAU,CAAC,QAAQ,EAAE,CAAC;QACjC,CAAC,CAAC,CAAC;IACP,CAAC;IAKD,sBAAI,wDAAmB;QAHvB;;WAEG;aACH;YACI,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,UAAC,UAAU;gBACtC,2BAA2B;gBAC3B,OAAO,UAAU,YAAY,8BAA8B,CAAC;YAChE,CAAC,CAAC,CAAC;QACP,CAAC;;;OAAA;IAKD,sBAAI,uDAAkB;QAHtB;;WAEG;aACH;YACI,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,UAAC,UAAU;gBACtC,OAAO,UAAU,YAAY,6BAA6B,CAAC;YAC/D,CAAC,CAAoC,CAAC;QAC1C,CAAC;;;OAAA;IAKD,sBAAI,gDAAW;QAHf;;WAEG;aACH;YACI,OAAO,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,UAAC,UAAU,IAAK,OAAA,UAAU,CAAC,OAAO,EAAlB,CAAkB,CAAC,CAAC;QAC9E,CAAC;;;OAAA;IAKD,sBAAI,mDAAc;QAHlB;;WAEG;aACH;YACI,OAAO,IAAI,CAAC,kBAAkB,CAAC;QACnC,CAAC;;;OAAA;IAED;;OAEG;IACH,mDAAiB,GAAjB;QACI,IAAM,iBAAiB,GAAG,yBAAyB,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC7E,OAAO,IAAI,uBAAuB,CAAC,iBAAiB,CAAC,CAAC;IAC1D,CAAC;IACL,8BAAC;AAAD,CAAC,AArDD,IAqDC"}
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/descriptor/index.d.ts b/node_modules/@textlint/kernel/module/descriptor/index.d.ts
new file mode 100644
index 000000000..0cf4035ec
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/descriptor/index.d.ts
@@ -0,0 +1,8 @@
+export { TextlintKernelDescriptor } from "./TextlintKernelDescriptor";
+export { TextlintRuleDescriptors } from "./TextlintRuleDescriptors";
+export { TextlintLintableRuleDescriptor } from "./TextlintLintableRuleDescriptor";
+export { TextlintFixableRuleDescriptor } from "./TextlintFixableRuleDescriptor";
+export { TextlintFilterRuleDescriptors } from "./TextlintFilterRuleDescriptors";
+export { TextlintFilterRuleDescriptor } from "./TextlintFilterRuleDescriptor";
+export { TextlintPluginDescriptors } from "./TextlintPluginDescriptors";
+export { TextlintPluginDescriptor } from "./TextlintPluginDescriptor";
diff --git a/node_modules/@textlint/kernel/module/descriptor/index.js b/node_modules/@textlint/kernel/module/descriptor/index.js
new file mode 100644
index 000000000..8c046aecc
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/descriptor/index.js
@@ -0,0 +1,9 @@
+export { TextlintKernelDescriptor } from "./TextlintKernelDescriptor";
+export { TextlintRuleDescriptors } from "./TextlintRuleDescriptors";
+export { TextlintLintableRuleDescriptor } from "./TextlintLintableRuleDescriptor";
+export { TextlintFixableRuleDescriptor } from "./TextlintFixableRuleDescriptor";
+export { TextlintFilterRuleDescriptors } from "./TextlintFilterRuleDescriptors";
+export { TextlintFilterRuleDescriptor } from "./TextlintFilterRuleDescriptor";
+export { TextlintPluginDescriptors } from "./TextlintPluginDescriptors";
+export { TextlintPluginDescriptor } from "./TextlintPluginDescriptor";
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/descriptor/index.js.map b/node_modules/@textlint/kernel/module/descriptor/index.js.map
new file mode 100644
index 000000000..401911e87
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/descriptor/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/descriptor/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAC;AAClF,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAChF,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAChF,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC"}
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/descriptor/plugin-creator-helper.d.ts b/node_modules/@textlint/kernel/module/descriptor/plugin-creator-helper.d.ts
new file mode 100644
index 000000000..e69de29bb
diff --git a/node_modules/@textlint/kernel/module/descriptor/plugin-creator-helper.js b/node_modules/@textlint/kernel/module/descriptor/plugin-creator-helper.js
new file mode 100644
index 000000000..c04e94db6
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/descriptor/plugin-creator-helper.js
@@ -0,0 +1,2 @@
+"use strict";
+//# sourceMappingURL=plugin-creator-helper.js.map
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/descriptor/plugin-creator-helper.js.map b/node_modules/@textlint/kernel/module/descriptor/plugin-creator-helper.js.map
new file mode 100644
index 000000000..5ee19eee0
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/descriptor/plugin-creator-helper.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"plugin-creator-helper.js","sourceRoot":"","sources":["../../src/descriptor/plugin-creator-helper.ts"],"names":[],"mappings":""}
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/descriptor/rule-creator-helper.d.ts b/node_modules/@textlint/kernel/module/descriptor/rule-creator-helper.d.ts
new file mode 100644
index 000000000..cc396a3fd
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/descriptor/rule-creator-helper.d.ts
@@ -0,0 +1,51 @@
+import type { TextlintFilterRuleReporter, TextlintRuleReporter } from "@textlint/types";
+/**
+ * detect that ruleCreator has linter function
+ * @param {*} ruleCreator
+ * @returns {boolean}
+ */
+export declare function hasLinter(ruleCreator: any): boolean;
+/**
+ * get linter function from ruleCreator
+ * if not found, throw error
+ * @param {Function|Object|any} ruleCreator
+ * @returns {Function} linter function
+ * @throws
+ */
+export declare function getLinter(ruleCreator: Function | object | any): TextlintRuleReporter;
+/**
+ * detect that ruleCreator has fixer function
+ * @param {*} ruleCreator
+ * @returns {boolean}
+ */
+export declare function hasFixer(ruleCreator: any): boolean;
+/**
+ * get fixer function from ruleCreator
+ * if not found, throw error
+ * @param {Function|Object|any} ruleCreator
+ * @returns {Function} fixer function
+ * @throws
+ */
+export declare function getFixer(ruleCreator: Function | object | any): TextlintRuleReporter;
+/**
+ * RuleModule should has either linter or fixer.
+ * @param {*} ruleCreator
+ * @returns {boolean}
+ **/
+export declare function isRuleModule(ruleCreator: any): boolean;
+/**
+ * Validate rule module.
+ * if invalid throw error
+ * @param {*} ruleModule
+ * @param {string} [key]
+ * @throws
+ */
+export declare function assertRuleShape(ruleModule: any, key?: string): void;
+/**
+ * get linter function from ruleCreator
+ * if not found, throw error
+ * @param {*} ruleCreator
+ * @returns {Function} linter function
+ * @throws
+ */
+export declare function getFilter(ruleCreator: any): TextlintFilterRuleReporter;
diff --git a/node_modules/@textlint/kernel/module/descriptor/rule-creator-helper.js b/node_modules/@textlint/kernel/module/descriptor/rule-creator-helper.js
new file mode 100644
index 000000000..2790183eb
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/descriptor/rule-creator-helper.js
@@ -0,0 +1,98 @@
+/**
+ * detect that ruleCreator has linter function
+ * @param {*} ruleCreator
+ * @returns {boolean}
+ */
+export function hasLinter(ruleCreator) {
+ if (typeof ruleCreator.linter === "function") {
+ return true;
+ }
+ if (typeof ruleCreator === "function") {
+ return true;
+ }
+ return false;
+}
+/**
+ * get linter function from ruleCreator
+ * if not found, throw error
+ * @param {Function|Object|any} ruleCreator
+ * @returns {Function} linter function
+ * @throws
+ */
+export function getLinter(ruleCreator) {
+ if (typeof ruleCreator.linter === "function") {
+ return ruleCreator.linter;
+ }
+ if (typeof ruleCreator === "function") {
+ return ruleCreator;
+ }
+ throw new Error("Not found linter function in the ruleCreator");
+}
+/**
+ * detect that ruleCreator has fixer function
+ * @param {*} ruleCreator
+ * @returns {boolean}
+ */
+export function hasFixer(ruleCreator) {
+ return typeof ruleCreator.fixer === "function" && hasLinter(ruleCreator);
+}
+/**
+ * get fixer function from ruleCreator
+ * if not found, throw error
+ * @param {Function|Object|any} ruleCreator
+ * @returns {Function} fixer function
+ * @throws
+ */
+export function getFixer(ruleCreator) {
+ if (!hasLinter(ruleCreator)) {
+ throw new Error("fixer module should have also linter function.");
+ }
+ if (hasFixer(ruleCreator)) {
+ return ruleCreator.fixer;
+ }
+ throw new Error("Not found fixer function in the ruleCreator");
+}
+/**
+ * RuleModule should has either linter or fixer.
+ * @param {*} ruleCreator
+ * @returns {boolean}
+ **/
+export function isRuleModule(ruleCreator) {
+ return hasLinter(ruleCreator) || hasFixer(ruleCreator);
+}
+/**
+ * Validate rule module.
+ * if invalid throw error
+ * @param {*} ruleModule
+ * @param {string} [key]
+ * @throws
+ */
+export function assertRuleShape(ruleModule, key) {
+ if (key === void 0) { key = ""; }
+ if (ruleModule === undefined) {
+ throw new Error("Definition of rule '" + key + "' was not found.");
+ }
+ /*
+ Check old rule function
+ module.exports = function(context){
+
+ }
+ */
+ if (!isRuleModule(ruleModule)) {
+ throw new Error("Definition of rule '" + key + "' was not rule module.\nRule should export function:\nmodule.exports = function(context){\n // Your rule\n};");
+ }
+}
+/**
+ * get linter function from ruleCreator
+ * if not found, throw error
+ * @param {*} ruleCreator
+ * @returns {Function} linter function
+ * @throws
+ */
+export function getFilter(ruleCreator) {
+ if (typeof ruleCreator === "function") {
+ return ruleCreator;
+ }
+ throw new Error("Not found filter function in the ruleCreator");
+}
+//# sourceMappingURL=rule-creator-helper.js.map
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/descriptor/rule-creator-helper.js.map b/node_modules/@textlint/kernel/module/descriptor/rule-creator-helper.js.map
new file mode 100644
index 000000000..c62708700
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/descriptor/rule-creator-helper.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"rule-creator-helper.js","sourceRoot":"","sources":["../../src/descriptor/rule-creator-helper.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAAC,WAAgB;IACtC,IAAI,OAAO,WAAW,CAAC,MAAM,KAAK,UAAU,EAAE;QAC1C,OAAO,IAAI,CAAC;KACf;IACD,IAAI,OAAO,WAAW,KAAK,UAAU,EAAE;QACnC,OAAO,IAAI,CAAC;KACf;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,SAAS,CAAC,WAAoC;IAC1D,IAAI,OAAO,WAAW,CAAC,MAAM,KAAK,UAAU,EAAE;QAC1C,OAAO,WAAW,CAAC,MAAM,CAAC;KAC7B;IACD,IAAI,OAAO,WAAW,KAAK,UAAU,EAAE;QACnC,OAAO,WAAW,CAAC;KACtB;IACD,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;AACpE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,QAAQ,CAAC,WAAgB;IACrC,OAAO,OAAO,WAAW,CAAC,KAAK,KAAK,UAAU,IAAI,SAAS,CAAC,WAAW,CAAC,CAAC;AAC7E,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,QAAQ,CAAC,WAAoC;IACzD,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE;QACzB,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;KACrE;IACD,IAAI,QAAQ,CAAC,WAAW,CAAC,EAAE;QACvB,OAAO,WAAW,CAAC,KAAK,CAAC;KAC5B;IACD,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;AACnE,CAAC;AAED;;;;IAII;AACJ,MAAM,UAAU,YAAY,CAAC,WAAgB;IACzC,OAAO,SAAS,CAAC,WAAW,CAAC,IAAI,QAAQ,CAAC,WAAW,CAAC,CAAC;AAC3D,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,UAAe,EAAE,GAAgB;IAAhB,oBAAA,EAAA,QAAgB;IAC7D,IAAI,UAAU,KAAK,SAAS,EAAE;QAC1B,MAAM,IAAI,KAAK,CAAC,yBAAuB,GAAG,qBAAkB,CAAC,CAAC;KACjE;IACD;;;;;MAKE;IACF,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE;QAC3B,MAAM,IAAI,KAAK,CAAC,yBAAuB,GAAG,oHAI/C,CAAC,CAAC;KACA;AACL,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,SAAS,CAAC,WAAgB;IACtC,IAAI,OAAO,WAAW,KAAK,UAAU,EAAE;QACnC,OAAO,WAAW,CAAC;KACtB;IACD,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;AACpE,CAAC"}
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/fixer/fixer-processor.d.ts b/node_modules/@textlint/kernel/module/fixer/fixer-processor.d.ts
new file mode 100644
index 000000000..e8e08f4c8
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/fixer/fixer-processor.d.ts
@@ -0,0 +1,30 @@
+import type { TextlintFixResult, TextlintPluginProcessor, TextlintSourceCode } from "@textlint/types";
+import { TextlintKernelConstructorOptions } from "../textlint-kernel-interface";
+import MessageProcessManager from "../messages/MessageProcessManager";
+import { TextlintFilterRuleDescriptors, TextlintRuleDescriptors } from "../descriptor";
+export interface FixerProcessorProcessArgs {
+ config: TextlintKernelConstructorOptions;
+ configBaseDir?: string;
+ ruleDescriptors: TextlintRuleDescriptors;
+ filterRules: TextlintFilterRuleDescriptors;
+ sourceCode: TextlintSourceCode;
+}
+export default class FixerProcessor {
+ private processor;
+ private messageProcessManager;
+ /**
+ * @param {Processor} processor
+ * @param {MessageProcessManager} messageProcessManager
+ */
+ constructor(processor: TextlintPluginProcessor, messageProcessManager: MessageProcessManager);
+ /**
+ * Run fixer process
+ * @param {Config} config
+ * @param {string} [configBaseDir]
+ * @param {TextlintKernelRule[]} [rules]
+ * @param {TextlintKernelFilterRule[]} [filterRules]
+ * @param {SourceCode} sourceCode
+ * @returns {Promise.}
+ */
+ process({ config, configBaseDir, ruleDescriptors, filterRules, sourceCode }: FixerProcessorProcessArgs): Promise;
+}
diff --git a/node_modules/@textlint/kernel/module/fixer/fixer-processor.js b/node_modules/@textlint/kernel/module/fixer/fixer-processor.js
new file mode 100644
index 000000000..62c5ad80b
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/fixer/fixer-processor.js
@@ -0,0 +1,109 @@
+// LICENSE : MIT
+"use strict";
+import * as assert from "assert";
+import FixerTask from "../task/fixer-task";
+import TaskRunner from "../task/task-runner";
+import { TextlintSourceCodeImpl } from "../context/TextlintSourceCodeImpl";
+import { isTxtAST } from "@textlint/ast-tester";
+import _debug from "debug";
+import { applyFixesToSourceCode } from "@textlint/source-code-fixer";
+var debug = _debug("textlint:fixer-processor");
+var FixerProcessor = /** @class */ (function () {
+ /**
+ * @param {Processor} processor
+ * @param {MessageProcessManager} messageProcessManager
+ */
+ function FixerProcessor(processor, messageProcessManager) {
+ this.processor = processor;
+ this.messageProcessManager = messageProcessManager;
+ }
+ /**
+ * Run fixer process
+ * @param {Config} config
+ * @param {string} [configBaseDir]
+ * @param {TextlintKernelRule[]} [rules]
+ * @param {TextlintKernelFilterRule[]} [filterRules]
+ * @param {SourceCode} sourceCode
+ * @returns {Promise.}
+ */
+ FixerProcessor.prototype.process = function (_a) {
+ var _this = this;
+ var config = _a.config, configBaseDir = _a.configBaseDir, ruleDescriptors = _a.ruleDescriptors, filterRules = _a.filterRules, sourceCode = _a.sourceCode;
+ assert.ok(sourceCode);
+ var _b = this.processor.processor(sourceCode.ext), preProcess = _b.preProcess, postProcess = _b.postProcess;
+ // messages
+ var resultFilePath = sourceCode.filePath;
+ // applied fixing messages
+ // Revert = Sequentially apply applied message to applied output
+ // SourceCodeFixer.sequentiallyApplyFixes(fixedOutput, result.applyingMessages);
+ var applyingMessages = [];
+ // not applied fixing messages
+ var remainingMessages = [];
+ // original means original for applyingMessages and remainingMessages
+ // pre-applyingMessages + remainingMessages
+ var originalMessages = [];
+ var fixerProcessList = ruleDescriptors.fixableDescriptors.map(function (ruleDescriptor) {
+ return function (sourceText) {
+ // create new SourceCode object
+ var preProcessResult = preProcess(sourceText, sourceCode.filePath);
+ var isPluginReturnAnAST = isTxtAST(preProcessResult);
+ var textForAST = isPluginReturnAnAST ? sourceText : preProcessResult.text;
+ var ast = isPluginReturnAnAST ? preProcessResult : preProcessResult.ast;
+ var newSourceCode = new TextlintSourceCodeImpl({
+ text: textForAST,
+ ast: ast,
+ filePath: resultFilePath,
+ ext: sourceCode.ext
+ });
+ // create new Task
+ var task = new FixerTask({
+ config: config,
+ fixableRuleDescriptor: ruleDescriptor,
+ filterRuleDescriptors: filterRules,
+ sourceCode: newSourceCode,
+ configBaseDir: configBaseDir
+ });
+ return TaskRunner.process(task).then(function (messages) {
+ var result = postProcess(messages, sourceCode.filePath);
+ var filteredResult = {
+ messages: _this.messageProcessManager.process(result.messages),
+ filePath: result.filePath ? result.filePath : ""
+ };
+ // TODO: should be removed resultFilePath
+ resultFilePath = filteredResult.filePath;
+ var applied = applyFixesToSourceCode(newSourceCode, filteredResult.messages);
+ // add messages
+ Array.prototype.push.apply(applyingMessages, applied.applyingMessages);
+ Array.prototype.push.apply(remainingMessages, applied.remainingMessages);
+ Array.prototype.push.apply(originalMessages, applied.messages);
+ // if not fixed, still use current sourceText
+ if (!applied.fixed) {
+ return sourceText;
+ }
+ // if fixed, use fixed text at next
+ return applied.output;
+ });
+ };
+ });
+ var promiseTask = fixerProcessList.reduce(function (promise, fixerProcess) {
+ return promise.then(function (sourceText) {
+ return fixerProcess(sourceText);
+ });
+ }, Promise.resolve(sourceCode.text));
+ return promiseTask.then(function (output) {
+ debug("Finish Processing: " + resultFilePath);
+ debug("applyingMessages: " + applyingMessages.length);
+ debug("remainingMessages: " + remainingMessages.length);
+ return {
+ filePath: resultFilePath ? resultFilePath : "",
+ output: output,
+ messages: originalMessages,
+ applyingMessages: applyingMessages,
+ remainingMessages: remainingMessages
+ };
+ });
+ };
+ return FixerProcessor;
+}());
+export default FixerProcessor;
+//# sourceMappingURL=fixer-processor.js.map
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/fixer/fixer-processor.js.map b/node_modules/@textlint/kernel/module/fixer/fixer-processor.js.map
new file mode 100644
index 000000000..388b5b404
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/fixer/fixer-processor.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"fixer-processor.js","sourceRoot":"","sources":["../../src/fixer/fixer-processor.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/fixer/rule-fixer.d.ts b/node_modules/@textlint/kernel/module/fixer/rule-fixer.d.ts
new file mode 100644
index 000000000..b7b66a3b8
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/fixer/rule-fixer.d.ts
@@ -0,0 +1,122 @@
+import { TxtNode } from "@textlint/ast-node-types";
+import type { TextlintSourceCodeRange } from "@textlint/types";
+/**
+ * Fix Command object has `range` and `text`.
+ * `IntermediateFixCommand` has also `isAbsolute` flag value.
+ */
+export interface IntermediateFixCommand {
+ text: string;
+ range: number[];
+ isAbsolute: boolean;
+}
+/**
+ * Creates code fixing commands for rules.
+ * It create command for fixing texts.
+ * The `range` arguments of these command is should be **relative** value from reported node.
+ * See {@link SourceLocation} class for more detail.
+ * @constructor
+ */
+export default class RuleFixer {
+ /**
+ * Creates a fix command that inserts text after the given node or token.
+ * The fix is not applied until applyFixes() is called.
+ * @param {TxtNode} node The node or token to insert after.
+ * @param {string} text The text to insert.
+ * @returns {IntermediateFixCommand} The fix command.
+ */
+ insertTextAfter(node: TxtNode, text: string): {
+ range: number[];
+ text: string;
+ isAbsolute: boolean;
+ };
+ /**
+ * Creates a fix command that inserts text after the specified range in the source text.
+ * The fix is not applied until applyFixes() is called.
+ * @param {number[]} range The range to replace, first item is start of range, second
+ * is end of range.
+ * The `range` should be **relative** value from reported node.
+ * @param {string} text The text to insert.
+ * @returns {IntermediateFixCommand} The fix command.
+ */
+ insertTextAfterRange(range: TextlintSourceCodeRange, text: string): {
+ range: number[];
+ text: string;
+ isAbsolute: boolean;
+ };
+ /**
+ * Creates a fix command that inserts text before the given node or token.
+ * The fix is not applied until applyFixes() is called.
+ * @param {TxtNode} node The node or token to insert before.
+ * @param {string} text The text to insert.
+ * @returns {IntermediateFixCommand} The fix command.
+ */
+ insertTextBefore(node: TxtNode, text: string): {
+ range: number[];
+ text: string;
+ isAbsolute: boolean;
+ };
+ /**
+ * Creates a fix command that inserts text before the specified range in the source text.
+ * The fix is not applied until applyFixes() is called.
+ * @param {number[]} range The range to replace, first item is start of range, second
+ * is end of range.
+ * The `range` should be **relative** value from reported node.
+ * @param {string} text The text to insert.
+ * @returns {IntermediateFixCommand} The fix command.
+ */
+ insertTextBeforeRange(range: TextlintSourceCodeRange, text: string): {
+ range: number[];
+ text: string;
+ isAbsolute: boolean;
+ };
+ /**
+ * Creates a fix command that replaces text at the node or token.
+ * The fix is not applied until applyFixes() is called.
+ * @param {TxtNode} node The node or token to remove.
+ * @param {string} text The text to insert.
+ * @returns {IntermediateFixCommand} The fix command.
+ */
+ replaceText(node: TxtNode, text: string): {
+ range: import("@textlint/ast-node-types").TextNodeRange;
+ text: string;
+ isAbsolute: boolean;
+ };
+ /**
+ * Creates a fix command that replaces text at the specified range in the source text.
+ * The fix is not applied until applyFixes() is called.
+ * @param {number[]} range The range to replace, first item is start of range, second
+ * is end of range.
+ * The `range` should be **relative** value from reported node.
+ * @param {string} text The text to insert.
+ * @returns {IntermediateFixCommand} The fix command.
+ */
+ replaceTextRange(range: TextlintSourceCodeRange, text: string): {
+ range: TextlintSourceCodeRange;
+ text: string;
+ isAbsolute: boolean;
+ };
+ /**
+ * Creates a fix command that removes the node or token from the source.
+ * The fix is not applied until applyFixes() is called.
+ * @param {TxtNode} node The node or token to remove.
+ * @returns {IntermediateFixCommand} The fix command.
+ */
+ remove(node: TxtNode): {
+ range: import("@textlint/ast-node-types").TextNodeRange;
+ text: string;
+ isAbsolute: boolean;
+ };
+ /**
+ * Creates a fix command that removes the specified range of text from the source.
+ * The fix is not applied until applyFixes() is called.
+ * @param {number[]} range The range to remove, first item is start of range, second
+ * is end of range.
+ * The `range` should be **relative** value from reported node.
+ * @returns {IntermediateFixCommand} The fix command.
+ */
+ removeRange(range: TextlintSourceCodeRange): {
+ range: TextlintSourceCodeRange;
+ text: string;
+ isAbsolute: boolean;
+ };
+}
diff --git a/node_modules/@textlint/kernel/module/fixer/rule-fixer.js b/node_modules/@textlint/kernel/module/fixer/rule-fixer.js
new file mode 100644
index 000000000..a25542f52
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/fixer/rule-fixer.js
@@ -0,0 +1,139 @@
+import * as assert from "assert";
+/**
+ * Creates a fix command that inserts text at the specified index in the source text.
+ * @param {number} index The 0-based index at which to insert the new text.
+ * @param {string} text The text to insert.
+ * @returns {IntermediateFixCommand} The fix command.
+ * @private
+ */
+function insertTextAt(index, text) {
+ assert.ok(text, "text must be string");
+ return {
+ range: [index, index],
+ text: text,
+ isAbsolute: false
+ };
+}
+/**
+ * Creates a fix command that inserts text at the specified index in the source text.
+ * @param {number} index The 0-based index at which to insert the new text.
+ * @param {string} text The text to insert.
+ * @returns {IntermediateFixCommand} The fix command.
+ * @private
+ */
+function insertTextAtAbsolute(index, text) {
+ assert.ok(text, "text must be string");
+ return {
+ range: [index, index],
+ text: text,
+ isAbsolute: true
+ };
+}
+/**
+ * Creates code fixing commands for rules.
+ * It create command for fixing texts.
+ * The `range` arguments of these command is should be **relative** value from reported node.
+ * See {@link SourceLocation} class for more detail.
+ * @constructor
+ */
+var RuleFixer = /** @class */ (function () {
+ function RuleFixer() {
+ }
+ /**
+ * Creates a fix command that inserts text after the given node or token.
+ * The fix is not applied until applyFixes() is called.
+ * @param {TxtNode} node The node or token to insert after.
+ * @param {string} text The text to insert.
+ * @returns {IntermediateFixCommand} The fix command.
+ */
+ RuleFixer.prototype.insertTextAfter = function (node, text) {
+ return insertTextAtAbsolute(node.range[1], text);
+ };
+ /**
+ * Creates a fix command that inserts text after the specified range in the source text.
+ * The fix is not applied until applyFixes() is called.
+ * @param {number[]} range The range to replace, first item is start of range, second
+ * is end of range.
+ * The `range` should be **relative** value from reported node.
+ * @param {string} text The text to insert.
+ * @returns {IntermediateFixCommand} The fix command.
+ */
+ RuleFixer.prototype.insertTextAfterRange = function (range, text) {
+ return insertTextAt(range[1], text);
+ };
+ /**
+ * Creates a fix command that inserts text before the given node or token.
+ * The fix is not applied until applyFixes() is called.
+ * @param {TxtNode} node The node or token to insert before.
+ * @param {string} text The text to insert.
+ * @returns {IntermediateFixCommand} The fix command.
+ */
+ RuleFixer.prototype.insertTextBefore = function (node, text) {
+ return insertTextAtAbsolute(node.range[0], text);
+ };
+ /**
+ * Creates a fix command that inserts text before the specified range in the source text.
+ * The fix is not applied until applyFixes() is called.
+ * @param {number[]} range The range to replace, first item is start of range, second
+ * is end of range.
+ * The `range` should be **relative** value from reported node.
+ * @param {string} text The text to insert.
+ * @returns {IntermediateFixCommand} The fix command.
+ */
+ RuleFixer.prototype.insertTextBeforeRange = function (range, text) {
+ return insertTextAt(range[0], text);
+ };
+ /**
+ * Creates a fix command that replaces text at the node or token.
+ * The fix is not applied until applyFixes() is called.
+ * @param {TxtNode} node The node or token to remove.
+ * @param {string} text The text to insert.
+ * @returns {IntermediateFixCommand} The fix command.
+ */
+ RuleFixer.prototype.replaceText = function (node, text) {
+ return {
+ range: node.range,
+ text: text,
+ isAbsolute: true
+ };
+ };
+ /**
+ * Creates a fix command that replaces text at the specified range in the source text.
+ * The fix is not applied until applyFixes() is called.
+ * @param {number[]} range The range to replace, first item is start of range, second
+ * is end of range.
+ * The `range` should be **relative** value from reported node.
+ * @param {string} text The text to insert.
+ * @returns {IntermediateFixCommand} The fix command.
+ */
+ RuleFixer.prototype.replaceTextRange = function (range, text) {
+ return {
+ range: range,
+ text: text,
+ isAbsolute: false
+ };
+ };
+ /**
+ * Creates a fix command that removes the node or token from the source.
+ * The fix is not applied until applyFixes() is called.
+ * @param {TxtNode} node The node or token to remove.
+ * @returns {IntermediateFixCommand} The fix command.
+ */
+ RuleFixer.prototype.remove = function (node) {
+ return this.replaceText(node, "");
+ };
+ /**
+ * Creates a fix command that removes the specified range of text from the source.
+ * The fix is not applied until applyFixes() is called.
+ * @param {number[]} range The range to remove, first item is start of range, second
+ * is end of range.
+ * The `range` should be **relative** value from reported node.
+ * @returns {IntermediateFixCommand} The fix command.
+ */
+ RuleFixer.prototype.removeRange = function (range) {
+ return this.replaceTextRange(range, "");
+ };
+ return RuleFixer;
+}());
+export default RuleFixer;
+//# sourceMappingURL=rule-fixer.js.map
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/fixer/rule-fixer.js.map b/node_modules/@textlint/kernel/module/fixer/rule-fixer.js.map
new file mode 100644
index 000000000..0d90ddd24
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/fixer/rule-fixer.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"rule-fixer.js","sourceRoot":"","sources":["../../src/fixer/rule-fixer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAcjC;;;;;;GAMG;AACH,SAAS,YAAY,CAAC,KAAa,EAAE,IAAY;IAC7C,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAC;IACvC,OAAO;QACH,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;QACrB,IAAI,MAAA;QACJ,UAAU,EAAE,KAAK;KACpB,CAAC;AACN,CAAC;AAED;;;;;;GAMG;AACH,SAAS,oBAAoB,CAAC,KAAa,EAAE,IAAY;IACrD,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAC;IACvC,OAAO;QACH,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;QACrB,IAAI,MAAA;QACJ,UAAU,EAAE,IAAI;KACnB,CAAC;AACN,CAAC;AAED;;;;;;GAMG;AACH;IAAA;IAsGA,CAAC;IArGG;;;;;;OAMG;IACH,mCAAe,GAAf,UAAgB,IAAa,EAAE,IAAY;QACvC,OAAO,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACrD,CAAC;IAED;;;;;;;;OAQG;IACH,wCAAoB,GAApB,UAAqB,KAA8B,EAAE,IAAY;QAC7D,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACxC,CAAC;IAED;;;;;;OAMG;IACH,oCAAgB,GAAhB,UAAiB,IAAa,EAAE,IAAY;QACxC,OAAO,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACrD,CAAC;IAED;;;;;;;;OAQG;IACH,yCAAqB,GAArB,UAAsB,KAA8B,EAAE,IAAY;QAC9D,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACxC,CAAC;IAED;;;;;;OAMG;IACH,+BAAW,GAAX,UAAY,IAAa,EAAE,IAAY;QACnC,OAAO;YACH,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,IAAI,MAAA;YACJ,UAAU,EAAE,IAAI;SACnB,CAAC;IACN,CAAC;IAED;;;;;;;;OAQG;IACH,oCAAgB,GAAhB,UAAiB,KAA8B,EAAE,IAAY;QACzD,OAAO;YACH,KAAK,OAAA;YACL,IAAI,MAAA;YACJ,UAAU,EAAE,KAAK;SACpB,CAAC;IACN,CAAC;IAED;;;;;OAKG;IACH,0BAAM,GAAN,UAAO,IAAa;QAChB,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACtC,CAAC;IAED;;;;;;;OAOG;IACH,+BAAW,GAAX,UAAY,KAA8B;QACtC,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC5C,CAAC;IACL,gBAAC;AAAD,CAAC,AAtGD,IAsGC"}
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/index.d.ts b/node_modules/@textlint/kernel/module/index.d.ts
new file mode 100644
index 000000000..fd5e891a5
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/index.d.ts
@@ -0,0 +1,14 @@
+export { TextlintKernel } from "./textlint-kernel";
+export * from "./descriptor/index";
+export { TextlintKernelRule, TextlintKernelFilterRule, TextlintKernelPlugin } from "./textlint-kernel-interface";
+/**
+ * Types of textlint lint/fix result
+ */
+export type { TextlintResult, TextlintFixResult, TextlintMessageFixCommand, TextlintMessage } from "@textlint/types";
+/**
+ * @deprecated These types will removed in the future. Use @textlint/types instead of it
+ * If you use these types in your rule, you should use @textlint/types for your rule.
+ * Related changes: https://github.com/textlint/textlint/pull/562
+ */
+export type { TextlintRuleReporter, TextlintRuleModule, TextlintRuleOptions, TextlintRuleSeverityLevel, TextlintFilterRuleReporter, TextlintFilterRuleOptions, TextlintPluginCreator, TextlintPluginOptions, TextlintPluginProcessor, TextlintPluginProcessorConstructor } from "@textlint/types";
+export { TextlintRuleSeverityLevelKeys } from "./context/TextlintRuleSeverityLevelKeys";
diff --git a/node_modules/@textlint/kernel/module/index.js b/node_modules/@textlint/kernel/module/index.js
new file mode 100644
index 000000000..fa02d71d7
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/index.js
@@ -0,0 +1,7 @@
+// Kernel
+export { TextlintKernel } from "./textlint-kernel";
+// Kernel Descriptor
+export * from "./descriptor/index";
+// TextlintRuleSeverityLevel Key
+export { TextlintRuleSeverityLevelKeys } from "./context/TextlintRuleSeverityLevelKeys";
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/index.js.map b/node_modules/@textlint/kernel/module/index.js.map
new file mode 100644
index 000000000..ce488eb31
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,SAAS;AACT,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,oBAAoB;AACpB,cAAc,oBAAoB,CAAC;AA4BnC,gCAAgC;AAChC,OAAO,EAAE,6BAA6B,EAAE,MAAM,yCAAyC,CAAC"}
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/linter/linter-processor.d.ts b/node_modules/@textlint/kernel/module/linter/linter-processor.d.ts
new file mode 100644
index 000000000..b38d72a66
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/linter/linter-processor.d.ts
@@ -0,0 +1,24 @@
+import { TextlintKernelConstructorOptions } from "../textlint-kernel-interface";
+import MessageProcessManager from "../messages/MessageProcessManager";
+import { TextlintFilterRuleDescriptors, TextlintRuleDescriptors } from "../descriptor";
+import type { TextlintSourceCode, TextlintPluginProcessor, TextlintResult } from "@textlint/types";
+export interface LinterProcessorArgs {
+ config: TextlintKernelConstructorOptions;
+ configBaseDir?: string;
+ ruleDescriptors: TextlintRuleDescriptors;
+ filterRuleDescriptors: TextlintFilterRuleDescriptors;
+ sourceCode: TextlintSourceCode;
+}
+export default class LinterProcessor {
+ private processor;
+ private messageProcessManager;
+ /**
+ * @param {Processor} processor
+ * @param {MessageProcessManager} messageProcessManager
+ */
+ constructor(processor: TextlintPluginProcessor, messageProcessManager: MessageProcessManager);
+ /**
+ * Run linter process
+ */
+ process({ config, configBaseDir, ruleDescriptors, filterRuleDescriptors, sourceCode }: LinterProcessorArgs): Promise;
+}
diff --git a/node_modules/@textlint/kernel/module/linter/linter-processor.js b/node_modules/@textlint/kernel/module/linter/linter-processor.js
new file mode 100644
index 000000000..0ddd436d0
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/linter/linter-processor.js
@@ -0,0 +1,43 @@
+// LICENSE : MIT
+"use strict";
+import * as assert from "assert";
+import LinterTask from "../task/linter-task";
+import TaskRunner from "../task/task-runner";
+var LinterProcessor = /** @class */ (function () {
+ /**
+ * @param {Processor} processor
+ * @param {MessageProcessManager} messageProcessManager
+ */
+ function LinterProcessor(processor, messageProcessManager) {
+ this.processor = processor;
+ this.messageProcessManager = messageProcessManager;
+ }
+ /**
+ * Run linter process
+ */
+ LinterProcessor.prototype.process = function (_a) {
+ var _this = this;
+ var config = _a.config, configBaseDir = _a.configBaseDir, ruleDescriptors = _a.ruleDescriptors, filterRuleDescriptors = _a.filterRuleDescriptors, sourceCode = _a.sourceCode;
+ var _b = this.processor.processor(sourceCode.ext), preProcess = _b.preProcess, postProcess = _b.postProcess;
+ assert.ok(typeof preProcess === "function" && typeof postProcess === "function", "processor should implement {preProcess, postProcess}");
+ var task = new LinterTask({
+ config: config,
+ ruleDescriptors: ruleDescriptors,
+ filterRuleDescriptors: filterRuleDescriptors,
+ sourceCode: sourceCode,
+ configBaseDir: configBaseDir
+ });
+ return TaskRunner.process(task).then(function (messages) {
+ var result = postProcess(messages, sourceCode.filePath);
+ result.messages = _this.messageProcessManager.process(result.messages);
+ if (result.filePath == null) {
+ result.filePath = "";
+ }
+ assert.ok(result.filePath && result.messages.length >= 0, "postProcess should return { messages, filePath } ");
+ return result;
+ });
+ };
+ return LinterProcessor;
+}());
+export default LinterProcessor;
+//# sourceMappingURL=linter-processor.js.map
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/linter/linter-processor.js.map b/node_modules/@textlint/kernel/module/linter/linter-processor.js.map
new file mode 100644
index 000000000..a97334892
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/linter/linter-processor.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"linter-processor.js","sourceRoot":"","sources":["../../src/linter/linter-processor.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAChB,YAAY,CAAC;AACb,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,UAAU,MAAM,qBAAqB,CAAC;AAC7C,OAAO,UAAU,MAAM,qBAAqB,CAAC;AAe7C;IAII;;;OAGG;IACH,yBAAY,SAAkC,EAAE,qBAA4C;QACxF,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,qBAAqB,GAAG,qBAAqB,CAAC;IACvD,CAAC;IAED;;OAEG;IACH,iCAAO,GAAP,UAAQ,EAMc;QANtB,iBA+BC;YA9BG,MAAM,YAAA,EACN,aAAa,mBAAA,EACb,eAAe,qBAAA,EACf,qBAAqB,2BAAA,EACrB,UAAU,gBAAA;QAEJ,IAAA,KAA8B,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,EAApE,UAAU,gBAAA,EAAE,WAAW,iBAA6C,CAAC;QAC7E,MAAM,CAAC,EAAE,CACL,OAAO,UAAU,KAAK,UAAU,IAAI,OAAO,WAAW,KAAK,UAAU,EACrE,sDAAsD,CACzD,CAAC;QACF,IAAM,IAAI,GAAG,IAAI,UAAU,CAAC;YACxB,MAAM,QAAA;YACN,eAAe,EAAE,eAAe;YAChC,qBAAqB,EAAE,qBAAqB;YAC5C,UAAU,YAAA;YACV,aAAa,eAAA;SAChB,CAAC,CAAC;QACH,OAAO,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAC,QAAQ;YAC1C,IAAM,MAAM,GAAG,WAAW,CAAC,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;YAC1D,MAAM,CAAC,QAAQ,GAAG,KAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACtE,IAAI,MAAM,CAAC,QAAQ,IAAI,IAAI,EAAE;gBACzB,MAAM,CAAC,QAAQ,GAAG,YAAU,UAAU,CAAC,GAAG,MAAG,CAAC;aACjD;YACD,MAAM,CAAC,EAAE,CACL,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,EAC9C,mDAAmD,CACtD,CAAC;YACF,OAAO,MAAM,CAAC;QAClB,CAAC,CAAC,CAAC;IACP,CAAC;IACL,sBAAC;AAAD,CAAC,AAhDD,IAgDC"}
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/messages/MessageProcessManager.d.ts b/node_modules/@textlint/kernel/module/messages/MessageProcessManager.d.ts
new file mode 100644
index 000000000..ae65e58e0
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/messages/MessageProcessManager.d.ts
@@ -0,0 +1,20 @@
+import { IgnoreReportedMessage, LintReportedMessage } from "../task/textlint-core-task";
+import type { TextlintMessage } from "@textlint/types";
+export declare type PreMessageProcessor = (messages: Array) => Array;
+export declare type MessageProcessor = (messages: TextlintMessage[]) => TextlintMessage[];
+export default class MessageProcessManager {
+ private _preProcessors;
+ private _processors;
+ /**
+ * Preprossor
+ */
+ constructor(preProcessors: PreMessageProcessor[]);
+ add(messageProcessor: MessageProcessor): void;
+ remove(process: MessageProcessor): void;
+ /**
+ * process `messages` with registered processes
+ * @param {TextlintMessage[]} messages
+ * @returns {TextlintMessage[]}
+ */
+ process(messages: Array): TextlintMessage[];
+}
diff --git a/node_modules/@textlint/kernel/module/messages/MessageProcessManager.js b/node_modules/@textlint/kernel/module/messages/MessageProcessManager.js
new file mode 100644
index 000000000..f44d6a99f
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/messages/MessageProcessManager.js
@@ -0,0 +1,43 @@
+// LICENSE : MIT
+"use strict";
+var MessageProcessManager = /** @class */ (function () {
+ /**
+ * Preprossor
+ */
+ function MessageProcessManager(preProcessors) {
+ this._preProcessors = preProcessors || [];
+ this._processors = [];
+ }
+ MessageProcessManager.prototype.add = function (messageProcessor) {
+ this._processors.push(messageProcessor);
+ };
+ MessageProcessManager.prototype.remove = function (process) {
+ var index = this._processors.indexOf(process);
+ if (index !== -1) {
+ this._processors.splice(index, 1);
+ }
+ };
+ /**
+ * process `messages` with registered processes
+ * @param {TextlintMessage[]} messages
+ * @returns {TextlintMessage[]}
+ */
+ MessageProcessManager.prototype.process = function (messages) {
+ var originalMessages = messages;
+ if (this._preProcessors.length === 0) {
+ throw new Error("pre process should be > 0");
+ }
+ var preProcessedMesssages = this._preProcessors.reduce(function (messages, filter) {
+ return filter(messages);
+ }, originalMessages);
+ if (this._processors.length === 0) {
+ return preProcessedMesssages;
+ }
+ return this._processors.reduce(function (messages, filter) {
+ return filter(messages);
+ }, preProcessedMesssages);
+ };
+ return MessageProcessManager;
+}());
+export default MessageProcessManager;
+//# sourceMappingURL=MessageProcessManager.js.map
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/messages/MessageProcessManager.js.map b/node_modules/@textlint/kernel/module/messages/MessageProcessManager.js.map
new file mode 100644
index 000000000..3f2f7d213
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/messages/MessageProcessManager.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"MessageProcessManager.js","sourceRoot":"","sources":["../../src/messages/MessageProcessManager.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAChB,YAAY,CAAC;AASb;IAII;;OAEG;IACH,+BAAY,aAAoC;QAC5C,IAAI,CAAC,cAAc,GAAG,aAAa,IAAI,EAAE,CAAC;QAC1C,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;IAC1B,CAAC;IAED,mCAAG,GAAH,UAAI,gBAAkC;QAClC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC5C,CAAC;IAED,sCAAM,GAAN,UAAO,OAAyB;QAC5B,IAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAChD,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;YACd,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;SACrC;IACL,CAAC;IAED;;;;OAIG;IACH,uCAAO,GAAP,UAAQ,QAA4D;QAChE,IAAM,gBAAgB,GAAG,QAAQ,CAAC;QAClC,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE;YAClC,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;SAChD;QACD,IAAM,qBAAqB,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,UAAC,QAAQ,EAAE,MAAM;YACtE,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC5B,CAAC,EAAE,gBAAgB,CAAsB,CAAC;QAC1C,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;YAC/B,OAAO,qBAAqB,CAAC;SAChC;QACD,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,UAAC,QAAQ,EAAE,MAAM;YAC5C,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC5B,CAAC,EAAE,qBAAqB,CAAC,CAAC;IAC9B,CAAC;IACL,4BAAC;AAAD,CAAC,AA3CD,IA2CC"}
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/messages/filter-duplicated-process.d.ts b/node_modules/@textlint/kernel/module/messages/filter-duplicated-process.d.ts
new file mode 100644
index 000000000..d718330db
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/messages/filter-duplicated-process.d.ts
@@ -0,0 +1,7 @@
+import type { TextlintMessage } from "@textlint/types";
+/**
+ * filter duplicated messages
+ * @param {TextlintMessage[]} messages
+ * @returns {TextlintMessage[]} filtered messages
+ */
+export default function filterDuplicatedMessages(messages?: TextlintMessage[]): TextlintMessage[];
diff --git a/node_modules/@textlint/kernel/module/messages/filter-duplicated-process.js b/node_modules/@textlint/kernel/module/messages/filter-duplicated-process.js
new file mode 100644
index 000000000..19b1338e0
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/messages/filter-duplicated-process.js
@@ -0,0 +1,26 @@
+// LICENSE : MIT
+"use strict";
+/**
+ * @param {TextlintMessage} aMessage
+ * @param {TextlintMessage} bMessage
+ */
+var isEqualMessage = function (aMessage, bMessage) {
+ return (aMessage.index === bMessage.index &&
+ aMessage.severity === bMessage.severity &&
+ aMessage.message === bMessage.message);
+};
+/**
+ * filter duplicated messages
+ * @param {TextlintMessage[]} messages
+ * @returns {TextlintMessage[]} filtered messages
+ */
+export default function filterDuplicatedMessages(messages) {
+ if (messages === void 0) { messages = []; }
+ return messages.filter(function (message, index) {
+ var restMessages = messages.slice(index + 1);
+ return !restMessages.some(function (restMessage) {
+ return isEqualMessage(message, restMessage);
+ });
+ });
+}
+//# sourceMappingURL=filter-duplicated-process.js.map
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/messages/filter-duplicated-process.js.map b/node_modules/@textlint/kernel/module/messages/filter-duplicated-process.js.map
new file mode 100644
index 000000000..a0d0a0f60
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/messages/filter-duplicated-process.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"filter-duplicated-process.js","sourceRoot":"","sources":["../../src/messages/filter-duplicated-process.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAChB,YAAY,CAAC;AAGb;;;GAGG;AACH,IAAM,cAAc,GAAG,UAAC,QAAyB,EAAE,QAAyB;IACxE,OAAO,CACH,QAAQ,CAAC,KAAK,KAAK,QAAQ,CAAC,KAAK;QACjC,QAAQ,CAAC,QAAQ,KAAK,QAAQ,CAAC,QAAQ;QACvC,QAAQ,CAAC,OAAO,KAAK,QAAQ,CAAC,OAAO,CACxC,CAAC;AACN,CAAC,CAAC;AACF;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,wBAAwB,CAAC,QAAgC;IAAhC,yBAAA,EAAA,aAAgC;IAC7E,OAAO,QAAQ,CAAC,MAAM,CAAC,UAAC,OAAO,EAAE,KAAK;QAClC,IAAM,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAC/C,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,UAAC,WAAW;YAClC,OAAO,cAAc,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC"}
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/messages/filter-ignored-process.d.ts b/node_modules/@textlint/kernel/module/messages/filter-ignored-process.d.ts
new file mode 100644
index 000000000..0f7317454
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/messages/filter-ignored-process.d.ts
@@ -0,0 +1,7 @@
+import { IgnoreReportedMessage, LintReportedMessage } from "../task/textlint-core-task";
+/**
+ * filter messages by ignore messages
+ * @param {Object[]} messages
+ * @returns {Object[]} filtered messages
+ */
+export default function filterMessages(messages?: ReadonlyArray): LintReportedMessage[];
diff --git a/node_modules/@textlint/kernel/module/messages/filter-ignored-process.js b/node_modules/@textlint/kernel/module/messages/filter-ignored-process.js
new file mode 100644
index 000000000..75a3014c3
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/messages/filter-ignored-process.js
@@ -0,0 +1,43 @@
+// LICENSE : MIT
+"use strict";
+import MessageType from "../shared/type/MessageType";
+/**
+ * the `index` is in the `range` and return true.
+ * @param {Number} index
+ * @param {Number[]} range
+ * @returns {boolean}
+ */
+var isContainedRange = function (index, range) {
+ var start = range[0], end = range[1];
+ return start <= index && index <= end;
+};
+/**
+ * filter messages by ignore messages
+ * @param {Object[]} messages
+ * @returns {Object[]} filtered messages
+ */
+export default function filterMessages(messages) {
+ if (messages === void 0) { messages = []; }
+ var lintingMessages = messages.filter(function (message) {
+ return message.type === MessageType.lint;
+ });
+ var ignoreMessages = messages.filter(function (message) {
+ return message.type === MessageType.ignore;
+ });
+ // if match, reject the message
+ return lintingMessages.filter(function (message) {
+ return !ignoreMessages.some(function (ignoreMessage) {
+ var isInIgnoringRange = isContainedRange(message.index, ignoreMessage.range);
+ if (isInIgnoringRange && ignoreMessage.ignoringRuleId) {
+ // "*" is wildcard that match any rule
+ if (ignoreMessage.ignoringRuleId === "*") {
+ return true;
+ }
+ // compare normalized key path
+ return message.ruleId === ignoreMessage.ignoringRuleId;
+ }
+ return isInIgnoringRange;
+ });
+ });
+}
+//# sourceMappingURL=filter-ignored-process.js.map
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/messages/filter-ignored-process.js.map b/node_modules/@textlint/kernel/module/messages/filter-ignored-process.js.map
new file mode 100644
index 000000000..0d4a1bcd7
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/messages/filter-ignored-process.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"filter-ignored-process.js","sourceRoot":"","sources":["../../src/messages/filter-ignored-process.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAChB,YAAY,CAAC;AACb,OAAO,WAAW,MAAM,4BAA4B,CAAC;AAGrD;;;;;GAKG;AACH,IAAM,gBAAgB,GAAG,UAAC,KAAa,EAAE,KAAuB;IACrD,IAAA,KAAK,GAAS,KAAK,GAAd,EAAE,GAAG,GAAI,KAAK,GAAT,CAAU;IAC3B,OAAO,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,GAAG,CAAC;AAC1C,CAAC,CAAC;AACF;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,QAAyE;IAAzE,yBAAA,EAAA,aAAyE;IAC5G,IAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC,UAAC,OAAO;QAC5C,OAAO,OAAO,CAAC,IAAI,KAAK,WAAW,CAAC,IAAI,CAAC;IAC7C,CAAC,CAA0B,CAAC;IAC5B,IAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,UAAC,OAAO;QAC3C,OAAO,OAAO,CAAC,IAAI,KAAK,WAAW,CAAC,MAAM,CAAC;IAC/C,CAAC,CAA4B,CAAC;IAC9B,+BAA+B;IAC/B,OAAO,eAAe,CAAC,MAAM,CAAC,UAAC,OAAO;QAClC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,UAAC,aAAa;YACtC,IAAM,iBAAiB,GAAG,gBAAgB,CAAC,OAAO,CAAC,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC;YAC/E,IAAI,iBAAiB,IAAI,aAAa,CAAC,cAAc,EAAE;gBACnD,sCAAsC;gBACtC,IAAI,aAAa,CAAC,cAAc,KAAK,GAAG,EAAE;oBACtC,OAAO,IAAI,CAAC;iBACf;gBACD,8BAA8B;gBAC9B,OAAO,OAAO,CAAC,MAAM,KAAK,aAAa,CAAC,cAAc,CAAC;aAC1D;YACD,OAAO,iBAAiB,CAAC;QAC7B,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC"}
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/messages/filter-severity-process.d.ts b/node_modules/@textlint/kernel/module/messages/filter-severity-process.d.ts
new file mode 100644
index 000000000..809d3a2c2
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/messages/filter-severity-process.d.ts
@@ -0,0 +1,20 @@
+import type { TextlintMessage } from "@textlint/types";
+import { TextlintKernelConstructorOptions } from "../textlint-kernel-interface";
+/**
+ * Filter messages by their severity.
+ * @param {TextlintMessage[]} messages
+ * @returns {TextlintMessage[]} filtered messages
+ */
+export declare function filterWarningMessages(messages?: TextlintMessage[]): TextlintMessage[];
+/**
+ * Pass through all messages.
+ * @param {TextlintMessage[]} messages
+ * @returns {TextlintMessage[]}
+ */
+export declare function through(messages?: T[]): T[];
+/**
+ * Create message filter by config.quiet.
+ * @param {Config} config
+ * @returns {Function} filter function for messages
+ */
+export default function createSeverityFilter(config: TextlintKernelConstructorOptions): (messages: TextlintMessage[]) => TextlintMessage[];
diff --git a/node_modules/@textlint/kernel/module/messages/filter-severity-process.js b/node_modules/@textlint/kernel/module/messages/filter-severity-process.js
new file mode 100644
index 000000000..993cb5276
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/messages/filter-severity-process.js
@@ -0,0 +1,37 @@
+// LICENSE : MIT
+"use strict";
+import { TextlintRuleSeverityLevelKeys } from "../context/TextlintRuleSeverityLevelKeys";
+/**
+ * Filter messages by their severity.
+ * @param {TextlintMessage[]} messages
+ * @returns {TextlintMessage[]} filtered messages
+ */
+export function filterWarningMessages(messages) {
+ if (messages === void 0) { messages = []; }
+ return messages.filter(function (message) {
+ return message.severity === TextlintRuleSeverityLevelKeys.error;
+ });
+}
+/**
+ * Pass through all messages.
+ * @param {TextlintMessage[]} messages
+ * @returns {TextlintMessage[]}
+ */
+export function through(messages) {
+ if (messages === void 0) { messages = []; }
+ return messages;
+}
+/**
+ * Create message filter by config.quiet.
+ * @param {Config} config
+ * @returns {Function} filter function for messages
+ */
+export default function createSeverityFilter(config) {
+ if (config.quiet) {
+ return filterWarningMessages;
+ }
+ else {
+ return through;
+ }
+}
+//# sourceMappingURL=filter-severity-process.js.map
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/messages/filter-severity-process.js.map b/node_modules/@textlint/kernel/module/messages/filter-severity-process.js.map
new file mode 100644
index 000000000..b7f536177
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/messages/filter-severity-process.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"filter-severity-process.js","sourceRoot":"","sources":["../../src/messages/filter-severity-process.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAChB,YAAY,CAAC;AAGb,OAAO,EAAE,6BAA6B,EAAE,MAAM,0CAA0C,CAAC;AAEzF;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,QAAgC;IAAhC,yBAAA,EAAA,aAAgC;IAClE,OAAO,QAAQ,CAAC,MAAM,CAAC,UAAC,OAAO;QAC3B,OAAO,OAAO,CAAC,QAAQ,KAAK,6BAA6B,CAAC,KAAK,CAAC;IACpE,CAAC,CAAC,CAAC;AACP,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,OAAO,CAAI,QAAkB;IAAlB,yBAAA,EAAA,aAAkB;IACzC,OAAO,QAAQ,CAAC;AACpB,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,oBAAoB,CACxC,MAAwC;IAExC,IAAI,MAAM,CAAC,KAAK,EAAE;QACd,OAAO,qBAAqB,CAAC;KAChC;SAAM;QACH,OAAO,OAAO,CAAC;KAClB;AACL,CAAC"}
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/messages/sort-messages-process.d.ts b/node_modules/@textlint/kernel/module/messages/sort-messages-process.d.ts
new file mode 100644
index 000000000..cd5913507
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/messages/sort-messages-process.d.ts
@@ -0,0 +1,7 @@
+import type { TextlintMessage } from "@textlint/types";
+/**
+ * sort messages by line and column
+ * @param {TextlintMessage[]} messages
+ * @returns {TextlintMessage[]}
+ */
+export default function sortByLineColumn(messages: TextlintMessage[]): TextlintMessage[];
diff --git a/node_modules/@textlint/kernel/module/messages/sort-messages-process.js b/node_modules/@textlint/kernel/module/messages/sort-messages-process.js
new file mode 100644
index 000000000..ebb8b770c
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/messages/sort-messages-process.js
@@ -0,0 +1,20 @@
+// LICENSE : MIT
+"use strict";
+/**
+ * sort messages by line and column
+ * @param {TextlintMessage[]} messages
+ * @returns {TextlintMessage[]}
+ */
+export default function sortByLineColumn(messages) {
+ // sort by line and column
+ return messages.sort(function (a, b) {
+ var lineDiff = a.line - b.line;
+ if (lineDiff === 0) {
+ return a.column - b.column;
+ }
+ else {
+ return lineDiff;
+ }
+ });
+}
+//# sourceMappingURL=sort-messages-process.js.map
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/messages/sort-messages-process.js.map b/node_modules/@textlint/kernel/module/messages/sort-messages-process.js.map
new file mode 100644
index 000000000..30c0f5f39
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/messages/sort-messages-process.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"sort-messages-process.js","sourceRoot":"","sources":["../../src/messages/sort-messages-process.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAChB,YAAY,CAAC;AAGb;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,QAA2B;IAChE,0BAA0B;IAC1B,OAAO,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,IAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;QACjC,IAAI,QAAQ,KAAK,CAAC,EAAE;YAChB,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;SAC9B;aAAM;YACH,OAAO,QAAQ,CAAC;SACnB;IACL,CAAC,CAAC,CAAC;AACP,CAAC"}
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/shared/rule-severity.d.ts b/node_modules/@textlint/kernel/module/shared/rule-severity.d.ts
new file mode 100644
index 000000000..37ba24a45
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/shared/rule-severity.d.ts
@@ -0,0 +1,7 @@
+import type { TextlintRuleOptions, TextlintRuleSeverityLevel } from "@textlint/types";
+/**
+ * get severity level from ruleConfig.
+ * @param {Object|boolean|undefined} ruleConfig
+ * @returns {number}
+ */
+export declare function getSeverity(ruleConfig?: TextlintRuleOptions): TextlintRuleSeverityLevel;
diff --git a/node_modules/@textlint/kernel/module/shared/rule-severity.js b/node_modules/@textlint/kernel/module/shared/rule-severity.js
new file mode 100644
index 000000000..fd3033e82
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/shared/rule-severity.js
@@ -0,0 +1,32 @@
+// LICENSE : MIT
+"use strict";
+import { TextlintRuleSeverityLevelKeys } from "../context/TextlintRuleSeverityLevelKeys";
+var isSeverityLevelValue = function (type) {
+ if (type === undefined) {
+ throw new Error("Please set following value to severity:\n\"rule-key\": {\n \"severity\": \"\"\n}");
+ }
+ return true;
+};
+/**
+ * get severity level from ruleConfig.
+ * @param {Object|boolean|undefined} ruleConfig
+ * @returns {number}
+ */
+export function getSeverity(ruleConfig) {
+ if (ruleConfig === undefined) {
+ return TextlintRuleSeverityLevelKeys.error;
+ }
+ // rule:
+ if (typeof ruleConfig === "boolean") {
+ return ruleConfig ? TextlintRuleSeverityLevelKeys.error : TextlintRuleSeverityLevelKeys.none;
+ }
+ if (ruleConfig.severity) {
+ var severityValue = TextlintRuleSeverityLevelKeys[ruleConfig.severity];
+ if (!isSeverityLevelValue(severityValue)) {
+ throw new Error("Please set following value to severity:\n\"rule-key\": {\n \"severity\": \"\"\n}");
+ }
+ return severityValue;
+ }
+ return TextlintRuleSeverityLevelKeys.error;
+}
+//# sourceMappingURL=rule-severity.js.map
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/shared/rule-severity.js.map b/node_modules/@textlint/kernel/module/shared/rule-severity.js.map
new file mode 100644
index 000000000..7bef3814f
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/shared/rule-severity.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"rule-severity.js","sourceRoot":"","sources":["../../src/shared/rule-severity.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAChB,YAAY,CAAC;AAEb,OAAO,EAAE,6BAA6B,EAAE,MAAM,0CAA0C,CAAC;AAEzF,IAAM,oBAAoB,GAAG,UAAC,IAAS;IACnC,IAAI,IAAI,KAAK,SAAS,EAAE;QACpB,MAAM,IAAI,KAAK,CAAC,oGAGtB,CAAC,CAAC;KACC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,UAAgC;IACxD,IAAI,UAAU,KAAK,SAAS,EAAE;QAC1B,OAAO,6BAA6B,CAAC,KAAK,CAAC;KAC9C;IACD,oBAAoB;IACpB,IAAI,OAAO,UAAU,KAAK,SAAS,EAAE;QACjC,OAAO,UAAU,CAAC,CAAC,CAAC,6BAA6B,CAAC,KAAK,CAAC,CAAC,CAAC,6BAA6B,CAAC,IAAI,CAAC;KAChG;IACD,IAAI,UAAU,CAAC,QAAQ,EAAE;QACrB,IAAM,aAAa,GAAG,6BAA6B,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QACzE,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,EAAE;YACtC,MAAM,IAAI,KAAK,CAAC,oGAG1B,CAAC,CAAC;SACK;QACD,OAAO,aAAa,CAAC;KACxB;IACD,OAAO,6BAA6B,CAAC,KAAK,CAAC;AAC/C,CAAC"}
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/shared/type/MessageType.d.ts b/node_modules/@textlint/kernel/module/shared/type/MessageType.d.ts
new file mode 100644
index 000000000..5da8abb11
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/shared/type/MessageType.d.ts
@@ -0,0 +1,10 @@
+declare const _default: {
+ lint: string;
+ ignore: string;
+};
+/**
+ * TextLintMessage type
+ * @typedef {Object} MessageType
+ * @type {{lint: string, ignore: string}}
+ */
+export default _default;
diff --git a/node_modules/@textlint/kernel/module/shared/type/MessageType.js b/node_modules/@textlint/kernel/module/shared/type/MessageType.js
new file mode 100644
index 000000000..605d76eb7
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/shared/type/MessageType.js
@@ -0,0 +1,12 @@
+/**
+ * TextLintMessage type
+ * @typedef {Object} MessageType
+ * @type {{lint: string, ignore: string}}
+ */
+export default {
+ // Linting(also include Fix) Message Type
+ lint: "lint",
+ // Ignoring Message Type
+ ignore: "ignore"
+};
+//# sourceMappingURL=MessageType.js.map
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/shared/type/MessageType.js.map b/node_modules/@textlint/kernel/module/shared/type/MessageType.js.map
new file mode 100644
index 000000000..79acdeaee
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/shared/type/MessageType.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"MessageType.js","sourceRoot":"","sources":["../../../src/shared/type/MessageType.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAe;IACX,yCAAyC;IACzC,IAAI,EAAE,MAAM;IACZ,wBAAwB;IACxB,MAAM,EAAE,QAAQ;CACnB,CAAC"}
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/task/fixer-task.d.ts b/node_modules/@textlint/kernel/module/task/fixer-task.d.ts
new file mode 100644
index 000000000..7bf7b9cf7
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/task/fixer-task.d.ts
@@ -0,0 +1,21 @@
+import CoreTask from "./textlint-core-task";
+import { TextlintKernelConstructorOptions } from "../textlint-kernel-interface";
+import { TextlintFilterRuleDescriptors, TextlintFixableRuleDescriptor } from "../descriptor";
+import type { TextlintSourceCode } from "@textlint/types";
+export interface TextLintCoreTaskArgs {
+ config: TextlintKernelConstructorOptions;
+ fixableRuleDescriptor: TextlintFixableRuleDescriptor;
+ filterRuleDescriptors: TextlintFilterRuleDescriptors;
+ sourceCode: TextlintSourceCode;
+ configBaseDir?: string;
+}
+export default class TextLintCoreTask extends CoreTask {
+ config: TextlintKernelConstructorOptions;
+ fixableRuleDescriptor: TextlintFixableRuleDescriptor;
+ filterRuleDescriptors: TextlintFilterRuleDescriptors;
+ sourceCode: TextlintSourceCode;
+ configBaseDir?: string;
+ constructor({ config, configBaseDir, fixableRuleDescriptor, filterRuleDescriptors, sourceCode }: TextLintCoreTaskArgs);
+ start(): void;
+ private _setupRules;
+}
diff --git a/node_modules/@textlint/kernel/module/task/fixer-task.js b/node_modules/@textlint/kernel/module/task/fixer-task.js
new file mode 100644
index 000000000..948693322
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/task/fixer-task.js
@@ -0,0 +1,70 @@
+// LICENSE : MIT
+"use strict";
+var __extends = (this && this.__extends) || (function () {
+ var extendStatics = function (d, b) {
+ extendStatics = Object.setPrototypeOf ||
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
+ return extendStatics(d, b);
+ };
+ return function (d, b) {
+ extendStatics(d, b);
+ function __() { this.constructor = d; }
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+ };
+})();
+import CoreTask from "./textlint-core-task";
+import { getSeverity } from "../shared/rule-severity";
+import { TextlintFilterRuleContextImpl } from "../context/TextlintFilterRuleContextImpl";
+import { TextlintRuleContextImpl } from "../context/TextlintRuleContextImpl";
+import _debug from "debug";
+var debug = _debug("textlint:TextLintCoreTask");
+var TextLintCoreTask = /** @class */ (function (_super) {
+ __extends(TextLintCoreTask, _super);
+ function TextLintCoreTask(_a) {
+ var config = _a.config, configBaseDir = _a.configBaseDir, fixableRuleDescriptor = _a.fixableRuleDescriptor, filterRuleDescriptors = _a.filterRuleDescriptors, sourceCode = _a.sourceCode;
+ var _this = _super.call(this) || this;
+ _this.config = config;
+ _this.configBaseDir = configBaseDir;
+ _this.fixableRuleDescriptor = fixableRuleDescriptor;
+ _this.filterRuleDescriptors = filterRuleDescriptors;
+ _this.sourceCode = sourceCode;
+ _this._setupRules();
+ return _this;
+ }
+ TextLintCoreTask.prototype.start = function () {
+ this.startTraverser(this.sourceCode);
+ };
+ TextLintCoreTask.prototype._setupRules = function () {
+ var _this = this;
+ // rule
+ var sourceCode = this.sourceCode;
+ var report = this.createReporter(sourceCode);
+ var ignoreReport = this.createShouldIgnore();
+ // setup "rules" field by using a single fixerRule
+ debug("fixerRule", this.fixableRuleDescriptor);
+ var ruleContext = new TextlintRuleContextImpl({
+ ruleId: this.fixableRuleDescriptor.id,
+ severityLevel: getSeverity(this.fixableRuleDescriptor.normalizedOptions),
+ sourceCode: sourceCode,
+ report: report,
+ configBaseDir: this.configBaseDir
+ });
+ this.tryToAddListenRule(this.fixableRuleDescriptor.fixer, ruleContext, this.fixableRuleDescriptor.normalizedOptions);
+ // setup "filters" field
+ debug("filterRules", this.filterRuleDescriptors);
+ this.filterRuleDescriptors.descriptors.forEach(function (filterRuleDescriptor) {
+ var ruleContext = new TextlintFilterRuleContextImpl({
+ ruleId: filterRuleDescriptor.id,
+ severityLevel: getSeverity(filterRuleDescriptor.normalizedOptions),
+ sourceCode: sourceCode,
+ ignoreReport: ignoreReport,
+ configBaseDir: _this.configBaseDir
+ });
+ _this.tryToAddListenRule(filterRuleDescriptor.filter, ruleContext, filterRuleDescriptor.normalizedOptions);
+ });
+ };
+ return TextLintCoreTask;
+}(CoreTask));
+export default TextLintCoreTask;
+//# sourceMappingURL=fixer-task.js.map
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/task/fixer-task.js.map b/node_modules/@textlint/kernel/module/task/fixer-task.js.map
new file mode 100644
index 000000000..318101e3a
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/task/fixer-task.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"fixer-task.js","sourceRoot":"","sources":["../../src/task/fixer-task.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAChB,YAAY,CAAC;;;;;;;;;;;;;;AACb,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAI5C,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,6BAA6B,EAAE,MAAM,0CAA0C,CAAC;AACzF,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,MAAM,MAAM,OAAO,CAAC;AAE3B,IAAM,KAAK,GAAG,MAAM,CAAC,2BAA2B,CAAC,CAAC;AAUlD;IAA8C,oCAAQ;IAOlD,0BAAY,EAMW;YALnB,MAAM,YAAA,EACN,aAAa,mBAAA,EACb,qBAAqB,2BAAA,EACrB,qBAAqB,2BAAA,EACrB,UAAU,gBAAA;QALd,YAOI,iBAAO,SAOV;QANG,KAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,KAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,KAAI,CAAC,qBAAqB,GAAG,qBAAqB,CAAC;QACnD,KAAI,CAAC,qBAAqB,GAAG,qBAAqB,CAAC;QACnD,KAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,KAAI,CAAC,WAAW,EAAE,CAAC;;IACvB,CAAC;IAED,gCAAK,GAAL;QACI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACzC,CAAC;IAEO,sCAAW,GAAnB;QAAA,iBA+BC;QA9BG,OAAO;QACP,IAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACnC,IAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QAC/C,IAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC/C,kDAAkD;QAClD,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAC/C,IAAM,WAAW,GAAG,IAAI,uBAAuB,CAAC;YAC5C,MAAM,EAAE,IAAI,CAAC,qBAAqB,CAAC,EAAE;YACrC,aAAa,EAAE,WAAW,CAAC,IAAI,CAAC,qBAAqB,CAAC,iBAAiB,CAAC;YACxE,UAAU,YAAA;YACV,MAAM,QAAA;YACN,aAAa,EAAE,IAAI,CAAC,aAAa;SACpC,CAAC,CAAC;QACH,IAAI,CAAC,kBAAkB,CACnB,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAChC,WAAW,EACX,IAAI,CAAC,qBAAqB,CAAC,iBAAiB,CAC/C,CAAC;QACF,wBAAwB;QACxB,KAAK,CAAC,aAAa,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;QACjD,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,OAAO,CAAC,UAAC,oBAAoB;YAChE,IAAM,WAAW,GAAG,IAAI,6BAA6B,CAAC;gBAClD,MAAM,EAAE,oBAAoB,CAAC,EAAE;gBAC/B,aAAa,EAAE,WAAW,CAAC,oBAAoB,CAAC,iBAAiB,CAAC;gBAClE,UAAU,YAAA;gBACV,YAAY,cAAA;gBACZ,aAAa,EAAE,KAAI,CAAC,aAAa;aACpC,CAAC,CAAC;YACH,KAAI,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,MAAM,EAAE,WAAW,EAAE,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;QAC9G,CAAC,CAAC,CAAC;IACP,CAAC;IACL,uBAAC;AAAD,CAAC,AA3DD,CAA8C,QAAQ,GA2DrD"}
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/task/linter-task.d.ts b/node_modules/@textlint/kernel/module/task/linter-task.d.ts
new file mode 100644
index 000000000..3b13ebffd
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/task/linter-task.d.ts
@@ -0,0 +1,21 @@
+import CoreTask from "./textlint-core-task";
+import { TextlintKernelConstructorOptions } from "../textlint-kernel-interface";
+import { TextlintFilterRuleDescriptors, TextlintRuleDescriptors } from "../descriptor";
+import type { TextlintSourceCode } from "@textlint/types";
+export interface TextLintCoreTaskArgs {
+ config: TextlintKernelConstructorOptions;
+ ruleDescriptors: TextlintRuleDescriptors;
+ filterRuleDescriptors: TextlintFilterRuleDescriptors;
+ sourceCode: TextlintSourceCode;
+ configBaseDir?: string;
+}
+export default class TextLintCoreTask extends CoreTask {
+ config: TextlintKernelConstructorOptions;
+ ruleDescriptors: TextlintRuleDescriptors;
+ filterRuleDescriptors: TextlintFilterRuleDescriptors;
+ sourceCode: TextlintSourceCode;
+ configBaseDir?: string;
+ constructor({ config, configBaseDir, ruleDescriptors, filterRuleDescriptors: filterRuleDescriptors, sourceCode }: TextLintCoreTaskArgs);
+ start(): void;
+ private _setupRules;
+}
diff --git a/node_modules/@textlint/kernel/module/task/linter-task.js b/node_modules/@textlint/kernel/module/task/linter-task.js
new file mode 100644
index 000000000..99b3ae03e
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/task/linter-task.js
@@ -0,0 +1,71 @@
+// LICENSE : MIT
+"use strict";
+var __extends = (this && this.__extends) || (function () {
+ var extendStatics = function (d, b) {
+ extendStatics = Object.setPrototypeOf ||
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
+ return extendStatics(d, b);
+ };
+ return function (d, b) {
+ extendStatics(d, b);
+ function __() { this.constructor = d; }
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+ };
+})();
+import CoreTask from "./textlint-core-task";
+import { getSeverity } from "../shared/rule-severity";
+import { TextlintRuleContextImpl } from "../context/TextlintRuleContextImpl";
+import { TextlintFilterRuleContextImpl } from "../context/TextlintFilterRuleContextImpl";
+var TextLintCoreTask = /** @class */ (function (_super) {
+ __extends(TextLintCoreTask, _super);
+ function TextLintCoreTask(_a) {
+ var config = _a.config, configBaseDir = _a.configBaseDir, ruleDescriptors = _a.ruleDescriptors, filterRuleDescriptors = _a.filterRuleDescriptors, sourceCode = _a.sourceCode;
+ var _this = _super.call(this) || this;
+ _this.config = config;
+ _this.configBaseDir = configBaseDir;
+ _this.ruleDescriptors = ruleDescriptors;
+ _this.filterRuleDescriptors = filterRuleDescriptors;
+ _this.sourceCode = sourceCode;
+ _this._setupRules();
+ return _this;
+ }
+ TextLintCoreTask.prototype.start = function () {
+ this.startTraverser(this.sourceCode);
+ };
+ TextLintCoreTask.prototype._setupRules = function () {
+ var _this = this;
+ // rule
+ var sourceCode = this.sourceCode;
+ var report = this.createReporter(sourceCode);
+ var ignoreReport = this.createShouldIgnore();
+ // setup "rules" field
+ // filter duplicated rules for improving experience
+ // see https://github.com/textlint/textlint/issues/219
+ this.ruleDescriptors.lintableDescriptors.forEach(function (ruleDescriptor) {
+ var ruleOptions = ruleDescriptor.normalizedOptions;
+ var ruleContext = new TextlintRuleContextImpl({
+ ruleId: ruleDescriptor.id,
+ severityLevel: getSeverity(ruleOptions),
+ sourceCode: sourceCode,
+ report: report,
+ configBaseDir: _this.configBaseDir
+ });
+ _this.tryToAddListenRule(ruleDescriptor.linter, ruleContext, ruleOptions);
+ });
+ // setup "filters" field
+ this.filterRuleDescriptors.descriptors.forEach(function (filterDescriptor) {
+ var ruleContext = new TextlintFilterRuleContextImpl({
+ ruleId: filterDescriptor.id,
+ sourceCode: sourceCode,
+ ignoreReport: ignoreReport,
+ configBaseDir: _this.configBaseDir,
+ severityLevel: getSeverity(filterDescriptor.normalizedOptions)
+ });
+ _this.tryToAddListenRule(filterDescriptor.filter, ruleContext, filterDescriptor.normalizedOptions);
+ });
+ };
+ return TextLintCoreTask;
+}(CoreTask));
+export default TextLintCoreTask;
+//# sourceMappingURL=linter-task.js.map
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/task/linter-task.js.map b/node_modules/@textlint/kernel/module/task/linter-task.js.map
new file mode 100644
index 000000000..5bc5b376e
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/task/linter-task.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"linter-task.js","sourceRoot":"","sources":["../../src/task/linter-task.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAChB,YAAY,CAAC;;;;;;;;;;;;;;AACb,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAI5C,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,EAAE,6BAA6B,EAAE,MAAM,0CAA0C,CAAC;AAUzF;IAA8C,oCAAQ;IAOlD,0BAAY,EAMW;YALnB,MAAM,YAAA,EACN,aAAa,mBAAA,EACb,eAAe,qBAAA,EACQ,qBAAqB,2BAAA,EAC5C,UAAU,gBAAA;QALd,YAOI,iBAAO,SAOV;QANG,KAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,KAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,KAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,KAAI,CAAC,qBAAqB,GAAG,qBAAqB,CAAC;QACnD,KAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,KAAI,CAAC,WAAW,EAAE,CAAC;;IACvB,CAAC;IAED,gCAAK,GAAL;QACI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACzC,CAAC;IAEO,sCAAW,GAAnB;QAAA,iBA8BC;QA7BG,OAAO;QACP,IAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACnC,IAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QAC/C,IAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC/C,sBAAsB;QACtB,mDAAmD;QACnD,sDAAsD;QACtD,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAAC,OAAO,CAAC,UAAC,cAAc;YAC5D,IAAM,WAAW,GAAG,cAAc,CAAC,iBAAiB,CAAC;YACrD,IAAM,WAAW,GAAG,IAAI,uBAAuB,CAAC;gBAC5C,MAAM,EAAE,cAAc,CAAC,EAAE;gBACzB,aAAa,EAAE,WAAW,CAAC,WAAW,CAAC;gBACvC,UAAU,YAAA;gBACV,MAAM,QAAA;gBACN,aAAa,EAAE,KAAI,CAAC,aAAa;aACpC,CAAC,CAAC;YACH,KAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;QAC7E,CAAC,CAAC,CAAC;QACH,wBAAwB;QACxB,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,OAAO,CAAC,UAAC,gBAAgB;YAC5D,IAAM,WAAW,GAAG,IAAI,6BAA6B,CAAC;gBAClD,MAAM,EAAE,gBAAgB,CAAC,EAAE;gBAC3B,UAAU,YAAA;gBACV,YAAY,cAAA;gBACZ,aAAa,EAAE,KAAI,CAAC,aAAa;gBACjC,aAAa,EAAE,WAAW,CAAC,gBAAgB,CAAC,iBAAiB,CAAC;aACjE,CAAC,CAAC;YACH,KAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,MAAM,EAAE,WAAW,EAAE,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;QACtG,CAAC,CAAC,CAAC;IACP,CAAC;IACL,uBAAC;AAAD,CAAC,AA1DD,CAA8C,QAAQ,GA0DrD"}
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/task/promise-event-emitter.d.ts b/node_modules/@textlint/kernel/module/task/promise-event-emitter.d.ts
new file mode 100644
index 000000000..32fa973b8
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/task/promise-event-emitter.d.ts
@@ -0,0 +1,9 @@
+///
+import { EventEmitter } from "events";
+export declare class PromiseEventEmitter {
+ private events;
+ constructor();
+ listenerCount(type: string | symbol): number;
+ on(event: string, listener: (...args: any[]) => void): EventEmitter;
+ emit(event: string, ...args: Array): Promise>;
+}
diff --git a/node_modules/@textlint/kernel/module/task/promise-event-emitter.js b/node_modules/@textlint/kernel/module/task/promise-event-emitter.js
new file mode 100644
index 000000000..4fa90ecb8
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/task/promise-event-emitter.js
@@ -0,0 +1,31 @@
+// MIT © 2017 azu
+// MIT © 2017 59naga
+// https://github.com/59naga/carrack
+"use strict";
+import { EventEmitter } from "events";
+var PromiseEventEmitter = /** @class */ (function () {
+ function PromiseEventEmitter() {
+ this.events = new EventEmitter();
+ this.events.setMaxListeners(0);
+ }
+ PromiseEventEmitter.prototype.listenerCount = function (type) {
+ return this.events.listenerCount(type);
+ };
+ PromiseEventEmitter.prototype.on = function (event, listener) {
+ return this.events.on(event, listener);
+ };
+ PromiseEventEmitter.prototype.emit = function (event) {
+ var args = [];
+ for (var _i = 1; _i < arguments.length; _i++) {
+ args[_i - 1] = arguments[_i];
+ }
+ var promises = [];
+ this.events.listeners(event).forEach(function (listener) {
+ promises.push(listener.apply(void 0, args));
+ });
+ return Promise.all(promises);
+ };
+ return PromiseEventEmitter;
+}());
+export { PromiseEventEmitter };
+//# sourceMappingURL=promise-event-emitter.js.map
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/task/promise-event-emitter.js.map b/node_modules/@textlint/kernel/module/task/promise-event-emitter.js.map
new file mode 100644
index 000000000..e3a4fff48
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/task/promise-event-emitter.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"promise-event-emitter.js","sourceRoot":"","sources":["../../src/task/promise-event-emitter.ts"],"names":[],"mappings":"AAAA,iBAAiB;AACjB,oBAAoB;AACpB,oCAAoC;AACpC,YAAY,CAAC;AACb,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC;IAGI;QACI,IAAI,CAAC,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QACjC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC;IAED,2CAAa,GAAb,UAAc,IAAqB;QAC/B,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED,gCAAE,GAAF,UAAG,KAAa,EAAE,QAAkC;QAChD,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC3C,CAAC;IAED,kCAAI,GAAJ,UAAK,KAAa;QAAE,cAAmB;aAAnB,UAAmB,EAAnB,qBAAmB,EAAnB,IAAmB;YAAnB,6BAAmB;;QACnC,IAAM,QAAQ,GAAyB,EAAE,CAAC;QAE1C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,UAAC,QAAQ;YAC1C,QAAQ,CAAC,IAAI,CAAC,QAAQ,eAAI,IAAI,EAAE,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACjC,CAAC;IACL,0BAAC;AAAD,CAAC,AAzBD,IAyBC"}
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/task/task-runner.d.ts b/node_modules/@textlint/kernel/module/task/task-runner.d.ts
new file mode 100644
index 000000000..0b93ec0b1
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/task/task-runner.d.ts
@@ -0,0 +1,9 @@
+import { default as TextLintCoreTask, IgnoreReportedMessage, LintReportedMessage } from "./textlint-core-task";
+export default class TaskRunner {
+ /**
+ * Task and return promise
+ * @param {TextLintCoreTask} task
+ * @returns {Promise}
+ */
+ static process(task: TextLintCoreTask): Promise>;
+}
diff --git a/node_modules/@textlint/kernel/module/task/task-runner.js b/node_modules/@textlint/kernel/module/task/task-runner.js
new file mode 100644
index 000000000..f4ecada64
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/task/task-runner.js
@@ -0,0 +1,31 @@
+// LICENSE : MIT
+"use strict";
+import CoreTask from "./textlint-core-task";
+var TaskRunner = /** @class */ (function () {
+ function TaskRunner() {
+ }
+ /**
+ * Task and return promise
+ * @param {TextLintCoreTask} task
+ * @returns {Promise}
+ */
+ TaskRunner.process = function (task) {
+ return new Promise(function (resolve, reject) {
+ var messages = [];
+ task.on(CoreTask.events.message, function (message) {
+ messages.push(message);
+ });
+ task.on(CoreTask.events.error, function (error) {
+ reject(error);
+ });
+ task.on(CoreTask.events.complete, function () {
+ task.removeAllListeners();
+ resolve(messages);
+ });
+ task.start();
+ });
+ };
+ return TaskRunner;
+}());
+export default TaskRunner;
+//# sourceMappingURL=task-runner.js.map
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/task/task-runner.js.map b/node_modules/@textlint/kernel/module/task/task-runner.js.map
new file mode 100644
index 000000000..bd4cbe64e
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/task/task-runner.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"task-runner.js","sourceRoot":"","sources":["../../src/task/task-runner.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAChB,YAAY,CAAC;AACb,OAAO,QAIN,MAAM,sBAAsB,CAAC;AAE9B;IAAA;IAsBA,CAAC;IArBG;;;;OAIG;IACI,kBAAO,GAAd,UAAe,IAAsB;QACjC,OAAO,IAAI,OAAO,CAAC,UAAC,OAAO,EAAE,MAAM;YAC/B,IAAM,QAAQ,GAAuD,EAAE,CAAC;YACxE,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,UAAC,OAAO;gBACrC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC3B,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,UAAC,KAAK;gBACjC,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE;gBAC9B,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBAC1B,OAAO,CAAC,QAAQ,CAAC,CAAC;YACtB,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,KAAK,EAAE,CAAC;QACjB,CAAC,CAAC,CAAC;IACP,CAAC;IACL,iBAAC;AAAD,CAAC,AAtBD,IAsBC"}
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/task/textlint-core-task.d.ts b/node_modules/@textlint/kernel/module/task/textlint-core-task.d.ts
new file mode 100644
index 000000000..34b226203
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/task/textlint-core-task.d.ts
@@ -0,0 +1,59 @@
+///
+import MessageType from "../shared/type/MessageType";
+import { EventEmitter } from "events";
+import type { TextlintFilterRuleContext, TextlintFilterRuleOptions, TextlintFilterRuleReporter, TextlintFilterRuleShouldIgnoreFunction, TextlintMessageFixCommand, TextlintRuleContext, TextlintRuleContextReportFunction, TextlintRuleOptions, TextlintRuleReporter, TextlintSourceCode } from "@textlint/types";
+export interface IgnoreReportedMessage {
+ ruleId: string;
+ type: typeof MessageType.ignore;
+ range: [number, number];
+ ignoringRuleId: string;
+}
+export interface LintReportedMessage {
+ type: typeof MessageType.lint;
+ ruleId: string;
+ message: string;
+ index: number;
+ line: number;
+ column: number;
+ severity: number;
+ fix?: TextlintMessageFixCommand;
+}
+/**
+ * CoreTask receive AST and prepare, traverse AST, emit nodeType event!
+ * You can observe task and receive "message" event that is TextLintMessage.
+ */
+export default abstract class TextLintCoreTask extends EventEmitter {
+ private ruleTypeEmitter;
+ static get events(): {
+ start: string;
+ message: string;
+ complete: string;
+ error: string;
+ };
+ constructor();
+ abstract start(): void;
+ createShouldIgnore(): TextlintFilterRuleShouldIgnoreFunction;
+ createReporter(sourceCode: TextlintSourceCode): TextlintRuleContextReportFunction;
+ /**
+ * start process and emitting events.
+ * You can listen message by `task.on("message", message => {})`
+ * @param {SourceCode} sourceCode
+ */
+ startTraverser(sourceCode: TextlintSourceCode): void;
+ /**
+ * try to get rule object
+ */
+ tryToGetRuleObject(ruleCreator: TextlintRuleReporter, ruleContext: Readonly, ruleOptions?: TextlintRuleOptions): import("@textlint/types").TextlintRuleReportHandler;
+ /**
+ * try to get filter rule object
+ */
+ tryToGetFilterRuleObject(ruleCreator: TextlintFilterRuleReporter, ruleContext: Readonly, ruleOptions?: TextlintFilterRuleOptions): import("@textlint/types").TextlintFilterRuleReportHandler;
+ /**
+ * add all the node types as listeners of the rule
+ * @param {Function} ruleCreator
+ * @param {Readonly|Readonly} ruleContext
+ * @param {Object|boolean|undefined} ruleOptions
+ * @returns {Object}
+ */
+ tryToAddListenRule(ruleCreator: TextlintRuleReporter | TextlintFilterRuleReporter, ruleContext: Readonly | Readonly, ruleOptions?: TextlintRuleOptions | TextlintFilterRuleOptions): void;
+}
diff --git a/node_modules/@textlint/kernel/module/task/textlint-core-task.js b/node_modules/@textlint/kernel/module/task/textlint-core-task.js
new file mode 100644
index 000000000..21ec4e23f
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/task/textlint-core-task.js
@@ -0,0 +1,195 @@
+// LICENSE : MIT
+"use strict";
+var __extends = (this && this.__extends) || (function () {
+ var extendStatics = function (d, b) {
+ extendStatics = Object.setPrototypeOf ||
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
+ return extendStatics(d, b);
+ };
+ return function (d, b) {
+ extendStatics(d, b);
+ function __() { this.constructor = d; }
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+ };
+})();
+import { TextlintRuleErrorImpl } from "../context/TextlintRuleErrorImpl";
+import { PromiseEventEmitter } from "./promise-event-emitter";
+import SourceLocation from "../core/source-location";
+import timing from "../util/timing";
+import MessageType from "../shared/type/MessageType";
+import { EventEmitter } from "events";
+import * as assert from "assert";
+import { normalizeTextlintKeyPath } from "@textlint/utils";
+import { TextlintRuleContextImpl } from "../context/TextlintRuleContextImpl";
+import _debug from "debug";
+import { Controller as TraverseController } from "@textlint/ast-traverse";
+var traverseController = new TraverseController();
+var debug = _debug("textlint:core-task");
+var RuleTypeEmitter = /** @class */ (function (_super) {
+ __extends(RuleTypeEmitter, _super);
+ function RuleTypeEmitter() {
+ return _super !== null && _super.apply(this, arguments) || this;
+ }
+ return RuleTypeEmitter;
+}(PromiseEventEmitter));
+/**
+ * CoreTask receive AST and prepare, traverse AST, emit nodeType event!
+ * You can observe task and receive "message" event that is TextLintMessage.
+ */
+var TextLintCoreTask = /** @class */ (function (_super) {
+ __extends(TextLintCoreTask, _super);
+ function TextLintCoreTask() {
+ var _this = _super.call(this) || this;
+ _this.ruleTypeEmitter = new RuleTypeEmitter();
+ return _this;
+ }
+ Object.defineProperty(TextLintCoreTask, "events", {
+ get: function () {
+ return {
+ // receive start event
+ start: "start",
+ // receive message from each rules
+ message: "message",
+ // receive complete event
+ complete: "complete",
+ // receive error event
+ error: "error"
+ };
+ },
+ enumerable: false,
+ configurable: true
+ });
+ TextLintCoreTask.prototype.createShouldIgnore = function () {
+ var _this = this;
+ var shouldIgnore = function (args) {
+ var ruleId = args.ruleId, range = args.range, optional = args.optional;
+ assert.ok(typeof range[0] !== "undefined" && typeof range[1] !== "undefined" && range[0] >= 0 && range[1] >= 0, "ignoreRange should have actual range: " + range);
+ // FIXME: should have index, loc
+ // should be compatible with LintReportedMessage?
+ var message = {
+ type: MessageType.ignore,
+ ruleId: ruleId,
+ range: range,
+ // ignoring target ruleId - default: filter all messages
+ // This ruleId should be normalized, because the user can report any value
+ ignoringRuleId: optional.ruleId ? normalizeTextlintKeyPath(optional.ruleId) : "*"
+ };
+ _this.emit(TextLintCoreTask.events.message, message);
+ };
+ return shouldIgnore;
+ };
+ TextLintCoreTask.prototype.createReporter = function (sourceCode) {
+ var _this = this;
+ var sourceLocation = new SourceLocation(sourceCode);
+ /**
+ * push new RuleError to results
+ * @param {ReportMessage} reportArgs
+ */
+ var reportFunction = function (reportArgs) {
+ var ruleId = reportArgs.ruleId, severity = reportArgs.severity, ruleError = reportArgs.ruleError;
+ debug("%s pushReport %s", ruleId, ruleError);
+ var _a = sourceLocation.adjust(reportArgs), line = _a.line, column = _a.column, fix = _a.fix;
+ var index = sourceCode.positionToIndex({ line: line, column: column });
+ // add TextLintMessage
+ var message = {
+ type: MessageType.lint,
+ ruleId: ruleId,
+ message: ruleError.message,
+ index: index,
+ // See https://github.com/textlint/textlint/blob/master/typing/textlint.d.ts
+ line: line,
+ column: column + 1,
+ severity: severity,
+ fix: fix !== undefined ? fix : undefined
+ };
+ if (!(ruleError instanceof TextlintRuleErrorImpl)) {
+ // FIXME: RuleReportedObject should be removed
+ // `error` is a any data.
+ var data = ruleError;
+ message.data = data;
+ }
+ _this.emit(TextLintCoreTask.events.message, message);
+ };
+ return reportFunction;
+ };
+ /**
+ * start process and emitting events.
+ * You can listen message by `task.on("message", message => {})`
+ * @param {SourceCode} sourceCode
+ */
+ TextLintCoreTask.prototype.startTraverser = function (sourceCode) {
+ var _this = this;
+ this.emit(TextLintCoreTask.events.start);
+ var promiseQueue = [];
+ var ruleTypeEmitter = this.ruleTypeEmitter;
+ traverseController.traverse(sourceCode.ast, {
+ enter: function (node, parent) {
+ var type = node.type;
+ Object.defineProperty(node, "parent", { value: parent });
+ if (ruleTypeEmitter.listenerCount(type) > 0) {
+ var promise = ruleTypeEmitter.emit(type, node);
+ promiseQueue.push(promise);
+ }
+ },
+ leave: function (node) {
+ var type = node.type + ":exit";
+ if (ruleTypeEmitter.listenerCount(type) > 0) {
+ var promise = ruleTypeEmitter.emit(type, node);
+ promiseQueue.push(promise);
+ }
+ }
+ });
+ Promise.all(promiseQueue)
+ .then(function () {
+ _this.emit(TextLintCoreTask.events.complete);
+ })
+ .catch(function (error) {
+ _this.emit(TextLintCoreTask.events.error, error);
+ });
+ };
+ /**
+ * try to get rule object
+ */
+ TextLintCoreTask.prototype.tryToGetRuleObject = function (ruleCreator, ruleContext, ruleOptions) {
+ try {
+ return ruleCreator(ruleContext, ruleOptions);
+ }
+ catch (error) {
+ error.message = "Error while loading rule '" + ruleContext.id + "': " + error.message;
+ throw error;
+ }
+ };
+ /**
+ * try to get filter rule object
+ */
+ TextLintCoreTask.prototype.tryToGetFilterRuleObject = function (ruleCreator, ruleContext, ruleOptions) {
+ try {
+ return ruleCreator(ruleContext, ruleOptions);
+ }
+ catch (error) {
+ error.message = "Error while loading filter rule '" + ruleContext.id + "': " + error.message;
+ throw error;
+ }
+ };
+ /**
+ * add all the node types as listeners of the rule
+ * @param {Function} ruleCreator
+ * @param {Readonly|Readonly} ruleContext
+ * @param {Object|boolean|undefined} ruleOptions
+ * @returns {Object}
+ */
+ TextLintCoreTask.prototype.tryToAddListenRule = function (ruleCreator, ruleContext, ruleOptions) {
+ var _this = this;
+ var ruleObject = ruleContext instanceof TextlintRuleContextImpl
+ ? this.tryToGetRuleObject(ruleCreator, ruleContext, ruleOptions)
+ : this.tryToGetFilterRuleObject(ruleCreator, ruleContext, ruleOptions);
+ var types = Object.keys(ruleObject);
+ types.forEach(function (nodeType) {
+ _this.ruleTypeEmitter.on(nodeType, timing.enabled ? timing.time(ruleContext.id, ruleObject[nodeType]) : ruleObject[nodeType]);
+ });
+ };
+ return TextLintCoreTask;
+}(EventEmitter));
+export default TextLintCoreTask;
+//# sourceMappingURL=textlint-core-task.js.map
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/task/textlint-core-task.js.map b/node_modules/@textlint/kernel/module/task/textlint-core-task.js.map
new file mode 100644
index 000000000..bd0f290ae
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/task/textlint-core-task.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"textlint-core-task.js","sourceRoot":"","sources":["../../src/task/textlint-core-task.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/textlint-kernel-interface.d.ts b/node_modules/@textlint/kernel/module/textlint-kernel-interface.d.ts
new file mode 100644
index 000000000..dda32e5af
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/textlint-kernel-interface.d.ts
@@ -0,0 +1,45 @@
+import type { TextlintFilterRuleOptions, TextlintFilterRuleReporter, TextlintPluginCreator, TextlintPluginOptions, TextlintRuleModule, TextlintRuleOptions } from "@textlint/types";
+export interface TextlintKernelConstructorOptions {
+ /**
+ * Suppress messages of severity:warning and severity:info
+ */
+ quiet?: boolean;
+}
+export interface TextlintConfigObject {
+ rulePaths?: string[];
+ extensions?: string[];
+ formatterName?: string;
+ plugins?: string[];
+ rulesBaseDirectory?: string;
+ configFile?: string;
+ disabledRules?: string[];
+ presets?: string[];
+ rulesConfig?: Object;
+ /**
+ * quite options
+ */
+ quiet?: boolean;
+}
+export interface TextlintKernelPlugin {
+ pluginId: string;
+ plugin: TextlintPluginCreator;
+ options?: TextlintPluginOptions | boolean;
+}
+export interface TextlintKernelRule {
+ ruleId: string;
+ rule: TextlintRuleModule;
+ options?: TextlintRuleOptions | boolean;
+}
+export interface TextlintKernelFilterRule {
+ ruleId: string;
+ rule: TextlintFilterRuleReporter;
+ options?: TextlintFilterRuleOptions | boolean;
+}
+export interface TextlintKernelOptions {
+ ext: string;
+ filePath?: string;
+ plugins?: TextlintKernelPlugin[];
+ rules?: TextlintKernelRule[];
+ filterRules?: TextlintKernelFilterRule[];
+ configBaseDir?: string;
+}
diff --git a/node_modules/@textlint/kernel/module/textlint-kernel-interface.js b/node_modules/@textlint/kernel/module/textlint-kernel-interface.js
new file mode 100644
index 000000000..d27faa4ce
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/textlint-kernel-interface.js
@@ -0,0 +1,2 @@
+export {};
+//# sourceMappingURL=textlint-kernel-interface.js.map
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/textlint-kernel-interface.js.map b/node_modules/@textlint/kernel/module/textlint-kernel-interface.js.map
new file mode 100644
index 000000000..68c5cc211
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/textlint-kernel-interface.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"textlint-kernel-interface.js","sourceRoot":"","sources":["../src/textlint-kernel-interface.ts"],"names":[],"mappings":""}
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/textlint-kernel.d.ts b/node_modules/@textlint/kernel/module/textlint-kernel.d.ts
new file mode 100644
index 000000000..ea84eadea
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/textlint-kernel.d.ts
@@ -0,0 +1,57 @@
+import { TextlintKernelConstructorOptions, TextlintKernelOptions } from "./textlint-kernel-interface";
+import type { TextlintFixResult, TextlintResult } from "@textlint/types";
+/**
+ * TextlintKernel is core logic written by pure JavaScript.
+ *
+ * Pass
+ *
+ * - config
+ * - plugins
+ * - rules
+ * - filterRules
+ * - messageProcessor
+ *
+ */
+export declare class TextlintKernel {
+ private readonly config;
+ private readonly messageProcessManager;
+ /**
+ * @param config
+ */
+ constructor(config?: TextlintKernelConstructorOptions);
+ /**
+ * lint text by registered rules.
+ * The result contains target filePath and error messages.
+ * @param {string} text
+ * @param {Object} options linting options
+ * @returns {Promise.}
+ */
+ lintText(text: string, options: TextlintKernelOptions): Promise;
+ /**
+ * fix texts and return fix result object
+ * @param {string} text
+ * @param {Object} options lint options
+ * @returns {Promise.}
+ */
+ fixText(text: string, options: TextlintKernelOptions): Promise;
+ /**
+ * process text in parallel for Rules and return {Promise.}
+ * In other word, parallel flow process.
+ * @param {*} processor
+ * @param {string} text
+ * @param {Object} options
+ * @returns {Promise.}
+ * @private
+ */
+ private _parallelProcess;
+ /**
+ * process text in series for Rules and return {Promise.}
+ * In other word, sequence flow process.
+ * @param {*} processor
+ * @param {string} text
+ * @param {TextlintKernelOptions} options
+ * @returns {Promise.}
+ * @private
+ */
+ private _sequenceProcess;
+}
diff --git a/node_modules/@textlint/kernel/module/textlint-kernel.js b/node_modules/@textlint/kernel/module/textlint-kernel.js
new file mode 100644
index 000000000..4f64fec60
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/textlint-kernel.js
@@ -0,0 +1,196 @@
+// MIT © 2017- azu
+import * as assert from "assert";
+// sequence
+import FixerProcessor from "./fixer/fixer-processor";
+// parallel
+import LinterProcessor from "./linter/linter-processor";
+// message process manager
+import MessageProcessManager from "./messages/MessageProcessManager";
+import filterIgnoredProcess from "./messages/filter-ignored-process";
+import filterDuplicatedProcess from "./messages/filter-duplicated-process";
+import filterSeverityProcess from "./messages/filter-severity-process";
+import sortMessageProcess from "./messages/sort-messages-process";
+import { TextlintKernelDescriptor } from "./descriptor";
+import { TextlintSourceCodeImpl } from "./context/TextlintSourceCodeImpl";
+import { isTxtAST } from "@textlint/ast-tester";
+import _debug from "debug";
+var debug = _debug("textlint:kernel");
+/**
+ * add fileName to trailing of error message
+ * @param {string|undefined} fileName
+ * @param {string} message
+ * @returns {string}
+ */
+function addingAtFileNameToError(fileName, message) {
+ if (!fileName) {
+ return message;
+ }
+ return message + "\nat " + fileName;
+}
+/**
+ * TextlintKernel is core logic written by pure JavaScript.
+ *
+ * Pass
+ *
+ * - config
+ * - plugins
+ * - rules
+ * - filterRules
+ * - messageProcessor
+ *
+ */
+var TextlintKernel = /** @class */ (function () {
+ /**
+ * @param config
+ */
+ function TextlintKernel(config) {
+ if (config === void 0) { config = {}; }
+ // this.config often is undefined.
+ this.config = config;
+ // Initialize Message Processor
+ // Now, It it built-in process only
+ // filter `shouldIgnore()` results
+ this.messageProcessManager = new MessageProcessManager([filterIgnoredProcess]);
+ // filter duplicated messages
+ this.messageProcessManager.add(filterDuplicatedProcess);
+ // filter by severity
+ this.messageProcessManager.add(filterSeverityProcess(this.config));
+ this.messageProcessManager.add(sortMessageProcess);
+ }
+ /**
+ * lint text by registered rules.
+ * The result contains target filePath and error messages.
+ * @param {string} text
+ * @param {Object} options linting options
+ * @returns {Promise.}
+ */
+ TextlintKernel.prototype.lintText = function (text, options) {
+ var _this = this;
+ return Promise.resolve().then(function () {
+ var descriptor = new TextlintKernelDescriptor({
+ rules: options.rules || [],
+ filterRules: options.filterRules || [],
+ plugins: options.plugins || []
+ });
+ return _this._parallelProcess({
+ descriptor: descriptor,
+ text: text,
+ options: options
+ });
+ });
+ };
+ /**
+ * fix texts and return fix result object
+ * @param {string} text
+ * @param {Object} options lint options
+ * @returns {Promise.}
+ */
+ TextlintKernel.prototype.fixText = function (text, options) {
+ var _this = this;
+ return Promise.resolve().then(function () {
+ var descriptor = new TextlintKernelDescriptor({
+ rules: options.rules || [],
+ filterRules: options.filterRules || [],
+ plugins: options.plugins || []
+ });
+ return _this._sequenceProcess({
+ descriptor: descriptor,
+ options: options,
+ text: text
+ });
+ });
+ };
+ /**
+ * process text in parallel for Rules and return {Promise.}
+ * In other word, parallel flow process.
+ * @param {*} processor
+ * @param {string} text
+ * @param {Object} options
+ * @returns {Promise.}
+ * @private
+ */
+ TextlintKernel.prototype._parallelProcess = function (_a) {
+ var descriptor = _a.descriptor, text = _a.text, options = _a.options;
+ var ext = options.ext, filePath = options.filePath, configBaseDir = options.configBaseDir;
+ var plugin = descriptor.findPluginDescriptorWithExt(ext);
+ debug("available extensions: %o", descriptor.availableExtensions);
+ if (plugin === undefined) {
+ throw new Error("Not found available plugin for " + ext);
+ }
+ debug("use plugin: %s", plugin.id);
+ var processor = plugin.processor;
+ var _b = processor.processor(ext), preProcess = _b.preProcess, postProcess = _b.postProcess;
+ assert.ok(typeof preProcess === "function" && typeof postProcess === "function", "processor should implements {preProcess, postProcess}");
+ var preProcessResult = preProcess(text, filePath);
+ var isPluginReturnAnAST = isTxtAST(preProcessResult);
+ var textForAST = isPluginReturnAnAST ? text : preProcessResult.text;
+ var ast = isPluginReturnAnAST ? preProcessResult : preProcessResult.ast;
+ var sourceCode = new TextlintSourceCodeImpl({
+ text: textForAST,
+ ast: ast,
+ ext: ext,
+ filePath: filePath
+ });
+ var linterProcessor = new LinterProcessor(processor, this.messageProcessManager);
+ return linterProcessor
+ .process({
+ config: this.config,
+ ruleDescriptors: descriptor.rule,
+ filterRuleDescriptors: descriptor.filterRule,
+ sourceCode: sourceCode,
+ configBaseDir: configBaseDir
+ })
+ .catch(function (error) {
+ error.message = addingAtFileNameToError(filePath, error.message);
+ return Promise.reject(error);
+ });
+ };
+ /**
+ * process text in series for Rules and return {Promise.}
+ * In other word, sequence flow process.
+ * @param {*} processor
+ * @param {string} text
+ * @param {TextlintKernelOptions} options
+ * @returns {Promise.}
+ * @private
+ */
+ TextlintKernel.prototype._sequenceProcess = function (_a) {
+ var descriptor = _a.descriptor, text = _a.text, options = _a.options;
+ var ext = options.ext, filePath = options.filePath, configBaseDir = options.configBaseDir;
+ var plugin = descriptor.findPluginDescriptorWithExt(ext);
+ debug("available extensions: %o", descriptor.availableExtensions);
+ if (plugin === undefined) {
+ throw new Error("Not found available plugin for " + ext);
+ }
+ debug("use plugin: %s", plugin.id);
+ var processor = plugin.processor;
+ var _b = processor.processor(ext), preProcess = _b.preProcess, postProcess = _b.postProcess;
+ assert.ok(typeof preProcess === "function" && typeof postProcess === "function", "processor should implements {preProcess, postProcess}");
+ var preProcessResult = preProcess(text, filePath);
+ var isPluginReturnAnAST = isTxtAST(preProcessResult);
+ var textForAST = isPluginReturnAnAST ? text : preProcessResult.text;
+ var ast = isPluginReturnAnAST ? preProcessResult : preProcessResult.ast;
+ var sourceCode = new TextlintSourceCodeImpl({
+ text: textForAST,
+ ast: ast,
+ ext: ext,
+ filePath: filePath
+ });
+ var fixerProcessor = new FixerProcessor(processor, this.messageProcessManager);
+ return fixerProcessor
+ .process({
+ config: this.config,
+ ruleDescriptors: descriptor.rule,
+ filterRules: descriptor.filterRule,
+ sourceCode: sourceCode,
+ configBaseDir: configBaseDir
+ })
+ .catch(function (error) {
+ error.message = addingAtFileNameToError(filePath, error.message);
+ return Promise.reject(error);
+ });
+ };
+ return TextlintKernel;
+}());
+export { TextlintKernel };
+//# sourceMappingURL=textlint-kernel.js.map
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/textlint-kernel.js.map b/node_modules/@textlint/kernel/module/textlint-kernel.js.map
new file mode 100644
index 000000000..50f9a4fd7
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/textlint-kernel.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"textlint-kernel.js","sourceRoot":"","sources":["../src/textlint-kernel.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/util/logger.d.ts b/node_modules/@textlint/kernel/module/util/logger.d.ts
new file mode 100644
index 000000000..eccef48f0
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/util/logger.d.ts
@@ -0,0 +1,10 @@
+/**
+ * Logger Utils class
+ * Use this instead of `console.log`
+ * Main purpose for helping linting.
+ */
+export default class Logger {
+ static log(...message: Array): void;
+ static warn(...message: Array): void;
+ static error(...message: Array): void;
+}
diff --git a/node_modules/@textlint/kernel/module/util/logger.js b/node_modules/@textlint/kernel/module/util/logger.js
new file mode 100644
index 000000000..34212a9dd
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/util/logger.js
@@ -0,0 +1,36 @@
+// LICENSE : MIT
+"use strict";
+/* eslint-disable no-console */
+/**
+ * Logger Utils class
+ * Use this instead of `console.log`
+ * Main purpose for helping linting.
+ */
+var Logger = /** @class */ (function () {
+ function Logger() {
+ }
+ Logger.log = function () {
+ var message = [];
+ for (var _i = 0; _i < arguments.length; _i++) {
+ message[_i] = arguments[_i];
+ }
+ console.log.apply(console, message);
+ };
+ Logger.warn = function () {
+ var message = [];
+ for (var _i = 0; _i < arguments.length; _i++) {
+ message[_i] = arguments[_i];
+ }
+ console.warn.apply(console, message);
+ };
+ Logger.error = function () {
+ var message = [];
+ for (var _i = 0; _i < arguments.length; _i++) {
+ message[_i] = arguments[_i];
+ }
+ console.error.apply(console, message);
+ };
+ return Logger;
+}());
+export default Logger;
+//# sourceMappingURL=logger.js.map
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/util/logger.js.map b/node_modules/@textlint/kernel/module/util/logger.js.map
new file mode 100644
index 000000000..f6dc713ca
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/util/logger.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/util/logger.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAChB,YAAY,CAAC;AAEb,+BAA+B;AAE/B;;;;GAIG;AACH;IAAA;IAYA,CAAC;IAXU,UAAG,GAAV;QAAW,iBAAsB;aAAtB,UAAsB,EAAtB,qBAAsB,EAAtB,IAAsB;YAAtB,4BAAsB;;QAC7B,OAAO,CAAC,GAAG,OAAX,OAAO,EAAQ,OAAO,EAAE;IAC5B,CAAC;IAEM,WAAI,GAAX;QAAY,iBAAsB;aAAtB,UAAsB,EAAtB,qBAAsB,EAAtB,IAAsB;YAAtB,4BAAsB;;QAC9B,OAAO,CAAC,IAAI,OAAZ,OAAO,EAAS,OAAO,EAAE;IAC7B,CAAC;IAEM,YAAK,GAAZ;QAAa,iBAAsB;aAAtB,UAAsB,EAAtB,qBAAsB,EAAtB,IAAsB;YAAtB,4BAAsB;;QAC/B,OAAO,CAAC,KAAK,OAAb,OAAO,EAAU,OAAO,EAAE;IAC9B,CAAC;IACL,aAAC;AAAD,CAAC,AAZD,IAYC"}
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/util/timing.d.ts b/node_modules/@textlint/kernel/module/util/timing.d.ts
new file mode 100644
index 000000000..bdd0bfdd8
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/util/timing.d.ts
@@ -0,0 +1,5 @@
+declare const _default: {
+ time: (key: string, fn: Function) => () => void;
+ enabled: boolean;
+};
+export default _default;
diff --git a/node_modules/@textlint/kernel/module/util/timing.js b/node_modules/@textlint/kernel/module/util/timing.js
new file mode 100644
index 000000000..e8bea114b
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/util/timing.js
@@ -0,0 +1,116 @@
+/**
+ * @fileoverview Tracks performance of individual rules.
+ * @author Brandon Mills
+ * @copyright 2014 Brandon Mills. All rights reserved.
+ */
+"use strict";
+import Logger from "./logger";
+/* istanbul ignore next */
+/**
+ * Align the string to left
+ * @param {string} str string to evaluate
+ * @param {int} len length of the string
+ * @param {string} [ch] delimiter character
+ * @returns {string} modified string
+ * @private
+ */
+function alignLeft(str, len, ch) {
+ return str + new Array(len - str.length + 1).join(ch || " ");
+}
+/* istanbul ignore next */
+/**
+ * Align the string to right
+ * @param {string} str string to evaluate
+ * @param {int} len length of the string
+ * @param {string} [ch] delimiter character
+ * @returns {string} modified string
+ * @private
+ */
+function alignRight(str, len, ch) {
+ return new Array(len - str.length + 1).join(ch || " ") + str;
+}
+var enabled = Boolean(process.env.TIMING);
+var HEADERS = ["Rule", "Time (ms)", "Relative"];
+var ALIGN = [alignLeft, alignRight, alignRight];
+/* istanbul ignore next */
+/**
+ * display the data
+ * @param {object} data Data object to be displayed
+ * @returns {string} modified string
+ * @private
+ */
+function display(data) {
+ var total = 0;
+ var rows = Object.keys(data)
+ .map(function (key) {
+ var time = data[key];
+ total += time;
+ return [key, time];
+ })
+ .sort(function (a, b) {
+ return b[1] - a[1];
+ })
+ .slice(0, 10);
+ rows.forEach(function (row) {
+ row.push(((row[1] * 100) / total).toFixed(1) + "%");
+ row[1] = row[1].toFixed(3);
+ });
+ rows.unshift(HEADERS);
+ var widths = [];
+ rows.forEach(function (row) {
+ for (var i = 0; i < row.length; i++) {
+ var n = row[i].length;
+ if (!widths[i] || n > widths[i]) {
+ widths[i] = n;
+ }
+ }
+ });
+ var table = rows.map(function (row) {
+ return row
+ .map(function (cell, index) {
+ return ALIGN[index](cell, widths[index]);
+ })
+ .join(" | ");
+ });
+ table.splice(1, 0, widths
+ .map(function (w, index) {
+ if (index !== 0 && index !== widths.length - 1) {
+ w++;
+ }
+ return ALIGN[index](":", w + 1, "-");
+ })
+ .join("|"));
+ Logger.log(table.join("\n"));
+}
+/* istanbul ignore next */
+export default (function () {
+ var data = Object.create(null);
+ /**
+ * Time the run
+ * @param {*} key key from the data object
+ * @param {Function} fn function to be called
+ * @returns {Function} function to be executed
+ * @private
+ */
+ function time(key, fn) {
+ if (typeof data[key] === "undefined") {
+ data[key] = 0;
+ }
+ return function () {
+ var t = process.hrtime();
+ fn.apply(null, Array.prototype.slice.call(arguments));
+ t = process.hrtime(t);
+ data[key] += t[0] * 1e3 + t[1] / 1e6;
+ };
+ }
+ if (enabled) {
+ process.on("exit", function () {
+ display(data);
+ });
+ }
+ return {
+ time: time,
+ enabled: enabled
+ };
+})();
+//# sourceMappingURL=timing.js.map
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/module/util/timing.js.map b/node_modules/@textlint/kernel/module/util/timing.js.map
new file mode 100644
index 000000000..c0bc2cb87
--- /dev/null
+++ b/node_modules/@textlint/kernel/module/util/timing.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"timing.js","sourceRoot":"","sources":["../../src/util/timing.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/package.json b/node_modules/@textlint/kernel/package.json
new file mode 100644
index 000000000..914adea90
--- /dev/null
+++ b/node_modules/@textlint/kernel/package.json
@@ -0,0 +1,68 @@
+{
+ "name": "@textlint/kernel",
+ "version": "3.4.5",
+ "description": "textlint kernel is core logic by pure JavaScript.",
+ "keywords": [
+ "textlint"
+ ],
+ "homepage": "https://github.com/textlint/textlint/tree/master/packages/@textlint/textlint-kernel/",
+ "bugs": {
+ "url": "https://github.com/textlint/textlint/issues"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/textlint/textlint.git"
+ },
+ "license": "MIT",
+ "author": "azu",
+ "main": "lib/index.js",
+ "module": "./module/index.js",
+ "typings": "lib/index.d.ts",
+ "directories": {
+ "test": "test"
+ },
+ "files": [
+ "bin/",
+ "lib/",
+ "module/",
+ "src/"
+ ],
+ "scripts": {
+ "build": "tsc -b && tsc -b tsconfig.module.json",
+ "clean": "rimraf lib/ module/ tsconfig.tsbuildinfo tsconfig.module.tsbuildinfo",
+ "prepublish": "npm run --if-present build",
+ "test": "mocha \"test/**/*.{js,ts}\"",
+ "test:build": "tsc -b test"
+ },
+ "dependencies": {
+ "@textlint/ast-node-types": "^4.4.3",
+ "@textlint/ast-tester": "^2.3.5",
+ "@textlint/ast-traverse": "^2.3.5",
+ "@textlint/feature-flag": "^3.3.5",
+ "@textlint/source-code-fixer": "^3.4.5",
+ "@textlint/types": "^1.5.5",
+ "@textlint/utils": "^1.2.5",
+ "debug": "^4.3.1",
+ "deep-equal": "^1.1.1",
+ "map-like": "^2.0.0",
+ "structured-source": "^3.0.2"
+ },
+ "devDependencies": {
+ "@textlint/markdown-to-ast": "^6.3.5",
+ "@types/debug": "^4.1.5",
+ "@types/deep-equal": "^1.0.1",
+ "@types/mocha": "^8.2.2",
+ "@types/node": "^14.14.44",
+ "@types/structured-source": "^3.0.0",
+ "cpx": "^1.5.0",
+ "cross-env": "^7.0.3",
+ "mocha": "^8.4.0",
+ "npm-run-all": "^4.1.5",
+ "rimraf": "^3.0.2",
+ "shelljs": "^0.8.4",
+ "ts-node": "^9.1.1",
+ "ts-node-test-register": "^9.0.1",
+ "typescript": "~4.0.2"
+ },
+ "gitHead": "4cb1e78aa38cd0e942c61f352ffb29bb36f80a7b"
+}
diff --git a/node_modules/@textlint/kernel/src/context/TextlintFilterRuleContextImpl.ts b/node_modules/@textlint/kernel/src/context/TextlintFilterRuleContextImpl.ts
new file mode 100644
index 000000000..cdc8b8751
--- /dev/null
+++ b/node_modules/@textlint/kernel/src/context/TextlintFilterRuleContextImpl.ts
@@ -0,0 +1,108 @@
+import type {
+ TextlintFilterRuleShouldIgnoreFunction,
+ TextlintRuleSeverityLevel,
+ TextlintSourceCode,
+ TextlintFilterRuleContextArgs,
+ TextlintFilterRuleContext
+} from "@textlint/types";
+import { ASTNodeTypes, TxtNode } from "@textlint/ast-node-types";
+import * as assert from "assert";
+import { TextlintRuleErrorImpl } from "./TextlintRuleErrorImpl";
+
+export class TextlintFilterRuleContextImpl implements TextlintFilterRuleContext {
+ private _ruleId: string;
+ private _ignoreReport: TextlintFilterRuleShouldIgnoreFunction;
+ private _sourceCode: TextlintSourceCode;
+ private _configBaseDir?: string;
+ private _severityLevel: TextlintRuleSeverityLevel;
+
+ constructor(args: TextlintFilterRuleContextArgs) {
+ this._ruleId = args.ruleId;
+ this._sourceCode = args.sourceCode;
+ this._ignoreReport = args.ignoreReport;
+ this._configBaseDir = args.configBaseDir;
+ this._severityLevel = args.severityLevel;
+ Object.freeze(this);
+ }
+
+ /**
+ * Rule id
+ * @returns {string}
+ */
+ get id() {
+ return this._ruleId;
+ }
+
+ get severity() {
+ return this._severityLevel;
+ }
+
+ /**
+ * Node's type values
+ * @type {TextLintNodeType}
+ */
+ get Syntax(): typeof ASTNodeTypes {
+ return this._sourceCode.getSyntax();
+ }
+
+ /**
+ * CustomError object
+ * @type {RuleError}
+ */
+ get RuleError() {
+ return TextlintRuleErrorImpl;
+ }
+
+ shouldIgnore = (range: [number, number], optional = {}) => {
+ assert.ok(
+ Array.isArray(range) && typeof range[0] === "number" && typeof range[1] === "number",
+ "shouldIgnore([number, number]); accept range."
+ );
+ this._ignoreReport({ ruleId: this._ruleId, range, optional });
+ };
+
+ /**
+ * Not use
+ * @returns {() => void}
+ */
+ get report() {
+ return () => {
+ throw new Error("Filter rule can not report");
+ };
+ }
+
+ /**
+ * get file path current processing.
+ */
+ getFilePath = () => {
+ return this._sourceCode.getFilePath();
+ };
+
+ /**
+ * Gets the source code for the given node.
+ * @param {TxtNode=} node The AST node to get the text for.
+ * @param {int=} beforeCount The number of characters before the node to retrieve.
+ * @param {int=} afterCount The number of characters after the node to retrieve.
+ * @returns {string} The text representing the AST node.
+ */
+ getSource = (node?: TxtNode, beforeCount?: number, afterCount?: number): string => {
+ return this._sourceCode.getSource(node, beforeCount, afterCount);
+ };
+
+ /**
+ * get config base directory path
+ * config base directory path often is the place of .textlintrc
+ *
+ * e.g.) /path/to/dir/.textlintrc
+ * `getConfigBaseDir()` return `"/path/to/dir/"`.
+ *
+ * When using textlint as module, it is specified by `configBaseDir`
+ * If not found the value, return undefined.
+ *
+ * You can use it for resolving relative path from config dir.
+ * @returns {string|undefined}
+ */
+ getConfigBaseDir = () => {
+ return this._configBaseDir;
+ };
+}
diff --git a/node_modules/@textlint/kernel/src/context/TextlintRuleContextFixCommandGeneratorImpl.ts b/node_modules/@textlint/kernel/src/context/TextlintRuleContextFixCommandGeneratorImpl.ts
new file mode 100644
index 000000000..7497f23ef
--- /dev/null
+++ b/node_modules/@textlint/kernel/src/context/TextlintRuleContextFixCommandGeneratorImpl.ts
@@ -0,0 +1,146 @@
+import * as assert from "assert";
+import { TxtNode } from "@textlint/ast-node-types";
+import type { TextlintRuleContextFixCommandGenerator, TextlintSourceCodeRange } from "@textlint/types";
+
+/**
+ * Creates a fix command that inserts text at the specified index in the source text.
+ * @param {number} index The 0-based index at which to insert the new text.
+ * @param {string} text The text to insert.
+ * @returns {IntermediateFixCommand} The fix command.
+ * @private
+ */
+function insertTextAt(index: number, text: string) {
+ assert.ok(text, "text must be string");
+ return {
+ range: [index, index],
+ text,
+ isAbsolute: false
+ };
+}
+
+/**
+ * Creates a fix command that inserts text at the specified index in the source text.
+ * @param {number} index The 0-based index at which to insert the new text.
+ * @param {string} text The text to insert.
+ * @returns {IntermediateFixCommand} The fix command.
+ * @private
+ */
+function insertTextAtAbsolute(index: number, text: string) {
+ assert.ok(text, "text must be string");
+ return {
+ range: [index, index],
+ text,
+ isAbsolute: true
+ };
+}
+
+/**
+ * Creates code fixing commands for rules.
+ * It create command for fixing texts.
+ * The `range` arguments of these command is should be **relative** value from reported node.
+ * See {@link SourceLocation} class for more detail.
+ * @constructor
+ */
+export class TextlintRuleContextFixCommandGeneratorImpl implements TextlintRuleContextFixCommandGenerator {
+ /**
+ * Creates a fix command that inserts text after the given node or token.
+ * The fix is not applied until applyFixes() is called.
+ * @param {TxtNode} node The node or token to insert after.
+ * @param {string} text The text to insert.
+ * @returns {IntermediateFixCommand} The fix command.
+ */
+ insertTextAfter(node: TxtNode, text: string) {
+ return insertTextAtAbsolute(node.range[1], text);
+ }
+
+ /**
+ * Creates a fix command that inserts text after the specified range in the source text.
+ * The fix is not applied until applyFixes() is called.
+ * @param {number[]} range The range to replace, first item is start of range, second
+ * is end of range.
+ * The `range` should be **relative** value from reported node.
+ * @param {string} text The text to insert.
+ * @returns {IntermediateFixCommand} The fix command.
+ */
+ insertTextAfterRange(range: TextlintSourceCodeRange, text: string) {
+ return insertTextAt(range[1], text);
+ }
+
+ /**
+ * Creates a fix command that inserts text before the given node or token.
+ * The fix is not applied until applyFixes() is called.
+ * @param {TxtNode} node The node or token to insert before.
+ * @param {string} text The text to insert.
+ * @returns {IntermediateFixCommand} The fix command.
+ */
+ insertTextBefore(node: TxtNode, text: string) {
+ return insertTextAtAbsolute(node.range[0], text);
+ }
+
+ /**
+ * Creates a fix command that inserts text before the specified range in the source text.
+ * The fix is not applied until applyFixes() is called.
+ * @param {number[]} range The range to replace, first item is start of range, second
+ * is end of range.
+ * The `range` should be **relative** value from reported node.
+ * @param {string} text The text to insert.
+ * @returns {IntermediateFixCommand} The fix command.
+ */
+ insertTextBeforeRange(range: TextlintSourceCodeRange, text: string) {
+ return insertTextAt(range[0], text);
+ }
+
+ /**
+ * Creates a fix command that replaces text at the node or token.
+ * The fix is not applied until applyFixes() is called.
+ * @param {TxtNode} node The node or token to remove.
+ * @param {string} text The text to insert.
+ * @returns {IntermediateFixCommand} The fix command.
+ */
+ replaceText(node: TxtNode, text: string) {
+ return {
+ range: node.range,
+ text,
+ isAbsolute: true
+ };
+ }
+
+ /**
+ * Creates a fix command that replaces text at the specified range in the source text.
+ * The fix is not applied until applyFixes() is called.
+ * @param {number[]} range The range to replace, first item is start of range, second
+ * is end of range.
+ * The `range` should be **relative** value from reported node.
+ * @param {string} text The text to insert.
+ * @returns {IntermediateFixCommand} The fix command.
+ */
+ replaceTextRange(range: TextlintSourceCodeRange, text: string) {
+ return {
+ range,
+ text,
+ isAbsolute: false
+ };
+ }
+
+ /**
+ * Creates a fix command that removes the node or token from the source.
+ * The fix is not applied until applyFixes() is called.
+ * @param {TxtNode} node The node or token to remove.
+ * @returns {IntermediateFixCommand} The fix command.
+ */
+ remove(node: TxtNode) {
+ return this.replaceText(node, "");
+ }
+
+ /**
+ * Creates a fix command that removes the specified range of text from the source.
+ * The fix is not applied until applyFixes() is called.
+ * @param {number[]} range The range to remove, first item is start of range, second
+ * is end of range.
+ * The `range` should be **relative** value from reported node.
+ * @returns {IntermediateFixCommand} The fix command.
+ */
+ removeRange(range: TextlintSourceCodeRange) {
+ return this.replaceTextRange(range, "");
+ }
+}
diff --git a/node_modules/@textlint/kernel/src/context/TextlintRuleContextImpl.ts b/node_modules/@textlint/kernel/src/context/TextlintRuleContextImpl.ts
new file mode 100644
index 000000000..075eb112d
--- /dev/null
+++ b/node_modules/@textlint/kernel/src/context/TextlintRuleContextImpl.ts
@@ -0,0 +1,127 @@
+import {
+ TextlintRuleContext,
+ TextlintRuleContextArgs,
+ TextlintRuleContextReportFunction,
+ TextlintRuleError,
+ TextlintRuleReportedObject,
+ TextlintRuleSeverityLevel,
+ TextlintSourceCode
+} from "@textlint/types";
+import { ASTNodeTypes, TxtNode } from "@textlint/ast-node-types";
+import assert from "assert";
+import { TextlintRuleContextFixCommandGeneratorImpl } from "./TextlintRuleContextFixCommandGeneratorImpl";
+import { TextlintRuleSeverityLevelKeys } from "./TextlintRuleSeverityLevelKeys";
+import { TextlintRuleErrorImpl } from "./TextlintRuleErrorImpl";
+
+const ruleFixer = new TextlintRuleContextFixCommandGeneratorImpl();
+
+export class TextlintRuleContextImpl implements TextlintRuleContext {
+ private _ruleId: string;
+ private _sourceCode: TextlintSourceCode;
+ private _report: TextlintRuleContextReportFunction;
+ private _configBaseDir?: string;
+ private _severityLevel: TextlintRuleSeverityLevel;
+
+ constructor(args: TextlintRuleContextArgs) {
+ this._ruleId = args.ruleId;
+ this._sourceCode = args.sourceCode;
+ this._report = args.report;
+ this._configBaseDir = args.configBaseDir;
+ this._severityLevel = args.severityLevel;
+ Object.freeze(this);
+ }
+
+ /**
+ * Rule id
+ * @returns {string}
+ */
+ get id() {
+ return this._ruleId;
+ }
+
+ /**
+ * severity level
+ */
+ get severity(): TextlintRuleSeverityLevel {
+ return this._severityLevel;
+ }
+
+ /**
+ * Node's type values
+ * @type {ASTNodeTypes}
+ */
+ get Syntax(): typeof ASTNodeTypes {
+ return this._sourceCode.getSyntax();
+ }
+
+ /**
+ * CustomError object
+ * @type {RuleError}
+ */
+ get RuleError() {
+ return TextlintRuleErrorImpl;
+ }
+
+ /**
+ * Rule fixer command object
+ * @type {RuleFixer}
+ */
+ get fixer() {
+ return ruleFixer;
+ }
+
+ /**
+ * report function that is called in a rule
+ */
+ report = (node: TxtNode, ruleError: TextlintRuleError | TextlintRuleReportedObject, _shouldNotUsed?: any) => {
+ assert.ok(
+ !(node instanceof TextlintRuleErrorImpl),
+ "1st argument should be node. Usage: `report(node, ruleError);`"
+ );
+ assert.ok(_shouldNotUsed === undefined, "3rd argument should not be used. Usage: `report(node, ruleError);`");
+ if (ruleError instanceof TextlintRuleErrorImpl) {
+ // severity come from `.textlintrc` option like `{ "" : { serverity: "warning" } } `
+ this._report({ ruleId: this._ruleId, node, severity: this._severityLevel, ruleError });
+ } else {
+ const ruleReportedObject: TextlintRuleReportedObject = ruleError;
+ // severity come from report arguments like `report(node, { severity: 1 })`
+ const level = ruleReportedObject.severity || TextlintRuleSeverityLevelKeys.error;
+ this._report({ ruleId: this._ruleId, node, severity: level, ruleError: ruleReportedObject });
+ }
+ };
+
+ /**
+ * get file path current processing.
+ */
+ getFilePath = () => {
+ return this._sourceCode.getFilePath();
+ };
+
+ /**
+ * Gets the source code for the given node.
+ * @param {TxtNode=} node The AST node to get the text for.
+ * @param {int=} beforeCount The number of characters before the node to retrieve.
+ * @param {int=} afterCount The number of characters after the node to retrieve.
+ * @returns {string} The text representing the AST node.
+ */
+ getSource = (node?: TxtNode, beforeCount?: number, afterCount?: number): string => {
+ return this._sourceCode.getSource(node, beforeCount, afterCount);
+ };
+
+ /**
+ * get config base directory path
+ * config base directory path often is the place of .textlintrc
+ *
+ * e.g.) /path/to/dir/.textlintrc
+ * `getConfigBaseDir()` return `"/path/to/dir/"`.
+ *
+ * When using textlint as module, it is specified by `configBaseDir`
+ * If not found the value, return undefined.
+ *
+ * You can use it for resolving relative path from config dir.
+ * @returns {string|undefined}
+ */
+ getConfigBaseDir = () => {
+ return this._configBaseDir;
+ };
+}
diff --git a/node_modules/@textlint/kernel/src/context/TextlintRuleErrorImpl.ts b/node_modules/@textlint/kernel/src/context/TextlintRuleErrorImpl.ts
new file mode 100644
index 000000000..d398c33d8
--- /dev/null
+++ b/node_modules/@textlint/kernel/src/context/TextlintRuleErrorImpl.ts
@@ -0,0 +1,59 @@
+// LICENSE : MIT
+"use strict";
+
+import type { TextlintRuleContextFixCommand, TextlintRuleErrorPadding, TextlintRuleError } from "@textlint/types";
+
+export class TextlintRuleErrorImpl implements TextlintRuleError {
+ public message: string;
+ public line?: number;
+ public column?: number;
+ public index?: number;
+ public fix?: TextlintRuleContextFixCommand;
+
+ /**
+ * RuleError is like Error object.
+ * It's used for adding to TextlintResult.
+ * @param message error message should start with lowercase letter
+ * @param [paddingLocation] - the object has padding {line, column} for actual error reason
+ * @constructor
+ */
+ constructor(message: string, paddingLocation?: number | TextlintRuleErrorPadding) {
+ this.message = message;
+ if (typeof paddingLocation === "object") {
+ /**
+ * padding lineNumber
+ * @type {number}
+ */
+ this.line = paddingLocation.line;
+ /**
+ * padding column
+ * @type {number}
+ */
+ this.column = paddingLocation.column;
+ /**
+ * padding index
+ * @type {number}
+ */
+ this.index = paddingLocation.index;
+ /**
+ * fixCommand object
+ * @type {TextlintRuleContextFixCommand}
+ */
+ this.fix = paddingLocation.fix;
+ } else if (typeof paddingLocation === "number") {
+ // this is deprecated
+ // should pass padding as object.
+ this.column = paddingLocation;
+ }
+ }
+
+ toString() {
+ return JSON.stringify({
+ message: this.message,
+ line: this.line,
+ column: this.column,
+ index: this.index,
+ fix: this.fix
+ });
+ }
+}
diff --git a/node_modules/@textlint/kernel/src/context/TextlintRuleSeverityLevelKeys.ts b/node_modules/@textlint/kernel/src/context/TextlintRuleSeverityLevelKeys.ts
new file mode 100644
index 000000000..55efb18a6
--- /dev/null
+++ b/node_modules/@textlint/kernel/src/context/TextlintRuleSeverityLevelKeys.ts
@@ -0,0 +1,13 @@
+import type { TextlintRuleSeverityLevel } from "@textlint/types";
+
+/**
+ * Keys of TextlintRuleSeverityLevel
+ */
+export const TextlintRuleSeverityLevelKeys: {
+ [index: string]: TextlintRuleSeverityLevel;
+} = {
+ none: 0,
+ info: 0,
+ warning: 1,
+ error: 2
+};
diff --git a/node_modules/@textlint/kernel/src/context/TextlintSourceCodeImpl.ts b/node_modules/@textlint/kernel/src/context/TextlintSourceCodeImpl.ts
new file mode 100644
index 000000000..ebb80479b
--- /dev/null
+++ b/node_modules/@textlint/kernel/src/context/TextlintSourceCodeImpl.ts
@@ -0,0 +1,130 @@
+import type {
+ TextlintSourceCode,
+ TextlintSourceCodeArgs,
+ TextlintSourceCodeLocation,
+ TextlintSourceCodePosition,
+ TextlintSourceCodeRange
+} from "@textlint/types";
+import { AnyTxtNode, ASTNodeTypes } from "@textlint/ast-node-types";
+import * as assert from "assert";
+import StructuredSource from "structured-source";
+
+/**
+ * Validates that the given AST has the required information.
+ * @param {AnyTxtNode} [ast] The Program node of the AST to check.
+ * @throws {Error} If the AST doesn't contain the correct information.
+ * @returns {void}
+ * @private
+ */
+function validate(ast: AnyTxtNode) {
+ if (!ast.loc) {
+ throw new Error("AST is missing location information.");
+ }
+
+ if (!ast.range) {
+ throw new Error("AST is missing range information");
+ }
+}
+
+/**
+ * This class represent of source code.
+ */
+export class TextlintSourceCodeImpl implements TextlintSourceCode {
+ hasBOM: boolean;
+ text: string;
+ ast: AnyTxtNode;
+ filePath: string | undefined;
+ ext: string;
+
+ private _structuredSource: any;
+
+ /**
+ * @param {string} text
+ * @param {Object} ast
+ * @param {string} ext
+ * @param {string} [filePath]
+ */
+ constructor({ text = "", ast, ext, filePath }: TextlintSourceCodeArgs) {
+ validate(ast);
+ assert.ok(ext || filePath, "should be set either of fileExt or filePath.");
+ this.hasBOM = text.charCodeAt(0) === 0xfeff;
+ this.text = this.hasBOM ? text.slice(1) : text;
+ /**
+ * @type StructuredSource
+ */
+ this._structuredSource = new StructuredSource(this.text);
+ this.ast = ast;
+ this.filePath = filePath;
+ /**
+ * fileType .md .txt ...
+ * @type {string}
+ */
+ this.ext = ext;
+ }
+
+ /**
+ * @returns {ASTNodeTypes}
+ */
+ getSyntax() {
+ return ASTNodeTypes;
+ }
+
+ /**
+ * get filePath
+ * @returns {string|undefined}
+ */
+ getFilePath() {
+ return this.filePath;
+ }
+
+ /**
+ * Gets the source code for the given node.
+ * @param {AnyTxtNode=} node The AST node to get the text for.
+ * @param {int=} beforeCount The number of characters before the node to retrieve.
+ * @param {int=} afterCount The number of characters after the node to retrieve.
+ * @returns {string} The text representing the AST node.
+ */
+ getSource(node?: AnyTxtNode, beforeCount?: number, afterCount?: number): string {
+ const currentText = this.text;
+ if (node) {
+ const start = Math.max(node.range[0] - (beforeCount || 0), 0);
+ const end = node.range[1] + (afterCount || 0);
+ return currentText.slice(start, end);
+ } else {
+ return currentText;
+ }
+ }
+
+ // StructuredSource wrapper
+ /**
+ * @param {TextlintSourceCodeLocation} loc - location indicator.
+ * @return {[ number, number ]} range.
+ */
+ locationToRange(loc: TextlintSourceCodeLocation): TextlintSourceCodeRange {
+ return this._structuredSource.locationToRange(loc);
+ }
+
+ /**
+ * @param {[ number, number ]} range - pair of indice.
+ * @return {TextlintSourceCodeLocation} location.
+ */
+ rangeToLocation(range: TextlintSourceCodeRange): TextlintSourceCodeLocation {
+ return this._structuredSource.rangeToLocation(range);
+ }
+
+ /**
+ * @param {Position} pos - position indicator.
+ * @return {number} index.
+ */
+ positionToIndex(pos: TextlintSourceCodePosition): number {
+ return this._structuredSource.positionToIndex(pos);
+ }
+
+ /**
+ * @param {number} index - index to the source code.
+ * @return {Position} position.
+ */
+ indexToPosition(index: number): TextlintSourceCodePosition {
+ return this._structuredSource.indexToPosition(index);
+ }
+}
diff --git a/node_modules/@textlint/kernel/src/core/source-location.ts b/node_modules/@textlint/kernel/src/core/source-location.ts
new file mode 100644
index 000000000..9f01bd0ae
--- /dev/null
+++ b/node_modules/@textlint/kernel/src/core/source-location.ts
@@ -0,0 +1,210 @@
+import type {
+ TextlintMessageFixCommand,
+ TextlintRuleContextReportFunctionArgs,
+ TextlintRuleError,
+ TextlintRuleErrorPadding,
+ TextlintSourceCode
+} from "@textlint/types";
+import { TxtNode } from "@textlint/ast-node-types";
+import assert from "assert";
+import { throwIfTesting } from "@textlint/feature-flag";
+
+export interface ReportMessage {
+ ruleId: string;
+ node: any;
+ severity: number;
+ ruleError: TextlintRuleError;
+}
+
+export default class SourceLocation {
+ private source: TextlintSourceCode;
+
+ constructor(source: TextlintSourceCode) {
+ this.source = source;
+ }
+
+ /**
+ * adjust node's location with error's padding location.
+ */
+ adjust(
+ reportArgs: TextlintRuleContextReportFunctionArgs
+ ): { line: number; column: number; fix?: TextlintMessageFixCommand } {
+ const { node, ruleError, ruleId } = reportArgs;
+ const errorPrefix = `[${ruleId}]` || "";
+ const padding = ruleError;
+ /*
+ FIXME: It is old and un-document way
+ new RuleError("message", index);
+ */
+ let _backwardCompatibleIndexValue;
+ if (typeof padding === "number") {
+ _backwardCompatibleIndexValue = padding;
+ throwIfTesting(`${errorPrefix} This is un-document way:
+report(node, new RuleError("message", index);
+
+Please use { index }:
+
+report(node, new RuleError("message", {
+ index: paddingLineColumn
+});
+`);
+ }
+ // when running from textlint-tester, assert
+ if (padding.line === undefined && padding.column !== undefined) {
+ // FIXME: Backward compatible <= textlint.5.5
+ throwIfTesting(`${errorPrefix} Have to use a sets with "line" and "column".
+See FAQ: https://github.com/textlint/textlint/blob/master/docs/faq/line-column-or-index.md
+
+report(node, new RuleError("message", {
+ line: paddingLineNumber,
+ column: paddingLineColumn
+});
+
+OR use "index" property insteadof only "column".
+
+report(node, new RuleError("message", {
+ index: paddingLineColumn
+});
+`);
+ }
+
+ // When either one of {column, line} or {index} is not used, throw error
+ if ((padding.line !== undefined || padding.column !== undefined) && padding.index !== undefined) {
+ // Introduced textlint 5.6
+ // https://github.com/textlint/textlint/releases/tag/5.6.0
+ // Always throw Error
+ throw new Error(`${errorPrefix} Have to use one of {line, column} or {index}.
+You should use either one:
+
+use "line" and "column" property
+
+report(node, new RuleError("message", {
+ line: paddingLineNumber,
+ column: paddingLineColumn
+});
+
+OR
+
+use "index" property
+
+report(node, new RuleError("message", {
+ index: paddingIndexValue
+});
+`);
+ }
+
+ const adjustedLoc = this.toAbsoluteLocation(node, padding, _backwardCompatibleIndexValue);
+ const adjustedFix = this.toAbsolutePositionFix(node, padding);
+ /*
+ {
+ line,
+ column
+ fix?
+ }
+ */
+ return Object.assign({}, adjustedLoc, adjustedFix) as {
+ line: number;
+ column: number;
+ fix?: TextlintMessageFixCommand;
+ };
+ }
+
+ private toAbsoluteLocation(node: any, padding: TextlintRuleErrorPadding, _paddingIndex?: number) {
+ const nodeRange = node.range;
+ const line = node.loc.start.line;
+ const column = node.loc.start.column;
+
+ // when use {index}
+ if (padding.index !== undefined || _paddingIndex !== undefined) {
+ const startNodeIndex = nodeRange[0];
+ const paddingIndex = _paddingIndex || padding.index;
+ const position = this.source.indexToPosition(startNodeIndex + paddingIndex);
+ return {
+ column: position.column,
+ line: position.line
+ };
+ }
+ // when use {line, column}
+ if (padding.line !== undefined && padding.column !== undefined) {
+ if (padding.line > 0) {
+ const addedLine = line + padding.line;
+ // when report with padding {line, column}, message.column should be 0 + padding.column.
+ // In other word, padding line > 0 and message.column start with 0.
+ if (padding.column > 0) {
+ return {
+ line: addedLine,
+ column: padding.column
+ };
+ } else {
+ return {
+ line: addedLine,
+ column
+ };
+ }
+ }
+ }
+ // when use { line } only
+ if (padding.line !== undefined && padding.line > 0) {
+ const addedLine = line + padding.line;
+ return {
+ line: addedLine,
+ column
+ };
+ }
+ // when use { column } only
+ // FIXME: backward compatible @ un-document
+ // Remove next version 6?
+ /*
+ new RuleError({
+ column: index
+ });
+ */
+ if (padding.column !== undefined && padding.column > 0) {
+ const addedColumn = column + padding.column;
+ return {
+ line,
+ column: addedColumn
+ };
+ }
+
+ return {
+ column,
+ line
+ };
+ }
+
+ /**
+ * Adjust `fix` command range
+ * if `fix.isAbsolute` is not absolute position, adjust the position from the `node`.
+ */
+ private toAbsolutePositionFix(node: TxtNode, ruleErrorObject: TextlintRuleError) {
+ const nodeRange = node.range;
+ // if not found `fix`, return empty object
+ if (ruleErrorObject.fix === undefined) {
+ return {};
+ }
+ assert.ok(typeof ruleErrorObject.fix === "object", "fix should be FixCommand object");
+ // if absolute position return self
+ if (ruleErrorObject.fix.isAbsolute) {
+ return {
+ // remove other property that is not related `fix`
+ // the return object will be merged by `Object.assign`
+ fix: {
+ range: ruleErrorObject.fix.range,
+ text: ruleErrorObject.fix.text
+ }
+ };
+ }
+ // if relative position return adjusted position
+ return {
+ // fix(command) is relative from node's range
+ fix: {
+ range: [
+ nodeRange[0] + ruleErrorObject.fix.range[0],
+ nodeRange[0] + ruleErrorObject.fix.range[1]
+ ] as const,
+ text: ruleErrorObject.fix.text
+ }
+ };
+ }
+}
diff --git a/node_modules/@textlint/kernel/src/descriptor/Descriptor.ts b/node_modules/@textlint/kernel/src/descriptor/Descriptor.ts
new file mode 100644
index 000000000..ef2c76e2e
--- /dev/null
+++ b/node_modules/@textlint/kernel/src/descriptor/Descriptor.ts
@@ -0,0 +1,7 @@
+export interface Descriptor {
+ id: string;
+
+ equals(target: this): boolean;
+
+ toKernel(): T;
+}
diff --git a/node_modules/@textlint/kernel/src/descriptor/DescriptorUtil.ts b/node_modules/@textlint/kernel/src/descriptor/DescriptorUtil.ts
new file mode 100644
index 000000000..796c7012e
--- /dev/null
+++ b/node_modules/@textlint/kernel/src/descriptor/DescriptorUtil.ts
@@ -0,0 +1,21 @@
+import { Descriptor } from "./Descriptor";
+
+/**
+ * Remove duplicated descriptor
+ * For example, A1 equals to A2
+ * [A1, B, A2]
+ * => filter
+ * [A1, B]
+ */
+export const filterDuplicateDescriptor = >(descriptors: T[]) => {
+ const newDescriptorList: T[] = [];
+ descriptors.forEach((descriptor) => {
+ const existsDescriptor = newDescriptorList.some((existDescriptor) => {
+ return existDescriptor.equals(descriptor);
+ });
+ if (!existsDescriptor) {
+ newDescriptorList.push(descriptor);
+ }
+ });
+ return newDescriptorList;
+};
diff --git a/node_modules/@textlint/kernel/src/descriptor/DescriptorsFactory.ts b/node_modules/@textlint/kernel/src/descriptor/DescriptorsFactory.ts
new file mode 100644
index 000000000..cb0e4c5eb
--- /dev/null
+++ b/node_modules/@textlint/kernel/src/descriptor/DescriptorsFactory.ts
@@ -0,0 +1,30 @@
+// LICENSE : MIT
+"use strict";
+import { TextlintKernelFilterRule, TextlintKernelPlugin, TextlintKernelRule } from "../textlint-kernel-interface";
+import { TextlintFilterRuleDescriptor } from "./TextlintFilterRuleDescriptor";
+import { TextlintFilterRuleDescriptors } from "./TextlintFilterRuleDescriptors";
+import { TextlintRuleDescriptors } from "./TextlintRuleDescriptors";
+import { TextlintLintableRuleDescriptor } from "./TextlintLintableRuleDescriptor";
+import { TextlintPluginDescriptors } from "./TextlintPluginDescriptors";
+import { TextlintPluginDescriptor } from "./TextlintPluginDescriptor";
+import { hasFixer } from "./rule-creator-helper";
+import { TextlintFixableRuleDescriptor } from "./TextlintFixableRuleDescriptor";
+
+export const createTextlintRuleDescriptors = (rules: TextlintKernelRule[]) => {
+ const ruleOrFixableRuleDescriptorList = rules.map((rule) => {
+ if (hasFixer(rule.rule)) {
+ return new TextlintFixableRuleDescriptor(rule);
+ } else {
+ return new TextlintLintableRuleDescriptor(rule);
+ }
+ });
+ return new TextlintRuleDescriptors(ruleOrFixableRuleDescriptorList);
+};
+
+export const createTextlintFilterRuleDescriptors = (rules: TextlintKernelFilterRule[]) => {
+ return new TextlintFilterRuleDescriptors(rules.map((rule) => new TextlintFilterRuleDescriptor(rule)));
+};
+
+export const createTextlintPluginDescriptors = (rules: TextlintKernelPlugin[]) => {
+ return new TextlintPluginDescriptors(rules.map((rule) => new TextlintPluginDescriptor(rule)));
+};
diff --git a/node_modules/@textlint/kernel/src/descriptor/README.md b/node_modules/@textlint/kernel/src/descriptor/README.md
new file mode 100644
index 000000000..2e3810b6e
--- /dev/null
+++ b/node_modules/@textlint/kernel/src/descriptor/README.md
@@ -0,0 +1,45 @@
+# descriptor
+
+A Descriptor class for kernel.
+
+The Descriptor is a structure object of rules, filter rules, plugins.
+
+- The Descriptor is normalized/filtered object
+ - without duplication
+ - without disabled
+- Create a Descriptor from textlintrc object
+- Create a Descriptor from kernel options
+- Analyze plugins and provide available extensions for linting
+- Analyze rules and provide normalized rule instance
+
+## Usage
+
+```js
+const descriptors = new TextlintKernelDescriptor({
+ plugins: [
+ {
+ pluginId: "text",
+ plugin: createDummyPlugin([".txt"])
+ },
+ {
+ pluginId: "markdown",
+ plugin: createDummyPlugin([".md"])
+ }
+ ],
+ rules: [
+ {
+ ruleId: "example",
+ rule: exampleRule
+ }
+ ],
+ filterRules: []
+});
+// available extensions
+assert.deepStrictEqual(descriptors.plugin.availableExtensions, [".txt", ".md"]);
+// get plugin instance
+const markdownProcessor = descriptors.findPluginDescriptorWithExt(".md");
+assert.ok(markdownProcessor !== undefined);
+// rules
+assert.strictEqual(descriptors.rule.descriptors.length, 1);
+```
+
diff --git a/node_modules/@textlint/kernel/src/descriptor/TextlintFilterRuleDescriptor.ts b/node_modules/@textlint/kernel/src/descriptor/TextlintFilterRuleDescriptor.ts
new file mode 100644
index 000000000..a0df6ecf9
--- /dev/null
+++ b/node_modules/@textlint/kernel/src/descriptor/TextlintFilterRuleDescriptor.ts
@@ -0,0 +1,72 @@
+// LICENSE : MIT
+"use strict";
+import { getFilter } from "./rule-creator-helper";
+import { TextlintKernelFilterRule } from "../textlint-kernel-interface";
+import { Descriptor } from "./Descriptor";
+import type { TextlintFilterRuleOptions, TextlintFilterRuleReporter } from "@textlint/types";
+import deepEqual from "deep-equal";
+
+/**
+ * Textlint Rule Descriptor.
+ * It handle RuleCreator and RuleOption.
+ */
+export class TextlintFilterRuleDescriptor implements Descriptor {
+ constructor(private kernelFilterRule: TextlintKernelFilterRule) {}
+
+ get id() {
+ return this.kernelFilterRule.ruleId;
+ }
+
+ get rule(): TextlintFilterRuleReporter {
+ return this.kernelFilterRule.rule;
+ }
+
+ /**
+ * Return true if this rule is enabled.
+ */
+ get enabled(): boolean {
+ return this.rawOptions !== false;
+ }
+
+ /**
+ * Return filter function
+ * You should check hasLiner before call this.
+ */
+ get filter() {
+ return getFilter(this.rule);
+ }
+
+ /**
+ * Return normalized rule option object.
+ * If the rule have not option, return `true` by default.
+ */
+ get normalizedOptions(): TextlintFilterRuleOptions {
+ // default: { ruleName: true }
+ const DefaultRuleConfigValue = {};
+ if (typeof this.kernelFilterRule.options === "boolean" || this.kernelFilterRule.options === undefined) {
+ return DefaultRuleConfigValue;
+ } else {
+ return this.kernelFilterRule.options;
+ }
+ }
+
+ get rawOptions(): undefined | boolean | TextlintFilterRuleOptions {
+ return this.kernelFilterRule.options;
+ }
+
+ /**
+ * Return true if descriptor is same
+ */
+ equals(descriptor: this): boolean {
+ return (
+ this.rule === descriptor.rule &&
+ deepEqual(this.normalizedOptions, descriptor.normalizedOptions, {
+ strict: true
+ })
+ );
+ }
+
+ toKernel() {
+ return this.kernelFilterRule;
+ }
+}
diff --git a/node_modules/@textlint/kernel/src/descriptor/TextlintFilterRuleDescriptors.ts b/node_modules/@textlint/kernel/src/descriptor/TextlintFilterRuleDescriptors.ts
new file mode 100644
index 000000000..73b052a11
--- /dev/null
+++ b/node_modules/@textlint/kernel/src/descriptor/TextlintFilterRuleDescriptors.ts
@@ -0,0 +1,47 @@
+// LICENSE : MIT
+"use strict";
+import { TextlintKernelFilterRule } from "../textlint-kernel-interface";
+import { TextlintFilterRuleDescriptor } from "./TextlintFilterRuleDescriptor";
+import { filterDuplicateDescriptor } from "./DescriptorUtil";
+
+/**
+ * The collection class of TextlintFilterRuleDescriptor
+ */
+export class TextlintFilterRuleDescriptors {
+ constructor(private ruleDescriptorList: TextlintFilterRuleDescriptor[] = []) {}
+
+ /**
+ * Convert this to TextlintKernel rules format
+ * @returns {Array}
+ */
+ toKernelFilterRulesFormat(): Array {
+ return this.withoutDuplicated().descriptors.map((descriptor) => {
+ return descriptor.toKernel();
+ });
+ }
+
+ /**
+ * Return enabled descriptors
+ */
+ get descriptors() {
+ return this.ruleDescriptorList.filter((descriptor) => {
+ return descriptor.enabled;
+ });
+ }
+
+ /**
+ * Return all descriptors that include disabled descriptors
+ */
+ get allDescriptors() {
+ return this.ruleDescriptorList;
+ }
+
+ /**
+ * filter duplicated descriptors
+ */
+ withoutDuplicated(): TextlintFilterRuleDescriptors {
+ // remove last duplicated item
+ const newDescriptorList = filterDuplicateDescriptor(this.ruleDescriptorList);
+ return new TextlintFilterRuleDescriptors(newDescriptorList);
+ }
+}
diff --git a/node_modules/@textlint/kernel/src/descriptor/TextlintFixableRuleDescriptor.ts b/node_modules/@textlint/kernel/src/descriptor/TextlintFixableRuleDescriptor.ts
new file mode 100644
index 000000000..2ff6b8ace
--- /dev/null
+++ b/node_modules/@textlint/kernel/src/descriptor/TextlintFixableRuleDescriptor.ts
@@ -0,0 +1,20 @@
+// LICENSE : MIT
+"use strict";
+import { getFixer } from "./rule-creator-helper";
+import { TextlintLintableRuleDescriptor } from "./TextlintLintableRuleDescriptor";
+import type { TextlintRuleReporter } from "@textlint/types";
+
+/**
+ * Textlint Fixable Rule Descriptor.
+ * It is inherit **Rule** Descriptor and add fixer() method.
+ * It handle RuleCreator and RuleOption.
+ */
+export class TextlintFixableRuleDescriptor extends TextlintLintableRuleDescriptor {
+ /**
+ * Return fixer function
+ * You should check hasFixer before call this.
+ */
+ get fixer(): TextlintRuleReporter {
+ return getFixer(this.rule);
+ }
+}
diff --git a/node_modules/@textlint/kernel/src/descriptor/TextlintKernelDescriptor.ts b/node_modules/@textlint/kernel/src/descriptor/TextlintKernelDescriptor.ts
new file mode 100644
index 000000000..01330703d
--- /dev/null
+++ b/node_modules/@textlint/kernel/src/descriptor/TextlintKernelDescriptor.ts
@@ -0,0 +1,61 @@
+import { TextlintKernelFilterRule, TextlintKernelPlugin, TextlintKernelRule } from "../textlint-kernel-interface";
+import { TextlintRuleDescriptors } from "./TextlintRuleDescriptors";
+import { TextlintPluginDescriptors } from "./TextlintPluginDescriptors";
+import { TextlintFilterRuleDescriptors } from "./TextlintFilterRuleDescriptors";
+import {
+ createTextlintFilterRuleDescriptors,
+ createTextlintPluginDescriptors,
+ createTextlintRuleDescriptors
+} from "./DescriptorsFactory";
+import { TextlintPluginDescriptor } from "./TextlintPluginDescriptor";
+
+export interface TextlintKernelDescriptorArgs {
+ rules: TextlintKernelRule[];
+ filterRules: TextlintKernelFilterRule[];
+ plugins: TextlintKernelPlugin[];
+}
+
+export class TextlintKernelDescriptor {
+ rule: TextlintRuleDescriptors;
+ filterRule: TextlintFilterRuleDescriptors;
+ plugin: TextlintPluginDescriptors;
+
+ constructor(private args: TextlintKernelDescriptorArgs) {
+ this.rule = createTextlintRuleDescriptors(args.rules);
+ this.filterRule = createTextlintFilterRuleDescriptors(args.filterRules);
+ this.plugin = createTextlintPluginDescriptors(args.plugins);
+ }
+
+ /**
+ * Return available extensions of plugins
+ */
+ get availableExtensions() {
+ return this.plugin.availableExtensions;
+ }
+
+ /**
+ * Merge constructor args and partialArgs
+ * It shallow merge partialArgs.
+ * It means that overwrite root properties by partialArgs.
+ */
+ shallowMerge(partialArgs: Partial) {
+ return new TextlintKernelDescriptor({
+ ...this.args,
+ ...partialArgs
+ });
+ }
+
+ /**
+ * find PluginDescriptor with extension.
+ * This is forward match.
+ *
+ * If following config of textlint, this method prefer to select MarkdownA for markdown.
+ *
+ * {
+ * "plugins": [MarkdownA, MarkdownB]
+ * }
+ */
+ findPluginDescriptorWithExt(ext: string): TextlintPluginDescriptor | undefined {
+ return this.plugin.findPluginDescriptorWithExt(ext);
+ }
+}
diff --git a/node_modules/@textlint/kernel/src/descriptor/TextlintLintableRuleDescriptor.ts b/node_modules/@textlint/kernel/src/descriptor/TextlintLintableRuleDescriptor.ts
new file mode 100644
index 000000000..7b9f6a74a
--- /dev/null
+++ b/node_modules/@textlint/kernel/src/descriptor/TextlintLintableRuleDescriptor.ts
@@ -0,0 +1,76 @@
+// LICENSE : MIT
+"use strict";
+import { TextlintKernelRule } from "../textlint-kernel-interface";
+import { assertRuleShape, getLinter } from "./rule-creator-helper";
+import type { TextlintRuleModule, TextlintRuleOptions, TextlintRuleReporter } from "@textlint/types";
+import deepEqual from "deep-equal";
+
+/**
+ * Textlint Rule Descriptor.
+ * It handle RuleCreator and RuleOption.
+ */
+export class TextlintLintableRuleDescriptor {
+ constructor(private textlintKernelRule: TextlintKernelRule) {
+ assertRuleShape(textlintKernelRule.rule, textlintKernelRule.ruleId);
+ }
+
+ get id() {
+ return this.textlintKernelRule.ruleId;
+ }
+
+ /**
+ * Rule module-self
+ */
+ get rule(): TextlintRuleModule {
+ return this.textlintKernelRule.rule;
+ }
+
+ /**
+ * Return true if this rule is enabled.
+ */
+ get enabled(): boolean {
+ return this.rawOptions !== false;
+ }
+
+ /**
+ * Return linter function
+ * You should check hasLiner before call this.
+ */
+ get linter(): TextlintRuleReporter {
+ return getLinter(this.rule);
+ }
+
+ /**
+ * Return normalized rule option object.
+ * If the rule have not option, return `true` by default.
+ */
+ get normalizedOptions(): TextlintRuleOptions {
+ // default: { ruleName: true }
+ const DefaultRuleConfigValue = {};
+ if (typeof this.textlintKernelRule.options === "boolean" || this.textlintKernelRule.options === undefined) {
+ return DefaultRuleConfigValue;
+ } else {
+ return this.textlintKernelRule.options;
+ }
+ }
+
+ get rawOptions(): boolean | undefined | TextlintRuleOptions {
+ return this.textlintKernelRule.options;
+ }
+
+ /**
+ * Return true if descriptor is same
+ */
+ equals(descriptor: TextlintLintableRuleDescriptor): boolean {
+ return (
+ this.rule === descriptor.rule &&
+ deepEqual(this.normalizedOptions, descriptor.normalizedOptions, {
+ strict: true
+ })
+ );
+ }
+
+ toKernel(): TextlintKernelRule {
+ return this.textlintKernelRule;
+ }
+}
diff --git a/node_modules/@textlint/kernel/src/descriptor/TextlintPluginDescriptor.ts b/node_modules/@textlint/kernel/src/descriptor/TextlintPluginDescriptor.ts
new file mode 100644
index 000000000..c998035f6
--- /dev/null
+++ b/node_modules/@textlint/kernel/src/descriptor/TextlintPluginDescriptor.ts
@@ -0,0 +1,90 @@
+"use strict";
+import { TextlintKernelPlugin } from "../textlint-kernel-interface";
+import { Descriptor } from "./Descriptor";
+import type {
+ TextlintPluginOptions,
+ TextlintPluginProcessor,
+ TextlintPluginProcessorConstructor
+} from "@textlint/types";
+import deepEqual from "deep-equal";
+
+/**
+ * Get instance/static `availableExtensions()` from TextlintPluginProcessor
+ */
+const getAvailableExtensions = (pluginProcessor: TextlintPluginProcessor): string[] => {
+ if (typeof pluginProcessor.availableExtensions === "function") {
+ return pluginProcessor.availableExtensions();
+ }
+ // It is compatible for textlint@10<=
+ // Recommended: `availableExtensions()` should be defined as instance method.
+ // https://github.com/textlint/textlint/issues/531
+ const PluginProcessorConstructor = pluginProcessor.constructor as TextlintPluginProcessorConstructor;
+ if (typeof PluginProcessorConstructor.availableExtensions === "function") {
+ return PluginProcessorConstructor.availableExtensions();
+ }
+ throw new Error(`Plugin(${pluginProcessor}) should implement availableExtensions() method`);
+};
+
+/**
+ * Textlint Plugin Descriptor
+ */
+export class TextlintPluginDescriptor implements Descriptor {
+ public processor: TextlintPluginProcessor;
+
+ constructor(private plugin: TextlintKernelPlugin) {
+ this.plugin = plugin;
+ if (!this.plugin.plugin.Processor) {
+ throw new Error(`Plugin should have Processor property.
+module.exports = {
+ Processor: class Processor{ ... }
+}
+`);
+ }
+ this.processor = new plugin.plugin.Processor(this.normalizedOptions);
+ }
+
+ get id() {
+ return this.plugin.pluginId;
+ }
+
+ /**
+ * Return true if this rule is enabled.
+ */
+ get enabled(): boolean {
+ return this.rawOptions !== false;
+ }
+
+ /**
+ * Return available extension of this plugin
+ */
+ get availableExtensions(): string[] {
+ return getAvailableExtensions(this.processor);
+ }
+
+ get normalizedOptions(): TextlintPluginOptions {
+ // default: { ruleName: true }
+ const DefaultPluginOption = {};
+ if (typeof this.plugin.options === "boolean" || this.plugin.options === undefined) {
+ return DefaultPluginOption;
+ } else {
+ return this.plugin.options;
+ }
+ }
+
+ get rawOptions() {
+ return this.plugin.options;
+ }
+
+ toKernel() {
+ return this.plugin;
+ }
+
+ equals(target: this): boolean {
+ return (
+ this.plugin.plugin === target.plugin.plugin &&
+ deepEqual(this.plugin.options, target.plugin.options, {
+ strict: true
+ })
+ );
+ }
+}
diff --git a/node_modules/@textlint/kernel/src/descriptor/TextlintPluginDescriptors.ts b/node_modules/@textlint/kernel/src/descriptor/TextlintPluginDescriptors.ts
new file mode 100644
index 000000000..546a820cb
--- /dev/null
+++ b/node_modules/@textlint/kernel/src/descriptor/TextlintPluginDescriptors.ts
@@ -0,0 +1,65 @@
+"use strict";
+import { TextlintKernelPlugin } from "../textlint-kernel-interface";
+import { TextlintPluginDescriptor } from "./TextlintPluginDescriptor";
+import { filterDuplicateDescriptor } from "./DescriptorUtil";
+
+/**
+ * Collection class of TextlintPluginDescriptor
+ */
+export class TextlintPluginDescriptors {
+ constructor(private pluginDescriptorList: TextlintPluginDescriptor[] = []) {}
+
+ /**
+ * Return enabled descriptors
+ */
+ get descriptors() {
+ return this.pluginDescriptorList.filter((descriptor) => {
+ return descriptor.enabled;
+ });
+ }
+
+ /**
+ * Return all descriptors that include disabled descriptors
+ */
+ get allDescriptors() {
+ return this.pluginDescriptorList;
+ }
+
+ /**
+ * Return available extensions
+ * It is not includes disabled plugin's extensions.
+ */
+ get availableExtensions(): string[] {
+ return this.descriptors.reduce((extensions, descriptor) => {
+ return extensions.concat(descriptor.availableExtensions);
+ }, [] as string[]);
+ }
+
+ /**
+ * find PluginDescriptor with extension.
+ * This is forward match.
+ */
+ findPluginDescriptorWithExt(ext: string) {
+ return this.descriptors.find((descriptor) => {
+ return descriptor.availableExtensions.includes(ext);
+ });
+ }
+
+ /**
+ * filter duplicated descriptors
+ */
+ withoutDuplicated() {
+ const newDescriptorList = filterDuplicateDescriptor(this.pluginDescriptorList);
+ return new TextlintPluginDescriptors(newDescriptorList);
+ }
+
+ /**
+ * Convert this to TextlintKernel rules format
+ * @returns {Array}
+ */
+ toKernelPluginsFormat(): TextlintKernelPlugin[] {
+ return this.descriptors.map((descriptor) => {
+ return descriptor.toKernel();
+ });
+ }
+}
diff --git a/node_modules/@textlint/kernel/src/descriptor/TextlintRuleDescriptors.ts b/node_modules/@textlint/kernel/src/descriptor/TextlintRuleDescriptors.ts
new file mode 100644
index 000000000..2d154106b
--- /dev/null
+++ b/node_modules/@textlint/kernel/src/descriptor/TextlintRuleDescriptors.ts
@@ -0,0 +1,66 @@
+// LICENSE : MIT
+"use strict";
+import { TextlintKernelRule } from "../textlint-kernel-interface";
+import { TextlintLintableRuleDescriptor } from "./TextlintLintableRuleDescriptor";
+import { filterDuplicateDescriptor } from "./DescriptorUtil";
+import { TextlintFixableRuleDescriptor } from "./TextlintFixableRuleDescriptor";
+
+export type TextlintRuleAllRuleDescriptor = TextlintLintableRuleDescriptor | TextlintFixableRuleDescriptor;
+
+/**
+ * The collection class of TextlintRuleDescriptor
+ */
+export class TextlintRuleDescriptors {
+ constructor(private ruleDescriptorList: TextlintRuleAllRuleDescriptor[] = []) {}
+
+ /**
+ * Convert this to TextlintKernel rules format
+ * @returns {Array}
+ */
+ toKernelRulesFormat(): Array {
+ return this.withoutDuplicated().lintableDescriptors.map((descriptor) => {
+ return descriptor.toKernel();
+ });
+ }
+
+ /**
+ * Return enabled lintable descriptors
+ */
+ get lintableDescriptors(): TextlintLintableRuleDescriptor[] {
+ return this.descriptors.filter((descriptor) => {
+ // fixable is also lintable
+ return descriptor instanceof TextlintLintableRuleDescriptor;
+ });
+ }
+
+ /**
+ * Return enabled fixable descriptors
+ */
+ get fixableDescriptors(): TextlintFixableRuleDescriptor[] {
+ return this.descriptors.filter((descriptor) => {
+ return descriptor instanceof TextlintFixableRuleDescriptor;
+ }) as TextlintFixableRuleDescriptor[];
+ }
+
+ /**
+ * Return enabled descriptors
+ */
+ get descriptors(): TextlintRuleAllRuleDescriptor[] {
+ return this.ruleDescriptorList.filter((descriptor) => descriptor.enabled);
+ }
+
+ /**
+ * Return all descriptors that include disabled descriptors
+ */
+ get allDescriptors(): TextlintRuleAllRuleDescriptor[] {
+ return this.ruleDescriptorList;
+ }
+
+ /**
+ * filter duplicated descriptors
+ */
+ withoutDuplicated() {
+ const newDescriptorList = filterDuplicateDescriptor(this.ruleDescriptorList);
+ return new TextlintRuleDescriptors(newDescriptorList);
+ }
+}
diff --git a/node_modules/@textlint/kernel/src/descriptor/index.ts b/node_modules/@textlint/kernel/src/descriptor/index.ts
new file mode 100644
index 000000000..0cf4035ec
--- /dev/null
+++ b/node_modules/@textlint/kernel/src/descriptor/index.ts
@@ -0,0 +1,8 @@
+export { TextlintKernelDescriptor } from "./TextlintKernelDescriptor";
+export { TextlintRuleDescriptors } from "./TextlintRuleDescriptors";
+export { TextlintLintableRuleDescriptor } from "./TextlintLintableRuleDescriptor";
+export { TextlintFixableRuleDescriptor } from "./TextlintFixableRuleDescriptor";
+export { TextlintFilterRuleDescriptors } from "./TextlintFilterRuleDescriptors";
+export { TextlintFilterRuleDescriptor } from "./TextlintFilterRuleDescriptor";
+export { TextlintPluginDescriptors } from "./TextlintPluginDescriptors";
+export { TextlintPluginDescriptor } from "./TextlintPluginDescriptor";
diff --git a/node_modules/@textlint/kernel/src/descriptor/plugin-creator-helper.ts b/node_modules/@textlint/kernel/src/descriptor/plugin-creator-helper.ts
new file mode 100644
index 000000000..e69de29bb
diff --git a/node_modules/@textlint/kernel/src/descriptor/rule-creator-helper.ts b/node_modules/@textlint/kernel/src/descriptor/rule-creator-helper.ts
new file mode 100644
index 000000000..425d4317e
--- /dev/null
+++ b/node_modules/@textlint/kernel/src/descriptor/rule-creator-helper.ts
@@ -0,0 +1,108 @@
+import type { TextlintFilterRuleReporter, TextlintRuleReporter } from "@textlint/types";
+
+/**
+ * detect that ruleCreator has linter function
+ * @param {*} ruleCreator
+ * @returns {boolean}
+ */
+export function hasLinter(ruleCreator: any): boolean {
+ if (typeof ruleCreator.linter === "function") {
+ return true;
+ }
+ if (typeof ruleCreator === "function") {
+ return true;
+ }
+ return false;
+}
+
+/**
+ * get linter function from ruleCreator
+ * if not found, throw error
+ * @param {Function|Object|any} ruleCreator
+ * @returns {Function} linter function
+ * @throws
+ */
+export function getLinter(ruleCreator: Function | object | any): TextlintRuleReporter {
+ if (typeof ruleCreator.linter === "function") {
+ return ruleCreator.linter;
+ }
+ if (typeof ruleCreator === "function") {
+ return ruleCreator;
+ }
+ throw new Error("Not found linter function in the ruleCreator");
+}
+
+/**
+ * detect that ruleCreator has fixer function
+ * @param {*} ruleCreator
+ * @returns {boolean}
+ */
+export function hasFixer(ruleCreator: any): boolean {
+ return typeof ruleCreator.fixer === "function" && hasLinter(ruleCreator);
+}
+
+/**
+ * get fixer function from ruleCreator
+ * if not found, throw error
+ * @param {Function|Object|any} ruleCreator
+ * @returns {Function} fixer function
+ * @throws
+ */
+export function getFixer(ruleCreator: Function | object | any): TextlintRuleReporter {
+ if (!hasLinter(ruleCreator)) {
+ throw new Error("fixer module should have also linter function.");
+ }
+ if (hasFixer(ruleCreator)) {
+ return ruleCreator.fixer;
+ }
+ throw new Error("Not found fixer function in the ruleCreator");
+}
+
+/**
+ * RuleModule should has either linter or fixer.
+ * @param {*} ruleCreator
+ * @returns {boolean}
+ **/
+export function isRuleModule(ruleCreator: any): boolean {
+ return hasLinter(ruleCreator) || hasFixer(ruleCreator);
+}
+
+/**
+ * Validate rule module.
+ * if invalid throw error
+ * @param {*} ruleModule
+ * @param {string} [key]
+ * @throws
+ */
+export function assertRuleShape(ruleModule: any, key: string = "") {
+ if (ruleModule === undefined) {
+ throw new Error(`Definition of rule '${key}' was not found.`);
+ }
+ /*
+ Check old rule function
+ module.exports = function(context){
+
+ }
+ */
+ if (!isRuleModule(ruleModule)) {
+ throw new Error(`Definition of rule '${key}' was not rule module.
+Rule should export function:
+module.exports = function(context){
+ // Your rule
+};`);
+ }
+}
+
+/**
+ * get linter function from ruleCreator
+ * if not found, throw error
+ * @param {*} ruleCreator
+ * @returns {Function} linter function
+ * @throws
+ */
+export function getFilter(ruleCreator: any): TextlintFilterRuleReporter {
+ if (typeof ruleCreator === "function") {
+ return ruleCreator;
+ }
+ throw new Error("Not found filter function in the ruleCreator");
+}
diff --git a/node_modules/@textlint/kernel/src/fixer/fixer-processor.ts b/node_modules/@textlint/kernel/src/fixer/fixer-processor.ts
new file mode 100644
index 000000000..6451f1368
--- /dev/null
+++ b/node_modules/@textlint/kernel/src/fixer/fixer-processor.ts
@@ -0,0 +1,132 @@
+// LICENSE : MIT
+"use strict";
+
+import type { TextlintFixResult, TextlintMessage, TextlintPluginProcessor, TextlintSourceCode } from "@textlint/types";
+import * as assert from "assert";
+import FixerTask from "../task/fixer-task";
+import TaskRunner from "../task/task-runner";
+import { TextlintKernelConstructorOptions } from "../textlint-kernel-interface";
+import MessageProcessManager from "../messages/MessageProcessManager";
+import { TextlintFilterRuleDescriptors, TextlintRuleDescriptors } from "../descriptor";
+import { TextlintSourceCodeImpl } from "../context/TextlintSourceCodeImpl";
+import { isTxtAST } from "@textlint/ast-tester";
+import _debug from "debug";
+import { applyFixesToSourceCode } from "@textlint/source-code-fixer";
+
+const debug = _debug("textlint:fixer-processor");
+
+export interface FixerProcessorProcessArgs {
+ config: TextlintKernelConstructorOptions;
+ configBaseDir?: string;
+ ruleDescriptors: TextlintRuleDescriptors;
+ filterRules: TextlintFilterRuleDescriptors;
+ sourceCode: TextlintSourceCode;
+}
+
+export default class FixerProcessor {
+ private processor: TextlintPluginProcessor;
+ private messageProcessManager: MessageProcessManager;
+
+ /**
+ * @param {Processor} processor
+ * @param {MessageProcessManager} messageProcessManager
+ */
+ constructor(processor: TextlintPluginProcessor, messageProcessManager: MessageProcessManager) {
+ this.processor = processor;
+ this.messageProcessManager = messageProcessManager;
+ }
+
+ /**
+ * Run fixer process
+ * @param {Config} config
+ * @param {string} [configBaseDir]
+ * @param {TextlintKernelRule[]} [rules]
+ * @param {TextlintKernelFilterRule[]} [filterRules]
+ * @param {SourceCode} sourceCode
+ * @returns {Promise.}
+ */
+ process({
+ config,
+ configBaseDir,
+ ruleDescriptors,
+ filterRules,
+ sourceCode
+ }: FixerProcessorProcessArgs): Promise {
+ assert.ok(sourceCode);
+ const { preProcess, postProcess } = this.processor.processor(sourceCode.ext);
+ // messages
+ let resultFilePath = sourceCode.filePath;
+ // applied fixing messages
+ // Revert = Sequentially apply applied message to applied output
+ // SourceCodeFixer.sequentiallyApplyFixes(fixedOutput, result.applyingMessages);
+ const applyingMessages: TextlintMessage[] = [];
+ // not applied fixing messages
+ const remainingMessages: TextlintMessage[] = [];
+ // original means original for applyingMessages and remainingMessages
+ // pre-applyingMessages + remainingMessages
+ const originalMessages: TextlintMessage[] = [];
+ const fixerProcessList = ruleDescriptors.fixableDescriptors.map((ruleDescriptor) => {
+ return (sourceText: string): Promise => {
+ // create new SourceCode object
+ const preProcessResult = preProcess(sourceText, sourceCode.filePath);
+ const isPluginReturnAnAST = isTxtAST(preProcessResult);
+ const textForAST = isPluginReturnAnAST ? sourceText : preProcessResult.text;
+ const ast = isPluginReturnAnAST ? preProcessResult : preProcessResult.ast;
+ const newSourceCode = new TextlintSourceCodeImpl({
+ text: textForAST,
+ ast,
+ filePath: resultFilePath,
+ ext: sourceCode.ext
+ });
+ // create new Task
+ const task = new FixerTask({
+ config,
+ fixableRuleDescriptor: ruleDescriptor,
+ filterRuleDescriptors: filterRules,
+ sourceCode: newSourceCode,
+ configBaseDir
+ });
+
+ return TaskRunner.process(task).then((messages) => {
+ const result = postProcess(messages, sourceCode.filePath);
+ const filteredResult = {
+ messages: this.messageProcessManager.process(result.messages),
+ filePath: result.filePath ? result.filePath : ``
+ };
+ // TODO: should be removed resultFilePath
+ resultFilePath = filteredResult.filePath;
+ const applied = applyFixesToSourceCode(newSourceCode, filteredResult.messages);
+ // add messages
+ Array.prototype.push.apply(applyingMessages, applied.applyingMessages);
+ Array.prototype.push.apply(remainingMessages, applied.remainingMessages);
+ Array.prototype.push.apply(originalMessages, applied.messages);
+ // if not fixed, still use current sourceText
+ if (!applied.fixed) {
+ return sourceText;
+ }
+ // if fixed, use fixed text at next
+ return applied.output;
+ });
+ };
+ });
+
+ const promiseTask = fixerProcessList.reduce((promise, fixerProcess) => {
+ return promise.then((sourceText) => {
+ return fixerProcess(sourceText);
+ });
+ }, Promise.resolve(sourceCode.text));
+
+ return promiseTask.then((output) => {
+ debug(`Finish Processing: ${resultFilePath}`);
+ debug(`applyingMessages: ${applyingMessages.length}`);
+ debug(`remainingMessages: ${remainingMessages.length}`);
+ return {
+ filePath: resultFilePath ? resultFilePath : ``,
+ output,
+ messages: originalMessages,
+ applyingMessages,
+ remainingMessages
+ };
+ });
+ }
+}
diff --git a/node_modules/@textlint/kernel/src/fixer/rule-fixer.ts b/node_modules/@textlint/kernel/src/fixer/rule-fixer.ts
new file mode 100644
index 000000000..54d72ea0e
--- /dev/null
+++ b/node_modules/@textlint/kernel/src/fixer/rule-fixer.ts
@@ -0,0 +1,156 @@
+import * as assert from "assert";
+import { TxtNode } from "@textlint/ast-node-types";
+import type { TextlintSourceCodeRange } from "@textlint/types";
+
+/**
+ * Fix Command object has `range` and `text`.
+ * `IntermediateFixCommand` has also `isAbsolute` flag value.
+ */
+export interface IntermediateFixCommand {
+ text: string;
+ range: number[];
+ isAbsolute: boolean;
+}
+
+/**
+ * Creates a fix command that inserts text at the specified index in the source text.
+ * @param {number} index The 0-based index at which to insert the new text.
+ * @param {string} text The text to insert.
+ * @returns {IntermediateFixCommand} The fix command.
+ * @private
+ */
+function insertTextAt(index: number, text: string) {
+ assert.ok(text, "text must be string");
+ return {
+ range: [index, index],
+ text,
+ isAbsolute: false
+ };
+}
+
+/**
+ * Creates a fix command that inserts text at the specified index in the source text.
+ * @param {number} index The 0-based index at which to insert the new text.
+ * @param {string} text The text to insert.
+ * @returns {IntermediateFixCommand} The fix command.
+ * @private
+ */
+function insertTextAtAbsolute(index: number, text: string) {
+ assert.ok(text, "text must be string");
+ return {
+ range: [index, index],
+ text,
+ isAbsolute: true
+ };
+}
+
+/**
+ * Creates code fixing commands for rules.
+ * It create command for fixing texts.
+ * The `range` arguments of these command is should be **relative** value from reported node.
+ * See {@link SourceLocation} class for more detail.
+ * @constructor
+ */
+export default class RuleFixer {
+ /**
+ * Creates a fix command that inserts text after the given node or token.
+ * The fix is not applied until applyFixes() is called.
+ * @param {TxtNode} node The node or token to insert after.
+ * @param {string} text The text to insert.
+ * @returns {IntermediateFixCommand} The fix command.
+ */
+ insertTextAfter(node: TxtNode, text: string) {
+ return insertTextAtAbsolute(node.range[1], text);
+ }
+
+ /**
+ * Creates a fix command that inserts text after the specified range in the source text.
+ * The fix is not applied until applyFixes() is called.
+ * @param {number[]} range The range to replace, first item is start of range, second
+ * is end of range.
+ * The `range` should be **relative** value from reported node.
+ * @param {string} text The text to insert.
+ * @returns {IntermediateFixCommand} The fix command.
+ */
+ insertTextAfterRange(range: TextlintSourceCodeRange, text: string) {
+ return insertTextAt(range[1], text);
+ }
+
+ /**
+ * Creates a fix command that inserts text before the given node or token.
+ * The fix is not applied until applyFixes() is called.
+ * @param {TxtNode} node The node or token to insert before.
+ * @param {string} text The text to insert.
+ * @returns {IntermediateFixCommand} The fix command.
+ */
+ insertTextBefore(node: TxtNode, text: string) {
+ return insertTextAtAbsolute(node.range[0], text);
+ }
+
+ /**
+ * Creates a fix command that inserts text before the specified range in the source text.
+ * The fix is not applied until applyFixes() is called.
+ * @param {number[]} range The range to replace, first item is start of range, second
+ * is end of range.
+ * The `range` should be **relative** value from reported node.
+ * @param {string} text The text to insert.
+ * @returns {IntermediateFixCommand} The fix command.
+ */
+ insertTextBeforeRange(range: TextlintSourceCodeRange, text: string) {
+ return insertTextAt(range[0], text);
+ }
+
+ /**
+ * Creates a fix command that replaces text at the node or token.
+ * The fix is not applied until applyFixes() is called.
+ * @param {TxtNode} node The node or token to remove.
+ * @param {string} text The text to insert.
+ * @returns {IntermediateFixCommand} The fix command.
+ */
+ replaceText(node: TxtNode, text: string) {
+ return {
+ range: node.range,
+ text,
+ isAbsolute: true
+ };
+ }
+
+ /**
+ * Creates a fix command that replaces text at the specified range in the source text.
+ * The fix is not applied until applyFixes() is called.
+ * @param {number[]} range The range to replace, first item is start of range, second
+ * is end of range.
+ * The `range` should be **relative** value from reported node.
+ * @param {string} text The text to insert.
+ * @returns {IntermediateFixCommand} The fix command.
+ */
+ replaceTextRange(range: TextlintSourceCodeRange, text: string) {
+ return {
+ range,
+ text,
+ isAbsolute: false
+ };
+ }
+
+ /**
+ * Creates a fix command that removes the node or token from the source.
+ * The fix is not applied until applyFixes() is called.
+ * @param {TxtNode} node The node or token to remove.
+ * @returns {IntermediateFixCommand} The fix command.
+ */
+ remove(node: TxtNode) {
+ return this.replaceText(node, "");
+ }
+
+ /**
+ * Creates a fix command that removes the specified range of text from the source.
+ * The fix is not applied until applyFixes() is called.
+ * @param {number[]} range The range to remove, first item is start of range, second
+ * is end of range.
+ * The `range` should be **relative** value from reported node.
+ * @returns {IntermediateFixCommand} The fix command.
+ */
+ removeRange(range: TextlintSourceCodeRange) {
+ return this.replaceTextRange(range, "");
+ }
+}
diff --git a/node_modules/@textlint/kernel/src/index.ts b/node_modules/@textlint/kernel/src/index.ts
new file mode 100644
index 000000000..6f857ca3d
--- /dev/null
+++ b/node_modules/@textlint/kernel/src/index.ts
@@ -0,0 +1,33 @@
+// Kernel
+export { TextlintKernel } from "./textlint-kernel";
+// Kernel Descriptor
+export * from "./descriptor/index";
+// Kernel rule/filter/plugin format
+export { TextlintKernelRule, TextlintKernelFilterRule, TextlintKernelPlugin } from "./textlint-kernel-interface";
+
+/**
+ * Types of textlint lint/fix result
+ */
+export type { TextlintResult, TextlintFixResult, TextlintMessageFixCommand, TextlintMessage } from "@textlint/types";
+/**
+ * @deprecated These types will removed in the future. Use @textlint/types instead of it
+ * If you use these types in your rule, you should use @textlint/types for your rule.
+ * Related changes: https://github.com/textlint/textlint/pull/562
+ */
+export type {
+ // textlint rule interface
+ TextlintRuleReporter,
+ TextlintRuleModule,
+ TextlintRuleOptions,
+ TextlintRuleSeverityLevel,
+ // textlint filter rule interface
+ TextlintFilterRuleReporter,
+ TextlintFilterRuleOptions,
+ // textlint plugin interface
+ TextlintPluginCreator,
+ TextlintPluginOptions,
+ TextlintPluginProcessor,
+ TextlintPluginProcessorConstructor
+} from "@textlint/types";
+// TextlintRuleSeverityLevel Key
+export { TextlintRuleSeverityLevelKeys } from "./context/TextlintRuleSeverityLevelKeys";
diff --git a/node_modules/@textlint/kernel/src/linter/linter-processor.ts b/node_modules/@textlint/kernel/src/linter/linter-processor.ts
new file mode 100644
index 000000000..a1730aba1
--- /dev/null
+++ b/node_modules/@textlint/kernel/src/linter/linter-processor.ts
@@ -0,0 +1,68 @@
+// LICENSE : MIT
+"use strict";
+import * as assert from "assert";
+import LinterTask from "../task/linter-task";
+import TaskRunner from "../task/task-runner";
+import { TextlintKernelConstructorOptions } from "../textlint-kernel-interface";
+
+import MessageProcessManager from "../messages/MessageProcessManager";
+import { TextlintFilterRuleDescriptors, TextlintRuleDescriptors } from "../descriptor";
+import type { TextlintSourceCode, TextlintPluginProcessor, TextlintResult } from "@textlint/types";
+
+export interface LinterProcessorArgs {
+ config: TextlintKernelConstructorOptions;
+ configBaseDir?: string;
+ ruleDescriptors: TextlintRuleDescriptors;
+ filterRuleDescriptors: TextlintFilterRuleDescriptors;
+ sourceCode: TextlintSourceCode;
+}
+
+export default class LinterProcessor {
+ private processor: TextlintPluginProcessor;
+ private messageProcessManager: MessageProcessManager;
+
+ /**
+ * @param {Processor} processor
+ * @param {MessageProcessManager} messageProcessManager
+ */
+ constructor(processor: TextlintPluginProcessor, messageProcessManager: MessageProcessManager) {
+ this.processor = processor;
+ this.messageProcessManager = messageProcessManager;
+ }
+
+ /**
+ * Run linter process
+ */
+ process({
+ config,
+ configBaseDir,
+ ruleDescriptors,
+ filterRuleDescriptors,
+ sourceCode
+ }: LinterProcessorArgs): Promise {
+ const { preProcess, postProcess } = this.processor.processor(sourceCode.ext);
+ assert.ok(
+ typeof preProcess === "function" && typeof postProcess === "function",
+ "processor should implement {preProcess, postProcess}"
+ );
+ const task = new LinterTask({
+ config,
+ ruleDescriptors: ruleDescriptors,
+ filterRuleDescriptors: filterRuleDescriptors,
+ sourceCode,
+ configBaseDir
+ });
+ return TaskRunner.process(task).then((messages) => {
+ const result = postProcess(messages, sourceCode.filePath);
+ result.messages = this.messageProcessManager.process(result.messages);
+ if (result.filePath == null) {
+ result.filePath = ``;
+ }
+ assert.ok(
+ result.filePath && result.messages.length >= 0,
+ "postProcess should return { messages, filePath } "
+ );
+ return result;
+ });
+ }
+}
diff --git a/node_modules/@textlint/kernel/src/messages/MessageProcessManager.ts b/node_modules/@textlint/kernel/src/messages/MessageProcessManager.ts
new file mode 100644
index 000000000..01f4a3b64
--- /dev/null
+++ b/node_modules/@textlint/kernel/src/messages/MessageProcessManager.ts
@@ -0,0 +1,54 @@
+// LICENSE : MIT
+"use strict";
+import { IgnoreReportedMessage, LintReportedMessage } from "../task/textlint-core-task";
+import type { TextlintMessage } from "@textlint/types";
+
+export type PreMessageProcessor = (
+ messages: Array
+) => Array;
+export type MessageProcessor = (messages: TextlintMessage[]) => TextlintMessage[];
+
+export default class MessageProcessManager {
+ private _preProcessors: PreMessageProcessor[];
+ private _processors: MessageProcessor[];
+
+ /**
+ * Preprossor
+ */
+ constructor(preProcessors: PreMessageProcessor[]) {
+ this._preProcessors = preProcessors || [];
+ this._processors = [];
+ }
+
+ add(messageProcessor: MessageProcessor) {
+ this._processors.push(messageProcessor);
+ }
+
+ remove(process: MessageProcessor) {
+ const index = this._processors.indexOf(process);
+ if (index !== -1) {
+ this._processors.splice(index, 1);
+ }
+ }
+
+ /**
+ * process `messages` with registered processes
+ * @param {TextlintMessage[]} messages
+ * @returns {TextlintMessage[]}
+ */
+ process(messages: Array): TextlintMessage[] {
+ const originalMessages = messages;
+ if (this._preProcessors.length === 0) {
+ throw new Error("pre process should be > 0");
+ }
+ const preProcessedMesssages = this._preProcessors.reduce((messages, filter) => {
+ return filter(messages);
+ }, originalMessages) as TextlintMessage[];
+ if (this._processors.length === 0) {
+ return preProcessedMesssages;
+ }
+ return this._processors.reduce((messages, filter) => {
+ return filter(messages);
+ }, preProcessedMesssages);
+ }
+}
diff --git a/node_modules/@textlint/kernel/src/messages/filter-duplicated-process.ts b/node_modules/@textlint/kernel/src/messages/filter-duplicated-process.ts
new file mode 100644
index 000000000..de085be69
--- /dev/null
+++ b/node_modules/@textlint/kernel/src/messages/filter-duplicated-process.ts
@@ -0,0 +1,28 @@
+// LICENSE : MIT
+"use strict";
+import type { TextlintMessage } from "@textlint/types";
+
+/**
+ * @param {TextlintMessage} aMessage
+ * @param {TextlintMessage} bMessage
+ */
+const isEqualMessage = (aMessage: TextlintMessage, bMessage: TextlintMessage) => {
+ return (
+ aMessage.index === bMessage.index &&
+ aMessage.severity === bMessage.severity &&
+ aMessage.message === bMessage.message
+ );
+};
+/**
+ * filter duplicated messages
+ * @param {TextlintMessage[]} messages
+ * @returns {TextlintMessage[]} filtered messages
+ */
+export default function filterDuplicatedMessages(messages: TextlintMessage[] = []) {
+ return messages.filter((message, index) => {
+ const restMessages = messages.slice(index + 1);
+ return !restMessages.some((restMessage) => {
+ return isEqualMessage(message, restMessage);
+ });
+ });
+}
diff --git a/node_modules/@textlint/kernel/src/messages/filter-ignored-process.ts b/node_modules/@textlint/kernel/src/messages/filter-ignored-process.ts
new file mode 100644
index 000000000..36dd2197c
--- /dev/null
+++ b/node_modules/@textlint/kernel/src/messages/filter-ignored-process.ts
@@ -0,0 +1,43 @@
+// LICENSE : MIT
+"use strict";
+import MessageType from "../shared/type/MessageType";
+import { IgnoreReportedMessage, LintReportedMessage } from "../task/textlint-core-task";
+
+/**
+ * the `index` is in the `range` and return true.
+ * @param {Number} index
+ * @param {Number[]} range
+ * @returns {boolean}
+ */
+const isContainedRange = (index: number, range: [number, number]) => {
+ const [start, end] = range;
+ return start <= index && index <= end;
+};
+/**
+ * filter messages by ignore messages
+ * @param {Object[]} messages
+ * @returns {Object[]} filtered messages
+ */
+export default function filterMessages(messages: ReadonlyArray = []) {
+ const lintingMessages = messages.filter((message) => {
+ return message.type === MessageType.lint;
+ }) as LintReportedMessage[];
+ const ignoreMessages = messages.filter((message) => {
+ return message.type === MessageType.ignore;
+ }) as IgnoreReportedMessage[];
+ // if match, reject the message
+ return lintingMessages.filter((message) => {
+ return !ignoreMessages.some((ignoreMessage) => {
+ const isInIgnoringRange = isContainedRange(message.index, ignoreMessage.range);
+ if (isInIgnoringRange && ignoreMessage.ignoringRuleId) {
+ // "*" is wildcard that match any rule
+ if (ignoreMessage.ignoringRuleId === "*") {
+ return true;
+ }
+ // compare normalized key path
+ return message.ruleId === ignoreMessage.ignoringRuleId;
+ }
+ return isInIgnoringRange;
+ });
+ });
+}
diff --git a/node_modules/@textlint/kernel/src/messages/filter-severity-process.ts b/node_modules/@textlint/kernel/src/messages/filter-severity-process.ts
new file mode 100644
index 000000000..54da2e83d
--- /dev/null
+++ b/node_modules/@textlint/kernel/src/messages/filter-severity-process.ts
@@ -0,0 +1,40 @@
+// LICENSE : MIT
+"use strict";
+import type { TextlintMessage } from "@textlint/types";
+import { TextlintKernelConstructorOptions } from "../textlint-kernel-interface";
+import { TextlintRuleSeverityLevelKeys } from "../context/TextlintRuleSeverityLevelKeys";
+
+/**
+ * Filter messages by their severity.
+ * @param {TextlintMessage[]} messages
+ * @returns {TextlintMessage[]} filtered messages
+ */
+export function filterWarningMessages(messages: TextlintMessage[] = []) {
+ return messages.filter((message) => {
+ return message.severity === TextlintRuleSeverityLevelKeys.error;
+ });
+}
+
+/**
+ * Pass through all messages.
+ * @param {TextlintMessage[]} messages
+ * @returns {TextlintMessage[]}
+ */
+export function through(messages: T[] = []): T[] {
+ return messages;
+}
+
+/**
+ * Create message filter by config.quiet.
+ * @param {Config} config
+ * @returns {Function} filter function for messages
+ */
+export default function createSeverityFilter(
+ config: TextlintKernelConstructorOptions
+): (messages: TextlintMessage[]) => TextlintMessage[] {
+ if (config.quiet) {
+ return filterWarningMessages;
+ } else {
+ return through;
+ }
+}
diff --git a/node_modules/@textlint/kernel/src/messages/sort-messages-process.ts b/node_modules/@textlint/kernel/src/messages/sort-messages-process.ts
new file mode 100644
index 000000000..13ba17cea
--- /dev/null
+++ b/node_modules/@textlint/kernel/src/messages/sort-messages-process.ts
@@ -0,0 +1,20 @@
+// LICENSE : MIT
+"use strict";
+import type { TextlintMessage } from "@textlint/types";
+
+/**
+ * sort messages by line and column
+ * @param {TextlintMessage[]} messages
+ * @returns {TextlintMessage[]}
+ */
+export default function sortByLineColumn(messages: TextlintMessage[]) {
+ // sort by line and column
+ return messages.sort(function (a, b) {
+ const lineDiff = a.line - b.line;
+ if (lineDiff === 0) {
+ return a.column - b.column;
+ } else {
+ return lineDiff;
+ }
+ });
+}
diff --git a/node_modules/@textlint/kernel/src/shared/rule-severity.ts b/node_modules/@textlint/kernel/src/shared/rule-severity.ts
new file mode 100644
index 000000000..81e7b6179
--- /dev/null
+++ b/node_modules/@textlint/kernel/src/shared/rule-severity.ts
@@ -0,0 +1,40 @@
+// LICENSE : MIT
+"use strict";
+import type { TextlintRuleOptions, TextlintRuleSeverityLevel } from "@textlint/types";
+import { TextlintRuleSeverityLevelKeys } from "../context/TextlintRuleSeverityLevelKeys";
+
+const isSeverityLevelValue = (type: any): type is TextlintRuleSeverityLevel => {
+ if (type === undefined) {
+ throw new Error(`Please set following value to severity:
+"rule-key": {
+ "severity": ""
+}`);
+ }
+ return true;
+};
+
+/**
+ * get severity level from ruleConfig.
+ * @param {Object|boolean|undefined} ruleConfig
+ * @returns {number}
+ */
+export function getSeverity(ruleConfig?: TextlintRuleOptions): TextlintRuleSeverityLevel {
+ if (ruleConfig === undefined) {
+ return TextlintRuleSeverityLevelKeys.error;
+ }
+ // rule:
+ if (typeof ruleConfig === "boolean") {
+ return ruleConfig ? TextlintRuleSeverityLevelKeys.error : TextlintRuleSeverityLevelKeys.none;
+ }
+ if (ruleConfig.severity) {
+ const severityValue = TextlintRuleSeverityLevelKeys[ruleConfig.severity];
+ if (!isSeverityLevelValue(severityValue)) {
+ throw new Error(`Please set following value to severity:
+"rule-key": {
+ "severity": ""
+}`);
+ }
+ return severityValue;
+ }
+ return TextlintRuleSeverityLevelKeys.error;
+}
diff --git a/node_modules/@textlint/kernel/src/shared/type/MessageType.ts b/node_modules/@textlint/kernel/src/shared/type/MessageType.ts
new file mode 100644
index 000000000..6eb5d1652
--- /dev/null
+++ b/node_modules/@textlint/kernel/src/shared/type/MessageType.ts
@@ -0,0 +1,11 @@
+/**
+ * TextLintMessage type
+ * @typedef {Object} MessageType
+ * @type {{lint: string, ignore: string}}
+ */
+export default {
+ // Linting(also include Fix) Message Type
+ lint: "lint",
+ // Ignoring Message Type
+ ignore: "ignore"
+};
diff --git a/node_modules/@textlint/kernel/src/task/README.md b/node_modules/@textlint/kernel/src/task/README.md
new file mode 100644
index 000000000..9135a35bf
--- /dev/null
+++ b/node_modules/@textlint/kernel/src/task/README.md
@@ -0,0 +1,8 @@
+# CoreTask
+
+## What's does
+
+- Receive AST and rules
+- Run linter/fixer of the rule and get *messages*
+- Convert *messages* to `TextLintMessage`s
+- emit TextLintMessage as "messages" event.
\ No newline at end of file
diff --git a/node_modules/@textlint/kernel/src/task/fixer-task.ts b/node_modules/@textlint/kernel/src/task/fixer-task.ts
new file mode 100644
index 000000000..a9df9e61d
--- /dev/null
+++ b/node_modules/@textlint/kernel/src/task/fixer-task.ts
@@ -0,0 +1,81 @@
+// LICENSE : MIT
+"use strict";
+import CoreTask from "./textlint-core-task";
+import { TextlintKernelConstructorOptions } from "../textlint-kernel-interface";
+import { TextlintFilterRuleDescriptors, TextlintFixableRuleDescriptor } from "../descriptor";
+import type { TextlintSourceCode } from "@textlint/types";
+import { getSeverity } from "../shared/rule-severity";
+import { TextlintFilterRuleContextImpl } from "../context/TextlintFilterRuleContextImpl";
+import { TextlintRuleContextImpl } from "../context/TextlintRuleContextImpl";
+import _debug from "debug";
+
+const debug = _debug("textlint:TextLintCoreTask");
+
+export interface TextLintCoreTaskArgs {
+ config: TextlintKernelConstructorOptions;
+ fixableRuleDescriptor: TextlintFixableRuleDescriptor;
+ filterRuleDescriptors: TextlintFilterRuleDescriptors;
+ sourceCode: TextlintSourceCode;
+ configBaseDir?: string;
+}
+
+export default class TextLintCoreTask extends CoreTask {
+ config: TextlintKernelConstructorOptions;
+ fixableRuleDescriptor: TextlintFixableRuleDescriptor;
+ filterRuleDescriptors: TextlintFilterRuleDescriptors;
+ sourceCode: TextlintSourceCode;
+ configBaseDir?: string;
+
+ constructor({
+ config,
+ configBaseDir,
+ fixableRuleDescriptor,
+ filterRuleDescriptors,
+ sourceCode
+ }: TextLintCoreTaskArgs) {
+ super();
+ this.config = config;
+ this.configBaseDir = configBaseDir;
+ this.fixableRuleDescriptor = fixableRuleDescriptor;
+ this.filterRuleDescriptors = filterRuleDescriptors;
+ this.sourceCode = sourceCode;
+ this._setupRules();
+ }
+
+ start() {
+ this.startTraverser(this.sourceCode);
+ }
+
+ private _setupRules() {
+ // rule
+ const sourceCode = this.sourceCode;
+ const report = this.createReporter(sourceCode);
+ const ignoreReport = this.createShouldIgnore();
+ // setup "rules" field by using a single fixerRule
+ debug("fixerRule", this.fixableRuleDescriptor);
+ const ruleContext = new TextlintRuleContextImpl({
+ ruleId: this.fixableRuleDescriptor.id,
+ severityLevel: getSeverity(this.fixableRuleDescriptor.normalizedOptions),
+ sourceCode,
+ report,
+ configBaseDir: this.configBaseDir
+ });
+ this.tryToAddListenRule(
+ this.fixableRuleDescriptor.fixer,
+ ruleContext,
+ this.fixableRuleDescriptor.normalizedOptions
+ );
+ // setup "filters" field
+ debug("filterRules", this.filterRuleDescriptors);
+ this.filterRuleDescriptors.descriptors.forEach((filterRuleDescriptor) => {
+ const ruleContext = new TextlintFilterRuleContextImpl({
+ ruleId: filterRuleDescriptor.id,
+ severityLevel: getSeverity(filterRuleDescriptor.normalizedOptions),
+ sourceCode,
+ ignoreReport,
+ configBaseDir: this.configBaseDir
+ });
+ this.tryToAddListenRule(filterRuleDescriptor.filter, ruleContext, filterRuleDescriptor.normalizedOptions);
+ });
+ }
+}
diff --git a/node_modules/@textlint/kernel/src/task/linter-task.ts b/node_modules/@textlint/kernel/src/task/linter-task.ts
new file mode 100644
index 000000000..66cfa1f6a
--- /dev/null
+++ b/node_modules/@textlint/kernel/src/task/linter-task.ts
@@ -0,0 +1,77 @@
+// LICENSE : MIT
+"use strict";
+import CoreTask from "./textlint-core-task";
+import { TextlintKernelConstructorOptions } from "../textlint-kernel-interface";
+import { TextlintFilterRuleDescriptors, TextlintRuleDescriptors } from "../descriptor";
+import type { TextlintSourceCode } from "@textlint/types";
+import { getSeverity } from "../shared/rule-severity";
+import { TextlintRuleContextImpl } from "../context/TextlintRuleContextImpl";
+import { TextlintFilterRuleContextImpl } from "../context/TextlintFilterRuleContextImpl";
+
+export interface TextLintCoreTaskArgs {
+ config: TextlintKernelConstructorOptions;
+ ruleDescriptors: TextlintRuleDescriptors;
+ filterRuleDescriptors: TextlintFilterRuleDescriptors;
+ sourceCode: TextlintSourceCode;
+ configBaseDir?: string;
+}
+
+export default class TextLintCoreTask extends CoreTask {
+ config: TextlintKernelConstructorOptions;
+ ruleDescriptors: TextlintRuleDescriptors;
+ filterRuleDescriptors: TextlintFilterRuleDescriptors;
+ sourceCode: TextlintSourceCode;
+ configBaseDir?: string;
+
+ constructor({
+ config,
+ configBaseDir,
+ ruleDescriptors,
+ filterRuleDescriptors: filterRuleDescriptors,
+ sourceCode
+ }: TextLintCoreTaskArgs) {
+ super();
+ this.config = config;
+ this.configBaseDir = configBaseDir;
+ this.ruleDescriptors = ruleDescriptors;
+ this.filterRuleDescriptors = filterRuleDescriptors;
+ this.sourceCode = sourceCode;
+ this._setupRules();
+ }
+
+ start() {
+ this.startTraverser(this.sourceCode);
+ }
+
+ private _setupRules() {
+ // rule
+ const sourceCode = this.sourceCode;
+ const report = this.createReporter(sourceCode);
+ const ignoreReport = this.createShouldIgnore();
+ // setup "rules" field
+ // filter duplicated rules for improving experience
+ // see https://github.com/textlint/textlint/issues/219
+ this.ruleDescriptors.lintableDescriptors.forEach((ruleDescriptor) => {
+ const ruleOptions = ruleDescriptor.normalizedOptions;
+ const ruleContext = new TextlintRuleContextImpl({
+ ruleId: ruleDescriptor.id,
+ severityLevel: getSeverity(ruleOptions),
+ sourceCode,
+ report,
+ configBaseDir: this.configBaseDir
+ });
+ this.tryToAddListenRule(ruleDescriptor.linter, ruleContext, ruleOptions);
+ });
+ // setup "filters" field
+ this.filterRuleDescriptors.descriptors.forEach((filterDescriptor) => {
+ const ruleContext = new TextlintFilterRuleContextImpl({
+ ruleId: filterDescriptor.id,
+ sourceCode,
+ ignoreReport,
+ configBaseDir: this.configBaseDir,
+ severityLevel: getSeverity(filterDescriptor.normalizedOptions)
+ });
+ this.tryToAddListenRule(filterDescriptor.filter, ruleContext, filterDescriptor.normalizedOptions);
+ });
+ }
+}
diff --git a/node_modules/@textlint/kernel/src/task/promise-event-emitter.ts b/node_modules/@textlint/kernel/src/task/promise-event-emitter.ts
new file mode 100644
index 000000000..6dd04239f
--- /dev/null
+++ b/node_modules/@textlint/kernel/src/task/promise-event-emitter.ts
@@ -0,0 +1,32 @@
+// MIT © 2017 azu
+// MIT © 2017 59naga
+// https://github.com/59naga/carrack
+"use strict";
+import { EventEmitter } from "events";
+
+export class PromiseEventEmitter {
+ private events: EventEmitter;
+
+ constructor() {
+ this.events = new EventEmitter();
+ this.events.setMaxListeners(0);
+ }
+
+ listenerCount(type: string | symbol): number {
+ return this.events.listenerCount(type);
+ }
+
+ on(event: string, listener: (...args: any[]) => void) {
+ return this.events.on(event, listener);
+ }
+
+ emit(event: string, ...args: Array): Promise> {
+ const promises: Array> = [];
+
+ this.events.listeners(event).forEach((listener) => {
+ promises.push(listener(...args));
+ });
+
+ return Promise.all(promises);
+ }
+}
diff --git a/node_modules/@textlint/kernel/src/task/task-runner.ts b/node_modules/@textlint/kernel/src/task/task-runner.ts
new file mode 100644
index 000000000..9f2bdd043
--- /dev/null
+++ b/node_modules/@textlint/kernel/src/task/task-runner.ts
@@ -0,0 +1,31 @@
+// LICENSE : MIT
+"use strict";
+import CoreTask, {
+ default as TextLintCoreTask,
+ IgnoreReportedMessage,
+ LintReportedMessage
+} from "./textlint-core-task";
+
+export default class TaskRunner {
+ /**
+ * Task and return promise
+ * @param {TextLintCoreTask} task
+ * @returns {Promise}
+ */
+ static process(task: TextLintCoreTask): Promise> {
+ return new Promise((resolve, reject) => {
+ const messages: Array = [];
+ task.on(CoreTask.events.message, (message) => {
+ messages.push(message);
+ });
+ task.on(CoreTask.events.error, (error) => {
+ reject(error);
+ });
+ task.on(CoreTask.events.complete, () => {
+ task.removeAllListeners();
+ resolve(messages);
+ });
+ task.start();
+ });
+ }
+}
diff --git a/node_modules/@textlint/kernel/src/task/textlint-core-task.ts b/node_modules/@textlint/kernel/src/task/textlint-core-task.ts
new file mode 100644
index 000000000..cf76346dd
--- /dev/null
+++ b/node_modules/@textlint/kernel/src/task/textlint-core-task.ts
@@ -0,0 +1,243 @@
+// LICENSE : MIT
+"use strict";
+import { TextlintRuleErrorImpl } from "../context/TextlintRuleErrorImpl";
+import { PromiseEventEmitter } from "./promise-event-emitter";
+import SourceLocation from "../core/source-location";
+import timing from "../util/timing";
+import MessageType from "../shared/type/MessageType";
+import { EventEmitter } from "events";
+import * as assert from "assert";
+import { AnyTxtNode, TxtParentNode } from "@textlint/ast-node-types";
+import type {
+ TextlintFilterRuleContext,
+ TextlintFilterRuleOptions,
+ TextlintFilterRuleReporter,
+ TextlintFilterRuleShouldIgnoreFunction,
+ TextlintFilterRuleShouldIgnoreFunctionArgs,
+ TextlintMessageFixCommand,
+ TextlintRuleContext,
+ TextlintRuleContextReportFunction,
+ TextlintRuleContextReportFunctionArgs,
+ TextlintRuleOptions,
+ TextlintRuleReporter,
+ TextlintSourceCode
+} from "@textlint/types";
+import { normalizeTextlintKeyPath } from "@textlint/utils";
+import { TextlintRuleContextImpl } from "../context/TextlintRuleContextImpl";
+import _debug from "debug";
+import { Controller as TraverseController } from "@textlint/ast-traverse";
+
+const traverseController = new TraverseController();
+const debug = _debug("textlint:core-task");
+
+class RuleTypeEmitter extends PromiseEventEmitter {}
+
+export interface IgnoreReportedMessage {
+ ruleId: string;
+ type: typeof MessageType.ignore;
+ // location info
+ // TODO: compatible with TextLintMessage
+ // line: number; // start with 1
+ // column: number;// start with 1
+ // // indexed-location
+ // index: number;// start with 0
+ range: [number, number];
+
+ ignoringRuleId: string;
+}
+
+export interface LintReportedMessage {
+ type: typeof MessageType.lint;
+ ruleId: string;
+ message: string;
+ index: number;
+ // See https://github.com/textlint/textlint/blob/master/typing/textlint.d.ts
+ line: number; // start with 1(1-based line number)
+ column: number; // start with 1(1-based column number)
+ severity: number; // it's for compatible ESLint formatter
+ fix?: TextlintMessageFixCommand;
+}
+
+/**
+ * CoreTask receive AST and prepare, traverse AST, emit nodeType event!
+ * You can observe task and receive "message" event that is TextLintMessage.
+ */
+export default abstract class TextLintCoreTask extends EventEmitter {
+ private ruleTypeEmitter: RuleTypeEmitter;
+
+ static get events() {
+ return {
+ // receive start event
+ start: "start",
+ // receive message from each rules
+ message: "message",
+ // receive complete event
+ complete: "complete",
+ // receive error event
+ error: "error"
+ };
+ }
+
+ constructor() {
+ super();
+ this.ruleTypeEmitter = new RuleTypeEmitter();
+ }
+
+ abstract start(): void;
+
+ createShouldIgnore(): TextlintFilterRuleShouldIgnoreFunction {
+ const shouldIgnore = (args: TextlintFilterRuleShouldIgnoreFunctionArgs) => {
+ const { ruleId, range, optional } = args;
+ assert.ok(
+ typeof range[0] !== "undefined" && typeof range[1] !== "undefined" && range[0] >= 0 && range[1] >= 0,
+ "ignoreRange should have actual range: " + range
+ );
+ // FIXME: should have index, loc
+ // should be compatible with LintReportedMessage?
+ const message: IgnoreReportedMessage = {
+ type: MessageType.ignore,
+ ruleId: ruleId,
+ range: range,
+ // ignoring target ruleId - default: filter all messages
+ // This ruleId should be normalized, because the user can report any value
+ ignoringRuleId: optional.ruleId ? normalizeTextlintKeyPath(optional.ruleId) : "*"
+ };
+ this.emit(TextLintCoreTask.events.message, message);
+ };
+ return shouldIgnore;
+ }
+
+ createReporter(sourceCode: TextlintSourceCode): TextlintRuleContextReportFunction {
+ const sourceLocation = new SourceLocation(sourceCode);
+ /**
+ * push new RuleError to results
+ * @param {ReportMessage} reportArgs
+ */
+ const reportFunction = (reportArgs: TextlintRuleContextReportFunctionArgs) => {
+ const { ruleId, severity, ruleError } = reportArgs;
+ debug("%s pushReport %s", ruleId, ruleError);
+ const { line, column, fix } = sourceLocation.adjust(reportArgs);
+ const index = sourceCode.positionToIndex({ line, column });
+ // add TextLintMessage
+ const message: LintReportedMessage = {
+ type: MessageType.lint,
+ ruleId: ruleId,
+ message: ruleError.message,
+ index,
+ // See https://github.com/textlint/textlint/blob/master/typing/textlint.d.ts
+ line: line, // start with 1(1-based line number)
+ column: column + 1, // start with 1(1-based column number)
+ severity: severity, // it's for compatible ESLint formatter
+ fix: fix !== undefined ? fix : undefined
+ };
+ if (!(ruleError instanceof TextlintRuleErrorImpl)) {
+ // FIXME: RuleReportedObject should be removed
+ // `error` is a any data.
+ const data = ruleError;
+ (message as any).data = data;
+ }
+ this.emit(TextLintCoreTask.events.message, message);
+ };
+ return reportFunction;
+ }
+
+ /**
+ * start process and emitting events.
+ * You can listen message by `task.on("message", message => {})`
+ * @param {SourceCode} sourceCode
+ */
+ startTraverser(sourceCode: TextlintSourceCode) {
+ this.emit(TextLintCoreTask.events.start);
+ const promiseQueue: Array>> = [];
+ const ruleTypeEmitter = this.ruleTypeEmitter;
+ traverseController.traverse(sourceCode.ast as TxtParentNode, {
+ enter(node: AnyTxtNode, parent?: AnyTxtNode) {
+ const type = node.type;
+ Object.defineProperty(node, "parent", { value: parent });
+ if (ruleTypeEmitter.listenerCount(type) > 0) {
+ const promise = ruleTypeEmitter.emit(type, node);
+ promiseQueue.push(promise);
+ }
+ },
+ leave(node: AnyTxtNode) {
+ const type = `${node.type}:exit`;
+ if (ruleTypeEmitter.listenerCount(type) > 0) {
+ const promise = ruleTypeEmitter.emit(type, node);
+ promiseQueue.push(promise);
+ }
+ }
+ });
+ Promise.all(promiseQueue)
+ .then(() => {
+ this.emit(TextLintCoreTask.events.complete);
+ })
+ .catch((error) => {
+ this.emit(TextLintCoreTask.events.error, error);
+ });
+ }
+
+ /**
+ * try to get rule object
+ */
+ tryToGetRuleObject(
+ ruleCreator: TextlintRuleReporter,
+ ruleContext: Readonly,
+ ruleOptions?: TextlintRuleOptions
+ ) {
+ try {
+ return ruleCreator(ruleContext, ruleOptions);
+ } catch (error) {
+ error.message = `Error while loading rule '${ruleContext.id}': ${error.message}`;
+ throw error;
+ }
+ }
+
+ /**
+ * try to get filter rule object
+ */
+ tryToGetFilterRuleObject(
+ ruleCreator: TextlintFilterRuleReporter,
+ ruleContext: Readonly,
+ ruleOptions?: TextlintFilterRuleOptions
+ ) {
+ try {
+ return ruleCreator(ruleContext, ruleOptions);
+ } catch (error) {
+ error.message = `Error while loading filter rule '${ruleContext.id}': ${error.message}`;
+ throw error;
+ }
+ }
+
+ /**
+ * add all the node types as listeners of the rule
+ * @param {Function} ruleCreator
+ * @param {Readonly|Readonly} ruleContext
+ * @param {Object|boolean|undefined} ruleOptions
+ * @returns {Object}
+ */
+ tryToAddListenRule(
+ ruleCreator: TextlintRuleReporter | TextlintFilterRuleReporter,
+ ruleContext: Readonly | Readonly,
+ ruleOptions?: TextlintRuleOptions | TextlintFilterRuleOptions
+ ): void {
+ const ruleObject =
+ ruleContext instanceof TextlintRuleContextImpl
+ ? this.tryToGetRuleObject(
+ ruleCreator as TextlintRuleReporter,
+ ruleContext as Readonly,
+ ruleOptions
+ )
+ : this.tryToGetFilterRuleObject(
+ ruleCreator as TextlintFilterRuleReporter,
+ ruleContext as Readonly,
+ ruleOptions
+ );
+ const types = Object.keys(ruleObject);
+ types.forEach((nodeType) => {
+ this.ruleTypeEmitter.on(
+ nodeType,
+ timing.enabled ? timing.time(ruleContext.id, ruleObject[nodeType] as Function) : ruleObject[nodeType]!
+ );
+ });
+ }
+}
diff --git a/node_modules/@textlint/kernel/src/textlint-kernel-interface.ts b/node_modules/@textlint/kernel/src/textlint-kernel-interface.ts
new file mode 100644
index 000000000..ae4bea16c
--- /dev/null
+++ b/node_modules/@textlint/kernel/src/textlint-kernel-interface.ts
@@ -0,0 +1,96 @@
+// rule config
+import type {
+ TextlintFilterRuleOptions,
+ TextlintFilterRuleReporter,
+ TextlintPluginCreator,
+ TextlintPluginOptions,
+ TextlintRuleModule,
+ TextlintRuleOptions
+} from "@textlint/types";
+
+export interface TextlintKernelConstructorOptions {
+ /**
+ * Suppress messages of severity:warning and severity:info
+ */
+ quiet?: boolean;
+}
+
+// config
+export interface TextlintConfigObject {
+ // rule directories path
+ rulePaths?: string[];
+ // filter by file extensions
+ extensions?: string[];
+ // formatter file name
+ // e.g.) stylish.js => set "stylish"
+ formatterName?: string;
+ // plugin package names
+ plugins?: string[];
+ // base directory for loading {rule, config, plugin} modules
+ rulesBaseDirectory?: string;
+ // ".textlint" file path
+ configFile?: string;
+ // disabled rule package names
+ // always should start with empty
+ disabledRules?: string[];
+ // preset package names
+ // e.g.) ["preset-foo"]
+ presets?: string[];
+ // rules config object
+ rulesConfig?: Object;
+ /**
+ * quite options
+ */
+ quiet?: boolean;
+}
+
+export interface TextlintKernelPlugin {
+ // plugin name as key
+ // this key should be normalized
+ pluginId: string;
+ // plugin module
+ // For example, `plugin: require("@textlint/textlint-plugin-markdown")`
+ plugin: TextlintPluginCreator;
+ // plugin options
+ options?: TextlintPluginOptions | boolean;
+}
+
+export interface TextlintKernelRule {
+ // rule name as key
+ // this key should be normalized
+ ruleId: string;
+ // rule module
+ // For example, `rule: require("textlint-rule-example")`
+ rule: TextlintRuleModule;
+ // rule options
+ // Often rule option is written in .textlintrc
+ options?: TextlintRuleOptions | boolean;
+}
+
+export interface TextlintKernelFilterRule {
+ // filter rule name as key
+ // this key should be normalized
+ ruleId: string;
+ // filter rule module instance
+ rule: TextlintFilterRuleReporter;
+ // filter rule options
+ // Often rule option is written in .textlintrc
+ options?: TextlintFilterRuleOptions | boolean;
+}
+
+export interface TextlintKernelOptions {
+ // file type
+ // For example) .md
+ ext: string;
+ // file path
+ filePath?: string;
+ // plugins
+ plugins?: TextlintKernelPlugin[];
+ // rules
+ rules?: TextlintKernelRule[];
+ // filterRules
+ filterRules?: TextlintKernelFilterRule[];
+ // config base directory
+ // It is a value of context.getConfigBaseDir.
+ configBaseDir?: string;
+}
diff --git a/node_modules/@textlint/kernel/src/textlint-kernel.ts b/node_modules/@textlint/kernel/src/textlint-kernel.ts
new file mode 100644
index 000000000..e265ca8d1
--- /dev/null
+++ b/node_modules/@textlint/kernel/src/textlint-kernel.ts
@@ -0,0 +1,223 @@
+// MIT © 2017- azu
+import * as assert from "assert";
+// sequence
+import FixerProcessor from "./fixer/fixer-processor";
+// parallel
+import LinterProcessor from "./linter/linter-processor";
+// message process manager
+import MessageProcessManager from "./messages/MessageProcessManager";
+import filterIgnoredProcess from "./messages/filter-ignored-process";
+import filterDuplicatedProcess from "./messages/filter-duplicated-process";
+import filterSeverityProcess from "./messages/filter-severity-process";
+import sortMessageProcess from "./messages/sort-messages-process";
+import { TextlintKernelConstructorOptions, TextlintKernelOptions } from "./textlint-kernel-interface";
+import type { TextlintFixResult, TextlintResult } from "@textlint/types";
+import { TextlintKernelDescriptor } from "./descriptor";
+import { TextlintSourceCodeImpl } from "./context/TextlintSourceCodeImpl";
+import { isTxtAST } from "@textlint/ast-tester";
+import _debug from "debug";
+
+const debug = _debug("textlint:kernel");
+
+/**
+ * add fileName to trailing of error message
+ * @param {string|undefined} fileName
+ * @param {string} message
+ * @returns {string}
+ */
+function addingAtFileNameToError(fileName: string | undefined, message: string) {
+ if (!fileName) {
+ return message;
+ }
+ return `${message}
+at ${fileName}`;
+}
+
+/**
+ * TextlintKernel is core logic written by pure JavaScript.
+ *
+ * Pass
+ *
+ * - config
+ * - plugins
+ * - rules
+ * - filterRules
+ * - messageProcessor
+ *
+ */
+export class TextlintKernel {
+ private readonly config: TextlintKernelConstructorOptions;
+ private readonly messageProcessManager: MessageProcessManager;
+
+ /**
+ * @param config
+ */
+ constructor(config: TextlintKernelConstructorOptions = {}) {
+ // this.config often is undefined.
+ this.config = config;
+ // Initialize Message Processor
+ // Now, It it built-in process only
+ // filter `shouldIgnore()` results
+ this.messageProcessManager = new MessageProcessManager([filterIgnoredProcess]);
+ // filter duplicated messages
+ this.messageProcessManager.add(filterDuplicatedProcess);
+ // filter by severity
+ this.messageProcessManager.add(filterSeverityProcess(this.config));
+ this.messageProcessManager.add(sortMessageProcess);
+ }
+
+ /**
+ * lint text by registered rules.
+ * The result contains target filePath and error messages.
+ * @param {string} text
+ * @param {Object} options linting options
+ * @returns {Promise.}
+ */
+ lintText(text: string, options: TextlintKernelOptions): Promise {
+ return Promise.resolve().then(() => {
+ const descriptor = new TextlintKernelDescriptor({
+ rules: options.rules || [],
+ filterRules: options.filterRules || [],
+ plugins: options.plugins || []
+ });
+ return this._parallelProcess({
+ descriptor,
+ text,
+ options
+ });
+ });
+ }
+
+ /**
+ * fix texts and return fix result object
+ * @param {string} text
+ * @param {Object} options lint options
+ * @returns {Promise.}
+ */
+ fixText(text: string, options: TextlintKernelOptions): Promise {
+ return Promise.resolve().then(() => {
+ const descriptor = new TextlintKernelDescriptor({
+ rules: options.rules || [],
+ filterRules: options.filterRules || [],
+ plugins: options.plugins || []
+ });
+ return this._sequenceProcess({
+ descriptor,
+ options,
+ text
+ });
+ });
+ }
+
+ /**
+ * process text in parallel for Rules and return {Promise.}
+ * In other word, parallel flow process.
+ * @param {*} processor
+ * @param {string} text
+ * @param {Object} options
+ * @returns {Promise.}
+ * @private
+ */
+ private _parallelProcess({
+ descriptor,
+ text,
+ options
+ }: {
+ descriptor: TextlintKernelDescriptor;
+ text: string;
+ options: TextlintKernelOptions;
+ }) {
+ const { ext, filePath, configBaseDir } = options;
+ const plugin = descriptor.findPluginDescriptorWithExt(ext);
+ debug("available extensions: %o", descriptor.availableExtensions);
+ if (plugin === undefined) {
+ throw new Error(`Not found available plugin for ${ext}`);
+ }
+ debug("use plugin: %s", plugin.id);
+ const processor = plugin.processor;
+ const { preProcess, postProcess } = processor.processor(ext);
+ assert.ok(
+ typeof preProcess === "function" && typeof postProcess === "function",
+ "processor should implements {preProcess, postProcess}"
+ );
+ const preProcessResult = preProcess(text, filePath);
+ const isPluginReturnAnAST = isTxtAST(preProcessResult);
+ const textForAST = isPluginReturnAnAST ? text : preProcessResult.text;
+ const ast = isPluginReturnAnAST ? preProcessResult : preProcessResult.ast;
+ const sourceCode = new TextlintSourceCodeImpl({
+ text: textForAST,
+ ast,
+ ext,
+ filePath
+ });
+ const linterProcessor = new LinterProcessor(processor, this.messageProcessManager);
+ return linterProcessor
+ .process({
+ config: this.config,
+ ruleDescriptors: descriptor.rule,
+ filterRuleDescriptors: descriptor.filterRule,
+ sourceCode,
+ configBaseDir
+ })
+ .catch((error) => {
+ error.message = addingAtFileNameToError(filePath, error.message);
+ return Promise.reject(error);
+ });
+ }
+
+ /**
+ * process text in series for Rules and return {Promise.}
+ * In other word, sequence flow process.
+ * @param {*} processor
+ * @param {string} text
+ * @param {TextlintKernelOptions} options
+ * @returns {Promise.}
+ * @private
+ */
+ private _sequenceProcess({
+ descriptor,
+ text,
+ options
+ }: {
+ descriptor: TextlintKernelDescriptor;
+ text: string;
+ options: TextlintKernelOptions;
+ }): Promise {
+ const { ext, filePath, configBaseDir } = options;
+ const plugin = descriptor.findPluginDescriptorWithExt(ext);
+ debug("available extensions: %o", descriptor.availableExtensions);
+ if (plugin === undefined) {
+ throw new Error(`Not found available plugin for ${ext}`);
+ }
+ debug("use plugin: %s", plugin.id);
+ const processor = plugin.processor;
+ const { preProcess, postProcess } = processor.processor(ext);
+ assert.ok(
+ typeof preProcess === "function" && typeof postProcess === "function",
+ "processor should implements {preProcess, postProcess}"
+ );
+ const preProcessResult = preProcess(text, filePath);
+ const isPluginReturnAnAST = isTxtAST(preProcessResult);
+ const textForAST = isPluginReturnAnAST ? text : preProcessResult.text;
+ const ast = isPluginReturnAnAST ? preProcessResult : preProcessResult.ast;
+ const sourceCode = new TextlintSourceCodeImpl({
+ text: textForAST,
+ ast,
+ ext,
+ filePath
+ });
+ const fixerProcessor = new FixerProcessor(processor, this.messageProcessManager);
+ return fixerProcessor
+ .process({
+ config: this.config,
+ ruleDescriptors: descriptor.rule,
+ filterRules: descriptor.filterRule,
+ sourceCode,
+ configBaseDir
+ })
+ .catch((error) => {
+ error.message = addingAtFileNameToError(filePath, error.message);
+ return Promise.reject(error);
+ });
+ }
+}
diff --git a/node_modules/@textlint/kernel/src/util/logger.ts b/node_modules/@textlint/kernel/src/util/logger.ts
new file mode 100644
index 000000000..020311365
--- /dev/null
+++ b/node_modules/@textlint/kernel/src/util/logger.ts
@@ -0,0 +1,25 @@
+// LICENSE : MIT
+"use strict";
+
+/* eslint-disable no-console */
+
+/**
+ * Logger Utils class
+ * Use this instead of `console.log`
+ * Main purpose for helping linting.
+ */
+export default class Logger {
+ static log(...message: Array) {
+ console.log(...message);
+ }
+
+ static warn(...message: Array) {
+ console.warn(...message);
+ }
+
+ static error(...message: Array) {
+ console.error(...message);
+ }
+}
+
+/* eslint-enable no-console */
diff --git a/node_modules/@textlint/kernel/src/util/timing.ts b/node_modules/@textlint/kernel/src/util/timing.ts
new file mode 100644
index 000000000..3b7d51b33
--- /dev/null
+++ b/node_modules/@textlint/kernel/src/util/timing.ts
@@ -0,0 +1,135 @@
+/**
+ * @fileoverview Tracks performance of individual rules.
+ * @author Brandon Mills
+ * @copyright 2014 Brandon Mills. All rights reserved.
+ */
+"use strict";
+import Logger from "./logger";
+
+/* istanbul ignore next */
+/**
+ * Align the string to left
+ * @param {string} str string to evaluate
+ * @param {int} len length of the string
+ * @param {string} [ch] delimiter character
+ * @returns {string} modified string
+ * @private
+ */
+function alignLeft(str: string, len: number, ch?: string) {
+ return str + new Array(len - str.length + 1).join(ch || " ");
+}
+
+/* istanbul ignore next */
+/**
+ * Align the string to right
+ * @param {string} str string to evaluate
+ * @param {int} len length of the string
+ * @param {string} [ch] delimiter character
+ * @returns {string} modified string
+ * @private
+ */
+function alignRight(str: string, len: number, ch?: string) {
+ return new Array(len - str.length + 1).join(ch || " ") + str;
+}
+
+const enabled = Boolean(process.env.TIMING);
+
+const HEADERS = ["Rule", "Time (ms)", "Relative"];
+const ALIGN = [alignLeft, alignRight, alignRight];
+
+/* istanbul ignore next */
+/**
+ * display the data
+ * @param {object} data Data object to be displayed
+ * @returns {string} modified string
+ * @private
+ */
+function display(data: any) {
+ let total = 0;
+ const rows = Object.keys(data)
+ .map(function (key) {
+ const time = data[key];
+ total += time;
+ return [key, time] as any;
+ })
+ .sort(function (a: [string, number], b: [string, number]) {
+ return b[1] - a[1];
+ })
+ .slice(0, 10);
+
+ rows.forEach(function (row: any) {
+ row.push(((row[1] * 100) / total).toFixed(1) + "%");
+ row[1] = row[1].toFixed(3);
+ });
+
+ rows.unshift(HEADERS);
+
+ const widths: Array = [];
+ rows.forEach(function (row) {
+ for (let i = 0; i < row.length; i++) {
+ const n = row[i].length;
+ if (!widths[i] || n > widths[i]) {
+ widths[i] = n;
+ }
+ }
+ });
+
+ const table = rows.map(function (row) {
+ return row
+ .map(function (cell: any, index: number) {
+ return ALIGN[index](cell, widths[index]);
+ })
+ .join(" | ");
+ });
+ table.splice(
+ 1,
+ 0,
+ widths
+ .map(function (w, index) {
+ if (index !== 0 && index !== widths.length - 1) {
+ w++;
+ }
+
+ return ALIGN[index](":", w + 1, "-");
+ })
+ .join("|")
+ );
+
+ Logger.log(table.join("\n"));
+}
+
+/* istanbul ignore next */
+export default (function () {
+ const data = Object.create(null);
+
+ /**
+ * Time the run
+ * @param {*} key key from the data object
+ * @param {Function} fn function to be called
+ * @returns {Function} function to be executed
+ * @private
+ */
+ function time(key: string, fn: Function) {
+ if (typeof data[key] === "undefined") {
+ data[key] = 0;
+ }
+
+ return function () {
+ let t = process.hrtime();
+ fn.apply(null, Array.prototype.slice.call(arguments));
+ t = process.hrtime(t);
+ data[key] += t[0] * 1e3 + t[1] / 1e6;
+ };
+ }
+
+ if (enabled) {
+ process.on("exit", function () {
+ display(data);
+ });
+ }
+
+ return {
+ time: time,
+ enabled: enabled
+ };
+})();
diff --git a/node_modules/@textlint/linter-formatter/CHANGELOG.md b/node_modules/@textlint/linter-formatter/CHANGELOG.md
new file mode 100644
index 000000000..c59298cb1
--- /dev/null
+++ b/node_modules/@textlint/linter-formatter/CHANGELOG.md
@@ -0,0 +1,608 @@
+# Change Log
+
+All notable changes to this project will be documented in this file.
+See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+
+## [3.3.5](https://github.com/textlint/textlint/compare/@textlint/linter-formatter@3.3.4...@textlint/linter-formatter@3.3.5) (2021-05-08)
+
+**Note:** Version bump only for package @textlint/linter-formatter
+
+
+
+
+
+## [3.3.4](https://github.com/textlint/textlint/compare/@textlint/linter-formatter@3.3.3...@textlint/linter-formatter@3.3.4) (2021-03-21)
+
+**Note:** Version bump only for package @textlint/linter-formatter
+
+
+
+
+
+
+## [3.3.3](https://github.com/textlint/textlint/compare/@textlint/linter-formatter@3.3.2...@textlint/linter-formatter@3.3.3) (2021-03-19)
+
+
+### Bug Fixes
+
+* **linter-formatter:** escape XML control characters in ruleId ([#747](https://github.com/textlint/textlint/issues/747)) ([2d1cc87](https://github.com/textlint/textlint/commit/2d1cc87))
+
+
+### Chores
+
+* **deps:** update dependency [@types](https://github.com/types)/mocha to v8.2.1 ([da2d6e7](https://github.com/textlint/textlint/commit/da2d6e7))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.27 ([c1c0b86](https://github.com/textlint/textlint/commit/c1c0b86))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.28 ([136e255](https://github.com/textlint/textlint/commit/136e255))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.29 ([74af03b](https://github.com/textlint/textlint/commit/74af03b))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.30 ([4872821](https://github.com/textlint/textlint/commit/4872821))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.31 ([95821ad](https://github.com/textlint/textlint/commit/95821ad))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.32 ([0b0a384](https://github.com/textlint/textlint/commit/0b0a384))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.33 ([a05e2d9](https://github.com/textlint/textlint/commit/a05e2d9))
+* **deps:** update dependency chai to ^4.3.1 ([de13dce](https://github.com/textlint/textlint/commit/de13dce))
+* **deps:** update dependency chai to ^4.3.3 ([9eac118](https://github.com/textlint/textlint/commit/9eac118))
+* **deps:** update dependency mocha to ^8.3.0 ([0464adb](https://github.com/textlint/textlint/commit/0464adb))
+* **deps:** update dependency mocha to ^8.3.1 ([cc509ed](https://github.com/textlint/textlint/commit/cc509ed))
+* **deps:** update patch updates ([183eb8d](https://github.com/textlint/textlint/commit/183eb8d))
+
+
+
+
+
+
+## [3.3.2](https://github.com/textlint/textlint/compare/@textlint/linter-formatter@3.3.1...@textlint/linter-formatter@3.3.2) (2021-02-06)
+
+
+### Chores
+
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.25 ([cc5c800](https://github.com/textlint/textlint/commit/cc5c800))
+* **deps:** update dependency chai to ^4.3.0 ([13ac978](https://github.com/textlint/textlint/commit/13ac978))
+
+
+
+
+
+
+## [3.3.1](https://github.com/textlint/textlint/compare/@textlint/linter-formatter@3.2.5...@textlint/linter-formatter@3.3.1) (2021-01-22)
+
+
+### Bug Fixes
+
+* **deps:** update dependency debug to ^4.2.0 ([6db0ba9](https://github.com/textlint/textlint/commit/6db0ba9))
+* **deps:** update dependency debug to ^4.3.0 ([9dea96a](https://github.com/textlint/textlint/commit/9dea96a))
+
+
+### Chores
+
+* **deps:** update dependency [@types](https://github.com/types)/mocha to v8.0.4 ([fd60f20](https://github.com/textlint/textlint/commit/fd60f20))
+* **deps:** update dependency [@types](https://github.com/types)/mocha to v8.2.0 ([5ced72d](https://github.com/textlint/textlint/commit/5ced72d))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.11.2 ([6ac372a](https://github.com/textlint/textlint/commit/6ac372a))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.11.5 ([b0e73f5](https://github.com/textlint/textlint/commit/b0e73f5))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.11.8 ([33679af](https://github.com/textlint/textlint/commit/33679af))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.10 ([96ba315](https://github.com/textlint/textlint/commit/96ba315))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.12 ([f62f2e3](https://github.com/textlint/textlint/commit/f62f2e3))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.13 ([608afd4](https://github.com/textlint/textlint/commit/608afd4))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.14 ([8417f8a](https://github.com/textlint/textlint/commit/8417f8a))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.16 ([7209803](https://github.com/textlint/textlint/commit/7209803))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.17 ([9ec5481](https://github.com/textlint/textlint/commit/9ec5481))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.19 ([bd050c9](https://github.com/textlint/textlint/commit/bd050c9))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.21 ([464d58a](https://github.com/textlint/textlint/commit/464d58a))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.22 ([5e5d214](https://github.com/textlint/textlint/commit/5e5d214))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.5 ([1ed7006](https://github.com/textlint/textlint/commit/1ed7006))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.6 ([507a41b](https://github.com/textlint/textlint/commit/507a41b))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.7 ([64f97eb](https://github.com/textlint/textlint/commit/64f97eb))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.8 ([8de7d16](https://github.com/textlint/textlint/commit/8de7d16))
+* **deps:** update minor updates ([7ef0be6](https://github.com/textlint/textlint/commit/7ef0be6))
+* **deps:** update minor updates ([2f3dcb6](https://github.com/textlint/textlint/commit/2f3dcb6))
+* **deps:** update minor updates ([7a53517](https://github.com/textlint/textlint/commit/7a53517))
+* **deps:** update minor updates ([#712](https://github.com/textlint/textlint/issues/712)) ([8c42a19](https://github.com/textlint/textlint/commit/8c42a19))
+* **deps:** update patch updates ([24fe2a9](https://github.com/textlint/textlint/commit/24fe2a9))
+* **deps:** update patch updates ([3d9660b](https://github.com/textlint/textlint/commit/3d9660b))
+* **deps:** update patch updates ([fe2ad4f](https://github.com/textlint/textlint/commit/fe2ad4f))
+* **deps:** update patch updates ([e438ff2](https://github.com/textlint/textlint/commit/e438ff2))
+* **deps:** update patch updates ([9df50df](https://github.com/textlint/textlint/commit/9df50df))
+* **deps:** update patch updates ([4f4c206](https://github.com/textlint/textlint/commit/4f4c206))
+* **deps:** update patch updates ([1a0e41f](https://github.com/textlint/textlint/commit/1a0e41f))
+* **deps:** update patch updates ([9157dda](https://github.com/textlint/textlint/commit/9157dda))
+* **deps:** update TypeScript deps ([#705](https://github.com/textlint/textlint/issues/705)) ([1baa72a](https://github.com/textlint/textlint/commit/1baa72a))
+* use [@monorepo-utils](https://github.com/monorepo-utils)/workspaces-to-typescript-project-references ([#699](https://github.com/textlint/textlint/issues/699)) ([eff1943](https://github.com/textlint/textlint/commit/eff1943))
+
+
+### Features
+
+* **source-code-fixer:** add `[@textlint](https://github.com/textlint)/source-code-fixer` ([#736](https://github.com/textlint/textlint/issues/736)) ([bf7235a](https://github.com/textlint/textlint/commit/bf7235a))
+
+
+
+
+
+
+# [3.3.0](https://github.com/textlint/textlint/compare/@textlint/linter-formatter@3.2.5...@textlint/linter-formatter@3.3.0) (2021-01-22)
+
+
+### Bug Fixes
+
+* **deps:** update dependency debug to ^4.2.0 ([6db0ba9](https://github.com/textlint/textlint/commit/6db0ba9))
+* **deps:** update dependency debug to ^4.3.0 ([9dea96a](https://github.com/textlint/textlint/commit/9dea96a))
+
+
+### Chores
+
+* **deps:** update dependency [@types](https://github.com/types)/mocha to v8.0.4 ([fd60f20](https://github.com/textlint/textlint/commit/fd60f20))
+* **deps:** update dependency [@types](https://github.com/types)/mocha to v8.2.0 ([5ced72d](https://github.com/textlint/textlint/commit/5ced72d))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.11.2 ([6ac372a](https://github.com/textlint/textlint/commit/6ac372a))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.11.5 ([b0e73f5](https://github.com/textlint/textlint/commit/b0e73f5))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.11.8 ([33679af](https://github.com/textlint/textlint/commit/33679af))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.10 ([96ba315](https://github.com/textlint/textlint/commit/96ba315))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.12 ([f62f2e3](https://github.com/textlint/textlint/commit/f62f2e3))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.13 ([608afd4](https://github.com/textlint/textlint/commit/608afd4))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.14 ([8417f8a](https://github.com/textlint/textlint/commit/8417f8a))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.16 ([7209803](https://github.com/textlint/textlint/commit/7209803))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.17 ([9ec5481](https://github.com/textlint/textlint/commit/9ec5481))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.19 ([bd050c9](https://github.com/textlint/textlint/commit/bd050c9))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.21 ([464d58a](https://github.com/textlint/textlint/commit/464d58a))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.22 ([5e5d214](https://github.com/textlint/textlint/commit/5e5d214))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.5 ([1ed7006](https://github.com/textlint/textlint/commit/1ed7006))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.6 ([507a41b](https://github.com/textlint/textlint/commit/507a41b))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.7 ([64f97eb](https://github.com/textlint/textlint/commit/64f97eb))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.8 ([8de7d16](https://github.com/textlint/textlint/commit/8de7d16))
+* **deps:** update minor updates ([7ef0be6](https://github.com/textlint/textlint/commit/7ef0be6))
+* **deps:** update minor updates ([2f3dcb6](https://github.com/textlint/textlint/commit/2f3dcb6))
+* **deps:** update minor updates ([7a53517](https://github.com/textlint/textlint/commit/7a53517))
+* **deps:** update minor updates ([#712](https://github.com/textlint/textlint/issues/712)) ([8c42a19](https://github.com/textlint/textlint/commit/8c42a19))
+* **deps:** update patch updates ([24fe2a9](https://github.com/textlint/textlint/commit/24fe2a9))
+* **deps:** update patch updates ([3d9660b](https://github.com/textlint/textlint/commit/3d9660b))
+* **deps:** update patch updates ([fe2ad4f](https://github.com/textlint/textlint/commit/fe2ad4f))
+* **deps:** update patch updates ([e438ff2](https://github.com/textlint/textlint/commit/e438ff2))
+* **deps:** update patch updates ([9df50df](https://github.com/textlint/textlint/commit/9df50df))
+* **deps:** update patch updates ([4f4c206](https://github.com/textlint/textlint/commit/4f4c206))
+* **deps:** update patch updates ([1a0e41f](https://github.com/textlint/textlint/commit/1a0e41f))
+* **deps:** update patch updates ([9157dda](https://github.com/textlint/textlint/commit/9157dda))
+* **deps:** update TypeScript deps ([#705](https://github.com/textlint/textlint/issues/705)) ([1baa72a](https://github.com/textlint/textlint/commit/1baa72a))
+* use [@monorepo-utils](https://github.com/monorepo-utils)/workspaces-to-typescript-project-references ([#699](https://github.com/textlint/textlint/issues/699)) ([eff1943](https://github.com/textlint/textlint/commit/eff1943))
+
+
+### Features
+
+* **source-code-fixer:** add `[@textlint](https://github.com/textlint)/source-code-fixer` ([#736](https://github.com/textlint/textlint/issues/736)) ([bf7235a](https://github.com/textlint/textlint/commit/bf7235a))
+
+
+
+
+
+
+## [3.2.6](https://github.com/textlint/textlint/compare/@textlint/linter-formatter@3.2.5...@textlint/linter-formatter@3.2.6) (2020-12-22)
+
+
+### Bug Fixes
+
+* **deps:** update dependency debug to ^4.2.0 ([6db0ba9](https://github.com/textlint/textlint/commit/6db0ba9))
+* **deps:** update dependency debug to ^4.3.0 ([9dea96a](https://github.com/textlint/textlint/commit/9dea96a))
+
+
+### Chores
+
+* **deps:** update dependency [@types](https://github.com/types)/mocha to v8.0.4 ([fd60f20](https://github.com/textlint/textlint/commit/fd60f20))
+* **deps:** update dependency [@types](https://github.com/types)/mocha to v8.2.0 ([5ced72d](https://github.com/textlint/textlint/commit/5ced72d))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.11.2 ([6ac372a](https://github.com/textlint/textlint/commit/6ac372a))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.11.5 ([b0e73f5](https://github.com/textlint/textlint/commit/b0e73f5))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.11.8 ([33679af](https://github.com/textlint/textlint/commit/33679af))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.10 ([96ba315](https://github.com/textlint/textlint/commit/96ba315))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.12 ([f62f2e3](https://github.com/textlint/textlint/commit/f62f2e3))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.13 ([608afd4](https://github.com/textlint/textlint/commit/608afd4))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.14 ([8417f8a](https://github.com/textlint/textlint/commit/8417f8a))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.5 ([1ed7006](https://github.com/textlint/textlint/commit/1ed7006))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.6 ([507a41b](https://github.com/textlint/textlint/commit/507a41b))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.7 ([64f97eb](https://github.com/textlint/textlint/commit/64f97eb))
+* **deps:** update dependency [@types](https://github.com/types)/node to ^14.14.8 ([8de7d16](https://github.com/textlint/textlint/commit/8de7d16))
+* **deps:** update minor updates ([7ef0be6](https://github.com/textlint/textlint/commit/7ef0be6))
+* **deps:** update minor updates ([2f3dcb6](https://github.com/textlint/textlint/commit/2f3dcb6))
+* **deps:** update minor updates ([7a53517](https://github.com/textlint/textlint/commit/7a53517))
+* **deps:** update minor updates ([#712](https://github.com/textlint/textlint/issues/712)) ([8c42a19](https://github.com/textlint/textlint/commit/8c42a19))
+* **deps:** update patch updates ([3d9660b](https://github.com/textlint/textlint/commit/3d9660b))
+* **deps:** update patch updates ([fe2ad4f](https://github.com/textlint/textlint/commit/fe2ad4f))
+* **deps:** update patch updates ([e438ff2](https://github.com/textlint/textlint/commit/e438ff2))
+* **deps:** update patch updates ([9df50df](https://github.com/textlint/textlint/commit/9df50df))
+* **deps:** update patch updates ([4f4c206](https://github.com/textlint/textlint/commit/4f4c206))
+* **deps:** update patch updates ([1a0e41f](https://github.com/textlint/textlint/commit/1a0e41f))
+* **deps:** update patch updates ([9157dda](https://github.com/textlint/textlint/commit/9157dda))
+* **deps:** update TypeScript deps ([#705](https://github.com/textlint/textlint/issues/705)) ([1baa72a](https://github.com/textlint/textlint/commit/1baa72a))
+* use [@monorepo-utils](https://github.com/monorepo-utils)/workspaces-to-typescript-project-references ([#699](https://github.com/textlint/textlint/issues/699)) ([eff1943](https://github.com/textlint/textlint/commit/eff1943))
+
+
+
+
+
+
+## [3.2.5](https://github.com/textlint/textlint/compare/@textlint/linter-formatter@3.2.4...@textlint/linter-formatter@3.2.5) (2020-07-24)
+
+
+### Bug Fixes
+
+* improve "module" supports ([5ba5182](https://github.com/textlint/textlint/commit/5ba5182))
+
+
+
+
+
+
+## [3.2.4](https://github.com/textlint/textlint/compare/@textlint/linter-formatter@3.2.3...@textlint/linter-formatter@3.2.4) (2020-07-24)
+
+
+### Bug Fixes
+
+* "clean" command should remove tsconfig.module.tsbuildinfo ([76ac72a](https://github.com/textlint/textlint/commit/76ac72a))
+
+
+
+
+
+
+## [3.2.3](https://github.com/textlint/textlint/compare/@textlint/linter-formatter@3.2.2...@textlint/linter-formatter@3.2.3) (2020-07-24)
+
+
+### Bug Fixes
+
+* **@textlint/kernel:** fix export only type definition ([1234930](https://github.com/textlint/textlint/commit/1234930))
+
+
+
+
+
+
+## [3.2.2](https://github.com/textlint/textlint/compare/@textlint/linter-formatter@3.2.1...@textlint/linter-formatter@3.2.2) (2020-07-24)
+
+**Note:** Version bump only for package @textlint/linter-formatter
+
+
+
+
+
+
+## [3.2.1](https://github.com/textlint/textlint/compare/@textlint/linter-formatter@3.2.0...@textlint/linter-formatter@3.2.1) (2020-07-24)
+
+
+### Bug Fixes
+
+* include module ([2de05f7](https://github.com/textlint/textlint/commit/2de05f7))
+
+
+
+
+
+
+# [3.2.0](https://github.com/textlint/textlint/compare/@textlint/linter-formatter@3.1.12...@textlint/linter-formatter@3.2.0) (2020-07-24)
+
+
+### Chores
+
+* **deps:** update devDepencies ([#667](https://github.com/textlint/textlint/issues/667)) ([0503af6](https://github.com/textlint/textlint/commit/0503af6))
+
+
+### Code Refactoring
+
+* Drop string.prototype.padstart ([#680](https://github.com/textlint/textlint/issues/680)) ([8bb864a](https://github.com/textlint/textlint/commit/8bb864a))
+* **typescript:** Use TypeScript Project References ([#668](https://github.com/textlint/textlint/issues/668)) ([bbffd43](https://github.com/textlint/textlint/commit/bbffd43))
+
+
+### Tests
+
+* migrate mocha.opts to .mocharc.json ([#682](https://github.com/textlint/textlint/issues/682)) ([332ae5e](https://github.com/textlint/textlint/commit/332ae5e))
+
+
+
+
+
+
+## [3.1.12](https://github.com/textlint/textlint/compare/@textlint/linter-formatter@3.1.11...@textlint/linter-formatter@3.1.12) (2020-02-07)
+
+**Note:** Version bump only for package @textlint/linter-formatter
+
+
+
+
+
+
+## [3.1.11](https://github.com/textlint/textlint/compare/@textlint/linter-formatter@3.1.10...@textlint/linter-formatter@3.1.11) (2020-01-08)
+
+
+### Bug Fixes
+
+* **linter-formatter:** add missing dependencies ([5501a42](https://github.com/textlint/textlint/commit/5501a42))
+* **linter-formatter:** fix --no-color support ([6cbfb1f](https://github.com/textlint/textlint/commit/6cbfb1f))
+
+
+### Chores
+
+* **deps:** update yarn.lock ([2f6fa9e](https://github.com/textlint/textlint/commit/2f6fa9e))
+* **linter-formatter:** move path ([98ff781](https://github.com/textlint/textlint/commit/98ff781))
+
+
+### Tests
+
+* **liner-formatter:** pass { color: false } ([fe3c2df](https://github.com/textlint/textlint/commit/fe3c2df))
+
+
+
+
+
+
+## [3.1.10](https://github.com/textlint/textlint/compare/@textlint/linter-formatter@3.1.8...@textlint/linter-formatter@3.1.10) (2020-01-07)
+
+**Note:** Version bump only for package @textlint/linter-formatter
+
+
+
+
+
+
+## [3.1.9](https://github.com/textlint/textlint/compare/@textlint/linter-formatter@3.1.8...@textlint/linter-formatter@3.1.9) (2019-11-03)
+
+**Note:** Version bump only for package @textlint/linter-formatter
+
+
+
+
+
+
+## [3.1.8](https://github.com/textlint/textlint/compare/@textlint/linter-formatter@3.1.7...@textlint/linter-formatter@3.1.8) (2019-10-14)
+
+**Note:** Version bump only for package @textlint/linter-formatter
+
+
+
+
+
+
+## [3.1.7](https://github.com/textlint/textlint/compare/@textlint/linter-formatter@3.1.5...@textlint/linter-formatter@3.1.7) (2019-07-20)
+
+
+### Code Refactoring
+
+* **utils:** move implementation from types to utils ([#611](https://github.com/textlint/textlint/issues/611)) ([cd9adbe](https://github.com/textlint/textlint/commit/cd9adbe))
+* use [@textlint](https://github.com/textlint)/module-interop instead of interop-require ([10d34a6](https://github.com/textlint/textlint/commit/10d34a6))
+
+
+
+
+
+
+## [3.1.6](https://github.com/textlint/textlint/compare/@textlint/linter-formatter@3.1.5...@textlint/linter-formatter@3.1.6) (2019-07-13)
+
+
+### Code Refactoring
+
+* **utils:** move implementation from types to utils ([#611](https://github.com/textlint/textlint/issues/611)) ([cd9adbe](https://github.com/textlint/textlint/commit/cd9adbe))
+
+
+
+
+
+
+## [3.1.5](https://github.com/textlint/textlint/compare/@textlint/linter-formatter@3.1.4...@textlint/linter-formatter@3.1.5) (2019-04-30)
+
+
+### Chores
+
+* **deps:** update deps && devDeps ([a19463b](https://github.com/textlint/textlint/commit/a19463b))
+
+
+
+
+
+
+## [3.1.4](https://github.com/textlint/textlint/compare/@textlint/linter-formatter@3.1.3...@textlint/linter-formatter@3.1.4) (2019-04-30)
+
+**Note:** Version bump only for package @textlint/linter-formatter
+
+
+
+
+
+
+## [3.1.3](https://github.com/textlint/textlint/compare/@textlint/linter-formatter@3.1.2...@textlint/linter-formatter@3.1.3) (2019-02-10)
+
+
+### Bug Fixes
+
+* **textlint:** add reasonable debug log ([3931810](https://github.com/textlint/textlint/commit/3931810))
+
+
+
+
+
+
+## [3.1.2](https://github.com/textlint/textlint/compare/@textlint/linter-formatter@3.1.1...@textlint/linter-formatter@3.1.2) (2019-01-03)
+
+**Note:** Version bump only for package @textlint/linter-formatter
+
+
+
+
+
+
+## [3.1.1](https://github.com/textlint/textlint/compare/@textlint/linter-formatter@3.1.0...@textlint/linter-formatter@3.1.1) (2019-01-03)
+
+**Note:** Version bump only for package @textlint/linter-formatter
+
+
+
+
+
+
+# [3.1.0](https://github.com/textlint/textlint/compare/@textlint/linter-formatter@3.0.9...@textlint/linter-formatter@3.1.0) (2019-01-01)
+
+
+### Chores
+
+* **deps:** update TypeScript deps ([3ea7fb0](https://github.com/textlint/textlint/commit/3ea7fb0))
+* **formatter:** revert unnecessary changes ([70bef1e](https://github.com/textlint/textlint/commit/70bef1e))
+
+
+### Code Refactoring
+
+* **linter-formatter:** use [@textlint](https://github.com/textlint)/types instead of [@textlint](https://github.com/textlint)/kernel ([09cc67f](https://github.com/textlint/textlint/commit/09cc67f))
+* **types:** move type definition for rule to [@textlint](https://github.com/textlint)/types ([9be6e16](https://github.com/textlint/textlint/commit/9be6e16))
+
+
+### Styles
+
+* **eslint:** apply eslint to all files ([6a9573f](https://github.com/textlint/textlint/commit/6a9573f))
+
+
+
+
+
+## [3.0.9](https://github.com/textlint/textlint/compare/@textlint/linter-formatter@3.0.8...@textlint/linter-formatter@3.0.9) (2018-12-24)
+
+
+
+
+**Note:** Version bump only for package @textlint/linter-formatter
+
+
+## [3.0.8](https://github.com/textlint/textlint/compare/@textlint/linter-formatter@3.0.7...@textlint/linter-formatter@3.0.8) (2018-07-22)
+
+
+### Chores
+
+* **deps:** update mocha ([5df8af4](https://github.com/textlint/textlint/commit/5df8af4))
+* **linter-formatter:** increase timeout ([2dd5663](https://github.com/textlint/textlint/commit/2dd5663))
+
+
+### Code Refactoring
+
+* **kernel:** separate linter and fixer descriptor ([b5bc8bd](https://github.com/textlint/textlint/commit/b5bc8bd))
+
+
+
+
+
+## [3.0.7](https://github.com/textlint/textlint/compare/@textlint/linter-formatter@3.0.6...@textlint/linter-formatter@3.0.7) (2018-04-02)
+
+
+
+
+**Note:** Version bump only for package @textlint/linter-formatter
+
+
+## [3.0.6](https://github.com/textlint/textlint/compare/@textlint/linter-formatter@3.0.5...@textlint/linter-formatter@3.0.6) (2018-04-02)
+
+
+
+
+**Note:** Version bump only for package @textlint/linter-formatter
+
+
+## [3.0.5](https://github.com/textlint/textlint/compare/@textlint/linter-formatter@3.0.4...@textlint/linter-formatter@3.0.5) (2018-03-25)
+
+
+### Chores
+
+* **test:** use `ts-node-test-register` for TypeScript testing ([be746d8](https://github.com/textlint/textlint/commit/be746d8)), closes [#451](https://github.com/textlint/textlint/issues/451)
+
+
+
+
+
+## [3.0.4](https://github.com/textlint/textlint/compare/@textlint/linter-formatter@3.0.3...@textlint/linter-formatter@3.0.4) (2018-01-27)
+
+
+
+
+**Note:** Version bump only for package @textlint/linter-formatter
+
+
+## 3.0.3 (2018-01-18)
+
+
+### Bug Fixes
+
+* **linter-formatter:** add `publishConfig` ([9f54a5a](https://github.com/textlint/textlint/commit/9f54a5a))
+
+
+
+
+
+## [3.0.2](https://github.com/textlint/textlint/compare/textlint-formatter@3.0.1...textlint-formatter@3.0.2) (2018-01-12)
+
+
+
+
+**Note:** Version bump only for package textlint-formatter
+
+
+# [3.0.0](https://github.com/textlint/textlint/compare/textlint-formatter@2.0.0...textlint-formatter@3.0.0) (2017-12-25)
+
+
+### Bug Fixes
+
+* **textlint-formatter:** define `TextLintFormatterOption` interface ([31146c7](https://github.com/textlint/textlint/commit/31146c7))
+* **textlint-formatter:** run all tests ([6d507c2](https://github.com/textlint/textlint/commit/6d507c2)), closes [#402](https://github.com/textlint/textlint/issues/402)
+
+
+### Documentation
+
+* **textlint-formatter:** Update API ([8f4901f](https://github.com/textlint/textlint/commit/8f4901f))
+
+
+### Features
+
+* **textlint-formatter:** add getFormatterList function ([25e1113](https://github.com/textlint/textlint/commit/25e1113))
+* **textlint-formatter:** add new option to cli ([30351a8](https://github.com/textlint/textlint/commit/30351a8))
+
+
+### BREAKING CHANGES
+
+* **textlint-formatter:** export `{ createFormatter }` instead of `{ default }`
+
+
+
+
+
+# [2.0.0](https://github.com/textlint/textlint/compare/textlint-formatter@2.0.0-next.1...textlint-formatter@2.0.0) (2017-12-18)
+
+
+
+
+**Note:** Version bump only for package textlint-formatter
+
+
+# [2.0.0-next.1](https://github.com/textlint/textlint/compare/textlint-formatter@2.0.0-next.0...textlint-formatter@2.0.0-next.1) (2017-12-18)
+
+
+
+
+**Note:** Version bump only for package textlint-formatter
+
+
+# 2.0.0-next.0 (2017-12-15)
+
+
+### Bug Fixes
+
+* **npm:** quick fix npm ([5b20137](https://github.com/textlint/textlint/commit/5b20137))
+* **npm:** resolve issue ([d214c1c](https://github.com/textlint/textlint/commit/d214c1c))
+* **options:** fix to use `color` ([9809df4](https://github.com/textlint/textlint/commit/9809df4))
+* **pretty-error:** fix `file:line:column` ([3bcb06c](https://github.com/textlint/textlint/commit/3bcb06c))
+* **pretty-error:** fix export function ([e0d568b](https://github.com/textlint/textlint/commit/e0d568b))
+* **pretty-error:** fix FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed ([dd6418d](https://github.com/textlint/textlint/commit/dd6418d))
+* **pretty-error:** fix position of column indicator ([d99b222](https://github.com/textlint/textlint/commit/d99b222))
+* **pretty-error:** remove empty line ([34fc250](https://github.com/textlint/textlint/commit/34fc250))
+* **stylish:** align table cells taking unicode chars into account ([e757c5b](https://github.com/textlint/textlint/commit/e757c5b))
+* **stylish:** narrow the width of error message when it has line breaks ([7c1aa0a](https://github.com/textlint/textlint/commit/7c1aa0a))
+* **test:** column number start with 1 ([a377817](https://github.com/textlint/textlint/commit/a377817))
+* **test:** fix pretty-errro test ([7e50453](https://github.com/textlint/textlint/commit/7e50453))
+* **textlint-formatter:** unignore lib/ ([#360](https://github.com/textlint/textlint/issues/360)) ([59488d8](https://github.com/textlint/textlint/commit/59488d8))
+
+
+### Features
+
+* **cli:** add cli for textlint-formatter ([8de0c97](https://github.com/textlint/textlint/commit/8de0c97))
+* **formatter:** add json formatter ([5642c83](https://github.com/textlint/textlint/commit/5642c83))
+* **formatter:** update formatter and add tests ([6f7778d](https://github.com/textlint/textlint/commit/6f7778d))
+* **lib:** allow to specify package name ([c9828bc](https://github.com/textlint/textlint/commit/c9828bc))
+* **preety-error:** add total output ([8a02c88](https://github.com/textlint/textlint/commit/8a02c88))
+* **pretty-error:** export prettyError ([c2726ac](https://github.com/textlint/textlint/commit/c2726ac))
+* **pretty-error:** support East Asian Width problem ([8b28994](https://github.com/textlint/textlint/commit/8b28994)), closes [#2](https://github.com/textlint/textlint/issues/2)
+* **pretty-error:** support no-color option ([614c1ea](https://github.com/textlint/textlint/commit/614c1ea))
+* **stylish:** add help to use fixer ([d0eadfc](https://github.com/textlint/textlint/commit/d0eadfc))
diff --git a/node_modules/@textlint/linter-formatter/LICENSE b/node_modules/@textlint/linter-formatter/LICENSE
new file mode 100644
index 000000000..74113e362
--- /dev/null
+++ b/node_modules/@textlint/linter-formatter/LICENSE
@@ -0,0 +1,25 @@
+Copyright (c) 2015 azu
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+Include:
+
+ ESLint
+ Copyright (c) 2013 Nicholas C. Zakas. All rights reserved.
+ https://github.com/eslint/eslint/blob/master/LICENSE
diff --git a/node_modules/@textlint/linter-formatter/README.md b/node_modules/@textlint/linter-formatter/README.md
new file mode 100644
index 000000000..6b479cbdb
--- /dev/null
+++ b/node_modules/@textlint/linter-formatter/README.md
@@ -0,0 +1,80 @@
+# @textlint/linter-formatter
+
+[textlint](https://github.com/textlint/textlint "textlint/textlint") output formatter.
+
+## Installation
+
+```
+npm install @textlint/linter-formatter
+```
+
+## Usage
+
+See [formatters/](src/formatters).
+
+Currently, you can use "stylish" (defaults), "checkstyle", "compact", "jslint-xml", "json", "junit", "pretty-error", "table", "tap", and "unix".
+
+```js
+const createFormatter = require("@textlint/linter-formatter").createFormatter;
+const formatter = createFormatter({
+ formatterName: "stylish"
+});
+const output = formatter([
+ {
+ filePath: "./README.md",
+ messages: [
+ {
+ ruleId: "semi",
+ line: 1,
+ column: 23,
+ message: "Expected a semicolon."
+ }
+ ]
+ }
+]);
+console.log(output);
+/*
+./README.md
+ 1:23 warning Expected a semicolon semi
+
+✖ 1 problem (0 errors, 1 warning)
+*/
+```
+
+
+## API
+
+```typescript
+export declare type FormatterConfig = {
+ color?: boolean;
+ formatterName: string;
+};
+export declare function createFormatter(formatterConfig: FormatterConfig): (results: TextlintResult[]) => string;
+export interface FormatterDetail {
+ name: string;
+}
+export declare function getFormatterList(): FormatterDetail[];
+```
+
+## CLI
+
+```
+$ textlint -f json README.md --rule no-todo | textlint-formatter -f pretty-error --stdin
+```
+
+## Other formatter
+
+- [azu/textlint-formatter-codecov: textlint formatter for codecov json.](https://github.com/azu/textlint-formatter-codecov)
+- [azu/textlint-formatter-lcov: textlint formatter for lcov format](https://github.com/azu/textlint-formatter-lcov)
+
+## Contributing
+
+1. Fork it!
+2. Create your feature branch: `git checkout -b my-new-feature`
+3. Commit your changes: `git commit -am 'Add some feature'`
+4. Push to the branch: `git push origin my-new-feature`
+5. Submit a pull request :D
+
+## License
+
+MIT
diff --git a/node_modules/@textlint/linter-formatter/module/FormatterOptions.d.ts b/node_modules/@textlint/linter-formatter/module/FormatterOptions.d.ts
new file mode 100644
index 000000000..f8df6564b
--- /dev/null
+++ b/node_modules/@textlint/linter-formatter/module/FormatterOptions.d.ts
@@ -0,0 +1,3 @@
+export interface FormatterOptions {
+ color?: boolean;
+}
diff --git a/node_modules/@textlint/linter-formatter/module/FormatterOptions.js b/node_modules/@textlint/linter-formatter/module/FormatterOptions.js
new file mode 100644
index 000000000..252dc289d
--- /dev/null
+++ b/node_modules/@textlint/linter-formatter/module/FormatterOptions.js
@@ -0,0 +1,2 @@
+export {};
+//# sourceMappingURL=FormatterOptions.js.map
\ No newline at end of file
diff --git a/node_modules/@textlint/linter-formatter/module/FormatterOptions.js.map b/node_modules/@textlint/linter-formatter/module/FormatterOptions.js.map
new file mode 100644
index 000000000..2ec06bf6f
--- /dev/null
+++ b/node_modules/@textlint/linter-formatter/module/FormatterOptions.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"FormatterOptions.js","sourceRoot":"","sources":["../src/FormatterOptions.ts"],"names":[],"mappings":""}
\ No newline at end of file
diff --git a/node_modules/@textlint/linter-formatter/module/cli.d.ts b/node_modules/@textlint/linter-formatter/module/cli.d.ts
new file mode 100644
index 000000000..cb0ff5c3b
--- /dev/null
+++ b/node_modules/@textlint/linter-formatter/module/cli.d.ts
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/@textlint/linter-formatter/module/cli.js b/node_modules/@textlint/linter-formatter/module/cli.js
new file mode 100644
index 000000000..92a3de9b3
--- /dev/null
+++ b/node_modules/@textlint/linter-formatter/module/cli.js
@@ -0,0 +1,74 @@
+// LICENSE : MIT
+"use strict";
+import * as fs from "fs";
+import { createFormatter, getFormatterList } from "./index";
+module.exports = function run(argv, text) {
+ return new Promise(function (resolve) {
+ var format;
+ var optionator = require("optionator")({
+ prepend: "Usage: textlint-formatter [options]",
+ options: [
+ {
+ option: "help",
+ alias: "h",
+ type: "Boolean",
+ description: "displays help"
+ },
+ {
+ option: "formatter",
+ alias: "f",
+ type: "String",
+ description: "formatter name",
+ example: "textlint -f json README.md | textlint-formatter -f pretty-error"
+ },
+ {
+ option: "list",
+ alias: "l",
+ type: "Boolean",
+ description: "print available formatters"
+ },
+ {
+ option: "stdin",
+ type: "Boolean",
+ default: "false",
+ description: "Format text provided on ."
+ }
+ ]
+ });
+ var options = optionator.parseArgv(argv);
+ var files = options._;
+ if (options.list) {
+ return resolve("Available formatters:\n" +
+ getFormatterList()
+ .map(function (formatter) {
+ return "- " + formatter.name;
+ })
+ .join("\n"));
+ }
+ if (options.help || (!files.length && !text)) {
+ return resolve(optionator.generateHelp());
+ }
+ var content = text ? text : fs.readFileSync(files[0], "utf-8");
+ var jsonContent;
+ try {
+ jsonContent = JSON.parse(content);
+ }
+ catch (error) {
+ return new Error("Content should be json. " + error.message);
+ }
+ if (options.formatter) {
+ format = createFormatter({
+ formatterName: options.formatter
+ });
+ return resolve(format(jsonContent));
+ }
+ else {
+ // default: use stylish
+ format = createFormatter({
+ formatterName: "stylish"
+ });
+ return resolve(format(jsonContent));
+ }
+ });
+};
+//# sourceMappingURL=cli.js.map
\ No newline at end of file
diff --git a/node_modules/@textlint/linter-formatter/module/cli.js.map b/node_modules/@textlint/linter-formatter/module/cli.js.map
new file mode 100644
index 000000000..89000b103
--- /dev/null
+++ b/node_modules/@textlint/linter-formatter/module/cli.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAChB,YAAY,CAAC;AACb,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE5D,MAAM,CAAC,OAAO,GAAG,SAAS,GAAG,CAAC,IAAc,EAAE,IAAY;IACtD,OAAO,IAAI,OAAO,CAAC,UAAU,OAAO;QAChC,IAAI,MAAM,CAAC;QACX,IAAM,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;YACrC,OAAO,EAAE,qCAAqC;YAC9C,OAAO,EAAE;gBACL;oBACI,MAAM,EAAE,MAAM;oBACd,KAAK,EAAE,GAAG;oBACV,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,eAAe;iBAC/B;gBACD;oBACI,MAAM,EAAE,WAAW;oBACnB,KAAK,EAAE,GAAG;oBACV,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,gBAAgB;oBAC7B,OAAO,EAAE,iEAAiE;iBAC7E;gBACD;oBACI,MAAM,EAAE,MAAM;oBACd,KAAK,EAAE,GAAG;oBACV,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,4BAA4B;iBAC5C;gBACD;oBACI,MAAM,EAAE,OAAO;oBACf,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,OAAO;oBAChB,WAAW,EAAE,kCAAkC;iBAClD;aACJ;SACJ,CAAC,CAAC;QACH,IAAM,OAAO,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC;QACxB,IAAI,OAAO,CAAC,IAAI,EAAE;YACd,OAAO,OAAO,CACV,yBAAyB;gBACrB,gBAAgB,EAAE;qBACb,GAAG,CAAC,UAAC,SAA2B;oBAC7B,OAAO,OAAK,SAAS,CAAC,IAAM,CAAC;gBACjC,CAAC,CAAC;qBACD,IAAI,CAAC,IAAI,CAAC,CACtB,CAAC;SACL;QACD,IAAI,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE;YAC1C,OAAO,OAAO,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC,CAAC;SAC7C;QACD,IAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QACjE,IAAI,WAAW,CAAC;QAChB,IAAI;YACA,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;SACrC;QAAC,OAAO,KAAK,EAAE;YACZ,OAAO,IAAI,KAAK,CAAC,0BAA0B,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;SAChE;QACD,IAAI,OAAO,CAAC,SAAS,EAAE;YACnB,MAAM,GAAG,eAAe,CAAC;gBACrB,aAAa,EAAE,OAAO,CAAC,SAAS;aACnC,CAAC,CAAC;YACH,OAAO,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;SACvC;aAAM;YACH,uBAAuB;YACvB,MAAM,GAAG,eAAe,CAAC;gBACrB,aAAa,EAAE,SAAS;aAC3B,CAAC,CAAC;YACH,OAAO,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;SACvC;IACL,CAAC,CAAC,CAAC;AACP,CAAC,CAAC"}
\ No newline at end of file
diff --git a/node_modules/@textlint/linter-formatter/module/formatters/checkstyle.d.ts b/node_modules/@textlint/linter-formatter/module/formatters/checkstyle.d.ts
new file mode 100644
index 000000000..fe2d8e987
--- /dev/null
+++ b/node_modules/@textlint/linter-formatter/module/formatters/checkstyle.d.ts
@@ -0,0 +1,7 @@
+/**
+ * @fileoverview CheckStyle XML reporter
+ * @author Ian Christian Myers
+ */
+import type { TextlintResult } from "@textlint/types";
+declare function formatter(results: TextlintResult[]): string;
+export default formatter;
diff --git a/node_modules/@textlint/linter-formatter/module/formatters/checkstyle.js b/node_modules/@textlint/linter-formatter/module/formatters/checkstyle.js
new file mode 100644
index 000000000..bf73b1f91
--- /dev/null
+++ b/node_modules/@textlint/linter-formatter/module/formatters/checkstyle.js
@@ -0,0 +1,82 @@
+/**
+ * @fileoverview CheckStyle XML reporter
+ * @author Ian Christian Myers
+ */
+"use strict";
+//------------------------------------------------------------------------------
+// Helper Functions
+//------------------------------------------------------------------------------
+/**
+ * Returns the severity of warning or error
+ * @param {object} message message object to examine
+ * @returns {string} severity level
+ * @private
+ */
+function getMessageType(message) {
+ if (message.fatal || message.severity === 2) {
+ return "error";
+ }
+ else {
+ return "warning";
+ }
+}
+/**
+ * Returns the escaped value for a character
+ * @param {string} s string to examine
+ * @returns {string} severity level
+ * @private
+ */
+function xmlEscape(s) {
+ return ("" + s).replace(/[<>&"']/g, function (c) {
+ switch (c) {
+ case "<":
+ return "<";
+ case ">":
+ return ">";
+ case "&":
+ return "&";
+ case '"':
+ return """;
+ case "'":
+ return "'";
+ default:
+ throw new Error("unreachable");
+ }
+ });
+}
+//------------------------------------------------------------------------------
+// Public Interface
+//------------------------------------------------------------------------------
+function formatter(results) {
+ var output = "";
+ output += '';
+ output += '';
+ results.forEach(function (result) {
+ var messages = result.messages;
+ output += '';
+ messages.forEach(function (message) {
+ output +=
+ '';
+ });
+ output += "";
+ });
+ output += "";
+ return output;
+}
+export default formatter;
+//# sourceMappingURL=checkstyle.js.map
\ No newline at end of file
diff --git a/node_modules/@textlint/linter-formatter/module/formatters/checkstyle.js.map b/node_modules/@textlint/linter-formatter/module/formatters/checkstyle.js.map
new file mode 100644
index 000000000..a99364469
--- /dev/null
+++ b/node_modules/@textlint/linter-formatter/module/formatters/checkstyle.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"checkstyle.js","sourceRoot":"","sources":["../../src/formatters/checkstyle.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,YAAY,CAAC;AAGb,gFAAgF;AAChF,mBAAmB;AACnB,gFAAgF;AAEhF;;;;;GAKG;AACH,SAAS,cAAc,CAAC,OAAY;IAChC,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,QAAQ,KAAK,CAAC,EAAE;QACzC,OAAO,OAAO,CAAC;KAClB;SAAM;QACH,OAAO,SAAS,CAAC;KACpB;AACL,CAAC;AAED;;;;;GAKG;AACH,SAAS,SAAS,CAAC,CAAM;IACrB,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,UAAU,CAAC;QAC3C,QAAQ,CAAC,EAAE;YACP,KAAK,GAAG;gBACJ,OAAO,MAAM,CAAC;YAClB,KAAK,GAAG;gBACJ,OAAO,MAAM,CAAC;YAClB,KAAK,GAAG;gBACJ,OAAO,OAAO,CAAC;YACnB,KAAK,GAAG;gBACJ,OAAO,QAAQ,CAAC;YACpB,KAAK,GAAG;gBACJ,OAAO,QAAQ,CAAC;YACpB;gBACI,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;SACtC;IACL,CAAC,CAAC,CAAC;AACP,CAAC;AAED,gFAAgF;AAChF,mBAAmB;AACnB,gFAAgF;AAEhF,SAAS,SAAS,CAAC,OAAyB;IACxC,IAAI,MAAM,GAAG,EAAE,CAAC;IAEhB,MAAM,IAAI,wCAAwC,CAAC;IACnD,MAAM,IAAI,4BAA4B,CAAC;IAEvC,OAAO,CAAC,OAAO,CAAC,UAAU,MAAM;QAC5B,IAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAEjC,MAAM,IAAI,cAAc,GAAG,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;QAE7D,QAAQ,CAAC,OAAO,CAAC,UAAU,OAAO;YAC9B,MAAM;gBACF,eAAe;oBACf,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC;oBACvB,IAAI;oBACJ,UAAU;oBACV,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC;oBACzB,IAAI;oBACJ,YAAY;oBACZ,SAAS,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;oBAClC,IAAI;oBACJ,WAAW;oBACX,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC;oBAC1B,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC9D,IAAI;oBACJ,UAAU;oBACV,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBACnE,MAAM,CAAC;QACf,CAAC,CAAC,CAAC;QAEH,MAAM,IAAI,SAAS,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,MAAM,IAAI,eAAe,CAAC;IAE1B,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,eAAe,SAAS,CAAC"}
\ No newline at end of file
diff --git a/node_modules/@textlint/linter-formatter/module/formatters/compact.d.ts b/node_modules/@textlint/linter-formatter/module/formatters/compact.d.ts
new file mode 100644
index 000000000..12de1e08f
--- /dev/null
+++ b/node_modules/@textlint/linter-formatter/module/formatters/compact.d.ts
@@ -0,0 +1,7 @@
+/**
+ * @fileoverview Compact reporter
+ * @author Nicholas C. Zakas
+ */
+import type { TextlintResult } from "@textlint/types";
+declare function formatter(results: TextlintResult[]): string;
+export default formatter;
diff --git a/node_modules/@textlint/linter-formatter/module/formatters/compact.js b/node_modules/@textlint/linter-formatter/module/formatters/compact.js
new file mode 100644
index 000000000..77b9dea51
--- /dev/null
+++ b/node_modules/@textlint/linter-formatter/module/formatters/compact.js
@@ -0,0 +1,41 @@
+/**
+ * @fileoverview Compact reporter
+ * @author Nicholas C. Zakas
+ */
+"use strict";
+//------------------------------------------------------------------------------
+// Helper Functions
+//------------------------------------------------------------------------------
+function getMessageType(message) {
+ if (message.fatal || message.severity === 2) {
+ return "Error";
+ }
+ else {
+ return "Warning";
+ }
+}
+//------------------------------------------------------------------------------
+// Public Interface
+//------------------------------------------------------------------------------
+function formatter(results) {
+ var output = "", total = 0;
+ results.forEach(function (result) {
+ var messages = result.messages;
+ total += messages.length;
+ messages.forEach(function (message) {
+ output += result.filePath + ": ";
+ output += "line " + (message.line || 0);
+ output += ", col " + (message.column || 0);
+ output += ", " + getMessageType(message);
+ output += " - " + message.message;
+ output += message.ruleId ? " (" + message.ruleId + ")" : "";
+ output += "\n";
+ });
+ });
+ if (total > 0) {
+ output += "\n" + total + " problem" + (total !== 1 ? "s" : "");
+ }
+ return output;
+}
+export default formatter;
+//# sourceMappingURL=compact.js.map
\ No newline at end of file
diff --git a/node_modules/@textlint/linter-formatter/module/formatters/compact.js.map b/node_modules/@textlint/linter-formatter/module/formatters/compact.js.map
new file mode 100644
index 000000000..1b3d10715
--- /dev/null
+++ b/node_modules/@textlint/linter-formatter/module/formatters/compact.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"compact.js","sourceRoot":"","sources":["../../src/formatters/compact.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,YAAY,CAAC;AAGb,gFAAgF;AAChF,mBAAmB;AACnB,gFAAgF;AAEhF,SAAS,cAAc,CAAC,OAAY;IAChC,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,QAAQ,KAAK,CAAC,EAAE;QACzC,OAAO,OAAO,CAAC;KAClB;SAAM;QACH,OAAO,SAAS,CAAC;KACpB;AACL,CAAC;AAED,gFAAgF;AAChF,mBAAmB;AACnB,gFAAgF;AAEhF,SAAS,SAAS,CAAC,OAAyB;IACxC,IAAI,MAAM,GAAG,EAAE,EACX,KAAK,GAAG,CAAC,CAAC;IAEd,OAAO,CAAC,OAAO,CAAC,UAAU,MAAM;QAC5B,IAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QACjC,KAAK,IAAI,QAAQ,CAAC,MAAM,CAAC;QAEzB,QAAQ,CAAC,OAAO,CAAC,UAAU,OAAO;YAC9B,MAAM,IAAI,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;YACjC,MAAM,IAAI,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;YACxC,MAAM,IAAI,QAAQ,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;YAC3C,MAAM,IAAI,IAAI,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;YACzC,MAAM,IAAI,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC;YAClC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5D,MAAM,IAAI,IAAI,CAAC;QACnB,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,IAAI,KAAK,GAAG,CAAC,EAAE;QACX,MAAM,IAAI,IAAI,GAAG,KAAK,GAAG,UAAU,GAAG,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;KAClE;IAED,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,eAAe,SAAS,CAAC"}
\ No newline at end of file
diff --git a/node_modules/@textlint/linter-formatter/module/formatters/jslint-xml.d.ts b/node_modules/@textlint/linter-formatter/module/formatters/jslint-xml.d.ts
new file mode 100644
index 000000000..53a8aed5e
--- /dev/null
+++ b/node_modules/@textlint/linter-formatter/module/formatters/jslint-xml.d.ts
@@ -0,0 +1,3 @@
+import type { TextlintResult } from "@textlint/types";
+declare function formatter(results: TextlintResult[]): string;
+export default formatter;
diff --git a/node_modules/@textlint/linter-formatter/module/formatters/jslint-xml.js b/node_modules/@textlint/linter-formatter/module/formatters/jslint-xml.js
new file mode 100644
index 000000000..5fadb7afc
--- /dev/null
+++ b/node_modules/@textlint/linter-formatter/module/formatters/jslint-xml.js
@@ -0,0 +1,39 @@
+/**
+ * @fileoverview JSLint XML reporter
+ * @author Ian Christian Myers
+ */
+"use strict";
+var lodash = require("lodash");
+//------------------------------------------------------------------------------
+// Public Interface
+//------------------------------------------------------------------------------
+function formatter(results) {
+ var output = "";
+ output += '';
+ output += "";
+ results.forEach(function (result) {
+ var messages = result.messages;
+ output += '';
+ messages.forEach(function (message) {
+ output +=
+ '';
+ });
+ output += "";
+ });
+ output += "";
+ return output;
+}
+export default formatter;
+//# sourceMappingURL=jslint-xml.js.map
\ No newline at end of file
diff --git a/node_modules/@textlint/linter-formatter/module/formatters/jslint-xml.js.map b/node_modules/@textlint/linter-formatter/module/formatters/jslint-xml.js.map
new file mode 100644
index 000000000..16079a7a8
--- /dev/null
+++ b/node_modules/@textlint/linter-formatter/module/formatters/jslint-xml.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"jslint-xml.js","sourceRoot":"","sources":["../../src/formatters/jslint-xml.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,YAAY,CAAC;AAIb,IAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AAEjC,gFAAgF;AAChF,mBAAmB;AACnB,gFAAgF;AAEhF,SAAS,SAAS,CAAC,OAAyB;IACxC,IAAI,MAAM,GAAG,EAAE,CAAC;IAEhB,MAAM,IAAI,wCAAwC,CAAC;IACnD,MAAM,IAAI,UAAU,CAAC;IAErB,OAAO,CAAC,OAAO,CAAC,UAAU,MAAM;QAC5B,IAAI,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAE/B,MAAM,IAAI,cAAc,GAAG,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;QAElD,QAAQ,CAAC,OAAO,CAAC,UAAU,OAAO;YAC9B,MAAM;gBACF,eAAe;oBACf,OAAO,CAAC,IAAI;oBACZ,IAAI;oBACJ,QAAQ;oBACR,OAAO,CAAC,MAAM;oBACd,IAAI;oBACJ,wCAAwC;oBACxC,uDAAuD;oBACvD,cAAc;oBACd,UAAU;oBACV,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;oBACpC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;oBACnD,MAAM,CAAC;QACf,CAAC,CAAC,CAAC;QAEH,MAAM,IAAI,SAAS,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,MAAM,IAAI,WAAW,CAAC;IAEtB,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,eAAe,SAAS,CAAC"}
\ No newline at end of file
diff --git a/node_modules/@textlint/linter-formatter/module/formatters/json.d.ts b/node_modules/@textlint/linter-formatter/module/formatters/json.d.ts
new file mode 100644
index 000000000..53a8aed5e
--- /dev/null
+++ b/node_modules/@textlint/linter-formatter/module/formatters/json.d.ts
@@ -0,0 +1,3 @@
+import type { TextlintResult } from "@textlint/types";
+declare function formatter(results: TextlintResult[]): string;
+export default formatter;
diff --git a/node_modules/@textlint/linter-formatter/module/formatters/json.js b/node_modules/@textlint/linter-formatter/module/formatters/json.js
new file mode 100644
index 000000000..c8d003005
--- /dev/null
+++ b/node_modules/@textlint/linter-formatter/module/formatters/json.js
@@ -0,0 +1,7 @@
+// LICENSE : MIT
+"use strict";
+function formatter(results) {
+ return JSON.stringify(results);
+}
+export default formatter;
+//# sourceMappingURL=json.js.map
\ No newline at end of file
diff --git a/node_modules/@textlint/linter-formatter/module/formatters/json.js.map b/node_modules/@textlint/linter-formatter/module/formatters/json.js.map
new file mode 100644
index 000000000..2111c04ec
--- /dev/null
+++ b/node_modules/@textlint/linter-formatter/module/formatters/json.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"json.js","sourceRoot":"","sources":["../../src/formatters/json.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAChB,YAAY,CAAC;AAGb,SAAS,SAAS,CAAC,OAAyB;IACxC,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AACnC,CAAC;AAED,eAAe,SAAS,CAAC"}
\ No newline at end of file
diff --git a/node_modules/@textlint/linter-formatter/module/formatters/junit.d.ts b/node_modules/@textlint/linter-formatter/module/formatters/junit.d.ts
new file mode 100644
index 000000000..53a8aed5e
--- /dev/null
+++ b/node_modules/@textlint/linter-formatter/module/formatters/junit.d.ts
@@ -0,0 +1,3 @@
+import type { TextlintResult } from "@textlint/types";
+declare function formatter(results: TextlintResult[]): string;
+export default formatter;
diff --git a/node_modules/@textlint/linter-formatter/module/formatters/junit.js b/node_modules/@textlint/linter-formatter/module/formatters/junit.js
new file mode 100644
index 000000000..34aea737b
--- /dev/null
+++ b/node_modules/@textlint/linter-formatter/module/formatters/junit.js
@@ -0,0 +1,58 @@
+/**
+ * @fileoverview jUnit Reporter
+ * @author Jamund Ferguson
+ */
+"use strict";
+var lodash = require("lodash");
+//------------------------------------------------------------------------------
+// Helper Functions
+//------------------------------------------------------------------------------
+function getMessageType(message) {
+ if (message.fatal || message.severity === 2) {
+ return "Error";
+ }
+ else {
+ return "Warning";
+ }
+}
+//------------------------------------------------------------------------------
+// Public Interface
+//------------------------------------------------------------------------------
+function formatter(results) {
+ var output = "";
+ output += '\n';
+ output += "\n";
+ results.forEach(function (result) {
+ var messages = result.messages;
+ if (messages.length) {
+ output +=
+ '\n';
+ }
+ messages.forEach(function (message) {
+ var type = message.fatal ? "error" : "failure";
+ output += '';
+ output += "<" + type + ' message="' + lodash.escape(message.message || "") + '">';
+ output += "";
+ output += "" + type + ">";
+ output += "\n";
+ });
+ if (messages.length) {
+ output += "\n";
+ }
+ });
+ output += "\n";
+ return output;
+}
+export default formatter;
+//# sourceMappingURL=junit.js.map
\ No newline at end of file
diff --git a/node_modules/@textlint/linter-formatter/module/formatters/junit.js.map b/node_modules/@textlint/linter-formatter/module/formatters/junit.js.map
new file mode 100644
index 000000000..c84cdb490
--- /dev/null
+++ b/node_modules/@textlint/linter-formatter/module/formatters/junit.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"junit.js","sourceRoot":"","sources":["../../src/formatters/junit.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,YAAY,CAAC;AAGb,IAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AAEjC,gFAAgF;AAChF,mBAAmB;AACnB,gFAAgF;AAEhF,SAAS,cAAc,CAAC,OAAY;IAChC,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,QAAQ,KAAK,CAAC,EAAE;QACzC,OAAO,OAAO,CAAC;KAClB;SAAM;QACH,OAAO,SAAS,CAAC;KACpB;AACL,CAAC;AAED,gFAAgF;AAChF,mBAAmB;AACnB,gFAAgF;AAEhF,SAAS,SAAS,CAAC,OAAyB;IACxC,IAAI,MAAM,GAAG,EAAE,CAAC;IAEhB,MAAM,IAAI,0CAA0C,CAAC;IACrD,MAAM,IAAI,gBAAgB,CAAC;IAE3B,OAAO,CAAC,OAAO,CAAC,UAAU,MAAM;QAC5B,IAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAEjC,IAAI,QAAQ,CAAC,MAAM,EAAE;YACjB,MAAM;gBACF,kDAAkD;oBAClD,QAAQ,CAAC,MAAM;oBACf,YAAY;oBACZ,QAAQ,CAAC,MAAM;oBACf,UAAU;oBACV,MAAM,CAAC,QAAQ;oBACf,MAAM,CAAC;SACd;QAED,QAAQ,CAAC,OAAO,CAAC,UAAU,OAAO;YAC9B,IAAM,IAAI,GAAI,OAAe,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;YAC1D,MAAM,IAAI,sCAAsC,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,SAAS,CAAC,GAAG,IAAI,CAAC;YACxF,MAAM,IAAI,GAAG,GAAG,IAAI,GAAG,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;YAClF,MAAM,IAAI,WAAW,CAAC;YACtB,MAAM,IAAI,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,QAAQ,CAAC;YACnD,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,IAAI,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;YACjE,MAAM,IAAI,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;YACvD,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5D,MAAM,IAAI,KAAK,CAAC;YAChB,MAAM,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,CAAC;YAC5B,MAAM,IAAI,eAAe,CAAC;QAC9B,CAAC,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,MAAM,EAAE;YACjB,MAAM,IAAI,gBAAgB,CAAC;SAC9B;IACL,CAAC,CAAC,CAAC;IAEH,MAAM,IAAI,iBAAiB,CAAC;IAE5B,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,eAAe,SAAS,CAAC"}
\ No newline at end of file
diff --git a/node_modules/@textlint/linter-formatter/module/formatters/pretty-error.d.ts b/node_modules/@textlint/linter-formatter/module/formatters/pretty-error.d.ts
new file mode 100644
index 000000000..acd2bf50d
--- /dev/null
+++ b/node_modules/@textlint/linter-formatter/module/formatters/pretty-error.d.ts
@@ -0,0 +1,19 @@
+import type { TextlintMessage, TextlintResult } from "@textlint/types";
+import { FormatterOptions } from "../FormatterOptions";
+/**
+ *
+ * @param {string} code
+ * @param {string} filePath
+ * @param {TextLintMessage} message
+ * @returns {*}
+ */
+declare function prettyError(code: string, filePath: string, message: TextlintMessage): any;
+/**
+ *
+ * @param {TextLintResult[]} results
+ * @param {TextLintFormatterOption} options
+ * @returns {string}
+ */
+declare function formatter(results: TextlintResult[], options: FormatterOptions): any;
+export default formatter;
+export { prettyError };
diff --git a/node_modules/@textlint/linter-formatter/module/formatters/pretty-error.js b/node_modules/@textlint/linter-formatter/module/formatters/pretty-error.js
new file mode 100644
index 000000000..ed847fde4
--- /dev/null
+++ b/node_modules/@textlint/linter-formatter/module/formatters/pretty-error.js
@@ -0,0 +1,162 @@
+// LICENSE : MIT
+// Original code is https://github.com/azer/prettify-error
+// Author : azer
+"use strict";
+var format = require("@azu/format-text");
+var chalk = require("chalk");
+var style = require("@azu/style-format");
+var stripAnsi = require("strip-ansi");
+var pluralize = require("pluralize");
+// width is 2
+var widthOfString = require("string-width");
+// color set
+var summaryColor = "yellow";
+var greenColor = "green";
+var template = style("{grey}{ruleId}: {red}{title}{reset}\n" +
+ "{grey}{filename}{reset}\n" +
+ " {red}{paddingForLineNo} {v}{reset}\n" +
+ " {grey}{previousLineNo}. {previousLine}{reset}\n" +
+ " {reset}{failingLineNo}. {failingLine}{reset}\n" +
+ " {grey}{nextLineNo}. {nextLine}{reset}\n" +
+ " {red}{paddingForLineNo} {^}{reset}\n" +
+ "");
+/**
+ *
+ * @param {string} code
+ * @param {TextLintMessage} message
+ * @returns {*}
+ */
+function failingCode(code, message) {
+ var result = [];
+ var lines = code.split("\n");
+ var i = message.line - 3;
+ while (++i < message.line + 1) {
+ if (i + 1 !== message.line) {
+ result.push({
+ line: message.line - (message.line - i - 1),
+ code: lines[i]
+ });
+ continue;
+ }
+ result.push({
+ line: message.line,
+ col: message.column,
+ code: lines[i],
+ failed: true
+ });
+ }
+ return result;
+}
+function showColumn(codes, ch) {
+ var result = "";
+ var codeObject = codes[1];
+ var sliced = codeObject.code.slice(0, codeObject.col);
+ var width = widthOfString(sliced);
+ if (width <= 0) {
+ return "";
+ }
+ var i = width - 1;
+ while (i--) {
+ result += " ";
+ }
+ return result + ch;
+}
+/**
+ *
+ * @param {string} code
+ * @param {string} filePath
+ * @param {TextLintMessage} message
+ * @returns {*}
+ */
+function prettyError(code, filePath, message) {
+ if (!code) {
+ return;
+ }
+ var parsed = failingCode(code, message);
+ var previousLineNo = String(parsed[0].line);
+ var failingLineNo = String(parsed[1].line);
+ var nextLineNo = String(parsed[2].line);
+ var linumlen = Math.max(previousLineNo.length, failingLineNo.length, nextLineNo.length);
+ return format(template, {
+ ruleId: message.ruleId,
+ title: message.message,
+ filename: filePath + ":" + message.line + ":" + message.column,
+ previousLine: parsed[0].code ? parsed[0].code : "",
+ previousLineNo: previousLineNo.padStart(linumlen),
+ previousColNo: parsed[0].col,
+ failingLine: parsed[1].code,
+ failingLineNo: failingLineNo.padStart(linumlen),
+ failingColNo: parsed[1].col,
+ nextLine: parsed[2].code ? parsed[2].code : "",
+ nextLineNo: nextLineNo.padStart(linumlen),
+ nextColNo: parsed[2].col,
+ paddingForLineNo: "".padStart(linumlen),
+ "^": showColumn(parsed, "^"),
+ v: showColumn(parsed, "v")
+ });
+}
+/**
+ *
+ * @param {TextLintResult[]} results
+ * @param {TextLintFormatterOption} options
+ * @returns {string}
+ */
+function formatter(results, options) {
+ // default: true
+ var useColor = options.color !== undefined ? options.color : true;
+ var output = "";
+ var total = 0;
+ var errors = 0;
+ var warnings = 0;
+ var totalFixable = 0;
+ results.forEach(function (result) {
+ var code = require("fs").readFileSync(result.filePath, "utf-8");
+ var messages = result.messages;
+ if (messages.length === 0) {
+ return;
+ }
+ total += messages.length;
+ messages.forEach(function (message) {
+ // fixable
+ var fixableIcon = message.fix ? chalk[greenColor].bold("\u2713 ") : "";
+ if (message.fix) {
+ totalFixable++;
+ }
+ if (message.fatal || message.severity === 2) {
+ errors++;
+ }
+ else {
+ warnings++;
+ }
+ var r = fixableIcon + prettyError(code, result.filePath, message);
+ if (r) {
+ output += r + "\n";
+ }
+ });
+ });
+ if (total > 0) {
+ output += chalk[summaryColor].bold([
+ "\u2716 ",
+ total,
+ pluralize(" problem", total),
+ " (",
+ errors,
+ pluralize(" error", errors),
+ ", ",
+ warnings,
+ pluralize(" warning", warnings),
+ ")\n"
+ ].join(""));
+ }
+ if (totalFixable > 0) {
+ output += chalk[greenColor].bold("✓ " + totalFixable + " fixable " + pluralize("problem", totalFixable) + ".\n");
+ output += "Try to run: $ " + chalk.underline("textlint --fix [file]") + "\n";
+ }
+ if (!useColor) {
+ return stripAnsi(output);
+ }
+ return output;
+}
+export default formatter;
+export { prettyError };
+//# sourceMappingURL=pretty-error.js.map
\ No newline at end of file
diff --git a/node_modules/@textlint/linter-formatter/module/formatters/pretty-error.js.map b/node_modules/@textlint/linter-formatter/module/formatters/pretty-error.js.map
new file mode 100644
index 000000000..181776073
--- /dev/null
+++ b/node_modules/@textlint/linter-formatter/module/formatters/pretty-error.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"pretty-error.js","sourceRoot":"","sources":["../../src/formatters/pretty-error.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/@textlint/linter-formatter/module/formatters/stylish.d.ts b/node_modules/@textlint/linter-formatter/module/formatters/stylish.d.ts
new file mode 100644
index 000000000..b5681bc63
--- /dev/null
+++ b/node_modules/@textlint/linter-formatter/module/formatters/stylish.d.ts
@@ -0,0 +1,8 @@
+/**
+ * @fileoverview Stylish reporter
+ * @author Sindre Sorhus
+ */
+import type { TextlintResult } from "@textlint/types";
+import { FormatterOptions } from "../FormatterOptions";
+declare function formatter(results: TextlintResult[], options: FormatterOptions): any;
+export default formatter;
diff --git a/node_modules/@textlint/linter-formatter/module/formatters/stylish.js b/node_modules/@textlint/linter-formatter/module/formatters/stylish.js
new file mode 100644
index 000000000..ea9824bb7
--- /dev/null
+++ b/node_modules/@textlint/linter-formatter/module/formatters/stylish.js
@@ -0,0 +1,109 @@
+/**
+ * @fileoverview Stylish reporter
+ * @author Sindre Sorhus
+ */
+"use strict";
+var chalk = require("chalk");
+var table = require("text-table");
+var widthOfString = require("string-width");
+var stripAnsi = require("strip-ansi");
+//------------------------------------------------------------------------------
+// Helpers
+//------------------------------------------------------------------------------
+/**
+ * Given a word and a count, append an s if count is not one.
+ * @param {string} word A word in its singular form.
+ * @param {int} count A number controlling whether word should be pluralized.
+ * @returns {string} The original word with an s on the end if count is not one.
+ */
+function pluralize(word, count) {
+ return count === 1 ? word : word + "s";
+}
+//------------------------------------------------------------------------------
+// Public Interface
+//------------------------------------------------------------------------------
+function formatter(results, options) {
+ // default: true
+ var useColor = options.color !== undefined ? options.color : true;
+ var output = "\n";
+ var total = 0;
+ var totalFixable = 0;
+ var errors = 0;
+ var warnings = 0;
+ var summaryColor = "yellow";
+ var greenColor = "green";
+ results.forEach(function (result) {
+ var messages = result.messages;
+ if (messages.length === 0) {
+ return;
+ }
+ total += messages.length;
+ output += chalk.underline(result.filePath) + "\n";
+ output +=
+ table(messages.map(function (message) {
+ var messageType;
+ // fixable
+ var fixableIcon = message.fix ? chalk[greenColor].bold("\u2713 ") : "";
+ if (message.fix) {
+ totalFixable++;
+ }
+ if (message.fatal || message.severity === 2) {
+ messageType = fixableIcon + chalk.red("error");
+ summaryColor = "red";
+ errors++;
+ }
+ else {
+ messageType = fixableIcon + chalk.yellow("warning");
+ warnings++;
+ }
+ return [
+ "",
+ message.line || 0,
+ message.column || 0,
+ messageType,
+ message.message.replace(/\.$/, ""),
+ chalk.gray(message.ruleId || "")
+ ];
+ }), {
+ align: ["", "r", "l"],
+ stringLength: function (str) {
+ var lines = chalk.stripColor(str).split("\n");
+ return Math.max.apply(null, lines.map(function (line) {
+ return widthOfString(line);
+ }));
+ }
+ })
+ .split("\n")
+ .map(function (el) {
+ return el.replace(/(\d+)\s+(\d+)/, function (_, p1, p2) {
+ return chalk.gray(p1 + ":" + p2);
+ });
+ })
+ .join("\n") + "\n\n";
+ });
+ if (total > 0) {
+ output += chalk[summaryColor].bold([
+ "\u2716 ",
+ total,
+ pluralize(" problem", total),
+ " (",
+ errors,
+ pluralize(" error", errors),
+ ", ",
+ warnings,
+ pluralize(" warning", warnings),
+ ")\n"
+ ].join(""));
+ }
+ if (totalFixable > 0) {
+ output += chalk[greenColor].bold("✓ " + totalFixable + " fixable " + pluralize("problem", totalFixable) + ".\n");
+ output += "Try to run: $ " + chalk.underline("textlint --fix [file]") + "\n";
+ }
+ var finalOutput = total > 0 ? output : "";
+ if (!useColor) {
+ return stripAnsi(finalOutput);
+ }
+ return finalOutput;
+}
+export default formatter;
+//# sourceMappingURL=stylish.js.map
\ No newline at end of file
diff --git a/node_modules/@textlint/linter-formatter/module/formatters/stylish.js.map b/node_modules/@textlint/linter-formatter/module/formatters/stylish.js.map
new file mode 100644
index 000000000..da89f1acf
--- /dev/null
+++ b/node_modules/@textlint/linter-formatter/module/formatters/stylish.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"stylish.js","sourceRoot":"","sources":["../../src/formatters/stylish.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,YAAY,CAAC;AAIb,IAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAC/B,IAAM,KAAK,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;AACpC,IAAM,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;AAC9C,IAAM,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;AACxC,gFAAgF;AAChF,UAAU;AACV,gFAAgF;AAEhF;;;;;GAKG;AACH,SAAS,SAAS,CAAC,IAAY,EAAE,KAAa;IAC1C,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC;AAC3C,CAAC;AAED,gFAAgF;AAChF,mBAAmB;AACnB,gFAAgF;AAEhF,SAAS,SAAS,CAAC,OAAyB,EAAE,OAAyB;IACnE,gBAAgB;IAChB,IAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IAEpE,IAAI,MAAM,GAAG,IAAI,CAAC;IAClB,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,YAAY,GAAG,QAAQ,CAAC;IAC5B,IAAI,UAAU,GAAG,OAAO,CAAC;IAEzB,OAAO,CAAC,OAAO,CAAC,UAAU,MAAM;QAC5B,IAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAEjC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;YACvB,OAAO;SACV;QAED,KAAK,IAAI,QAAQ,CAAC,MAAM,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;QAElD,MAAM;YACF,KAAK,CACD,QAAQ,CAAC,GAAG,CAAC,UAAU,OAAO;gBAC1B,IAAI,WAAW,CAAC;gBAChB,UAAU;gBACV,IAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACzE,IAAI,OAAO,CAAC,GAAG,EAAE;oBACb,YAAY,EAAE,CAAC;iBAClB;gBACD,IAAK,OAAe,CAAC,KAAK,IAAI,OAAO,CAAC,QAAQ,KAAK,CAAC,EAAE;oBAClD,WAAW,GAAG,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;oBAC/C,YAAY,GAAG,KAAK,CAAC;oBACrB,MAAM,EAAE,CAAC;iBACZ;qBAAM;oBACH,WAAW,GAAG,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;oBACpD,QAAQ,EAAE,CAAC;iBACd;gBAED,OAAO;oBACH,EAAE;oBACF,OAAO,CAAC,IAAI,IAAI,CAAC;oBACjB,OAAO,CAAC,MAAM,IAAI,CAAC;oBACnB,WAAW;oBACX,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;oBAClC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;iBACnC,CAAC;YACN,CAAC,CAAC,EACF;gBACI,KAAK,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;gBACrB,YAAY,EAAE,UAAU,GAAW;oBAC/B,IAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAChD,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CACjB,IAAI,EACJ,KAAK,CAAC,GAAG,CAAC,UAAU,IAAY;wBAC5B,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC;oBAC/B,CAAC,CAAC,CACL,CAAC;gBACN,CAAC;aACJ,CACJ;iBACI,KAAK,CAAC,IAAI,CAAC;iBACX,GAAG,CAAC,UAAU,EAAU;gBACrB,OAAO,EAAE,CAAC,OAAO,CAAC,eAAe,EAAE,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE;oBAClD,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC;gBACrC,CAAC,CAAC,CAAC;YACP,CAAC,CAAC;iBACD,IAAI,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,IAAI,KAAK,GAAG,CAAC,EAAE;QACX,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC,IAAI,CAC9B;YACI,SAAS;YACT,KAAK;YACL,SAAS,CAAC,UAAU,EAAE,KAAK,CAAC;YAC5B,IAAI;YACJ,MAAM;YACN,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC;YAC3B,IAAI;YACJ,QAAQ;YACR,SAAS,CAAC,UAAU,EAAE,QAAQ,CAAC;YAC/B,KAAK;SACR,CAAC,IAAI,CAAC,EAAE,CAAC,CACb,CAAC;KACL;IAED,IAAI,YAAY,GAAG,CAAC,EAAE;QAClB,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,CAC5B,IAAI,GAAG,YAAY,GAAG,WAAW,GAAG,SAAS,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,KAAK,CACjF,CAAC;QACF,MAAM,IAAI,gBAAgB,GAAG,KAAK,CAAC,SAAS,CAAC,uBAAuB,CAAC,GAAG,IAAI,CAAC;KAChF;IAED,IAAM,WAAW,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5C,IAAI,CAAC,QAAQ,EAAE;QACX,OAAO,SAAS,CAAC,WAAW,CAAC,CAAC;KACjC;IACD,OAAO,WAAW,CAAC;AACvB,CAAC;AAED,eAAe,SAAS,CAAC"}
\ No newline at end of file
diff --git a/node_modules/@textlint/linter-formatter/module/formatters/table.d.ts b/node_modules/@textlint/linter-formatter/module/formatters/table.d.ts
new file mode 100644
index 000000000..c29e9b039
--- /dev/null
+++ b/node_modules/@textlint/linter-formatter/module/formatters/table.d.ts
@@ -0,0 +1,8 @@
+/**
+ * @fileoverview "table reporter.
+ * @author Gajus Kuizinas
+ * @copyright 2016 Gajus Kuizinas . All rights reserved.
+ */
+import { FormatterOptions } from "../FormatterOptions";
+declare function formatter(report: any, options: FormatterOptions): any;
+export default formatter;
diff --git a/node_modules/@textlint/linter-formatter/module/formatters/table.js b/node_modules/@textlint/linter-formatter/module/formatters/table.js
new file mode 100644
index 000000000..f227bd327
--- /dev/null
+++ b/node_modules/@textlint/linter-formatter/module/formatters/table.js
@@ -0,0 +1,130 @@
+/**
+ * @fileoverview "table reporter.
+ * @author Gajus Kuizinas
+ * @copyright 2016 Gajus Kuizinas . All rights reserved.
+ */
+"use strict";
+//------------------------------------------------------------------------------
+// Requirements
+//------------------------------------------------------------------------------
+var chalk = require("chalk");
+var table = require("table").default;
+var pluralize = require("pluralize");
+var stripAnsi = require("strip-ansi");
+//------------------------------------------------------------------------------
+// Helpers
+//------------------------------------------------------------------------------
+/**
+ * Draws text table.
+ * @param {Array |