From fca5cfe5fde510df041ff909bf57b2d7fb67ef57 Mon Sep 17 00:00:00 2001 From: Julien Huang Date: Sat, 3 Aug 2024 00:04:01 +0200 Subject: [PATCH] fix(tpc): update TPC and fix GA --- package.json | 2 +- pnpm-lock.yaml | 10 +++++----- scripts/generateTpcScripts.ts | 2 +- scripts/utils.ts | 2 +- src/runtime/registry/google-analytics.ts | 4 ++-- src/runtime/registry/google-tag-manager.ts | 2 +- 6 files changed, 11 insertions(+), 11 deletions(-) diff --git a/package.json b/package.json index 362cfd67..02665317 100644 --- a/package.json +++ b/package.json @@ -89,7 +89,7 @@ "shiki": "^1.10.3", "sirv": "^2.0.4", "std-env": "^3.7.0", - "third-party-capital": "^2.1.1", + "third-party-capital": "2.3.0", "ufo": "^1.5.3", "unimport": "^3.7.2", "unplugin": "^1.11.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 93a77df4..ad627a1b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -83,8 +83,8 @@ importers: specifier: ^3.7.0 version: 3.7.0 third-party-capital: - specifier: ^2.1.1 - version: 2.1.1 + specifier: 2.3.0 + version: 2.3.0 ufo: specifier: ^1.5.3 version: 1.5.3 @@ -5716,8 +5716,8 @@ packages: thenify@3.3.1: resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} - third-party-capital@2.1.1: - resolution: {integrity: sha512-QODSCO+T5+su8aCXnCg4CsVkkGvBTlSBDat0b9v3LcMKqiumvQeK7uDOM3hfN4Gl44pvQvjOJXLNlISvTey9zA==} + third-party-capital@2.3.0: + resolution: {integrity: sha512-p4rGOF4JCkI18HH3a1Vfd89Mg37TLlAsGmePBt20MA52frviYSBE6ToGOmTpqRC4EIlS5/4Owv6TpegFJUSkOg==} tiny-inflate@1.0.3: resolution: {integrity: sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==} @@ -14289,7 +14289,7 @@ snapshots: dependencies: any-promise: 1.3.0 - third-party-capital@2.1.1: + third-party-capital@2.3.0: dependencies: semver: 7.6.2 diff --git a/scripts/generateTpcScripts.ts b/scripts/generateTpcScripts.ts index a49d5cb5..735b0254 100644 --- a/scripts/generateTpcScripts.ts +++ b/scripts/generateTpcScripts.ts @@ -45,7 +45,7 @@ const scripts: Array = [ key: 'googleAnalytics', tpcTypesImport: ['DataLayer', 'GTag'], performanceMarkFeature: 'nuxt-third-parties-ga', - useBody: 'const gtag: GTag = function (...args:Parameters) { \n((window as any)[options.l ?? "dataLayer"] as DataLayer).push(args);} as GTag\nreturn { dataLayer: (window as any)[options.l ?? "dataLayer"] as DataLayer,\n gtag }', + useBody: 'const gtag: GTag = function (...args:Parameters) { \n((window as any)["gtag-"+(options.l ?? "dataLayer")] as GTag)(...args);} as GTag\nreturn { dataLayer: (window as any)[options.l ?? "dataLayer"] as DataLayer,\n gtag }', // allow dataLayer to be accessed on the server returnStub: 'fn === \'dataLayer\' ? [] : void 0', }] diff --git a/scripts/utils.ts b/scripts/utils.ts index c18562a8..ee2e4040 100644 --- a/scripts/utils.ts +++ b/scripts/utils.ts @@ -132,7 +132,7 @@ ${functionBody.join('\n')} function replaceTokenToRuntime(code: string, defaultValues?: Record) { return code.split(';').map(c => c.replaceAll(/'?\{\{(.*?)\}\}'?/g, (_, token) => { - return `options?.${token} ${defaultValues?.[token] ? `?? ${JSON.stringify(defaultValues?.[token])}` : ''}` + return `(options?.${token} ${defaultValues?.[token] ? `?? ${JSON.stringify(defaultValues?.[token])}` : ''})` })).join(';') } diff --git a/src/runtime/registry/google-analytics.ts b/src/runtime/registry/google-analytics.ts index 2c39e50a..de569a1f 100644 --- a/src/runtime/registry/google-analytics.ts +++ b/src/runtime/registry/google-analytics.ts @@ -13,7 +13,7 @@ export type GoogleAnalyticsInput = RegistryScriptInput) { - ((window as any)[options.l ?? 'dataLayer'] as DataLayer).push(args) + ((window as any)['gtag-' + (options.l ?? 'dataLayer')] as GTag)(...args) } as GTag return { dataLayer: (window as any)[options.l ?? 'dataLayer'] as DataLayer, gtag } @@ -34,6 +34,6 @@ export function useScriptGoogleAnalytics(_options?: GoogleAnalyticsInput) { // eslint-disable-next-line // @ts-ignore // eslint-disable-next-line - clientInit: import.meta.server ? undefined : () => {window[options?.l ?? "dataLayer"]=window[options?.l ?? "dataLayer"]||[];window[options?.l ?? "dataLayer"].push({'js':new Date()});window[options?.l ?? "dataLayer"].push({'config':options?.id })}, + clientInit: import.meta.server ? undefined : () => {window[(options?.l ?? "dataLayer")]=window[(options?.l ?? "dataLayer")]||[];window['gtag-'+(options?.l ?? "dataLayer")]=function (){window[(options?.l ?? "dataLayer")].push(arguments);};window['gtag-'+(options?.l ?? "dataLayer")]('js',new Date());window['gtag-'+(options?.l ?? "dataLayer")]('config',(options?.id ))}, }), _options) } diff --git a/src/runtime/registry/google-tag-manager.ts b/src/runtime/registry/google-tag-manager.ts index 77481c68..90ca6535 100644 --- a/src/runtime/registry/google-tag-manager.ts +++ b/src/runtime/registry/google-tag-manager.ts @@ -33,6 +33,6 @@ export function useScriptGoogleTagManager(_options?: GoogleTagManagerInput) { // eslint-disable-next-line // @ts-ignore // eslint-disable-next-line - clientInit: import.meta.server ? undefined : () => {window[options?.l ?? "dataLayer"]=window[options?.l ?? "dataLayer"]||[];window[options?.l ?? "dataLayer"].push({'gtm.start':new Date().getTime(),event:'gtm.js'});}, + clientInit: import.meta.server ? undefined : () => {window[(options?.l ?? "dataLayer")]=window[(options?.l ?? "dataLayer")]||[];window[(options?.l ?? "dataLayer")].push({'gtm.start':new Date().getTime(),event:'gtm.js'});}, }), _options) }