From 88f91589fb10981547d322347deb87c4cfda6a6e Mon Sep 17 00:00:00 2001 From: jinhojang6 Date: Thu, 21 Sep 2023 23:27:28 +0900 Subject: [PATCH] feat: add valid hostnames to dcosaurus-fathom --- packages/docusaurus-fathom/src/client/index.ts | 5 +++++ .../docusaurus-fathom/src/client/types/plugin.types.ts | 2 +- packages/docusaurus-fathom/src/index.ts | 9 +++++---- packages/docusaurus-playground/docusaurus.config.js | 1 + 4 files changed, 12 insertions(+), 5 deletions(-) diff --git a/packages/docusaurus-fathom/src/client/index.ts b/packages/docusaurus-fathom/src/client/index.ts index b05afd9..d5ca5c2 100644 --- a/packages/docusaurus-fathom/src/client/index.ts +++ b/packages/docusaurus-fathom/src/client/index.ts @@ -1,6 +1,7 @@ import { SITE_ID, SCRIPT_URL, + HOSTNAMES, } from '@generated/docusaurus-fathom/default/options' import ExecutionEnvironment from '@docusaurus/ExecutionEnvironment' import { ClientModule } from '@docusaurus/types/src/clientModule' @@ -35,6 +36,10 @@ export const onRouteDidUpdate: ClientModule['onRouteDidUpdate'] = ({ location, previousLocation, }) => { + if (HOSTNAMES.length > 0 && !HOSTNAMES.includes(window.location.hostname)) + return + if (window.location.hostname === 'localhost') return + if (location.pathname !== previousLocation?.pathname) { window.fathom('trackPageview') } diff --git a/packages/docusaurus-fathom/src/client/types/plugin.types.ts b/packages/docusaurus-fathom/src/client/types/plugin.types.ts index 0dbde5d..c4b0ed9 100644 --- a/packages/docusaurus-fathom/src/client/types/plugin.types.ts +++ b/packages/docusaurus-fathom/src/client/types/plugin.types.ts @@ -1,5 +1,5 @@ export type PluginOptions = { siteId: string scriptUrl: string - disabled?: boolean + hostnames?: string[] } diff --git a/packages/docusaurus-fathom/src/index.ts b/packages/docusaurus-fathom/src/index.ts index da495da..6b4bd70 100644 --- a/packages/docusaurus-fathom/src/index.ts +++ b/packages/docusaurus-fathom/src/index.ts @@ -7,20 +7,21 @@ export default function fathomPlugin( context: LoadContext, options: PluginOptions, ): Plugin { - const { siteId, scriptUrl, disabled = false } = options + const { siteId, scriptUrl, hostnames = [] } = options const dir = path.join(context.generatedFilesDir, 'docusaurus-fathom/default') fs.ensureDirSync(dir) fs.writeFileSync( path.join(dir, 'options.ts'), - `export const SITE_ID = "${siteId}"\nexport const SCRIPT_URL = "${scriptUrl}"`, + `export const SITE_ID = "${siteId}"\nexport const SCRIPT_URL = "${scriptUrl}"\nexport const HOSTNAMES = ${JSON.stringify( + hostnames, + )}`, ) return { name: 'docusaurus-fathom', - getClientModules: () => - disabled ? [] : [path.resolve(__dirname, './client/index.js')], + getClientModules: () => [path.resolve(__dirname, './client/index.js')], } } diff --git a/packages/docusaurus-playground/docusaurus.config.js b/packages/docusaurus-playground/docusaurus.config.js index 873d725..e90b187 100644 --- a/packages/docusaurus-playground/docusaurus.config.js +++ b/packages/docusaurus-playground/docusaurus.config.js @@ -75,6 +75,7 @@ const config = { siteId: 'TEST', scriptUrl: 'https://fathom.status.im/tracker.js', disabled: true, + hostnames: ['waku.org'], }, ], ],