diff --git a/package.json b/package.json index 13e53a7c9..34f88f9d6 100644 --- a/package.json +++ b/package.json @@ -40,7 +40,7 @@ "slash": "^3.0.0", "ts-jest": "^26.4.4", "typescript": "^4.1.2", - "vitepress": "^0.10.0", + "vitepress": "^0.10.1", "yorkie": "^2.0.0" }, "gitHooks": { diff --git a/packages/playground/assets/__tests__/assets.spec.ts b/packages/playground/assets/__tests__/assets.spec.ts index 494e731f0..5359c18d8 100644 --- a/packages/playground/assets/__tests__/assets.spec.ts +++ b/packages/playground/assets/__tests__/assets.spec.ts @@ -1,6 +1,12 @@ import fs from 'fs' import path from 'path' -import { getBg, getColor, isBuild, testDir } from '../../testUtils' +import { + findAssetFile, + getBg, + getColor, + isBuild, + testDir +} from '../../testUtils' const assetMatch = isBuild ? /\/foo\/assets\/asset\.\w{8}\.png/ @@ -66,14 +72,7 @@ describe('css url() references', () => { if (isBuild) { test('preserve postfix query/hash', () => { - const assetsDir = path.resolve(testDir, 'dist/foo/assets') - const files = fs.readdirSync(assetsDir) - const file = files.find((file) => { - return /\.\w+\.css$/.test(file) - }) - expect(fs.readFileSync(path.resolve(assetsDir, file), 'utf-8')).toMatch( - `woff2?#iefix` - ) + expect(findAssetFile(/\.css$/, 'foo')).toMatch(`woff2?#iefix`) }) } }) diff --git a/packages/playground/css/__tests__/css.spec.ts b/packages/playground/css/__tests__/css.spec.ts index 8cecc7224..de8c70302 100644 --- a/packages/playground/css/__tests__/css.spec.ts +++ b/packages/playground/css/__tests__/css.spec.ts @@ -1,4 +1,13 @@ -import { editFile, getColor, untilUpdated } from '../../testUtils' +import fs from 'fs' +import path from 'path' +import { + editFile, + findAssetFile, + getColor, + isBuild, + testDir, + untilUpdated +} from '../../testUtils' // note: tests should retrieve the element at the beginning of test and reuse it // in later assertions to ensure CSS HMR doesn't reload the page @@ -89,3 +98,43 @@ test('css modules w/ sass', async () => { ) await untilUpdated(() => getColor(imported), 'blue') }) + +test('async chunk', async () => { + const el = await page.$('.async') + expect(await getColor(el)).toBe('teal') + + if (isBuild) { + // assert that the css is inlined in the async chunk instead of in the + // main css file + expect(findAssetFile(/\.css$/)).not.toMatch('teal') + expect(findAssetFile(/async\.\w+\.js$/)).toMatch('.async{color:teal}') + } else { + // test hmr + editFile('async.css', (code) => code.replace('color: teal', 'color: blue')) + await untilUpdated(() => getColor(el), 'blue') + } +}) + +test('treeshaken async chunk', async () => { + if (isBuild) { + // should be absent in prod + expect( + await page.evaluate(() => { + return document.querySelector('.async-treeshaken') + }) + ).toBeNull() + // assert that the css is not present anywhere + expect(findAssetFile(/\.css$/)).not.toMatch('plum') + expect(findAssetFile(/index\.\w+\.js$/)).not.toMatch('.async{color:plum}') + expect(findAssetFile(/async\.\w+\.js$/)).not.toMatch('.async{color:plum}') + // should have no chunk! + expect(findAssetFile(/async-treeshaken/)).toBe('') + } else { + // should be present in dev + const el = await page.$('.async-treeshaken') + editFile('async-treeshaken.css', (code) => + code.replace('color: plum', 'color: blue') + ) + await untilUpdated(() => getColor(el), 'blue') + } +}) diff --git a/packages/playground/css/async-treeshaken.css b/packages/playground/css/async-treeshaken.css new file mode 100644 index 000000000..f0d7d653a --- /dev/null +++ b/packages/playground/css/async-treeshaken.css @@ -0,0 +1,3 @@ +.async-treeshaken { + color: plum; +} \ No newline at end of file diff --git a/packages/playground/css/async-treeshaken.js b/packages/playground/css/async-treeshaken.js new file mode 100644 index 000000000..f5c175d92 --- /dev/null +++ b/packages/playground/css/async-treeshaken.js @@ -0,0 +1,7 @@ +import './async-treeshaken.css' + +const div = document.createElement('div') +div.className = 'async-treeshaken' +div.textContent = + 'async treeshaken chunk (this should be plum and should not show up in prod)' +document.body.appendChild(div) diff --git a/packages/playground/css/async.css b/packages/playground/css/async.css new file mode 100644 index 000000000..a00539db8 --- /dev/null +++ b/packages/playground/css/async.css @@ -0,0 +1,3 @@ +.async { + color: teal; +} \ No newline at end of file diff --git a/packages/playground/css/async.js b/packages/playground/css/async.js new file mode 100644 index 000000000..7cfcad126 --- /dev/null +++ b/packages/playground/css/async.js @@ -0,0 +1,6 @@ +import './async.css' + +const div = document.createElement('div') +div.className = 'async' +div.textContent = 'async chunk (this should be teal)' +document.body.appendChild(div) diff --git a/packages/playground/css/imported.css b/packages/playground/css/imported.css index e13e3fa4c..bfd835831 100644 --- a/packages/playground/css/imported.css +++ b/packages/playground/css/imported.css @@ -6,7 +6,7 @@ pre { background-color: #eee; - width: 300px; + width: 500px; padding: 1em 1.5em; border-radius: 10px; } diff --git a/packages/playground/css/main.js b/packages/playground/css/main.js index 61073c430..d01980419 100644 --- a/packages/playground/css/main.js +++ b/packages/playground/css/main.js @@ -31,3 +31,10 @@ if (import.meta.hot) { text('.modules-sass-code', JSON.stringify(newMod.default, null, 2)) }) } + +// async +import('./async') + +if (import.meta.env.DEV) { + import('./async-treeshaken') +} diff --git a/packages/playground/testUtils.ts b/packages/playground/testUtils.ts index 735ba1ed6..59fa0af80 100644 --- a/packages/playground/testUtils.ts +++ b/packages/playground/testUtils.ts @@ -67,6 +67,15 @@ export function editFile(filename: string, replacer: (str: string) => string) { fs.writeFileSync(filename, modified) } +export function findAssetFile(match: string | RegExp, base = '') { + const assetsDir = path.join(testDir, 'dist', base, 'assets') + const files = fs.readdirSync(assetsDir) + const file = files.find((file) => { + return file.match(match) + }) + return file ? fs.readFileSync(path.resolve(assetsDir, file), 'utf-8') : '' +} + /** * Poll a getter until the value it returns includes the expected value. */ diff --git a/yarn.lock b/yarn.lock index b9d260256..055202178 100644 --- a/yarn.lock +++ b/yarn.lock @@ -106,6 +106,11 @@ "@algolia/logger-common" "4.8.3" "@algolia/requester-common" "4.8.3" +"@arr/every@^1.0.0": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@arr/every/-/every-1.0.1.tgz#22fe1f8e6355beca6c7c7bde965eb15cf994387b" + integrity sha512-UQFQ6SgyJ6LX42W8rHCs8KVc0JS0tzVL9ct4XYedJukskYVWTo49tNiMEK9C2HTyarbNiT/RVIRSY82vH+6sTg== + "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4": version "7.12.11" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" @@ -676,6 +681,11 @@ "@nodelib/fs.scandir" "2.1.3" fastq "^1.6.0" +"@polka/url@^0.5.0": + version "0.5.0" + resolved "https://registry.yarnpkg.com/@polka/url/-/url-0.5.0.tgz#b21510597fd601e5d7c95008b76bf0d254ebfd31" + integrity sha512-oZLYFEAzUKyi3SKnXvj32ZCEGH6RDnao7COuCVhDydMS9NrCSVXhM79VaKyP5+Zc33m0QXEd2DN3UkU7OsHcfw== + "@polka/url@^1.0.0-next.9": version "1.0.0-next.11" resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.11.tgz#aeb16f50649a91af79dbe36574b66d0f9e4d9f71" @@ -1051,6 +1061,17 @@ estree-walker "^2.0.1" source-map "^0.6.1" +"@vue/compiler-core@3.0.5": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.0.5.tgz#a6e54cabe9536e74c6513acd2649f311af1d43ac" + integrity sha512-iFXwk2gmU/GGwN4hpBwDWWMLvpkIejf/AybcFtlQ5V1ur+5jwfBaV0Y1RXoR6ePfBPJixtKZ3PmN+M+HgMAtfQ== + dependencies: + "@babel/parser" "^7.12.0" + "@babel/types" "^7.12.0" + "@vue/shared" "3.0.5" + estree-walker "^2.0.1" + source-map "^0.6.1" + "@vue/compiler-dom@3.0.4", "@vue/compiler-dom@^3.0.4": version "3.0.4" resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.0.4.tgz#834fd4b15c5698cf9f4505c2bfbccca058a843eb" @@ -1059,6 +1080,14 @@ "@vue/compiler-core" "3.0.4" "@vue/shared" "3.0.4" +"@vue/compiler-dom@3.0.5": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.0.5.tgz#7885a13e6d18f64dde8ebceec052ed2c102696c2" + integrity sha512-HSOSe2XSPuCkp20h4+HXSiPH9qkhz6YbW9z9ZtL5vef2T2PMugH7/osIFVSrRZP/Ul5twFZ7MIRlp8tPX6e4/g== + dependencies: + "@vue/compiler-core" "3.0.5" + "@vue/shared" "3.0.5" + "@vue/compiler-sfc@^3.0.4": version "3.0.4" resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.0.4.tgz#2119fe1e68d2c268aafa20461c82c139a9adf8e0" @@ -1081,6 +1110,28 @@ postcss-selector-parser "^6.0.4" source-map "^0.6.1" +"@vue/compiler-sfc@^3.0.5": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.0.5.tgz#3ae08e60244a72faf9598361874fb7bdb5b1d37c" + integrity sha512-uOAC4X0Gx3SQ9YvDC7YMpbDvoCmPvP0afVhJoxRotDdJ+r8VO3q4hFf/2f7U62k4Vkdftp6DVni8QixrfYzs+w== + dependencies: + "@babel/parser" "^7.12.0" + "@babel/types" "^7.12.0" + "@vue/compiler-core" "3.0.5" + "@vue/compiler-dom" "3.0.5" + "@vue/compiler-ssr" "3.0.5" + "@vue/shared" "3.0.5" + consolidate "^0.16.0" + estree-walker "^2.0.1" + hash-sum "^2.0.0" + lru-cache "^5.1.1" + magic-string "^0.25.7" + merge-source-map "^1.1.0" + postcss "^7.0.32" + postcss-modules "^3.2.2" + postcss-selector-parser "^6.0.4" + source-map "^0.6.1" + "@vue/compiler-ssr@3.0.4": version "3.0.4" resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.0.4.tgz#ccbd1f55734d51d1402fad825ac102002a7a07c7" @@ -1089,6 +1140,14 @@ "@vue/compiler-dom" "3.0.4" "@vue/shared" "3.0.4" +"@vue/compiler-ssr@3.0.5": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.0.5.tgz#7661ad891a0be948726c7f7ad1e425253c587b83" + integrity sha512-Wm//Kuxa1DpgjE4P9W0coZr8wklOfJ35Jtq61CbU+t601CpPTK4+FL2QDBItaG7aoUUDCWL5nnxMkuaOgzTBKg== + dependencies: + "@vue/compiler-dom" "3.0.5" + "@vue/shared" "3.0.5" + "@vue/reactivity@3.0.4": version "3.0.4" resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.0.4.tgz#b6599dd8271a745960a03f05744ccf7991ba5d8d" @@ -1096,6 +1155,13 @@ dependencies: "@vue/shared" "3.0.4" +"@vue/reactivity@3.0.5": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.0.5.tgz#e3789e4d523d845f9ae0b4d770e2b45594742fd2" + integrity sha512-3xodUE3sEIJgS7ntwUbopIpzzvi7vDAOjVamfb2l+v1FUg0jpd3gf62N2wggJw3fxBMr+QvyxpD+dBoxLsmAjw== + dependencies: + "@vue/shared" "3.0.5" + "@vue/runtime-core@3.0.4": version "3.0.4" resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.0.4.tgz#a5b9a001560b1fd8c01a43f68b764c555de7836c" @@ -1104,6 +1170,14 @@ "@vue/reactivity" "3.0.4" "@vue/shared" "3.0.4" +"@vue/runtime-core@3.0.5": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.0.5.tgz#da6331d5f300d5794e9e0ebdc8a8bd72a9e19962" + integrity sha512-Cnyi2NqREwOLcTEsIi1DQX1hHtkVj4eGm4hBG7HhokS05DqpK4/80jG6PCCnCH9rIJDB2FqtaODX397210plXg== + dependencies: + "@vue/reactivity" "3.0.5" + "@vue/shared" "3.0.5" + "@vue/runtime-dom@3.0.4": version "3.0.4" resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.0.4.tgz#6f81aec545f24511d2c28a315aa3391420b69c68" @@ -1113,19 +1187,33 @@ "@vue/shared" "3.0.4" csstype "^2.6.8" -"@vue/server-renderer@^3.0.4": - version "3.0.4" - resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.0.4.tgz#7026113694b74e878113cd1c70d1fb8f89d09e99" - integrity sha512-+U3MGbIK3tiQh5fa79U1qtI++/gBdGOVxlp5POHRlsjGpA4I2YSSeQSZwqtv1SPAYp/A4d5QvAPZ7BucVKZbgg== +"@vue/runtime-dom@3.0.5": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.0.5.tgz#1ce2c9c449e26ab06963da0064096e882a7a8935" + integrity sha512-iilX1KySeIzHHtErT6Y44db1rhWK5tAI0CiJIPr+SJoZ2jbjoOSE6ff/jfIQakchbm1d6jq6VtRVnp5xYdOXKA== dependencies: - "@vue/compiler-ssr" "3.0.4" - "@vue/shared" "3.0.4" + "@vue/runtime-core" "3.0.5" + "@vue/shared" "3.0.5" + csstype "^2.6.8" + +"@vue/server-renderer@^3.0.5": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.0.5.tgz#1197e7d7b7874e15de284798a3932ec425ffe593" + integrity sha512-aB4TymBESEbCJ6A9HfeFpS3U9dC6dRa1zUqWHJqGlikqKr38n0VSYA3lNt0Qnkd6SFDSN6Kn5O34Ih3saMk9KA== + dependencies: + "@vue/compiler-ssr" "3.0.5" + "@vue/shared" "3.0.5" "@vue/shared@3.0.4": version "3.0.4" resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.0.4.tgz#6dc50f593bdfdeaa6183d1dbc15e2d45e7c6b8b3" integrity sha512-Swfbz31AaMX48CpFl+YmIrqOH9MgJMTrltG9e26A4ZxYx9LjGuMV+41WnxFzS3Bc9nbrc6sDPM37G6nIT8NJSg== +"@vue/shared@3.0.5": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.0.5.tgz#c131d88bd6713cc4d93b3bb1372edb1983225ff0" + integrity sha512-gYsNoGkWejBxNO6SNRjOh/xKeZ0H0V+TFzaPzODfBjkAIb0aQgBuixC1brandC/CDJy1wYPwSoYrXpvul7m6yw== + JSONStream@^1.0.4: version "1.3.5" resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" @@ -1139,6 +1227,14 @@ abab@^2.0.3: resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q== +accepts@~1.3.5: + version "1.3.7" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" + integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== + dependencies: + mime-types "~2.1.24" + negotiator "0.6.2" + acorn-class-fields@^0.3.7: version "0.3.7" resolved "https://registry.yarnpkg.com/acorn-class-fields/-/acorn-class-fields-0.3.7.tgz#a35122f3cc6ad2bb33b1857e79215677fcfdd720" @@ -1604,6 +1700,11 @@ builtin-modules@^3.1.0: resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.1.0.tgz#aad97c15131eb76b65b50ef208e7584cd76a7484" integrity sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw== +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= + cac@^6.6.1: version "6.7.1" resolved "https://registry.yarnpkg.com/cac/-/cac-6.7.1.tgz#0609d28a31d887746de4b66a15e3914f106f880c" @@ -1929,6 +2030,26 @@ component-emitter@^1.2.1: resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== +compressible@~2.0.16: + version "2.0.18" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" + integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== + dependencies: + mime-db ">= 1.43.0 < 2" + +compression@^1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" + integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== + dependencies: + accepts "~1.3.5" + bytes "3.0.0" + compressible "~2.0.16" + debug "2.6.9" + on-headers "~1.0.2" + safe-buffer "5.1.2" + vary "~1.1.2" + concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" @@ -4804,6 +4925,13 @@ markdown-it@^10.0.0: mdurl "^1.0.1" uc.micro "^1.0.5" +matchit@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/matchit/-/matchit-1.1.0.tgz#c4ccf17d9c824cc1301edbcffde9b75a61d10a7c" + integrity sha512-+nGYoOlfHmxe5BW5tE0EMJppXEwdSf8uBA1GTZC7Q77kbT35+VKLYJMzVNWCHSsga1ps1tPYFtFyvxvKzWVmMA== + dependencies: + "@arr/every" "^1.0.0" + mdurl@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" @@ -4911,7 +5039,12 @@ mime-db@1.44.0: resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg== -mime-types@^2.1.12, mime-types@~2.1.19: +"mime-db@>= 1.43.0 < 2": + version "1.45.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.45.0.tgz#cceeda21ccd7c3a745eba2decd55d4b73e7879ea" + integrity sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w== + +mime-types@^2.1.12, mime-types@~2.1.19, mime-types@~2.1.24: version "2.1.27" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f" integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w== @@ -5032,6 +5165,11 @@ natural-compare@^1.4.0: resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= +negotiator@0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" + integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== + neo-async@^2.6.0: version "2.6.2" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" @@ -5215,6 +5353,11 @@ on-finished@~2.3.0: dependencies: ee-first "1.1.1" +on-headers@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" + integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== + once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" @@ -5548,6 +5691,14 @@ pngjs@^5.0.0: resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-5.0.0.tgz#e79dd2b215767fd9c04561c01236df960bce7fbb" integrity sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw== +polka@^0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/polka/-/polka-0.5.2.tgz#588bee0c5806dbc6c64958de3a1251860e9f2e26" + integrity sha512-FVg3vDmCqP80tOrs+OeNlgXYmFppTXdjD5E7I4ET1NjvtNmQrb1/mJibybKkb/d4NA7YWAr1ojxuhpL3FHqdlw== + dependencies: + "@polka/url" "^0.5.0" + trouter "^2.0.1" + posix-character-classes@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" @@ -6295,16 +6446,16 @@ rxjs@^6.6.3: dependencies: tslib "^1.9.0" +safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + safe-buffer@^5.0.1, safe-buffer@^5.1.2, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== -safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - safe-regex@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" @@ -7066,6 +7217,13 @@ trim-off-newlines@^1.0.0: resolved "https://registry.yarnpkg.com/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz#9f9ba9d9efa8764c387698bcbfeb2c848f11adb3" integrity sha1-n5up2e+odkw4dpi8v+sshI8RrbM= +trouter@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/trouter/-/trouter-2.0.1.tgz#2726a5f8558e090d24c3a393f09eaab1df232df6" + integrity sha512-kr8SKKw94OI+xTGOkfsvwZQ8mWoikZDd2n8XZHjJVZUARZT+4/VV6cacRS6CLsH9bNm+HFIPU1Zx4CnNnb4qlQ== + dependencies: + matchit "^1.0.0" + ts-jest@^26.4.4: version "26.4.4" resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-26.4.4.tgz#61f13fb21ab400853c532270e52cc0ed7e502c49" @@ -7285,7 +7443,7 @@ validator@^8.0.0: resolved "https://registry.yarnpkg.com/validator/-/validator-8.2.0.tgz#3c1237290e37092355344fef78c231249dab77b9" integrity sha512-Yw5wW34fSv5spzTXNkokD6S6/Oq92d8q/t14TqsS3fAiA1RYnxSFSIZ+CY3n6PGGRCq5HhJTSepQvFUS2QUDxA== -vary@^1: +vary@^1, vary@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= @@ -7299,17 +7457,18 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" -vitepress@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/vitepress/-/vitepress-0.10.0.tgz#2673cc25110a87a5d9b642c57146611a1823bf8a" - integrity sha512-xIJWNQF5xAxbSIHaDSNfFNyN4qN95NSNmV+JWtfHbiRDQmf6gyqwCwBWyj5YDX5N/1IOgJGXgvQLyvYB6dlWvA== +vitepress@^0.10.1: + version "0.10.1" + resolved "https://registry.yarnpkg.com/vitepress/-/vitepress-0.10.1.tgz#7c08b9e201505cc9408e261e96bc6a96bc85a51a" + integrity sha512-d5eCqA+BT4AwJauFDRbGEFoHussIzzRSirgZABMykPS854DJnT9sO8SYVPrE94QiuGQRcO3CvaNTfQ8EAnVTnQ== dependencies: "@docsearch/css" "^1.0.0-alpha.28" "@docsearch/js" "^1.0.0-alpha.28" "@vitejs/plugin-vue" "^1.0.2" - "@vue/compiler-sfc" "^3.0.4" - "@vue/server-renderer" "^3.0.4" + "@vue/compiler-sfc" "^3.0.5" + "@vue/server-renderer" "^3.0.5" chalk "^4.1.0" + compression "^1.7.4" debug "^4.1.1" diacritics "^1.3.0" escape-html "^1.0.3" @@ -7324,11 +7483,12 @@ vitepress@^0.10.0: markdown-it-table-of-contents "^0.4.4" minimist "^1.2.5" ora "^5.1.0" + polka "^0.5.2" prismjs "^1.20.0" sirv "^1.0.10" slash "^3.0.0" - vite "^2.0.0-alpha.3" - vue "^3.0.4" + vite "^2.0.0-alpha.5" + vue "^3.0.5" void-elements@^3.1.0: version "3.1.0" @@ -7344,6 +7504,15 @@ vue@^3.0.4: "@vue/runtime-dom" "3.0.4" "@vue/shared" "3.0.4" +vue@^3.0.5: + version "3.0.5" + resolved "https://registry.yarnpkg.com/vue/-/vue-3.0.5.tgz#de1b82eba24abfe71e0970fc9b8d4b2babdc3fe1" + integrity sha512-TfaprOmtsAfhQau7WsomXZ8d9op/dkQLNIq8qPV3A0Vxs6GR5E+c1rfJS1SDkXRQj+dFyfnec7+U0Be1huiScg== + dependencies: + "@vue/compiler-dom" "3.0.5" + "@vue/runtime-dom" "3.0.5" + "@vue/shared" "3.0.5" + w3c-hr-time@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd"