From ccca3e2cc989f5a777afdb12b7d98154061e334e Mon Sep 17 00:00:00 2001 From: Anthony Fu Date: Wed, 20 Sep 2023 16:23:54 +0800 Subject: [PATCH 1/8] wip: telemetry support --- package.json | 3 ++ packages/devtools-kit/src/_types/options.ts | 7 +++ packages/devtools-kit/src/_types/rpc.ts | 1 + .../components/PictureInPictureButton.vue | 10 ++++- .../client/components/SideNavItem.vue | 5 +++ .../devtools/client/composables/dev-auth.ts | 13 +++--- .../devtools/client/composables/telemetry.ts | 11 +++++ packages/devtools/client/setup/client-rpc.ts | 5 ++- packages/devtools/src/server-rpc/index.ts | 2 + packages/devtools/src/server-rpc/telemetry.ts | 43 +++++++++++++++++++ pnpm-lock.yaml | 9 ++-- 11 files changed, 98 insertions(+), 11 deletions(-) create mode 100644 packages/devtools/client/composables/telemetry.ts create mode 100644 packages/devtools/src/server-rpc/telemetry.ts diff --git a/package.json b/package.json index 2672b53ec0..88f52b844f 100644 --- a/package.json +++ b/package.json @@ -50,6 +50,9 @@ "vite-hot-client": "^0.2.2", "vue-tsc": "^1.8.11" }, + "resolutions": { + "@nuxt/telemetry": "^2.5.0" + }, "simple-git-hooks": { "pre-commit": "pnpm lint-staged" }, diff --git a/packages/devtools-kit/src/_types/options.ts b/packages/devtools-kit/src/_types/options.ts index cadf844a23..c4c39eae9c 100644 --- a/packages/devtools-kit/src/_types/options.ts +++ b/packages/devtools-kit/src/_types/options.ts @@ -82,6 +82,13 @@ export interface ModuleOptions { exclude?: (string | RegExp | ((item: Import) => boolean))[] } } + + /** + * Enable anonymous telemetry, helping us improve Nuxt DevTools. + * + * By default it will respect global Nuxt telemetry settings. + */ + telemetry?: boolean } export interface ModuleGlobalOptions { diff --git a/packages/devtools-kit/src/_types/rpc.ts b/packages/devtools-kit/src/_types/rpc.ts index 59d206ba9b..b9d5e26c14 100644 --- a/packages/devtools-kit/src/_types/rpc.ts +++ b/packages/devtools-kit/src/_types/rpc.ts @@ -60,6 +60,7 @@ export interface ServerFunctions { renameStaticAsset(token: string, oldPath: string, newPath: string): Promise // Actions + telemetryEvent(payload: object): void customTabAction(name: string, action: number): Promise runWizard(token: string, name: T, ...args: GetWizardArgs): Promise openInEditor(filepath: string): Promise diff --git a/packages/devtools/client/components/PictureInPictureButton.vue b/packages/devtools/client/components/PictureInPictureButton.vue index d8365c59a4..e5db99cb7c 100644 --- a/packages/devtools/client/components/PictureInPictureButton.vue +++ b/packages/devtools/client/components/PictureInPictureButton.vue @@ -5,11 +5,19 @@ const isInPopup = window.__NUXT_DEVTOOLS_IS_POPUP__ const showInfo = ref(false) const copy = useCopy() + +function popup() { + const fn = client.value?.devtools?.popup + if (fn) { + telemetry('popup') + fn() + } +}