diff --git a/CHANGELOG.adoc b/CHANGELOG.adoc index c9903805a700ef4f7e88b82e6d79f30567884b68..bfaf62623222fdbf1527421b8dd6387383433efa 100644 --- a/CHANGELOG.adoc +++ b/CHANGELOG.adoc @@ -9,9 +9,14 @@ This project utilizes semantic versioning. === Changed +* *asciidoc-loader*: Upgrade to Asciidoctor.js 2 and allow use of newer patch versions (#522) * *infrastructure*: Migrate Windows CI pipeline from AppVeyor CI to GitLab CI (#732) * *infrastructure*: Run tests nightly on Node 12 and Node 14 (in addition to Node 10) (#731) +=== Fixed + +* *asciidoc-loader*: Don't crash if stem block is empty (#663) + == 3.0.0-alpha.2 (2021-04-08) === Added diff --git a/packages/asciidoc-loader/lib/converter/html5.js b/packages/asciidoc-loader/lib/converter/html5.js index caf9a49e2754a366e1f644e5d2dfa1fde9cf2fe3..a0d132a3179f25d3e2fa4eacdb5a492e502ab749 100644 --- a/packages/asciidoc-loader/lib/converter/html5.js +++ b/packages/asciidoc-loader/lib/converter/html5.js @@ -17,7 +17,7 @@ const Html5Converter = (() => { this[$pageRefCallback] = callbacks.onPageRef this[$imageRefCallback] = callbacks.onImageRef }) - Opal.defn(scope, '$inline_anchor', function convertInlineAnchor (node) { + Opal.defn(scope, '$convert_inline_anchor', function convertInlineAnchor (node) { if (node.getType() === 'xref') { let callback let refSpec = node.getAttribute('path', undefined, false) @@ -41,15 +41,15 @@ const Html5Converter = (() => { node = Opal.module(null, 'Asciidoctor').Inline.$new(node.getParent(), 'anchor', content, options) } } - return Opal.send(this, Opal.find_super_dispatcher(this, 'inline_anchor', convertInlineAnchor), [node]) + return Opal.send(this, Opal.find_super_dispatcher(this, 'convert_inline_anchor', convertInlineAnchor), [node]) }) - Opal.defn(scope, '$image', function convertImage (node) { - return Opal.send(this, Opal.find_super_dispatcher(this, 'image', convertImage), [ + Opal.defn(scope, '$convert_image', function convertImage (node) { + return Opal.send(this, Opal.find_super_dispatcher(this, 'convert_image', convertImage), [ transformImageNode(this, node, node.getAttribute('target')), ]) }) - Opal.defn(scope, '$inline_image', function convertInlineImage (node) { - return Opal.send(this, Opal.find_super_dispatcher(this, 'inline_image', convertInlineImage), [ + Opal.defn(scope, '$convert_inline_image', function convertInlineImage (node) { + return Opal.send(this, Opal.find_super_dispatcher(this, 'convert_inline_image', convertInlineImage), [ transformImageNode(this, node, node.getTarget()), ]) }) diff --git a/packages/asciidoc-loader/lib/include/include-processor.js b/packages/asciidoc-loader/lib/include/include-processor.js index 44ab011101c2e3e3b105bc111e68746cc28742fc..2d35b84c623a5314f2811e514fe9ce8e0d38520c 100644 --- a/packages/asciidoc-loader/lib/include/include-processor.js +++ b/packages/asciidoc-loader/lib/include/include-processor.js @@ -20,10 +20,9 @@ const IncludeProcessor = (() => { }) Opal.defn(scope, '$process', function (doc, reader, target, attrs) { - if (reader.$include_depth() >= Opal.hash_get(reader.maxdepth, 'abs')) { - if (Opal.hash_get(reader.maxdepth, 'abs')) { - log('error', `maximum include depth of ${Opal.hash_get(reader.maxdepth, 'rel')} exceeded`, reader) - } + if (reader.maxdepth === Opal.nil) return + if (reader.$include_depth() >= Opal.hash_get(reader.maxdepth, 'curr')) { + log('error', `maximum include depth of ${Opal.hash_get(reader.maxdepth, 'rel')} exceeded`, reader) return } const resolvedFile = this[$callback](doc, target, reader.$cursor_at_prev_line()) diff --git a/packages/asciidoc-loader/lib/load-asciidoc.js b/packages/asciidoc-loader/lib/load-asciidoc.js index 3ed061555ccbf45b1a818c80b319b0e598a86763..146110ba3beb57a3525bac844cd7f3047b998336 100644 --- a/packages/asciidoc-loader/lib/load-asciidoc.js +++ b/packages/asciidoc-loader/lib/load-asciidoc.js @@ -1,12 +1,12 @@ 'use strict' // IMPORTANT eagerly load Opal to force the String encoding from UTF-16LE to UTF-8 -const Opal = require('opal-runtime').Opal +const Opal = require('asciidoctor-opal-runtime').Opal if ('encoding' in String.prototype && String(String.prototype.encoding) !== 'UTF-8') { String.prototype.encoding = Opal.const_get_local(Opal.const_get_qualified('::', 'Encoding'), 'UTF_8') // eslint-disable-line no-extend-native } -const asciidoctor = require('asciidoctor.js')() +const asciidoctor = require('@asciidoctor/core')() const Extensions = asciidoctor.Extensions const convertImageRef = require('./image/convert-image-ref') const convertPageRef = require('./xref/convert-page-ref') diff --git a/packages/asciidoc-loader/package.json b/packages/asciidoc-loader/package.json index d58735f4e92e74438cb45328ddad01def38373a6..552885c99d78db679d562284d7aa68c529cf7ba9 100644 --- a/packages/asciidoc-loader/package.json +++ b/packages/asciidoc-loader/package.json @@ -17,8 +17,8 @@ }, "main": "lib/index.js", "dependencies": { - "asciidoctor.js": "1.5.9", - "opal-runtime": "1.0.11" + "@asciidoctor/core": "~2.2.0", + "asciidoctor-opal-runtime": "0.3.2" }, "engines": { "node": ">=10.17.0" diff --git a/packages/asciidoc-loader/test/load-asciidoc-test.js b/packages/asciidoc-loader/test/load-asciidoc-test.js index b3cc8f465807cd4e5dd679ee01a9641685451890..53c1fb58875e7ea5dc0ac51852d612d157ea2d08 100644 --- a/packages/asciidoc-loader/test/load-asciidoc-test.js +++ b/packages/asciidoc-loader/test/load-asciidoc-test.js @@ -121,6 +121,20 @@ describe('loadAsciiDoc()', () => { expect(doc.getAttribute('page-layout')).to.eql('home') }) + it('should apply source style to listing block if source-language is set on document', () => { + const contents = heredoc` + :source-language: ruby + + ---- + puts "Hello, World!" + ---- + ` + setInputFileContents(contents) + const doc = loadAsciiDoc(inputFile) + expect(doc.getBlocks()).to.have.lengthOf(1) + expect(doc.getBlocks()[0].getStyle()).to.eql('source') + }) + it('should not hang on mismatched passthrough syntax', () => { const contents = 'Link the system library `+libconfig++.so.9+` located at `+/usr/lib64/libconfig++.so.9+`.' const html = Asciidoctor.convert(contents, { safe: 'safe' }) @@ -225,7 +239,7 @@ describe('loadAsciiDoc()', () => { 'page-relative-src-path': 'page-a.adoc', // computed doctitle: 'Document Title', - docrole: 'docrole', + role: 'docrole', notitle: '', embedded: '', 'safe-mode-name': 'safe', @@ -500,11 +514,9 @@ describe('loadAsciiDoc()', () => { expect(shoutBlockExtension.registered).to.equal(2) expect(html).to.include('RELEASE EARLY. RELEASE OFTEN') - let messages - ;[html, messages] = captureStderr(() => loadAsciiDoc(inputFile).convert()) + html = loadAsciiDoc(inputFile).convert() + expect(shoutBlockExtension.registered).to.equal(2) expect(html).to.include('Release early. Release often.') - expect(messages).to.have.lengthOf(1) - expect(messages[0]).to.include('page-a.adoc: line 2: invalid style for paragraph: shout') }) it('should give extension access to context that includes current file and content catalog', () => { @@ -631,6 +643,50 @@ describe('loadAsciiDoc()', () => { expect(firstBlock.getSourceLines()).to.eql(['before', expectedSource, 'after']) }) + it('should not remove trailing spaces from lines of a non-AsciiDoc include file', () => { + const includeContents = ['puts "Hello"\t', 'sleep 5 ', 'puts "See ya!" '].join('\n') + const contentCatalog = mockContentCatalog({ + family: 'example', + relative: 'visit.rb', + contents: includeContents, + }).spyOn('getById') + setInputFileContents(['----', 'include::example$visit.rb[]', '----'].join('\n')) + const doc = loadAsciiDoc(inputFile, contentCatalog) + expect(contentCatalog.getById) + .nth(1) + .called.with({ + component: 'component-a', + version: 'master', + module: 'module-a', + family: 'example', + relative: 'visit.rb', + }) + expect(doc.getBlocks()).to.have.lengthOf(1) + expect(doc.getBlocks()[0].getContent()).to.equal(includeContents) + }) + + it('should not drop leading and trailing empty lines of AsciiDoc include file', () => { + const includeContents = ['', 'included content', '', ''].join('\n') + const contentCatalog = mockContentCatalog({ + family: 'partial', + relative: 'paragraph.adoc', + contents: includeContents, + }).spyOn('getById') + setInputFileContents(['before', 'include::partial$paragraph.adoc[]', 'after'].join('\n')) + const doc = loadAsciiDoc(inputFile, contentCatalog) + expect(contentCatalog.getById) + .nth(1) + .called.with({ + component: 'component-a', + version: 'master', + module: 'module-a', + family: 'partial', + relative: 'paragraph.adoc', + }) + expect(doc.getBlocks()).to.have.lengthOf(3) + expect(doc.getBlocks()[1].getSourceLines()).to.eql(['included content']) + }) + it('should not crash if contents of included file is undefined', () => { const contentCatalog = mockContentCatalog({ family: 'partial', @@ -1223,7 +1279,7 @@ describe('loadAsciiDoc()', () => { expect(doc.getBlocks()).to.have.lengthOf(1) expect(messages).to.have.lengthOf(1) expect(messages[0].trim()).to.equal( - 'asciidoctor: ERROR: greeting.adoc: line 3: maximum include depth of 1 exceeded' + 'asciidoctor: ERROR: greeting.adoc: line 3: maximum include depth of 0 exceeded' ) }) @@ -1590,6 +1646,28 @@ describe('loadAsciiDoc()', () => { expect(firstBlock.getSourceLines()).to.eql(includeContents.split('\n').filter((l) => l.charAt() !== '#')) }) + it('should not drop leading and trailing empty lines inside a tagged region of AsciiDoc include file', () => { + const includeContents = ['preamble', 'tag::main[]', '', 'included content', '', 'end::main[]', 'trailer'].join('\n') + const contentCatalog = mockContentCatalog({ + family: 'partial', + relative: 'paragraph.adoc', + contents: includeContents, + }).spyOn('getById') + setInputFileContents(['before', 'include::partial$paragraph.adoc[tag=main]', 'after'].join('\n')) + const doc = loadAsciiDoc(inputFile, contentCatalog) + expect(contentCatalog.getById) + .nth(1) + .called.with({ + component: 'component-a', + version: 'master', + module: 'module-a', + family: 'partial', + relative: 'paragraph.adoc', + }) + expect(doc.getBlocks()).to.have.lengthOf(3) + expect(doc.getBlocks()[1].getSourceLines()).to.eql(['included content']) + }) + it('should match tag directives enclosed in circumfix comments', () => { const cssContents = heredoc` /* tag::snippet[] */ @@ -3239,7 +3317,7 @@ describe('loadAsciiDoc()', () => { relative: 'index.adoc', }) ;[ - 'xref:6.5@relnotes::index.adoc[completely removed\\]', + 'xref:6.5@relnotes::index.adoc[completely removed]', '<<6.5@relnotes::index.adoc#,completely removed>>', ].forEach((pageMacro) => { const contents = `Text.footnote:[Support for pixie dust has been ${pageMacro}.]` @@ -3261,7 +3339,7 @@ describe('loadAsciiDoc()', () => { relative: 'index.adoc', }) ;[ - 'xref:6.5@relnotes::index.adoc[completely removed\\]', + 'xref:6.5@relnotes::index.adoc[completely removed]', '<<6.5@relnotes::index.adoc#,completely removed>>', ].forEach((pageMacro) => { const contents = heredoc` diff --git a/packages/cli/lib/cli.js b/packages/cli/lib/cli.js index 172a07e55309292c1fe498faa879c95bb8bded39..e5b5a30156ccb131ee2bee572244f9e54f9d8a83 100644 --- a/packages/cli/lib/cli.js +++ b/packages/cli/lib/cli.js @@ -19,13 +19,15 @@ async function run (argv = process.argv) { } function exitWithError (err, showStack, msg = undefined) { - msg = `error: ${msg || err.message || err}` - // NOTE: the fallback for locating the stack can likely be removed after upgrading to Asciidoctor 2 - console.error( - showStack - ? err.stack || (err.backtrace ? [msg, ...err.backtrace.slice(1)].join('\n') : `${msg} (no stack)`) - : `${msg}\nAdd the --stacktrace option to see the cause.` - ) + if (!msg) msg = err.message || err + if (showStack) { + const stack = err.backtrace || (err.stack && err.stack.split('\n')) || [] + const msgLine = stack.shift() + msg = msgLine && msgLine.endsWith(': ' + msg) ? msgLine : `error: ${msg}` + console.error(stack.length ? [msg, ...stack].join('\n') : `${msg} (no stack)`) + } else { + console.error(`error: ${msg}\nAdd the --stacktrace option to see the cause.`) + } process.exit(1) } diff --git a/packages/cli/test/fixtures/global-fail-tree-processor.js b/packages/cli/test/fixtures/global-fail-tree-processor.js index d536b3f969792caf888e8c822a3dc4e61d4a0297..1d99dac5526442b3d2425ec868a1c5720143d0d7 100644 --- a/packages/cli/test/fixtures/global-fail-tree-processor.js +++ b/packages/cli/test/fixtures/global-fail-tree-processor.js @@ -1,6 +1,6 @@ 'use strict' -const asciidoctor = require('asciidoctor.js')() +const asciidoctor = require('@asciidoctor/core')() asciidoctor.Extensions.register(function () { this.treeProcessor(function () { diff --git a/packages/cli/test/fixtures/global-postprocessor.js b/packages/cli/test/fixtures/global-postprocessor.js index 1afbd32271fc31d4b5d43c0eacc9345c91d96b09..11eea35d7bb44950e447aa4c5ecc5a783a3a7747 100644 --- a/packages/cli/test/fixtures/global-postprocessor.js +++ b/packages/cli/test/fixtures/global-postprocessor.js @@ -1,6 +1,6 @@ 'use strict' -const asciidoctor = require('asciidoctor.js')() +const asciidoctor = require('@asciidoctor/core')() asciidoctor.Extensions.register(function () { this.postprocessor(function () { diff --git a/packages/document-converter/test/convert-document-test.js b/packages/document-converter/test/convert-document-test.js index cab1c0134b48bbc2382bdf5222ef841ceeaf59bd..844c2078cc7ea2013f2b96ed8d3984116c111822 100644 --- a/packages/document-converter/test/convert-document-test.js +++ b/packages/document-converter/test/convert-document-test.js @@ -125,8 +125,7 @@ describe('convertDocument()', () => { `) }) - // TODO: reverse this test once Asciidoctor.js is upgraded - it('should throw an exception if contents of stem block is empty', () => { + it('should not throw exception if contents of stem block is empty', () => { inputFile.contents = Buffer.from(heredoc` = Page Title @@ -134,7 +133,8 @@ describe('convertDocument()', () => { ++++ ++++ `) - expect(() => convertDocument(inputFile, undefined, asciidocConfig)).to.throw("undefined method `include?' for nil") + expect(() => convertDocument(inputFile, undefined, asciidocConfig)).to.not.throw() + expect(inputFile.contents.toString()).to.include('
') }) it('should resolve attachment relative to module root', () => { diff --git a/test/test-utils.js b/test/test-utils.js index 4c1e209991cc7734d03ffd86d314714e8311d4d3..349aac6f1a6a1bd253d8a2795d15cd33c027814e 100644 --- a/test/test-utils.js +++ b/test/test-utils.js @@ -3,7 +3,7 @@ process.env.NODE_ENV = 'test' // IMPORTANT eagerly load Opal since we'll always be in this context; change String encoding from UTF-16LE to UTF-8 -const { Opal } = require('opal-runtime') +const { Opal } = require('asciidoctor-opal-runtime') if ('encoding' in String.prototype && String(String.prototype.encoding) !== 'UTF-8') { String.prototype.encoding = Opal.const_get_local(Opal.const_get_qualified('::', 'Encoding'), 'UTF_8') // eslint-disable-line } diff --git a/yarn.lock b/yarn.lock index ea77432a033414f6006633719c09328df3db70c0..03b0ac0e258ec27e77b7aabf4346c1f87f2f33f1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7,6 +7,14 @@ resolved "https://registry.yarnpkg.com/@antora/expand-path-helper/-/expand-path-helper-1.0.0.tgz#3bfd6938ab86d4709af8d869cbf3bb17b8fe8912" integrity sha512-hg3y6M3OvRTb7jtLAnwwloYDxafbyKYttcf16kGCXvP7Wqosh7c+Ag+ltaZ7VSebpzpphO/umb/BXdpU7rxapw== +"@asciidoctor/core@~2.2.0": + version "2.2.3" + resolved "https://registry.yarnpkg.com/@asciidoctor/core/-/core-2.2.3.tgz#b1ffcbb759f3548c195211e47bf4729f04d66837" + integrity sha512-hejJoR9VIbHFH5GI5v18JeD3P8pjew8bNaUQhwppCNoCqfqThm+Y3yVfTnm0FoYpeOD4gFNHa1dPYcTbhBOXoQ== + dependencies: + asciidoctor-opal-runtime "0.3.2" + unxhr "1.0.1" + "@babel/code-frame@7.12.11": version "7.12.11" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" @@ -292,9 +300,9 @@ "@types/node" "*" "@types/node@*": - version "14.14.37" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.37.tgz#a3dd8da4eb84a996c36e331df98d82abd76b516e" - integrity sha512-XYmBiy+ohOR4Lh5jE379fV2IU+6Jn4g5qASinhitfyO71b/sCo6MKsMLF5tc7Zf2CE8hViVQyYSobJNke8OvUw== + version "14.14.38" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.38.tgz#f8338bc36d81c31abf410ba64af9a6e3e8c14bf0" + integrity sha512-cTiIM5yNu+CxZO+QzKZ8W+FeiDbgIWKhU3HniQjyzb0R7SvmyEMFYtEu8l9A3wU7emobj6mxZV/4dmkY6jsftw== "@types/responselike@*", "@types/responselike@^1.0.0": version "1.0.0" @@ -394,9 +402,9 @@ ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.4, ajv@^6.9.1: uri-js "^4.2.2" ajv@^8.0.1: - version "8.0.5" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.0.5.tgz#f07d6fdeffcdbb80485570ce3f1bc845fcc812b9" - integrity sha512-RkiLa/AeJx7+9OvniQ/qeWu0w74A8DiPPBclQ6ji3ZQkv5KamO+QGpqmi7O4JIw3rHGUXZ6CoP9tsAkn3gyazg== + version "8.1.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.1.0.tgz#45d5d3d36c7cdd808930cc3e603cf6200dbeb736" + integrity sha512-B/Sk2Ix7A36fs/ZkuGLIR86EdjbgR6fsAcbx9lOP/QBSXujDNbVmIS/U4Itz5k8fPFDeVZl/zQ/gJW4Jrq6XjQ== dependencies: fast-deep-equal "^3.1.1" json-schema-traverse "^1.0.0" @@ -629,12 +637,13 @@ arrify@^2.0.1: resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== -asciidoctor.js@1.5.9: - version "1.5.9" - resolved "https://registry.yarnpkg.com/asciidoctor.js/-/asciidoctor.js-1.5.9.tgz#28f8e8ee134b82627f0240e9b6a201b3d15d9524" - integrity sha512-k5JgwyV82TsiCpnYbDPReuHhzf/vRUt6NaZ+OGywkDDGeGG/CPfvN2Gd1MJ0iIZKDyuk4iJHOdY/2x1KBrWMzA== +asciidoctor-opal-runtime@0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/asciidoctor-opal-runtime/-/asciidoctor-opal-runtime-0.3.2.tgz#4e8a20b7f8ff3ef13ad4575a6fd4b54be25ccb00" + integrity sha512-J9N2VMItYiJ0TVuCUsrD3cGxB5Y1noIuTACJ0LP7I3V4IhcQ3/LQwvLot0+AcXZTpLSN3KS2CauwNPri7+pkLA== dependencies: - opal-runtime "1.0.11" + glob "7.1.3" + unxhr "1.0.1" assertion-error@^1.1.0: version "1.1.0" @@ -831,15 +840,15 @@ browser-stdout@1.3.1: integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== browserslist@^4.14.5: - version "4.16.3" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.3.tgz#340aa46940d7db878748567c5dea24a48ddf3717" - integrity sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw== + version "4.16.4" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.4.tgz#7ebf913487f40caf4637b892b268069951c35d58" + integrity sha512-d7rCxYV8I9kj41RH8UKYnvDYCRENUlHRgyXy/Rhr/1BaeLGfiCptEdFE8MIrvGfWbBFNjVYx76SQWvNX1j+/cQ== dependencies: - caniuse-lite "^1.0.30001181" - colorette "^1.2.1" - electron-to-chromium "^1.3.649" + caniuse-lite "^1.0.30001208" + colorette "^1.2.2" + electron-to-chromium "^1.3.712" escalade "^3.1.1" - node-releases "^1.1.70" + node-releases "^1.1.71" buffer-alloc-unsafe@^1.1.0: version "1.1.0" @@ -974,7 +983,7 @@ camelcase@^6.0.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== -caniuse-lite@^1.0.30001181: +caniuse-lite@^1.0.30001208: version "1.0.30001208" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001208.tgz#a999014a35cebd4f98c405930a057a0d75352eb9" integrity sha512-OE5UE4+nBOro8Dyvv0lfx+SRtfVIOM9uhKqFmJeUbGriqhhStgp1A0OyBpgy3OUF8AhYCT+PVwPC1gMl2ZcQMA== @@ -1259,7 +1268,7 @@ color-support@^1.1.3: resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== -colorette@^1.2.1: +colorette@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94" integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w== @@ -1632,10 +1641,10 @@ each-props@^1.3.2: is-plain-object "^2.0.1" object.defaults "^1.1.0" -electron-to-chromium@^1.3.649: - version "1.3.711" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.711.tgz#92c3caf7ffed5e18bf63f66b4b57b4db2409c450" - integrity sha512-XbklBVCDiUeho0PZQCjC25Ha6uBwqqJeyDhPLwLwfWRAo4x+FZFsmu1pPPkXT+B4MQMQoQULfyaMltDopfeiHQ== +electron-to-chromium@^1.3.712: + version "1.3.717" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.717.tgz#78d4c857070755fb58ab64bcc173db1d51cbc25f" + integrity sha512-OfzVPIqD1MkJ7fX+yTl2nKyOE4FReeVfMCzzxQS+Kp43hZYwHwThlGP+EGIZRXJsxCM7dqo8Y65NOX/HP12iXQ== emoji-regex@^7.0.1: version "7.0.3" @@ -2575,14 +2584,15 @@ glob-watcher@^5.0.3: normalize-path "^3.0.0" object.defaults "^1.1.0" -glob@6.0.4: - version "6.0.4" - resolved "https://registry.yarnpkg.com/glob/-/glob-6.0.4.tgz#0f08860f6a155127b2fadd4f9ce24b1aab6e4d22" - integrity sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI= +glob@7.1.3: + version "7.1.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" + integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== dependencies: + fs.realpath "^1.0.0" inflight "^1.0.4" inherits "2" - minimatch "2 || 3" + minimatch "^3.0.4" once "^1.3.0" path-is-absolute "^1.0.0" @@ -2631,9 +2641,9 @@ globals@^12.1.0: type-fest "^0.8.1" globals@^13.6.0: - version "13.7.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.7.0.tgz#aed3bcefd80ad3ec0f0be2cf0c895110c0591795" - integrity sha512-Aipsz6ZKRxa/xQkZhNg0qIWXT6x6rD46f6x/PCnBomlttdIyAPak4YD9jTmKpZ72uROSMU87qJtcgpgHaVchiA== + version "13.8.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.8.0.tgz#3e20f504810ce87a8d72e55aecf8435b50f4c1b3" + integrity sha512-rHtdA6+PDBIjeEvA91rpqzEvk/k3/i7EeNQiryiWuJH0Hw9cpyJMAt2jtbAwUaRdhD+573X4vWw6IcjKPasi9Q== dependencies: type-fest "^0.20.2" @@ -3790,7 +3800,7 @@ minimatch-all@~1.1: dependencies: minimatch "^3.0.2" -"minimatch@2 || 3", minimatch@3.0.4, minimatch@^3.0.2, minimatch@^3.0.4: +minimatch@3.0.4, minimatch@^3.0.2, minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== @@ -3965,7 +3975,7 @@ node-preload@^0.2.1: dependencies: process-on-spawn "^1.0.0" -node-releases@^1.1.70: +node-releases@^1.1.71: version "1.1.71" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.71.tgz#cb1334b179896b1c89ecfdd4b725fb7bbdfc7dbb" integrity sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg== @@ -4170,14 +4180,6 @@ onetime@^2.0.0: dependencies: mimic-fn "^1.0.0" -opal-runtime@1.0.11: - version "1.0.11" - resolved "https://registry.yarnpkg.com/opal-runtime/-/opal-runtime-1.0.11.tgz#81fc2a2084ae5f25d5609eada375b756a3dab036" - integrity sha512-L+6pnRvXPlDtbamBRnJAnB9mEMXmsIQ/b+0r/2xJ5/n/nxheEkLo+Pm5QNQ08LEbEN9TI6/kedhIspqRRu6tXA== - dependencies: - glob "6.0.4" - xmlhttprequest "1.8.0" - optionator@^0.8.2: version "0.8.3" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" @@ -4448,9 +4450,9 @@ pend@~1.2.0: integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA= picomatch@^2.0.4, picomatch@^2.2.1, picomatch@~2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" - integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== + version "2.2.3" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.3.tgz#465547f359ccc206d3c48e46a1bcb89bf7ee619d" + integrity sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg== pid-from-port@^1.0.0: version "1.1.3" @@ -4866,9 +4868,9 @@ require-relative@^0.8.7: integrity sha1-eZlTn8ngR6N5KPoZb44VY9q9Nt4= resolve-alpn@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.0.0.tgz#745ad60b3d6aff4b4a48e01b8c0bdc70959e0e8c" - integrity sha512-rTuiIEqFmGxne4IovivKSDzld2lWW9QCjqv80SYjPgf+gS35eaCAjaP54CCwGAwBtnCsvNLYtqxe1Nw+i6JEmA== + version "1.1.1" + resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.1.1.tgz#4a006a7d533c81a5dd04681612090fde227cd6e1" + integrity sha512-0KbFjFPR2bnJhNx1t8Ad6RqVc8+QPJC4y561FYyC/Q/6OzB3fhUzB5PEgitYhPK6aifwR5gXBSnDMllaDWixGQ== resolve-dir@^1.0.0, resolve-dir@^1.0.1: version "1.0.1" @@ -5424,9 +5426,9 @@ table@^5.2.3: string-width "^3.0.0" table@^6.0.4: - version "6.0.9" - resolved "https://registry.yarnpkg.com/table/-/table-6.0.9.tgz#790a12bf1e09b87b30e60419bafd6a1fd85536fb" - integrity sha512-F3cLs9a3hL1Z7N4+EkSscsel3z55XT950AvB05bwayrNg5T1/gykXtigioTAjbltvbMSJvvhFCbnf6mX+ntnJQ== + version "6.1.0" + resolved "https://registry.yarnpkg.com/table/-/table-6.1.0.tgz#676a0cfb206008b59e783fcd94ef8ba7d67d966c" + integrity sha512-T4G5KMmqIk6X87gLKWyU5exPpTjLjY5KyrFWaIjv3SvgaIUGXV7UEzGEnZJdTA38/yUS6f9PlKezQ0bYXG3iIQ== dependencies: ajv "^8.0.1" is-boolean-object "^1.1.0" @@ -5631,9 +5633,9 @@ typescript@^3.2.1: integrity sha512-kdMjTiekY+z/ubJCATUPlRDl39vXYiMV9iyeMuEuXZh2we6zz80uovNN2WlAxmmdE/Z/YQe+EbOEXB5RHEED3w== uglify-js@^3.1.4: - version "3.13.3" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.13.3.tgz#ce72a1ad154348ea2af61f50933c76cc8802276e" - integrity sha512-otIc7O9LyxpUcQoXzj2hL4LPWKklO6LJWoJUzNa8A17Xgi4fOeDC8FBDOLHnC/Slo1CQgsZMcM6as0M76BZaig== + version "3.13.4" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.13.4.tgz#592588bb9f47ae03b24916e2471218d914955574" + integrity sha512-kv7fCkIXyQIilD5/yQy8O+uagsYIOt5cZvs890W40/e/rvjMSzJw81o9Bg0tkURxzZBROtDQhW2LFjOGoK3RZw== unbox-primitive@^1.0.0: version "1.0.1" @@ -5702,6 +5704,11 @@ unset-value@^1.0.0: has-value "^0.3.1" isobject "^3.0.0" +unxhr@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/unxhr/-/unxhr-1.0.1.tgz#92200322d66c728993de771f9e01eeb21f41bc7b" + integrity sha512-MAhukhVHyaLGDjyDYhy8gVjWJyhTECCdNsLwlMoGFoNJ3o79fpQhtQuzmAE4IxCMDwraF4cW8ZjpAV0m9CRQbg== + upath@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" @@ -5953,11 +5960,6 @@ xmldom@0.5.0: resolved "https://registry.yarnpkg.com/xmldom/-/xmldom-0.5.0.tgz#193cb96b84aa3486127ea6272c4596354cb4962e" integrity sha512-Foaj5FXVzgn7xFzsKeNIde9g6aFBxTPi37iwsno8QvApmtg7KYrr+OPyRHcJF7dud2a5nGRBXK3n0dL62Gf7PA== -xmlhttprequest@1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz#67fe075c5c24fef39f9d65f5f7b7fe75171968fc" - integrity sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw= - xtend@~4.0.0, xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"