From 19fda12c19b983043894763900f9233c92b31e33 Mon Sep 17 00:00:00 2001 From: Arash <38922203+arashsheyda@users.noreply.github.com> Date: Wed, 26 Apr 2023 16:02:53 +0300 Subject: [PATCH] fix: server-routes watcher (#205) Co-authored-by: Anthony Fu --- packages/devtools/package.json | 1 + packages/devtools/src/server-rpc/server-routes.ts | 13 +++++++++++++ pnpm-lock.yaml | 3 +++ 3 files changed, 17 insertions(+) diff --git a/packages/devtools/package.json b/packages/devtools/package.json index ce2e55fb4..bfb6853b3 100644 --- a/packages/devtools/package.json +++ b/packages/devtools/package.json @@ -57,6 +57,7 @@ "nypm": "^0.2.0", "pacote": "^15.1.2", "pathe": "^1.1.0", + "perfect-debounce": "^0.1.3", "picocolors": "^1.0.0", "pkg-types": "^1.0.2", "rc9": "^2.1.0", diff --git a/packages/devtools/src/server-rpc/server-routes.ts b/packages/devtools/src/server-rpc/server-routes.ts index 6a074e743..3e3149949 100644 --- a/packages/devtools/src/server-rpc/server-routes.ts +++ b/packages/devtools/src/server-rpc/server-routes.ts @@ -2,6 +2,7 @@ import type { Nitro } from 'nitropack' import { join, resolve } from 'pathe' import fg from 'fast-glob' import { withBase, withLeadingSlash, withoutTrailingSlash } from 'ufo' +import { debounce } from 'perfect-debounce' import type { NuxtDevtoolsServerContext, ServerFunctions, ServerRouteInfo } from '../types' export function setupServerRoutesRPC({ nuxt, refresh }: NuxtDevtoolsServerContext) { @@ -9,12 +10,24 @@ export function setupServerRoutesRPC({ nuxt, refresh }: NuxtDevtoolsServerContex let promiseCache: Promise | null = null + const refreshDebounced = debounce(() => { + promiseCache = null + refresh('getServerRoutes') + }, 500) + nuxt.hook('nitro:init', (_) => { nitro = _ promiseCache = null refresh('getServerRoutes') }) + nuxt.hook('ready', () => { + nitro?.storage.watch((event, key) => { + if (key.startsWith('src:api:')) + refreshDebounced() + }) + }) + function scan() { if (promiseCache) return promiseCache diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4756634fc..2e676c6a1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -148,6 +148,9 @@ importers: pathe: specifier: ^1.1.0 version: 1.1.0 + perfect-debounce: + specifier: ^0.1.3 + version: 0.1.3 picocolors: specifier: ^1.0.0 version: 1.0.0