fix(vue-app): handle missing payloads on full static (#8314)

* fix(vue-app): handle missing payloads on full static

Fixes #7717

* chore: rename routesManifest to manifest

* chore: remove console.log

* chore(vue-app): don't have staticAssetsBase if undefined

* chore: add manifest option

* test: update snapshot

* chore: use foundRoute to avoid multiple vars name

Co-authored-by: Pooya Parsa <pyapar@gmail.com>
Co-authored-by: Daniel Roe <daniel@roe.dev>
This commit is contained in:
Sébastien Chopin 2020-11-25 15:19:29 +01:00 committed by GitHub
parent e635cc5044
commit 691f21c683
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
19 changed files with 191 additions and 179 deletions

View File

@ -63,7 +63,7 @@
"vue-client-only": "^2.0.0",
"vue-meta": "^2.4.0",
"vue-no-ssr": "^1.1.1",
"vue-router": "3.4.9",
"vue-router": "3.4.8",
"vuex": "^3.5.1"
},
"engines": {

View File

@ -60,10 +60,10 @@
"dependencies": {
"@nuxt/builder": "2.14.7",
"@nuxt/cli": "2.14.7",
"@nuxt/components": "^1.2.0",
"@nuxt/components": "^1.1.1",
"@nuxt/core": "2.14.7",
"@nuxt/generator": "2.14.7",
"@nuxt/loading-screen": "^2.0.3",
"@nuxt/loading-screen": "^2.0.2",
"@nuxt/opencollective": "^0.3.2",
"@nuxt/static": "^1.0.0",
"@nuxt/telemetry": "^1.2.3",

View File

@ -33,8 +33,8 @@
"test:unit": "jest packages --forceExit"
},
"devDependencies": {
"@babel/core": "^7.12.9",
"@babel/preset-env": "^7.12.7",
"@babel/core": "^7.12.3",
"@babel/preset-env": "^7.12.1",
"@ls-lint/ls-lint": "^1.9.2",
"@nuxtjs/eslint-config": "^5.0.0",
"@rollup/plugin-alias": "^3.1.1",
@ -47,9 +47,9 @@
"babel-eslint": "^10.1.0",
"babel-jest": "^26.6.3",
"consola": "^2.15.0",
"create-require": "^1.1.0",
"create-require": "^1.0.2",
"cross-spawn": "^7.0.3",
"eslint": "^7.14.0",
"eslint": "^7.13.0",
"eslint-multiplexer": "^2.0.0",
"esm": "^3.2.25",
"execa": "^3.4.0",
@ -62,21 +62,21 @@
"improved-yarn-audit": "^2.3.1",
"is-wsl": "^2.2.0",
"jest": "^26.6.3",
"jiti": "^0.1.16",
"jiti": "^0.1.12",
"jsdom": "^16.4.0",
"klaw-sync": "^6.0.0",
"lerna": "^3.22.1",
"lodash": "^4.17.20",
"node-fetch": "^2.6.1",
"node-sass": "^4.14.1",
"puppeteer-core": "^5.5.0",
"puppeteer-core": "^5.4.1",
"request": "^2.88.2",
"rimraf": "^3.0.2",
"rollup": "2.33.3",
"rollup": "2.33.1",
"rollup-plugin-license": "^2.2.0",
"sass-loader": "^8.0.2",
"sort-package-json": "^1.48.0",
"typescript": "~4.1",
"sort-package-json": "^1.46.1",
"typescript": "~4.0",
"vue-jest": "^4.0.0-rc.0"
}
}

View File

