From 096ddcf54d446c8dab31b5a662711be90a80ecc9 Mon Sep 17 00:00:00 2001 From: jinhojang6 Date: Wed, 20 Sep 2023 00:26:33 +0900 Subject: [PATCH 1/3] feat: add disable prop to docusaurus-fathom --- .../docusaurus-fathom/src/client/types/plugin.types.ts | 1 + packages/docusaurus-fathom/src/index.ts | 6 ++++-- packages/docusaurus-playground/docusaurus.config.js | 8 ++++++++ 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/packages/docusaurus-fathom/src/client/types/plugin.types.ts b/packages/docusaurus-fathom/src/client/types/plugin.types.ts index 5e0aabe..0dbde5d 100644 --- a/packages/docusaurus-fathom/src/client/types/plugin.types.ts +++ b/packages/docusaurus-fathom/src/client/types/plugin.types.ts @@ -1,4 +1,5 @@ export type PluginOptions = { siteId: string scriptUrl: string + disabled?: boolean } diff --git a/packages/docusaurus-fathom/src/index.ts b/packages/docusaurus-fathom/src/index.ts index 966e821..da495da 100644 --- a/packages/docusaurus-fathom/src/index.ts +++ b/packages/docusaurus-fathom/src/index.ts @@ -7,7 +7,8 @@ export default function fathomPlugin( context: LoadContext, options: PluginOptions, ): Plugin { - const { siteId, scriptUrl } = options + const { siteId, scriptUrl, disabled = false } = options + const dir = path.join(context.generatedFilesDir, 'docusaurus-fathom/default') fs.ensureDirSync(dir) @@ -18,7 +19,8 @@ export default function fathomPlugin( return { name: 'docusaurus-fathom', - getClientModules: () => [path.resolve(__dirname, './client/index.js')], + getClientModules: () => + disabled ? [] : [path.resolve(__dirname, './client/index.js')], } } diff --git a/packages/docusaurus-playground/docusaurus.config.js b/packages/docusaurus-playground/docusaurus.config.js index f0271fb..873d725 100644 --- a/packages/docusaurus-playground/docusaurus.config.js +++ b/packages/docusaurus-playground/docusaurus.config.js @@ -69,6 +69,14 @@ const config = { authorsMapPath: 'authors.yml', }), ], + [ + '@acid-info/docusaurus-fathom', + { + siteId: 'TEST', + scriptUrl: 'https://fathom.status.im/tracker.js', + disabled: true, + }, + ], ], themeConfig: From 88f91589fb10981547d322347deb87c4cfda6a6e Mon Sep 17 00:00:00 2001 From: jinhojang6 Date: Thu, 21 Sep 2023 23:27:28 +0900 Subject: [PATCH 2/3] 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'], }, ], ], From 91d60aed3ae0bf7365b692d39ebd16d0e5deee61 Mon Sep 17 00:00:00 2001 From: jinhojang6 Date: Fri, 22 Sep 2023 20:58:43 +0900 Subject: [PATCH 3/3] fix: fix exceptional cases with docusaurus-fathom --- packages/docusaurus-fathom/src/client/index.ts | 18 ++++++++++++------ .../docusaurus-playground/docusaurus.config.js | 2 +- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/packages/docusaurus-fathom/src/client/index.ts b/packages/docusaurus-fathom/src/client/index.ts index d5ca5c2..24e3f16 100644 --- a/packages/docusaurus-fathom/src/client/index.ts +++ b/packages/docusaurus-fathom/src/client/index.ts @@ -12,7 +12,13 @@ declare global { } } -if (ExecutionEnvironment.canUseDOM) { +const main = () => { + if ( + HOSTNAMES.length > 0 + ? !HOSTNAMES.includes(window.location.hostname) + : window.location.hostname === 'localhost' + ) + return ;(function (f: any, a: any, t: string, h: string) { a[h] = a[h] || @@ -32,15 +38,15 @@ if (ExecutionEnvironment.canUseDOM) { fathom('trackPageview') } +if (ExecutionEnvironment.canUseDOM) { + main() +} + 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) { + if (!!window.fathom && location.pathname !== previousLocation?.pathname) { window.fathom('trackPageview') } } diff --git a/packages/docusaurus-playground/docusaurus.config.js b/packages/docusaurus-playground/docusaurus.config.js index e90b187..d92de82 100644 --- a/packages/docusaurus-playground/docusaurus.config.js +++ b/packages/docusaurus-playground/docusaurus.config.js @@ -75,7 +75,7 @@ const config = { siteId: 'TEST', scriptUrl: 'https://fathom.status.im/tracker.js', disabled: true, - hostnames: ['waku.org'], + hostnames: ['localhost', 'waku.org'], }, ], ],