arunkumar
4 years ago
6 changed files with 1164 additions and 166 deletions
@ -0,0 +1,2 @@ |
|||||
|
test_cases.txt |
||||
|
node_modules/ |
@ -1,157 +0,0 @@ |
|||||
const { inspect } = require("util"); |
|
||||
|
|
||||
function* prepare(str) { |
|
||||
for (let i = 0; i < str.length; i++) { |
|
||||
yield { |
|
||||
current: str[i], |
|
||||
next: (n = 1) => str.slice(i + 1, i + 1 + n), |
|
||||
prev: (n = 1) => str.slice(i - n, i), |
|
||||
skip: (n = 1) => (i += n), |
|
||||
}; |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
function Parse(str, inner = false) { |
|
||||
let context = null; |
|
||||
let buffer = ""; |
|
||||
let AST = []; |
|
||||
let link = ""; |
|
||||
|
|
||||
const flush = () => { |
|
||||
if (buffer) { |
|
||||
if (context === null && inner) { |
|
||||
AST.push(buffer); |
|
||||
} else { |
|
||||
if (context === "url") { |
|
||||
AST.push({ |
|
||||
type: context, |
|
||||
children: Parse(buffer, true), |
|
||||
url: link, |
|
||||
}); |
|
||||
} else { |
|
||||
AST.push({ |
|
||||
type: context || "text", |
|
||||
children: context === null ? [buffer] : Parse(buffer, true), |
|
||||
}); |
|
||||
} |
|
||||
} |
|
||||
buffer = ""; |
|
||||
} |
|
||||
context = null; |
|
||||
link = ""; |
|
||||
}; |
|
||||
|
|
||||
for (const char of prepare(str)) { |
|
||||
const currentContext = context; |
|
||||
if ( |
|
||||
(!context || context === "bold") && |
|
||||
char.current === "*" && |
|
||||
char.next() === "*" |
|
||||
) { |
|
||||
flush(); |
|
||||
if (!currentContext) { |
|
||||
context = "bold"; |
|
||||
} |
|
||||
char.skip(); |
|
||||
} else if ( |
|
||||
(!context || context === "italics") && |
|
||||
char.current === "_" |
|
||||
) { |
|
||||
flush(); |
|
||||
if (!currentContext) { |
|
||||
context = "italics"; |
|
||||
} |
|
||||
} else if ( |
|
||||
(!context || context === "strikethrough") && |
|
||||
char.current === "~" && |
|
||||
char.next() === "~" |
|
||||
) { |
|
||||
flush(); |
|
||||
if (!currentContext) { |
|
||||
context = "strikethrough"; |
|
||||
} |
|
||||
char.skip(); |
|
||||
} else if ( |
|
||||
(!context || context === "underline") && |
|
||||
char.current === "=" && |
|
||||
char.next() === "=" |
|
||||
) { |
|
||||
flush(); |
|
||||
if (!currentContext) { |
|
||||
context = "underline"; |
|
||||
} |
|
||||
char.skip(); |
|
||||
} |
|
||||
else if ((char.current === "[" || char.current === ']') && (!context || context === "link")) { |
|
||||
if (char.current === "[") { |
|
||||
flush(); |
|
||||
context = "link"; |
|
||||
} |
|
||||
if (inner) { |
|
||||
buffer += char.current; |
|
||||
} |
|
||||
} |
|
||||
else if ((context === "link" || !context || context === "url") && (char.current === "(" || char.current === ")") && !inner) { |
|
||||
if (char.prev() === "]") { |
|
||||
if (!currentContext || currentContext === "link") { |
|
||||
context = "url"; |
|
||||
} |
|
||||
} |
|
||||
else { |
|
||||
flush(); |
|
||||
} |
|
||||
} else { |
|
||||
if (context === "url") { |
|
||||
link += char.current; |
|
||||
} |
|
||||
else { |
|
||||
buffer += char.current; |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
const updater = (char) => { |
|
||||
context = null; |
|
||||
let result = Parse(buffer); |
|
||||
for (const check of result) { |
|
||||
if (check.type !== "text") { |
|
||||
if (!AST.length) { |
|
||||
buffer = char; |
|
||||
flush(); |
|
||||
} |
|
||||
AST.push(check); |
|
||||
buffer = ""; |
|
||||
} |
|
||||
else { |
|
||||
buffer = check.children[0]; |
|
||||
if (!AST.length) { |
|
||||
buffer = char + buffer; |
|
||||
} |
|
||||
flush(); |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
if (context === "bold") { |
|
||||
console.log("triggered"); |
|
||||
updater("**"); |
|
||||
} else if (context === "italics") { |
|
||||
updater("_"); |
|
||||
} else if (context === "strikethrough") { |
|
||||
updater("~~"); |
|
||||
} else if (context == "underline") { |
|
||||
updater("=="); |
|
||||
} |
|
||||
|
|
||||
if (buffer) { |
|
||||
context = null; |
|
||||
flush(); |
|
||||
} |
|
||||
|
|
||||
return AST; |
|
||||
} |
|
||||
|
|
||||
const input = "[link](google.com)"; |
|
||||
|
|
||||
console.log("input:", input); |
|
||||
console.log("output:", inspect(Parse(input), false, Infinity, true)); |
|
@ -0,0 +1,151 @@ |
|||||
|
const { inspect } = require("util"); |
||||
|
function* prepare(str) { |
||||
|
for (let i = 0; i < str.length; i++) { |
||||
|
yield { |
||||
|
current: str[i], |
||||
|
next: (n = 1) => str.slice(i + 1, i + 1 + n), |
||||
|
prev: (n = 1) => str.slice(i - n, i), |
||||
|
skip: (n = 1) => (i += n), |
||||
|
}; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
function Parse(str, inner = false) { |
||||
|
let context = null; |
||||
|
let buffer = ""; |
||||
|
let AST = []; |
||||
|
let link = ""; |
||||
|
|
||||
|
const flush = () => { |
||||
|
if (buffer) { |
||||
|
if (context === null && inner) { |
||||
|
AST.push(buffer); |
||||
|
} else { |
||||
|
if (context === "url") { |
||||
|
AST.push({ |
||||
|
type: context, |
||||
|
children: Parse(buffer, true), |
||||
|
url: link, |
||||
|
}); |
||||
|
} else { |
||||
|
AST.push({ |
||||
|
type: context || "text", |
||||
|
children: context === null ? [buffer] : Parse(buffer, true), |
||||
|
}); |
||||
|
} |
||||
|
} |
||||
|
buffer = ""; |
||||
|
} |
||||
|
context = null; |
||||
|
link = ""; |
||||
|
}; |
||||
|
|
||||
|
for (const char of prepare(str)) { |
||||
|
const currentContext = context; |
||||
|
if ( |
||||
|
(!context || context === "bold") && |
||||
|
char.current === "*" && |
||||
|
char.next() === "*" |
||||
|
) { |
||||
|
flush(); |
||||
|
if (!currentContext) { |
||||
|
context = "bold"; |
||||
|
} |
||||
|
char.skip(); |
||||
|
} else if ((!context || context === "italics") && char.current === "_") { |
||||
|
flush(); |
||||
|
if (!currentContext) { |
||||
|
context = "italics"; |
||||
|
} |
||||
|
} else if ( |
||||
|
(!context || context === "strikethrough") && |
||||
|
char.current === "~" && |
||||
|
char.next() === "~" |
||||
|
) { |
||||
|
flush(); |
||||
|
if (!currentContext) { |
||||
|
context = "strikethrough"; |
||||
|
} |
||||
|
char.skip(); |
||||
|
} else if ( |
||||
|
(!context || context === "underline") && |
||||
|
char.current === "=" && |
||||
|
char.next() === "=" |
||||
|
) { |
||||
|
flush(); |
||||
|
if (!currentContext) { |
||||
|
context = "underline"; |
||||
|
} |
||||
|
char.skip(); |
||||
|
} else if ( |
||||
|
(char.current === "[" || char.current === "]") && |
||||
|
(!context || context === "link") |
||||
|
) { |
||||
|
if (char.current === "[") { |
||||
|
flush(); |
||||
|
context = "link"; |
||||
|
} |
||||
|
if (inner) { |
||||
|
buffer += char.current; |
||||
|
} |
||||
|
} else if ( |
||||
|
(context === "link" || !context || context === "url") && |
||||
|
(char.current === "(" || char.current === ")") && |
||||
|
!inner |
||||
|
) { |
||||
|
if (char.prev() === "]") { |
||||
|
if (!currentContext || currentContext === "link") { |
||||
|
context = "url"; |
||||
|
} |
||||
|
} else { |
||||
|
flush(); |
||||
|
} |
||||
|
} else { |
||||
|
if (context === "url") { |
||||
|
link += char.current; |
||||
|
} else { |
||||
|
buffer += char.current; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
const updater = char => { |
||||
|
context = null; |
||||
|
let result = Parse(buffer); |
||||
|
for (const check of result) { |
||||
|
if (check.type !== "text") { |
||||
|
if (!AST.length) { |
||||
|
buffer = char; |
||||
|
flush(); |
||||
|
} |
||||
|
AST.push(check); |
||||
|
buffer = ""; |
||||
|
} else { |
||||
|
buffer = check.children[0]; |
||||
|
if (!AST.length) { |
||||
|
buffer = char + buffer; |
||||
|
} |
||||
|
flush(); |
||||
|
} |
||||
|
} |
||||
|
}; |
||||
|
|
||||
|
if (context === "bold") { |
||||
|
updater("**"); |
||||
|
} else if (context === "italics") { |
||||
|
updater("_"); |
||||
|
} else if (context === "strikethrough") { |
||||
|
updater("~~"); |
||||
|
} else if (context == "underline") { |
||||
|
updater("=="); |
||||
|
} |
||||
|
|
||||
|
if (buffer) { |
||||
|
context = null; |
||||
|
flush(); |
||||
|
} |
||||
|
|
||||
|
return AST; |
||||
|
} |
||||
|
|
||||
|
module.exports = Parse; |
@ -0,0 +1,899 @@ |
|||||
|
{ |
||||
|
"name": "write-parser", |
||||
|
"version": "1.0.0", |
||||
|
"lockfileVersion": 1, |
||||
|
"requires": true, |
||||
|
"dependencies": { |
||||
|
"@ungap/promise-all-settled": { |
||||
|
"version": "1.1.2", |
||||
|
"resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", |
||||
|
"integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", |
||||
|
"dev": true |
||||
|
}, |
||||
|
"ansi-colors": { |
||||
|
"version": "4.1.1", |
||||
|
"resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", |
||||
|
"integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", |
||||
|
"dev": true |
||||
|
}, |
||||
|
"ansi-regex": { |
||||
|
"version": "3.0.0", |
||||
|
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", |
||||
|
"integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", |
||||
|
"dev": true |
||||
|
}, |
||||
|
"ansi-styles": { |
||||
|
"version": "4.3.0", |
||||
|
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", |
||||
|
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", |
||||
|
"dev": true, |
||||
|
"requires": { |
||||
|
"color-convert": "^2.0.1" |
||||
|
} |
||||
|
}, |
||||
|
"anymatch": { |
||||
|
"version": "3.1.1", |
||||
|
"resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", |
||||
|
"integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", |
||||
|
"dev": true, |
||||
|
"requires": { |
||||
|
"normalize-path": "^3.0.0", |
||||
|
"picomatch": "^2.0.4" |
||||
|
} |
||||
|
}, |
||||
|
"argparse": { |
||||
|
"version": "1.0.10", |
||||
|
"resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", |
||||
|
"integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", |
||||
|
"dev": true, |
||||
|
"requires": { |
||||
|
"sprintf-js": "~1.0.2" |
||||
|
} |
||||
|
}, |
||||
|
"assertion-error": { |
||||
|
"version": "1.1.0", |
||||
|
"resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", |
||||
|
"integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", |
||||
|
"dev": true |
||||
|
}, |
||||
|
"balanced-match": { |
||||
|
"version": "1.0.0", |
||||
|
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", |
||||
|
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", |
||||
|
"dev": true |
||||
|
}, |
||||
|
"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==", |
||||
|
"dev": true |
||||
|
}, |
||||
|
"brace-expansion": { |
||||
|
"version": "1.1.11", |
||||
|
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", |
||||
|
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", |
||||
|
"dev": true, |
||||
|
"requires": { |
||||
|
"balanced-match": "^1.0.0", |
||||
|
"concat-map": "0.0.1" |
||||
|
} |
||||
|
}, |
||||
|
"braces": { |
||||
|
"version": "3.0.2", |
||||
|
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", |
||||
|
"integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", |
||||
|
"dev": true, |
||||
|
"requires": { |
||||
|
"fill-range": "^7.0.1" |
||||
|
} |
||||
|
}, |
||||
|
"browser-stdout": { |
||||
|
"version": "1.3.1", |
||||
|
"resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", |
||||
|
"integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", |
||||
|
"dev": true |
||||
|
}, |
||||
|
"camelcase": { |
||||
|
"version": "5.3.1", |
||||
|
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", |
||||
|
"integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", |
||||
|
"dev": true |
||||
|
}, |
||||
|
"chai": { |
||||
|
"version": "4.2.0", |
||||
|
"resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz", |
||||
|
"integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==", |
||||
|
"dev": true, |
||||
|
"requires": { |
||||
|
"assertion-error": "^1.1.0", |
||||
|
"check-error": "^1.0.2", |
||||
|
"deep-eql": "^3.0.1", |
||||
|
"get-func-name": "^2.0.0", |
||||
|
"pathval": "^1.1.0", |
||||
|
"type-detect": "^4.0.5" |
||||
|
} |
||||
|
}, |
||||
|
"chalk": { |
||||
|
"version": "4.1.0", |
||||
|
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", |
||||
|
"integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", |
||||
|
"dev": true, |
||||
|
"requires": { |
||||
|
"ansi-styles": "^4.1.0", |
||||
|
"supports-color": "^7.1.0" |
||||
|
} |
||||
|
}, |
||||
|
"check-error": { |
||||
|
"version": "1.0.2", |
||||
|
"resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", |
||||
|
"integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", |
||||
|
"dev": true |
||||
|
}, |
||||
|
"chokidar": { |
||||
|
"version": "3.4.3", |
||||
|
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.3.tgz", |
||||
|
"integrity": "sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ==", |
||||
|
"dev": true, |
||||
|
"requires": { |
||||
|
"anymatch": "~3.1.1", |
||||
|
"braces": "~3.0.2", |
||||
|
"fsevents": "~2.1.2", |
||||
|
"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" |
||||
|
} |
||||
|
}, |
||||
|
"cliui": { |
||||
|
"version": "5.0.0", |
||||
|
"resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", |
||||
|
"integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", |
||||
|
"dev": true, |
||||
|
"requires": { |
||||
|
"string-width": "^3.1.0", |
||||
|
"strip-ansi": "^5.2.0", |
||||
|
"wrap-ansi": "^5.1.0" |
||||
|
}, |
||||
|
"dependencies": { |
||||
|
"ansi-regex": { |
||||
|
"version": "4.1.0", |
||||
|
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", |
||||
|
"integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", |
||||
|
"dev": true |
||||
|
}, |
||||
|
"string-width": { |
||||
|
"version": "3.1.0", |
||||
|
"resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", |
||||
|
"integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", |
||||
|
"dev": true, |
||||
|
"requires": { |
||||
|
"emoji-regex": "^7.0.1", |
||||
|
"is-fullwidth-code-point": "^2.0.0", |
||||
|
"strip-ansi": "^5.1.0" |
||||
|
} |
||||
|
}, |
||||
|
"strip-ansi": { |
||||
|
"version": "5.2.0", |
||||
|
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", |
||||
|
"integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", |
||||
|
"dev": true, |
||||
|
"requires": { |
||||
|
"ansi-regex": "^4.1.0" |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
"color-convert": { |
||||
|
"version": "2.0.1", |
||||
|
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", |
||||
|
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", |
||||
|
"dev": true, |
||||
|
"requires": { |
||||
|
"color-name": "~1.1.4" |
||||
|
} |
||||
|
}, |
||||
|
"color-name": { |
||||
|
"version": "1.1.4", |
||||
|
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", |
||||
|
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", |
||||
|
"dev": true |
||||
|
}, |
||||
|
"concat-map": { |
||||
|
"version": "0.0.1", |
||||
|
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", |
||||
|
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", |
||||
|
"dev": true |
||||
|
}, |
||||
|
"debug": { |
||||
|
"version": "4.2.0", |
||||
|
"resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", |
||||
|
"integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", |
||||
|
"dev": true, |
||||
|
"requires": { |
||||
|
"ms": "2.1.2" |
||||
|
} |
||||
|
}, |
||||
|
"decamelize": { |
||||
|
"version": "1.2.0", |
||||
|
"resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", |
||||
|
"integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", |
||||
|
"dev": true |
||||
|
}, |
||||
|
"deep-eql": { |
||||
|
"version": "3.0.1", |
||||
|
"resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", |
||||
|
"integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", |
||||
|
"dev": true, |
||||
|
"requires": { |
||||
|
"type-detect": "^4.0.0" |
||||
|
} |
||||
|
}, |
||||
|
"diff": { |
||||
|
"version": "4.0.2", |
||||
|
"resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", |
||||
|
"integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", |
||||
|
"dev": true |
||||
|
}, |
||||
|
"emoji-regex": { |
||||
|
"version": "7.0.3", |
||||
|
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", |
||||
|
"integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", |
||||
|
"dev": true |
||||
|
}, |
||||
|
"escape-string-regexp": { |
||||
|
"version": "4.0.0", |
||||
|
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", |
||||
|
"integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", |
||||
|
"dev": true |
||||
|
}, |
||||
|
"esprima": { |
||||
|
"version": "4.0.1", |
||||
|
"resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", |
||||
|
"integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", |
||||
|
"dev": true |
||||
|
}, |
||||
|
"fill-range": { |
||||
|
"version": "7.0.1", |
||||
|
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", |
||||
|
"integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", |
||||
|
"dev": true, |
||||
|
"requires": { |
||||
|
"to-regex-range": "^5.0.1" |
||||
|
} |
||||
|
}, |
||||
|
"find-up": { |
||||
|
"version": "5.0.0", |
||||
|
"resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", |
||||
|
"integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", |
||||
|
"dev": true, |
||||
|
"requires": { |
||||
|
"locate-path": "^6.0.0", |
||||
|
"path-exists": "^4.0.0" |
||||
|
} |
||||
|
}, |
||||
|
"flat": { |
||||
|
"version": "5.0.2", |
||||
|
"resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", |
||||
|
"integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", |
||||
|
"dev": true |
||||
|
}, |
||||
|
"fs.realpath": { |
||||
|
"version": "1.0.0", |
||||
|
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", |
||||
|
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", |
||||
|
"dev": true |
||||
|
}, |
||||
|
"fsevents": { |
||||
|
"version": "2.1.3", |
||||
|
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", |
||||
|
"integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", |
||||
|
"dev": true, |
||||
|
"optional": true |
||||
|
}, |
||||
|
"get-caller-file": { |
||||
|
"version": "2.0.5", |
||||
|
"resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", |
||||
|
"integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", |
||||
|
"dev": true |
||||
|
}, |
||||
|
"get-func-name": { |
||||
|
"version": "2.0.0", |
||||
|
"resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", |
||||
|
"integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", |
||||
|
"dev": true |
||||
|
}, |
||||
|
"glob": { |
||||
|
"version": "7.1.6", |
||||
|
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", |
||||
|
"integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", |
||||
|
"dev": true, |
||||
|
"requires": { |
||||
|
"fs.realpath": "^1.0.0", |
||||
|
"inflight": "^1.0.4", |
||||
|
"inherits": "2", |
||||
|
"minimatch": "^3.0.4", |
||||
|
"once": "^1.3.0", |
||||
|
"path-is-absolute": "^1.0.0" |
||||
|
} |
||||
|
}, |
||||
|
"glob-parent": { |
||||
|
"version": "5.1.1", |
||||
|
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", |
||||
|
"integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", |
||||
|
"dev": true, |
||||
|
"requires": { |
||||
|
"is-glob": "^4.0.1" |
||||
|
} |
||||
|
}, |
||||
|
"growl": { |
||||
|
"version": "1.10.5", |
||||
|
"resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", |
||||
|
"integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", |
||||
|
"dev": true |
||||
|
}, |
||||
|
"has-flag": { |
||||
|
"version": "4.0.0", |
||||
|
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", |
||||
|
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", |
||||
|
"dev": true |
||||
|
}, |
||||
|
"he": { |
||||
|
"version": "1.2.0", |
||||
|
"resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", |
||||
|
"integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", |
||||
|
"dev": true |
||||
|
}, |
||||
|
"inflight": { |
||||
|
"version": "1.0.6", |
||||
|
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", |
||||
|
"integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", |
||||
|
"dev": true, |
||||
|
"requires": { |
||||
|
"once": "^1.3.0", |
||||
|
"wrappy": "1" |
||||
|
} |
||||
|
}, |
||||
|
"inherits": { |
||||
|
"version": "2.0.4", |
||||
|
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", |
||||
|
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", |
||||
|
"dev": true |
||||
|
}, |
||||
|
"is-binary-path": { |
||||
|
"version": "2.1.0", |
||||
|
"resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", |
||||
|
"integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", |
||||
|
"dev": true, |
||||
|
"requires": { |
||||
|
"binary-extensions": "^2.0.0" |
||||
|
} |
||||
|
}, |
||||
|
"is-extglob": { |
||||
|
"version": "2.1.1", |
||||
|
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", |
||||
|
"integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", |
||||
|
"dev": true |
||||
|
}, |
||||
|
"is-fullwidth-code-point": { |
||||
|
"version": "2.0.0", |
||||
|
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", |
||||
|
"integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", |
||||
|
"dev": true |
||||
|
}, |
||||
|
"is-glob": { |
||||
|
"version": "4.0.1", |
||||
|
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", |
||||
|
"integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", |
||||
|
"dev": true, |
||||
|
"requires": { |
||||
|
"is-extglob": "^2.1.1" |
||||
|
} |
||||
|
}, |
||||
|
"is-number": { |
||||
|
"version": "7.0.0", |
||||
|
"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", |
||||
|
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", |
||||
|
"dev": true |
||||
|
}, |
||||
|
"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==", |
||||
|
"dev": true |
||||
|
}, |
||||
|
"isexe": { |
||||
|
"version": "2.0.0", |
||||
|
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", |
||||
|
"integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", |
||||
|
"dev": true |
||||
|
}, |
||||
|
"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==", |
||||
|
"dev": true, |
||||
|
"requires": { |
||||
|
"argparse": "^1.0.7", |
||||
|
"esprima": "^4.0.0" |
||||
|
} |
||||
|
}, |
||||
|
"locate-path": { |
||||
|
"version": "6.0.0", |
||||
|
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", |
||||
|
"integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", |
||||
|
"dev": true, |
||||
|
"requires": { |
||||
|
"p-locate": "^5.0.0" |
||||
|
} |
||||
|
}, |
||||
|
"log-symbols": { |
||||
|
"version": "4.0.0", |
||||
|
"resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz", |
||||
|
"integrity": "sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==", |
||||
|
"dev": true, |
||||
|
"requires": { |
||||
|
"chalk": "^4.0.0" |
||||
|
} |
||||
|
}, |
||||
|
"minimatch": { |
||||
|
"version": "3.0.4", |
||||
|
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", |
||||
|
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", |
||||
|
"dev": true, |
||||
|
"requires": { |
||||
|
"brace-expansion": "^1.1.7" |
||||
|
} |
||||
|
}, |
||||
|
"mocha": { |
||||
|
"version": "8.2.1", |
||||
|
"resolved": "https://registry.npmjs.org/mocha/-/mocha-8.2.1.tgz", |
||||
|
"integrity": "sha512-cuLBVfyFfFqbNR0uUKbDGXKGk+UDFe6aR4os78XIrMQpZl/nv7JYHcvP5MFIAb374b2zFXsdgEGwmzMtP0Xg8w==", |
||||
|
"dev": true, |
||||
|
"requires": { |
||||
|
"@ungap/promise-all-settled": "1.1.2", |
||||
|
"ansi-colors": "4.1.1", |
||||
|
"browser-stdout": "1.3.1", |
||||
|
"chokidar": "3.4.3", |
||||
|
"debug": "4.2.0", |
||||
|
"diff": "4.0.2", |
||||
|
"escape-string-regexp": "4.0.0", |
||||
|
"find-up": "5.0.0", |
||||
|
"glob": "7.1.6", |
||||
|
"growl": "1.10.5", |
||||
|
"he": "1.2.0", |
||||
|
"js-yaml": "3.14.0", |
||||
|
"log-symbols": "4.0.0", |
||||
|
"minimatch": "3.0.4", |
||||
|
"ms": "2.1.2", |
||||
|
"nanoid": "3.1.12", |
||||
|
"serialize-javascript": "5.0.1", |
||||
|
"strip-json-comments": "3.1.1", |
||||
|
"supports-color": "7.2.0", |
||||
|
"which": "2.0.2", |
||||
|
"wide-align": "1.1.3", |
||||
|
"workerpool": "6.0.2", |
||||
|
"yargs": "13.3.2", |
||||
|
"yargs-parser": "13.1.2", |
||||
|
"yargs-unparser": "2.0.0" |
||||
|
} |
||||
|
}, |
||||
|
"ms": { |
||||
|
"version": "2.1.2", |
||||
|
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", |
||||
|
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", |
||||
|
"dev": true |
||||
|
}, |
||||
|
"nanoid": { |
||||
|
"version": "3.1.12", |
||||
|
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.12.tgz", |
||||
|
"integrity": "sha512-1qstj9z5+x491jfiC4Nelk+f8XBad7LN20PmyWINJEMRSf3wcAjAWysw1qaA8z6NSKe2sjq1hRSDpBH5paCb6A==", |
||||
|
"dev": true |
||||
|
}, |
||||
|
"normalize-path": { |
||||
|
"version": "3.0.0", |
||||
|
"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", |
||||
|
"integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", |
||||
|
"dev": true |
||||
|
}, |
||||
|
"once": { |
||||
|
"version": "1.4.0", |
||||
|
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", |
||||
|
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", |
||||
|
"dev": true, |
||||
|
"requires": { |
||||
|
"wrappy": "1" |
||||
|
} |
||||
|
}, |
||||
|
"p-limit": { |
||||
|
"version": "3.1.0", |
||||
|
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", |
||||
|
"integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", |
||||
|
"dev": true, |
||||
|
"requires": { |
||||
|
"yocto-queue": "^0.1.0" |
||||
|
} |
||||
|
}, |
||||
|
"p-locate": { |
||||
|
"version": "5.0.0", |
||||
|
"resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", |
||||
|
"integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", |
||||
|
"dev": true, |
||||
|
"requires": { |
||||
|
"p-limit": "^3.0.2" |
||||
|
} |
||||
|
}, |
||||
|
"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==", |
||||
|
"dev": true |
||||
|
}, |
||||
|
"path-exists": { |
||||
|
"version": "4.0.0", |
||||
|
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", |
||||
|
"integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", |
||||
|
"dev": true |
||||
|
}, |
||||
|
"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=", |
||||
|
"dev": true |
||||
|
}, |
||||
|
"pathval": { |
||||
|
"version": "1.1.0", |
||||
|
"resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz", |
||||
|
"integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=", |
||||
|
"dev": true |
||||
|
}, |
||||
|
"picomatch": { |
||||
|
"version": "2.2.2", |
||||
|
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", |
||||
|
"integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", |
||||
|
"dev": true |
||||
|
}, |
||||
|
"randombytes": { |
||||
|
"version": "2.1.0", |
||||
|
"resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", |
||||
|
"integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", |
||||
|
"dev": true, |
||||
|
"requires": { |
||||
|
"safe-buffer": "^5.1.0" |
||||
|
} |
||||
|
}, |
||||
|
"readdirp": { |
||||
|
"version": "3.5.0", |
||||
|
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", |
||||
|
"integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", |
||||
|
"dev": true, |
||||
|
"requires": { |
||||
|
"picomatch": "^2.2.1" |
||||
|
} |
||||
|
}, |
||||
|
"require-directory": { |
||||
|
"version": "2.1.1", |
||||
|
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", |
||||
|
"integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", |
||||
|
"dev": true |
||||
|
}, |
||||
|
"require-main-filename": { |
||||
|
"version": "2.0.0", |
||||
|
"resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", |
||||
|
"integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", |
||||
|
"dev": true |
||||
|
}, |
||||
|
"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==", |
||||
|
"dev": true |
||||
|
}, |
||||
|
"serialize-javascript": { |
||||
|
"version": "5.0.1", |
||||
|
"resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", |
||||
|
"integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", |
||||
|
"dev": true, |
||||
|
"requires": { |
||||
|
"randombytes": "^2.1.0" |
||||
|
} |
||||
|
}, |
||||
|
"set-blocking": { |
||||
|
"version": "2.0.0", |
||||
|
"resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", |
||||
|
"integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", |
||||
|
"dev": true |
||||
|
}, |
||||
|
"sprintf-js": { |
||||
|
"version": "1.0.3", |
||||
|
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", |
||||
|
"integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", |
||||
|
"dev": true |
||||
|
}, |
||||
|
"string-width": { |
||||
|
"version": "2.1.1", |
||||
|
"resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", |
||||
|
"integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", |
||||
|
"dev": true, |
||||
|
"requires": { |
||||
|
"is-fullwidth-code-point": "^2.0.0", |
||||
|
"strip-ansi": "^4.0.0" |
||||
|
} |
||||
|
}, |
||||
|
"strip-ansi": { |
||||
|
"version": "4.0.0", |
||||
|
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", |
||||
|
"integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", |
||||
|
"dev": true, |
||||
|
"requires": { |
||||
|
"ansi-regex": "^3.0.0" |
||||
|
} |
||||
|
}, |
||||
|
"strip-json-comments": { |
||||
|
"version": "3.1.1", |
||||
|
"resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", |
||||
|
"integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", |
||||
|
"dev": true |
||||
|
}, |
||||
|
"supports-color": { |
||||
|
"version": "7.2.0", |
||||
|
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", |
||||
|
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", |
||||
|
"dev": true, |
||||
|
"requires": { |
||||
|
"has-flag": "^4.0.0" |
||||
|
} |
||||
|
}, |
||||
|
"to-regex-range": { |
||||
|
"version": "5.0.1", |
||||
|
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", |
||||
|
"integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", |
||||
|
"dev": true, |
||||
|
"requires": { |
||||
|
"is-number": "^7.0.0" |
||||
|
} |
||||
|
}, |
||||
|
"type-detect": { |
||||
|
"version": "4.0.8", |
||||
|
"resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", |
||||
|
"integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", |
||||
|
"dev": true |
||||
|
}, |
||||
|
"which": { |
||||
|
"version": "2.0.2", |
||||
|
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", |
||||
|
"integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", |
||||
|
"dev": true, |
||||
|
"requires": { |
||||
|
"isexe": "^2.0.0" |
||||
|
} |
||||
|
}, |
||||
|
"which-module": { |
||||
|
"version": "2.0.0", |
||||
|
"resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", |
||||
|
"integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", |
||||
|
"dev": true |
||||
|
}, |
||||
|
"wide-align": { |
||||
|
"version": "1.1.3", |
||||
|
"resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", |
||||
|
"integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", |
||||
|
"dev": true, |
||||
|
"requires": { |
||||
|
"string-width": "^1.0.2 || 2" |
||||
|
} |
||||
|
}, |
||||
|
"workerpool": { |
||||
|
"version": "6.0.2", |
||||
|
"resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.0.2.tgz", |
||||
|
"integrity": "sha512-DSNyvOpFKrNusaaUwk+ej6cBj1bmhLcBfj80elGk+ZIo5JSkq+unB1dLKEOcNfJDZgjGICfhQ0Q5TbP0PvF4+Q==", |
||||
|
"dev": true |
||||
|
}, |
||||
|
"wrap-ansi": { |
||||
|
"version": "5.1.0", |
||||
|
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", |
||||
|
"integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", |
||||
|
"dev": true, |
||||
|
"requires": { |
||||
|
"ansi-styles": "^3.2.0", |
||||
|
"string-width": "^3.0.0", |
||||
|
"strip-ansi": "^5.0.0" |
||||
|
}, |
||||
|
"dependencies": { |
||||
|
"ansi-regex": { |
||||
|
"version": "4.1.0", |
||||
|
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", |
||||
|
"integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", |
||||
|
"dev": true |
||||
|
}, |
||||
|
"ansi-styles": { |
||||
|
"version": "3.2.1", |
||||
|
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", |
||||
|
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", |
||||
|
"dev": true, |
||||
|
"requires": { |
||||
|
"color-convert": "^1.9.0" |
||||
|
} |
||||
|
}, |
||||
|
"color-convert": { |
||||
|
"version": "1.9.3", |
||||
|
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", |
||||
|
"integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", |
||||
|
"dev": true, |
||||
|
"requires": { |
||||
|
"color-name": "1.1.3" |
||||
|
} |
||||
|
}, |
||||
|
"color-name": { |
||||
|
"version": "1.1.3", |
||||
|
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", |
||||
|
"integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", |
||||
|
"dev": true |
||||
|
}, |
||||
|
"string-width": { |
||||
|
"version": "3.1.0", |
||||
|
"resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", |
||||
|
"integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", |
||||
|
"dev": true, |
||||
|
"requires": { |
||||
|
"emoji-regex": "^7.0.1", |
||||
|
"is-fullwidth-code-point": "^2.0.0", |
||||
|
"strip-ansi": "^5.1.0" |
||||
|
} |
||||
|
}, |
||||
|
"strip-ansi": { |
||||
|
"version": "5.2.0", |
||||
|
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", |
||||
|
"integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", |
||||
|
"dev": true, |
||||
|
"requires": { |
||||
|
"ansi-regex": "^4.1.0" |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
"wrappy": { |
||||
|
"version": "1.0.2", |
||||
|
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", |
||||
|
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", |
||||
|
"dev": true |
||||
|
}, |
||||
|
"y18n": { |
||||
|
"version": "4.0.1", |
||||
|
"resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz", |
||||
|
"integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==", |
||||
|
"dev": true |
||||
|
}, |
||||
|
"yargs": { |
||||
|
"version": "13.3.2", |
||||
|
"resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", |
||||
|
"integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", |
||||
|
"dev": true, |
||||
|
"requires": { |
||||
|
"cliui": "^5.0.0", |
||||
|
"find-up": "^3.0.0", |
||||
|
"get-caller-file": "^2.0.1", |
||||
|
"require-directory": "^2.1.1", |
||||
|
"require-main-filename": "^2.0.0", |
||||
|
"set-blocking": "^2.0.0", |
||||
|
"string-width": "^3.0.0", |
||||
|
"which-module": "^2.0.0", |
||||
|
"y18n": "^4.0.0", |
||||
|
"yargs-parser": "^13.1.2" |
||||
|
}, |
||||
|
"dependencies": { |
||||
|
"ansi-regex": { |
||||
|
"version": "4.1.0", |
||||
|
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", |
||||
|
"integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", |
||||
|
"dev": true |
||||
|
}, |
||||
|
"find-up": { |
||||
|
"version": "3.0.0", |
||||
|
"resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", |
||||
|
"integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", |
||||
|
"dev": true, |
||||
|
"requires": { |
||||
|
"locate-path": "^3.0.0" |
||||
|
} |
||||
|
}, |
||||
|
"locate-path": { |
||||
|
"version": "3.0.0", |
||||
|
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", |
||||
|
"integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", |
||||
|
"dev": true, |
||||
|
"requires": { |
||||
|
"p-locate": "^3.0.0", |
||||
|
"path-exists": "^3.0.0" |
||||
|
} |
||||
|
}, |
||||
|
"p-limit": { |
||||
|
"version": "2.3.0", |
||||
|
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", |
||||
|
"integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", |
||||
|
"dev": true, |
||||
|
"requires": { |
||||
|
"p-try": "^2.0.0" |
||||
|
} |
||||
|
}, |
||||
|
"p-locate": { |
||||
|
"version": "3.0.0", |
||||
|
"resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", |
||||
|
"integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", |
||||
|
"dev": true, |
||||
|
"requires": { |
||||
|
"p-limit": "^2.0.0" |
||||
|
} |
||||
|
}, |
||||
|
"path-exists": { |
||||
|
"version": "3.0.0", |
||||
|
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", |
||||
|
"integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", |
||||
|
"dev": true |
||||
|
}, |
||||
|
"string-width": { |
||||
|
"version": "3.1.0", |
||||
|
"resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", |
||||
|
"integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", |
||||
|
"dev": true, |
||||
|
"requires": { |
||||
|
"emoji-regex": "^7.0.1", |
||||
|
"is-fullwidth-code-point": "^2.0.0", |
||||
|
"strip-ansi": "^5.1.0" |
||||
|
} |
||||
|
}, |
||||
|
"strip-ansi": { |
||||
|
"version": "5.2.0", |
||||
|
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", |
||||
|
"integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", |
||||
|
"dev": true, |
||||
|
"requires": { |
||||
|
"ansi-regex": "^4.1.0" |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
"yargs-parser": { |
||||
|
"version": "13.1.2", |
||||
|
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", |
||||
|
"integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", |
||||
|
"dev": true, |
||||
|
"requires": { |
||||
|
"camelcase": "^5.0.0", |
||||
|
"decamelize": "^1.2.0" |
||||
|
} |
||||
|
}, |
||||
|
"yargs-unparser": { |
||||
|
"version": "2.0.0", |
||||
|
"resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", |
||||
|
"integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", |
||||
|
"dev": true, |
||||
|
"requires": { |
||||
|
"camelcase": "^6.0.0", |
||||
|
"decamelize": "^4.0.0", |
||||
|
"flat": "^5.0.2", |
||||
|
"is-plain-obj": "^2.1.0" |
||||
|
}, |
||||
|
"dependencies": { |
||||
|
"camelcase": { |
||||
|
"version": "6.2.0", |
||||
|
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", |
||||
|
"integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", |
||||
|
"dev": true |
||||
|
}, |
||||
|
"decamelize": { |
||||
|
"version": "4.0.0", |
||||
|
"resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", |
||||
|
"integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", |
||||
|
"dev": true |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
"yocto-queue": { |
||||
|
"version": "0.1.0", |
||||
|
"resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", |
||||
|
"integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", |
||||
|
"dev": true |
||||
|
} |
||||
|
} |
||||
|
} |
@ -1,11 +1,15 @@ |
|||||
{ |
{ |
||||
"name": "write-parser", |
"name": "write-parser", |
||||
"version": "1.0.0", |
"version": "1.0.0", |
||||
"description": "", |
"description": "", |
||||
"main": "WriteParser.js", |
"main": "", |
||||
"scripts": { |
"scripts": { |
||||
"test": "echo \"Error: no test specified\" && exit 1" |
"test": "mocha" |
||||
}, |
}, |
||||
"author": "", |
"author": "", |
||||
"license": "ISC" |
"license": "ISC", |
||||
|
"devDependencies": { |
||||
|
"chai": "^4.2.0", |
||||
|
"mocha": "^8.2.1" |
||||
|
} |
||||
} |
} |
||||
|
@ -0,0 +1,99 @@ |
|||||
|
const expect = require("chai").expect; |
||||
|
const Parse = require("../lib/index"); |
||||
|
|
||||
|
describe("Parser Checks", function () { |
||||
|
it("Bold Test", function () { |
||||
|
expect(Parse("**bold**")).to.eql([ |
||||
|
{ |
||||
|
type: "bold", |
||||
|
children: ["bold"], |
||||
|
}, |
||||
|
]); |
||||
|
}); |
||||
|
|
||||
|
it("Strikethrough Test", function () { |
||||
|
expect(Parse("~~strikethrough~~")).to.eql([ |
||||
|
{ |
||||
|
type: "strikethrough", |
||||
|
children: ["strikethrough"], |
||||
|
}, |
||||
|
]); |
||||
|
}); |
||||
|
|
||||
|
it("Italics Test", function () { |
||||
|
expect(Parse("_italics_")).to.eql([ |
||||
|
{ |
||||
|
type: "italics", |
||||
|
children: ["italics"], |
||||
|
}, |
||||
|
]); |
||||
|
}); |
||||
|
|
||||
|
it("Underline Test", function () { |
||||
|
expect(Parse("==Underline==")).to.eql([ |
||||
|
{ |
||||
|
type: "underline", |
||||
|
children: ["Underline"], |
||||
|
}, |
||||
|
]); |
||||
|
}); |
||||
|
|
||||
|
it("url Test", function () { |
||||
|
expect(Parse("[The Feathers](feathers.studio)")).to.eql([ |
||||
|
{ |
||||
|
type: "url", |
||||
|
children: ["The Feathers"], |
||||
|
url: "feathers.studio", |
||||
|
}, |
||||
|
]); |
||||
|
}); |
||||
|
|
||||
|
it("Bold text inside the Bold text", function () { |
||||
|
expect(Parse("**Outer**InnerBold**Bold**")).to.eql([ |
||||
|
{ type: "bold", children: ["Outer"] }, |
||||
|
{ type: "text", children: ["InnerBold"] }, |
||||
|
{ type: "bold", children: ["Bold"] }, |
||||
|
]); |
||||
|
}); |
||||
|
|
||||
|
it("Bold text inside the Bold text", function () { |
||||
|
expect(Parse("**Outer**InnerBold**Bold**")).to.eql([ |
||||
|
{ type: "bold", children: ["Outer"] }, |
||||
|
{ type: "text", children: ["InnerBold"] }, |
||||
|
{ type: "bold", children: ["Bold"] }, |
||||
|
]); |
||||
|
}); |
||||
|
|
||||
|
it("Nested Check 1", function () { |
||||
|
expect( |
||||
|
Parse( |
||||
|
"**Bold_Italics~~strikethrough==underline==strikethrough~~Italics_Bold**", |
||||
|
), |
||||
|
).to.eql([ |
||||
|
{ |
||||
|
type: "bold", |
||||
|
children: [ |
||||
|
"Bold", |
||||
|
{ |
||||
|
type: "italics", |
||||
|
children: [ |
||||
|
"Italics", |
||||
|
{ |
||||
|
type: "strikethrough", |
||||
|
children: [ |
||||
|
"strikethrough", |
||||
|
{ type: "underline", children: ["underline"] }, |
||||
|
"strikethrough", |
||||
|
], |
||||
|
}, |
||||
|
"Italics", |
||||
|
], |
||||
|
}, |
||||
|
"Bold", |
||||
|
], |
||||
|
}, |
||||
|
]); |
||||
|
}); |
||||
|
|
||||
|
it(""); |
||||
|
}); |
Loading…
Reference in new issue