diff --git a/packages/devtools-ui-kit/src/unocss.ts b/packages/devtools-ui-kit/src/unocss.ts index 00782b0a79..ebff5532b2 100644 --- a/packages/devtools-ui-kit/src/unocss.ts +++ b/packages/devtools-ui-kit/src/unocss.ts @@ -29,14 +29,14 @@ export function unocssPreset(): Preset { }), rules: [ [/^n-(.*)$/, ([, body]: string[], { theme }: RuleContext) => { - const color = parseColor(body, theme) + const color = parseColor(body!, theme) if (color?.cssColor?.type === 'rgb' && color.cssColor.components) { return { '--nui-c-context': `${color.cssColor.components.join(',')}`, } } }], - [/^n-(.*)$/, fonts[1][1] as any], + [/^n-(.*)$/, fonts[1]![1] as any], ['n-dashed', { 'border-style': 'dashed' }], ['n-solid', { 'background-color': 'rgba(var(--nui-c-context), 1) !important', diff --git a/packages/devtools/client/components/AssetDetails.vue b/packages/devtools/client/components/AssetDetails.vue index 0378792fed..bffccc29f4 100644 --- a/packages/devtools/client/components/AssetDetails.vue +++ b/packages/devtools/client/components/AssetDetails.vue @@ -157,7 +157,7 @@ const renameDialog = ref(false) const newName = ref('') async function renameAsset() { const parts = asset.value.filePath.split('/') - const oldName = parts.slice(-1)[0].split('.').slice(0, -1).join('.') + const oldName = parts.slice(-1)[0]?.split('.').slice(0, -1).join('.') if (!newName.value || newName.value === oldName) { return devtoolsUiShowNotification({ @@ -168,7 +168,7 @@ async function renameAsset() { } try { - const extension = parts.slice(-1)[0].split('.').slice(-1)[0] + const extension = parts.slice(-1)[0]?.split('.').slice(-1)[0] const fullPath = `${parts.slice(0, -1).join('/')}/${newName.value}.${extension}` await rpc.renameStaticAsset(await ensureDevAuthToken(), asset.value.filePath, fullPath) asset.value = undefined as any diff --git a/packages/devtools/client/components/CommandPalette.vue b/packages/devtools/client/components/CommandPalette.vue index 1c44d6eb60..ccd2e38aab 100644 --- a/packages/devtools/client/components/CommandPalette.vue +++ b/packages/devtools/client/components/CommandPalette.vue @@ -37,7 +37,11 @@ function moveSelected(delta: number) { } function scrollToITem() { - const item = document.getElementById(filtered.value[selectedIndex.value]?.id) + const id = filtered.value[selectedIndex.value]?.id + if (!id) + return + + const item = document.getElementById(id) item?.scrollIntoView({ block: 'center', }) diff --git a/packages/devtools/client/components/DataSchemaDrawer.vue b/packages/devtools/client/components/DataSchemaDrawer.vue index 802f617716..b2ed354e1c 100644 --- a/packages/devtools/client/components/DataSchemaDrawer.vue +++ b/packages/devtools/client/components/DataSchemaDrawer.vue @@ -97,7 +97,7 @@ function copyToClipboard() { diff --git a/packages/devtools/client/components/ServerRouteDetails.vue b/packages/devtools/client/components/ServerRouteDetails.vue index 622afe0c7c..4f15335436 100644 --- a/packages/devtools/client/components/ServerRouteDetails.vue +++ b/packages/devtools/client/components/ServerRouteDetails.vue @@ -163,7 +163,7 @@ const finalPath = computed(() => { }) const finalURL = computed(() => domain.value + finalPath.value) -function parseInputs(inputs: ServerRouteInput[]) { +function parseInputs(inputs: ServerRouteInput[] = []) { const formatted = Object.fromEntries( inputs.filter(({ active, key, value }) => active && key && value !== undefined).map(({ key, value }) => [key, value]), ) @@ -433,7 +433,7 @@ const copy = useCopy() {{ tab.name }} {{ tab?.length ? `(${tab.length})` : '' }} - {{ inputDefaults[tab.slug]?.length ? `(${inputDefaults[tab.slug].length})` : '' }} + {{ inputDefaults[tab.slug]?.length ? `(${inputDefaults[tab.slug]!.length})` : '' }} @@ -485,9 +485,9 @@ const copy = useCopy() placeholder="Value..." :model-value="cookie.value" flex-1 n="primary" - @input="updateCookie(cookie.key, ($event as any).target?.value)" + @input="updateCookie(cookie.key!, ($event as any).target?.value)" /> - + diff --git a/packages/devtools/client/components/ServerTaskDetails.vue b/packages/devtools/client/components/ServerTaskDetails.vue index 16f47ffa28..7236a49fcc 100644 --- a/packages/devtools/client/components/ServerTaskDetails.vue +++ b/packages/devtools/client/components/ServerTaskDetails.vue @@ -115,7 +115,7 @@ const finalPath = computed(() => { }) const finalURL = computed(() => domain.value + finalPath.value) -function parseInputs(inputs: ServerRouteInput[]) { +function parseInputs(inputs: ServerRouteInput[] = []) { const formatted = Object.fromEntries( inputs.filter(({ active, key, value }) => active && key && value !== undefined).map(({ key, value }) => [key, value]), ) @@ -272,7 +272,7 @@ const copy = useCopy() {{ tab.name }} {{ tab?.length ? `(${tab.length})` : '' }} - {{ inputDefaults[tab.slug]?.length ? `(${inputDefaults[tab.slug].length})` : '' }} + {{ inputDefaults[tab.slug]?.length ? `(${inputDefaults[tab.slug]!.length})` : '' }} diff --git a/packages/devtools/client/components/TerminalPage.vue b/packages/devtools/client/components/TerminalPage.vue index f3b52e76b4..3855ff6f0f 100644 --- a/packages/devtools/client/components/TerminalPage.vue +++ b/packages/devtools/client/components/TerminalPage.vue @@ -15,7 +15,7 @@ async function remove(id: string) { watchEffect(() => { if (!terminalId.value && terminals.value?.length) - terminalId.value = terminals.value[0].id + terminalId.value = terminals.value[0]!.id }) diff --git a/packages/devtools/client/composables/timeline.ts b/packages/devtools/client/composables/timeline.ts index 84e6102770..83e99f4272 100644 --- a/packages/devtools/client/composables/timeline.ts +++ b/packages/devtools/client/composables/timeline.ts @@ -41,7 +41,7 @@ export function segmentTimelineEvents(events: TimelineEvent[]) { const layers: number[] = [] segment.duration = duration - segment.previousGap = idx > 0 ? segment.start - segments[idx - 1].end : 0 + segment.previousGap = idx > 0 ? segment.start - segments[idx - 1]!.end : 0 segment.events .forEach((event) => { const end = (event.end || event.start) diff --git a/packages/devtools/client/pages/modules/server-routes.vue b/packages/devtools/client/pages/modules/server-routes.vue index 9c5551e8a2..97c16be2e8 100644 --- a/packages/devtools/client/pages/modules/server-routes.vue +++ b/packages/devtools/client/pages/modules/server-routes.vue @@ -107,7 +107,7 @@ const filterByCollection = computed(() => { } } - if (collectionNames.length > 0 && collectionNames[collectionNames.length - 1].includes('.')) + if (collectionNames.length > 0 && collectionNames[collectionNames.length - 1]!.includes('.')) collectionNames.pop() collectionNames.forEach((collectionName) => { @@ -192,7 +192,7 @@ function capitalize(str: string) { diff --git a/packages/devtools/client/pages/modules/server-tasks.vue b/packages/devtools/client/pages/modules/server-tasks.vue index 8c9e4096bc..0f933d508d 100644 --- a/packages/devtools/client/pages/modules/server-tasks.vue +++ b/packages/devtools/client/pages/modules/server-tasks.vue @@ -31,7 +31,7 @@ const inputDefaultsDrawer = ref(false) const serverTasks = useServerTasks() const tasks = computed(() => Object.keys(serverTasks.value?.tasks ?? {}).map(taskKey => ({ name: taskKey, - ...serverTasks.value!.tasks[taskKey], + ...serverTasks.value!.tasks[taskKey]!, type: 'task', }))) @@ -121,7 +121,7 @@ const filterByCollection = computed(() => { const taskParts = item.name.split(':') const collectionNames = taskParts.concat() - if (collectionNames.length > 0 && collectionNames[collectionNames.length - 1].includes('.')) + if (collectionNames.length > 0 && collectionNames[collectionNames.length - 1]?.includes('.')) collectionNames.pop() collectionNames.forEach((collectionName) => { @@ -215,7 +215,7 @@ function toggleView() { Merged as default for every task in DevTools diff --git a/packages/devtools/src/integrations/vite-inspect.ts b/packages/devtools/src/integrations/vite-inspect.ts index 12eb6f7f2f..9cee20e361 100644 --- a/packages/devtools/src/integrations/vite-inspect.ts +++ b/packages/devtools/src/integrations/vite-inspect.ts @@ -32,10 +32,10 @@ export async function setup({ nuxt, rpc }: NuxtDevtoolsServerContext) { async function getComponentsRelationships() { const meta = await api?.rpc.getMetadata() const modules = ( - meta + meta && meta.instances[0] ? await api?.rpc.getModulesList({ - vite: meta?.instances[0].vite, - env: meta?.instances[0].environments[0], + vite: meta.instances[0].vite, + env: meta.instances[0].environments[0]!, }) : null ) || [] diff --git a/packages/devtools/src/runtime/shared/hooks.ts b/packages/devtools/src/runtime/shared/hooks.ts index 1d5cc1cda6..10a0d05e9c 100644 --- a/packages/devtools/src/runtime/shared/hooks.ts +++ b/packages/devtools/src/runtime/shared/hooks.ts @@ -25,11 +25,13 @@ export function setupHooksDebug>(hooks: T) { } else { const hook = serverHooks[event.name] - if (hook.duration != null) - hook.executions.push(hook.duration) - hook.start = now() - hook.end = undefined - hook.duration = undefined + if (hook) { + if (hook.duration != null) + hook.executions.push(hook.duration) + hook.start = now() + hook.end = undefined + hook.duration = undefined + } } }) diff --git a/packages/devtools/src/server-rpc/general.ts b/packages/devtools/src/server-rpc/general.ts index cefe22f289..fdf10c9ffe 100644 --- a/packages/devtools/src/server-rpc/general.ts +++ b/packages/devtools/src/server-rpc/general.ts @@ -195,8 +195,8 @@ export function setupGeneralRPC({ const match = input.match(/^(.*?)(:[:\d]*)$/) let suffix = '' if (match) { - input = match[1] - suffix = match[2] + input = match[1]! + suffix = match[2]! } // search for existing path diff --git a/packages/devtools/src/server-rpc/index.ts b/packages/devtools/src/server-rpc/index.ts index dbd31d1562..921d3980d0 100644 --- a/packages/devtools/src/server-rpc/index.ts +++ b/packages/devtools/src/server-rpc/index.ts @@ -40,7 +40,7 @@ export function setupRPC(nuxt: Nuxt, options: ModuleOptions) { return const [namespace, fnName] = name.split(':') - return extendedRpcMap.get(namespace)?.[fnName] + return extendedRpcMap.get(namespace!)?.[fnName!] }, onError(error, name) { logger.error( diff --git a/packages/devtools/src/server-rpc/npm.ts b/packages/devtools/src/server-rpc/npm.ts index 371592a158..83ee534019 100644 --- a/packages/devtools/src/server-rpc/npm.ts +++ b/packages/devtools/src/server-rpc/npm.ts @@ -59,7 +59,7 @@ export function setupNpmRPC({ nuxt, ensureDevAuthToken }: NuxtDevtoolsServerCont const processId = `npm:${command}:${packageName}` startSubprocess({ - command: args[0], + command: args[0]!, args: args.slice(1), }, { id: processId, @@ -112,7 +112,7 @@ export function setupNpmRPC({ nuxt, ensureDevAuthToken }: NuxtDevtoolsServerCont installSet.add(name) const process = startSubprocess({ - command: commands[0], + command: commands[0]!, args: commands.slice(1), }, { id: processId, @@ -177,7 +177,7 @@ export function setupNpmRPC({ nuxt, ensureDevAuthToken }: NuxtDevtoolsServerCont if (!dry) { const process = startSubprocess({ - command: commands[0], + command: commands[0]!, args: commands.slice(1), }, { id: processId, diff --git a/packages/devtools/src/server-rpc/storage.ts b/packages/devtools/src/server-rpc/storage.ts index 1cccf18e16..cecad52351 100644 --- a/packages/devtools/src/server-rpc/storage.ts +++ b/packages/devtools/src/server-rpc/storage.ts @@ -4,7 +4,7 @@ import type { NuxtDevtoolsServerContext, ServerFunctions } from '../types' const IGNORE_STORAGE_MOUNTS = ['root', 'build', 'src', 'cache'] function shouldIgnoreStorageKey(key: string) { - return IGNORE_STORAGE_MOUNTS.includes(key.split(':')[0]) + return IGNORE_STORAGE_MOUNTS.includes(key.split(':')[0]!) } export function setupStorageRPC({ @@ -37,7 +37,7 @@ export function setupStorageRPC({ for (const name of Object.keys(mounts)) { if (shouldIgnoreStorageKey(name)) continue - storageMounts[name] = mounts[name] + storageMounts[name] = mounts[name]! } }) diff --git a/scripts/bump-nightly.ts b/scripts/bump-nightly.ts index 2bdccb990b..8de6e67618 100644 --- a/scripts/bump-nightly.ts +++ b/scripts/bump-nightly.ts @@ -1,7 +1,7 @@ import { execSync } from 'node:child_process' import { promises as fsp } from 'node:fs' -import { globby } from 'globby' import { resolve } from 'pathe' +import { glob } from 'tinyglobby' // Temporary forked from nuxt/framework @@ -37,7 +37,7 @@ type Package = ThenArg> async function loadWorkspace(dir: string) { const workspacePkg = await loadPackage(dir) - const pkgDirs = (await globby(['packages/*'], { onlyDirectories: true })).sort() + const pkgDirs = (await glob(['packages/*'], { onlyDirectories: true })).sort() const packages: Package[] = []