@ -10,14 +10,14 @@
],
"main": "src/index.js",
"dependencies": {
"@babel/core": "^7.12.9",
"@babel/core": "^7.12.3",
"@babel/helper-compilation-targets": "^7.12.5",
"@babel/plugin-proposal-class-properties": "^7.12.1",
"@babel/plugin-proposal-decorators": "^7.12.1",
"@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1",
"@babel/plugin-proposal-optional-chaining": "^7.12.7",
"@babel/plugin-proposal-optional-chaining": "^7.12.1",
"@babel/plugin-transform-runtime": "^7.12.1",
"@babel/preset-env": "^7.12.7",
"@babel/preset-env": "^7.12.1",
"@babel/runtime": "^7.12.5",
"@vue/babel-preset-jsx": "^1.2.4",
"core-js": "^2.6.5"

View File

@ -12,13 +12,13 @@
"dependencies": {
"@nuxt/utils": "2.14.7",
"consola": "^2.15.0",
"create-require": "^1.1.0",
"create-require": "^1.0.2",
"defu": "^2.0.4",
"destr": "^1.0.1",
"dotenv": "^8.2.0",
"esm": "^3.2.25",
"jiti": "^0.1.16",
"rc9": "^1.2.0",
"jiti": "^0.1.12",
"rc9": "^1.1.0",
"std-env": "^2.2.1"
},
"publishConfig": {

View File

@ -7,6 +7,7 @@ export default () => ({
subFolders: true,
fallback: '200.html',
crawler: true,
manifest: true,
cache: {
ignore: [],
globbyOptions: {

View File

@ -205,6 +205,7 @@ Object {
"exclude": Array [],
"fallback": "200.html",
"interval": 0,
"manifest": true,
"routes": Array [],
"staticAssets": Object {
"base": "/_nuxt/static",

View File

@ -184,6 +184,7 @@ Object {
"exclude": Array [],
"fallback": "200.html",
"interval": 0,
"manifest": true,
"routes": Array [],
"staticAssets": Object {
"base": undefined,
@ -560,6 +561,7 @@ Object {
"exclude": Array [],
"fallback": "200.html",
"interval": 0,
"manifest": true,
"routes": Array [],
"staticAssets": Object {
"base": undefined,

View File

@ -14,7 +14,7 @@
"@nuxt/utils": "2.14.7",
"@nuxt/vue-renderer": "2.14.7",
"consola": "^2.15.0",
"debug": "^4.3.1",
"debug": "^4.2.0",
"esm": "^3.2.25",
"fs-extra": "^8.1.0",
"hable": "^3.0.0",

View File

@ -11,6 +11,7 @@
"@nuxt/utils": "2.14.7",
"chalk": "^3.0.0",
"consola": "^2.15.0",
"devalue": "^2.0.1",
"fs-extra": "^8.1.0",
"html-minifier": "^4.0.0",
"node-html-parser": "^2.0.0"

View File

@ -1,6 +1,7 @@
import path from 'path'
import chalk from 'chalk'
import consola from 'consola'
import devalue from 'devalue'
import fsExtra from 'fs-extra'
import defu from 'defu'
import htmlMinifier from 'html-minifier'
@ -30,9 +31,14 @@ export default class Generator {
if (this.isFullStatic) {
const { build: { publicPath: _publicPath }, router: { base } } = this.options
const publicPath = isUrl(_publicPath) ? _publicPath : base
const { staticAssets } = this.options.generate
const { staticAssets, manifest } = this.options.generate
this.staticAssetsDir = path.resolve(this.distNuxtPath, staticAssets.dir, staticAssets.version)
this.staticAssetsBase = urlJoin(publicPath, this.options.generate.staticAssets.versionBase)
if (manifest) {
this.manifest = defu(manifest, {
routes: []
})
}
}
// Shared payload
@ -54,6 +60,14 @@ export default class Generator {
await this.afterGenerate()
// Save routes manifest for full static
if (this.manifest) {
await this.nuxt.callHook('generate:manifest', this.manifest, this)
const manifestPath = path.join(this.staticAssetsDir, 'manifest.js')
await fsExtra.writeFile(manifestPath, `__NUXT_JSONP__("manifest.js", ${devalue(this.manifest)})`, 'utf-8')
consola.success('Static manifest generated')
}
// Done hook
await this.nuxt.callHook('generate:done', this, errors)
await this.nuxt.callHook('export:done', this, { errors })
@ -254,7 +268,7 @@ export default class Generator {
// Add .nojekyll file to let GitHub Pages add the _nuxt/ folder
// https://help.github.com/articles/files-that-start-with-an-underscore-are-missing/
const nojekyllPath = path.resolve(this.distPath, '.nojekyll')
fsExtra.writeFile(nojekyllPath, '')
await fsExtra.writeFile(nojekyllPath, '')
await this.nuxt.callHook('generate:distCopied', this)
await this.nuxt.callHook('export:distCopied', this)
@ -313,11 +327,11 @@ export default class Generator {
.replace(/\/+$/, '')
.trim()
const route = decodeURI(sanitizedHref + possibleTrailingSlash)
const foundRoute = decodeURI(sanitizedHref + possibleTrailingSlash)
if (route.startsWith('/') && !route.startsWith('//') && !path.extname(route) && this.shouldGenerateRoute(route) && !this.generatedRoutes.has(route)) {
this.generatedRoutes.add(route)
this.routes.push({ route })
if (foundRoute.startsWith('/') && !foundRoute.startsWith('//') && !path.extname(foundRoute) && this.shouldGenerateRoute(foundRoute) && !this.generatedRoutes.has(foundRoute)) {
this.generatedRoutes.add(foundRoute)
this.routes.push({ route: foundRoute })
}
return null
})
@ -330,8 +344,13 @@ export default class Generator {
await fsExtra.ensureDir(path.dirname(assetPath))
await fsExtra.writeFile(assetPath, asset.src, 'utf-8')
}
// Add route to manifest (only if no error and redirect)
if (this.manifest && (!res.error && !res.redirected)) {
this.manifest.routes.push(route)
}
}
// SPA fallback
if (res.error) {
pageErrors.push({ type: 'handled', route, error: res.error })
}

View File

@ -17,13 +17,13 @@
"@types/file-loader": "^4.2.0",
"@types/html-minifier": "^4.0.0",
"@types/less": "^3.0.1",
"@types/node": "^12.19.7",
"@types/node": "^12.19.3",
"@types/node-sass": "^4.11.1",
"@types/optimize-css-assets-webpack-plugin": "^5.0.1",
"@types/pug": "^2.0.4",
"@types/serve-static": "^1.13.8",
"@types/serve-static": "^1.13.6",
"@types/terser-webpack-plugin": "^2.2.0",
"@types/webpack": "^4.41.25",
"@types/webpack": "^4.41.24",
"@types/webpack-bundle-analyzer": "^3.9.0",
"@types/webpack-dev-middleware": "^3.7.2",
"@types/webpack-hot-middleware": "^2.25.3"

View File

@ -19,7 +19,7 @@
"vue-client-only": "^2.0.0",
"vue-meta": "^2.4.0",
"vue-no-ssr": "^1.1.1",
"vue-router": "3.4.9",
"vue-router": "3.4.8",
"vue-template-compiler": "^2.6.12",
"vuex": "^3.5.1"
},

View File

@ -295,18 +295,40 @@ export default {
<% } /* splitChunks.layouts */ %>
<% } /* features.layouts */ %>
<% if (isFullStatic) { %>
getRouterBase() {
return (this.$router.options.base || '').replace(/\/+$/, '')
},
getRoutePath(route = '/') {
const base = this.getRouterBase()
if (base && route.startsWith(base)) {
route = route.substr(base.length)
}
return (route.replace(/\/+$/, '') || '/').split('?')[0].split('#')[0]
},
getStaticAssetsPath(route = '/') {
const { staticAssetsBase } = window.<%= globals.context %>
return urlJoin(staticAssetsBase, this.getRoutePath(route))
},
<% if (nuxtOptions.generate.manifest) { %>
async fetchStaticManifest() {
return window.__NUXT_IMPORT__('manifest.js', encodeURI(urlJoin(this.getStaticAssetsPath(), 'manifest.js')))
},
<% } %>
setPagePayload(payload) {
this._pagePayload = payload
this._payloadFetchIndex = 0
},
async fetchPayload(route) {
const { staticAssetsBase } = window.<%= globals.context %>
const base = (this.$router.options.base || '').replace(/\/+$/, '')
if (base && route.startsWith(base)) {
route = route.substr(base.length)
<% if (nuxtOptions.generate.manifest) { %>
const manifest = await this.fetchStaticManifest()
const path = this.getRoutePath(route)
if (!manifest.routes.includes(path)) {
this.setPagePayload(false)
throw new Error(`Route ${path} is not pre-rendered`)
}
route = (route.replace(/\/+$/, '') || '/').split('?')[0].split('#')[0]
const src = urlJoin(staticAssetsBase, route, 'payload.js')
<% } %>
const src = urlJoin(this.getStaticAssetsPath(route), 'payload.js')
try {
const payload = await window.__NUXT_IMPORT__(decodeURI(route), encodeURI(src))
this.setPagePayload(payload)

View File

@ -154,10 +154,13 @@ export default class SPARenderer extends BaseRenderer {
// Serialize state (runtime config)
let APP = `${meta.BODY_SCRIPTS_PREPEND}<div id="${this.serverContext.globals.id}">${this.serverContext.resources.loadingHTML}</div>${meta.BODY_SCRIPTS}`
APP += `<script>window.${this.serverContext.globals.context}=${devalue({
config: renderContext.runtimeConfig.public,
staticAssetsBase: renderContext.staticAssetsBase
})}</script>`
const payload = {
config: renderContext.runtimeConfig.public
}
if (renderContext.staticAssetsBase) {
payload.staticAssetsBase = renderContext.staticAssetsBase
}
APP += `<script>window.${this.serverContext.globals.context}=${devalue(payload)}</script>`
// Prepare template params
const templateParams = {

View File

@ -196,13 +196,21 @@ export default class SSRRenderer extends BaseRenderer {
APP += `<script>${stateScript}</script>`
}
// Page level payload.js (async loaded for CSR)
const payloadPath = urlJoin(url, 'payload.js')
const payloadUrl = urlJoin(staticAssetsBase, payloadPath)
const routePath = (url.replace(/\/+$/, '') || '/').split('?')[0] // remove trailing slah and query params
const payloadScript = `__NUXT_JSONP__("${routePath}", ${devalue({ data, fetch, mutations })});`
staticAssets.push({ path: payloadPath, src: payloadScript })
preloadScripts.push(payloadUrl)
// Save payload only if no error or redirection were made
if (!renderContext.nuxt.error && !renderContext.redirected) {
// Page level payload.js (async loaded for CSR)
const payloadPath = urlJoin(url, 'payload.js')
const payloadUrl = urlJoin(staticAssetsBase, payloadPath)
const routePath = (url.replace(/\/+$/, '') || '/').split('?')[0] // remove trailing slah and query params
const payloadScript = `__NUXT_JSONP__("${routePath}", ${devalue({ data, fetch, mutations })});`
staticAssets.push({ path: payloadPath, src: payloadScript })
preloadScripts.push(payloadUrl)
// Add manifest preload
if (this.options.generate.manifest) {
const manifestUrl = urlJoin(staticAssetsBase, 'manifest.js')
preloadScripts.push(manifestUrl)
}
}
// Preload links
for (const href of preloadScripts) {

View File

@ -8,16 +8,16 @@
"dist"
],
"dependencies": {
"@babel/core": "^7.12.9",
"@babel/core": "^7.12.3",
"@nuxt/babel-preset-app": "2.14.7",
"@nuxt/friendly-errors-webpack-plugin": "^2.5.0",
"@nuxt/utils": "2.14.7",
"babel-loader": "^8.2.1",
"babel-loader": "^8.1.0",
"cache-loader": "^4.1.0",
"caniuse-lite": "^1.0.30001161",
"caniuse-lite": "^1.0.30001157",
"chalk": "^3.0.0",
"consola": "^2.15.0",
"create-require": "^1.1.0",
"create-require": "^1.0.2",
"css-loader": "^3.6.0",
"cssnano": "^4.1.10",
"eventsource-polyfill": "^0.9.6",
@ -38,7 +38,7 @@
"postcss-url": "^8.0.0",
"semver": "^7.3.2",
"std-env": "^2.2.1",
"style-resources-loader": "^1.4.1",
"style-resources-loader": "^1.3.3",
"terser-webpack-plugin": "^2.3.5",
"thread-loader": "^2.1.3",
"time-fix-plugin": "^2.0.7",

View File

@ -25,8 +25,7 @@
"wrap-ansi",
"terser-webpack-plugin",
"@types/terser-webpack-plugin",
"defu",
"vue-loader"
"defu"
],
"lockFileMaintenance": {
"enabled": true

208
yarn.lock
View File

@ -14,29 +14,7 @@
resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.12.7.tgz#9329b4782a7d6bbd7eef57e11addf91ee3ef1e41"
integrity sha512-YaxPMGs/XIWtYqrdEOZOCPsVWfEoriXopnsz3/i7apYPXQ3698UFhS6dVT1KN5qOsWmVgw/FOrmQgpRaZayGsw==
"@babel/core@^7.1.0", "@babel/core@^7.7.5":
version "7.12.7"
resolved "https://registry.npmjs.org/@babel/core/-/core-7.12.7.tgz#bf55363c08c8352a37691f7216ec30090bf7e3bf"
integrity sha512-tRKx9B53kJe8NCGGIxEQb2Bkr0riUIEuN7Sc1fxhs5H8lKlCWUvQCSNMVIB0Meva7hcbCRJ76de15KoLltdoqw==
dependencies:
"@babel/code-frame" "^7.10.4"
"@babel/generator" "^7.12.5"
"@babel/helper-module-transforms" "^7.12.1"
"@babel/helpers" "^7.12.5"
"@babel/parser" "^7.12.7"
"@babel/template" "^7.12.7"
"@babel/traverse" "^7.12.7"
"@babel/types" "^7.12.7"
convert-source-map "^1.7.0"
debug "^4.1.0"
gensync "^1.0.0-beta.1"
json5 "^2.1.2"
lodash "^4.17.19"
resolve "^1.3.2"
semver "^5.4.1"
source-map "^0.5.0"
"@babel/core@^7.12.9":
"@babel/core@^7.1.0", "@babel/core@^7.12.9", "@babel/core@^7.7.5":
version "7.12.9"
resolved "https://registry.npmjs.org/@babel/core/-/core-7.12.9.tgz#fd450c4ec10cdbb980e2928b7aa7a28484593fc8"
integrity sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ==
@ -860,22 +838,7 @@
"@babel/parser" "^7.12.7"
"@babel/types" "^7.12.7"
"@babel/traverse@^7.1.0", "@babel/traverse@^7.10.4", "@babel/traverse@^7.12.1", "@babel/traverse@^7.12.5", "@babel/traverse@^7.12.7", "@babel/traverse@^7.7.0":
version "7.12.7"
resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.7.tgz#572a722408681cef17d6b0bef69ef2e728ca69f1"
integrity sha512-nMWaqsQEeSvMNypswUDzjqQ+0rR6pqCtoQpsqGJC4/Khm9cISwPTSpai57F6/jDaOoEGz8yE/WxcO3PV6tKSmQ==
dependencies:
"@babel/code-frame" "^7.10.4"
"@babel/generator" "^7.12.5"
"@babel/helper-function-name" "^7.10.4"
"@babel/helper-split-export-declaration" "^7.11.0"
"@babel/parser" "^7.12.7"
"@babel/types" "^7.12.7"
debug "^4.1.0"
globals "^11.1.0"
lodash "^4.17.19"
"@babel/traverse@^7.12.9":
"@babel/traverse@^7.1.0", "@babel/traverse@^7.10.4", "@babel/traverse@^7.12.1", "@babel/traverse@^7.12.5", "@babel/traverse@^7.12.9", "@babel/traverse@^7.7.0":
version "7.12.9"
resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.9.tgz#fad26c972eabbc11350e0b695978de6cc8e8596f"
integrity sha512-iX9ajqnLdoU1s1nHt36JDI9KG4k+vmI8WgjK5d+aDTwQbL2fUnzedNedssA645Ede3PM2ma1n8Q4h2ohwXgMXw==
@ -1979,27 +1942,27 @@
globby "^11.0.1"
"@nuxt/telemetry@^1.2.3":
version "1.2.5"
resolved "https://registry.npmjs.org/@nuxt/telemetry/-/telemetry-1.2.5.tgz#ee9169ac20f50dea69477e2dc20736ba0076a5ab"
integrity sha512-t8TYH363RKEguUPaIKNao+434dKhbixEDt1qFCuyyGgxhJjromCZ9BZm4HMlQJt+F7QS/Y9PzTyTDcomUSstxg==
version "1.3.0"
resolved "https://registry.npmjs.org/@nuxt/telemetry/-/telemetry-1.3.0.tgz#0c6595c786c4fcb060ea8508aaf6285dce8201e0"
integrity sha512-anAhyccoVyy/RetkqVsIxpJKdAu/GHyLl79ZtH0oOCbYcC85k8d+LC1S10WcqXyeqyUKifLxGR6yPqSPmQCCtg==
dependencies:
arg "^4.1.3"
arg "^5.0.0"
chalk "^4.1.0"
ci-info "^2.0.0"
consola "^2.14.0"
create-require "^1.0.2"
defu "^2.0.4"
destr "^1.0.0"
consola "^2.15.0"
create-require "^1.1.0"
defu "^3.2.2"
destr "^1.0.1"
dotenv "^8.2.0"
fs-extra "^8.1.0"
git-url-parse "^11.1.2"
inquirer "^7.3.0"
is-docker "^2.0.0"
jiti "^0.1.11"
nanoid "^3.1.10"
node-fetch "^2.6.0"
git-url-parse "^11.4.0"
inquirer "^7.3.3"
is-docker "^2.1.1"
jiti "^0.1.16"
nanoid "^3.1.18"
node-fetch "^2.6.1"
parse-git-config "^3.0.0"
rc9 "^1.0.0"
rc9 "^1.2.0"
std-env "^2.2.1"
"@nuxtjs/eslint-config@^5.0.0":
@ -2331,9 +2294,9 @@
"@types/node" "*"
"@types/express-serve-static-core@*":
version "4.17.13"
resolved "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.13.tgz#d9af025e925fc8b089be37423b8d1eac781be084"
integrity sha512-RgDi5a4nuzam073lRGKTUIaL3eF2+H7LJvJ8eUnCI0wA6SNjXc44DCmWNiTLs/AZ7QlsFWZiw/gTG3nSQGL0fA==
version "4.17.14"
resolved "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.14.tgz#cabf91debeeb3cb04b798e2cff908864e89b6106"
integrity sha512-uFTLwu94TfUFMToXNgRZikwPuZdOtDgs3syBtAIr/OXorL1kJqUJT9qCLnRZ5KBOWfZQikQ2xKgR2tnDj1OgDA==
dependencies:
"@types/node" "*"
"@types/qs" "*"
@ -2469,9 +2432,9 @@
"@types/node" "*"
"@types/node@*", "@types/node@>= 8":
version "14.14.9"
resolved "https://registry.npmjs.org/@types/node/-/node-14.14.9.tgz#04afc9a25c6ff93da14deabd65dc44485b53c8d6"
integrity sha512-JsoLXFppG62tWTklIoO4knA+oDTYsmqWxHRvd4lpmfQRNhX6osheUOWETP2jMoV/2bEHuMra8Pp3Dmo/stBFcw==
version "14.14.10"
resolved "https://registry.npmjs.org/@types/node/-/node-14.14.10.tgz#5958a82e41863cfc71f2307b3748e3491ba03785"
integrity sha512-J32dgx2hw8vXrSbu4ZlVhn1Nm3GbeCFNw2FWL8S5QKucHGY0cyNwjdQdO+KMBZ4wpmC7KhLCiNsdk1RFRIYUQQ==
"@types/node@^12.19.7":
version "12.19.7"
@ -2638,37 +2601,37 @@
"@types/node" "*"
"@typescript-eslint/experimental-utils@^4.0.1":
version "4.8.1"
resolved "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.8.1.tgz#27275c20fa4336df99ebcf6195f7d7aa7aa9f22d"
integrity sha512-WigyLn144R3+lGATXW4nNcDJ9JlTkG8YdBWHkDlN0lC3gUGtDi7Pe3h5GPvFKMcRz8KbZpm9FJV9NTW8CpRHpg==
version "4.8.2"
resolved "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.8.2.tgz#8909a5732f19329cf5ef0c39766170476bff5e50"
integrity sha512-hpTw6o6IhBZEsQsjuw/4RWmceRyESfAiEzAEnXHKG1X7S5DXFaZ4IO1JO7CW1aQ604leQBzjZmuMI9QBCAJX8Q==
dependencies:
"@types/json-schema" "^7.0.3"
"@typescript-eslint/scope-manager" "4.8.1"
"@typescript-eslint/types" "4.8.1"
"@typescript-eslint/typescript-estree" "4.8.1"
"@typescript-eslint/scope-manager" "4.8.2"
"@typescript-eslint/types" "4.8.2"
"@typescript-eslint/typescript-estree" "4.8.2"
eslint-scope "^5.0.0"
eslint-utils "^2.0.0"
"@typescript-eslint/scope-manager@4.8.1":
version "4.8.1"
resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.8.1.tgz#e343c475f8f1d15801b546cb17d7f309b768fdce"
integrity sha512-r0iUOc41KFFbZdPAdCS4K1mXivnSZqXS5D9oW+iykQsRlTbQRfuFRSW20xKDdYiaCoH+SkSLeIF484g3kWzwOQ==
"@typescript-eslint/scope-manager@4.8.2":
version "4.8.2"
resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.8.2.tgz#a18388c63ae9c17adde519384f539392f2c4f0d9"
integrity sha512-qHQ8ODi7mMin4Sq2eh/6eu03uVzsf5TX+J43xRmiq8ujng7ViQSHNPLOHGw/Wr5dFEoxq/ubKhzClIIdQy5q3g==
dependencies:
"@typescript-eslint/types" "4.8.1"
"@typescript-eslint/visitor-keys" "4.8.1"
"@typescript-eslint/types" "4.8.2"
"@typescript-eslint/visitor-keys" "4.8.2"
"@typescript-eslint/types@4.8.1":
version "4.8.1"
resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.8.1.tgz#23829c73c5fc6f4fcd5346a7780b274f72fee222"
integrity sha512-ave2a18x2Y25q5K05K/U3JQIe2Av4+TNi/2YuzyaXLAsDx6UZkz1boZ7nR/N6Wwae2PpudTZmHFXqu7faXfHmA==
"@typescript-eslint/types@4.8.2":
version "4.8.2"
resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.8.2.tgz#c862dd0e569d9478eb82d6aee662ea53f5661a36"
integrity sha512-z1/AVcVF8ju5ObaHe2fOpZYEQrwHyZ7PTOlmjd3EoFeX9sv7UekQhfrCmgUO7PruLNfSHrJGQvrW3Q7xQ8EoAw==
"@typescript-eslint/typescript-estree@4.8.1":
version "4.8.1"
resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.8.1.tgz#7307e3f2c9e95df7daa8dc0a34b8c43b7ec0dd32"
integrity sha512-bJ6Fn/6tW2g7WIkCWh3QRlaSU7CdUUK52shx36/J7T5oTQzANvi6raoTsbwGM11+7eBbeem8hCCKbyvAc0X3sQ==
"@typescript-eslint/typescript-estree@4.8.2":
version "4.8.2"
resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.8.2.tgz#eeec34707d8577600fb21661b5287226cc8b3bed"
integrity sha512-HToGNwI6fekH0dOw3XEVESUm71Onfam0AKin6f26S2FtUmO7o3cLlWgrIaT1q3vjB3wCTdww3Dx2iGq5wtUOCg==
dependencies:
"@typescript-eslint/types" "4.8.1"
"@typescript-eslint/visitor-keys" "4.8.1"
"@typescript-eslint/types" "4.8.2"
"@typescript-eslint/visitor-keys" "4.8.2"
debug "^4.1.1"
globby "^11.0.1"
is-glob "^4.0.1"
@ -2676,12 +2639,12 @@
semver "^7.3.2"
tsutils "^3.17.1"
"@typescript-eslint/visitor-keys@4.8.1":
version "4.8.1"
resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.8.1.tgz#794f68ee292d1b2e3aa9690ebedfcb3a8c90e3c3"
integrity sha512-3nrwXFdEYALQh/zW8rFwP4QltqsanCDz4CwWMPiIZmwlk9GlvBeueEIbq05SEq4ganqM0g9nh02xXgv5XI3PeQ==
"@typescript-eslint/visitor-keys@4.8.2":
version "4.8.2"
resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.8.2.tgz#62cd3fbbbf65f8eccfbe6f159eb1b84a243a3f77"
integrity sha512-Vg+/SJTMZJEKKGHW7YC21QxgKJrSbxoYYd3MEUGtW7zuytHuEcksewq0DUmo4eh/CTNrVJGSdIY9AtRb6riWFw==
dependencies:
"@typescript-eslint/types" "4.8.1"
"@typescript-eslint/types" "4.8.2"
eslint-visitor-keys "^2.0.0"
"@vue/babel-helper-vue-jsx-merge-props@^1.2.1":
@ -3191,10 +3154,10 @@ are-we-there-yet@~1.1.2:
delegates "^1.0.0"
readable-stream "^2.0.6"
arg@^4.1.3:
version "4.1.3"
resolved "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089"
integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==
arg@^5.0.0:
version "5.0.0"
resolved "https://registry.npmjs.org/arg/-/arg-5.0.0.tgz#a20e2bb5710e82950a516b3f933fee5ed478be90"
integrity sha512-4P8Zm2H+BRS+c/xX1LrHw0qKpEhdlZjLCgWy+d78T9vqa2Z2SiD2wMrYuWIAFy5IZUD7nnNXroRttz+0RzlrzQ==
argparse@^1.0.7:
version "1.0.10"
@ -3244,12 +3207,14 @@ array-ify@^1.0.0:
integrity sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=
array-includes@^3.1.1:
version "3.1.1"
resolved "https://registry.npmjs.org/array-includes/-/array-includes-3.1.1.tgz#cdd67e6852bdf9c1215460786732255ed2459348"
integrity sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ==
version "3.1.2"
resolved "https://registry.npmjs.org/array-includes/-/array-includes-3.1.2.tgz#a8db03e0b88c8c6aeddc49cb132f9bcab4ebf9c8"
integrity sha512-w2GspexNQpx+PutG3QpT437/BenZBj0M/MZGn5mzv/MofYqo0xmRHzn4lFsoDlWJ+THYsGJmFlW68WlDFx7VRw==
dependencies:
call-bind "^1.0.0"
define-properties "^1.1.3"
es-abstract "^1.17.0"
es-abstract "^1.18.0-next.1"
get-intrinsic "^1.0.1"
is-string "^1.0.5"
array-union@^1.0.2:
@ -4030,12 +3995,7 @@ caniuse-api@^3.0.0:
lodash.memoize "^4.1.2"
lodash.uniq "^4.5.0"
caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001157:
version "1.0.30001159"
resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001159.tgz#bebde28f893fa9594dadcaa7d6b8e2aa0299df20"
integrity sha512-w9Ph56jOsS8RL20K9cLND3u/+5WASWdhC/PPrf+V3/HsM3uHOavWOR1Xzakbv4Puo/srmPHudkmCRWM7Aq+/UA==
caniuse-lite@^1.0.30001161:
caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001157, caniuse-lite@^1.0.30001161:
version "1.0.30001161"
resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001161.tgz#64f7ffe79ee780b8c92843ff34feb36cea4651e0"
integrity sha512-JharrCDxOqPLBULF9/SPa6yMcBRTjZARJ6sc3cuKrPfyIk64JN6kuMINWqA99Xc8uElMFcROliwtz0n9pYej+g==
@ -4710,7 +4670,7 @@ create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7:
safe-buffer "^5.0.1"
sha.js "^2.4.8"
create-require@^1.0.2, create-require@^1.1.0:
create-require@^1.1.0:
version "1.1.0"
resolved "https://registry.npmjs.org/create-require/-/create-require-1.1.0.tgz#8fe85b319928953deef6f0e5c44bfea13e3c81ef"
integrity sha512-yEFVS7dQjDXp5iOEtWisN4uFmL+pUTyIaEizKda9Eb77XX58p6pgFOLAPaBCP+IR6ZPZ1jgJLAuf+ABk0zXYBQ==
@ -5161,6 +5121,11 @@ defu@^2.0.4:
resolved "https://registry.npmjs.org/defu/-/defu-2.0.4.tgz#09659a6e87a8fd7178be13bd43e9357ebf6d1c46"
integrity sha512-G9pEH1UUMxShy6syWk01VQSRVs3CDWtlxtZu7A+NyqjxaCA4gSlWAKDBx6QiUEKezqS8+DUlXLI14Fp05Hmpwg==
defu@^3.2.2:
version "3.2.2"
resolved "https://registry.npmjs.org/defu/-/defu-3.2.2.tgz#be20f4cc49b9805d54ee6b610658d53894942e97"
integrity sha512-8UWj5lNv7HD+kB0e9w77Z7TdQlbUYDVWqITLHNqFIn6khrNHv5WQo38Dcm1f6HeNyZf0U7UbPf6WeZDSdCzGDQ==
delayed-stream@~1.0.0:
version "1.0.0"
resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
@ -5214,6 +5179,11 @@ detect-newline@3.1.0, detect-newline@^3.0.0:
resolved "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651"
integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==
devalue@^2.0.1:
version "2.0.1"
resolved "https://registry.npmjs.org/devalue/-/devalue-2.0.1.tgz#5d368f9adc0928e47b77eea53ca60d2f346f9762"
integrity sha512-I2TiqT5iWBEyB8GRfTDP0hiLZ0YeDJZ+upDxjBfOC2lebO5LezQMv7QvIUTzdb64jQyAKLf1AHADtGN+jw6v8Q==
devtools-protocol@0.0.818844:
version "0.0.818844"
resolved "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.818844.tgz#d1947278ec85b53e4c8ca598f607a28fa785ba9e"
@ -5421,9 +5391,9 @@ ejs@^2.6.1:
integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==
electron-to-chromium@^1.3.591:
version "1.3.603"
resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.603.tgz#1b71bec27fb940eccd79245f6824c63d5f7e8abf"
integrity sha512-J8OHxOeJkoSLgBXfV9BHgKccgfLMHh+CoeRo6wJsi6m0k3otaxS/5vrHpMNSEYY4MISwewqanPOuhAtuE8riQQ==
version "1.3.607"
resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.607.tgz#1bff13f1cf89f2fee0d244b8c64a7138f80f3a3b"
integrity sha512-h2SYNaBnlplGS0YyXl8oJWokfcNxVjJANQfMCsQefG6OSuAuNIeW+A8yGT/ci+xRoBb3k2zq1FrOvkgoKBol8g==
elliptic@^6.5.3:
version "6.5.3"
@ -5539,7 +5509,7 @@ error-stack-parser@^2.0.0:
dependencies:
stackframe "^1.1.1"
es-abstract@^1.17.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstract@^1.17.4, es-abstract@^1.17.5:
es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstract@^1.17.4, es-abstract@^1.17.5:
version "1.17.7"
resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz#a4de61b2f66989fc7421676c1cb9787573ace54c"
integrity sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==
@ -6518,7 +6488,7 @@ get-caller-file@^2.0.1:
resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
get-intrinsic@^1.0.0:
get-intrinsic@^1.0.0, get-intrinsic@^1.0.1:
version "1.0.1"
resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.0.1.tgz#94a9768fcbdd0595a1c9273aacf4c89d075631be"
integrity sha512-ZnWP+AmS1VUaLgTRy47+zKtjTxz+0xMpx3I52i+aalBK1QP19ggLF3Db89KJX7kjfOfP2eoa01qc++GwPgufPg==
@ -6636,7 +6606,7 @@ git-up@^4.0.0:
is-ssh "^1.3.0"
parse-url "^5.0.0"
git-url-parse@^11.1.2:
git-url-parse@^11.1.2, git-url-parse@^11.4.0:
version "11.4.0"
resolved "https://registry.npmjs.org/git-url-parse/-/git-url-parse-11.4.0.tgz#f2bb1f2b00f05552540e95a62e31399a639a6aa6"
integrity sha512-KlIa5jvMYLjXMQXkqpFzobsyD/V2K5DRHl5OAf+6oDFPlPLxrGDVQlIdI63c4/Kt6kai4kALENSALlzTGST3GQ==
@ -7342,7 +7312,7 @@ inquirer@^6.2.0:
strip-ansi "^5.1.0"
through "^2.3.6"
inquirer@^7.3.0:
inquirer@^7.3.3:
version "7.3.3"
resolved "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz#04d176b2af04afc157a83fd7c100e98ee0aad003"
integrity sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==
@ -7502,7 +7472,7 @@ is-directory@^0.3.1:
resolved "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1"
integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=
is-docker@^2.0.0:
is-docker@^2.0.0, is-docker@^2.1.1:
version "2.1.1"
resolved "https://registry.npmjs.org/is-docker/-/is-docker-2.1.1.tgz#4125a88e44e450d384e09047ede71adc2d144156"
integrity sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw==
@ -8189,11 +8159,6 @@ jest@^26.6.3:
import-local "^3.0.2"
jest-cli "^26.6.3"
jiti@^0.1.11:
version "0.1.15"
resolved "https://registry.npmjs.org/jiti/-/jiti-0.1.15.tgz#4ab80092b5e14e6b4d41e645940e6b818de549df"
integrity sha512-H2xOyAnmrHcl1KaJ5fDvcKgXbps852FSTMp9v0F5nBpX0NET1xgkLFUFHNHs4i83u4ZSBXLB0qDwvrV8/lOAdw==
jiti@^0.1.16:
version "0.1.16"
resolved "https://registry.npmjs.org/jiti/-/jiti-0.1.16.tgz#f8c7d73b51153edfb43d3e5a4984537198771650"
@ -9205,7 +9170,7 @@ nan@^2.12.1, nan@^2.13.2:
resolved "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19"
integrity sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==
nanoid@^3.1.10:
nanoid@^3.1.18:
version "3.1.18"
resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.1.18.tgz#0680db22ab01c372e89209f5d18283d98de3e96d"
integrity sha512-rndlDjbbHbcV3xi+R2fpJ+PbGMdfBxz5v1fATIQFq0DP64FsicQdwnKLy47K4kZHdRpmQXtz24eGsxQqamzYTA==
@ -9271,7 +9236,7 @@ node-fetch-npm@^2.0.2:
json-parse-better-errors "^1.0.0"
safe-buffer "^5.1.1"
node-fetch@^2.5.0, node-fetch@^2.6.0, node-fetch@^2.6.1:
node-fetch@^2.5.0, node-fetch@^2.6.1:
version "2.6.1"
resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052"
integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==
@ -11157,15 +11122,6 @@ raw-body@2.4.0:
iconv-lite "0.4.24"
unpipe "1.0.0"
rc9@^1.0.0:
version "1.1.0"
resolved "https://registry.npmjs.org/rc9/-/rc9-1.1.0.tgz#0176e8d32c358e96fa8c8d31036c3a0de3da8e9f"
integrity sha512-YXmv+7QWbRDCMroz0YYGcFbo2hslal7KHZO6JUIuOlmyV0YPjqzqPTWnonO44iyvJhoz5sQrmyA9PdOlih6QpA==
dependencies:
defu "^2.0.4"
destr "^1.0.0"
flat "^5.0.0"
rc9@^1.2.0:
version "1.2.0"
resolved "https://registry.npmjs.org/rc9/-/rc9-1.2.0.tgz#ef098181fdde714efc4c426383d6e46c14b1254a"