diff options
author | Michaƫl Zasso <targos@protonmail.com> | 2021-01-08 13:32:24 +0300 |
---|---|---|
committer | Danielle Adams <adamzdanielle@gmail.com> | 2021-05-08 19:44:47 +0300 |
commit | 14681b9c566cc71e595d1f5c99b0219584446eb2 (patch) | |
tree | 3de9be0e77b35e0c6adcfdd61c603de504cee62a /tools | |
parent | daee82a95a853381e0b4bb50e9dce802cebec096 (diff) |
tools: update all lint-md rollup dependencies
PR-URL: https://github.com/nodejs/node/pull/36843
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Reviewed-By: Rich Trott <rtrott@gmail.com>
Diffstat (limited to 'tools')
-rw-r--r-- | tools/lint-md.js | 12614 | ||||
-rw-r--r-- | tools/node-lint-md-cli-rollup/package-lock.json | 1250 | ||||
-rw-r--r-- | tools/node-lint-md-cli-rollup/package.json | 12 | ||||
-rw-r--r-- | tools/node-lint-md-cli-rollup/rollup.config.js | 5 |
4 files changed, 7066 insertions, 6815 deletions
diff --git a/tools/lint-md.js b/tools/lint-md.js index 7d88451c922..332fdd63ed4 100644 --- a/tools/lint-md.js +++ b/tools/lint-md.js @@ -3,9 +3,9 @@ // Don't change this file manually, // it is generated from tools/node-lint-md-cli-rollup -var stream = require('stream'); +var require$$0$3 = require('stream'); var path$2 = require('path'); -var module$1 = require('module'); +var Module = require('module'); var util$2 = require('util'); var os = require('os'); var tty = require('tty'); @@ -15,9 +15,9 @@ var assert = require('assert'); function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } -var stream__default = /*#__PURE__*/_interopDefaultLegacy(stream); +var require$$0__default = /*#__PURE__*/_interopDefaultLegacy(require$$0$3); var path__default = /*#__PURE__*/_interopDefaultLegacy(path$2); -var module__default = /*#__PURE__*/_interopDefaultLegacy(module$1); +var Module__default = /*#__PURE__*/_interopDefaultLegacy(Module); var util__default = /*#__PURE__*/_interopDefaultLegacy(util$2); var os__default = /*#__PURE__*/_interopDefaultLegacy(os); var tty__default = /*#__PURE__*/_interopDefaultLegacy(tty); @@ -210,20 +210,28 @@ function trough() { var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; -function unwrapExports (x) { - return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; -} - -function createCommonjsModule(fn, module) { - return module = { exports: {} }, fn(module, module.exports), module.exports; +function getAugmentedNamespace(n) { + if (n.__esModule) return n; + var a = Object.defineProperty({}, '__esModule', {value: true}); + Object.keys(n).forEach(function (k) { + var d = Object.getOwnPropertyDescriptor(n, k); + Object.defineProperty(a, k, d.get ? d : { + enumerable: true, + get: function () { + return n[k]; + } + }); + }); + return a; } -function getCjsExportFromNamespace (n) { - return n && n['default'] || n; +function createCommonjsModule(fn) { + var module = { exports: {} }; + return fn(module, module.exports), module.exports; } -function commonjsRequire () { - throw new Error('Dynamic requires are not currently supported by @rollup/plugin-commonjs'); +function commonjsRequire (target) { + throw new Error('Could not dynamically require "' + target + '". Please configure the dynamicRequireTargets option of @rollup/plugin-commonjs appropriately for this require call to behave properly.'); } function isNothing(subject) { @@ -804,7 +812,7 @@ function isInteger(object) { (object % 1 === 0 && !common.isNegativeZero(object)); } -var int_1 = new type('tag:yaml.org,2002:int', { +var int = new type('tag:yaml.org,2002:int', { kind: 'scalar', resolve: resolveYamlInteger, construct: constructYamlInteger, @@ -928,7 +936,7 @@ function isFloat(object) { (object % 1 !== 0 || common.isNegativeZero(object)); } -var float_1 = new type('tag:yaml.org,2002:float', { +var float = new type('tag:yaml.org,2002:float', { kind: 'scalar', resolve: resolveYamlFloat, construct: constructYamlFloat, @@ -944,8 +952,8 @@ var json = new schema({ implicit: [ _null, bool, - int_1, - float_1 + int, + float ] }); @@ -2776,7 +2784,7 @@ function readAlias(state) { alias = state.input.slice(_position, state.position); - if (!state.anchorMap.hasOwnProperty(alias)) { + if (!_hasOwnProperty$2.call(state.anchorMap, alias)) { throwError(state, 'unidentified alias "' + alias + '"'); } @@ -4394,19 +4402,16 @@ var dist = /*#__PURE__*/Object.freeze({ 'default': LinesAndColumns }); -var jsTokens = createCommonjsModule(function (module, exports) { // Copyright 2014, 2015, 2016, 2017, 2018 Simon Lydell // License: MIT. (See LICENSE.) -Object.defineProperty(exports, "__esModule", { - value: true -}); + // This regex comes from regex.coffee, and is inserted here by generate-index.js // (run `npm run build`). -exports.default = /((['"])(?:(?!\2|\\).|\\(?:\r\n|[\s\S]))*(\2)?|`(?:[^`\\$]|\\[\s\S]|\$(?!\{)|\$\{(?:[^{}]|\{[^}]*\}?)*\}?)*(`)?)|(\/\/.*)|(\/\*(?:[^*]|\*(?!\/))*(\*\/)?)|(\/(?!\*)(?:\[(?:(?![\]\\]).|\\.)*\]|(?![\/\]\\]).|\\.)+\/(?:(?!\s*(?:\b|[\u0080-\uFFFF$\\'"~({]|[+\-!](?!=)|\.?\d))|[gmiyus]{1,6}\b(?![\u0080-\uFFFF$\\]|\s*(?:[+\-*%&|^<>!=?({]|\/(?![\/*])))))|(0[xX][\da-fA-F]+|0[oO][0-7]+|0[bB][01]+|(?:\d*\.\d+|\d+\.?)(?:[eE][+-]?\d+)?)|((?!\d)(?:(?!\s)[$\w\u0080-\uFFFF]|\\u[\da-fA-F]{4}|\\u\{[\da-fA-F]+\})+)|(--|\+\+|&&|\|\||=>|\.{3}|(?:[+\-\/%&|^]|\*{1,2}|<{1,2}|>{1,3}|!=?|={1,2})=?|[?~.,:;[\](){}])|(\s+)|(^$|[\s\S])/g; +var _default = /((['"])(?:(?!\2|\\).|\\(?:\r\n|[\s\S]))*(\2)?|`(?:[^`\\$]|\\[\s\S]|\$(?!\{)|\$\{(?:[^{}]|\{[^}]*\}?)*\}?)*(`)?)|(\/\/.*)|(\/\*(?:[^*]|\*(?!\/))*(\*\/)?)|(\/(?!\*)(?:\[(?:(?![\]\\]).|\\.)*\]|(?![\/\]\\]).|\\.)+\/(?:(?!\s*(?:\b|[\u0080-\uFFFF$\\'"~({]|[+\-!](?!=)|\.?\d))|[gmiyus]{1,6}\b(?![\u0080-\uFFFF$\\]|\s*(?:[+\-*%&|^<>!=?({]|\/(?![\/*])))))|(0[xX][\da-fA-F]+|0[oO][0-7]+|0[bB][01]+|(?:\d*\.\d+|\d+\.?)(?:[eE][+-]?\d+)?)|((?!\d)(?:(?!\s)[$\w\u0080-\uFFFF]|\\u[\da-fA-F]{4}|\\u\{[\da-fA-F]+\})+)|(--|\+\+|&&|\|\||=>|\.{3}|(?:[+\-\/%&|^]|\*{1,2}|<{1,2}|>{1,3}|!=?|={1,2})=?|[?~.,:;[\](){}])|(\s+)|(^$|[\s\S])/g; -exports.matchToToken = function(match) { +var matchToToken = function(match) { var token = {type: "invalid", value: match[0], closed: undefined}; if (match[ 1]) token.type = "string" , token.closed = !!(match[3] || match[4]); else if (match[ 5]) token.type = "comment"; @@ -4418,19 +4423,15 @@ exports.matchToToken = function(match) { else if (match[12]) token.type = "whitespace"; return token }; -}); - -unwrapExports(jsTokens); -var jsTokens_1 = jsTokens.matchToToken; -var identifier = createCommonjsModule(function (module, exports) { +var jsTokens = /*#__PURE__*/Object.defineProperty({ + default: _default, + matchToToken: matchToToken +}, '__esModule', {value: true}); -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.isIdentifierStart = isIdentifierStart; -exports.isIdentifierChar = isIdentifierChar; -exports.isIdentifierName = isIdentifierName; +var isIdentifierStart_1 = isIdentifierStart; +var isIdentifierChar_1 = isIdentifierChar; +var isIdentifierName_1 = isIdentifierName; let nonASCIIidentifierStartChars = "\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\u0560-\u0588\u05d0-\u05ea\u05ef-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0860-\u086a\u08a0-\u08b4\u08b6-\u08c7\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u09fc\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0af9\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58-\u0c5a\u0c60\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d04-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d54-\u0d56\u0d5f-\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e86-\u0e8a\u0e8c-\u0ea3\u0ea5\u0ea7-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u170c\u170e-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1878\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4b\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1c80-\u1c88\u1c90-\u1cba\u1cbd-\u1cbf\u1ce9-\u1cec\u1cee-\u1cf3\u1cf5\u1cf6\u1cfa\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309b-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312f\u3131-\u318e\u31a0-\u31bf\u31f0-\u31ff\u3400-\u4dbf\u4e00-\u9ffc\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7bf\ua7c2-\ua7ca\ua7f5-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua8fd\ua8fe\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\ua9e0-\ua9e4\ua9e6-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa7e-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab69\uab70-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc"; let nonASCIIidentifierChars = "\u200c\u200d\xb7\u0300-\u036f\u0387\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u0669\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u06f0-\u06f9\u0711\u0730-\u074a\u07a6-\u07b0\u07c0-\u07c9\u07eb-\u07f3\u07fd\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u08d3-\u08e1\u08e3-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u09e6-\u09ef\u09fe\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0ae6-\u0aef\u0afa-\u0aff\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b55-\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c00-\u0c04\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66-\u0c6f\u0c81-\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0ce6-\u0cef\u0d00-\u0d03\u0d3b\u0d3c\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d81-\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\u0ebc\u0ec8-\u0ecd\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1040-\u1049\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u1369-\u1371\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u1810-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19d0-\u19da\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1ab0-\u1abd\u1abf\u1ac0\u1b00-\u1b04\u1b34-\u1b44\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1bad\u1bb0-\u1bb9\u1be6-\u1bf3\u1c24-\u1c37\u1c40-\u1c49\u1c50-\u1c59\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf4\u1cf7-\u1cf9\u1dc0-\u1df9\u1dfb-\u1dff\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua620-\ua629\ua66f\ua674-\ua67d\ua69e\ua69f\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua82c\ua880\ua881\ua8b4-\ua8c5\ua8d0-\ua8d9\ua8e0-\ua8f1\ua8ff-\ua909\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\ua9d0-\ua9d9\ua9e5\ua9f0-\ua9f9\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa50-\uaa59\uaa7b-\uaa7d\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uaaeb-\uaaef\uaaf5\uaaf6\uabe3-\uabea\uabec\uabed\uabf0-\uabf9\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f"; const nonASCIIidentifierStart = new RegExp("[" + nonASCIIidentifierStartChars + "]"); @@ -4500,23 +4501,18 @@ function isIdentifierName(name) { return !isFirst; } -}); - -unwrapExports(identifier); -var identifier_1 = identifier.isIdentifierStart; -var identifier_2 = identifier.isIdentifierChar; -var identifier_3 = identifier.isIdentifierName; -var keyword = createCommonjsModule(function (module, exports) { +var identifier = /*#__PURE__*/Object.defineProperty({ + isIdentifierStart: isIdentifierStart_1, + isIdentifierChar: isIdentifierChar_1, + isIdentifierName: isIdentifierName_1 +}, '__esModule', {value: true}); -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.isReservedWord = isReservedWord; -exports.isStrictReservedWord = isStrictReservedWord; -exports.isStrictBindOnlyReservedWord = isStrictBindOnlyReservedWord; -exports.isStrictBindReservedWord = isStrictBindReservedWord; -exports.isKeyword = isKeyword; +var isReservedWord_1 = isReservedWord; +var isStrictReservedWord_1 = isStrictReservedWord; +var isStrictBindOnlyReservedWord_1 = isStrictBindOnlyReservedWord; +var isStrictBindReservedWord_1 = isStrictBindReservedWord; +var isKeyword_1 = isKeyword; const reservedWords = { keyword: ["break", "case", "catch", "continue", "debugger", "default", "do", "else", "finally", "for", "function", "if", "return", "switch", "throw", "try", "var", "const", "while", "with", "new", "this", "super", "class", "extends", "export", "import", "null", "true", "false", "in", "instanceof", "typeof", "void", "delete"], strict: ["implements", "interface", "let", "package", "private", "protected", "public", "static", "yield"], @@ -4545,14 +4541,14 @@ function isStrictBindReservedWord(word, inModule) { function isKeyword(word) { return keywords.has(word); } -}); -unwrapExports(keyword); -var keyword_1 = keyword.isReservedWord; -var keyword_2 = keyword.isStrictReservedWord; -var keyword_3 = keyword.isStrictBindOnlyReservedWord; -var keyword_4 = keyword.isStrictBindReservedWord; -var keyword_5 = keyword.isKeyword; +var keyword = /*#__PURE__*/Object.defineProperty({ + isReservedWord: isReservedWord_1, + isStrictReservedWord: isStrictReservedWord_1, + isStrictBindOnlyReservedWord: isStrictBindOnlyReservedWord_1, + isStrictBindReservedWord: isStrictBindReservedWord_1, + isKeyword: isKeyword_1 +}, '__esModule', {value: true}); var lib = createCommonjsModule(function (module, exports) { @@ -4609,16 +4605,6 @@ Object.defineProperty(exports, "isKeyword", { }); }); -unwrapExports(lib); -var lib_1 = lib.isIdentifierName; -var lib_2 = lib.isIdentifierChar; -var lib_3 = lib.isIdentifierStart; -var lib_4 = lib.isReservedWord; -var lib_5 = lib.isStrictBindOnlyReservedWord; -var lib_6 = lib.isStrictBindReservedWord; -var lib_7 = lib.isStrictReservedWord; -var lib_8 = lib.isKeyword; - var matchOperatorsRe = /[|\\{}()[\]^$+*?.]/g; var escapeStringRegexp = function (str) { @@ -4780,10 +4766,9 @@ var colorName = { "yellowgreen": [154, 205, 50]
}; -var conversions = createCommonjsModule(function (module) { /* MIT license */ - +var conversions = createCommonjsModule(function (module) { // NOTE: conversions should only return primitive values (i.e. arrays, or // values that give correct `typeof` results). // do not use box values types (i.e. Number(), String(), etc.) @@ -5650,21 +5635,6 @@ convert.rgb.gray = function (rgb) { return [val / 255 * 100]; }; }); -var conversions_1 = conversions.rgb; -var conversions_2 = conversions.hsl; -var conversions_3 = conversions.hsv; -var conversions_4 = conversions.hwb; -var conversions_5 = conversions.cmyk; -var conversions_6 = conversions.xyz; -var conversions_7 = conversions.lab; -var conversions_8 = conversions.lch; -var conversions_9 = conversions.hex; -var conversions_10 = conversions.keyword; -var conversions_11 = conversions.ansi16; -var conversions_12 = conversions.ansi256; -var conversions_13 = conversions.hcg; -var conversions_14 = conversions.apple; -var conversions_15 = conversions.gray; /* this function routes a model to all other models. @@ -6497,16 +6467,10 @@ module.exports = Chalk(); // eslint-disable-line new-cap module.exports.supportsColor = stdoutColor; module.exports.default = module.exports; // For TypeScript }); -var chalk_1 = chalk.supportsColor; -var lib$1 = createCommonjsModule(function (module, exports) { - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.shouldHighlight = shouldHighlight; -exports.getChalk = getChalk; -exports.default = highlight; +var shouldHighlight_1 = shouldHighlight; +var getChalk_1 = getChalk; +var _default$1 = highlight; var _jsTokens = _interopRequireWildcard(jsTokens); @@ -6606,29 +6570,25 @@ function highlight(code, options = {}) { return code; } } -}); -unwrapExports(lib$1); -var lib_1$1 = lib$1.shouldHighlight; -var lib_2$1 = lib$1.getChalk; +var lib$1 = /*#__PURE__*/Object.defineProperty({ + shouldHighlight: shouldHighlight_1, + getChalk: getChalk_1, + default: _default$1 +}, '__esModule', {value: true}); -var lib$2 = createCommonjsModule(function (module, exports) { +var codeFrameColumns_1 = codeFrameColumns; +var default_1 = _default$2; -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.codeFrameColumns = codeFrameColumns; -exports.default = _default; - -var _highlight = _interopRequireWildcard(lib$1); +var _highlight = _interopRequireWildcard$1(lib$1); -function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; } +function _getRequireWildcardCache$1() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache$1 = function () { return cache; }; return cache; } -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +function _interopRequireWildcard$1(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache$1(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } let deprecationWarningShown = false; -function getDefs(chalk) { +function getDefs$1(chalk) { return { gutter: chalk.grey, marker: chalk.red.bold, @@ -6636,7 +6596,7 @@ function getDefs(chalk) { }; } -const NEWLINE = /\r\n|[\n\r\u2028\u2029]/; +const NEWLINE$1 = /\r\n|[\n\r\u2028\u2029]/; function getMarkerLines(loc, source, opts) { const startLoc = Object.assign({ @@ -6704,13 +6664,13 @@ function getMarkerLines(loc, source, opts) { function codeFrameColumns(rawLines, loc, opts = {}) { const highlighted = (opts.highlightCode || opts.forceColor) && (0, _highlight.shouldHighlight)(opts); const chalk = (0, _highlight.getChalk)(opts); - const defs = getDefs(chalk); + const defs = getDefs$1(chalk); const maybeHighlight = (chalkFn, string) => { return highlighted ? chalkFn(string) : string; }; - const lines = rawLines.split(NEWLINE); + const lines = rawLines.split(NEWLINE$1); const { start, end, @@ -6719,7 +6679,7 @@ function codeFrameColumns(rawLines, loc, opts = {}) { const hasColumns = loc.start && typeof loc.start.column === "number"; const numberMaxWidth = String(end).length; const highlightedLines = highlighted ? (0, _highlight.default)(rawLines, opts) : rawLines; - let frame = highlightedLines.split(NEWLINE).slice(start, end).map((line, index) => { + let frame = highlightedLines.split(NEWLINE$1).slice(start, end).map((line, index) => { const number = start + 1 + index; const paddedNumber = ` ${number}`.slice(-numberMaxWidth); const gutter = ` ${paddedNumber} | `; @@ -6756,7 +6716,7 @@ function codeFrameColumns(rawLines, loc, opts = {}) { } } -function _default(rawLines, lineNumber, colNumber, opts = {}) { +function _default$2(rawLines, lineNumber, colNumber, opts = {}) { if (!deprecationWarningShown) { deprecationWarningShown = true; const message = "Passing lineNumber and colNumber is deprecated to @babel/code-frame. Please use `codeFrameColumns`."; @@ -6779,15 +6739,16 @@ function _default(rawLines, lineNumber, colNumber, opts = {}) { }; return codeFrameColumns(rawLines, location, opts); } -}); -unwrapExports(lib$2); -var lib_1$2 = lib$2.codeFrameColumns; +var lib$2 = /*#__PURE__*/Object.defineProperty({ + codeFrameColumns: codeFrameColumns_1, + default: default_1 +}, '__esModule', {value: true}); -var require$$0 = getCjsExportFromNamespace(dist); +var require$$0 = /*@__PURE__*/getAugmentedNamespace(dist); const {default: LinesAndColumns$1} = require$$0; -const {codeFrameColumns} = lib$2; +const {codeFrameColumns: codeFrameColumns$1} = lib$2; const JSONError = errorEx_1('JSONError', { fileName: errorEx_1.append('in %s'), @@ -6821,7 +6782,7 @@ var parseJson$1 = (string, reviver, filename) => { const index = Number(indexMatch[1]); const location = lines.locationForIndex(index); - const codeFrame = codeFrameColumns( + const codeFrame = codeFrameColumns$1( string, {start: {line: location.line + 1, column: location.column + 1}}, {highlightCode: true} @@ -6837,7 +6798,6 @@ var parseJson$1 = (string, reviver, filename) => { /** * Helpers. */ - var s = 1000; var m = s * 60; var h = m * 60; @@ -7010,17 +6970,13 @@ function setup(env) { createDebug.enable = enable; createDebug.enabled = enabled; createDebug.humanize = ms; + createDebug.destroy = destroy; Object.keys(env).forEach(key => { createDebug[key] = env[key]; }); /** - * Active `debug` instances. - */ - createDebug.instances = []; - - /** * The currently active debug mode names, and names to skip. */ @@ -7061,6 +7017,7 @@ function setup(env) { */ function createDebug(namespace) { let prevTime; + let enableOverride = null; function debug(...args) { // Disabled? @@ -7090,7 +7047,7 @@ function setup(env) { args[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => { // If we encounter an escaped % then don't increase the array index if (match === '%%') { - return match; + return '%'; } index++; const formatter = createDebug.formatters[format]; @@ -7113,31 +7070,28 @@ function setup(env) { } debug.namespace = namespace; - debug.enabled = createDebug.enabled(namespace); debug.useColors = createDebug.useColors(); debug.color = createDebug.selectColor(namespace); - debug.destroy = destroy; debug.extend = extend; + debug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release. + + Object.defineProperty(debug, 'enabled', { + enumerable: true, + configurable: false, + get: () => enableOverride === null ? createDebug.enabled(namespace) : enableOverride, + set: v => { + enableOverride = v; + } + }); // Env-specific initialization logic for debug instances if (typeof createDebug.init === 'function') { createDebug.init(debug); } - createDebug.instances.push(debug); - return debug; } - function destroy() { - const index = createDebug.instances.indexOf(this); - if (index !== -1) { - createDebug.instances.splice(index, 1); - return true; - } - return false; - } - function extend(namespace, delimiter) { const newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace); newDebug.log = this.log; @@ -7175,11 +7129,6 @@ function setup(env) { createDebug.names.push(new RegExp('^' + namespaces + '$')); } } - - for (i = 0; i < createDebug.instances.length; i++) { - const instance = createDebug.instances[i]; - instance.enabled = createDebug.enabled(instance.namespace); - } } /** @@ -7254,6 +7203,14 @@ function setup(env) { return val; } + /** + * XXX DO NOT USE. This is a temporary stub function. + * XXX It WILL be removed in the next major release. + */ + function destroy() { + console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'); + } + createDebug.enable(createDebug.load()); return createDebug; @@ -7261,9 +7218,9 @@ function setup(env) { var common$1 = setup; -var browser = createCommonjsModule(function (module, exports) { /* eslint-env browser */ +var browser = createCommonjsModule(function (module, exports) { /** * This is the web browser implementation of `debug()`. */ @@ -7273,6 +7230,16 @@ exports.save = save; exports.load = load; exports.useColors = useColors; exports.storage = localstorage(); +exports.destroy = (() => { + let warned = false; + + return () => { + if (!warned) { + warned = true; + console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'); + } + }; +})(); /** * Colors. @@ -7522,13 +7489,6 @@ formatters.j = function (v) { } }; }); -var browser_1 = browser.formatArgs; -var browser_2 = browser.save; -var browser_3 = browser.load; -var browser_4 = browser.useColors; -var browser_5 = browser.storage; -var browser_6 = browser.colors; -var browser_7 = browser.log; var hasFlag$1 = (flag, argv = process.argv) => { const prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--'); @@ -7668,14 +7628,11 @@ var supportsColor_1$1 = { stderr: translateLevel$1(supportsColor$1(true, tty__default['default'].isatty(2))) }; -var node = createCommonjsModule(function (module, exports) { /** * Module dependencies. */ - - - +var node = createCommonjsModule(function (module, exports) { /** * This is the Node.js implementation of `debug()`. */ @@ -7686,6 +7643,10 @@ exports.formatArgs = formatArgs; exports.save = save; exports.load = load; exports.useColors = useColors; +exports.destroy = util__default['default'].deprecate( + () => {}, + 'Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.' +); /** * Colors. @@ -7915,7 +7876,9 @@ const {formatters} = module.exports; formatters.o = function (v) { this.inspectOpts.colors = this.useColors; return util__default['default'].inspect(v, this.inspectOpts) - .replace(/\s*\n\s*/g, ' '); + .split('\n') + .map(str => str.trim()) + .join(' '); }; /** @@ -7927,21 +7890,13 @@ formatters.O = function (v) { return util__default['default'].inspect(v, this.inspectOpts); }; }); -var node_1 = node.init; -var node_2 = node.log; -var node_3 = node.formatArgs; -var node_4 = node.save; -var node_5 = node.load; -var node_6 = node.useColors; -var node_7 = node.colors; -var node_8 = node.inspectOpts; -var src = createCommonjsModule(function (module) { /** * Detect Electron renderer / nwjs process, which is node, but we should * treat as a browser. */ +var src = createCommonjsModule(function (module) { if (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) { module.exports = browser; } else { @@ -7972,10 +7927,10 @@ const resolveFrom = (fromDirectory, moduleId, silent) => { const fromFile = path__default['default'].join(fromDirectory, 'noop.js'); - const resolveFileName = () => module__default['default']._resolveFilename(moduleId, { + const resolveFileName = () => Module__default['default']._resolveFilename(moduleId, { id: fromFile, filename: fromFile, - paths: module__default['default']._nodeModulePaths(fromDirectory) + paths: Module__default['default']._nodeModulePaths(fromDirectory) }); if (silent) { @@ -8211,8 +8166,8 @@ const pTry = (fn, ...arguments_) => new Promise(resolve => { var pTry_1 = pTry; // TODO: remove this in the next major version -var _default = pTry; -pTry_1.default = _default; +var _default$3 = pTry; +pTry_1.default = _default$3; const pLimit = concurrency => { if (!((Number.isInteger(concurrency) || concurrency === Infinity) && concurrency > 0)) { @@ -8267,8 +8222,8 @@ const pLimit = concurrency => { }; var pLimit_1 = pLimit; -var _default$1 = pLimit; -pLimit_1.default = _default$1; +var _default$4 = pLimit; +pLimit_1.default = _default$4; class EndError extends Error { constructor(value) { @@ -8388,7 +8343,7 @@ function encode (obj, opt) { whitespace: false, }; } else { - opt = opt || Object.create(null); + opt = opt || {}; opt.whitespace = opt.whitespace === true; } @@ -8435,7 +8390,7 @@ function dotSplit (str) { } function decode (str) { - var out = Object.create(null); + var out = {}; var p = out; var section = null; // section |key = value @@ -8453,10 +8408,10 @@ function decode (str) { if (section === '__proto__') { // not allowed // keep parsing the section, but don't attach it. - p = Object.create(null); + p = {}; return } - p = out[section] = out[section] || Object.create(null); + p = out[section] = out[section] || {}; return } var key = unsafe(match[2]); @@ -8506,7 +8461,7 @@ function decode (str) { if (part === '__proto__') return if (!p[part] || typeof p[part] !== 'object') - p[part] = Object.create(null); + p[part] = {}; p = p[part]; }); if (p === out && nl === l) @@ -8575,12 +8530,6 @@ function unsafe (val, doUnesc) { return val } }); -var ini_1 = ini.parse; -var ini_2 = ini.decode; -var ini_3 = ini.stringify; -var ini_4 = ini.encode; -var ini_5 = ini.safe; -var ini_6 = ini.unsafe; const NpmConfig = figgyPudding_1({}, { // Open up the pudding object. @@ -9282,15 +9231,15 @@ function create(buf, filePath) { // Basically `Module.prototype.load`, but for a buffer instead of a file path. function loadScript(buf, filePath) { - var submodule = module__default['default']._cache[filePath]; + var submodule = Module__default['default']._cache[filePath]; if (!submodule) { - submodule = new module__default['default'](filePath, module); + submodule = new Module__default['default'](filePath, module); submodule.filename = filePath; - submodule.paths = module__default['default']._nodeModulePaths(dirname(filePath)); + submodule.paths = Module__default['default']._nodeModulePaths(dirname(filePath)); submodule._compile(String(buf), filePath); submodule.loaded = true; - module__default['default']._cache[filePath] = submodule; + Module__default['default']._cache[filePath] = submodule; } return submodule.exports @@ -13386,7 +13335,6 @@ Glob.prototype._stat2 = function (f, abs, er, stat, cb) { * @author Feross Aboukhadijeh <https://feross.org> * @license MIT */ - var isBuffer = function isBuffer (obj) { return obj != null && obj.constructor != null && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj) @@ -13532,53 +13480,49 @@ function parseOrigin(origin) { return result } -function replaceExt(npath, ext) { - if (typeof npath !== 'string') { - return npath; - } +var minpath = path__default['default']; - if (npath.length === 0) { - return npath; - } - - var nFileName = path__default['default'].basename(npath, path__default['default'].extname(npath)) + ext; - return path__default['default'].join(path__default['default'].dirname(npath), nFileName); -} - -var replaceExt_1 = replaceExt; +var minproc = process; var core$1 = VFile; var own$1 = {}.hasOwnProperty; -var proto$1 = VFile.prototype; // Order of setting (least specific to most), we need this because otherwise // `{stem: 'a', path: '~/b.js'}` would throw, as a path is needed before a // stem can be set. var order = ['history', 'path', 'basename', 'stem', 'extname', 'dirname']; -proto$1.toString = toString; +VFile.prototype.toString = toString; // Access full path (`~/index.min.js`). -Object.defineProperty(proto$1, 'path', {get: getPath, set: setPath}); +Object.defineProperty(VFile.prototype, 'path', {get: getPath, set: setPath}); // Access parent path (`~`). -Object.defineProperty(proto$1, 'dirname', {get: getDirname, set: setDirname}); +Object.defineProperty(VFile.prototype, 'dirname', { + get: getDirname, + set: setDirname +}); // Access basename (`index.min.js`). -Object.defineProperty(proto$1, 'basename', {get: getBasename, set: setBasename}); +Object.defineProperty(VFile.prototype, 'basename', { + get: getBasename, + set: setBasename +}); // Access extname (`.js`). -Object.defineProperty(proto$1, 'extname', {get: getExtname, set: setExtname}); +Object.defineProperty(VFile.prototype, 'extname', { + get: getExtname, + set: setExtname +}); // Access stem (`index.min`). -Object.defineProperty(proto$1, 'stem', {get: getStem, set: setStem}); +Object.defineProperty(VFile.prototype, 'stem', {get: getStem, set: setStem}); // Construct a new file. function VFile(options) { var prop; var index; - var length; if (!options) { options = {}; @@ -13595,13 +13539,12 @@ function VFile(options) { this.data = {}; this.messages = []; this.history = []; - this.cwd = process.cwd(); + this.cwd = minproc.cwd(); // Set path related properties in the correct order. index = -1; - length = order.length; - while (++index < length) { + while (++index < order.length) { prop = order[index]; if (own$1.call(options, prop)) { @@ -13611,7 +13554,7 @@ function VFile(options) { // Set non-path related properties. for (prop in options) { - if (order.indexOf(prop) === -1) { + if (order.indexOf(prop) < 0) { this[prop] = options[prop]; } } @@ -13624,76 +13567,73 @@ function getPath() { function setPath(path) { assertNonEmpty(path, 'path'); - if (path !== this.path) { + if (this.path !== path) { this.history.push(path); } } function getDirname() { - return typeof this.path === 'string' ? path__default['default'].dirname(this.path) : undefined + return typeof this.path === 'string' ? minpath.dirname(this.path) : undefined } function setDirname(dirname) { assertPath(this.path, 'dirname'); - this.path = path__default['default'].join(dirname || '', this.basename); + this.path = minpath.join(dirname || '', this.basename); } function getBasename() { - return typeof this.path === 'string' ? path__default['default'].basename(this.path) : undefined + return typeof this.path === 'string' ? minpath.basename(this.path) : undefined } function setBasename(basename) { assertNonEmpty(basename, 'basename'); assertPart(basename, 'basename'); - this.path = path__default['default'].join(this.dirname || '', basename); + this.path = minpath.join(this.dirname || '', basename); } function getExtname() { - return typeof this.path === 'string' ? path__default['default'].extname(this.path) : undefined + return typeof this.path === 'string' ? minpath.extname(this.path) : undefined } function setExtname(extname) { - var ext = extname || ''; - - assertPart(ext, 'extname'); + assertPart(extname, 'extname'); assertPath(this.path, 'extname'); - if (ext) { - if (ext.charAt(0) !== '.') { + if (extname) { + if (extname.charCodeAt(0) !== 46 /* `.` */) { throw new Error('`extname` must start with `.`') } - if (ext.indexOf('.', 1) !== -1) { + if (extname.indexOf('.', 1) > -1) { throw new Error('`extname` cannot contain multiple dots') } } - this.path = replaceExt_1(this.path, ext); + this.path = minpath.join(this.dirname, this.stem + (extname || '')); } function getStem() { return typeof this.path === 'string' - ? path__default['default'].basename(this.path, this.extname) + ? minpath.basename(this.path, this.extname) : undefined } function setStem(stem) { assertNonEmpty(stem, 'stem'); assertPart(stem, 'stem'); - this.path = path__default['default'].join(this.dirname || '', stem + (this.extname || '')); + this.path = minpath.join(this.dirname || '', stem + (this.extname || '')); } // Get the value of the file. function toString(encoding) { - var value = this.contents || ''; - return isBuffer(value) ? value.toString(encoding) : String(value) + return (this.contents || '').toString(encoding) } -// Assert that `part` is not a path (i.e., does not contain `path.sep`). +// Assert that `part` is not a path (i.e., does not contain `p.sep`). function assertPart(part, name) { - if (part.indexOf(path__default['default'].sep) !== -1) { + if (part && part.indexOf(minpath.sep) > -1) { throw new Error( - '`' + name + '` cannot be a path: did not expect `' + path__default['default'].sep + '`' + '`' + name + '` cannot be a path: did not expect `' + minpath.sep + '`' ) } } @@ -13712,23 +13652,20 @@ function assertPath(path, name) { } } -var vfile = core$1; - -var proto$2 = core$1.prototype; +var lib$3 = core$1; -proto$2.message = message; -proto$2.info = info; -proto$2.fail = fail; +core$1.prototype.message = message; +core$1.prototype.info = info; +core$1.prototype.fail = fail; // Create a message with `reason` at `position`. // When an error is passed in as `reason`, copies the stack. function message(reason, position, origin) { - var filePath = this.path; var message = new vfileMessage(reason, position, origin); - if (filePath) { - message.name = filePath + ':' + message.name; - message.file = filePath; + if (this.path) { + message.name = this.path + ':' + message.name; + message.file = this.path; } message.fatal = false; @@ -13757,6 +13694,8 @@ function info() { return message } +var vfile = lib$3; + var core$2 = toVFile; // Create a virtual file from a description. If `options` is a string or a @@ -14938,19 +14877,8 @@ function packF32(v) { return packIEEE754(v, 8, 23); } }()); }); -var typedarray_1 = typedarray.ArrayBuffer; -var typedarray_2 = typedarray.Int8Array; -var typedarray_3 = typedarray.Uint8Array; -var typedarray_4 = typedarray.Uint8ClampedArray; -var typedarray_5 = typedarray.Int16Array; -var typedarray_6 = typedarray.Uint16Array; -var typedarray_7 = typedarray.Int32Array; -var typedarray_8 = typedarray.Uint32Array; -var typedarray_9 = typedarray.Float32Array; -var typedarray_10 = typedarray.Float64Array; -var typedarray_11 = typedarray.DataView; -var Writable = stream__default['default'].Writable; +var Writable = require$$0__default['default'].Writable; @@ -15367,7 +15295,7 @@ function isEmpty(val) { * @type {Function} */ -var lib$3 = isEmpty; +var lib$4 = isEmpty; var debug$3 = src('unified-engine:file-pipeline:configure'); @@ -15417,7 +15345,7 @@ function configure$1(context, file, fileSet, next) { } // Allow for default arguments in es2020. - if (options === null || (typeof options === 'object' && lib$3(options))) { + if (options === null || (typeof options === 'object' && lib$4(options))) { options = undefined; } @@ -15732,7 +15660,7 @@ function formatNode(node) { ignore$2.indexOf(key) !== -1 || value === null || value === undefined || - (typeof value === 'object' && lib$3(value)) + (typeof value === 'object' && lib$4(value)) ) { continue } @@ -16240,8 +16168,8 @@ const isFullwidthCodePoint = codePoint => { }; var isFullwidthCodePoint_1 = isFullwidthCodePoint; -var _default$2 = isFullwidthCodePoint; -isFullwidthCodePoint_1.default = _default$2; +var _default$5 = isFullwidthCodePoint; +isFullwidthCodePoint_1.default = _default$5; var emojiRegex = function () { // https://mths.be/emoji @@ -16285,8 +16213,8 @@ const stringWidth = string => { var stringWidth_1 = stringWidth; // TODO: remove this in the next major version -var _default$3 = stringWidth; -stringWidth_1.default = _default$3; +var _default$6 = stringWidth; +stringWidth_1.default = _default$6; /*! * repeat-string <https://github.com/jonschlinkert/repeat-string> @@ -16400,33 +16328,14 @@ var supported = supportsColor_1$2.stderr.hasBasic; var vfileReporter = reporter; -// Check which characters should be used. -var windows$1 = process.platform === 'win32'; +var push = [].push; + // `log-symbols` without chalk: /* istanbul ignore next - Windows. */ -var chars = windows$1 ? {error: 'Ć', warning: 'ā¼'} : {error: 'ā', warning: 'ā '}; - -// Match trailing white-space. -var trailing = /\s*$/; - -// Default filename. -var defaultName = '<stdin>'; - -var noop = {open: '', close: ''}; - -var colors = { - underline: {open: '\u001B[4m', close: '\u001B[24m'}, - red: {open: '\u001B[31m', close: '\u001B[39m'}, - yellow: {open: '\u001B[33m', close: '\u001B[39m'}, - green: {open: '\u001B[32m', close: '\u001B[39m'} -}; - -var noops = { - underline: noop, - red: noop, - yellow: noop, - green: noop -}; +var chars = + process.platform === 'win32' + ? {error: 'Ć', warning: 'ā¼'} + : {error: 'ā', warning: 'ā '}; var labels = { true: 'error', @@ -16455,223 +16364,183 @@ function reporter(files, options) { files = [files]; } - return compile$1(parse$4(filter$1(files, settings), settings), one, settings) -} - -function filter$1(files, options) { - var result = []; - var length = files.length; - var index = -1; - var file; - - if (!options.quiet && !options.silent) { - return files.concat() - } - - while (++index < length) { - file = files[index]; - - if (applicable(file, options).length !== 0) { - result.push(file); - } - } - - return result + return format$1(transform$2(files, settings), one, settings) } -function parse$4(files, options) { - var length = files.length; +function transform$2(files, options) { var index = -1; var rows = []; var all = []; - var locationSize = 0; - var labelSize = 0; - var reasonSize = 0; - var ruleIdSize = 0; - var file; - var destination; - var origin; + var sizes = {}; var messages; var offset; - var count; var message; - var loc; - var reason; - var label; - var id; - - while (++index < length) { - file = files[index]; - destination = file.path; - origin = file.history[0] || destination; - messages = vfileSort({messages: applicable(file, options)}).messages; - - if (rows.length !== 0 && rows[rows.length - 1].type !== 'header') { - rows.push({type: 'separator'}); - } - - rows.push({ - type: 'header', - origin: origin, - destination: destination, - name: origin || options.defaultName || defaultName, - stored: Boolean(file.stored), - moved: Boolean(file.stored && destination !== origin), - stats: vfileStatistics(messages) - }); + var messageRows; + var row; + var key; + while (++index < files.length) { + messages = vfileSort({messages: files[index].messages.concat()}).messages; + messageRows = []; offset = -1; - count = messages.length; - while (++offset < count) { + while (++offset < messages.length) { message = messages[offset]; - id = message.ruleId || ''; - reason = message.stack || message.message; - loc = message.location; - loc = unistUtilStringifyPosition(loc.end.line && loc.end.column ? loc : loc.start); - - if (options.verbose && message.note) { - reason += '\n' + message.note; - } - label = labels[message.fatal]; + if (!options.silent || message.fatal) { + all.push(message); + + row = { + location: unistUtilStringifyPosition( + message.location.end.line && message.location.end.column + ? message.location + : message.location.start + ), + label: labels[message.fatal], + reason: + (message.stack || message.message) + + (options.verbose && message.note ? '\n' + message.note : ''), + ruleId: message.ruleId || '', + source: message.source || '' + }; - rows.push({ - location: loc, - label: label, - reason: reason, - ruleId: id, - source: message.source - }); + for (key in row) { + sizes[key] = Math.max(size(row[key]), sizes[key] || 0); + } - locationSize = Math.max(realLength(loc), locationSize); - labelSize = Math.max(realLength(label), labelSize); - reasonSize = Math.max(realLength(reason), reasonSize); - ruleIdSize = Math.max(realLength(id), ruleIdSize); + messageRows.push(row); + } } - all = all.concat(messages); + if ((!options.quiet && !options.silent) || messageRows.length) { + rows.push({type: 'file', file: files[index], stats: vfileStatistics(messages)}); + push.apply(rows, messageRows); + } } - return { - rows: rows, - statistics: vfileStatistics(all), - location: locationSize, - label: labelSize, - reason: reasonSize, - ruleId: ruleIdSize - } + return {rows: rows, stats: vfileStatistics(all), sizes: sizes} } -// eslint-disable-next-line complexity -function compile$1(map, one, options) { - var enabled = options.color; - var all = map.statistics; - var rows = map.rows; - var length = rows.length; - var index = -1; +function format$1(map, one, options) { + var enabled = options.color == null ? supported : options.color; var lines = []; + var index = -1; + var stats; var row; var line; - var style; - var color; var reason; var rest; - var position; - - if (enabled === null || enabled === undefined) { - enabled = supported; - } - - style = enabled ? colors : noops; - - while (++index < length) { - row = rows[index]; + var match; - if (row.type === 'separator') { - lines.push(''); - } else if (row.type === 'header') { - if (one && !options.defaultName && !row.origin) { - line = ''; - } else { - color = - style[row.stats.fatal ? 'red' : row.stats.total ? 'yellow' : 'green']; + while (++index < map.rows.length) { + row = map.rows[index]; + + if (row.type === 'file') { + stats = row.stats; + line = row.file.history[0] || options.defaultName || '<stdin>'; + + line = + one && !options.defaultName && !row.file.history[0] + ? '' + : (enabled + ? '\x1b[4m' /* Underline. */ + + (stats.fatal + ? '\x1b[31m' /* Red. */ + : stats.total + ? '\x1b[33m' /* Yellow. */ + : '\x1b[32m') /* Green. */ + + line + + '\x1b[39m\x1b[24m' + : line) + + (row.file.stored && row.file.path !== row.file.history[0] + ? ' > ' + row.file.path + : ''); + + if (!stats.total) { line = - style.underline.open + - color.open + - row.name + - color.close + - style.underline.close; - line += row.moved ? ' > ' + row.destination : ''; + (line ? line + ': ' : '') + + (row.file.stored + ? enabled + ? '\x1b[33mwritten\x1b[39m' /* Yellow. */ + : 'written' + : 'no issues found'); } - if (!row.stats.total) { - line += line ? ': ' : ''; - - if (row.stored) { - line += style.yellow.open + 'written' + style.yellow.close; - } else { - line += 'no issues found'; + if (line) { + if (index && map.rows[index - 1].type !== 'file') { + lines.push(''); } - } - if (line) { lines.push(line); } } else { - color = style[row.label === 'error' ? 'red' : 'yellow']; - reason = row.reason; - rest = ''; - position = reason.indexOf('\n'); + match = /\r?\n|\r/.exec(reason); - if (position !== -1) { - rest = reason.slice(position); - reason = reason.slice(0, position); + if (match) { + rest = reason.slice(match.index); + reason = reason.slice(0, match.index); + } else { + rest = ''; } lines.push( - [ - '', - padLeft(row.location, map.location), - padRight(color.open + row.label + color.close, map.label), - padRight(reason, map.reason), - padRight(row.ruleId, map.ruleId), - row.source || '' - ] - .join(' ') - .replace(trailing, '') + rest + ( + ' ' + + repeatString(' ', map.sizes.location - size(row.location)) + + row.location + + ' ' + + (enabled + ? (row.label === 'error' + ? '\x1b[31m' /* Red. */ + : '\x1b[33m') /* Yellow. */ + + row.label + + '\x1b[39m' + : row.label) + + repeatString(' ', map.sizes.label - size(row.label)) + + ' ' + + reason + + repeatString(' ', map.sizes.reason - size(reason)) + + ' ' + + row.ruleId + + repeatString(' ', map.sizes.ruleId - size(row.ruleId)) + + ' ' + + (row.source || '') + ).replace(/ +$/, '') + rest ); } } - if (all.fatal || all.warn) { - line = []; + stats = map.stats; - if (all.fatal) { - line.push( - [ - style.red.open + chars.error + style.red.close, - all.fatal, - plural$1(labels.true, all.fatal) - ].join(' ') - ); - } + if (stats.fatal || stats.warn) { + line = ''; - if (all.warn) { - line.push( - [ - style.yellow.open + chars.warning + style.yellow.close, - all.warn, - plural$1(labels.false, all.warn) - ].join(' ') - ); + if (stats.fatal) { + line = + (enabled + ? '\x1b[31m' /* Red. */ + chars.error + '\x1b[39m' + : chars.error) + + ' ' + + stats.fatal + + ' ' + + (labels.true + (stats.fatal === 1 ? '' : 's')); } - line = line.join(', '); + if (stats.warn) { + line = + (line ? line + ', ' : '') + + (enabled + ? '\x1b[33m' /* Yellow. */ + chars.warning + '\x1b[39m' + : chars.warning) + + ' ' + + stats.warn + + ' ' + + (labels.false + (stats.warn === 1 ? '' : 's')); + } - if (all.total !== all.fatal && all.total !== all.warn) { - line = all.total + ' messages (' + line + ')'; + if (stats.total !== stats.fatal && stats.total !== stats.warn) { + line = stats.total + ' messages (' + line + ')'; } lines.push('', line); @@ -16680,43 +16549,10 @@ function compile$1(map, one, options) { return lines.join('\n') } -function applicable(file, options) { - var messages = file.messages; - var length = messages.length; - var index = -1; - var result = []; - - if (options.silent) { - while (++index < length) { - if (messages[index].fatal) { - result.push(messages[index]); - } - } - } else { - result = messages.concat(); - } - - return result -} - // Get the length of `value`, ignoring ANSI sequences. -function realLength(value) { - var length = value.indexOf('\n'); - return stringWidth_1(length === -1 ? value : value.slice(0, length)) -} - -// Pad `value` on the left. -function padLeft(value, minimum) { - return repeatString(' ', minimum - realLength(value)) + value -} - -// Pad `value` on the right. -function padRight(value, minimum) { - return value + repeatString(' ', minimum - realLength(value)) -} - -function plural$1(value, count) { - return count === 1 ? value : value + 's' +function size(value) { + var match = /\r?\n|\r/.exec(value); + return stringWidth_1(match ? value.slice(0, match.index) : value) } var log_1 = log; @@ -16767,11 +16603,11 @@ var fileSetPipeline = trough_1() .use(transform_1$1) .use(log_1); -var PassThrough = stream__default['default'].PassThrough; +var PassThrough = require$$0__default['default'].PassThrough; -var lib$4 = run; +var lib$5 = run; // Run the file set pipeline once. // `callback` is invoked with a fatal error, or with a status code (`0` on @@ -17069,6 +16905,7 @@ var colorName$1 = { }; /* MIT license */ + /* eslint-disable no-mixed-operators */ @@ -18518,7 +18355,7 @@ for (const model of usedModels) { }; } -const proto$3 = Object.defineProperties(() => {}, { +const proto$1 = Object.defineProperties(() => {}, { ...styles, level: { enumerable: true, @@ -18560,7 +18397,7 @@ const createBuilder = (self, _styler, _isEmpty) => { // `__proto__` is used because we must return a function, but there is // no way to create a function with a different prototype - builder.__proto__ = proto$3; // eslint-disable-line no-proto + builder.__proto__ = proto$1; // eslint-disable-line no-proto builder._generator = self; builder._styler = _styler; @@ -18893,17 +18730,6 @@ exports.wrapOutput = (input, state = {}, options = {}) => { return output; }; }); -var utils_1 = utils.isObject; -var utils_2 = utils.hasRegexChars; -var utils_3 = utils.isRegexChar; -var utils_4 = utils.escapeRegex; -var utils_5 = utils.toPosixSlashes; -var utils_6 = utils.removeBackslashes; -var utils_7 = utils.supportsLookbehinds; -var utils_8 = utils.isWindows; -var utils_9 = utils.escapeLast; -var utils_10 = utils.removePrefix; -var utils_11 = utils.wrapOutput; const { CHAR_ASTERISK: CHAR_ASTERISK$1, /* * */ @@ -19335,7 +19161,7 @@ const syntaxError = (type, char) => { * @return {Object} */ -const parse$5 = (input, options) => { +const parse$4 = (input, options) => { if (typeof input !== 'string') { throw new TypeError('Expected a string'); } @@ -20271,7 +20097,7 @@ const parse$5 = (input, options) => { * impact when none of the fast paths match. */ -parse$5.fastpaths = (input, options) => { +parse$4.fastpaths = (input, options) => { const opts = { ...options }; const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH; const len = input.length; @@ -20358,7 +20184,7 @@ parse$5.fastpaths = (input, options) => { return source; }; -var parse_1$1 = parse$5; +var parse_1$1 = parse$4; const isObject$1 = val => val && typeof val === 'object' && !Array.isArray(val); @@ -20695,7 +20521,7 @@ var picomatch_1 = picomatch; var picomatch$1 = picomatch_1; -const { Readable } = stream__default['default']; +const { Readable } = require$$0__default['default']; const { promisify } = util__default['default']; @@ -20981,7 +20807,6 @@ var readdirp_1 = readdirp; * Copyright (c) 2014-2018, Jon Schlinkert. * Released under the MIT License. */ - var normalizePath = function(path, stripTrailing) { if (typeof path !== 'string') { throw new TypeError('expected path to be a string'); @@ -21011,19 +20836,12 @@ var normalizePath = function(path, stripTrailing) { return prefix + segs.join('/'); }; -var anymatch_1 = createCommonjsModule(function (module, exports) { - -Object.defineProperty(exports, "__esModule", { value: true }); - - - - /** * @typedef {(testString: string) => boolean} AnymatchFn * @typedef {string|RegExp|AnymatchFn} AnymatchPattern * @typedef {AnymatchPattern|AnymatchPattern[]} AnymatchMatcher */ -const BANG = '!'; +const BANG$1 = '!'; const DEFAULT_OPTIONS = {returnIndex: false}; const arrify = (item) => Array.isArray(item) ? item : [item]; @@ -21096,7 +20914,7 @@ const anymatch = (matchers, testString, options = DEFAULT_OPTIONS) => { // Early cache for matchers. const mtchers = arrify(matchers); const negatedGlobs = mtchers - .filter(item => typeof item === 'string' && item.charAt(0) === BANG) + .filter(item => typeof item === 'string' && item.charAt(0) === BANG$1) .map(item => item.slice(1)) .map(item => picomatch$1(item, opts)); const patterns = mtchers.map(matcher => createPattern(matcher, opts)); @@ -21112,10 +20930,7 @@ const anymatch = (matchers, testString, options = DEFAULT_OPTIONS) => { }; anymatch.default = anymatch; -module.exports = anymatch; -}); - -unwrapExports(anymatch_1); +var anymatch_1 = anymatch; /*! * is-extglob <https://github.com/jonschlinkert/is-extglob> @@ -21123,7 +20938,6 @@ unwrapExports(anymatch_1); * Copyright (c) 2014-2016, Jon Schlinkert. * Licensed under the MIT License. */ - var isExtglob = function isExtglob(str) { if (typeof str !== 'string' || str === '') { return false; @@ -21145,7 +20959,6 @@ var isExtglob = function isExtglob(str) { * Released under the MIT License. */ - var chars$1 = { '{': '}', '(': ')', '[': ']'}; var strictRegex = /\\(.)|(^!|\*|[\].+)]\?|\[[^\\\]]+\]|\{[^\\}]+\}|\(\?[:!=][^\\)]+\)|\([^|]+\|[^\\)]+\))/; var relaxedRegex = /\\(.)|(^!|[*?{}()[\]]|\(\?)/; @@ -21339,15 +21152,6 @@ exports.flatten = (...args) => { return result; }; }); -var utils_1$1 = utils$1.isInteger; -var utils_2$1 = utils$1.find; -var utils_3$1 = utils$1.exceedsLimit; -var utils_4$1 = utils$1.escapeNode; -var utils_5$1 = utils$1.encloseBrace; -var utils_6$1 = utils$1.isInvalidBrace; -var utils_7$1 = utils$1.isOpenOrClose; -var utils_8$1 = utils$1.reduce; -var utils_9$1 = utils$1.flatten; var stringify$3 = (ast, options = {}) => { let stringify = (node, parent = {}) => { @@ -21394,6 +21198,15 @@ var isNumber = function(num) { return false; }; +/*! + * to-regex-range <https://github.com/micromatch/to-regex-range> + * + * Copyright (c) 2015-present, Jon Schlinkert. + * Released under the MIT License. + */ + + + const toRegexRange = (min, max, options) => { if (isNumber(min) === false) { throw new TypeError('toRegexRange: expected the first argument to be a number'); @@ -21672,9 +21485,19 @@ toRegexRange.clearCache = () => (toRegexRange.cache = {}); var toRegexRange_1 = toRegexRange; +/*! + * fill-range <https://github.com/jonschlinkert/fill-range> + * + * Copyright (c) 2014-present, Jon Schlinkert. + * Licensed under the MIT License. + */ + + + + const isObject$2 = val => val !== null && typeof val === 'object' && !Array.isArray(val); -const transform$2 = toNumber => { +const transform$3 = toNumber => { return value => toNumber === true ? Number(value) : String(value); }; @@ -21811,7 +21634,7 @@ const fillNumbers = (start, end, step = 1, options = {}) => { let padded = zeros(startString) || zeros(endString) || zeros(stepString); let maxLen = padded ? Math.max(startString.length, endString.length, stepString.length) : 0; let toNumber = padded === false && stringify$4(start, end, options) === false; - let format = options.transform || transform$2(toNumber); + let format = options.transform || transform$3(toNumber); if (options.toRegex && step === 1) { return toRange(toMaxLen(start, maxLen), toMaxLen(end, maxLen), true, options); @@ -21910,7 +21733,7 @@ const fill = (start, end, step, options = {}) => { var fillRange = fill; -const compile$2 = (ast, options = {}) => { +const compile$1 = (ast, options = {}) => { let walk = (node, parent = {}) => { let invalidBlock = utils$1.isInvalidBrace(parent); let invalidNode = node.invalid === true && options.escapeInvalid === true; @@ -21961,7 +21784,7 @@ const compile$2 = (ast, options = {}) => { return walk(ast); }; -var compile_1 = compile$2; +var compile_1 = compile$1; const append = (queue = '', stash = '', enclose = false) => { let result = []; @@ -22153,7 +21976,7 @@ const { * parse */ -const parse$6 = (input, options = {}) => { +const parse$5 = (input, options = {}) => { if (typeof input !== 'string') { throw new TypeError('Expected a string'); } @@ -22452,7 +22275,7 @@ const parse$6 = (input, options = {}) => { return ast; }; -var parse_1$2 = parse$6; +var parse_1$2 = parse$5; /** * Expand the given pattern or create a regex-compatible string. @@ -22618,7 +22441,7 @@ braces.create = (input, options = {}) => { var braces_1 = braces; -var binaryExtensions = [ +var require$$0$1 = [ "3dm", "3ds", "3g2", @@ -22875,16 +22698,9 @@ var binaryExtensions = [ "zipx" ]; -var binaryExtensions$1 = /*#__PURE__*/Object.freeze({ - __proto__: null, - 'default': binaryExtensions -}); - -var require$$0$1 = getCjsExportFromNamespace(binaryExtensions$1); - -var binaryExtensions$2 = require$$0$1; +var binaryExtensions = require$$0$1; -const extensions = new Set(binaryExtensions$2); +const extensions = new Set(binaryExtensions); var isBinaryPath = filePath => extensions.has(path__default['default'].extname(filePath).slice(1).toLowerCase()); @@ -22952,57 +22768,6 @@ exports.isWindows = platform === 'win32'; exports.isMacos = platform === 'darwin'; exports.isLinux = platform === 'linux'; }); -var constants_1 = constants$2.EV_ALL; -var constants_2 = constants$2.EV_READY; -var constants_3 = constants$2.EV_ADD; -var constants_4 = constants$2.EV_CHANGE; -var constants_5 = constants$2.EV_ADD_DIR; -var constants_6 = constants$2.EV_UNLINK; -var constants_7 = constants$2.EV_UNLINK_DIR; -var constants_8 = constants$2.EV_RAW; -var constants_9 = constants$2.EV_ERROR; -var constants_10 = constants$2.STR_DATA; -var constants_11 = constants$2.STR_END; -var constants_12 = constants$2.STR_CLOSE; -var constants_13 = constants$2.FSEVENT_CREATED; -var constants_14 = constants$2.FSEVENT_MODIFIED; -var constants_15 = constants$2.FSEVENT_DELETED; -var constants_16 = constants$2.FSEVENT_MOVED; -var constants_17 = constants$2.FSEVENT_CLONED; -var constants_18 = constants$2.FSEVENT_UNKNOWN; -var constants_19 = constants$2.FSEVENT_TYPE_FILE; -var constants_20 = constants$2.FSEVENT_TYPE_DIRECTORY; -var constants_21 = constants$2.FSEVENT_TYPE_SYMLINK; -var constants_22 = constants$2.KEY_LISTENERS; -var constants_23 = constants$2.KEY_ERR; -var constants_24 = constants$2.KEY_RAW; -var constants_25 = constants$2.HANDLER_KEYS; -var constants_26 = constants$2.DOT_SLASH; -var constants_27 = constants$2.BACK_SLASH_RE; -var constants_28 = constants$2.DOUBLE_SLASH_RE; -var constants_29 = constants$2.SLASH_OR_BACK_SLASH_RE; -var constants_30 = constants$2.DOT_RE; -var constants_31 = constants$2.REPLACER_RE; -var constants_32 = constants$2.SLASH; -var constants_33 = constants$2.SLASH_SLASH; -var constants_34 = constants$2.BRACE_START; -var constants_35 = constants$2.BANG; -var constants_36 = constants$2.ONE_DOT; -var constants_37 = constants$2.TWO_DOTS; -var constants_38 = constants$2.STAR; -var constants_39 = constants$2.GLOBSTAR; -var constants_40 = constants$2.ROOT_GLOBSTAR; -var constants_41 = constants$2.SLASH_GLOBSTAR; -var constants_42 = constants$2.DIR_SUFFIX; -var constants_43 = constants$2.ANYMATCH_OPTS; -var constants_44 = constants$2.STRING_TYPE; -var constants_45 = constants$2.FUNCTION_TYPE; -var constants_46 = constants$2.EMPTY_STR; -var constants_47 = constants$2.EMPTY_FN; -var constants_48 = constants$2.IDENTITY_FN; -var constants_49 = constants$2.isWindows; -var constants_50 = constants$2.isMacos; -var constants_51 = constants$2.isLinux; const { promisify: promisify$1 } = util__default['default']; @@ -23235,18 +23000,14 @@ const setFsWatchFileListener = (path, fullPath, options, handlers) => { const {listener, rawEmitter} = handlers; let cont = FsWatchFileInstances.get(fullPath); - /* eslint-disable no-unused-vars, prefer-destructuring */ - let listeners = new Set(); - let rawEmitters = new Set(); - const copts = cont && cont.options; if (copts && (copts.persistent < options.persistent || copts.interval > options.interval)) { // "Upgrade" the watcher to persistence or a quicker interval. // This creates some unlikely edge case issues if the user mixes // settings in a very weird way, but solving for those cases // doesn't seem worthwhile for the added complexity. - listeners = cont.listeners; - rawEmitters = cont.rawEmitters; + cont.listeners; + cont.rawEmitters; fs__default['default'].unwatchFile(fullPath); cont = undefined; } @@ -23943,8 +23704,7 @@ handleEvent(event, path, fullPath, realPath, parent, watchedDir, item, info, opt * @returns {Function} closer for the watcher instance */ _watchWithFsEvents(watchPath, realPath, transform, globFilter) { - if (this.fsw.closed) return; - if (this.fsw._isIgnored(watchPath)) return; + if (this.fsw.closed || this.fsw._isIgnored(watchPath)) return; const opts = this.fsw.options; const watchCallback = async (fullPath, flags, info) => { if (this.fsw.closed) return; @@ -24173,7 +23933,7 @@ const { EventEmitter } = events__default['default']; const { promisify: promisify$3 } = util__default['default']; -const anymatch = anymatch_1.default; +const anymatch$1 = anymatch_1.default; @@ -24204,7 +23964,7 @@ const { SLASH: SLASH$1, SLASH_SLASH, BRACE_START: BRACE_START$1, - BANG: BANG$1, + BANG: BANG$2, ONE_DOT, TWO_DOTS, GLOBSTAR: GLOBSTAR$1, @@ -24242,7 +24002,7 @@ const readdir$2 = promisify$3(fs__default['default'].readdir); * @property {Function} filterDir */ -const arrify = (value = []) => Array.isArray(value) ? value : [value]; +const arrify$1 = (value = []) => Array.isArray(value) ? value : [value]; const flatten = (list, result = []) => { list.forEach(item => { if (Array.isArray(item)) { @@ -24258,7 +24018,7 @@ const unifyPaths = (paths_) => { /** * @type {Array<String>} */ - const paths = flatten(arrify(paths_)); + const paths = flatten(arrify$1(paths_)); if (!paths.every(p => typeof p === STRING_TYPE)) { throw new TypeError(`Non-string provided as watch path: ${paths}`); } @@ -24295,8 +24055,8 @@ const getAbsolutePath = (path, cwd) => { if (path__default['default'].isAbsolute(path)) { return path; } - if (path.startsWith(BANG$1)) { - return BANG$1 + path__default['default'].join(cwd, path.slice(1)); + if (path.startsWith(BANG$2)) { + return BANG$2 + path__default['default'].join(cwd, path.slice(1)); } return path__default['default'].join(cwd, path); }; @@ -24378,7 +24138,7 @@ class WatchHelper { /** @type {object|boolean} */ if (path === EMPTY_STR$1) this.hasGlob = false; this.globSymlink = this.hasGlob && follow ? undefined : false; - this.globFilter = this.hasGlob ? anymatch(path, undefined, ANYMATCH_OPTS) : false; + this.globFilter = this.hasGlob ? anymatch$1(path, undefined, ANYMATCH_OPTS) : false; this.dirParts = this.getDirParts(path); this.dirParts.forEach((parts) => { if (parts.length > 1) parts.pop(); @@ -24436,7 +24196,7 @@ class WatchHelper { this.unmatchedGlob = !this.dirParts.some((parts) => { return parts.every((part, i) => { if (part === GLOBSTAR$1) globstar = true; - return globstar || !entryParts[0][i] || anymatch(part, entryParts[0][i], ANYMATCH_OPTS); + return globstar || !entryParts[0][i] || anymatch$1(part, entryParts[0][i], ANYMATCH_OPTS); }); }); } @@ -24531,7 +24291,7 @@ constructor(_opts) { if (!awf.pollInterval) awf.pollInterval = 100; this._pendingWrites = new Map(); } - if (opts.ignored) opts.ignored = arrify(opts.ignored); + if (opts.ignored) opts.ignored = arrify$1(opts.ignored); let readyCalls = 0; this._emitReady = () => { @@ -24585,7 +24345,7 @@ add(paths_, _origAdd, _internal) { // set aside negated glob strings paths = paths.filter((path) => { - if (path.startsWith(BANG$1)) { + if (path.startsWith(BANG$2)) { this._ignoredPaths.add(path.slice(1)); return false; } @@ -24931,11 +24691,11 @@ _isIgnored(path, stats) { const ign = this.options.ignored; const ignored = ign && ign.map(normalizeIgnored(cwd)); - const paths = arrify(ignored) + const paths = arrify$1(ignored) .filter((path) => typeof path === STRING_TYPE && !isGlob(path)) .map((path) => path + SLASH_GLOBSTAR); const list = this._getGlobIgnored().map(normalizeIgnored(cwd)).concat(ignored, paths); - this._userIgnored = anymatch(list, undefined, ANYMATCH_OPTS); + this._userIgnored = anymatch$1(list, undefined, ANYMATCH_OPTS); } return this._userIgnored([path, stats]); @@ -25032,6 +24792,15 @@ _remove(directory, item, isDirectory) { const wasTracked = parent.has(item); parent.remove(item); + // Fixes issue #1042 -> Relative paths were detected and added as symlinks + // (https://github.com/paulmillr/chokidar/blob/e1753ddbc9571bdc33b4a4af172d52cb6e611c10/lib/nodefs-handler.js#L612), + // but never removed from the map in case the path was deleted. + // This leads to an incorrect state if the path was recreated: + // https://github.com/paulmillr/chokidar/blob/e1753ddbc9571bdc33b4a4af172d52cb6e611c10/lib/nodefs-handler.js#L553 + if (this._symlinkPaths.has(fullPath)) { + this._symlinkPaths.delete(fullPath); + } + // If we wait for this file to be fully written, cancel the wait. let relPath = path; if (this.options.cwd) relPath = path__default['default'].relative(this.options.cwd, path); @@ -25290,8 +25059,8 @@ const camelCase = (input, options) => { var camelcase = camelCase; // TODO: Remove this for the next major release -var _default$4 = camelCase; -camelcase.default = _default$4; +var _default$7 = camelCase; +camelcase.default = _default$7; var minimist = function (args, opts) { if (!opts) opts = {}; @@ -25593,7 +25362,7 @@ let token; let key; let root; -var parse$7 = function parse (text, reviver) { +var parse$6 = function parse (text, reviver) { source$1 = String(text); parseState = 'start'; stack = []; @@ -26404,7 +26173,7 @@ const parseStates = { throw invalidEOF() } - push(); + push$1(); }, beforePropertyName () { @@ -26450,7 +26219,7 @@ const parseStates = { throw invalidEOF() } - push(); + push$1(); }, beforeArrayValue () { @@ -26463,7 +26232,7 @@ const parseStates = { return } - push(); + push$1(); }, afterPropertyValue () { @@ -26520,7 +26289,7 @@ const parseStates = { }, }; -function push () { +function push$1 () { let value; switch (token.type) { @@ -26930,15 +26699,15 @@ var stringify$5 = function stringify (value, replacer, space) { }; const JSON5 = { - parse: parse$7, + parse: parse$6, stringify: stringify$5, }; -var lib$5 = JSON5; +var lib$6 = JSON5; var dist$1 = /*#__PURE__*/Object.freeze({ __proto__: null, - 'default': lib$5 + 'default': lib$6 }); var schema$1 = [ @@ -27103,14 +26872,7 @@ var schema$1 = [ } ]; -var schema$2 = /*#__PURE__*/Object.freeze({ - __proto__: null, - 'default': schema$1 -}); - -var json5 = getCjsExportFromNamespace(dist$1); - -var schema$3 = getCjsExportFromNamespace(schema$2); +var json5 = /*@__PURE__*/getAugmentedNamespace(dist$1); var options_1 = options; @@ -27123,7 +26885,7 @@ var minischema = { boolean: [] }; -schema$3.forEach(addEach); +schema$1.forEach(addEach); // Parse CLI options. function options(flags, configuration) { @@ -27134,7 +26896,7 @@ function options(flags, configuration) { var ext; var report; - schema$3.forEach(function (option) { + schema$1.forEach(function (option) { if (option.type === 'string' && config[option.long] === '') { throw fault_1('Missing value:%s', inspect$1(option).join(' ')) } @@ -27144,7 +26906,7 @@ function options(flags, configuration) { report = reporter$1(config.report); help = [ - inspectAll(schema$3), + inspectAll(schema$1), '', 'Examples:', '', @@ -27281,19 +27043,19 @@ function handleUnknownArgument(flag) { // Long options, always unknown. if (flag.charAt(1) === '-') { - throw fault_1('Unknown option `%s`, expected:\n%s', flag, inspectAll(schema$3)) + throw fault_1('Unknown option `%s`, expected:\n%s', flag, inspectAll(schema$1)) } // Short options, can be grouped. flag.slice(1).split('').forEach(each); function each(key) { - var length = schema$3.length; + var length = schema$1.length; var index = -1; var option; while (++index < length) { - option = schema$3[index]; + option = schema$1[index]; if (option.short === key) { return @@ -27303,7 +27065,7 @@ function handleUnknownArgument(flag) { throw fault_1( 'Unknown short option `-%s`, expected:\n%s', key, - inspectAll(schema$3.filter(short)) + inspectAll(schema$1.filter(short)) ) } @@ -27385,12 +27147,12 @@ function parseJSON(value) { return json5.parse('{' + value + '}') } -var lib$6 = start; +var lib$7 = start; -var noop$1 = Function.prototype; +var noop = Function.prototype; // Fake TTY stream. -var ttyStream = new stream__default['default'].Readable(); +var ttyStream = new require$$0__default['default'].Readable(); ttyStream.isTTY = true; // Exit, lazily, with the correct exit status code. @@ -27425,14 +27187,14 @@ function start(cliConfig) { config.helpMessage, '' ].join('\n'), - noop$1 + noop ); return } if (config.version) { - process.stdout.write(cliConfig.version + '\n', noop$1); + process.stdout.write(cliConfig.version + '\n', noop); return } @@ -27449,7 +27211,7 @@ function start(cliConfig) { process.stderr.write( source.bold('Watching...') + ' (press CTRL+C to exit)\n', - noop$1 + noop ); // Prevent infinite loop if set to regeneration. @@ -27458,13 +27220,13 @@ function start(cliConfig) { process.stderr.write( source.yellow('Note') + ': Ignoring `--output` until exit.\n', - noop$1 + noop ); } } // Initial run. - lib$4(config, done); + lib$5(config, done); // Handle complete run. function done(err, code, context) { @@ -27500,12 +27262,12 @@ function start(cliConfig) { function onchange(filePath) { config.files = [filePath]; - lib$4(config, done); + lib$5(config, done); } function onsigint() { // Hide the `^C` in terminal. - process.stderr.write('\n', noop$1); + process.stderr.write('\n', noop); clean(); @@ -27513,7 +27275,7 @@ function start(cliConfig) { if (output === true) { config.output = output; config.watch = false; - lib$4(config, done); + lib$5(config, done); } } } @@ -27527,7 +27289,7 @@ function fail$1(err, pretty) { exitStatus = 1; - process.stderr.write(message.trim() + '\n', noop$1); + process.stderr.write(message.trim() + '\n', noop); } function onexit() { @@ -27536,9 +27298,9 @@ function onexit() { /* eslint-enable unicorn/no-process-exit */ } -var unifiedArgs = lib$6; +var unifiedArgs = lib$7; -var markdownExtensions = [ +var require$$0$2 = [ "md", "markdown", "mdown", @@ -27549,14 +27311,7 @@ var markdownExtensions = [ "ron" ]; -var markdownExtensions$1 = /*#__PURE__*/Object.freeze({ - __proto__: null, - 'default': markdownExtensions -}); - -var require$$0$2 = getCjsExportFromNamespace(markdownExtensions$1); - -var markdownExtensions$2 = require$$0$2; +var markdownExtensions = require$$0$2; var bail_1 = bail; @@ -28141,6 +27896,1991 @@ function assertDone(name, asyncName, complete) { } } +var mdastUtilToString = toString$3; + +// Get the text content of a node. +// Prefer the nodeās plain-text fields, otherwise serialize its children, +// and if the given value is an array, serialize the nodes in it. +function toString$3(node) { + return ( + (node && + (node.value || + node.alt || + node.title || + ('children' in node && all(node.children)) || + ('length' in node && all(node)))) || + '' + ) +} + +function all(values) { + var result = []; + var index = -1; + + while (++index < values.length) { + result[index] = toString$3(values[index]); + } + + return result.join('') +} + +var assign = Object.assign; + +var assign_1 = assign; + +var own$3 = {}.hasOwnProperty; + +var hasOwnProperty = own$3; + +function normalizeIdentifier(value) { + return ( + value // Collapse Markdown whitespace. + .replace(/[\t\n\r ]+/g, ' ') // Trim. + .replace(/^ | $/g, '') // Some characters are considered āuppercaseā, but if their lowercase + // counterpart is uppercased will result in a different uppercase + // character. + // Hence, to get that form, we perform both lower- and uppercase. + // Upper case makes sure keys will not interact with default prototypal + // methods: no object method is uppercase. + .toLowerCase() + .toUpperCase() + ) +} + +var normalizeIdentifier_1 = normalizeIdentifier; + +var fromCharCode = String.fromCharCode; + +var fromCharCode_1 = fromCharCode; + +function safeFromInt(value, base) { + var code = parseInt(value, base); + + if ( + // C0 except for HT, LF, FF, CR, space + code < 9 || + code === 11 || + (code > 13 && code < 32) || // Control character (DEL) of the basic block and C1 controls. + (code > 126 && code < 160) || // Lone high surrogates and low surrogates. + (code > 55295 && code < 57344) || // Noncharacters. + (code > 64975 && code < 65008) || + (code & 65535) === 65535 || + (code & 65535) === 65534 || // Out of range + code > 1114111 + ) { + return '\uFFFD' + } + + return fromCharCode_1(code) +} + +var safeFromInt_1 = safeFromInt; + +function miniflat(value) { + return value === null || value === undefined + ? [] + : 'length' in value + ? value + : [value] +} + +var miniflat_1 = miniflat; + +function markdownLineEnding(code) { + return code < -2 +} + +var markdownLineEnding_1 = markdownLineEnding; + +function markdownSpace(code) { + return code === -2 || code === -1 || code === 32 +} + +var markdownSpace_1 = markdownSpace; + +function spaceFactory(effects, ok, type, max) { + var limit = max ? max - 1 : Infinity; + var size = 0; + return start + + function start(code) { + if (markdownSpace_1(code)) { + effects.enter(type); + return prefix(code) + } + + return ok(code) + } + + function prefix(code) { + if (markdownSpace_1(code) && size++ < limit) { + effects.consume(code); + return prefix + } + + effects.exit(type); + return ok(code) + } +} + +var factorySpace = spaceFactory; + +var tokenize = initializeContent; + +function initializeContent(effects) { + var contentStart = effects.attempt( + this.parser.constructs.contentInitial, + afterContentStartConstruct, + paragraphInitial + ); + var previous; + return contentStart + + function afterContentStartConstruct(code) { + if (code === null) { + effects.consume(code); + return + } + + effects.enter('lineEnding'); + effects.consume(code); + effects.exit('lineEnding'); + return factorySpace(effects, contentStart, 'linePrefix') + } + + function paragraphInitial(code) { + effects.enter('paragraph'); + return lineStart(code) + } + + function lineStart(code) { + var token = effects.enter('chunkText', { + contentType: 'text', + previous: previous + }); + + if (previous) { + previous.next = token; + } + + previous = token; + return data(code) + } + + function data(code) { + if (code === null) { + effects.exit('chunkText'); + effects.exit('paragraph'); + effects.consume(code); + return + } + + if (markdownLineEnding_1(code)) { + effects.consume(code); + effects.exit('chunkText'); + return lineStart + } // Data. + + effects.consume(code); + return data + } +} + +var tokenize_1 = tokenize; + +var content = /*#__PURE__*/Object.defineProperty({ + tokenize: tokenize_1 +}, '__esModule', {value: true}); + +var partialBlankLine = { + tokenize: tokenizePartialBlankLine, + partial: true +}; + +function tokenizePartialBlankLine(effects, ok, nok) { + return factorySpace(effects, afterWhitespace, 'linePrefix') + + function afterWhitespace(code) { + return code === null || markdownLineEnding_1(code) ? ok(code) : nok(code) + } +} + +var partialBlankLine_1 = partialBlankLine; + +var tokenize$1 = initializeDocument; +var containerConstruct = { + tokenize: tokenizeContainer +}; +var lazyFlowConstruct = { + tokenize: tokenizeLazyFlow +}; + +function initializeDocument(effects) { + var self = this; + var stack = []; + var continued = 0; + var inspectConstruct = { + tokenize: tokenizeInspect, + partial: true + }; + var inspectResult; + var childFlow; + var childToken; + return start + + function start(code) { + if (continued < stack.length) { + self.containerState = stack[continued][1]; + return effects.attempt( + stack[continued][0].continuation, + documentContinue, + documentContinued + )(code) + } + + return documentContinued(code) + } + + function documentContinue(code) { + continued++; + return start(code) + } + + function documentContinued(code) { + // If weāre in a concrete construct (such as when expecting another line of + // HTML, or we resulted in lazy content), we can immediately start flow. + if (inspectResult && inspectResult.flowContinue) { + return flowStart(code) + } + + self.interrupt = + childFlow && + childFlow.currentConstruct && + childFlow.currentConstruct.interruptible; + self.containerState = {}; + return effects.attempt( + containerConstruct, + containerContinue, + flowStart + )(code) + } + + function containerContinue(code) { + stack.push([self.currentConstruct, self.containerState]); + self.containerState = undefined; + return documentContinued(code) + } + + function flowStart(code) { + if (code === null) { + exitContainers(0, true); + effects.consume(code); + return + } + + childFlow = childFlow || self.parser.flow(self.now()); + effects.enter('chunkFlow', { + contentType: 'flow', + previous: childToken, + _tokenizer: childFlow + }); + return flowContinue(code) + } + + function flowContinue(code) { + if (code === null) { + continueFlow(effects.exit('chunkFlow')); + return flowStart(code) + } + + if (markdownLineEnding_1(code)) { + effects.consume(code); + continueFlow(effects.exit('chunkFlow')); + return effects.check(inspectConstruct, documentAfterPeek) + } + + effects.consume(code); + return flowContinue + } + + function documentAfterPeek(code) { + exitContainers( + inspectResult.continued, + inspectResult && inspectResult.flowEnd + ); + continued = 0; + return start(code) + } + + function continueFlow(token) { + if (childToken) childToken.next = token; + childToken = token; + childFlow.lazy = inspectResult && inspectResult.lazy; + childFlow.defineSkip(token.start); + childFlow.write(self.sliceStream(token)); + } + + function exitContainers(size, end) { + var index = stack.length; // Close the flow. + + if (childFlow && end) { + childFlow.write([null]); + childToken = childFlow = undefined; + } // Exit open containers. + + while (index-- > size) { + self.containerState = stack[index][1]; + stack[index][0].exit.call(self, effects); + } + + stack.length = size; + } + + function tokenizeInspect(effects, ok) { + var subcontinued = 0; + inspectResult = {}; + return inspectStart + + function inspectStart(code) { + if (subcontinued < stack.length) { + self.containerState = stack[subcontinued][1]; + return effects.attempt( + stack[subcontinued][0].continuation, + inspectContinue, + inspectLess + )(code) + } // If weāre continued but in a concrete flow, we canāt have more + // containers. + + if (childFlow.currentConstruct && childFlow.currentConstruct.concrete) { + inspectResult.flowContinue = true; + return inspectDone(code) + } + + self.interrupt = + childFlow.currentConstruct && childFlow.currentConstruct.interruptible; + self.containerState = {}; + return effects.attempt( + containerConstruct, + inspectFlowEnd, + inspectDone + )(code) + } + + function inspectContinue(code) { + subcontinued++; + return self.containerState._closeFlow + ? inspectFlowEnd(code) + : inspectStart(code) + } + + function inspectLess(code) { + if (childFlow.currentConstruct && childFlow.currentConstruct.lazy) { + // Maybe another container? + self.containerState = {}; + return effects.attempt( + containerConstruct, + inspectFlowEnd, // Maybe flow, or a blank line? + effects.attempt( + lazyFlowConstruct, + inspectFlowEnd, + effects.check(partialBlankLine_1, inspectFlowEnd, inspectLazy) + ) + )(code) + } // Otherwise weāre interrupting. + + return inspectFlowEnd(code) + } + + function inspectLazy(code) { + // Act as if all containers are continued. + subcontinued = stack.length; + inspectResult.lazy = true; + inspectResult.flowContinue = true; + return inspectDone(code) + } // Weāre done with flow if we have more containers, or an interruption. + + function inspectFlowEnd(code) { + inspectResult.flowEnd = true; + return inspectDone(code) + } + + function inspectDone(code) { + inspectResult.continued = subcontinued; + self.interrupt = self.containerState = undefined; + return ok(code) + } + } +} + +function tokenizeContainer(effects, ok, nok) { + return factorySpace( + effects, + effects.attempt(this.parser.constructs.document, ok, nok), + 'linePrefix', + this.parser.constructs.disable.null.indexOf('codeIndented') > -1 + ? undefined + : 4 + ) +} + +function tokenizeLazyFlow(effects, ok, nok) { + return factorySpace( + effects, + effects.lazy(this.parser.constructs.flow, ok, nok), + 'linePrefix', + this.parser.constructs.disable.null.indexOf('codeIndented') > -1 + ? undefined + : 4 + ) +} + +var tokenize_1$1 = tokenize$1; + +var document$1 = /*#__PURE__*/Object.defineProperty({ + tokenize: tokenize_1$1 +}, '__esModule', {value: true}); + +// Counts tabs based on their expanded size, and CR+LF as one character. + +function sizeChunks(chunks) { + var index = -1; + var size = 0; + + while (++index < chunks.length) { + size += typeof chunks[index] === 'string' ? chunks[index].length : 1; + } + + return size +} + +var sizeChunks_1 = sizeChunks; + +function prefixSize(events, type) { + var tail = events[events.length - 1]; + if (!tail || tail[1].type !== type) return 0 + return sizeChunks_1(tail[2].sliceStream(tail[1])) +} + +var prefixSize_1 = prefixSize; + +var splice = [].splice; + +var splice_1 = splice; + +// causes a stack overflow in V8 when trying to insert 100k items for instance. + +function chunkedSplice(list, start, remove, items) { + var end = list.length; + var chunkStart = 0; + var parameters; // Make start between zero and `end` (included). + + if (start < 0) { + start = -start > end ? 0 : end + start; + } else { + start = start > end ? end : start; + } + + remove = remove > 0 ? remove : 0; // No need to chunk the items if thereās only a couple (10k) items. + + if (items.length < 10000) { + parameters = Array.from(items); + parameters.unshift(start, remove); + splice_1.apply(list, parameters); + } else { + // Delete `remove` items starting from `start` + if (remove) splice_1.apply(list, [start, remove]); // Insert the items in chunks to not cause stack overflows. + + while (chunkStart < items.length) { + parameters = items.slice(chunkStart, chunkStart + 10000); + parameters.unshift(start, 0); + splice_1.apply(list, parameters); + chunkStart += 10000; + start += 10000; + } + } +} + +var chunkedSplice_1 = chunkedSplice; + +function shallow(object) { + return assign_1({}, object) +} + +var shallow_1 = shallow; + +function subtokenize(events) { + var jumps = {}; + var index = -1; + var event; + var lineIndex; + var otherIndex; + var otherEvent; + var parameters; + var subevents; + var more; + + while (++index < events.length) { + while (index in jumps) { + index = jumps[index]; + } + + event = events[index]; // Add a hook for the GFM tasklist extension, which needs to know if text + // is in the first content of a list item. + + if ( + index && + event[1].type === 'chunkFlow' && + events[index - 1][1].type === 'listItemPrefix' + ) { + subevents = event[1]._tokenizer.events; + otherIndex = 0; + + if ( + otherIndex < subevents.length && + subevents[otherIndex][1].type === 'lineEndingBlank' + ) { + otherIndex += 2; + } + + if ( + otherIndex < subevents.length && + subevents[otherIndex][1].type === 'content' + ) { + while (++otherIndex < subevents.length) { + if (subevents[otherIndex][1].type === 'content') { + break + } + + if (subevents[otherIndex][1].type === 'chunkText') { + subevents[otherIndex][1].isInFirstContentOfListItem = true; + otherIndex++; + } + } + } + } // Enter. + + if (event[0] === 'enter') { + if (event[1].contentType) { + assign_1(jumps, subcontent(events, index)); + index = jumps[index]; + more = true; + } + } // Exit. + else if (event[1]._container || event[1]._movePreviousLineEndings) { + otherIndex = index; + lineIndex = undefined; + + while (otherIndex--) { + otherEvent = events[otherIndex]; + + if ( + otherEvent[1].type === 'lineEnding' || + otherEvent[1].type === 'lineEndingBlank' + ) { + if (otherEvent[0] === 'enter') { + if (lineIndex) { + events[lineIndex][1].type = 'lineEndingBlank'; + } + + otherEvent[1].type = 'lineEnding'; + lineIndex = otherIndex; + } + } else { + break + } + } + + if (lineIndex) { + // Fix position. + event[1].end = shallow_1(events[lineIndex][1].start); // Switch container exit w/ line endings. + + parameters = events.slice(lineIndex, index); + parameters.unshift(event); + chunkedSplice_1(events, lineIndex, index - lineIndex + 1, parameters); + } + } + } + + return !more +} + +function subcontent(events, eventIndex) { + var token = events[eventIndex][1]; + var context = events[eventIndex][2]; + var startPosition = eventIndex - 1; + var startPositions = []; + var tokenizer = + token._tokenizer || context.parser[token.contentType](token.start); + var childEvents = tokenizer.events; + var jumps = []; + var gaps = {}; + var stream; + var previous; + var index; + var entered; + var end; + var adjust; // Loop forward through the linked tokens to pass them in order to the + // subtokenizer. + + while (token) { + // Find the position of the event for this token. + while (events[++startPosition][1] !== token) { + // Empty. + } + + startPositions.push(startPosition); + + if (!token._tokenizer) { + stream = context.sliceStream(token); + + if (!token.next) { + stream.push(null); + } + + if (previous) { + tokenizer.defineSkip(token.start); + } + + if (token.isInFirstContentOfListItem) { + tokenizer._gfmTasklistFirstContentOfListItem = true; + } + + tokenizer.write(stream); + + if (token.isInFirstContentOfListItem) { + tokenizer._gfmTasklistFirstContentOfListItem = undefined; + } + } // Unravel the next token. + + previous = token; + token = token.next; + } // Now, loop back through all events (and linked tokens), to figure out which + // parts belong where. + + token = previous; + index = childEvents.length; + + while (index--) { + // Make sure weāve at least seen something (final eol is part of the last + // token). + if (childEvents[index][0] === 'enter') { + entered = true; + } else if ( + // Find a void token that includes a break. + entered && + childEvents[index][1].type === childEvents[index - 1][1].type && + childEvents[index][1].start.line !== childEvents[index][1].end.line + ) { + add(childEvents.slice(index + 1, end)); + // Help GC. + token._tokenizer = token.next = undefined; + token = token.previous; + end = index + 1; + } + } + + // Help GC. + tokenizer.events = token._tokenizer = token.next = undefined; // Do head: + + add(childEvents.slice(0, end)); + index = -1; + adjust = 0; + + while (++index < jumps.length) { + gaps[adjust + jumps[index][0]] = adjust + jumps[index][1]; + adjust += jumps[index][1] - jumps[index][0] - 1; + } + + return gaps + + function add(slice) { + var start = startPositions.pop(); + jumps.unshift([start, start + slice.length - 1]); + chunkedSplice_1(events, start, 2, slice); + } +} + +var subtokenize_1 = subtokenize; + +// No name because it must not be turned off. +var content$1 = { + tokenize: tokenizeContent, + resolve: resolveContent, + interruptible: true, + lazy: true +}; +var continuationConstruct = { + tokenize: tokenizeContinuation, + partial: true +}; // Content is transparent: itās parsed right now. That way, definitions are also +// parsed right now: before text in paragraphs (specifically, media) are parsed. + +function resolveContent(events) { + subtokenize_1(events); + return events +} + +function tokenizeContent(effects, ok) { + var previous; + return start + + function start(code) { + effects.enter('content'); + previous = effects.enter('chunkContent', { + contentType: 'content' + }); + return data(code) + } + + function data(code) { + if (code === null) { + return contentEnd(code) + } + + if (markdownLineEnding_1(code)) { + return effects.check( + continuationConstruct, + contentContinue, + contentEnd + )(code) + } // Data. + + effects.consume(code); + return data + } + + function contentEnd(code) { + effects.exit('chunkContent'); + effects.exit('content'); + return ok(code) + } + + function contentContinue(code) { + effects.consume(code); + effects.exit('chunkContent'); + previous = previous.next = effects.enter('chunkContent', { + contentType: 'content', + previous: previous + }); + return data + } +} + +function tokenizeContinuation(effects, ok, nok) { + var self = this; + return startLookahead + + function startLookahead(code) { + effects.enter('lineEnding'); + effects.consume(code); + effects.exit('lineEnding'); + return factorySpace(effects, prefixed, 'linePrefix') + } + + function prefixed(code) { + if (code === null || markdownLineEnding_1(code)) { + return nok(code) + } + + if ( + self.parser.constructs.disable.null.indexOf('codeIndented') > -1 || + prefixSize_1(self.events, 'linePrefix') < 4 + ) { + return effects.interrupt(self.parser.constructs.flow, nok, ok)(code) + } + + return ok(code) + } +} + +var content_1 = content$1; + +var tokenize$2 = initializeFlow; + +function initializeFlow(effects) { + var self = this; + var initial = effects.attempt( + // Try to parse a blank line. + partialBlankLine_1, + atBlankEnding, // Try to parse initial flow (essentially, only code). + effects.attempt( + this.parser.constructs.flowInitial, + afterConstruct, + factorySpace( + effects, + effects.attempt( + this.parser.constructs.flow, + afterConstruct, + effects.attempt(content_1, afterConstruct) + ), + 'linePrefix' + ) + ) + ); + return initial + + function atBlankEnding(code) { + if (code === null) { + effects.consume(code); + return + } + + effects.enter('lineEndingBlank'); + effects.consume(code); + effects.exit('lineEndingBlank'); + self.currentConstruct = undefined; + return initial + } + + function afterConstruct(code) { + if (code === null) { + effects.consume(code); + return + } + + effects.enter('lineEnding'); + effects.consume(code); + effects.exit('lineEnding'); + self.currentConstruct = undefined; + return initial + } +} + +var tokenize_1$2 = tokenize$2; + +var flow = /*#__PURE__*/Object.defineProperty({ + tokenize: tokenize_1$2 +}, '__esModule', {value: true}); + +var text = initializeFactory('text'); +var string = initializeFactory('string'); +var resolver = { + resolveAll: createResolver() +}; + +function initializeFactory(field) { + return { + tokenize: initializeText, + resolveAll: createResolver( + field === 'text' ? resolveAllLineSuffixes : undefined + ) + } + + function initializeText(effects) { + var self = this; + var constructs = this.parser.constructs[field]; + var text = effects.attempt(constructs, start, notText); + return start + + function start(code) { + return atBreak(code) ? text(code) : notText(code) + } + + function notText(code) { + if (code === null) { + effects.consume(code); + return + } + + effects.enter('data'); + effects.consume(code); + return data + } + + function data(code) { + if (atBreak(code)) { + effects.exit('data'); + return text(code) + } // Data. + + effects.consume(code); + return data + } + + function atBreak(code) { + var list = constructs[code]; + var index = -1; + + if (code === null) { + return true + } + + if (list) { + while (++index < list.length) { + if ( + !list[index].previous || + list[index].previous.call(self, self.previous) + ) { + return true + } + } + } + } + } +} + +function createResolver(extraResolver) { + return resolveAllText + + function resolveAllText(events, context) { + var index = -1; + var enter; // A rather boring computation (to merge adjacent `data` events) which + // improves mm performance by 29%. + + while (++index <= events.length) { + if (enter === undefined) { + if (events[index] && events[index][1].type === 'data') { + enter = index; + index++; + } + } else if (!events[index] || events[index][1].type !== 'data') { + // Donāt do anything if there is one data token. + if (index !== enter + 2) { + events[enter][1].end = events[index - 1][1].end; + events.splice(enter + 2, index - enter - 2); + index = enter + 2; + } + + enter = undefined; + } + } + + return extraResolver ? extraResolver(events, context) : events + } +} // A rather ugly set of instructions which again looks at chunks in the input +// stream. +// The reason to do this here is that it is *much* faster to parse in reverse. +// And that we canāt hook into `null` to split the line suffix before an EOF. +// To do: figure out if we can make this into a clean utility, or even in core. +// As it will be useful for GFMs literal autolink extension (and maybe even +// tables?) + +function resolveAllLineSuffixes(events, context) { + var eventIndex = -1; + var chunks; + var data; + var chunk; + var index; + var bufferIndex; + var size; + var tabs; + var token; + + while (++eventIndex <= events.length) { + if ( + (eventIndex === events.length || + events[eventIndex][1].type === 'lineEnding') && + events[eventIndex - 1][1].type === 'data' + ) { + data = events[eventIndex - 1][1]; + chunks = context.sliceStream(data); + index = chunks.length; + bufferIndex = -1; + size = 0; + tabs = undefined; + + while (index--) { + chunk = chunks[index]; + + if (typeof chunk === 'string') { + bufferIndex = chunk.length; + + while (chunk.charCodeAt(bufferIndex - 1) === 32) { + size++; + bufferIndex--; + } + + if (bufferIndex) break + bufferIndex = -1; + } // Number + else if (chunk === -2) { + tabs = true; + size++; + } else if (chunk === -1); + else { + // Replacement character, exit. + index++; + break + } + } + + if (size) { + token = { + type: + eventIndex === events.length || tabs || size < 2 + ? 'lineSuffix' + : 'hardBreakTrailing', + start: { + line: data.end.line, + column: data.end.column - size, + offset: data.end.offset - size, + _index: data.start._index + index, + _bufferIndex: index + ? bufferIndex + : data.start._bufferIndex + bufferIndex + }, + end: shallow_1(data.end) + }; + data.end = shallow_1(token.start); + + if (data.start.offset === data.end.offset) { + assign_1(data, token); + } else { + events.splice( + eventIndex, + 0, + ['enter', token, context], + ['exit', token, context] + ); + eventIndex += 2; + } + } + + eventIndex++; + } + } + + return events +} + +var resolver_1 = resolver; +var string_1 = string; +var text_2 = text; + +var text_1 = /*#__PURE__*/Object.defineProperty({ + resolver: resolver_1, + string: string_1, + text: text_2 +}, '__esModule', {value: true}); + +function combineExtensions(extensions) { + var all = {}; + var index = -1; + + while (++index < extensions.length) { + extension$1(all, extensions[index]); + } + + return all +} + +function extension$1(all, extension) { + var hook; + var left; + var right; + var code; + + for (hook in extension) { + left = hasOwnProperty.call(all, hook) ? all[hook] : (all[hook] = {}); + right = extension[hook]; + + for (code in right) { + left[code] = constructs( + miniflat_1(right[code]), + hasOwnProperty.call(left, code) ? left[code] : [] + ); + } + } +} + +function constructs(list, existing) { + var index = -1; + var before = []; + + while (++index < list.length) { +(list[index].add === 'after' ? existing : before).push(list[index]); + } + + chunkedSplice_1(existing, 0, 0, before); + return existing +} + +var combineExtensions_1 = combineExtensions; + +function chunkedPush(list, items) { + if (list.length) { + chunkedSplice_1(list, list.length, 0, items); + return list + } + + return items +} + +var chunkedPush_1 = chunkedPush; + +function resolveAll(constructs, events, context) { + var called = []; + var index = -1; + var resolve; + + while (++index < constructs.length) { + resolve = constructs[index].resolveAll; + + if (resolve && called.indexOf(resolve) < 0) { + events = resolve(events, context); + called.push(resolve); + } + } + + return events +} + +var resolveAll_1 = resolveAll; + +function serializeChunks(chunks) { + var index = -1; + var result = []; + var chunk; + var value; + var atTab; + + while (++index < chunks.length) { + chunk = chunks[index]; + + if (typeof chunk === 'string') { + value = chunk; + } else if (chunk === -5) { + value = '\r'; + } else if (chunk === -4) { + value = '\n'; + } else if (chunk === -3) { + value = '\r' + '\n'; + } else if (chunk === -2) { + value = '\t'; + } else if (chunk === -1) { + if (atTab) continue + value = ' '; + } else { + // Currently only replacement character. + value = fromCharCode_1(chunk); + } + + atTab = chunk === -2; + result.push(value); + } + + return result.join('') +} + +var serializeChunks_1 = serializeChunks; + +function sliceChunks(chunks, token) { + var startIndex = token.start._index; + var startBufferIndex = token.start._bufferIndex; + var endIndex = token.end._index; + var endBufferIndex = token.end._bufferIndex; + var view; + + if (startIndex === endIndex) { + view = [chunks[startIndex].slice(startBufferIndex, endBufferIndex)]; + } else { + view = chunks.slice(startIndex, endIndex); + + if (startBufferIndex > -1) { + view[0] = view[0].slice(startBufferIndex); + } + + if (endBufferIndex > 0) { + view.push(chunks[endIndex].slice(0, endBufferIndex)); + } + } + + return view +} + +var sliceChunks_1 = sliceChunks; + +// Create a tokenizer. +// Tokenizers deal with one type of data (e.g., containers, flow, text). +// The parser is the object dealing with it all. +// `initialize` works like other constructs, except that only its `tokenize` +// function is used, in which case it doesnāt receive an `ok` or `nok`. +// `from` can be given to set the point before the first character, although +// when further lines are indented, they must be set with `defineSkip`. +function createTokenizer(parser, initialize, from) { + var point = from + ? shallow_1(from) + : { + line: 1, + column: 1, + offset: 0 + }; + var columnStart = {}; + var resolveAllConstructs = []; + var chunks = []; + var stack = []; + + var effects = { + consume: consume, + enter: enter, + exit: exit, + attempt: constructFactory(onsuccessfulconstruct), + check: constructFactory(onsuccessfulcheck), + interrupt: constructFactory(onsuccessfulcheck, { + interrupt: true + }), + lazy: constructFactory(onsuccessfulcheck, { + lazy: true + }) + }; // State and tools for resolving and serializing. + + var context = { + previous: null, + events: [], + parser: parser, + sliceStream: sliceStream, + sliceSerialize: sliceSerialize, + now: now, + defineSkip: skip, + write: write + }; // The state function. + + var state = initialize.tokenize.call(context, effects); // Track which character we expect to be consumed, to catch bugs. + + if (initialize.resolveAll) { + resolveAllConstructs.push(initialize); + } // Store where we are in the input stream. + + point._index = 0; + point._bufferIndex = -1; + return context + + function write(slice) { + chunks = chunkedPush_1(chunks, slice); + main(); // Exit if weāre not done, resolve might change stuff. + + if (chunks[chunks.length - 1] !== null) { + return [] + } + + addResult(initialize, 0); // Otherwise, resolve, and exit. + + context.events = resolveAll_1(resolveAllConstructs, context.events, context); + return context.events + } // + // Tools. + // + + function sliceSerialize(token) { + return serializeChunks_1(sliceStream(token)) + } + + function sliceStream(token) { + return sliceChunks_1(chunks, token) + } + + function now() { + return shallow_1(point) + } + + function skip(value) { + columnStart[value.line] = value.column; + accountForPotentialSkip(); + } // + // State management. + // + // Main loop (note that `_index` and `_bufferIndex` in `point` are modified by + // `consume`). + // Here is where we walk through the chunks, which either include strings of + // several characters, or numerical character codes. + // The reason to do this in a loop instead of a call is so the stack can + // drain. + + function main() { + var chunkIndex; + var chunk; + + while (point._index < chunks.length) { + chunk = chunks[point._index]; // If weāre in a buffer chunk, loop through it. + + if (typeof chunk === 'string') { + chunkIndex = point._index; + + if (point._bufferIndex < 0) { + point._bufferIndex = 0; + } + + while ( + point._index === chunkIndex && + point._bufferIndex < chunk.length + ) { + go(chunk.charCodeAt(point._bufferIndex)); + } + } else { + go(chunk); + } + } + } // Deal with one code. + + function go(code) { + state = state(code); + } // Move a character forward. + + function consume(code) { + if (markdownLineEnding_1(code)) { + point.line++; + point.column = 1; + point.offset += code === -3 ? 2 : 1; + accountForPotentialSkip(); + } else if (code !== -1) { + point.column++; + point.offset++; + } // Not in a string chunk. + + if (point._bufferIndex < 0) { + point._index++; + } else { + point._bufferIndex++; // At end of string chunk. + + if (point._bufferIndex === chunks[point._index].length) { + point._bufferIndex = -1; + point._index++; + } + } // Expose the previous character. + + context.previous = code; // Mark as consumed. + } // Start a token. + + function enter(type, fields) { + var token = fields || {}; + token.type = type; + token.start = now(); + context.events.push(['enter', token, context]); + stack.push(token); + return token + } // Stop a token. + + function exit(type) { + var token = stack.pop(); + token.end = now(); + context.events.push(['exit', token, context]); + return token + } // Use results. + + function onsuccessfulconstruct(construct, info) { + addResult(construct, info.from); + } // Discard results. + + function onsuccessfulcheck(construct, info) { + info.restore(); + } // Factory to attempt/check/interrupt. + + function constructFactory(onreturn, fields) { + return hook // Handle either an object mapping codes to constructs, a list of + // constructs, or a single construct. + + function hook(constructs, returnState, bogusState) { + var listOfConstructs; + var constructIndex; + var currentConstruct; + var info; + return constructs.tokenize || 'length' in constructs + ? handleListOfConstructs(miniflat_1(constructs)) + : handleMapOfConstructs + + function handleMapOfConstructs(code) { + if (code in constructs || null in constructs) { + return handleListOfConstructs( + constructs.null + ? /* c8 ignore next */ + miniflat_1(constructs[code]).concat(miniflat_1(constructs.null)) + : constructs[code] + )(code) + } + + return bogusState(code) + } + + function handleListOfConstructs(list) { + listOfConstructs = list; + constructIndex = 0; + return handleConstruct(list[constructIndex]) + } + + function handleConstruct(construct) { + return start + + function start(code) { + // To do: not nede to store if there is no bogus state, probably? + // Currently doesnāt work because `inspect` in document does a check + // w/o a bogus, which doesnāt make sense. But it does seem to help perf + // by not storing. + info = store(); + currentConstruct = construct; + + if (!construct.partial) { + context.currentConstruct = construct; + } + + if ( + construct.name && + context.parser.constructs.disable.null.indexOf(construct.name) > -1 + ) { + return nok() + } + + return construct.tokenize.call( + fields ? assign_1({}, context, fields) : context, + effects, + ok, + nok + )(code) + } + } + + function ok(code) { + onreturn(currentConstruct, info); + return returnState + } + + function nok(code) { + info.restore(); + + if (++constructIndex < listOfConstructs.length) { + return handleConstruct(listOfConstructs[constructIndex]) + } + + return bogusState + } + } + } + + function addResult(construct, from) { + if (construct.resolveAll && resolveAllConstructs.indexOf(construct) < 0) { + resolveAllConstructs.push(construct); + } + + if (construct.resolve) { + chunkedSplice_1( + context.events, + from, + context.events.length - from, + construct.resolve(context.events.slice(from), context) + ); + } + + if (construct.resolveTo) { + context.events = construct.resolveTo(context.events, context); + } + } + + function store() { + var startPoint = now(); + var startPrevious = context.previous; + var startCurrentConstruct = context.currentConstruct; + var startEventsIndex = context.events.length; + var startStack = Array.from(stack); + return { + restore: restore, + from: startEventsIndex + } + + function restore() { + point = startPoint; + context.previous = startPrevious; + context.currentConstruct = startCurrentConstruct; + context.events.length = startEventsIndex; + stack = startStack; + accountForPotentialSkip(); + } + } + + function accountForPotentialSkip() { + if (point.line in columnStart && point.column < 2) { + point.column = columnStart[point.line]; + point.offset += columnStart[point.line] - 1; + } + } +} + +var createTokenizer_1 = createTokenizer; + +function markdownLineEndingOrSpace(code) { + return code < 0 || code === 32 +} + +var markdownLineEndingOrSpace_1 = markdownLineEndingOrSpace; + +function regexCheck(regex) { + return check + + function check(code) { + return regex.test(fromCharCode_1(code)) + } +} + +var regexCheck_1 = regexCheck; + +// This module is generated by `script/`. +// +// CommonMark handles attention (emphasis, strong) markers based on what comes +// before or after them. +// One such difference is if those characters are Unicode punctuation. +// This script is generated from the Unicode data. +var unicodePunctuation = /[!-\/:-@\[-`\{-~\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C77\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E4F\u2E52\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]/; + +var unicodePunctuationRegex = unicodePunctuation; + +// In fact adds to the bundle size. + +var unicodePunctuation$1 = regexCheck_1(unicodePunctuationRegex); + +var unicodePunctuation_1 = unicodePunctuation$1; + +var unicodeWhitespace = regexCheck_1(/\s/); + +var unicodeWhitespace_1 = unicodeWhitespace; + +// Classify whether a character is unicode whitespace, unicode punctuation, or +// anything else. +// Used for attention (emphasis, strong), whose sequences can open or close +// based on the class of surrounding characters. +function classifyCharacter(code) { + if ( + code === null || + markdownLineEndingOrSpace_1(code) || + unicodeWhitespace_1(code) + ) { + return 1 + } + + if (unicodePunctuation_1(code)) { + return 2 + } +} + +var classifyCharacter_1 = classifyCharacter; + +// chunks (replacement characters, tabs, or line endings). + +function movePoint(point, offset) { + point.column += offset; + point.offset += offset; + point._bufferIndex += offset; + return point +} + +var movePoint_1 = movePoint; + +var attention = { + name: 'attention', + tokenize: tokenizeAttention, + resolveAll: resolveAllAttention +}; + +function resolveAllAttention(events, context) { + var index = -1; + var open; + var group; + var text; + var openingSequence; + var closingSequence; + var use; + var nextEvents; + var offset; // Walk through all events. + // + // Note: performance of this is fine on an mb of normal markdown, but itās + // a bottleneck for malicious stuff. + + while (++index < events.length) { + // Find a token that can close. + if ( + events[index][0] === 'enter' && + events[index][1].type === 'attentionSequence' && + events[index][1]._close + ) { + open = index; // Now walk back to find an opener. + + while (open--) { + // Find a token that can open the closer. + if ( + events[open][0] === 'exit' && + events[open][1].type === 'attentionSequence' && + events[open][1]._open && // If the markers are the same: + context.sliceSerialize(events[open][1]).charCodeAt(0) === + context.sliceSerialize(events[index][1]).charCodeAt(0) + ) { + // If the opening can close or the closing can open, + // and the close size *is not* a multiple of three, + // but the sum of the opening and closing size *is* multiple of three, + // then donāt match. + if ( + (events[open][1]._close || events[index][1]._open) && + (events[index][1].end.offset - events[index][1].start.offset) % 3 && + !( + (events[open][1].end.offset - + events[open][1].start.offset + + events[index][1].end.offset - + events[index][1].start.offset) % + 3 + ) + ) { + continue + } // Number of markers to use from the sequence. + + use = + events[open][1].end.offset - events[open][1].start.offset > 1 && + events[index][1].end.offset - events[index][1].start.offset > 1 + ? 2 + : 1; + openingSequence = { + type: use > 1 ? 'strongSequence' : 'emphasisSequence', + start: movePoint_1(shallow_1(events[open][1].end), -use), + end: shallow_1(events[open][1].end) + }; + closingSequence = { + type: use > 1 ? 'strongSequence' : 'emphasisSequence', + start: shallow_1(events[index][1].start), + end: movePoint_1(shallow_1(events[index][1].start), use) + }; + text = { + type: use > 1 ? 'strongText' : 'emphasisText', + start: shallow_1(events[open][1].end), + end: shallow_1(events[index][1].start) + }; + group = { + type: use > 1 ? 'strong' : 'emphasis', + start: shallow_1(openingSequence.start), + end: shallow_1(closingSequence.end) + }; + events[open][1].end = shallow_1(openingSequence.start); + events[index][1].start = shallow_1(closingSequence.end); + nextEvents = []; // If there are more markers in the opening, add them before. + + if (events[open][1].end.offset - events[open][1].start.offset) { + nextEvents = chunkedPush_1(nextEvents, [ + ['enter', events[open][1], context], + ['exit', events[open][1], context] + ]); + } // Opening. + + nextEvents = chunkedPush_1(nextEvents, [ + ['enter', group, context], + ['enter', openingSequence, context], + ['exit', openingSequence, context], + ['enter', text, context] + ]); // Between. + + nextEvents = chunkedPush_1( + nextEvents, + resolveAll_1( + context.parser.constructs.insideSpan.null, + events.slice(open + 1, index), + context + ) + ); // Closing. + + nextEvents = chunkedPush_1(nextEvents, [ + ['exit', text, context], + ['enter', closingSequence, context], + ['exit', closingSequence, context], + ['exit', group, context] + ]); // If there are more markers in the closing, add them after. + + if (events[index][1].end.offset - events[index][1].start.offset) { + offset = 2; + nextEvents = chunkedPush_1(nextEvents, [ + ['enter', events[index][1], context], + ['exit', events[index][1], context] + ]); + } else { + offset = 0; + } + + chunkedSplice_1(events, open - 1, index - open + 3, nextEvents); + index = open + nextEvents.length - offset - 2; + break + } + } + } + } // Remove remaining sequences. + + index = -1; + + while (++index < events.length) { + if (events[index][1].type === 'attentionSequence') { + events[index][1].type = 'data'; + } + } + + return events +} + +function tokenizeAttention(effects, ok) { + var before = classifyCharacter_1(this.previous); + var marker; + return start + + function start(code) { + effects.enter('attentionSequence'); + marker = code; + return sequence(code) + } + + function sequence(code) { + var token; + var after; + var open; + var close; + + if (code === marker) { + effects.consume(code); + return sequence + } + + token = effects.exit('attentionSequence'); + after = classifyCharacter_1(code); + open = !after || (after === 2 && before); + close = !before || (before === 2 && after); + token._open = marker === 42 ? open : open && (before || !close); + token._close = marker === 42 ? close : close && (after || !open); + return ok(code) + } +} + +var attention_1 = attention; + +var asciiAlphanumeric = regexCheck_1(/[\dA-Za-z]/); + +var asciiAlphanumeric_1 = asciiAlphanumeric; + +var asciiAlpha = regexCheck_1(/[A-Za-z]/); + +var asciiAlpha_1 = asciiAlpha; + +var asciiAtext = regexCheck_1(/[#-'*+\--9=?A-Z^-~]/); + +var asciiAtext_1 = asciiAtext; + +// Note: EOF is seen as ASCII control here, because `null < 32 == true`. +function asciiControl(code) { + return ( + // Special whitespace codes (which have negative values), C0 and Control + // character DEL + code < 32 || code === 127 + ) +} + +var asciiControl_1 = asciiControl; + +var autolink = { + name: 'autolink', + tokenize: tokenizeAutolink +}; + +function tokenizeAutolink(effects, ok, nok) { + var size = 1; + return start + + function start(code) { + effects.enter('autolink'); + effects.enter('autolinkMarker'); + effects.consume(code); + effects.exit('autolinkMarker'); + effects.enter('autolinkProtocol'); + return open + } + + function open(code) { + if (asciiAlpha_1(code)) { + effects.consume(code); + return schemeOrEmailAtext + } + + return asciiAtext_1(code) ? emailAtext(code) : nok(code) + } + + function schemeOrEmailAtext(code) { + return code === 43 || code === 45 || code === 46 || asciiAlphanumeric_1(code) + ? schemeInsideOrEmailAtext(code) + : emailAtext(code) + } + + function schemeInsideOrEmailAtext(code) { + if (code === 58) { + effects.consume(code); + return urlInside + } + + if ( + (code === 43 || code === 45 || code === 46 || asciiAlphanumeric_1(code)) && + size++ < 32 + ) { + effects.consume(code); + return schemeInsideOrEmailAtext + } + + return emailAtext(code) + } + + function urlInside(code) { + if (code === 62) { + effects.exit('autolinkProtocol'); + return end(code) + } + + if (code === 32 || code === 60 || asciiControl_1(code)) { + return nok(code) + } + + effects.consume(code); + return urlInside + } + + function emailAtext(code) { + if (code === 64) { + effects.consume(code); + size = 0; + return emailAtSignOrDot + } + + if (asciiAtext_1(code)) { + effects.consume(code); + return emailAtext + } + + return nok(code) + } + + function emailAtSignOrDot(code) { + return asciiAlphanumeric_1(code) ? emailLabel(code) : nok(code) + } + + function emailLabel(code) { + if (code === 46) { + effects.consume(code); + size = 0; + return emailAtSignOrDot + } + + if (code === 62) { + // Exit, then change the type. + effects.exit('autolinkProtocol').type = 'autolinkEmail'; + return end(code) + } + + return emailValue(code) + } + + function emailValue(code) { + if ((code === 45 || asciiAlphanumeric_1(code)) && size++ < 63) { + effects.consume(code); + return code === 45 ? emailValue : emailLabel + } + + return nok(code) + } + + function end(code) { + effects.enter('autolinkMarker'); + effects.consume(code); + effects.exit('autolinkMarker'); + effects.exit('autolink'); + return ok + } +} + +var autolink_1 = autolink; + +var blockQuote = { + name: 'blockQuote', + tokenize: tokenizeBlockQuoteStart, + continuation: { + tokenize: tokenizeBlockQuoteContinuation + }, + exit: exit +}; + +function tokenizeBlockQuoteStart(effects, ok, nok) { + var self = this; + return start + + function start(code) { + if (code === 62) { + if (!self.containerState.open) { + effects.enter('blockQuote', { + _container: true + }); + self.containerState.open = true; + } + + effects.enter('blockQuotePrefix'); + effects.enter('blockQuoteMarker'); + effects.consume(code); + effects.exit('blockQuoteMarker'); + return after + } + + return nok(code) + } + + function after(code) { + if (markdownSpace_1(code)) { + effects.enter('blockQuotePrefixWhitespace'); + effects.consume(code); + effects.exit('blockQuotePrefixWhitespace'); + effects.exit('blockQuotePrefix'); + return ok + } + + effects.exit('blockQuotePrefix'); + return ok(code) + } +} + +function tokenizeBlockQuoteContinuation(effects, ok, nok) { + return factorySpace( + effects, + effects.attempt(blockQuote, ok, nok), + 'linePrefix', + this.parser.constructs.disable.null.indexOf('codeIndented') > -1 + ? undefined + : 4 + ) +} + +function exit(effects) { + effects.exit('blockQuote'); +} + +var blockQuote_1 = blockQuote; + +var asciiPunctuation = regexCheck_1(/[!-/:-@[-`{-~]/); + +var asciiPunctuation_1 = asciiPunctuation; + +var characterEscape = { + name: 'characterEscape', + tokenize: tokenizeCharacterEscape +}; + +function tokenizeCharacterEscape(effects, ok, nok) { + return start + + function start(code) { + effects.enter('characterEscape'); + effects.enter('escapeMarker'); + effects.consume(code); + effects.exit('escapeMarker'); + return open + } + + function open(code) { + if (asciiPunctuation_1(code)) { + effects.enter('characterEscapeValue'); + effects.consume(code); + effects.exit('characterEscapeValue'); + effects.exit('characterEscape'); + return ok + } + + return nok(code) + } +} + +var characterEscape_1 = characterEscape; + const AEli = "Ć"; const AElig = "Ć"; const AM = "&"; @@ -29346,7 +31086,7 @@ const incare = "ā
"; const infin = "ā"; const infintie = "ā§"; const inodot = "ı"; -const int = "ā«"; +const int$1 = "ā«"; const intcal = "āŗ"; const integers = "ā¤"; const intercal = "āŗ"; @@ -30361,7 +32101,7 @@ const zopf = "š«"; const zscr = "š"; const zwj = "ā"; const zwnj = "ā"; -var index$1 = { +var characterEntities = { AEli: AEli, AElig: AElig, AM: AM, @@ -31569,7 +33309,7 @@ var index$1 = { infin: infin, infintie: infintie, inodot: inodot, - int: int, + int: int$1, intcal: intcal, integers: integers, intercal: intercal, @@ -32586,4301 +34326,40 @@ var index$1 = { zwnj: zwnj }; -var characterEntities = /*#__PURE__*/Object.freeze({ - __proto__: null, - AEli: AEli, - AElig: AElig, - AM: AM, - AMP: AMP, - Aacut: Aacut, - Aacute: Aacute, - Abreve: Abreve, - Acir: Acir, - Acirc: Acirc, - Acy: Acy, - Afr: Afr, - Agrav: Agrav, - Agrave: Agrave, - Alpha: Alpha, - Amacr: Amacr, - And: And, - Aogon: Aogon, - Aopf: Aopf, - ApplyFunction: ApplyFunction, - Arin: Arin, - Aring: Aring, - Ascr: Ascr, - Assign: Assign, - Atild: Atild, - Atilde: Atilde, - Aum: Aum, - Auml: Auml, - Backslash: Backslash, - Barv: Barv, - Barwed: Barwed, - Bcy: Bcy, - Because: Because, - Bernoullis: Bernoullis, - Beta: Beta, - Bfr: Bfr, - Bopf: Bopf, - Breve: Breve, - Bscr: Bscr, - Bumpeq: Bumpeq, - CHcy: CHcy, - COP: COP, - COPY: COPY, - Cacute: Cacute, - Cap: Cap, - CapitalDifferentialD: CapitalDifferentialD, - Cayleys: Cayleys, - Ccaron: Ccaron, - Ccedi: Ccedi, - Ccedil: Ccedil, - Ccirc: Ccirc, - Cconint: Cconint, - Cdot: Cdot, - Cedilla: Cedilla, - CenterDot: CenterDot, - Cfr: Cfr, - Chi: Chi, - CircleDot: CircleDot, - CircleMinus: CircleMinus, - CirclePlus: CirclePlus, - CircleTimes: CircleTimes, - ClockwiseContourIntegral: ClockwiseContourIntegral, - CloseCurlyDoubleQuote: CloseCurlyDoubleQuote, - CloseCurlyQuote: CloseCurlyQuote, - Colon: Colon, - Colone: Colone, - Congruent: Congruent, - Conint: Conint, - ContourIntegral: ContourIntegral, - Copf: Copf, - Coproduct: Coproduct, - CounterClockwiseContourIntegral: CounterClockwiseContourIntegral, - Cross: Cross, - Cscr: Cscr, - Cup: Cup, - CupCap: CupCap, - DD: DD, - DDotrahd: DDotrahd, - DJcy: DJcy, - DScy: DScy, - DZcy: DZcy, - Dagger: Dagger, - Darr: Darr, - Dashv: Dashv, - Dcaron: Dcaron, - Dcy: Dcy, - Del: Del, - Delta: Delta, - Dfr: Dfr, - DiacriticalAcute: DiacriticalAcute, - DiacriticalDot: DiacriticalDot, - DiacriticalDoubleAcute: DiacriticalDoubleAcute, - DiacriticalGrave: DiacriticalGrave, - DiacriticalTilde: DiacriticalTilde, - Diamond: Diamond, - DifferentialD: DifferentialD, - Dopf: Dopf, - Dot: Dot, - DotDot: DotDot, - DotEqual: DotEqual, - DoubleContourIntegral: DoubleContourIntegral, - DoubleDot: DoubleDot, - DoubleDownArrow: DoubleDownArrow, - DoubleLeftArrow: DoubleLeftArrow, - DoubleLeftRightArrow: DoubleLeftRightArrow, - DoubleLeftTee: DoubleLeftTee, - DoubleLongLeftArrow: DoubleLongLeftArrow, - DoubleLongLeftRightArrow: DoubleLongLeftRightArrow, - DoubleLongRightArrow: DoubleLongRightArrow, - DoubleRightArrow: DoubleRightArrow, - DoubleRightTee: DoubleRightTee, - DoubleUpArrow: DoubleUpArrow, - DoubleUpDownArrow: DoubleUpDownArrow, - DoubleVerticalBar: DoubleVerticalBar, - DownArrow: DownArrow, - DownArrowBar: DownArrowBar, - DownArrowUpArrow: DownArrowUpArrow, - DownBreve: DownBreve, - DownLeftRightVector: DownLeftRightVector, - DownLeftTeeVector: DownLeftTeeVector, - DownLeftVector: DownLeftVector, - DownLeftVectorBar: DownLeftVectorBar, - DownRightTeeVector: DownRightTeeVector, - DownRightVector: DownRightVector, - DownRightVectorBar: DownRightVectorBar, - DownTee: DownTee, - DownTeeArrow: DownTeeArrow, - Downarrow: Downarrow, - Dscr: Dscr, - Dstrok: Dstrok, - ENG: ENG, - ET: ET, - ETH: ETH, - Eacut: Eacut, - Eacute: Eacute, - Ecaron: Ecaron, - Ecir: Ecir, - Ecirc: Ecirc, - Ecy: Ecy, - Edot: Edot, - Efr: Efr, - Egrav: Egrav, - Egrave: Egrave, - Element: Element, - Emacr: Emacr, - EmptySmallSquare: EmptySmallSquare, - EmptyVerySmallSquare: EmptyVerySmallSquare, - Eogon: Eogon, - Eopf: Eopf, - Epsilon: Epsilon, - Equal: Equal, - EqualTilde: EqualTilde, - Equilibrium: Equilibrium, - Escr: Escr, - Esim: Esim, - Eta: Eta, - Eum: Eum, - Euml: Euml, - Exists: Exists, - ExponentialE: ExponentialE, - Fcy: Fcy, - Ffr: Ffr, - FilledSmallSquare: FilledSmallSquare, - FilledVerySmallSquare: FilledVerySmallSquare, - Fopf: Fopf, - ForAll: ForAll, - Fouriertrf: Fouriertrf, - Fscr: Fscr, - GJcy: GJcy, - G: G, - GT: GT, - Gamma: Gamma, - Gammad: Gammad, - Gbreve: Gbreve, - Gcedil: Gcedil, - Gcirc: Gcirc, - Gcy: Gcy, - Gdot: Gdot, - Gfr: Gfr, - Gg: Gg, - Gopf: Gopf, - GreaterEqual: GreaterEqual, - GreaterEqualLess: GreaterEqualLess, - GreaterFullEqual: GreaterFullEqual, - GreaterGreater: GreaterGreater, - GreaterLess: GreaterLess, - GreaterSlantEqual: GreaterSlantEqual, - GreaterTilde: GreaterTilde, - Gscr: Gscr, - Gt: Gt, - HARDcy: HARDcy, - Hacek: Hacek, - Hat: Hat, - Hcirc: Hcirc, - Hfr: Hfr, - HilbertSpace: HilbertSpace, - Hopf: Hopf, - HorizontalLine: HorizontalLine, - Hscr: Hscr, - Hstrok: Hstrok, - HumpDownHump: HumpDownHump, - HumpEqual: HumpEqual, - IEcy: IEcy, - IJlig: IJlig, - IOcy: IOcy, - Iacut: Iacut, - Iacute: Iacute, - Icir: Icir, - Icirc: Icirc, - Icy: Icy, - Idot: Idot, - Ifr: Ifr, - Igrav: Igrav, - Igrave: Igrave, - Im: Im, - Imacr: Imacr, - ImaginaryI: ImaginaryI, - Implies: Implies, - Int: Int, - Integral: Integral, - Intersection: Intersection, - InvisibleComma: InvisibleComma, - InvisibleTimes: InvisibleTimes, - Iogon: Iogon, - Iopf: Iopf, - Iota: Iota, - Iscr: Iscr, - Itilde: Itilde, - Iukcy: Iukcy, - Ium: Ium, - Iuml: Iuml, - Jcirc: Jcirc, - Jcy: Jcy, - Jfr: Jfr, - Jopf: Jopf, - Jscr: Jscr, - Jsercy: Jsercy, - Jukcy: Jukcy, - KHcy: KHcy, - KJcy: KJcy, - Kappa: Kappa, - Kcedil: Kcedil, - Kcy: Kcy, - Kfr: Kfr, - Kopf: Kopf, - Kscr: Kscr, - LJcy: LJcy, - L: L, - LT: LT, - Lacute: Lacute, - Lambda: Lambda, - Lang: Lang, - Laplacetrf: Laplacetrf, - Larr: Larr, - Lcaron: Lcaron, - Lcedil: Lcedil, - Lcy: Lcy, - LeftAngleBracket: LeftAngleBracket, - LeftArrow: LeftArrow, - LeftArrowBar: LeftArrowBar, - LeftArrowRightArrow: LeftArrowRightArrow, - LeftCeiling: LeftCeiling, - LeftDoubleBracket: LeftDoubleBracket, - LeftDownTeeVector: LeftDownTeeVector, - LeftDownVector: LeftDownVector, - LeftDownVectorBar: LeftDownVectorBar, - LeftFloor: LeftFloor, - LeftRightArrow: LeftRightArrow, - LeftRightVector: LeftRightVector, - LeftTee: LeftTee, - LeftTeeArrow: LeftTeeArrow, - LeftTeeVector: LeftTeeVector, - LeftTriangle: LeftTriangle, - LeftTriangleBar: LeftTriangleBar, - LeftTriangleEqual: LeftTriangleEqual, - LeftUpDownVector: LeftUpDownVector, - LeftUpTeeVector: LeftUpTeeVector, - LeftUpVector: LeftUpVector, - LeftUpVectorBar: LeftUpVectorBar, - LeftVector: LeftVector, - LeftVectorBar: LeftVectorBar, - Leftarrow: Leftarrow, - Leftrightarrow: Leftrightarrow, - LessEqualGreater: LessEqualGreater, - LessFullEqual: LessFullEqual, - LessGreater: LessGreater, - LessLess: LessLess, - LessSlantEqual: LessSlantEqual, - LessTilde: LessTilde, - Lfr: Lfr, - Ll: Ll, - Lleftarrow: Lleftarrow, - Lmidot: Lmidot, - LongLeftArrow: LongLeftArrow, - LongLeftRightArrow: LongLeftRightArrow, - LongRightArrow: LongRightArrow, - Longleftarrow: Longleftarrow, - Longleftrightarrow: Longleftrightarrow, - Longrightarrow: Longrightarrow, - Lopf: Lopf, - LowerLeftArrow: LowerLeftArrow, - LowerRightArrow: LowerRightArrow, - Lscr: Lscr, - Lsh: Lsh, - Lstrok: Lstrok, - Lt: Lt, - Mcy: Mcy, - MediumSpace: MediumSpace, - Mellintrf: Mellintrf, - Mfr: Mfr, - MinusPlus: MinusPlus, - Mopf: Mopf, - Mscr: Mscr, - Mu: Mu, - NJcy: NJcy, - Nacute: Nacute, - Ncaron: Ncaron, - Ncedil: Ncedil, - Ncy: Ncy, - NegativeMediumSpace: NegativeMediumSpace, - NegativeThickSpace: NegativeThickSpace, - NegativeThinSpace: NegativeThinSpace, - NegativeVeryThinSpace: NegativeVeryThinSpace, - NestedGreaterGreater: NestedGreaterGreater, - NestedLessLess: NestedLessLess, - NewLine: NewLine, - Nfr: Nfr, - NoBreak: NoBreak, - NonBreakingSpace: NonBreakingSpace, - Nopf: Nopf, - Not: Not, - NotCongruent: NotCongruent, - NotCupCap: NotCupCap, - NotDoubleVerticalBar: NotDoubleVerticalBar, - NotElement: NotElement, - NotEqual: NotEqual, - NotEqualTilde: NotEqualTilde, - NotExists: NotExists, - NotGreater: NotGreater, - NotGreaterEqual: NotGreaterEqual, - NotGreaterFullEqual: NotGreaterFullEqual, - NotGreaterGreater: NotGreaterGreater, - NotGreaterLess: NotGreaterLess, - NotGreaterSlantEqual: NotGreaterSlantEqual, - NotGreaterTilde: NotGreaterTilde, - NotHumpDownHump: NotHumpDownHump, - NotHumpEqual: NotHumpEqual, - NotLeftTriangle: NotLeftTriangle, - NotLeftTriangleBar: NotLeftTriangleBar, - NotLeftTriangleEqual: NotLeftTriangleEqual, - NotLess: NotLess, - NotLessEqual: NotLessEqual, - NotLessGreater: NotLessGreater, - NotLessLess: NotLessLess, - NotLessSlantEqual: NotLessSlantEqual, - NotLessTilde: NotLessTilde, - NotNestedGreaterGreater: NotNestedGreaterGreater, - NotNestedLessLess: NotNestedLessLess, - NotPrecedes: NotPrecedes, - NotPrecedesEqual: NotPrecedesEqual, - NotPrecedesSlantEqual: NotPrecedesSlantEqual, - NotReverseElement: NotReverseElement, - NotRightTriangle: NotRightTriangle, - NotRightTriangleBar: NotRightTriangleBar, - NotRightTriangleEqual: NotRightTriangleEqual, - NotSquareSubset: NotSquareSubset, - NotSquareSubsetEqual: NotSquareSubsetEqual, - NotSquareSuperset: NotSquareSuperset, - NotSquareSupersetEqual: NotSquareSupersetEqual, - NotSubset: NotSubset, - NotSubsetEqual: NotSubsetEqual, - NotSucceeds: NotSucceeds, - NotSucceedsEqual: NotSucceedsEqual, - NotSucceedsSlantEqual: NotSucceedsSlantEqual, - NotSucceedsTilde: NotSucceedsTilde, - NotSuperset: NotSuperset, - NotSupersetEqual: NotSupersetEqual, - NotTilde: NotTilde, - NotTildeEqual: NotTildeEqual, - NotTildeFullEqual: NotTildeFullEqual, - NotTildeTilde: NotTildeTilde, - NotVerticalBar: NotVerticalBar, - Nscr: Nscr, - Ntild: Ntild, - Ntilde: Ntilde, - Nu: Nu, - OElig: OElig, - Oacut: Oacut, - Oacute: Oacute, - Ocir: Ocir, - Ocirc: Ocirc, - Ocy: Ocy, - Odblac: Odblac, - Ofr: Ofr, - Ograv: Ograv, - Ograve: Ograve, - Omacr: Omacr, - Omega: Omega, - Omicron: Omicron, - Oopf: Oopf, - OpenCurlyDoubleQuote: OpenCurlyDoubleQuote, - OpenCurlyQuote: OpenCurlyQuote, - Or: Or, - Oscr: Oscr, - Oslas: Oslas, - Oslash: Oslash, - Otild: Otild, - Otilde: Otilde, - Otimes: Otimes, - Oum: Oum, - Ouml: Ouml, - OverBar: OverBar, - OverBrace: OverBrace, - OverBracket: OverBracket, - OverParenthesis: OverParenthesis, - PartialD: PartialD, - Pcy: Pcy, - Pfr: Pfr, - Phi: Phi, - Pi: Pi, - PlusMinus: PlusMinus, - Poincareplane: Poincareplane, - Popf: Popf, - Pr: Pr, - Precedes: Precedes, - PrecedesEqual: PrecedesEqual, - PrecedesSlantEqual: PrecedesSlantEqual, - PrecedesTilde: PrecedesTilde, - Prime: Prime, - Product: Product, - Proportion: Proportion, - Proportional: Proportional, - Pscr: Pscr, - Psi: Psi, - QUO: QUO, - QUOT: QUOT, - Qfr: Qfr, - Qopf: Qopf, - Qscr: Qscr, - RBarr: RBarr, - RE: RE, - REG: REG, - Racute: Racute, - Rang: Rang, - Rarr: Rarr, - Rarrtl: Rarrtl, - Rcaron: Rcaron, - Rcedil: Rcedil, - Rcy: Rcy, - Re: Re, - ReverseElement: ReverseElement, - ReverseEquilibrium: ReverseEquilibrium, - ReverseUpEquilibrium: ReverseUpEquilibrium, - Rfr: Rfr, - Rho: Rho, - RightAngleBracket: RightAngleBracket, - RightArrow: RightArrow, - RightArrowBar: RightArrowBar, - RightArrowLeftArrow: RightArrowLeftArrow, - RightCeiling: RightCeiling, - RightDoubleBracket: RightDoubleBracket, - RightDownTeeVector: RightDownTeeVector, - RightDownVector: RightDownVector, - RightDownVectorBar: RightDownVectorBar, - RightFloor: RightFloor, - RightTee: RightTee, - RightTeeArrow: RightTeeArrow, - RightTeeVector: RightTeeVector, - RightTriangle: RightTriangle, - RightTriangleBar: RightTriangleBar, - RightTriangleEqual: RightTriangleEqual, - RightUpDownVector: RightUpDownVector, - RightUpTeeVector: RightUpTeeVector, - RightUpVector: RightUpVector, - RightUpVectorBar: RightUpVectorBar, - RightVector: RightVector, - RightVectorBar: RightVectorBar, - Rightarrow: Rightarrow, - Ropf: Ropf, - RoundImplies: RoundImplies, - Rrightarrow: Rrightarrow, - Rscr: Rscr, - Rsh: Rsh, - RuleDelayed: RuleDelayed, - SHCHcy: SHCHcy, - SHcy: SHcy, - SOFTcy: SOFTcy, - Sacute: Sacute, - Sc: Sc, - Scaron: Scaron, - Scedil: Scedil, - Scirc: Scirc, - Scy: Scy, - Sfr: Sfr, - ShortDownArrow: ShortDownArrow, - ShortLeftArrow: ShortLeftArrow, - ShortRightArrow: ShortRightArrow, - ShortUpArrow: ShortUpArrow, - Sigma: Sigma, - SmallCircle: SmallCircle, - Sopf: Sopf, - Sqrt: Sqrt, - Square: Square, - SquareIntersection: SquareIntersection, - SquareSubset: SquareSubset, - SquareSubsetEqual: SquareSubsetEqual, - SquareSuperset: SquareSuperset, - SquareSupersetEqual: SquareSupersetEqual, - SquareUnion: SquareUnion, - Sscr: Sscr, - Star: Star, - Sub: Sub, - Subset: Subset, - SubsetEqual: SubsetEqual, - Succeeds: Succeeds, - SucceedsEqual: SucceedsEqual, - SucceedsSlantEqual: SucceedsSlantEqual, - SucceedsTilde: SucceedsTilde, - SuchThat: SuchThat, - Sum: Sum, - Sup: Sup, - Superset: Superset, - SupersetEqual: SupersetEqual, - Supset: Supset, - THOR: THOR, - THORN: THORN, - TRADE: TRADE, - TSHcy: TSHcy, - TScy: TScy, - Tab: Tab, - Tau: Tau, - Tcaron: Tcaron, - Tcedil: Tcedil, - Tcy: Tcy, - Tfr: Tfr, - Therefore: Therefore, - Theta: Theta, - ThickSpace: ThickSpace, - ThinSpace: ThinSpace, - Tilde: Tilde, - TildeEqual: TildeEqual, - TildeFullEqual: TildeFullEqual, - TildeTilde: TildeTilde, - Topf: Topf, - TripleDot: TripleDot, - Tscr: Tscr, - Tstrok: Tstrok, - Uacut: Uacut, - Uacute: Uacute, - Uarr: Uarr, - Uarrocir: Uarrocir, - Ubrcy: Ubrcy, - Ubreve: Ubreve, - Ucir: Ucir, - Ucirc: Ucirc, - Ucy: Ucy, - Udblac: Udblac, - Ufr: Ufr, - Ugrav: Ugrav, - Ugrave: Ugrave, - Umacr: Umacr, - UnderBar: UnderBar, - UnderBrace: UnderBrace, - UnderBracket: UnderBracket, - UnderParenthesis: UnderParenthesis, - Union: Union, - UnionPlus: UnionPlus, - Uogon: Uogon, - Uopf: Uopf, - UpArrow: UpArrow, - UpArrowBar: UpArrowBar, - UpArrowDownArrow: UpArrowDownArrow, - UpDownArrow: UpDownArrow, - UpEquilibrium: UpEquilibrium, - UpTee: UpTee, - UpTeeArrow: UpTeeArrow, - Uparrow: Uparrow, - Updownarrow: Updownarrow, - UpperLeftArrow: UpperLeftArrow, - UpperRightArrow: UpperRightArrow, - Upsi: Upsi, - Upsilon: Upsilon, - Uring: Uring, - Uscr: Uscr, - Utilde: Utilde, - Uum: Uum, - Uuml: Uuml, - VDash: VDash, - Vbar: Vbar, - Vcy: Vcy, - Vdash: Vdash, - Vdashl: Vdashl, - Vee: Vee, - Verbar: Verbar, - Vert: Vert, - VerticalBar: VerticalBar, - VerticalLine: VerticalLine, - VerticalSeparator: VerticalSeparator, - VerticalTilde: VerticalTilde, - VeryThinSpace: VeryThinSpace, - Vfr: Vfr, - Vopf: Vopf, - Vscr: Vscr, - Vvdash: Vvdash, - Wcirc: Wcirc, - Wedge: Wedge, - Wfr: Wfr, - Wopf: Wopf, - Wscr: Wscr, - Xfr: Xfr, - Xi: Xi, - Xopf: Xopf, - Xscr: Xscr, - YAcy: YAcy, - YIcy: YIcy, - YUcy: YUcy, - Yacut: Yacut, - Yacute: Yacute, - Ycirc: Ycirc, - Ycy: Ycy, - Yfr: Yfr, - Yopf: Yopf, - Yscr: Yscr, - Yuml: Yuml, - ZHcy: ZHcy, - Zacute: Zacute, - Zcaron: Zcaron, - Zcy: Zcy, - Zdot: Zdot, - ZeroWidthSpace: ZeroWidthSpace, - Zeta: Zeta, - Zfr: Zfr, - Zopf: Zopf, - Zscr: Zscr, - aacut: aacut, - aacute: aacute, - abreve: abreve, - ac: ac, - acE: acE, - acd: acd, - acir: acir, - acirc: acirc, - acut: acut, - acute: acute, - acy: acy, - aeli: aeli, - aelig: aelig, - af: af, - afr: afr, - agrav: agrav, - agrave: agrave, - alefsym: alefsym, - aleph: aleph, - alpha: alpha, - amacr: amacr, - amalg: amalg, - am: am, - amp: amp, - and: and, - andand: andand, - andd: andd, - andslope: andslope, - andv: andv, - ang: ang, - ange: ange, - angle: angle, - angmsd: angmsd, - angmsdaa: angmsdaa, - angmsdab: angmsdab, - angmsdac: angmsdac, - angmsdad: angmsdad, - angmsdae: angmsdae, - angmsdaf: angmsdaf, - angmsdag: angmsdag, - angmsdah: angmsdah, - angrt: angrt, - angrtvb: angrtvb, - angrtvbd: angrtvbd, - angsph: angsph, - angst: angst, - angzarr: angzarr, - aogon: aogon, - aopf: aopf, - ap: ap, - apE: apE, - apacir: apacir, - ape: ape, - apid: apid, - apos: apos, - approx: approx, - approxeq: approxeq, - arin: arin, - aring: aring, - ascr: ascr, - ast: ast, - asymp: asymp, - asympeq: asympeq, - atild: atild, - atilde: atilde, - aum: aum, - auml: auml, - awconint: awconint, - awint: awint, - bNot: bNot, - backcong: backcong, - backepsilon: backepsilon, - backprime: backprime, - backsim: backsim, - backsimeq: backsimeq, - barvee: barvee, - barwed: barwed, - barwedge: barwedge, - bbrk: bbrk, - bbrktbrk: bbrktbrk, - bcong: bcong, - bcy: bcy, - bdquo: bdquo, - becaus: becaus, - because: because, - bemptyv: bemptyv, - bepsi: bepsi, - bernou: bernou, - beta: beta, - beth: beth, - between: between, - bfr: bfr, - bigcap: bigcap, - bigcirc: bigcirc, - bigcup: bigcup, - bigodot: bigodot, - bigoplus: bigoplus, - bigotimes: bigotimes, - bigsqcup: bigsqcup, - bigstar: bigstar, - bigtriangledown: bigtriangledown, - bigtriangleup: bigtriangleup, - biguplus: biguplus, - bigvee: bigvee, - bigwedge: bigwedge, - bkarow: bkarow, - blacklozenge: blacklozenge, - blacksquare: blacksquare, - blacktriangle: blacktriangle, - blacktriangledown: blacktriangledown, - blacktriangleleft: blacktriangleleft, - blacktriangleright: blacktriangleright, - blank: blank, - blk12: blk12, - blk14: blk14, - blk34: blk34, - block: block, - bne: bne, - bnequiv: bnequiv, - bnot: bnot, - bopf: bopf, - bot: bot, - bottom: bottom, - bowtie: bowtie, - boxDL: boxDL, - boxDR: boxDR, - boxDl: boxDl, - boxDr: boxDr, - boxH: boxH, - boxHD: boxHD, - boxHU: boxHU, - boxHd: boxHd, - boxHu: boxHu, - boxUL: boxUL, - boxUR: boxUR, - boxUl: boxUl, - boxUr: boxUr, - boxV: boxV, - boxVH: boxVH, - boxVL: boxVL, - boxVR: boxVR, - boxVh: boxVh, - boxVl: boxVl, - boxVr: boxVr, - boxbox: boxbox, - boxdL: boxdL, - boxdR: boxdR, - boxdl: boxdl, - boxdr: boxdr, - boxh: boxh, - boxhD: boxhD, - boxhU: boxhU, - boxhd: boxhd, - boxhu: boxhu, - boxminus: boxminus, - boxplus: boxplus, - boxtimes: boxtimes, - boxuL: boxuL, - boxuR: boxuR, - boxul: boxul, - boxur: boxur, - boxv: boxv, - boxvH: boxvH, - boxvL: boxvL, - boxvR: boxvR, - boxvh: boxvh, - boxvl: boxvl, - boxvr: boxvr, - bprime: bprime, - breve: breve, - brvba: brvba, - brvbar: brvbar, - bscr: bscr, - bsemi: bsemi, - bsim: bsim, - bsime: bsime, - bsol: bsol, - bsolb: bsolb, - bsolhsub: bsolhsub, - bull: bull, - bullet: bullet, - bump: bump, - bumpE: bumpE, - bumpe: bumpe, - bumpeq: bumpeq, - cacute: cacute, - cap: cap, - capand: capand, - capbrcup: capbrcup, - capcap: capcap, - capcup: capcup, - capdot: capdot, - caps: caps, - caret: caret, - caron: caron, - ccaps: ccaps, - ccaron: ccaron, - ccedi: ccedi, - ccedil: ccedil, - ccirc: ccirc, - ccups: ccups, - ccupssm: ccupssm, - cdot: cdot, - cedi: cedi, - cedil: cedil, - cemptyv: cemptyv, - cen: cen, - cent: cent, - centerdot: centerdot, - cfr: cfr, - chcy: chcy, - check: check$2, - checkmark: checkmark, - chi: chi, - cir: cir, - cirE: cirE, - circ: circ, - circeq: circeq, - circlearrowleft: circlearrowleft, - circlearrowright: circlearrowright, - circledR: circledR, - circledS: circledS, - circledast: circledast, - circledcirc: circledcirc, - circleddash: circleddash, - cire: cire, - cirfnint: cirfnint, - cirmid: cirmid, - cirscir: cirscir, - clubs: clubs, - clubsuit: clubsuit, - colon: colon, - colone: colone, - coloneq: coloneq, - comma: comma, - commat: commat, - comp: comp, - compfn: compfn, - complement: complement, - complexes: complexes, - cong: cong, - congdot: congdot, - conint: conint, - copf: copf, - coprod: coprod, - cop: cop, - copy: copy$1, - copysr: copysr, - crarr: crarr, - cross: cross, - cscr: cscr, - csub: csub, - csube: csube, - csup: csup, - csupe: csupe, - ctdot: ctdot, - cudarrl: cudarrl, - cudarrr: cudarrr, - cuepr: cuepr, - cuesc: cuesc, - cularr: cularr, - cularrp: cularrp, - cup: cup, - cupbrcap: cupbrcap, - cupcap: cupcap, - cupcup: cupcup, - cupdot: cupdot, - cupor: cupor, - cups: cups, - curarr: curarr, - curarrm: curarrm, - curlyeqprec: curlyeqprec, - curlyeqsucc: curlyeqsucc, - curlyvee: curlyvee, - curlywedge: curlywedge, - curre: curre, - curren: curren, - curvearrowleft: curvearrowleft, - curvearrowright: curvearrowright, - cuvee: cuvee, - cuwed: cuwed, - cwconint: cwconint, - cwint: cwint, - cylcty: cylcty, - dArr: dArr, - dHar: dHar, - dagger: dagger, - daleth: daleth, - darr: darr, - dash: dash, - dashv: dashv, - dbkarow: dbkarow, - dblac: dblac, - dcaron: dcaron, - dcy: dcy, - dd: dd, - ddagger: ddagger, - ddarr: ddarr, - ddotseq: ddotseq, - de: de, - deg: deg, - delta: delta, - demptyv: demptyv, - dfisht: dfisht, - dfr: dfr, - dharl: dharl, - dharr: dharr, - diam: diam, - diamond: diamond, - diamondsuit: diamondsuit, - diams: diams, - die: die, - digamma: digamma, - disin: disin, - div: div, - divid: divid, - divide: divide, - divideontimes: divideontimes, - divonx: divonx, - djcy: djcy, - dlcorn: dlcorn, - dlcrop: dlcrop, - dollar: dollar, - dopf: dopf, - dot: dot, - doteq: doteq, - doteqdot: doteqdot, - dotminus: dotminus, - dotplus: dotplus, - dotsquare: dotsquare, - doublebarwedge: doublebarwedge, - downarrow: downarrow, - downdownarrows: downdownarrows, - downharpoonleft: downharpoonleft, - downharpoonright: downharpoonright, - drbkarow: drbkarow, - drcorn: drcorn, - drcrop: drcrop, - dscr: dscr, - dscy: dscy, - dsol: dsol, - dstrok: dstrok, - dtdot: dtdot, - dtri: dtri, - dtrif: dtrif, - duarr: duarr, - duhar: duhar, - dwangle: dwangle, - dzcy: dzcy, - dzigrarr: dzigrarr, - eDDot: eDDot, - eDot: eDot, - eacut: eacut, - eacute: eacute, - easter: easter, - ecaron: ecaron, - ecir: ecir, - ecirc: ecirc, - ecolon: ecolon, - ecy: ecy, - edot: edot, - ee: ee, - efDot: efDot, - efr: efr, - eg: eg, - egrav: egrav, - egrave: egrave, - egs: egs, - egsdot: egsdot, - el: el, - elinters: elinters, - ell: ell, - els: els, - elsdot: elsdot, - emacr: emacr, - empty: empty, - emptyset: emptyset, - emptyv: emptyv, - emsp13: emsp13, - emsp14: emsp14, - emsp: emsp, - eng: eng, - ensp: ensp, - eogon: eogon, - eopf: eopf, - epar: epar, - eparsl: eparsl, - eplus: eplus, - epsi: epsi, - epsilon: epsilon, - epsiv: epsiv, - eqcirc: eqcirc, - eqcolon: eqcolon, - eqsim: eqsim, - eqslantgtr: eqslantgtr, - eqslantless: eqslantless, - equals: equals, - equest: equest, - equiv: equiv, - equivDD: equivDD, - eqvparsl: eqvparsl, - erDot: erDot, - erarr: erarr, - escr: escr, - esdot: esdot, - esim: esim, - eta: eta, - et: et, - eth: eth, - eum: eum, - euml: euml, - euro: euro, - excl: excl, - exist: exist, - expectation: expectation, - exponentiale: exponentiale, - fallingdotseq: fallingdotseq, - fcy: fcy, - female: female, - ffilig: ffilig, - fflig: fflig, - ffllig: ffllig, - ffr: ffr, - filig: filig, - fjlig: fjlig, - flat: flat, - fllig: fllig, - fltns: fltns, - fnof: fnof, - fopf: fopf, - forall: forall, - fork: fork, - forkv: forkv, - fpartint: fpartint, - frac1: frac1, - frac12: frac12, - frac13: frac13, - frac14: frac14, - frac15: frac15, - frac16: frac16, - frac18: frac18, - frac23: frac23, - frac25: frac25, - frac3: frac3, - frac34: frac34, - frac35: frac35, - frac38: frac38, - frac45: frac45, - frac56: frac56, - frac58: frac58, - frac78: frac78, - frasl: frasl, - frown: frown, - fscr: fscr, - gE: gE, - gEl: gEl, - gacute: gacute, - gamma: gamma, - gammad: gammad, - gap: gap, - gbreve: gbreve, - gcirc: gcirc, - gcy: gcy, - gdot: gdot, - ge: ge, - gel: gel, - geq: geq, - geqq: geqq, - geqslant: geqslant, - ges: ges, - gescc: gescc, - gesdot: gesdot, - gesdoto: gesdoto, - gesdotol: gesdotol, - gesl: gesl, - gesles: gesles, - gfr: gfr, - gg: gg, - ggg: ggg, - gimel: gimel, - gjcy: gjcy, - gl: gl, - glE: glE, - gla: gla, - glj: glj, - gnE: gnE, - gnap: gnap, - gnapprox: gnapprox, - gne: gne, - gneq: gneq, - gneqq: gneqq, - gnsim: gnsim, - gopf: gopf, - grave: grave, - gscr: gscr, - gsim: gsim, - gsime: gsime, - gsiml: gsiml, - g: g, - gt: gt, - gtcc: gtcc, - gtcir: gtcir, - gtdot: gtdot, - gtlPar: gtlPar, - gtquest: gtquest, - gtrapprox: gtrapprox, - gtrarr: gtrarr, - gtrdot: gtrdot, - gtreqless: gtreqless, - gtreqqless: gtreqqless, - gtrless: gtrless, - gtrsim: gtrsim, - gvertneqq: gvertneqq, - gvnE: gvnE, - hArr: hArr, - hairsp: hairsp, - half: half, - hamilt: hamilt, - hardcy: hardcy, - harr: harr, - harrcir: harrcir, - harrw: harrw, - hbar: hbar, - hcirc: hcirc, - hearts: hearts, - heartsuit: heartsuit, - hellip: hellip, - hercon: hercon, - hfr: hfr, - hksearow: hksearow, - hkswarow: hkswarow, - hoarr: hoarr, - homtht: homtht, - hookleftarrow: hookleftarrow, - hookrightarrow: hookrightarrow, - hopf: hopf, - horbar: horbar, - hscr: hscr, - hslash: hslash, - hstrok: hstrok, - hybull: hybull, - hyphen: hyphen, - iacut: iacut, - iacute: iacute, - ic: ic, - icir: icir, - icirc: icirc, - icy: icy, - iecy: iecy, - iexc: iexc, - iexcl: iexcl, - iff: iff, - ifr: ifr, - igrav: igrav, - igrave: igrave, - ii: ii, - iiiint: iiiint, - iiint: iiint, - iinfin: iinfin, - iiota: iiota, - ijlig: ijlig, - imacr: imacr, - image: image, - imagline: imagline, - imagpart: imagpart, - imath: imath, - imof: imof, - imped: imped, - incare: incare, - infin: infin, - infintie: infintie, - inodot: inodot, - int: int, - intcal: intcal, - integers: integers, - intercal: intercal, - intlarhk: intlarhk, - intprod: intprod, - iocy: iocy, - iogon: iogon, - iopf: iopf, - iota: iota, - iprod: iprod, - iques: iques, - iquest: iquest, - iscr: iscr, - isin: isin, - isinE: isinE, - isindot: isindot, - isins: isins, - isinsv: isinsv, - isinv: isinv, - it: it, - itilde: itilde, - iukcy: iukcy, - ium: ium, - iuml: iuml, - jcirc: jcirc, - jcy: jcy, - jfr: jfr, - jmath: jmath, - jopf: jopf, - jscr: jscr, - jsercy: jsercy, - jukcy: jukcy, - kappa: kappa, - kappav: kappav, - kcedil: kcedil, - kcy: kcy, - kfr: kfr, - kgreen: kgreen, - khcy: khcy, - kjcy: kjcy, - kopf: kopf, - kscr: kscr, - lAarr: lAarr, - lArr: lArr, - lAtail: lAtail, - lBarr: lBarr, - lE: lE, - lEg: lEg, - lHar: lHar, - lacute: lacute, - laemptyv: laemptyv, - lagran: lagran, - lambda: lambda, - lang: lang, - langd: langd, - langle: langle, - lap: lap, - laqu: laqu, - laquo: laquo, - larr: larr, - larrb: larrb, - larrbfs: larrbfs, - larrfs: larrfs, - larrhk: larrhk, - larrlp: larrlp, - larrpl: larrpl, - larrsim: larrsim, - larrtl: larrtl, - lat: lat, - latail: latail, - late: late, - lates: lates, - lbarr: lbarr, - lbbrk: lbbrk, - lbrace: lbrace, - lbrack: lbrack, - lbrke: lbrke, - lbrksld: lbrksld, - lbrkslu: lbrkslu, - lcaron: lcaron, - lcedil: lcedil, - lceil: lceil, - lcub: lcub, - lcy: lcy, - ldca: ldca, - ldquo: ldquo, - ldquor: ldquor, - ldrdhar: ldrdhar, - ldrushar: ldrushar, - ldsh: ldsh, - le: le, - leftarrow: leftarrow, - leftarrowtail: leftarrowtail, - leftharpoondown: leftharpoondown, - leftharpoonup: leftharpoonup, - leftleftarrows: leftleftarrows, - leftrightarrow: leftrightarrow, - leftrightarrows: leftrightarrows, - leftrightharpoons: leftrightharpoons, - leftrightsquigarrow: leftrightsquigarrow, - leftthreetimes: leftthreetimes, - leg: leg, - leq: leq, - leqq: leqq, - leqslant: leqslant, - les: les, - lescc: lescc, - lesdot: lesdot, - lesdoto: lesdoto, - lesdotor: lesdotor, - lesg: lesg, - lesges: lesges, - lessapprox: lessapprox, - lessdot: lessdot, - lesseqgtr: lesseqgtr, - lesseqqgtr: lesseqqgtr, - lessgtr: lessgtr, - lesssim: lesssim, - lfisht: lfisht, - lfloor: lfloor, - lfr: lfr, - lg: lg, - lgE: lgE, - lhard: lhard, - lharu: lharu, - lharul: lharul, - lhblk: lhblk, - ljcy: ljcy, - ll: ll, - llarr: llarr, - llcorner: llcorner, - llhard: llhard, - lltri: lltri, - lmidot: lmidot, - lmoust: lmoust, - lmoustache: lmoustache, - lnE: lnE, - lnap: lnap, - lnapprox: lnapprox, - lne: lne, - lneq: lneq, - lneqq: lneqq, - lnsim: lnsim, - loang: loang, - loarr: loarr, - lobrk: lobrk, - longleftarrow: longleftarrow, - longleftrightarrow: longleftrightarrow, - longmapsto: longmapsto, - longrightarrow: longrightarrow, - looparrowleft: looparrowleft, - looparrowright: looparrowright, - lopar: lopar, - lopf: lopf, - loplus: loplus, - lotimes: lotimes, - lowast: lowast, - lowbar: lowbar, - loz: loz, - lozenge: lozenge, - lozf: lozf, - lpar: lpar, - lparlt: lparlt, - lrarr: lrarr, - lrcorner: lrcorner, - lrhar: lrhar, - lrhard: lrhard, - lrm: lrm, - lrtri: lrtri, - lsaquo: lsaquo, - lscr: lscr, - lsh: lsh, - lsim: lsim, - lsime: lsime, - lsimg: lsimg, - lsqb: lsqb, - lsquo: lsquo, - lsquor: lsquor, - lstrok: lstrok, - l: l, - lt: lt, - ltcc: ltcc, - ltcir: ltcir, - ltdot: ltdot, - lthree: lthree, - ltimes: ltimes, - ltlarr: ltlarr, - ltquest: ltquest, - ltrPar: ltrPar, - ltri: ltri, - ltrie: ltrie, - ltrif: ltrif, - lurdshar: lurdshar, - luruhar: luruhar, - lvertneqq: lvertneqq, - lvnE: lvnE, - mDDot: mDDot, - mac: mac, - macr: macr, - male: male, - malt: malt, - maltese: maltese, - map: map$2, - mapsto: mapsto, - mapstodown: mapstodown, - mapstoleft: mapstoleft, - mapstoup: mapstoup, - marker: marker, - mcomma: mcomma, - mcy: mcy, - mdash: mdash, - measuredangle: measuredangle, - mfr: mfr, - mho: mho, - micr: micr, - micro: micro, - mid: mid, - midast: midast, - midcir: midcir, - middo: middo, - middot: middot, - minus: minus, - minusb: minusb, - minusd: minusd, - minusdu: minusdu, - mlcp: mlcp, - mldr: mldr, - mnplus: mnplus, - models: models$2, - mopf: mopf, - mp: mp, - mscr: mscr, - mstpos: mstpos, - mu: mu, - multimap: multimap, - mumap: mumap, - nGg: nGg, - nGt: nGt, - nGtv: nGtv, - nLeftarrow: nLeftarrow, - nLeftrightarrow: nLeftrightarrow, - nLl: nLl, - nLt: nLt, - nLtv: nLtv, - nRightarrow: nRightarrow, - nVDash: nVDash, - nVdash: nVdash, - nabla: nabla, - nacute: nacute, - nang: nang, - nap: nap, - napE: napE, - napid: napid, - napos: napos, - napprox: napprox, - natur: natur, - natural: natural, - naturals: naturals, - nbs: nbs, - nbsp: nbsp, - nbump: nbump, - nbumpe: nbumpe, - ncap: ncap, - ncaron: ncaron, - ncedil: ncedil, - ncong: ncong, - ncongdot: ncongdot, - ncup: ncup, - ncy: ncy, - ndash: ndash, - ne: ne, - neArr: neArr, - nearhk: nearhk, - nearr: nearr, - nearrow: nearrow, - nedot: nedot, - nequiv: nequiv, - nesear: nesear, - nesim: nesim, - nexist: nexist, - nexists: nexists, - nfr: nfr, - ngE: ngE, - nge: nge, - ngeq: ngeq, - ngeqq: ngeqq, - ngeqslant: ngeqslant, - nges: nges, - ngsim: ngsim, - ngt: ngt, - ngtr: ngtr, - nhArr: nhArr, - nharr: nharr, - nhpar: nhpar, - ni: ni, - nis: nis, - nisd: nisd, - niv: niv, - njcy: njcy, - nlArr: nlArr, - nlE: nlE, - nlarr: nlarr, - nldr: nldr, - nle: nle, - nleftarrow: nleftarrow, - nleftrightarrow: nleftrightarrow, - nleq: nleq, - nleqq: nleqq, - nleqslant: nleqslant, - nles: nles, - nless: nless, - nlsim: nlsim, - nlt: nlt, - nltri: nltri, - nltrie: nltrie, - nmid: nmid, - nopf: nopf, - no: no, - not: not, - notin: notin, - notinE: notinE, - notindot: notindot, - notinva: notinva, - notinvb: notinvb, - notinvc: notinvc, - notni: notni, - notniva: notniva, - notnivb: notnivb, - notnivc: notnivc, - npar: npar, - nparallel: nparallel, - nparsl: nparsl, - npart: npart, - npolint: npolint, - npr: npr, - nprcue: nprcue, - npre: npre, - nprec: nprec, - npreceq: npreceq, - nrArr: nrArr, - nrarr: nrarr, - nrarrc: nrarrc, - nrarrw: nrarrw, - nrightarrow: nrightarrow, - nrtri: nrtri, - nrtrie: nrtrie, - nsc: nsc, - nsccue: nsccue, - nsce: nsce, - nscr: nscr, - nshortmid: nshortmid, - nshortparallel: nshortparallel, - nsim: nsim, - nsime: nsime, - nsimeq: nsimeq, - nsmid: nsmid, - nspar: nspar, - nsqsube: nsqsube, - nsqsupe: nsqsupe, - nsub: nsub, - nsubE: nsubE, - nsube: nsube, - nsubset: nsubset, - nsubseteq: nsubseteq, - nsubseteqq: nsubseteqq, - nsucc: nsucc, - nsucceq: nsucceq, - nsup: nsup, - nsupE: nsupE, - nsupe: nsupe, - nsupset: nsupset, - nsupseteq: nsupseteq, - nsupseteqq: nsupseteqq, - ntgl: ntgl, - ntild: ntild, - ntilde: ntilde, - ntlg: ntlg, - ntriangleleft: ntriangleleft, - ntrianglelefteq: ntrianglelefteq, - ntriangleright: ntriangleright, - ntrianglerighteq: ntrianglerighteq, - nu: nu, - num: num, - numero: numero, - numsp: numsp, - nvDash: nvDash, - nvHarr: nvHarr, - nvap: nvap, - nvdash: nvdash, - nvge: nvge, - nvgt: nvgt, - nvinfin: nvinfin, - nvlArr: nvlArr, - nvle: nvle, - nvlt: nvlt, - nvltrie: nvltrie, - nvrArr: nvrArr, - nvrtrie: nvrtrie, - nvsim: nvsim, - nwArr: nwArr, - nwarhk: nwarhk, - nwarr: nwarr, - nwarrow: nwarrow, - nwnear: nwnear, - oS: oS, - oacut: oacut, - oacute: oacute, - oast: oast, - ocir: ocir, - ocirc: ocirc, - ocy: ocy, - odash: odash, - odblac: odblac, - odiv: odiv, - odot: odot, - odsold: odsold, - oelig: oelig, - ofcir: ofcir, - ofr: ofr, - ogon: ogon, - ograv: ograv, - ograve: ograve, - ogt: ogt, - ohbar: ohbar, - ohm: ohm, - oint: oint, - olarr: olarr, - olcir: olcir, - olcross: olcross, - oline: oline, - olt: olt, - omacr: omacr, - omega: omega, - omicron: omicron, - omid: omid, - ominus: ominus, - oopf: oopf, - opar: opar, - operp: operp, - oplus: oplus, - or: or, - orarr: orarr, - ord: ord, - order: order$1, - orderof: orderof, - ordf: ordf, - ordm: ordm, - origof: origof, - oror: oror, - orslope: orslope, - orv: orv, - oscr: oscr, - oslas: oslas, - oslash: oslash, - osol: osol, - otild: otild, - otilde: otilde, - otimes: otimes, - otimesas: otimesas, - oum: oum, - ouml: ouml, - ovbar: ovbar, - par: par, - para: para, - parallel: parallel, - parsim: parsim, - parsl: parsl, - part: part, - pcy: pcy, - percnt: percnt, - period: period, - permil: permil, - perp: perp, - pertenk: pertenk, - pfr: pfr, - phi: phi, - phiv: phiv, - phmmat: phmmat, - phone: phone, - pi: pi, - pitchfork: pitchfork, - piv: piv, - planck: planck, - planckh: planckh, - plankv: plankv, - plus: plus, - plusacir: plusacir, - plusb: plusb, - pluscir: pluscir, - plusdo: plusdo, - plusdu: plusdu, - pluse: pluse, - plusm: plusm, - plusmn: plusmn, - plussim: plussim, - plustwo: plustwo, - pm: pm, - pointint: pointint, - popf: popf, - poun: poun, - pound: pound, - pr: pr, - prE: prE, - prap: prap, - prcue: prcue, - pre: pre, - prec: prec, - precapprox: precapprox, - preccurlyeq: preccurlyeq, - preceq: preceq, - precnapprox: precnapprox, - precneqq: precneqq, - precnsim: precnsim, - precsim: precsim, - prime: prime, - primes: primes, - prnE: prnE, - prnap: prnap, - prnsim: prnsim, - prod: prod, - profalar: profalar, - profline: profline, - profsurf: profsurf, - prop: prop, - propto: propto, - prsim: prsim, - prurel: prurel, - pscr: pscr, - psi: psi, - puncsp: puncsp, - qfr: qfr, - qint: qint, - qopf: qopf, - qprime: qprime, - qscr: qscr, - quaternions: quaternions, - quatint: quatint, - quest: quest, - questeq: questeq, - quo: quo, - quot: quot, - rAarr: rAarr, - rArr: rArr, - rAtail: rAtail, - rBarr: rBarr, - rHar: rHar, - race: race, - racute: racute, - radic: radic, - raemptyv: raemptyv, - rang: rang, - rangd: rangd, - range: range$1, - rangle: rangle, - raqu: raqu, - raquo: raquo, - rarr: rarr, - rarrap: rarrap, - rarrb: rarrb, - rarrbfs: rarrbfs, - rarrc: rarrc, - rarrfs: rarrfs, - rarrhk: rarrhk, - rarrlp: rarrlp, - rarrpl: rarrpl, - rarrsim: rarrsim, - rarrtl: rarrtl, - rarrw: rarrw, - ratail: ratail, - ratio: ratio, - rationals: rationals, - rbarr: rbarr, - rbbrk: rbbrk, - rbrace: rbrace, - rbrack: rbrack, - rbrke: rbrke, - rbrksld: rbrksld, - rbrkslu: rbrkslu, - rcaron: rcaron, - rcedil: rcedil, - rceil: rceil, - rcub: rcub, - rcy: rcy, - rdca: rdca, - rdldhar: rdldhar, - rdquo: rdquo, - rdquor: rdquor, - rdsh: rdsh, - real: real, - realine: realine, - realpart: realpart, - reals: reals, - rect: rect, - re: re, - reg: reg, - rfisht: rfisht, - rfloor: rfloor, - rfr: rfr, - rhard: rhard, - rharu: rharu, - rharul: rharul, - rho: rho, - rhov: rhov, - rightarrow: rightarrow, - rightarrowtail: rightarrowtail, - rightharpoondown: rightharpoondown, - rightharpoonup: rightharpoonup, - rightleftarrows: rightleftarrows, - rightleftharpoons: rightleftharpoons, - rightrightarrows: rightrightarrows, - rightsquigarrow: rightsquigarrow, - rightthreetimes: rightthreetimes, - ring: ring, - risingdotseq: risingdotseq, - rlarr: rlarr, - rlhar: rlhar, - rlm: rlm, - rmoust: rmoust, - rmoustache: rmoustache, - rnmid: rnmid, - roang: roang, - roarr: roarr, - robrk: robrk, - ropar: ropar, - ropf: ropf, - roplus: roplus, - rotimes: rotimes, - rpar: rpar, - rpargt: rpargt, - rppolint: rppolint, - rrarr: rrarr, - rsaquo: rsaquo, - rscr: rscr, - rsh: rsh, - rsqb: rsqb, - rsquo: rsquo, - rsquor: rsquor, - rthree: rthree, - rtimes: rtimes, - rtri: rtri, - rtrie: rtrie, - rtrif: rtrif, - rtriltri: rtriltri, - ruluhar: ruluhar, - rx: rx, - sacute: sacute, - sbquo: sbquo, - sc: sc, - scE: scE, - scap: scap, - scaron: scaron, - sccue: sccue, - sce: sce, - scedil: scedil, - scirc: scirc, - scnE: scnE, - scnap: scnap, - scnsim: scnsim, - scpolint: scpolint, - scsim: scsim, - scy: scy, - sdot: sdot, - sdotb: sdotb, - sdote: sdote, - seArr: seArr, - searhk: searhk, - searr: searr, - searrow: searrow, - sec: sec, - sect: sect, - semi: semi, - seswar: seswar, - setminus: setminus, - setmn: setmn, - sext: sext, - sfr: sfr, - sfrown: sfrown, - sharp: sharp, - shchcy: shchcy, - shcy: shcy, - shortmid: shortmid, - shortparallel: shortparallel, - sh: sh, - shy: shy, - sigma: sigma, - sigmaf: sigmaf, - sigmav: sigmav, - sim: sim, - simdot: simdot, - sime: sime, - simeq: simeq, - simg: simg, - simgE: simgE, - siml: siml, - simlE: simlE, - simne: simne, - simplus: simplus, - simrarr: simrarr, - slarr: slarr, - smallsetminus: smallsetminus, - smashp: smashp, - smeparsl: smeparsl, - smid: smid, - smile: smile, - smt: smt, - smte: smte, - smtes: smtes, - softcy: softcy, - sol: sol, - solb: solb, - solbar: solbar, - sopf: sopf, - spades: spades, - spadesuit: spadesuit, - spar: spar, - sqcap: sqcap, - sqcaps: sqcaps, - sqcup: sqcup, - sqcups: sqcups, - sqsub: sqsub, - sqsube: sqsube, - sqsubset: sqsubset, - sqsubseteq: sqsubseteq, - sqsup: sqsup, - sqsupe: sqsupe, - sqsupset: sqsupset, - sqsupseteq: sqsupseteq, - squ: squ, - square: square, - squarf: squarf, - squf: squf, - srarr: srarr, - sscr: sscr, - ssetmn: ssetmn, - ssmile: ssmile, - sstarf: sstarf, - star: star$1, - starf: starf, - straightepsilon: straightepsilon, - straightphi: straightphi, - strns: strns, - sub: sub, - subE: subE, - subdot: subdot, - sube: sube, - subedot: subedot, - submult: submult, - subnE: subnE, - subne: subne, - subplus: subplus, - subrarr: subrarr, - subset: subset, - subseteq: subseteq, - subseteqq: subseteqq, - subsetneq: subsetneq, - subsetneqq: subsetneqq, - subsim: subsim, - subsub: subsub, - subsup: subsup, - succ: succ, - succapprox: succapprox, - succcurlyeq: succcurlyeq, - succeq: succeq, - succnapprox: succnapprox, - succneqq: succneqq, - succnsim: succnsim, - succsim: succsim, - sum: sum, - sung: sung, - sup: sup, - sup1: sup1, - sup2: sup2, - sup3: sup3, - supE: supE, - supdot: supdot, - supdsub: supdsub, - supe: supe, - supedot: supedot, - suphsol: suphsol, - suphsub: suphsub, - suplarr: suplarr, - supmult: supmult, - supnE: supnE, - supne: supne, - supplus: supplus, - supset: supset, - supseteq: supseteq, - supseteqq: supseteqq, - supsetneq: supsetneq, - supsetneqq: supsetneqq, - supsim: supsim, - supsub: supsub, - supsup: supsup, - swArr: swArr, - swarhk: swarhk, - swarr: swarr, - swarrow: swarrow, - swnwar: swnwar, - szli: szli, - szlig: szlig, - target: target, - tau: tau, - tbrk: tbrk, - tcaron: tcaron, - tcedil: tcedil, - tcy: tcy, - tdot: tdot, - telrec: telrec, - tfr: tfr, - there4: there4, - therefore: therefore, - theta: theta, - thetasym: thetasym, - thetav: thetav, - thickapprox: thickapprox, - thicksim: thicksim, - thinsp: thinsp, - thkap: thkap, - thksim: thksim, - thor: thor, - thorn: thorn, - tilde: tilde, - time: time, - times: times, - timesb: timesb, - timesbar: timesbar, - timesd: timesd, - tint: tint, - toea: toea, - top: top, - topbot: topbot, - topcir: topcir, - topf: topf, - topfork: topfork, - tosa: tosa, - tprime: tprime, - trade: trade, - triangle: triangle, - triangledown: triangledown, - triangleleft: triangleleft, - trianglelefteq: trianglelefteq, - triangleq: triangleq, - triangleright: triangleright, - trianglerighteq: trianglerighteq, - tridot: tridot, - trie: trie, - triminus: triminus, - triplus: triplus, - trisb: trisb, - tritime: tritime, - trpezium: trpezium, - tscr: tscr, - tscy: tscy, - tshcy: tshcy, - tstrok: tstrok, - twixt: twixt, - twoheadleftarrow: twoheadleftarrow, - twoheadrightarrow: twoheadrightarrow, - uArr: uArr, - uHar: uHar, - uacut: uacut, - uacute: uacute, - uarr: uarr, - ubrcy: ubrcy, - ubreve: ubreve, - ucir: ucir, - ucirc: ucirc, - ucy: ucy, - udarr: udarr, - udblac: udblac, - udhar: udhar, - ufisht: ufisht, - ufr: ufr, - ugrav: ugrav, - ugrave: ugrave, - uharl: uharl, - uharr: uharr, - uhblk: uhblk, - ulcorn: ulcorn, - ulcorner: ulcorner, - ulcrop: ulcrop, - ultri: ultri, - umacr: umacr, - um: um, - uml: uml, - uogon: uogon, - uopf: uopf, - uparrow: uparrow, - updownarrow: updownarrow, - upharpoonleft: upharpoonleft, - upharpoonright: upharpoonright, - uplus: uplus, - upsi: upsi, - upsih: upsih, - upsilon: upsilon, - upuparrows: upuparrows, - urcorn: urcorn, - urcorner: urcorner, - urcrop: urcrop, - uring: uring, - urtri: urtri, - uscr: uscr, - utdot: utdot, - utilde: utilde, - utri: utri, - utrif: utrif, - uuarr: uuarr, - uum: uum, - uuml: uuml, - uwangle: uwangle, - vArr: vArr, - vBar: vBar, - vBarv: vBarv, - vDash: vDash, - vangrt: vangrt, - varepsilon: varepsilon, - varkappa: varkappa, - varnothing: varnothing, - varphi: varphi, - varpi: varpi, - varpropto: varpropto, - varr: varr, - varrho: varrho, - varsigma: varsigma, - varsubsetneq: varsubsetneq, - varsubsetneqq: varsubsetneqq, - varsupsetneq: varsupsetneq, - varsupsetneqq: varsupsetneqq, - vartheta: vartheta, - vartriangleleft: vartriangleleft, - vartriangleright: vartriangleright, - vcy: vcy, - vdash: vdash, - vee: vee, - veebar: veebar, - veeeq: veeeq, - vellip: vellip, - verbar: verbar, - vert: vert, - vfr: vfr, - vltri: vltri, - vnsub: vnsub, - vnsup: vnsup, - vopf: vopf, - vprop: vprop, - vrtri: vrtri, - vscr: vscr, - vsubnE: vsubnE, - vsubne: vsubne, - vsupnE: vsupnE, - vsupne: vsupne, - vzigzag: vzigzag, - wcirc: wcirc, - wedbar: wedbar, - wedge: wedge, - wedgeq: wedgeq, - weierp: weierp, - wfr: wfr, - wopf: wopf, - wp: wp, - wr: wr, - wreath: wreath, - wscr: wscr, - xcap: xcap, - xcirc: xcirc, - xcup: xcup, - xdtri: xdtri, - xfr: xfr, - xhArr: xhArr, - xharr: xharr, - xi: xi, - xlArr: xlArr, - xlarr: xlarr, - xmap: xmap, - xnis: xnis, - xodot: xodot, - xopf: xopf, - xoplus: xoplus, - xotime: xotime, - xrArr: xrArr, - xrarr: xrarr, - xscr: xscr, - xsqcup: xsqcup, - xuplus: xuplus, - xutri: xutri, - xvee: xvee, - xwedge: xwedge, - yacut: yacut, - yacute: yacute, - yacy: yacy, - ycirc: ycirc, - ycy: ycy, - ye: ye, - yen: yen, - yfr: yfr, - yicy: yicy, - yopf: yopf, - yscr: yscr, - yucy: yucy, - yum: yum, - yuml: yuml, - zacute: zacute, - zcaron: zcaron, - zcy: zcy, - zdot: zdot, - zeetrf: zeetrf, - zeta: zeta, - zfr: zfr, - zhcy: zhcy, - zigrarr: zigrarr, - zopf: zopf, - zscr: zscr, - zwj: zwj, - zwnj: zwnj, - 'default': index$1 -}); - -var characterEntities$1 = getCjsExportFromNamespace(characterEntities); - var decodeEntity_1 = decodeEntity; -var own$3 = {}.hasOwnProperty; +var own$4 = {}.hasOwnProperty; function decodeEntity(characters) { - return own$3.call(characterEntities$1, characters) - ? characterEntities$1[characters] + return own$4.call(characterEntities, characters) + ? characterEntities[characters] : false } -var mdastUtilToString = toString$3; - -// Get the text content of a node. -// Prefer the nodeās plain-text fields, otherwise serialize its children, -// and if the given value is an array, serialize the nodes in it. -function toString$3(node) { - return ( - (node && - (node.value || - node.alt || - node.title || - ('children' in node && all(node.children)) || - ('length' in node && all(node)))) || - '' - ) -} - -function all(values) { - var result = []; - var length = values.length; - var index = -1; - - while (++index < length) { - result[index] = toString$3(values[index]); - } - - return result.join('') -} - -var hasOwnProperty_1 = {}.hasOwnProperty; - -var normalizeIdentifier_1 = normalizeIdentifier; - -function normalizeIdentifier(value) { - return ( - value - // Collapse Markdown whitespace. - .replace(/[\t\n\r ]+/g, ' ') - // Trim. - .replace(/^ | $/g, '') - // Some characters are considered āuppercaseā, but if their lowercase - // counterpart is uppercased will result in a different uppercase - // character. - // Hence, to get that form, we perform both lower- and uppercase. - // Upper case makes sure keys will not interact with default prototypal - // methods: no object method is uppercase. - .toLowerCase() - .toUpperCase() - ) -} - -var fromCharCode = String.fromCharCode; - -var safeFromInt_1 = safeFromInt; - - - -function safeFromInt(value, base) { - var code = parseInt(value, base); - - if ( - // C0 except for HT, LF, FF, CR, space - code < 9 || - code === 11 || - (code > 13 && code < 32) || - // Control character (DEL) of the basic block and C1 controls. - (code > 126 && code < 160) || - // Lone high surrogates and low surrogates. - (code > 55295 && code < 57344) || - // Noncharacters. - (code > 64975 && code < 65008) || - (code & 65535) === 65535 || - (code & 65535) === 65534 || - // Out of range - code > 1114111 - ) { - return '\uFFFD' - } - - return fromCharCode(code) -} - -var markdownLineEnding_1 = markdownLineEnding; - -function markdownLineEnding(code) { - return code < -2 -} - -var markdownSpace_1 = markdownSpace; - -function markdownSpace(code) { - return code === -2 || code === -1 || code === 32 -} - -var factorySpace = createSpace; - - - -function createSpace(effects, ok, type, max) { - var limit = max ? max - 1 : Infinity; - var size; - - return start - - function start(code) { - if (markdownSpace_1(code)) { - effects.enter(type); - size = 0; - return prefix(code) - } - - return ok(code) - } - - function prefix(code) { - if (markdownSpace_1(code) && size++ < limit) { - effects.consume(code); - return prefix - } - - effects.exit(type); - return ok(code) - } -} - -var tokenize = initializeContent; - - - - - -function initializeContent(effects) { - var contentStart = effects.attempt( - this.parser.constructs.contentInitial, - afterContentStartConstruct, - paragraphInitial - ); - - var previous; - - return contentStart - - function afterContentStartConstruct(code) { - if (code === null) { - effects.consume(code); - return - } - - effects.enter('lineEnding'); - effects.consume(code); - effects.exit('lineEnding'); - return factorySpace(effects, contentStart, 'linePrefix') - } - - function paragraphInitial(code) { - effects.enter('paragraph'); - return lineStart(code) - } - - function lineStart(code) { - var token = effects.enter('chunkText', { - contentType: 'text', - previous: previous - }); - - if (previous) { - previous.next = token; - } - - previous = token; - - return data(code) - } - - function data(code) { - if (code === null) { - effects.exit('chunkText'); - effects.exit('paragraph'); - effects.consume(code); - return - } - - if (markdownLineEnding_1(code)) { - effects.consume(code); - effects.exit('chunkText'); - return lineStart - } - - // Data. - effects.consume(code); - return data - } -} - -var content = { - tokenize: tokenize -}; - -var tokenize$1 = tokenizeBlankLine; -var partial = true; - - - - - -function tokenizeBlankLine(effects, ok, nok) { - return factorySpace(effects, afterWhitespace, 'linePrefix') - - function afterWhitespace(code) { - return code === null || markdownLineEnding_1(code) ? ok(code) : nok(code) - } -} - -var partialBlankLine = { - tokenize: tokenize$1, - partial: partial -}; - -var tokenize$2 = initializeDocument; - - - - - - -var container = {tokenize: tokenizeContainer}; -var lazyFlow = {tokenize: tokenizeLazyFlow}; - -function initializeDocument(effects) { - var self = this; - var stack = []; - var continued = 0; - var inspectResult; - var childFlow; - var childToken; - - return start - - function start(code) { - if (continued < stack.length) { - self.containerState = stack[continued][1]; - return effects.attempt( - stack[continued][0].continuation, - documentContinue, - documentContinued - )(code) - } - - return documentContinued(code) - } - - function documentContinue(code) { - continued++; - return start(code) - } - - function documentContinued(code) { - // If weāre in a concrete construct (such as when expecting another line of - // HTML, or we resulted in lazy content), we can immediately start flow. - if (inspectResult && inspectResult.flowContinue) { - return flowStart(code) - } - - self.interrupt = - childFlow && - childFlow.currentConstruct && - childFlow.currentConstruct.interruptible; - self.containerState = {}; - return effects.attempt(container, containerContinue, flowStart)(code) - } - - function containerContinue(code) { - stack.push([self.currentConstruct, self.containerState]); - self.containerState = undefined; - return documentContinued(code) - } - - function flowStart(code) { - if (code === null) { - exitContainers(0, true); - effects.consume(code); - return - } - - childFlow = childFlow || self.parser.flow(self.now()); - - effects.enter('chunkFlow', { - contentType: 'flow', - previous: childToken, - _tokenizer: childFlow - }); - - return flowContinue(code) - } - - function flowContinue(code) { - if (code === null) { - continueFlow(effects.exit('chunkFlow')); - return flowStart(code) - } - - if (markdownLineEnding_1(code)) { - effects.consume(code); - continueFlow(effects.exit('chunkFlow')); - return effects.check( - {tokenize: tokenizeInspect, partial: true}, - documentAfterPeek - ) - } - - effects.consume(code); - return flowContinue - } - - function documentAfterPeek(code) { - exitContainers( - inspectResult.continued, - inspectResult && inspectResult.flowEnd - ); - - continued = 0; - return start(code) - } - - function continueFlow(token) { - if (childToken) childToken.next = token; - childToken = token; - childFlow.lazy = inspectResult && inspectResult.lazy; - childFlow.defineSkip(token.start); - childFlow.write(self.sliceStream(token)); - } - - function exitContainers(size, end) { - var index = stack.length; - - // Close the flow. - if (childFlow && end) { - childFlow.write([null]); - childToken = childFlow = undefined; - } - - // Exit open containers. - while (index-- > size) { - self.containerState = stack[index][1]; - stack[index][0].exit.call(self, effects); - } - - stack.length = size; - } - - function tokenizeInspect(effects, ok) { - var subcontinued = 0; - - inspectResult = {}; - - return inspectStart - - function inspectStart(code) { - if (subcontinued < stack.length) { - self.containerState = stack[subcontinued][1]; - return effects.attempt( - stack[subcontinued][0].continuation, - inspectContinue, - inspectLess - )(code) - } - - // If weāre continued but in a concrete flow, we canāt have more - // containers. - if (childFlow.currentConstruct && childFlow.currentConstruct.concrete) { - inspectResult.flowContinue = true; - return inspectDone(code) - } - - self.interrupt = - childFlow.currentConstruct && childFlow.currentConstruct.interruptible; - self.containerState = {}; - return effects.attempt(container, inspectFlowEnd, inspectDone)(code) - } - - function inspectContinue(code) { - subcontinued++; - return self.containerState._closeFlow - ? inspectFlowEnd(code) - : inspectStart(code) - } - - function inspectLess(code) { - if (childFlow.currentConstruct && childFlow.currentConstruct.lazy) { - // Maybe another container? - self.containerState = {}; - return effects.attempt( - container, - inspectFlowEnd, - // Maybe flow, or a blank line? - effects.attempt( - lazyFlow, - inspectFlowEnd, - effects.check(partialBlankLine, inspectFlowEnd, inspectLazy) - ) - )(code) - } - - // Otherwise weāre interrupting. - return inspectFlowEnd(code) - } - - function inspectLazy(code) { - // Act as if all containers are continued. - subcontinued = stack.length; - inspectResult.lazy = true; - inspectResult.flowContinue = true; - return inspectDone(code) - } - - // Weāre done with flow if we have more containers, or an interruption. - function inspectFlowEnd(code) { - inspectResult.flowEnd = true; - return inspectDone(code) - } - - function inspectDone(code) { - inspectResult.continued = subcontinued; - self.interrupt = self.containerState = undefined; - return ok(code) - } - } -} - -function tokenizeContainer(effects, ok, nok) { - return factorySpace( - effects, - effects.attempt(this.parser.constructs.document, ok, nok), - 'linePrefix', - 4 - ) -} - -function tokenizeLazyFlow(effects, ok, nok) { - return factorySpace( - effects, - effects.lazy(this.parser.constructs.flow, ok, nok), - 'linePrefix', - 4 - ) -} - -var document$1 = { - tokenize: tokenize$2 -}; - -var assign = Object.assign; - -var chunkedSplice_1 = chunkedSplice; - -var v8MaxSafeChunkSize = 10000; - -// `Array#splice` takes all items to be inserted as individual argument which -// causes a stack overflow in V8 when trying to insert 100k items for instance. -function chunkedSplice(list, start, remove, items) { - var end = list.length; - var chunkStart = 0; - var result; - var parameters; - - // Make start between zero and `end` (included). - if (start < 0) { - start = -start > end ? 0 : end + start; - } else { - start = start > end ? end : start; - } - - remove = remove > 0 ? remove : 0; - - // No need to chunk the items if thereās only a couple (10k) items. - if (items.length < v8MaxSafeChunkSize) { - parameters = Array.from(items); - parameters.unshift(start, remove); - return [].splice.apply(list, parameters) - } - - // Delete `remove` items starting from `start` - result = [].splice.apply(list, [start, remove]); - - // Insert the items in chunks to not cause stack overflows. - while (chunkStart < items.length) { - parameters = items.slice(chunkStart, chunkStart + v8MaxSafeChunkSize); - parameters.unshift(start, 0) - ;[].splice.apply(list, parameters); - - chunkStart += v8MaxSafeChunkSize; - start += v8MaxSafeChunkSize; - } - - return result -} - -var shallow_1 = shallow; - - - -function shallow(object) { - return assign({}, object) -} - -var subtokenize_1 = subtokenize; - - - - - - -function subtokenize(events) { - var jumps = {}; - var index = -1; - var event; - var lineIndex; - var otherIndex; - var otherEvent; - var parameters; - var subevents; - var more; - - while (++index < events.length) { - while (index in jumps) { - index = jumps[index]; - } - - event = events[index]; - - // Add a hook for the GFM tasklist extension, which needs to know if text - // is in the first content of a list item. - if ( - index && - event[1].type === 'chunkFlow' && - events[index - 1][1].type === 'listItemPrefix' - ) { - subevents = event[1]._tokenizer.events; - otherIndex = 0; - - if ( - otherIndex < subevents.length && - subevents[otherIndex][1].type === 'lineEndingBlank' - ) { - otherIndex += 2; - } - - if ( - otherIndex < subevents.length && - subevents[otherIndex][1].type === 'content' - ) { - while (++otherIndex < subevents.length) { - if (subevents[otherIndex][1].type === 'content') { - break - } - - if (subevents[otherIndex][1].type === 'chunkText') { - subevents[otherIndex][1].isInFirstContentOfListItem = true; - otherIndex++; - } - } - } - } - - // Enter. - if (event[0] === 'enter') { - if (event[1].contentType) { - assign(jumps, subcontent(events, index)); - index = jumps[index]; - more = true; - } - } - // Exit. - else if (event[1]._container || event[1]._movePreviousLineEndings) { - otherIndex = index; - lineIndex = undefined; - - while (otherIndex--) { - otherEvent = events[otherIndex]; - - if ( - otherEvent[1].type === 'lineEnding' || - otherEvent[1].type === 'lineEndingBlank' - ) { - if (otherEvent[0] === 'enter') { - if (lineIndex) { - events[lineIndex][1].type = 'lineEndingBlank'; - } - - otherEvent[1].type = 'lineEnding'; - lineIndex = otherIndex; - } - } else { - break - } - } - - if (lineIndex) { - // Fix position. - event[1].end = shallow_1(events[lineIndex][1].start); - - // Switch container exit w/ line endings. - parameters = events.slice(lineIndex, index); - parameters.unshift(event); - chunkedSplice_1(events, lineIndex, index - lineIndex + 1, parameters); - } - } - } - - return !more -} - -function subcontent(events, eventIndex) { - var token = events[eventIndex][1]; - var context = events[eventIndex][2]; - var startPosition = eventIndex - 1; - var startPositions = []; - var tokenizer = - token._tokenizer || context.parser[token.contentType](token.start); - var childEvents = tokenizer.events; - var jumps = []; - var gaps = {}; - var stream; - var previous; - var index; - var entered; - var end; - var adjust; - - // Loop forward through the linked tokens to pass them in order to the - // subtokenizer. - while (token) { - // Find the position of the event for this token. - while (events[++startPosition][1] !== token) { - // Empty. - } - - startPositions.push(startPosition); - - if (!token._tokenizer) { - stream = context.sliceStream(token); - - if (!token.next) { - stream.push(null); - } - - if (previous) { - tokenizer.defineSkip(token.start); - } - - if (token.isInFirstContentOfListItem) { - tokenizer._gfmTasklistFirstContentOfListItem = true; - } - - tokenizer.write(stream); - - if (token.isInFirstContentOfListItem) { - tokenizer._gfmTasklistFirstContentOfListItem = undefined; - } - } - - // Unravel the next token. - previous = token; - token = token.next; - } - - // Now, loop back through all events (and linked tokens), to figure out which - // parts belong where. - token = previous; - index = childEvents.length; - - while (index--) { - // Make sure weāve at least seen something (final eol is part of the last - // token). - if (childEvents[index][0] === 'enter') { - entered = true; - } else if ( - // Find a void token that includes a break. - entered && - childEvents[index][1].type === childEvents[index - 1][1].type && - childEvents[index][1].start.line !== childEvents[index][1].end.line - ) { - add(childEvents.slice(index + 1, end)); - - // Help GC. - token._tokenizer = token.next = undefined; - token = token.previous; - end = index + 1; - } - } - - // Help GC. - tokenizer.events = token._tokenizer = token.next = undefined; - - // Do head: - add(childEvents.slice(0, end)); - - index = -1; - adjust = 0; - - while (++index < jumps.length) { - gaps[adjust + jumps[index][0]] = adjust + jumps[index][1]; - adjust += jumps[index][1] - jumps[index][0] - 1; - } - - return gaps - - function add(slice) { - var start = startPositions.pop(); - jumps.unshift([start, start + slice.length - 1]); - chunkedSplice_1(events, start, 2, slice); - } -} - -var sizeChunks_1 = sizeChunks; - -// Measure the number of character codes in chunks. -// Counts tabs based on their expanded size, and CR+LF as one character. -function sizeChunks(chunks) { - var index = -1; - var size = 0; - - while (++index < chunks.length) { - size += typeof chunks[index] === 'string' ? chunks[index].length : 1; - } - - return size -} - -var prefixSize_1 = prefixSize; - - - -function prefixSize(events, type) { - var tail = events[events.length - 1]; - if (!tail || tail[1].type !== type) return 0 - return sizeChunks_1(tail[2].sliceStream(tail[1])) -} - -var tokenize$3 = tokenizeContent; -var resolve$7 = resolveContent; -var interruptible = true; -var lazy = true; - - - - - - - -var lookaheadConstruct = {tokenize: tokenizeLookaheadConstruct, partial: true}; - -// Content is transparent: itās parsed right now. That way, definitions are also -// parsed right now: before text in paragraphs (specifically, media) are parsed. -function resolveContent(events) { - subtokenize_1(events); - return events -} - -function tokenizeContent(effects, ok) { - var previous; - - return start - - function start(code) { - effects.enter('content'); - previous = effects.enter('chunkContent', { - contentType: 'content' - }); - - return data(code) - } - - function data(code) { - if (code === null) { - return contentEnd(code) - } - - if (markdownLineEnding_1(code)) { - return effects.check( - lookaheadConstruct, - contentContinue, - contentEnd - )(code) - } - - // Data. - effects.consume(code); - return data - } - - function contentEnd(code) { - effects.exit('chunkContent'); - effects.exit('content'); - return ok(code) - } - - function contentContinue(code) { - effects.consume(code); - effects.exit('chunkContent'); - previous = previous.next = effects.enter('chunkContent', { - contentType: 'content', - previous: previous - }); - - return data - } -} - -function tokenizeLookaheadConstruct(effects, ok, nok) { - var self = this; - - return startLookahead - - function startLookahead(code) { - effects.enter('lineEnding'); - effects.consume(code); - effects.exit('lineEnding'); - return factorySpace(effects, prefixed, 'linePrefix') - } - - function prefixed(code) { - if (code === null || markdownLineEnding_1(code)) { - return nok(code) - } - - if (prefixSize_1(self.events, 'linePrefix') < 4) { - return effects.interrupt(self.parser.constructs.flow, nok, ok)(code) - } - - return ok(code) - } -} - -var content$1 = { - tokenize: tokenize$3, - resolve: resolve$7, - interruptible: interruptible, - lazy: lazy -}; - -var tokenize$4 = initializeFlow; - - - - - - - -function initializeFlow(effects) { - var self = this; - var initial = effects.attempt( - // Try to parse a blank line. - partialBlankLine, - atBlankEnding, - // Try to parse initial flow (essentially, only code). - effects.attempt( - this.parser.constructs.flowInitial, - afterConstruct, - factorySpace( - effects, - effects.attempt( - this.parser.constructs.flow, - afterConstruct, - effects.attempt(content$1, afterConstruct) - ), - 'linePrefix' - ) - ) - ); - - return initial - - function atBlankEnding(code) { - if (code === null) { - effects.consume(code); - return - } - - effects.enter('lineEndingBlank'); - effects.consume(code); - effects.exit('lineEndingBlank'); - self.currentConstruct = undefined; - return initial - } - - function afterConstruct(code) { - if (code === null) { - effects.consume(code); - return - } - - effects.enter('lineEnding'); - effects.consume(code); - effects.exit('lineEnding'); - self.currentConstruct = undefined; - return initial - } -} - -var flow = { - tokenize: tokenize$4 -}; - -var text_1 = initializeFactory('text'); -var string = initializeFactory('string'); -var resolver_1 = {resolveAll: resolver()}; - - - - - -function initializeFactory(field) { - return { - tokenize: initializeText, - resolveAll: resolver(field === 'text' ? resolveAllLineSuffixes : undefined) - } - - function initializeText(effects) { - var self = this; - var constructs = this.parser.constructs[field]; - var text = effects.attempt(constructs, start, notText); - - return start - - function start(code) { - return atBreak(code) ? text(code) : notText(code) - } - - function notText(code) { - if (code === null) { - effects.consume(code); - return - } - - effects.enter('data'); - effects.consume(code); - return data - } - - function data(code) { - if (atBreak(code)) { - effects.exit('data'); - return text(code) - } - - // Data. - effects.consume(code); - return data - } - - function atBreak(code) { - var list = constructs[code]; - var index = -1; - - if (code === null) { - return true - } - - if (list) { - while (++index < list.length) { - if ( - !list[index].previous || - list[index].previous.call(self, self.previous) - ) { - return true - } - } - } - } - } -} - -function resolver(extraResolver) { - return resolveAllText - - function resolveAllText(events, context) { - var index = -1; - var enter; - - // A rather boring computation (to merge adjacent `data` events) which - // improves mm performance by 29%. - while (++index <= events.length) { - if (enter === undefined) { - if (events[index] && events[index][1].type === 'data') { - enter = index; - index++; - } - } else if (!events[index] || events[index][1].type !== 'data') { - // Donāt do anything if there is one data token. - if (index !== enter + 2) { - events[enter][1].end = events[index - 1][1].end; - events.splice(enter + 2, index - enter - 2); - index = enter + 2; - } - - enter = undefined; - } - } - - return extraResolver ? extraResolver(events, context) : events - } -} - -// A rather ugly set of instructions which again looks at chunks in the input -// stream. -// The reason to do this here is that it is *much* faster to parse in reverse. -// And that we canāt hook into `null` to split the line suffix before an EOF. -// To do: figure out if we can make this into a clean utility, or even in core. -// As it will be useful for GFMs literal autolink extension (and maybe even -// tables?) -function resolveAllLineSuffixes(events, context) { - var eventIndex = -1; - var chunks; - var data; - var chunk; - var index; - var bufferIndex; - var size; - var tabs; - var token; - - while (++eventIndex <= events.length) { - if ( - (eventIndex === events.length || - events[eventIndex][1].type === 'lineEnding') && - events[eventIndex - 1][1].type === 'data' - ) { - data = events[eventIndex - 1][1]; - chunks = context.sliceStream(data); - index = chunks.length; - bufferIndex = -1; - size = 0; - tabs = undefined; - - while (index--) { - chunk = chunks[index]; - - if (typeof chunk === 'string') { - bufferIndex = chunk.length; - - while (chunk.charCodeAt(bufferIndex - 1) === 32) { - size++; - bufferIndex--; - } - - if (bufferIndex) break - bufferIndex = -1; - } - // Number - else if (chunk === -2) { - tabs = true; - size++; - } else if (chunk === -1) ; else { - // Replacement character, exit. - index++; - break - } - } - - if (size) { - token = { - type: - eventIndex === events.length || tabs || size < 2 - ? 'lineSuffix' - : 'hardBreakTrailing', - - start: { - line: data.end.line, - column: data.end.column - size, - offset: data.end.offset - size, - _index: data.start._index + index, - _bufferIndex: index - ? bufferIndex - : data.start._bufferIndex + bufferIndex - }, - - end: shallow_1(data.end) - }; - - data.end = shallow_1(token.start); - - if (data.start.offset === data.end.offset) { - assign(data, token); - } else { - events.splice( - eventIndex, - 0, - ['enter', token, context], - ['exit', token, context] - ); - - eventIndex += 2; - } - } - - eventIndex++; - } - } - - return events -} - -var text = { - text: text_1, - string: string, - resolver: resolver_1 -}; - -var markdownLineEndingOrSpace_1 = markdownLineEndingOrSpace; - -function markdownLineEndingOrSpace(code) { - return code < 0 || code === 32 -} - -// This module is generated by `script/`. -// -// CommonMark handles attention (emphasis, strong) markers based on what comes -// before or after them. -// One such difference is if those characters are Unicode punctuation. -// This script is generated from the Unicode data. -var unicodePunctuationRegex = /[!-\/:-@\[-`\{-~\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C77\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E4F\u2E52\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]/; - -var regexCheck_1 = regexCheck; - - - -function regexCheck(regex) { - return check - function check(code) { - return regex.test(fromCharCode(code)) - } -} - -// Size note: removing ASCII from the regex and using `ascii-punctuation` here -// In fact adds to the bundle size. -var unicodePunctuation_1 = regexCheck_1(unicodePunctuationRegex); - -var unicodeWhitespace = regexCheck_1(/\s/); - -var classifyCharacter_1 = classifyCharacter; - - - - - -// Classify whether a character is unicode whitespace, unicode punctuation, or -// anything else. -// Used for attention (emphasis, strong), whose sequences can open or close -// based on the class of surrounding characters. -function classifyCharacter(code) { - if ( - code === null || - markdownLineEndingOrSpace_1(code) || - unicodeWhitespace(code) - ) { - return 1 - } - - if (unicodePunctuation_1(code)) { - return 2 - } -} - -var movePoint_1 = movePoint; - -// Note! `move` only works inside lines! Itās not possible to move past other -// chunks (replacement characters, tabs, or line endings). -function movePoint(point, offset) { - point.column += offset; - point.offset += offset; - point._bufferIndex += offset; - return point -} - -var resolveAll_1 = resolveAll; - -function resolveAll(constructs, events, context) { - var called = []; - var index = -1; - var resolve; - - while (++index < constructs.length) { - resolve = constructs[index].resolveAll; - - if (resolve && called.indexOf(resolve) < 0) { - events = resolve(events, context); - called.push(resolve); - } - } - - return events -} - -var tokenize$5 = tokenizeAttention; -var resolveAll_1$1 = resolveAllAttention; - - - - - - - -// Take all events and resolve attention to emphasis or strong. -function resolveAllAttention(events, context) { - var index = -1; - var open; - var group; - var text; - var openingSequence; - var closingSequence; - var use; - var nextEvents; - var offset; - - // Walk through all events. - // - // Note: performance of this is fine on an mb of normal markdown, but itās - // a bottleneck for malicious stuff. - while (++index < events.length) { - // Find a token that can close. - if ( - events[index][0] === 'enter' && - events[index][1].type === 'attentionSequence' && - events[index][1]._close - ) { - open = index; - - // Now walk back to find an opener. - while (open--) { - // Find a token that can open the closer. - if ( - events[open][0] === 'exit' && - events[open][1].type === 'attentionSequence' && - events[open][1]._open && - // If the markers are the same: - context.sliceSerialize(events[open][1]).charCodeAt(0) === - context.sliceSerialize(events[index][1]).charCodeAt(0) - ) { - // If the opening can close or the closing can open, - // and the close size *is not* a multiple of three, - // but the sum of the opening and closing size *is* multiple of three, - // then donāt match. - if ( - (events[open][1]._close || events[index][1]._open) && - (events[index][1].end.offset - events[index][1].start.offset) % 3 && - !( - (events[open][1].end.offset - - events[open][1].start.offset + - events[index][1].end.offset - - events[index][1].start.offset) % - 3 - ) - ) { - continue - } - - // Number of markers to use from the sequence. - use = - events[open][1].end.offset - events[open][1].start.offset > 1 && - events[index][1].end.offset - events[index][1].start.offset > 1 - ? 2 - : 1; - - openingSequence = { - type: use > 1 ? 'strongSequence' : 'emphasisSequence', - start: movePoint_1(shallow_1(events[open][1].end), -use), - end: shallow_1(events[open][1].end) - }; - - closingSequence = { - type: use > 1 ? 'strongSequence' : 'emphasisSequence', - start: shallow_1(events[index][1].start), - end: movePoint_1(shallow_1(events[index][1].start), use) - }; - - text = { - type: use > 1 ? 'strongText' : 'emphasisText', - start: shallow_1(events[open][1].end), - end: shallow_1(events[index][1].start) - }; - - group = { - type: use > 1 ? 'strong' : 'emphasis', - start: shallow_1(openingSequence.start), - end: shallow_1(closingSequence.end) - }; - - events[open][1].end = shallow_1(openingSequence.start); - events[index][1].start = shallow_1(closingSequence.end); - - nextEvents = []; - - // If there are more markers in the opening, add them before. - if (events[open][1].end.offset - events[open][1].start.offset) { - chunkedSplice_1(nextEvents, nextEvents.length, 0, [ - ['enter', events[open][1], context], - ['exit', events[open][1], context] - ]); - } - - // Opening. - chunkedSplice_1(nextEvents, nextEvents.length, 0, [ - ['enter', group, context], - ['enter', openingSequence, context], - ['exit', openingSequence, context], - ['enter', text, context] - ]); - - // Between. - chunkedSplice_1( - nextEvents, - nextEvents.length, - 0, - resolveAll_1( - context.parser.constructs.insideSpan.null, - events.slice(open + 1, index), - context - ) - ); - - // Closing. - chunkedSplice_1(nextEvents, nextEvents.length, 0, [ - ['exit', text, context], - ['enter', closingSequence, context], - ['exit', closingSequence, context], - ['exit', group, context] - ]); - - // If there are more markers in the closing, add them after. - if (events[index][1].end.offset - events[index][1].start.offset) { - offset = 2; - chunkedSplice_1(nextEvents, nextEvents.length, 0, [ - ['enter', events[index][1], context], - ['exit', events[index][1], context] - ]); - } else { - offset = 0; - } - - chunkedSplice_1(events, open - 1, index - open + 3, nextEvents); - - index = open + nextEvents.length - offset - 2; - break - } - } - } - } - - // Remove remaining sequences. - index = -1; - - while (++index < events.length) { - if (events[index][1].type === 'attentionSequence') { - events[index][1].type = 'data'; - } - } - - return events -} - -function tokenizeAttention(effects, ok) { - var before = classifyCharacter_1(this.previous); - var marker; - - return start - - function start(code) { - effects.enter('attentionSequence'); - marker = code; - return sequence(code) - } - - function sequence(code) { - var token; - var after; - var open; - var close; - - if (code === marker) { - effects.consume(code); - return sequence - } - - token = effects.exit('attentionSequence'); - after = classifyCharacter_1(code); - open = !after || (after === 2 && before); - close = !before || (before === 2 && after); - token._open = marker === 42 ? open : open && (before || !close); - token._close = marker === 42 ? close : close && (after || !open); - return ok(code) - } -} - -var attention = { - tokenize: tokenize$5, - resolveAll: resolveAll_1$1 -}; - -var tokenize$6 = tokenizeAtxHeading; -var resolve$8 = resolveAtxHeading; - - - - - - - - -function resolveAtxHeading(events, context) { - var contentEnd = events.length - 2; - var contentStart = 3; - var content; - var text; - - // Prefix whitespace, part of the opening. - if (events[contentStart][1].type === 'whitespace') { - contentStart += 2; - } - - // Suffix whitespace, part of the closing. - if ( - contentEnd - 2 > contentStart && - events[contentEnd][1].type === 'whitespace' - ) { - contentEnd -= 2; - } - - if ( - events[contentEnd][1].type === 'atxHeadingSequence' && - (contentStart === contentEnd - 1 || - (contentEnd - 4 > contentStart && - events[contentEnd - 2][1].type === 'whitespace')) - ) { - contentEnd -= contentStart + 1 === contentEnd ? 2 : 4; - } - - if (contentEnd > contentStart) { - content = { - type: 'atxHeadingText', - start: events[contentStart][1].start, - end: events[contentEnd][1].end - }; - - text = { - type: 'chunkText', - start: events[contentStart][1].start, - end: events[contentEnd][1].end, - contentType: 'text' - }; - - chunkedSplice_1(events, contentStart, contentEnd - contentStart + 1, [ - ['enter', content, context], - ['enter', text, context], - ['exit', text, context], - ['exit', content, context] - ]); - } - - return events -} - -function tokenizeAtxHeading(effects, ok, nok) { - var self = this; - var size = 0; - - return start - - function start(code) { - effects.enter('atxHeading'); - effects.enter('atxHeadingSequence'); - return fenceOpenInside(code) - } - - function fenceOpenInside(code) { - if (code === 35 && size++ < 6) { - effects.consume(code); - return fenceOpenInside - } - - if (code === null || markdownLineEndingOrSpace_1(code)) { - effects.exit('atxHeadingSequence'); - return self.interrupt ? ok(code) : headingBreak(code) - } - - return nok(code) - } - - function headingBreak(code) { - if (code === 35) { - effects.enter('atxHeadingSequence'); - return sequence(code) - } - - if (code === null || markdownLineEnding_1(code)) { - effects.exit('atxHeading'); - return ok(code) - } - - if (markdownSpace_1(code)) { - return factorySpace(effects, headingBreak, 'whitespace')(code) - } - - effects.enter('atxHeadingText'); - return data(code) - } - - function sequence(code) { - if (code === 35) { - effects.consume(code); - return sequence - } - - effects.exit('atxHeadingSequence'); - return headingBreak(code) - } - - function data(code) { - if (code === null || code === 35 || markdownLineEndingOrSpace_1(code)) { - effects.exit('atxHeadingText'); - return headingBreak(code) - } - - effects.consume(code); - return data - } -} - -var headingAtx = { - tokenize: tokenize$6, - resolve: resolve$8 -}; - -var asciiAlpha = regexCheck_1(/[A-Za-z]/); - -var asciiAlphanumeric = regexCheck_1(/[\dA-Za-z]/); - -var asciiAtext = regexCheck_1(/[#-'*+\--9=?A-Z^-~]/); - -var asciiControl_1 = asciiControl; - -// Note: EOF is seen as ASCII control here, because `null < 32 == true`. -function asciiControl(code) { - return ( - // Special whitespace codes (which have negative values), C0 and Control - // character DEL - code < 32 || code === 127 - ) -} - -var tokenize$7 = tokenizeAutolink; - - - - - - -function tokenizeAutolink(effects, ok, nok) { - var size; - - return start - - function start(code) { - effects.enter('autolink'); - effects.enter('autolinkMarker'); - effects.consume(code); - effects.exit('autolinkMarker'); - effects.enter('autolinkProtocol'); - return open - } - - function open(code) { - if (asciiAlpha(code)) { - effects.consume(code); - size = 1; - return schemeOrEmailAtext - } - - return asciiAtext(code) ? emailAtext(code) : nok(code) - } - - function schemeOrEmailAtext(code) { - return code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code) - ? schemeInsideOrEmailAtext(code) - : emailAtext(code) - } - - function schemeInsideOrEmailAtext(code) { - if (code === 58) { - effects.consume(code); - return urlInside - } - - if ( - (code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) && - size++ < 32 - ) { - effects.consume(code); - return schemeInsideOrEmailAtext - } - - return emailAtext(code) - } - - function urlInside(code) { - if (code === 62) { - effects.exit('autolinkProtocol'); - return end(code) - } - - if (code === 32 || code === 60 || asciiControl_1(code)) { - return nok(code) - } - - effects.consume(code); - return urlInside - } - - function emailAtext(code) { - if (code === 64) { - effects.consume(code); - size = 0; - return emailAtSignOrDot - } - - if (asciiAtext(code)) { - effects.consume(code); - return emailAtext - } - - return nok(code) - } - - function emailAtSignOrDot(code) { - return asciiAlphanumeric(code) ? emailLabel(code) : nok(code) - } - - function emailLabel(code) { - if (code === 46) { - effects.consume(code); - size = 0; - return emailAtSignOrDot - } - - if (code === 62) { - // Exit, then change the type. - effects.exit('autolinkProtocol').type = 'autolinkEmail'; - return end(code) - } - - return emailValue(code) - } - - function emailValue(code) { - if ((code === 45 || asciiAlphanumeric(code)) && size++ < 63) { - effects.consume(code); - return code === 45 ? emailValue : emailLabel - } - - return nok(code) - } - - function end(code) { - effects.enter('autolinkMarker'); - effects.consume(code); - effects.exit('autolinkMarker'); - effects.exit('autolink'); - return ok - } -} - -var autolink = { - tokenize: tokenize$7 -}; - var asciiDigit = regexCheck_1(/\d/); -var tokenize$8 = tokenizeThematicBreak; - - - - - - -function tokenizeThematicBreak(effects, ok, nok) { - var size = 0; - var marker; - - return start - - function start(code) { - effects.enter('thematicBreak'); - marker = code; - return atBreak(code) - } - - function atBreak(code) { - if (code === marker) { - effects.enter('thematicBreakSequence'); - return sequence(code) - } - - if (markdownSpace_1(code)) { - return factorySpace(effects, atBreak, 'whitespace')(code) - } - - if (size < 3 || (code !== null && !markdownLineEnding_1(code))) { - return nok(code) - } - - effects.exit('thematicBreak'); - return ok(code) - } - - function sequence(code) { - if (code === marker) { - effects.consume(code); - size++; - return sequence - } - - effects.exit('thematicBreakSequence'); - return atBreak(code) - } -} - -var thematicBreak = { - tokenize: tokenize$8 -}; - -var list = createCommonjsModule(function (module, exports) { -exports.tokenize = tokenizeListStart; -exports.continuation = {tokenize: tokenizeListContinuation}; -exports.exit = tokenizeListEnd; - - - - - - - - - - -function tokenizeListStart(effects, ok, nok) { - var self = this; - var initialSize = prefixSize_1(self.events, 'linePrefix'); - var valueSize; - - return start - - function start(code) { - if ( - (code === 42 || code === 43 || code === 45) && - (!self.containerState.marker || code === self.containerState.marker) - ) { - return code === 42 || code === 45 - ? effects.check(thematicBreak, nok, unordered)(code) - : unordered(code) - } - - if ( - asciiDigit(code) && - (!self.containerState.type || self.containerState.type === 'listOrdered') - ) { - return ordered(code) - } - - return nok(code) - } - - function unordered(code) { - if (!self.containerState.type) { - self.containerState.type = 'listUnordered'; - effects.enter(self.containerState.type, {_container: true}); - } - - effects.enter('listItemPrefix'); - return atMarker(code) - } - - function ordered(code) { - if (self.containerState.type || !self.interrupt || code === 49) { - if (!self.containerState.type) { - self.containerState.type = 'listOrdered'; - effects.enter(self.containerState.type, {_container: true}); - } - - effects.enter('listItemPrefix'); - effects.enter('listItemValue'); - effects.consume(code); - valueSize = 1; - return self.interrupt ? afterValue : inside - } - - return nok(code) - } - - function inside(code) { - if (asciiDigit(code) && ++valueSize < 10) { - effects.consume(code); - return inside - } - - return afterValue(code) - } - - function afterValue(code) { - effects.exit('listItemValue'); +var asciiDigit_1 = asciiDigit; - return code === 41 || code === 46 ? atMarker(code) : nok(code) - } - - function atMarker(code) { - self.containerState.marker = self.containerState.marker || code; - - if (code === self.containerState.marker) { - effects.enter('listItemMarker'); - effects.consume(code); - effects.exit('listItemMarker'); - return effects.check( - partialBlankLine, - // Canāt be empty when interrupting. - self.interrupt ? nok : onBlank, - effects.attempt( - {tokenize: tokenizeListItemPrefixWhitespace, partial: true}, - endOfPrefix, - otherPrefix - ) - ) - } - - return nok(code) - } - - function onBlank(code) { - self.containerState.initialBlankLine = true; - initialSize++; - return endOfPrefix(code) - } - - function otherPrefix(code) { - if (markdownSpace_1(code)) { - effects.enter('listItemPrefixWhitespace'); - effects.consume(code); - effects.exit('listItemPrefixWhitespace'); - return endOfPrefix - } - - return nok(code) - } - - function endOfPrefix(code) { - self.containerState.size = - initialSize + sizeChunks_1(self.sliceStream(effects.exit('listItemPrefix'))); - return ok(code) - } -} - -function tokenizeListContinuation(effects, ok, nok) { - var self = this; - - self.containerState._closeFlow = undefined; - - return effects.check(partialBlankLine, onBlank, notBlank) - - function onBlank(code) { - self.containerState.furtherBlankLines = - self.containerState.furtherBlankLines || - self.containerState.initialBlankLine; - return ok(code) - } - - function notBlank(code) { - if (self.containerState.furtherBlankLines || !markdownSpace_1(code)) { - self.containerState.furtherBlankLines = self.containerState.initialBlankLine = undefined; - return notInCurrentItem(code) - } - - self.containerState.furtherBlankLines = self.containerState.initialBlankLine = undefined; - return effects.attempt( - {tokenize: tokenizeIndent, partial: true}, - ok, - notInCurrentItem - )(code) - } - - function notInCurrentItem(code) { - // While we do continue, we signal that the flow should be closed. - self.containerState._closeFlow = true; - // As weāre closing flow, weāre no longer interrupting - self.interrupt = undefined; - return factorySpace( - effects, - effects.attempt(exports, ok, nok), - 'linePrefix', - 4 - )(code) - } -} - -function tokenizeIndent(effects, ok, nok) { - var self = this; - - return factorySpace( - effects, - afterPrefix, - 'listItemIndent', - - self.containerState.size + 1 - ) - - function afterPrefix(code) { - return prefixSize_1(self.events, 'listItemIndent') === - self.containerState.size - ? ok(code) - : nok(code) - } -} - -function tokenizeListEnd(effects) { - effects.exit(this.containerState.type); -} - -function tokenizeListItemPrefixWhitespace(effects, ok, nok) { - var self = this; - - return factorySpace( - effects, - afterPrefix, - 'listItemPrefixWhitespace', - - 4 + 1 - ) - - function afterPrefix(code) { - return markdownSpace_1(code) || - !prefixSize_1(self.events, 'listItemPrefixWhitespace') - ? nok(code) - : ok(code) - } -} -}); -var list_1 = list.tokenize; -var list_2 = list.continuation; -var list_3 = list.exit; - -var blockQuote = createCommonjsModule(function (module, exports) { -exports.tokenize = tokenizeBlockQuoteStart; -exports.continuation = {tokenize: tokenizeBlockQuoteContinuation}; -exports.exit = exit; - - - - - -function tokenizeBlockQuoteStart(effects, ok, nok) { - var self = this; - - return start - - function start(code) { - if (code === 62) { - if (!self.containerState.open) { - effects.enter('blockQuote', {_container: true}); - self.containerState.open = true; - } - - effects.enter('blockQuotePrefix'); - effects.enter('blockQuoteMarker'); - effects.consume(code); - effects.exit('blockQuoteMarker'); - return after - } - - return nok(code) - } - - function after(code) { - if (markdownSpace_1(code)) { - effects.enter('blockQuotePrefixWhitespace'); - effects.consume(code); - effects.exit('blockQuotePrefixWhitespace'); - effects.exit('blockQuotePrefix'); - return ok - } - - effects.exit('blockQuotePrefix'); - return ok(code) - } -} +var asciiHexDigit = regexCheck_1(/[\dA-Fa-f]/); -function tokenizeBlockQuoteContinuation(effects, ok, nok) { - return factorySpace( - effects, - effects.attempt(exports, ok, nok), - 'linePrefix', - 4 - ) -} +var asciiHexDigit_1 = asciiHexDigit; -function exit(effects) { - effects.exit('blockQuote'); +function _interopDefaultLegacy$1(e) { + return e && typeof e === 'object' && 'default' in e ? e : {default: e} } -}); -var blockQuote_1 = blockQuote.tokenize; -var blockQuote_2 = blockQuote.continuation; -var blockQuote_3 = blockQuote.exit; - -var asciiPunctuation = regexCheck_1(/[!-/:-@[-`{-~]/); - -var tokenize$9 = tokenizeCharacterEscape; - - -function tokenizeCharacterEscape(effects, ok, nok) { - return start +var decodeEntity__default = /*#__PURE__*/ _interopDefaultLegacy$1(decodeEntity_1); - function start(code) { - effects.enter('characterEscape'); - effects.enter('escapeMarker'); - effects.consume(code); - effects.exit('escapeMarker'); - return open - } - - function open(code) { - if (asciiPunctuation(code)) { - effects.enter('characterEscapeValue'); - effects.consume(code); - effects.exit('characterEscapeValue'); - effects.exit('characterEscape'); - return ok - } - - return nok(code) - } -} - -var characterEscape = { - tokenize: tokenize$9 +var characterReference = { + name: 'characterReference', + tokenize: tokenizeCharacterReference }; -var asciiHexDigit = regexCheck_1(/[\dA-Fa-f]/); - -var tokenize$a = tokenizeCharacterReference; - - - - - - function tokenizeCharacterReference(effects, ok, nok) { var self = this; var size = 0; var max; var test; - return start function start(code) { @@ -36901,7 +34380,7 @@ function tokenizeCharacterReference(effects, ok, nok) { effects.enter('characterReferenceValue'); max = 31; - test = asciiAlphanumeric; + test = asciiAlphanumeric_1; return value(code) } @@ -36912,13 +34391,13 @@ function tokenizeCharacterReference(effects, ok, nok) { effects.exit('characterReferenceMarkerHexadecimal'); effects.enter('characterReferenceValue'); max = 6; - test = asciiHexDigit; + test = asciiHexDigit_1; return value } effects.enter('characterReferenceValue'); max = 7; - test = asciiDigit; + test = asciiDigit_1; return value(code) } @@ -36928,7 +34407,10 @@ function tokenizeCharacterReference(effects, ok, nok) { if (code === 59 && size) { token = effects.exit('characterReferenceValue'); - if (test === asciiAlphanumeric && !decodeEntity_1(self.sliceSerialize(token))) { + if ( + test === asciiAlphanumeric_1 && + !decodeEntity__default['default'](self.sliceSerialize(token)) + ) { return nok(code) } @@ -36948,25 +34430,23 @@ function tokenizeCharacterReference(effects, ok, nok) { } } -var characterReference = { - tokenize: tokenize$a -}; - -var tokenize$b = tokenizeCodeFenced; -var concrete = true; - - - - - +var characterReference_1 = characterReference; +var codeFenced = { + name: 'codeFenced', + tokenize: tokenizeCodeFenced, + concrete: true +}; function tokenizeCodeFenced(effects, ok, nok) { var self = this; + var closingFenceConstruct = { + tokenize: tokenizeClosingFence, + partial: true + }; var initialPrefix = prefixSize_1(this.events, 'linePrefix'); var sizeOpen = 0; var marker; - return start function start(code) { @@ -36996,7 +34476,9 @@ function tokenizeCodeFenced(effects, ok, nok) { } effects.enter('codeFencedFenceInfo'); - effects.enter('chunkString', {contentType: 'string'}); + effects.enter('chunkString', { + contentType: 'string' + }); return info(code) } @@ -37018,7 +34500,9 @@ function tokenizeCodeFenced(effects, ok, nok) { } effects.enter('codeFencedFenceMeta'); - effects.enter('chunkString', {contentType: 'string'}); + effects.enter('chunkString', { + contentType: 'string' + }); return meta(code) } @@ -37049,7 +34533,7 @@ function tokenizeCodeFenced(effects, ok, nok) { effects.consume(code); effects.exit('lineEnding'); return effects.attempt( - {tokenize: tokenizeClosingFence, partial: true}, + closingFenceConstruct, after, initialPrefix ? factorySpace(effects, content, 'linePrefix', initialPrefix + 1) @@ -37078,10 +34562,16 @@ function tokenizeCodeFenced(effects, ok, nok) { function tokenizeClosingFence(effects, ok, nok) { var size = 0; + return factorySpace( + effects, + closingSequenceStart, + 'linePrefix', + this.parser.constructs.disable.null.indexOf('codeIndented') > -1 + ? undefined + : 4 + ) - return factorySpace(effects, closingPrefixAfter, 'linePrefix', 4) - - function closingPrefixAfter(code) { + function closingSequenceStart(code) { effects.enter('codeFencedFence'); effects.enter('codeFencedFenceSequence'); return closingSequence(code) @@ -37110,21 +34600,17 @@ function tokenizeCodeFenced(effects, ok, nok) { } } -var codeFenced = { - tokenize: tokenize$b, - concrete: concrete -}; - -var tokenize$c = tokenizeCodeIndented; -var resolve$9 = resolveCodeIndented; - - - - - +var codeFenced_1 = codeFenced; - -var continuedIndent = {tokenize: tokenizeContinuedIndent, partial: true}; +var codeIndented = { + name: 'codeIndented', + tokenize: tokenizeCodeIndented, + resolve: resolveCodeIndented +}; +var indentedContentConstruct = { + tokenize: tokenizeIndentedContent, + partial: true +}; function resolveCodeIndented(events, context) { var code = { @@ -37132,34 +34618,13 @@ function resolveCodeIndented(events, context) { start: events[0][1].start, end: events[events.length - 1][1].end }; - chunkedSplice_1(events, 0, 0, [['enter', code, context]]); chunkedSplice_1(events, events.length, 0, [['exit', code, context]]); - return events } function tokenizeCodeIndented(effects, ok, nok) { - var self = this; - - return factorySpace( - effects, - afterInitial, - 'linePrefix', - - 4 + 1 - ) - - function afterInitial(code) { - // Flow checks blank lines first, so we donāt have EOL/EOF. - - if (prefixSize_1(self.events, 'linePrefix') < 4) { - return nok(code) - } - - effects.enter('codeFlowValue'); - return content(code) - } + return effects.attempt(indentedContentConstruct, afterPrefix, nok) function afterPrefix(code) { if (code === null) { @@ -37167,7 +34632,7 @@ function tokenizeCodeIndented(effects, ok, nok) { } if (markdownLineEnding_1(code)) { - return effects.attempt(continuedIndent, afterPrefix, ok)(code) + return effects.attempt(indentedContentConstruct, afterPrefix, ok)(code) } effects.enter('codeFlowValue'); @@ -37185,77 +34650,57 @@ function tokenizeCodeIndented(effects, ok, nok) { } } -function tokenizeContinuedIndent(effects, ok, nok) { +function tokenizeIndentedContent(effects, ok, nok) { var self = this; - - return factorySpace( - effects, - afterPrefix, - 'linePrefix', - - 4 + 1 - ) + return factorySpace(effects, afterPrefix, 'linePrefix', 4 + 1) function afterPrefix(code) { if (markdownLineEnding_1(code)) { effects.enter('lineEnding'); effects.consume(code); effects.exit('lineEnding'); - - return factorySpace( - effects, - afterPrefix, - 'linePrefix', - - 4 + 1 - ) + return factorySpace(effects, afterPrefix, 'linePrefix', 4 + 1) } return prefixSize_1(self.events, 'linePrefix') < 4 ? nok(code) : ok(code) } } -var codeIndented = { - tokenize: tokenize$c, - resolve: resolve$9 -}; - -var tokenize$d = tokenizeCodeText; -var resolve$a = resolveCodeText; -var previous_1 = previous; - +var codeIndented_1 = codeIndented; +var codeText = { + name: 'codeText', + tokenize: tokenizeCodeText, + resolve: resolveCodeText, + previous: previous +}; function resolveCodeText(events) { var tailExitIndex = events.length - 4; var headEnterIndex = 3; var index; - var enter; + var enter; // If we start and end with an EOL or a space. - // If we start and end with an EOL or a space. if ( (events[headEnterIndex][1].type === 'lineEnding' || events[headEnterIndex][1].type === 'space') && (events[tailExitIndex][1].type === 'lineEnding' || events[tailExitIndex][1].type === 'space') ) { - index = headEnterIndex; + index = headEnterIndex; // And we have data. - // And we have data. while (++index < tailExitIndex) { if (events[index][1].type === 'codeTextData') { // Then we have padding. events[tailExitIndex][1].type = events[headEnterIndex][1].type = 'codeTextPadding'; - headEnterIndex += 2; tailExitIndex -= 2; break } } - } + } // Merge adjacent spaces and data. - // Merge adjacent spaces and data. index = headEnterIndex - 1; tailExitIndex++; @@ -37296,7 +34741,6 @@ function tokenizeCodeText(effects, ok, nok) { var sizeOpen = 0; var size; var token; - return start function start(code) { @@ -37320,17 +34764,15 @@ function tokenizeCodeText(effects, ok, nok) { // EOF. if (code === null) { return nok(code) - } - - // Closing fence? + } // Closing fence? // Could also be data. + if (code === 96) { token = effects.enter('codeTextSequence'); size = 0; return closingSequence(code) - } + } // Tabs donāt work, and virtual spaces donāt make sense. - // Tabs donāt work, and virtual spaces donāt make sense. if (code === 32) { effects.enter('space'); effects.consume(code); @@ -37343,14 +34785,12 @@ function tokenizeCodeText(effects, ok, nok) { effects.consume(code); effects.exit('lineEnding'); return gap - } + } // Data. - // Data. effects.enter('codeTextData'); return data(code) - } + } // In code. - // In code. function data(code) { if ( code === null || @@ -37364,44 +34804,31 @@ function tokenizeCodeText(effects, ok, nok) { effects.consume(code); return data - } + } // Closing fence. - // Closing fence. function closingSequence(code) { // More. if (code === 96) { effects.consume(code); size++; return closingSequence - } + } // Done! - // Done! if (size === sizeOpen) { effects.exit('codeTextSequence'); effects.exit('codeText'); return ok(code) - } + } // More or less accents: mark as data. - // More or less accents: mark as data. token.type = 'codeTextData'; return data(code) } } -var codeText = { - tokenize: tokenize$d, - resolve: resolve$a, - previous: previous_1 -}; - -var factoryDestination = createDestination; - - - - +var codeText_1 = codeText; // eslint-disable-next-line max-params -function createDestination( +function destinationFactory( effects, ok, nok, @@ -37414,7 +34841,6 @@ function createDestination( ) { var limit = max || Infinity; var balance = 0; - return start function start(code) { @@ -37434,7 +34860,9 @@ function createDestination( effects.enter(type); effects.enter(rawType); effects.enter(stringType); - effects.enter('chunkString', {contentType: 'string'}); + effects.enter('chunkString', { + contentType: 'string' + }); return destinationRaw(code) } @@ -37449,7 +34877,9 @@ function createDestination( } effects.enter(stringType); - effects.enter('chunkString', {contentType: 'string'}); + effects.enter('chunkString', { + contentType: 'string' + }); return destinationEnclosed(code) } @@ -37521,17 +34951,13 @@ function createDestination( } } -var factoryLabel = createLabel; - - - +var factoryDestination = destinationFactory; // eslint-disable-next-line max-params -function createLabel(effects, ok, nok, type, markerType, stringType) { +function labelFactory(effects, ok, nok, type, markerType, stringType) { var self = this; var size = 0; var data; - return start function start(code) { @@ -37548,9 +34974,11 @@ function createLabel(effects, ok, nok, type, markerType, stringType) { code === null || code === 91 || (code === 93 && !data) || - /* istanbul ignore next - footnotes. */ + /* c8 ignore next */ (code === 94 && + /* c8 ignore next */ !size && + /* c8 ignore next */ '_hiddenFootnoteSupport' in self.parser.constructs) || size > 999 ) { @@ -37573,7 +35001,9 @@ function createLabel(effects, ok, nok, type, markerType, stringType) { return atBreak } - effects.enter('chunkString', {contentType: 'string'}); + effects.enter('chunkString', { + contentType: 'string' + }); return label(code) } @@ -37605,14 +35035,9 @@ function createLabel(effects, ok, nok, type, markerType, stringType) { } } -var factoryWhitespace = createWhitespace; - - +var factoryLabel = labelFactory; - - - -function createWhitespace(effects, ok) { +function whitespaceFactory(effects, ok) { var seen; return start @@ -37637,16 +35062,10 @@ function createWhitespace(effects, ok) { } } -var factoryTitle = createTitle; - - - - +var factoryWhitespace = whitespaceFactory; -// eslint-disable-next-line max-params -function createTitle(effects, ok, nok, type, markerType, stringType) { +function titleFactory(effects, ok, nok, type, markerType, stringType) { var marker; - return start function start(code) { @@ -37679,9 +35098,8 @@ function createTitle(effects, ok, nok, type, markerType, stringType) { if (code === null) { return nok(code) - } + } // Note: blank lines canāt exist in content. - // Note: blank lines canāt exist in content. if (markdownLineEnding_1(code)) { effects.enter('lineEnding'); effects.consume(code); @@ -37689,7 +35107,9 @@ function createTitle(effects, ok, nok, type, markerType, stringType) { return factorySpace(effects, atTitleBreak, 'linePrefix') } - effects.enter('chunkString', {contentType: 'string'}); + effects.enter('chunkString', { + contentType: 'string' + }); return title(code) } @@ -37713,28 +35133,20 @@ function createTitle(effects, ok, nok, type, markerType, stringType) { } } -var tokenize$e = tokenizeDefinition; - - - - - - - - - +var factoryTitle = titleFactory; +var definition = { + name: 'definition', + tokenize: tokenizeDefinition +}; +var titleConstruct = { + tokenize: tokenizeTitle, + partial: true +}; function tokenizeDefinition(effects, ok, nok) { var self = this; - var destinationAfter = effects.attempt( - {tokenize: tokenizeTitle, partial: true}, - factorySpace(effects, after, 'whitespace'), - factorySpace(effects, after, 'whitespace') - ); - var identifier; - return start function start(code) { @@ -37758,14 +35170,17 @@ function tokenizeDefinition(effects, ok, nok) { if (code === 58) { effects.enter('definitionMarker'); effects.consume(code); - effects.exit('definitionMarker'); + effects.exit('definitionMarker'); // Note: blank lines canāt exist in content. - // Note: blank lines canāt exist in content. return factoryWhitespace( effects, factoryDestination( effects, - destinationAfter, + effects.attempt( + titleConstruct, + factorySpace(effects, after, 'whitespace'), + factorySpace(effects, after, 'whitespace') + ), nok, 'definitionDestination', 'definitionDestinationLiteral', @@ -37823,13 +35238,12 @@ function tokenizeTitle(effects, ok, nok) { } } -var definition = { - tokenize: tokenize$e -}; - -var tokenize$f = tokenizeHardBreakEscape; - +var definition_1 = definition; +var hardBreakEscape = { + name: 'hardBreakEscape', + tokenize: tokenizeHardBreakEscape +}; function tokenizeHardBreakEscape(effects, ok, nok) { return start @@ -37852,12 +35266,132 @@ function tokenizeHardBreakEscape(effects, ok, nok) { } } -var hardBreakEscape = { - tokenize: tokenize$f +var hardBreakEscape_1 = hardBreakEscape; + +var headingAtx = { + name: 'headingAtx', + tokenize: tokenizeHeadingAtx, + resolve: resolveHeadingAtx }; +function resolveHeadingAtx(events, context) { + var contentEnd = events.length - 2; + var contentStart = 3; + var content; + var text; // Prefix whitespace, part of the opening. + + if (events[contentStart][1].type === 'whitespace') { + contentStart += 2; + } // Suffix whitespace, part of the closing. + + if ( + contentEnd - 2 > contentStart && + events[contentEnd][1].type === 'whitespace' + ) { + contentEnd -= 2; + } + + if ( + events[contentEnd][1].type === 'atxHeadingSequence' && + (contentStart === contentEnd - 1 || + (contentEnd - 4 > contentStart && + events[contentEnd - 2][1].type === 'whitespace')) + ) { + contentEnd -= contentStart + 1 === contentEnd ? 2 : 4; + } + + if (contentEnd > contentStart) { + content = { + type: 'atxHeadingText', + start: events[contentStart][1].start, + end: events[contentEnd][1].end + }; + text = { + type: 'chunkText', + start: events[contentStart][1].start, + end: events[contentEnd][1].end, + contentType: 'text' + }; + chunkedSplice_1(events, contentStart, contentEnd - contentStart + 1, [ + ['enter', content, context], + ['enter', text, context], + ['exit', text, context], + ['exit', content, context] + ]); + } + + return events +} + +function tokenizeHeadingAtx(effects, ok, nok) { + var self = this; + var size = 0; + return start + + function start(code) { + effects.enter('atxHeading'); + effects.enter('atxHeadingSequence'); + return fenceOpenInside(code) + } + + function fenceOpenInside(code) { + if (code === 35 && size++ < 6) { + effects.consume(code); + return fenceOpenInside + } + + if (code === null || markdownLineEndingOrSpace_1(code)) { + effects.exit('atxHeadingSequence'); + return self.interrupt ? ok(code) : headingBreak(code) + } + + return nok(code) + } + + function headingBreak(code) { + if (code === 35) { + effects.enter('atxHeadingSequence'); + return sequence(code) + } + + if (code === null || markdownLineEnding_1(code)) { + effects.exit('atxHeading'); + return ok(code) + } + + if (markdownSpace_1(code)) { + return factorySpace(effects, headingBreak, 'whitespace')(code) + } + + effects.enter('atxHeadingText'); + return data(code) + } + + function sequence(code) { + if (code === 35) { + effects.consume(code); + return sequence + } + + effects.exit('atxHeadingSequence'); + return headingBreak(code) + } + + function data(code) { + if (code === null || code === 35 || markdownLineEndingOrSpace_1(code)) { + effects.exit('atxHeadingText'); + return headingBreak(code) + } + + effects.consume(code); + return data + } +} + +var headingAtx_1 = headingAtx; + // This module is copied from <https://spec.commonmark.org/0.29/#html-blocks>. -var htmlBlockNames = [ +var basics = [ 'address', 'article', 'aside', @@ -37922,29 +35456,25 @@ var htmlBlockNames = [ 'ul' ]; -// This module is copied from <https://spec.commonmark.org/0.29/#html-blocks>. -var htmlRawNames = ['pre', 'script', 'style']; - -var tokenize$g = tokenizeHtml; -var resolveTo = resolveToHtml; -var concrete$1 = true; - - - - - - - - - - - +var htmlBlockNames = basics; +// This module is copied from <https://spec.commonmark.org/0.29/#html-blocks>. +var raws = ['pre', 'script', 'style', 'textarea']; +var htmlRawNames = raws; -var nextBlank = {tokenize: tokenizeNextBlank, partial: true}; +var htmlFlow = { + name: 'htmlFlow', + tokenize: tokenizeHtmlFlow, + resolveTo: resolveToHtmlFlow, + concrete: true +}; +var nextBlankConstruct = { + tokenize: tokenizeNextBlank, + partial: true +}; -function resolveToHtml(events) { +function resolveToHtmlFlow(events) { var index = events.length; while (index--) { @@ -37955,24 +35485,23 @@ function resolveToHtml(events) { if (index > 1 && events[index - 2][1].type === 'linePrefix') { // Add the prefix start to the HTML token. - events[index][1].start = events[index - 2][1].start; - // Add the prefix start to the HTML line token. - events[index + 1][1].start = events[index - 2][1].start; - // Remove the line prefix. + events[index][1].start = events[index - 2][1].start; // Add the prefix start to the HTML line token. + + events[index + 1][1].start = events[index - 2][1].start; // Remove the line prefix. + events.splice(index - 2, 2); } return events } -function tokenizeHtml(effects, ok, nok) { +function tokenizeHtmlFlow(effects, ok, nok) { var self = this; var kind; var startTag; var buffer; var index; var marker; - return start function start(code) { @@ -37995,15 +35524,15 @@ function tokenizeHtml(effects, ok, nok) { if (code === 63) { effects.consume(code); - kind = 3; - // While weāre in an instruction instead of a declaration, weāre on a `?` + kind = 3; // While weāre in an instruction instead of a declaration, weāre on a `?` // right now, so we do need to search for `>`, similar to declarations. + return self.interrupt ? ok : continuationDeclarationInside } - if (asciiAlpha(code)) { + if (asciiAlpha_1(code)) { effects.consume(code); - buffer = fromCharCode(code); + buffer = fromCharCode_1(code); startTag = true; return tagName } @@ -38026,7 +35555,7 @@ function tokenizeHtml(effects, ok, nok) { return cdataOpenInside } - if (asciiAlpha(code)) { + if (asciiAlpha_1(code)) { effects.consume(code); kind = 4; return self.interrupt ? ok : continuationDeclarationInside @@ -38058,9 +35587,9 @@ function tokenizeHtml(effects, ok, nok) { } function tagCloseStart(code) { - if (asciiAlpha(code)) { + if (asciiAlpha_1(code)) { effects.consume(code); - buffer = fromCharCode(code); + buffer = fromCharCode_1(code); return tagName } @@ -38074,7 +35603,11 @@ function tokenizeHtml(effects, ok, nok) { code === 62 || markdownLineEndingOrSpace_1(code) ) { - if (code !== 47 && startTag && htmlRawNames.indexOf(buffer.toLowerCase()) > -1) { + if ( + code !== 47 && + startTag && + htmlRawNames.indexOf(buffer.toLowerCase()) > -1 + ) { kind = 1; return self.interrupt ? ok(code) : continuation(code) } @@ -38090,8 +35623,8 @@ function tokenizeHtml(effects, ok, nok) { return self.interrupt ? ok(code) : continuation(code) } - kind = 7; - // Do not support complete HTML when interrupting. + kind = 7; // Do not support complete HTML when interrupting. + return self.interrupt ? nok(code) : startTag @@ -38099,9 +35632,9 @@ function tokenizeHtml(effects, ok, nok) { : completeClosingTagAfter(code) } - if (code === 45 || asciiAlphanumeric(code)) { + if (code === 45 || asciiAlphanumeric_1(code)) { effects.consume(code); - buffer += fromCharCode(code); + buffer += fromCharCode_1(code); return tagName } @@ -38132,7 +35665,7 @@ function tokenizeHtml(effects, ok, nok) { return completeEnd } - if (code === 58 || code === 95 || asciiAlpha(code)) { + if (code === 58 || code === 95 || asciiAlpha_1(code)) { effects.consume(code); return completeAttributeName } @@ -38151,7 +35684,7 @@ function tokenizeHtml(effects, ok, nok) { code === 46 || code === 58 || code === 95 || - asciiAlphanumeric(code) + asciiAlphanumeric_1(code) ) { effects.consume(code); return completeAttributeName @@ -38288,7 +35821,7 @@ function tokenizeHtml(effects, ok, nok) { if (markdownLineEnding_1(code) && (kind === 6 || kind === 7)) { return effects.check( - nextBlank, + nextBlankConstruct, continuationClose, continuationAtLineEnding )(code) @@ -38348,9 +35881,9 @@ function tokenizeHtml(effects, ok, nok) { return continuationClose } - if (asciiAlpha(code) && buffer.length < 6) { + if (asciiAlpha_1(code) && buffer.length < 8) { effects.consume(code); - buffer += fromCharCode(code); + buffer += fromCharCode_1(code); return continuationRawEndTag } @@ -38399,32 +35932,23 @@ function tokenizeNextBlank(effects, ok, nok) { effects.enter('lineEndingBlank'); effects.consume(code); effects.exit('lineEndingBlank'); - return effects.attempt(partialBlankLine, ok, nok) + return effects.attempt(partialBlankLine_1, ok, nok) } } -var htmlFlow = { - tokenize: tokenize$g, - resolveTo: resolveTo, - concrete: concrete$1 -}; - -var tokenize$h = tokenizeHtml$1; - - - - - - - +var htmlFlow_1 = htmlFlow; +var htmlText = { + name: 'htmlText', + tokenize: tokenizeHtmlText +}; -function tokenizeHtml$1(effects, ok, nok) { +function tokenizeHtmlText(effects, ok, nok) { + var self = this; var marker; var buffer; var index; var returnState; - return start function start(code) { @@ -38450,7 +35974,7 @@ function tokenizeHtml$1(effects, ok, nok) { return instruction } - if (asciiAlpha(code)) { + if (asciiAlpha_1(code)) { effects.consume(code); return tagOpen } @@ -38471,7 +35995,7 @@ function tokenizeHtml$1(effects, ok, nok) { return cdataOpen } - if (asciiAlpha(code)) { + if (asciiAlpha_1(code)) { effects.consume(code); return declaration } @@ -38556,6 +36080,11 @@ function tokenizeHtml$1(effects, ok, nok) { return cdataClose } + if (markdownLineEnding_1(code)) { + returnState = cdata; + return atLineEnding(code) + } + effects.consume(code); return cdata } @@ -38620,7 +36149,7 @@ function tokenizeHtml$1(effects, ok, nok) { } function tagCloseStart(code) { - if (asciiAlpha(code)) { + if (asciiAlpha_1(code)) { effects.consume(code); return tagClose } @@ -38629,7 +36158,7 @@ function tokenizeHtml$1(effects, ok, nok) { } function tagClose(code) { - if (code === 45 || asciiAlphanumeric(code)) { + if (code === 45 || asciiAlphanumeric_1(code)) { effects.consume(code); return tagClose } @@ -38652,7 +36181,7 @@ function tokenizeHtml$1(effects, ok, nok) { } function tagOpen(code) { - if (code === 45 || asciiAlphanumeric(code)) { + if (code === 45 || asciiAlphanumeric_1(code)) { effects.consume(code); return tagOpen } @@ -38670,7 +36199,7 @@ function tokenizeHtml$1(effects, ok, nok) { return end } - if (code === 58 || code === 95 || asciiAlpha(code)) { + if (code === 58 || code === 95 || asciiAlpha_1(code)) { effects.consume(code); return tagOpenAttributeName } @@ -38694,7 +36223,7 @@ function tokenizeHtml$1(effects, ok, nok) { code === 46 || code === 58 || code === 95 || - asciiAlphanumeric(code) + asciiAlphanumeric_1(code) ) { effects.consume(code); return tagOpenAttributeName @@ -38799,16 +36328,22 @@ function tokenizeHtml$1(effects, ok, nok) { effects.consume(code); return tagOpenAttributeValueUnquoted - } - - // We canāt have blank lines in content, so no need to worry about empty + } // We canāt have blank lines in content, so no need to worry about empty // tokens. + function atLineEnding(code) { effects.exit('htmlTextData'); effects.enter('lineEnding'); effects.consume(code); effects.exit('lineEnding'); - return factorySpace(effects, afterPrefix, 'linePrefix', 4) + return factorySpace( + effects, + afterPrefix, + 'linePrefix', + self.parser.constructs.disable.null.indexOf('codeIndented') > -1 + ? undefined + : 4 + ) } function afterPrefix(code) { @@ -38828,28 +36363,23 @@ function tokenizeHtml$1(effects, ok, nok) { } } -var htmlText = { - tokenize: tokenize$h -}; - -var tokenize$i = tokenizeLabelEnd; -var resolveTo$1 = resolveToLabelEnd; -var resolveAll_1$2 = resolveAllLabelEnd; +var htmlText_1 = htmlText; - - - - - - - - - - - -var resource = {tokenize: tokenizeResource}; -var fullReference = {tokenize: tokenizeFullReference}; -var collapsedReference = {tokenize: tokenizeCollapsedReference}; +var labelEnd = { + name: 'labelEnd', + tokenize: tokenizeLabelEnd, + resolveTo: resolveToLabelEnd, + resolveAll: resolveAllLabelEnd +}; +var resourceConstruct = { + tokenize: tokenizeResource +}; +var fullReferenceConstruct = { + tokenize: tokenizeFullReference +}; +var collapsedReferenceConstruct = { + tokenize: tokenizeCollapsedReference +}; function resolveAllLabelEnd(events) { var index = -1; @@ -38883,9 +36413,8 @@ function resolveToLabelEnd(events, context) { var token; var open; var close; - var media; + var media; // Find an opening. - // Find an opening. while (index--) { token = events[index][1]; @@ -38896,10 +36425,9 @@ function resolveToLabelEnd(events, context) { (token.type === 'labelLink' && token._inactive) ) { break - } - - // Mark other link openings as inactive, as we canāt have links in + } // Mark other link openings as inactive, as we canāt have links in // links. + if (events[index][0] === 'enter' && token.type === 'labelLink') { token._inactive = true; } @@ -38926,63 +36454,45 @@ function resolveToLabelEnd(events, context) { start: shallow_1(events[open][1].start), end: shallow_1(events[events.length - 1][1].end) }; - label = { type: 'label', start: shallow_1(events[open][1].start), end: shallow_1(events[close][1].end) }; - text = { type: 'labelText', start: shallow_1(events[open + offset + 2][1].end), end: shallow_1(events[close - 2][1].start) }; - media = [ ['enter', group, context], ['enter', label, context] - ]; + ]; // Opening marker. - // Opening marker. - chunkedSplice_1( - media, - media.length, - 0, - events.slice(open + 1, open + offset + 3) - ); + media = chunkedPush_1(media, events.slice(open + 1, open + offset + 3)); // Text open. - // Text open. - chunkedSplice_1(media, media.length, 0, [['enter', text, context]]); + media = chunkedPush_1(media, [['enter', text, context]]); // Between. - // Between. - chunkedSplice_1( + media = chunkedPush_1( media, - media.length, - 0, resolveAll_1( context.parser.constructs.insideSpan.null, events.slice(open + offset + 4, close - 3), context ) - ); + ); // Text close, marker close, label close. - // Text close, marker close, label close. - chunkedSplice_1(media, media.length, 0, [ + media = chunkedPush_1(media, [ ['exit', text, context], events[close - 2], events[close - 1], ['exit', label, context] - ]); + ]); // Reference, resource, or so. - // Reference, resource, or so. - chunkedSplice_1(media, media.length, 0, events.slice(close + 1)); - - // Media close. - chunkedSplice_1(media, media.length, 0, [['exit', group, context]]); + media = chunkedPush_1(media, events.slice(close + 1)); // Media close. + media = chunkedPush_1(media, [['exit', group, context]]); chunkedSplice_1(events, open, events.length, media); - return events } @@ -38990,9 +36500,8 @@ function tokenizeLabelEnd(effects, ok, nok) { var self = this; var index = self.events.length; var labelStart; - var defined; + var defined; // Find an opening. - // Find an opening. while (index--) { if ( (self.events[index][1].type === 'labelImage' || @@ -39009,14 +36518,16 @@ function tokenizeLabelEnd(effects, ok, nok) { function start(code) { if (!labelStart) { return nok(code) - } + } // Itās a balanced bracket, but contains a link. - // Itās a balanced bracket, but contains a link. if (labelStart._inactive) return balanced(code) defined = self.parser.defined.indexOf( normalizeIdentifier_1( - self.sliceSerialize({start: labelStart.end, end: self.now()}) + self.sliceSerialize({ + start: labelStart.end, + end: self.now() + }) ) ) > -1; effects.enter('labelEnd'); @@ -39030,19 +36541,23 @@ function tokenizeLabelEnd(effects, ok, nok) { function afterLabelEnd(code) { // Resource: `[asd](fgh)`. if (code === 40) { - return effects.attempt(resource, ok, defined ? ok : balanced)(code) - } + return effects.attempt( + resourceConstruct, + ok, + defined ? ok : balanced + )(code) + } // Collapsed (`[asd][]`) or full (`[asd][fgh]`) reference? - // Collapsed (`[asd][]`) or full (`[asd][fgh]`) reference? if (code === 91) { return effects.attempt( - fullReference, + fullReferenceConstruct, ok, - defined ? effects.attempt(collapsedReference, ok, balanced) : balanced + defined + ? effects.attempt(collapsedReferenceConstruct, ok, balanced) + : balanced )(code) - } + } // Shortcut reference: `[asd]`? - // Shortcut reference: `[asd]`? return defined ? ok(code) : balanced(code) } @@ -39117,7 +36632,6 @@ function tokenizeResource(effects, ok, nok) { function tokenizeFullReference(effects, ok, nok) { var self = this; - return start function start(code) { @@ -39167,18 +36681,16 @@ function tokenizeCollapsedReference(effects, ok, nok) { } } -var labelEnd = { - tokenize: tokenize$i, - resolveTo: resolveTo$1, - resolveAll: resolveAll_1$2 -}; +var labelEnd_1 = labelEnd; -var tokenize$j = tokenizelabelImage; -var resolveAll$1 = labelEnd.resolveAll; +var labelStartImage = { + name: 'labelStartImage', + tokenize: tokenizeLabelStartImage, + resolveAll: labelEnd_1.resolveAll +}; -function tokenizelabelImage(effects, ok, nok) { +function tokenizeLabelStartImage(effects, ok, nok) { var self = this; - return start function start(code) { @@ -39202,24 +36714,26 @@ function tokenizelabelImage(effects, ok, nok) { } function after(code) { - /* istanbul ignore next - footnotes. */ - return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs - ? nok(code) + /* c8 ignore next */ + return code === 94 && + /* c8 ignore next */ + '_hiddenFootnoteSupport' in self.parser.constructs + ? /* c8 ignore next */ + nok(code) : ok(code) } } -var labelStartImage = { - tokenize: tokenize$j, - resolveAll: resolveAll$1 -}; +var labelStartImage_1 = labelStartImage; -var tokenize$k = tokenizelabelLink; -var resolveAll$2 = labelEnd.resolveAll; +var labelStartLink = { + name: 'labelStartLink', + tokenize: tokenizeLabelStartLink, + resolveAll: labelEnd_1.resolveAll +}; -function tokenizelabelLink(effects, ok, nok) { +function tokenizeLabelStartLink(effects, ok, nok) { var self = this; - return start function start(code) { @@ -39232,35 +36746,296 @@ function tokenizelabelLink(effects, ok, nok) { } function after(code) { - /* istanbul ignore next - footnotes. */ - return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs - ? nok(code) + /* c8 ignore next */ + return code === 94 && + /* c8 ignore next */ + '_hiddenFootnoteSupport' in self.parser.constructs + ? /* c8 ignore next */ + nok(code) : ok(code) } } -var labelStartLink = { - tokenize: tokenize$k, - resolveAll: resolveAll$2 +var labelStartLink_1 = labelStartLink; + +var lineEnding = { + name: 'lineEnding', + tokenize: tokenizeLineEnding +}; + +function tokenizeLineEnding(effects, ok) { + return start + + function start(code) { + effects.enter('lineEnding'); + effects.consume(code); + effects.exit('lineEnding'); + return factorySpace(effects, ok, 'linePrefix') + } +} + +var lineEnding_1 = lineEnding; + +var thematicBreak = { + name: 'thematicBreak', + tokenize: tokenizeThematicBreak }; -var tokenize$l = tokenizeSetextUnderline; -var resolveTo$2 = resolveToSetextUnderline; +function tokenizeThematicBreak(effects, ok, nok) { + var size = 0; + var marker; + return start + + function start(code) { + effects.enter('thematicBreak'); + marker = code; + return atBreak(code) + } + + function atBreak(code) { + if (code === marker) { + effects.enter('thematicBreakSequence'); + return sequence(code) + } + + if (markdownSpace_1(code)) { + return factorySpace(effects, atBreak, 'whitespace')(code) + } + if (size < 3 || (code !== null && !markdownLineEnding_1(code))) { + return nok(code) + } + effects.exit('thematicBreak'); + return ok(code) + } + function sequence(code) { + if (code === marker) { + effects.consume(code); + size++; + return sequence + } + effects.exit('thematicBreakSequence'); + return atBreak(code) + } +} +var thematicBreak_1 = thematicBreak; + +var list = { + name: 'list', + tokenize: tokenizeListStart, + continuation: { + tokenize: tokenizeListContinuation + }, + exit: tokenizeListEnd +}; +var listItemPrefixWhitespaceConstruct = { + tokenize: tokenizeListItemPrefixWhitespace, + partial: true +}; +var indentConstruct = { + tokenize: tokenizeIndent, + partial: true +}; + +function tokenizeListStart(effects, ok, nok) { + var self = this; + var initialSize = prefixSize_1(self.events, 'linePrefix'); + var size = 0; + return start + + function start(code) { + var kind = + self.containerState.type || + (code === 42 || code === 43 || code === 45 + ? 'listUnordered' + : 'listOrdered'); + + if ( + kind === 'listUnordered' + ? !self.containerState.marker || code === self.containerState.marker + : asciiDigit_1(code) + ) { + if (!self.containerState.type) { + self.containerState.type = kind; + effects.enter(kind, { + _container: true + }); + } + + if (kind === 'listUnordered') { + effects.enter('listItemPrefix'); + return code === 42 || code === 45 + ? effects.check(thematicBreak_1, nok, atMarker)(code) + : atMarker(code) + } + + if (!self.interrupt || code === 49) { + effects.enter('listItemPrefix'); + effects.enter('listItemValue'); + return inside(code) + } + } + + return nok(code) + } + + function inside(code) { + if (asciiDigit_1(code) && ++size < 10) { + effects.consume(code); + return inside + } + + if ( + (!self.interrupt || size < 2) && + (self.containerState.marker + ? code === self.containerState.marker + : code === 41 || code === 46) + ) { + effects.exit('listItemValue'); + return atMarker(code) + } + + return nok(code) + } + + function atMarker(code) { + effects.enter('listItemMarker'); + effects.consume(code); + effects.exit('listItemMarker'); + self.containerState.marker = self.containerState.marker || code; + return effects.check( + partialBlankLine_1, // Canāt be empty when interrupting. + self.interrupt ? nok : onBlank, + effects.attempt( + listItemPrefixWhitespaceConstruct, + endOfPrefix, + otherPrefix + ) + ) + } + + function onBlank(code) { + self.containerState.initialBlankLine = true; + initialSize++; + return endOfPrefix(code) + } + + function otherPrefix(code) { + if (markdownSpace_1(code)) { + effects.enter('listItemPrefixWhitespace'); + effects.consume(code); + effects.exit('listItemPrefixWhitespace'); + return endOfPrefix + } + + return nok(code) + } + + function endOfPrefix(code) { + self.containerState.size = + initialSize + sizeChunks_1(self.sliceStream(effects.exit('listItemPrefix'))); + return ok(code) + } +} + +function tokenizeListContinuation(effects, ok, nok) { + var self = this; + self.containerState._closeFlow = undefined; + return effects.check(partialBlankLine_1, onBlank, notBlank) + + function onBlank(code) { + self.containerState.furtherBlankLines = + self.containerState.furtherBlankLines || + self.containerState.initialBlankLine; + return ok(code) + } + + function notBlank(code) { + if (self.containerState.furtherBlankLines || !markdownSpace_1(code)) { + self.containerState.furtherBlankLines = self.containerState.initialBlankLine = undefined; + return notInCurrentItem(code) + } + + self.containerState.furtherBlankLines = self.containerState.initialBlankLine = undefined; + return effects.attempt(indentConstruct, ok, notInCurrentItem)(code) + } + + function notInCurrentItem(code) { + // While we do continue, we signal that the flow should be closed. + self.containerState._closeFlow = true; // As weāre closing flow, weāre no longer interrupting. + + self.interrupt = undefined; + return factorySpace( + effects, + effects.attempt(list, ok, nok), + 'linePrefix', + self.parser.constructs.disable.null.indexOf('codeIndented') > -1 + ? undefined + : 4 + )(code) + } +} + +function tokenizeIndent(effects, ok, nok) { + var self = this; + return factorySpace( + effects, + afterPrefix, + 'listItemIndent', + self.containerState.size + 1 + ) + + function afterPrefix(code) { + return prefixSize_1(self.events, 'listItemIndent') === + self.containerState.size + ? ok(code) + : nok(code) + } +} + +function tokenizeListEnd(effects) { + effects.exit(this.containerState.type); +} + +function tokenizeListItemPrefixWhitespace(effects, ok, nok) { + var self = this; + return factorySpace( + effects, + afterPrefix, + 'listItemPrefixWhitespace', + self.parser.constructs.disable.null.indexOf('codeIndented') > -1 + ? undefined + : 4 + 1 + ) + + function afterPrefix(code) { + return markdownSpace_1(code) || + !prefixSize_1(self.events, 'listItemPrefixWhitespace') + ? nok(code) + : ok(code) + } +} + +var list_1 = list; + +var setextUnderline = { + name: 'setextUnderline', + tokenize: tokenizeSetextUnderline, + resolveTo: resolveToSetextUnderline +}; function resolveToSetextUnderline(events, context) { var index = events.length; var content; var text; var definition; - var heading; - - // Find the opening of the content. + var heading; // Find the opening of the content. // Itāll always exist: we donāt tokenize if it isnāt there. + while (index--) { if (events[index][0] === 'enter') { if (events[index][1].type === 'content') { @@ -39271,8 +37046,7 @@ function resolveToSetextUnderline(events, context) { if (events[index][1].type === 'paragraph') { text = index; } - } - // Exit + } // Exit else { if (events[index][1].type === 'content') { // Remove the content end (if needed weāll add it later) @@ -39289,24 +37063,20 @@ function resolveToSetextUnderline(events, context) { type: 'setextHeading', start: shallow_1(events[text][1].start), end: shallow_1(events[events.length - 1][1].end) - }; - - // Change the paragraph to setext heading text. - events[text][1].type = 'setextHeadingText'; + }; // Change the paragraph to setext heading text. - // If we have definitions in the content, weāll keep on having content, + events[text][1].type = 'setextHeadingText'; // If we have definitions in the content, weāll keep on having content, // but we need move it. + if (definition) { events.splice(text, 0, ['enter', heading, context]); events.splice(definition + 1, 0, ['exit', events[content][1], context]); events[content][1].end = shallow_1(events[definition][1].end); } else { events[content][1] = heading; - } + } // Add the heading exit at the end. - // Add the heading exit at the end. events.push(['exit', heading, context]); - return events } @@ -39314,9 +37084,8 @@ function tokenizeSetextUnderline(effects, ok, nok) { var self = this; var index = self.events.length; var marker; - var paragraph; + var paragraph; // Find an opening. - // Find an opening. while (index--) { // Skip enter/exit of line ending, line prefix, and content. // We can now either have a definition or a paragraph. @@ -39363,613 +37132,163 @@ function tokenizeSetextUnderline(effects, ok, nok) { } } -var setextUnderline = { - tokenize: tokenize$l, - resolveTo: resolveTo$2 -}; - -var tokenize$m = tokenizeWhitespace; - - - - - -function tokenizeWhitespace(effects, ok) { - return start - - function start(code) { - effects.enter('lineEnding'); - effects.consume(code); - effects.exit('lineEnding'); - return factorySpace(effects, ok, 'linePrefix') - } -} - -var lineEnding = { - tokenize: tokenize$m -}; - -var resolveText = text.resolver; +var setextUnderline_1 = setextUnderline; var document$2 = { - 42: list, // Asterisk - 43: list, // Plus sign - 45: list, // Dash - 48: list, // 0 - 49: list, // 1 - 50: list, // 2 - 51: list, // 3 - 52: list, // 4 - 53: list, // 5 - 54: list, // 6 - 55: list, // 7 - 56: list, // 8 - 57: list, // 9 - 62: blockQuote // Greater than + 42: list_1, + // Asterisk + 43: list_1, + // Plus sign + 45: list_1, + // Dash + 48: list_1, + // 0 + 49: list_1, + // 1 + 50: list_1, + // 2 + 51: list_1, + // 3 + 52: list_1, + // 4 + 53: list_1, + // 5 + 54: list_1, + // 6 + 55: list_1, + // 7 + 56: list_1, + // 8 + 57: list_1, + // 9 + 62: blockQuote_1 // Greater than }; - var contentInitial = { - 91: definition // Left square bracket + 91: definition_1 // Left square bracket }; - var flowInitial = { - '-2': codeIndented, // Horizontal tab - '-1': codeIndented, // Virtual space - 32: codeIndented // Space + '-2': codeIndented_1, + // Horizontal tab + '-1': codeIndented_1, + // Virtual space + 32: codeIndented_1 // Space }; - var flow$1 = { - 35: headingAtx, // Number sign - 42: thematicBreak, // Asterisk - 45: [setextUnderline, thematicBreak], // Dash - 60: htmlFlow, // Less than - 61: setextUnderline, // Equals to - 95: thematicBreak, // Underscore - 96: codeFenced, // Grave accent - 126: codeFenced // Tilde + 35: headingAtx_1, + // Number sign + 42: thematicBreak_1, + // Asterisk + 45: [setextUnderline_1, thematicBreak_1], + // Dash + 60: htmlFlow_1, + // Less than + 61: setextUnderline_1, + // Equals to + 95: thematicBreak_1, + // Underscore + 96: codeFenced_1, + // Grave accent + 126: codeFenced_1 // Tilde }; - var string$1 = { - 38: characterReference, // Ampersand - 92: characterEscape // Backslash + 38: characterReference_1, + // Ampersand + 92: characterEscape_1 // Backslash }; - var text$1 = { - '-5': lineEnding, // Carriage return - '-4': lineEnding, // Line feed - '-3': lineEnding, // Carriage return + line feed - 33: labelStartImage, // Exclamation mark - 38: characterReference, // Ampersand - 42: attention, // Asterisk - 60: [autolink, htmlText], // Less than - 91: labelStartLink, // Left square bracket - 92: [hardBreakEscape, characterEscape], // Backslash - 93: labelEnd, // Right square bracket - 95: attention, // Underscore - 96: codeText // Grave accent + '-5': lineEnding_1, + // Carriage return + '-4': lineEnding_1, + // Line feed + '-3': lineEnding_1, + // Carriage return + line feed + 33: labelStartImage_1, + // Exclamation mark + 38: characterReference_1, + // Ampersand + 42: attention_1, + // Asterisk + 60: [autolink_1, htmlText_1], + // Less than + 91: labelStartLink_1, + // Left square bracket + 92: [hardBreakEscape_1, characterEscape_1], + // Backslash + 93: labelEnd_1, + // Right square bracket + 95: attention_1, + // Underscore + 96: codeText_1 // Grave accent }; - var insideSpan = { - null: [attention, resolveText] -}; - -var constructs = { - document: document$2, - contentInitial: contentInitial, - flowInitial: flowInitial, - flow: flow$1, - string: string$1, - text: text$1, - insideSpan: insideSpan -}; - -var serializeChunks_1 = serializeChunks; - - - -function serializeChunks(chunks) { - var index = -1; - var result = []; - var chunk; - var value; - var atTab; - - while (++index < chunks.length) { - chunk = chunks[index]; - - if (typeof chunk === 'string') { - value = chunk; - } else if (chunk === -5) { - value = '\r'; - } else if (chunk === -4) { - value = '\n'; - } else if (chunk === -3) { - value = '\r' + '\n'; - } else if (chunk === -2) { - value = '\t'; - } else if (chunk === -1) { - if (atTab) continue - value = ' '; - } else { - // Currently only replacement character. - value = fromCharCode(chunk); - } - - atTab = chunk === -2; - result.push(value); - } - - return result.join('') -} - -var sliceChunks_1 = sliceChunks; - -function sliceChunks(chunks, token) { - var startIndex = token.start._index; - var startBufferIndex = token.start._bufferIndex; - var endIndex = token.end._index; - var endBufferIndex = token.end._bufferIndex; - var view; - - if (startIndex === endIndex) { - view = [chunks[startIndex].slice(startBufferIndex, endBufferIndex)]; - } else { - view = chunks.slice(startIndex, endIndex); - - if (startBufferIndex > -1) { - view[0] = view[0].slice(startBufferIndex); - } - - if (endBufferIndex > 0) { - view.push(chunks[endIndex].slice(0, endBufferIndex)); - } - } - - return view -} - -var miniflat_1 = miniflat; - -function miniflat(value) { - return value === null || value === undefined - ? [] - : 'length' in value - ? value - : [value] -} - -var createTokenizer_1 = createTokenizer; - - - - - - - - - - - -// Create a tokenizer. -// Tokenizers deal with one type of data (e.g., containers, flow, text). -// The parser is the object dealing with it all. -// `initialize` works like other constructs, except that only its `tokenize` -// function is used, in which case it doesnāt receive an `ok` or `nok`. -// `from` can be given to set the point before the first character, although -// when further lines are indented, they must be set with `defineSkip`. -function createTokenizer(parser, initialize, from) { - var point = from ? shallow_1(from) : {line: 1, column: 1, offset: 0}; - var columnStart = {}; - var resolveAllConstructs = []; - var chunks = []; - var stack = []; - - // Tools used for tokenizing. - var effects = { - consume: consume, - enter: enter, - exit: exit, - attempt: constructFactory(onsuccessfulconstruct), - check: constructFactory(onsuccessfulcheck), - interrupt: constructFactory(onsuccessfulcheck, {interrupt: true}), - lazy: constructFactory(onsuccessfulcheck, {lazy: true}) - }; - - // State and tools for resolving and serializing. - var context = { - previous: null, - events: [], - parser: parser, - sliceStream: sliceStream, - sliceSerialize: sliceSerialize, - now: now, - defineSkip: skip, - write: write - }; - - // The state function. - var state = initialize.tokenize.call(context, effects); - - if (initialize.resolveAll) { - resolveAllConstructs.push(initialize); - } - - // Store where we are in the input stream. - point._index = 0; - point._bufferIndex = -1; - - return context - - function write(slice) { - chunkedSplice_1(chunks, chunks.length, 0, slice); - - main(); - - // Exit if weāre not done, resolve might change stuff. - if (chunks[chunks.length - 1] !== null) { - return [] - } - - addResult(initialize, 0); - - // Otherwise, resolve, and exit. - context.events = resolveAll_1(resolveAllConstructs, context.events, context); - - return context.events - } - - // - // Tools. - // - - function sliceSerialize(token) { - return serializeChunks_1(sliceStream(token)) - } - - function sliceStream(token) { - return sliceChunks_1(chunks, token) - } - - function now() { - return shallow_1(point) - } - - function skip(value) { - columnStart[value.line] = value.column; - accountForPotentialSkip(); - } - - // - // State management. - // - - // Main loop (note that `_index` and `_bufferIndex` in `point` are modified by - // `consume`). - // Here is where we walk through the chunks, which either include strings of - // several characters, or numerical character codes. - // The reason to do this in a loop instead of a call is so the stack can - // drain. - function main() { - var chunkIndex; - var chunk; - - while (point._index < chunks.length) { - chunk = chunks[point._index]; - - // If weāre in a buffer chunk, loop through it. - if (typeof chunk === 'string') { - chunkIndex = point._index; - - if (point._bufferIndex < 0) { - point._bufferIndex = 0; - } - - while ( - point._index === chunkIndex && - point._bufferIndex < chunk.length - ) { - go(chunk.charCodeAt(point._bufferIndex)); - } - } else { - go(chunk); - } - } - } - - // Deal with one code. - function go(code) { - state = state(code); - } - - // Move a character forward. - function consume(code) { - if (markdownLineEnding_1(code)) { - point.line++; - point.column = 1; - point.offset += code === -3 ? 2 : 1; - accountForPotentialSkip(); - } else if (code !== -1) { - point.column++; - point.offset++; - } - - // Not in a string chunk. - if (point._bufferIndex < 0) { - point._index++; - } else { - point._bufferIndex++; - - // At end of string chunk. - if (point._bufferIndex === chunks[point._index].length) { - point._bufferIndex = -1; - point._index++; - } - } - - // Expose the previous character. - context.previous = code; - } - - // Start a token. - function enter(type, fields) { - var token = fields || {}; - token.type = type; - token.start = now(); - - context.events.push(['enter', token, context]); - - stack.push(token); - - return token - } - - // Stop a token. - function exit(type) { - var token = stack.pop(); - token.end = now(); - - context.events.push(['exit', token, context]); - - return token - } - - // Use results. - function onsuccessfulconstruct(construct, info) { - addResult(construct, info.from); - } - - // Discard results. - function onsuccessfulcheck(construct, info) { - info.restore(); - } - - // Factory to attempt/check/interrupt. - function constructFactory(onreturn, fields) { - return hook - - // Handle either an object mapping codes to constructs, a list of - // constructs, or a single construct. - function hook(constructs, returnState, bogusState) { - var listOfConstructs; - var constructIndex; - var currentConstruct; - var info; - - return constructs.tokenize || 'length' in constructs - ? handleListOfConstructs(miniflat_1(constructs)) - : handleMapOfConstructs - - function handleMapOfConstructs(code) { - if (code in constructs || null in constructs) { - return handleListOfConstructs( - /* istanbul ignore next - `null` is used by some extensions */ - constructs.null - ? miniflat_1(constructs[code]).concat(miniflat_1(constructs.null)) - : constructs[code] - )(code) - } - - return bogusState(code) - } - - function handleListOfConstructs(list) { - listOfConstructs = list; - constructIndex = 0; - return handleConstruct(list[constructIndex]) - } - - function handleConstruct(construct) { - return start - - function start(code) { - // To do: not nede to store if there is no bogus state, probably? - // Currently doesnāt work because `inspect` in document does a check - // w/o a bogus, which doesnāt make sense. But it does seem to help perf - // by not storing. - info = store(); - currentConstruct = construct; - - if (!construct.partial) { - context.currentConstruct = construct; - } - - return construct.tokenize.call( - fields ? assign({}, context, fields) : context, - effects, - ok, - nok - )(code) - } - } - - function ok(code) { - onreturn(currentConstruct, info); - return returnState - } - - function nok(code) { - info.restore(); - - if (++constructIndex < listOfConstructs.length) { - return handleConstruct(listOfConstructs[constructIndex]) - } - - return bogusState - } - } - } - - function addResult(construct, from) { - if (construct.resolveAll && resolveAllConstructs.indexOf(construct) < 0) { - resolveAllConstructs.push(construct); - } - - if (construct.resolve) { - chunkedSplice_1( - context.events, - from, - context.events.length - from, - construct.resolve(context.events.slice(from), context) - ); - } - - if (construct.resolveTo) { - context.events = construct.resolveTo(context.events, context); - } - } - - function store() { - var startPoint = now(); - var startPrevious = context.previous; - var startCurrentConstruct = context.currentConstruct; - var startEventsIndex = context.events.length; - var startStack = Array.from(stack); - - return {restore: restore, from: startEventsIndex} - - function restore() { - point = startPoint; - context.previous = startPrevious; - context.currentConstruct = startCurrentConstruct; - context.events.length = startEventsIndex; - stack = startStack; - accountForPotentialSkip(); - } - } - - function accountForPotentialSkip() { - if (point.line in columnStart && point.column < 2) { - point.column = columnStart[point.line]; - point.offset += columnStart[point.line] - 1; - } - } -} - -var combineExtensions_1 = combineExtensions; - - - - - -// Combine several syntax extensions into one. -function combineExtensions(extensions) { - var all = {}; - var index = -1; - - while (++index < extensions.length) { - extension$1(all, extensions[index]); - } - - return all -} - -function extension$1(all, extension) { - var hook; - var left; - var right; - var code; - - for (hook in extension) { - left = hasOwnProperty_1.call(all, hook) ? all[hook] : (all[hook] = {}); - right = extension[hook]; - - for (code in right) { - left[code] = constructs$1( - miniflat_1(right[code]), - hasOwnProperty_1.call(left, code) ? left[code] : [] - ); - } - } -} - -function constructs$1(list, existing) { - var index = -1; - var before = []; - - while (++index < list.length) { -(list[index].add === 'after' ? existing : before).push(list[index]); - } - - chunkedSplice_1(existing, 0, 0, before); - return existing -} - -var parse$8 = createParser; - - - - - - - - - - -function createParser(options) { + null: [attention_1, text_1.resolver] +}; +var disable = { + null: [] +}; + +var contentInitial_1 = contentInitial; +var disable_1 = disable; +var document_1 = document$2; +var flow_1 = flow$1; +var flowInitial_1 = flowInitial; +var insideSpan_1 = insideSpan; +var string_1$1 = string$1; +var text_1$1 = text$1; + +var constructs$1 = /*#__PURE__*/Object.defineProperty({ + contentInitial: contentInitial_1, + disable: disable_1, + document: document_1, + flow: flow_1, + flowInitial: flowInitial_1, + insideSpan: insideSpan_1, + string: string_1$1, + text: text_1$1 +}, '__esModule', {value: true}); + +function parse$7(options) { var settings = options || {}; var parser = { defined: [], constructs: combineExtensions_1( - [constructs].concat(miniflat_1(settings.extensions)) + [constructs$1].concat(miniflat_1(settings.extensions)) ), - content: create(content), document: create(document$1), flow: create(flow), - string: create(text.string), - text: create(text.text) + string: create(text_1.string), + text: create(text_1.text) }; - return parser function create(initializer) { return creator + function creator(from) { return createTokenizer_1(parser, initializer, from) } } } -var preprocess = preprocessor; +var parse_1$3 = parse$7; var search$1 = /[\0\t\n\r]/g; -function preprocessor() { +function preprocess() { var start = true; var column = 1; var buffer = ''; var atCarriageReturn; + return preprocessor - return preprocess - - function preprocess(value, encoding, end) { + function preprocessor(value, encoding, end) { var chunks = []; var match; var next; var startPosition; var endPosition; var code; - value = buffer + value.toString(encoding); startPosition = 0; buffer = ''; @@ -40013,12 +37332,12 @@ function preprocessor() { } else if (code === 9) { next = Math.ceil(column / 4) * 4; chunks.push(-2); + while (column++ < next) chunks.push(-1); } else if (code === 10) { chunks.push(-4); column = 1; - } - // Must be carriage return. + } // Must be carriage return. else { atCarriageReturn = true; column = 1; @@ -40038,9 +37357,7 @@ function preprocessor() { } } -var postprocess_1 = postprocess; - - +var preprocess_1 = preprocess; function postprocess(events) { while (!subtokenize_1(events)) { @@ -40050,6 +37367,8 @@ function postprocess(events) { return events } +var postprocess_1 = postprocess; + var dist$2 = fromMarkdown; // These three are compiled away in the `dist/` @@ -40063,6 +37382,8 @@ var dist$2 = fromMarkdown; + + function fromMarkdown(value, encoding, options) { if (typeof encoding !== 'string') { options = encoding; @@ -40071,7 +37392,7 @@ function fromMarkdown(value, encoding, options) { return compiler(options)( postprocess_1( - parse$8(options).document().write(preprocess()(value, encoding, true)) + parse_1$3(options).document().write(preprocess_1()(value, encoding, true)) ) ) } @@ -40143,7 +37464,7 @@ function compiler(options) { characterEscapeValue: onexitdata, characterReferenceMarkerHexadecimal: onexitcharacterreferencemarker, characterReferenceMarkerNumeric: onexitcharacterreferencemarker, - characterReferenceValue: closer(onexitcharacterreferencevalue), + characterReferenceValue: onexitcharacterreferencevalue, codeFenced: closer(onexitcodefenced), codeFencedFence: onexitcodefencedfence, codeFencedFenceInfo: onexitcodefencedfenceinfo, @@ -40194,23 +37515,32 @@ function compiler(options) { function compile(events) { var stack = [{type: 'root', children: []}]; - var index = -1; + var tokenStack = []; var listStack = []; - var length; + var index = -1; var handler; var listStart; - var event; - while (++index < events.length) { - event = events[index]; + var context = { + stack: stack, + tokenStack: tokenStack, + config: config, + enter: enter, + exit: exit, + buffer: buffer, + resume: resume, + setData: setData, + getData: getData + }; + while (++index < events.length) { // We preprocess lists to add `listItem` tokens, and to infer whether // items the list itself are spread out. if ( - event[1].type === 'listOrdered' || - event[1].type === 'listUnordered' + events[index][1].type === 'listOrdered' || + events[index][1].type === 'listUnordered' ) { - if (event[0] === 'enter') { + if (events[index][0] === 'enter') { listStack.push(index); } else { listStart = listStack.pop(index); @@ -40220,38 +37550,39 @@ function compiler(options) { } index = -1; - length = events.length; - while (++index < length) { + while (++index < events.length) { handler = config[events[index][0]]; - if (hasOwnProperty_1.call(handler, events[index][1].type)) { + if (hasOwnProperty.call(handler, events[index][1].type)) { handler[events[index][1].type].call( - { - stack: stack, - config: config, - enter: enter, - exit: exit, - buffer: buffer, - resume: resume, - sliceSerialize: events[index][2].sliceSerialize, - setData: setData, - getData: getData - }, - + assign_1({sliceSerialize: events[index][2].sliceSerialize}, context), events[index][1] ); } } + if (tokenStack.length) { + throw new Error( + 'Cannot close document, a token (`' + + tokenStack[tokenStack.length - 1].type + + '`, ' + + unistUtilStringifyPosition({ + start: tokenStack[tokenStack.length - 1].start, + end: tokenStack[tokenStack.length - 1].end + }) + + ') is still open' + ) + } + // Figure out `root` position. stack[0].position = { start: point( - length ? events[0][1].start : {line: 1, column: 1, offset: 0} + events.length ? events[0][1].start : {line: 1, column: 1, offset: 0} ), end: point( - length + events.length ? events[events.length - 2][1].end : {line: 1, column: 1, offset: 0} ) @@ -40416,6 +37747,7 @@ function compiler(options) { function enter(node, token) { this.stack[this.stack.length - 1].children.push(node); this.stack.push(node); + this.tokenStack.push(token); node.position = {start: point(token.start)}; return node } @@ -40431,13 +37763,36 @@ function compiler(options) { function exit(token) { var node = this.stack.pop(); + var open = this.tokenStack.pop(); + + if (!open) { + throw new Error( + 'Cannot close `' + + token.type + + '` (' + + unistUtilStringifyPosition({start: token.start, end: token.end}) + + '): itās not open' + ) + } else if (open.type !== token.type) { + throw new Error( + 'Cannot close `' + + token.type + + '` (' + + unistUtilStringifyPosition({start: token.start, end: token.end}) + + '): a different token (`' + + open.type + + '`, ' + + unistUtilStringifyPosition({start: open.start, end: open.end}) + + ') is open' + ) + } + node.position.end = point(token.end); return node } function resume() { - var value = mdastUtilToString(this.stack.pop()); - return value + return mdastUtilToString(this.stack.pop()) } // @@ -40564,11 +37919,10 @@ function compiler(options) { return } - if (getData('setextHeadingSlurpLineEnding')) { - return - } - - if (config.canContainEols.indexOf(context.type) !== -1) { + if ( + !getData('setextHeadingSlurpLineEnding') && + config.canContainEols.indexOf(context.type) > -1 + ) { onenterdata.call(this, token); onexitdata.call(this, token); } @@ -40686,6 +38040,7 @@ function compiler(options) { var data = this.sliceSerialize(token); var type = getData('characterReferenceType'); var value; + var tail; if (type) { value = safeFromInt_1( @@ -40698,7 +38053,9 @@ function compiler(options) { value = decodeEntity_1(data); } - this.stack[this.stack.length - 1].value += value; + tail = this.stack.pop(); + tail.value += value; + tail.position.end = point(token.end); } function onexitautolinkprotocol(token) { @@ -40799,10 +38156,9 @@ function compiler(options) { } function configure$2(config, extensions) { - var length = extensions.length; var index = -1; - while (++index < length) { + while (++index < extensions.length) { extension$2(config, extensions[index]); } @@ -40812,27 +38168,25 @@ function configure$2(config, extensions) { function extension$2(config, extension) { var key; var left; - var right; for (key in extension) { - left = hasOwnProperty_1.call(config, key) ? config[key] : (config[key] = {}); - right = extension[key]; + left = hasOwnProperty.call(config, key) ? config[key] : (config[key] = {}); if (key === 'canContainEols') { - config[key] = [].concat(left, right); + config[key] = [].concat(left, extension[key]); } else { - Object.assign(left, right); + Object.assign(left, extension[key]); } } } var mdastUtilFromMarkdown = dist$2; -var remarkParse = parse$9; +var remarkParse = parse$8; -function parse$9(options) { +function parse$8(options) { var self = this; this.Parser = parse; @@ -40853,8 +38207,8 @@ function parse$9(options) { var zwitch = factory$1; -var noop$2 = Function.prototype; -var own$4 = {}.hasOwnProperty; +var noop$1 = Function.prototype; +var own$5 = {}.hasOwnProperty; // Handle values based on a property. function factory$1(key, options) { @@ -40864,11 +38218,11 @@ function factory$1(key, options) { var fn = one.invalid; var handlers = one.handlers; - if (value && own$4.call(value, key)) { - fn = own$4.call(handlers, value[key]) ? handlers[value[key]] : one.unknown; + if (value && own$5.call(value, key)) { + fn = own$5.call(handlers, value[key]) ? handlers[value[key]] : one.unknown; } - return (fn || noop$2).apply(this, arguments) + return (fn || noop$1).apply(this, arguments) } one.handlers = settings.handlers || {}; @@ -40878,6 +38232,32 @@ function factory$1(key, options) { return one } +var configure_1$2 = configure$3; + +function configure$3(base, extension) { + var index = -1; + var key; + + // First do subextensions. + if (extension.extensions) { + while (++index < extension.extensions.length) { + configure$3(base, extension.extensions[index]); + } + } + + for (key in extension) { + if (key === 'extensions') ; else if (key === 'unsafe' || key === 'join') { + base[key] = base[key].concat(extension[key] || []); + } else if (key === 'handlers') { + base[key] = Object.assign(base[key], extension[key] || {}); + } else { + base.options[key] = extension[key]; + } + } + + return base +} + var containerFlow = flow$2; @@ -41013,8 +38393,8 @@ var formatCodeAsIndented_1 = formatCodeAsIndented; function formatCodeAsIndented(node, context) { return ( - node.value && !context.options.fences && + node.value && // If thereās no infoā¦ !node.lang && // And thereās a non-whitespace characterā¦ @@ -41057,8 +38437,8 @@ function safe(context, input, config) { var start; var end; - while (++index < context.unsafePatterns.length) { - pattern = context.unsafePatterns[index]; + while (++index < context.unsafe.length) { + pattern = context.unsafe[index]; if ( !inScope(context.stack, pattern.inConstruct, true) || @@ -41301,7 +38681,7 @@ function checkQuote(context) { return marker } -var definition_1 = definition$1; +var definition_1$1 = definition$1; @@ -41618,14 +38998,19 @@ var formatLinkAsAutolink_1 = formatLinkAsAutolink; -function formatLinkAsAutolink(node) { +function formatLinkAsAutolink(node, context) { var raw = mdastUtilToString(node); return ( + !context.options.resourceLink && // If thereās a urlā¦ node.url && // And thereās a no titleā¦ !node.title && + // And the content of `node` is a single text nodeā¦ + node.children && + node.children.length === 1 && + node.children[0].type === 'text' && // And if the url is the same as the contentā¦ (raw === node.url || 'mailto:' + raw === node.url) && // And that starts w/ a protocolā¦ @@ -41652,7 +39037,7 @@ function link$2(node, _, context) { var value; var stack; - if (formatLinkAsAutolink_1(node)) { + if (formatLinkAsAutolink_1(node, context)) { // Hide the fact that weāre in phrasing, because escapes donāt work. stack = context.stack; context.stack = []; @@ -41703,8 +39088,8 @@ function link$2(node, _, context) { return value } -function linkPeek(node) { - return formatLinkAsAutolink_1(node) ? '<' : '[' +function linkPeek(node, _, context) { + return formatLinkAsAutolink_1(node, context) ? '<' : '[' } var linkReference_1 = linkReference; @@ -41900,7 +39285,7 @@ function strongPeek(node, _, context) { return context.options.strong || '*' } -var text_1$1 = text$2; +var text_1$2 = text$2; @@ -41940,7 +39325,7 @@ function checkRule$1(context) { return marker } -var thematicBreak_1 = thematicBreak$1; +var thematicBreak_1$1 = thematicBreak$1; @@ -41958,7 +39343,7 @@ function thematicBreak$1(node, parent, context) { var blockquote$1 = blockquote_1; var _break$1 = _break; var code$1 = code_1; -var definition$2 = definition_1; +var definition$2 = definition_1$1; var emphasis$1 = emphasis_1; var hardBreak$1 = _break; var heading$1 = heading_1; @@ -41973,8 +39358,8 @@ var listItem$1 = listItem_1; var paragraph$1 = paragraph_1; var root$2 = root_1; var strong$1 = strong_1; -var text$3 = text_1$1; -var thematicBreak$2 = thematicBreak_1; +var text$3 = text_1$2; +var thematicBreak$2 = thematicBreak_1$1; var handle = { blockquote: blockquote$1, @@ -41999,6 +39384,44 @@ var handle = { thematicBreak: thematicBreak$2 }; +var join$2 = [joinDefaults]; + + + + +function joinDefaults(left, right, parent, context) { + if ( + // Two lists with the same marker. + (right.type === 'list' && + right.type === left.type && + Boolean(left.ordered) === Boolean(right.ordered)) || + // Indented code after list or another indented code. + (right.type === 'code' && + formatCodeAsIndented_1(right, context) && + (left.type === 'list' || + (left.type === right.type && formatCodeAsIndented_1(left, context)))) + ) { + return false + } + + // Join children of a list or an item. + // In which case, `parent` has a `spread` field. + if (typeof parent.spread === 'boolean') { + if ( + left.type === 'paragraph' && + // Two paragraphs. + (left.type === right.type || + right.type === 'definition' || + // Paragraph followed by a setext heading. + (right.type === 'heading' && formatHeadingAsSetext_1(right, context))) + ) { + return + } + + return parent.spread ? 1 : 0 + } +} + var unsafe = [ { character: '\t', @@ -42112,69 +39535,44 @@ var unsafe = [ {atBreak: true, character: '~'} ]; -var join$2 = [joinDefaults]; - +var lib$8 = toMarkdown; -function joinDefaults(left, right, parent, context) { - if ( - // Two lists with the same marker. - (right.type === 'list' && - right.type === left.type && - Boolean(left.ordered) === Boolean(right.ordered)) || - // Indented code after list or another indented code. - (right.type === 'code' && - formatCodeAsIndented_1(right, context) && - (left.type === 'list' || - (left.type === right.type && formatCodeAsIndented_1(left, context)))) - ) { - return false - } - - // Join children of a list or an item. - // In which case, `parent` has a `spread` field. - if (typeof parent.spread === 'boolean') { - if ( - left.type === 'paragraph' && - // Two paragraphs. - (left.type === right.type || - right.type === 'definition' || - // Paragraph followed by a setext heading. - (right.type === 'heading' && formatHeadingAsSetext_1(right, context))) - ) { - return - } - - return parent.spread ? 1 : 0 - } -} -var lib$7 = toMarkdown; +function toMarkdown(tree, options) { + var settings = options || {}; + var context = { + enter: enter, + stack: [], + unsafe: [], + join: [], + handlers: {}, + options: {} + }; + var result; + configure_1$2(context, { + unsafe: unsafe, + join: join$2, + handlers: handle + }); + configure_1$2(context, settings); + if (context.options.tightDefinitions) { + context.join = [joinDefinition].concat(context.join); + } -function toMarkdown(tree, options) { - var settings = options || {}; - var extensions = configure$3(settings); - var stack = []; - var handle = zwitch('type', { + context.handle = zwitch('type', { invalid: invalid, unknown: unknown, - handlers: extensions.handlers + handlers: context.handlers }); - var context = { - handle: handle, - stack: stack, - enter: enter, - options: settings, - unsafePatterns: extensions.unsafe, - join: extensions.join - }; - var result = handle(tree, null, context, {before: '\n', after: '\n'}); + + result = context.handle(tree, null, context, {before: '\n', after: '\n'}); if ( result && @@ -42187,11 +39585,11 @@ function toMarkdown(tree, options) { return result function enter(name) { - stack.push(name); + context.stack.push(name); return exit function exit() { - stack.pop(); + context.stack.pop(); } } } @@ -42204,28 +39602,6 @@ function unknown(node) { throw new Error('Cannot handle unknown node `' + node.type + '`') } -function configure$3(settings) { - var extensions = [ - {unsafe: settings.unsafe, handlers: settings.handlers, join: settings.join} - ].concat(settings.extensions || []); - var unsafe$1 = unsafe; - var join = join$2; - var handlers = Object.assign({}, handle); - var index = -1; - - if (settings.tightDefinitions) { - join = [joinDefinition].concat(join); - } - - while (++index < extensions.length) { - unsafe$1 = unsafe$1.concat(extensions[index].unsafe || []); - join = join.concat(extensions[index].join || []); - Object.assign(handlers, extensions[index].handlers || {}); - } - - return {unsafe: unsafe$1, join: join, handlers: handlers} -} - function joinDefinition(left, right) { // No blank line between adjacent definitions. if (left.type === 'definition' && left.type === right.type) { @@ -42233,7 +39609,7 @@ function joinDefinition(left, right) { } } -var mdastUtilToMarkdown = lib$7; +var mdastUtilToMarkdown = lib$8; var remarkStringify = stringify$6; @@ -42263,7 +39639,7 @@ const name = "remark"; const version$1 = "13.0.0"; const description = "Markdown processor powered by plugins part of the unified collective"; const license = "MIT"; -const keywords = [ +const keywords$1 = [ "unified", "remark", "markdown", @@ -42303,12 +39679,12 @@ const scripts = { test: "tape test.js" }; const xo = false; -var _package = { +var proc = { name: name, version: version$1, description: description, license: license, - keywords: keywords, + keywords: keywords$1, homepage: homepage, repository: repository, bugs: bugs, @@ -42322,51 +39698,30 @@ var _package = { xo: xo }; -var _package$1 = /*#__PURE__*/Object.freeze({ - __proto__: null, - name: name, - version: version$1, - description: description, - license: license, - keywords: keywords, - homepage: homepage, - repository: repository, - bugs: bugs, - funding: funding, - author: author, - contributors: contributors, - files: files, - types: types, - dependencies: dependencies, - scripts: scripts, - xo: xo, - 'default': _package -}); - const name$1 = "node-lint-md-cli-rollup"; const description$1 = "remark packaged for Node.js Markdown linting"; const version$2 = "2.0.2"; const devDependencies = { - "@rollup/plugin-commonjs": "^11.0.1", - "@rollup/plugin-json": "^4.0.1", - "@rollup/plugin-node-resolve": "^7.0.0", - rollup: "^2.32.1", + "@rollup/plugin-commonjs": "^17.0.0", + "@rollup/plugin-json": "^4.1.0", + "@rollup/plugin-node-resolve": "^11.0.1", + rollup: "^2.36.1", shx: "^0.3.3" }; const dependencies$1 = { "markdown-extensions": "^1.1.1", remark: "^13.0.0", "remark-gfm": "^1.0.0", - "remark-lint": "^7.0.0", + "remark-lint": "^8.0.0", "remark-preset-lint-node": "^2.0.0", - "unified-args": "^8.0.0" + "unified-args": "^8.1.0" }; const main = "dist/index.js"; const scripts$1 = { build: "npx rollup -c", "build-node": "npm run build && npx shx cp dist/index.js ../lint-md.js" }; -var _package$2 = { +var cli = { name: name$1, description: description$1, version: version$2, @@ -42376,106 +39731,72 @@ var _package$2 = { scripts: scripts$1 }; -var _package$3 = /*#__PURE__*/Object.freeze({ - __proto__: null, - name: name$1, - description: description$1, - version: version$2, - devDependencies: devDependencies, - dependencies: dependencies$1, - main: main, - scripts: scripts$1, - 'default': _package$2 -}); - var vfileLocation = factory$2; function factory$2(file) { - var contents = indices(String(file)); - var toPoint = offsetToPointFactory(contents); + var value = String(file); + var indices = []; + var search = /\r?\n|\r/g; - return { - toPoint: toPoint, - toPosition: toPoint, - toOffset: pointToOffsetFactory(contents) + while (search.exec(value)) { + indices.push(search.lastIndex); } -} -// Factory to get the line and column-based `point` for `offset` in the bound -// indices. -function offsetToPointFactory(indices) { - return offsetToPoint + indices.push(value.length + 1); + + return { + toPoint: offsetToPoint, + toPosition: offsetToPoint, + toOffset: pointToOffset + } // Get the line and column-based `point` for `offset` in the bound indices. function offsetToPoint(offset) { var index = -1; - var length = indices.length; - - if (offset < 0) { - return {} - } - while (++index < length) { - if (indices[index] > offset) { - return { - line: index + 1, - column: offset - (indices[index - 1] || 0) + 1, - offset: offset + if (offset > -1 && offset < indices[indices.length - 1]) { + while (++index < indices.length) { + if (indices[index] > offset) { + return { + line: index + 1, + column: offset - (indices[index - 1] || 0) + 1, + offset: offset + } } } } return {} } -} - -// Factory to get the `offset` for a line and column-based `point` in the -// bound indices. -function pointToOffsetFactory(indices) { - return pointToOffset // Get the `offset` for a line and column-based `point` in the bound // indices. function pointToOffset(point) { var line = point && point.line; var column = point && point.column; + var offset; if (!isNaN(line) && !isNaN(column) && line - 1 in indices) { - return (indices[line - 2] || 0) + column - 1 || 0 + offset = (indices[line - 2] || 0) + column - 1 || 0; } - return -1 + return offset > -1 && offset < indices[indices.length - 1] ? offset : -1 } } -// Get indices of line-breaks in `value`. -function indices(value) { - var result = []; - var index = value.indexOf('\n'); - - while (index !== -1) { - result.push(index + 1); - index = value.indexOf('\n', index + 1); - } - - result.push(value.length + 1); - - return result -} - var convert_1 = convert$3; function convert$3(test) { - if (typeof test === 'string') { - return typeFactory(test) + if (test == null) { + return ok$1 } - if (test === null || test === undefined) { - return ok$1 + if (typeof test === 'string') { + return typeFactory(test) } if (typeof test === 'object') { - return ('length' in test ? anyFactory : matchesFactory)(test) + return 'length' in test ? anyFactory(test) : allFactory(test) } if (typeof test === 'function') { @@ -42485,30 +39806,16 @@ function convert$3(test) { throw new Error('Expected function, string, or object as test') } -function convertAll(tests) { - var results = []; - var length = tests.length; - var index = -1; - - while (++index < length) { - results[index] = convert$3(tests[index]); - } - - return results -} - // Utility assert each property in `test` is represented in `node`, and each // values are strictly equal. -function matchesFactory(test) { - return matches +function allFactory(test) { + return all - function matches(node) { + function all(node) { var key; for (key in test) { - if (node[key] !== test[key]) { - return false - } + if (node[key] !== test[key]) return false } return true @@ -42516,15 +39823,19 @@ function matchesFactory(test) { } function anyFactory(tests) { - var checks = convertAll(tests); - var length = checks.length; + var checks = []; + var index = -1; + + while (++index < tests.length) { + checks[index] = convert$3(tests[index]); + } - return matches + return any - function matches() { + function any() { var index = -1; - while (++index < length) { + while (++index < checks.length) { if (checks[index].apply(this, arguments)) { return true } @@ -42568,79 +39879,74 @@ visitParents.SKIP = SKIP; visitParents.EXIT = EXIT; function visitParents(tree, test, visitor, reverse) { + var step; var is; - if (func(test) && !func(visitor)) { + if (typeof test === 'function' && typeof visitor !== 'function') { reverse = visitor; visitor = test; test = null; } is = convert_1(test); + step = reverse ? -1 : 1; - one(tree, null, [])(); + factory(tree, null, [])(); - function one(child, index, parents) { - var value = object(child) ? child : {}; + function factory(node, index, parents) { + var value = typeof node === 'object' && node !== null ? node : {}; var name; - if (string$2(value.type)) { - name = string$2(value.tagName) - ? value.tagName - : string$2(value.name) - ? value.name - : undefined; + if (typeof value.type === 'string') { + name = + typeof value.tagName === 'string' + ? value.tagName + : typeof value.name === 'string' + ? value.name + : undefined; - node.displayName = + visit.displayName = 'node (' + color_1(value.type + (name ? '<' + name + '>' : '')) + ')'; } - return node + return visit - function node() { + function visit() { + var grandparents = parents.concat(node); var result = []; var subresult; + var offset; - if (!test || is(child, index, parents[parents.length - 1] || null)) { - result = toResult(visitor(child, parents)); + if (!test || is(node, index, parents[parents.length - 1] || null)) { + result = toResult(visitor(node, parents)); if (result[0] === EXIT) { return result } } - if (!child.children || result[0] === SKIP) { - return result - } + if (node.children && result[0] !== SKIP) { + offset = (reverse ? node.children.length : -1) + step; - subresult = toResult(children(child.children, parents.concat(child))); - return subresult[0] === EXIT ? subresult : result - } - } + while (offset > -1 && offset < node.children.length) { + subresult = factory(node.children[offset], offset, grandparents)(); - // Visit children in `parent`. - function children(children, parents) { - var min = -1; - var step = reverse ? -1 : 1; - var index = (reverse ? children.length : min) + step; - var child; - var result; - - while (index > min && index < children.length) { - child = children[index]; - result = one(child, index, parents)(); + if (subresult[0] === EXIT) { + return subresult + } - if (result[0] === EXIT) { - return result + offset = + typeof subresult[1] === 'number' ? subresult[1] : offset + step; + } } - index = typeof result[1] === 'number' ? result[1] : index + step; + return result } } } function toResult(value) { - if (object(value) && 'length' in value) { + if (value !== null && typeof value === 'object' && 'length' in value) { return value } @@ -42651,18 +39957,6 @@ function toResult(value) { return [value] } -function func(d) { - return typeof d === 'function' -} - -function string$2(d) { - return typeof d === 'string' -} - -function object(d) { - return typeof d === 'object' && d !== null -} - var unistUtilVisit = visit; @@ -42695,25 +39989,23 @@ var unifiedMessageControl = messageControl; function messageControl(options) { var settings = options || {}; - var name = settings.name; - var marker = settings.marker; - var test = settings.test; - var sources = settings.source; - var known = settings.known; - var reset = settings.reset; var enable = settings.enable || []; var disable = settings.disable || []; + var sources = settings.source; + var reset = settings.reset; - if (!name) { - throw new Error('Expected `name` in `options`, got `' + name + '`') + if (!settings.name) { + throw new Error('Expected `name` in `options`, got `' + settings.name + '`') } - if (!marker) { - throw new Error('Expected `marker` in `options`, got `' + marker + '`') + if (!settings.marker) { + throw new Error( + 'Expected `marker` in `options`, got `' + settings.marker + '`' + ) } if (!sources) { - sources = [name]; + sources = [settings.name]; } else if (typeof sources === 'string') { sources = [sources]; } @@ -42727,30 +40019,31 @@ function messageControl(options) { var scope = {}; var globals = []; - unistUtilVisit(tree, test, visitor); + unistUtilVisit(tree, settings.test, visitor); file.messages = file.messages.filter(filter); function visitor(node, position, parent) { - var mark = marker(node); + var mark = settings.marker(node); var ruleIds; - var ruleId; var verb; - var index; - var length; - var next; var pos; var tail; + var index; + var ruleId; - if (!mark || mark.name !== name) { + if (!mark || mark.name !== settings.name) { return } ruleIds = mark.attributes.split(/\s/g); verb = ruleIds.shift(); - next = parent.children[position + 1]; pos = mark.node.position && mark.node.position.start; - tail = next && next.position && next.position.end; + tail = + parent.children[position + 1] && + parent.children[position + 1].position && + parent.children[position + 1].position.end; + index = -1; if (verb !== 'enable' && verb !== 'disable' && verb !== 'ignore') { file.fail( @@ -42762,20 +40055,9 @@ function messageControl(options) { ); } - length = ruleIds.length; - index = -1; - // Apply to all rules. - if (length === 0) { - if (verb === 'ignore') { - toggle(pos, false); - toggle(tail, true); - } else { - toggle(pos, verb === 'enable'); - reset = verb !== 'enable'; - } - } else { - while (++index < length) { + if (ruleIds.length) { + while (++index < ruleIds.length) { ruleId = ruleIds[index]; if (isKnown(ruleId, verb, mark.node)) { @@ -42786,13 +40068,17 @@ function messageControl(options) { } } } + } else if (verb === 'ignore') { + toggle(pos, false); + toggle(tail, true); + } else { + toggle(pos, verb === 'enable'); + reset = verb !== 'enable'; } } function filter(message) { var gapIndex = gaps.length; - var ruleId = message.ruleId; - var ranges = scope[ruleId]; var pos; // Keep messages from a different source. @@ -42820,12 +40106,15 @@ function messageControl(options) { } // Check whether allowed by specific and global states. - return check(message, ranges, ruleId) && check(message, globals) + return ( + check(message, scope[message.ruleId], message.ruleId) && + check(message, globals) + ) } // Helper to check (and possibly warn) if a `ruleId` is unknown. function isKnown(ruleId, verb, pos) { - var result = known ? known.indexOf(ruleId) !== -1 : true; + var result = settings.known ? settings.known.indexOf(ruleId) !== -1 : true; if (!result) { file.message( @@ -42842,7 +40131,7 @@ function messageControl(options) { function getState(ruleId) { var ranges = ruleId ? scope[ruleId] : globals; - if (ranges && ranges.length !== 0) { + if (ranges && ranges.length) { return ranges[ranges.length - 1].state } @@ -42850,11 +40139,7 @@ function messageControl(options) { return !reset } - if (reset) { - return enable.indexOf(ruleId) !== -1 - } - - return disable.indexOf(ruleId) === -1 + return reset ? enable.indexOf(ruleId) > -1 : disable.indexOf(ruleId) < 0 } // Handle a rule. @@ -42882,36 +40167,30 @@ function messageControl(options) { } // Check all `ranges` for `message`. - function check(message, ranges, id) { + function check(message, ranges, ruleId) { // Check the state at the messageās position. var index = ranges && ranges.length; - var length = -1; - var range; - - while (--index > length) { - range = ranges[index]; - - /* istanbul ignore if - Generated marker. */ - if (!range.position || !range.position.line || !range.position.column) { - continue - } + while (index--) { if ( - range.position.line < message.line || - (range.position.line === message.line && - range.position.column <= message.column) + ranges[index].position && + ranges[index].position.line && + ranges[index].position.column && + (ranges[index].position.line < message.line || + (ranges[index].position.line === message.line && + ranges[index].position.column <= message.column)) ) { - return range.state === true + return ranges[index].state === true } } // The first marker ocurred after the first message, so we check the // initial state. - if (!id) { + if (!ruleId) { return initial || reset } - return reset ? enable.indexOf(id) !== -1 : disable.indexOf(id) === -1 + return reset ? enable.indexOf(ruleId) > -1 : disable.indexOf(ruleId) < 0 } } } @@ -42920,8 +40199,8 @@ function messageControl(options) { function detectGaps(tree, file) { var lastNode = tree.children[tree.children.length - 1]; var offset = 0; - var isGap = false; var gaps = []; + var gap; // Find all gaps. unistUtilVisit(tree, one); @@ -42947,37 +40226,30 @@ function detectGaps(tree, file) { return gaps function one(node) { - var pos = node.position; - - update(pos && pos.start && pos.start.offset); + update(node.position && node.position.start && node.position.start.offset); if (!node.children) { - update(pos && pos.end && pos.end.offset); + update(node.position && node.position.end && node.position.end.offset); } } // Detect a new position. function update(latest) { if (latest === null || latest === undefined) { - isGap = true; - return - } - - if (offset >= latest) { - return - } + gap = true; + } else if (offset < latest) { + if (gap) { + gaps.push({start: offset, end: latest}); + gap = null; + } - if (isGap) { - gaps.push({start: offset, end: latest}); - isGap = false; + offset = latest; } - - offset = latest; } } function trim(value) { - return value.replace(/^\s*|\s*$/g, '') + return value.replace(/^\s+|\s+$/g, '') } var mdastCommentMarker = marker$1; @@ -43081,19 +40353,6 @@ function lintMessageControl() { return remarkMessageControl({name: 'lint', source: 'remark-lint'}) } -var remarkLint$1 = lint$1; - -// `remark-lint`. -// This adds support for ignoring stuff from messages (`<!--lint ignore-->`). -// All rules are in their own packages and presets. -function lint$1() { - this.use(lintMessageControl$1); -} - -function lintMessageControl$1() { - return remarkMessageControl({name: 'lint', source: 'remark-lint'}) -} - /** * An Array.prototype.slice.call(arguments) alternative * @@ -43424,8 +40683,7 @@ function error(err) { * Module Dependencies */ - -var noop$3 = function(){}; +var noop$2 = function(){}; /** @@ -43450,7 +40708,7 @@ function wrapped(fn) { var ctx = this; // done - var done = typeof last == 'function' ? args.pop() : noop$3; + var done = typeof last == 'function' ? args.pop() : noop$2; // nothing if (!fn) { @@ -43646,6 +40904,60 @@ function coerce(name, value) { return result } +/** + * @author Titus Wormer + * @copyright 2015 Titus Wormer + * @license MIT + * @module final-newline + * @fileoverview + * Warn when a line feed at the end of a file is missing. + * Empty files are allowed. + * + * See [StackExchange](https://unix.stackexchange.com/questions/18743) for why. + * + * ## Fix + * + * [`remark-stringify`](https://github.com/remarkjs/remark/tree/HEAD/packages/remark-stringify) + * always adds a final line feed to files. + * + * See [Using remark to fix your Markdown](https://github.com/remarkjs/remark-lint#using-remark-to-fix-your-markdown) + * on how to automatically fix warnings for this rule. + * + * ## Example + * + * ##### `ok.md` + * + * ###### In + * + * Note: `ā` represents LF. + * + * ```markdown + * Alphaā + * ``` + * + * ###### Out + * + * No messages. + * + * ##### `not-ok.md` + * + * ###### In + * + * Note: The below file does not have a final newline. + * + * ```markdown + * Bravo + * ``` + * + * ###### Out + * + * ```text + * 1:1: Missing newline character at end of file + * ``` + */ + + + var remarkLintFinalNewline = unifiedLintRule('remark-lint:final-newline', finalNewline); function finalNewline(tree, file) { @@ -43657,9 +40969,9 @@ function finalNewline(tree, file) { } } -var pluralize = createCommonjsModule(function (module, exports) { /* global define */ +var pluralize = createCommonjsModule(function (module, exports) { (function (root, pluralize) { /* istanbul ignore else */ if (typeof commonjsRequire === 'function' && 'object' === 'object' && 'object' === 'object') { @@ -44173,6 +41485,47 @@ function generated(node) { ) } +/** + * @author Titus Wormer + * @copyright 2015 Titus Wormer + * @license MIT + * @module list-item-bullet-indent + * @fileoverview + * Warn when list item bullets are indented. + * + * ## Fix + * + * [`remark-stringify`](https://github.com/remarkjs/remark/tree/HEAD/packages/remark-stringify) + * removes all indentation before bullets. + * + * See [Using remark to fix your Markdown](https://github.com/remarkjs/remark-lint#using-remark-to-fix-your-markdown) + * on how to automatically fix warnings for this rule. + * + * @example {"name": "ok.md"} + * + * Paragraph. + * + * * List item + * * List item + * + * @example {"name": "not-ok.md", "label": "input"} + * + * Paragraph. + * + * Ā·* List item + * Ā·* List item + * + * @example {"name": "not-ok.md", "label": "output"} + * + * 3:2: Incorrect indentation before bullet: remove 1 space + * 4:2: Incorrect indentation before bullet: remove 1 space + */ + + + + + + var remarkLintListItemBulletIndent = unifiedLintRule( 'remark-lint:list-item-bullet-indent', listItemBulletIndent @@ -44238,6 +41591,117 @@ function factory$4(type) { } } +/** + * @author Titus Wormer + * @copyright 2015 Titus Wormer + * @license MIT + * @module list-item-indent + * @fileoverview + * Warn when the spacing between a list itemās bullet and its content violates + * a given style. + * + * Options: `'tab-size'`, `'mixed'`, or `'space'`, default: `'tab-size'`. + * + * ## Fix + * + * [`remark-stringify`](https://github.com/remarkjs/remark/tree/HEAD/packages/remark-stringify) + * uses `'tab-size'` (named `'tab'` there) by default to ensure Markdown is + * seen the same way across vendors. + * This can be configured with the + * [`listItemIndent`](https://github.com/remarkjs/remark/tree/HEAD/packages/remark-stringify#optionslistitemindent) + * option. + * This ruleās `'space'` option is named `'1'` there. + * + * See [Using remark to fix your Markdown](https://github.com/remarkjs/remark-lint#using-remark-to-fix-your-markdown) + * on how to automatically fix warnings for this rule. + * + * @example {"name": "ok.md"} + * + * *Ā·Ā·Ā·List + * Ā·Ā·Ā·Ā·item. + * + * Paragraph. + * + * 11.Ā·List + * Ā·Ā·Ā·Ā·item. + * + * Paragraph. + * + * *Ā·Ā·Ā·List + * Ā·Ā·Ā·Ā·item. + * + * *Ā·Ā·Ā·List + * Ā·Ā·Ā·Ā·item. + * + * @example {"name": "ok.md", "setting": "mixed"} + * + * *Ā·List item. + * + * Paragraph. + * + * 11.Ā·List item + * + * Paragraph. + * + * *Ā·Ā·Ā·List + * Ā·Ā·Ā·Ā·item. + * + * *Ā·Ā·Ā·List + * Ā·Ā·Ā·Ā·item. + * + * @example {"name": "ok.md", "setting": "space"} + * + * *Ā·List item. + * + * Paragraph. + * + * 11.Ā·List item + * + * Paragraph. + * + * *Ā·List + * Ā·Ā·item. + * + * *Ā·List + * Ā·Ā·item. + * + * @example {"name": "not-ok.md", "setting": "space", "label": "input"} + * + * *Ā·Ā·Ā·List + * Ā·Ā·Ā·Ā·item. + * + * @example {"name": "not-ok.md", "setting": "space", "label": "output"} + * + * 1:5: Incorrect list-item indent: remove 2 spaces + * + * @example {"name": "not-ok.md", "setting": "tab-size", "label": "input"} + * + * *Ā·List + * Ā·Ā·item. + * + * @example {"name": "not-ok.md", "setting": "tab-size", "label": "output"} + * + * 1:3: Incorrect list-item indent: add 2 spaces + * + * @example {"name": "not-ok.md", "setting": "mixed", "label": "input"} + * + * *Ā·Ā·Ā·List item. + * + * @example {"name": "not-ok.md", "setting": "mixed", "label": "output"} + * + * 1:5: Incorrect list-item indent: remove 2 spaces + * + * @example {"name": "not-ok.md", "setting": "š©", "label": "output", "config": {"positionless": true}} + * + * 1:1: Incorrect list-item indent style `š©`: use either `'tab-size'`, `'space'`, or `'mixed'` + */ + + + + + + + var remarkLintListItemIndent = unifiedLintRule('remark-lint:list-item-indent', listItemIndent); var start$2 = unistUtilPosition.start; @@ -44304,6 +41768,76 @@ function listItemIndent(tree, file, option) { } } +var mdastUtilToString$1 = toString$4; + +// Get the text content of a node. +// Prefer the nodeās plain-text fields, otherwise serialize its children, +// and if the given value is an array, serialize the nodes in it. +function toString$4(node) { + return ( + (node && + (node.value || + node.alt || + node.title || + ('children' in node && all$1(node.children)) || + ('length' in node && all$1(node)))) || + '' + ) +} + +function all$1(values) { + var result = []; + var length = values.length; + var index = -1; + + while (++index < length) { + result[index] = toString$4(values[index]); + } + + return result.join('') +} + +/** + * @author Titus Wormer + * @copyright 2015 Titus Wormer + * @license MIT + * @module no-auto-link-without-protocol + * @fileoverview + * Warn for autolinks without protocol. + * Autolinks are URLs enclosed in `<` (less than) and `>` (greater than) + * characters. + * + * ## Fix + * + * [`remark-stringify`](https://github.com/remarkjs/remark/tree/HEAD/packages/remark-stringify) + * adds a protocol where needed. + * + * See [Using remark to fix your Markdown](https://github.com/remarkjs/remark-lint#using-remark-to-fix-your-markdown) + * on how to automatically fix warnings for this rule. + * + * @example {"name": "ok.md"} + * + * <http://www.example.com> + * <mailto:foo@bar.com> + * + * Most Markdown vendors donāt recognize the following as a link: + * <www.example.com> + * + * @example {"name": "not-ok.md", "label": "input"} + * + * <foo@bar.com> + * + * @example {"name": "not-ok.md", "label": "output"} + * + * 1:1-1:14: All automatic links must start with a protocol + */ + + + + + + + var remarkLintNoAutoLinkWithoutProtocol = unifiedLintRule( 'remark-lint:no-auto-link-without-protocol', noAutoLinkWithoutProtocol @@ -44330,7 +41864,7 @@ function noAutoLinkWithoutProtocol(tree, file) { if ( start$3(node).column === start$3(children[0]).column - 1 && end$1(node).column === end$1(children[children.length - 1]).column + 1 && - !protocol.test(mdastUtilToString(node)) + !protocol.test(mdastUtilToString$1(node)) ) { file.message(reason, node); } @@ -44338,6 +41872,63 @@ function noAutoLinkWithoutProtocol(tree, file) { } } +/** + * @author Titus Wormer + * @copyright 2015 Titus Wormer + * @license MIT + * @module no-blockquote-without-marker + * @fileoverview + * Warn when blank lines without `>` (greater than) markers are found in a + * block quote. + * + * ## Fix + * + * [`remark-stringify`](https://github.com/remarkjs/remark/tree/HEAD/packages/remark-stringify) + * adds markers to every line in a block quote. + * + * See [Using remark to fix your Markdown](https://github.com/remarkjs/remark-lint#using-remark-to-fix-your-markdown) + * on how to automatically fix warnings for this rule. + * + * @example {"name": "ok.md"} + * + * > Fooā¦ + * > ā¦barā¦ + * > ā¦baz. + * + * @example {"name": "ok-tabs.md"} + * + * >Ā»Fooā¦ + * >Ā»ā¦barā¦ + * >Ā»ā¦baz. + * + * @example {"name": "not-ok.md", "label": "input"} + * + * > Fooā¦ + * ā¦barā¦ + * > ā¦baz. + * + * @example {"name": "not-ok.md", "label": "output"} + * + * 2:1: Missing marker in block quote + * + * @example {"name": "not-ok-tabs.md", "label": "input"} + * + * >Ā»Fooā¦ + * Ā»ā¦barā¦ + * ā¦baz. + * + * @example {"name": "not-ok-tabs.md", "label": "output"} + * + * 2:1: Missing marker in block quote + * 3:1: Missing marker in block quote + */ + + + + + + + var remarkLintNoBlockquoteWithoutMarker = unifiedLintRule( 'remark-lint:no-blockquote-without-marker', noBlockquoteWithoutMarker @@ -44381,6 +41972,74 @@ function noBlockquoteWithoutMarker(tree, file) { } } +var mdastUtilToString$2 = toString$5; + +// Get the text content of a node. +// Prefer the nodeās plain-text fields, otherwise serialize its children, +// and if the given value is an array, serialize the nodes in it. +function toString$5(node) { + return ( + (node && + (node.value || + node.alt || + node.title || + ('children' in node && all$2(node.children)) || + ('length' in node && all$2(node)))) || + '' + ) +} + +function all$2(values) { + var result = []; + var length = values.length; + var index = -1; + + while (++index < length) { + result[index] = toString$5(values[index]); + } + + return result.join('') +} + +/** + * @author Titus Wormer + * @copyright 2015 Titus Wormer + * @license MIT + * @module no-literal-urls + * @fileoverview + * Warn for literal URLs in text. + * URLs are treated as links in some Markdown vendors, but not in others. + * To make sure they are always linked, wrap them in `<` (less than) and `>` + * (greater than). + * + * ## Fix + * + * [`remark-stringify`](https://github.com/remarkjs/remark/tree/HEAD/packages/remark-stringify) + * never creates literal URLs and always uses `<` (less than) and `>` + * (greater than). + * + * See [Using remark to fix your Markdown](https://github.com/remarkjs/remark-lint#using-remark-to-fix-your-markdown) + * on how to automatically fix warnings for this rule. + * + * @example {"name": "ok.md"} + * + * <http://foo.bar/baz> + * + * @example {"name": "not-ok.md", "label": "input"} + * + * http://foo.bar/baz + * + * @example {"name": "not-ok.md", "label": "output"} + * + * 1:1-1:19: Donāt use literal URLs without angle brackets + */ + + + + + + + var remarkLintNoLiteralUrls = unifiedLintRule('remark-lint:no-literal-urls', noLiteralURLs); var start$4 = unistUtilPosition.start; @@ -44393,7 +42052,7 @@ function noLiteralURLs(tree, file) { function visitor(node) { var children = node.children; - var value = mdastUtilToString(node); + var value = mdastUtilToString$2(node); if ( !unistUtilGenerated(node) && @@ -44406,6 +42065,66 @@ function noLiteralURLs(tree, file) { } } +/** + * @author Titus Wormer + * @copyright 2015 Titus Wormer + * @license MIT + * @module ordered-list-marker-style + * @fileoverview + * Warn when the list item marker style of ordered lists violate a given style. + * + * Options: `'consistent'`, `'.'`, or `')'`, default: `'consistent'`. + * + * `'consistent'` detects the first used list style and warns when subsequent + * lists use different styles. + * + * Note: `)` is only supported in CommonMark. + * + * @example {"name": "ok.md"} + * + * 1. Foo + * + * + * 1. Bar + * + * Unordered lists are not affected by this rule. + * + * * Foo + * + * @example {"name": "ok.md", "setting": "."} + * + * 1. Foo + * + * 2. Bar + * + * @example {"name": "ok.md", "setting": ")", "config": {"commonmark": true}} + * + * <!-- This requires commonmark. --> + * + * 1) Foo + * + * 2) Bar + * + * @example {"name": "not-ok.md", "label": "input", "config": {"commonmark": true}} + * + * 1. Foo + * + * 2) Bar + * + * @example {"name": "not-ok.md", "label": "output"} + * + * 3:1-3:8: Marker style should be `.` + * + * @example {"name": "not-ok.md", "label": "output", "setting": "š©", "config": {"positionless": true}} + * + * 1:1: Incorrect ordered list item marker style `š©`: use either `'.'` or `')'` + */ + + + + + + var remarkLintOrderedListMarkerStyle = unifiedLintRule( 'remark-lint:ordered-list-marker-style', orderedListMarkerStyle @@ -44462,6 +42181,34 @@ function orderedListMarkerStyle(tree, file, option) { } } +/** + * @author Titus Wormer + * @copyright 2015 Titus Wormer + * @license MIT + * @module hard-break-spaces + * @fileoverview + * Warn when too many spaces are used to create a hard break. + * + * @example {"name": "ok.md"} + * + * Lorem ipsumĀ·Ā· + * dolor sit amet + * + * @example {"name": "not-ok.md", "label": "input"} + * + * Lorem ipsumĀ·Ā·Ā· + * dolor sit amet. + * + * @example {"name": "not-ok.md", "label": "output"} + * + * 1:12-2:1: Use two spaces for hard line breaks + */ + + + + + + var remarkLintHardBreakSpaces = unifiedLintRule('remark-lint:hard-break-spaces', hardBreakSpaces); var reason$3 = 'Use two spaces for hard line breaks'; @@ -44487,6 +42234,35 @@ function hardBreakSpaces(tree, file) { } } +/** + * @author Titus Wormer + * @copyright 2015 Titus Wormer + * @license MIT + * @module no-duplicate-definitions + * @fileoverview + * Warn when duplicate definitions are found. + * + * @example {"name": "ok.md"} + * + * [foo]: bar + * [baz]: qux + * + * @example {"name": "not-ok.md", "label": "input"} + * + * [foo]: bar + * [foo]: qux + * + * @example {"name": "not-ok.md", "label": "output"} + * + * 2:1-2:11: Do not use definitions with the same identifier (1:1) + */ + + + + + + + var remarkLintNoDuplicateDefinitions = unifiedLintRule( 'remark-lint:no-duplicate-definitions', noDuplicateDefinitions @@ -44562,6 +42338,61 @@ function consolidate(depth, relative) { : null } +/** + * @author Titus Wormer + * @copyright 2015 Titus Wormer + * @license MIT + * @module no-heading-content-indent + * @fileoverview + * Warn when content of headings is indented. + * + * ## Fix + * + * [`remark-stringify`](https://github.com/remarkjs/remark/tree/HEAD/packages/remark-stringify) + * removes all unneeded padding around content in headings. + * + * See [Using remark to fix your Markdown](https://github.com/remarkjs/remark-lint#using-remark-to-fix-your-markdown) + * on how to automatically fix warnings for this rule. + * + * @example {"name": "ok.md"} + * + * #Ā·Foo + * + * ## BarĀ·## + * + * ##Ā·Baz + * + * Setext headings are not affected. + * + * Baz + * === + * + * @example {"name": "not-ok.md", "label": "input"} + * + * #Ā·Ā·Foo + * + * ## BarĀ·Ā·## + * + * ##Ā·Ā·Baz + * + * @example {"name": "not-ok.md", "label": "output"} + * + * 1:4: Remove 1 space before this headingās content + * 3:7: Remove 1 space after this headingās content + * 5:7: Remove 1 space before this headingās content + * + * @example {"name": "empty-heading.md"} + * + * #Ā·Ā· + */ + + + + + + + + var remarkLintNoHeadingContentIndent = unifiedLintRule( 'remark-lint:no-heading-content-indent', noHeadingContentIndent @@ -44635,6 +42466,64 @@ function noHeadingContentIndent(tree, file) { } } +var mdastUtilToString$3 = toString$6; + +// Get the text content of a node. +// Prefer the nodeās plain-text fields, otherwise serialize its children, +// and if the given value is an array, serialize the nodes in it. +function toString$6(node) { + return ( + (node && + (node.value || + node.alt || + node.title || + ('children' in node && all$3(node.children)) || + ('length' in node && all$3(node)))) || + '' + ) +} + +function all$3(values) { + var result = []; + var length = values.length; + var index = -1; + + while (++index < length) { + result[index] = toString$6(values[index]); + } + + return result.join('') +} + +/** + * @author Titus Wormer + * @copyright 2015 Titus Wormer + * @license MIT + * @module no-inline-padding + * @fileoverview + * Warn when phrasing content is padded with spaces between their markers and + * content. + * + * Warns for emphasis, strong, delete, image, and link. + * + * @example {"name": "ok.md"} + * + * Alpha [bravo](http://echo.fox/trot) + * + * @example {"name": "not-ok.md", "label": "input"} + * + * Alpha [ bravo ](http://echo.fox/trot) + * + * @example {"name": "not-ok.md", "label": "output"} + * + * 1:7-1:38: Donāt pad `link` with inner spaces + */ + + + + + + var remarkLintNoInlinePadding = unifiedLintRule('remark-lint:no-inline-padding', noInlinePadding); function noInlinePadding(tree, file) { @@ -44646,7 +42535,7 @@ function noInlinePadding(tree, file) { var contents; if (!unistUtilGenerated(node)) { - contents = mdastUtilToString(node); + contents = mdastUtilToString$3(node); if ( contents.charAt(0) === ' ' || @@ -44658,6 +42547,41 @@ function noInlinePadding(tree, file) { } } +/** + * @author Titus Wormer + * @copyright 2015 Titus Wormer + * @license MIT + * @module no-shortcut-reference-image + * @fileoverview + * Warn when shortcut reference images are used. + * + * Shortcut references render as images when a definition is found, and as + * plain text without definition. + * Sometimes, you donāt intend to create an image from the reference, but this + * rule still warns anyway. + * In that case, you can escape the reference like so: `!\[foo]`. + * + * @example {"name": "ok.md"} + * + * ![foo][] + * + * [foo]: http://foo.bar/baz.png + * + * @example {"name": "not-ok.md", "label": "input"} + * + * ![foo] + * + * [foo]: http://foo.bar/baz.png + * + * @example {"name": "not-ok.md", "label": "output"} + * + * 1:1-1:7: Use the trailing [] on reference images + */ + + + + + var remarkLintNoShortcutReferenceImage = unifiedLintRule( 'remark-lint:no-shortcut-reference-image', noShortcutReferenceImage @@ -44675,6 +42599,41 @@ function noShortcutReferenceImage(tree, file) { } } +/** + * @author Titus Wormer + * @copyright 2015 Titus Wormer + * @license MIT + * @module no-shortcut-reference-link + * @fileoverview + * Warn when shortcut reference links are used. + * + * Shortcut references render as links when a definition is found, and as + * plain text without definition. + * Sometimes, you donāt intend to create a link from the reference, but this + * rule still warns anyway. + * In that case, you can escape the reference like so: `\[foo]`. + * + * @example {"name": "ok.md"} + * + * [foo][] + * + * [foo]: http://foo.bar/baz + * + * @example {"name": "not-ok.md", "label": "input"} + * + * [foo] + * + * [foo]: http://foo.bar/baz + * + * @example {"name": "not-ok.md", "label": "output"} + * + * 1:1-1:6: Use the trailing `[]` on reference links + */ + + + + + var remarkLintNoShortcutReferenceLink = unifiedLintRule( 'remark-lint:no-shortcut-reference-link', noShortcutReferenceLink @@ -44699,6 +42658,77 @@ function collapse(value) { return String(value).replace(/\s+/g, ' ') } +/** + * @author Titus Wormer + * @copyright 2016 Titus Wormer + * @license MIT + * @module no-undefined-references + * @fileoverview + * Warn when references to undefined definitions are found. + * + * Options: `Object`, optional. + * + * The object can have an `allow` field, set to an array of strings that may + * appear between `[` and `]`, but that should not be treated as link + * identifiers. + * + * @example {"name": "ok.md"} + * + * [foo][] + * + * Just a [ bracket. + * + * Typically, youād want to use escapes (with a backslash: \\) to escape what + * could turn into a \[reference otherwise]. + * + * Just two braces canāt link: []. + * + * [foo]: https://example.com + * + * @example {"name": "ok-allow.md", "setting": {"allow": ["...", "ā¦"]}} + * + * > Eliding a portion of a quoted passage [ā¦] is acceptable. + * + * @example {"name": "not-ok.md", "label": "input"} + * + * [bar] + * + * [baz][] + * + * [text][qux] + * + * Spread [over + * lines][] + * + * > in [a + * > block quote][] + * + * [asd][a + * + * Can include [*emphasis*]. + * + * Multiple pairs: [a][b][c]. + * + * @example {"name": "not-ok.md", "label": "output"} + * + * 1:1-1:6: Found reference to undefined definition + * 3:1-3:8: Found reference to undefined definition + * 5:1-5:12: Found reference to undefined definition + * 7:8-8:9: Found reference to undefined definition + * 10:6-11:17: Found reference to undefined definition + * 13:1-13:6: Found reference to undefined definition + * 15:13-15:25: Found reference to undefined definition + * 17:17-17:23: Found reference to undefined definition + * 17:23-17:26: Found reference to undefined definition + */ + + + + + + + + var remarkLintNoUndefinedReferences = unifiedLintRule( 'remark-lint:no-undefined-references', noUndefinedReferences @@ -44883,6 +42913,33 @@ function noUndefinedReferences(tree, file, option) { } } +/** + * @author Titus Wormer + * @copyright 2016 Titus Wormer + * @license MIT + * @module no-unused-definitions + * @fileoverview + * Warn when unused definitions are found. + * + * @example {"name": "ok.md"} + * + * [foo][] + * + * [foo]: https://example.com + * + * @example {"name": "not-ok.md", "label": "input"} + * + * [bar]: https://example.com + * + * @example {"name": "not-ok.md", "label": "output"} + * + * 1:1-1:27: Found unused definition + */ + + + + + var remarkLintNoUnusedDefinitions = unifiedLintRule('remark-lint:no-unused-definitions', noUnusedDefinitions); var reason$8 = 'Found unused definition'; @@ -44918,8 +42975,14 @@ function noUnusedDefinitions(tree, file) { } } +/** + * @fileoverview + * remark preset to configure `remark-lint` with settings that prevent + * mistakes or syntaxes that do not work correctly across vendors. + */ + var plugins$1 = [ - remarkLint$1, + remarkLint, // Unix compatibility. remarkLintFinalNewline, // Rendering across vendors differs greatly if using other styles. @@ -44945,6 +43008,89 @@ var remarkPresetLintRecommended = { plugins: plugins$1 }; +var mdastUtilToString$4 = toString$7; + +// Get the text content of a node. +// Prefer the nodeās plain-text fields, otherwise serialize its children, +// and if the given value is an array, serialize the nodes in it. +function toString$7(node) { + return ( + (node && + (node.value || + node.alt || + node.title || + ('children' in node && all$4(node.children)) || + ('length' in node && all$4(node)))) || + '' + ) +} + +function all$4(values) { + var result = []; + var length = values.length; + var index = -1; + + while (++index < length) { + result[index] = toString$7(values[index]); + } + + return result.join('') +} + +/** + * @author Titus Wormer + * @copyright 2015 Titus Wormer + * @license MIT + * @module blockquote-indentation + * @fileoverview + * Warn when block quotes are indented too much or too little. + * + * Options: `number` or `'consistent'`, default: `'consistent'`. + * + * `'consistent'` detects the first used indentation and will warn when + * other block quotes use a different indentation. + * + * @example {"name": "ok.md", "setting": 4} + * + * > Hello + * + * Paragraph. + * + * > World + * + * @example {"name": "ok.md", "setting": 2} + * + * > Hello + * + * Paragraph. + * + * > World + * + * @example {"name": "not-ok.md", "label": "input"} + * + * > Hello + * + * Paragraph. + * + * > World + * + * Paragraph. + * + * > World + * + * @example {"name": "not-ok.md", "label": "output"} + * + * 5:3: Remove 1 space between block quote and content + * 9:3: Add 1 space between block quote and content + */ + + + + + + + + var remarkLintBlockquoteIndentation = unifiedLintRule( 'remark-lint:blockquote-indentation', blockquoteIndentation @@ -44988,7 +43134,7 @@ function blockquoteIndentation(tree, file, option) { function check$3(node) { var head = node.children[0]; var indentation = unistUtilPosition.start(head).column - unistUtilPosition.start(node).column; - var padding = mdastUtilToString(head).match(/^ +/); + var padding = mdastUtilToString$4(head).match(/^ +/); if (padding) { indentation += padding[0].length; @@ -44997,6 +43143,82 @@ function check$3(node) { return indentation } +/** + * @author Titus Wormer + * @copyright 2015 Titus Wormer + * @license MIT + * @module checkbox-character-style + * @fileoverview + * Warn when list item checkboxes violate a given style. + * + * Options: `Object` or `'consistent'`, default: `'consistent'`. + * + * `'consistent'` detects the first used checked and unchecked checkbox + * styles and warns when subsequent checkboxes use different styles. + * + * Styles can also be passed in like so: + * + * ```js + * {checked: 'x', unchecked: ' '} + * ``` + * + * ## Fix + * + * [`remark-stringify`](https://github.com/remarkjs/remark/tree/HEAD/packages/remark-stringify) + * formats checked checkboxes using `x` (lowercase X) and unchecked checkboxes + * as `Ā·` (a single space). + * + * See [Using remark to fix your Markdown](https://github.com/remarkjs/remark-lint#using-remark-to-fix-your-markdown) + * on how to automatically fix warnings for this rule. + * + * @example {"name": "ok.md", "setting": {"checked": "x"}, "gfm": true} + * + * - [x] List item + * - [x] List item + * + * @example {"name": "ok.md", "setting": {"checked": "X"}, "gfm": true} + * + * - [X] List item + * - [X] List item + * + * @example {"name": "ok.md", "setting": {"unchecked": " "}, "gfm": true} + * + * - [ ] List item + * - [ ] List item + * - [ ]Ā·Ā· + * - [ ] + * + * @example {"name": "ok.md", "setting": {"unchecked": "\t"}, "gfm": true} + * + * - [Ā»] List item + * - [Ā»] List item + * + * @example {"name": "not-ok.md", "label": "input", "gfm": true} + * + * - [x] List item + * - [X] List item + * - [ ] List item + * - [Ā»] List item + * + * @example {"name": "not-ok.md", "label": "output", "gfm": true} + * + * 2:5: Checked checkboxes should use `x` as a marker + * 4:5: Unchecked checkboxes should use ` ` as a marker + * + * @example {"setting": {"unchecked": "š©"}, "name": "not-ok.md", "label": "output", "positionless": true, "gfm": true} + * + * 1:1: Incorrect unchecked checkbox marker `š©`: use either `'\t'`, or `' '` + * + * @example {"setting": {"checked": "š©"}, "name": "not-ok.md", "label": "output", "positionless": true, "gfm": true} + * + * 1:1: Incorrect checked checkbox marker `š©`: use either `'x'`, or `'X'` + */ + + + + + + var remarkLintCheckboxCharacterStyle = unifiedLintRule( 'remark-lint:checkbox-character-style', checkboxCharacterStyle @@ -45081,6 +43303,41 @@ function checkboxCharacterStyle(tree, file, option) { } } +/** + * @author Titus Wormer + * @copyright 2015 Titus Wormer + * @license MIT + * @module checkbox-content-indent + * @fileoverview + * Warn when list item checkboxes are followed by too much whitespace. + * + * @example {"name": "ok.md", "gfm": true} + * + * - [ ] List item + * + [x] List Item + * * [X] List item + * - [ ] List item + * + * @example {"name": "not-ok.md", "label": "input", "gfm": true} + * + * - [ ] List item + * + [x] List item + * * [X] List item + * - [ ] List item + * + * @example {"name": "not-ok.md", "label": "output", "gfm": true} + * + * 2:7-2:8: Checkboxes should be followed by a single character + * 3:7-3:9: Checkboxes should be followed by a single character + * 4:7-4:10: Checkboxes should be followed by a single character + */ + + + + + + + var remarkLintCheckboxContentIndent = unifiedLintRule( 'remark-lint:checkbox-content-indent', checkboxContentIndent @@ -45137,6 +43394,105 @@ function checkboxContentIndent(tree, file) { } } +/** + * @author Titus Wormer + * @copyright 2015 Titus Wormer + * @license MIT + * @module code-block-style + * @fileoverview + * Warn when code blocks do not adhere to a given style. + * + * Options: `'consistent'`, `'fenced'`, or `'indented'`, default: `'consistent'`. + * + * `'consistent'` detects the first used code block style and warns when + * subsequent code blocks uses different styles. + * + * ## Fix + * + * [`remark-stringify`](https://github.com/remarkjs/remark/tree/HEAD/packages/remark-stringify) + * formats code blocks using a fence if they have a language flag and + * indentation if not. + * Pass + * [`fences: true`](https://github.com/remarkjs/remark/tree/HEAD/packages/remark-stringify#optionsfences) + * to always use fences for code blocks. + * + * See [Using remark to fix your Markdown](https://github.com/remarkjs/remark-lint#using-remark-to-fix-your-markdown) + * on how to automatically fix warnings for this rule. + * + * @example {"setting": "indented", "name": "ok.md"} + * + * alpha(); + * + * Paragraph. + * + * bravo(); + * + * @example {"setting": "indented", "name": "not-ok.md", "label": "input"} + * + * ``` + * alpha(); + * ``` + * + * Paragraph. + * + * ``` + * bravo(); + * ``` + * + * @example {"setting": "indented", "name": "not-ok.md", "label": "output"} + * + * 1:1-3:4: Code blocks should be indented + * 7:1-9:4: Code blocks should be indented + * + * @example {"setting": "fenced", "name": "ok.md"} + * + * ``` + * alpha(); + * ``` + * + * Paragraph. + * + * ``` + * bravo(); + * ``` + * + * @example {"setting": "fenced", "name": "not-ok-fenced.md", "label": "input"} + * + * alpha(); + * + * Paragraph. + * + * bravo(); + * + * @example {"setting": "fenced", "name": "not-ok-fenced.md", "label": "output"} + * + * 1:1-1:13: Code blocks should be fenced + * 5:1-5:13: Code blocks should be fenced + * + * @example {"name": "not-ok-consistent.md", "label": "input"} + * + * alpha(); + * + * Paragraph. + * + * ``` + * bravo(); + * ``` + * + * @example {"name": "not-ok-consistent.md", "label": "output"} + * + * 5:1-7:4: Code blocks should be indented + * + * @example {"setting": "š©", "name": "not-ok-incorrect.md", "label": "output", "config": {"positionless": true}} + * + * 1:1: Incorrect code block style `š©`: use either `'consistent'`, `'fenced'`, or `'indented'` + */ + + + + + + var remarkLintCodeBlockStyle = unifiedLintRule('remark-lint:code-block-style', codeBlockStyle); var start$9 = unistUtilPosition.start; @@ -45186,6 +43542,32 @@ function codeBlockStyle(tree, file, option) { } } +/** + * @author Titus Wormer + * @copyright 2015 Titus Wormer + * @license MIT + * @module definition-spacing + * @fileoverview + * Warn when consecutive whitespace is used in a definition. + * + * @example {"name": "ok.md"} + * + * [example domain]: http://example.com "Example Domain" + * + * @example {"name": "not-ok.md", "label": "input"} + * + * [exampleĀ·Ā·Ā·Ā·domain]: http://example.com "Example Domain" + * + * @example {"name": "not-ok.md", "label": "output"} + * + * 1:1-1:57: Do not use consecutive whitespace in definition labels + */ + + + + + + var remarkLintDefinitionSpacing = unifiedLintRule('remark-lint:definition-spacing', definitionSpacing); var label = /^\s*\[((?:\\[\s\S]|[^[\]])+)]/; @@ -45209,6 +43591,77 @@ function definitionSpacing(tree, file) { } } +/** + * @author Titus Wormer + * @copyright 2015 Titus Wormer + * @license MIT + * @module fenced-code-flag + * @fileoverview + * Check fenced code block flags. + * + * Options: `Array.<string>` or `Object`, optional. + * + * Providing an array is as passing `{flags: Array}`. + * + * The object can have an array of `'flags'` which are allowed: other flags + * will not be allowed. + * An `allowEmpty` field (`boolean`, default: `false`) can be set to allow + * code blocks without language flags. + * + * @example {"name": "ok.md"} + * + * ```alpha + * bravo(); + * ``` + * + * @example {"name": "not-ok.md", "label": "input"} + * + * ``` + * alpha(); + * ``` + * + * @example {"name": "not-ok.md", "label": "output"} + * + * 1:1-3:4: Missing code language flag + * + * @example {"name": "ok.md", "setting": {"allowEmpty": true}} + * + * ``` + * alpha(); + * ``` + * + * @example {"name": "not-ok.md", "setting": {"allowEmpty": false}, "label": "input"} + * + * ``` + * alpha(); + * ``` + * + * @example {"name": "not-ok.md", "setting": {"allowEmpty": false}, "label": "output"} + * + * 1:1-3:4: Missing code language flag + * + * @example {"name": "ok.md", "setting": ["alpha"]} + * + * ```alpha + * bravo(); + * ``` + * + * @example {"name": "not-ok.md", "setting": ["charlie"], "label": "input"} + * + * ```alpha + * bravo(); + * ``` + * + * @example {"name": "not-ok.md", "setting": ["charlie"], "label": "output"} + * + * 1:1-3:4: Incorrect code language flag + */ + + + + + + var remarkLintFencedCodeFlag = unifiedLintRule('remark-lint:fenced-code-flag', fencedCodeFlag); var start$a = unistUtilPosition.start; @@ -45254,6 +43707,94 @@ function fencedCodeFlag(tree, file, option) { } } +/** + * @author Titus Wormer + * @copyright 2015 Titus Wormer + * @license MIT + * @module fenced-code-marker + * @fileoverview + * Warn for violating fenced code markers. + * + * Options: `` '`' ``, `'~'`, or `'consistent'`, default: `'consistent'`. + * + * `'consistent'` detects the first used fenced code marker style and warns + * when subsequent fenced code blocks use different styles. + * + * ## Fix + * + * [`remark-stringify`](https://github.com/remarkjs/remark/tree/HEAD/packages/remark-stringify) + * formats fences using ``'`'`` (grave accent) by default. + * Pass + * [`fence: '~'`](https://github.com/remarkjs/remark/tree/HEAD/packages/remark-stringify#optionsfence) + * to use `~` (tilde) instead. + * + * See [Using remark to fix your Markdown](https://github.com/remarkjs/remark-lint#using-remark-to-fix-your-markdown) + * on how to automatically fix warnings for this rule. + * + * @example {"name": "ok.md"} + * + * Indented code blocks are not affected by this rule: + * + * bravo(); + * + * @example {"name": "ok.md", "setting": "`"} + * + * ```alpha + * bravo(); + * ``` + * + * ``` + * charlie(); + * ``` + * + * @example {"name": "ok.md", "setting": "~"} + * + * ~~~alpha + * bravo(); + * ~~~ + * + * ~~~ + * charlie(); + * ~~~ + * + * @example {"name": "not-ok-consistent-tick.md", "label": "input"} + * + * ```alpha + * bravo(); + * ``` + * + * ~~~ + * charlie(); + * ~~~ + * + * @example {"name": "not-ok-consistent-tick.md", "label": "output"} + * + * 5:1-7:4: Fenced code should use `` ` `` as a marker + * + * @example {"name": "not-ok-consistent-tilde.md", "label": "input"} + * + * ~~~alpha + * bravo(); + * ~~~ + * + * ``` + * charlie(); + * ``` + * + * @example {"name": "not-ok-consistent-tilde.md", "label": "output"} + * + * 5:1-7:4: Fenced code should use `~` as a marker + * + * @example {"name": "not-ok-incorrect.md", "setting": "š©", "label": "output", "config": {"positionless": true}} + * + * 1:1: Incorrect fenced code marker `š©`: use either `'consistent'`, `` '`' ``, or `'~'` + */ + + + + + + var remarkLintFencedCodeMarker = unifiedLintRule('remark-lint:fenced-code-marker', fencedCodeMarker); var markers = { @@ -45307,6 +43848,32 @@ function fencedCodeMarker(tree, file, option) { } } +/** + * @author Titus Wormer + * @copyright 2015 Titus Wormer + * @license MIT + * @module file-extension + * @fileoverview + * Warn when the file extension differ from the preferred extension. + * + * Does not warn when given documents have no file extensions (such as + * `AUTHORS` or `LICENSE`). + * + * Options: `string`, default: `'md'` ā Expected file extension. + * + * @example {"name": "readme.md"} + * + * @example {"name": "readme"} + * + * @example {"name": "readme.mkd", "label": "output", "config": {"positionless": true}} + * + * 1:1: Incorrect extension: use `md` + * + * @example {"name": "readme.mkd", "setting": "mkd"} + */ + + + var remarkLintFileExtension = unifiedLintRule('remark-lint:file-extension', fileExtension); function fileExtension(tree, file, option) { @@ -45318,6 +43885,49 @@ function fileExtension(tree, file, option) { } } +/** + * @author Titus Wormer + * @copyright 2015 Titus Wormer + * @license MIT + * @module final-definition + * @fileoverview + * Warn when definitions are placed somewhere other than at the end of + * the file. + * + * @example {"name": "ok.md"} + * + * Paragraph. + * + * [example]: http://example.com "Example Domain" + * + * @example {"name": "not-ok.md", "label": "input"} + * + * Paragraph. + * + * [example]: http://example.com "Example Domain" + * + * Another paragraph. + * + * @example {"name": "not-ok.md", "label": "output"} + * + * 3:1-3:47: Move definitions to the end of the file (after the node at line `5`) + * + * @example {"name": "ok-comments.md"} + * + * Paragraph. + * + * [example-1]: http://example.com/one/ + * + * <!-- Comments are fine between and after definitions --> + * + * [example-2]: http://example.com/two/ + */ + + + + + + var remarkLintFinalDefinition = unifiedLintRule('remark-lint:final-definition', finalDefinition); var start$b = unistUtilPosition.start; @@ -45350,6 +43960,89 @@ function finalDefinition(tree, file) { } } +/** + * @author Titus Wormer + * @copyright 2015 Titus Wormer + * @license MIT + * @module first-heading-level + * @fileoverview + * Warn when the first heading has a level other than a specified value. + * + * Options: `number`, default: `1`. + * + * @example {"name": "ok.md"} + * + * # The default is to expect a level one heading + * + * @example {"name": "ok-html.md"} + * + * <h1>An HTML heading is also seen by this rule.</h1> + * + * @example {"name": "ok-delayed.md"} + * + * You can use markdown content before the heading. + * + * <div>Or non-heading HTML</div> + * + * <h1>So the first heading, be it HTML or markdown, is checked</h1> + * + * @example {"name": "not-ok.md", "label": "input"} + * + * ## Bravo + * + * Paragraph. + * + * @example {"name": "not-ok.md", "label": "output"} + * + * 1:1-1:9: First heading level should be `1` + * + * @example {"name": "not-ok-html.md", "label": "input"} + * + * <h2>Charlie</h2> + * + * Paragraph. + * + * @example {"name": "not-ok-html.md", "label": "output"} + * + * 1:1-1:17: First heading level should be `1` + * + * @example {"name": "ok.md", "setting": 2} + * + * ## Delta + * + * Paragraph. + * + * @example {"name": "ok-html.md", "setting": 2} + * + * <h2>Echo</h2> + * + * Paragraph. + * + * @example {"name": "not-ok.md", "setting": 2, "label": "input"} + * + * # Foxtrot + * + * Paragraph. + * + * @example {"name": "not-ok.md", "setting": 2, "label": "output"} + * + * 1:1-1:10: First heading level should be `2` + * + * @example {"name": "not-ok-html.md", "setting": 2, "label": "input"} + * + * <h1>Golf</h1> + * + * Paragraph. + * + * @example {"name": "not-ok-html.md", "setting": 2, "label": "output"} + * + * 1:1-1:14: First heading level should be `2` + */ + + + + + var remarkLintFirstHeadingLevel = unifiedLintRule('remark-lint:first-heading-level', firstHeadingLevel); var re$1 = /<h([1-6])/; @@ -45388,6 +44081,79 @@ function infer(node) { return results ? Number(results[1]) : undefined } +/** + * @author Titus Wormer + * @copyright 2015 Titus Wormer + * @license MIT + * @module heading-style + * @fileoverview + * Warn when a heading does not conform to a given style. + * + * Options: `'consistent'`, `'atx'`, `'atx-closed'`, or `'setext'`, + * default: `'consistent'`. + * + * `'consistent'` detects the first used heading style and warns when + * subsequent headings use different styles. + * + * ## Fix + * + * [`remark-stringify`](https://github.com/remarkjs/remark/tree/HEAD/packages/remark-stringify) + * formats headings as ATX by default. + * This can be configured with the + * [`setext`](https://github.com/remarkjs/remark/tree/HEAD/packages/remark-stringify#optionssetext) + * and + * [`closeAtx`](https://github.com/remarkjs/remark/tree/HEAD/packages/remark-stringify#optionscloseatx) + * options. + * + * See [Using remark to fix your Markdown](https://github.com/remarkjs/remark-lint#using-remark-to-fix-your-markdown) + * on how to automatically fix warnings for this rule. + * + * @example {"name": "ok.md", "setting": "atx"} + * + * # Alpha + * + * ## Bravo + * + * ### Charlie + * + * @example {"name": "ok.md", "setting": "atx-closed"} + * + * # Delta ## + * + * ## Echo ## + * + * ### Foxtrot ### + * + * @example {"name": "ok.md", "setting": "setext"} + * + * Golf + * ==== + * + * Hotel + * ----- + * + * ### India + * + * @example {"name": "not-ok.md", "label": "input"} + * + * Juliett + * ======= + * + * ## Kilo + * + * ### Lima ### + * + * @example {"name": "not-ok.md", "label": "output"} + * + * 4:1-4:8: Headings should use setext + * 6:1-6:13: Headings should use setext + */ + + + + + + var remarkLintHeadingStyle = unifiedLintRule('remark-lint:heading-style', headingStyle); var types$2 = ['atx', 'atx-closed', 'setext']; @@ -45410,6 +44176,103 @@ function headingStyle(tree, file, option) { } } +/** + * @author Titus Wormer + * @copyright 2015 Titus Wormer + * @license MIT + * @module maximum-line-length + * @fileoverview + * Warn when lines are too long. + * + * Options: `number`, default: `80`. + * + * Ignores nodes that cannot be wrapped, such as headings, tables, code, + * definitions, HTML, and JSX. + * + * Ignores images, links, and inline code if they start before the wrap, end + * after the wrap, and thereās no whitespace after them. + * + * @example {"name": "ok.md", "config": {"positionless": true}} + * + * This line is simply not toooooooooooooooooooooooooooooooooooooooooooo + * long. + * + * This is also fine: <http://this-long-url-with-a-long-domain.co.uk/a-long-path?query=variables> + * + * <http://this-link-is-fine.com> + * + * `alphaBravoCharlieDeltaEchoFoxtrotGolfHotelIndiaJuliettKiloLimaMikeNovemberOscarPapaQuebec.romeo()` + * + * [foo](http://this-long-url-with-a-long-domain-is-ok.co.uk/a-long-path?query=variables) + * + * <http://this-long-url-with-a-long-domain-is-ok.co.uk/a-long-path?query=variables> + * + * ![foo](http://this-long-url-with-a-long-domain-is-ok.co.uk/a-long-path?query=variables) + * + * | An | exception | is | line | length | in | long | tables | because | those | canāt | just | + * | -- | --------- | -- | ---- | ------ | -- | ---- | ------ | ------- | ----- | ----- | ---- | + * | be | helped | | | | | | | | | | . | + * + * <a><b><i><p><q><s><u>alpha bravo charlie delta echo foxtrot golf</u></s></q></p></i></b></a> + * + * The following is also fine, because there is no whitespace. + * + * <http://this-long-url-with-a-long-domain-is-ok.co.uk/a-long-path?query=variables>. + * + * In addition, definitions are also fine: + * + * [foo]: <http://this-long-url-with-a-long-domain-is-ok.co.uk/a-long-path?query=variables> + * + * @example {"name": "not-ok.md", "setting": 80, "label": "input", "config": {"positionless": true}} + * + * This line is simply not tooooooooooooooooooooooooooooooooooooooooooooooooooooooo + * long. + * + * Just like thiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiis one. + * + * And this one is also very wrong: because the link starts aaaaaaafter the column: <http://line.com> + * + * <http://this-long-url-with-a-long-domain-is-not-ok.co.uk/a-long-path?query=variables> and such. + * + * And this one is also very wrong: because the code starts aaaaaaafter the column: `alpha.bravo()` + * + * `alphaBravoCharlieDeltaEchoFoxtrotGolfHotelIndiaJuliettKiloLimaMikeNovemberOscar.papa()` and such. + * + * @example {"name": "not-ok.md", "setting": 80, "label": "output", "config": {"positionless": true}} + * + * 4:86: Line must be at most 80 characters + * 6:99: Line must be at most 80 characters + * 8:96: Line must be at most 80 characters + * 10:97: Line must be at most 80 characters + * 12:99: Line must be at most 80 characters + * + * @example {"name": "ok-mixed-line-endings.md", "setting": 10, "config": {"positionless": true}} + * + * 0123456789āā + * 0123456789ā + * 01234āā + * 01234ā + * + * @example {"name": "not-ok-mixed-line-endings.md", "setting": 10, "label": "input", "config": {"positionless": true}} + * + * 012345678901āā + * 012345678901ā + * 01234567890āā + * 01234567890ā + * + * @example {"name": "not-ok-mixed-line-endings.md", "setting": 10, "label": "output", "config": {"positionless": true}} + * + * 1:13: Line must be at most 10 characters + * 2:13: Line must be at most 10 characters + * 3:12: Line must be at most 10 characters + * 4:12: Line must be at most 10 characters + */ + + + + + + var remarkLintMaximumLineLength = unifiedLintRule('remark-lint:maximum-line-length', maximumLineLength); var start$c = unistUtilPosition.start; @@ -45492,6 +44355,54 @@ function maximumLineLength(tree, file, option) { } } +/** + * @author Titus Wormer + * @copyright 2015 Titus Wormer + * @license MIT + * @module no-consecutive-blank-lines + * @fileoverview + * Warn for too many consecutive blank lines. + * Knows about the extra line needed between a list and indented code, and two + * lists. + * + * ## Fix + * + * [`remark-stringify`](https://github.com/remarkjs/remark/tree/HEAD/packages/remark-stringify) + * always uses one blank line between blocks if possible, or two lines when + * needed. + * + * See [Using remark to fix your Markdown](https://github.com/remarkjs/remark-lint#using-remark-to-fix-your-markdown) + * on how to automatically fix warnings for this rule. + * + * @example {"name": "ok.md"} + * + * Fooā¦ + * ā + * ā¦Bar. + * + * @example {"name": "empty-document.md"} + * + * @example {"name": "not-ok.md", "label": "input"} + * + * Fooā¦ + * ā + * ā + * ā¦Bar + * ā + * ā + * + * @example {"name": "not-ok.md", "label": "output"} + * + * 4:1: Remove 1 line before node + * 4:5: Remove 2 lines after node + */ + + + + + + + var remarkLintNoConsecutiveBlankLines = unifiedLintRule( 'remark-lint:no-consecutive-blank-lines', noConsecutiveBlankLines @@ -45555,6 +44466,35 @@ function noConsecutiveBlankLines(tree, file) { } } +/** + * @author Titus Wormer + * @copyright 2015 Titus Wormer + * @license MIT + * @module no-file-name-articles + * @fileoverview + * Warn when file names start with an article. + * + * @example {"name": "title.md"} + * + * @example {"name": "a-title.md", "label": "output", "config": {"positionless": true}} + * + * 1:1: Do not start file names with `a` + * + * @example {"name": "the-title.md", "label": "output", "config": {"positionless": true}} + * + * 1:1: Do not start file names with `the` + * + * @example {"name": "teh-title.md", "label": "output", "config": {"positionless": true}} + * + * 1:1: Do not start file names with `teh` + * + * @example {"name": "an-article.md", "label": "output", "config": {"positionless": true}} + * + * 1:1: Do not start file names with `an` + */ + + + var remarkLintNoFileNameArticles = unifiedLintRule('remark-lint:no-file-name-articles', noFileNameArticles); function noFileNameArticles(tree, file) { @@ -45565,6 +44505,23 @@ function noFileNameArticles(tree, file) { } } +/** + * @author Titus Wormer + * @copyright 2015 Titus Wormer + * @license MIT + * @module no-file-name-consecutive-dashes + * @fileoverview + * Warn when file names contain consecutive dashes. + * + * @example {"name": "plug-ins.md"} + * + * @example {"name": "plug--ins.md", "label": "output", "config": {"positionless": true}} + * + * 1:1: Do not use consecutive dashes in a file name + */ + + + var remarkLintNoFileNameConsecutiveDashes = unifiedLintRule( 'remark-lint:no-file-name-consecutive-dashes', noFileNameConsecutiveDashes @@ -45578,6 +44535,27 @@ function noFileNameConsecutiveDashes(tree, file) { } } +/** + * @author Titus Wormer + * @copyright 2015 Titus Wormer + * @license MIT + * @module no-file-name-outer-dashes + * @fileoverview + * Warn when file names contain initial or final dashes (hyphen-minus, `-`). + * + * @example {"name": "readme.md"} + * + * @example {"name": "-readme.md", "label": "output", "config": {"positionless": true}} + * + * 1:1: Do not use initial or final dashes in a file name + * + * @example {"name": "readme-.md", "label": "output", "config": {"positionless": true}} + * + * 1:1: Do not use initial or final dashes in a file name + */ + + + var remarkLintNoFileNameOuterDashes = unifiedLintRule( 'remark-lint:no-file-name-outer-dashes', noFileNameOuterDashes @@ -45591,6 +44569,60 @@ function noFileNameOuterDashes(tree, file) { } } +/** + * @author Titus Wormer + * @copyright 2015 Titus Wormer + * @license MIT + * @module no-heading-indent + * @fileoverview + * Warn when a heading is indented. + * + * ## Fix + * + * [`remark-stringify`](https://github.com/remarkjs/remark/tree/HEAD/packages/remark-stringify) + * removes all unneeded indentation before headings. + * + * See [Using remark to fix your Markdown](https://github.com/remarkjs/remark-lint#using-remark-to-fix-your-markdown) + * on how to automatically fix warnings for this rule. + * + * @example {"name": "ok.md"} + * + * #Ā·Hello world + * + * Foo + * ----- + * + * #Ā·Hello worldĀ·# + * + * Bar + * ===== + * + * @example {"name": "not-ok.md", "label": "input"} + * + * Ā·Ā·Ā·# Hello world + * + * Ā·Foo + * ----- + * + * Ā·# Hello world # + * + * Ā·Ā·Ā·Bar + * ===== + * + * @example {"name": "not-ok.md", "label": "output"} + * + * 1:4: Remove 3 spaces before this heading + * 3:2: Remove 1 space before this heading + * 6:2: Remove 1 space before this heading + * 8:4: Remove 3 spaces before this heading + */ + + + + + + + var remarkLintNoHeadingIndent = unifiedLintRule('remark-lint:no-heading-indent', noHeadingIndent); var start$d = unistUtilPosition.start; @@ -45618,6 +44650,35 @@ function noHeadingIndent(tree, file) { } } +/** + * @author Titus Wormer + * @copyright 2015 Titus Wormer + * @license MIT + * @module no-multiple-toplevel-headings + * @fileoverview + * Warn when multiple top level headings are used. + * + * Options: `number`, default: `1`. + * + * @example {"name": "ok.md", "setting": 1} + * + * # Foo + * + * ## Bar + * + * @example {"name": "not-ok.md", "setting": 1, "label": "input"} + * + * # Foo + * + * # Bar + * + * @example {"name": "not-ok.md", "setting": 1, "label": "output"} + * + * 3:1-3:6: Donāt use multiple top level headings (1:1) + */ + + + var start$e = unistUtilPosition.start; @@ -45647,6 +44708,65 @@ function noMultipleToplevelHeadings(tree, file, option) { } } +/** + * @author Titus Wormer + * @copyright 2015 Titus Wormer + * @license MIT + * @module no-shell-dollars + * @fileoverview + * Warn when shell code is prefixed by `$` (dollar sign) characters. + * + * Ignores indented code blocks and fenced code blocks without language flag. + * + * @example {"name": "ok.md"} + * + * ```bash + * echo a + * ``` + * + * ```sh + * echo a + * echo a > file + * ``` + * + * ```zsh + * $ echo a + * a + * $ echo a > file + * ``` + * + * Some empty code: + * + * ```command + * ``` + * + * Itās fine to use dollars in non-shell code. + * + * ```js + * $('div').remove(); + * ``` + * + * @example {"name": "not-ok.md", "label": "input"} + * + * ```sh + * $ echo a + * ``` + * + * ```bash + * $ echo a + * $ echo a > file + * ``` + * + * @example {"name": "not-ok.md", "label": "output"} + * + * 1:1-3:4: Do not use dollar signs before shell commands + * 5:1-8:4: Do not use dollar signs before shell commands + */ + + + + + var remarkLintNoShellDollars = unifiedLintRule('remark-lint:no-shell-dollars', noShellDollars); var reason$d = 'Do not use dollar signs before shell commands'; @@ -45703,6 +44823,70 @@ function noShellDollars(tree, file) { } } +/** + * @author Titus Wormer + * @copyright 2015 Titus Wormer + * @license MIT + * @module no-table-indentation + * @fileoverview + * Warn when tables are indented. + * + * ## Fix + * + * [`remark-stringify`](https://github.com/remarkjs/remark/tree/HEAD/packages/remark-stringify) + * removes all unneeded indentation before tables. + * + * See [Using remark to fix your Markdown](https://github.com/remarkjs/remark-lint#using-remark-to-fix-your-markdown) + * on how to automatically fix warnings for this rule. + * + * @example {"name": "ok.md", "gfm": true} + * + * Paragraph. + * + * | A | B | + * | ----- | ----- | + * | Alpha | Bravo | + * + * @example {"name": "not-ok.md", "label": "input", "gfm": true} + * + * Paragraph. + * + * Ā·Ā·Ā·| A | B | + * Ā·Ā·Ā·| ----- | ----- | + * Ā·Ā·Ā·| Alpha | Bravo | + * + * @example {"name": "not-ok.md", "label": "output", "gfm": true} + * + * 3:4: Do not indent table rows + * 4:4: Do not indent table rows + * 5:4: Do not indent table rows + * + * @example {"name": "not-ok-blockquote.md", "label": "input", "gfm": true} + * + * >Ā·Ā·| A | + * >Ā·| - | + * + * @example {"name": "not-ok-blockquote.md", "label": "output", "gfm": true} + * + * 1:4: Do not indent table rows + * + * @example {"name": "not-ok-list.md", "label": "input", "gfm": true} + * + * -Ā·Ā·Ā·paragraph + * + * Ā·Ā·Ā·Ā·Ā·| A | + * Ā·Ā·Ā·Ā·| - | + * + * @example {"name": "not-ok-list.md", "label": "output", "gfm": true} + * + * 3:6: Do not indent table rows + */ + + + + + + var remarkLintNoTableIndentation = unifiedLintRule('remark-lint:no-table-indentation', noTableIndentation); var reason$e = 'Do not indent table rows'; @@ -45770,6 +44954,61 @@ function noTableIndentation(tree, file) { } } +/** + * @author Titus Wormer + * @copyright 2015 Titus Wormer + * @license MIT + * @module no-tabs + * @fileoverview + * Warn when hard tabs (`\t`) are used instead of spaces. + * + * ## Fix + * + * [`remark-stringify`](https://github.com/remarkjs/remark/tree/HEAD/packages/remark-stringify) + * uses spaces where tabs are used for indentation, but retains tabs used in + * content. + * + * See [Using remark to fix your Markdown](https://github.com/remarkjs/remark-lint#using-remark-to-fix-your-markdown) + * on how to automatically fix warnings for this rule. + * + * @example {"name": "ok.md"} + * + * Foo Bar + * + * Ā·Ā·Ā·Ā·Foo + * + * @example {"name": "not-ok.md", "label": "input", "config": {"positionless": true}} + * + * Ā»Here's one before a code block. + * + * Here's a tab:Ā», and here is another:Ā». + * + * And this is in `inlineĀ»code`. + * + * >Ā»This is in a block quote. + * + * *Ā»Andā¦ + * + * Ā»1.Ā»in a list. + * + * And this is a tab as the last character.Ā» + * + * @example {"name": "not-ok.md", "label": "output"} + * + * 1:1: Use spaces instead of tabs + * 3:14: Use spaces instead of tabs + * 3:37: Use spaces instead of tabs + * 5:23: Use spaces instead of tabs + * 7:2: Use spaces instead of tabs + * 9:2: Use spaces instead of tabs + * 11:1: Use spaces instead of tabs + * 11:4: Use spaces instead of tabs + * 13:41: Use spaces instead of tabs + */ + + + + var remarkLintNoTabs = unifiedLintRule('remark-lint:no-tabs', noTabs); var reason$f = 'Use spaces instead of tabs'; @@ -46020,12 +45259,18 @@ createToken('STAR', '(<|>)?=?\\s*\\*'); createToken('GTE0', '^\\s*>=\\s*0\.0\.0\\s*$'); createToken('GTE0PRE', '^\\s*>=\\s*0\.0\.0-0\\s*$'); }); -var re_2 = re_1.re; -var re_3 = re_1.src; -var re_4 = re_1.t; -var re_5 = re_1.tildeTrimReplace; -var re_6 = re_1.caretTrimReplace; -var re_7 = re_1.comparatorTrimReplace; + +// parse out just the options we care about so we always get a consistent +// obj with keys in a consistent order. +const opts = ['includePrerelease', 'loose', 'rtl']; +const parseOptions = options => + !options ? {} + : typeof options !== 'object' ? { loose: true } + : opts.filter(k => options[k]).reduce((options, k) => { + options[k] = true; + return options + }, {}); +var parseOptions_1 = parseOptions; const numeric$1 = /^[0-9]+$/; const compareIdentifiers = (a, b) => { @@ -46054,15 +45299,12 @@ var identifiers = { const { MAX_LENGTH: MAX_LENGTH$3, MAX_SAFE_INTEGER: MAX_SAFE_INTEGER$1 } = constants$3; const { re: re$2, t } = re_1; + const { compareIdentifiers: compareIdentifiers$1 } = identifiers; class SemVer { constructor (version, options) { - if (!options || typeof options !== 'object') { - options = { - loose: !!options, - includePrerelease: false - }; - } + options = parseOptions_1(options); + if (version instanceof SemVer) { if (version.loose === !!options.loose && version.includePrerelease === !!options.includePrerelease) { @@ -46345,13 +45587,9 @@ const {MAX_LENGTH: MAX_LENGTH$4} = constants$3; const { re: re$3, t: t$1 } = re_1; -const parse$a = (version, options) => { - if (!options || typeof options !== 'object') { - options = { - loose: !!options, - includePrerelease: false - }; - } + +const parse$9 = (version, options) => { + options = parseOptions_1(options); if (version instanceof semver) { return version @@ -46377,7 +45615,7 @@ const parse$a = (version, options) => { } }; -var parse_1$3 = parse$a; +var parse_1$4 = parse$9; const compare$2 = (a, b, loose) => new semver(a, loose).compare(new semver(b, loose)); @@ -46396,7 +45634,7 @@ const allowedKeys = [ ]; const changesExpectedKeys = ["version", "pr-url", "description"]; const VERSION_PLACEHOLDER = "REPLACEME"; -const MAX_SAFE_SEMVER_VERSION = parse_1$3( +const MAX_SAFE_SEMVER_VERSION = parse_1$4( Array.from({ length: 3 }, () => Number.MAX_SAFE_INTEGER).join(".") ); const validVersionNumberRegex = /^v\d+\.\d+\.\d+$/; @@ -46696,6 +45934,63 @@ function prohibitedStrings (ast, file, strings) { } } +/** + * @author Titus Wormer + * @copyright 2015 Titus Wormer + * @license MIT + * @module rule-style + * @fileoverview + * Warn when the thematic breaks (horizontal rules) violate a given or + * detected style. + * + * Options: `string`, either a corect thematic breaks such as `***`, or + * `'consistent'`, default: `'consistent'`. + * + * `'consistent'` detects the first used thematic break style and warns when + * subsequent rules use different styles. + * + * ## Fix + * + * [`remark-stringify`](https://github.com/remarkjs/remark/tree/HEAD/packages/remark-stringify) + * has three settings that define how rules are created: + * + * * [`rule`](https://github.com/remarkjs/remark/tree/HEAD/packages/remark-stringify#optionsrule) + * (default: `*`) ā Marker to use + * * [`ruleRepetition`](https://github.com/remarkjs/remark/tree/HEAD/packages/remark-stringify#optionsrulerepetition) + * (default: `3`) ā Number of markers to use + * * [`ruleSpaces`](https://github.com/remarkjs/remark/tree/HEAD/packages/remark-stringify#optionsrulespaces) + * (default: `true`) ā Whether to pad markers with spaces + * + * See [Using remark to fix your Markdown](https://github.com/remarkjs/remark-lint#using-remark-to-fix-your-markdown) + * on how to automatically fix warnings for this rule. + * + * @example {"name": "ok.md", "setting": "* * *"} + * + * * * * + * + * * * * + * + * @example {"name": "ok.md", "setting": "_______"} + * + * _______ + * + * _______ + * + * @example {"name": "not-ok.md", "label": "input"} + * + * *** + * + * * * * + * + * @example {"name": "not-ok.md", "label": "output"} + * + * 3:1-3:6: Rules should use `***` + * + * @example {"name": "not-ok.md", "label": "output", "setting": "š©", "config": {"positionless": true}} + * + * 1:1: Incorrect preferred rule style: provide a correct markdown rule or `'consistent'` + */ + var rule = unifiedLintRule; @@ -46738,6 +46033,64 @@ function ruleStyle(tree, file, option) { } } +/** + * @author Titus Wormer + * @copyright 2015 Titus Wormer + * @license MIT + * @module strong-marker + * @fileoverview + * Warn for violating importance (strong) markers. + * + * Options: `'consistent'`, `'*'`, or `'_'`, default: `'consistent'`. + * + * `'consistent'` detects the first used importance style and warns when + * subsequent importance sequences use different styles. + * + * ## Fix + * + * [`remark-stringify`](https://github.com/remarkjs/remark/tree/HEAD/packages/remark-stringify) + * formats importance using an `*` (asterisk) by default. + * Pass + * [`strong: '_'`](https://github.com/remarkjs/remark/tree/HEAD/packages/remark-stringify#optionsstrong) + * to use `_` (underscore) instead. + * + * See [Using remark to fix your Markdown](https://github.com/remarkjs/remark-lint#using-remark-to-fix-your-markdown) + * on how to automatically fix warnings for this rule. + * + * @example {"name": "ok.md"} + * + * **foo** and **bar**. + * + * @example {"name": "also-ok.md"} + * + * __foo__ and __bar__. + * + * @example {"name": "ok.md", "setting": "*"} + * + * **foo**. + * + * @example {"name": "ok.md", "setting": "_"} + * + * __foo__. + * + * @example {"name": "not-ok.md", "label": "input"} + * + * **foo** and __bar__. + * + * @example {"name": "not-ok.md", "label": "output"} + * + * 1:13-1:20: Strong should use `*` as a marker + * + * @example {"name": "not-ok.md", "label": "output", "setting": "š©", "config": {"positionless": true}} + * + * 1:1: Incorrect strong marker `š©`: use either `'consistent'`, `'*'`, or `'_'` + */ + + + + + + var remarkLintStrongMarker = unifiedLintRule('remark-lint:strong-marker', strongMarker); var markers$1 = {'*': true, _: true, null: true}; @@ -46775,6 +46128,167 @@ function strongMarker(tree, file, option) { } } +/** + * @author Titus Wormer + * @copyright 2015 Titus Wormer + * @license MIT + * @module table-cell-padding + * @fileoverview + * Warn when table cells are incorrectly padded. + * + * Options: `'consistent'`, `'padded'`, or `'compact'`, default: `'consistent'`. + * + * `'consistent'` detects the first used cell padding style and warns when + * subsequent cells use different styles. + * + * ## Fix + * + * [`remark-stringify`](https://github.com/remarkjs/remark/tree/HEAD/packages/remark-stringify) + * formats tables with padding by default. + * Pass + * [`spacedTable: false`](https://github.com/remarkjs/remark/tree/HEAD/packages/remark-stringify#optionsspacedtable) + * to not use padding. + * + * See [Using remark to fix your Markdown](https://github.com/remarkjs/remark-lint#using-remark-to-fix-your-markdown) + * on how to automatically fix warnings for this rule. + * + * @example {"name": "ok.md", "setting": "padded", "gfm": true} + * + * | A | B | + * | ----- | ----- | + * | Alpha | Bravo | + * + * @example {"name": "not-ok.md", "label": "input", "setting": "padded", "gfm": true} + * + * | A | B | + * | :----|----: | + * | Alpha|Bravo | + * + * | C | D | + * | :----- | ---: | + * |Charlie | Delta| + * + * Too much padding isnāt good either: + * + * | E | F | G | H | + * | :---- | -------- | :----: | -----: | + * | Echo | Foxtrot | Golf | Hotel | + * + * @example {"name": "not-ok.md", "label": "output", "setting": "padded", "gfm": true} + * + * 3:8: Cell should be padded + * 3:9: Cell should be padded + * 7:2: Cell should be padded + * 7:17: Cell should be padded + * 13:9: Cell should be padded with 1 space, not 2 + * 13:20: Cell should be padded with 1 space, not 2 + * 13:21: Cell should be padded with 1 space, not 2 + * 13:29: Cell should be padded with 1 space, not 2 + * 13:30: Cell should be padded with 1 space, not 2 + * + * @example {"name": "ok.md", "setting": "compact", "gfm": true} + * + * |A |B | + * |-----|-----| + * |Alpha|Bravo| + * + * @example {"name": "not-ok.md", "label": "input", "setting": "compact", "gfm": true} + * + * | A | B | + * | -----| -----| + * | Alpha| Bravo| + * + * |C | D| + * |:------|-----:| + * |Charlie|Delta | + * + * @example {"name": "not-ok.md", "label": "output", "setting": "compact", "gfm": true} + * + * 3:2: Cell should be compact + * 3:11: Cell should be compact + * 7:16: Cell should be compact + * + * @example {"name": "ok-padded.md", "setting": "consistent", "gfm": true} + * + * | A | B | + * | ----- | ----- | + * | Alpha | Bravo | + * + * | C | D | + * | ------- | ----- | + * | Charlie | Delta | + * + * @example {"name": "not-ok-padded.md", "label": "input", "setting": "consistent", "gfm": true} + * + * | A | B | + * | ----- | ----- | + * | Alpha | Bravo | + * + * | C | D | + * | :----- | ----: | + * |Charlie | Delta | + * + * @example {"name": "not-ok-padded.md", "label": "output", "setting": "consistent", "gfm": true} + * + * 7:2: Cell should be padded + * + * @example {"name": "ok-compact.md", "setting": "consistent", "gfm": true} + * + * |A |B | + * |-----|-----| + * |Alpha|Bravo| + * + * |C |D | + * |-------|-----| + * |Charlie|Delta| + * + * @example {"name": "not-ok-compact.md", "label": "input", "setting": "consistent", "gfm": true} + * + * |A |B | + * |-----|-----| + * |Alpha|Bravo| + * + * |C | D| + * |:------|-----:| + * |Charlie|Delta | + * + * @example {"name": "not-ok-compact.md", "label": "output", "setting": "consistent", "gfm": true} + * + * 7:16: Cell should be compact + * + * @example {"name": "not-ok.md", "label": "output", "setting": "š©", "positionless": true, "gfm": true} + * + * 1:1: Incorrect table cell padding style `š©`, expected `'padded'`, `'compact'`, or `'consistent'` + * + * @example {"name": "empty.md", "label": "input", "setting": "padded", "gfm": true} + * + * <!-- Empty cells are OK, but those surrounding them may not be. --> + * + * | | Alpha | Bravo| + * | ------ | ----- | ---: | + * | Charlie| | Echo| + * + * @example {"name": "empty.md", "label": "output", "setting": "padded", "gfm": true} + * + * 3:25: Cell should be padded + * 5:10: Cell should be padded + * 5:25: Cell should be padded + * + * @example {"name": "missing-body.md", "setting": "padded", "gfm": true} + * + * <!-- Missing cells are fine as well. --> + * + * | Alpha | Bravo | Charlie | + * | ----- | ------- | ------- | + * | Delta | + * | Echo | Foxtrot | + */ + + + + + + var remarkLintTableCellPadding = unifiedLintRule('remark-lint:table-cell-padding', tableCellPadding); var start$h = unistUtilPosition.start; @@ -46876,7 +46390,7 @@ function tableCellPadding(tree, file, option) { if (style === 0) { // Ignore every cell except the biggest in the column. - if (size(cell) < sizes[column]) { + if (size$1(cell) < sizes[column]) { return } @@ -46886,7 +46400,7 @@ function tableCellPadding(tree, file, option) { if (spacing > style) { // May be right or center aligned. - if (size(cell) < sizes[column]) { + if (size$1(cell) < sizes[column]) { return } @@ -46910,13 +46424,57 @@ function tableCellPadding(tree, file, option) { } } -function size(node) { +function size$1(node) { return ( end$a(node.children[node.children.length - 1]).offset - start$h(node.children[0]).offset ) } +/** + * @author Titus Wormer + * @copyright 2015 Titus Wormer + * @license MIT + * @module table-pipes + * @fileoverview + * Warn when table rows are not fenced with pipes. + * + * ## Fix + * + * [`remark-stringify`](https://github.com/remarkjs/remark/tree/HEAD/packages/remark-stringify) + * creates fenced rows with initial and final pipes by default. + * Pass + * [`looseTable: true`](https://github.com/remarkjs/remark/tree/HEAD/packages/remark-stringify#optionsloosetable) + * to not use row fences. + * + * See [Using remark to fix your Markdown](https://github.com/remarkjs/remark-lint#using-remark-to-fix-your-markdown) + * on how to automatically fix warnings for this rule. + * + * @example {"name": "ok.md", "gfm": true} + * + * | A | B | + * | ----- | ----- | + * | Alpha | Bravo | + * + * @example {"name": "not-ok.md", "label": "input", "gfm": true} + * + * A | B + * ----- | ----- + * Alpha | Bravo + * + * @example {"name": "not-ok.md", "label": "output", "gfm": true} + * + * 1:1: Missing initial pipe in table fence + * 1:10: Missing final pipe in table fence + * 3:1: Missing initial pipe in table fence + * 3:14: Missing final pipe in table fence + */ + + + + + + var remarkLintTablePipes = unifiedLintRule('remark-lint:table-pipes', tablePipes); var start$i = unistUtilPosition.start; @@ -46952,6 +46510,79 @@ function tablePipes(tree, file) { } } +/** + * @author Titus Wormer + * @copyright 2015 Titus Wormer + * @license MIT + * @module unordered-list-marker-style + * @fileoverview + * Warn when the list item marker style of unordered lists violate a given + * style. + * + * Options: `'consistent'`, `'-'`, `'*'`, or `'+'`, default: `'consistent'`. + * + * `'consistent'` detects the first used list style and warns when subsequent + * lists use different styles. + * + * ## Fix + * + * [`remark-stringify`](https://github.com/remarkjs/remark/tree/HEAD/packages/remark-stringify) + * formats unordered lists using `-` (hyphen-minus) by default. + * Pass + * [`bullet: '*'` or `bullet: '+'`](https://github.com/remarkjs/remark/tree/HEAD/packages/remark-stringify#optionsbullet) + * to use `*` (asterisk) or `+` (plus sign) instead. + * + * See [Using remark to fix your Markdown](https://github.com/remarkjs/remark-lint#using-remark-to-fix-your-markdown) + * on how to automatically fix warnings for this rule. + * + * @example {"name": "ok.md"} + * + * By default (`'consistent'`), if the file uses only one marker, + * thatās OK. + * + * * Foo + * * Bar + * * Baz + * + * Ordered lists are not affected. + * + * 1. Foo + * 2. Bar + * 3. Baz + * + * @example {"name": "ok.md", "setting": "*"} + * + * * Foo + * + * @example {"name": "ok.md", "setting": "-"} + * + * - Foo + * + * @example {"name": "ok.md", "setting": "+"} + * + * + Foo + * + * @example {"name": "not-ok.md", "label": "input"} + * + * * Foo + * - Bar + * + Baz + * + * @example {"name": "not-ok.md", "label": "output"} + * + * 2:1-2:6: Marker style should be `*` + * 3:1-3:6: Marker style should be `*` + * + * @example {"name": "not-ok.md", "label": "output", "setting": "š©", "config": {"positionless": true}} + * + * 1:1: Incorrect unordered list item marker style `š©`: use either `'-'`, `'*'`, or `'+'` + */ + + + + + + var remarkLintUnorderedListMarkerStyle = unifiedLintRule( 'remark-lint:unordered-list-marker-style', unorderedListMarkerStyle @@ -47092,9 +46723,12 @@ var remarkPresetLintNode = { plugins: plugins$2 }; +var www = {tokenize: tokenizeWww}; +var http = {tokenize: tokenizeHttp}; var domain = {tokenize: tokenizeDomain}; var path$1 = {tokenize: tokenizePath}; var punctuation = {tokenize: tokenizePunctuation}; +var domainPunctuation = {tokenize: tokenizeDomainPunctuation}; var paren = {tokenize: tokenizeParen}; var namedCharacterReference = {tokenize: tokenizeNamedCharacterReference}; @@ -47105,7 +46739,7 @@ var emailAutolink = {tokenize: tokenizeEmailAutolink, previous: previous$1}; var text$4 = {}; // Export hooked constructs. -var text_1$2 = text$4; +var text_1$3 = text$4; // `0` var code$2 = 48; @@ -47182,7 +46816,7 @@ function tokenizeEmailAutolink(effects, ok, nok) { return effects.check(punctuation, nok, dashOrUnderscoreContinuation)(code) } - if (asciiAlphanumeric(code)) { + if (asciiAlphanumeric_1(code)) { effects.consume(code); return label } @@ -47234,38 +46868,11 @@ function tokenizeWwwAutolink(effects, ok, nok) { effects.enter('literalAutolink'); effects.enter('literalAutolinkWww'); - effects.consume(code); - return w2 - } - - function w2(code) { - // `w` - if (code === 87 || code - 32 === 87) { - effects.consume(code); - return w3 - } - - return nok(code) - } - - function w3(code) { - // `w` - if (code === 87 || code - 32 === 87) { - effects.consume(code); - return dot - } - - return nok(code) - } - - function dot(code) { - // `.` - if (code === 46) { - effects.consume(code); - return effects.attempt(domain, effects.attempt(path$1, done), nok) - } - - return nok(code) + return effects.check( + www, + effects.attempt(domain, effects.attempt(path$1, done), nok), + nok + )(code) } function done(code) { @@ -47288,6 +46895,25 @@ function tokenizeHttpAutolink(effects, ok, nok) { effects.enter('literalAutolink'); effects.enter('literalAutolinkHttp'); + return effects.check( + http, + effects.attempt(domain, effects.attempt(path$1, done), nok), + nok + )(code) + } + + function done(code) { + effects.exit('literalAutolinkHttp'); + effects.exit('literalAutolink'); + return ok(code) + } +} + +function tokenizeHttp(effects, ok, nok) { + return start + + function start(code) { + // Assume a `h`. effects.consume(code); return t1 } @@ -47356,66 +46982,136 @@ function tokenizeHttpAutolink(effects, ok, nok) { // `/` if (code === 47) { effects.consume(code); - return effects.attempt(domain, effects.attempt(path$1, done), nok) + return after } return nok(code) } - function done(code) { - effects.exit('literalAutolinkHttp'); - effects.exit('literalAutolink'); - return ok(code) + function after(code) { + return asciiControl_1(code) || + unicodeWhitespace_1(code) || + unicodePunctuation_1(code) + ? nok(code) + : ok(code) } } -function tokenizeDomain(effects, ok, nok) { - var hasUnderscoreInLastSegment; - var hasUnderscoreInLastLastSegment; - var hasDot; - +function tokenizeWww(effects, ok, nok) { return start function start(code) { - effects.enter('literalAutolinkDomain'); - return domain(code) + // Assume a `w`. + effects.consume(code); + return w2 + } + + function w2(code) { + // `w` + if (code === 87 || code - 32 === 87) { + effects.consume(code); + return w3 + } + + return nok(code) + } + + function w3(code) { + // `w` + if (code === 87 || code - 32 === 87) { + effects.consume(code); + return dot + } + + return nok(code) + } + + function dot(code) { + // `.` + if (code === 46) { + effects.consume(code); + return after + } + + return nok(code) } + function after(code) { + return code === null || markdownLineEnding_1(code) ? nok(code) : ok(code) + } +} + +function tokenizeDomain(effects, ok, nok) { + var opened; + var hasUnderscoreInLastSegment; + var hasUnderscoreInLastLastSegment; + + return domain + function domain(code) { if ( - // `-` - code === 45 || - // `_` - code === 95 || - asciiAlphanumeric(code) + // `/` + code === 47 || + asciiControl_1(code) || + unicodeWhitespace_1(code) ) { - if (code === 95) { - hasUnderscoreInLastSegment = true; - } + return done(code) + } - effects.consume(code); - return domain + // `&` + if (code === 38) { + return effects.check( + namedCharacterReference, + done, + punctuationContinuation + )(code) } + if ( + // `.` + code === 46 || + trailingPunctuation(code) + ) { + return effects.check( + domainPunctuation, + done, + punctuationContinuation + )(code) + } + + open(); + effects.consume(code); + return domain + } + + function punctuationContinuation(code) { // `.` if (code === 46) { - return effects.check(punctuation, done, dotContinuation)(code) + hasUnderscoreInLastLastSegment = hasUnderscoreInLastSegment; + hasUnderscoreInLastSegment = undefined; + open(); + effects.consume(code); + return domain } - return done(code) - } + // `_` + if (code === 95) hasUnderscoreInLastSegment = true; - function dotContinuation(code) { + open(); effects.consume(code); - hasDot = true; - hasUnderscoreInLastLastSegment = hasUnderscoreInLastSegment; - hasUnderscoreInLastSegment = undefined; return domain } + function open() { + if (!opened) { + effects.enter('literalAutolinkDomain'); + opened = true; + } + } + function done(code) { if ( - hasDot && + opened && !hasUnderscoreInLastLastSegment && !hasUnderscoreInLastSegment ) { @@ -47433,19 +47129,12 @@ function tokenizePath(effects, ok) { return start function start(code) { - if (pathEnd(code)) { - return ok(code) - } - - if (trailingPunctuation(code)) { - return effects.check(punctuation, ok, atPathStart)(code) - } - - return atPathStart(code) + // `/` + return code === 47 ? atPathStart(code) : ok(code) } function atPathStart(code) { - effects.enter('literalAutolinkWwwPath'); + effects.enter('literalAutolinkPath'); return inPath(code) } @@ -47492,7 +47181,7 @@ function tokenizePath(effects, ok) { } function atPathEnd(code) { - effects.exit('literalAutolinkWwwPath'); + effects.exit('literalAutolinkPath'); return ok(code) } } @@ -47508,7 +47197,7 @@ function tokenizeNamedCharacterReference(effects, ok, nok) { } function inside(code) { - if (asciiAlpha(code)) { + if (asciiAlpha_1(code)) { effects.consume(code); return inside } @@ -47570,23 +47259,57 @@ function tokenizePunctuation(effects, ok, nok) { } } +function tokenizeDomainPunctuation(effects, ok, nok) { + return start + + function start(code) { + effects.enter('literalAutolinkPunctuation'); + // Always a valid trailing punctuation marker. + effects.consume(code); + return after + } + + function after(code) { + // Check the next. + if (trailingPunctuation(code)) { + effects.consume(code); + return after + } + + // If the punctuation marker is followed by the end of the path, itās not + // continued punctuation. + effects.exit('literalAutolinkPunctuation'); + return pathEnd(code) ? ok(code) : nok(code) + } +} + function trailingPunctuation(code) { return ( - // Exclamation mark. + // `!` code === 33 || - // Asterisk. + // `"` + code === 34 || + // `'` + code === 39 || + // `)` + code === 41 || + // `*` code === 42 || - // Comma. + // `,` code === 44 || - // Dot. + // `.` code === 46 || - // Colon. + // `:` code === 58 || - // Question mark. + // `;` + code === 59 || + // `<` + code === 60 || + // `?` code === 63 || - // Underscore. + // `_`. code === 95 || - // Tilde. + // `~` code === 126 ) } @@ -47599,7 +47322,7 @@ function pathEnd(code) { code < 0 || // Space. code === 32 || - // Less than. + // `<` code === 60 ) } @@ -47614,7 +47337,7 @@ function gfmAtext(code) { code === 46 || // `_` code === 95 || - asciiAlphanumeric(code) + asciiAlphanumeric_1(code) ) } @@ -47626,19 +47349,19 @@ function previous$1(code) { code < 0 || // Space. code === 32 || - // Left paren. + // `(` code === 40 || - // Asterisk. + // `*` code === 42 || - // Underscore. + // `_`. code === 95 || - // Tilde. + // `~` code === 126 ) } var syntax = { - text: text_1$2 + text: text_1$3 }; var micromarkExtensionGfmAutolinkLiteral = syntax; @@ -48440,19 +48163,24 @@ function tokenizeTasklistCheck(effects, ok, nok) { effects.consume(code); effects.exit('taskListCheckMarker'); effects.exit('taskListCheck'); - return after + return effects.check({tokenize: spaceThenNonSpace}, ok, nok) } return nok(code) } +} - function after(code) { - // Tab or space. - if (code === -2 || code === 32) { - return ok(code) - } +function spaceThenNonSpace(effects, ok, nok) { + var self = this; - return nok(code) + return factorySpace(effects, after, 'whitespace') + + function after(code) { + return prefixSize_1(self.events, 'whitespace') && + code !== null && + !markdownLineEndingOrSpace_1(code) + ? ok(code) + : nok(code) } } @@ -48476,7 +48204,7 @@ var enter = { literalAutolinkHttp: enterLiteralAutolinkValue, literalAutolinkWww: enterLiteralAutolinkValue }; -var exit = { +var exit$1 = { literalAutolink: exitLiteralAutolink, literalAutolinkEmail: exitLiteralAutolinkEmail, literalAutolinkHttp: exitLiteralAutolinkHttp, @@ -48510,12 +48238,12 @@ function exitLiteralAutolink(token) { var fromMarkdown$1 = { enter: enter, - exit: exit + exit: exit$1 }; var canContainEols = ['delete']; var enter$1 = {strikethrough: enterStrikethrough}; -var exit$1 = {strikethrough: exitStrikethrough}; +var exit$2 = {strikethrough: exitStrikethrough}; function enterStrikethrough(token) { this.enter({type: 'delete', children: []}, token); @@ -48528,7 +48256,7 @@ function exitStrikethrough(token) { var fromMarkdown$2 = { canContainEols: canContainEols, enter: enter$1, - exit: exit$1 + exit: exit$2 }; var enter$2 = { @@ -48540,9 +48268,9 @@ var enter$2 = { var exit_1 = { codeText: exitCodeText, table: exitTable, - tableData: exit$2, - tableHeader: exit$2, - tableRow: exit$2 + tableData: exit$3, + tableHeader: exit$3, + tableRow: exit$3 }; function enterTable(token) { @@ -48559,7 +48287,7 @@ function enterRow(token) { this.enter({type: 'tableRow', children: []}, token); } -function exit$2(token) { +function exit$3(token) { this.exit(token); } @@ -48590,7 +48318,7 @@ var fromMarkdown$3 = { exit: exit_1 }; -var exit$3 = { +var exit$4 = { taskListCheckValueChecked: exitCheck, taskListCheckValueUnchecked: exitCheck, paragraph: exitParagraphWithTaskListItem @@ -48603,24 +48331,38 @@ function exitCheck(token) { } function exitParagraphWithTaskListItem(token) { - var node = this.stack[this.stack.length - 1]; var parent = this.stack[this.stack.length - 2]; + var node = this.stack[this.stack.length - 1]; + var siblings = parent.children; var head = node.children[0]; + var index = -1; + var firstParaghraph; if ( + parent && parent.type === 'listItem' && typeof parent.checked === 'boolean' && head && head.type === 'text' ) { - // Must start with a space or a tab. - head.value = head.value.slice(1); - if (head.value.length === 0) { - node.children.shift(); - } else { - head.position.start.column++; - head.position.start.offset++; - node.position.start = Object.assign({}, head.position.start); + while (++index < siblings.length) { + if (siblings[index].type === 'paragraph') { + firstParaghraph = siblings[index]; + break + } + } + + if (firstParaghraph === node) { + // Must start with a space or a tab. + head.value = head.value.slice(1); + + if (head.value.length === 0) { + node.children.shift(); + } else { + head.position.start.column++; + head.position.start.offset++; + node.position.start = Object.assign({}, head.position.start); + } } } @@ -48628,10 +48370,10 @@ function exitParagraphWithTaskListItem(token) { } var fromMarkdown$4 = { - exit: exit$3 + exit: exit$4 }; -var own$5 = {}.hasOwnProperty; +var own$6 = {}.hasOwnProperty; var fromMarkdown$5 = configure$4([ fromMarkdown$1, @@ -48658,7 +48400,7 @@ function extension$3(config, extension) { var right; for (key in extension) { - left = own$5.call(config, key) ? config[key] : (config[key] = {}); + left = own$6.call(config, key) ? config[key] : (config[key] = {}); right = extension[key]; if (key === 'canContainEols') { @@ -48670,7 +48412,7 @@ function extension$3(config, extension) { } var inConstruct = 'phrasing'; -var notInConstruct = ['autolink', 'link', 'image']; +var notInConstruct = ['autolink', 'link', 'image', 'label']; var unsafe$1 = [ { @@ -49069,7 +48811,7 @@ function toMarkdown$3(options) { var value = inlineCode_1(node); if (context.stack.indexOf('tableCell') !== -1) { - value = value.replace(/\|/, '\\$&'); + value = value.replace(/\|/g, '\\$&'); } return value @@ -49105,26 +48847,18 @@ var toMarkdown$4 = { var toMarkdown_1$1 = toMarkdown$5; function toMarkdown$5(options) { - var extensions = [ - toMarkdown$1, - toMarkdown$2, - toMarkdown_1(options), - toMarkdown$4 - ]; - var length = extensions.length; - var index = -1; - var extension; - var unsafe = []; - var handlers = {}; - - while (++index < length) { - extension = extensions[index]; - // istanbul ignore next - unsafe always exists, for now. - unsafe = unsafe.concat(extension.unsafe || []); - handlers = Object.assign(handlers, extension.handlers || {}); - } + var config = configure_1$2( + {handlers: {}, join: [], unsafe: [], options: {}}, + { + extensions: [toMarkdown$1, toMarkdown$2, toMarkdown_1(options), toMarkdown$4] + } + ); - return {unsafe: unsafe, handlers: handlers} + return Object.assign(config.options, { + handlers: config.handlers, + join: config.join, + unsafe: config.unsafe + }) } var warningIssued; @@ -49161,10 +48895,6 @@ function gfm(options) { } } -var proc = getCjsExportFromNamespace(_package$1); - -var cli = getCjsExportFromNamespace(_package$3); - // To aid in future maintenance, this layout closely matches remark-cli/cli.js. // https://github.com/remarkjs/remark/blob/master/packages/remark-cli/cli.js @@ -49189,6 +48919,12 @@ unifiedArgs({ packageField: proc.name + 'Config', rcName: '.' + proc.name + 'rc', ignoreName: '.' + proc.name + 'ignore', - extensions: markdownExtensions$2, + extensions: markdownExtensions, detectConfig: false, }); + +var cliEntry = { + +}; + +module.exports = cliEntry; diff --git a/tools/node-lint-md-cli-rollup/package-lock.json b/tools/node-lint-md-cli-rollup/package-lock.json index ed6381ae379..7abb785af84 100644 --- a/tools/node-lint-md-cli-rollup/package-lock.json +++ b/tools/node-lint-md-cli-rollup/package-lock.json @@ -10,30 +10,30 @@ "markdown-extensions": "^1.1.1", "remark": "^13.0.0", "remark-gfm": "^1.0.0", - "remark-lint": "^7.0.0", + "remark-lint": "^8.0.0", "remark-preset-lint-node": "^2.0.0", - "unified-args": "^8.0.0" + "unified-args": "^8.1.0" }, "devDependencies": { - "@rollup/plugin-commonjs": "^11.0.1", - "@rollup/plugin-json": "^4.0.1", - "@rollup/plugin-node-resolve": "^7.0.0", - "rollup": "^2.32.1", + "@rollup/plugin-commonjs": "^17.0.0", + "@rollup/plugin-json": "^4.1.0", + "@rollup/plugin-node-resolve": "^11.0.1", + "rollup": "^2.36.1", "shx": "^0.3.3" } }, "node_modules/@babel/code-frame": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", - "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", "dependencies": { "@babel/highlight": "^7.10.4" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==" + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==" }, "node_modules/@babel/highlight": { "version": "7.10.4", @@ -51,6 +51,9 @@ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dependencies": { "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/@babel/highlight/node_modules/chalk": { @@ -61,6 +64,9 @@ "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/@babel/highlight/node_modules/color-convert": { @@ -79,12 +85,18 @@ "node_modules/@babel/highlight/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": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "engines": { + "node": ">=0.8.0" + } }, "node_modules/@babel/highlight/node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "engines": { + "node": ">=4" + } }, "node_modules/@babel/highlight/node_modules/supports-color": { "version": "5.5.0", @@ -92,21 +104,30 @@ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dependencies": { "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/@rollup/plugin-commonjs": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-11.1.0.tgz", - "integrity": "sha512-Ycr12N3ZPN96Fw2STurD21jMqzKwL9QuFhms3SD7KKRK7oaXUsBU9Zt0jL/rOPHiPYisI21/rXGO3jr9BnLHUA==", + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-17.0.0.tgz", + "integrity": "sha512-/omBIJG1nHQc+bgkYDuLpb/V08QyutP9amOrJRUSlYJZP+b/68gM//D8sxJe3Yry2QnYIr3QjR3x4AlxJEN3GA==", "dev": true, "dependencies": { - "@rollup/pluginutils": "^3.0.8", + "@rollup/pluginutils": "^3.1.0", "commondir": "^1.0.1", - "estree-walker": "^1.0.1", - "glob": "^7.1.2", - "is-reference": "^1.1.2", - "magic-string": "^0.25.2", - "resolve": "^1.11.0" + "estree-walker": "^2.0.1", + "glob": "^7.1.6", + "is-reference": "^1.2.1", + "magic-string": "^0.25.7", + "resolve": "^1.17.0" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^2.30.0" } }, "node_modules/@rollup/plugin-json": { @@ -116,19 +137,29 @@ "dev": true, "dependencies": { "@rollup/pluginutils": "^3.0.8" + }, + "peerDependencies": { + "rollup": "^1.20.0 || ^2.0.0" } }, "node_modules/@rollup/plugin-node-resolve": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-7.1.3.tgz", - "integrity": "sha512-RxtSL3XmdTAE2byxekYLnx+98kEUOrPHF/KRVjLH+DEIHy6kjIw7YINQzn+NXiH/NTrQLAwYs0GWB+csWygA9Q==", + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.0.1.tgz", + "integrity": "sha512-ltlsj/4Bhwwhb+Nb5xCz/6vieuEj2/BAkkqVIKmZwC7pIdl8srmgmglE4S0jFlZa32K4qvdQ6NHdmpRKD/LwoQ==", "dev": true, "dependencies": { - "@rollup/pluginutils": "^3.0.8", - "@types/resolve": "0.0.8", + "@rollup/pluginutils": "^3.1.0", + "@types/resolve": "1.17.1", "builtin-modules": "^3.1.0", + "deepmerge": "^4.2.2", "is-module": "^1.0.0", - "resolve": "^1.14.2" + "resolve": "^1.19.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" } }, "node_modules/@rollup/pluginutils": { @@ -140,8 +171,20 @@ "@types/estree": "0.0.39", "estree-walker": "^1.0.1", "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" } }, + "node_modules/@rollup/pluginutils/node_modules/estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + }, "node_modules/@types/estree": { "version": "0.0.39", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", @@ -157,15 +200,15 @@ } }, "node_modules/@types/node": { - "version": "14.11.8", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.11.8.tgz", - "integrity": "sha512-KPcKqKm5UKDkaYPTuXSx8wEP7vE9GnuaXIZKijwRYcePpZFDVuy2a57LarFKiORbHOuTOOwYzxVxcUzsh2P2Pw==", + "version": "14.14.20", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.20.tgz", + "integrity": "sha512-Y93R97Ouif9JEOWPIUyU+eyIdyRqQR0I8Ez1dzku4hDx34NWh4HbtIc3WNzwB1Y9ULvNGeu5B8h8bVL5cAk4/A==", "dev": true }, "node_modules/@types/resolve": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz", - "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", + "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", "dev": true, "dependencies": { "@types/node": "*" @@ -179,7 +222,10 @@ "node_modules/ansi-regex": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "engines": { + "node": ">=8" + } }, "node_modules/ansi-styles": { "version": "4.3.0", @@ -187,6 +233,12 @@ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dependencies": { "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/anymatch": { @@ -196,6 +248,9 @@ "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" } }, "node_modules/argparse": { @@ -223,7 +278,10 @@ "node_modules/binary-extensions": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", - "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==" + "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", + "engines": { + "node": ">=8" + } }, "node_modules/brace-expansion": { "version": "1.1.11", @@ -240,6 +298,9 @@ "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dependencies": { "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" } }, "node_modules/buffer-from": { @@ -248,15 +309,24 @@ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" }, "node_modules/builtin-modules": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.1.0.tgz", - "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==", - "dev": true + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", + "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/camelcase": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "engines": { + "node": ">=6" + } }, "node_modules/chalk": { "version": "3.0.0", @@ -265,6 +335,9 @@ "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" } }, "node_modules/character-entities": { @@ -295,21 +368,37 @@ } }, "node_modules/chokidar": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.3.tgz", - "integrity": "sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.0.tgz", + "integrity": "sha512-JgQM9JS92ZbFR4P90EvmzNpSGhpPBGBSj10PILeDyYFwp4h2/D9OM03wsJ4zW1fEp4ka2DGrnUeD7FuvQ2aZ2Q==", "dependencies": { "anymatch": "~3.1.1", "braces": "~3.0.2", - "fsevents": "~2.1.2", + "fsevents": "~2.3.1", "glob-parent": "~5.1.0", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", "readdirp": "~3.5.0" }, + "engines": { + "node": ">= 8.10.0" + }, "optionalDependencies": { - "fsevents": "~2.1.2" + "fsevents": "~2.3.1" + } + }, + "node_modules/chokidar/node_modules/fsevents": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.1.tgz", + "integrity": "sha512-YR47Eg4hChJGAB1O3yEAOkGO+rlzutoICGqGo9EZ4lKWokzZRSyIW1QmTzqjtw8MJdj9srP869CuWw/hyzSiBw==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, "node_modules/co": { @@ -332,6 +421,9 @@ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dependencies": { "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, "node_modules/color-name": { @@ -354,6 +446,9 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", + "engines": [ + "node >= 6.0" + ], "dependencies": { "buffer-from": "^1.0.0", "inherits": "^2.0.3", @@ -362,11 +457,28 @@ } }, "node_modules/debug": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", - "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "dependencies": { "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true, + "engines": { + "node": ">=0.10.0" } }, "node_modules/emoji-regex": { @@ -396,12 +508,19 @@ "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==" + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } }, "node_modules/estree-walker": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", - "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", "dev": true }, "node_modules/extend": { @@ -415,6 +534,10 @@ "integrity": "sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==", "dependencies": { "format": "^0.2.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, "node_modules/figgy-pudding": { @@ -428,12 +551,21 @@ "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", "dependencies": { "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/figures/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": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "engines": { + "node": ">=0.8.0" + } }, "node_modules/fill-range": { "version": "7.0.1", @@ -441,6 +573,9 @@ "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dependencies": { "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" } }, "node_modules/find-up": { @@ -449,12 +584,18 @@ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "dependencies": { "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" } }, "node_modules/format": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", - "integrity": "sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs=" + "integrity": "sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs=", + "engines": { + "node": ">=0.4.x" + } }, "node_modules/fs.realpath": { "version": "1.0.0", @@ -465,7 +606,22 @@ "version": "2.1.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", - "optional": true + "deprecated": "\"Please update to latest v2.3 or v2.2\"", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true }, "node_modules/glob": { "version": "7.1.6", @@ -478,6 +634,12 @@ "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/glob-parent": { @@ -486,17 +648,38 @@ "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", "dependencies": { "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" } }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } }, "node_modules/ignore": { "version": "5.1.8", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==" + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "engines": { + "node": ">= 4" + } }, "node_modules/inflight": { "version": "1.0.6", @@ -513,9 +696,9 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "node_modules/ini": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.7.tgz", - "integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==" + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" }, "node_modules/interpret": { "version": "1.4.0", @@ -559,12 +742,44 @@ "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dependencies": { "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" } }, "node_modules/is-buffer": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", - "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==" + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "engines": { + "node": ">=4" + } + }, + "node_modules/is-core-module": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", + "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/is-decimal": { "version": "1.0.4", @@ -583,12 +798,18 @@ "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "engines": { + "node": ">=0.10.0" + } }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } }, "node_modules/is-glob": { "version": "4.0.1", @@ -596,6 +817,9 @@ "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", "dependencies": { "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/is-hexadecimal": { @@ -616,12 +840,18 @@ "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } }, "node_modules/is-plain-obj": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==" + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "engines": { + "node": ">=8" + } }, "node_modules/is-reference": { "version": "1.2.1", @@ -638,12 +868,15 @@ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "node_modules/js-yaml": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", - "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" } }, "node_modules/json-parse-even-better-errors": { @@ -657,6 +890,12 @@ "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", "dependencies": { "minimist": "^1.2.5" + }, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" } }, "node_modules/libnpmconfig": { @@ -681,6 +920,10 @@ "dependencies": { "libnpmconfig": "^1.0.0", "resolve-from": "^5.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, "node_modules/locate-path": { @@ -690,6 +933,9 @@ "dependencies": { "p-locate": "^3.0.0", "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" } }, "node_modules/longest-streak": { @@ -701,6 +947,17 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/magic-string": { "version": "0.25.7", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", @@ -713,7 +970,10 @@ "node_modules/markdown-extensions": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-1.1.1.tgz", - "integrity": "sha512-WWC0ZuMzCyDHYCasEGs4IPvLyTGftYwh6wIEOULOF0HXcqZlhwRzrK0w2VUlxWA98xnvb/jszw4ZSkJ6ADpM6Q==" + "integrity": "sha512-WWC0ZuMzCyDHYCasEGs4IPvLyTGftYwh6wIEOULOF0HXcqZlhwRzrK0w2VUlxWA98xnvb/jszw4ZSkJ6ADpM6Q==", + "engines": { + "node": ">=0.10.0" + } }, "node_modules/markdown-table": { "version": "2.0.0", @@ -730,17 +990,22 @@ "node_modules/mdast-comment-marker": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/mdast-comment-marker/-/mdast-comment-marker-1.1.2.tgz", - "integrity": "sha512-vTFXtmbbF3rgnTh3Zl3irso4LtvwUq/jaDvT2D1JqTGAwaipcS7RpTxzi6KjoRqI9n2yuAhzLDAC8xVTF3XYVQ==" + "integrity": "sha512-vTFXtmbbF3rgnTh3Zl3irso4LtvwUq/jaDvT2D1JqTGAwaipcS7RpTxzi6KjoRqI9n2yuAhzLDAC8xVTF3XYVQ==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, "node_modules/mdast-util-from-markdown": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.1.tgz", - "integrity": "sha512-qJXNcFcuCSPqUF0Tb0uYcFDIq67qwB3sxo9RPdf9vG8T90ViKnksFqdB/Coq2a7sTnxL/Ify2y7aIQXDkQFH0w==", + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.4.tgz", + "integrity": "sha512-jj891B5pV2r63n2kBTFh8cRI2uR9LQHsXG1zSDqfhXkIlDzrTcIlbB5+5aaYEkl8vOPIOPLf8VT7Ere1wWTMdw==", "dependencies": { "@types/mdast": "^3.0.0", - "mdast-util-to-string": "^1.0.0", - "micromark": "~2.10.0", - "parse-entities": "^2.0.0" + "mdast-util-to-string": "^2.0.0", + "micromark": "~2.11.0", + "parse-entities": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" }, "funding": { "type": "opencollective", @@ -748,14 +1013,15 @@ } }, "node_modules/mdast-util-gfm": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-0.1.0.tgz", - "integrity": "sha512-HLfygQL6HdhJhFbLta4Ki9hClrzyAxRjyRvpm5caN65QZL+NyHPmqFlnF9vm1Rn58JT2+AbLwNcEDY4MEvkk8Q==", + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-0.1.1.tgz", + "integrity": "sha512-oE1W1zSXU2L2LHg91V22HC3Z1fbsOZTBYUQq+kpM29f9297TbRm0C1l3bQ88RREl0WaUQaB49G7trvwy5utUKQ==", "dependencies": { "mdast-util-gfm-autolink-literal": "^0.1.0", "mdast-util-gfm-strikethrough": "^0.2.0", "mdast-util-gfm-table": "^0.1.0", - "mdast-util-gfm-task-list-item": "^0.1.0" + "mdast-util-gfm-task-list-item": "^0.1.0", + "mdast-util-to-markdown": "^0.6.1" }, "funding": { "type": "opencollective", @@ -763,20 +1029,20 @@ } }, "node_modules/mdast-util-gfm-autolink-literal": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-0.1.1.tgz", - "integrity": "sha512-gJ2xSpqKCetSr22GEWpZH3f5ffb4pPn/72m4piY0v7T/S+O7n7rw+sfoPLhb2b4O7WdnERoYdALRcmD68FMtlw==", + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-0.1.2.tgz", + "integrity": "sha512-WFeIrcNNsfBety0gyWuiBIPing9UkVcl/m2iZOyW1uHEH2evjFocet2h77M24ub0WyZ4ucnQn/jWhO5Ozl6j4g==", "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/mdast-util-gfm-strikethrough": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-0.2.2.tgz", - "integrity": "sha512-T37ZbaokJcRbHROXmoVAieWnesPD5N21tv2ifYzaGRLbkh1gknItUGhZzHefUn5Zc/eaO/iTDSAFOBrn/E8kWw==", + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-0.2.3.tgz", + "integrity": "sha512-5OQLXpt6qdbttcDG/UxYY7Yjj3e8P7X16LzvpX8pIQPYJ/C2Z1qFGMmcw+1PZMUM3Z8wt8NRfYTvCni93mgsgA==", "dependencies": { - "mdast-util-to-markdown": "^0.5.0" + "mdast-util-to-markdown": "^0.6.0" }, "funding": { "type": "opencollective", @@ -784,12 +1050,12 @@ } }, "node_modules/mdast-util-gfm-table": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-0.1.4.tgz", - "integrity": "sha512-T4xFSON9kUb/IpYA5N+KGWcsdGczAvILvKiXQwUGind6V9fvjPCR9yhZnIeaLdBWXaz3m/Gq77ZtuLMjtFR4IQ==", + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-0.1.6.tgz", + "integrity": "sha512-j4yDxQ66AJSBwGkbpFEp9uG/LS1tZV3P33fN1gkyRB2LoRL+RR3f76m0HPHaby6F4Z5xr9Fv1URmATlRRUIpRQ==", "dependencies": { "markdown-table": "^2.0.0", - "mdast-util-to-markdown": "^0.5.0" + "mdast-util-to-markdown": "~0.6.0" }, "funding": { "type": "opencollective", @@ -797,11 +1063,11 @@ } }, "node_modules/mdast-util-gfm-task-list-item": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-0.1.4.tgz", - "integrity": "sha512-AMiHyBHvaYN2p3ztFv7gDgTF7keZDaA9plTixRXWT0aqL0QdN43QaG5+hzcRNbjCsEWBxWhpcNk1Diq0TiIEvw==", + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-0.1.6.tgz", + "integrity": "sha512-/d51FFIfPsSmCIRNp7E6pozM9z1GYPIkSy1urQ8s/o4TC22BZ7DqfHFWiqBD23bc7J3vV1Fc9O4QIHBlfuit8A==", "dependencies": { - "mdast-util-to-markdown": "^0.5.0" + "mdast-util-to-markdown": "~0.6.0" }, "funding": { "type": "opencollective", @@ -818,13 +1084,13 @@ } }, "node_modules/mdast-util-to-markdown": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.5.3.tgz", - "integrity": "sha512-sr8q7fQJ1xoCqZSXW6dO/MYu2Md+a4Hfk9uO+XHCfiBhVM0EgWtfAV7BuN+ff6otUeu2xDyt1o7vhZGwOG3+BA==", + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.2.tgz", + "integrity": "sha512-iRczns6WMvu0hUw02LXsPDJshBIwtUPbvHBWo19IQeU0YqmzlA8Pd30U8V7uiI0VPkxzS7A/NXBXH6u+HS87Zg==", "dependencies": { "@types/unist": "^2.0.0", "longest-streak": "^2.0.0", - "mdast-util-to-string": "^1.0.0", + "mdast-util-to-string": "^2.0.0", "parse-entities": "^2.0.0", "repeat-string": "^1.0.0", "zwitch": "^1.0.0" @@ -835,14 +1101,18 @@ } }, "node_modules/mdast-util-to-string": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz", - "integrity": "sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A==" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", + "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, "node_modules/micromark": { - "version": "2.10.1", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.10.1.tgz", - "integrity": "sha512-fUuVF8sC1X7wsCS29SYQ2ZfIZYbTymp0EYr6sab3idFjigFFjGa5UwoniPlV9tAgntjuapW1t9U+S0yDYeGKHQ==", + "version": "2.11.2", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.2.tgz", + "integrity": "sha512-IXuP76p2uj8uMg4FQc1cRE7lPCLsfAXuEfdjtdO55VRiFO1asrCSQ5g43NmPqFtRwzEnEhafRVzn2jg0UiKArQ==", "funding": [ { "type": "GitHub Sponsors", @@ -859,11 +1129,11 @@ } }, "node_modules/micromark-extension-gfm": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-0.3.1.tgz", - "integrity": "sha512-lJlhcOqzoJdjQg+LMumVHdUQ61LjtqGdmZtrAdfvatRUnJTqZlRwXXHdLQgNDYlFw4mycZ4NSTKlya5QcQXl1A==", + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-0.3.2.tgz", + "integrity": "sha512-ToQEpLkRgg7Tp8D3GM/SjZFPV0cCwWNxZmoEVIOQivOswRtPg7gg2WlCrtHhUWFNX+DgDjbq0iLOPGp4Y15oug==", "dependencies": { - "micromark": "~2.10.0", + "micromark": "~2.11.0", "micromark-extension-gfm-autolink-literal": "~0.5.0", "micromark-extension-gfm-strikethrough": "~0.6.0", "micromark-extension-gfm-table": "~0.4.0", @@ -876,11 +1146,11 @@ } }, "node_modules/micromark-extension-gfm-autolink-literal": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-0.5.1.tgz", - "integrity": "sha512-j30923tDp0faCNDjwqe4cMi+slegbGfc3VEAExEU8d54Q/F6pR6YxCVH+6xV0ItRoj3lCn1XkUWcy6FC3S9BOw==", + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-0.5.4.tgz", + "integrity": "sha512-471VKd4k3SiX7vx9fC+IYeGQL0RnxwBBXeEc5WConb7naJDG5m16guA+VoFzyXchrvmU08t0dUWWPZ0mkJSXVw==", "dependencies": { - "micromark": "~2.10.0" + "micromark": "~2.11.0" }, "funding": { "type": "opencollective", @@ -888,11 +1158,11 @@ } }, "node_modules/micromark-extension-gfm-strikethrough": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-0.6.2.tgz", - "integrity": "sha512-aehEEqtTn3JekJNwZZxa7ZJVfzmuaWp4ew6x6sl3VAKIwdDZdqYeYSQIrNKwNgH7hX0g56fAwnSDLusJggjlCQ==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-0.6.3.tgz", + "integrity": "sha512-MKMoP9x2dsr1aeX46ibBwVf4Q6nJsi5aaUFTOMOID5VOLSxwl4CrqUV4OGFQd6AqhtzBJAxaV+N2trlTBtZDNQ==", "dependencies": { - "micromark": "~2.10.0" + "micromark": "~2.11.0" }, "funding": { "type": "opencollective", @@ -900,11 +1170,11 @@ } }, "node_modules/micromark-extension-gfm-table": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-0.4.1.tgz", - "integrity": "sha512-xVpqOnfFaa2OtC/Y7rlt4tdVFlUHdoLH3RXAZgb/KP3DDyKsAOx6BRS3UxiiyvmD/p2l6VUpD4bMIniuP4o4JA==", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-0.4.2.tgz", + "integrity": "sha512-AAzmj85XO1ydHYX0Lz52HGhcH2sZLm2AVvkwzELXWgZF6vGdq5yZ3CTByFRsqNUPyQBSIYFKLDAtc6KlnO42aw==", "dependencies": { - "micromark": "~2.10.0" + "micromark": "~2.11.0" }, "funding": { "type": "opencollective", @@ -921,9 +1191,12 @@ } }, "node_modules/micromark-extension-gfm-task-list-item": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-0.3.1.tgz", - "integrity": "sha512-3ZiolwyLEF+t2KvGqKdBNEybiacQCsBgDx4PRZz/dttwo0PkcVKh7jpxc6UdHQuNMJ/YRUNuCSal0WuoAlefAA==", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-0.3.3.tgz", + "integrity": "sha512-0zvM5iSLKrc/NQl84pZSjGo66aTGd57C1idmlWmE87lkMcXrTxg1uXa/nXomxJytoje9trP0NDLvw4bZ/Z/XCQ==", + "dependencies": { + "micromark": "~2.11.0" + }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" @@ -935,6 +1208,9 @@ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dependencies": { "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" } }, "node_modules/minimist": { @@ -950,7 +1226,10 @@ "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } }, "node_modules/once": { "version": "1.4.0", @@ -966,6 +1245,12 @@ "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dependencies": { "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-locate": { @@ -974,12 +1259,18 @@ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "dependencies": { "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" } }, "node_modules/p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "engines": { + "node": ">=6" + } }, "node_modules/parse-entities": { "version": "2.0.0", @@ -1007,17 +1298,29 @@ "error-ex": "^1.3.1", "json-parse-even-better-errors": "^2.3.0", "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "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": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "engines": { + "node": ">=0.10.0" + } }, "node_modules/path-parse": { "version": "1.0.6", @@ -1028,7 +1331,13 @@ "node_modules/picomatch": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==" + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } }, "node_modules/pluralize": { "version": "8.0.0", @@ -1046,6 +1355,9 @@ "inherits": "^2.0.3", "string_decoder": "^1.1.1", "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" } }, "node_modules/readdirp": { @@ -1054,6 +1366,9 @@ "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", "dependencies": { "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" } }, "node_modules/rechoir": { @@ -1096,11 +1411,15 @@ } }, "node_modules/remark-lint": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/remark-lint/-/remark-lint-7.0.1.tgz", - "integrity": "sha512-caZXo3qhuBxzvq9JSJFVQ/ERDq/6TJVgWn0KDwKOIJCGOuLXfQhby5XttUq+Rn7kLbNMtvwfWHJlte14LpaeXQ==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/remark-lint/-/remark-lint-8.0.0.tgz", + "integrity": "sha512-ESI8qJQ/TIRjABDnqoFsTiZntu+FRifZ5fJ77yX63eIDijl/arvmDvT+tAf75/Nm5BFL4R2JFUtkHRGVjzYUsg==", "dependencies": { "remark-message-control": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, "node_modules/remark-lint-blockquote-indentation": { @@ -1120,6 +1439,15 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/remark-lint-blockquote-indentation/node_modules/mdast-util-to-string": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz", + "integrity": "sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/remark-lint-checkbox-character-style": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/remark-lint-checkbox-character-style/-/remark-lint-checkbox-character-style-3.0.0.tgz", @@ -1356,6 +1684,15 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/remark-lint-no-auto-link-without-protocol/node_modules/mdast-util-to-string": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz", + "integrity": "sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/remark-lint-no-blockquote-without-marker": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/remark-lint-no-blockquote-without-marker/-/remark-lint-no-blockquote-without-marker-4.0.0.tgz", @@ -1488,6 +1825,15 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/remark-lint-no-inline-padding/node_modules/mdast-util-to-string": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz", + "integrity": "sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/remark-lint-no-literal-urls": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/remark-lint-no-literal-urls/-/remark-lint-no-literal-urls-2.0.1.tgz", @@ -1504,6 +1850,15 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/remark-lint-no-literal-urls/node_modules/mdast-util-to-string": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz", + "integrity": "sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/remark-lint-no-multiple-toplevel-headings": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/remark-lint-no-multiple-toplevel-headings/-/remark-lint-no-multiple-toplevel-headings-2.0.1.tgz", @@ -1738,6 +2093,10 @@ "dependencies": { "mdast-comment-marker": "^1.0.0", "unified-message-control": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, "node_modules/remark-parse": { @@ -1756,7 +2115,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/remark-preset-lint-node/-/remark-preset-lint-node-2.0.0.tgz", "integrity": "sha512-gjJlRK+ed3rW/k+YFENGyDDfzMS2iUyuo+MQR3pQWUl7L6Yawg6OYGKjO9eVBN/1jaourq0N515O1nXq64Qm1Q==", - "license": "MIT", "dependencies": { "js-yaml": "^3.14.0", "remark-lint": "^8.0.0", @@ -1793,18 +2151,6 @@ "semver": "^7.3.2" } }, - "node_modules/remark-preset-lint-node/node_modules/remark-lint": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/remark-lint/-/remark-lint-8.0.0.tgz", - "integrity": "sha512-ESI8qJQ/TIRjABDnqoFsTiZntu+FRifZ5fJ77yX63eIDijl/arvmDvT+tAf75/Nm5BFL4R2JFUtkHRGVjzYUsg==", - "dependencies": { - "remark-message-control": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/remark-preset-lint-recommended": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/remark-preset-lint-recommended/-/remark-preset-lint-recommended-5.0.0.tgz", @@ -1832,24 +2178,12 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-preset-lint-recommended/node_modules/remark-lint": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/remark-lint/-/remark-lint-8.0.0.tgz", - "integrity": "sha512-ESI8qJQ/TIRjABDnqoFsTiZntu+FRifZ5fJ77yX63eIDijl/arvmDvT+tAf75/Nm5BFL4R2JFUtkHRGVjzYUsg==", - "dependencies": { - "remark-message-control": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/remark-stringify": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-9.0.0.tgz", - "integrity": "sha512-8x29DpTbVzEc6Dwb90qhxCtbZ6hmj3BxWWDpMhA+1WM4dOEGH5U5/GFe3Be5Hns5MvPSFAr1e2KSVtKZkK5nUw==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-9.0.1.tgz", + "integrity": "sha512-mWmNg3ZtESvZS8fv5PTvaPckdL4iNlCHTt8/e/8oN08nArHRHjNZMKzA/YW3+p7/lYqIw4nx1XsjCBo/AxNChg==", "dependencies": { - "mdast-util-to-markdown": "^0.5.0" + "mdast-util-to-markdown": "^0.6.0" }, "funding": { "type": "opencollective", @@ -1859,31 +2193,36 @@ "node_modules/repeat-string": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" - }, - "node_modules/replace-ext": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", - "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=" + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "engines": { + "node": ">=0.10" + } }, "node_modules/resolve": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", - "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", + "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", "dev": true, "dependencies": { + "is-core-module": "^2.1.0", "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/resolve-from": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==" + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "engines": { + "node": ">=8" + } }, "node_modules/rollup": { - "version": "2.32.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.32.1.tgz", - "integrity": "sha512-Op2vWTpvK7t6/Qnm1TTh7VjEZZkN8RWgf0DHbkKzQBwNf748YhXbozHVefqpPp/Fuyk/PQPAnYsBxAEtlMvpUw==", + "version": "2.36.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.36.1.tgz", + "integrity": "sha512-eAfqho8dyzuVvrGqpR0ITgEdq0zG2QJeWYh+HeuTbpcaXk8vNFc48B7bJa1xYosTCKx0CuW+447oQOW8HgBIZQ==", "dev": true, "dependencies": { "fsevents": "~2.1.2" @@ -1901,12 +2240,29 @@ "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, "node_modules/semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "dependencies": { + "lru-cache": "^6.0.0" + }, "bin": { "semver": "bin/semver.js" }, @@ -1979,6 +2335,9 @@ "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" } }, "node_modules/strip-ansi": { @@ -1987,6 +2346,9 @@ "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "dependencies": { "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" } }, "node_modules/supports-color": { @@ -1995,6 +2357,9 @@ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dependencies": { "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, "node_modules/text-table": { @@ -2008,6 +2373,9 @@ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dependencies": { "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" } }, "node_modules/to-vfile": { @@ -2017,12 +2385,20 @@ "dependencies": { "is-buffer": "^2.0.0", "vfile": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, "node_modules/trough": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz", - "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==" + "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } }, "node_modules/typedarray": { "version": "0.0.6", @@ -2059,6 +2435,10 @@ "minimist": "^1.2.0", "text-table": "^0.2.0", "unified-engine": "^8.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, "node_modules/unified-engine": { @@ -2083,6 +2463,10 @@ "unist-util-inspect": "^5.0.0", "vfile-reporter": "^6.0.0", "vfile-statistics": "^1.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, "node_modules/unified-lint-rule": { @@ -2098,12 +2482,16 @@ } }, "node_modules/unified-message-control": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/unified-message-control/-/unified-message-control-3.0.1.tgz", - "integrity": "sha512-K2Kvvp1DBzeuxYLLsumZh/gDWUTl4e2z/P3VReFirC78cfHKtQifbhnfRrSBtKtd1Uc6cvYTW0/SZIUaMAEcTg==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/unified-message-control/-/unified-message-control-3.0.2.tgz", + "integrity": "sha512-lhF8fKjDo2cIPx1re5X1QinqUonl+AN6F0XfEaab8w/hjqX7FZAhzu4P8g6pmYp09ld+HSWFwdRJj+Y8xD0q7Q==", "dependencies": { "unist-util-visit": "^2.0.0", "vfile-location": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, "node_modules/unist-util-generated": { @@ -2121,12 +2509,20 @@ "integrity": "sha512-fPNWewS593JSmg49HbnE86BJKuBi1/nMWhDSccBvbARfxezEuJV85EaARR9/VplveiwCoLm2kWq+DhP8TBaDpw==", "dependencies": { "is-empty": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, "node_modules/unist-util-is": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.0.2.tgz", - "integrity": "sha512-Ofx8uf6haexJwI1gxWMGg6I/dLnF2yE+KibhD3/diOqY2TinLcqHXCV6OI5gFVn3xQqDH+u0M625pfKwIwgBKQ==" + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.0.4.tgz", + "integrity": "sha512-3dF39j/u423v4BBQrk1AQ2Ve1FxY5W3JKwXxVFzBODQ6WEvccguhgp802qQLKSnxPODE6WuRZtV+ohlUg4meBA==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, "node_modules/unist-util-position": { "version": "3.1.0", @@ -2143,6 +2539,10 @@ "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", "dependencies": { "@types/unist": "^2.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, "node_modules/unist-util-visit": { @@ -2153,15 +2553,23 @@ "@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.0", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.0.tgz", - "integrity": "sha512-0g4wbluTF93npyPrp/ymd3tCDTMnP0yo2akFD2FIBAYXq/Sga3lwaU1D8OYKbtpioaI6CkDcQ6fsMnmtzt7htw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", + "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", "dependencies": { "@types/unist": "^2.0.0", "unist-util-is": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, "node_modules/util-deprecate": { @@ -2170,21 +2578,28 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, "node_modules/vfile": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.0.tgz", - "integrity": "sha512-a/alcwCvtuc8OX92rqqo7PflxiCgXRFjdyoGVuYV+qbgCb0GgZJRvIgCD4+U/Kl1yhaRsaTwksF88xbPyGsgpw==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", + "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", "dependencies": { "@types/unist": "^2.0.0", "is-buffer": "^2.0.0", - "replace-ext": "1.0.0", "unist-util-stringify-position": "^2.0.0", "vfile-message": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, "node_modules/vfile-location": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-3.1.0.tgz", - "integrity": "sha512-FCZ4AN9xMcjFIG1oGmZKo61PjwJHRVA+0/tPUP2ul4uIwjGGndIxavEMRpWn5p4xwm/ZsdXp9YNygf1ZyE4x8g==" + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-3.2.0.tgz", + "integrity": "sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, "node_modules/vfile-message": { "version": "2.0.4", @@ -2193,12 +2608,16 @@ "dependencies": { "@types/unist": "^2.0.0", "unist-util-stringify-position": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, "node_modules/vfile-reporter": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/vfile-reporter/-/vfile-reporter-6.0.1.tgz", - "integrity": "sha512-0OppK9mo8G2XUpv+hIKLVSDsoxJrXnOy73+vIm0jQUOUFYRduqpFHX+QqAQfvRHyX9B0UFiRuNJnBOjQCIsw1g==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/vfile-reporter/-/vfile-reporter-6.0.2.tgz", + "integrity": "sha512-GN2bH2gs4eLnw/4jPSgfBjo+XCuvnX9elHICJZjVD4+NM0nsUrMTvdjGY5Sc/XG69XVTgLwj7hknQVc6M9FukA==", "dependencies": { "repeat-string": "^1.5.0", "string-width": "^4.0.0", @@ -2206,12 +2625,19 @@ "unist-util-stringify-position": "^2.0.0", "vfile-sort": "^2.1.2", "vfile-statistics": "^1.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, "node_modules/vfile-reporter/node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "engines": { + "node": ">=4" + } }, "node_modules/vfile-reporter/node_modules/supports-color": { "version": "6.1.0", @@ -2219,17 +2645,28 @@ "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", "dependencies": { "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" } }, "node_modules/vfile-sort": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/vfile-sort/-/vfile-sort-2.2.2.tgz", - "integrity": "sha512-tAyUqD2R1l/7Rn7ixdGkhXLD3zsg+XLAeUDUhXearjfIcpL1Hcsj5hHpCoy/gvfK/Ws61+e972fm0F7up7hfYA==" + "integrity": "sha512-tAyUqD2R1l/7Rn7ixdGkhXLD3zsg+XLAeUDUhXearjfIcpL1Hcsj5hHpCoy/gvfK/Ws61+e972fm0F7up7hfYA==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, "node_modules/vfile-statistics": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/vfile-statistics/-/vfile-statistics-1.1.4.tgz", - "integrity": "sha512-lXhElVO0Rq3frgPvFBwahmed3X03vjPF8OcjKMy8+F1xU/3Q3QU3tKEDp743SFtb74PdF0UWpxPvtOP0GCLheA==" + "integrity": "sha512-lXhElVO0Rq3frgPvFBwahmed3X03vjPF8OcjKMy8+F1xU/3Q3QU3tKEDp743SFtb74PdF0UWpxPvtOP0GCLheA==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, "node_modules/wrapped": { "version": "1.0.1", @@ -2245,6 +2682,11 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, "node_modules/zwitch": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", @@ -2257,17 +2699,17 @@ }, "dependencies": { "@babel/code-frame": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", - "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", "requires": { "@babel/highlight": "^7.10.4" } }, "@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==" + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==" }, "@babel/highlight": { "version": "7.10.4", @@ -2331,18 +2773,18 @@ } }, "@rollup/plugin-commonjs": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-11.1.0.tgz", - "integrity": "sha512-Ycr12N3ZPN96Fw2STurD21jMqzKwL9QuFhms3SD7KKRK7oaXUsBU9Zt0jL/rOPHiPYisI21/rXGO3jr9BnLHUA==", + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-17.0.0.tgz", + "integrity": "sha512-/omBIJG1nHQc+bgkYDuLpb/V08QyutP9amOrJRUSlYJZP+b/68gM//D8sxJe3Yry2QnYIr3QjR3x4AlxJEN3GA==", "dev": true, "requires": { - "@rollup/pluginutils": "^3.0.8", + "@rollup/pluginutils": "^3.1.0", "commondir": "^1.0.1", - "estree-walker": "^1.0.1", - "glob": "^7.1.2", - "is-reference": "^1.1.2", - "magic-string": "^0.25.2", - "resolve": "^1.11.0" + "estree-walker": "^2.0.1", + "glob": "^7.1.6", + "is-reference": "^1.2.1", + "magic-string": "^0.25.7", + "resolve": "^1.17.0" } }, "@rollup/plugin-json": { @@ -2355,16 +2797,17 @@ } }, "@rollup/plugin-node-resolve": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-7.1.3.tgz", - "integrity": "sha512-RxtSL3XmdTAE2byxekYLnx+98kEUOrPHF/KRVjLH+DEIHy6kjIw7YINQzn+NXiH/NTrQLAwYs0GWB+csWygA9Q==", + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.0.1.tgz", + "integrity": "sha512-ltlsj/4Bhwwhb+Nb5xCz/6vieuEj2/BAkkqVIKmZwC7pIdl8srmgmglE4S0jFlZa32K4qvdQ6NHdmpRKD/LwoQ==", "dev": true, "requires": { - "@rollup/pluginutils": "^3.0.8", - "@types/resolve": "0.0.8", + "@rollup/pluginutils": "^3.1.0", + "@types/resolve": "1.17.1", "builtin-modules": "^3.1.0", + "deepmerge": "^4.2.2", "is-module": "^1.0.0", - "resolve": "^1.14.2" + "resolve": "^1.19.0" } }, "@rollup/pluginutils": { @@ -2376,6 +2819,14 @@ "@types/estree": "0.0.39", "estree-walker": "^1.0.1", "picomatch": "^2.2.2" + }, + "dependencies": { + "estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + } } }, "@types/estree": { @@ -2393,15 +2844,15 @@ } }, "@types/node": { - "version": "14.11.8", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.11.8.tgz", - "integrity": "sha512-KPcKqKm5UKDkaYPTuXSx8wEP7vE9GnuaXIZKijwRYcePpZFDVuy2a57LarFKiORbHOuTOOwYzxVxcUzsh2P2Pw==", + "version": "14.14.20", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.20.tgz", + "integrity": "sha512-Y93R97Ouif9JEOWPIUyU+eyIdyRqQR0I8Ez1dzku4hDx34NWh4HbtIc3WNzwB1Y9ULvNGeu5B8h8bVL5cAk4/A==", "dev": true }, "@types/resolve": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz", - "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", + "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", "dev": true, "requires": { "@types/node": "*" @@ -2480,9 +2931,9 @@ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" }, "builtin-modules": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.1.0.tgz", - "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", + "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", "dev": true }, "camelcase": { @@ -2515,18 +2966,26 @@ "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==" }, "chokidar": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.3.tgz", - "integrity": "sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.0.tgz", + "integrity": "sha512-JgQM9JS92ZbFR4P90EvmzNpSGhpPBGBSj10PILeDyYFwp4h2/D9OM03wsJ4zW1fEp4ka2DGrnUeD7FuvQ2aZ2Q==", "requires": { "anymatch": "~3.1.1", "braces": "~3.0.2", - "fsevents": "~2.1.2", + "fsevents": "~2.3.1", "glob-parent": "~5.1.0", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", "readdirp": "~3.5.0" + }, + "dependencies": { + "fsevents": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.1.tgz", + "integrity": "sha512-YR47Eg4hChJGAB1O3yEAOkGO+rlzutoICGqGo9EZ4lKWokzZRSyIW1QmTzqjtw8MJdj9srP869CuWw/hyzSiBw==", + "optional": true + } } }, "co": { @@ -2575,13 +3034,19 @@ } }, "debug": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", - "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "requires": { "ms": "2.1.2" } }, + "deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true + }, "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -2606,9 +3071,9 @@ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" }, "estree-walker": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", - "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", "dev": true }, "extend": { @@ -2674,8 +3139,15 @@ "version": "2.1.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "dev": true, "optional": true }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, "glob": { "version": "7.1.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", @@ -2697,6 +3169,15 @@ "is-glob": "^4.0.1" } }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -2722,9 +3203,9 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "ini": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.7.tgz", - "integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==" + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" }, "interpret": { "version": "1.4.0", @@ -2760,9 +3241,18 @@ } }, "is-buffer": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", - "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==" + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==" + }, + "is-core-module": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", + "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } }, "is-decimal": { "version": "1.0.4", @@ -2828,9 +3318,9 @@ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "js-yaml": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", - "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "requires": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -2887,6 +3377,14 @@ "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz", "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==" }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "requires": { + "yallist": "^4.0.0" + } + }, "magic-string": { "version": "0.25.7", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", @@ -2915,55 +3413,57 @@ "integrity": "sha512-vTFXtmbbF3rgnTh3Zl3irso4LtvwUq/jaDvT2D1JqTGAwaipcS7RpTxzi6KjoRqI9n2yuAhzLDAC8xVTF3XYVQ==" }, "mdast-util-from-markdown": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.1.tgz", - "integrity": "sha512-qJXNcFcuCSPqUF0Tb0uYcFDIq67qwB3sxo9RPdf9vG8T90ViKnksFqdB/Coq2a7sTnxL/Ify2y7aIQXDkQFH0w==", + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.4.tgz", + "integrity": "sha512-jj891B5pV2r63n2kBTFh8cRI2uR9LQHsXG1zSDqfhXkIlDzrTcIlbB5+5aaYEkl8vOPIOPLf8VT7Ere1wWTMdw==", "requires": { "@types/mdast": "^3.0.0", - "mdast-util-to-string": "^1.0.0", - "micromark": "~2.10.0", - "parse-entities": "^2.0.0" + "mdast-util-to-string": "^2.0.0", + "micromark": "~2.11.0", + "parse-entities": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" } }, "mdast-util-gfm": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-0.1.0.tgz", - "integrity": "sha512-HLfygQL6HdhJhFbLta4Ki9hClrzyAxRjyRvpm5caN65QZL+NyHPmqFlnF9vm1Rn58JT2+AbLwNcEDY4MEvkk8Q==", + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-0.1.1.tgz", + "integrity": "sha512-oE1W1zSXU2L2LHg91V22HC3Z1fbsOZTBYUQq+kpM29f9297TbRm0C1l3bQ88RREl0WaUQaB49G7trvwy5utUKQ==", "requires": { "mdast-util-gfm-autolink-literal": "^0.1.0", "mdast-util-gfm-strikethrough": "^0.2.0", "mdast-util-gfm-table": "^0.1.0", - "mdast-util-gfm-task-list-item": "^0.1.0" + "mdast-util-gfm-task-list-item": "^0.1.0", + "mdast-util-to-markdown": "^0.6.1" } }, "mdast-util-gfm-autolink-literal": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-0.1.1.tgz", - "integrity": "sha512-gJ2xSpqKCetSr22GEWpZH3f5ffb4pPn/72m4piY0v7T/S+O7n7rw+sfoPLhb2b4O7WdnERoYdALRcmD68FMtlw==" + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-0.1.2.tgz", + "integrity": "sha512-WFeIrcNNsfBety0gyWuiBIPing9UkVcl/m2iZOyW1uHEH2evjFocet2h77M24ub0WyZ4ucnQn/jWhO5Ozl6j4g==" }, "mdast-util-gfm-strikethrough": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-0.2.2.tgz", - "integrity": "sha512-T37ZbaokJcRbHROXmoVAieWnesPD5N21tv2ifYzaGRLbkh1gknItUGhZzHefUn5Zc/eaO/iTDSAFOBrn/E8kWw==", + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-0.2.3.tgz", + "integrity": "sha512-5OQLXpt6qdbttcDG/UxYY7Yjj3e8P7X16LzvpX8pIQPYJ/C2Z1qFGMmcw+1PZMUM3Z8wt8NRfYTvCni93mgsgA==", "requires": { - "mdast-util-to-markdown": "^0.5.0" + "mdast-util-to-markdown": "^0.6.0" } }, "mdast-util-gfm-table": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-0.1.4.tgz", - "integrity": "sha512-T4xFSON9kUb/IpYA5N+KGWcsdGczAvILvKiXQwUGind6V9fvjPCR9yhZnIeaLdBWXaz3m/Gq77ZtuLMjtFR4IQ==", + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-0.1.6.tgz", + "integrity": "sha512-j4yDxQ66AJSBwGkbpFEp9uG/LS1tZV3P33fN1gkyRB2LoRL+RR3f76m0HPHaby6F4Z5xr9Fv1URmATlRRUIpRQ==", "requires": { "markdown-table": "^2.0.0", - "mdast-util-to-markdown": "^0.5.0" + "mdast-util-to-markdown": "~0.6.0" } }, "mdast-util-gfm-task-list-item": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-0.1.4.tgz", - "integrity": "sha512-AMiHyBHvaYN2p3ztFv7gDgTF7keZDaA9plTixRXWT0aqL0QdN43QaG5+hzcRNbjCsEWBxWhpcNk1Diq0TiIEvw==", + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-0.1.6.tgz", + "integrity": "sha512-/d51FFIfPsSmCIRNp7E6pozM9z1GYPIkSy1urQ8s/o4TC22BZ7DqfHFWiqBD23bc7J3vV1Fc9O4QIHBlfuit8A==", "requires": { - "mdast-util-to-markdown": "^0.5.0" + "mdast-util-to-markdown": "~0.6.0" } }, "mdast-util-heading-style": { @@ -2972,38 +3472,38 @@ "integrity": "sha512-8ZuuegRqS0KESgjAGW8zTx4tJ3VNIiIaGFNEzFpRSAQBavVc7AvOo9I4g3crcZBfYisHs4seYh0rAVimO6HyOw==" }, "mdast-util-to-markdown": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.5.3.tgz", - "integrity": "sha512-sr8q7fQJ1xoCqZSXW6dO/MYu2Md+a4Hfk9uO+XHCfiBhVM0EgWtfAV7BuN+ff6otUeu2xDyt1o7vhZGwOG3+BA==", + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.2.tgz", + "integrity": "sha512-iRczns6WMvu0hUw02LXsPDJshBIwtUPbvHBWo19IQeU0YqmzlA8Pd30U8V7uiI0VPkxzS7A/NXBXH6u+HS87Zg==", "requires": { "@types/unist": "^2.0.0", "longest-streak": "^2.0.0", - "mdast-util-to-string": "^1.0.0", + "mdast-util-to-string": "^2.0.0", "parse-entities": "^2.0.0", "repeat-string": "^1.0.0", "zwitch": "^1.0.0" } }, "mdast-util-to-string": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz", - "integrity": "sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A==" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", + "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==" }, "micromark": { - "version": "2.10.1", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.10.1.tgz", - "integrity": "sha512-fUuVF8sC1X7wsCS29SYQ2ZfIZYbTymp0EYr6sab3idFjigFFjGa5UwoniPlV9tAgntjuapW1t9U+S0yDYeGKHQ==", + "version": "2.11.2", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.2.tgz", + "integrity": "sha512-IXuP76p2uj8uMg4FQc1cRE7lPCLsfAXuEfdjtdO55VRiFO1asrCSQ5g43NmPqFtRwzEnEhafRVzn2jg0UiKArQ==", "requires": { "debug": "^4.0.0", "parse-entities": "^2.0.0" } }, "micromark-extension-gfm": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-0.3.1.tgz", - "integrity": "sha512-lJlhcOqzoJdjQg+LMumVHdUQ61LjtqGdmZtrAdfvatRUnJTqZlRwXXHdLQgNDYlFw4mycZ4NSTKlya5QcQXl1A==", + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-0.3.2.tgz", + "integrity": "sha512-ToQEpLkRgg7Tp8D3GM/SjZFPV0cCwWNxZmoEVIOQivOswRtPg7gg2WlCrtHhUWFNX+DgDjbq0iLOPGp4Y15oug==", "requires": { - "micromark": "~2.10.0", + "micromark": "~2.11.0", "micromark-extension-gfm-autolink-literal": "~0.5.0", "micromark-extension-gfm-strikethrough": "~0.6.0", "micromark-extension-gfm-table": "~0.4.0", @@ -3012,27 +3512,27 @@ } }, "micromark-extension-gfm-autolink-literal": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-0.5.1.tgz", - "integrity": "sha512-j30923tDp0faCNDjwqe4cMi+slegbGfc3VEAExEU8d54Q/F6pR6YxCVH+6xV0ItRoj3lCn1XkUWcy6FC3S9BOw==", + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-0.5.4.tgz", + "integrity": "sha512-471VKd4k3SiX7vx9fC+IYeGQL0RnxwBBXeEc5WConb7naJDG5m16guA+VoFzyXchrvmU08t0dUWWPZ0mkJSXVw==", "requires": { - "micromark": "~2.10.0" + "micromark": "~2.11.0" } }, "micromark-extension-gfm-strikethrough": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-0.6.2.tgz", - "integrity": "sha512-aehEEqtTn3JekJNwZZxa7ZJVfzmuaWp4ew6x6sl3VAKIwdDZdqYeYSQIrNKwNgH7hX0g56fAwnSDLusJggjlCQ==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-0.6.3.tgz", + "integrity": "sha512-MKMoP9x2dsr1aeX46ibBwVf4Q6nJsi5aaUFTOMOID5VOLSxwl4CrqUV4OGFQd6AqhtzBJAxaV+N2trlTBtZDNQ==", "requires": { - "micromark": "~2.10.0" + "micromark": "~2.11.0" } }, "micromark-extension-gfm-table": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-0.4.1.tgz", - "integrity": "sha512-xVpqOnfFaa2OtC/Y7rlt4tdVFlUHdoLH3RXAZgb/KP3DDyKsAOx6BRS3UxiiyvmD/p2l6VUpD4bMIniuP4o4JA==", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-0.4.2.tgz", + "integrity": "sha512-AAzmj85XO1ydHYX0Lz52HGhcH2sZLm2AVvkwzELXWgZF6vGdq5yZ3CTByFRsqNUPyQBSIYFKLDAtc6KlnO42aw==", "requires": { - "micromark": "~2.10.0" + "micromark": "~2.11.0" } }, "micromark-extension-gfm-tagfilter": { @@ -3041,9 +3541,12 @@ "integrity": "sha512-9GU0xBatryXifL//FJH+tAZ6i240xQuFrSL7mYi8f4oZSbc+NvXjkrHemeYP0+L4ZUT+Ptz3b95zhUZnMtoi/Q==" }, "micromark-extension-gfm-task-list-item": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-0.3.1.tgz", - "integrity": "sha512-3ZiolwyLEF+t2KvGqKdBNEybiacQCsBgDx4PRZz/dttwo0PkcVKh7jpxc6UdHQuNMJ/YRUNuCSal0WuoAlefAA==" + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-0.3.3.tgz", + "integrity": "sha512-0zvM5iSLKrc/NQl84pZSjGo66aTGd57C1idmlWmE87lkMcXrTxg1uXa/nXomxJytoje9trP0NDLvw4bZ/Z/XCQ==", + "requires": { + "micromark": "~2.11.0" + } }, "minimatch": { "version": "3.0.4", @@ -3194,9 +3697,9 @@ } }, "remark-lint": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/remark-lint/-/remark-lint-7.0.1.tgz", - "integrity": "sha512-caZXo3qhuBxzvq9JSJFVQ/ERDq/6TJVgWn0KDwKOIJCGOuLXfQhby5XttUq+Rn7kLbNMtvwfWHJlte14LpaeXQ==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/remark-lint/-/remark-lint-8.0.0.tgz", + "integrity": "sha512-ESI8qJQ/TIRjABDnqoFsTiZntu+FRifZ5fJ77yX63eIDijl/arvmDvT+tAf75/Nm5BFL4R2JFUtkHRGVjzYUsg==", "requires": { "remark-message-control": "^6.0.0" } @@ -3212,6 +3715,13 @@ "unist-util-generated": "^1.1.0", "unist-util-position": "^3.0.0", "unist-util-visit": "^2.0.0" + }, + "dependencies": { + "mdast-util-to-string": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz", + "integrity": "sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A==" + } } }, "remark-lint-checkbox-character-style": { @@ -3384,6 +3894,13 @@ "unist-util-generated": "^1.1.0", "unist-util-position": "^3.0.0", "unist-util-visit": "^2.0.0" + }, + "dependencies": { + "mdast-util-to-string": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz", + "integrity": "sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A==" + } } }, "remark-lint-no-blockquote-without-marker": { @@ -3480,6 +3997,13 @@ "unified-lint-rule": "^1.0.0", "unist-util-generated": "^1.1.0", "unist-util-visit": "^2.0.0" + }, + "dependencies": { + "mdast-util-to-string": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz", + "integrity": "sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A==" + } } }, "remark-lint-no-literal-urls": { @@ -3492,6 +4016,13 @@ "unist-util-generated": "^1.1.0", "unist-util-position": "^3.0.0", "unist-util-visit": "^2.0.0" + }, + "dependencies": { + "mdast-util-to-string": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz", + "integrity": "sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A==" + } } }, "remark-lint-no-multiple-toplevel-headings": { @@ -3720,16 +4251,6 @@ "remark-lint-unordered-list-marker-style": "^2.0.0", "remark-preset-lint-recommended": "^5.0.0", "semver": "^7.3.2" - }, - "dependencies": { - "remark-lint": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/remark-lint/-/remark-lint-8.0.0.tgz", - "integrity": "sha512-ESI8qJQ/TIRjABDnqoFsTiZntu+FRifZ5fJ77yX63eIDijl/arvmDvT+tAf75/Nm5BFL4R2JFUtkHRGVjzYUsg==", - "requires": { - "remark-message-control": "^6.0.0" - } - } } }, "remark-preset-lint-recommended": { @@ -3753,24 +4274,14 @@ "remark-lint-no-undefined-references": "^3.0.0", "remark-lint-no-unused-definitions": "^2.0.0", "remark-lint-ordered-list-marker-style": "^2.0.0" - }, - "dependencies": { - "remark-lint": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/remark-lint/-/remark-lint-8.0.0.tgz", - "integrity": "sha512-ESI8qJQ/TIRjABDnqoFsTiZntu+FRifZ5fJ77yX63eIDijl/arvmDvT+tAf75/Nm5BFL4R2JFUtkHRGVjzYUsg==", - "requires": { - "remark-message-control": "^6.0.0" - } - } } }, "remark-stringify": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-9.0.0.tgz", - "integrity": "sha512-8x29DpTbVzEc6Dwb90qhxCtbZ6hmj3BxWWDpMhA+1WM4dOEGH5U5/GFe3Be5Hns5MvPSFAr1e2KSVtKZkK5nUw==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-9.0.1.tgz", + "integrity": "sha512-mWmNg3ZtESvZS8fv5PTvaPckdL4iNlCHTt8/e/8oN08nArHRHjNZMKzA/YW3+p7/lYqIw4nx1XsjCBo/AxNChg==", "requires": { - "mdast-util-to-markdown": "^0.5.0" + "mdast-util-to-markdown": "^0.6.0" } }, "repeat-string": { @@ -3778,17 +4289,13 @@ "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" }, - "replace-ext": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", - "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=" - }, "resolve": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", - "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", + "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", "dev": true, "requires": { + "is-core-module": "^2.1.0", "path-parse": "^1.0.6" } }, @@ -3798,9 +4305,9 @@ "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==" }, "rollup": { - "version": "2.32.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.32.1.tgz", - "integrity": "sha512-Op2vWTpvK7t6/Qnm1TTh7VjEZZkN8RWgf0DHbkKzQBwNf748YhXbozHVefqpPp/Fuyk/PQPAnYsBxAEtlMvpUw==", + "version": "2.36.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.36.1.tgz", + "integrity": "sha512-eAfqho8dyzuVvrGqpR0ITgEdq0zG2QJeWYh+HeuTbpcaXk8vNFc48B7bJa1xYosTCKx0CuW+447oQOW8HgBIZQ==", "dev": true, "requires": { "fsevents": "~2.1.2" @@ -3812,9 +4319,12 @@ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" }, "semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==" + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "requires": { + "lru-cache": "^6.0.0" + } }, "shelljs": { "version": "0.8.4", @@ -3980,9 +4490,9 @@ } }, "unified-message-control": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/unified-message-control/-/unified-message-control-3.0.1.tgz", - "integrity": "sha512-K2Kvvp1DBzeuxYLLsumZh/gDWUTl4e2z/P3VReFirC78cfHKtQifbhnfRrSBtKtd1Uc6cvYTW0/SZIUaMAEcTg==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/unified-message-control/-/unified-message-control-3.0.2.tgz", + "integrity": "sha512-lhF8fKjDo2cIPx1re5X1QinqUonl+AN6F0XfEaab8w/hjqX7FZAhzu4P8g6pmYp09ld+HSWFwdRJj+Y8xD0q7Q==", "requires": { "unist-util-visit": "^2.0.0", "vfile-location": "^3.0.0" @@ -4002,9 +4512,9 @@ } }, "unist-util-is": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.0.2.tgz", - "integrity": "sha512-Ofx8uf6haexJwI1gxWMGg6I/dLnF2yE+KibhD3/diOqY2TinLcqHXCV6OI5gFVn3xQqDH+u0M625pfKwIwgBKQ==" + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.0.4.tgz", + "integrity": "sha512-3dF39j/u423v4BBQrk1AQ2Ve1FxY5W3JKwXxVFzBODQ6WEvccguhgp802qQLKSnxPODE6WuRZtV+ohlUg4meBA==" }, "unist-util-position": { "version": "3.1.0", @@ -4030,9 +4540,9 @@ } }, "unist-util-visit-parents": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.0.tgz", - "integrity": "sha512-0g4wbluTF93npyPrp/ymd3tCDTMnP0yo2akFD2FIBAYXq/Sga3lwaU1D8OYKbtpioaI6CkDcQ6fsMnmtzt7htw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", + "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", "requires": { "@types/unist": "^2.0.0", "unist-util-is": "^4.0.0" @@ -4044,21 +4554,20 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, "vfile": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.0.tgz", - "integrity": "sha512-a/alcwCvtuc8OX92rqqo7PflxiCgXRFjdyoGVuYV+qbgCb0GgZJRvIgCD4+U/Kl1yhaRsaTwksF88xbPyGsgpw==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", + "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", "requires": { "@types/unist": "^2.0.0", "is-buffer": "^2.0.0", - "replace-ext": "1.0.0", "unist-util-stringify-position": "^2.0.0", "vfile-message": "^2.0.0" } }, "vfile-location": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-3.1.0.tgz", - "integrity": "sha512-FCZ4AN9xMcjFIG1oGmZKo61PjwJHRVA+0/tPUP2ul4uIwjGGndIxavEMRpWn5p4xwm/ZsdXp9YNygf1ZyE4x8g==" + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-3.2.0.tgz", + "integrity": "sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA==" }, "vfile-message": { "version": "2.0.4", @@ -4070,9 +4579,9 @@ } }, "vfile-reporter": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/vfile-reporter/-/vfile-reporter-6.0.1.tgz", - "integrity": "sha512-0OppK9mo8G2XUpv+hIKLVSDsoxJrXnOy73+vIm0jQUOUFYRduqpFHX+QqAQfvRHyX9B0UFiRuNJnBOjQCIsw1g==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/vfile-reporter/-/vfile-reporter-6.0.2.tgz", + "integrity": "sha512-GN2bH2gs4eLnw/4jPSgfBjo+XCuvnX9elHICJZjVD4+NM0nsUrMTvdjGY5Sc/XG69XVTgLwj7hknQVc6M9FukA==", "requires": { "repeat-string": "^1.5.0", "string-width": "^4.0.0", @@ -4121,6 +4630,11 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, "zwitch": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", diff --git a/tools/node-lint-md-cli-rollup/package.json b/tools/node-lint-md-cli-rollup/package.json index e55115fa1f6..7776ad0d5dc 100644 --- a/tools/node-lint-md-cli-rollup/package.json +++ b/tools/node-lint-md-cli-rollup/package.json @@ -3,19 +3,19 @@ "description": "remark packaged for Node.js Markdown linting", "version": "2.0.2", "devDependencies": { - "@rollup/plugin-commonjs": "^11.0.1", - "@rollup/plugin-json": "^4.0.1", - "@rollup/plugin-node-resolve": "^7.0.0", - "rollup": "^2.32.1", + "@rollup/plugin-commonjs": "^17.0.0", + "@rollup/plugin-json": "^4.1.0", + "@rollup/plugin-node-resolve": "^11.0.1", + "rollup": "^2.36.1", "shx": "^0.3.3" }, "dependencies": { "markdown-extensions": "^1.1.1", "remark": "^13.0.0", "remark-gfm": "^1.0.0", - "remark-lint": "^7.0.0", + "remark-lint": "^8.0.0", "remark-preset-lint-node": "^2.0.0", - "unified-args": "^8.0.0" + "unified-args": "^8.1.0" }, "main": "dist/index.js", "scripts": { diff --git a/tools/node-lint-md-cli-rollup/rollup.config.js b/tools/node-lint-md-cli-rollup/rollup.config.js index 967f81865c6..654f033cf65 100644 --- a/tools/node-lint-md-cli-rollup/rollup.config.js +++ b/tools/node-lint-md-cli-rollup/rollup.config.js @@ -1,6 +1,6 @@ 'use strict'; -const resolve = require('@rollup/plugin-node-resolve'); +const { nodeResolve } = require('@rollup/plugin-node-resolve'); const commonjs = require('@rollup/plugin-commonjs'); const json = require('@rollup/plugin-json'); @@ -10,6 +10,7 @@ module.exports = { file: 'dist/index.js', format: 'cjs', sourcemap: false, + exports: 'default', }, external: [ 'stream', @@ -44,7 +45,7 @@ module.exports = { json({ preferConst: true }), - resolve(), // tells Rollup how to find date-fns in node_modules + nodeResolve(), // tells Rollup how to find date-fns in node_modules commonjs(), // Converts date-fns to ES modules { name: 'banner', |