feat: mathjax markdown module
This commit is contained in:
parent
662ebccd22
commit
281172a9f4
@ -109,7 +109,7 @@
|
|||||||
"markdown-it-sub": "1.0.0",
|
"markdown-it-sub": "1.0.0",
|
||||||
"markdown-it-sup": "1.0.0",
|
"markdown-it-sup": "1.0.0",
|
||||||
"markdown-it-task-lists": "2.1.1",
|
"markdown-it-task-lists": "2.1.1",
|
||||||
"mathjax-node": "2.1.1",
|
"mathjax": "3.0.5",
|
||||||
"mime-types": "2.1.27",
|
"mime-types": "2.1.27",
|
||||||
"moment": "2.24.0",
|
"moment": "2.24.0",
|
||||||
"moment-timezone": "0.5.28",
|
"moment-timezone": "0.5.28",
|
||||||
|
@ -10,10 +10,12 @@ module.exports = {
|
|||||||
blockquote: ['class', 'id', 'style'],
|
blockquote: ['class', 'id', 'style'],
|
||||||
code: ['class', 'style'],
|
code: ['class', 'style'],
|
||||||
details: ['class', 'style'],
|
details: ['class', 'style'],
|
||||||
|
defs: ['stroke', 'fill', 'stroke-width', 'transform'],
|
||||||
div: ['class', 'id', 'style'],
|
div: ['class', 'id', 'style'],
|
||||||
em: ['class', 'style'],
|
em: ['class', 'style'],
|
||||||
figcaption: ['class', 'style'],
|
figcaption: ['class', 'style'],
|
||||||
figure: ['class', 'style'],
|
figure: ['class', 'style'],
|
||||||
|
g: ['transform', 'stroke', 'stroke-width', 'fill'],
|
||||||
h1: ['class', 'id', 'style'],
|
h1: ['class', 'id', 'style'],
|
||||||
h2: ['class', 'id', 'style'],
|
h2: ['class', 'id', 'style'],
|
||||||
h3: ['class', 'id', 'style'],
|
h3: ['class', 'id', 'style'],
|
||||||
@ -29,7 +31,7 @@ module.exports = {
|
|||||||
mark: ['class', 'style'],
|
mark: ['class', 'style'],
|
||||||
ol: ['class', 'style', 'start'],
|
ol: ['class', 'style', 'start'],
|
||||||
p: ['class', 'style'],
|
p: ['class', 'style'],
|
||||||
path: ['d', 'style'],
|
path: ['d', 'style', 'id'],
|
||||||
pre: ['class', 'style'],
|
pre: ['class', 'style'],
|
||||||
section: ['class', 'style'],
|
section: ['class', 'style'],
|
||||||
span: ['class', 'style', 'aria-hidden'],
|
span: ['class', 'style', 'aria-hidden'],
|
||||||
@ -44,7 +46,8 @@ module.exports = {
|
|||||||
th: ['align', 'class', 'colspan', 'rowspan', 'style', 'valign'],
|
th: ['align', 'class', 'colspan', 'rowspan', 'style', 'valign'],
|
||||||
thead: ['class', 'style'],
|
thead: ['class', 'style'],
|
||||||
tr: ['class', 'rowspan', 'style', 'align', 'valign'],
|
tr: ['class', 'rowspan', 'style', 'align', 'valign'],
|
||||||
ul: ['class', 'style']
|
ul: ['class', 'style'],
|
||||||
|
use: ['href', 'transform']
|
||||||
},
|
},
|
||||||
css: false
|
css: false
|
||||||
})
|
})
|
||||||
|
@ -36,7 +36,7 @@ module.exports = {
|
|||||||
|
|
||||||
for (let child of this.children) {
|
for (let child of this.children) {
|
||||||
const renderer = require(`../${_.kebabCase(child.key)}/renderer.js`)
|
const renderer = require(`../${_.kebabCase(child.key)}/renderer.js`)
|
||||||
renderer.init(mkdown, child.config)
|
await renderer.init(mkdown, child.config)
|
||||||
}
|
}
|
||||||
|
|
||||||
return mkdown.render(this.input)
|
return mkdown.render(this.input)
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
key: markdownKatex
|
key: markdownKatex
|
||||||
title: Katex
|
title: Katex
|
||||||
description: LaTeX Math Typesetting Renderer
|
description: LaTeX Math + Chemical Expression Typesetting Renderer
|
||||||
author: requarks.io
|
author: requarks.io
|
||||||
icon: mdi-math-integral
|
icon: mdi-math-integral
|
||||||
enabledDefault: true
|
enabledDefault: true
|
||||||
|
20
server/modules/rendering/markdown-mathjax/definition.yml
Normal file
20
server/modules/rendering/markdown-mathjax/definition.yml
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
key: markdownMathjax
|
||||||
|
title: Mathjax
|
||||||
|
description: LaTeX Math + Chemical Expression Typesetting Renderer
|
||||||
|
author: requarks.io
|
||||||
|
icon: mdi-math-integral
|
||||||
|
enabledDefault: false
|
||||||
|
dependsOn: markdownCore
|
||||||
|
props:
|
||||||
|
useInline:
|
||||||
|
type: Boolean
|
||||||
|
default: true
|
||||||
|
title: Inline TeX
|
||||||
|
hint: Process inline TeX expressions surrounded by $ symbols.
|
||||||
|
order: 1
|
||||||
|
useBlocks:
|
||||||
|
type: Boolean
|
||||||
|
default: true
|
||||||
|
title: TeX Blocks
|
||||||
|
hint: Process TeX blocks enclosed by $$ symbols.
|
||||||
|
order: 2
|
207
server/modules/rendering/markdown-mathjax/renderer.js
Normal file
207
server/modules/rendering/markdown-mathjax/renderer.js
Normal file
@ -0,0 +1,207 @@
|
|||||||
|
const mjax = require('mathjax')
|
||||||
|
|
||||||
|
/* global WIKI */
|
||||||
|
|
||||||
|
// ------------------------------------
|
||||||
|
// Markdown - MathJax Renderer
|
||||||
|
// ------------------------------------
|
||||||
|
|
||||||
|
const extensions = [
|
||||||
|
'bbox',
|
||||||
|
'boldsymbol',
|
||||||
|
'braket',
|
||||||
|
'color',
|
||||||
|
'extpfeil',
|
||||||
|
'mhchem',
|
||||||
|
'newcommand',
|
||||||
|
'unicode',
|
||||||
|
'verb'
|
||||||
|
]
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
async init (mdinst, conf) {
|
||||||
|
const MathJax = await mjax.init({
|
||||||
|
loader: {
|
||||||
|
require: require,
|
||||||
|
paths: { mathjax: 'mathjax/es5' },
|
||||||
|
load: [
|
||||||
|
'input/tex',
|
||||||
|
'output/svg',
|
||||||
|
...extensions.map(e => `[tex]/${e}`)
|
||||||
|
]
|
||||||
|
},
|
||||||
|
tex: {
|
||||||
|
packages: {'[+]': extensions}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
if (conf.useInline) {
|
||||||
|
mdinst.inline.ruler.after('escape', 'mathjax_inline', mathjaxInline)
|
||||||
|
mdinst.renderer.rules.mathjax_inline = (tokens, idx) => {
|
||||||
|
try {
|
||||||
|
const result = MathJax.tex2svg(tokens[idx].content, {
|
||||||
|
display: false
|
||||||
|
})
|
||||||
|
return MathJax.startup.adaptor.innerHTML(result)
|
||||||
|
} catch (err) {
|
||||||
|
WIKI.logger.warn(err)
|
||||||
|
return tokens[idx].content
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (conf.useBlocks) {
|
||||||
|
mdinst.block.ruler.after('blockquote', 'mathjax_block', mathjaxBlock, {
|
||||||
|
alt: [ 'paragraph', 'reference', 'blockquote', 'list' ]
|
||||||
|
})
|
||||||
|
mdinst.renderer.rules.mathjax_block = (tokens, idx) => {
|
||||||
|
try {
|
||||||
|
const result = MathJax.tex2svg(tokens[idx].content, {
|
||||||
|
display: true
|
||||||
|
})
|
||||||
|
return `<p>` + MathJax.startup.adaptor.innerHTML(result) + `</p>`
|
||||||
|
} catch (err) {
|
||||||
|
WIKI.logger.warn(err)
|
||||||
|
return tokens[idx].content
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Test if potential opening or closing delimieter
|
||||||
|
// Assumes that there is a "$" at state.src[pos]
|
||||||
|
function isValidDelim (state, pos) {
|
||||||
|
let prevChar
|
||||||
|
let nextChar
|
||||||
|
let max = state.posMax
|
||||||
|
let canOpen = true
|
||||||
|
let canClose = true
|
||||||
|
|
||||||
|
prevChar = pos > 0 ? state.src.charCodeAt(pos - 1) : -1
|
||||||
|
nextChar = pos + 1 <= max ? state.src.charCodeAt(pos + 1) : -1
|
||||||
|
|
||||||
|
// Check non-whitespace conditions for opening and closing, and
|
||||||
|
// check that closing delimeter isn't followed by a number
|
||||||
|
if (prevChar === 0x20/* " " */ || prevChar === 0x09/* \t */ ||
|
||||||
|
(nextChar >= 0x30/* "0" */ && nextChar <= 0x39/* "9" */)) {
|
||||||
|
canClose = false
|
||||||
|
}
|
||||||
|
if (nextChar === 0x20/* " " */ || nextChar === 0x09/* \t */) {
|
||||||
|
canOpen = false
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
canOpen: canOpen,
|
||||||
|
canClose: canClose
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function mathjaxInline (state, silent) {
|
||||||
|
let start, match, token, res, pos
|
||||||
|
|
||||||
|
if (state.src[state.pos] !== '$') { return false }
|
||||||
|
|
||||||
|
res = isValidDelim(state, state.pos)
|
||||||
|
if (!res.canOpen) {
|
||||||
|
if (!silent) { state.pending += '$' }
|
||||||
|
state.pos += 1
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
// First check for and bypass all properly escaped delimieters
|
||||||
|
// This loop will assume that the first leading backtick can not
|
||||||
|
// be the first character in state.src, which is known since
|
||||||
|
// we have found an opening delimieter already.
|
||||||
|
start = state.pos + 1
|
||||||
|
match = start
|
||||||
|
while ((match = state.src.indexOf('$', match)) !== -1) {
|
||||||
|
// Found potential $, look for escapes, pos will point to
|
||||||
|
// first non escape when complete
|
||||||
|
pos = match - 1
|
||||||
|
while (state.src[pos] === '\\') { pos -= 1 }
|
||||||
|
|
||||||
|
// Even number of escapes, potential closing delimiter found
|
||||||
|
if (((match - pos) % 2) === 1) { break }
|
||||||
|
match += 1
|
||||||
|
}
|
||||||
|
|
||||||
|
// No closing delimter found. Consume $ and continue.
|
||||||
|
if (match === -1) {
|
||||||
|
if (!silent) { state.pending += '$' }
|
||||||
|
state.pos = start
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check if we have empty content, ie: $$. Do not parse.
|
||||||
|
if (match - start === 0) {
|
||||||
|
if (!silent) { state.pending += '$$' }
|
||||||
|
state.pos = start + 1
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check for valid closing delimiter
|
||||||
|
res = isValidDelim(state, match)
|
||||||
|
if (!res.canClose) {
|
||||||
|
if (!silent) { state.pending += '$' }
|
||||||
|
state.pos = start
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!silent) {
|
||||||
|
token = state.push('mathjax_inline', 'math', 0)
|
||||||
|
token.markup = '$'
|
||||||
|
token.content = state.src.slice(start, match)
|
||||||
|
}
|
||||||
|
|
||||||
|
state.pos = match + 1
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
function mathjaxBlock (state, start, end, silent) {
|
||||||
|
let firstLine; let lastLine; let next; let lastPos; let found = false; let token
|
||||||
|
let pos = state.bMarks[start] + state.tShift[start]
|
||||||
|
let max = state.eMarks[start]
|
||||||
|
|
||||||
|
if (pos + 2 > max) { return false }
|
||||||
|
if (state.src.slice(pos, pos + 2) !== '$$') { return false }
|
||||||
|
|
||||||
|
pos += 2
|
||||||
|
firstLine = state.src.slice(pos, max)
|
||||||
|
|
||||||
|
if (silent) { return true }
|
||||||
|
if (firstLine.trim().slice(-2) === '$$') {
|
||||||
|
// Single line expression
|
||||||
|
firstLine = firstLine.trim().slice(0, -2)
|
||||||
|
found = true
|
||||||
|
}
|
||||||
|
|
||||||
|
for (next = start; !found;) {
|
||||||
|
next++
|
||||||
|
|
||||||
|
if (next >= end) { break }
|
||||||
|
|
||||||
|
pos = state.bMarks[next] + state.tShift[next]
|
||||||
|
max = state.eMarks[next]
|
||||||
|
|
||||||
|
if (pos < max && state.tShift[next] < state.blkIndent) {
|
||||||
|
// non-empty line with negative indent should stop the list:
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
if (state.src.slice(pos, max).trim().slice(-2) === '$$') {
|
||||||
|
lastPos = state.src.slice(0, max).lastIndexOf('$$')
|
||||||
|
lastLine = state.src.slice(pos, lastPos)
|
||||||
|
found = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
state.line = next + 1
|
||||||
|
|
||||||
|
token = state.push('mathjax_block', 'math', 0)
|
||||||
|
token.block = true
|
||||||
|
token.content = (firstLine && firstLine.trim() ? firstLine + '\n' : '') +
|
||||||
|
state.getLines(start + 1, next, state.tShift[start], true) +
|
||||||
|
(lastLine && lastLine.trim() ? lastLine : '')
|
||||||
|
token.map = [ start, state.line ]
|
||||||
|
token.markup = '$$'
|
||||||
|
return true
|
||||||
|
}
|
136
yarn.lock
136
yarn.lock
@ -2840,7 +2840,7 @@ acorn-globals@^3.0.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
acorn "^4.0.4"
|
acorn "^4.0.4"
|
||||||
|
|
||||||
acorn-globals@^4.1.0, acorn-globals@^4.3.2:
|
acorn-globals@^4.3.2:
|
||||||
version "4.3.4"
|
version "4.3.4"
|
||||||
resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.4.tgz#9fa1926addc11c97308c4e66d7add0d40c3272e7"
|
resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.4.tgz#9fa1926addc11c97308c4e66d7add0d40c3272e7"
|
||||||
integrity sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==
|
integrity sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==
|
||||||
@ -2873,11 +2873,6 @@ acorn@^4.0.1, acorn@^4.0.4, acorn@~4.0.2:
|
|||||||
resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787"
|
resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787"
|
||||||
integrity sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=
|
integrity sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=
|
||||||
|
|
||||||
acorn@^5.5.3:
|
|
||||||
version "5.7.3"
|
|
||||||
resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279"
|
|
||||||
integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==
|
|
||||||
|
|
||||||
acorn@^6.0.1:
|
acorn@^6.0.1:
|
||||||
version "6.3.0"
|
version "6.3.0"
|
||||||
resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.3.0.tgz#0087509119ffa4fc0a0041d1e93a417e68cb856e"
|
resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.3.0.tgz#0087509119ffa4fc0a0041d1e93a417e68cb856e"
|
||||||
@ -5572,22 +5567,15 @@ csso@^3.5.1:
|
|||||||
dependencies:
|
dependencies:
|
||||||
css-tree "1.0.0-alpha.29"
|
css-tree "1.0.0-alpha.29"
|
||||||
|
|
||||||
cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0", cssom@~0.3.6:
|
|
||||||
version "0.3.8"
|
|
||||||
resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a"
|
|
||||||
integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==
|
|
||||||
|
|
||||||
cssom@^0.4.1:
|
cssom@^0.4.1:
|
||||||
version "0.4.4"
|
version "0.4.4"
|
||||||
resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10"
|
resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10"
|
||||||
integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==
|
integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==
|
||||||
|
|
||||||
cssstyle@^1.0.0:
|
cssom@~0.3.6:
|
||||||
version "1.4.0"
|
version "0.3.8"
|
||||||
resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-1.4.0.tgz#9d31328229d3c565c61e586b02041a28fccdccf1"
|
resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a"
|
||||||
integrity sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==
|
integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==
|
||||||
dependencies:
|
|
||||||
cssom "0.3.x"
|
|
||||||
|
|
||||||
cssstyle@^2.0.0:
|
cssstyle@^2.0.0:
|
||||||
version "2.2.0"
|
version "2.2.0"
|
||||||
@ -5924,7 +5912,7 @@ dashdash@^1.12.0, dashdash@^1.14.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
assert-plus "^1.0.0"
|
assert-plus "^1.0.0"
|
||||||
|
|
||||||
data-urls@^1.0.0, data-urls@^1.1.0:
|
data-urls@^1.1.0:
|
||||||
version "1.1.0"
|
version "1.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-1.1.0.tgz#15ee0582baa5e22bb59c77140da8f9c76963bbfe"
|
resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-1.1.0.tgz#15ee0582baa5e22bb59c77140da8f9c76963bbfe"
|
||||||
integrity sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==
|
integrity sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==
|
||||||
@ -6634,18 +6622,6 @@ escodegen@^1.11.1:
|
|||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
source-map "~0.6.1"
|
source-map "~0.6.1"
|
||||||
|
|
||||||
escodegen@^1.9.1:
|
|
||||||
version "1.12.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.12.0.tgz#f763daf840af172bb3a2b6dd7219c0e17f7ff541"
|
|
||||||
integrity sha512-TuA+EhsanGcme5T3R0L80u4t8CpbXQjegRmf7+FPTJrtCTErXFeelblRgHQa1FofEzqYYJmJ/OqjTwREp9qgmg==
|
|
||||||
dependencies:
|
|
||||||
esprima "^3.1.3"
|
|
||||||
estraverse "^4.2.0"
|
|
||||||
esutils "^2.0.2"
|
|
||||||
optionator "^0.8.1"
|
|
||||||
optionalDependencies:
|
|
||||||
source-map "~0.6.1"
|
|
||||||
|
|
||||||
eslint-config-requarks@1.0.7:
|
eslint-config-requarks@1.0.7:
|
||||||
version "1.0.7"
|
version "1.0.7"
|
||||||
resolved "https://registry.yarnpkg.com/eslint-config-requarks/-/eslint-config-requarks-1.0.7.tgz#d2f1495ace70d5c88961c8bec4741efddd03458a"
|
resolved "https://registry.yarnpkg.com/eslint-config-requarks/-/eslint-config-requarks-1.0.7.tgz#d2f1495ace70d5c88961c8bec4741efddd03458a"
|
||||||
@ -6821,11 +6797,6 @@ espree@^6.1.2:
|
|||||||
acorn-jsx "^5.1.0"
|
acorn-jsx "^5.1.0"
|
||||||
eslint-visitor-keys "^1.1.0"
|
eslint-visitor-keys "^1.1.0"
|
||||||
|
|
||||||
esprima@^3.1.3:
|
|
||||||
version "3.1.3"
|
|
||||||
resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633"
|
|
||||||
integrity sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=
|
|
||||||
|
|
||||||
esprima@^4.0.0, esprima@^4.0.1, esprima@~4.0.0:
|
esprima@^4.0.0, esprima@^4.0.1, esprima@~4.0.0:
|
||||||
version "4.0.1"
|
version "4.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
|
resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
|
||||||
@ -9245,38 +9216,6 @@ jsbn@~0.1.0:
|
|||||||
resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
|
resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
|
||||||
integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM=
|
integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM=
|
||||||
|
|
||||||
jsdom@^11.0.0:
|
|
||||||
version "11.12.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-11.12.0.tgz#1a80d40ddd378a1de59656e9e6dc5a3ba8657bc8"
|
|
||||||
integrity sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==
|
|
||||||
dependencies:
|
|
||||||
abab "^2.0.0"
|
|
||||||
acorn "^5.5.3"
|
|
||||||
acorn-globals "^4.1.0"
|
|
||||||
array-equal "^1.0.0"
|
|
||||||
cssom ">= 0.3.2 < 0.4.0"
|
|
||||||
cssstyle "^1.0.0"
|
|
||||||
data-urls "^1.0.0"
|
|
||||||
domexception "^1.0.1"
|
|
||||||
escodegen "^1.9.1"
|
|
||||||
html-encoding-sniffer "^1.0.2"
|
|
||||||
left-pad "^1.3.0"
|
|
||||||
nwsapi "^2.0.7"
|
|
||||||
parse5 "4.0.0"
|
|
||||||
pn "^1.1.0"
|
|
||||||
request "^2.87.0"
|
|
||||||
request-promise-native "^1.0.5"
|
|
||||||
sax "^1.2.4"
|
|
||||||
symbol-tree "^3.2.2"
|
|
||||||
tough-cookie "^2.3.4"
|
|
||||||
w3c-hr-time "^1.0.1"
|
|
||||||
webidl-conversions "^4.0.2"
|
|
||||||
whatwg-encoding "^1.0.3"
|
|
||||||
whatwg-mimetype "^2.1.0"
|
|
||||||
whatwg-url "^6.4.1"
|
|
||||||
ws "^5.2.0"
|
|
||||||
xml-name-validator "^3.0.0"
|
|
||||||
|
|
||||||
jsdom@^15.2.1:
|
jsdom@^15.2.1:
|
||||||
version "15.2.1"
|
version "15.2.1"
|
||||||
resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-15.2.1.tgz#d2feb1aef7183f86be521b8c6833ff5296d07ec5"
|
resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-15.2.1.tgz#d2feb1aef7183f86be521b8c6833ff5296d07ec5"
|
||||||
@ -9600,11 +9539,6 @@ ldapjs@^1.0.2:
|
|||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
dtrace-provider "~0.8"
|
dtrace-provider "~0.8"
|
||||||
|
|
||||||
left-pad@^1.3.0:
|
|
||||||
version "1.3.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.3.0.tgz#5b8a3a7765dfe001261dde915589e782f8c94d1e"
|
|
||||||
integrity sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==
|
|
||||||
|
|
||||||
leven@^3.1.0:
|
leven@^3.1.0:
|
||||||
version "3.1.0"
|
version "3.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2"
|
resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2"
|
||||||
@ -10057,19 +9991,10 @@ math-expression-evaluator@^1.2.14:
|
|||||||
resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz#de819fdbcd84dccd8fae59c6aeb79615b9d266ac"
|
resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz#de819fdbcd84dccd8fae59c6aeb79615b9d266ac"
|
||||||
integrity sha1-3oGf282E3M2PrlnGrreWFbnSZqw=
|
integrity sha1-3oGf282E3M2PrlnGrreWFbnSZqw=
|
||||||
|
|
||||||
mathjax-node@2.1.1:
|
mathjax@3.0.5:
|
||||||
version "2.1.1"
|
version "3.0.5"
|
||||||
resolved "https://registry.yarnpkg.com/mathjax-node/-/mathjax-node-2.1.1.tgz#25c80f494f7540418ffcfa9cc756dfd2150201bd"
|
resolved "https://registry.yarnpkg.com/mathjax/-/mathjax-3.0.5.tgz#707e703a9c1d95f0790bbd404b895566f459d514"
|
||||||
integrity sha1-JcgPSU91QEGP/Pqcx1bf0hUCAb0=
|
integrity sha512-9M7VulhltkD8sIebWutK/VfAD+m+6BIFqfpjDh9Pz/etoKUtjO6UMnOhUcDmNl6iApE8C9xrUmaMyNZkZAlrMw==
|
||||||
dependencies:
|
|
||||||
is-fullwidth-code-point "^2.0.0"
|
|
||||||
jsdom "^11.0.0"
|
|
||||||
mathjax "^2.7.2"
|
|
||||||
|
|
||||||
mathjax@^2.7.2:
|
|
||||||
version "2.7.6"
|
|
||||||
resolved "https://registry.yarnpkg.com/mathjax/-/mathjax-2.7.6.tgz#b43d5f59a78e4b51c61e4cc8b52cbaa5b1a9e80b"
|
|
||||||
integrity sha512-RKFn28kVFSL9xyy6aCoI5fj/Vb9yCr4sI5VdzrKy95FuN7zngJfNZNqWezSVjNYFjZ8Dfrap5GoYcPqqhKWSkA==
|
|
||||||
|
|
||||||
md5.js@^1.3.4:
|
md5.js@^1.3.4:
|
||||||
version "1.3.5"
|
version "1.3.5"
|
||||||
@ -10883,11 +10808,6 @@ number-is-nan@^1.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
|
resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
|
||||||
integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=
|
integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=
|
||||||
|
|
||||||
nwsapi@^2.0.7:
|
|
||||||
version "2.1.4"
|
|
||||||
resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.1.4.tgz#e006a878db23636f8e8a67d33ca0e4edf61a842f"
|
|
||||||
integrity sha512-iGfd9Y6SFdTNldEy2L0GUhcarIutFmk+MPWIn9dmj8NMIup03G08uUF2KGbbmv/Ux4RT0VZJoP/sVbWA6d/VIw==
|
|
||||||
|
|
||||||
nwsapi@^2.2.0:
|
nwsapi@^2.2.0:
|
||||||
version "2.2.0"
|
version "2.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7"
|
resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7"
|
||||||
@ -11319,11 +11239,6 @@ parse-passwd@^1.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6"
|
resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6"
|
||||||
integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=
|
integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=
|
||||||
|
|
||||||
parse5@4.0.0:
|
|
||||||
version "4.0.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608"
|
|
||||||
integrity sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==
|
|
||||||
|
|
||||||
parse5@5.1.0:
|
parse5@5.1.0:
|
||||||
version "5.1.0"
|
version "5.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.0.tgz#c59341c9723f414c452975564c7c00a68d58acd2"
|
resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.0.tgz#c59341c9723f414c452975564c7c00a68d58acd2"
|
||||||
@ -13705,13 +13620,6 @@ repeat-string@^1.5.2, repeat-string@^1.6.1:
|
|||||||
resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
|
resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
|
||||||
integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc=
|
integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc=
|
||||||
|
|
||||||
request-promise-core@1.1.2:
|
|
||||||
version "1.1.2"
|
|
||||||
resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.2.tgz#339f6aababcafdb31c799ff158700336301d3346"
|
|
||||||
integrity sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag==
|
|
||||||
dependencies:
|
|
||||||
lodash "^4.17.11"
|
|
||||||
|
|
||||||
request-promise-core@1.1.3:
|
request-promise-core@1.1.3:
|
||||||
version "1.1.3"
|
version "1.1.3"
|
||||||
resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.3.tgz#e9a3c081b51380dfea677336061fea879a829ee9"
|
resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.3.tgz#e9a3c081b51380dfea677336061fea879a829ee9"
|
||||||
@ -13719,15 +13627,6 @@ request-promise-core@1.1.3:
|
|||||||
dependencies:
|
dependencies:
|
||||||
lodash "^4.17.15"
|
lodash "^4.17.15"
|
||||||
|
|
||||||
request-promise-native@^1.0.5:
|
|
||||||
version "1.0.7"
|
|
||||||
resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.7.tgz#a49868a624bdea5069f1251d0a836e0d89aa2c59"
|
|
||||||
integrity sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w==
|
|
||||||
dependencies:
|
|
||||||
request-promise-core "1.1.2"
|
|
||||||
stealthy-require "^1.1.1"
|
|
||||||
tough-cookie "^2.3.3"
|
|
||||||
|
|
||||||
request-promise-native@^1.0.7:
|
request-promise-native@^1.0.7:
|
||||||
version "1.0.8"
|
version "1.0.8"
|
||||||
resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.8.tgz#a455b960b826e44e2bf8999af64dff2bfe58cb36"
|
resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.8.tgz#a455b960b826e44e2bf8999af64dff2bfe58cb36"
|
||||||
@ -15347,7 +15246,7 @@ token-types@^2.0.0:
|
|||||||
"@tokenizer/token" "^0.1.0"
|
"@tokenizer/token" "^0.1.0"
|
||||||
ieee754 "^1.1.13"
|
ieee754 "^1.1.13"
|
||||||
|
|
||||||
tough-cookie@^2.3.3, tough-cookie@^2.3.4, tough-cookie@^2.4.3, tough-cookie@~2.5.0:
|
tough-cookie@^2.3.3, tough-cookie@^2.4.3, tough-cookie@~2.5.0:
|
||||||
version "2.5.0"
|
version "2.5.0"
|
||||||
resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2"
|
resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2"
|
||||||
integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==
|
integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==
|
||||||
@ -16236,7 +16135,7 @@ webpackbar@4.0.0:
|
|||||||
text-table "^0.2.0"
|
text-table "^0.2.0"
|
||||||
wrap-ansi "^6.0.0"
|
wrap-ansi "^6.0.0"
|
||||||
|
|
||||||
whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3, whatwg-encoding@^1.0.5:
|
whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.5:
|
||||||
version "1.0.5"
|
version "1.0.5"
|
||||||
resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0"
|
resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0"
|
||||||
integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==
|
integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==
|
||||||
@ -16258,20 +16157,11 @@ whatwg-fetch@^2.0.0, whatwg-fetch@^2.0.3:
|
|||||||
resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz#dde6a5df315f9d39991aa17621853d720b85566f"
|
resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz#dde6a5df315f9d39991aa17621853d720b85566f"
|
||||||
integrity sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng==
|
integrity sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng==
|
||||||
|
|
||||||
whatwg-mimetype@^2.1.0, whatwg-mimetype@^2.2.0, whatwg-mimetype@^2.3.0:
|
whatwg-mimetype@^2.2.0, whatwg-mimetype@^2.3.0:
|
||||||
version "2.3.0"
|
version "2.3.0"
|
||||||
resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf"
|
resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf"
|
||||||
integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==
|
integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==
|
||||||
|
|
||||||
whatwg-url@^6.4.1:
|
|
||||||
version "6.5.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-6.5.0.tgz#f2df02bff176fd65070df74ad5ccbb5a199965a8"
|
|
||||||
integrity sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==
|
|
||||||
dependencies:
|
|
||||||
lodash.sortby "^4.7.0"
|
|
||||||
tr46 "^1.0.1"
|
|
||||||
webidl-conversions "^4.0.2"
|
|
||||||
|
|
||||||
whatwg-url@^7.0.0:
|
whatwg-url@^7.0.0:
|
||||||
version "7.0.0"
|
version "7.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.0.0.tgz#fde926fa54a599f3adf82dff25a9f7be02dc6edd"
|
resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.0.0.tgz#fde926fa54a599f3adf82dff25a9f7be02dc6edd"
|
||||||
|
Loading…
Reference in New Issue
Block a user