@nuxt/vue-app
Advanced tools
Comparing version 2.16.3 to 2.17.0
/*! | ||
* @nuxt/vue-app v2.16.3 (c) 2016-2023 | ||
* @nuxt/vue-app v2.17.0 (c) 2016-2023 | ||
* Released under the MIT License | ||
@@ -12,4 +12,4 @@ * Repository: https://github.com/nuxt/nuxt.js | ||
var dependencies = { | ||
"node-fetch-native": "^1.0.2", | ||
ufo: "^1.1.1", | ||
"node-fetch-native": "^1.2.0", | ||
ufo: "^1.1.2", | ||
unfetch: "^5.0.0", | ||
@@ -16,0 +16,0 @@ vue: "^2.7.10", |
{ | ||
"name": "@nuxt/vue-app", | ||
"version": "2.16.3", | ||
"version": "2.17.0", | ||
"repository": "nuxt/nuxt.js", | ||
@@ -16,4 +16,4 @@ "license": "MIT", | ||
"dependencies": { | ||
"node-fetch-native": "^1.0.2", | ||
"ufo": "^1.1.1", | ||
"node-fetch-native": "^1.2.0", | ||
"ufo": "^1.1.2", | ||
"unfetch": "^5.0.0", | ||
@@ -29,3 +29,3 @@ "vue": "^2.7.10", | ||
"engines": { | ||
"node": "^14.18.0 || ^16.10.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" | ||
"node": "^14.18.0 || >=16.10.0" | ||
}, | ||
@@ -32,0 +32,0 @@ "publishConfig": { |
@@ -247,3 +247,3 @@ import Vue from 'vue' | ||
<% if (features.middleware) { %> | ||
function callMiddleware (Components, context, layout) { | ||
function callMiddleware (Components, context, layout, renderState) { | ||
let midd = <%= devalue(router.middleware) %><%= isTest ? '// eslint-disable-line' : '' %> | ||
@@ -282,3 +282,3 @@ let unknownMiddleware = false | ||
} | ||
return middlewareSeries(midd, context) | ||
return middlewareSeries(midd, context, renderState) | ||
} | ||
@@ -293,3 +293,3 @@ <% } else if (isDev) { | ||
<% } %> | ||
async function render (to, from, next) { | ||
async function render (to, from, next, renderState) { | ||
if (this._routeChanged === false && this._paramChanged === false && this._queryChanged === false) { | ||
@@ -335,2 +335,8 @@ return next() | ||
from, | ||
error: (err) => { | ||
if (renderState.aborted) { | ||
return | ||
} | ||
app.nuxt.error.call(this, err) | ||
}, | ||
next: _next.bind(this) | ||
@@ -349,6 +355,10 @@ }) | ||
// Default layout | ||
await callMiddleware.call(this, Components, app.context) | ||
await callMiddleware.call(this, Components, app.context, undefined, renderState) | ||
if (nextCalled) { | ||
return | ||
} | ||
if (renderState.aborted) { | ||
next(false) | ||
return | ||
} | ||
<% } %> | ||
@@ -367,6 +377,10 @@ | ||
<% if (features.middleware) { %> | ||
await callMiddleware.call(this, Components, app.context, layout) | ||
await callMiddleware.call(this, Components, app.context, layout, renderState) | ||
if (nextCalled) { | ||
return | ||
} | ||
if (renderState.aborted) { | ||
next(false) | ||
return | ||
} | ||
<% } %> | ||
@@ -396,6 +410,10 @@ | ||
// Call middleware | ||
await callMiddleware.call(this, Components, app.context) | ||
await callMiddleware.call(this, Components, app.context, undefined, renderState) | ||
if (nextCalled) { | ||
return | ||
} | ||
if (renderState.aborted) { | ||
next(false) | ||
return | ||
} | ||
if (app.context._errored) { | ||
@@ -417,6 +435,10 @@ return next() | ||
// Call middleware for layout | ||
await callMiddleware.call(this, Components, app.context, layout) | ||
await callMiddleware.call(this, Components, app.context, layout, renderState) | ||
if (nextCalled) { | ||
return | ||
} | ||
if (renderState.aborted) { | ||
next(false) | ||
return | ||
} | ||
if (app.context._errored) { | ||
@@ -589,2 +611,6 @@ return next() | ||
<% } %> | ||
if (renderState.aborted) { | ||
next(false) | ||
return | ||
} | ||
next() | ||
@@ -594,2 +620,6 @@ } | ||
} catch (err) { | ||
if (renderState.aborted) { | ||
next(false) | ||
return | ||
} | ||
const error = err || {} | ||
@@ -921,4 +951,14 @@ if (error.message === 'ERR_REDIRECT') { | ||
router.beforeEach(loadAsyncComponents.bind(_app)) | ||
router.beforeEach(render.bind(_app)) | ||
// Each new invocation of render() aborts previous invocation | ||
let renderState = null | ||
const boundRender = render.bind(_app) | ||
router.beforeEach((to, from, next) => { | ||
if (renderState) { | ||
renderState.aborted = true | ||
} | ||
renderState = { aborted: false } | ||
boundRender(to, from, next, renderState) | ||
}) | ||
// Fix in static: remove trailing slash to force hydration | ||
@@ -968,3 +1008,4 @@ // Full static, if server-rendered: hydrate, to allow custom redirect to generated page | ||
}) | ||
}) | ||
}, | ||
{ aborted: false }) | ||
} |
@@ -282,2 +282,6 @@ import Vue from 'vue' | ||
if (context.error) { | ||
app.context.error = context.error | ||
} | ||
app.context.next = context.next | ||
@@ -291,4 +295,4 @@ app.context._redirected = false | ||
<% if (features.middleware) { %> | ||
export function middlewareSeries (promises, appContext) { | ||
if (!promises.length || appContext._redirected || appContext._errored) { | ||
export function middlewareSeries (promises, appContext, renderState) { | ||
if (!promises.length || appContext._redirected || appContext._errored || (renderState && renderState.aborted)) { | ||
return Promise.resolve() | ||
@@ -298,3 +302,3 @@ } | ||
.then(() => { | ||
return middlewareSeries(promises.slice(1), appContext) | ||
return middlewareSeries(promises.slice(1), appContext, renderState) | ||
}) | ||
@@ -301,0 +305,0 @@ } |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
172758
3720
Updatednode-fetch-native@^1.2.0
Updatedufo@^1.1.2