diff --git a/strr-base-web/nuxt.config.ts b/strr-base-web/nuxt.config.ts index a2e5aecf..64992c03 100644 --- a/strr-base-web/nuxt.config.ts +++ b/strr-base-web/nuxt.config.ts @@ -25,7 +25,9 @@ export default defineNuxtConfig({ modules: [ '@nuxtjs/eslint-module', '@nuxt/test-utils/module', - '@nuxt/image' + '@nuxt/image', + '@zadigetvoltaire/nuxt-gtm', + 'nuxt-gtag' ], extends: ['@daxiom/nuxt-core-layer-test'], @@ -77,6 +79,18 @@ export default defineNuxtConfig({ fallback: 'light' }, + gtm: { + enabled: !!process.env.NUXT_GTM_ID?.trim(), + id: process.env.NUXT_GTM_ID?.trim() as string, + debug: true, + defer: true + }, + + gtag: { + enabled: !!process.env.NUXT_GTAG_ID?.trim(), + id: process.env.NUXT_GTAG_ID?.trim() + }, + runtimeConfig: { public: { // Keys within public, will be also exposed to the client-side diff --git a/strr-base-web/package.json b/strr-base-web/package.json index 96ccacf2..f8cbe0d4 100644 --- a/strr-base-web/package.json +++ b/strr-base-web/package.json @@ -33,10 +33,12 @@ "@typescript-eslint/parser": "^8.19.0", "@vitest/coverage-v8": "1.6.0", "@vue/test-utils": "^2.4.6", + "@zadigetvoltaire/nuxt-gtm": "^0.0.13", "eslint": "^8.56.0", "eslint-plugin-tailwindcss": "^3.17.4", "happy-dom": "^14.12.3", "nuxt": "^3.15.0", + "nuxt-gtag": "3.0.2", "playwright-core": "^1.49.1", "sass": "^1.77.6", "typescript": "^5.5.3", diff --git a/strr-base-web/pnpm-lock.yaml b/strr-base-web/pnpm-lock.yaml index 5711d05b..478f5463 100644 --- a/strr-base-web/pnpm-lock.yaml +++ b/strr-base-web/pnpm-lock.yaml @@ -67,6 +67,9 @@ devDependencies: '@vue/test-utils': specifier: ^2.4.6 version: 2.4.6 + '@zadigetvoltaire/nuxt-gtm': + specifier: ^0.0.13 + version: 0.0.13(nuxt@3.15.0)(rollup@4.29.1)(vue@3.5.13) eslint: specifier: ^8.56.0 version: 8.57.1 @@ -79,6 +82,9 @@ devDependencies: nuxt: specifier: ^3.15.0 version: 3.15.0(eslint@8.57.1)(rollup@4.29.1)(sass@1.83.0)(typescript@5.7.2)(vite@5.4.11) + nuxt-gtag: + specifier: 3.0.2 + version: 3.0.2(rollup@4.29.1) playwright-core: specifier: ^1.49.1 version: 1.49.1 @@ -916,6 +922,24 @@ packages: dev: true optional: true + /@gtm-support/core@2.3.1: + resolution: {integrity: sha512-eD0hndQjhgKm5f/7IA9fZYujmHiVMY+fnYv4mdZSmz5XJQlS4TiTmpdZx2l7I2A9rI9J6Ysz8LpXYYNo/Xq4LQ==} + dev: true + + /@gtm-support/vue-gtm@2.2.0(vue@3.5.13): + resolution: {integrity: sha512-7nhBTRkTG0mD+7r7JvNalJz++YwszZk0oP1HIY6fCgz6wNKxT6LuiXCqdPrZmNPe/WbPIKuqxGZN5s+i6NZqow==} + peerDependencies: + vue: '>= 3.2.0 < 4.0.0' + peerDependenciesMeta: + vue-router: + optional: true + dependencies: + '@gtm-support/core': 2.3.1 + vue: 3.5.13(typescript@5.7.2) + optionalDependencies: + vue-router: 4.5.0(vue@3.5.13) + dev: true + /@headlessui/tailwindcss@0.2.1(tailwindcss@3.4.17): resolution: {integrity: sha512-2+5+NZ+RzMyrVeCZOxdbvkUSssSxGvcUxphkIfSVLpRiKsj+/63T2TOL9dBYMXVfj/CGr6hMxSRInzXv6YY7sA==} engines: {node: '>=10'} @@ -2002,6 +2026,7 @@ packages: dependencies: is-glob: 4.0.3 micromatch: 4.0.8 + napi-wasm: 1.1.3 bundledDependencies: - napi-wasm @@ -3471,6 +3496,23 @@ packages: resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} dev: true + /@zadigetvoltaire/nuxt-gtm@0.0.13(nuxt@3.15.0)(rollup@4.29.1)(vue@3.5.13): + resolution: {integrity: sha512-7SgXtIB8uLdLGJaoUAQSGCSbRnNzplNkNVFKIHaVI4We0vqghstBoVPlJCJ9VdwsfdNyk3/C+Lh1uKpzTrtEuw==} + peerDependencies: + nuxt: ^3.0.0 + dependencies: + '@gtm-support/vue-gtm': 2.2.0(vue@3.5.13) + '@nuxt/kit': 3.15.0(magicast@0.3.5)(rollup@4.29.1) + defu: 6.1.4 + nuxt: 3.15.0(eslint@8.57.1)(rollup@4.29.1)(sass@1.83.0)(typescript@5.7.2)(vite@5.4.11) + sirv: 2.0.4 + transitivePeerDependencies: + - magicast + - rollup + - supports-color + - vue + dev: true + /abbrev@2.0.0: resolution: {integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -7834,6 +7876,9 @@ packages: dev: true optional: true + /napi-wasm@1.1.3: + resolution: {integrity: sha512-h/4nMGsHjZDCYmQVNODIrYACVJ+I9KItbG+0si6W/jSjdA9JbWDoU4LLeMXVcEQGHjttI2tuXqDrbGF7qkUHHg==} + /natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} @@ -8060,6 +8105,19 @@ packages: engines: {node: ^16.10.0 || >=18.0.0} hasBin: true + /nuxt-gtag@3.0.2(rollup@4.29.1): + resolution: {integrity: sha512-0Spu/rffPxW7REebkjE22qQOuVZIQuyIuvd61InDdJU+d+gRIqWhrUuKBWdk43N/J1elj+cTK2kEdk5FQX7vdQ==} + dependencies: + '@nuxt/kit': 3.15.0(magicast@0.3.5)(rollup@4.29.1) + defu: 6.1.4 + pathe: 1.1.2 + ufo: 1.5.4 + transitivePeerDependencies: + - magicast + - rollup + - supports-color + dev: true + /nuxt@3.15.0(eslint@8.57.1)(rollup@4.29.1)(sass@1.83.0)(typescript@5.7.2)(vite@5.4.11): resolution: {integrity: sha512-pjP/2zEjr57ensZZ1F4b7KldocM9S4SOtukgi9zau1OFlyolUmEgMFbHnwmEKqzuZ1OPTaRS3/1S6B7GUVbbRg==} engines: {node: ^18.20.5 || ^20.9.0 || >=22.0.0} @@ -9816,6 +9874,15 @@ packages: dev: true optional: true + /sirv@2.0.4: + resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} + engines: {node: '>= 10'} + dependencies: + '@polka/url': 1.0.0-next.28 + mrmime: 2.0.0 + totalist: 3.0.1 + dev: true + /sirv@3.0.0: resolution: {integrity: sha512-BPwJGUeDaDCHihkORDchNyyTvWFhcusy1XMmhEVTQTwGeybFbp8YEmB+njbPnth1FibULBSBVwCQni25XlCUDg==} engines: {node: '>=18'} diff --git a/strr-host-pm-web/.env.example b/strr-host-pm-web/.env.example index 11d0a7a8..b641a02c 100644 --- a/strr-host-pm-web/.env.example +++ b/strr-host-pm-web/.env.example @@ -39,6 +39,11 @@ NUXT_KEYCLOAK_AUTH_URL="https://dev.loginproxy.gov.bc.ca/auth" NUXT_KEYCLOAK_REALM="bcregistry" NUXT_KEYCLOAK_CLIENTID="strr-web" +#google analytic +NUXT_GTAG_ID="" +NUXT_GTAG_DEBUG="" +NUXT_GTM_ID="" + # vaults launch darkly # NUXT_LD_CLIENT_ID= diff --git a/strr-host-pm-web/devops/vaults.env b/strr-host-pm-web/devops/vaults.env index 9817249b..6ce52087 100644 --- a/strr-host-pm-web/devops/vaults.env +++ b/strr-host-pm-web/devops/vaults.env @@ -40,5 +40,10 @@ NUXT_KEYCLOAK_CLIENTID="op://keycloak/$APP_ENV/strr-web/UI_KEYCLOAK_RESOURCE_NAM # vaults launchdarkly NUXT_LD_CLIENT_ID="op://launchdarkly/$APP_ENV/strr/STRR_LD_CLIENT_ID" +#google analytic +NUXT_GTAG_ID="op://google-analytics/$APP_ENV/developer/GTAG" +NUXT_GTAG_DEBUG="op://google-analytics/$APP_ENV/developer/GTAG_DEBUG" +NUXT_GTM_ID="op://google-analytics/$APP_ENV/developer/GTM" + # not currently in use anywhere NUXT_ENVIRONMENT_HEADER="op://entity/$APP_ENV/business-registry-ui/ENVIRONMENT_HEADER" diff --git a/strr-host-pm-web/package.json b/strr-host-pm-web/package.json index 2ea72b03..57a54241 100644 --- a/strr-host-pm-web/package.json +++ b/strr-host-pm-web/package.json @@ -2,7 +2,7 @@ "name": "strr-host-pm-web", "private": true, "type": "module", - "version": "0.0.41", + "version": "0.0.42", "scripts": { "build-check": "nuxt build", "build": "nuxt generate", diff --git a/strr-platform-web/.env.example b/strr-platform-web/.env.example index bc929dd6..aeb91dd9 100644 --- a/strr-platform-web/.env.example +++ b/strr-platform-web/.env.example @@ -35,6 +35,11 @@ NUXT_KEYCLOAK_AUTH_URL="https://dev.loginproxy.gov.bc.ca/auth" NUXT_KEYCLOAK_REALM="bcregistry" NUXT_KEYCLOAK_CLIENTID="strr-web" +#google analytic +NUXT_GTAG_ID="" +NUXT_GTAG_DEBUG="" +NUXT_GTM_ID="" + # vaults launch darkly # NUXT_LD_CLIENT_ID= diff --git a/strr-platform-web/devops/vaults.env b/strr-platform-web/devops/vaults.env index 831dd1db..3b08cce2 100644 --- a/strr-platform-web/devops/vaults.env +++ b/strr-platform-web/devops/vaults.env @@ -36,5 +36,10 @@ NUXT_PLATFORMS_TAC_URL="https://www2.gov.bc.ca/gov/content/housing-tenancy/short # vaults launchdarkly NUXT_LD_CLIENT_ID="op://launchdarkly/$APP_ENV/strr/STRR_LD_CLIENT_ID" +#google analytic +NUXT_GTAG_ID="op://google-analytics/$APP_ENV/developer/GTAG" +NUXT_GTAG_DEBUG="op://google-analytics/$APP_ENV/developer/GTAG_DEBUG" +NUXT_GTM_ID="op://google-analytics/$APP_ENV/developer/GTM" + # not currently in use anywhere NUXT_ENVIRONMENT_HEADER="op://entity/$APP_ENV/business-registry-ui/ENVIRONMENT_HEADER" diff --git a/strr-platform-web/package.json b/strr-platform-web/package.json index e600c417..73930af3 100644 --- a/strr-platform-web/package.json +++ b/strr-platform-web/package.json @@ -2,7 +2,7 @@ "name": "strr-platform-web", "private": true, "type": "module", - "version": "0.0.41", + "version": "0.0.42", "scripts": { "build-check": "nuxt build", "build": "nuxt generate", diff --git a/strr-strata-web/.env.example b/strr-strata-web/.env.example index c7c09b6a..423c9265 100644 --- a/strr-strata-web/.env.example +++ b/strr-strata-web/.env.example @@ -36,6 +36,11 @@ NUXT_KEYCLOAK_AUTH_URL="https://dev.loginproxy.gov.bc.ca/auth" NUXT_KEYCLOAK_REALM="bcregistry" NUXT_KEYCLOAK_CLIENTID="strr-web" +#google analytic +NUXT_GTAG_ID="" +NUXT_GTAG_DEBUG="" +NUXT_GTM_ID="" + # vaults launch darkly # NUXT_LD_CLIENT_ID= diff --git a/strr-strata-web/devops/vaults.env b/strr-strata-web/devops/vaults.env index b2f19f21..1936dd19 100644 --- a/strr-strata-web/devops/vaults.env +++ b/strr-strata-web/devops/vaults.env @@ -36,5 +36,10 @@ NUXT_KEYCLOAK_CLIENTID="op://keycloak/$APP_ENV/strr-web/UI_KEYCLOAK_RESOURCE_NAM # vaults launchdarkly NUXT_LD_CLIENT_ID="op://launchdarkly/$APP_ENV/strr/STRR_LD_CLIENT_ID" +#google analytic +NUXT_GTAG_ID="op://google-analytics/$APP_ENV/developer/GTAG" +NUXT_GTAG_DEBUG="op://google-analytics/$APP_ENV/developer/GTAG_DEBUG" +NUXT_GTM_ID="op://google-analytics/$APP_ENV/developer/GTM" + # not currently in use anywhere NUXT_ENVIRONMENT_HEADER="op://entity/$APP_ENV/business-registry-ui/ENVIRONMENT_HEADER" diff --git a/strr-strata-web/package.json b/strr-strata-web/package.json index 7c510ea7..d850f654 100644 --- a/strr-strata-web/package.json +++ b/strr-strata-web/package.json @@ -2,7 +2,7 @@ "name": "strr-strata-web", "private": true, "type": "module", - "version": "0.0.44", + "version": "0.0.45", "scripts": { "build-check": "nuxt build", "build": "nuxt generate",