Upgrading @nuxt/devtools 0.8 to 1
Breaking0.8.5 → 1.7.0Breaking1Security3New38Changed30Fixed97
SecurityHigh · CVSS 8.8Nuxt Devtools has a Path Traversal: '../filedir'GHSA-rcvg-rgf7-pppv · CVE-2024-23657 ↗
BreakingUpgrade verdict
1 breaking change and 3 security fixes.
In plain terms
- The package no longer provides a CommonJS entry point, so projects that load it with require() may need to switch to ESM imports.
- Nuxt Devtools has a Path Traversal: '../filedir'
- These devtools endpoints now need an authentication token, so unauthenticated requests are rejected.
- Restarting Nuxt through devtools now requires an authentication token.
Must act 4 items need code or config changes
Adds @vue/devtools-core 7.6.8, @vue/devtools-kit 7.6.8, cronstrue ^2.52.0, destr ^2.0.3, fast-npm-meta ^0.2.2, scule ^1.3.0, tinyglobby ^0.2.10.
Drops fast-glob, global-dirs, h3, ofetch, pacote, wait-on.
Installs 235 packages in all (was 422).
What you must change
Breaking1
Removes the CommonJS entrypoint from the devtools package.
Security3
Nuxt Devtools has a Path Traversal: '../filedir'
High · CVSS 8.8Requires an auth token for the getImageMeta and getTextAssetContent endpoints.
getImageMetagetTextAssetContentRequires a token for the restartNuxt endpoint.
restartNuxtAPI changes
Generated by DepDelta from published .d.ts files. Not mixed with prose notes.
- changed:
const default: _nuxt_schema.NuxtModule<ModuleOptions> → const default: _nuxt_schema.NuxtModule<ModuleOptions, ModuleOptions, false>
- changed:
const client: import('vue').ShallowRef<NuxtDevtoolsHostClient | undefined> → const client: import('vue').ShallowRef<any, any>
- changed:
const popupWindow: import('vue').ShallowRef<Window | null> → const popupWindow: import('vue').ShallowRef<Window | null, Window | null> - changed:
const state: import('vue').Ref<DevToolsFrameState> → const state: import('vue').Ref<DevToolsFrameState, DevToolsFrameState>
- changed:
function useScreenSafeArea(): { top: Ref<number>; right: Ref<number>; bottom: Ref<number>; left: Ref<number>; update: () => void } → function useScreenSafeArea(): { top: Ref<number, number>; right: Ref<number, number>; bottom: Ref<number, number>; left: Ref<number, number>; update: () => void } - added:
function useElementBounding(target: Ref<HTMLElement | null | undefined>): { height: Ref<number, number>; bottom: Ref<number, number>; left: Ref<number, number>; right: Ref<number, number>; top: Ref<number, number>; width: Ref<number, number>; x: Ref<number, number>; y: Ref<number, number>; update: () => void }
- added:
const settings: { ui: NuxtDevToolsOptions['ui'] }