From 0adb44eb640bb9e7a92aa0e05aff5fe424179f7e Mon Sep 17 00:00:00 2001
From: Peter Perlepes
Date: Wed, 2 Aug 2023 18:49:27 +0300
Subject: [PATCH 001/341] E2E minor improvements
#1220
---
...stration-improvement_2023-07-13-08-16.json | 10 +
.../rush/browser-approved-packages.json | 30 +-
common/config/rush/pnpm-lock.yaml | 1015 ++++++++++++++++-
common/config/rush/repo-state.json | 2 +-
rush.json | 2 +-
trackers/javascript-tracker/package.json | 13 +-
trackers/javascript-tracker/test/E2E_SETUP.md | 19 +
.../test/functional/activityCallback.test.ts | 48 +-
.../test/functional/cookies.test.ts | 30 -
.../test/integration/autoTracking.test.ts | 106 +-
.../test/integration/cookieless.test.ts | 63 +-
.../test/integration/helpers.ts | 52 +-
.../test/integration/integration.test.ts | 135 +--
.../test/integration/media.test.ts | 733 ++++++------
.../test/integration/onSessionUpdate.test.ts | 25 +-
.../test/integration/sessionStorage.test.ts | 127 ++-
.../test/integration/youtube.test.ts | 413 +++----
trackers/javascript-tracker/test/micro.ts | 74 +-
.../test/pages/cookieless.html | 3 +-
.../test/pages/form-tracking.html | 3 +-
.../test/pages/integration.html | 7 +-
.../test/pages/link-tracking.html | 3 +-
.../test/pages/media/tracking-2-players.html | 5 +-
.../test/pages/media/tracking-2-trackers.html | 7 +-
.../test/pages/media/tracking-all-events.html | 5 +-
.../test/pages/media/tracking.html | 5 +-
.../test/pages/session-integration.html | 7 +
.../test/pages/session-update-callback.html | 4 +-
.../pages/youtube/tracking-2-trackers.html | 11 +-
.../test/pages/youtube/tracking-2-videos.html | 11 +-
.../test/pages/youtube/tracking-player.html | 7 +-
.../test/pages/youtube/tracking.html | 89 +-
.../javascript-tracker/test/tsconfig.json | 10 +-
.../test/wdio.default.conf.ts | 23 +-
.../test/wdio.local.conf.ts | 24 +-
.../test/wdio.sauce.conf.ts | 14 +-
36 files changed, 1947 insertions(+), 1188 deletions(-)
create mode 100644 common/changes/@snowplow/javascript-tracker/feature-minor-e2e-orchestration-improvement_2023-07-13-08-16.json
create mode 100644 trackers/javascript-tracker/test/E2E_SETUP.md
diff --git a/common/changes/@snowplow/javascript-tracker/feature-minor-e2e-orchestration-improvement_2023-07-13-08-16.json b/common/changes/@snowplow/javascript-tracker/feature-minor-e2e-orchestration-improvement_2023-07-13-08-16.json
new file mode 100644
index 000000000..bbc5af499
--- /dev/null
+++ b/common/changes/@snowplow/javascript-tracker/feature-minor-e2e-orchestration-improvement_2023-07-13-08-16.json
@@ -0,0 +1,10 @@
+{
+ "changes": [
+ {
+ "packageName": "@snowplow/javascript-tracker",
+ "comment": "End to end test changes",
+ "type": "none"
+ }
+ ],
+ "packageName": "@snowplow/javascript-tracker"
+}
\ No newline at end of file
diff --git a/common/config/rush/browser-approved-packages.json b/common/config/rush/browser-approved-packages.json
index 9b10465b8..7be9b8244 100644
--- a/common/config/rush/browser-approved-packages.json
+++ b/common/config/rush/browser-approved-packages.json
@@ -178,6 +178,10 @@
"name": "@types/node",
"allowedCategories": [ "libraries", "plugins", "trackers" ]
},
+ {
+ "name": "@types/node-fetch",
+ "allowedCategories": [ "trackers" ]
+ },
{
"name": "@types/randomcolor",
"allowedCategories": [ "plugins" ]
@@ -196,7 +200,7 @@
},
{
"name": "@types/youtube",
- "allowedCategories": [ "plugins" ]
+ "allowedCategories": [ "plugins", "trackers" ]
},
{
"name": "@typescript-eslint/eslint-plugin",
@@ -210,6 +214,10 @@
"name": "@wdio/cli",
"allowedCategories": [ "trackers" ]
},
+ {
+ "name": "@wdio/globals",
+ "allowedCategories": [ "trackers" ]
+ },
{
"name": "@wdio/jasmine-framework",
"allowedCategories": [ "trackers" ]
@@ -222,6 +230,10 @@
"name": "@wdio/sauce-service",
"allowedCategories": [ "trackers" ]
},
+ {
+ "name": "@wdio/shared-store-service",
+ "allowedCategories": [ "trackers" ]
+ },
{
"name": "@wdio/spec-reporter",
"allowedCategories": [ "trackers" ]
@@ -250,6 +262,10 @@
"name": "dockerode",
"allowedCategories": [ "trackers" ]
},
+ {
+ "name": "edgedriver",
+ "allowedCategories": [ "trackers" ]
+ },
{
"name": "eslint",
"allowedCategories": [ "libraries", "plugins", "trackers" ]
@@ -302,6 +318,10 @@
"name": "nock",
"allowedCategories": [ "trackers" ]
},
+ {
+ "name": "node-fetch",
+ "allowedCategories": [ "trackers" ]
+ },
{
"name": "npm-run-all",
"allowedCategories": [ "trackers" ]
@@ -378,6 +398,14 @@
"name": "wdio-chromedriver-service",
"allowedCategories": [ "trackers" ]
},
+ {
+ "name": "wdio-edgedriver-service",
+ "allowedCategories": [ "trackers" ]
+ },
+ {
+ "name": "wdio-safaridriver-service",
+ "allowedCategories": [ "trackers" ]
+ },
{
"name": "web-vitals",
"allowedCategories": [ "plugins" ]
diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml
index 752ff7d3d..66c824323 100644
--- a/common/config/rush/pnpm-lock.yaml
+++ b/common/config/rush/pnpm-lock.yaml
@@ -1422,21 +1422,26 @@ importers:
'@types/jsdom': ~16.2.14
'@types/lodash': ~4.14.180
'@types/node': ~14.6.0
+ '@types/node-fetch': '2'
+ '@types/youtube': ~0.0.46
'@wdio/cli': ~8.3.3
+ '@wdio/globals': ~8.11.2
'@wdio/jasmine-framework': ~8.3.3
'@wdio/local-runner': ~8.3.3
'@wdio/sauce-service': ~8.3.3
+ '@wdio/shared-store-service': ~8.11.2
'@wdio/spec-reporter': ~8.3.0
'@wdio/static-server-service': ~8.3.0
'@wdio/types': ~8.3.0
chalk: 4.1.2
- chromedriver: ~99.0.0
+ chromedriver: ~114.0.0
dockerode: ~3.3.1
jest: ~27.5.1
jest-environment-jsdom: ~27.5.1
jest-environment-jsdom-global: ~3.0.0
jest-standard-reporter: ~2.0.0
lodash: ~4.17.21
+ node-fetch: '2'
npm-run-all: ~4.1.5
rollup: ~2.70.1
rollup-plugin-cleanup: ~3.2.1
@@ -1451,6 +1456,8 @@ importers:
tslib: ^2.3.1
typescript: ~4.6.2
wdio-chromedriver-service: ~8.0.1
+ wdio-edgedriver-service: ~3.0.2
+ wdio-safaridriver-service: ~2.1.0
webdriverio: ~8.3.3
dependencies:
'@snowplow/browser-plugin-ad-tracking': link:../../plugins/browser-plugin-ad-tracking
@@ -1489,21 +1496,26 @@ importers:
'@types/jsdom': 16.2.14
'@types/lodash': 4.14.180
'@types/node': 14.6.4
- '@wdio/cli': 8.3.5
- '@wdio/jasmine-framework': 8.3.5
- '@wdio/local-runner': 8.3.5
+ '@types/node-fetch': 2.6.4
+ '@types/youtube': 0.0.46
+ '@wdio/cli': 8.3.5_typescript@4.6.2
+ '@wdio/globals': 8.11.2_typescript@4.6.2
+ '@wdio/jasmine-framework': 8.3.5_typescript@4.6.2
+ '@wdio/local-runner': 8.3.5_typescript@4.6.2
'@wdio/sauce-service': 8.3.5
+ '@wdio/shared-store-service': 8.11.2_typescript@4.6.2
'@wdio/spec-reporter': 8.3.0
'@wdio/static-server-service': 8.3.0
'@wdio/types': 8.3.0
chalk: 4.1.2
- chromedriver: 99.0.0
+ chromedriver: 114.0.2
dockerode: 3.3.1
jest: 27.5.1_ts-node@10.9.1
jest-environment-jsdom: 27.5.1
jest-environment-jsdom-global: 3.0.0_jest-environment-jsdom@27.5.1
jest-standard-reporter: 2.0.0
lodash: 4.17.21
+ node-fetch: 2.6.12
npm-run-all: 4.1.5
rollup: 2.70.1
rollup-plugin-cleanup: 3.2.1_rollup@2.70.1
@@ -1516,7 +1528,9 @@ importers:
ts-jest: 27.1.3_60149d457e34ffba7d4e845dde6a1263
ts-node: 10.9.1_3a45c3db8dee5edcd277f201fb244988
typescript: 4.6.2
- wdio-chromedriver-service: 8.0.1_e79f2276e99de797e09d92ea93561b2e
+ wdio-chromedriver-service: 8.0.1_004e92621c7fa5837873d8fdb8947671
+ wdio-edgedriver-service: 3.0.2_@wdio+types@8.3.0
+ wdio-safaridriver-service: 2.1.0_38e69deb68987ddd418b1267598e302e
webdriverio: 8.3.5
../../trackers/node-tracker:
@@ -1586,6 +1600,15 @@ packages:
uuid: 8.1.0
dev: true
+ /@arr/every/1.0.1:
+ resolution: {integrity: sha512-UQFQ6SgyJ6LX42W8rHCs8KVc0JS0tzVL9ct4XYedJukskYVWTo49tNiMEK9C2HTyarbNiT/RVIRSY82vH+6sTg==}
+ engines: {node: '>=4'}
+ dev: true
+
+ /@assemblyscript/loader/0.10.1:
+ resolution: {integrity: sha512-H71nDOOL8Y7kWRLqf6Sums+01Q5msqBW2KhDUTemh1tvY04eSkSXrK0uj/4mmY0Xr16/3zyZmsrxN7CKuRbNRg==}
+ dev: true
+
/@babel/code-frame/7.16.7:
resolution: {integrity: sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==}
engines: {node: '>=6.9.0'}
@@ -1934,6 +1957,18 @@ packages:
resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==}
dev: true
+ /@isaacs/cliui/8.0.2:
+ resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==}
+ engines: {node: '>=12'}
+ dependencies:
+ string-width: 5.1.2
+ string-width-cjs: /string-width/4.2.3
+ strip-ansi: 7.1.0
+ strip-ansi-cjs: /strip-ansi/6.0.1
+ wrap-ansi: 8.1.0
+ wrap-ansi-cjs: /wrap-ansi/7.0.0
+ dev: true
+
/@istanbuljs/load-nyc-config/1.1.0:
resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==}
engines: {node: '>=8'}
@@ -2081,6 +2116,14 @@ packages:
jest-get-type: 29.4.2
dev: true
+ /@jest/expect-utils/29.6.1:
+ resolution: {integrity: sha512-o319vIf5pEMx0LmzSxxkYYxo4wrRLKHq9dP1yJU7FoPTB0LfAKSz8SWD6D/6U3v/O52t9cF5t+MeJiRsfk7zMw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ jest-get-type: 29.4.3
+ dev: true
+ optional: true
+
/@jest/fake-timers/27.5.1:
resolution: {integrity: sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==}
engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
@@ -2147,6 +2190,14 @@ packages:
'@sinclair/typebox': 0.25.21
dev: true
+ /@jest/schemas/29.6.0:
+ resolution: {integrity: sha512-rxLjXyJBTL4LQeJW3aKo0M/+GkCOXsO+8i9Iu7eDb6KwtP65ayoDsitrdPBtujxQ88k4wI2FNYfa6TOGwSn6cQ==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@sinclair/typebox': 0.27.8
+ dev: true
+ optional: true
+
/@jest/source-map/27.5.1:
resolution: {integrity: sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==}
engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
@@ -2235,6 +2286,19 @@ packages:
chalk: 4.1.2
dev: true
+ /@jest/types/29.6.1:
+ resolution: {integrity: sha512-tPKQNMPuXgvdOn2/Lg9HNfUvjYVGolt04Hp03f5hAk878uwOLikN+JzeLY0HcVgKgFl9Hs3EIqpu3WX27XNhnw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jest/schemas': 29.6.0
+ '@types/istanbul-lib-coverage': 2.0.3
+ '@types/istanbul-reports': 3.0.0
+ '@types/node': 14.6.4
+ '@types/yargs': 17.0.22
+ chalk: 4.1.2
+ dev: true
+ optional: true
+
/@jridgewell/gen-mapping/0.3.2:
resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==}
engines: {node: '>=6.0.0'}
@@ -2365,6 +2429,45 @@ packages:
read-package-json-fast: 2.0.3
dev: true
+ /@pkgjs/parseargs/0.11.0:
+ resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
+ engines: {node: '>=14'}
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@polka/parse/1.0.0-next.0:
+ resolution: {integrity: sha512-zcPNrc3PNrRLSCQ7ca8XR7h18VxdPIXhn+yvrYMdUFCHM7mhXGSPw5xBdbcf/dQ1cI4uE8pDfmm5uU+HX+WfFg==}
+ dev: true
+
+ /@polka/url/0.5.0:
+ resolution: {integrity: sha512-oZLYFEAzUKyi3SKnXvj32ZCEGH6RDnao7COuCVhDydMS9NrCSVXhM79VaKyP5+Zc33m0QXEd2DN3UkU7OsHcfw==}
+ dev: true
+
+ /@puppeteer/browsers/1.3.0_typescript@4.6.2:
+ resolution: {integrity: sha512-an3QdbNPkuU6qpxpbssxAbjRLJcF+eP4L8UqIY3+6n0sbaVxw5pz7PiCLy9g32XEZuoamUlV5ZQPnA6FxvkIHA==}
+ engines: {node: '>=16.0.0'}
+ hasBin: true
+ peerDependencies:
+ typescript: '>= 4.7.4'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ dependencies:
+ debug: 4.3.4
+ extract-zip: 2.0.1
+ http-proxy-agent: 5.0.0
+ https-proxy-agent: 5.0.1
+ progress: 2.0.3
+ proxy-from-env: 1.1.0
+ tar-fs: 2.1.1
+ typescript: 4.6.2
+ unbzip2-stream: 1.4.3
+ yargs: 17.7.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
/@rollup/plugin-alias/3.1.9_rollup@2.70.1:
resolution: {integrity: sha512-QI5fsEvm9bDzt32k39wpOwZhVzRcL5ydcffUHMyLVaVaLeC70I8TJZ17F1z1eMoLu4E/UOcH9BWVkKpIKdrfiw==}
engines: {node: '>=8.0.0'}
@@ -2449,6 +2552,11 @@ packages:
resolution: {integrity: sha512-gFukHN4t8K4+wVC+ECqeqwzBDeFeTzBXroBTqE6vcWrQGbEUpHO7LYdG0f4xnvYq4VOEwITSlHlp0JBAIFMS/g==}
dev: true
+ /@sinclair/typebox/0.27.8:
+ resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==}
+ dev: true
+ optional: true
+
/@sindresorhus/is/0.7.0:
resolution: {integrity: sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==}
engines: {node: '>=4'}
@@ -2515,6 +2623,11 @@ packages:
engines: {node: '>= 6'}
dev: true
+ /@tootallnate/once/2.0.0:
+ resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==}
+ engines: {node: '>= 10'}
+ dev: true
+
/@tsconfig/node10/1.0.8:
resolution: {integrity: sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==}
dev: true
@@ -2651,6 +2764,13 @@ packages:
resolution: {integrity: sha512-XOKXa1KIxtNXgASAnwj7cnttJxS4fksBRywK/9LzRV5YxrF80BXZIGeQSuoESQ/VkUj30Ae0+YcuHc15wJCB2g==}
dev: true
+ /@types/node-fetch/2.6.4:
+ resolution: {integrity: sha512-1ZX9fcN4Rvkvgv4E6PAY5WXUFWFcRWxZa3EW83UjycOB9ljJCedb2CupIP4RZMEwF/M3eTcCihbBRgwtGbg5Rg==}
+ dependencies:
+ '@types/node': 14.6.4
+ form-data: 3.0.0
+ dev: true
+
/@types/node/14.6.4:
resolution: {integrity: sha512-Wk7nG1JSaMfMpoMJDKUsWYugliB2Vy55pdjLpmLixeyMi7HizW2I/9QoxsPCkXl3dO+ZOVqPumKaDUv5zJu2uQ==}
@@ -2662,6 +2782,10 @@ packages:
resolution: {integrity: sha512-gC3TazRzGoOnoKAhUx+Q0t8S9Tzs74z7m0ipwGpSqQrleP14hKxP4/JUeEQcD3W1/aIpnWl8pHowI7WokuZpXg==}
dev: true
+ /@types/node/20.3.3:
+ resolution: {integrity: sha512-wheIYdr4NYML61AjC8MKj/2jrR/kDQri/CIpVoZwldwhnIrD/j9jIU5bJ8yBKuB2VhpFV7Ab6G2XkBjv9r9Zzw==}
+ dev: true
+
/@types/normalize-package-data/2.4.1:
resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==}
dev: true
@@ -2713,6 +2837,12 @@ packages:
resolution: {integrity: sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==}
dev: true
+ /@types/split2/3.2.1:
+ resolution: {integrity: sha512-7uz3yU+LooBq4yNOzlZD9PU9/1Eu0rTD1MjQ6apOVEoHsPrMUrFw7W8XrvWtesm2vK67SBK9AyJcOXtMpl9bgQ==}
+ dependencies:
+ '@types/node': 14.6.4
+ dev: true
+
/@types/ssh2-streams/0.1.9:
resolution: {integrity: sha512-I2J9jKqfmvXLR5GomDiCoHrEJ58hAOmFrekfFqmCFd+A6gaEStvWnPykoWUwld1PNg4G5ag1LwdA+Lz1doRJqg==}
dependencies:
@@ -2730,6 +2860,10 @@ packages:
resolution: {integrity: sha512-RJJrrySY7A8havqpGObOB4W92QXKJo63/jFLLgpvOtsGUqbQZ9Sbgl35KMm1DjC6j7AvmmU2bIno+3IyEaemaw==}
dev: true
+ /@types/tcp-port-used/1.0.1:
+ resolution: {integrity: sha512-6pwWTx8oUtWvsiZUCrhrK/53MzKVLnuNSSaZILPy3uMes9QnTrLMar9BDlJArbMOjDcjb3QXFk6Rz8qmmuySZw==}
+ dev: true
+
/@types/tough-cookie/4.0.0:
resolution: {integrity: sha512-I99sngh224D0M7XgW1s120zxCt3VYQ3IQsuw3P3jbq5GG4yc79+ZjyKznyOGIQrflfylLgcfekeZW/vk0yng6A==}
dev: true
@@ -2912,14 +3046,14 @@ packages:
eslint-visitor-keys: 3.3.0
dev: true
- /@wdio/cli/8.3.5:
+ /@wdio/cli/8.3.5_typescript@4.6.2:
resolution: {integrity: sha512-xg/03aYpMCEWdcc9dY/GmPePfzTR/yMRJLwtp5WWYrCl6eEAeViSpf4PLC6ieC5O6IMLWVR/2Os8DrC5PKQq/Q==}
engines: {node: ^16.13 || >=18}
hasBin: true
dependencies:
'@types/node': 18.13.0
'@wdio/config': 8.3.2
- '@wdio/globals': 8.3.5
+ '@wdio/globals': 8.3.5_typescript@4.6.2
'@wdio/logger': 8.1.0
'@wdio/protocols': 8.3.5
'@wdio/types': 8.3.0
@@ -2945,9 +3079,24 @@ packages:
- bufferutil
- encoding
- supports-color
+ - typescript
- utf-8-validate
dev: true
+ /@wdio/config/8.11.0:
+ resolution: {integrity: sha512-nBQXsXbPCjddtI/3rAK5yFs3eD3f0T3lZMivweTkLLR7GKBxGjiFoBjXtfqUrHJYa+2uwfXrwxo6y+dA6fVbuw==}
+ engines: {node: ^16.13 || >=18}
+ dependencies:
+ '@wdio/logger': 8.11.0
+ '@wdio/types': 8.10.4
+ '@wdio/utils': 8.11.0
+ decamelize: 6.0.0
+ deepmerge-ts: 5.1.0
+ glob: 10.3.1
+ import-meta-resolve: 3.0.0
+ read-pkg-up: 9.1.0
+ dev: true
+
/@wdio/config/8.3.2:
resolution: {integrity: sha512-lLZh53MorYRxAr08x2o6B1npRgc5ZmGEGdzH2neILnVcs/x3fQV9uFKpC9sKtMmU8B0G0oMUSoIaj8GfqygcNQ==}
engines: {node: ^16.13 || >=18}
@@ -2962,45 +3111,61 @@ packages:
read-pkg-up: 9.1.0
dev: true
- /@wdio/globals/8.3.5:
+ /@wdio/globals/8.11.2_typescript@4.6.2:
+ resolution: {integrity: sha512-oaPyGLmWOHQLYtT6Jn3mtZBSYyWxau6ncBDLPJDUwOxufi3tfT9DOen+65OGBK55GfjrCAZOSGAJ13mN/swIQQ==}
+ engines: {node: ^16.13 || >=18}
+ optionalDependencies:
+ expect-webdriverio: 4.2.6_typescript@4.6.2
+ webdriverio: 8.11.2_typescript@4.6.2
+ transitivePeerDependencies:
+ - bufferutil
+ - encoding
+ - supports-color
+ - typescript
+ - utf-8-validate
+ dev: true
+
+ /@wdio/globals/8.3.5_typescript@4.6.2:
resolution: {integrity: sha512-w8JZ2seRMe9iPfMYCiKHT1LJIZBUhgT+2ROBDd4ZUP75RzyC0ayZn9CqA6sNCPL6Iq0DSgpqx0U7YVJQCwzwMA==}
engines: {node: ^16.13 || >=18}
optionalDependencies:
- expect-webdriverio: 4.1.1
+ expect-webdriverio: 4.2.6_typescript@4.6.2
webdriverio: 8.3.5
transitivePeerDependencies:
- bufferutil
- encoding
- supports-color
+ - typescript
- utf-8-validate
dev: true
- /@wdio/jasmine-framework/8.3.5:
+ /@wdio/jasmine-framework/8.3.5_typescript@4.6.2:
resolution: {integrity: sha512-HOWq5/nsvkFwx5OJ7ZxmCLTA80k9jVOU/5eImaI3b0b5Ewy6WOtEnQi6B1F+i8X7/G+QRotPk4qZeht/Y1NIyQ==}
engines: {node: ^16.13 || >=18}
dependencies:
'@types/node': 18.13.0
- '@wdio/globals': 8.3.5
+ '@wdio/globals': 8.3.5_typescript@4.6.2
'@wdio/logger': 8.1.0
'@wdio/types': 8.3.0
'@wdio/utils': 8.3.0
- expect-webdriverio: 4.1.1
+ expect-webdriverio: 4.1.1_typescript@4.6.2
jasmine: 4.5.0
transitivePeerDependencies:
- bufferutil
- encoding
- supports-color
+ - typescript
- utf-8-validate
dev: true
- /@wdio/local-runner/8.3.5:
+ /@wdio/local-runner/8.3.5_typescript@4.6.2:
resolution: {integrity: sha512-Sg53i8KHAgvc55VsAZ7uZC/IQ5uPtlOY5rKY+XCjemQ5Y3KqqMxHc+X4VFmlsflB43K9CWzizkzq2ukctqKDXQ==}
engines: {node: ^16.13 || >=18}
dependencies:
'@types/node': 18.13.0
'@wdio/logger': 8.1.0
'@wdio/repl': 8.1.0
- '@wdio/runner': 8.3.5
+ '@wdio/runner': 8.3.5_typescript@4.6.2
'@wdio/types': 8.3.0
async-exit-hook: 2.0.1
split2: 4.1.0
@@ -3009,6 +3174,7 @@ packages:
- bufferutil
- encoding
- supports-color
+ - typescript
- utf-8-validate
dev: true
@@ -3022,6 +3188,20 @@ packages:
strip-ansi: 6.0.1
dev: true
+ /@wdio/logger/8.11.0:
+ resolution: {integrity: sha512-IsuKSaYi7NKEdgA57h8muzlN/MVp1dQG+V4C//7g4m03YJUnNQLvDhJzLjdeNTfvZy61U7foQSyt+3ktNzZkXA==}
+ engines: {node: ^16.13 || >=18}
+ dependencies:
+ chalk: 5.2.0
+ loglevel: 1.7.1
+ loglevel-plugin-prefix: 0.8.4
+ strip-ansi: 7.1.0
+ dev: true
+
+ /@wdio/protocols/8.11.0:
+ resolution: {integrity: sha512-eXTMYt/XoaX53H/Q2qmsn1uWthIC5aSTGtX9YyXD/AkagG2hXeX3lLmzNWBaSIvKR+vWXRYbg3Y/7IvL2s25Wg==}
+ dev: true
+
/@wdio/protocols/8.3.5:
resolution: {integrity: sha512-/zWz+ok6gIB1/L/VEOCoD8nCB8inNF+rsVOYps3FgNbrliQ782YLfA1uAVJTw3U6CaO+7zZ8aJw82EswpoxWjg==}
dev: true
@@ -3033,6 +3213,13 @@ packages:
'@types/node': 18.13.0
dev: true
+ /@wdio/repl/8.10.1:
+ resolution: {integrity: sha512-VZ1WFHTNKjR8Ga97TtV2SZM6fvRjWbYI2i/f4pJB4PtusorKvONAMJf2LQcUBIyzbVobqr7KSrcjmSwRolI+yw==}
+ engines: {node: ^16.13 || >=18}
+ dependencies:
+ '@types/node': 20.3.3
+ dev: true
+
/@wdio/reporter/8.3.0:
resolution: {integrity: sha512-SCI6YXMDOs+rIDXUqaQYncv3SAcMPU9nQKGCLWjtZXsYHYlLZMT/PaFy7lWyebsObiRAKJYayXOqG7ymS6hDzA==}
engines: {node: ^16.13 || >=18}
@@ -3045,18 +3232,18 @@ packages:
supports-color: 9.3.1
dev: true
- /@wdio/runner/8.3.5:
+ /@wdio/runner/8.3.5_typescript@4.6.2:
resolution: {integrity: sha512-W0h1U90zGFmYvqfWsmtb3myDqFsHhHy6z9ngQDLOCKg6iwKWFvMW2Db3BJ1D641/lA2dRWFH5XklQqD6trsydg==}
engines: {node: ^16.13 || >=18}
dependencies:
'@types/node': 18.13.0
'@wdio/config': 8.3.2
- '@wdio/globals': 8.3.5
+ '@wdio/globals': 8.3.5_typescript@4.6.2
'@wdio/logger': 8.1.0
'@wdio/types': 8.3.0
'@wdio/utils': 8.3.0
deepmerge-ts: 4.3.0
- expect-webdriverio: 4.1.1
+ expect-webdriverio: 4.1.1_typescript@4.6.2
gaze: 1.1.3
webdriver: 8.3.5
webdriverio: 8.3.5
@@ -3064,6 +3251,7 @@ packages:
- bufferutil
- encoding
- supports-color
+ - typescript
- utf-8-validate
dev: true
@@ -3084,6 +3272,24 @@ packages:
- utf-8-validate
dev: true
+ /@wdio/shared-store-service/8.11.2_typescript@4.6.2:
+ resolution: {integrity: sha512-NLt7HFmHfe43yfG1QymWcUSzUxe9j5Wq9ak/N7Q9MYJXZoqGiMi4pXuYVVmbaFC6/QPT1Ix6yssFo3cKIT8oUA==}
+ engines: {node: ^16.13 || >=18}
+ dependencies:
+ '@polka/parse': 1.0.0-next.0
+ '@wdio/logger': 8.11.0
+ '@wdio/types': 8.10.4
+ got: 12.6.1
+ polka: 0.5.2
+ webdriverio: 8.11.2_typescript@4.6.2
+ transitivePeerDependencies:
+ - bufferutil
+ - encoding
+ - supports-color
+ - typescript
+ - utf-8-validate
+ dev: true
+
/@wdio/spec-reporter/8.3.0:
resolution: {integrity: sha512-2K+qMNM5rYMCJdw5M3H6XfXUkto/jLnE2GgAI7VoTo6mZVOGGCRRPVtCa7NR/asWF+P0iBl9PJbPFv2/TzV59A==}
engines: {node: ^16.13 || >=18}
@@ -3105,6 +3311,13 @@ packages:
morgan: 1.10.0
dev: true
+ /@wdio/types/8.10.4:
+ resolution: {integrity: sha512-aLJ1QQW+hhALeRK3bvMLjIrlUVyhOs3Od+91pR4Z4pLwyeNG1bJZCJRD5bAJK/mm7CnFa0NsdixPS9jJxZcRrw==}
+ engines: {node: ^16.13 || >=18}
+ dependencies:
+ '@types/node': 20.3.3
+ dev: true
+
/@wdio/types/8.3.0:
resolution: {integrity: sha512-TTs3ETVOJtooTIY/u2+feeBnMBx2Hb4SEItN31r0pFncn37rnIZXE/buywLNf5wvZW9ukxoCup5hCnohOR27eQ==}
engines: {node: ^16.13 || >=18}
@@ -3112,6 +3325,16 @@ packages:
'@types/node': 18.13.0
dev: true
+ /@wdio/utils/8.11.0:
+ resolution: {integrity: sha512-XBl1zalk5UPu8QKZ7LZIA82Ad363fpNHZHP5uI5OxUFnk4ZPWgY9eCWpeD+4f9a0DS0w2Dro15E4PORNX84pIw==}
+ engines: {node: ^16.13 || >=18}
+ dependencies:
+ '@wdio/logger': 8.11.0
+ '@wdio/types': 8.10.4
+ import-meta-resolve: 3.0.0
+ p-iteration: 1.1.8
+ dev: true
+
/@wdio/utils/8.3.0:
resolution: {integrity: sha512-BbgzxAu4AN99l9hwaRUvkvBJLeIxON7F6ts+vq4LASRiGVRErrwYGeO9H3ffYgpCAaYSvXnw2GtOf2SQGaPoLA==}
engines: {node: ^16.13 || >=18}
@@ -3257,7 +3480,7 @@ packages:
dev: true
/ansi-regex/2.1.1:
- resolution: {integrity: sha1-w7M6te42DYbg5ijwRorn7yfWVN8=}
+ resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==}
engines: {node: '>=0.10.0'}
dev: true
@@ -3493,10 +3716,12 @@ packages:
resolution: {integrity: sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==}
dev: true
- /axios/0.24.0:
- resolution: {integrity: sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==}
+ /axios/1.4.0:
+ resolution: {integrity: sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==}
dependencies:
follow-redirects: 1.15.2
+ form-data: 4.0.0
+ proxy-from-env: 1.1.0
transitivePeerDependencies:
- debug
dev: true
@@ -3595,11 +3820,23 @@ packages:
tweetnacl: 0.14.5
dev: true
+ /big-integer/1.6.51:
+ resolution: {integrity: sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==}
+ engines: {node: '>=0.6'}
+ dev: true
+
/binary-extensions/2.1.0:
resolution: {integrity: sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==}
engines: {node: '>=8'}
dev: true
+ /binary/0.3.0:
+ resolution: {integrity: sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==}
+ dependencies:
+ buffers: 0.1.1
+ chainsaw: 0.1.0
+ dev: true
+
/bl/1.2.3:
resolution: {integrity: sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==}
dependencies:
@@ -3623,6 +3860,10 @@ packages:
readable-stream: 3.6.0
dev: true
+ /bluebird/3.4.7:
+ resolution: {integrity: sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==}
+ dev: true
+
/blueimp-md5/2.18.0:
resolution: {integrity: sha512-vE52okJvzsVWhcgUHOv+69OG3Mdg151xyn41aVQN/5W5S+S43qZhxECtYLAEHMSFWX6Mv5IZrzj3T5+JqXfj5Q==}
dev: true
@@ -3764,6 +4005,11 @@ packages:
resolution: {integrity: sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==}
dev: true
+ /buffer-indexof-polyfill/1.0.2:
+ resolution: {integrity: sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==}
+ engines: {node: '>=0.10'}
+ dev: true
+
/buffer/5.7.1:
resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==}
dependencies:
@@ -3778,6 +4024,11 @@ packages:
ieee754: 1.2.1
dev: true
+ /buffers/0.1.1:
+ resolution: {integrity: sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==}
+ engines: {node: '>=0.2.0'}
+ dev: true
+
/builtin-modules/3.2.0:
resolution: {integrity: sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==}
engines: {node: '>=6'}
@@ -3838,6 +4089,19 @@ packages:
engines: {node: '>=14.16'}
dev: true
+ /cacheable-request/10.2.12:
+ resolution: {integrity: sha512-qtWGB5kn2OLjx47pYUkWicyOpK1vy9XZhq8yRTXOy+KAmjjESSRLx6SiExnnaGGUP1NM6/vmygMu0fGylNh9tw==}
+ engines: {node: '>=14.16'}
+ dependencies:
+ '@types/http-cache-semantics': 4.0.1
+ get-stream: 6.0.1
+ http-cache-semantics: 4.1.1
+ keyv: 4.5.2
+ mimic-response: 4.0.0
+ normalize-url: 8.0.0
+ responselike: 3.0.0
+ dev: true
+
/cacheable-request/10.2.7:
resolution: {integrity: sha512-I4SA6mKgDxcxVbSt/UmIkb9Ny8qSkg6ReBHtAAXnZHk7KOSx5g3DTiAOaYzcHCs6oOdHn+bip9T48E6tMvK9hw==}
engines: {node: '>=14.16'}
@@ -3892,6 +4156,13 @@ packages:
engines: {node: '>=12.20'}
dev: true
+ /camaro/6.2.0:
+ resolution: {integrity: sha512-81zTKgZb2LnkZKtLbIqLqBzQ6stWSlWC3I/lZd5u4NJVljDgMcsZqn9zZ+Yij/yNyiVpko0EhOKdYa6YAbOWrA==}
+ engines: {node: '>= 12.0.0'}
+ dependencies:
+ piscina: 3.2.0
+ dev: true
+
/camel-case/4.1.2:
resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==}
dependencies:
@@ -3945,6 +4216,12 @@ packages:
nofilter: 3.1.0
dev: true
+ /chainsaw/0.1.0:
+ resolution: {integrity: sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==}
+ dependencies:
+ traverse: 0.3.9
+ dev: true
+
/chalk/1.1.3:
resolution: {integrity: sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==}
engines: {node: '>=0.10.0'}
@@ -4048,15 +4325,15 @@ packages:
lighthouse-logger: 1.2.0
dev: true
- /chromedriver/99.0.0:
- resolution: {integrity: sha512-pyB+5LuyZdb7EBPL3i5D5yucZUD+SlkdiUtmpjaEnLd9zAXp+SvD/hP5xF4l/ZmWvUo/1ZLxAI1YBdhazGTpgA==}
- engines: {node: '>=10'}
+ /chromedriver/114.0.2:
+ resolution: {integrity: sha512-v0qrXRBknbxqmtklG7RWOe3TJ/dLaHhtB0jVxE7BAdYERxUjEaNRyqBwoGgVfQDibHCB0swzvzsj158nnfPgZw==}
+ engines: {node: '>=16'}
hasBin: true
requiresBuild: true
dependencies:
'@testim/chrome-version': 1.1.3
- axios: 0.24.0
- del: 6.0.0
+ axios: 1.4.0
+ compare-versions: 5.0.3
extract-zip: 2.0.1
https-proxy-agent: 5.0.1
proxy-from-env: 1.1.0
@@ -4066,6 +4343,15 @@ packages:
- supports-color
dev: true
+ /chromium-bidi/0.4.9_devtools-protocol@0.0.1120988:
+ resolution: {integrity: sha512-u3DC6XwgLCA9QJ5ak1voPslCmacQdulZNCPsI3qNXxSnEcZS7DFIbww+5RM2bznMEje7cc0oydavRLRvOIZtHw==}
+ peerDependencies:
+ devtools-protocol: '*'
+ dependencies:
+ devtools-protocol: 0.0.1120988
+ mitt: 3.0.0
+ dev: true
+
/chunkd/2.0.1:
resolution: {integrity: sha512-7d58XsFmOq0j6el67Ug9mHf9ELUXsQXYJBkyxhH/k+6Ke0qXRnv0kbemx+Twc6fRJ07C49lcbdgm9FL1Ei/6SQ==}
dev: true
@@ -4240,6 +4526,11 @@ packages:
resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==}
dev: true
+ /commander/9.5.0:
+ resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==}
+ engines: {node: ^12.20.0 || >=14}
+ dev: true
+
/commenting/1.1.0:
resolution: {integrity: sha512-YeNK4tavZwtH7jEgK1ZINXzLKm6DZdEMfsaaieOsCAN0S8vsY7UeuO3Q7d/M018EFgE+IeUAuBOKkFccBZsUZA==}
dev: true
@@ -4252,6 +4543,10 @@ packages:
resolution: {integrity: sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=}
dev: true
+ /compare-versions/5.0.3:
+ resolution: {integrity: sha512-4UZlZP8Z99MGEY+Ovg/uJxJuvoXuN4M6B3hKaiackiHrgzQFEe3diJi1mf1PNHbFujM7FvLrK2bpgIaImbtZ1A==}
+ dev: true
+
/compatfactory/0.0.12_typescript@4.6.2:
resolution: {integrity: sha512-DD5S1s2mIoVIpYfhCqNZPbOFlt9JDLkXc4d8fAZaeWWIsl7w3bmVS0HNlUkU2SB6iZOdXOjYZgeJZClmL1xnRg==}
engines: {node: '>=10.0.0'}
@@ -4335,7 +4630,7 @@ packages:
dev: true
/core-util-is/1.0.2:
- resolution: {integrity: sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=}
+ resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==}
dev: true
/cpu-features/0.0.2:
@@ -4376,6 +4671,14 @@ packages:
- encoding
dev: true
+ /cross-fetch/3.1.6:
+ resolution: {integrity: sha512-riRvo06crlE8HiqOwIpQhxwdOk4fOeR7FVM/wXoxchFEqMNUjvbs3bfo4OTgMEMHzppd4DxFBDbyySj8Cv781g==}
+ dependencies:
+ node-fetch: 2.6.12
+ transitivePeerDependencies:
+ - encoding
+ dev: true
+
/cross-spawn/4.0.2:
resolution: {integrity: sha512-yAXz/pA1tD8Gtg2S98Ekf/sewp3Lcp3YoFKJ4Hkp5h5yLWnKVTDU0kwjKJ8NDCYcfTLfyGkzTikst+jWypT1iA==}
dependencies:
@@ -4451,6 +4754,11 @@ packages:
assert-plus: 1.0.0
dev: true
+ /data-uri-to-buffer/4.0.1:
+ resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==}
+ engines: {node: '>= 12'}
+ dev: true
+
/data-urls/2.0.0:
resolution: {integrity: sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==}
engines: {node: '>=10'}
@@ -4602,6 +4910,11 @@ packages:
engines: {node: '>=12.4.0'}
dev: true
+ /deepmerge-ts/5.1.0:
+ resolution: {integrity: sha512-eS8dRJOckyo9maw9Tu5O5RUi/4inFLrnoLkBe3cPfDMx3WZioXtmOew4TXQaxq7Rhl4xjDtR7c6x8nNTxOvbFw==}
+ engines: {node: '>=16.0.0'}
+ dev: true
+
/deepmerge/4.2.2:
resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==}
engines: {node: '>=0.10.0'}
@@ -4679,6 +4992,40 @@ packages:
resolution: {integrity: sha512-3ph1q/ShAKFNnc7quSsAKTKAkQW/32gR4tRNAoqVzdAbyT8PjQFW/HzVWDm5mqP7zBd9nP1nd9jA1JHTHrJCXg==}
dev: true
+ /devtools-protocol/0.0.1120988:
+ resolution: {integrity: sha512-39fCpE3Z78IaIPChJsP6Lhmkbf4dWXOmzLk/KFTdRkNk/0JymRIfUynDVRndV9HoDz8PyalK1UH21ST/ivwW5Q==}
+ dev: true
+
+ /devtools-protocol/0.0.1152884:
+ resolution: {integrity: sha512-9eP6OmCoU1cWArpXLuzyZQcBJ2PkINOh8Nwx8W5i8u6NDigDE5/mPlLLBAfshwn5YVvIz6ZQ9jbs0PZvKGccdQ==}
+ dev: true
+
+ /devtools/8.11.0_typescript@4.6.2:
+ resolution: {integrity: sha512-j1wXFQyjswJ6doAV1+h4Bxl8+Oeb8SMpWTpBVa0DurGsxfft8sU2OhDlMo5tx/zbX82X5sGyJDMnKHqBJ2XRvQ==}
+ engines: {node: ^16.13 || >=18}
+ dependencies:
+ '@types/node': 20.3.3
+ '@wdio/config': 8.11.0
+ '@wdio/logger': 8.11.0
+ '@wdio/protocols': 8.11.0
+ '@wdio/types': 8.10.4
+ '@wdio/utils': 8.11.0
+ chrome-launcher: 0.15.0
+ edge-paths: 3.0.5
+ import-meta-resolve: 3.0.0
+ puppeteer-core: 20.3.0_typescript@4.6.2
+ query-selector-shadow-dom: 1.0.0
+ ua-parser-js: 1.0.2
+ uuid: 9.0.0
+ which: 3.0.1
+ transitivePeerDependencies:
+ - bufferutil
+ - encoding
+ - supports-color
+ - typescript
+ - utf-8-validate
+ dev: true
+
/devtools/8.3.5:
resolution: {integrity: sha512-ncMUl1CKH6hWyxHMfVCRnzKkVvviXJhqy1GIE2SialdUh68CsfEibzmDof+a2E9stkN1vVdmMKYeC5LAQv2i5g==}
engines: {node: ^16.13 || >=18}
@@ -4696,7 +5043,7 @@ packages:
query-selector-shadow-dom: 1.0.0
ua-parser-js: 1.0.2
uuid: 9.0.0
- which: 3.0.0
+ which: 3.0.1
transitivePeerDependencies:
- bufferutil
- encoding
@@ -4714,6 +5061,12 @@ packages:
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
dev: true
+ /diff-sequences/29.4.3:
+ resolution: {integrity: sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dev: true
+ optional: true
+
/diff/4.0.2:
resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==}
engines: {node: '>=0.3.1'}
@@ -4799,6 +5152,12 @@ packages:
resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==}
dev: true
+ /duplexer2/0.1.4:
+ resolution: {integrity: sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==}
+ dependencies:
+ readable-stream: 2.3.7
+ dev: true
+
/duplexer3/0.1.4:
resolution: {integrity: sha512-CEj8FwwNA4cVH2uFCoHUrmojhYh1vmCdOaneKJXwkeY1i9jnlslVo9dx+hQ5Hl9GnH/Bwy/IjxAyOePyPKYnzA==}
dev: true
@@ -4830,6 +5189,20 @@ packages:
which: 2.0.2
dev: true
+ /edgedriver/5.2.1:
+ resolution: {integrity: sha512-H8mF7UYMR/r6izCPgQA5d+pHdIF47wncoTS2KWogoZ4hbNeFz9VbCPxPFoGPCCfizk/e4H5DhXapcYX0yyZqjg==}
+ hasBin: true
+ requiresBuild: true
+ dependencies:
+ '@wdio/logger': 8.11.0
+ camaro: 6.2.0
+ decamelize: 6.0.0
+ edge-paths: 3.0.5
+ node-fetch: 3.3.1
+ unzipper: 0.10.14
+ which: 3.0.1
+ dev: true
+
/ee-first/1.1.1:
resolution: {integrity: sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=}
dev: true
@@ -5155,6 +5528,10 @@ packages:
engines: {node: '>= 0.6'}
dev: true
+ /eventemitter-asyncresource/1.0.0:
+ resolution: {integrity: sha512-39F7TBIV0G7gTelxwbEqnwhp90eqCPON1k0NwNfwhgKn4Co4ybUbj2pECcXT0B3ztRKZ7Pw1JujUUgmQJHcVAQ==}
+ dev: true
+
/execa/5.1.1:
resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==}
engines: {node: '>=10'}
@@ -5195,22 +5572,42 @@ packages:
engines: {node: '>= 0.8.0'}
dev: true
- /expect-webdriverio/4.1.1:
+ /expect-webdriverio/4.1.1_typescript@4.6.2:
resolution: {integrity: sha512-Qx29DagUJ8DDsEJe2aT1S+OdEcidIO+A2uRxjJqM3i7cI+wUiC85MBWmupSwuvyEAoCOoEJUiRbA0NPpXXViCg==}
engines: {node: '>=16 || >=18 || >=20'}
dependencies:
expect: 29.4.2
jest-matcher-utils: 29.4.2
optionalDependencies:
- '@wdio/globals': 8.3.5
+ '@wdio/globals': 8.11.2_typescript@4.6.2
webdriverio: 8.3.5
transitivePeerDependencies:
- bufferutil
- encoding
- supports-color
+ - typescript
- utf-8-validate
dev: true
+ /expect-webdriverio/4.2.6_typescript@4.6.2:
+ resolution: {integrity: sha512-/7wImWgef6ooZSoivXq6jkCDE1vvDC42WcM7Iyguspah/h384nprUdpQPLIUkkvTCorSQdYtRftNvHJjEpVUmA==}
+ engines: {node: '>=16 || >=18 || >=20'}
+ requiresBuild: true
+ dependencies:
+ expect: 29.6.1
+ jest-matcher-utils: 29.6.1
+ optionalDependencies:
+ '@wdio/globals': 8.11.2_typescript@4.6.2
+ webdriverio: 8.11.2_typescript@4.6.2
+ transitivePeerDependencies:
+ - bufferutil
+ - encoding
+ - supports-color
+ - typescript
+ - utf-8-validate
+ dev: true
+ optional: true
+
/expect/27.5.1:
resolution: {integrity: sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==}
engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
@@ -5232,6 +5629,19 @@ packages:
jest-util: 29.4.2
dev: true
+ /expect/29.6.1:
+ resolution: {integrity: sha512-XEdDLonERCU1n9uR56/Stx9OqojaLAQtZf9PrCHH9Hl8YXiEIka3H4NXJ3NOIBmQJTg7+j7buh34PMHfJujc8g==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jest/expect-utils': 29.6.1
+ '@types/node': 14.6.4
+ jest-get-type: 29.4.3
+ jest-matcher-utils: 29.6.1
+ jest-message-util: 29.6.1
+ jest-util: 29.6.1
+ dev: true
+ optional: true
+
/express/4.17.1:
resolution: {integrity: sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==}
engines: {node: '>= 0.10.0'}
@@ -5364,6 +5774,14 @@ packages:
pend: 1.2.0
dev: true
+ /fetch-blob/3.2.0:
+ resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==}
+ engines: {node: ^12.20 || >= 14.13}
+ dependencies:
+ node-domexception: 1.0.0
+ web-streams-polyfill: 3.2.1
+ dev: true
+
/figures/4.0.0:
resolution: {integrity: sha512-VnYcWq6H6F0qDN0QnorznBr0abEovifzUokmnezpKZBUbDmbLAt7LMryOp1TKFVxLxyNYkxEkCEADZR58U9oSw==}
engines: {node: '>=12'}
@@ -5519,6 +5937,14 @@ packages:
optional: true
dev: true
+ /foreground-child/3.1.1:
+ resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==}
+ engines: {node: '>=14'}
+ dependencies:
+ cross-spawn: 7.0.3
+ signal-exit: 4.0.2
+ dev: true
+
/forever-agent/0.6.1:
resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==}
dev: true
@@ -5555,6 +5981,13 @@ packages:
mime-types: 2.1.27
dev: true
+ /formdata-polyfill/4.0.10:
+ resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==}
+ engines: {node: '>=12.20.0'}
+ dependencies:
+ fetch-blob: 3.2.0
+ dev: true
+
/forwarded/0.1.2:
resolution: {integrity: sha512-Ua9xNhH0b8pwE3yRbFfXJvfdWF0UHNCdeyb2sbi9Ul/M+r3PTdrz7Cv4SCfZRMjmzEM9PhraqfZFbGTIg3OMyA==}
engines: {node: '>= 0.6'}
@@ -5604,6 +6037,16 @@ packages:
dev: true
optional: true
+ /fstream/1.0.12:
+ resolution: {integrity: sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==}
+ engines: {node: '>=0.6'}
+ dependencies:
+ graceful-fs: 4.2.9
+ inherits: 2.0.4
+ mkdirp: 0.5.6
+ rimraf: 2.7.1
+ dev: true
+
/function-bind/1.1.1:
resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==}
dev: true
@@ -5655,6 +6098,11 @@ packages:
engines: {node: '>=8.0.0'}
dev: true
+ /get-port/7.0.0:
+ resolution: {integrity: sha512-mDHFgApoQd+azgMdwylJrv2DX47ywGq1i5VFJE7fZ0dttNq3iQMfsU4IvEgBHojA3KqEudyu7Vq+oN8kNaNkWw==}
+ engines: {node: '>=16'}
+ dev: true
+
/get-stream/2.3.1:
resolution: {integrity: sha512-AUGhbbemXxrZJRD5cDvKtQxLuYaIbNtDTK8YqupCI393Q2KSTreEsLUN3ZxAWFGiKTzL6nKuzfcIvieflUX9qA==}
engines: {node: '>=0.10.0'}
@@ -5706,6 +6154,18 @@ packages:
is-glob: 4.0.3
dev: true
+ /glob/10.3.1:
+ resolution: {integrity: sha512-9BKYcEeIs7QwlCYs+Y3GBvqAMISufUS0i2ELd11zpZjxI5V9iyRj0HgzB5/cLf2NY4vcYBTYzJ7GIui7j/4DOw==}
+ engines: {node: '>=16 || 14 >=14.17'}
+ hasBin: true
+ dependencies:
+ foreground-child: 3.1.1
+ jackspeak: 2.2.1
+ minimatch: 9.0.2
+ minipass: 6.0.2
+ path-scurry: 1.10.0
+ dev: true
+
/glob/7.1.6:
resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==}
dependencies:
@@ -5860,6 +6320,23 @@ packages:
responselike: 3.0.0
dev: true
+ /got/12.6.1:
+ resolution: {integrity: sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==}
+ engines: {node: '>=14.16'}
+ dependencies:
+ '@sindresorhus/is': 5.3.0
+ '@szmarczak/http-timer': 5.0.1
+ cacheable-lookup: 7.0.0
+ cacheable-request: 10.2.12
+ decompress-response: 6.0.0
+ form-data-encoder: 2.1.4
+ get-stream: 6.0.1
+ http2-wrapper: 2.2.0
+ lowercase-keys: 3.0.0
+ p-cancelable: 3.0.0
+ responselike: 3.0.0
+ dev: true
+
/got/8.3.2:
resolution: {integrity: sha512-qjUJ5U/hawxosMryILofZCkm3C84PLJS/0grRIpjAwu+Lkxxj5cxeCU25BG0/3mDSpXKTyZr8oh8wIgLaH0QCw==}
engines: {node: '>=4'}
@@ -5966,6 +6443,18 @@ packages:
minimalistic-assert: 1.0.1
dev: true
+ /hdr-histogram-js/2.0.3:
+ resolution: {integrity: sha512-Hkn78wwzWHNCp2uarhzQ2SGFLU3JY8SBDDd3TAABK4fc30wm+MuPOrg5QVFVfkKOQd6Bfz3ukJEI+q9sXEkK1g==}
+ dependencies:
+ '@assemblyscript/loader': 0.10.1
+ base64-js: 1.5.1
+ pako: 1.0.11
+ dev: true
+
+ /hdr-histogram-percentiles-obj/3.0.0:
+ resolution: {integrity: sha512-7kIufnBqdsBGcSZLPJwqHT3yhk1QTsSlFsVD3kx5ixH/AlgBs9yM1q6DPhXZ8f8gtdqgh7N7/5btRLpQsS2gHw==}
+ dev: true
+
/header-case/2.0.4:
resolution: {integrity: sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==}
dependencies:
@@ -6044,6 +6533,17 @@ packages:
- supports-color
dev: true
+ /http-proxy-agent/5.0.0:
+ resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==}
+ engines: {node: '>= 6'}
+ dependencies:
+ '@tootallnate/once': 2.0.0
+ agent-base: 6.0.2
+ debug: 4.3.4
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
/http-signature/1.2.0:
resolution: {integrity: sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==}
engines: {node: '>=0.8', npm: '>=1.3.7'}
@@ -6150,6 +6650,10 @@ packages:
resolution: {integrity: sha512-C6lLL7EJPY44kBvA80gq4uMsVFw5x3oSKfuMl1cuZ2RkI5+UJqQXgn+6hlUew0y4ig7Ypt4CObAAIzU53Nfpuw==}
dev: true
+ /import-meta-resolve/3.0.0:
+ resolution: {integrity: sha512-4IwhLhNNA8yy445rPjD/lWh++7hMDOml2eHtd58eG7h+qK3EryMuuRbsHGPikCoAgIkkDnckKfWSk2iDla/ejg==}
+ dev: true
+
/import-modules/2.1.0:
resolution: {integrity: sha512-8HEWcnkbGpovH9yInoisxaSoIg9Brbul+Ju3Kqe2UsYDUBJD/iQjSgEj0zPcTDPKfPp2fs5xlv1i+JSye/m1/A==}
engines: {node: '>=8'}
@@ -6478,7 +6982,7 @@ packages:
dev: true
/isarray/1.0.0:
- resolution: {integrity: sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=}
+ resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==}
dev: true
/isbot/3.3.4:
@@ -6487,7 +6991,7 @@ packages:
dev: true
/isexe/2.0.0:
- resolution: {integrity: sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=}
+ resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
dev: true
/isstream/0.1.2:
@@ -6548,6 +7052,15 @@ packages:
is-object: 1.0.2
dev: true
+ /jackspeak/2.2.1:
+ resolution: {integrity: sha512-MXbxovZ/Pm42f6cDIDkl3xpwv1AGwObKwfmjs2nQePiy85tP3fatofl3FC1aBsOtP/6fq5SbtgHwWcMsLP+bDw==}
+ engines: {node: '>=14'}
+ dependencies:
+ '@isaacs/cliui': 8.0.2
+ optionalDependencies:
+ '@pkgjs/parseargs': 0.11.0
+ dev: true
+
/jake/10.8.5:
resolution: {integrity: sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==}
engines: {node: '>=10'}
@@ -6768,6 +7281,17 @@ packages:
pretty-format: 29.4.2
dev: true
+ /jest-diff/29.6.1:
+ resolution: {integrity: sha512-FsNCvinvl8oVxpNLttNQX7FAq7vR+gMDGj90tiP7siWw1UdakWUGqrylpsYrpvj908IYckm5Y0Q7azNAozU1Kg==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ chalk: 4.1.2
+ diff-sequences: 29.4.3
+ jest-get-type: 29.4.3
+ pretty-format: 29.6.1
+ dev: true
+ optional: true
+
/jest-docblock/27.5.1:
resolution: {integrity: sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==}
engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
@@ -6835,6 +7359,12 @@ packages:
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
dev: true
+ /jest-get-type/29.4.3:
+ resolution: {integrity: sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dev: true
+ optional: true
+
/jest-haste-map/27.5.1:
resolution: {integrity: sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==}
engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
@@ -6908,6 +7438,17 @@ packages:
pretty-format: 29.4.2
dev: true
+ /jest-matcher-utils/29.6.1:
+ resolution: {integrity: sha512-SLaztw9d2mfQQKHmJXKM0HCbl2PPVld/t9Xa6P9sgiExijviSp7TnZZpw2Fpt+OI3nwUO/slJbOfzfUMKKC5QA==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ chalk: 4.1.2
+ jest-diff: 29.6.1
+ jest-get-type: 29.4.3
+ pretty-format: 29.6.1
+ dev: true
+ optional: true
+
/jest-message-util/26.6.2:
resolution: {integrity: sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==}
engines: {node: '>= 10.14.2'}
@@ -6953,6 +7494,22 @@ packages:
stack-utils: 2.0.5
dev: true
+ /jest-message-util/29.6.1:
+ resolution: {integrity: sha512-KoAW2zAmNSd3Gk88uJ56qXUWbFk787QKmjjJVOjtGFmmGSZgDBrlIL4AfQw1xyMYPNVD7dNInfIbur9B2rd/wQ==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@babel/code-frame': 7.16.7
+ '@jest/types': 29.6.1
+ '@types/stack-utils': 2.0.0
+ chalk: 4.1.2
+ graceful-fs: 4.2.9
+ micromatch: 4.0.4
+ pretty-format: 29.6.1
+ slash: 3.0.0
+ stack-utils: 2.0.5
+ dev: true
+ optional: true
+
/jest-mock/27.5.1:
resolution: {integrity: sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==}
engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
@@ -7152,6 +7709,19 @@ packages:
picomatch: 2.3.1
dev: true
+ /jest-util/29.6.1:
+ resolution: {integrity: sha512-NRFCcjc+/uO3ijUVyNOQJluf8PtGCe/W6cix36+M3cTFgiYqFOOW5MgN4JOOcvbUhcKTYVd1CvHz/LWi8d16Mg==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jest/types': 29.6.1
+ '@types/node': 14.6.4
+ chalk: 4.1.2
+ ci-info: 3.3.0
+ graceful-fs: 4.2.9
+ picomatch: 2.3.1
+ dev: true
+ optional: true
+
/jest-validate/27.5.1:
resolution: {integrity: sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==}
engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
@@ -7458,6 +8028,10 @@ packages:
resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
dev: true
+ /listenercount/1.0.1:
+ resolution: {integrity: sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ==}
+ dev: true
+
/load-json-file/1.1.0:
resolution: {integrity: sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==}
engines: {node: '>=0.10.0'}
@@ -7610,6 +8184,11 @@ packages:
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
dev: true
+ /lru-cache/10.0.0:
+ resolution: {integrity: sha512-svTf/fzsKHffP42sujkO/Rjs37BCIsQVRCeNYIm9WN8rgT7ffoUnRtZCqU+6BqcSBdv8gwJeTz8knJpgACeQMw==}
+ engines: {node: 14 || >=16.14}
+ dev: true
+
/lru-cache/4.1.5:
resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==}
dependencies:
@@ -7709,6 +8288,13 @@ packages:
escape-string-regexp: 5.0.0
dev: true
+ /matchit/1.1.0:
+ resolution: {integrity: sha512-+nGYoOlfHmxe5BW5tE0EMJppXEwdSf8uBA1GTZC7Q77kbT35+VKLYJMzVNWCHSsga1ps1tPYFtFyvxvKzWVmMA==}
+ engines: {node: '>=6'}
+ dependencies:
+ '@arr/every': 1.0.1
+ dev: true
+
/md5-hex/3.0.1:
resolution: {integrity: sha512-BUiRtTtV39LIJwinWBjqVsU9xhdnz7/i889V859IBFpuqGAj6LuOvHv5XLbgZ2R7ptJoJaEcxkv88/h25T7Ciw==}
engines: {node: '>=8'}
@@ -7842,10 +8428,21 @@ packages:
brace-expansion: 2.0.1
dev: true
+ /minimatch/9.0.2:
+ resolution: {integrity: sha512-PZOT9g5v2ojiTL7r1xF6plNHLtOeTpSlDI007As2NlA2aYBMfVom17yqa6QzhmDP8QOhn7LjHTg7DFCVSSa6yg==}
+ engines: {node: '>=16 || 14 >=14.17'}
+ dependencies:
+ brace-expansion: 2.0.1
+ dev: true
+
/minimist/1.2.5:
resolution: {integrity: sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==}
dev: true
+ /minimist/1.2.8:
+ resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
+ dev: true
+
/minipass-collect/1.0.2:
resolution: {integrity: sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==}
engines: {node: '>= 8'}
@@ -7899,6 +8496,11 @@ packages:
yallist: 4.0.0
dev: true
+ /minipass/6.0.2:
+ resolution: {integrity: sha512-MzWSV5nYVT7mVyWCwn2o7JH13w2TBRmmSqSRCKzTw+lmft9X4z+3wjvs06Tzijo5z4W/kahUCDpRXTF+ZrmF/w==}
+ engines: {node: '>=16 || 14 >=14.17'}
+ dev: true
+
/minizlib/2.1.2:
resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==}
engines: {node: '>= 8'}
@@ -7907,10 +8509,21 @@ packages:
yallist: 4.0.0
dev: true
+ /mitt/3.0.0:
+ resolution: {integrity: sha512-7dX2/10ITVyqh4aOSVI9gdape+t9l2/8QxHrFmUXu4EEUpdlxl6RudZUPZoc+zuY2hk1j7XxVroIVIan/pD/SQ==}
+ dev: true
+
/mkdirp-classic/0.5.3:
resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==}
dev: true
+ /mkdirp/0.5.6:
+ resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==}
+ hasBin: true
+ dependencies:
+ minimist: 1.2.8
+ dev: true
+
/mkdirp/1.0.4:
resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==}
engines: {node: '>=10'}
@@ -7982,6 +8595,16 @@ packages:
engines: {node: '>= 0.6'}
dev: true
+ /nice-napi/1.0.2:
+ resolution: {integrity: sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA==}
+ os: ['!win32']
+ requiresBuild: true
+ dependencies:
+ node-addon-api: 3.2.1
+ node-gyp-build: 4.6.0
+ dev: true
+ optional: true
+
/nice-try/1.0.5:
resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==}
dev: true
@@ -8015,6 +8638,28 @@ packages:
- supports-color
dev: true
+ /node-addon-api/3.2.1:
+ resolution: {integrity: sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==}
+ dev: true
+ optional: true
+
+ /node-domexception/1.0.0:
+ resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==}
+ engines: {node: '>=10.5.0'}
+ dev: true
+
+ /node-fetch/2.6.12:
+ resolution: {integrity: sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==}
+ engines: {node: 4.x || >=6.0.0}
+ peerDependencies:
+ encoding: ^0.1.0
+ peerDependenciesMeta:
+ encoding:
+ optional: true
+ dependencies:
+ whatwg-url: 5.0.0
+ dev: true
+
/node-fetch/2.6.7:
resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==}
engines: {node: 4.x || >=6.0.0}
@@ -8027,6 +8672,21 @@ packages:
whatwg-url: 5.0.0
dev: true
+ /node-fetch/3.3.1:
+ resolution: {integrity: sha512-cRVc/kyto/7E5shrWca1Wsea4y6tL9iYJE5FBCius3JQfb/4P4I295PfhgbJQBLTx6lATE4z+wK0rPM4VS2uow==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+ dependencies:
+ data-uri-to-buffer: 4.0.1
+ fetch-blob: 3.2.0
+ formdata-polyfill: 4.0.10
+ dev: true
+
+ /node-gyp-build/4.6.0:
+ resolution: {integrity: sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==}
+ hasBin: true
+ dev: true
+ optional: true
+
/node-gyp/7.1.2:
resolution: {integrity: sha512-CbpcIo7C3eMu3dL1c3d0xw449fHIGALIJsRP4DDPHpyiW8vcriNY7ubh9TE4zEKfSxscY7PjeFnshE7h75ynjQ==}
engines: {node: '>= 10.12.0'}
@@ -8318,7 +8978,7 @@ packages:
is-interactive: 2.0.0
is-unicode-supported: 1.1.0
log-symbols: 5.1.0
- strip-ansi: 7.0.1
+ strip-ansi: 7.1.0
wcwidth: 1.0.1
dev: true
@@ -8481,6 +9141,10 @@ packages:
- supports-color
dev: true
+ /pako/1.0.11:
+ resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==}
+ dev: true
+
/param-case/3.0.4:
resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==}
dependencies:
@@ -8593,6 +9257,14 @@ packages:
resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
dev: true
+ /path-scurry/1.10.0:
+ resolution: {integrity: sha512-tZFEaRQbMLjwrsmidsGJ6wDMv0iazJWk6SfIKnY4Xru8auXgmJkOBa5DUbYFcFD2Rzk2+KDlIiF0GVXNCbgC7g==}
+ engines: {node: '>=16 || 14 >=14.17'}
+ dependencies:
+ lru-cache: 10.0.0
+ minipass: 6.0.2
+ dev: true
+
/path-to-regexp/0.1.7:
resolution: {integrity: sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=}
dev: true
@@ -8696,6 +9368,16 @@ packages:
engines: {node: '>= 6'}
dev: true
+ /piscina/3.2.0:
+ resolution: {integrity: sha512-yn/jMdHRw+q2ZJhFhyqsmANcbF6V2QwmD84c6xRau+QpQOmtrBCoRGdvTfeuFDYXB5W2m6MfLkjkvQa9lUSmIA==}
+ dependencies:
+ eventemitter-asyncresource: 1.0.0
+ hdr-histogram-js: 2.0.3
+ hdr-histogram-percentiles-obj: 3.0.0
+ optionalDependencies:
+ nice-napi: 1.0.2
+ dev: true
+
/pkg-conf/4.0.0:
resolution: {integrity: sha512-7dmgi4UY4qk+4mj5Cd8v/GExPo0K+SlY+hulOSdfZ/T6jVH6//y7NtzZo5WrfhDBxuQ0jCa7fLZmNaNh7EWL/w==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
@@ -8725,6 +9407,13 @@ packages:
irregular-plurals: 3.3.0
dev: true
+ /polka/0.5.2:
+ resolution: {integrity: sha512-FVg3vDmCqP80tOrs+OeNlgXYmFppTXdjD5E7I4ET1NjvtNmQrb1/mJibybKkb/d4NA7YWAr1ojxuhpL3FHqdlw==}
+ dependencies:
+ '@polka/url': 0.5.0
+ trouter: 2.0.1
+ dev: true
+
/prelude-ls/1.1.2:
resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==}
engines: {node: '>= 0.8.0'}
@@ -8768,6 +9457,16 @@ packages:
react-is: 18.2.0
dev: true
+ /pretty-format/29.6.1:
+ resolution: {integrity: sha512-7jRj+yXO0W7e4/tSJKoR7HRIHLPPjtNaUGG2xxKQnGvPNRkgWcQ0AZX6P4KBRJN4FcTBWb3sa7DVUJmocYuoog==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jest/schemas': 29.6.0
+ ansi-styles: 5.2.0
+ react-is: 18.2.0
+ dev: true
+ optional: true
+
/pretty-ms/7.0.1:
resolution: {integrity: sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==}
engines: {node: '>=10'}
@@ -8790,6 +9489,11 @@ packages:
engines: {node: '>= 0.6.0'}
dev: true
+ /progress/2.0.3:
+ resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==}
+ engines: {node: '>=0.4.0'}
+ dev: true
+
/promise-inflight/1.0.1:
resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==}
dev: true
@@ -8867,6 +9571,29 @@ packages:
- utf-8-validate
dev: true
+ /puppeteer-core/20.3.0_typescript@4.6.2:
+ resolution: {integrity: sha512-264pBrIui5bO6NJeOcbJrLa0OCwmA4+WK00JMrLIKTfRiqe2gx8KWTzLsjyw/bizErp3TKS7vt/I0i5fTC+mAw==}
+ engines: {node: '>=16.0.0'}
+ peerDependencies:
+ typescript: '>= 4.7.4'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ dependencies:
+ '@puppeteer/browsers': 1.3.0_typescript@4.6.2
+ chromium-bidi: 0.4.9_devtools-protocol@0.0.1120988
+ cross-fetch: 3.1.6
+ debug: 4.3.4
+ devtools-protocol: 0.0.1120988
+ typescript: 4.6.2
+ ws: 8.13.0
+ transitivePeerDependencies:
+ - bufferutil
+ - encoding
+ - supports-color
+ - utf-8-validate
+ dev: true
+
/qs/6.5.3:
resolution: {integrity: sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==}
engines: {node: '>=0.6'}
@@ -9162,6 +9889,13 @@ packages:
resolution: {integrity: sha512-22MOP1Rh7sAo1BZpDG6R5RFYzR2lYEgwq7HEmyW2qcsOqR2lQKmn+O//xV3YG/0rrhMC6KVX2hU+ZXuaw9a5bw==}
dev: true
+ /rimraf/2.7.1:
+ resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==}
+ hasBin: true
+ dependencies:
+ glob: 7.2.0
+ dev: true
+
/rimraf/3.0.2:
resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
hasBin: true
@@ -9305,6 +10039,10 @@ packages:
tslib: 2.3.1
dev: true
+ /safaridriver/0.0.4:
+ resolution: {integrity: sha512-EgK9Vc2Bk4WaECq1E7ti9GyeQ6JKKQNs40vNOE/b5Ul5dDEt429G0Kj5Nzs4FRS5ZIVa7nBck1TyHuinOYdz2Q==}
+ dev: true
+
/safe-buffer/5.1.2:
resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==}
dev: true
@@ -9423,6 +10161,10 @@ packages:
resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==}
dev: true
+ /setimmediate/1.0.5:
+ resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==}
+ dev: true
+
/setprototypeof/1.1.1:
resolution: {integrity: sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==}
dev: true
@@ -9466,6 +10208,11 @@ packages:
resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
dev: true
+ /signal-exit/4.0.2:
+ resolution: {integrity: sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==}
+ engines: {node: '>=14'}
+ dev: true
+
/sinon/13.0.1:
resolution: {integrity: sha512-8yx2wIvkBjIq/MGY1D9h1LMraYW+z1X0mb648KZnKSdvLasvDu7maa0dFaNYdTDczFgbjNw2tOmWdTk9saVfwQ==}
dependencies:
@@ -9639,6 +10386,11 @@ packages:
engines: {node: '>= 10.x'}
dev: true
+ /split2/4.2.0:
+ resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==}
+ engines: {node: '>= 10.x'}
+ dev: true
+
/sprintf-js/1.0.3:
resolution: {integrity: sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=}
dev: true
@@ -9748,7 +10500,7 @@ packages:
dependencies:
eastasianwidth: 0.2.0
emoji-regex: 9.2.2
- strip-ansi: 7.0.1
+ strip-ansi: 7.1.0
dev: true
/string.prototype.padend/3.1.1:
@@ -9787,7 +10539,7 @@ packages:
dev: true
/strip-ansi/3.0.1:
- resolution: {integrity: sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=}
+ resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==}
engines: {node: '>=0.10.0'}
dependencies:
ansi-regex: 2.1.1
@@ -9807,6 +10559,13 @@ packages:
ansi-regex: 6.0.1
dev: true
+ /strip-ansi/7.1.0:
+ resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==}
+ engines: {node: '>=12'}
+ dependencies:
+ ansi-regex: 6.0.1
+ dev: true
+
/strip-bom/2.0.0:
resolution: {integrity: sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==}
engines: {node: '>=0.10.0'}
@@ -10083,7 +10842,7 @@ packages:
dev: true
/tr46/0.0.3:
- resolution: {integrity: sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=}
+ resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
dev: true
/tr46/2.1.0:
@@ -10093,6 +10852,10 @@ packages:
punycode: 2.1.1
dev: true
+ /traverse/0.3.9:
+ resolution: {integrity: sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==}
+ dev: true
+
/trim-repeated/1.0.0:
resolution: {integrity: sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==}
engines: {node: '>=0.10.0'}
@@ -10100,6 +10863,13 @@ packages:
escape-string-regexp: 1.0.5
dev: true
+ /trouter/2.0.1:
+ resolution: {integrity: sha512-kr8SKKw94OI+xTGOkfsvwZQ8mWoikZDd2n8XZHjJVZUARZT+4/VV6cacRS6CLsH9bNm+HFIPU1Zx4CnNnb4qlQ==}
+ engines: {node: '>=6'}
+ dependencies:
+ matchit: 1.1.0
+ dev: true
+
/ts-clone-node/0.3.30_typescript@4.6.2:
resolution: {integrity: sha512-T9RLibxk0UBHelLUnSIZNyTxlPzcEk+KFFLXBUAG9YFJ3gPOYRrgD/RHnrlAxwEJ9Gq5S/iB8m3tcuTKtgf5Rw==}
engines: {node: '>=10.0.0'}
@@ -10309,6 +11079,21 @@ packages:
engines: {node: '>= 0.8'}
dev: true
+ /unzipper/0.10.14:
+ resolution: {integrity: sha512-ti4wZj+0bQTiX2KmKWuwj7lhV+2n//uXEotUmGuQqrbVZSEGFMbI68+c6JCQ8aAmUWYvtHEz2A8K6wXvueR/6g==}
+ dependencies:
+ big-integer: 1.6.51
+ binary: 0.3.0
+ bluebird: 3.4.7
+ buffer-indexof-polyfill: 1.0.2
+ duplexer2: 0.1.4
+ fstream: 1.0.12
+ graceful-fs: 4.2.9
+ listenercount: 1.0.1
+ readable-stream: 2.3.7
+ setimmediate: 1.0.5
+ dev: true
+
/upper-case-first/2.0.2:
resolution: {integrity: sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==}
dependencies:
@@ -10340,7 +11125,7 @@ packages:
dev: true
/util-deprecate/1.0.2:
- resolution: {integrity: sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=}
+ resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
dev: true
/util/0.10.4:
@@ -10445,6 +11230,18 @@ packages:
xml-name-validator: 3.0.0
dev: true
+ /wait-port/1.0.4:
+ resolution: {integrity: sha512-w8Ftna3h6XSFWWc2JC5gZEgp64nz8bnaTp5cvzbJSZ53j+omktWTDdwXxEF0jM8YveviLgFWvNGrSvRHnkyHyw==}
+ engines: {node: '>=10'}
+ hasBin: true
+ dependencies:
+ chalk: 4.1.2
+ commander: 9.5.0
+ debug: 4.3.4
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
/walker/1.0.7:
resolution: {integrity: sha512-cF4je9Fgt6sj1PKfuFt9jpQPeHosM+Ryma/hfY9U7uXGKM7pJCsF0v2r55o+Il54+i77SyYWetB4tD1dEygRkw==}
dependencies:
@@ -10458,7 +11255,7 @@ packages:
defaults: 1.0.3
dev: true
- /wdio-chromedriver-service/8.0.1_e79f2276e99de797e09d92ea93561b2e:
+ /wdio-chromedriver-service/8.0.1_004e92621c7fa5837873d8fdb8947671:
resolution: {integrity: sha512-nLjJmUBlng8RtnTM/ZJt1rzwAY1QqsMZbmNDxX7/AuSZEu88URTjjUhGPHY0d9al33GSiVoF606P0QSQT6B1ag==}
engines: {node: ^16.13 || >=18}
peerDependencies:
@@ -10473,8 +11270,50 @@ packages:
dependencies:
'@wdio/logger': 8.1.0
'@wdio/types': 8.3.0
- chromedriver: 99.0.0
+ chromedriver: 114.0.2
+ fs-extra: 11.1.0
+ split2: 4.1.0
+ tcp-port-used: 1.0.2
+ webdriverio: 8.3.5
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /wdio-edgedriver-service/3.0.2_@wdio+types@8.3.0:
+ resolution: {integrity: sha512-7rDzeG1Dpcbx28w5fpHX5MOm9bteiWeTVdeVvRVIqukVdgPyjS0Ej/pU4952wZBFWqnja4er0B90x6BYU1KiIw==}
+ engines: {node: ^16.13 || >=18}
+ peerDependencies:
+ '@wdio/types': ^7.0.0 || ^8.0.0
+ peerDependenciesMeta:
+ '@wdio/types':
+ optional: true
+ dependencies:
+ '@wdio/logger': 8.11.0
+ '@wdio/types': 8.3.0
+ edgedriver: 5.2.1
+ get-port: 7.0.0
+ split2: 4.2.0
+ wait-port: 1.0.4
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /wdio-safaridriver-service/2.1.0_38e69deb68987ddd418b1267598e302e:
+ resolution: {integrity: sha512-Zg0aZn8KJo+MwvdOTje2cja4OcrkpoCBhQSzVlhZ3SszMnwhi4VQ1p5TdHB9mWZpuVtsLHWpmx/G7ceJWendVw==}
+ engines: {node: ^16.13 || >=18}
+ peerDependencies:
+ '@wdio/types': ^7.0.0 || ^8.0.0-alpha.219
+ webdriverio: ^7.0.0 || ^8.0.0-alpha.219
+ peerDependenciesMeta:
+ '@wdio/types':
+ optional: true
+ dependencies:
+ '@types/split2': 3.2.1
+ '@types/tcp-port-used': 1.0.1
+ '@wdio/logger': 8.11.0
+ '@wdio/types': 8.3.0
fs-extra: 11.1.0
+ safaridriver: 0.0.4
split2: 4.1.0
tcp-port-used: 1.0.2
webdriverio: 8.3.5
@@ -10482,10 +11321,35 @@ packages:
- supports-color
dev: true
+ /web-streams-polyfill/3.2.1:
+ resolution: {integrity: sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==}
+ engines: {node: '>= 8'}
+ dev: true
+
/web-vitals/3.3.2:
resolution: {integrity: sha512-qRkpmSeKfEWAzNhtX541xA8gCJ+pqCqBmUlDVkVDSCSYUvfvNqF+k9g8I+uyreRcDBdfiJrd0/aLbTy5ydo49Q==}
dev: false
+ /webdriver/8.11.1:
+ resolution: {integrity: sha512-hSpUZYzUA65t4DDtKujCHUX6hpFTUleb7lWMcf5xjPz8sxWrK9R8NIw7pXt/GU6PVS331nGAaYkzoXrqz2VB8w==}
+ engines: {node: ^16.13 || >=18}
+ dependencies:
+ '@types/node': 20.3.3
+ '@types/ws': 8.5.4
+ '@wdio/config': 8.11.0
+ '@wdio/logger': 8.11.0
+ '@wdio/protocols': 8.11.0
+ '@wdio/types': 8.10.4
+ '@wdio/utils': 8.11.0
+ deepmerge-ts: 5.1.0
+ got: 12.6.1
+ ky: 0.33.2
+ ws: 8.13.0
+ transitivePeerDependencies:
+ - bufferutil
+ - utf-8-validate
+ dev: true
+
/webdriver/8.3.5:
resolution: {integrity: sha512-TNlvRtX4OVDzkrLSH5vAVpzTRbpOEYKyU80S8wVx9OddTFgs4fc4SLEqZobdSc1W/IvKjoTNa8TkFx9M237tOw==}
engines: {node: ^16.13 || >=18}
@@ -10506,6 +11370,43 @@ packages:
- utf-8-validate
dev: true
+ /webdriverio/8.11.2_typescript@4.6.2:
+ resolution: {integrity: sha512-e/9WkdNTfWeoaSo2UzK0Giec/nQX3i7U9J8esimhozH/EpwSqIaEJ2pRRlxRVafEhe2OBG1QDhnLnDjdCC5Hxg==}
+ engines: {node: ^16.13 || >=18}
+ dependencies:
+ '@types/node': 20.3.3
+ '@wdio/config': 8.11.0
+ '@wdio/logger': 8.11.0
+ '@wdio/protocols': 8.11.0
+ '@wdio/repl': 8.10.1
+ '@wdio/types': 8.10.4
+ '@wdio/utils': 8.11.0
+ archiver: 5.1.0
+ aria-query: 5.0.0
+ css-shorthand-properties: 1.1.1
+ css-value: 0.0.1
+ devtools: 8.11.0_typescript@4.6.2
+ devtools-protocol: 0.0.1152884
+ grapheme-splitter: 1.0.4
+ import-meta-resolve: 3.0.0
+ is-plain-obj: 4.1.0
+ lodash.clonedeep: 4.5.0
+ lodash.zip: 4.2.0
+ minimatch: 9.0.2
+ puppeteer-core: 20.3.0_typescript@4.6.2
+ query-selector-shadow-dom: 1.0.0
+ resq: 1.10.0
+ rgb2hex: 0.2.5
+ serialize-error: 8.0.1
+ webdriver: 8.11.1
+ transitivePeerDependencies:
+ - bufferutil
+ - encoding
+ - supports-color
+ - typescript
+ - utf-8-validate
+ dev: true
+
/webdriverio/8.3.5:
resolution: {integrity: sha512-Rf3Yadk7qydAJiobazk0TzIPK8iYzzbDcbNKa3xX9u3VUMK1xZeoccZunE5WImu4Llg+1BBA2IN1rW0iiQHe5w==}
engines: {node: ^16.13 || >=18}
@@ -10543,7 +11444,7 @@ packages:
dev: true
/webidl-conversions/3.0.1:
- resolution: {integrity: sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=}
+ resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}
dev: true
/webidl-conversions/5.0.0:
@@ -10572,7 +11473,7 @@ packages:
dev: true
/whatwg-url/5.0.0:
- resolution: {integrity: sha1-lmRU6HZUYuN2RNNib2dCzotwll0=}
+ resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==}
dependencies:
tr46: 0.0.3
webidl-conversions: 3.0.1
@@ -10602,8 +11503,8 @@ packages:
isexe: 2.0.0
dev: true
- /which/3.0.0:
- resolution: {integrity: sha512-nla//68K9NU6yRiwDY/Q8aU6siKlSs64aEC7+IV56QoAuyQT2ovsJcgGYGyqMOmI/CGN1BOR6mM5EN0FBO+zyQ==}
+ /which/3.0.1:
+ resolution: {integrity: sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==}
engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
hasBin: true
dependencies:
@@ -10643,7 +11544,7 @@ packages:
dependencies:
ansi-styles: 6.1.0
string-width: 5.1.2
- strip-ansi: 7.0.1
+ strip-ansi: 7.1.0
dev: true
/wrappy/1.0.2:
@@ -10692,6 +11593,19 @@ packages:
optional: true
dev: true
+ /ws/8.13.0:
+ resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==}
+ engines: {node: '>=10.0.0'}
+ peerDependencies:
+ bufferutil: ^4.0.1
+ utf-8-validate: '>=5.0.2'
+ peerDependenciesMeta:
+ bufferutil:
+ optional: true
+ utf-8-validate:
+ optional: true
+ dev: true
+
/xml-name-validator/3.0.0:
resolution: {integrity: sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==}
dev: true
@@ -10772,6 +11686,19 @@ packages:
yargs-parser: 21.1.1
dev: true
+ /yargs/17.7.1:
+ resolution: {integrity: sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==}
+ engines: {node: '>=12'}
+ dependencies:
+ cliui: 8.0.1
+ escalade: 3.1.1
+ get-caller-file: 2.0.5
+ require-directory: 2.1.1
+ string-width: 4.2.3
+ y18n: 5.0.5
+ yargs-parser: 21.1.1
+ dev: true
+
/yarn-install/1.0.0:
resolution: {integrity: sha512-VO1u181msinhPcGvQTVMnHVOae8zjX/NSksR17e6eXHRveDvHCF5mGjh9hkN8mzyfnCqcBe42LdTs7bScuTaeg==}
engines: {node: '>=6'}
diff --git a/common/config/rush/repo-state.json b/common/config/rush/repo-state.json
index 014f80bb3..e4a46e960 100644
--- a/common/config/rush/repo-state.json
+++ b/common/config/rush/repo-state.json
@@ -1,5 +1,5 @@
// DO NOT MODIFY THIS FILE MANUALLY BUT DO COMMIT IT. It is generated and used by Rush.
{
- "pnpmShrinkwrapHash": "b3670fdd35939880fb5506b045e5826aeab84996",
+ "pnpmShrinkwrapHash": "c0609797f2587b31945d0f4e1ef5755136269ae6",
"preferredVersionsHash": "bf21a9e8fbc5a3846fb05b4fa0859e0917b2202f"
}
diff --git a/rush.json b/rush.json
index f86224086..f1106d36d 100644
--- a/rush.json
+++ b/rush.json
@@ -59,7 +59,7 @@
* The default value is false to avoid legacy compatibility issues.
* It is strongly recommended to set strictPeerDependencies=true.
*/
- "strictPeerDependencies": true,
+ "strictPeerDependencies": false,
/**
* Configures the strategy used to select versions during installation.
diff --git a/trackers/javascript-tracker/package.json b/trackers/javascript-tracker/package.json
index 2e69f40ed..6b59a553e 100644
--- a/trackers/javascript-tracker/package.json
+++ b/trackers/javascript-tracker/package.json
@@ -30,7 +30,7 @@
],
"scripts": {
"build": "rollup -c --silent --failAfterWarnings",
- "docker:micro": "docker pull snowplow/snowplow-micro:1.4.0",
+ "docker:micro": "docker pull snowplow/snowplow-micro:latest",
"test": "jest test/unit/*.test.ts --no-cache",
"test:build": "rollup --config rollup.config.test.js --silent",
"test:e2e:local": "npm-run-all --parallel test:build docker:micro --serial wdio:local",
@@ -84,7 +84,7 @@
"@wdio/static-server-service": "~8.3.0",
"@wdio/types": "~8.3.0",
"chalk": "4.1.2",
- "chromedriver": "~99.0.0",
+ "chromedriver": "~114.0.0",
"dockerode": "~3.3.1",
"jest": "~27.5.1",
"jest-environment-jsdom": "~27.5.1",
@@ -104,6 +104,13 @@
"ts-node": "~10.9.1",
"typescript": "~4.6.2",
"wdio-chromedriver-service": "~8.0.1",
- "webdriverio": "~8.3.3"
+ "webdriverio": "~8.3.3",
+ "@wdio/shared-store-service": "~8.11.2",
+ "node-fetch": "2",
+ "@types/node-fetch": "2",
+ "@wdio/globals": "~8.11.2",
+ "wdio-safaridriver-service": "~2.1.0",
+ "wdio-edgedriver-service": "~3.0.2",
+ "@types/youtube": "~0.0.46"
}
}
diff --git a/trackers/javascript-tracker/test/E2E_SETUP.md b/trackers/javascript-tracker/test/E2E_SETUP.md
new file mode 100644
index 000000000..54bc9db67
--- /dev/null
+++ b/trackers/javascript-tracker/test/E2E_SETUP.md
@@ -0,0 +1,19 @@
+# End-to-end tests setup
+
+## Local runs
+
+The end-to-end testing setup options used by the `rushx test:e2e:local` can be found in [wdio.local.conf.ts](./wdio.local.conf.ts).
+
+By default, the enabled driver for local tests is the `chromedriver` which will instrument a local chrome instance. The version of the corresponding `chromedriver` package in the [package.json](../package.json) file should be one matching to your local chrome version. E.g. for Chrome version 140, you need to install `chromedriver@140`.
+
+To enable testing with other browsers such as Microsoft Edge and Safari, you need to:
+1. Uncomment the capabilities and services entries on [wdio.local.conf.ts](./wdio.local.conf.ts).
+2. Install the `safaridriver` and/or `msedgedriver` on your local machine. _(Instructions will depend on your OS.)_
+3. Start any driver program you want before running the tests.
+4. In case of driver port conflicts, you can adjust each driver by their respective configuration.
+
+
\ No newline at end of file
diff --git a/trackers/javascript-tracker/test/functional/activityCallback.test.ts b/trackers/javascript-tracker/test/functional/activityCallback.test.ts
index 4637c7f40..79d4a22ba 100644
--- a/trackers/javascript-tracker/test/functional/activityCallback.test.ts
+++ b/trackers/javascript-tracker/test/functional/activityCallback.test.ts
@@ -1,35 +1,5 @@
-/*
- * Copyright (c) 2022 Snowplow Analytics Ltd, 2010 Anthon Pang
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * 3. Neither the name of the copyright holder nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
import F from 'lodash/fp';
-import { DockerWrapper, start, stop } from '../micro';
+import { pageSetup } from '../integration/helpers';
declare var trackPageView: () => void;
declare var findMaxX: () => number;
@@ -44,22 +14,8 @@ describe('Activity tracking with callbacks', () => {
return;
}
- let docker: DockerWrapper;
-
beforeAll(async () => {
- await browser.call(async () => {
- return await start().then((container) => {
- docker = container;
- });
- });
- await browser.url('/index.html');
- await browser.setCookies({ name: 'container', value: docker.url });
- });
-
- afterAll(async () => {
- await browser.call(async () => {
- return await stop(docker.container);
- });
+ await pageSetup();
});
it('reports events on scroll', async () => {
diff --git a/trackers/javascript-tracker/test/functional/cookies.test.ts b/trackers/javascript-tracker/test/functional/cookies.test.ts
index 5f4ac33d7..a4a0005f1 100644
--- a/trackers/javascript-tracker/test/functional/cookies.test.ts
+++ b/trackers/javascript-tracker/test/functional/cookies.test.ts
@@ -1,33 +1,3 @@
-/*
- * Copyright (c) 2022 Snowplow Analytics Ltd, 2010 Anthon Pang
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * 3. Neither the name of the copyright holder nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
describe('Tracker created domain cookies', () => {
it('contain the expected cookie names', async () => {
await browser.url('/cookies.html');
diff --git a/trackers/javascript-tracker/test/integration/autoTracking.test.ts b/trackers/javascript-tracker/test/integration/autoTracking.test.ts
index 075ba4ecc..7b3b885db 100755
--- a/trackers/javascript-tracker/test/integration/autoTracking.test.ts
+++ b/trackers/javascript-tracker/test/integration/autoTracking.test.ts
@@ -1,38 +1,6 @@
-/*
- * Copyright (c) 2022 Snowplow Analytics Ltd, 2010 Anthon Pang
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * 3. Neither the name of the copyright holder nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-import util from 'util';
import F from 'lodash/fp';
-import { fetchResults, start, stop, DockerWrapper } from '../micro';
-
-const dumpLog = (log: Array) => console.log(util.inspect(log, true, null, true));
+import { fetchResults } from '../micro';
+import { pageSetup } from './helpers';
const isMatchWithCallback = F.isMatchWith((lt, rt) => (F.isFunction(rt) ? rt(lt) : undefined));
@@ -47,7 +15,7 @@ describe('Auto tracking', () => {
}
let log: Array = [];
- let docker: DockerWrapper;
+ let testIdentifier = '';
const logContains = (ev: unknown) => F.some(isMatchWithCallback(ev as object), log);
@@ -61,13 +29,7 @@ describe('Auto tracking', () => {
};
beforeAll(async () => {
- await browser.call(async () => (docker = await start()));
- await browser.url('/index.html');
- await browser.setCookies({ name: 'container', value: docker.url });
- });
-
- afterAll(async () => {
- await browser.call(async () => await stop(docker.container));
+ testIdentifier = await pageSetup();
});
it('should send a link click events', async () => {
@@ -88,7 +50,7 @@ describe('Auto tracking', () => {
// time for activity to register and request to arrive
await browser.pause(5000);
- log = await browser.call(async () => await fetchResults(docker.url));
+ log = await browser.call(async () => await fetchResults());
});
it('should send a link click event', () => {
@@ -96,7 +58,7 @@ describe('Auto tracking', () => {
logContains({
event: {
event: 'unstruct',
- app_id: 'autotracking',
+ app_id: 'autotracking-link-' + testIdentifier,
page_url: 'http://snowplow-js-tracker.local:8080/link-tracking.html',
unstruct_event: {
data: {
@@ -127,7 +89,7 @@ describe('Auto tracking', () => {
logContains({
event: {
event: 'unstruct',
- app_id: 'autotracking',
+ app_id: 'autotracking-link-' + testIdentifier,
unstruct_event: {
data: {
schema: 'iglu:com.snowplowanalytics.snowplow/link_click/jsonschema/1-0-1',
@@ -144,7 +106,7 @@ describe('Auto tracking', () => {
logContains({
event: {
event: 'unstruct',
- app_id: 'autotracking',
+ app_id: 'autotracking-link-' + testIdentifier,
unstruct_event: {
data: {
schema: 'iglu:com.snowplowanalytics.snowplow/link_click/jsonschema/1-0-1',
@@ -167,7 +129,7 @@ describe('Auto tracking', () => {
logContains({
event: {
event: 'unstruct',
- app_id: 'autotracking',
+ app_id: 'autotracking-link-' + testIdentifier,
unstruct_event: {
data: {
schema: 'iglu:com.snowplowanalytics.snowplow/link_click/jsonschema/1-0-1',
@@ -184,7 +146,7 @@ describe('Auto tracking', () => {
logContains({
event: {
event: 'unstruct',
- app_id: 'autotracking',
+ app_id: 'autotracking-link-' + testIdentifier,
unstruct_event: {
data: {
schema: 'iglu:com.snowplowanalytics.snowplow/link_click/jsonschema/1-0-1',
@@ -207,7 +169,7 @@ describe('Auto tracking', () => {
logContains({
event: {
event: 'unstruct',
- app_id: 'autotracking',
+ app_id: 'autotracking-link-' + testIdentifier,
unstruct_event: {
data: {
schema: 'iglu:com.snowplowanalytics.snowplow/link_click/jsonschema/1-0-1',
@@ -224,7 +186,7 @@ describe('Auto tracking', () => {
logContains({
event: {
event: 'unstruct',
- app_id: 'autotracking',
+ app_id: 'autotracking-link-' + testIdentifier,
unstruct_event: {
data: {
schema: 'iglu:com.snowplowanalytics.snowplow/link_click/jsonschema/1-0-1',
@@ -340,7 +302,7 @@ describe('Auto tracking', () => {
// time for activity to register and request to arrive
await browser.pause(2500);
- log = await browser.call(async () => await fetchResults(docker.url));
+ log = await browser.call(async () => await fetchResults());
});
it('should send focus_form for the dynamically added form element', () => {
@@ -348,7 +310,7 @@ describe('Auto tracking', () => {
logContains({
event: {
event: 'unstruct',
- app_id: 'autotracking',
+ app_id: 'autotracking-form-' + testIdentifier,
unstruct_event: {
data: {
schema: 'iglu:com.snowplowanalytics.snowplow/focus_form/jsonschema/1-0-0',
@@ -379,7 +341,7 @@ describe('Auto tracking', () => {
logContains({
event: {
event: 'unstruct',
- app_id: 'autotracking',
+ app_id: 'autotracking-form-' + testIdentifier,
unstruct_event: {
data: {
schema: 'iglu:com.snowplowanalytics.snowplow/focus_form/jsonschema/1-0-0',
@@ -401,7 +363,7 @@ describe('Auto tracking', () => {
logContains({
event: {
event: 'unstruct',
- app_id: 'autotracking',
+ app_id: 'autotracking-form-' + testIdentifier,
unstruct_event: {
data: {
schema: 'iglu:com.snowplowanalytics.snowplow/change_form/jsonschema/1-0-0',
@@ -423,7 +385,7 @@ describe('Auto tracking', () => {
logContains({
event: {
event: 'unstruct',
- app_id: 'autotracking',
+ app_id: 'autotracking-form-' + testIdentifier,
unstruct_event: {
data: {
schema: 'iglu:com.snowplowanalytics.snowplow/focus_form/jsonschema/1-0-0',
@@ -447,7 +409,7 @@ describe('Auto tracking', () => {
logContains({
event: {
event: 'unstruct',
- app_id: 'autotracking',
+ app_id: 'autotracking-form-' + testIdentifier,
unstruct_event: {
data: {
schema: 'iglu:com.snowplowanalytics.snowplow/change_form/jsonschema/1-0-0',
@@ -476,7 +438,7 @@ describe('Auto tracking', () => {
logContains({
event: {
event: 'unstruct',
- app_id: 'autotracking',
+ app_id: 'autotracking-form-' + testIdentifier,
unstruct_event: {
data: {
schema: 'iglu:com.snowplowanalytics.snowplow/focus_form/jsonschema/1-0-0',
@@ -497,7 +459,7 @@ describe('Auto tracking', () => {
logContains({
event: {
event: 'unstruct',
- app_id: 'autotracking',
+ app_id: 'autotracking-form-' + testIdentifier,
unstruct_event: {
data: {
schema: 'iglu:com.snowplowanalytics.snowplow/change_form/jsonschema/1-0-0',
@@ -527,7 +489,7 @@ describe('Auto tracking', () => {
logContains({
event: {
event: 'unstruct',
- app_id: 'autotracking',
+ app_id: 'autotracking-form-' + testIdentifier,
unstruct_event: {
data: {
schema: 'iglu:com.snowplowanalytics.snowplow/focus_form/jsonschema/1-0-0',
@@ -548,7 +510,7 @@ describe('Auto tracking', () => {
logContains({
event: {
event: 'unstruct',
- app_id: 'autotracking',
+ app_id: 'autotracking-form-' + testIdentifier,
unstruct_event: {
data: {
schema: 'iglu:com.snowplowanalytics.snowplow/change_form/jsonschema/1-0-0',
@@ -571,7 +533,7 @@ describe('Auto tracking', () => {
logContains({
event: {
event: 'unstruct',
- app_id: 'autotracking',
+ app_id: 'autotracking-form-' + testIdentifier,
unstruct_event: {
data: {
schema: 'iglu:com.snowplowanalytics.snowplow/change_form/jsonschema/1-0-0',
@@ -604,7 +566,7 @@ describe('Auto tracking', () => {
logContains({
event: {
event: 'unstruct',
- app_id: 'autotracking',
+ app_id: 'autotracking-form-' + testIdentifier,
unstruct_event: {
data: {
schema: 'iglu:com.snowplowanalytics.snowplow/submit_form/jsonschema/1-0-0',
@@ -668,7 +630,7 @@ describe('Auto tracking', () => {
logContains({
event: {
event: 'unstruct',
- app_id: 'autotracking',
+ app_id: 'autotracking-form-' + testIdentifier,
page_url: 'http://snowplow-js-tracker.local:8080/form-tracking.html?filter=exclude',
unstruct_event: {
data: {
@@ -686,7 +648,7 @@ describe('Auto tracking', () => {
logContains({
event: {
event: 'unstruct',
- app_id: 'autotracking',
+ app_id: 'autotracking-form-' + testIdentifier,
page_url: 'http://snowplow-js-tracker.local:8080/form-tracking.html?filter=exclude',
unstruct_event: {
data: {
@@ -706,7 +668,7 @@ describe('Auto tracking', () => {
logContains({
event: {
event: 'unstruct',
- app_id: 'autotracking',
+ app_id: 'autotracking-form-' + testIdentifier,
page_url: 'http://snowplow-js-tracker.local:8080/form-tracking.html?filter=include',
unstruct_event: {
data: {
@@ -726,7 +688,7 @@ describe('Auto tracking', () => {
logContains({
event: {
event: 'unstruct',
- app_id: 'autotracking',
+ app_id: 'autotracking-form-' + testIdentifier,
page_url: 'http://snowplow-js-tracker.local:8080/form-tracking.html?filter=filter',
unstruct_event: {
data: {
@@ -744,7 +706,7 @@ describe('Auto tracking', () => {
logContains({
event: {
event: 'unstruct',
- app_id: 'autotracking',
+ app_id: 'autotracking-form-' + testIdentifier,
page_url: 'http://snowplow-js-tracker.local:8080/form-tracking.html?filter=filter',
unstruct_event: {
data: {
@@ -764,7 +726,7 @@ describe('Auto tracking', () => {
logContains({
event: {
event: 'unstruct',
- app_id: 'autotracking',
+ app_id: 'autotracking-form-' + testIdentifier,
unstruct_event: {
data: {
schema: 'iglu:com.snowplowanalytics.snowplow/focus_form/jsonschema/1-0-0',
@@ -783,7 +745,7 @@ describe('Auto tracking', () => {
logContains({
event: {
event: 'unstruct',
- app_id: 'autotracking',
+ app_id: 'autotracking-form-' + testIdentifier,
unstruct_event: {
data: {
schema: 'iglu:com.snowplowanalytics.snowplow/submit_form/jsonschema/1-0-0',
@@ -803,7 +765,7 @@ describe('Auto tracking', () => {
logContains({
event: {
event: 'unstruct',
- app_id: 'autotracking',
+ app_id: 'autotracking-form-' + testIdentifier,
page_url: 'http://snowplow-js-tracker.local:8080/form-tracking.html?filter=onlyFocus',
unstruct_event: {
data: {
@@ -818,7 +780,7 @@ describe('Auto tracking', () => {
logContains({
event: {
event: 'unstruct',
- app_id: 'autotracking',
+ app_id: 'autotracking-form-' + testIdentifier,
page_url: 'http://snowplow-js-tracker.local:8080/form-tracking.html?filter=onlyFocus',
unstruct_event: {
data: {
@@ -835,7 +797,7 @@ describe('Auto tracking', () => {
logContains({
event: {
event: 'unstruct',
- app_id: 'autotracking',
+ app_id: 'autotracking-form-' + testIdentifier,
page_url: 'http://snowplow-js-tracker.local:8080/form-tracking.html?filter=iframeForm',
unstruct_event: {
data: {
diff --git a/trackers/javascript-tracker/test/integration/cookieless.test.ts b/trackers/javascript-tracker/test/integration/cookieless.test.ts
index d4ed6b9a3..463cc959a 100644
--- a/trackers/javascript-tracker/test/integration/cookieless.test.ts
+++ b/trackers/javascript-tracker/test/integration/cookieless.test.ts
@@ -1,67 +1,29 @@
-/*
- * Copyright (c) 2022 Snowplow Analytics Ltd, 2010 Anthon Pang
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * 3. Neither the name of the copyright holder nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-import util from 'util';
import F from 'lodash/fp';
-import { DockerWrapper, fetchResults, start, stop } from '../micro';
-
-const dumpLog = (log: Array) => console.log(util.inspect(log, true, null, true));
+import { fetchResults } from '../micro';
+import { pageSetup } from './helpers';
const retrieveSchemaData = (schema: unknown) => F.compose(F.get('data'), F.find({ schema }), F.get('data'));
describe('Anonymous tracking features', () => {
let log: Array = [];
- let docker: DockerWrapper;
+ let testIdentifier = '';
const listContains = (items: Array, ev: unknown) => F.some(F.isMatch(ev as object), items);
beforeAll(async () => {
- await browser.call(async () => (docker = await start()));
- await browser.url('/index.html');
- await browser.setCookies({ name: 'container', value: docker.url });
+ testIdentifier = await pageSetup();
await browser.url('/cookieless.html');
await browser.pause(5000); // Time for requests to get written
await browser.url('/cookieless.html?ieTest=true');
await browser.pause(2500); // Time for requests to get written
- log = await browser.call(async () => await fetchResults(docker.url));
- });
-
- afterAll(async () => {
- await browser.call(async () => await stop(docker.container));
+ log = await browser.call(async () => await fetchResults());
});
it('should have no user information in page view when server anonymisation ', () => {
const expected = {
event: 'page_view',
- app_id: 'anon',
+ app_id: 'cookieless-anon-' + testIdentifier,
page_title: 'Server Anon',
user_id: null,
domain_userid: null,
@@ -72,7 +34,7 @@ describe('Anonymous tracking features', () => {
const pageViews = F.filter(
(ev) =>
F.get('event.event', ev) === 'page_view' &&
- F.get('event.app_id', ev) === 'anon' &&
+ F.get('event.app_id', ev) === 'cookieless-anon-' + testIdentifier &&
F.get('event.page_title', ev) === 'Server Anon',
log
);
@@ -105,7 +67,7 @@ describe('Anonymous tracking features', () => {
const pageViews = F.filter(
(ev) =>
F.get('event.event', ev) === 'page_view' &&
- F.get('event.app_id', ev) === 'anon' &&
+ F.get('event.app_id', ev) === 'cookieless-anon-' + testIdentifier &&
F.get('event.page_title', ev) === 'No Anon',
log
);
@@ -114,7 +76,7 @@ describe('Anonymous tracking features', () => {
listContains(pageViews, {
event: {
event: 'page_view',
- app_id: 'anon',
+ app_id: 'cookieless-anon-' + testIdentifier,
page_title: 'No Anon',
user_id: 'Malcolm',
},
@@ -134,7 +96,7 @@ describe('Anonymous tracking features', () => {
const pageViews = F.filter(
(ev) =>
F.get('event.event', ev) === 'page_view' &&
- F.get('event.app_id', ev) === 'anon' &&
+ F.get('event.app_id', ev) === 'cookieless-anon-' + testIdentifier &&
F.get('event.page_title', ev) === 'Client Anon',
log
);
@@ -143,7 +105,7 @@ describe('Anonymous tracking features', () => {
listContains(pageViews, {
event: {
event: 'page_view',
- app_id: 'anon',
+ app_id: 'cookieless-anon-' + testIdentifier,
page_title: 'Client Anon',
user_id: null,
domain_userid: null,
@@ -176,7 +138,8 @@ describe('Anonymous tracking features', () => {
it('should send no events in IE9 when server anonymisation is enabled', () => {
const pageViews = F.filter(
- (ev) => F.get('event.event', ev) === 'page_view' && F.get('event.app_id', ev) === 'ie',
+ (ev) =>
+ F.get('event.event', ev) === 'page_view' && F.get('event.app_id', ev) === 'cookieless-ie-' + testIdentifier,
log
);
diff --git a/trackers/javascript-tracker/test/integration/helpers.ts b/trackers/javascript-tracker/test/integration/helpers.ts
index 1c66b7c8f..4099da8aa 100644
--- a/trackers/javascript-tracker/test/integration/helpers.ts
+++ b/trackers/javascript-tracker/test/integration/helpers.ts
@@ -1,33 +1,3 @@
-/*
- * Copyright (c) 2022 Snowplow Analytics Ltd, 2010 Anthon Pang
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * 3. Neither the name of the copyright holder nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
import { WaitUntilOptions } from 'webdriverio';
import util from 'util';
@@ -65,3 +35,25 @@ export const waitUntil = async (
}
}
};
+
+/**
+ * Initiates the `index.html` page and sets:
+ * 1. the value for the micro container url in a cookie named `container`.
+ * 2. the value for the current test identifier in a cookie named `testIdentifier`.
+ *
+ * @returns {string} The identifier for this test, similar to the cookie set on the page. This identifier is commonly used in custom matchers for events.
+ */
+export async function pageSetup() {
+ const dockerUrl = (await browser.sharedStore.get('dockerInstanceUrl')) as string;
+ if (!dockerUrl) {
+ throw 'dockerInstanceUrl not available in `browser.sharedStore`';
+ }
+ const testIdentifier = browser.capabilities.browserName + '_' + browser.capabilities.browserVersion;
+ await browser.url('/index.html');
+ await browser.setCookies([
+ { name: 'container', value: dockerUrl },
+ { name: 'testIdentifier', value: testIdentifier },
+ ]);
+
+ return testIdentifier;
+}
diff --git a/trackers/javascript-tracker/test/integration/integration.test.ts b/trackers/javascript-tracker/test/integration/integration.test.ts
index 46ce8bd3a..1218068ff 100755
--- a/trackers/javascript-tracker/test/integration/integration.test.ts
+++ b/trackers/javascript-tracker/test/integration/integration.test.ts
@@ -1,39 +1,7 @@
-/*
- * Copyright (c) 2022 Snowplow Analytics Ltd, 2010 Anthon Pang
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * 3. Neither the name of the copyright holder nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-import util from 'util';
import F from 'lodash/fp';
-import { DockerWrapper, fetchResults, start, stop } from '../micro';
+import { fetchResults } from '../micro';
import { version } from '../../package.json';
-
-const dumpLog = (log: Array) => console.log(util.inspect(log, true, null, true));
+import { pageSetup } from './helpers';
const retrieveSchemaData = (schema: unknown) => F.compose(F.get('data'), F.find({ schema }), F.get('data'));
@@ -74,31 +42,23 @@ describe('Snowplow Micro integration', () => {
let eventMethods = ['get', 'post', 'beacon'];
let log: Array = [];
- let docker: DockerWrapper;
+ let testIdentifier = '';
const logContains = (ev: unknown) => F.some(F.isMatch(ev as object), log);
const logContainsFn = (ev: unknown) => F.some(isMatchWithCallback(ev as object), log);
beforeAll(async () => {
- await browser.call(async () => (docker = await start()));
- await browser.url('/index.html');
- await browser.setCookies({ name: 'container', value: docker.url });
-
+ testIdentifier = await pageSetup();
await loadUrlAndWait('/integration.html?eventMethod=get');
- await $('#bottomRight').scrollIntoView();
- await browser.pause(10000); // Time for requests to get written
+ await $('#bottomRight').click();
+ await browser.pause(5000); // Time for requests to get written
await loadUrlAndWait('/integration.html?eventMethod=post');
- await $('#bottomRight').scrollIntoView();
+ await $('#bottomRight').click();
await browser.pause(6000); // Time for requests to get written
await loadUrlAndWait('/integration.html?eventMethod=beacon');
- await $('#bottomRight').scrollIntoView();
+ await $('#bottomRight').click();
await browser.pause(6000); // Time for requests to get written
-
- log = await browser.call(async () => await fetchResults(docker.url));
- });
-
- afterAll(async () => {
- await browser.call(async () => await stop(docker.container));
+ log = await browser.call(async () => await fetchResults());
});
eventMethods.forEach((method) => {
@@ -111,7 +71,7 @@ describe('Snowplow Micro integration', () => {
},
},
event: {
- app_id: `sp-${method}`,
+ app_id: `sp-${method}-${testIdentifier}`,
v_tracker: `js-${version}`,
},
})
@@ -124,7 +84,7 @@ describe('Snowplow Micro integration', () => {
event: {
event: 'page_view',
platform: 'mob',
- app_id: `sp-${method}`,
+ app_id: `sp-${method}-${testIdentifier}`,
user_id: 'Malcolm',
page_title: 'Integration test page',
},
@@ -137,7 +97,7 @@ describe('Snowplow Micro integration', () => {
event: {
event: 'page_view',
platform: 'mob',
- app_id: `sp-${method}`,
+ app_id: `sp-${method}-${testIdentifier}`,
user_id: 'Malcolm',
page_title: 'My Title',
contexts: {
@@ -154,11 +114,11 @@ describe('Snowplow Micro integration', () => {
expect(logContains(expected)).toBe(true);
});
- it(`${method}: contains nonnonexistent event types in log`, () => {
+ it(`${method}: contains nonexistent event types in log`, () => {
expect(
logContains({
event: 'ad',
- app_id: `sp-${method}`,
+ app_id: `sp-${method}-${testIdentifier}`,
})
).toBe(false);
});
@@ -170,7 +130,7 @@ describe('Snowplow Micro integration', () => {
logContainsFn({
event: {
event_name: 'page_ping',
- app_id: `sp-${method}`,
+ app_id: `sp-${method}-${testIdentifier}`,
pp_xoffset_max: gtZero,
pp_yoffset_max: gtZero,
},
@@ -182,7 +142,7 @@ describe('Snowplow Micro integration', () => {
expect(
logContains({
event: {
- app_id: `sp-${method}`,
+ app_id: `sp-${method}-${testIdentifier}`,
event: 'struct',
se_category: 'Mixes',
se_action: 'Play',
@@ -197,7 +157,7 @@ describe('Snowplow Micro integration', () => {
expect(
logContains({
event: {
- app_id: `sp-${method}`,
+ app_id: `sp-${method}-${testIdentifier}`,
event: 'unstruct',
unstruct_event: {
data: {
@@ -214,7 +174,7 @@ describe('Snowplow Micro integration', () => {
expect(
logContains({
event: {
- app_id: `sp-${method}`,
+ app_id: `sp-${method}-${testIdentifier}`,
event: 'transaction',
tr_orderid: 'order-123',
tr_affiliation: 'acme',
@@ -234,7 +194,7 @@ describe('Snowplow Micro integration', () => {
expect(
logContains({
event: {
- app_id: `sp-${method}`,
+ app_id: `sp-${method}-${testIdentifier}`,
event: 'transaction_item',
ti_orderid: 'order-123',
ti_sku: '1001',
@@ -252,7 +212,7 @@ describe('Snowplow Micro integration', () => {
expect(
logContains({
event: {
- app_id: `sp-${method}`,
+ app_id: `sp-${method}-${testIdentifier}`,
unstruct_event: {
data: {
schema: 'iglu:com.snowplowanalytics.snowplow/application_error/jsonschema/1-0-1',
@@ -273,7 +233,10 @@ describe('Snowplow Micro integration', () => {
it(`${method}: shows that pageViewId is regenerated for each trackPageView`, () => {
const pageViews = F.filter(
- (ev) => F.get('event.event', ev) === 'page_view' && F.get('event.name_tracker', ev) === 'sp',
+ (ev) =>
+ F.get('event.event', ev) === 'page_view' &&
+ F.get('event.name_tracker', ev) === 'sp' &&
+ F.get('event.app_id', ev) === `sp-${method}-${testIdentifier}`,
log
);
@@ -290,7 +253,7 @@ describe('Snowplow Micro integration', () => {
expect(
logContains({
event: {
- app_id: `sp-${method}`,
+ app_id: `sp-${method}-${testIdentifier}`,
contexts: {
data: [
{
@@ -317,7 +280,15 @@ describe('Snowplow Micro integration', () => {
const fromCfTracker = F.compose(F.eq('cf'), F.get('event.name_tracker'));
- const numberWithoutGdpr = F.size(F.filter((ev) => withoutGdprContext(ev) && fromCfTracker(ev), log));
+ const numberWithoutGdpr = F.size(
+ F.filter(
+ (ev) =>
+ withoutGdprContext(ev) &&
+ fromCfTracker(ev) &&
+ F.get('event.app_id', ev) === `sp-${method}-${testIdentifier}`,
+ log
+ )
+ );
expect(numberWithoutGdpr).toBe(0);
});
@@ -326,7 +297,7 @@ describe('Snowplow Micro integration', () => {
expect(
logContains({
event: {
- app_id: `sp-${method}`,
+ app_id: `sp-${method}-${testIdentifier}`,
event: 'struct',
contexts: {
data: [geoContext, mobileContext],
@@ -340,7 +311,7 @@ describe('Snowplow Micro integration', () => {
expect(
logContains({
event: {
- app_id: `sp-${method}`,
+ app_id: `sp-${method}-${testIdentifier}`,
event: 'unstruct',
unstruct_event: {
data: {
@@ -362,7 +333,7 @@ describe('Snowplow Micro integration', () => {
expect(
logContains({
event: {
- app_id: `sp-${method}`,
+ app_id: `sp-${method}-${testIdentifier}`,
event: 'unstruct',
unstruct_event: {
data: {
@@ -391,7 +362,7 @@ describe('Snowplow Micro integration', () => {
event: {
event: 'page_view',
platform: 'web',
- app_id: `no-b64-${method}`,
+ app_id: `no-b64-${method}-${testIdentifier}`,
page_title: 'My Title',
contexts: {
data: [
@@ -412,7 +383,7 @@ describe('Snowplow Micro integration', () => {
event: {
event: 'unstruct',
platform: 'mob',
- app_id: `sp-${method}`,
+ app_id: `sp-${method}-${testIdentifier}`,
user_id: 'Malcolm',
unstruct_event: {
data: {
@@ -431,7 +402,7 @@ describe('Snowplow Micro integration', () => {
event: {
event: 'unstruct',
platform: 'mob',
- app_id: `sp-${method}`,
+ app_id: `sp-${method}-${testIdentifier}`,
user_id: 'Malcolm',
unstruct_event: {
data: {
@@ -459,7 +430,7 @@ describe('Snowplow Micro integration', () => {
event: {
event: 'unstruct',
platform: 'mob',
- app_id: `sp-${method}`,
+ app_id: `sp-${method}-${testIdentifier}`,
user_id: 'Malcolm',
unstruct_event: {
data: {
@@ -488,7 +459,7 @@ describe('Snowplow Micro integration', () => {
event: {
event: 'unstruct',
platform: 'mob',
- app_id: `sp-${method}`,
+ app_id: `sp-${method}-${testIdentifier}`,
user_id: 'Malcolm',
unstruct_event: {
data: {
@@ -517,7 +488,7 @@ describe('Snowplow Micro integration', () => {
event: {
event: 'unstruct',
platform: 'mob',
- app_id: `sp-${method}`,
+ app_id: `sp-${method}-${testIdentifier}`,
user_id: 'Malcolm',
unstruct_event: {
data: {
@@ -543,7 +514,7 @@ describe('Snowplow Micro integration', () => {
event: {
event: 'unstruct',
platform: 'mob',
- app_id: `sp-${method}`,
+ app_id: `sp-${method}-${testIdentifier}`,
user_id: 'Malcolm',
unstruct_event: {
data: {
@@ -569,7 +540,7 @@ describe('Snowplow Micro integration', () => {
event: {
event: 'unstruct',
platform: 'mob',
- app_id: `sp-${method}`,
+ app_id: `sp-${method}-${testIdentifier}`,
user_id: 'Malcolm',
unstruct_event: {
data: {
@@ -593,7 +564,7 @@ describe('Snowplow Micro integration', () => {
event: {
event: 'unstruct',
platform: 'mob',
- app_id: `sp-${method}`,
+ app_id: `sp-${method}-${testIdentifier}`,
user_id: 'Malcolm',
unstruct_event: {
data: {
@@ -617,7 +588,7 @@ describe('Snowplow Micro integration', () => {
event: {
event: 'unstruct',
platform: 'mob',
- app_id: `sp-${method}`,
+ app_id: `sp-${method}-${testIdentifier}`,
user_id: 'Malcolm',
contexts: {
data: [
@@ -651,7 +622,7 @@ describe('Snowplow Micro integration', () => {
event: {
event: 'unstruct',
platform: 'mob',
- app_id: `sp-${method}`,
+ app_id: `sp-${method}-${testIdentifier}`,
user_id: 'Malcolm',
contexts: {
data: [
@@ -685,7 +656,7 @@ describe('Snowplow Micro integration', () => {
event: {
event: 'unstruct',
platform: 'mob',
- app_id: `sp-${method}`,
+ app_id: `sp-${method}-${testIdentifier}`,
user_id: 'Malcolm',
unstruct_event: {
data: {
@@ -709,7 +680,7 @@ describe('Snowplow Micro integration', () => {
event: {
event: 'unstruct',
platform: 'mob',
- app_id: `sp-${method}`,
+ app_id: `sp-${method}-${testIdentifier}`,
user_id: 'Malcolm',
contexts: {
data: [
@@ -776,7 +747,7 @@ describe('Snowplow Micro integration', () => {
expect(
logContains({
event: {
- app_id: `sp-${method}`,
+ app_id: `sp-${method}-${testIdentifier}`,
event: 'struct',
se_category: 'userIdTest1',
user_id: 'Dave',
@@ -789,7 +760,7 @@ describe('Snowplow Micro integration', () => {
expect(
logContains({
event: {
- app_id: `sp-${method}`,
+ app_id: `sp-${method}-${testIdentifier}`,
event: 'struct',
se_category: 'userIdTest2',
user_id: 'Dave',
@@ -802,7 +773,7 @@ describe('Snowplow Micro integration', () => {
const results = log.filter(
(event: any) =>
event.rawEvent.context.headers.includes('Content-Language: de-DE, en-CA') &&
- event.event.app_id === `sp-${method}`
+ event.event.app_id === `sp-${method}-${testIdentifier}`
) as Array;
if (method === 'beacon' || F.isMatch({ browserName: 'internet explorer', version: '9' }, browser.capabilities)) {
diff --git a/trackers/javascript-tracker/test/integration/media.test.ts b/trackers/javascript-tracker/test/integration/media.test.ts
index 5253356b8..ab85750e9 100644
--- a/trackers/javascript-tracker/test/integration/media.test.ts
+++ b/trackers/javascript-tracker/test/integration/media.test.ts
@@ -1,35 +1,6 @@
-/*
- * Copyright (c) 2022 Snowplow Analytics Ltd, 2010 Anthon Pang
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * 3. Neither the name of the copyright holder nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
import _ from 'lodash';
-import { DockerWrapper, start, stop, fetchResults, clearCache } from '../micro';
-import { waitUntil } from './helpers';
+import { fetchResults } from '../micro';
+import { pageSetup, waitUntil } from './helpers';
const playVideoElement1Callback = () => {
return (done: (_: void) => void) => {
@@ -41,6 +12,7 @@ const playVideoElement1Callback = () => {
} // IE does not return a promise
};
};
+
const playVideoElement2Callback = () => {
return (done: (_: void) => void) => {
const promise = (document.getElementById('html5-2') as HTMLVideoElement).play();
@@ -163,397 +135,404 @@ const compare = (expected: any, received: any) => {
expect(expected.unstruct_event).toEqual(received.event.unstruct_event);
};
-let docker: DockerWrapper;
-let log: Array = [];
-
-describe('Media Tracker', () => {
- const getFirstEventOfEventType = (eventType: string) => {
- for (let i = log.length - 1; i >= 0; i--) {
- if ((log[i] as any).event.unstruct_event.data.data.type === eventType) {
- return log[i];
+describe('Media Tracking', () => {
+ let log: Array = [];
+ let testIdentifier = '';
+
+ describe('Media Tracker - Default Events', () => {
+ const getFirstEventOfEventType = (eventType: string) => {
+ for (let i = log.length - 1; i >= 0; i--) {
+ const currentEvent = log[i] as any;
+ if (
+ currentEvent.event?.unstruct_event?.data.data.type === eventType &&
+ currentEvent.event?.app_id === 'media-default-events-' + testIdentifier
+ ) {
+ return log[i];
+ }
}
+ };
+
+ if (
+ browser.capabilities.browserName === 'internet explorer' &&
+ (browser.capabilities.version === '9' || browser.capabilities.browserVersion === '10')
+ ) {
+ fit('Skip IE 9 and 10', () => true);
+ return;
}
- };
- if (
- browser.capabilities.browserName === 'internet explorer' &&
- (browser.capabilities.version === '9' || browser.capabilities.browserVersion === '10')
- ) {
- fit('Skip IE 9 and 10', () => true);
- return;
- }
+ if (browser.capabilities.browserName === 'safari' && browser.capabilities.version === '8.0') {
+ fit('Skip Safari 8', () => true);
+ return;
+ }
- if (browser.capabilities.browserName === 'safari' && browser.capabilities.version === '8.0') {
- fit('Skip Safari 8', () => true);
- return;
- }
+ beforeAll(async () => {
+ testIdentifier = await pageSetup();
+ await browser.url('media/tracking.html');
+ await waitUntil(browser, () => $('#html5').isExisting(), {
+ timeout: 10000,
+ timeoutMsg: 'expected html5 after 5s',
+ });
- beforeAll(async () => {
- await browser.call(async () => (docker = await start()));
+ let actions = [
+ playVideoElement1Callback(),
+ (done: () => void) => {
+ (document.getElementById('html5') as HTMLVideoElement).pause();
+ done();
+ },
+ (done: () => void) => {
+ (document.getElementById('html5') as HTMLVideoElement).volume = 0.5;
+ done();
+ },
+ (done: () => void) => {
+ (document.getElementById('html5') as HTMLVideoElement).playbackRate = 0.9;
+ done();
+ },
+ (done: () => void) => {
+ (document.getElementById('html5') as HTMLVideoElement).currentTime = 18;
+ done();
+ },
+ playVideoElement1Callback(),
+ ];
- await browser.url('/index.html');
- await browser.setCookies({ name: 'container', value: docker.url });
- await browser.url('media/tracking.html');
+ for (const a of actions) {
+ await browser.executeAsync(a);
+ await browser.pause(500);
+ }
- await waitUntil(browser, () => $('#html5').isExisting(), {
- timeout: 10000,
- timeoutMsg: 'expected html5 after 5s',
+ // 'ended' should be the final event, if not, try again
+ await waitUntil(
+ browser,
+ async () => {
+ return await browser.call(async () => {
+ let log = await fetchResults();
+ return log.some(
+ (l: any) =>
+ l.event?.unstruct_event?.data.data.type === 'ended' &&
+ l.event?.app_id === 'media-default-events-' + testIdentifier
+ );
+ });
+ },
+ {
+ interval: 2000,
+ timeout: 60000,
+ timeoutMsg: 'All events not found before timeout',
+ }
+ );
+
+ log = await browser.call(async () => await fetchResults());
});
- let actions = [
- playVideoElement1Callback(),
- (done: () => void) => {
- (document.getElementById('html5') as HTMLVideoElement).pause();
- done();
- },
- (done: () => void) => {
- (document.getElementById('html5') as HTMLVideoElement).volume = 0.5;
- done();
- },
- (done: () => void) => {
- (document.getElementById('html5') as HTMLVideoElement).playbackRate = 0.9;
- done();
- },
- (done: () => void) => {
- (document.getElementById('html5') as HTMLVideoElement).currentTime = 18;
- done();
+ const expected = {
+ ready: {
+ mediaPlayer: { paused: true, duration: jasmine.any(Number) },
+ videoElement: { videoHeight: jasmine.any(Number), videoWidth: jasmine.any(Number) },
},
- playVideoElement1Callback(),
- ];
-
- for (const a of actions) {
- await browser.executeAsync(a);
- await browser.pause(500);
- }
-
- // 'ended' should be the final event, if not, try again
- await waitUntil(
- browser,
- async () => {
- return await browser.call(async () => {
- let log = await fetchResults(docker.url);
- return log.some((l: any) => l.event.unstruct_event.data.data.type === 'ended');
- });
+ play: {},
+ pause: { mediaPlayer: { paused: true } },
+ volumechange: { mediaPlayer: { paused: true, volume: 50 } },
+ ratechange: { mediaPlayer: { paused: true, volume: 50, playbackRate: 0.9 } },
+ seeked: { mediaPlayer: { paused: true, volume: 50, playbackRate: 0.9 } },
+ percentprogress: { mediaPlayer: { volume: 50, playbackRate: jasmine.any(Number) } },
+ ended: {
+ mediaPlayer: { volume: 50, playbackRate: jasmine.any(Number), paused: jasmine.any(Boolean), ended: true },
},
- {
- interval: 2000,
- timeout: 60000,
- timeoutMsg: 'All events not found before timeout',
- }
- );
+ };
- log = await browser.call(async () => await fetchResults(docker.url));
- });
-
- afterAll(async () => {
- await waitUntil(browser, async () => {
- return await browser.call(async () => await clearCache(docker.url));
- });
- });
-
- const expected = {
- ready: {
- mediaPlayer: { paused: true, duration: jasmine.any(Number) },
- videoElement: { videoHeight: jasmine.any(Number), videoWidth: jasmine.any(Number) },
- },
- play: {},
- pause: { mediaPlayer: { paused: true } },
- volumechange: { mediaPlayer: { paused: true, volume: 50 } },
- ratechange: { mediaPlayer: { paused: true, volume: 50, playbackRate: 0.9 } },
- seeked: { mediaPlayer: { paused: true, volume: 50, playbackRate: 0.9 } },
- percentprogress: { mediaPlayer: { volume: 50, playbackRate: jasmine.any(Number) } },
- ended: {
- mediaPlayer: { volume: 50, playbackRate: jasmine.any(Number), paused: jasmine.any(Boolean), ended: true },
- },
- };
-
- Object.entries(expected).forEach(([name, properties]) => {
- it('tracks ' + name, () => {
- const expected = makeExpectedEvent(name, properties);
- const received = getFirstEventOfEventType(name);
- compare(expected, received);
+ Object.entries(expected).forEach(([name, properties]) => {
+ it('tracks ' + name, () => {
+ const expected = makeExpectedEvent(name, properties);
+ const received = getFirstEventOfEventType(name);
+ compare(expected, received);
+ });
});
});
-});
-
-describe('Media Tracker (2 videos, 1 tracker)', () => {
- beforeAll(async () => {
- await browser.url('/media/tracking-2-players.html');
- await waitUntil(browser, () => $('#html5').isExisting(), {
- timeout: 10000,
- timeoutMsg: 'expected html5 after 5s',
- });
+ describe('Media Tracker (2 videos, 1 tracker)', () => {
+ beforeAll(async () => {
+ await browser.url('/media/tracking-2-players.html');
- let actions = [
- playVideoElement1Callback(),
- playVideoElement2Callback(),
- (done: () => void) => {
- (document.getElementById('html5') as HTMLVideoElement).pause();
- done();
- },
- (done: () => void) => {
- (document.getElementById('html5-2') as HTMLVideoElement).pause();
- done();
- },
- ];
+ await waitUntil(browser, () => $('#html5').isExisting(), {
+ timeout: 10000,
+ timeoutMsg: 'expected html5 after 5s',
+ });
- for (const a of actions) {
- await browser.executeAsync(a);
- await browser.pause(200);
- }
+ let actions = [
+ playVideoElement1Callback(),
+ playVideoElement2Callback(),
+ (done: () => void) => {
+ (document.getElementById('html5') as HTMLVideoElement).pause();
+ done();
+ },
+ (done: () => void) => {
+ (document.getElementById('html5-2') as HTMLVideoElement).pause();
+ done();
+ },
+ ];
- // wait until we have 2 'pause' events
- await waitUntil(
- browser,
- async () => {
- return await browser.call(async () => {
- let log = await fetchResults(docker.url);
- return log.filter((l: any) => l.event.unstruct_event.data.data.type === 'pause').length === 2;
- });
- },
- {
- interval: 2000,
- timeout: 60000,
- timeoutMsg: 'All events not found before timeout',
+ for (const a of actions) {
+ await browser.executeAsync(a);
+ await browser.pause(200);
}
- );
- log = await browser.call(async () => await fetchResults(docker.url));
- });
+ // wait until we have 2 'pause' events
+ await waitUntil(
+ browser,
+ async () => {
+ return await browser.call(async () => {
+ let log = await fetchResults();
+ return (
+ log.filter(
+ (l: any) =>
+ l.event?.unstruct_event?.data.data.type === 'pause' &&
+ l.event?.app_id === 'media-2-players-1-tracker-' + testIdentifier
+ ).length === 2
+ );
+ });
+ },
+ {
+ interval: 2000,
+ timeout: 20000,
+ timeoutMsg: 'All events not found before timeout',
+ }
+ );
+
+ log = await browser.call(async () => await fetchResults());
+ });
- afterAll(async () => {
- await waitUntil(browser, async () => {
- return await browser.call(async () => await clearCache(docker.url));
+ const getFirstEventOfEventTypeWithId = (eventType: string, id: string) => {
+ let results = log.filter(
+ (l: any) =>
+ l.event?.unstruct_event?.data.data.type === eventType &&
+ l.event.contexts.data[0].data.htmlId === id &&
+ l.event.app_id === 'media-2-players-1-tracker-' + testIdentifier
+ );
+ return results[results.length - 1];
+ };
+
+ it('tracks two players with a single tracker', () => {
+ const expectedOne = makeExpectedEvent('pause', { mediaPlayer: { paused: true } });
+ const receivedOne = getFirstEventOfEventTypeWithId('pause', 'html5');
+ compare(expectedOne, receivedOne);
+
+ const expectedTwo = makeExpectedEvent('pause', { mediaPlayer: { paused: true } }, 'html5-2');
+ const receivedTwo = getFirstEventOfEventTypeWithId('pause', 'html5-2');
+ compare(expectedTwo, receivedTwo);
});
});
- const getFirstEventOfEventTypeWithId = (eventType: string, id: string) => {
- let results = log.filter(
- (l: any) => l.event.unstruct_event.data.data.type === eventType && l.event.contexts.data[0].data.htmlId === id
- );
- return results[results.length - 1];
- };
-
- it('tracks two players with a single tracker', () => {
- const expectedOne = makeExpectedEvent('pause', { mediaPlayer: { paused: true } });
- const recievedOne = getFirstEventOfEventTypeWithId('pause', 'html5');
- compare(expectedOne, recievedOne);
-
- const expectedTwo = makeExpectedEvent('pause', { mediaPlayer: { paused: true } }, 'html5-2');
- const recievedTwo = getFirstEventOfEventTypeWithId('pause', 'html5-2');
- compare(expectedTwo, recievedTwo);
- });
-});
+ describe('Media Tracker (1 video, 2 trackers)', () => {
+ beforeAll(async () => {
+ await browser.url('media/tracking-2-trackers.html');
-describe('Media Tracker (1 video, 2 trackers)', () => {
- beforeAll(async () => {
- await browser.url('media/tracking-2-trackers.html');
+ await waitUntil(browser, () => $('#html5').isExisting(), {
+ timeout: 10000,
+ timeoutMsg: 'expected html5 after 5s',
+ });
- await waitUntil(browser, () => $('#html5').isExisting(), {
- timeout: 10000,
- timeoutMsg: 'expected html5 after 5s',
+ await browser.executeAsync(playVideoElement1Callback());
+ await browser.pause(200);
+ await browser.execute(() => (document.getElementById('html5') as HTMLVideoElement).pause());
+
+ // wait until we have 2 'pause' events
+ await waitUntil(
+ browser,
+ async () => {
+ return await browser.call(async () => {
+ let log = await fetchResults();
+ return (
+ log.filter(
+ (l: any) =>
+ l.event?.unstruct_event?.data.data.type === 'pause' &&
+ l.event.app_id === 'media-1-player-2-trackers-' + testIdentifier
+ ).length === 2
+ );
+ });
+ },
+ {
+ interval: 2000,
+ timeout: 60000,
+ timeoutMsg: 'All events not found before timeout',
+ }
+ );
+
+ log = await browser.call(async () => await fetchResults());
});
- await browser.executeAsync(playVideoElement1Callback());
- await browser.pause(200);
- await browser.execute(() => (document.getElementById('html5') as HTMLVideoElement).pause());
-
- // wait until we have 2 'pause' events
- await waitUntil(
- browser,
- async () => {
- return await browser.call(async () => {
- let log = await fetchResults(docker.url);
- return log.filter((l: any) => l.event.unstruct_event.data.data.type === 'pause').length === 2;
- });
- },
- {
- interval: 2000,
- timeout: 60000,
- timeoutMsg: 'All events not found before timeout',
- }
- );
-
- log = await browser.call(async () => await fetchResults(docker.url));
- });
-
- afterAll(async () => {
- await waitUntil(browser, async () => {
- return await browser.call(async () => await clearCache(docker.url));
+ const getEventsOfEventType = (eventType: string, limit: number = 1): Array => {
+ const results = log.filter(
+ (l: any) =>
+ l.event?.unstruct_event?.data.data.type === eventType &&
+ l.event.app_id === 'media-1-player-2-trackers-' + testIdentifier
+ );
+ return results.slice(results.length - limit);
+ };
+
+ it('tracks one player with two trackers', () => {
+ const expected = makeExpectedEvent('pause', { mediaPlayer: { paused: true } });
+ const result = getEventsOfEventType('pause', 2);
+
+ compare(expected, result[0]);
+ compare(expected, result[1]);
+ const tracker_names = result.map((r: any) => r.event.name_tracker);
+ expect(tracker_names).toContain('sp1');
+ expect(tracker_names).toContain('sp2');
});
});
- const getEventsOfEventType = (eventType: string, limit: number = 1): Array => {
- const results = log.filter((l: any) => l.event.unstruct_event.data.data.type === eventType);
- return results.slice(results.length - limit);
- };
-
- it('tracks one player with two trackers', () => {
- const expected = makeExpectedEvent('pause', { mediaPlayer: { paused: true } });
- const result = getEventsOfEventType('pause', 2);
-
- compare(expected, result[0]);
- compare(expected, result[1]);
- const tracker_names = result.map((r: any) => r.event.name_tracker);
- expect(tracker_names).toContain('sp1');
- expect(tracker_names).toContain('sp2');
- });
-});
-
-describe('Media Tracker - All Events', () => {
- beforeAll(async () => {
- await browser.url('media/tracking-all-events.html');
-
- await waitUntil(browser, () => $('#html5').isExisting(), {
- timeout: 10000,
- timeoutMsg: 'expected html5 after 5s',
- });
+ describe('Media Tracker - All Events', () => {
+ beforeAll(async () => {
+ await browser.url('media/tracking-all-events.html');
- const video_url = await browser.execute(() => {
- return (document.getElementById('html5') as HTMLVideoElement).src;
- });
+ await waitUntil(browser, () => $('#html5').isExisting(), {
+ timeout: 10000,
+ timeoutMsg: 'expected html5 after 5s',
+ });
- let actions = [
- playVideoElement1Callback(),
- (done: () => void) => {
- (document.getElementById('html5') as HTMLVideoElement).pause();
- done();
- },
- (done: () => void) => {
- (document.getElementById('html5') as HTMLVideoElement).currentTime = 18;
- done();
- },
- playVideoElement1Callback(),
- (done: () => void) => {
- (document.getElementById('html5') as HTMLVideoElement).textTracks[0].mode = 'disabled';
- done();
- },
- (done: () => void) => {
- (document.getElementById('html5') as HTMLVideoElement).src = 'not-a-video.unsupported_format';
- done();
- },
- ];
+ const video_url = await browser.execute(() => {
+ return (document.getElementById('html5') as HTMLVideoElement).src;
+ });
- for (const a of actions) {
- await browser.executeAsync(a);
- await browser.pause(1000);
- }
+ let actions = [
+ playVideoElement1Callback(),
+ (done: () => void) => {
+ (document.getElementById('html5') as HTMLVideoElement).pause();
+ done();
+ },
+ (done: () => void) => {
+ (document.getElementById('html5') as HTMLVideoElement).currentTime = 18;
+ done();
+ },
+ playVideoElement1Callback(),
+ (done: () => void) => {
+ (document.getElementById('html5') as HTMLVideoElement).textTracks[0].mode = 'disabled';
+ done();
+ },
+ (done: () => void) => {
+ (document.getElementById('html5') as HTMLVideoElement).src = 'not-a-video.unsupported_format';
+ done();
+ },
+ ];
- await browser.execute((video_url) => {
- (document.getElementById('html5') as HTMLVideoElement).src = video_url;
- }, video_url);
-
- await waitUntil(
- browser,
- async () => {
- return await browser.call(async () => {
- let log = await fetchResults(docker.url);
- // Events can occur in any order, so we can't just check for the last event
- // 40 - 45 events are expected, due to the timing of 'timeupdate' events
- return log.length > 40;
- });
- },
- {
- interval: 2000,
- timeout: 60000,
- timeoutMsg: 'All events not found before timeout',
+ for (const a of actions) {
+ await browser.executeAsync(a);
+ await browser.pause(1000);
}
- );
-
- log = await browser.call(async () => await fetchResults(docker.url));
- });
-
- afterAll(async () => {
- await browser.call(async () => await stop(docker.container));
- });
- const getFirstEventOfEventType = (eventType: string) => {
- let results = log.filter((l: any) => l.event.unstruct_event.data.data.type === eventType);
- return results[results.length - 1];
- };
+ await browser.execute((video_url) => {
+ (document.getElementById('html5') as HTMLVideoElement).src = video_url;
+ }, video_url);
+
+ await waitUntil(
+ browser,
+ async () => {
+ return await browser.call(async () => {
+ let log = await fetchResults();
+ // Events can occur in any order, so we can't just check for the last event
+ // 40 - 45 events are expected, due to the timing of 'timeupdate' events
+ return log.length > 40;
+ });
+ },
+ {
+ interval: 2000,
+ timeout: 60000,
+ timeoutMsg: 'All events not found before timeout',
+ }
+ );
+
+ log = await browser.call(async () => await fetchResults());
+ });
- const expected = {
- canplay: {
- mediaPlayer: {
- paused: true,
- },
- },
- canplaythrough: {
- mediaPlayer: {
- paused: true,
- },
- },
- timeupdate: {},
- playing: {},
- seeking: {
- mediaElement: {
- seeking: true,
- },
- mediaPlayer: {
- paused: true,
- },
- },
- error: {
- mediaElement: {
- networkState: 'NETWORK_NO_SOURCE',
- readyState: 'HAVE_NOTHING',
- currentSrc: 'http://snowplow-js-tracker.local:8080/media/not-a-video.unsupported_format',
- src: 'http://snowplow-js-tracker.local:8080/media/not-a-video.unsupported_format',
- error: jasmine.any(Object),
- },
- mediaPlayer: {
- duration: 0,
- paused: true,
+ const getFirstEventOfEventType = (eventType: string) => {
+ let results = log.filter(
+ (l: any) =>
+ l.event?.unstruct_event?.data.data.type === eventType &&
+ l.event.app_id === 'media-all-events-' + testIdentifier
+ );
+ return results[results.length - 1];
+ };
+
+ const expected = {
+ canplay: {
+ mediaPlayer: {
+ paused: true,
+ },
},
- videoElement: {
- videoHeight: 0,
- videoWidth: 0,
+ canplaythrough: {
+ mediaPlayer: {
+ paused: true,
+ },
},
- },
- loadstart: {
- mediaElement: {
- error: [jasmine.any(Object), null],
+ timeupdate: {},
+ playing: {},
+ seeking: {
+ mediaElement: {
+ seeking: true,
+ },
+ mediaPlayer: {
+ paused: true,
+ },
},
- mediaPlayer: {
- currentTime: 0,
- paused: true,
- duration: 0,
+ error: {
+ mediaElement: {
+ networkState: 'NETWORK_NO_SOURCE',
+ readyState: 'HAVE_NOTHING',
+ currentSrc: 'http://snowplow-js-tracker.local:8080/media/not-a-video.unsupported_format',
+ src: 'http://snowplow-js-tracker.local:8080/media/not-a-video.unsupported_format',
+ error: jasmine.any(Object),
+ },
+ mediaPlayer: {
+ duration: 0,
+ paused: true,
+ },
+ videoElement: {
+ videoHeight: 0,
+ videoWidth: 0,
+ },
},
- videoElement: {
- videoHeight: 0,
- videoWidth: 0,
+ loadstart: {
+ mediaElement: {
+ error: [jasmine.any(Object), null],
+ },
+ mediaPlayer: {
+ currentTime: 0,
+ paused: true,
+ duration: 0,
+ },
+ videoElement: {
+ videoHeight: 0,
+ videoWidth: 0,
+ },
},
- },
- loadedmetadata: {
- mediaPlayer: {
- paused: true,
+ loadedmetadata: {
+ mediaPlayer: {
+ paused: true,
+ },
},
- },
- durationchange: {
- mediaPlayer: {
- paused: true,
+ durationchange: {
+ mediaPlayer: {
+ paused: true,
+ },
},
- },
- };
+ };
- Object.entries(expected).forEach(([name, properties]) => {
- // I can't find a good way of triggering an error event for firefox 53 or chrome 60, so they can
- // be skipped for now (events past 'error' are fired as a result of the error occouring)
- if (
- (name === 'error' &&
- browser.capabilities.browserName === 'firefox' &&
- browser.capabilities.browserVersion === '53.0') ||
- (browser.capabilities.browserName === 'chrome' && browser.capabilities.version === '60.0.3112.78')
- ) {
- fit('Skip events from error', () => true);
- return;
- } else {
- it('tracks ' + name, () => {
- const expected = makeExpectedEvent(name, properties);
- const received = getFirstEventOfEventType(name);
- compare(expected, received);
- });
- }
+ Object.entries(expected).forEach(([name, properties]) => {
+ // I can't find a good way of triggering an error event for firefox 53 or chrome 60, so they can
+ // be skipped for now (events past 'error' are fired as a result of the error occouring)
+ if (
+ (name === 'error' &&
+ browser.capabilities.browserName === 'firefox' &&
+ browser.capabilities.browserVersion === '53.0') ||
+ (browser.capabilities.browserName === 'chrome' && browser.capabilities.version === '60.0.3112.78')
+ ) {
+ fit('Skip events from error', () => true);
+ return;
+ } else {
+ it('tracks ' + name, () => {
+ const expected = makeExpectedEvent(name, properties);
+ const received = getFirstEventOfEventType(name);
+ compare(expected, received);
+ });
+ }
+ });
});
});
diff --git a/trackers/javascript-tracker/test/integration/onSessionUpdate.test.ts b/trackers/javascript-tracker/test/integration/onSessionUpdate.test.ts
index a274e449a..9e77fd8e4 100644
--- a/trackers/javascript-tracker/test/integration/onSessionUpdate.test.ts
+++ b/trackers/javascript-tracker/test/integration/onSessionUpdate.test.ts
@@ -1,6 +1,6 @@
import F from 'lodash/fp';
-import { DockerWrapper, clearCache, fetchResults, start, stop } from '../micro';
-import { waitUntil } from './helpers';
+import { fetchResults } from '../micro';
+import { pageSetup } from './helpers';
describe('onSessionUpdate callback feature', () => {
if (
@@ -17,7 +17,7 @@ describe('onSessionUpdate callback feature', () => {
}
let log: Array = [];
- let docker: DockerWrapper;
+ let testIdentifier = '';
const logContains = (ev: unknown) => F.some(F.isMatch(ev as object), log);
@@ -31,33 +31,24 @@ describe('onSessionUpdate callback feature', () => {
};
beforeAll(async () => {
- await browser.call(async () => (docker = await start()));
- await waitUntil(browser, async () => {
- return await browser.call(async () => await clearCache(docker.url));
- });
- await browser.url('/index.html');
- await browser.setCookies({ name: 'container', value: docker.url });
+ testIdentifier = await pageSetup();
await loadUrlAndWait('/session-update-callback.html');
await browser.pause(2000);
- log = await browser.call(async () => await fetchResults(docker.url));
- await browser.pause(2000);
- });
-
- afterAll(async () => {
- await browser.call(async () => await stop(docker?.container));
+ log = await browser.call(async () => await fetchResults());
});
it(`properly runs the onSessionCallback`, async () => {
expect(
logContains({
event: {
- app_id: `onSessionCallback`,
+ app_id: 'onSessionCallback' + testIdentifier,
event: 'struct',
se_category: 'session_callback',
se_action: 'called',
},
})
).toBe(true);
- expect(log.length).toEqual(2);
+ const results = log.filter((event: any) => event.event.app_id === 'onSessionCallback' + testIdentifier);
+ expect(results.length).toEqual(2);
});
});
diff --git a/trackers/javascript-tracker/test/integration/sessionStorage.test.ts b/trackers/javascript-tracker/test/integration/sessionStorage.test.ts
index e647d65e0..04d3046aa 100644
--- a/trackers/javascript-tracker/test/integration/sessionStorage.test.ts
+++ b/trackers/javascript-tracker/test/integration/sessionStorage.test.ts
@@ -1,56 +1,18 @@
-/*
- * Copyright (c) 2022 Snowplow Analytics Ltd, 2010 Anthon Pang
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * 3. Neither the name of the copyright holder nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-import util from 'util';
import F from 'lodash/fp';
-import { DockerWrapper, fetchResults, start, stop } from '../micro';
-
-const dumpLog = (log: Array) => console.log(util.inspect(log, true, null, true));
+import { fetchResults } from '../micro';
+import { pageSetup } from './helpers';
describe('Sessions', () => {
let log: Array = [];
- let docker: DockerWrapper;
+ let testIdentifier = '';
const logContains = (ev: unknown) => F.some(F.isMatch(ev as object), log);
beforeAll(async () => {
- await browser.call(async () => (docker = await start()));
- await browser.url('/index.html');
- await browser.setCookies({ name: 'container', value: docker.url });
+ testIdentifier = await pageSetup();
await browser.url('/session-integration.html');
await browser.pause(6000); // Time for requests to get written
- log = await browser.call(async () => await fetchResults(docker.url));
- });
-
- afterAll(async () => {
- browser.call(async () => await stop(docker.container));
+ log = await browser.call(async () => await fetchResults());
});
it('should count sessions using cookies', () => {
@@ -60,6 +22,7 @@ describe('Sessions', () => {
event: 'page_view',
name_tracker: 'cookieSessionTracker',
domain_sessionidx: 2,
+ app_id: 'session-integration-' + testIdentifier,
},
})
).toBe(true);
@@ -72,6 +35,7 @@ describe('Sessions', () => {
event: 'page_view',
name_tracker: 'localStorageSessionTracker',
domain_sessionidx: 2,
+ app_id: 'session-integration-' + testIdentifier,
},
})
).toBe(true);
@@ -84,6 +48,7 @@ describe('Sessions', () => {
event: 'page_view',
name_tracker: 'anonymousSessionTracker',
domain_sessionidx: 2,
+ app_id: 'session-integration-' + testIdentifier,
},
})
).toBe(true);
@@ -92,13 +57,19 @@ describe('Sessions', () => {
it('should only add session context when enabled', () => {
const events = (ev: any) =>
F.get('event.name_tracker', ev) !== 'cookieSessionTracker' &&
- F.get('contexts[0]', ev) === 'iglu:com.snowplowanalytics.snowplow/client_session/jsonschema/1-0-2';
+ F.get('contexts[0]', ev) === 'iglu:com.snowplowanalytics.snowplow/client_session/jsonschema/1-0-2' &&
+ F.get('event.app_id', ev) === 'session-integration-' + testIdentifier;
expect(F.size(F.filter(events, log))).toBe(0);
});
it('should have the same information in session context as in event properties', () => {
- const events = F.filter((ev: any) => F.get('event.name_tracker', ev) === 'cookieSessionTracker', log);
+ const events = F.filter(
+ (ev: any) =>
+ F.get('event.name_tracker', ev) === 'cookieSessionTracker' &&
+ F.get('event.app_id', ev) === 'session-integration-' + testIdentifier,
+ log
+ );
expect(F.size(events)).toBe(3);
expect(
@@ -125,7 +96,12 @@ describe('Sessions', () => {
});
it('should increment event index in session context', () => {
- const events: any[] = F.filter((ev: any) => F.get('event.name_tracker', ev) === 'cookieSessionTracker', log);
+ const events: any[] = F.filter(
+ (ev: any) =>
+ F.get('event.name_tracker', ev) === 'cookieSessionTracker' &&
+ F.get('event.app_id', ev) === 'session-integration-' + testIdentifier,
+ log
+ );
events.sort((a, b) => a.event.dvce_created_tstamp.localeCompare(b.event.dvce_created_tstamp));
const getEventIndex = (e: any) => e.event.contexts.data[0].data.eventIndex;
@@ -135,7 +111,12 @@ describe('Sessions', () => {
});
it('should match first event references to first event in session', () => {
- const events: any[] = F.filter((ev: any) => F.get('event.name_tracker', ev) === 'cookieSessionTracker', log);
+ const events: any[] = F.filter(
+ (ev: any) =>
+ F.get('event.name_tracker', ev) === 'cookieSessionTracker' &&
+ F.get('event.app_id', ev) === 'session-integration-' + testIdentifier,
+ log
+ );
events.sort((a, b) => a.event.dvce_created_tstamp.localeCompare(b.event.dvce_created_tstamp));
const getFirstEventId = (e: any) => e.event.contexts.data[0].data.firstEventId;
const getFirstEventTimestamp = (e: any) => e.event.contexts.data[0].data.firstEventTimestamp;
@@ -150,7 +131,12 @@ describe('Sessions', () => {
});
it('should match previous session ID in session context', () => {
- const events: any[] = F.filter((ev: any) => F.get('event.name_tracker', ev) === 'cookieSessionTracker', log);
+ const events: any[] = F.filter(
+ (ev: any) =>
+ F.get('event.name_tracker', ev) === 'cookieSessionTracker' &&
+ F.get('event.app_id', ev) === 'session-integration-' + testIdentifier,
+ log
+ );
events.sort((a, b) => a.event.dvce_created_tstamp.localeCompare(b.event.dvce_created_tstamp));
const getSessionId = (e: any) => e.event.domain_sessionid;
const getPreviousSessionId = (e: any) => e.event.contexts.data[0].data.previousSessionId;
@@ -162,25 +148,58 @@ describe('Sessions', () => {
it('should only increment domain_sessionidx outside of session timeout (local storage)', () => {
const withSingleVid = (ev: unknown) =>
- F.get('event.name_tracker', ev) === 'localStorageSessionTracker' && F.get('event.domain_sessionidx', ev) === 1;
+ F.get('event.name_tracker', ev) === 'localStorageSessionTracker' &&
+ F.get('event.domain_sessionidx', ev) === 1 &&
+ F.get('event.app_id', ev) === 'session-integration-' + testIdentifier;
expect(F.size(F.filter(withSingleVid, log))).toBe(2);
- expect(F.size(F.filter((e) => F.get('event.name_tracker', e) === 'localStorageSessionTracker', log))).toBe(3);
+ expect(
+ F.size(
+ F.filter(
+ (e) =>
+ F.get('event.name_tracker', e) === 'localStorageSessionTracker' &&
+ F.get('event.app_id', e) === 'session-integration-' + testIdentifier,
+ log
+ )
+ )
+ ).toBe(3);
});
it('should only increment domain_sessionidx outside of session timeout (anonymous session tracking)', () => {
const withSingleVid = (ev: unknown) =>
- F.get('event.name_tracker', ev) === 'anonymousSessionTracker' && F.get('event.domain_sessionidx', ev) === 1;
+ F.get('event.name_tracker', ev) === 'anonymousSessionTracker' &&
+ F.get('event.domain_sessionidx', ev) === 1 &&
+ F.get('event.app_id', ev) === 'session-integration-' + testIdentifier;
expect(F.size(F.filter(withSingleVid, log))).toBe(2);
- expect(F.size(F.filter((e) => F.get('event.name_tracker', e) === 'anonymousSessionTracker', log))).toBe(3);
+ expect(
+ F.size(
+ F.filter(
+ (e) =>
+ F.get('event.name_tracker', e) === 'anonymousSessionTracker' &&
+ F.get('event.app_id', e) === 'session-integration-' + testIdentifier,
+ log
+ )
+ )
+ ).toBe(3);
});
it('should only increment domain_sessionidx outside of session timeout (cookie storage)', () => {
const withSingleVid = (ev: unknown) =>
- F.get('event.name_tracker', ev) === 'cookieSessionTracker' && F.get('event.domain_sessionidx', ev) === 1;
+ F.get('event.name_tracker', ev) === 'cookieSessionTracker' &&
+ F.get('event.domain_sessionidx', ev) === 1 &&
+ F.get('event.app_id', ev) === 'session-integration-' + testIdentifier;
expect(F.size(F.filter(withSingleVid, log))).toBe(2);
- expect(F.size(F.filter((e) => F.get('event.name_tracker', e) === 'cookieSessionTracker', log))).toBe(3);
+ expect(
+ F.size(
+ F.filter(
+ (e) =>
+ F.get('event.name_tracker', e) === 'cookieSessionTracker' &&
+ F.get('event.app_id', e) === 'session-integration-' + testIdentifier,
+ log
+ )
+ )
+ ).toBe(3);
});
});
diff --git a/trackers/javascript-tracker/test/integration/youtube.test.ts b/trackers/javascript-tracker/test/integration/youtube.test.ts
index bd60d967d..3ecd68f98 100644
--- a/trackers/javascript-tracker/test/integration/youtube.test.ts
+++ b/trackers/javascript-tracker/test/integration/youtube.test.ts
@@ -1,35 +1,7 @@
-/*
- * Copyright (c) 2022 Snowplow Analytics Ltd, 2010 Anthon Pang
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * 3. Neither the name of the copyright holder nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-import { DockerWrapper, start, stop, fetchResults, clearCache } from '../micro';
-import { waitUntil } from './helpers';
+import { fetchResults } from '../micro';
+import { pageSetup, waitUntil } from './helpers';
+
+declare var player: YT.Player;
const makeExpectedEvent = (
eventType: string,
@@ -49,7 +21,7 @@ const makeExpectedEvent = (
controls: true,
loaded: jasmine.any(Number),
unstarted: jasmine.any(Boolean),
- url: jasmine.stringMatching(/https\:\/\/www\.youtube\.com\/watch\?(t=\d+&)?v=zSM4ZyVe8xs/),
+ url: jasmine.stringMatching(/https\:\/\/www\.youtube\.com\/watch\?(t=\d+&)?v=ublEqhffop0/),
...values?.youtube,
},
},
@@ -92,7 +64,6 @@ const compare = (expected: any, received: any) => {
expect(expected.unstruct_event).toEqual(received.event.unstruct_event);
};
-let docker: DockerWrapper;
let log: Array = [];
function shouldSkipBrowser(browser: any): boolean {
@@ -107,243 +78,213 @@ function shouldSkipBrowser(browser: any): boolean {
);
}
-// This is simply to check that the plugin can accept an instance of `YT.Player` and emit events
-// If that passes, everything else will work the same as passing in an ID
-describe('YouTube Tracker with Existing Player', () => {
- beforeAll(async () => {
- await browser.call(async () => (docker = await start()));
-
- await browser.url('/index.html');
- await browser.setCookies({ name: 'container', value: docker.url });
- await browser.url('/youtube/tracking-player.html');
- await waitUntil(browser, () => $('#youtube').isExisting(), {
- timeout: 5000,
- timeoutMsg: 'expected youtube after 5s',
- });
-
- const player = await $('#youtube');
+describe('Youtube tracking', () => {
+ let testIdentifier = '';
- await player.click();
- await browser.pause(5000);
-
- await player.click();
- await browser.pause(5000);
-
- await browser.waitUntil(
- async () => {
- log = await browser.call(async () => await fetchResults(docker.url));
- return log.length > 0;
- },
- {
- timeout: 20000,
- timeoutMsg: 'expected events after 20s',
- }
- );
+ beforeAll(async () => {
+ testIdentifier = await pageSetup();
});
+ // If that passes, everything else will work the same as passing in an ID
+ describe('YouTube Tracker with Existing Player', () => {
+ it('should track any event', async () => {
+ await browser.url('/youtube/tracking-player.html');
+ await waitUntil(browser, () => $('#youtube').isExisting(), {
+ timeout: 5000,
+ timeoutMsg: 'expected youtube after 5s',
+ });
- afterAll(async () => {
- await browser.call(async () => await clearCache(docker.url));
- });
+ const player = await $('#youtube');
- it('should track any event', async () => {
- // Any non-zero amount of events received means the
- // plugin is successfully sending events from the player
- expect(log.length).toBeGreaterThan(0);
- });
-});
+ await player.click();
+ await browser.pause(1000);
-describe('YouTube Tracker', () => {
- const getFirstEventOfEventType = (eventType: string): any => {
- let results = log.filter((l: any) => l.event.unstruct_event.data.data.type === eventType);
- return results[results.length - 1];
- };
+ await player.click();
+ await browser.pause(5000);
- if (shouldSkipBrowser(browser)) {
- fit('Skip browser', () => true);
- return;
- }
+ const log = await browser.call(async () => await fetchResults());
+ const testResults = log.filter((l: any) => l.event?.app_id === 'yt-player-' + testIdentifier);
- beforeAll(async () => {
- await browser.call(async () => (docker = await start()));
-
- await browser.url('/index.html');
- await browser.setCookies({ name: 'container', value: docker.url });
- await browser.url('/youtube/tracking.html');
- await waitUntil(browser, () => $('#youtube').isExisting(), {
- timeout: 5000,
- timeoutMsg: 'expected youtube after 5s',
+ // Any non-zero amount of events received means the
+ // plugin is successfully sending events from the player
+ expect(testResults.length).toBeGreaterThan(0);
});
+ });
- const player = $('#youtube');
- await player.click(); // emits 'playbackqualitychange' and 'play';
- await browser.keys(Array(2).fill('ArrowRight')); // Skips to the point just before 'percentprogress' fires
- await browser.pause(15000); // Wait to track percentprogress events
-
- const events = [
- async () => await browser.keys(['Shift', '.', 'Shift']), // Increase playback rate
- async () => await browser.keys(['ArrowRight']), // Seek
- async () => await browser.keys(['ArrowDown']), // Volume down
- async () => await browser.keys(['k']), // Pause
- async () => await browser.keys(['9']), // Skip as close as we can to the end
- ];
-
- for (const e of events) {
- await e();
- await browser.pause(200);
+ describe('YouTube Tracker', () => {
+ if (shouldSkipBrowser(browser)) {
+ fit('Skip browser', () => true);
+ return;
}
- // We've got ~216 seconds left to skip
- for (let i = 0; i < 60; i++) {
- // Ended
- await browser.keys(['ArrowRight']);
- await browser.pause(50);
- }
- await browser.pause(1000);
+ const getFirstEventOfEventType = (eventType: string): any => {
+ let results = log.filter(
+ (l: any) =>
+ l.event?.unstruct_event?.data.data.type === eventType && l.event?.app_id === 'yt-tracking-' + testIdentifier
+ );
+ return results[results.length - 1];
+ };
- log = await browser.call(async () => await fetchResults(docker.url));
+ beforeAll(async () => {
+ await browser.url('/youtube/tracking.html');
+ await waitUntil(browser, () => $('#player').isExisting(), {
+ timeout: 5000,
+ timeoutMsg: 'expected youtube after 5s',
+ });
- // YouTube saves the volume level in localstorage, meaning loading a new page will have the same
- // volume level as the end of this test, so we need to increase it again to return to the 'default' state
- await browser.keys(['ArrowUp']);
- });
+ await browser.pause(1000);
- const expected = {
- ready: { youtube: { cued: true } },
- percentprogress: {},
- playbackqualitychange: {},
- play: {},
- playbackratechange: {},
- seek: { mediaPlayer: { paused: jasmine.any(Boolean) } },
- volumechange: { mediaPlayer: { paused: jasmine.any(Boolean) } },
- pause: { mediaPlayer: { paused: true } },
- ended: { mediaPlayer: { ended: true } },
- };
+ await $('#player').click();
+ await browser.pause(1000);
- Object.entries(expected).forEach(([name, properties]) => {
- if (browser.capabilities.browserName === 'internet explorer' && name === 'playbackratechange') {
- return;
- // The hotkey for playback rate change doesn't work in IE
- // Trying to create a key sequence to change the option in the UI has proved to be
- // very unreliable, so this test is skipped
- }
- if (browser.capabilities.browserName === 'safari' && name == 'percentprogress') {
- return;
- // percentprogress events seem not be tracked reliably in Safari, should investigate why
- }
- it('tracks ' + name, () => {
- const expected = makeExpectedEvent(name, properties);
- const received = getFirstEventOfEventType(name);
- compare(expected, received);
- });
- });
+ /* `player` is set at /youtube/tracking.html and is a YT JS API object https://developers.google.com/youtube/iframe_api_reference */
- afterAll(async () => {
- await waitUntil(browser, async () => {
- return await browser.call(async () => await clearCache(docker.url));
- });
- });
-});
+ await browser.setTimeout({ script: 30000 });
+ await browser.executeAsync((done) => {
+ var initialTimeMS = 0;
-describe('YouTube Tracker (2 videos, 1 tracker)', () => {
- if (shouldSkipBrowser(browser)) {
- fit('Skip browser', () => true);
- return;
- }
+ setTimeout(() => {
+ var duration = player.getDuration();
+ player.seekTo(duration / 5, true);
+ }, (initialTimeMS += 500));
- const getFirstEventOfEventTypeWithId = (eventType: string, id: string) => {
- const results = log.filter(
- (l: any) => l.event.unstruct_event.data.data.type === eventType && l.event.contexts.data[0].data.playerId === id
- );
- return results[results.length - 1];
- };
+ setTimeout(() => {
+ player.setPlaybackRate(1.25);
+ }, (initialTimeMS += 500));
- beforeAll(async () => {
- await browser.url('/index.html');
- await browser.setCookies({ name: 'container', value: docker.url });
- await browser.url('/youtube/tracking-2-videos.html');
- await waitUntil(browser, () => $('#youtube').isExisting(), {
- timeout: 5000,
- timeoutMsg: 'expected youtube after 5s',
- });
+ setTimeout(() => {
+ player.setVolume(player.getVolume() - 10);
+ }, (initialTimeMS += 4000));
- const player1 = $('#youtube');
- const player2 = $('#youtube-2');
+ setTimeout(() => {
+ player.setVolume(player.getVolume() - 10);
+ }, (initialTimeMS += 1000));
- const actions = [
- async () => await player1.click(), // emits 'playbackqualitychange' and 'play';
- async () => await browser.keys(['k']), // Pause
- async () => await player2.click(), // emits 'playbackqualitychange' and 'play';
- async () => await browser.keys(['k']), // Pause
- ];
+ setTimeout(() => {
+ player.pauseVideo();
+ }, (initialTimeMS += 1000));
- for (const a of actions) {
- await a();
- await browser.pause(500);
- }
- await browser.pause(1000);
+ setTimeout(() => {
+ var duration = player.getDuration();
+ player.seekTo(duration - 1, true);
+ player.playVideo();
+ }, (initialTimeMS += 1000));
- log = await browser.call(async () => await fetchResults(docker.url));
- });
+ setTimeout(done, (initialTimeMS += 3000));
+ });
- afterAll(async () => {
- await waitUntil(browser, async () => {
- return await browser.call(async () => await clearCache(docker.url));
+ log = await browser.call(async () => await fetchResults());
});
- });
- it('Tracks 2 YouTube players with a single tracker', () => {
- const expectedOne = makeExpectedEvent('playbackqualitychange');
- const recievedOne = getFirstEventOfEventTypeWithId('playbackqualitychange', 'youtube');
- compare(expectedOne, recievedOne);
-
- const expectedTwo = makeExpectedEvent('playbackqualitychange', {}, 'youtube-2');
- const recievedTwo = getFirstEventOfEventTypeWithId('playbackqualitychange', 'youtube-2');
- compare(expectedTwo, recievedTwo);
+ const expected = {
+ ready: { youtube: { cued: true } },
+ percentprogress: {},
+ playbackqualitychange: {},
+ play: {},
+ playbackratechange: {},
+ seek: { mediaPlayer: { paused: jasmine.any(Boolean) } },
+ volumechange: { mediaPlayer: { paused: jasmine.any(Boolean) } },
+ pause: { mediaPlayer: { paused: true } },
+ ended: { mediaPlayer: { ended: true } },
+ };
+
+ Object.entries(expected).forEach(([name, properties]) => {
+ if (browser.capabilities.browserName === 'internet explorer' && name === 'playbackratechange') {
+ return;
+ // The hotkey for playback rate change doesn't work in IE
+ // Trying to create a key sequence to change the option in the UI has proved to be
+ // very unreliable, so this test is skipped
+ }
+ if (browser.capabilities.browserName === 'safari' && name == 'percentprogress') {
+ return;
+ // percentprogress events seem not be tracked reliably in Safari, should investigate why
+ }
+ it('tracks ' + name, () => {
+ const expected = makeExpectedEvent(name, properties, 'player');
+ const received = getFirstEventOfEventType(name);
+ compare(expected, received);
+ });
+ });
});
-});
-describe('YouTube Tracker (1 video, 2 trackers)', () => {
- if (shouldSkipBrowser(browser)) {
- fit('Skip browser', () => true);
- return;
- }
+ describe('YouTube Tracker (2 videos, 1 tracker)', () => {
+ if (shouldSkipBrowser(browser)) {
+ fit('Skip browser', () => true);
+ return;
+ }
- beforeAll(async () => {
- await browser.url('/index.html');
- await browser.setCookies({ name: 'container', value: docker.url });
- await browser.url('/youtube/tracking-2-trackers.html');
- await waitUntil(browser, () => $('#youtube').isExisting(), {
- timeout: 5000,
- timeoutMsg: 'expected youtube after 5s',
- });
+ const getFirstEventOfEventTypeWithId = (eventType: string, id: string) => {
+ const results = log.filter(
+ (l: any) =>
+ l.event?.unstruct_event?.data.data.type === eventType &&
+ l.event.contexts.data[0].data.playerId === id &&
+ l.event?.app_id === 'yt-2-videos-' + testIdentifier
+ );
+ return results[results.length - 1];
+ };
+
+ it('Tracks 2 YouTube players with a single tracker', async () => {
+ await browser.url('/youtube/tracking-2-videos.html');
+ await waitUntil(browser, () => $('#youtube').isExisting(), {
+ timeout: 5000,
+ timeoutMsg: 'expected youtube after 5s',
+ });
+
+ const player1 = $('#youtube');
+ const player2 = $('#youtube-2');
+
+ await player1.click();
+ await browser.pause(500);
- const player = $('#youtube');
- await player.click(); // emits 'playbackqualitychange' and 'play';
- await browser.pause(1000);
- await browser.keys(['k']); // Pause
- await browser.pause(1000);
+ await player2.click();
+ await browser.pause(3000);
- log = await browser.call(async () => await fetchResults(docker.url));
- });
+ log = await browser.call(async () => await fetchResults());
+ const expectedOne = makeExpectedEvent('playbackqualitychange');
+ const receivedOne = getFirstEventOfEventTypeWithId('playbackqualitychange', 'youtube');
+ compare(expectedOne, receivedOne);
- afterAll(async () => {
- await browser.call(async () => await stop(docker.container));
+ const expectedTwo = makeExpectedEvent('playbackqualitychange', {}, 'youtube-2');
+ const receivedTwo = getFirstEventOfEventTypeWithId('playbackqualitychange', 'youtube-2');
+ compare(expectedTwo, receivedTwo);
+ });
});
- const getTwoEventsOfEventType = (eventType: string): Array => {
- const results = log.filter((l: any) => l.event.unstruct_event.data.data.type === eventType);
- return results.slice(results.length - 2);
- };
+ describe('YouTube Tracker (1 video, 2 trackers)', () => {
+ if (shouldSkipBrowser(browser)) {
+ fit('Skip browser', () => true);
+ return;
+ }
- it('Tracks 2 YouTube players with a single tracker', () => {
- const expected = makeExpectedEvent('playbackqualitychange', {
- mediaPlayer: { paused: jasmine.any(Boolean) },
+ const getTwoEventsOfEventType = (eventType: string): Array => {
+ const results = log.filter(
+ (l: any) =>
+ l.event?.unstruct_event?.data.data.type === eventType && l.event?.app_id === 'yt-2-trackers-' + testIdentifier
+ );
+ return results.slice(results.length - 2);
+ };
+
+ it('Tracks 1 YouTube player with two trackers', async () => {
+ await browser.url('/youtube/tracking-2-trackers.html');
+ await waitUntil(browser, () => $('#youtube').isExisting(), {
+ timeout: 5000,
+ timeoutMsg: 'expected youtube after 5s',
+ });
+
+ const player = $('#youtube');
+ await player.click(); // emits 'playbackqualitychange' and 'play';
+ await browser.pause(2000);
+
+ log = await browser.call(async () => await fetchResults());
+
+ const expected = makeExpectedEvent('playbackqualitychange', {
+ mediaPlayer: { paused: jasmine.any(Boolean) },
+ });
+ const result = getTwoEventsOfEventType('playbackqualitychange');
+ compare(expected, result[0]);
+ compare(expected, result[1]);
+ const tracker_names = result.map((r: any) => r.event.name_tracker);
+ expect(tracker_names).toContain('sp1');
+ expect(tracker_names).toContain('sp2');
});
- const result = getTwoEventsOfEventType('playbackqualitychange');
- compare(expected, result[0]);
- compare(expected, result[1]);
- const tracker_names = result.map((r: any) => r.event.name_tracker);
- expect(tracker_names).toContain('sp1');
- expect(tracker_names).toContain('sp2');
});
});
diff --git a/trackers/javascript-tracker/test/micro.ts b/trackers/javascript-tracker/test/micro.ts
index 4c511e433..92ddf80d1 100644
--- a/trackers/javascript-tracker/test/micro.ts
+++ b/trackers/javascript-tracker/test/micro.ts
@@ -1,36 +1,6 @@
-/*
- * Copyright (c) 2022 Snowplow Analytics Ltd, 2010 Anthon Pang
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * 3. Neither the name of the copyright holder nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-import http from 'http';
import Docker from 'dockerode';
import { Writable } from 'stream';
+import fetch from 'node-fetch';
export interface DockerWrapper {
url: string;
@@ -39,10 +9,15 @@ export interface DockerWrapper {
const docker = new Docker();
-export const start = () => {
+/**
+ * Start the micro Docker container to accept events.
+ * @param {boolean} [isRemote] For local runs, we use the local address, for remote, a custom host which has been set on the remote machine.
+ * @return {*}
+ */
+export const start = (isRemote?: boolean) => {
return docker
.createContainer({
- Image: 'snowplow/snowplow-micro:1.4.0',
+ Image: 'snowplow/snowplow-micro:latest',
AttachStdin: false,
AttachStdout: true,
AttachStderr: true,
@@ -85,7 +60,9 @@ export const start = () => {
c.inspect().then((info) => {
resolve({
container: c,
- url: `snowplow-js-tracker.local:${info.NetworkSettings.Ports['9090/tcp'][0].HostPort}`,
+ url: `${isRemote ? 'snowplow-js-tracker.local' : '127.0.0.1'}:${
+ info.NetworkSettings.Ports['9090/tcp'][0].HostPort
+ }`,
});
})
);
@@ -96,25 +73,10 @@ export const start = () => {
export const stop = (container: Docker.Container) => container.stop().then(() => container.remove());
-const createMicroCall = (url: string) => () =>
- new Promise((resolve, reject) => {
- const req = http.request(url, (res) => {
- let body = '';
- res.on('data', (chunk) => {
- body += chunk;
- });
- res.on('end', () => {
- resolve(body);
- });
- });
- req.on('error', reject);
- req.end();
- });
-
-export const fetchResults = async (containerUrl: string) =>
- JSON.parse((await createMicroCall(`http://${containerUrl}/micro/good`)()) as string);
-
-export const clearCache = async (containerUrl: string) => {
- await createMicroCall(`http://${containerUrl}/micro/reset`)();
- return true;
-};
+export async function fetchResults() {
+ const dockerUrl = (await browser.sharedStore.get('dockerInstanceUrl')) as string;
+ if (!dockerUrl) {
+ throw 'dockerInstanceUrl not set in shared store.';
+ }
+ return (await fetch(`http://${dockerUrl}/micro/good`)).json();
+}
diff --git a/trackers/javascript-tracker/test/pages/cookieless.html b/trackers/javascript-tracker/test/pages/cookieless.html
index 3aff795e0..ce2a387ac 100644
--- a/trackers/javascript-tracker/test/pages/cookieless.html
+++ b/trackers/javascript-tracker/test/pages/cookieless.html
@@ -9,6 +9,7 @@
@@ -46,7 +47,7 @@
var ieTest = parseQuery().ieTest;
window.snowplow('newTracker', 'sp', collector_endpoint, {
- appId: ieTest ? 'ie' : 'anon',
+ appId: (ieTest ? 'cookieless-ie-' : 'cookieless-anon-') + testIdentifier,
eventMethod: 'post',
contexts: {
webPage: true,
diff --git a/trackers/javascript-tracker/test/pages/form-tracking.html b/trackers/javascript-tracker/test/pages/form-tracking.html
index 23dff601b..627f067d1 100644
--- a/trackers/javascript-tracker/test/pages/form-tracking.html
+++ b/trackers/javascript-tracker/test/pages/form-tracking.html
@@ -66,6 +66,7 @@
@@ -66,7 +67,7 @@
var eventMethod = parseQuery().eventMethod;
window.snowplow('newTracker', 'sp', collector_endpoint, {
- appId: 'sp-' + eventMethod,
+ appId: 'sp-' + eventMethod + '-' + testIdentifier,
platform: 'mob',
eventMethod: eventMethod,
contexts: {
@@ -78,7 +79,7 @@
});
window.secondSnowplow('newTracker', 'b64off', collector_endpoint, {
- appId: 'no-b64-' + eventMethod,
+ appId: 'no-b64-' + eventMethod + '-' + testIdentifier,
platform: 'web',
eventMethod: eventMethod,
encodeBase64: false,
diff --git a/trackers/javascript-tracker/test/pages/link-tracking.html b/trackers/javascript-tracker/test/pages/link-tracking.html
index c17b76b5c..a600fe3be 100644
--- a/trackers/javascript-tracker/test/pages/link-tracking.html
+++ b/trackers/javascript-tracker/test/pages/link-tracking.html
@@ -25,6 +25,7 @@
@@ -48,7 +49,7 @@
document.write(collector_endpoint);
snowplow('newTracker', 'sp', collector_endpoint, {
- appId: 'autotracking',
+ appId: 'autotracking-link-' + testIdentifier,
});
snowplow(function () {
document.getElementById('init').innerText = 'true';
diff --git a/trackers/javascript-tracker/test/pages/media/tracking-2-players.html b/trackers/javascript-tracker/test/pages/media/tracking-2-players.html
index ffd87fc98..1341a8160 100644
--- a/trackers/javascript-tracker/test/pages/media/tracking-2-players.html
+++ b/trackers/javascript-tracker/test/pages/media/tracking-2-players.html
@@ -3,7 +3,8 @@
Page for HTML5 media tracking testing with Snowplow Micro
@@ -28,7 +29,7 @@
document.write(collector_endpoint);
window.snowplow('newTracker', 'sp2', collector_endpoint, {
- appId: 'html5-track-test',
+ appId: 'media-2-players-1-tracker-' + testIdentifier,
});
window.snowplow('enableMediaTracking', {
diff --git a/trackers/javascript-tracker/test/pages/media/tracking-2-trackers.html b/trackers/javascript-tracker/test/pages/media/tracking-2-trackers.html
index 598c15165..3a56b5646 100644
--- a/trackers/javascript-tracker/test/pages/media/tracking-2-trackers.html
+++ b/trackers/javascript-tracker/test/pages/media/tracking-2-trackers.html
@@ -3,7 +3,8 @@
Page for HTML5 media tracking testing with Snowplow Micro
@@ -28,10 +29,10 @@
document.write(collector_endpoint);
window.snowplow('newTracker', 'sp1', collector_endpoint, {
- appId: 'html5-track-test',
+ appId: 'media-1-player-2-trackers-' + testIdentifier,
});
window.snowplow('newTracker', 'sp2', collector_endpoint, {
- appId: 'html5-track-test',
+ appId: 'media-1-player-2-trackers-' + testIdentifier,
});
window.snowplow('enableMediaTracking', {
diff --git a/trackers/javascript-tracker/test/pages/media/tracking-all-events.html b/trackers/javascript-tracker/test/pages/media/tracking-all-events.html
index bc6ad0f5d..9b517e26f 100644
--- a/trackers/javascript-tracker/test/pages/media/tracking-all-events.html
+++ b/trackers/javascript-tracker/test/pages/media/tracking-all-events.html
@@ -3,7 +3,8 @@
Page for HTML5 media tracking testing with Snowplow Micro
@@ -28,7 +29,7 @@
document.write(collector_endpoint);
window.snowplow('newTracker', 'sp2', collector_endpoint, {
- appId: 'html5-track-test',
+ appId: 'media-all-events-' + testIdentifier,
});
window.snowplow('enableMediaTracking', {
diff --git a/trackers/javascript-tracker/test/pages/media/tracking.html b/trackers/javascript-tracker/test/pages/media/tracking.html
index 712bf9310..6883ccf7b 100644
--- a/trackers/javascript-tracker/test/pages/media/tracking.html
+++ b/trackers/javascript-tracker/test/pages/media/tracking.html
@@ -3,7 +3,8 @@
Page for HTML5 media tracking testing with Snowplow Micro
@@ -28,7 +29,7 @@
document.write(collector_endpoint);
window.snowplow('newTracker', 'sp2', collector_endpoint, {
- appId: 'html5-track-test',
+ appId: 'media-default-events-' + testIdentifier,
});
window.snowplow('enableMediaTracking', {
diff --git a/trackers/javascript-tracker/test/pages/session-integration.html b/trackers/javascript-tracker/test/pages/session-integration.html
index 7e578611b..be3f72365 100644
--- a/trackers/javascript-tracker/test/pages/session-integration.html
+++ b/trackers/javascript-tracker/test/pages/session-integration.html
@@ -8,6 +8,7 @@
@@ -31,9 +32,11 @@
document.write(collector_endpoint);
window.snowplow('newTracker', 'cookieSessionTracker', collector_endpoint, {
+ appId: 'session-integration-' + testIdentifier,
sessionCookieTimeout: 1,
cookieSameSite: 'Lax',
cookieSecure: false,
+ cookieName: testIdentifier,
contexts: {
session: true,
webPage: false,
@@ -50,6 +53,8 @@
}, 3000);
window.snowplow('newTracker', 'localStorageSessionTracker', collector_endpoint, {
+ appId: 'session-integration-' + testIdentifier,
+ cookieName: testIdentifier,
sessionCookieTimeout: 1,
stateStorageStrategy: 'localStorage',
});
@@ -64,6 +69,8 @@
}, 3000);
window.snowplow('newTracker', 'anonymousSessionTracker', collector_endpoint, {
+ appId: 'session-integration-' + testIdentifier,
+ cookieName: testIdentifier,
sessionCookieTimeout: 1,
stateStorageStrategy: 'localStorage',
anonymousTracking: { withSessionTracking: true },
diff --git a/trackers/javascript-tracker/test/pages/session-update-callback.html b/trackers/javascript-tracker/test/pages/session-update-callback.html
index 37bf61b2a..232b54a66 100644
--- a/trackers/javascript-tracker/test/pages/session-update-callback.html
+++ b/trackers/javascript-tracker/test/pages/session-update-callback.html
@@ -10,6 +10,7 @@
@@ -33,9 +34,10 @@
document.write(collector_endpoint);
snowplow('newTracker', 'sp', collector_endpoint, {
- appId: 'onSessionCallback',
+ appId: 'onSessionCallback' + testIdentifier,
cookieSameSite: 'Lax',
cookieSecure: false,
+ eventMethod: 'get',
onSessionUpdateCallback: function (session) {
snowplow('trackStructEvent:sp', {
category: 'session_callback',
diff --git a/trackers/javascript-tracker/test/pages/youtube/tracking-2-trackers.html b/trackers/javascript-tracker/test/pages/youtube/tracking-2-trackers.html
index 7dac3936e..ca29cfc4e 100644
--- a/trackers/javascript-tracker/test/pages/youtube/tracking-2-trackers.html
+++ b/trackers/javascript-tracker/test/pages/youtube/tracking-2-trackers.html
@@ -2,7 +2,8 @@
Page for YouTube tracking testing with Snowplow Micro
@@ -27,14 +28,14 @@
document.write(collector_endpoint);
window.snowplow('newTracker', 'sp1', collector_endpoint, {
- appId: 'youtube-track-test',
+ appId: 'yt-2-trackers-' + testIdentifier,
});
window.snowplow('newTracker', 'sp2', collector_endpoint, {
- appId: 'youtube-track-test',
+ appId: 'yt-2-trackers-' + testIdentifier,
});
- let args = {
+ var args = {
id: 'youtube',
options: {
label: 'test-label',
@@ -48,7 +49,7 @@
id="youtube"
width="560"
height="315"
- src="https://www.youtube.com/embed/zSM4ZyVe8xs"
+ src="https://www.youtube.com/embed/ublEqhffop0"
title="YouTube video player"
rel="0"
frameborder="0"
diff --git a/trackers/javascript-tracker/test/pages/youtube/tracking-2-videos.html b/trackers/javascript-tracker/test/pages/youtube/tracking-2-videos.html
index 0c378f09c..72daf4395 100644
--- a/trackers/javascript-tracker/test/pages/youtube/tracking-2-videos.html
+++ b/trackers/javascript-tracker/test/pages/youtube/tracking-2-videos.html
@@ -2,7 +2,8 @@
Page for YouTube tracking testing with Snowplow Micro
@@ -27,10 +28,10 @@
document.write(collector_endpoint);
window.snowplow('newTracker', 'sp2', collector_endpoint, {
- appId: 'youtube-track-test',
+ appId: 'yt-2-videos-' + testIdentifier,
});
- let args = {
+ var args = {
id: 'youtube',
options: {
label: 'test-label',
@@ -54,7 +55,7 @@
id="youtube"
width="560"
height="315"
- src="https://www.youtube.com/embed/zSM4ZyVe8xs"
+ src="https://www.youtube.com/embed/ublEqhffop0"
title="YouTube video player"
rel="0"
frameborder="0"
@@ -65,7 +66,7 @@
id="youtube-2"
width="560"
height="315"
- src="https://www.youtube.com/embed/zSM4ZyVe8xs"
+ src="https://www.youtube.com/embed/ublEqhffop0"
title="YouTube video player"
rel="0"
frameborder="0"
diff --git a/trackers/javascript-tracker/test/pages/youtube/tracking-player.html b/trackers/javascript-tracker/test/pages/youtube/tracking-player.html
index 068fac5bc..30215d3cd 100644
--- a/trackers/javascript-tracker/test/pages/youtube/tracking-player.html
+++ b/trackers/javascript-tracker/test/pages/youtube/tracking-player.html
@@ -2,7 +2,8 @@
Page for YouTube tracking testing with Snowplow Micro
@@ -27,7 +28,7 @@
document.write(collector_endpoint);
window.snowplow('newTracker', 'sp2', collector_endpoint, {
- appId: 'youtube-track-test',
+ appId: 'yt-player-' + testIdentifier,
});
@@ -41,7 +42,7 @@
// `onYouTubeIframeAPIReady` will run once the API is loaded
function onYouTubeIframeAPIReady() {
new YT.Player('youtube', {
- videoId: 'zSM4ZyVe8xs',
+ videoId: 'ublEqhffop0',
events: {
onReady: (e) =>
window.snowplow('enableYouTubeTracking', {
diff --git a/trackers/javascript-tracker/test/pages/youtube/tracking.html b/trackers/javascript-tracker/test/pages/youtube/tracking.html
index 1aca8ce48..c522d64f8 100644
--- a/trackers/javascript-tracker/test/pages/youtube/tracking.html
+++ b/trackers/javascript-tracker/test/pages/youtube/tracking.html
@@ -2,52 +2,63 @@
Page for YouTube tracking testing with Snowplow Micro
+
+
-
diff --git a/trackers/javascript-tracker/test/tsconfig.json b/trackers/javascript-tracker/test/tsconfig.json
index 581951010..7a2873829 100644
--- a/trackers/javascript-tracker/test/tsconfig.json
+++ b/trackers/javascript-tracker/test/tsconfig.json
@@ -1,7 +1,15 @@
{
"extends": "../tsconfig.json",
"compilerOptions": {
- "types": ["node", "@wdio/types", "@wdio/globals/types", "@wdio/jasmine-framework", "jest"]
+ "types": [
+ "node",
+ "@wdio/types",
+ "@wdio/globals/types",
+ "@wdio/jasmine-framework",
+ "jest",
+ "@wdio/shared-store-service",
+ "youtube"
+ ]
},
"include": ["./**/*.test.ts"]
}
diff --git a/trackers/javascript-tracker/test/wdio.default.conf.ts b/trackers/javascript-tracker/test/wdio.default.conf.ts
index d500b2ab3..99f3ed1a1 100644
--- a/trackers/javascript-tracker/test/wdio.default.conf.ts
+++ b/trackers/javascript-tracker/test/wdio.default.conf.ts
@@ -1,15 +1,21 @@
-function getFullPath(path: String): String {
+import { DockerWrapper, start, stop } from './micro';
+import { setValue } from '@wdio/shared-store-service';
+import type { Options } from '@wdio/types';
+
+function getFullPath(path: string): string {
return process.cwd() + '/' + path;
}
-export const config = {
- specs: [getFullPath('test/functional/*.test.ts'), getFullPath('test/integration/*.test.ts')],
+type CustomTestRunnerConfig = Options.Testrunner & { dockerInstance?: DockerWrapper };
+
+export const config: Omit = {
+ specs: [[getFullPath('test/functional/*.test.ts'), getFullPath('test/integration/*.test.ts')]],
logLevel: 'warn',
baseUrl: 'http://snowplow-js-tracker.local:8080',
waitforTimeout: 30000,
connectionRetryTimeout: 120000,
connectionRetryCount: 3,
- specFileRetries: 3,
+ specFileRetries: 1,
specFileRetriesDelay: 60, // Delay in seconds between the spec file retry attempts
specFileRetriesDeferred: true, // Defer retries to the end of the queue
maxInstances: 5, // Maximum number of total parallel running workers
@@ -18,4 +24,13 @@ export const config = {
jasmineOpts: {
defaultTimeoutInterval: 120000,
},
+ async onPrepare(config: CustomTestRunnerConfig) {
+ const isSauce = config.services?.some((service) => Array.isArray(service) && service[0] === 'sauce');
+ config.dockerInstance = await start(isSauce);
+ await setValue('dockerInstanceUrl', config.dockerInstance.url);
+ return;
+ },
+ async onComplete(_, config: CustomTestRunnerConfig) {
+ await stop(config.dockerInstance!.container);
+ },
};
diff --git a/trackers/javascript-tracker/test/wdio.local.conf.ts b/trackers/javascript-tracker/test/wdio.local.conf.ts
index 273d6fa70..b46884fee 100644
--- a/trackers/javascript-tracker/test/wdio.local.conf.ts
+++ b/trackers/javascript-tracker/test/wdio.local.conf.ts
@@ -1,9 +1,10 @@
+import { Options } from '@wdio/types';
import { config as defaultConfig } from './wdio.default.conf';
-export const config = {
+export const config: Partial = {
...defaultConfig,
- maxInstances: 1,
+ maxInstances: 2,
capabilities: [
{
browserName: 'chrome',
@@ -11,12 +12,24 @@ export const config = {
args: ['--auto-open-devtools-for-tabs'],
},
},
+ // {
+ // browserName: 'safari',
+ // },
+ // {
+ // browserName: 'MicrosoftEdge',
+ // port: 9515,
+ // 'ms:edgeOptions': {
+ // args: ['--auto-open-devtools-for-tabs'],
+ // },
+ // }
],
specFileRetries: 0,
- logLevel: 'debug',
- bail: 1,
+ logLevel: 'info',
+ bail: 4,
services: [
- ['chromedriver', {}],
+ 'chromedriver',
+ // 'safaridriver',
+ // 'edgedriver',
[
'static-server',
{
@@ -24,5 +37,6 @@ export const config = {
port: 8080,
},
],
+ 'shared-store',
],
};
diff --git a/trackers/javascript-tracker/test/wdio.sauce.conf.ts b/trackers/javascript-tracker/test/wdio.sauce.conf.ts
index 1d0f6bdf2..c0de2fea3 100644
--- a/trackers/javascript-tracker/test/wdio.sauce.conf.ts
+++ b/trackers/javascript-tracker/test/wdio.sauce.conf.ts
@@ -1,3 +1,4 @@
+import { Options } from '@wdio/types';
import { config as defaultConfig } from './wdio.default.conf';
let buildIdentifier = Math.floor(Math.random() * 1000000).toString();
@@ -7,7 +8,7 @@ if (process.env.GITHUB_WORKFLOW) {
const buildName = `snowplow-js-tracker-${buildIdentifier}`;
-export const config = {
+export const config: Partial = {
...defaultConfig,
user: process.env.SAUCE_USERNAME,
@@ -50,15 +51,7 @@ export const config = {
{
browserName: 'MicrosoftEdge',
platformName: 'Windows 10',
- browserVersion: '97',
- 'sauce:options': {
- build: buildName,
- },
- },
- {
- browserName: 'internet explorer',
- platformName: 'Windows 8.1',
- browserVersion: '11',
+ browserVersion: 'latest',
'sauce:options': {
build: buildName,
},
@@ -95,5 +88,6 @@ export const config = {
port: 8080,
},
],
+ 'shared-store',
],
};
From c96c9eeb1070d5c5becccff72c6e3faf31f545ff Mon Sep 17 00:00:00 2001
From: Matus Tomlein
Date: Mon, 7 Aug 2023 18:06:41 +0200
Subject: [PATCH 002/341] Filter out repeated seek and volume change events
happening when user holds down the player controls (close #1218)
PR #1219
---
...epeated_media_events_2023-06-30-20-36.json | 10 ++
plugins/browser-plugin-media/src/api.ts | 25 ++--
.../browser-plugin-media/src/mediaTracking.ts | 43 ++----
.../src/repeatedEventFilter.ts | 79 +++++++++++
plugins/browser-plugin-media/src/types.ts | 43 +++++-
plugins/browser-plugin-media/test/api.test.ts | 134 +++++++++++++++---
6 files changed, 268 insertions(+), 66 deletions(-)
create mode 100644 common/changes/@snowplow/browser-plugin-media/issue-1218-filter_out_repeated_media_events_2023-06-30-20-36.json
create mode 100644 plugins/browser-plugin-media/src/repeatedEventFilter.ts
diff --git a/common/changes/@snowplow/browser-plugin-media/issue-1218-filter_out_repeated_media_events_2023-06-30-20-36.json b/common/changes/@snowplow/browser-plugin-media/issue-1218-filter_out_repeated_media_events_2023-06-30-20-36.json
new file mode 100644
index 000000000..037797552
--- /dev/null
+++ b/common/changes/@snowplow/browser-plugin-media/issue-1218-filter_out_repeated_media_events_2023-06-30-20-36.json
@@ -0,0 +1,10 @@
+{
+ "changes": [
+ {
+ "packageName": "@snowplow/browser-plugin-media",
+ "comment": "Filter out repeated seek and volume change events happening when user holds down the player controls (#1218)",
+ "type": "none"
+ }
+ ],
+ "packageName": "@snowplow/browser-plugin-media"
+}
\ No newline at end of file
diff --git a/plugins/browser-plugin-media/src/api.ts b/plugins/browser-plugin-media/src/api.ts
index e83ab1a1a..8ef0bbf91 100644
--- a/plugins/browser-plugin-media/src/api.ts
+++ b/plugins/browser-plugin-media/src/api.ts
@@ -20,6 +20,7 @@ import {
MediaTrackQualityChangeArguments,
MediaTrackErrorArguments,
MediaTrackSelfDescribingEventArguments,
+ EventWithContext,
} from './types';
export { MediaAdBreakType as MediaPlayerAdBreakType };
@@ -78,6 +79,7 @@ export function startMediaTracking(
config.boundaries,
config.captureEvents,
config.updatePageActivityWhilePlaying,
+ config.filterOutRepeatedEvents,
config.context
);
activeMedias[mediaTracking.id] = mediaTracking;
@@ -85,13 +87,13 @@ export function startMediaTracking(
/**
* Ends media tracking with the given ID if previously started.
- * Clears local state for the media tracking.
+ * Clears local state for the media tracking and sends any events waiting to be sent.
*
* @param configuration Configuration with the media tracking ID
*/
export function endMediaTracking(configuration: { id: string }) {
if (activeMedias[configuration.id]) {
- activeMedias[configuration.id].stop();
+ activeMedias[configuration.id].flushAndStop();
delete activeMedias[configuration.id];
}
}
@@ -704,7 +706,13 @@ function track(
return;
}
- const events = mediaTracking.update(mediaEvent, customEvent, player, ad, adBreak);
+ const trackEvent = (event: EventWithContext) => {
+ dispatchToTrackersInCollection(trackers, _trackers, (t) => {
+ t.core.track(buildSelfDescribingEvent(event), (event.context ?? []).concat(context), timestamp);
+ });
+ };
+
+ mediaTracking.update(trackEvent, mediaEvent, customEvent, player, ad, adBreak);
// Update page activity in order to keep sending page pings if needed
if (mediaTracking.shouldUpdatePageActivity()) {
@@ -712,15 +720,4 @@ function track(
t.updatePageActivity();
});
}
-
- if (events.length == 0) {
- return;
- }
-
- // Send all created events to the trackers
- dispatchToTrackersInCollection(trackers, _trackers, (t) => {
- events.forEach((event) => {
- t.core.track(buildSelfDescribingEvent(event), event.context.concat(context), timestamp);
- });
- });
}
diff --git a/plugins/browser-plugin-media/src/mediaTracking.ts b/plugins/browser-plugin-media/src/mediaTracking.ts
index 0082057b6..e60a5f81f 100644
--- a/plugins/browser-plugin-media/src/mediaTracking.ts
+++ b/plugins/browser-plugin-media/src/mediaTracking.ts
@@ -10,7 +10,10 @@ import {
MediaPlayerUpdate,
MediaEventType,
MediaEvent,
+ EventWithContext,
+ FilterOutRepeatedEvents,
} from './types';
+import { RepeatedEventFilter } from './repeatedEventFilter';
/**
* Manages the state and built-in entities for a media tracking that starts when a user
@@ -39,14 +42,14 @@ export class MediaTracking {
private pingInterval?: MediaPingInterval;
/// Manages ad entities.
private adTracking = new MediaAdTracking();
- /// Used to prevent tracking seek start events multiple times.
- private isSeeking = false;
/// Context entities to attach to all events
private customContext?: Array;
/// Optional list of event types to allow tracking and discard others.
private captureEvents?: MediaEventType[];
// Whether to update page activity when playing media. Enabled by default.
private updatePageActivityWhilePlaying?: boolean;
+ /// Filters out repeated events based on the configuration.
+ private repeatedEventFilter: RepeatedEventFilter;
constructor(
id: string,
@@ -56,6 +59,7 @@ export class MediaTracking {
boundaries?: number[],
captureEvents?: MediaEventType[],
updatePageActivityWhilePlaying?: boolean,
+ filterRepeatedEvents?: FilterOutRepeatedEvents,
context?: Array
) {
this.id = id;
@@ -66,6 +70,7 @@ export class MediaTracking {
this.captureEvents = captureEvents;
this.updatePageActivityWhilePlaying = updatePageActivityWhilePlaying;
this.customContext = context;
+ this.repeatedEventFilter = new RepeatedEventFilter(filterRepeatedEvents);
// validate event names in the captureEvents list
captureEvents?.forEach((eventType) => {
@@ -78,8 +83,9 @@ export class MediaTracking {
/**
* Called when user calls `endMediaTracking()`.
*/
- stop() {
+ flushAndStop() {
this.pingInterval?.clear();
+ this.repeatedEventFilter.flush();
}
/**
@@ -91,12 +97,13 @@ export class MediaTracking {
* @returns List of events with entities to track.
*/
update(
+ trackEvent: (event: EventWithContext) => void,
mediaEvent?: MediaEvent,
customEvent?: SelfDescribingJson,
player?: MediaPlayerUpdate,
ad?: MediaAdUpdate,
adBreak?: MediaPlayerAdBreakUpdate
- ): { event: SelfDescribingJson; context: SelfDescribingJson[] }[] {
+ ) {
// update state
this.updatePlayer(player);
if (mediaEvent !== undefined) {
@@ -138,7 +145,8 @@ export class MediaTracking {
if (customEvent !== undefined) {
eventsToTrack.push({ event: customEvent, context: context });
}
- return eventsToTrack;
+
+ this.repeatedEventFilter.trackFilteredEvents(eventsToTrack, trackEvent);
}
shouldUpdatePageActivity(): boolean {
@@ -173,34 +181,11 @@ export class MediaTracking {
}
private shouldTrackEvent(eventType: MediaEventType): boolean {
- return this.updateSeekingAndCheckIfShouldTrack(eventType) && this.allowedToCaptureEventType(eventType);
- }
-
- /** Prevents multiple seek start events to be tracked after each other without a seek end (happens when scrubbing). */
- private updateSeekingAndCheckIfShouldTrack(eventType: MediaEventType): boolean {
- if (eventType == MediaEventType.SeekStart) {
- if (this.isSeeking) {
- return false;
- }
-
- this.isSeeking = true;
- } else if (eventType == MediaEventType.SeekEnd) {
- this.isSeeking = false;
- }
-
- return true;
- }
-
- private allowedToCaptureEventType(eventType: MediaEventType): boolean {
return this.captureEvents === undefined || this.captureEvents.includes(eventType);
}
private getPercentProgress(): number | undefined {
- if (
- this.player.duration === null ||
- this.player.duration === undefined ||
- this.player.duration == 0
- ) {
+ if (this.player.duration === null || this.player.duration === undefined || this.player.duration == 0) {
return undefined;
}
return Math.floor(((this.player.currentTime ?? 0) / this.player.duration) * 100);
diff --git a/plugins/browser-plugin-media/src/repeatedEventFilter.ts b/plugins/browser-plugin-media/src/repeatedEventFilter.ts
new file mode 100644
index 000000000..2b2f6a400
--- /dev/null
+++ b/plugins/browser-plugin-media/src/repeatedEventFilter.ts
@@ -0,0 +1,79 @@
+import { getMediaEventSchema } from './schemata';
+import { FilterOutRepeatedEvents, MediaEventType, EventWithContext } from './types';
+
+/**
+ * This class filters out repeated events that are sent by the media player.
+ * This applies to seek and volume change events.
+ */
+export class RepeatedEventFilter {
+ private aggregateEventsWithOrder: { [schema: string]: boolean } = {};
+ private eventsToAggregate: { [schema: string]: (() => void)[] } = {};
+ private flushTimeout?: number;
+ private flushTimeoutMs: number;
+
+ constructor(configuration?: FilterOutRepeatedEvents) {
+ let allFiltersEnabled = configuration === undefined || configuration === true;
+ if (allFiltersEnabled || (typeof configuration === 'object' && configuration.seekEvents !== false)) {
+ this.aggregateEventsWithOrder[getMediaEventSchema(MediaEventType.SeekStart)] = true;
+ this.aggregateEventsWithOrder[getMediaEventSchema(MediaEventType.SeekEnd)] = false;
+ }
+ if (allFiltersEnabled || (typeof configuration === 'object' && configuration.volumeChangeEvents !== false)) {
+ this.aggregateEventsWithOrder[getMediaEventSchema(MediaEventType.VolumeChange)] = false;
+ }
+
+ this.flushTimeoutMs = (typeof configuration === 'object' ? configuration.flushTimeoutMs : undefined) ?? 5000;
+
+ Object.keys(this.aggregateEventsWithOrder).forEach((schema) => {
+ this.eventsToAggregate[schema] = [];
+ });
+ }
+
+ trackFilteredEvents(events: EventWithContext[], trackEvent: (event: EventWithContext) => void) {
+ let startFlushTimeout = false;
+
+ events.forEach(({ event, context }) => {
+ if (this.eventsToAggregate[event.schema] !== undefined) {
+ startFlushTimeout = true;
+ this.eventsToAggregate[event.schema].push(() => trackEvent({ event, context }));
+ } else {
+ startFlushTimeout = false;
+ // flush any events waiting
+ this.flush();
+
+ trackEvent({ event, context });
+ }
+ });
+
+ if (startFlushTimeout && this.flushTimeout === undefined) {
+ this.setFlushTimeout();
+ }
+ }
+
+ flush() {
+ this.clearFlushTimeout();
+
+ Object.keys(this.eventsToAggregate).forEach((schema) => {
+ let eventsToAggregate = this.eventsToAggregate[schema];
+ if (eventsToAggregate.length > 0) {
+ if (this.aggregateEventsWithOrder[schema]) {
+ eventsToAggregate[0]();
+ } else {
+ eventsToAggregate[eventsToAggregate.length - 1]();
+ }
+ this.eventsToAggregate[schema] = [];
+ }
+ });
+ }
+
+ private clearFlushTimeout() {
+ if (this.flushTimeout !== undefined) {
+ clearTimeout(this.flushTimeout);
+ this.flushTimeout = undefined;
+ }
+ }
+
+ private setFlushTimeout() {
+ this.clearFlushTimeout();
+ this.flushTimeout = window.setTimeout(() => this.flush(), this.flushTimeoutMs);
+ }
+}
diff --git a/plugins/browser-plugin-media/src/types.ts b/plugins/browser-plugin-media/src/types.ts
index 923c719fb..dda74a041 100644
--- a/plugins/browser-plugin-media/src/types.ts
+++ b/plugins/browser-plugin-media/src/types.ts
@@ -72,16 +72,40 @@ export enum MediaEventType {
Error = 'error',
}
+/**
+ * Configuration for filtering out repeated events of the same type tracked after each other.
+ * By default, the seek start, seek end and volume change events are filtered out.
+ */
+export type FilterOutRepeatedEvents =
+ | {
+ /**
+ * Whether to filter out seek start and end events tracked after each other.
+ */
+ seekEvents?: boolean;
+ /**
+ * Whether to filter out volume change events tracked after each other.
+ */
+ volumeChangeEvents?: boolean;
+ /**
+ * Timeout in milliseconds after which to send the events that are queued for filtering.
+ * Defaults to 5000 ms.
+ */
+ flushTimeoutMs?: number;
+ }
+ | boolean;
+
export type MediaTrackingConfiguration = {
/** Unique ID of the media tracking. The same ID will be used for media player session if enabled. */
id: string;
/** Attributes for the media player context entity */
player?: MediaPlayerUpdate;
/** Attributes for the media player session context entity or false to disable it. Enabled by default. */
- session?: {
- /** Local date-time timestamp of when the session started. Automatically set to current time if not given. */
- startedAt?: Date
- } | false;
+ session?:
+ | {
+ /** Local date-time timestamp of when the session started. Automatically set to current time if not given. */
+ startedAt?: Date;
+ }
+ | false;
/** Configuration for sending ping events. Enabled by default. */
pings?:
| {
@@ -101,6 +125,13 @@ export type MediaTrackingConfiguration = {
* Otherwise, tracked event types not present in the list will be discarded.
*/
captureEvents?: MediaEventType[];
+ /**
+ * Whether to filter out repeated events of the same type tracked after each other.
+ * Useful to filter out repeated seek and volume change events tracked when the user holds down the seek or volume control.
+ * Only applies to seek and volume change events.
+ * Defaults to true.
+ */
+ filterOutRepeatedEvents?: FilterOutRepeatedEvents;
};
export type MediaTrackPlaybackRateChangeArguments = {
@@ -380,3 +411,7 @@ export interface CommonMediaEventProperties extends CommonEventProperties {
/** Add context entities to an event by setting an Array of Self Describing JSON */
context?: Array;
}
+
+export interface EventWithContext extends CommonEventProperties {
+ event: SelfDescribingJson;
+}
diff --git a/plugins/browser-plugin-media/test/api.test.ts b/plugins/browser-plugin-media/test/api.test.ts
index d71470ea9..68803bb12 100644
--- a/plugins/browser-plugin-media/test/api.test.ts
+++ b/plugins/browser-plugin-media/test/api.test.ts
@@ -81,7 +81,7 @@ describe('Media Tracking API', () => {
{ api: trackMediaBufferEnd, eventType: MediaEventType.BufferEnd },
].forEach((test) => {
it(`tracks a ${test.eventType} event`, () => {
- startMediaTracking({ id });
+ startMediaTracking({ id, filterOutRepeatedEvents: false });
test.api({ id });
@@ -182,7 +182,7 @@ describe('Media Tracking API', () => {
it('tracks an ad first quartile event', () => {
startMediaTracking({ id, session: false });
- trackMediaAdFirstQuartile({ id })
+ trackMediaAdFirstQuartile({ id });
expect(eventQueue).toMatchObject([
{
@@ -197,7 +197,7 @@ describe('Media Tracking API', () => {
it('tracks an ad midpoint event', () => {
startMediaTracking({ id, session: false });
- trackMediaAdMidpoint({ id })
+ trackMediaAdMidpoint({ id });
expect(eventQueue).toMatchObject([
{
@@ -212,7 +212,7 @@ describe('Media Tracking API', () => {
it('tracks an ad third quartile event', () => {
startMediaTracking({ id, session: false });
- trackMediaAdThirdQuartile({ id })
+ trackMediaAdThirdQuartile({ id });
expect(eventQueue).toMatchObject([
{
@@ -227,7 +227,7 @@ describe('Media Tracking API', () => {
it('tracks an ad skip event', () => {
startMediaTracking({ id, session: false });
- trackMediaAdSkip({ id, percentProgress: 33.33 })
+ trackMediaAdSkip({ id, percentProgress: 33.33 });
expect(eventQueue).toMatchObject([
{
@@ -242,7 +242,7 @@ describe('Media Tracking API', () => {
it('tracks an ad click event', () => {
startMediaTracking({ id, session: false });
- trackMediaAdClick({ id, percentProgress: 33.33 })
+ trackMediaAdClick({ id, percentProgress: 33.33 });
expect(eventQueue).toMatchObject([
{
@@ -257,7 +257,7 @@ describe('Media Tracking API', () => {
it('tracks an ad pause event', () => {
startMediaTracking({ id, session: false });
- trackMediaAdPause({ id, percentProgress: 33.33 })
+ trackMediaAdPause({ id, percentProgress: 33.33 });
expect(eventQueue).toMatchObject([
{
@@ -272,7 +272,7 @@ describe('Media Tracking API', () => {
it('tracks an ad resume event', () => {
startMediaTracking({ id, session: false });
- trackMediaAdResume({ id, percentProgress: 33.33 })
+ trackMediaAdResume({ id, percentProgress: 33.33 });
expect(eventQueue).toMatchObject([
{
@@ -371,18 +371,112 @@ describe('Media Tracking API', () => {
]);
});
- it('doesnt track seek start multiple times', () => {
- startMediaTracking({ id, player: { duration: 100 }, session: false });
- trackMediaSeekStart({ id, player: { currentTime: 1 } });
- trackMediaSeekStart({ id, player: { currentTime: 2 } });
- trackMediaSeekEnd({ id, player: { currentTime: 3 } });
- trackMediaSeekStart({ id, player: { currentTime: 3 } });
+ describe('filtering repeated events', () => {
+ it('doesnt track seek start and end multiple times', () => {
+ startMediaTracking({ id, player: { duration: 100 }, session: false });
+ trackMediaSeekStart({ id, player: { currentTime: 1 } });
+ trackMediaSeekEnd({ id, player: { currentTime: 2 } });
+ trackMediaSeekStart({ id, player: { currentTime: 2 } });
+ trackMediaSeekEnd({ id, player: { currentTime: 3 } });
+ trackMediaSeekStart({ id, player: { currentTime: 3 } });
+ trackMediaSeekEnd({ id, player: { currentTime: 4 } });
+ trackMediaPlay({ id });
+
+ expect(eventQueue).toMatchObject([
+ {
+ event: { schema: getMediaEventSchema(MediaEventType.SeekStart) },
+ context: [{ data: { currentTime: 1 } }],
+ },
+ {
+ event: { schema: getMediaEventSchema(MediaEventType.SeekEnd) },
+ context: [{ data: { currentTime: 4 } }],
+ },
+ { event: { schema: getMediaEventSchema(MediaEventType.Play) } },
+ ]);
+ });
- expect(eventQueue).toMatchObject([
- { event: { schema: getMediaEventSchema(MediaEventType.SeekStart) } },
- { event: { schema: getMediaEventSchema(MediaEventType.SeekEnd) } },
- { event: { schema: getMediaEventSchema(MediaEventType.SeekStart) } },
- ]);
+ it('doesnt filter out repeated seek events when disabled', () => {
+ startMediaTracking({ id, filterOutRepeatedEvents: { seekEvents: false } });
+ trackMediaSeekStart({ id, player: { currentTime: 1 } });
+ trackMediaSeekEnd({ id, player: { currentTime: 2 } });
+ trackMediaSeekStart({ id, player: { currentTime: 2 } });
+ trackMediaSeekEnd({ id, player: { currentTime: 3 } });
+ trackMediaSeekStart({ id, player: { currentTime: 3 } });
+ trackMediaSeekEnd({ id, player: { currentTime: 4 } });
+
+ expect(eventQueue.length).toBe(6);
+ });
+
+ it('doesnt track volume change multiple times', () => {
+ startMediaTracking({ id, session: false });
+ trackMediaVolumeChange({ id, newVolume: 50 });
+ trackMediaVolumeChange({ id, newVolume: 60 });
+ trackMediaVolumeChange({ id, newVolume: 70 });
+ trackMediaPause({ id });
+
+ expect(eventQueue).toMatchObject([
+ {
+ event: {
+ schema: getMediaEventSchema(MediaEventType.VolumeChange),
+ data: {
+ previousVolume: 60,
+ newVolume: 70,
+ },
+ },
+ },
+ { event: { schema: getMediaEventSchema(MediaEventType.Pause) } },
+ ]);
+ });
+
+ it('doesnt filter out repeated volume change events when disabled', () => {
+ startMediaTracking({ id, filterOutRepeatedEvents: { volumeChangeEvents: false } });
+ trackMediaVolumeChange({ id, newVolume: 50 });
+ trackMediaVolumeChange({ id, newVolume: 60 });
+ trackMediaVolumeChange({ id, newVolume: 70 });
+ trackMediaPause({ id });
+
+ expect(eventQueue.length).toBe(4);
+ });
+
+ it('flushes aggregated events on end tracking', () => {
+ startMediaTracking({ id, session: false });
+ trackMediaVolumeChange({ id, newVolume: 50 });
+ trackMediaVolumeChange({ id, newVolume: 60 });
+ trackMediaVolumeChange({ id, newVolume: 70 });
+ endMediaTracking({ id });
+
+ expect(eventQueue).toMatchObject([
+ {
+ event: {
+ schema: getMediaEventSchema(MediaEventType.VolumeChange),
+ data: {
+ previousVolume: 60,
+ newVolume: 70,
+ },
+ },
+ },
+ ]);
+ });
+
+ it('remembers context entities on flush', () => {
+ startMediaTracking({ id, session: false });
+ trackMediaVolumeChange({ id, newVolume: 50 });
+ trackMediaVolumeChange({ id, newVolume: 60 });
+ trackMediaVolumeChange({ id, newVolume: 70, context: [{ schema: 'entity', data: {} }] });
+ endMediaTracking({ id });
+
+ expect(eventQueue).toMatchObject([{ context: [{ schema: MEDIA_PLAYER_SCHEMA }, { schema: 'entity' }] }]);
+ });
+
+ it('flushes events that are waiting to be filtered automatically after timeout', (done) => {
+ startMediaTracking({ id, filterOutRepeatedEvents: { flushTimeoutMs: 0 } });
+ trackMediaVolumeChange({ id, newVolume: 50 });
+
+ setTimeout(() => {
+ expect(eventQueue.length).toBe(1);
+ done();
+ }, 0);
+ });
});
it('adds custom context entities to all events', () => {
@@ -632,6 +726,7 @@ describe('Media Tracking API', () => {
for (let i = 1; i <= 100; i++) {
updateMediaTracking({ id, player: { currentTime: i } });
}
+ trackMediaEnd({ id, player: { currentTime: 100 } });
expect(eventQueue).toMatchObject([
{ event: { schema: getMediaEventSchema(MediaEventType.Play) } },
@@ -647,6 +742,7 @@ describe('Media Tracking API', () => {
},
context: [{ data: { currentTime: 0 } }],
},
+ { event: { schema: getMediaEventSchema(MediaEventType.End) } },
]);
});
});
From bb92a4574c0bf6601c9c4f35ce4fe76ecb74f0df Mon Sep 17 00:00:00 2001
From: Greg Leonard <45019882+greg-el@users.noreply.github.com>
Date: Mon, 7 Aug 2023 17:37:12 +0100
Subject: [PATCH 003/341] Add Vimeo tracking plugin (close #1156)
PR: #1212
This commit adds a plugin to automatically track Vimeo videos, utilising the Snowplow Media plugin.
---
...ue-1156-vimeo_plugin_2023-06-27-11-42.json | 10 +
...ue-1156-vimeo_plugin_2023-06-27-11-42.json | 10 +
.../rush/browser-approved-packages.json | 82 ++----
common/config/rush/pnpm-lock.yaml | 139 ++++++---
common/config/rush/repo-state.json | 2 +-
.../browser-plugin-vimeo-tracking/.gitignore | 3 +
plugins/browser-plugin-vimeo-tracking/LICENSE | 29 ++
.../browser-plugin-vimeo-tracking/README.md | 59 ++++
.../jest.config.js | 5 +
.../package.json | 55 ++++
.../rollup.config.js | 37 +++
.../src/events.ts | 106 +++++++
.../src/index.ts | 17 ++
.../src/initialization.ts | 108 +++++++
.../src/mediaPluginBinding.ts | 202 +++++++++++++
.../src/schema.ts | 25 ++
.../src/types.ts | 196 +++++++++++++
.../src/utils.ts | 121 ++++++++
.../test/vimeo.test.ts | 54 ++++
.../tsconfig.json | 3 +
rush.json | 6 +
trackers/javascript-tracker/package.json | 2 +
trackers/javascript-tracker/src/features.ts | 12 +
.../test/integration/vimeo.test.ts | 272 ++++++++++++++++++
.../test/pages/vimeo/iframe.html | 52 ++++
.../test/pages/vimeo/player.html | 54 ++++
trackers/javascript-tracker/tracker.config.ts | 2 +
.../javascript-tracker/tracker.lite.config.ts | 2 +
.../javascript-tracker/tracker.test.config.ts | 2 +
29 files changed, 1572 insertions(+), 95 deletions(-)
create mode 100644 common/changes/@snowplow/browser-plugin-vimeo-tracking/issue-1156-vimeo_plugin_2023-06-27-11-42.json
create mode 100644 common/changes/@snowplow/javascript-tracker/issue-1156-vimeo_plugin_2023-06-27-11-42.json
create mode 100644 plugins/browser-plugin-vimeo-tracking/.gitignore
create mode 100644 plugins/browser-plugin-vimeo-tracking/LICENSE
create mode 100644 plugins/browser-plugin-vimeo-tracking/README.md
create mode 100644 plugins/browser-plugin-vimeo-tracking/jest.config.js
create mode 100644 plugins/browser-plugin-vimeo-tracking/package.json
create mode 100644 plugins/browser-plugin-vimeo-tracking/rollup.config.js
create mode 100644 plugins/browser-plugin-vimeo-tracking/src/events.ts
create mode 100644 plugins/browser-plugin-vimeo-tracking/src/index.ts
create mode 100644 plugins/browser-plugin-vimeo-tracking/src/initialization.ts
create mode 100644 plugins/browser-plugin-vimeo-tracking/src/mediaPluginBinding.ts
create mode 100644 plugins/browser-plugin-vimeo-tracking/src/schema.ts
create mode 100644 plugins/browser-plugin-vimeo-tracking/src/types.ts
create mode 100644 plugins/browser-plugin-vimeo-tracking/src/utils.ts
create mode 100644 plugins/browser-plugin-vimeo-tracking/test/vimeo.test.ts
create mode 100644 plugins/browser-plugin-vimeo-tracking/tsconfig.json
create mode 100644 trackers/javascript-tracker/test/integration/vimeo.test.ts
create mode 100644 trackers/javascript-tracker/test/pages/vimeo/iframe.html
create mode 100644 trackers/javascript-tracker/test/pages/vimeo/player.html
diff --git a/common/changes/@snowplow/browser-plugin-vimeo-tracking/issue-1156-vimeo_plugin_2023-06-27-11-42.json b/common/changes/@snowplow/browser-plugin-vimeo-tracking/issue-1156-vimeo_plugin_2023-06-27-11-42.json
new file mode 100644
index 000000000..82d1f2082
--- /dev/null
+++ b/common/changes/@snowplow/browser-plugin-vimeo-tracking/issue-1156-vimeo_plugin_2023-06-27-11-42.json
@@ -0,0 +1,10 @@
+{
+ "changes": [
+ {
+ "packageName": "@snowplow/browser-plugin-vimeo-tracking",
+ "comment": "Add Vimeo tracking plugin (close #1156)",
+ "type": "none"
+ }
+ ],
+ "packageName": "@snowplow/browser-plugin-vimeo-tracking"
+}
\ No newline at end of file
diff --git a/common/changes/@snowplow/javascript-tracker/issue-1156-vimeo_plugin_2023-06-27-11-42.json b/common/changes/@snowplow/javascript-tracker/issue-1156-vimeo_plugin_2023-06-27-11-42.json
new file mode 100644
index 000000000..ae2f53795
--- /dev/null
+++ b/common/changes/@snowplow/javascript-tracker/issue-1156-vimeo_plugin_2023-06-27-11-42.json
@@ -0,0 +1,10 @@
+{
+ "changes": [
+ {
+ "packageName": "@snowplow/javascript-tracker",
+ "comment": "",
+ "type": "none"
+ }
+ ],
+ "packageName": "@snowplow/javascript-tracker"
+}
\ No newline at end of file
diff --git a/common/config/rush/browser-approved-packages.json b/common/config/rush/browser-approved-packages.json
index 7be9b8244..c898dc7ff 100644
--- a/common/config/rush/browser-approved-packages.json
+++ b/common/config/rush/browser-approved-packages.json
@@ -26,22 +26,6 @@
"name": "@rollup/plugin-replace",
"allowedCategories": [ "trackers" ]
},
- {
- "name": "@snowplow/browser-core",
- "allowedCategories": [ "plugins", "trackers" ]
- },
- {
- "name": "@snowplow/browser-detectors",
- "allowedCategories": [ "trackers" ]
- },
- {
- "name": "@snowplow/browser-environment",
- "allowedCategories": [ "libraries" ]
- },
- {
- "name": "@snowplow/browser-helpers",
- "allowedCategories": [ "plugins", "trackers" ]
- },
{
"name": "@snowplow/browser-plugin-ad-tracking",
"allowedCategories": [ "trackers" ]
@@ -58,10 +42,6 @@
"name": "@snowplow/browser-plugin-consent",
"allowedCategories": [ "trackers" ]
},
- {
- "name": "@snowplow/browser-plugin-core",
- "allowedCategories": [ "plugins" ]
- },
{
"name": "@snowplow/browser-plugin-ecommerce",
"allowedCategories": [ "trackers" ]
@@ -86,10 +66,6 @@
"name": "@snowplow/browser-plugin-ga-cookies",
"allowedCategories": [ "trackers" ]
},
- {
- "name": "@snowplow/browser-plugin-gdpr",
- "allowedCategories": [ "trackers" ]
- },
{
"name": "@snowplow/browser-plugin-geolocation",
"allowedCategories": [ "trackers" ]
@@ -98,6 +74,10 @@
"name": "@snowplow/browser-plugin-link-click-tracking",
"allowedCategories": [ "trackers" ]
},
+ {
+ "name": "@snowplow/browser-plugin-media",
+ "allowedCategories": [ "plugins", "trackers" ]
+ },
{
"name": "@snowplow/browser-plugin-media-tracking",
"allowedCategories": [ "trackers" ]
@@ -127,7 +107,7 @@
"allowedCategories": [ "trackers" ]
},
{
- "name": "@snowplow/browser-plugin-web-vitals",
+ "name": "@snowplow/browser-plugin-vimeo-tracking",
"allowedCategories": [ "trackers" ]
},
{
@@ -142,10 +122,6 @@
"name": "@snowplow/browser-tracker-core",
"allowedCategories": [ "plugins", "trackers" ]
},
- {
- "name": "@snowplow/plugin-core",
- "allowedCategories": [ "libraries", "plugins" ]
- },
{
"name": "@snowplow/tracker-core",
"allowedCategories": [ "libraries", "plugins", "trackers" ]
@@ -164,19 +140,15 @@
},
{
"name": "@types/jstimezonedetect",
- "allowedCategories": [ "libraries", "plugins", "trackers" ]
+ "allowedCategories": [ "plugins" ]
},
{
"name": "@types/lodash",
- "allowedCategories": [ "libraries", "plugins", "trackers" ]
- },
- {
- "name": "@types/nock",
- "allowedCategories": [ "trackers" ]
+ "allowedCategories": [ "plugins", "trackers" ]
},
{
"name": "@types/node",
- "allowedCategories": [ "libraries", "plugins", "trackers" ]
+ "allowedCategories": [ "libraries", "trackers" ]
},
{
"name": "@types/node-fetch",
@@ -188,7 +160,7 @@
},
{
"name": "@types/sha1",
- "allowedCategories": [ "libraries", "trackers" ]
+ "allowedCategories": [ "libraries" ]
},
{
"name": "@types/sinon",
@@ -196,7 +168,11 @@
},
{
"name": "@types/uuid",
- "allowedCategories": [ "libraries", "plugins", "trackers" ]
+ "allowedCategories": [ "libraries", "plugins" ]
+ },
+ {
+ "name": "@types/vimeo__player",
+ "allowedCategories": [ "plugins" ]
},
{
"name": "@types/youtube",
@@ -210,6 +186,10 @@
"name": "@typescript-eslint/parser",
"allowedCategories": [ "libraries", "plugins", "trackers" ]
},
+ {
+ "name": "@vimeo/player",
+ "allowedCategories": [ "plugins" ]
+ },
{
"name": "@wdio/cli",
"allowedCategories": [ "trackers" ]
@@ -248,7 +228,7 @@
},
{
"name": "ava",
- "allowedCategories": [ "libraries", "plugins", "trackers" ]
+ "allowedCategories": [ "libraries", "trackers" ]
},
{
"name": "chalk",
@@ -294,21 +274,13 @@
"name": "jest-standard-reporter",
"allowedCategories": [ "libraries", "plugins", "trackers" ]
},
- {
- "name": "jsdom",
- "allowedCategories": [ "libraries" ]
- },
- {
- "name": "jsdom-global",
- "allowedCategories": [ "libraries" ]
- },
{
"name": "jstimezonedetect",
- "allowedCategories": [ "libraries", "plugins", "trackers" ]
+ "allowedCategories": [ "plugins" ]
},
{
"name": "lodash",
- "allowedCategories": [ "libraries", "plugins", "trackers" ]
+ "allowedCategories": [ "plugins", "trackers" ]
},
{
"name": "moment-timezone",
@@ -326,10 +298,6 @@
"name": "npm-run-all",
"allowedCategories": [ "trackers" ]
},
- {
- "name": "prettier",
- "allowedCategories": [ "libraries", "plugins", "trackers" ]
- },
{
"name": "randomcolor",
"allowedCategories": [ "plugins" ]
@@ -344,7 +312,7 @@
},
{
"name": "rollup-plugin-filesize",
- "allowedCategories": [ "plugins", "trackers" ]
+ "allowedCategories": [ "trackers" ]
},
{
"name": "rollup-plugin-license",
@@ -368,7 +336,7 @@
},
{
"name": "sha1",
- "allowedCategories": [ "libraries", "trackers" ]
+ "allowedCategories": [ "libraries" ]
},
{
"name": "sinon",
@@ -380,7 +348,7 @@
},
{
"name": "ts-node",
- "allowedCategories": [ "libraries", "plugins", "trackers" ]
+ "allowedCategories": [ "libraries", "trackers" ]
},
{
"name": "tslib",
@@ -392,7 +360,7 @@
},
{
"name": "uuid",
- "allowedCategories": [ "libraries", "plugins", "trackers" ]
+ "allowedCategories": [ "libraries", "plugins" ]
},
{
"name": "wdio-chromedriver-service",
diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml
index 66c824323..0afcff1f7 100644
--- a/common/config/rush/pnpm-lock.yaml
+++ b/common/config/rush/pnpm-lock.yaml
@@ -1231,6 +1231,61 @@ importers:
ts-jest: 27.1.3_60149d457e34ffba7d4e845dde6a1263
typescript: 4.6.2
+ ../../plugins/browser-plugin-vimeo-tracking:
+ specifiers:
+ '@ampproject/rollup-plugin-closure-compiler': ~0.27.0
+ '@rollup/plugin-commonjs': ~21.0.2
+ '@rollup/plugin-node-resolve': ~13.1.3
+ '@snowplow/browser-plugin-media': workspace:*
+ '@snowplow/browser-tracker-core': workspace:*
+ '@snowplow/tracker-core': workspace:*
+ '@types/jest': ~27.4.1
+ '@types/jsdom': ~16.2.14
+ '@types/vimeo__player': ~2.16.3
+ '@typescript-eslint/eslint-plugin': ~5.15.0
+ '@typescript-eslint/parser': ~5.15.0
+ '@vimeo/player': 2.16.4
+ eslint: ~8.11.0
+ jest: ~27.5.1
+ jest-environment-jsdom: ~27.5.1
+ jest-environment-jsdom-global: ~3.0.0
+ jest-standard-reporter: ~2.0.0
+ rollup: ~2.70.1
+ rollup-plugin-cleanup: ~3.2.1
+ rollup-plugin-license: ~2.6.1
+ rollup-plugin-terser: ~7.0.2
+ rollup-plugin-ts: ~2.0.5
+ ts-jest: ~27.1.3
+ tslib: ^2.3.1
+ typescript: ~4.6.2
+ dependencies:
+ '@snowplow/browser-plugin-media': link:../browser-plugin-media
+ '@snowplow/browser-tracker-core': link:../../libraries/browser-tracker-core
+ '@snowplow/tracker-core': link:../../libraries/tracker-core
+ '@vimeo/player': 2.16.4
+ tslib: 2.3.1
+ devDependencies:
+ '@ampproject/rollup-plugin-closure-compiler': 0.27.0_rollup@2.70.1
+ '@rollup/plugin-commonjs': 21.0.2_rollup@2.70.1
+ '@rollup/plugin-node-resolve': 13.1.3_rollup@2.70.1
+ '@types/jest': 27.4.1
+ '@types/jsdom': 16.2.14
+ '@types/vimeo__player': 2.16.3
+ '@typescript-eslint/eslint-plugin': 5.15.0_f2c49ce7d0e93ebcfdb4b7d25b131b28
+ '@typescript-eslint/parser': 5.15.0_eslint@8.11.0+typescript@4.6.2
+ eslint: 8.11.0
+ jest: 27.5.1
+ jest-environment-jsdom: 27.5.1
+ jest-environment-jsdom-global: 3.0.0_jest-environment-jsdom@27.5.1
+ jest-standard-reporter: 2.0.0
+ rollup: 2.70.1
+ rollup-plugin-cleanup: 3.2.1_rollup@2.70.1
+ rollup-plugin-license: 2.6.1_rollup@2.70.1
+ rollup-plugin-terser: 7.0.2_rollup@2.70.1
+ rollup-plugin-ts: 2.0.5_rollup@2.70.1+typescript@4.6.2
+ ts-jest: 27.1.3_60149d457e34ffba7d4e845dde6a1263
+ typescript: 4.6.2
+
../../plugins/browser-plugin-web-vitals:
specifiers:
'@ampproject/rollup-plugin-closure-compiler': ~0.27.0
@@ -1406,6 +1461,7 @@ importers:
'@snowplow/browser-plugin-ga-cookies': workspace:*
'@snowplow/browser-plugin-geolocation': workspace:*
'@snowplow/browser-plugin-link-click-tracking': workspace:*
+ '@snowplow/browser-plugin-media': workspace:*
'@snowplow/browser-plugin-media-tracking': workspace:*
'@snowplow/browser-plugin-optimizely': workspace:*
'@snowplow/browser-plugin-optimizely-x': workspace:*
@@ -1413,6 +1469,7 @@ importers:
'@snowplow/browser-plugin-site-tracking': workspace:*
'@snowplow/browser-plugin-snowplow-ecommerce': workspace:*
'@snowplow/browser-plugin-timezone': workspace:*
+ '@snowplow/browser-plugin-vimeo-tracking': workspace:*
'@snowplow/browser-plugin-youtube-tracking': workspace:*
'@snowplow/browser-tracker': workspace:*
'@snowplow/browser-tracker-core': workspace:*
@@ -1472,6 +1529,7 @@ importers:
'@snowplow/browser-plugin-ga-cookies': link:../../plugins/browser-plugin-ga-cookies
'@snowplow/browser-plugin-geolocation': link:../../plugins/browser-plugin-geolocation
'@snowplow/browser-plugin-link-click-tracking': link:../../plugins/browser-plugin-link-click-tracking
+ '@snowplow/browser-plugin-media': link:../../plugins/browser-plugin-media
'@snowplow/browser-plugin-media-tracking': link:../../plugins/browser-plugin-media-tracking
'@snowplow/browser-plugin-optimizely': link:../../plugins/browser-plugin-optimizely
'@snowplow/browser-plugin-optimizely-x': link:../../plugins/browser-plugin-optimizely-x
@@ -1479,6 +1537,7 @@ importers:
'@snowplow/browser-plugin-site-tracking': link:../../plugins/browser-plugin-site-tracking
'@snowplow/browser-plugin-snowplow-ecommerce': link:../../plugins/browser-plugin-snowplow-ecommerce
'@snowplow/browser-plugin-timezone': link:../../plugins/browser-plugin-timezone
+ '@snowplow/browser-plugin-vimeo-tracking': link:../../plugins/browser-plugin-vimeo-tracking
'@snowplow/browser-plugin-youtube-tracking': link:../../plugins/browser-plugin-youtube-tracking
'@snowplow/browser-tracker': link:../browser-tracker
'@snowplow/browser-tracker-core': link:../../libraries/browser-tracker-core
@@ -2545,7 +2604,7 @@ packages:
engines: {node: '>= 8.0.0'}
dependencies:
estree-walker: 2.0.2
- picomatch: 2.2.2
+ picomatch: 2.3.1
dev: true
/@sinclair/typebox/0.25.21:
@@ -2876,6 +2935,10 @@ packages:
resolution: {integrity: sha512-XDwyIlt/47l2kWLTzw/mtrpLdB+GPSskR2n/PIcPn+VYhVO77rGhRncIR5GPU0KRzXuqkDO+J5qqrG0Y8P6jzQ==}
dev: true
+ /@types/vimeo__player/2.16.3:
+ resolution: {integrity: sha512-hsOe6CZFTNyfjRjQUrNHBF4LDmjvjcU2yQIPWp5AglKeGxt11JYGToQhKUPM876gBXggqR6rMQ0/sNI06ec2Rg==}
+ dev: true
+
/@types/which/2.0.1:
resolution: {integrity: sha512-Jjakcv8Roqtio6w1gr0D7y6twbhx6gGgFGF5BLwajPpnOIOxFkakFhCq+LmyyeAz7BX6ULrjBOxdKaCDy+4+dQ==}
dev: true
@@ -3046,6 +3109,13 @@ packages:
eslint-visitor-keys: 3.3.0
dev: true
+ /@vimeo/player/2.16.4:
+ resolution: {integrity: sha512-i+ids9ziQuai3mp8XzF9Q5b2hLgRCekRcefdnoy+RkKUR8Xq0cJndnk9jHugEOw8v6PLj7tO3eEAw4lu2/AG2Q==}
+ dependencies:
+ native-promise-only: 0.8.1
+ weakmap-polyfill: 2.0.4
+ dev: false
+
/@wdio/cli/8.3.5_typescript@4.6.2:
resolution: {integrity: sha512-xg/03aYpMCEWdcc9dY/GmPePfzTR/yMRJLwtp5WWYrCl6eEAeViSpf4PLC6ieC5O6IMLWVR/2Os8DrC5PKQq/Q==}
engines: {node: ^16.13 || >=18}
@@ -3646,7 +3716,7 @@ packages:
dev: true
/asynckit/0.4.0:
- resolution: {integrity: sha1-x57Zf380y48robyXkLzDZkdLS3k=}
+ resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
dev: true
/ava/4.1.0:
@@ -3800,7 +3870,7 @@ packages:
dev: true
/balanced-match/1.0.0:
- resolution: {integrity: sha1-ibTRmasr7kneFk6gK4nORi1xt2c=}
+ resolution: {integrity: sha512-9Y0g0Q8rmSt+H33DfKv7FOc3v+iRI+o1lbzt8jGcIosYW37IIW/2XVYq5NPdmaD5NQ59Nk26Kl/vZbwW9Fr8vg==}
dev: true
/base64-js/1.5.1:
@@ -4503,7 +4573,7 @@ packages:
dev: true
/color-name/1.1.3:
- resolution: {integrity: sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=}
+ resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==}
dev: true
/color-name/1.1.4:
@@ -4957,7 +5027,7 @@ packages:
dev: true
/delayed-stream/1.0.0:
- resolution: {integrity: sha1-3zrhmayt+31ECqrgsp4icrJOxhk=}
+ resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
engines: {node: '>=0.4.0'}
dev: true
@@ -5316,7 +5386,7 @@ packages:
dev: true
/escape-string-regexp/1.0.5:
- resolution: {integrity: sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=}
+ resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
engines: {node: '>=0.8.0'}
dev: true
@@ -6528,7 +6598,7 @@ packages:
dependencies:
'@tootallnate/once': 1.1.2
agent-base: 6.0.2
- debug: 4.3.3
+ debug: 4.3.4
transitivePeerDependencies:
- supports-color
dev: true
@@ -6660,7 +6730,7 @@ packages:
dev: true
/imurmurhash/0.1.4:
- resolution: {integrity: sha1-khi5srkoojixPcT7a21XbyMUU+o=}
+ resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
engines: {node: '>=0.8.19'}
dev: true
@@ -6751,7 +6821,7 @@ packages:
dev: true
/is-arrayish/0.2.1:
- resolution: {integrity: sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=}
+ resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==}
dev: true
/is-binary-path/2.1.0:
@@ -6801,7 +6871,7 @@ packages:
dev: true
/is-extglob/2.1.1:
- resolution: {integrity: sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=}
+ resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
engines: {node: '>=0.10.0'}
dev: true
@@ -6940,7 +7010,7 @@ packages:
dev: true
/is-typedarray/1.0.0:
- resolution: {integrity: sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=}
+ resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==}
dev: true
/is-unicode-supported/1.1.0:
@@ -7457,11 +7527,11 @@ packages:
'@jest/types': 26.6.2
'@types/stack-utils': 2.0.0
chalk: 4.1.2
- graceful-fs: 4.2.4
- micromatch: 4.0.2
+ graceful-fs: 4.2.9
+ micromatch: 4.0.4
pretty-format: 26.6.2
slash: 3.0.0
- stack-utils: 2.0.3
+ stack-utils: 2.0.5
dev: true
/jest-message-util/27.5.1:
@@ -7680,9 +7750,9 @@ packages:
'@jest/types': 26.6.2
'@types/node': 14.6.4
chalk: 4.1.2
- graceful-fs: 4.2.4
+ graceful-fs: 4.2.9
is-ci: 2.0.0
- micromatch: 4.0.2
+ micromatch: 4.0.4
dev: true
/jest-util/27.5.1:
@@ -7928,7 +7998,7 @@ packages:
engines: {node: '>=6'}
hasBin: true
dependencies:
- minimist: 1.2.5
+ minimist: 1.2.8
dev: true
/jsonfile/6.1.0:
@@ -8342,14 +8412,6 @@ packages:
resolution: {integrity: sha512-lkJ3Rj/mtjlRcHk6YyCbvZhyWTOzdBvTHsxMmZSk5jxN1YyVSQ+JETAom55mdzfcyDrY/49Z7UCW760BK30crg==}
dev: true
- /micromatch/4.0.2:
- resolution: {integrity: sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==}
- engines: {node: '>=8'}
- dependencies:
- braces: 3.0.2
- picomatch: 2.2.2
- dev: true
-
/micromatch/4.0.4:
resolution: {integrity: sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==}
engines: {node: '>=8.6'}
@@ -8586,6 +8648,10 @@ packages:
dev: true
optional: true
+ /native-promise-only/0.8.1:
+ resolution: {integrity: sha512-zkVhZUA3y8mbz652WrL5x0fB0ehrBkulWT3TomAQ9iDtyXZvzKeEA6GPxAItBYeNYl5yngKRX612qHOhvMkDeg==}
+ dev: false
+
/natural-compare/1.4.0:
resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
dev: true
@@ -9297,7 +9363,7 @@ packages:
dev: true
/path/0.12.7:
- resolution: {integrity: sha1-1NwqUGxM4hl+tIHr/NWzbAFAsQ8=}
+ resolution: {integrity: sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q==}
dependencies:
process: 0.11.10
util: 0.10.4
@@ -9485,7 +9551,7 @@ packages:
dev: true
/process/0.11.10:
- resolution: {integrity: sha1-czIwDoQBYb2j5podHZGn1LwW8YI=}
+ resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==}
engines: {node: '>= 0.6.0'}
dev: true
@@ -9960,6 +10026,7 @@ packages:
/rollup-plugin-terser/7.0.2_rollup@2.70.1:
resolution: {integrity: sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==}
+ deprecated: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-terser
peerDependencies:
rollup: ^2.0.0
dependencies:
@@ -10311,7 +10378,7 @@ packages:
dev: true
/source-map/0.5.7:
- resolution: {integrity: sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=}
+ resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==}
engines: {node: '>=0.10.0'}
dev: true
@@ -10392,7 +10459,7 @@ packages:
dev: true
/sprintf-js/1.0.3:
- resolution: {integrity: sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=}
+ resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==}
dev: true
/ssh2/1.5.0:
@@ -10430,13 +10497,6 @@ packages:
minipass: 3.3.4
dev: true
- /stack-utils/2.0.3:
- resolution: {integrity: sha512-gL//fkxfWUsIlFL2Tl42Cl6+HFALEaB1FU76I/Fy+oZjRreP7OPMXFlGbxM7NQsI0ZpUfw76sHnv0WNYuTb7Iw==}
- engines: {node: '>=10'}
- dependencies:
- escape-string-regexp: 2.0.0
- dev: true
-
/stack-utils/2.0.5:
resolution: {integrity: sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==}
engines: {node: '>=10'}
@@ -10771,7 +10831,7 @@ packages:
dev: true
/text-table/0.2.0:
- resolution: {integrity: sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=}
+ resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
dev: true
/throat/6.0.1:
@@ -11321,6 +11381,11 @@ packages:
- supports-color
dev: true
+ /weakmap-polyfill/2.0.4:
+ resolution: {integrity: sha512-ZzxBf288iALJseijWelmECm/1x7ZwQn3sMYIkDr2VvZp7r6SEKuT8D0O9Wiq6L9Nl5mazrOMcmiZE/2NCenaxw==}
+ engines: {node: '>=8.10.0'}
+ dev: false
+
/web-streams-polyfill/3.2.1:
resolution: {integrity: sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==}
engines: {node: '>= 8'}
diff --git a/common/config/rush/repo-state.json b/common/config/rush/repo-state.json
index e4a46e960..d7b879a75 100644
--- a/common/config/rush/repo-state.json
+++ b/common/config/rush/repo-state.json
@@ -1,5 +1,5 @@
// DO NOT MODIFY THIS FILE MANUALLY BUT DO COMMIT IT. It is generated and used by Rush.
{
- "pnpmShrinkwrapHash": "c0609797f2587b31945d0f4e1ef5755136269ae6",
+ "pnpmShrinkwrapHash": "8dee87dc9d46510a27807789c4f80af0823ce444",
"preferredVersionsHash": "bf21a9e8fbc5a3846fb05b4fa0859e0917b2202f"
}
diff --git a/plugins/browser-plugin-vimeo-tracking/.gitignore b/plugins/browser-plugin-vimeo-tracking/.gitignore
new file mode 100644
index 000000000..0e796c3f1
--- /dev/null
+++ b/plugins/browser-plugin-vimeo-tracking/.gitignore
@@ -0,0 +1,3 @@
+node_modules
+dist
+build
\ No newline at end of file
diff --git a/plugins/browser-plugin-vimeo-tracking/LICENSE b/plugins/browser-plugin-vimeo-tracking/LICENSE
new file mode 100644
index 000000000..b91bf94ae
--- /dev/null
+++ b/plugins/browser-plugin-vimeo-tracking/LICENSE
@@ -0,0 +1,29 @@
+BSD 3-Clause License
+
+Copyright (c) 2023 Snowplow Analytics Ltd
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+3. Neither the name of the copyright holder nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/plugins/browser-plugin-vimeo-tracking/README.md b/plugins/browser-plugin-vimeo-tracking/README.md
new file mode 100644
index 000000000..e89392e6f
--- /dev/null
+++ b/plugins/browser-plugin-vimeo-tracking/README.md
@@ -0,0 +1,59 @@
+# Snowplow vimeo-tracking Plugin
+
+[![npm version][npm-image]][npm-url]
+[![License][license-image]](LICENSE)
+
+Browser Plugin to be used with `@snowplow/browser-tracker`.
+
+This plugin enables automatic tracking of Vimeo videos, utilizing the [Snowplow Media Plugin](https://docs.snowplowanalytics.com/docs/collecting-data/collecting-from-own-applications/javascript-trackers/browser-tracker/browser-tracker-v3-reference/plugins/media-tracking/)
+
+## Maintainer quick start
+
+Part of the Snowplow JavaScript Tracker monorepo.
+Build with [Node.js](https://nodejs.org/en/) (14 or 16) and [Rush](https://rushjs.io/).
+
+### Setup repository
+
+```bash
+npm install -g @microsoft/rush
+git clone https://github.com/snowplow/snowplow-javascript-tracker.git
+rush update
+```
+
+## Package Installation
+
+With npm:
+
+```bash
+npm install @snowplow/browser-plugin-vimeo-tracking
+```
+
+## Usage
+
+Initialize your tracker with the Vimeo tracking plugin:
+
+```js
+import { newTracker } from '@snowplow/browser-tracker';
+import { VimeoTrackingPlujgin } from '@snowplow/browser-plugin-vimeo-tracking';
+
+newTracker('sp1', '{{collector_url}}', {
+ appId: 'my-app-id',
+ plugins: [ VimeoTrackingPlugin() ],
+});
+```
+
+For a full API reference, you can read the plugin [documentation page](https://docs.snowplow.io/docs/collecting-data/collecting-from-own-applications/javascript-trackers/browser-tracker/browser-tracker-v3-reference/plugins/vimeo-tracking/).
+
+## Copyright and license
+
+Licensed and distributed under the [BSD 3-Clause License](LICENSE) ([An OSI Approved License][osi]).
+
+Copyright (c) 2023 Snowplow Analytics Ltd.
+
+All rights reserved.
+
+[npm-url]: https://www.npmjs.com/package/@snowplow/browser-plugin-vimeo-tracking
+[npm-image]: https://img.shields.io/npm/v/@snowplow/browser-plugin-vimeo-tracking
+[docs]: https://docs.snowplowanalytics.com/docs/collecting-data/collecting-from-own-applications/javascript-tracker/
+[osi]: https://opensource.org/licenses/BSD-3-Clause
+[license-image]: https://img.shields.io/npm/l/@snowplow/browser-plugin-vimeo-tracking
diff --git a/plugins/browser-plugin-vimeo-tracking/jest.config.js b/plugins/browser-plugin-vimeo-tracking/jest.config.js
new file mode 100644
index 000000000..bd3ea4e2a
--- /dev/null
+++ b/plugins/browser-plugin-vimeo-tracking/jest.config.js
@@ -0,0 +1,5 @@
+module.exports = {
+ preset: 'ts-jest',
+ reporters: ['jest-standard-reporter'],
+ testEnvironment: 'jest-environment-jsdom-global',
+};
diff --git a/plugins/browser-plugin-vimeo-tracking/package.json b/plugins/browser-plugin-vimeo-tracking/package.json
new file mode 100644
index 000000000..865f17453
--- /dev/null
+++ b/plugins/browser-plugin-vimeo-tracking/package.json
@@ -0,0 +1,55 @@
+{
+ "name": "@snowplow/browser-plugin-vimeo-tracking",
+ "version": "3.13.1",
+ "description": "Vimeo tracking for Snowplow",
+ "homepage": "https://github.com/snowplow/snowplow-javascript-tracker",
+ "bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/snowplow/snowplow-javascript-tracker.git"
+ },
+ "license": "BSD-3-Clause",
+ "author": "Snowplow Analytics Ltd (https://snowplow.io/)",
+ "main": "./dist/index.umd.js",
+ "module": "./dist/index.module.js",
+ "types": "./dist/index.module.d.ts",
+ "files": [
+ "dist"
+ ],
+ "scripts": {
+ "build": "rollup -c --silent --failAfterWarnings",
+ "test": "jest"
+ },
+ "dependencies": {
+ "@snowplow/browser-tracker-core": "workspace:*",
+ "@snowplow/tracker-core": "workspace:*",
+ "@snowplow/browser-plugin-media": "workspace:*",
+ "tslib": "^2.3.1",
+ "@vimeo/player": "2.16.4"
+ },
+ "devDependencies": {
+ "@ampproject/rollup-plugin-closure-compiler": "~0.27.0",
+ "@rollup/plugin-commonjs": "~21.0.2",
+ "@rollup/plugin-node-resolve": "~13.1.3",
+ "@types/jest": "~27.4.1",
+ "@types/jsdom": "~16.2.14",
+ "@types/vimeo__player": "~2.16.3",
+ "@typescript-eslint/eslint-plugin": "~5.15.0",
+ "@typescript-eslint/parser": "~5.15.0",
+ "eslint": "~8.11.0",
+ "jest": "~27.5.1",
+ "jest-environment-jsdom": "~27.5.1",
+ "jest-environment-jsdom-global": "~3.0.0",
+ "jest-standard-reporter": "~2.0.0",
+ "rollup": "~2.70.1",
+ "rollup-plugin-cleanup": "~3.2.1",
+ "rollup-plugin-license": "~2.6.1",
+ "rollup-plugin-terser": "~7.0.2",
+ "rollup-plugin-ts": "~2.0.5",
+ "ts-jest": "~27.1.3",
+ "typescript": "~4.6.2"
+ },
+ "peerDependencies": {
+ "@snowplow/browser-tracker": "~3.13.1"
+ }
+}
diff --git a/plugins/browser-plugin-vimeo-tracking/rollup.config.js b/plugins/browser-plugin-vimeo-tracking/rollup.config.js
new file mode 100644
index 000000000..474f254a8
--- /dev/null
+++ b/plugins/browser-plugin-vimeo-tracking/rollup.config.js
@@ -0,0 +1,37 @@
+import { nodeResolve } from '@rollup/plugin-node-resolve';
+import commonjs from '@rollup/plugin-commonjs';
+import ts from 'rollup-plugin-ts'; // Prefered over @rollup/plugin-typescript as it bundles .d.ts files
+import { banner } from '../../banner';
+import compiler from '@ampproject/rollup-plugin-closure-compiler';
+import { terser } from 'rollup-plugin-terser';
+import cleanup from 'rollup-plugin-cleanup';
+import pkg from './package.json';
+import { builtinModules } from 'module';
+
+const umdPlugins = [nodeResolve({ browser: true }), commonjs(), ts()];
+const umdName = 'snowplowVimeoTracking';
+
+export default [
+ // CommonJS (for Node) and ES module (for bundlers) build.
+ {
+ input: './src/index.ts',
+ plugins: [...umdPlugins, banner()],
+ treeshake: { moduleSideEffects: ['sha1'] },
+ output: [{ file: pkg.main, format: 'umd', sourcemap: true, name: umdName }],
+ },
+ {
+ input: './src/index.ts',
+ plugins: [...umdPlugins, compiler(), terser(), cleanup({ comments: 'none' }), banner()],
+ treeshake: { moduleSideEffects: ['sha1'] },
+ output: [{ file: pkg.main.replace('.js', '.min.js'), format: 'umd', sourcemap: true, name: umdName }],
+ },
+ {
+ input: './src/index.ts',
+ external: [...builtinModules, ...Object.keys(pkg.dependencies), ...Object.keys(pkg.devDependencies)],
+ plugins: [
+ ts(), // so Rollup can convert TypeScript to JavaScript
+ banner(),
+ ],
+ output: { file: pkg.module, format: 'es', sourcemap: true },
+ },
+];
diff --git a/plugins/browser-plugin-vimeo-tracking/src/events.ts b/plugins/browser-plugin-vimeo-tracking/src/events.ts
new file mode 100644
index 000000000..073bdd9ab
--- /dev/null
+++ b/plugins/browser-plugin-vimeo-tracking/src/events.ts
@@ -0,0 +1,106 @@
+import { MediaEventType } from '@snowplow/browser-plugin-media/src/types';
+
+/** Events that can be passed into Vimeo's `on` method */
+export enum InternalVimeoEvent {
+ // Events with direct Media plugin event-sending functions
+ LOADED = 'loaded',
+ PLAY = 'play',
+ PAUSE = 'pause',
+ ENDED = 'ended',
+ SEEKING = 'seeking',
+ SEEKED = 'seeked',
+ ERROR = 'error',
+ BUFFERSTART = 'bufferstart',
+ BUFFEREND = 'bufferend',
+ VOLUMECHANGE = 'volumechange',
+ QUALITYCHANGE = 'qualitychange',
+ FULLSCREENCHANGE = 'fullscreenchange',
+ PLAYBACKRATECHANGE = 'playbackratechange',
+ ENTERPICTUREINPICTURE = 'enterpictureinpicture',
+ LEAVEPICTUREINPICTURE = 'leavepictureinpicture',
+
+ // Events that cause state updates in the Media plugin
+ TIMEUPDATE = 'timeupdate',
+ PROGRESS = 'progress',
+
+ // Events that send `trackMediaSelfDescribingEvent`
+ CUEPOINT = 'cuepoint',
+ CHAPTERCHANGE = 'chapterchange',
+ TEXTTRACKCHANGE = 'texttrackchange',
+ INTERACTIVEHOTSPOTCLICKED = 'interactivehotspotclicked',
+ INTERACTIVEOVERLAYPANELCLICKED = 'interactiveoverlaypanelclicked',
+}
+
+/** Vimeo-specific events not present in {@link MediaEventType}
+ *
+ * These are the values a user would place in `captureEvents`, to match the
+ * style of the existing events from the Media plugin
+ */
+export enum VimeoEventType {
+ CuePoint = 'cue_point',
+ ChapterChange = 'chapter_change',
+ TextTrackChange = 'text_track_change',
+ InteractiveHotSpotClicked = 'interactive_hot_spot_clicked',
+ InteractiveOverlayPanelClicked = 'interactive_overlay_panel_clicked',
+}
+
+// Events from InternalVimeoEvent that can be captured by the user
+// This allows us to only attached listeners to the InternalVimeoEvents that the user wants to capture
+export const CapturableInternalVimeoEvents: InternalVimeoEvent[] = [
+ InternalVimeoEvent.CUEPOINT,
+ InternalVimeoEvent.CHAPTERCHANGE,
+ InternalVimeoEvent.TEXTTRACKCHANGE,
+ InternalVimeoEvent.INTERACTIVEHOTSPOTCLICKED,
+ InternalVimeoEvent.INTERACTIVEOVERLAYPANELCLICKED,
+];
+
+// Internal Vimeo events that can't be disabled by the user
+export const AlwaysOnInternalVimeoEvents = [
+ InternalVimeoEvent.TIMEUPDATE, // Used to run `updateMediaTracking` at regular intervals (every ~250ms)
+ InternalVimeoEvent.PROGRESS, // Used to run `updateMediaTracking` when the video is buffering
+];
+
+// Events from the Media plugin that are automatically tracked with this plugin
+export type AvailableMediaEventType =
+ | MediaEventType.Ready
+ | MediaEventType.Play
+ | MediaEventType.Pause
+ | MediaEventType.End
+ | MediaEventType.SeekStart
+ | MediaEventType.SeekEnd
+ | MediaEventType.PlaybackRateChange
+ | MediaEventType.VolumeChange
+ | MediaEventType.FullscreenChange
+ | MediaEventType.PictureInPictureChange
+ | MediaEventType.Ping
+ | MediaEventType.PercentProgress
+ | MediaEventType.BufferStart
+ | MediaEventType.BufferEnd
+ | MediaEventType.QualityChange
+ | MediaEventType.Error;
+
+// Events from the Media plugin that are automatically tracked with this plugin
+export const AvailableMediaEventType = {
+ Ready: MediaEventType.Ready as VimeoEvent,
+ Play: MediaEventType.Play as VimeoEvent,
+ Pause: MediaEventType.Pause as VimeoEvent,
+ End: MediaEventType.End as VimeoEvent,
+ SeekStart: MediaEventType.SeekStart as VimeoEvent,
+ SeekEnd: MediaEventType.SeekEnd as VimeoEvent,
+ PlaybackRateChange: MediaEventType.PlaybackRateChange as VimeoEvent,
+ VolumeChange: MediaEventType.VolumeChange as VimeoEvent,
+ FullscreenChange: MediaEventType.FullscreenChange as VimeoEvent,
+ PictureInPictureChange: MediaEventType.PictureInPictureChange as VimeoEvent,
+ Ping: MediaEventType.Ping as VimeoEvent,
+ PercentProgress: MediaEventType.PercentProgress as VimeoEvent,
+ BufferStart: MediaEventType.BufferStart as VimeoEvent,
+ BufferEnd: MediaEventType.BufferEnd as VimeoEvent,
+ QualityChange: MediaEventType.QualityChange as VimeoEvent,
+ Error: MediaEventType.Error as VimeoEvent,
+};
+
+/** Events accepted by `VimeoTrackingConfiguration.captureEvents` */
+export type VimeoEvent = AvailableMediaEventType | VimeoEventType;
+export const VimeoEvent = { ...AvailableMediaEventType, ...VimeoEventType };
+
+export const AllEvents: VimeoEvent[] = [...Object.values(AvailableMediaEventType), ...Object.values(VimeoEventType)];
diff --git a/plugins/browser-plugin-vimeo-tracking/src/index.ts b/plugins/browser-plugin-vimeo-tracking/src/index.ts
new file mode 100644
index 000000000..d0f1ed301
--- /dev/null
+++ b/plugins/browser-plugin-vimeo-tracking/src/index.ts
@@ -0,0 +1,17 @@
+export { VimeoEvent } from './events';
+export { VimeoTrackingConfiguration } from './types';
+export { startVimeoTracking, endVimeoTracking, VimeoTrackingPlugin } from './initialization';
+export {
+ trackMediaAdBreakEnd,
+ trackMediaAdBreakStart,
+ trackMediaAdClick,
+ trackMediaAdComplete,
+ trackMediaAdFirstQuartile,
+ trackMediaAdMidpoint,
+ trackMediaAdPause,
+ trackMediaAdResume,
+ trackMediaAdSkip,
+ trackMediaAdStart,
+ trackMediaAdThirdQuartile,
+ trackMediaSelfDescribingEvent,
+} from '@snowplow/browser-plugin-media';
diff --git a/plugins/browser-plugin-vimeo-tracking/src/initialization.ts b/plugins/browser-plugin-vimeo-tracking/src/initialization.ts
new file mode 100644
index 000000000..aee05f6f8
--- /dev/null
+++ b/plugins/browser-plugin-vimeo-tracking/src/initialization.ts
@@ -0,0 +1,108 @@
+import Player, { EventMap } from '@vimeo/player';
+
+import { LOG } from '@snowplow/tracker-core';
+import { BrowserPlugin } from '@snowplow/browser-tracker-core';
+import { MediaEventType, MediaTrackingConfiguration, MediaType } from '@snowplow/browser-plugin-media/src/types';
+import { SnowplowMediaPlugin, endMediaTracking, startMediaTracking } from '@snowplow/browser-plugin-media';
+
+import { trackEvent } from './mediaPluginBinding';
+import { CapturableInternalVimeoEvents, InternalVimeoEvent } from './events';
+import { EventData, TrackedPlayer, VimeoTrackingConfiguration } from './types';
+import { filterVimeoEvents, getErrorCallback, getVimeoMediaAttributes } from './utils';
+
+export function VimeoTrackingPlugin(): BrowserPlugin {
+ return SnowplowMediaPlugin();
+}
+
+const trackedPlayers: Record = {};
+
+/** Start tracking a Vimeo Iframe element or existing Vimeo {@link Player} */
+export function startVimeoTracking(args: VimeoTrackingConfiguration): void {
+ const { video, ...config } = args;
+ if (video === undefined) {
+ LOG.error("Property 'video' is undefined");
+ } else if (video instanceof HTMLIFrameElement && video.nodeName !== 'IFRAME') {
+ LOG.error("Property 'video' is not an Iframe");
+ } else {
+ const internalConfig = filterVimeoEvents(config as VimeoTrackingConfiguration);
+
+ if ((video as HTMLIFrameElement).nodeName === 'IFRAME') {
+ startVimeoTrackingOnIframe(video as HTMLIFrameElement, internalConfig);
+ } else {
+ startVimeoTrackingOnPlayer(video as Player, internalConfig);
+ }
+ }
+}
+
+/**
+ * Ends media tracking with the given ID if previously started. Clears local state for the media tracking.
+ * Clears all listeners set by the plugin on the Vimeo player.
+ */
+export function endVimeoTracking(id: string): void {
+ const playerToEnd = trackedPlayers[id];
+ if (playerToEnd === undefined) {
+ LOG.error(`No Vimeo player found with ID ${id}`);
+ } else {
+ Object.entries(playerToEnd.eventListeners).forEach(([eventType, callback]) =>
+ playerToEnd.player.off(eventType as keyof EventMap, callback)
+ );
+ endMediaTracking({ id: playerToEnd.config.id });
+ }
+}
+
+/** Enables the tracking of Vimeo events on an Iframe */
+function startVimeoTrackingOnIframe(iframe: HTMLIFrameElement, config: VimeoTrackingConfiguration): void {
+ setInitialPlayerAttributes({
+ player: new Player(iframe),
+ config,
+ eventListeners: {},
+ });
+}
+
+/** Enables the tracking of Vimeo events on an existing Vimeo player */
+function startVimeoTrackingOnPlayer(player: Player, config: VimeoTrackingConfiguration): void {
+ setInitialPlayerAttributes({
+ player,
+ config,
+ eventListeners: {},
+ });
+}
+
+/** Set the initial Media plugin player configuration before tracking begins */
+async function setInitialPlayerAttributes(trackedPlayer: TrackedPlayer): Promise {
+ trackedPlayer.config.player = {
+ ...(await getVimeoMediaAttributes(trackedPlayer)),
+ ...trackedPlayer.config.player,
+ ...{ mediaType: MediaType.Video, playerType: 'com.vimeo' },
+ };
+
+ trackedPlayers[trackedPlayer.config.id] = trackedPlayer;
+ startTracking(trackedPlayer);
+}
+
+/** Attaches listeners to the Vimeo player for each event in {@link VimeoTrackingConfiguration.vimeoCaptureEvents | vimeoCaptureEvents} */
+async function startTracking(trackedPlayer: TrackedPlayer): Promise {
+ const errorCallback = getErrorCallback(trackedPlayer);
+
+ startMediaTracking(trackedPlayer.config as MediaTrackingConfiguration);
+
+ trackEvent(trackedPlayer, MediaEventType.Ready, {}, errorCallback);
+
+ // Track every event, event filtering is done by the Media Plugin
+ Object.keys(InternalVimeoEvent).forEach((eventName) => {
+ const eventType = InternalVimeoEvent[eventName as keyof typeof InternalVimeoEvent];
+ // Don't attach listeners for Vimeo events that haven't been passed in with the Media Plugin config
+ if (
+ CapturableInternalVimeoEvents.includes(eventType) &&
+ !trackedPlayer.config.vimeoCaptureEvents?.includes(eventType)
+ ) {
+ return;
+ }
+
+ // Create a named function to allow us to remove the listener later
+ const callback = (eventData: EventData | unknown) => trackEvent(trackedPlayer, eventType, eventData, errorCallback);
+ trackedPlayer.eventListeners[eventType] = callback;
+
+ trackedPlayer.player.on(eventType, callback);
+ });
+}
diff --git a/plugins/browser-plugin-vimeo-tracking/src/mediaPluginBinding.ts b/plugins/browser-plugin-vimeo-tracking/src/mediaPluginBinding.ts
new file mode 100644
index 000000000..4ec0ad300
--- /dev/null
+++ b/plugins/browser-plugin-vimeo-tracking/src/mediaPluginBinding.ts
@@ -0,0 +1,202 @@
+import { Error as VimeoError } from '@vimeo/player';
+
+import {
+ trackMediaBufferEnd,
+ trackMediaBufferStart,
+ trackMediaEnd,
+ trackMediaFullscreenChange,
+ trackMediaPause,
+ trackMediaPictureInPictureChange,
+ trackMediaPlay,
+ trackMediaPlaybackRateChange,
+ trackMediaQualityChange,
+ trackMediaReady,
+ trackMediaSeekEnd,
+ trackMediaSeekStart,
+ trackMediaSelfDescribingEvent,
+ trackMediaVolumeChange,
+ updateMediaTracking,
+} from '@snowplow/browser-plugin-media';
+import { MediaEventType, MediaPlayer } from '@snowplow/browser-plugin-media/src/types';
+
+import { getVimeoMetadata, getVimeoMediaAttributes } from './utils';
+import { VimeoSchema } from './schema';
+import { InternalVimeoEvent } from './events';
+import {
+ TrackedPlayer,
+ EventData,
+ EventType,
+ asVimeoInteractiveHotspotClickedData,
+ asVimeoInteractiveOverlayPanelClickedData,
+ asTextTrackData,
+ asTimeUpdateData,
+ asQualityChangeEvent,
+ asVimeoPlayerCuePointData,
+ asChapterData,
+} from './types';
+
+export function trackEvent(
+ trackedPlayer: TrackedPlayer,
+ eventType: EventType,
+ eventData: EventData | unknown = {},
+ trackError: (error: VimeoError) => void
+): void {
+ getVimeoMediaAttributes(trackedPlayer)
+ .then((mediaPlayer) => {
+ runMediaPluginFunction(mediaPlayer, trackedPlayer, eventType, eventData, trackError);
+ })
+ .catch(trackError);
+}
+
+/** Run the relevant Media plugin function for the event type */
+export function runMediaPluginFunction(
+ player: MediaPlayer,
+ trackedPlayer: TrackedPlayer,
+ eventType: EventType,
+ eventData: EventData | unknown = {},
+ trackError: (error: VimeoError) => void
+): void {
+ const id = trackedPlayer.config.id;
+
+ switch (eventType) {
+ case InternalVimeoEvent.PLAY:
+ trackMediaPlay({ id, player });
+ break;
+
+ case InternalVimeoEvent.PAUSE:
+ trackMediaPause({ id, player });
+ break;
+
+ case InternalVimeoEvent.ENDED:
+ trackMediaEnd({ id, player });
+ break;
+
+ case InternalVimeoEvent.SEEKING:
+ trackMediaSeekStart({ id, player });
+ break;
+
+ case InternalVimeoEvent.SEEKED:
+ trackMediaSeekEnd({ id, player });
+ break;
+
+ case InternalVimeoEvent.ERROR:
+ trackError(eventData as VimeoError);
+ break;
+
+ case InternalVimeoEvent.TIMEUPDATE:
+ updateMediaTracking({ id, player: { ...player, currentTime: asTimeUpdateData(eventData).seconds } });
+ break;
+
+ case InternalVimeoEvent.BUFFERSTART:
+ trackMediaBufferStart({ id, player });
+ break;
+
+ case InternalVimeoEvent.BUFFEREND:
+ trackMediaBufferEnd({ id, player });
+ break;
+
+ case InternalVimeoEvent.VOLUMECHANGE:
+ trackedPlayer.player
+ .getVolume()
+ .then((newVolume) => trackMediaVolumeChange({ id, player, newVolume: Math.round(newVolume * 100) }))
+ .catch(trackError);
+ break;
+
+ case InternalVimeoEvent.FULLSCREENCHANGE:
+ trackedPlayer.player
+ .getFullscreen()
+ .then((fullscreen) => trackMediaFullscreenChange({ id, player, fullscreen }))
+ .catch(trackError);
+ break;
+
+ case InternalVimeoEvent.PLAYBACKRATECHANGE:
+ trackedPlayer.player
+ .getPlaybackRate()
+ .then((newRate) => trackMediaPlaybackRateChange({ id, player, newRate }))
+ .catch(trackError);
+ break;
+
+ case InternalVimeoEvent.ENTERPICTUREINPICTURE:
+ trackMediaPictureInPictureChange({ id, player, pictureInPicture: true });
+ break;
+
+ case InternalVimeoEvent.LEAVEPICTUREINPICTURE:
+ trackMediaPictureInPictureChange({ id, player, pictureInPicture: false });
+ break;
+
+ case InternalVimeoEvent.QUALITYCHANGE:
+ trackMediaQualityChange({ id, player, newQuality: asQualityChangeEvent(eventData).quality });
+ break;
+
+ case InternalVimeoEvent.CUEPOINT:
+ trackMediaSelfDescribingEvent({
+ id,
+ player,
+ event: {
+ schema: VimeoSchema.CUEPOINT,
+ data: asVimeoPlayerCuePointData(eventData),
+ },
+ });
+ break;
+
+ case InternalVimeoEvent.TEXTTRACKCHANGE:
+ trackMediaSelfDescribingEvent({
+ id,
+ player,
+ event: {
+ schema: VimeoSchema.TEXT_TRACK_CHANGE,
+ data: asTextTrackData(eventData),
+ },
+ });
+ break;
+
+ case InternalVimeoEvent.INTERACTIVEHOTSPOTCLICKED:
+ trackMediaSelfDescribingEvent({
+ id,
+ player,
+ event: {
+ schema: VimeoSchema.HOTSPOT_CLICK,
+ data: {},
+ },
+ context: [{ schema: VimeoSchema.INTERACTION, data: asVimeoInteractiveHotspotClickedData(eventData) }],
+ });
+ break;
+
+ case InternalVimeoEvent.INTERACTIVEOVERLAYPANELCLICKED:
+ trackMediaSelfDescribingEvent({
+ id,
+ player,
+ event: {
+ schema: VimeoSchema.OVERLAY_CLICK,
+ data: {},
+ },
+ context: [{ schema: VimeoSchema.INTERACTION, data: asVimeoInteractiveOverlayPanelClickedData(eventData) }],
+ });
+ break;
+
+ case InternalVimeoEvent.CHAPTERCHANGE:
+ trackMediaSelfDescribingEvent({
+ id,
+ player,
+ event: {
+ schema: VimeoSchema.CHAPTER_CHANGE,
+ data: asChapterData(eventData),
+ },
+ });
+ break;
+
+ case InternalVimeoEvent.LOADED:
+ updateMediaTracking({ id, player });
+ break;
+
+ case InternalVimeoEvent.PROGRESS:
+ updateMediaTracking({ id, player });
+ break;
+
+ case MediaEventType.Ready:
+ getVimeoMetadata(trackedPlayer)
+ .then((entities) => trackMediaReady({ id, player, context: [entities] }))
+ .catch(trackError);
+ break;
+ }
+}
diff --git a/plugins/browser-plugin-vimeo-tracking/src/schema.ts b/plugins/browser-plugin-vimeo-tracking/src/schema.ts
new file mode 100644
index 000000000..40f00fb90
--- /dev/null
+++ b/plugins/browser-plugin-vimeo-tracking/src/schema.ts
@@ -0,0 +1,25 @@
+const iglu = 'iglu:com.vimeo/';
+const jsonschema = '/jsonschema/1-0-0';
+export const VimeoSchema = {
+ // iglu:com.vimeo/meta/jsonschema/1-0-0
+ META: iglu + 'meta' + jsonschema,
+
+ // iglu:com.vimeo/cue_point_event/jsonschema/1-0-0
+ CUEPOINT: iglu + 'cue_point_event' + jsonschema,
+
+ // iglu:com.vimeo/chapter_change_event/jsonschema/1-0-0
+ CHAPTER_CHANGE: iglu + 'chapter_change_event' + jsonschema,
+
+ // iglu:com.vimeo/text_track_change_event/jsonschema/1-0-0
+ TEXT_TRACK_CHANGE: iglu + 'text_track_change_event' + jsonschema,
+
+ // iglu:com.vimeo/interactive_hotspot_click_event/jsonschema/1-0-0
+ HOTSPOT_CLICK: iglu + 'interactive_hotspot_click_event' + jsonschema,
+
+ // iglu:com.vimeo/interactive_overlay_click_event/jsonschema/1-0-0
+ OVERLAY_CLICK: iglu + 'interactive_overlay_panel_click_event' + jsonschema,
+
+ // iglu:com.vimeo/interaction/jsonschema/1-0-0
+ // context schema for HOTSPOT_CLICK and OVERLAY_CLICK
+ INTERACTION: iglu + 'interaction' + jsonschema,
+};
diff --git a/plugins/browser-plugin-vimeo-tracking/src/types.ts b/plugins/browser-plugin-vimeo-tracking/src/types.ts
new file mode 100644
index 000000000..481df9a19
--- /dev/null
+++ b/plugins/browser-plugin-vimeo-tracking/src/types.ts
@@ -0,0 +1,196 @@
+import Player, { Error as VimeoError, QualityChangeEvent, TrackKind, VimeoCuePoint } from '@vimeo/player';
+import { InternalVimeoEvent, VimeoEvent } from './events';
+import { MediaEventType, MediaTrackingConfiguration } from '@snowplow/browser-plugin-media/src/types';
+
+/** The configuration object for the Vimeo tracking plugin */
+export interface VimeoTrackingConfiguration extends Omit {
+ video: HTMLIFrameElement | Player;
+ captureEvents?: VimeoEvent[];
+}
+
+// An internal configuration type to avoid exposing `vimeoCaptureEvents` to the user
+export interface InternalVimeoTrackingConfiguration extends VimeoTrackingConfiguration {
+ /** Events filtered from `captureEvents` that are passed into the Vimeo player's `on` method */
+ vimeoCaptureEvents?: InternalVimeoEvent[];
+}
+
+/** A {@link Player} and its associated {@link VimeoTrackingConfiguration | configuration} */
+export type TrackedPlayer = {
+ player: Player;
+ eventListeners: Partial void>>;
+ config: InternalVimeoTrackingConfiguration;
+};
+
+/** Associated type for the Vimeo "meta" schema */
+export type VimeoPlayerMetadata = {
+ videoId: number;
+ videoTitle: string;
+ videoUrl?: string;
+ videoWidth: number;
+ videoHeight: number;
+};
+
+/** Event types that trigger a Media Plugin function */
+export type EventType = InternalVimeoEvent | MediaEventType.Ready;
+
+/** Sum type of all event data types */
+export type EventData =
+ | VimeoError
+ | QualityChangeEvent
+ | TimeUpdateData
+ | ChapterData
+ | TextTrackData
+ | VimeoPlayerCuePointData
+ | VimeoInteractiveHotspotClickedData
+ | VimeoInteractiveOverlayPanelClickedData;
+
+/** 'time' can be a reserved word in some warehouses, so we extend the Vimeo type to rename the field to 'cuePointData' */
+export interface VimeoPlayerCuePointData extends Omit {
+ cuePointTime: number;
+ [key: string]: unknown;
+}
+
+export function asVimeoPlayerCuePointData(eventData: EventData | unknown): VimeoPlayerCuePointData {
+ const data = eventData as VimeoCuePoint;
+ return {
+ cuePointTime: data.time,
+ data: data.data,
+ id: data.id,
+ };
+}
+
+/**
+ * The event data associated with a `timeupdate` event
+ * https://developer.vimeo.com/player/sdk/reference#timeupdate
+ */
+export type TimeUpdateData = {
+ duration: number;
+ percent: number;
+ seconds: number;
+};
+
+export function asTimeUpdateData(eventData: EventData | unknown): TimeUpdateData {
+ const data = eventData as TimeUpdateData;
+ return {
+ duration: data.duration,
+ percent: data.percent,
+ seconds: data.seconds,
+ };
+}
+
+/**
+ * The event data associated with a `texttrackchange` event
+ * https://developer.vimeo.com/player/sdk/reference#texttrackchange
+ */
+export type TextTrackData = {
+ language: string;
+ kind: TrackKind;
+ label: string;
+};
+
+export function asTextTrackData(eventData: EventData | unknown): TextTrackData {
+ const data = eventData as TextTrackData;
+ return {
+ language: data.language,
+ kind: data.kind,
+ label: data.label,
+ };
+}
+
+/**
+ * The event data associated with a `chapterchange` event
+ * https://developer.vimeo.com/player/sdk/reference#chapterchange
+ */
+export type ChapterData = {
+ index: number;
+ startTime: number;
+ title: string;
+};
+
+/**
+ * The event data for an `interactivehotspotclicked` event
+ * https://developer.vimeo.com/player/sdk/reference#events-for-interactive-videos
+ */
+export type VimeoInteractiveHotspotClickedData = {
+ action: string;
+ actionPreference: {
+ pauseOnAction: boolean;
+ overlayId: number;
+ seekTo?: number;
+ url?: string;
+ };
+ currentTime: number;
+ customPayloadData?: Object;
+ hotspotId: number;
+};
+
+export function asVimeoInteractiveHotspotClickedData(
+ eventData: EventData | unknown
+): VimeoInteractiveHotspotClickedData {
+ const data = eventData as VimeoInteractiveHotspotClickedData;
+ return {
+ action: data.action,
+ actionPreference: {
+ pauseOnAction: data.actionPreference.pauseOnAction,
+ overlayId: data.actionPreference.overlayId,
+ seekTo: data.actionPreference?.seekTo,
+ url: data.actionPreference?.url,
+ },
+ currentTime: data.currentTime,
+ customPayloadData: data.customPayloadData,
+ hotspotId: data.hotspotId,
+ } as VimeoInteractiveHotspotClickedData;
+}
+
+/**
+ * The event data for an `interactiveoverlaypanelclicked` event
+ * https://developer.vimeo.com/player/sdk/reference#events-for-interactive-videos
+ */
+export type VimeoInteractiveOverlayPanelClickedData = {
+ action: string;
+ actionPreference: {
+ pauseOnAction: boolean;
+ seekTo?: number;
+ url?: string;
+ };
+ currentTime: number;
+ customPayloadData?: Object;
+ hotspotId: number;
+ panelId: number;
+};
+
+export function asVimeoInteractiveOverlayPanelClickedData(
+ eventData: EventData | unknown
+): VimeoInteractiveOverlayPanelClickedData {
+ const data = eventData as VimeoInteractiveOverlayPanelClickedData;
+ return {
+ action: data.action,
+ actionPreference: {
+ pauseOnAction: data.actionPreference.pauseOnAction,
+ seekTo: data.actionPreference?.seekTo,
+ url: data.actionPreference?.url,
+ },
+ currentTime: data.currentTime,
+ customPayloadData: data.customPayloadData,
+ hotspotId: data.hotspotId,
+ panelId: data.panelId,
+ };
+}
+
+// Conversion functions for types from the Vimeo SDK
+
+export function asChapterData(eventData: EventData | unknown): ChapterData {
+ const data = eventData as ChapterData;
+ return {
+ index: data.index,
+ startTime: data.startTime,
+ title: data.title,
+ };
+}
+
+export function asQualityChangeEvent(eventData: EventData | unknown): QualityChangeEvent {
+ const data = eventData as QualityChangeEvent;
+ return {
+ quality: data.quality,
+ };
+}
diff --git a/plugins/browser-plugin-vimeo-tracking/src/utils.ts b/plugins/browser-plugin-vimeo-tracking/src/utils.ts
new file mode 100644
index 000000000..bbe7b1f69
--- /dev/null
+++ b/plugins/browser-plugin-vimeo-tracking/src/utils.ts
@@ -0,0 +1,121 @@
+import { Error as VimeoError, VimeoPromise } from '@vimeo/player';
+
+import { LOG, SelfDescribingJson } from '@snowplow/tracker-core';
+import { trackMediaError } from '@snowplow/browser-plugin-media';
+import { MediaPlayer } from '@snowplow/browser-plugin-media/src/types';
+
+import {
+ InternalVimeoEvent,
+ VimeoEventType,
+ AllEvents,
+ AvailableMediaEventType,
+ AlwaysOnInternalVimeoEvents,
+} from './events';
+import {
+ InternalVimeoTrackingConfiguration,
+ TrackedPlayer,
+ VimeoPlayerMetadata,
+ VimeoTrackingConfiguration,
+} from './types';
+import { VimeoSchema } from './schema';
+
+/**
+ * Split the `captureEvents` array into two arrays:
+ * - `captureEvents` - events that are passed onto the Media plugins `captureEvents` property
+ * - `vimeoCaptureEvents` - events that can be passed into the `on` method of the Vimeo player
+ */
+export function filterVimeoEvents(configuration: VimeoTrackingConfiguration): InternalVimeoTrackingConfiguration {
+ configuration.captureEvents = configuration.captureEvents ?? AllEvents;
+ // Extract any events that are in the MediaEventType enum
+ const mediaEventTypes = Object.values(AvailableMediaEventType);
+ const captureEvents = configuration.captureEvents.filter((event) =>
+ mediaEventTypes.includes(event as AvailableMediaEventType)
+ ) as AvailableMediaEventType[];
+
+ // Extract any events that aren't in the MediaEventType enum
+ // Check if they are in the VimeoEventType enum
+ // If so, remove any underscores and add them to the vimeoCaptureEvents array
+ const vimeoEventTypes = Object.values(VimeoEventType);
+ let vimeoCaptureEvents = configuration.captureEvents
+ .filter((event) => vimeoEventTypes.includes(event as string as VimeoEventType))
+ .map((e) => e.replace(/_/g, '') as InternalVimeoEvent) as InternalVimeoEvent[];
+
+ // Add any always-on events that aren't already in the vimeoCaptureEvents array
+ for (const event of AlwaysOnInternalVimeoEvents) {
+ if (!vimeoCaptureEvents.includes(event)) {
+ vimeoCaptureEvents.push(event);
+ }
+ }
+
+ return {
+ ...configuration,
+ captureEvents,
+ vimeoCaptureEvents,
+ };
+}
+
+/**
+ * Attempt to get the value of a Vimeo promise, or return undefined
+ * if the method fails
+ *
+ * The Vimeo player will throw an error if the getter methods' promise is rejected
+ * So to minimise event loss, we ignore any returned error value and return undefined instead,
+ * so the property isn't serialized
+ *
+ * @param promise The promise returned by the Vimeo getter method
+ * @returns The value returned from the promise, or undefined if the promise is rejected
+ */
+function tryVimeoPromise(promise: VimeoPromise): T | undefined {
+ let ret: T | undefined;
+ promise
+ .then((v) => (ret = v))
+ .catch((e) => {
+ LOG.warn(e);
+ });
+ return ret;
+}
+
+export async function getVimeoMetadata(trackedPlayer: TrackedPlayer): Promise {
+ const { player } = trackedPlayer;
+
+ const data: VimeoPlayerMetadata = {
+ videoId: await player.getVideoId(),
+ videoTitle: await player.getVideoTitle(),
+ videoWidth: await player.getVideoWidth(),
+ videoHeight: await player.getVideoHeight(),
+ // 'getVideoUrl' can fail due to privacy settings
+ videoUrl: tryVimeoPromise(player.getVideoUrl()),
+ };
+
+ return {
+ schema: VimeoSchema.META,
+ data,
+ };
+}
+
+/** Get all attributes that can be passed into `updateMediaTracking` */
+export async function getVimeoMediaAttributes(trackedPlayer: TrackedPlayer): Promise {
+ const { player } = trackedPlayer;
+ return {
+ currentTime: await player.getCurrentTime(),
+ duration: await player.getDuration(),
+ ended: await player.getEnded(),
+ loop: await player.getLoop(),
+ muted: await player.getMuted(),
+ paused: await player.getPaused(),
+ playbackRate: await player.getPlaybackRate(),
+ volume: Math.round((await player.getVolume()) * 100),
+ pictureInPicture: await player.getPictureInPicture(),
+ };
+}
+
+/** A callback function for the current player, to use in the `.catch()` callback of the Vimeo Player getter methods */
+export function getErrorCallback(trackedPlayer: TrackedPlayer) {
+ return (error: VimeoError): void => {
+ trackMediaError({
+ id: trackedPlayer.config.id,
+ errorName: error.name,
+ errorDescription: `${error.method} - ${error.message}`,
+ });
+ };
+}
diff --git a/plugins/browser-plugin-vimeo-tracking/test/vimeo.test.ts b/plugins/browser-plugin-vimeo-tracking/test/vimeo.test.ts
new file mode 100644
index 000000000..8283e75f6
--- /dev/null
+++ b/plugins/browser-plugin-vimeo-tracking/test/vimeo.test.ts
@@ -0,0 +1,54 @@
+import {
+ VimeoEventType,
+ InternalVimeoEvent,
+ CapturableInternalVimeoEvents,
+ AvailableMediaEventType,
+} from '../src/events';
+import { filterVimeoEvents } from '../src/utils';
+import { InternalVimeoTrackingConfiguration } from '../src/types';
+
+describe('Vimeo Tracking', () => {
+ describe('captureEvents', () => {
+ // The video element is irrelevant for this test, but a required parameter
+ const video = document.createElement('iframe');
+ const alwaysOnEvents = [InternalVimeoEvent.TIMEUPDATE, InternalVimeoEvent.PROGRESS];
+
+ const defaultConfiguration: InternalVimeoTrackingConfiguration = {
+ video,
+ id: 'test',
+ captureEvents: Object.values(AvailableMediaEventType),
+ vimeoCaptureEvents: [...CapturableInternalVimeoEvents, ...alwaysOnEvents],
+ };
+
+ it('assigns defaults if no captureEvents passed', () => {
+ const trackingOptions = filterVimeoEvents({ video, id: 'test' });
+ expect(trackingOptions.captureEvents).toEqual(defaultConfiguration.captureEvents);
+ trackingOptions.vimeoCaptureEvents?.forEach((event) => {
+ expect(trackingOptions.vimeoCaptureEvents).toContain(event);
+ });
+ });
+
+ it("doesn't assign default if empty array is passed", () => {
+ const trackingOptions = filterVimeoEvents({ video, id: 'test', captureEvents: [] });
+ expect(trackingOptions).toEqual({
+ ...defaultConfiguration,
+ captureEvents: [],
+ vimeoCaptureEvents: alwaysOnEvents,
+ });
+ });
+
+ it('assigns to captureEvents and vimeoCaptureEvents if valid events passed', () => {
+ const trackingOptions = filterVimeoEvents({
+ video,
+ id: 'test',
+ captureEvents: [AvailableMediaEventType.Play, VimeoEventType.TextTrackChange],
+ });
+
+ expect(trackingOptions).toEqual({
+ ...defaultConfiguration,
+ captureEvents: [AvailableMediaEventType.Play],
+ vimeoCaptureEvents: expect.arrayContaining([InternalVimeoEvent.TEXTTRACKCHANGE, ...alwaysOnEvents]),
+ });
+ });
+ });
+});
diff --git a/plugins/browser-plugin-vimeo-tracking/tsconfig.json b/plugins/browser-plugin-vimeo-tracking/tsconfig.json
new file mode 100644
index 000000000..4082f16a5
--- /dev/null
+++ b/plugins/browser-plugin-vimeo-tracking/tsconfig.json
@@ -0,0 +1,3 @@
+{
+ "extends": "../../tsconfig.json"
+}
diff --git a/rush.json b/rush.json
index f1106d36d..09e746ccb 100644
--- a/rush.json
+++ b/rush.json
@@ -559,6 +559,12 @@
"projectFolder": "plugins/browser-plugin-web-vitals",
"reviewCategory": "plugins",
"versionPolicyName": "tracker"
+ },
+ {
+ "packageName": "@snowplow/browser-plugin-vimeo-tracking",
+ "projectFolder": "plugins/browser-plugin-vimeo-tracking",
+ "reviewCategory": "plugins",
+ "versionPolicyName": "tracker"
}
]
}
diff --git a/trackers/javascript-tracker/package.json b/trackers/javascript-tracker/package.json
index 6b59a553e..984e561d4 100644
--- a/trackers/javascript-tracker/package.json
+++ b/trackers/javascript-tracker/package.json
@@ -58,6 +58,8 @@
"@snowplow/browser-plugin-snowplow-ecommerce": "workspace:*",
"@snowplow/browser-plugin-timezone": "workspace:*",
"@snowplow/browser-plugin-youtube-tracking": "workspace:*",
+ "@snowplow/browser-plugin-media": "workspace:*",
+ "@snowplow/browser-plugin-vimeo-tracking": "workspace:*",
"@snowplow/browser-tracker": "workspace:*",
"@snowplow/browser-tracker-core": "workspace:*",
"@snowplow/tracker-core": "workspace:*",
diff --git a/trackers/javascript-tracker/src/features.ts b/trackers/javascript-tracker/src/features.ts
index b08fe3460..86a63d4b1 100644
--- a/trackers/javascript-tracker/src/features.ts
+++ b/trackers/javascript-tracker/src/features.ts
@@ -51,6 +51,8 @@ import * as plugins from '../tracker.config';
import { BrowserPlugin } from '@snowplow/browser-tracker-core';
import { JavaScriptTrackerConfiguration } from './configuration';
import * as EnhancedConsent from '@snowplow/browser-plugin-enhanced-consent';
+import * as SnowplowMedia from '@snowplow/browser-plugin-media';
+import * as VimeoTracking from '@snowplow/browser-plugin-vimeo-tracking';
/**
* Calculates the required plugins to intialise per tracker
@@ -196,5 +198,15 @@ export function Plugins(configuration: JavaScriptTrackerConfiguration) {
activatedPlugins.push([EnhancedConsentPlugin(), apiMethods]);
}
+ if (plugins.snowplowMedia) {
+ const { SnowplowMediaPlugin, ...apiMethods } = SnowplowMedia;
+ activatedPlugins.push([SnowplowMediaPlugin(), apiMethods]);
+ }
+
+ if (plugins.vimeoTracking) {
+ const { VimeoTrackingPlugin, ...apiMethods } = VimeoTracking;
+ activatedPlugins.push([VimeoTrackingPlugin(), apiMethods]);
+ }
+
return activatedPlugins;
}
diff --git a/trackers/javascript-tracker/test/integration/vimeo.test.ts b/trackers/javascript-tracker/test/integration/vimeo.test.ts
new file mode 100644
index 000000000..2093ad73b
--- /dev/null
+++ b/trackers/javascript-tracker/test/integration/vimeo.test.ts
@@ -0,0 +1,272 @@
+import { VimeoEvent } from '@snowplow/browser-plugin-vimeo-tracking';
+import { pageSetup } from './helpers';
+import { fetchResults } from '../micro';
+
+function compareContextObjects(expected: any, received: any) {
+ expect(expected.schema).toEqual(received.schema);
+ for (let i = 0; i < expected.data.length; i++) {
+ expect(expected.data[i].schema).toEqual(received.data[i].schema);
+ Object.keys(expected.data[i].data).forEach((key) => {
+ // Only test if the key exists in the received data
+ if (received.data[i].data[key] !== undefined) {
+ expect(expected.data[i].data[key]).toEqual(received.data[i].data[key]);
+ }
+ });
+ }
+}
+
+const makeSchema = (eventType: string) => {
+ return `iglu:com.snowplowanalytics.snowplow.media/${eventType}_event/jsonschema/1-0-0`;
+};
+
+const makeContext = () => {
+ return {
+ schema: 'iglu:com.snowplowanalytics.snowplow/contexts/jsonschema/1-0-0',
+ data: [
+ {
+ schema: 'iglu:com.snowplowanalytics.snowplow.media/player/jsonschema/1-0-0',
+ data: {
+ currentTime: jasmine.any(Number),
+ paused: jasmine.any(Boolean),
+ ended: jasmine.any(Boolean),
+ duration: jasmine.any(Number),
+ loop: jasmine.any(Boolean),
+ muted: jasmine.any(Boolean),
+ playbackRate: jasmine.any(Number),
+ volume: jasmine.any(Number),
+ quality: jasmine.any(String),
+ pictureInPicture: jasmine.any(Boolean),
+ },
+ },
+ {
+ schema: 'iglu:com.snowplowanalytics.snowplow.media/session/jsonschema/1-0-0',
+ data: {
+ sessionId: 'test',
+ startedAt: jasmine.any(String),
+ pingInterval: 5,
+ },
+ },
+ ],
+ };
+};
+
+const skipBrowsers = (browser: any) => {
+ if (browser.capabilities.browserName === 'internet explorer' && browser.capabilities.version === '9') {
+ fit('Skip IE 9', () => true);
+ return;
+ }
+
+ if (browser.capabilities.browserName === 'internet explorer' && browser.capabilities.browserVersion === '10') {
+ fit('Skip IE 10', () => true);
+ return;
+ }
+
+ // element not interactable: Element is not displayed
+ if (browser.capabilities.browserName === 'internet explorer' && browser.capabilities.browserVersion === '11') {
+ fit('Skip IE 11', () => true);
+ return;
+ }
+
+ // Unknown command: {"name":"sendKeysToActiveElement","parameters":{"value":["k"]}}
+ if (browser.capabilities.browserName === 'safari' && browser.capabilities.version === '8.0') {
+ fit('Skip Safari 8', () => true);
+ return;
+ }
+
+ // Element is obscured (WARNING: The server did not provide any stacktrace information)
+ if (browser.capabilities.browserName === 'MicrosoftEdge' && browser.capabilities.browserVersion === '13.10586') {
+ fit('Skip Edge 13', () => true);
+ return;
+ }
+
+ // Driver info: driver.version: unknown
+ if (browser.capabilities.browserName === 'firefox' && browser.capabilities.version === '53.0') {
+ fit('Skip Firefox 53', () => true);
+ return;
+ }
+};
+
+describe('Vimeo Tracker - Player', () => {
+ skipBrowsers(browser);
+ let testResults: any[];
+ let testIdentifier = '';
+
+ beforeAll(async () => {
+ testIdentifier = await pageSetup();
+ await browser.url('/vimeo/player.html');
+ await browser.waitUntil(() => $('#vimeo').isExisting(), {
+ timeout: 10000,
+ timeoutMsg: 'expected vimeo after 5s',
+ });
+
+ const player = await $('#vimeo');
+
+ await browser.pause(5000); // Time for the video to load
+
+ // user has to interacted with by the user to avoid:
+ // element not interactable
+ // (Session info: chrome=114.0.5735.133)
+ await player.click();
+
+ // This would work better as an async function, but it will throw an error:
+ // [0-0] 2023-06-19T10:58:17.232Z ERROR webdriver: Request failed with status 500 due to javascript error: javascript error: tslib_1 is not defined
+ await browser.execute(() => {
+ const player = new Vimeo.Player('vimeo');
+
+ const methods = [
+ () => player.play.bind(player),
+ () => player.pause.bind(player),
+ () => player.play.bind(player),
+ () => player.setPlaybackRate.bind(player, 1.5),
+ () => player.setVolume.bind(player, 0.5),
+ () => player.setCurrentTime.bind(player, 0),
+ () => player.enableTextTrack.bind(player, 'en'),
+ ];
+
+ // An incorrect event name will cause an error
+ player.on('not a real event', () => {});
+
+ for (let i = 0; i < methods.length; i++) {
+ setTimeout(methods[i](), 1500 * (i + 1));
+ }
+ });
+
+ // Wait for the 'ended' callback to signal the end of the video on the page
+ await browser.waitUntil(async () => {
+ const elem = await $('#ended');
+ return (await elem.getText()) === 'true';
+ });
+
+ await browser.pause(5_000);
+
+ const log = await browser.call(async () => await fetchResults());
+ testResults = log.filter((l: any) => l.event?.app_id === 'vimeo-player-test-' + testIdentifier);
+ });
+
+ const expectedEvents = [
+ VimeoEvent.Ready,
+ VimeoEvent.Play,
+ VimeoEvent.Pause,
+ VimeoEvent.End,
+ VimeoEvent.SeekStart,
+ VimeoEvent.SeekEnd,
+ VimeoEvent.VolumeChange,
+ VimeoEvent.PlaybackRateChange,
+ VimeoEvent.PercentProgress,
+ VimeoEvent.Ping,
+ ];
+
+ expectedEvents.forEach((eventName) => {
+ it(`tracks media event: ${eventName}`, () => {
+ const expectedSchema = makeSchema(eventName);
+
+ const expectedContext = makeContext();
+
+ const received = testResults.filter((e) => e.event.unstruct_event.data.schema === expectedSchema)[0];
+
+ if (received === undefined) {
+ fail(`Event ${eventName} not found`);
+ }
+
+ compareContextObjects(expectedContext, received.event.contexts);
+
+ const eventSchemas = testResults.map((e: any) => e.event.unstruct_event.data.schema);
+ expect(eventSchemas.includes(expectedSchema)).toBe(true);
+ });
+ });
+
+ // InteractiveHotspotClicked and InteractiveOverlayPanelClicked aren't tested here,
+ // as they require a paid Vimeo account to enable
+ let vimeoEvents = {
+ [VimeoEvent.CuePoint]: {
+ schema: 'iglu:com.vimeo/cue_point_event/jsonschema/1-0-0',
+ data: {
+ cuePointTime: 1,
+ data: { foo: 'bar' },
+ id: jasmine.any(String),
+ },
+ },
+
+ [VimeoEvent.TextTrackChange]: {
+ schema: 'iglu:com.vimeo/text_track_change_event/jsonschema/1-0-0',
+ data: { label: 'English', language: 'en', kind: 'subtitles' },
+ },
+ };
+
+ Object.entries(vimeoEvents).forEach(([eventName, expectedEvent]) => {
+ it(`tracks vimeo event: ${eventName}`, () => {
+ const event = testResults.filter((e) => e.event.unstruct_event.data.schema === expectedEvent.schema)[0];
+ if (event === undefined) {
+ fail(`Event ${eventName} not found`);
+ }
+ const eventData = event.event.unstruct_event.data.data;
+
+ if (eventName === VimeoEvent.CuePoint) {
+ expect(eventData.data.foo).toEqual(expectedEvent.data.data.foo);
+ expect(eventData.time).toEqual(expectedEvent.data.time);
+ expect(eventData.id).toEqual(expectedEvent.data.id);
+ }
+
+ if (eventName === VimeoEvent.ChapterChange) {
+ expect(eventData.startTime).toEqual(expectedEvent.data.startTime);
+ expect(eventData.title).toEqual(expectedEvent.data.title);
+ expect(eventData.index).toEqual(expectedEvent.data.index);
+ }
+
+ if (eventName === VimeoEvent.TextTrackChange) {
+ expect(eventData.label).toEqual(expectedEvent.data.label);
+ expect(eventData.language).toEqual(expectedEvent.data.language);
+ expect(eventData.kind).toEqual(expectedEvent.data.kind);
+ }
+ });
+ });
+});
+
+describe('Vimeo Tracker - IFRAME', () => {
+ skipBrowsers(browser);
+ let testResults: any[];
+ let testIdentifier = '';
+
+ beforeAll(async () => {
+ testIdentifier = await pageSetup();
+
+ await browser.url('/vimeo/iframe.html');
+ await browser.waitUntil(() => $('#vimeo').isExisting(), {
+ timeout: 10000,
+ timeoutMsg: 'expected vimeo after 5s',
+ });
+
+ const player = await $('#vimeo');
+ await browser.pause(5000); // Time for the video to load
+
+ await player.click(); // 'play'
+
+ await browser.pause(10_000);
+
+ const log = await browser.call(async () => await fetchResults());
+ testResults = log.filter((l: any) => l.event?.app_id === 'vimeo-iframe-test-' + testIdentifier);
+ });
+
+ // 'ready' doesn't require attaching the listeners to the player, as it is fired "manually" in the plugin,
+ // so 'play' ensures we are getting events produced by the event listeners
+ const expectedEvents = [VimeoEvent.Ready, VimeoEvent.Play];
+
+ expectedEvents.forEach((eventName) => {
+ it(`tracks ${eventName}`, () => {
+ const expectedSchema = makeSchema(eventName);
+
+ const expectedContext = makeContext(eventName);
+
+ const received = testResults.filter((e) => e.event.unstruct_event.data.schema === expectedSchema)[0];
+
+ if (received === undefined) {
+ fail(`Event ${eventName} not found`);
+ }
+
+ compareContextObjects(expectedContext, received.event.contexts);
+
+ const eventSchemas = testResults.map((e: any) => e.event.unstruct_event.data.schema);
+ expect(eventSchemas.includes(expectedSchema)).toBe(true);
+ });
+ });
+});
diff --git a/trackers/javascript-tracker/test/pages/vimeo/iframe.html b/trackers/javascript-tracker/test/pages/vimeo/iframe.html
new file mode 100644
index 000000000..9e010dac5
--- /dev/null
+++ b/trackers/javascript-tracker/test/pages/vimeo/iframe.html
@@ -0,0 +1,52 @@
+
+
+ Page for YouTube tracking testing with Snowplow Micro
+
+
+
+
+
+
+
+
+
diff --git a/trackers/javascript-tracker/test/pages/vimeo/player.html b/trackers/javascript-tracker/test/pages/vimeo/player.html
new file mode 100644
index 000000000..23f8b3b9c
--- /dev/null
+++ b/trackers/javascript-tracker/test/pages/vimeo/player.html
@@ -0,0 +1,54 @@
+
+
+ Page for YouTube tracking testing with Snowplow Micro
+
+
+
+
+
+
+
+ false
+
+
+
diff --git a/trackers/javascript-tracker/tracker.config.ts b/trackers/javascript-tracker/tracker.config.ts
index 1ca88db56..a6ccc8a3d 100644
--- a/trackers/javascript-tracker/tracker.config.ts
+++ b/trackers/javascript-tracker/tracker.config.ts
@@ -48,3 +48,5 @@ export const browserFeatures = false;
export const mediaTracking = false;
export const youtubeTracking = false;
export const enhancedConsent = false;
+export const snowplowMedia = false;
+export const vimeoTracking = false;
diff --git a/trackers/javascript-tracker/tracker.lite.config.ts b/trackers/javascript-tracker/tracker.lite.config.ts
index a9ec92f7a..3c3fad3d0 100644
--- a/trackers/javascript-tracker/tracker.lite.config.ts
+++ b/trackers/javascript-tracker/tracker.lite.config.ts
@@ -48,3 +48,5 @@ export const browserFeatures = false;
export const mediaTracking = false;
export const youtubeTracking = false;
export const enhancedConsent = false;
+export const snowplowMedia = false;
+export const vimeoTracking = false;
diff --git a/trackers/javascript-tracker/tracker.test.config.ts b/trackers/javascript-tracker/tracker.test.config.ts
index a4ec3ebee..310727c00 100644
--- a/trackers/javascript-tracker/tracker.test.config.ts
+++ b/trackers/javascript-tracker/tracker.test.config.ts
@@ -48,3 +48,5 @@ export const browserFeatures = true;
export const mediaTracking = true;
export const youtubeTracking = true;
export const enhancedConsent = false;
+export const snowplowMedia = true;
+export const vimeoTracking = true;
From e97528c4ebe8e4bb847324cff3de30fc88439146 Mon Sep 17 00:00:00 2001
From: Matus Tomlein
Date: Wed, 9 Aug 2023 11:24:48 +0200
Subject: [PATCH 004/341] Update vendor and version of the player schema used
in the media plugin (close #1222)
PR #1223
---
...sue-1222-update_player_schema_2023-08-08-08-01.json | 10 ++++++++++
plugins/browser-plugin-media/src/schemata.ts | 3 ++-
.../javascript-tracker/test/integration/vimeo.test.ts | 2 +-
3 files changed, 13 insertions(+), 2 deletions(-)
create mode 100644 common/changes/@snowplow/browser-plugin-media/issue-1222-update_player_schema_2023-08-08-08-01.json
diff --git a/common/changes/@snowplow/browser-plugin-media/issue-1222-update_player_schema_2023-08-08-08-01.json b/common/changes/@snowplow/browser-plugin-media/issue-1222-update_player_schema_2023-08-08-08-01.json
new file mode 100644
index 000000000..fa9a34a7f
--- /dev/null
+++ b/common/changes/@snowplow/browser-plugin-media/issue-1222-update_player_schema_2023-08-08-08-01.json
@@ -0,0 +1,10 @@
+{
+ "changes": [
+ {
+ "packageName": "@snowplow/browser-plugin-media",
+ "comment": "Update version of the player schema used in the media plugin to 2-0-0 (#1222)",
+ "type": "none"
+ }
+ ],
+ "packageName": "@snowplow/browser-plugin-media"
+}
\ No newline at end of file
diff --git a/plugins/browser-plugin-media/src/schemata.ts b/plugins/browser-plugin-media/src/schemata.ts
index a678ee963..15b27811a 100644
--- a/plugins/browser-plugin-media/src/schemata.ts
+++ b/plugins/browser-plugin-media/src/schemata.ts
@@ -2,7 +2,8 @@ import { MediaEventType } from './types';
const MEDIA_SCHEMA_PREFIX = 'iglu:com.snowplowanalytics.snowplow.media/';
const MEDIA_SCHEMA_SUFFIX = '/jsonschema/1-0-0';
-export const MEDIA_PLAYER_SCHEMA = MEDIA_SCHEMA_PREFIX + 'player' + MEDIA_SCHEMA_SUFFIX;
+// NOTE: The player schema has a different vendor than the other media schemas because it builds on an older version of the same schema. Versions 3.12 to 3.13.1 of the media plugin used a conflicting schema URI which has since been removed from Iglu Central.
+export const MEDIA_PLAYER_SCHEMA = 'iglu:com.snowplowanalytics.snowplow/media_player/jsonschema/2-0-0';
export const MEDIA_SESSION_SCHEMA = MEDIA_SCHEMA_PREFIX + 'session' + MEDIA_SCHEMA_SUFFIX;
export const MEDIA_AD_SCHEMA = MEDIA_SCHEMA_PREFIX + 'ad' + MEDIA_SCHEMA_SUFFIX;
export const MEDIA_AD_BREAK_SCHEMA = MEDIA_SCHEMA_PREFIX + 'ad_break' + MEDIA_SCHEMA_SUFFIX;
diff --git a/trackers/javascript-tracker/test/integration/vimeo.test.ts b/trackers/javascript-tracker/test/integration/vimeo.test.ts
index 2093ad73b..ef2ef1102 100644
--- a/trackers/javascript-tracker/test/integration/vimeo.test.ts
+++ b/trackers/javascript-tracker/test/integration/vimeo.test.ts
@@ -24,7 +24,7 @@ const makeContext = () => {
schema: 'iglu:com.snowplowanalytics.snowplow/contexts/jsonschema/1-0-0',
data: [
{
- schema: 'iglu:com.snowplowanalytics.snowplow.media/player/jsonschema/1-0-0',
+ schema: 'iglu:com.snowplowanalytics.snowplow/media_player/jsonschema/2-0-0',
data: {
currentTime: jasmine.any(Number),
paused: jasmine.any(Boolean),
From 5a4b81dc41f3f33b28f998de9c5778f8053424ae Mon Sep 17 00:00:00 2001
From: Peter Perlepes
Date: Wed, 9 Aug 2023 15:07:48 +0300
Subject: [PATCH 005/341] Allow disabling activity tracking actions (close
#1161)
#1224
---
...ng-activity-tracking_2023-08-08-08-55.json | 10 +++
...ng-activity-tracking_2023-08-08-08-55.json | 10 +++
.../browser-tracker-core/src/tracker/index.ts | 33 +++++++---
.../browser-tracker-core/src/tracker/types.ts | 10 +++
.../docs/browser-tracker.api.md | 8 +++
trackers/browser-tracker/src/api.ts | 22 +++++++
trackers/browser-tracker/test/tracker.test.ts | 63 +++++++++++++++++++
7 files changed, 149 insertions(+), 7 deletions(-)
create mode 100644 common/changes/@snowplow/browser-tracker-core/feature-1161-allow-disabling-activity-tracking_2023-08-08-08-55.json
create mode 100644 common/changes/@snowplow/browser-tracker/feature-1161-allow-disabling-activity-tracking_2023-08-08-08-55.json
diff --git a/common/changes/@snowplow/browser-tracker-core/feature-1161-allow-disabling-activity-tracking_2023-08-08-08-55.json b/common/changes/@snowplow/browser-tracker-core/feature-1161-allow-disabling-activity-tracking_2023-08-08-08-55.json
new file mode 100644
index 000000000..df70f3066
--- /dev/null
+++ b/common/changes/@snowplow/browser-tracker-core/feature-1161-allow-disabling-activity-tracking_2023-08-08-08-55.json
@@ -0,0 +1,10 @@
+{
+ "changes": [
+ {
+ "packageName": "@snowplow/browser-tracker-core",
+ "comment": "Allow disabling activity tracking actions with disableActivityTracking and disableActivityTrackingCallback APIs",
+ "type": "none"
+ }
+ ],
+ "packageName": "@snowplow/browser-tracker-core"
+}
\ No newline at end of file
diff --git a/common/changes/@snowplow/browser-tracker/feature-1161-allow-disabling-activity-tracking_2023-08-08-08-55.json b/common/changes/@snowplow/browser-tracker/feature-1161-allow-disabling-activity-tracking_2023-08-08-08-55.json
new file mode 100644
index 000000000..50969d761
--- /dev/null
+++ b/common/changes/@snowplow/browser-tracker/feature-1161-allow-disabling-activity-tracking_2023-08-08-08-55.json
@@ -0,0 +1,10 @@
+{
+ "changes": [
+ {
+ "packageName": "@snowplow/browser-tracker",
+ "comment": "Allow disabling activity tracking actions with disableActivityTracking and disableActivityTrackingCallback APIs",
+ "type": "none"
+ }
+ ],
+ "packageName": "@snowplow/browser-tracker"
+}
\ No newline at end of file
diff --git a/libraries/browser-tracker-core/src/tracker/index.ts b/libraries/browser-tracker-core/src/tracker/index.ts
index f066c5be5..8eb055dd4 100755
--- a/libraries/browser-tracker-core/src/tracker/index.ts
+++ b/libraries/browser-tracker-core/src/tracker/index.ts
@@ -1048,20 +1048,20 @@ export function Tracker(
//Clear page ping heartbeat on new page view
window.clearInterval(config.activityInterval);
- activityInterval(config, context, contextCallback);
+ scheduleActivityInterval(config, context, contextCallback);
}
}
}
}
- function activityInterval(
+ function scheduleActivityInterval(
config: ActivityConfig,
context?: Array | null,
contextCallback?: (() => Array) | null
) {
- const executePagePing = (cb: ActivityCallback, c: Array) => {
+ const executePagePing = (cb: ActivityCallback, context: Array) => {
refreshUrl();
- cb({ context: c, pageViewId: getPageViewId(), minXOffset, minYOffset, maxXOffset, maxYOffset });
+ cb({ context, pageViewId: getPageViewId(), minXOffset, minYOffset, maxXOffset, maxYOffset });
resetMaxScrolls();
};
@@ -1087,10 +1087,10 @@ export function Tracker(
}
};
- if (config.configMinimumVisitLength != 0) {
- config.activityInterval = window.setTimeout(timeout, config.configMinimumVisitLength);
- } else {
+ if (config.configMinimumVisitLength === 0) {
config.activityInterval = window.setInterval(heartbeat, config.configHeartBeatTimer);
+ } else {
+ config.activityInterval = window.setTimeout(timeout, config.configMinimumVisitLength);
}
}
@@ -1137,6 +1137,17 @@ export function Tracker(
);
}
+ function disableActivityTrackingAction(actionKey: keyof ActivityConfigurations) {
+ const callbackConfiguration = activityTrackingConfig.configurations[actionKey];
+ if (callbackConfiguration?.configMinimumVisitLength === 0) {
+ window.clearTimeout(callbackConfiguration?.activityInterval);
+ } else {
+ window.clearInterval(callbackConfiguration?.activityInterval);
+ }
+
+ activityTrackingConfig.configurations[actionKey] = undefined;
+ }
+
const apiMethods = {
getDomainSessionIndex: function () {
return memorizedVisitCount;
@@ -1219,6 +1230,14 @@ export function Tracker(
}
},
+ disableActivityTracking: function () {
+ disableActivityTrackingAction('pagePing');
+ },
+
+ disableActivityTrackingCallback: function () {
+ disableActivityTrackingAction('callback');
+ },
+
updatePageActivity: function () {
activityHandler();
},
diff --git a/libraries/browser-tracker-core/src/tracker/types.ts b/libraries/browser-tracker-core/src/tracker/types.ts
index b45f5f8fe..f986e2a2d 100755
--- a/libraries/browser-tracker-core/src/tracker/types.ts
+++ b/libraries/browser-tracker-core/src/tracker/types.ts
@@ -481,6 +481,16 @@ export interface BrowserTracker {
configuration: ActivityTrackingConfiguration & ActivityTrackingConfigurationCallback
) => void;
+ /**
+ * Disables page activity tracking.
+ */
+ disableActivityTracking: () => void;
+
+ /**
+ * Disables page activity tracking callback.
+ */
+ disableActivityTrackingCallback: () => void;
+
/**
* Triggers the activityHandler manually to allow external user defined
* activity. i.e. While watching a video
diff --git a/trackers/browser-tracker/docs/browser-tracker.api.md b/trackers/browser-tracker/docs/browser-tracker.api.md
index 3d7214028..1fedc9d25 100644
--- a/trackers/browser-tracker/docs/browser-tracker.api.md
+++ b/trackers/browser-tracker/docs/browser-tracker.api.md
@@ -63,6 +63,8 @@ export interface BrowserTracker {
// Warning: (ae-forgotten-export) The symbol "TrackerCore" needs to be exported by the entry point index.module.d.ts
core: TrackerCore;
crossDomainLinker: (crossDomainLinkerCriterion: (elt: HTMLAnchorElement | HTMLAreaElement) => boolean) => void;
+ disableActivityTracking: () => void;
+ disableActivityTrackingCallback: () => void;
disableAnonymousTracking: (configuration?: DisableAnonymousTrackingConfiguration) => void;
discardBrace: (enableFilter: boolean) => void;
discardHashTag: (enableFilter: boolean) => void;
@@ -172,6 +174,12 @@ export type CookieSameSite = "None" | "Lax" | "Strict";
// @public
export function crossDomainLinker(crossDomainLinkerCriterion: (elt: HTMLAnchorElement | HTMLAreaElement) => boolean, trackers?: Array): void;
+// @public
+export function disableActivityTracking(trackers?: Array): void;
+
+// @public
+export function disableActivityTrackingCallback(trackers?: Array): void;
+
// @public
export function disableAnonymousTracking(configuration?: DisableAnonymousTrackingConfiguration, trackers?: Array): void;
diff --git a/trackers/browser-tracker/src/api.ts b/trackers/browser-tracker/src/api.ts
index 7c35e3863..e8eba06b6 100644
--- a/trackers/browser-tracker/src/api.ts
+++ b/trackers/browser-tracker/src/api.ts
@@ -226,6 +226,28 @@ export function enableActivityTrackingCallback(
});
}
+/**
+ * Disables page activity tracking.
+ *
+ * @param trackers - The tracker identifiers the activity tracking will be disabled.
+ */
+export function disableActivityTracking(trackers?: Array) {
+ dispatchToTrackers(trackers, (t) => {
+ t.disableActivityTracking();
+ });
+}
+
+/**
+ * Disables page activity tracking callback.
+ *
+ * @param trackers - The tracker identifiers the activity tracking callback will be disabled.
+ */
+export function disableActivityTrackingCallback(trackers?: Array) {
+ dispatchToTrackers(trackers, (t) => {
+ t.disableActivityTrackingCallback();
+ });
+}
+
/**
* Triggers the activityHandler manually to allow external user defined activity. i.e. While watching a video
*
diff --git a/trackers/browser-tracker/test/tracker.test.ts b/trackers/browser-tracker/test/tracker.test.ts
index b26982afd..085f3edc9 100644
--- a/trackers/browser-tracker/test/tracker.test.ts
+++ b/trackers/browser-tracker/test/tracker.test.ts
@@ -275,4 +275,67 @@ describe('Activity tracker behaviour', () => {
expect(firstPageId).toBe(extractPageId(pph));
expect(secondPageId).toBe(extractPageId(ppl));
});
+
+ it('disables activity tracking', () => {
+ const state = new SharedState();
+ const t =
+ addTracker('sp6', 'sp6', '', '', state, { stateStorageStrategy: 'cookie' }) ?? fail('Failed to create tracker');
+ t.enableActivityTracking({ minimumVisitLength: 5, heartbeatDelay: 5 });
+ t.trackPageView();
+
+ jest.advanceTimersByTime(100);
+ t.updatePageActivity();
+ jest.advanceTimersByTime(4900);
+
+ expect(F.size(getPPEvents(state.outQueues))).toBe(1);
+
+ // page ping timer starts tracking
+ jest.advanceTimersByTime(100);
+ t.updatePageActivity();
+ jest.advanceTimersByTime(4900);
+
+ expect(F.size(getPPEvents(state.outQueues))).toBe(2);
+
+ /* Disabling activity tracking and callback is expected to not allow more activity actions */
+ t.disableActivityTracking();
+ t.disableActivityTrackingCallback();
+
+ jest.advanceTimersByTime(100);
+ t.updatePageActivity();
+ jest.advanceTimersByTime(4900);
+
+ expect(F.size(getPPEvents(state.outQueues))).toBe(2);
+ });
+
+ it('disables activity tracking callback', () => {
+ let callbacks = 0;
+ const state = new SharedState();
+ const t =
+ addTracker('sp7', 'sp7', '', '', state, { stateStorageStrategy: 'cookie' }) ?? fail('Failed to create tracker');
+ t.enableActivityTrackingCallback({ minimumVisitLength: 5, heartbeatDelay: 5, callback: () => callbacks++ });
+ t.trackPageView();
+
+ jest.advanceTimersByTime(100);
+ t.updatePageActivity();
+ jest.advanceTimersByTime(4900);
+
+ expect(callbacks).toBe(1);
+
+ // page ping timer starts tracking
+ jest.advanceTimersByTime(100);
+ t.updatePageActivity();
+ jest.advanceTimersByTime(4900);
+
+ expect(callbacks).toBe(2);
+
+ /* Disabling activity tracking and callback is expected to not allow more activity actions */
+ t.disableActivityTracking();
+ t.disableActivityTrackingCallback();
+
+ jest.advanceTimersByTime(100);
+ t.updatePageActivity();
+ jest.advanceTimersByTime(4900);
+
+ expect(callbacks).toBe(2);
+ });
});
From 507a40d5903ec418cdd343881321aa0175a0609c Mon Sep 17 00:00:00 2001
From: Peter Perlepes
Date: Wed, 9 Aug 2023 16:20:21 +0300
Subject: [PATCH 006/341] Add PrivacySandboxPlugin (close #1205)
#1206
---
...ivacy-sandbox-plugin_2023-06-14-20-26.json | 10 ++
...ivacy-sandbox-plugin_2023-08-04-12-00.json | 10 ++
.../rush/browser-approved-packages.json | 4 +
common/config/rush/pnpm-lock.yaml | 51 ++++++++++
common/config/rush/repo-state.json | 2 +-
.../browser-plugin-privacy-sandbox/LICENSE | 29 ++++++
.../browser-plugin-privacy-sandbox/README.md | 62 ++++++++++++
.../jest.config.js | 5 +
.../package.json | 53 ++++++++++
.../rollup.config.js | 37 +++++++
.../src/index.ts | 43 ++++++++
.../src/schemata.ts | 1 +
.../src/types.ts | 14 +++
.../privacy-sandbox.test.ts.snap | 22 +++++
.../test/privacy-sandbox.test.ts | 98 +++++++++++++++++++
.../tsconfig.json | 3 +
rush.json | 6 ++
trackers/javascript-tracker/package.json | 3 +-
trackers/javascript-tracker/src/features.ts | 6 ++
trackers/javascript-tracker/tracker.config.ts | 1 +
.../javascript-tracker/tracker.lite.config.ts | 1 +
.../javascript-tracker/tracker.test.config.ts | 1 +
22 files changed, 460 insertions(+), 2 deletions(-)
create mode 100644 common/changes/@snowplow/browser-plugin-privacy-sandbox/feature-add-privacy-sandbox-plugin_2023-06-14-20-26.json
create mode 100644 common/changes/@snowplow/javascript-tracker/feature-1205-add-privacy-sandbox-plugin_2023-08-04-12-00.json
create mode 100644 plugins/browser-plugin-privacy-sandbox/LICENSE
create mode 100644 plugins/browser-plugin-privacy-sandbox/README.md
create mode 100644 plugins/browser-plugin-privacy-sandbox/jest.config.js
create mode 100644 plugins/browser-plugin-privacy-sandbox/package.json
create mode 100644 plugins/browser-plugin-privacy-sandbox/rollup.config.js
create mode 100644 plugins/browser-plugin-privacy-sandbox/src/index.ts
create mode 100644 plugins/browser-plugin-privacy-sandbox/src/schemata.ts
create mode 100644 plugins/browser-plugin-privacy-sandbox/src/types.ts
create mode 100644 plugins/browser-plugin-privacy-sandbox/test/__snapshots__/privacy-sandbox.test.ts.snap
create mode 100644 plugins/browser-plugin-privacy-sandbox/test/privacy-sandbox.test.ts
create mode 100644 plugins/browser-plugin-privacy-sandbox/tsconfig.json
diff --git a/common/changes/@snowplow/browser-plugin-privacy-sandbox/feature-add-privacy-sandbox-plugin_2023-06-14-20-26.json b/common/changes/@snowplow/browser-plugin-privacy-sandbox/feature-add-privacy-sandbox-plugin_2023-06-14-20-26.json
new file mode 100644
index 000000000..7d163ead2
--- /dev/null
+++ b/common/changes/@snowplow/browser-plugin-privacy-sandbox/feature-add-privacy-sandbox-plugin_2023-06-14-20-26.json
@@ -0,0 +1,10 @@
+{
+ "changes": [
+ {
+ "packageName": "@snowplow/browser-plugin-privacy-sandbox",
+ "comment": "Introduce PrivacySandboxPlugin",
+ "type": "none"
+ }
+ ],
+ "packageName": "@snowplow/browser-plugin-privacy-sandbox"
+}
\ No newline at end of file
diff --git a/common/changes/@snowplow/javascript-tracker/feature-1205-add-privacy-sandbox-plugin_2023-08-04-12-00.json b/common/changes/@snowplow/javascript-tracker/feature-1205-add-privacy-sandbox-plugin_2023-08-04-12-00.json
new file mode 100644
index 000000000..3ae431ccc
--- /dev/null
+++ b/common/changes/@snowplow/javascript-tracker/feature-1205-add-privacy-sandbox-plugin_2023-08-04-12-00.json
@@ -0,0 +1,10 @@
+{
+ "changes": [
+ {
+ "packageName": "@snowplow/javascript-tracker",
+ "comment": "Introduce PrivacySandboxPlugin",
+ "type": "none"
+ }
+ ],
+ "packageName": "@snowplow/javascript-tracker"
+}
\ No newline at end of file
diff --git a/common/config/rush/browser-approved-packages.json b/common/config/rush/browser-approved-packages.json
index c898dc7ff..fd359cee8 100644
--- a/common/config/rush/browser-approved-packages.json
+++ b/common/config/rush/browser-approved-packages.json
@@ -94,6 +94,10 @@
"name": "@snowplow/browser-plugin-performance-timing",
"allowedCategories": [ "trackers" ]
},
+ {
+ "name": "@snowplow/browser-plugin-privacy-sandbox",
+ "allowedCategories": [ "trackers" ]
+ },
{
"name": "@snowplow/browser-plugin-site-tracking",
"allowedCategories": [ "trackers" ]
diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml
index 0afcff1f7..261787db4 100644
--- a/common/config/rush/pnpm-lock.yaml
+++ b/common/config/rush/pnpm-lock.yaml
@@ -1070,6 +1070,55 @@ importers:
ts-jest: 27.1.3_60149d457e34ffba7d4e845dde6a1263
typescript: 4.6.2
+ ../../plugins/browser-plugin-privacy-sandbox:
+ specifiers:
+ '@ampproject/rollup-plugin-closure-compiler': ~0.27.0
+ '@rollup/plugin-commonjs': ~21.0.2
+ '@rollup/plugin-node-resolve': ~13.1.3
+ '@snowplow/browser-tracker-core': workspace:*
+ '@snowplow/tracker-core': workspace:*
+ '@types/jest': ~27.4.1
+ '@types/jsdom': ~16.2.14
+ '@typescript-eslint/eslint-plugin': ~5.15.0
+ '@typescript-eslint/parser': ~5.15.0
+ eslint: ~8.11.0
+ jest: ~27.5.1
+ jest-environment-jsdom: ~27.5.1
+ jest-environment-jsdom-global: ~3.0.0
+ jest-standard-reporter: ~2.0.0
+ rollup: ~2.70.1
+ rollup-plugin-cleanup: ~3.2.1
+ rollup-plugin-license: ~2.6.1
+ rollup-plugin-terser: ~7.0.2
+ rollup-plugin-ts: ~2.0.5
+ ts-jest: ~27.1.3
+ tslib: ^2.3.1
+ typescript: ~4.6.2
+ dependencies:
+ '@snowplow/browser-tracker-core': link:../../libraries/browser-tracker-core
+ '@snowplow/tracker-core': link:../../libraries/tracker-core
+ tslib: 2.3.1
+ devDependencies:
+ '@ampproject/rollup-plugin-closure-compiler': 0.27.0_rollup@2.70.1
+ '@rollup/plugin-commonjs': 21.0.2_rollup@2.70.1
+ '@rollup/plugin-node-resolve': 13.1.3_rollup@2.70.1
+ '@types/jest': 27.4.1
+ '@types/jsdom': 16.2.14
+ '@typescript-eslint/eslint-plugin': 5.15.0_f2c49ce7d0e93ebcfdb4b7d25b131b28
+ '@typescript-eslint/parser': 5.15.0_eslint@8.11.0+typescript@4.6.2
+ eslint: 8.11.0
+ jest: 27.5.1
+ jest-environment-jsdom: 27.5.1
+ jest-environment-jsdom-global: 3.0.0_jest-environment-jsdom@27.5.1
+ jest-standard-reporter: 2.0.0
+ rollup: 2.70.1
+ rollup-plugin-cleanup: 3.2.1_rollup@2.70.1
+ rollup-plugin-license: 2.6.1_rollup@2.70.1
+ rollup-plugin-terser: 7.0.2_rollup@2.70.1
+ rollup-plugin-ts: 2.0.5_rollup@2.70.1+typescript@4.6.2
+ ts-jest: 27.1.3_60149d457e34ffba7d4e845dde6a1263
+ typescript: 4.6.2
+
../../plugins/browser-plugin-site-tracking:
specifiers:
'@ampproject/rollup-plugin-closure-compiler': ~0.27.0
@@ -1466,6 +1515,7 @@ importers:
'@snowplow/browser-plugin-optimizely': workspace:*
'@snowplow/browser-plugin-optimizely-x': workspace:*
'@snowplow/browser-plugin-performance-timing': workspace:*
+ '@snowplow/browser-plugin-privacy-sandbox': workspace:*
'@snowplow/browser-plugin-site-tracking': workspace:*
'@snowplow/browser-plugin-snowplow-ecommerce': workspace:*
'@snowplow/browser-plugin-timezone': workspace:*
@@ -1534,6 +1584,7 @@ importers:
'@snowplow/browser-plugin-optimizely': link:../../plugins/browser-plugin-optimizely
'@snowplow/browser-plugin-optimizely-x': link:../../plugins/browser-plugin-optimizely-x
'@snowplow/browser-plugin-performance-timing': link:../../plugins/browser-plugin-performance-timing
+ '@snowplow/browser-plugin-privacy-sandbox': link:../../plugins/browser-plugin-privacy-sandbox
'@snowplow/browser-plugin-site-tracking': link:../../plugins/browser-plugin-site-tracking
'@snowplow/browser-plugin-snowplow-ecommerce': link:../../plugins/browser-plugin-snowplow-ecommerce
'@snowplow/browser-plugin-timezone': link:../../plugins/browser-plugin-timezone
diff --git a/common/config/rush/repo-state.json b/common/config/rush/repo-state.json
index d7b879a75..fc69b38e4 100644
--- a/common/config/rush/repo-state.json
+++ b/common/config/rush/repo-state.json
@@ -1,5 +1,5 @@
// DO NOT MODIFY THIS FILE MANUALLY BUT DO COMMIT IT. It is generated and used by Rush.
{
- "pnpmShrinkwrapHash": "8dee87dc9d46510a27807789c4f80af0823ce444",
+ "pnpmShrinkwrapHash": "a8b7bdefbe86b839e0c359de02cae9c4ccc90039",
"preferredVersionsHash": "bf21a9e8fbc5a3846fb05b4fa0859e0917b2202f"
}
diff --git a/plugins/browser-plugin-privacy-sandbox/LICENSE b/plugins/browser-plugin-privacy-sandbox/LICENSE
new file mode 100644
index 000000000..b91bf94ae
--- /dev/null
+++ b/plugins/browser-plugin-privacy-sandbox/LICENSE
@@ -0,0 +1,29 @@
+BSD 3-Clause License
+
+Copyright (c) 2023 Snowplow Analytics Ltd
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+3. Neither the name of the copyright holder nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/plugins/browser-plugin-privacy-sandbox/README.md b/plugins/browser-plugin-privacy-sandbox/README.md
new file mode 100644
index 000000000..ec680e6e4
--- /dev/null
+++ b/plugins/browser-plugin-privacy-sandbox/README.md
@@ -0,0 +1,62 @@
+# Snowplow Privacy Sandbox Tracking
+
+[![npm version][npm-image]][npm-url]
+[![License][license-image]](LICENSE)
+
+Browser Plugin to be used with `@snowplow/browser-tracker`.
+
+Allows for adding Privacy Sandbox related data to your Snowplow tracking. To learn more about the Privacy Sandbox you can visit the official [website](https://www.privacysandbox.com/). As more and more APIs become available or further refined, we will be upgrading the plugin with more capabilities and options as more APIs are added to the Privacy Sandbox.
+
+Currently supported APIs:
+- [Topics API](https://developer.chrome.com/docs/privacy-sandbox/topics/overview/)
+
+
+__Note:__ Some of the APIs and data will not be available by default in all users. This is commonly due to these APIs being dependent on browser support, user privacy preferences, browser feature-flags or ad-blocking software. The plugin will not modify or request access explicitly to any of these features if not available by default.
+
+## Maintainer quick start
+
+Part of the Snowplow JavaScript Tracker monorepo.
+Build with [Node.js](https://nodejs.org/en/) (14 or 16) and [Rush](https://rushjs.io/).
+
+### Setup repository
+
+```bash
+npm install -g @microsoft/rush
+git clone https://github.com/snowplow/snowplow-javascript-tracker.git
+rush update
+```
+
+## Package Installation
+
+With npm:
+
+```bash
+npm install @snowplow/browser-plugin-privacy-sandbox
+```
+
+## Usage
+
+Initialize your tracker with the PrivacySandboxPlugin:
+
+```js
+import { newTracker } from '@snowplow/browser-tracker';
+import { PrivacySandboxPlugin } from '@snowplow/browser-plugin-privacy-sandbox';
+
+newTracker('sp1', '{{collector}}', { plugins: [ PrivacySandboxPlugin() ] });
+```
+
+With the plugin added to your tracker, a new context will be attached to every event, when Privacy Sandbox [Topics](https://developer.chrome.com/docs/privacy-sandbox/topics/overview/) are detected for a user.
+
+## Copyright and license
+
+Licensed and distributed under the [BSD 3-Clause License](LICENSE) ([An OSI Approved License][osi]).
+
+Copyright (c) 2023 Snowplow Analytics Ltd.
+
+All rights reserved.
+
+[npm-url]: https://www.npmjs.com/package/@snowplow/browser-plugin-privacy-sandbox
+[npm-image]: https://img.shields.io/npm/v/@snowplow/browser-plugin-privacy-sandbox
+[docs]: https://docs.snowplowanalytics.com/docs/collecting-data/collecting-from-own-applications/javascript-tracker/
+[osi]: https://opensource.org/licenses/BSD-3-Clause
+[license-image]: https://img.shields.io/npm/l/@snowplow/browser-plugin-privacy-sandbox
diff --git a/plugins/browser-plugin-privacy-sandbox/jest.config.js b/plugins/browser-plugin-privacy-sandbox/jest.config.js
new file mode 100644
index 000000000..bd3ea4e2a
--- /dev/null
+++ b/plugins/browser-plugin-privacy-sandbox/jest.config.js
@@ -0,0 +1,5 @@
+module.exports = {
+ preset: 'ts-jest',
+ reporters: ['jest-standard-reporter'],
+ testEnvironment: 'jest-environment-jsdom-global',
+};
diff --git a/plugins/browser-plugin-privacy-sandbox/package.json b/plugins/browser-plugin-privacy-sandbox/package.json
new file mode 100644
index 000000000..a969df587
--- /dev/null
+++ b/plugins/browser-plugin-privacy-sandbox/package.json
@@ -0,0 +1,53 @@
+{
+ "name": "@snowplow/browser-plugin-privacy-sandbox",
+ "version": "3.13.1",
+ "description": "Allows for the collection of Privacy Sandbox specific data.",
+ "homepage": "https://docs.snowplow.io/",
+ "bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/snowplow/snowplow-javascript-tracker.git"
+ },
+ "license": "BSD-3-Clause",
+ "author": "Peter Perlepes",
+ "sideEffects": false,
+ "main": "./dist/index.umd.js",
+ "module": "./dist/index.module.js",
+ "types": "./dist/index.module.d.ts",
+ "files": [
+ "dist"
+ ],
+ "scripts": {
+ "build": "rollup -c --silent --failAfterWarnings",
+ "test": "jest"
+ },
+ "dependencies": {
+ "@snowplow/browser-tracker-core": "workspace:*",
+ "@snowplow/tracker-core": "workspace:*",
+ "tslib": "^2.3.1"
+ },
+ "devDependencies": {
+ "@ampproject/rollup-plugin-closure-compiler": "~0.27.0",
+ "@rollup/plugin-commonjs": "~21.0.2",
+ "@rollup/plugin-node-resolve": "~13.1.3",
+ "@types/jest": "~27.4.1",
+ "@types/jsdom": "~16.2.14",
+ "@typescript-eslint/eslint-plugin": "~5.15.0",
+ "@typescript-eslint/parser": "~5.15.0",
+ "eslint": "~8.11.0",
+ "jest": "~27.5.1",
+ "jest-environment-jsdom": "~27.5.1",
+ "jest-environment-jsdom-global": "~3.0.0",
+ "jest-standard-reporter": "~2.0.0",
+ "rollup": "~2.70.1",
+ "rollup-plugin-cleanup": "~3.2.1",
+ "rollup-plugin-license": "~2.6.1",
+ "rollup-plugin-terser": "~7.0.2",
+ "rollup-plugin-ts": "~2.0.5",
+ "ts-jest": "~27.1.3",
+ "typescript": "~4.6.2"
+ },
+ "peerDependencies": {
+ "@snowplow/browser-tracker": "~3.13.1"
+ }
+}
diff --git a/plugins/browser-plugin-privacy-sandbox/rollup.config.js b/plugins/browser-plugin-privacy-sandbox/rollup.config.js
new file mode 100644
index 000000000..6c968d34c
--- /dev/null
+++ b/plugins/browser-plugin-privacy-sandbox/rollup.config.js
@@ -0,0 +1,37 @@
+import { nodeResolve } from '@rollup/plugin-node-resolve';
+import commonjs from '@rollup/plugin-commonjs';
+import ts from 'rollup-plugin-ts'; // Preferred over @rollup/plugin-typescript as it bundles .d.ts files
+import { banner } from '../../banner';
+import compiler from '@ampproject/rollup-plugin-closure-compiler';
+import { terser } from 'rollup-plugin-terser';
+import cleanup from 'rollup-plugin-cleanup';
+import pkg from './package.json';
+import { builtinModules } from 'module';
+
+const umdPlugins = [nodeResolve({ browser: true }), commonjs(), ts()];
+const umdName = 'snowplowPrivacySandbox';
+
+export default [
+ // CommonJS (for Node) and ES module (for bundlers) build.
+ {
+ input: './src/index.ts',
+ plugins: [...umdPlugins, banner()],
+ treeshake: { moduleSideEffects: ['sha1'] },
+ output: [{ file: pkg.main, format: 'umd', sourcemap: true, name: umdName }],
+ },
+ {
+ input: './src/index.ts',
+ plugins: [...umdPlugins, compiler(), terser(), cleanup({ comments: 'none' }), banner()],
+ treeshake: { moduleSideEffects: ['sha1'] },
+ output: [{ file: pkg.main.replace('.js', '.min.js'), format: 'umd', sourcemap: true, name: umdName }],
+ },
+ {
+ input: './src/index.ts',
+ external: [...builtinModules, ...Object.keys(pkg.dependencies), ...Object.keys(pkg.devDependencies)],
+ plugins: [
+ ts(), // so Rollup can convert TypeScript to JavaScript
+ banner(),
+ ],
+ output: [{ file: pkg.module, format: 'es', sourcemap: true }],
+ },
+];
diff --git a/plugins/browser-plugin-privacy-sandbox/src/index.ts b/plugins/browser-plugin-privacy-sandbox/src/index.ts
new file mode 100644
index 000000000..fc65f8b65
--- /dev/null
+++ b/plugins/browser-plugin-privacy-sandbox/src/index.ts
@@ -0,0 +1,43 @@
+import { BrowserPlugin } from '@snowplow/browser-tracker-core';
+import { PRIVACY_SANDBOX_TOPICS_SCHEMA } from './schemata';
+import { LOG } from '@snowplow/tracker-core';
+import { BrowsingTopicsOptions, PrivacySandboxTopic, Topic } from './types';
+
+declare global {
+ interface Document {
+ /* Declare Feature Policy types https://developer.mozilla.org/en-US/docs/Web/API/FeaturePolicy */
+ featurePolicy?: {
+ allowsFeature: (feature: string, origin?: string) => boolean;
+ };
+ browsingTopics: (options: BrowsingTopicsOptions) => Promise;
+ }
+}
+
+/**
+ * Adds Privacy Sandbox Topics context to events
+ */
+export function PrivacySandboxPlugin(): BrowserPlugin {
+ let topics: Topic[] = [];
+
+ return {
+ activateBrowserPlugin: function () {
+ const isTopicsApiAvailable =
+ 'browsingTopics' in document && document.featurePolicy?.allowsFeature('browsing-topics');
+
+ if (isTopicsApiAvailable) {
+ document
+ .browsingTopics({ skipObservation: true })
+ .then((availableTopics) => {
+ topics = availableTopics.map(({ topic, version }) => ({
+ topic,
+ version,
+ }));
+ })
+ .catch((err) => LOG.error(err));
+ }
+ },
+ contexts: function () {
+ return topics.length ? [{ schema: PRIVACY_SANDBOX_TOPICS_SCHEMA, data: { topics } }] : [];
+ },
+ };
+}
diff --git a/plugins/browser-plugin-privacy-sandbox/src/schemata.ts b/plugins/browser-plugin-privacy-sandbox/src/schemata.ts
new file mode 100644
index 000000000..e759a94b0
--- /dev/null
+++ b/plugins/browser-plugin-privacy-sandbox/src/schemata.ts
@@ -0,0 +1 @@
+export const PRIVACY_SANDBOX_TOPICS_SCHEMA = 'iglu:com.google.privacysandbox/topics/jsonschema/1-0-0';
diff --git a/plugins/browser-plugin-privacy-sandbox/src/types.ts b/plugins/browser-plugin-privacy-sandbox/src/types.ts
new file mode 100644
index 000000000..41ca0f1a7
--- /dev/null
+++ b/plugins/browser-plugin-privacy-sandbox/src/types.ts
@@ -0,0 +1,14 @@
+export type PrivacySandboxTopic = {
+ configVersion: string;
+ modelVersion: string;
+ taxonomyVersion: string;
+ topic: number;
+ version: string;
+};
+
+export type Topic = Pick;
+
+export type BrowsingTopicsOptions = {
+ /* Enabling will not cause the current page to be included in the weekly epoch calculation or update the list of topics observed for the caller. */
+ skipObservation?: boolean;
+};
diff --git a/plugins/browser-plugin-privacy-sandbox/test/__snapshots__/privacy-sandbox.test.ts.snap b/plugins/browser-plugin-privacy-sandbox/test/__snapshots__/privacy-sandbox.test.ts.snap
new file mode 100644
index 000000000..8b7bbd864
--- /dev/null
+++ b/plugins/browser-plugin-privacy-sandbox/test/__snapshots__/privacy-sandbox.test.ts.snap
@@ -0,0 +1,22 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`Privacy Sandbox plugin Returns no values when feature policy "browsing-topics" is off 1`] = `undefined`;
+
+exports[`Privacy Sandbox plugin Returns values for Privacy Sandbox properties 1`] = `
+Object {
+ "data": Array [
+ Object {
+ "data": Object {
+ "topics": Array [
+ Object {
+ "topic": 1,
+ "version": "chrome.1:1:1",
+ },
+ ],
+ },
+ "schema": "iglu:com.google.privacysandbox/topics/jsonschema/1-0-0",
+ },
+ ],
+ "schema": "iglu:com.snowplowanalytics.snowplow/contexts/jsonschema/1-0-0",
+}
+`;
diff --git a/plugins/browser-plugin-privacy-sandbox/test/privacy-sandbox.test.ts b/plugins/browser-plugin-privacy-sandbox/test/privacy-sandbox.test.ts
new file mode 100644
index 000000000..7324ecdee
--- /dev/null
+++ b/plugins/browser-plugin-privacy-sandbox/test/privacy-sandbox.test.ts
@@ -0,0 +1,98 @@
+import { buildLinkClick, trackerCore } from '@snowplow/tracker-core';
+import { JSDOM } from 'jsdom';
+import { PrivacySandboxPlugin } from '../src';
+import { BrowserTracker } from '@snowplow/browser-tracker-core';
+import { setImmediate } from 'timers';
+
+declare var jsdom: JSDOM;
+
+describe('Privacy Sandbox plugin', () => {
+ it('Returns values for Privacy Sandbox properties', async () => {
+ const sampleTopicEntry = {
+ topic: 1,
+ taxonomyVersion: '1',
+ version: 'chrome.1:1:1',
+ modelVersion: '1',
+ configurationVersion: '1',
+ };
+
+ Object.defineProperties(jsdom.window.document, {
+ browsingTopics: {
+ value: () => {
+ return Promise.resolve([sampleTopicEntry]);
+ },
+ configurable: true,
+ },
+ featurePolicy: {
+ value: {
+ allowsFeature: (feature: string) => feature === 'browsing-topics',
+ },
+ configurable: true,
+ },
+ });
+
+ const plugin = PrivacySandboxPlugin();
+
+ const core = trackerCore({
+ corePlugins: [plugin],
+ callback: (payloadBuilder) => {
+ const json = payloadBuilder.getJson().filter((e) => e.keyIfEncoded === 'cx');
+ expect(json[0].json).toMatchSnapshot();
+ },
+ });
+
+ plugin.activateBrowserPlugin?.({ core } as BrowserTracker);
+
+ const flushPromises = () => new Promise(setImmediate);
+ await flushPromises();
+
+ core.track(buildLinkClick({ targetUrl: 'https://example.com' }));
+ });
+
+ it('Returns no values when feature policy "browsing-topics" is off', async () => {
+ const sampleTopicEntry = {
+ topic: 1,
+ taxonomyVersion: '1',
+ version: 'chrome.1:1:1',
+ modelVersion: '1',
+ configurationVersion: '1',
+ };
+
+ Object.defineProperties(jsdom.window.document, {
+ browsingTopics: {
+ value: () => {
+ return Promise.resolve([sampleTopicEntry]);
+ },
+ configurable: true,
+ },
+ featurePolicy: {
+ value: {
+ allowsFeature: function (feature: string) {
+ if (feature === 'browsing-topics') {
+ return false;
+ }
+ return true;
+ },
+ },
+ configurable: true,
+ },
+ });
+
+ const plugin = PrivacySandboxPlugin();
+
+ const core = trackerCore({
+ corePlugins: [plugin],
+ callback: (payloadBuilder) => {
+ const json = payloadBuilder.getJson().filter((e) => e.keyIfEncoded === 'cx');
+ expect(json[0]?.json).toMatchSnapshot();
+ },
+ });
+
+ plugin.activateBrowserPlugin?.({ core } as BrowserTracker);
+
+ const flushPromises = () => new Promise(setImmediate);
+ await flushPromises();
+
+ core.track(buildLinkClick({ targetUrl: 'https://example.com' }));
+ });
+});
diff --git a/plugins/browser-plugin-privacy-sandbox/tsconfig.json b/plugins/browser-plugin-privacy-sandbox/tsconfig.json
new file mode 100644
index 000000000..4082f16a5
--- /dev/null
+++ b/plugins/browser-plugin-privacy-sandbox/tsconfig.json
@@ -0,0 +1,3 @@
+{
+ "extends": "../../tsconfig.json"
+}
diff --git a/rush.json b/rush.json
index 09e746ccb..b2f795e50 100644
--- a/rush.json
+++ b/rush.json
@@ -565,6 +565,12 @@
"projectFolder": "plugins/browser-plugin-vimeo-tracking",
"reviewCategory": "plugins",
"versionPolicyName": "tracker"
+ },
+ {
+ "packageName": "@snowplow/browser-plugin-privacy-sandbox",
+ "projectFolder": "plugins/browser-plugin-privacy-sandbox",
+ "reviewCategory": "plugins",
+ "versionPolicyName": "tracker"
}
]
}
diff --git a/trackers/javascript-tracker/package.json b/trackers/javascript-tracker/package.json
index 984e561d4..e96097c5d 100644
--- a/trackers/javascript-tracker/package.json
+++ b/trackers/javascript-tracker/package.json
@@ -64,7 +64,8 @@
"@snowplow/browser-tracker-core": "workspace:*",
"@snowplow/tracker-core": "workspace:*",
"tslib": "^2.3.1",
- "@snowplow/browser-plugin-enhanced-consent": "workspace:*"
+ "@snowplow/browser-plugin-enhanced-consent": "workspace:*",
+ "@snowplow/browser-plugin-privacy-sandbox": "workspace:*"
},
"devDependencies": {
"@ampproject/rollup-plugin-closure-compiler": "~0.27.0",
diff --git a/trackers/javascript-tracker/src/features.ts b/trackers/javascript-tracker/src/features.ts
index 86a63d4b1..6a2932a75 100644
--- a/trackers/javascript-tracker/src/features.ts
+++ b/trackers/javascript-tracker/src/features.ts
@@ -53,6 +53,7 @@ import { JavaScriptTrackerConfiguration } from './configuration';
import * as EnhancedConsent from '@snowplow/browser-plugin-enhanced-consent';
import * as SnowplowMedia from '@snowplow/browser-plugin-media';
import * as VimeoTracking from '@snowplow/browser-plugin-vimeo-tracking';
+import * as PrivacySandbox from '@snowplow/browser-plugin-privacy-sandbox';
/**
* Calculates the required plugins to intialise per tracker
@@ -207,6 +208,11 @@ export function Plugins(configuration: JavaScriptTrackerConfiguration) {
const { VimeoTrackingPlugin, ...apiMethods } = VimeoTracking;
activatedPlugins.push([VimeoTrackingPlugin(), apiMethods]);
}
+
+ if (plugins.privacySandbox) {
+ const { PrivacySandboxPlugin, ...apiMethods } = PrivacySandbox;
+ activatedPlugins.push([PrivacySandboxPlugin(), apiMethods]);
+ }
return activatedPlugins;
}
diff --git a/trackers/javascript-tracker/tracker.config.ts b/trackers/javascript-tracker/tracker.config.ts
index a6ccc8a3d..3ee40fc1e 100644
--- a/trackers/javascript-tracker/tracker.config.ts
+++ b/trackers/javascript-tracker/tracker.config.ts
@@ -50,3 +50,4 @@ export const youtubeTracking = false;
export const enhancedConsent = false;
export const snowplowMedia = false;
export const vimeoTracking = false;
+export const privacySandbox = false;
diff --git a/trackers/javascript-tracker/tracker.lite.config.ts b/trackers/javascript-tracker/tracker.lite.config.ts
index 3c3fad3d0..4ad8c4046 100644
--- a/trackers/javascript-tracker/tracker.lite.config.ts
+++ b/trackers/javascript-tracker/tracker.lite.config.ts
@@ -50,3 +50,4 @@ export const youtubeTracking = false;
export const enhancedConsent = false;
export const snowplowMedia = false;
export const vimeoTracking = false;
+export const privacySandbox = false;
diff --git a/trackers/javascript-tracker/tracker.test.config.ts b/trackers/javascript-tracker/tracker.test.config.ts
index 310727c00..4f3c136a2 100644
--- a/trackers/javascript-tracker/tracker.test.config.ts
+++ b/trackers/javascript-tracker/tracker.test.config.ts
@@ -50,3 +50,4 @@ export const youtubeTracking = true;
export const enhancedConsent = false;
export const snowplowMedia = true;
export const vimeoTracking = true;
+export const privacySandbox = false;
From 44e2b7039019392c43baf4b8d075031a9d7b0926 Mon Sep 17 00:00:00 2001
From: Greg Leonard <45019882+greg-el@users.noreply.github.com>
Date: Thu, 10 Aug 2023 12:02:32 +0100
Subject: [PATCH 007/341] Prepare for release 3.14.0
---
common/config/rush/version-policies.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/common/config/rush/version-policies.json b/common/config/rush/version-policies.json
index 9b5303c5b..7a199e9d3 100644
--- a/common/config/rush/version-policies.json
+++ b/common/config/rush/version-policies.json
@@ -42,6 +42,6 @@
*
* Valid values are: "prerelease", "release", "minor", "patch", "major"
*/
- "nextBump": "patch"
+ "nextBump": "minor"
}
]
From b9138bf83c572701d8ede88aa61100ddedab659b Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Thu, 10 Aug 2023 13:56:44 +0000
Subject: [PATCH 008/341] Update changelogs [skip ci]
---
..._repeated_media_events_2023-06-30-20-36.json | 10 ----------
...2-update_player_schema_2023-08-08-08-01.json | 10 ----------
...privacy-sandbox-plugin_2023-06-14-20-26.json | 10 ----------
...ssue-1156-vimeo_plugin_2023-06-27-11-42.json | 10 ----------
...ling-activity-tracking_2023-08-08-08-55.json | 10 ----------
...ling-activity-tracking_2023-08-08-08-55.json | 10 ----------
...privacy-sandbox-plugin_2023-08-04-12-00.json | 10 ----------
...hestration-improvement_2023-07-13-08-16.json | 10 ----------
...ssue-1156-vimeo_plugin_2023-06-27-11-42.json | 10 ----------
libraries/browser-tracker-core/CHANGELOG.json | 12 ++++++++++++
libraries/browser-tracker-core/CHANGELOG.md | 9 ++++++++-
libraries/tracker-core/CHANGELOG.json | 6 ++++++
libraries/tracker-core/CHANGELOG.md | 7 ++++++-
.../browser-plugin-ad-tracking/CHANGELOG.json | 6 ++++++
plugins/browser-plugin-ad-tracking/CHANGELOG.md | 7 ++++++-
.../CHANGELOG.json | 6 ++++++
.../CHANGELOG.md | 7 ++++++-
.../browser-plugin-client-hints/CHANGELOG.json | 6 ++++++
.../browser-plugin-client-hints/CHANGELOG.md | 7 ++++++-
plugins/browser-plugin-consent/CHANGELOG.json | 6 ++++++
plugins/browser-plugin-consent/CHANGELOG.md | 7 ++++++-
plugins/browser-plugin-debugger/CHANGELOG.json | 6 ++++++
plugins/browser-plugin-debugger/CHANGELOG.md | 7 ++++++-
plugins/browser-plugin-ecommerce/CHANGELOG.json | 6 ++++++
plugins/browser-plugin-ecommerce/CHANGELOG.md | 7 ++++++-
.../CHANGELOG.json | 6 ++++++
.../CHANGELOG.md | 7 ++++++-
.../CHANGELOG.json | 6 ++++++
.../CHANGELOG.md | 7 ++++++-
.../CHANGELOG.json | 6 ++++++
.../browser-plugin-error-tracking/CHANGELOG.md | 7 ++++++-
.../browser-plugin-form-tracking/CHANGELOG.json | 6 ++++++
.../browser-plugin-form-tracking/CHANGELOG.md | 7 ++++++-
.../browser-plugin-ga-cookies/CHANGELOG.json | 6 ++++++
plugins/browser-plugin-ga-cookies/CHANGELOG.md | 7 ++++++-
.../browser-plugin-geolocation/CHANGELOG.json | 6 ++++++
plugins/browser-plugin-geolocation/CHANGELOG.md | 7 ++++++-
.../CHANGELOG.json | 6 ++++++
.../CHANGELOG.md | 7 ++++++-
.../CHANGELOG.json | 6 ++++++
.../browser-plugin-media-tracking/CHANGELOG.md | 7 ++++++-
plugins/browser-plugin-media/CHANGELOG.json | 15 +++++++++++++++
plugins/browser-plugin-media/CHANGELOG.md | 10 +++++++++-
.../browser-plugin-optimizely-x/CHANGELOG.json | 6 ++++++
.../browser-plugin-optimizely-x/CHANGELOG.md | 7 ++++++-
.../browser-plugin-optimizely/CHANGELOG.json | 6 ++++++
plugins/browser-plugin-optimizely/CHANGELOG.md | 7 ++++++-
.../CHANGELOG.json | 6 ++++++
.../CHANGELOG.md | 7 ++++++-
.../CHANGELOG.json | 6 ++++++
.../CHANGELOG.md | 7 ++++++-
.../CHANGELOG.json | 17 +++++++++++++++++
.../browser-plugin-privacy-sandbox/CHANGELOG.md | 11 +++++++++++
.../browser-plugin-site-tracking/CHANGELOG.json | 6 ++++++
.../browser-plugin-site-tracking/CHANGELOG.md | 7 ++++++-
.../CHANGELOG.json | 6 ++++++
.../CHANGELOG.md | 7 ++++++-
plugins/browser-plugin-timezone/CHANGELOG.json | 6 ++++++
plugins/browser-plugin-timezone/CHANGELOG.md | 7 ++++++-
.../CHANGELOG.json | 17 +++++++++++++++++
.../browser-plugin-vimeo-tracking/CHANGELOG.md | 11 +++++++++++
.../browser-plugin-web-vitals/CHANGELOG.json | 6 ++++++
plugins/browser-plugin-web-vitals/CHANGELOG.md | 7 ++++++-
.../CHANGELOG.json | 6 ++++++
.../CHANGELOG.md | 7 ++++++-
trackers/browser-tracker/CHANGELOG.json | 12 ++++++++++++
trackers/browser-tracker/CHANGELOG.md | 9 ++++++++-
trackers/javascript-tracker/CHANGELOG.json | 15 +++++++++++++++
trackers/javascript-tracker/CHANGELOG.md | 10 +++++++++-
trackers/node-tracker/CHANGELOG.json | 6 ++++++
trackers/node-tracker/CHANGELOG.md | 7 ++++++-
71 files changed, 444 insertions(+), 119 deletions(-)
delete mode 100644 common/changes/@snowplow/browser-plugin-media/issue-1218-filter_out_repeated_media_events_2023-06-30-20-36.json
delete mode 100644 common/changes/@snowplow/browser-plugin-media/issue-1222-update_player_schema_2023-08-08-08-01.json
delete mode 100644 common/changes/@snowplow/browser-plugin-privacy-sandbox/feature-add-privacy-sandbox-plugin_2023-06-14-20-26.json
delete mode 100644 common/changes/@snowplow/browser-plugin-vimeo-tracking/issue-1156-vimeo_plugin_2023-06-27-11-42.json
delete mode 100644 common/changes/@snowplow/browser-tracker-core/feature-1161-allow-disabling-activity-tracking_2023-08-08-08-55.json
delete mode 100644 common/changes/@snowplow/browser-tracker/feature-1161-allow-disabling-activity-tracking_2023-08-08-08-55.json
delete mode 100644 common/changes/@snowplow/javascript-tracker/feature-1205-add-privacy-sandbox-plugin_2023-08-04-12-00.json
delete mode 100644 common/changes/@snowplow/javascript-tracker/feature-minor-e2e-orchestration-improvement_2023-07-13-08-16.json
delete mode 100644 common/changes/@snowplow/javascript-tracker/issue-1156-vimeo_plugin_2023-06-27-11-42.json
create mode 100644 plugins/browser-plugin-privacy-sandbox/CHANGELOG.json
create mode 100644 plugins/browser-plugin-privacy-sandbox/CHANGELOG.md
create mode 100644 plugins/browser-plugin-vimeo-tracking/CHANGELOG.json
create mode 100644 plugins/browser-plugin-vimeo-tracking/CHANGELOG.md
diff --git a/common/changes/@snowplow/browser-plugin-media/issue-1218-filter_out_repeated_media_events_2023-06-30-20-36.json b/common/changes/@snowplow/browser-plugin-media/issue-1218-filter_out_repeated_media_events_2023-06-30-20-36.json
deleted file mode 100644
index 037797552..000000000
--- a/common/changes/@snowplow/browser-plugin-media/issue-1218-filter_out_repeated_media_events_2023-06-30-20-36.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "changes": [
- {
- "packageName": "@snowplow/browser-plugin-media",
- "comment": "Filter out repeated seek and volume change events happening when user holds down the player controls (#1218)",
- "type": "none"
- }
- ],
- "packageName": "@snowplow/browser-plugin-media"
-}
\ No newline at end of file
diff --git a/common/changes/@snowplow/browser-plugin-media/issue-1222-update_player_schema_2023-08-08-08-01.json b/common/changes/@snowplow/browser-plugin-media/issue-1222-update_player_schema_2023-08-08-08-01.json
deleted file mode 100644
index fa9a34a7f..000000000
--- a/common/changes/@snowplow/browser-plugin-media/issue-1222-update_player_schema_2023-08-08-08-01.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "changes": [
- {
- "packageName": "@snowplow/browser-plugin-media",
- "comment": "Update version of the player schema used in the media plugin to 2-0-0 (#1222)",
- "type": "none"
- }
- ],
- "packageName": "@snowplow/browser-plugin-media"
-}
\ No newline at end of file
diff --git a/common/changes/@snowplow/browser-plugin-privacy-sandbox/feature-add-privacy-sandbox-plugin_2023-06-14-20-26.json b/common/changes/@snowplow/browser-plugin-privacy-sandbox/feature-add-privacy-sandbox-plugin_2023-06-14-20-26.json
deleted file mode 100644
index 7d163ead2..000000000
--- a/common/changes/@snowplow/browser-plugin-privacy-sandbox/feature-add-privacy-sandbox-plugin_2023-06-14-20-26.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "changes": [
- {
- "packageName": "@snowplow/browser-plugin-privacy-sandbox",
- "comment": "Introduce PrivacySandboxPlugin",
- "type": "none"
- }
- ],
- "packageName": "@snowplow/browser-plugin-privacy-sandbox"
-}
\ No newline at end of file
diff --git a/common/changes/@snowplow/browser-plugin-vimeo-tracking/issue-1156-vimeo_plugin_2023-06-27-11-42.json b/common/changes/@snowplow/browser-plugin-vimeo-tracking/issue-1156-vimeo_plugin_2023-06-27-11-42.json
deleted file mode 100644
index 82d1f2082..000000000
--- a/common/changes/@snowplow/browser-plugin-vimeo-tracking/issue-1156-vimeo_plugin_2023-06-27-11-42.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "changes": [
- {
- "packageName": "@snowplow/browser-plugin-vimeo-tracking",
- "comment": "Add Vimeo tracking plugin (close #1156)",
- "type": "none"
- }
- ],
- "packageName": "@snowplow/browser-plugin-vimeo-tracking"
-}
\ No newline at end of file
diff --git a/common/changes/@snowplow/browser-tracker-core/feature-1161-allow-disabling-activity-tracking_2023-08-08-08-55.json b/common/changes/@snowplow/browser-tracker-core/feature-1161-allow-disabling-activity-tracking_2023-08-08-08-55.json
deleted file mode 100644
index df70f3066..000000000
--- a/common/changes/@snowplow/browser-tracker-core/feature-1161-allow-disabling-activity-tracking_2023-08-08-08-55.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "changes": [
- {
- "packageName": "@snowplow/browser-tracker-core",
- "comment": "Allow disabling activity tracking actions with disableActivityTracking and disableActivityTrackingCallback APIs",
- "type": "none"
- }
- ],
- "packageName": "@snowplow/browser-tracker-core"
-}
\ No newline at end of file
diff --git a/common/changes/@snowplow/browser-tracker/feature-1161-allow-disabling-activity-tracking_2023-08-08-08-55.json b/common/changes/@snowplow/browser-tracker/feature-1161-allow-disabling-activity-tracking_2023-08-08-08-55.json
deleted file mode 100644
index 50969d761..000000000
--- a/common/changes/@snowplow/browser-tracker/feature-1161-allow-disabling-activity-tracking_2023-08-08-08-55.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "changes": [
- {
- "packageName": "@snowplow/browser-tracker",
- "comment": "Allow disabling activity tracking actions with disableActivityTracking and disableActivityTrackingCallback APIs",
- "type": "none"
- }
- ],
- "packageName": "@snowplow/browser-tracker"
-}
\ No newline at end of file
diff --git a/common/changes/@snowplow/javascript-tracker/feature-1205-add-privacy-sandbox-plugin_2023-08-04-12-00.json b/common/changes/@snowplow/javascript-tracker/feature-1205-add-privacy-sandbox-plugin_2023-08-04-12-00.json
deleted file mode 100644
index 3ae431ccc..000000000
--- a/common/changes/@snowplow/javascript-tracker/feature-1205-add-privacy-sandbox-plugin_2023-08-04-12-00.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "changes": [
- {
- "packageName": "@snowplow/javascript-tracker",
- "comment": "Introduce PrivacySandboxPlugin",
- "type": "none"
- }
- ],
- "packageName": "@snowplow/javascript-tracker"
-}
\ No newline at end of file
diff --git a/common/changes/@snowplow/javascript-tracker/feature-minor-e2e-orchestration-improvement_2023-07-13-08-16.json b/common/changes/@snowplow/javascript-tracker/feature-minor-e2e-orchestration-improvement_2023-07-13-08-16.json
deleted file mode 100644
index bbc5af499..000000000
--- a/common/changes/@snowplow/javascript-tracker/feature-minor-e2e-orchestration-improvement_2023-07-13-08-16.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "changes": [
- {
- "packageName": "@snowplow/javascript-tracker",
- "comment": "End to end test changes",
- "type": "none"
- }
- ],
- "packageName": "@snowplow/javascript-tracker"
-}
\ No newline at end of file
diff --git a/common/changes/@snowplow/javascript-tracker/issue-1156-vimeo_plugin_2023-06-27-11-42.json b/common/changes/@snowplow/javascript-tracker/issue-1156-vimeo_plugin_2023-06-27-11-42.json
deleted file mode 100644
index ae2f53795..000000000
--- a/common/changes/@snowplow/javascript-tracker/issue-1156-vimeo_plugin_2023-06-27-11-42.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "changes": [
- {
- "packageName": "@snowplow/javascript-tracker",
- "comment": "",
- "type": "none"
- }
- ],
- "packageName": "@snowplow/javascript-tracker"
-}
\ No newline at end of file
diff --git a/libraries/browser-tracker-core/CHANGELOG.json b/libraries/browser-tracker-core/CHANGELOG.json
index ffaf9d7f1..4c3dc6b7d 100644
--- a/libraries/browser-tracker-core/CHANGELOG.json
+++ b/libraries/browser-tracker-core/CHANGELOG.json
@@ -1,6 +1,18 @@
{
"name": "@snowplow/browser-tracker-core",
"entries": [
+ {
+ "version": "3.14.0",
+ "tag": "@snowplow/browser-tracker-core_v3.14.0",
+ "date": "Thu, 10 Aug 2023 13:56:44 GMT",
+ "comments": {
+ "none": [
+ {
+ "comment": "Allow disabling activity tracking actions with disableActivityTracking and disableActivityTrackingCallback APIs"
+ }
+ ]
+ }
+ },
{
"version": "3.13.1",
"tag": "@snowplow/browser-tracker-core_v3.13.1",
diff --git a/libraries/browser-tracker-core/CHANGELOG.md b/libraries/browser-tracker-core/CHANGELOG.md
index a32df93ed..65998c211 100644
--- a/libraries/browser-tracker-core/CHANGELOG.md
+++ b/libraries/browser-tracker-core/CHANGELOG.md
@@ -1,6 +1,13 @@
# Change Log - @snowplow/browser-tracker-core
-This log was last generated on Thu, 29 Jun 2023 14:20:06 GMT and should not be manually modified.
+This log was last generated on Thu, 10 Aug 2023 13:56:44 GMT and should not be manually modified.
+
+## 3.14.0
+Thu, 10 Aug 2023 13:56:44 GMT
+
+### Updates
+
+- Allow disabling activity tracking actions with disableActivityTracking and disableActivityTrackingCallback APIs
## 3.13.1
Thu, 29 Jun 2023 14:20:06 GMT
diff --git a/libraries/tracker-core/CHANGELOG.json b/libraries/tracker-core/CHANGELOG.json
index 4521ca711..dd47bb7bb 100644
--- a/libraries/tracker-core/CHANGELOG.json
+++ b/libraries/tracker-core/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/tracker-core",
"entries": [
+ {
+ "version": "3.14.0",
+ "tag": "@snowplow/tracker-core_v3.14.0",
+ "date": "Thu, 10 Aug 2023 13:56:44 GMT",
+ "comments": {}
+ },
{
"version": "3.13.1",
"tag": "@snowplow/tracker-core_v3.13.1",
diff --git a/libraries/tracker-core/CHANGELOG.md b/libraries/tracker-core/CHANGELOG.md
index e2f319b53..7089f61c8 100644
--- a/libraries/tracker-core/CHANGELOG.md
+++ b/libraries/tracker-core/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/tracker-core
-This log was last generated on Thu, 29 Jun 2023 14:20:06 GMT and should not be manually modified.
+This log was last generated on Thu, 10 Aug 2023 13:56:44 GMT and should not be manually modified.
+
+## 3.14.0
+Thu, 10 Aug 2023 13:56:44 GMT
+
+_Version update only_
## 3.13.1
Thu, 29 Jun 2023 14:20:06 GMT
diff --git a/plugins/browser-plugin-ad-tracking/CHANGELOG.json b/plugins/browser-plugin-ad-tracking/CHANGELOG.json
index 2be7d2607..4be63befc 100644
--- a/plugins/browser-plugin-ad-tracking/CHANGELOG.json
+++ b/plugins/browser-plugin-ad-tracking/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-ad-tracking",
"entries": [
+ {
+ "version": "3.14.0",
+ "tag": "@snowplow/browser-plugin-ad-tracking_v3.14.0",
+ "date": "Thu, 10 Aug 2023 13:56:44 GMT",
+ "comments": {}
+ },
{
"version": "3.13.1",
"tag": "@snowplow/browser-plugin-ad-tracking_v3.13.1",
diff --git a/plugins/browser-plugin-ad-tracking/CHANGELOG.md b/plugins/browser-plugin-ad-tracking/CHANGELOG.md
index 6c04d0db7..909179630 100644
--- a/plugins/browser-plugin-ad-tracking/CHANGELOG.md
+++ b/plugins/browser-plugin-ad-tracking/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-ad-tracking
-This log was last generated on Thu, 29 Jun 2023 14:20:06 GMT and should not be manually modified.
+This log was last generated on Thu, 10 Aug 2023 13:56:44 GMT and should not be manually modified.
+
+## 3.14.0
+Thu, 10 Aug 2023 13:56:44 GMT
+
+_Version update only_
## 3.13.1
Thu, 29 Jun 2023 14:20:06 GMT
diff --git a/plugins/browser-plugin-browser-features/CHANGELOG.json b/plugins/browser-plugin-browser-features/CHANGELOG.json
index e9fa37878..3ee4131f6 100644
--- a/plugins/browser-plugin-browser-features/CHANGELOG.json
+++ b/plugins/browser-plugin-browser-features/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-browser-features",
"entries": [
+ {
+ "version": "3.14.0",
+ "tag": "@snowplow/browser-plugin-browser-features_v3.14.0",
+ "date": "Thu, 10 Aug 2023 13:56:44 GMT",
+ "comments": {}
+ },
{
"version": "3.13.1",
"tag": "@snowplow/browser-plugin-browser-features_v3.13.1",
diff --git a/plugins/browser-plugin-browser-features/CHANGELOG.md b/plugins/browser-plugin-browser-features/CHANGELOG.md
index 7316c53ea..e89371870 100644
--- a/plugins/browser-plugin-browser-features/CHANGELOG.md
+++ b/plugins/browser-plugin-browser-features/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-browser-features
-This log was last generated on Thu, 29 Jun 2023 14:20:06 GMT and should not be manually modified.
+This log was last generated on Thu, 10 Aug 2023 13:56:44 GMT and should not be manually modified.
+
+## 3.14.0
+Thu, 10 Aug 2023 13:56:44 GMT
+
+_Version update only_
## 3.13.1
Thu, 29 Jun 2023 14:20:06 GMT
diff --git a/plugins/browser-plugin-client-hints/CHANGELOG.json b/plugins/browser-plugin-client-hints/CHANGELOG.json
index 655c4ddff..89ff9a1ca 100644
--- a/plugins/browser-plugin-client-hints/CHANGELOG.json
+++ b/plugins/browser-plugin-client-hints/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-client-hints",
"entries": [
+ {
+ "version": "3.14.0",
+ "tag": "@snowplow/browser-plugin-client-hints_v3.14.0",
+ "date": "Thu, 10 Aug 2023 13:56:44 GMT",
+ "comments": {}
+ },
{
"version": "3.13.1",
"tag": "@snowplow/browser-plugin-client-hints_v3.13.1",
diff --git a/plugins/browser-plugin-client-hints/CHANGELOG.md b/plugins/browser-plugin-client-hints/CHANGELOG.md
index 83c1172a7..d9be7495d 100644
--- a/plugins/browser-plugin-client-hints/CHANGELOG.md
+++ b/plugins/browser-plugin-client-hints/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-client-hints
-This log was last generated on Thu, 29 Jun 2023 14:20:06 GMT and should not be manually modified.
+This log was last generated on Thu, 10 Aug 2023 13:56:44 GMT and should not be manually modified.
+
+## 3.14.0
+Thu, 10 Aug 2023 13:56:44 GMT
+
+_Version update only_
## 3.13.1
Thu, 29 Jun 2023 14:20:06 GMT
diff --git a/plugins/browser-plugin-consent/CHANGELOG.json b/plugins/browser-plugin-consent/CHANGELOG.json
index 560158cc0..fdc797eea 100644
--- a/plugins/browser-plugin-consent/CHANGELOG.json
+++ b/plugins/browser-plugin-consent/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-consent",
"entries": [
+ {
+ "version": "3.14.0",
+ "tag": "@snowplow/browser-plugin-consent_v3.14.0",
+ "date": "Thu, 10 Aug 2023 13:56:44 GMT",
+ "comments": {}
+ },
{
"version": "3.13.1",
"tag": "@snowplow/browser-plugin-consent_v3.13.1",
diff --git a/plugins/browser-plugin-consent/CHANGELOG.md b/plugins/browser-plugin-consent/CHANGELOG.md
index 7f82894aa..ab5692176 100644
--- a/plugins/browser-plugin-consent/CHANGELOG.md
+++ b/plugins/browser-plugin-consent/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-consent
-This log was last generated on Thu, 29 Jun 2023 14:20:06 GMT and should not be manually modified.
+This log was last generated on Thu, 10 Aug 2023 13:56:44 GMT and should not be manually modified.
+
+## 3.14.0
+Thu, 10 Aug 2023 13:56:44 GMT
+
+_Version update only_
## 3.13.1
Thu, 29 Jun 2023 14:20:06 GMT
diff --git a/plugins/browser-plugin-debugger/CHANGELOG.json b/plugins/browser-plugin-debugger/CHANGELOG.json
index ac905a89f..234e7e40a 100644
--- a/plugins/browser-plugin-debugger/CHANGELOG.json
+++ b/plugins/browser-plugin-debugger/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-debugger",
"entries": [
+ {
+ "version": "3.14.0",
+ "tag": "@snowplow/browser-plugin-debugger_v3.14.0",
+ "date": "Thu, 10 Aug 2023 13:56:44 GMT",
+ "comments": {}
+ },
{
"version": "3.13.1",
"tag": "@snowplow/browser-plugin-debugger_v3.13.1",
diff --git a/plugins/browser-plugin-debugger/CHANGELOG.md b/plugins/browser-plugin-debugger/CHANGELOG.md
index 1b6de099a..2ad30f3e8 100644
--- a/plugins/browser-plugin-debugger/CHANGELOG.md
+++ b/plugins/browser-plugin-debugger/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-debugger
-This log was last generated on Thu, 29 Jun 2023 14:20:06 GMT and should not be manually modified.
+This log was last generated on Thu, 10 Aug 2023 13:56:44 GMT and should not be manually modified.
+
+## 3.14.0
+Thu, 10 Aug 2023 13:56:44 GMT
+
+_Version update only_
## 3.13.1
Thu, 29 Jun 2023 14:20:06 GMT
diff --git a/plugins/browser-plugin-ecommerce/CHANGELOG.json b/plugins/browser-plugin-ecommerce/CHANGELOG.json
index acb432778..23a34d735 100644
--- a/plugins/browser-plugin-ecommerce/CHANGELOG.json
+++ b/plugins/browser-plugin-ecommerce/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-ecommerce",
"entries": [
+ {
+ "version": "3.14.0",
+ "tag": "@snowplow/browser-plugin-ecommerce_v3.14.0",
+ "date": "Thu, 10 Aug 2023 13:56:44 GMT",
+ "comments": {}
+ },
{
"version": "3.13.1",
"tag": "@snowplow/browser-plugin-ecommerce_v3.13.1",
diff --git a/plugins/browser-plugin-ecommerce/CHANGELOG.md b/plugins/browser-plugin-ecommerce/CHANGELOG.md
index b190b623b..fbee898a3 100644
--- a/plugins/browser-plugin-ecommerce/CHANGELOG.md
+++ b/plugins/browser-plugin-ecommerce/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-ecommerce
-This log was last generated on Thu, 29 Jun 2023 14:20:06 GMT and should not be manually modified.
+This log was last generated on Thu, 10 Aug 2023 13:56:44 GMT and should not be manually modified.
+
+## 3.14.0
+Thu, 10 Aug 2023 13:56:44 GMT
+
+_Version update only_
## 3.13.1
Thu, 29 Jun 2023 14:20:06 GMT
diff --git a/plugins/browser-plugin-enhanced-consent/CHANGELOG.json b/plugins/browser-plugin-enhanced-consent/CHANGELOG.json
index 71b1ee959..dc9aa0294 100644
--- a/plugins/browser-plugin-enhanced-consent/CHANGELOG.json
+++ b/plugins/browser-plugin-enhanced-consent/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-enhanced-consent",
"entries": [
+ {
+ "version": "3.14.0",
+ "tag": "@snowplow/browser-plugin-enhanced-consent_v3.14.0",
+ "date": "Thu, 10 Aug 2023 13:56:44 GMT",
+ "comments": {}
+ },
{
"version": "3.13.1",
"tag": "@snowplow/browser-plugin-enhanced-consent_v3.13.1",
diff --git a/plugins/browser-plugin-enhanced-consent/CHANGELOG.md b/plugins/browser-plugin-enhanced-consent/CHANGELOG.md
index 405b6475d..27ead6d8f 100644
--- a/plugins/browser-plugin-enhanced-consent/CHANGELOG.md
+++ b/plugins/browser-plugin-enhanced-consent/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-enhanced-consent
-This log was last generated on Thu, 29 Jun 2023 14:20:06 GMT and should not be manually modified.
+This log was last generated on Thu, 10 Aug 2023 13:56:44 GMT and should not be manually modified.
+
+## 3.14.0
+Thu, 10 Aug 2023 13:56:44 GMT
+
+_Version update only_
## 3.13.1
Thu, 29 Jun 2023 14:20:06 GMT
diff --git a/plugins/browser-plugin-enhanced-ecommerce/CHANGELOG.json b/plugins/browser-plugin-enhanced-ecommerce/CHANGELOG.json
index d26639c5a..ca272cd75 100644
--- a/plugins/browser-plugin-enhanced-ecommerce/CHANGELOG.json
+++ b/plugins/browser-plugin-enhanced-ecommerce/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-enhanced-ecommerce",
"entries": [
+ {
+ "version": "3.14.0",
+ "tag": "@snowplow/browser-plugin-enhanced-ecommerce_v3.14.0",
+ "date": "Thu, 10 Aug 2023 13:56:44 GMT",
+ "comments": {}
+ },
{
"version": "3.13.1",
"tag": "@snowplow/browser-plugin-enhanced-ecommerce_v3.13.1",
diff --git a/plugins/browser-plugin-enhanced-ecommerce/CHANGELOG.md b/plugins/browser-plugin-enhanced-ecommerce/CHANGELOG.md
index 9280ded8f..2a9e66daf 100644
--- a/plugins/browser-plugin-enhanced-ecommerce/CHANGELOG.md
+++ b/plugins/browser-plugin-enhanced-ecommerce/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-enhanced-ecommerce
-This log was last generated on Thu, 29 Jun 2023 14:20:06 GMT and should not be manually modified.
+This log was last generated on Thu, 10 Aug 2023 13:56:44 GMT and should not be manually modified.
+
+## 3.14.0
+Thu, 10 Aug 2023 13:56:44 GMT
+
+_Version update only_
## 3.13.1
Thu, 29 Jun 2023 14:20:06 GMT
diff --git a/plugins/browser-plugin-error-tracking/CHANGELOG.json b/plugins/browser-plugin-error-tracking/CHANGELOG.json
index 2188a7b4d..65c2d6558 100644
--- a/plugins/browser-plugin-error-tracking/CHANGELOG.json
+++ b/plugins/browser-plugin-error-tracking/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-error-tracking",
"entries": [
+ {
+ "version": "3.14.0",
+ "tag": "@snowplow/browser-plugin-error-tracking_v3.14.0",
+ "date": "Thu, 10 Aug 2023 13:56:44 GMT",
+ "comments": {}
+ },
{
"version": "3.13.1",
"tag": "@snowplow/browser-plugin-error-tracking_v3.13.1",
diff --git a/plugins/browser-plugin-error-tracking/CHANGELOG.md b/plugins/browser-plugin-error-tracking/CHANGELOG.md
index 5e0b2ad52..9d0af70b8 100644
--- a/plugins/browser-plugin-error-tracking/CHANGELOG.md
+++ b/plugins/browser-plugin-error-tracking/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-error-tracking
-This log was last generated on Thu, 29 Jun 2023 14:20:06 GMT and should not be manually modified.
+This log was last generated on Thu, 10 Aug 2023 13:56:44 GMT and should not be manually modified.
+
+## 3.14.0
+Thu, 10 Aug 2023 13:56:44 GMT
+
+_Version update only_
## 3.13.1
Thu, 29 Jun 2023 14:20:06 GMT
diff --git a/plugins/browser-plugin-form-tracking/CHANGELOG.json b/plugins/browser-plugin-form-tracking/CHANGELOG.json
index 1f5230b29..0d264cd96 100644
--- a/plugins/browser-plugin-form-tracking/CHANGELOG.json
+++ b/plugins/browser-plugin-form-tracking/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-form-tracking",
"entries": [
+ {
+ "version": "3.14.0",
+ "tag": "@snowplow/browser-plugin-form-tracking_v3.14.0",
+ "date": "Thu, 10 Aug 2023 13:56:44 GMT",
+ "comments": {}
+ },
{
"version": "3.13.1",
"tag": "@snowplow/browser-plugin-form-tracking_v3.13.1",
diff --git a/plugins/browser-plugin-form-tracking/CHANGELOG.md b/plugins/browser-plugin-form-tracking/CHANGELOG.md
index e41870c07..2b54eefc2 100644
--- a/plugins/browser-plugin-form-tracking/CHANGELOG.md
+++ b/plugins/browser-plugin-form-tracking/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-form-tracking
-This log was last generated on Thu, 29 Jun 2023 14:20:06 GMT and should not be manually modified.
+This log was last generated on Thu, 10 Aug 2023 13:56:44 GMT and should not be manually modified.
+
+## 3.14.0
+Thu, 10 Aug 2023 13:56:44 GMT
+
+_Version update only_
## 3.13.1
Thu, 29 Jun 2023 14:20:06 GMT
diff --git a/plugins/browser-plugin-ga-cookies/CHANGELOG.json b/plugins/browser-plugin-ga-cookies/CHANGELOG.json
index 486fa758f..3fcabfa99 100644
--- a/plugins/browser-plugin-ga-cookies/CHANGELOG.json
+++ b/plugins/browser-plugin-ga-cookies/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-ga-cookies",
"entries": [
+ {
+ "version": "3.14.0",
+ "tag": "@snowplow/browser-plugin-ga-cookies_v3.14.0",
+ "date": "Thu, 10 Aug 2023 13:56:44 GMT",
+ "comments": {}
+ },
{
"version": "3.13.1",
"tag": "@snowplow/browser-plugin-ga-cookies_v3.13.1",
diff --git a/plugins/browser-plugin-ga-cookies/CHANGELOG.md b/plugins/browser-plugin-ga-cookies/CHANGELOG.md
index 2e5ed5e0b..ea72d29c5 100644
--- a/plugins/browser-plugin-ga-cookies/CHANGELOG.md
+++ b/plugins/browser-plugin-ga-cookies/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-ga-cookies
-This log was last generated on Thu, 29 Jun 2023 14:20:06 GMT and should not be manually modified.
+This log was last generated on Thu, 10 Aug 2023 13:56:44 GMT and should not be manually modified.
+
+## 3.14.0
+Thu, 10 Aug 2023 13:56:44 GMT
+
+_Version update only_
## 3.13.1
Thu, 29 Jun 2023 14:20:06 GMT
diff --git a/plugins/browser-plugin-geolocation/CHANGELOG.json b/plugins/browser-plugin-geolocation/CHANGELOG.json
index d257c7ab5..41d468b93 100644
--- a/plugins/browser-plugin-geolocation/CHANGELOG.json
+++ b/plugins/browser-plugin-geolocation/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-geolocation",
"entries": [
+ {
+ "version": "3.14.0",
+ "tag": "@snowplow/browser-plugin-geolocation_v3.14.0",
+ "date": "Thu, 10 Aug 2023 13:56:44 GMT",
+ "comments": {}
+ },
{
"version": "3.13.1",
"tag": "@snowplow/browser-plugin-geolocation_v3.13.1",
diff --git a/plugins/browser-plugin-geolocation/CHANGELOG.md b/plugins/browser-plugin-geolocation/CHANGELOG.md
index cb0a94cbe..adc5c0208 100644
--- a/plugins/browser-plugin-geolocation/CHANGELOG.md
+++ b/plugins/browser-plugin-geolocation/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-geolocation
-This log was last generated on Thu, 29 Jun 2023 14:20:06 GMT and should not be manually modified.
+This log was last generated on Thu, 10 Aug 2023 13:56:44 GMT and should not be manually modified.
+
+## 3.14.0
+Thu, 10 Aug 2023 13:56:44 GMT
+
+_Version update only_
## 3.13.1
Thu, 29 Jun 2023 14:20:06 GMT
diff --git a/plugins/browser-plugin-link-click-tracking/CHANGELOG.json b/plugins/browser-plugin-link-click-tracking/CHANGELOG.json
index cf7eb83c0..5f444eb27 100644
--- a/plugins/browser-plugin-link-click-tracking/CHANGELOG.json
+++ b/plugins/browser-plugin-link-click-tracking/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-link-click-tracking",
"entries": [
+ {
+ "version": "3.14.0",
+ "tag": "@snowplow/browser-plugin-link-click-tracking_v3.14.0",
+ "date": "Thu, 10 Aug 2023 13:56:44 GMT",
+ "comments": {}
+ },
{
"version": "3.13.1",
"tag": "@snowplow/browser-plugin-link-click-tracking_v3.13.1",
diff --git a/plugins/browser-plugin-link-click-tracking/CHANGELOG.md b/plugins/browser-plugin-link-click-tracking/CHANGELOG.md
index dfdf0eda1..dc85537cd 100644
--- a/plugins/browser-plugin-link-click-tracking/CHANGELOG.md
+++ b/plugins/browser-plugin-link-click-tracking/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-link-click-tracking
-This log was last generated on Thu, 29 Jun 2023 14:20:06 GMT and should not be manually modified.
+This log was last generated on Thu, 10 Aug 2023 13:56:44 GMT and should not be manually modified.
+
+## 3.14.0
+Thu, 10 Aug 2023 13:56:44 GMT
+
+_Version update only_
## 3.13.1
Thu, 29 Jun 2023 14:20:06 GMT
diff --git a/plugins/browser-plugin-media-tracking/CHANGELOG.json b/plugins/browser-plugin-media-tracking/CHANGELOG.json
index 06ef9e071..52db5dbe6 100644
--- a/plugins/browser-plugin-media-tracking/CHANGELOG.json
+++ b/plugins/browser-plugin-media-tracking/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-media-tracking",
"entries": [
+ {
+ "version": "3.14.0",
+ "tag": "@snowplow/browser-plugin-media-tracking_v3.14.0",
+ "date": "Thu, 10 Aug 2023 13:56:44 GMT",
+ "comments": {}
+ },
{
"version": "3.13.1",
"tag": "@snowplow/browser-plugin-media-tracking_v3.13.1",
diff --git a/plugins/browser-plugin-media-tracking/CHANGELOG.md b/plugins/browser-plugin-media-tracking/CHANGELOG.md
index f43431e99..89906c860 100644
--- a/plugins/browser-plugin-media-tracking/CHANGELOG.md
+++ b/plugins/browser-plugin-media-tracking/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-media-tracking
-This log was last generated on Thu, 29 Jun 2023 14:20:06 GMT and should not be manually modified.
+This log was last generated on Thu, 10 Aug 2023 13:56:44 GMT and should not be manually modified.
+
+## 3.14.0
+Thu, 10 Aug 2023 13:56:44 GMT
+
+_Version update only_
## 3.13.1
Thu, 29 Jun 2023 14:20:06 GMT
diff --git a/plugins/browser-plugin-media/CHANGELOG.json b/plugins/browser-plugin-media/CHANGELOG.json
index 42845a725..490cf8835 100644
--- a/plugins/browser-plugin-media/CHANGELOG.json
+++ b/plugins/browser-plugin-media/CHANGELOG.json
@@ -1,6 +1,21 @@
{
"name": "@snowplow/browser-plugin-media",
"entries": [
+ {
+ "version": "3.14.0",
+ "tag": "@snowplow/browser-plugin-media_v3.14.0",
+ "date": "Thu, 10 Aug 2023 13:56:44 GMT",
+ "comments": {
+ "none": [
+ {
+ "comment": "Filter out repeated seek and volume change events happening when user holds down the player controls (#1218)"
+ },
+ {
+ "comment": "Update version of the player schema used in the media plugin to 2-0-0 (#1222)"
+ }
+ ]
+ }
+ },
{
"version": "3.13.1",
"tag": "@snowplow/browser-plugin-media_v3.13.1",
diff --git a/plugins/browser-plugin-media/CHANGELOG.md b/plugins/browser-plugin-media/CHANGELOG.md
index 71f1a2528..77a4f1977 100644
--- a/plugins/browser-plugin-media/CHANGELOG.md
+++ b/plugins/browser-plugin-media/CHANGELOG.md
@@ -1,6 +1,14 @@
# Change Log - @snowplow/browser-plugin-media
-This log was last generated on Thu, 29 Jun 2023 14:20:06 GMT and should not be manually modified.
+This log was last generated on Thu, 10 Aug 2023 13:56:44 GMT and should not be manually modified.
+
+## 3.14.0
+Thu, 10 Aug 2023 13:56:44 GMT
+
+### Updates
+
+- Filter out repeated seek and volume change events happening when user holds down the player controls (#1218)
+- Update version of the player schema used in the media plugin to 2-0-0 (#1222)
## 3.13.1
Thu, 29 Jun 2023 14:20:06 GMT
diff --git a/plugins/browser-plugin-optimizely-x/CHANGELOG.json b/plugins/browser-plugin-optimizely-x/CHANGELOG.json
index a53317731..f5990a50e 100644
--- a/plugins/browser-plugin-optimizely-x/CHANGELOG.json
+++ b/plugins/browser-plugin-optimizely-x/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-optimizely-x",
"entries": [
+ {
+ "version": "3.14.0",
+ "tag": "@snowplow/browser-plugin-optimizely-x_v3.14.0",
+ "date": "Thu, 10 Aug 2023 13:56:44 GMT",
+ "comments": {}
+ },
{
"version": "3.13.1",
"tag": "@snowplow/browser-plugin-optimizely-x_v3.13.1",
diff --git a/plugins/browser-plugin-optimizely-x/CHANGELOG.md b/plugins/browser-plugin-optimizely-x/CHANGELOG.md
index 9dd62c268..aef73e9df 100644
--- a/plugins/browser-plugin-optimizely-x/CHANGELOG.md
+++ b/plugins/browser-plugin-optimizely-x/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-optimizely-x
-This log was last generated on Thu, 29 Jun 2023 14:20:06 GMT and should not be manually modified.
+This log was last generated on Thu, 10 Aug 2023 13:56:44 GMT and should not be manually modified.
+
+## 3.14.0
+Thu, 10 Aug 2023 13:56:44 GMT
+
+_Version update only_
## 3.13.1
Thu, 29 Jun 2023 14:20:06 GMT
diff --git a/plugins/browser-plugin-optimizely/CHANGELOG.json b/plugins/browser-plugin-optimizely/CHANGELOG.json
index 8e7a958f9..9a60d00af 100644
--- a/plugins/browser-plugin-optimizely/CHANGELOG.json
+++ b/plugins/browser-plugin-optimizely/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-optimizely",
"entries": [
+ {
+ "version": "3.14.0",
+ "tag": "@snowplow/browser-plugin-optimizely_v3.14.0",
+ "date": "Thu, 10 Aug 2023 13:56:44 GMT",
+ "comments": {}
+ },
{
"version": "3.13.1",
"tag": "@snowplow/browser-plugin-optimizely_v3.13.1",
diff --git a/plugins/browser-plugin-optimizely/CHANGELOG.md b/plugins/browser-plugin-optimizely/CHANGELOG.md
index e4e22ad8f..f93d75543 100644
--- a/plugins/browser-plugin-optimizely/CHANGELOG.md
+++ b/plugins/browser-plugin-optimizely/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-optimizely
-This log was last generated on Thu, 29 Jun 2023 14:20:06 GMT and should not be manually modified.
+This log was last generated on Thu, 10 Aug 2023 13:56:44 GMT and should not be manually modified.
+
+## 3.14.0
+Thu, 10 Aug 2023 13:56:44 GMT
+
+_Version update only_
## 3.13.1
Thu, 29 Jun 2023 14:20:06 GMT
diff --git a/plugins/browser-plugin-performance-navigation-timing/CHANGELOG.json b/plugins/browser-plugin-performance-navigation-timing/CHANGELOG.json
index ac0d86218..9fa705c7b 100644
--- a/plugins/browser-plugin-performance-navigation-timing/CHANGELOG.json
+++ b/plugins/browser-plugin-performance-navigation-timing/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-performance-navigation-timing",
"entries": [
+ {
+ "version": "3.14.0",
+ "tag": "@snowplow/browser-plugin-performance-navigation-timing_v3.14.0",
+ "date": "Thu, 10 Aug 2023 13:56:44 GMT",
+ "comments": {}
+ },
{
"version": "3.13.1",
"tag": "@snowplow/browser-plugin-performance-navigation-timing_v3.13.1",
diff --git a/plugins/browser-plugin-performance-navigation-timing/CHANGELOG.md b/plugins/browser-plugin-performance-navigation-timing/CHANGELOG.md
index ea014845f..9f89391c2 100644
--- a/plugins/browser-plugin-performance-navigation-timing/CHANGELOG.md
+++ b/plugins/browser-plugin-performance-navigation-timing/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-performance-navigation-timing
-This log was last generated on Thu, 29 Jun 2023 14:20:06 GMT and should not be manually modified.
+This log was last generated on Thu, 10 Aug 2023 13:56:44 GMT and should not be manually modified.
+
+## 3.14.0
+Thu, 10 Aug 2023 13:56:44 GMT
+
+_Version update only_
## 3.13.1
Thu, 29 Jun 2023 14:20:06 GMT
diff --git a/plugins/browser-plugin-performance-timing/CHANGELOG.json b/plugins/browser-plugin-performance-timing/CHANGELOG.json
index b9251cf71..f465c90bc 100644
--- a/plugins/browser-plugin-performance-timing/CHANGELOG.json
+++ b/plugins/browser-plugin-performance-timing/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-performance-timing",
"entries": [
+ {
+ "version": "3.14.0",
+ "tag": "@snowplow/browser-plugin-performance-timing_v3.14.0",
+ "date": "Thu, 10 Aug 2023 13:56:44 GMT",
+ "comments": {}
+ },
{
"version": "3.13.1",
"tag": "@snowplow/browser-plugin-performance-timing_v3.13.1",
diff --git a/plugins/browser-plugin-performance-timing/CHANGELOG.md b/plugins/browser-plugin-performance-timing/CHANGELOG.md
index 97714e259..26db20165 100644
--- a/plugins/browser-plugin-performance-timing/CHANGELOG.md
+++ b/plugins/browser-plugin-performance-timing/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-performance-timing
-This log was last generated on Thu, 29 Jun 2023 14:20:06 GMT and should not be manually modified.
+This log was last generated on Thu, 10 Aug 2023 13:56:44 GMT and should not be manually modified.
+
+## 3.14.0
+Thu, 10 Aug 2023 13:56:44 GMT
+
+_Version update only_
## 3.13.1
Thu, 29 Jun 2023 14:20:06 GMT
diff --git a/plugins/browser-plugin-privacy-sandbox/CHANGELOG.json b/plugins/browser-plugin-privacy-sandbox/CHANGELOG.json
new file mode 100644
index 000000000..c4caee8ae
--- /dev/null
+++ b/plugins/browser-plugin-privacy-sandbox/CHANGELOG.json
@@ -0,0 +1,17 @@
+{
+ "name": "@snowplow/browser-plugin-privacy-sandbox",
+ "entries": [
+ {
+ "version": "3.14.0",
+ "tag": "@snowplow/browser-plugin-privacy-sandbox_v3.14.0",
+ "date": "Thu, 10 Aug 2023 13:56:44 GMT",
+ "comments": {
+ "none": [
+ {
+ "comment": "Introduce PrivacySandboxPlugin"
+ }
+ ]
+ }
+ }
+ ]
+}
diff --git a/plugins/browser-plugin-privacy-sandbox/CHANGELOG.md b/plugins/browser-plugin-privacy-sandbox/CHANGELOG.md
new file mode 100644
index 000000000..b2535d83f
--- /dev/null
+++ b/plugins/browser-plugin-privacy-sandbox/CHANGELOG.md
@@ -0,0 +1,11 @@
+# Change Log - @snowplow/browser-plugin-privacy-sandbox
+
+This log was last generated on Thu, 10 Aug 2023 13:56:44 GMT and should not be manually modified.
+
+## 3.14.0
+Thu, 10 Aug 2023 13:56:44 GMT
+
+### Updates
+
+- Introduce PrivacySandboxPlugin
+
diff --git a/plugins/browser-plugin-site-tracking/CHANGELOG.json b/plugins/browser-plugin-site-tracking/CHANGELOG.json
index b129a94e7..cc6e5dcef 100644
--- a/plugins/browser-plugin-site-tracking/CHANGELOG.json
+++ b/plugins/browser-plugin-site-tracking/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-site-tracking",
"entries": [
+ {
+ "version": "3.14.0",
+ "tag": "@snowplow/browser-plugin-site-tracking_v3.14.0",
+ "date": "Thu, 10 Aug 2023 13:56:44 GMT",
+ "comments": {}
+ },
{
"version": "3.13.1",
"tag": "@snowplow/browser-plugin-site-tracking_v3.13.1",
diff --git a/plugins/browser-plugin-site-tracking/CHANGELOG.md b/plugins/browser-plugin-site-tracking/CHANGELOG.md
index eff5cdf68..c2e6813c3 100644
--- a/plugins/browser-plugin-site-tracking/CHANGELOG.md
+++ b/plugins/browser-plugin-site-tracking/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-site-tracking
-This log was last generated on Thu, 29 Jun 2023 14:20:06 GMT and should not be manually modified.
+This log was last generated on Thu, 10 Aug 2023 13:56:44 GMT and should not be manually modified.
+
+## 3.14.0
+Thu, 10 Aug 2023 13:56:44 GMT
+
+_Version update only_
## 3.13.1
Thu, 29 Jun 2023 14:20:06 GMT
diff --git a/plugins/browser-plugin-snowplow-ecommerce/CHANGELOG.json b/plugins/browser-plugin-snowplow-ecommerce/CHANGELOG.json
index 9c825e4e8..68d46e75c 100644
--- a/plugins/browser-plugin-snowplow-ecommerce/CHANGELOG.json
+++ b/plugins/browser-plugin-snowplow-ecommerce/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-snowplow-ecommerce",
"entries": [
+ {
+ "version": "3.14.0",
+ "tag": "@snowplow/browser-plugin-snowplow-ecommerce_v3.14.0",
+ "date": "Thu, 10 Aug 2023 13:56:44 GMT",
+ "comments": {}
+ },
{
"version": "3.13.1",
"tag": "@snowplow/browser-plugin-snowplow-ecommerce_v3.13.1",
diff --git a/plugins/browser-plugin-snowplow-ecommerce/CHANGELOG.md b/plugins/browser-plugin-snowplow-ecommerce/CHANGELOG.md
index 94e2f6317..fa03076f5 100644
--- a/plugins/browser-plugin-snowplow-ecommerce/CHANGELOG.md
+++ b/plugins/browser-plugin-snowplow-ecommerce/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-snowplow-ecommerce
-This log was last generated on Thu, 29 Jun 2023 14:20:06 GMT and should not be manually modified.
+This log was last generated on Thu, 10 Aug 2023 13:56:44 GMT and should not be manually modified.
+
+## 3.14.0
+Thu, 10 Aug 2023 13:56:44 GMT
+
+_Version update only_
## 3.13.1
Thu, 29 Jun 2023 14:20:06 GMT
diff --git a/plugins/browser-plugin-timezone/CHANGELOG.json b/plugins/browser-plugin-timezone/CHANGELOG.json
index f2b2733b9..98d60b891 100644
--- a/plugins/browser-plugin-timezone/CHANGELOG.json
+++ b/plugins/browser-plugin-timezone/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-timezone",
"entries": [
+ {
+ "version": "3.14.0",
+ "tag": "@snowplow/browser-plugin-timezone_v3.14.0",
+ "date": "Thu, 10 Aug 2023 13:56:44 GMT",
+ "comments": {}
+ },
{
"version": "3.13.1",
"tag": "@snowplow/browser-plugin-timezone_v3.13.1",
diff --git a/plugins/browser-plugin-timezone/CHANGELOG.md b/plugins/browser-plugin-timezone/CHANGELOG.md
index a5293ac8f..f0317d67d 100644
--- a/plugins/browser-plugin-timezone/CHANGELOG.md
+++ b/plugins/browser-plugin-timezone/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-timezone
-This log was last generated on Thu, 29 Jun 2023 14:20:06 GMT and should not be manually modified.
+This log was last generated on Thu, 10 Aug 2023 13:56:44 GMT and should not be manually modified.
+
+## 3.14.0
+Thu, 10 Aug 2023 13:56:44 GMT
+
+_Version update only_
## 3.13.1
Thu, 29 Jun 2023 14:20:06 GMT
diff --git a/plugins/browser-plugin-vimeo-tracking/CHANGELOG.json b/plugins/browser-plugin-vimeo-tracking/CHANGELOG.json
new file mode 100644
index 000000000..c4082842d
--- /dev/null
+++ b/plugins/browser-plugin-vimeo-tracking/CHANGELOG.json
@@ -0,0 +1,17 @@
+{
+ "name": "@snowplow/browser-plugin-vimeo-tracking",
+ "entries": [
+ {
+ "version": "3.14.0",
+ "tag": "@snowplow/browser-plugin-vimeo-tracking_v3.14.0",
+ "date": "Thu, 10 Aug 2023 13:56:44 GMT",
+ "comments": {
+ "none": [
+ {
+ "comment": "Add Vimeo tracking plugin (close #1156)"
+ }
+ ]
+ }
+ }
+ ]
+}
diff --git a/plugins/browser-plugin-vimeo-tracking/CHANGELOG.md b/plugins/browser-plugin-vimeo-tracking/CHANGELOG.md
new file mode 100644
index 000000000..913d3f00d
--- /dev/null
+++ b/plugins/browser-plugin-vimeo-tracking/CHANGELOG.md
@@ -0,0 +1,11 @@
+# Change Log - @snowplow/browser-plugin-vimeo-tracking
+
+This log was last generated on Thu, 10 Aug 2023 13:56:44 GMT and should not be manually modified.
+
+## 3.14.0
+Thu, 10 Aug 2023 13:56:44 GMT
+
+### Updates
+
+- Add Vimeo tracking plugin (close #1156)
+
diff --git a/plugins/browser-plugin-web-vitals/CHANGELOG.json b/plugins/browser-plugin-web-vitals/CHANGELOG.json
index 3c5131264..2c521de4a 100644
--- a/plugins/browser-plugin-web-vitals/CHANGELOG.json
+++ b/plugins/browser-plugin-web-vitals/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-web-vitals",
"entries": [
+ {
+ "version": "3.14.0",
+ "tag": "@snowplow/browser-plugin-web-vitals_v3.14.0",
+ "date": "Thu, 10 Aug 2023 13:56:44 GMT",
+ "comments": {}
+ },
{
"version": "3.13.1",
"tag": "@snowplow/browser-plugin-web-vitals_v3.13.1",
diff --git a/plugins/browser-plugin-web-vitals/CHANGELOG.md b/plugins/browser-plugin-web-vitals/CHANGELOG.md
index b268420cf..c2a3d963a 100644
--- a/plugins/browser-plugin-web-vitals/CHANGELOG.md
+++ b/plugins/browser-plugin-web-vitals/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-web-vitals
-This log was last generated on Thu, 29 Jun 2023 14:20:06 GMT and should not be manually modified.
+This log was last generated on Thu, 10 Aug 2023 13:56:44 GMT and should not be manually modified.
+
+## 3.14.0
+Thu, 10 Aug 2023 13:56:44 GMT
+
+_Version update only_
## 3.13.1
Thu, 29 Jun 2023 14:20:06 GMT
diff --git a/plugins/browser-plugin-youtube-tracking/CHANGELOG.json b/plugins/browser-plugin-youtube-tracking/CHANGELOG.json
index a854b79c6..59aa8e7fb 100644
--- a/plugins/browser-plugin-youtube-tracking/CHANGELOG.json
+++ b/plugins/browser-plugin-youtube-tracking/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-youtube-tracking",
"entries": [
+ {
+ "version": "3.14.0",
+ "tag": "@snowplow/browser-plugin-youtube-tracking_v3.14.0",
+ "date": "Thu, 10 Aug 2023 13:56:44 GMT",
+ "comments": {}
+ },
{
"version": "3.13.1",
"tag": "@snowplow/browser-plugin-youtube-tracking_v3.13.1",
diff --git a/plugins/browser-plugin-youtube-tracking/CHANGELOG.md b/plugins/browser-plugin-youtube-tracking/CHANGELOG.md
index e297447d3..ab4363782 100644
--- a/plugins/browser-plugin-youtube-tracking/CHANGELOG.md
+++ b/plugins/browser-plugin-youtube-tracking/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-youtube-tracking
-This log was last generated on Thu, 29 Jun 2023 14:20:06 GMT and should not be manually modified.
+This log was last generated on Thu, 10 Aug 2023 13:56:44 GMT and should not be manually modified.
+
+## 3.14.0
+Thu, 10 Aug 2023 13:56:44 GMT
+
+_Version update only_
## 3.13.1
Thu, 29 Jun 2023 14:20:06 GMT
diff --git a/trackers/browser-tracker/CHANGELOG.json b/trackers/browser-tracker/CHANGELOG.json
index 09a406d93..800b34d5c 100644
--- a/trackers/browser-tracker/CHANGELOG.json
+++ b/trackers/browser-tracker/CHANGELOG.json
@@ -1,6 +1,18 @@
{
"name": "@snowplow/browser-tracker",
"entries": [
+ {
+ "version": "3.14.0",
+ "tag": "@snowplow/browser-tracker_v3.14.0",
+ "date": "Thu, 10 Aug 2023 13:56:44 GMT",
+ "comments": {
+ "none": [
+ {
+ "comment": "Allow disabling activity tracking actions with disableActivityTracking and disableActivityTrackingCallback APIs"
+ }
+ ]
+ }
+ },
{
"version": "3.13.1",
"tag": "@snowplow/browser-tracker_v3.13.1",
diff --git a/trackers/browser-tracker/CHANGELOG.md b/trackers/browser-tracker/CHANGELOG.md
index 65e5cac1b..e3be79aec 100644
--- a/trackers/browser-tracker/CHANGELOG.md
+++ b/trackers/browser-tracker/CHANGELOG.md
@@ -1,6 +1,13 @@
# Change Log - @snowplow/browser-tracker
-This log was last generated on Thu, 29 Jun 2023 14:20:06 GMT and should not be manually modified.
+This log was last generated on Thu, 10 Aug 2023 13:56:44 GMT and should not be manually modified.
+
+## 3.14.0
+Thu, 10 Aug 2023 13:56:44 GMT
+
+### Updates
+
+- Allow disabling activity tracking actions with disableActivityTracking and disableActivityTrackingCallback APIs
## 3.13.1
Thu, 29 Jun 2023 14:20:06 GMT
diff --git a/trackers/javascript-tracker/CHANGELOG.json b/trackers/javascript-tracker/CHANGELOG.json
index 5b368de49..24abe60ff 100644
--- a/trackers/javascript-tracker/CHANGELOG.json
+++ b/trackers/javascript-tracker/CHANGELOG.json
@@ -1,6 +1,21 @@
{
"name": "@snowplow/javascript-tracker",
"entries": [
+ {
+ "version": "3.14.0",
+ "tag": "@snowplow/javascript-tracker_v3.14.0",
+ "date": "Thu, 10 Aug 2023 13:56:44 GMT",
+ "comments": {
+ "none": [
+ {
+ "comment": "Introduce PrivacySandboxPlugin"
+ },
+ {
+ "comment": "End to end test changes"
+ }
+ ]
+ }
+ },
{
"version": "3.13.1",
"tag": "@snowplow/javascript-tracker_v3.13.1",
diff --git a/trackers/javascript-tracker/CHANGELOG.md b/trackers/javascript-tracker/CHANGELOG.md
index 4156ec796..29eabe18d 100644
--- a/trackers/javascript-tracker/CHANGELOG.md
+++ b/trackers/javascript-tracker/CHANGELOG.md
@@ -1,6 +1,14 @@
# Change Log - @snowplow/javascript-tracker
-This log was last generated on Thu, 29 Jun 2023 14:20:06 GMT and should not be manually modified.
+This log was last generated on Thu, 10 Aug 2023 13:56:44 GMT and should not be manually modified.
+
+## 3.14.0
+Thu, 10 Aug 2023 13:56:44 GMT
+
+### Updates
+
+- Introduce PrivacySandboxPlugin
+- End to end test changes
## 3.13.1
Thu, 29 Jun 2023 14:20:06 GMT
diff --git a/trackers/node-tracker/CHANGELOG.json b/trackers/node-tracker/CHANGELOG.json
index 9a45c55d9..b0e529a11 100644
--- a/trackers/node-tracker/CHANGELOG.json
+++ b/trackers/node-tracker/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/node-tracker",
"entries": [
+ {
+ "version": "3.14.0",
+ "tag": "@snowplow/node-tracker_v3.14.0",
+ "date": "Thu, 10 Aug 2023 13:56:44 GMT",
+ "comments": {}
+ },
{
"version": "3.13.1",
"tag": "@snowplow/node-tracker_v3.13.1",
diff --git a/trackers/node-tracker/CHANGELOG.md b/trackers/node-tracker/CHANGELOG.md
index 9aa11486f..5567058c7 100644
--- a/trackers/node-tracker/CHANGELOG.md
+++ b/trackers/node-tracker/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/node-tracker
-This log was last generated on Thu, 29 Jun 2023 14:20:06 GMT and should not be manually modified.
+This log was last generated on Thu, 10 Aug 2023 13:56:44 GMT and should not be manually modified.
+
+## 3.14.0
+Thu, 10 Aug 2023 13:56:44 GMT
+
+_Version update only_
## 3.13.1
Thu, 29 Jun 2023 14:20:06 GMT
From 9fdad424906c1cdc2e94f9c09d01e1eb6b168f86 Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Thu, 10 Aug 2023 13:56:45 +0000
Subject: [PATCH 009/341] Bump versions [skip ci]
---
common/config/rush/version-policies.json | 2 +-
libraries/browser-tracker-core/package.json | 2 +-
libraries/tracker-core/package.json | 2 +-
plugins/browser-plugin-ad-tracking/package.json | 4 ++--
plugins/browser-plugin-browser-features/package.json | 4 ++--
plugins/browser-plugin-client-hints/package.json | 4 ++--
plugins/browser-plugin-consent/package.json | 4 ++--
plugins/browser-plugin-debugger/package.json | 4 ++--
plugins/browser-plugin-ecommerce/package.json | 4 ++--
plugins/browser-plugin-enhanced-consent/package.json | 4 ++--
plugins/browser-plugin-enhanced-ecommerce/package.json | 4 ++--
plugins/browser-plugin-error-tracking/package.json | 4 ++--
plugins/browser-plugin-form-tracking/package.json | 4 ++--
plugins/browser-plugin-ga-cookies/package.json | 4 ++--
plugins/browser-plugin-geolocation/package.json | 4 ++--
plugins/browser-plugin-link-click-tracking/package.json | 4 ++--
plugins/browser-plugin-media-tracking/package.json | 4 ++--
plugins/browser-plugin-media/package.json | 4 ++--
plugins/browser-plugin-optimizely-x/package.json | 4 ++--
plugins/browser-plugin-optimizely/package.json | 4 ++--
.../browser-plugin-performance-navigation-timing/package.json | 4 ++--
plugins/browser-plugin-performance-timing/package.json | 4 ++--
plugins/browser-plugin-privacy-sandbox/package.json | 4 ++--
plugins/browser-plugin-site-tracking/package.json | 4 ++--
plugins/browser-plugin-snowplow-ecommerce/package.json | 4 ++--
plugins/browser-plugin-timezone/package.json | 4 ++--
plugins/browser-plugin-vimeo-tracking/package.json | 4 ++--
plugins/browser-plugin-web-vitals/package.json | 4 ++--
plugins/browser-plugin-youtube-tracking/package.json | 4 ++--
trackers/browser-tracker/package.json | 2 +-
trackers/javascript-tracker/package.json | 2 +-
trackers/node-tracker/package.json | 2 +-
32 files changed, 58 insertions(+), 58 deletions(-)
diff --git a/common/config/rush/version-policies.json b/common/config/rush/version-policies.json
index 7a199e9d3..09a6ad8da 100644
--- a/common/config/rush/version-policies.json
+++ b/common/config/rush/version-policies.json
@@ -33,7 +33,7 @@
* in the current branch. When bumping versions, Rush uses this to determine the next version.
* (The "version" field in package.json is NOT considered.)
*/
- "version": "3.13.1",
+ "version": "3.14.0",
/**
* (Required) The type of bump that will be performed when publishing the next release.
diff --git a/libraries/browser-tracker-core/package.json b/libraries/browser-tracker-core/package.json
index cc3f131d2..370920f23 100644
--- a/libraries/browser-tracker-core/package.json
+++ b/libraries/browser-tracker-core/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-tracker-core",
- "version": "3.13.1",
+ "version": "3.14.0",
"description": "Core functionality for Snowplow Browser trackers",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
diff --git a/libraries/tracker-core/package.json b/libraries/tracker-core/package.json
index 4eb1b8c45..2d845f7b4 100644
--- a/libraries/tracker-core/package.json
+++ b/libraries/tracker-core/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/tracker-core",
- "version": "3.13.1",
+ "version": "3.14.0",
"description": "Core functionality for Snowplow JavaScript trackers",
"keywords": [
"tracking",
diff --git a/plugins/browser-plugin-ad-tracking/package.json b/plugins/browser-plugin-ad-tracking/package.json
index f515ceebc..df809efb0 100644
--- a/plugins/browser-plugin-ad-tracking/package.json
+++ b/plugins/browser-plugin-ad-tracking/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-ad-tracking",
- "version": "3.13.1",
+ "version": "3.14.0",
"description": "Ad tracking for Snowplow",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -50,6 +50,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.13.1"
+ "@snowplow/browser-tracker": "~3.14.0"
}
}
diff --git a/plugins/browser-plugin-browser-features/package.json b/plugins/browser-plugin-browser-features/package.json
index 253fd841b..3900dcb3e 100644
--- a/plugins/browser-plugin-browser-features/package.json
+++ b/plugins/browser-plugin-browser-features/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-browser-features",
- "version": "3.13.1",
+ "version": "3.14.0",
"description": "Attaches browser features to Snowplow events",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -48,6 +48,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.13.1"
+ "@snowplow/browser-tracker": "~3.14.0"
}
}
diff --git a/plugins/browser-plugin-client-hints/package.json b/plugins/browser-plugin-client-hints/package.json
index 61b9921f5..1ff617309 100644
--- a/plugins/browser-plugin-client-hints/package.json
+++ b/plugins/browser-plugin-client-hints/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-client-hints",
- "version": "3.13.1",
+ "version": "3.14.0",
"description": "Attaches Client Hints to Snowplow events",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -47,6 +47,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.13.1"
+ "@snowplow/browser-tracker": "~3.14.0"
}
}
diff --git a/plugins/browser-plugin-consent/package.json b/plugins/browser-plugin-consent/package.json
index 78eac9305..2dda1576c 100644
--- a/plugins/browser-plugin-consent/package.json
+++ b/plugins/browser-plugin-consent/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-consent",
- "version": "3.13.1",
+ "version": "3.14.0",
"description": "Consent and GDPR data for Snowplow events",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -50,6 +50,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.13.1"
+ "@snowplow/browser-tracker": "~3.14.0"
}
}
diff --git a/plugins/browser-plugin-debugger/package.json b/plugins/browser-plugin-debugger/package.json
index 62e94edb7..d431bf40e 100644
--- a/plugins/browser-plugin-debugger/package.json
+++ b/plugins/browser-plugin-debugger/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-debugger",
- "version": "3.13.1",
+ "version": "3.14.0",
"description": "Debugger for Snowplow",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -50,6 +50,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.13.1"
+ "@snowplow/browser-tracker": "~3.14.0"
}
}
diff --git a/plugins/browser-plugin-ecommerce/package.json b/plugins/browser-plugin-ecommerce/package.json
index a6f420212..f1aa21a0c 100644
--- a/plugins/browser-plugin-ecommerce/package.json
+++ b/plugins/browser-plugin-ecommerce/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-ecommerce",
- "version": "3.13.1",
+ "version": "3.14.0",
"description": "Ecommerce tracking for Snowplow",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -50,6 +50,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.13.1"
+ "@snowplow/browser-tracker": "~3.14.0"
}
}
diff --git a/plugins/browser-plugin-enhanced-consent/package.json b/plugins/browser-plugin-enhanced-consent/package.json
index 48d8ff0e2..db0dd4dc4 100644
--- a/plugins/browser-plugin-enhanced-consent/package.json
+++ b/plugins/browser-plugin-enhanced-consent/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-enhanced-consent",
- "version": "3.13.1",
+ "version": "3.14.0",
"description": "Consent tracking for Snowplow",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
"repository": {
@@ -49,6 +49,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.13.1"
+ "@snowplow/browser-tracker": "~3.14.0"
}
}
diff --git a/plugins/browser-plugin-enhanced-ecommerce/package.json b/plugins/browser-plugin-enhanced-ecommerce/package.json
index 9cbde71eb..447a3839a 100644
--- a/plugins/browser-plugin-enhanced-ecommerce/package.json
+++ b/plugins/browser-plugin-enhanced-ecommerce/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-enhanced-ecommerce",
- "version": "3.13.1",
+ "version": "3.14.0",
"description": "Enhanced Ecommerce tracking for Snowplow",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -50,6 +50,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.13.1"
+ "@snowplow/browser-tracker": "~3.14.0"
}
}
diff --git a/plugins/browser-plugin-error-tracking/package.json b/plugins/browser-plugin-error-tracking/package.json
index 5afefcd25..442459188 100644
--- a/plugins/browser-plugin-error-tracking/package.json
+++ b/plugins/browser-plugin-error-tracking/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-error-tracking",
- "version": "3.13.1",
+ "version": "3.14.0",
"description": "Error tracking for Snowplow",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -50,6 +50,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.13.1"
+ "@snowplow/browser-tracker": "~3.14.0"
}
}
diff --git a/plugins/browser-plugin-form-tracking/package.json b/plugins/browser-plugin-form-tracking/package.json
index 8a087d92b..791574c52 100644
--- a/plugins/browser-plugin-form-tracking/package.json
+++ b/plugins/browser-plugin-form-tracking/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-form-tracking",
- "version": "3.13.1",
+ "version": "3.14.0",
"description": "Form tracking for Snowplow",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -48,6 +48,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.13.1"
+ "@snowplow/browser-tracker": "~3.14.0"
}
}
diff --git a/plugins/browser-plugin-ga-cookies/package.json b/plugins/browser-plugin-ga-cookies/package.json
index d4bc07785..dbc3d46fe 100644
--- a/plugins/browser-plugin-ga-cookies/package.json
+++ b/plugins/browser-plugin-ga-cookies/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-ga-cookies",
- "version": "3.13.1",
+ "version": "3.14.0",
"description": "Attaches GA cookie data to Snowplow events",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -48,6 +48,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.13.1"
+ "@snowplow/browser-tracker": "~3.14.0"
}
}
diff --git a/plugins/browser-plugin-geolocation/package.json b/plugins/browser-plugin-geolocation/package.json
index 80ed3ead3..58202d5fb 100644
--- a/plugins/browser-plugin-geolocation/package.json
+++ b/plugins/browser-plugin-geolocation/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-geolocation",
- "version": "3.13.1",
+ "version": "3.14.0",
"description": "Attaches Geolocation data to Snowplow events",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -48,6 +48,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.13.1"
+ "@snowplow/browser-tracker": "~3.14.0"
}
}
diff --git a/plugins/browser-plugin-link-click-tracking/package.json b/plugins/browser-plugin-link-click-tracking/package.json
index 31a6754a0..91946a84d 100644
--- a/plugins/browser-plugin-link-click-tracking/package.json
+++ b/plugins/browser-plugin-link-click-tracking/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-link-click-tracking",
- "version": "3.13.1",
+ "version": "3.14.0",
"description": "Link Click tracking for Snowplow",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -50,6 +50,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.13.1"
+ "@snowplow/browser-tracker": "~3.14.0"
}
}
diff --git a/plugins/browser-plugin-media-tracking/package.json b/plugins/browser-plugin-media-tracking/package.json
index a79b75a2f..5689e5735 100644
--- a/plugins/browser-plugin-media-tracking/package.json
+++ b/plugins/browser-plugin-media-tracking/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-media-tracking",
- "version": "3.13.1",
+ "version": "3.14.0",
"description": "Audio/Video tracking for Snowplow",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -47,6 +47,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.13.1"
+ "@snowplow/browser-tracker": "~3.14.0"
}
}
diff --git a/plugins/browser-plugin-media/package.json b/plugins/browser-plugin-media/package.json
index d274dc3f7..2aea501d0 100644
--- a/plugins/browser-plugin-media/package.json
+++ b/plugins/browser-plugin-media/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-media",
- "version": "3.13.1",
+ "version": "3.14.0",
"description": "Snowplow media tracking",
"homepage": "https://github.com/snowplow/snowplow-javascript-tracker",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -50,6 +50,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.13.1"
+ "@snowplow/browser-tracker": "~3.14.0"
}
}
diff --git a/plugins/browser-plugin-optimizely-x/package.json b/plugins/browser-plugin-optimizely-x/package.json
index f17a22d8b..edbd2680b 100644
--- a/plugins/browser-plugin-optimizely-x/package.json
+++ b/plugins/browser-plugin-optimizely-x/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-optimizely-x",
- "version": "3.13.1",
+ "version": "3.14.0",
"description": "Attaches OptimizelyX data to Snowplow events",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -48,6 +48,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.13.1"
+ "@snowplow/browser-tracker": "~3.14.0"
}
}
diff --git a/plugins/browser-plugin-optimizely/package.json b/plugins/browser-plugin-optimizely/package.json
index 0323dc2cd..f01fc9c77 100644
--- a/plugins/browser-plugin-optimizely/package.json
+++ b/plugins/browser-plugin-optimizely/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-optimizely",
- "version": "3.13.1",
+ "version": "3.14.0",
"description": "Attaches Optimizely data to Snowplow events",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -48,6 +48,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.13.1"
+ "@snowplow/browser-tracker": "~3.14.0"
}
}
diff --git a/plugins/browser-plugin-performance-navigation-timing/package.json b/plugins/browser-plugin-performance-navigation-timing/package.json
index 3e76ecb27..a4763da6a 100644
--- a/plugins/browser-plugin-performance-navigation-timing/package.json
+++ b/plugins/browser-plugin-performance-navigation-timing/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-performance-navigation-timing",
- "version": "3.13.1",
+ "version": "3.14.0",
"description": "Attaches Performance Navigation Timing data to Snowplow events",
"homepage": "https://docs.snowplow.io/",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -48,6 +48,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.13.1"
+ "@snowplow/browser-tracker": "~3.14.0"
}
}
diff --git a/plugins/browser-plugin-performance-timing/package.json b/plugins/browser-plugin-performance-timing/package.json
index 370807be3..735be8d5f 100644
--- a/plugins/browser-plugin-performance-timing/package.json
+++ b/plugins/browser-plugin-performance-timing/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-performance-timing",
- "version": "3.13.1",
+ "version": "3.14.0",
"description": "Attaches Performance Timing data to Snowplow events",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -48,6 +48,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.13.1"
+ "@snowplow/browser-tracker": "~3.14.0"
}
}
diff --git a/plugins/browser-plugin-privacy-sandbox/package.json b/plugins/browser-plugin-privacy-sandbox/package.json
index a969df587..814bd3e3c 100644
--- a/plugins/browser-plugin-privacy-sandbox/package.json
+++ b/plugins/browser-plugin-privacy-sandbox/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-privacy-sandbox",
- "version": "3.13.1",
+ "version": "3.14.0",
"description": "Allows for the collection of Privacy Sandbox specific data.",
"homepage": "https://docs.snowplow.io/",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -48,6 +48,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.13.1"
+ "@snowplow/browser-tracker": "~3.14.0"
}
}
diff --git a/plugins/browser-plugin-site-tracking/package.json b/plugins/browser-plugin-site-tracking/package.json
index 743366157..140e2640a 100644
--- a/plugins/browser-plugin-site-tracking/package.json
+++ b/plugins/browser-plugin-site-tracking/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-site-tracking",
- "version": "3.13.1",
+ "version": "3.14.0",
"description": "Site tracking for Snowplow",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -50,6 +50,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.13.1"
+ "@snowplow/browser-tracker": "~3.14.0"
}
}
diff --git a/plugins/browser-plugin-snowplow-ecommerce/package.json b/plugins/browser-plugin-snowplow-ecommerce/package.json
index 10b25bcb1..a85d676f5 100644
--- a/plugins/browser-plugin-snowplow-ecommerce/package.json
+++ b/plugins/browser-plugin-snowplow-ecommerce/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-snowplow-ecommerce",
- "version": "3.13.1",
+ "version": "3.14.0",
"description": "Snowplow ecommerce tracking",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -50,6 +50,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.13.1"
+ "@snowplow/browser-tracker": "~3.14.0"
}
}
diff --git a/plugins/browser-plugin-timezone/package.json b/plugins/browser-plugin-timezone/package.json
index 41e062bcf..c5f2fd83c 100644
--- a/plugins/browser-plugin-timezone/package.json
+++ b/plugins/browser-plugin-timezone/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-timezone",
- "version": "3.13.1",
+ "version": "3.14.0",
"description": "Attaches timezone to Snowplow events",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -51,6 +51,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.13.1"
+ "@snowplow/browser-tracker": "~3.14.0"
}
}
diff --git a/plugins/browser-plugin-vimeo-tracking/package.json b/plugins/browser-plugin-vimeo-tracking/package.json
index 865f17453..79a5bbf76 100644
--- a/plugins/browser-plugin-vimeo-tracking/package.json
+++ b/plugins/browser-plugin-vimeo-tracking/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-vimeo-tracking",
- "version": "3.13.1",
+ "version": "3.14.0",
"description": "Vimeo tracking for Snowplow",
"homepage": "https://github.com/snowplow/snowplow-javascript-tracker",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -50,6 +50,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.13.1"
+ "@snowplow/browser-tracker": "~3.14.0"
}
}
diff --git a/plugins/browser-plugin-web-vitals/package.json b/plugins/browser-plugin-web-vitals/package.json
index 18bef4e4c..2792bfe95 100644
--- a/plugins/browser-plugin-web-vitals/package.json
+++ b/plugins/browser-plugin-web-vitals/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-web-vitals",
- "version": "3.13.1",
+ "version": "3.14.0",
"description": "Adds the capability to track web performance metrics categorized as Web Vitals.",
"homepage": "https://github.com/snowplow/snowplow-javascript-tracker",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -49,6 +49,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.13.1"
+ "@snowplow/browser-tracker": "~3.14.0"
}
}
diff --git a/plugins/browser-plugin-youtube-tracking/package.json b/plugins/browser-plugin-youtube-tracking/package.json
index d509f14dd..1754c311a 100644
--- a/plugins/browser-plugin-youtube-tracking/package.json
+++ b/plugins/browser-plugin-youtube-tracking/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-youtube-tracking",
- "version": "3.13.1",
+ "version": "3.14.0",
"description": "YouTube tracking for Snowplow",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -48,6 +48,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.13.1"
+ "@snowplow/browser-tracker": "~3.14.0"
}
}
diff --git a/trackers/browser-tracker/package.json b/trackers/browser-tracker/package.json
index 456de0662..cfde721c8 100644
--- a/trackers/browser-tracker/package.json
+++ b/trackers/browser-tracker/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-tracker",
- "version": "3.13.1",
+ "version": "3.14.0",
"description": "Browser tracker for Snowplow",
"keywords": [
"tracking",
diff --git a/trackers/javascript-tracker/package.json b/trackers/javascript-tracker/package.json
index e96097c5d..f75b4ddeb 100644
--- a/trackers/javascript-tracker/package.json
+++ b/trackers/javascript-tracker/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/javascript-tracker",
- "version": "3.13.1",
+ "version": "3.14.0",
"description": "Web analytics for Snowplow",
"keywords": [
"tracking",
diff --git a/trackers/node-tracker/package.json b/trackers/node-tracker/package.json
index 39ae0e0d2..0d6874f33 100644
--- a/trackers/node-tracker/package.json
+++ b/trackers/node-tracker/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/node-tracker",
- "version": "3.13.1",
+ "version": "3.14.0",
"description": "Node tracker for Snowplow",
"keywords": [
"snowplow",
From f71766614f59eb90eaab6bf9141aed0b9255683d Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Thu, 10 Aug 2023 14:01:44 +0000
Subject: [PATCH 010/341] Applying documentation updates.
---
....browsertracker.disableactivitytracking.md | 13 ++++++++++
...tracker.disableactivitytrackingcallback.md | 13 ++++++++++
.../browser-tracker.browsertracker.md | 2 ++
...browser-tracker.disableactivitytracking.md | 24 +++++++++++++++++++
...tracker.disableactivitytrackingcallback.md | 24 +++++++++++++++++++
.../docs/markdown/browser-tracker.md | 2 ++
6 files changed, 78 insertions(+)
create mode 100644 trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.disableactivitytracking.md
create mode 100644 trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.disableactivitytrackingcallback.md
create mode 100644 trackers/browser-tracker/docs/markdown/browser-tracker.disableactivitytracking.md
create mode 100644 trackers/browser-tracker/docs/markdown/browser-tracker.disableactivitytrackingcallback.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.disableactivitytracking.md b/trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.disableactivitytracking.md
new file mode 100644
index 000000000..6b80aec01
--- /dev/null
+++ b/trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.disableactivitytracking.md
@@ -0,0 +1,13 @@
+
+
+[Home](./index.md) > [@snowplow/browser-tracker](./browser-tracker.md) > [BrowserTracker](./browser-tracker.browsertracker.md) > [disableActivityTracking](./browser-tracker.browsertracker.disableactivitytracking.md)
+
+## BrowserTracker.disableActivityTracking property
+
+Disables page activity tracking.
+
+Signature:
+
+```typescript
+disableActivityTracking: () => void;
+```
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.disableactivitytrackingcallback.md b/trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.disableactivitytrackingcallback.md
new file mode 100644
index 000000000..056a79fb0
--- /dev/null
+++ b/trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.disableactivitytrackingcallback.md
@@ -0,0 +1,13 @@
+
+
+[Home](./index.md) > [@snowplow/browser-tracker](./browser-tracker.md) > [BrowserTracker](./browser-tracker.browsertracker.md) > [disableActivityTrackingCallback](./browser-tracker.browsertracker.disableactivitytrackingcallback.md)
+
+## BrowserTracker.disableActivityTrackingCallback property
+
+Disables page activity tracking callback.
+
+Signature:
+
+```typescript
+disableActivityTrackingCallback: () => void;
+```
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.md b/trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.md
index 8938242be..abbf32f60 100644
--- a/trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.md
+++ b/trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.md
@@ -20,6 +20,8 @@ interface BrowserTracker
| [clearUserData](./browser-tracker.browsertracker.clearuserdata.md) | (configuration?: ClearUserDataConfiguration) => void | Clears all cookies and local storage containing user and session identifiers |
| [core](./browser-tracker.browsertracker.core.md) | TrackerCore | The instance of the core library which this tracker has initialised |
| [crossDomainLinker](./browser-tracker.browsertracker.crossdomainlinker.md) | (crossDomainLinkerCriterion: (elt: HTMLAnchorElement \| HTMLAreaElement) => boolean) => void | Enable querystring decoration for links passing a filter |
+| [disableActivityTracking](./browser-tracker.browsertracker.disableactivitytracking.md) | () => void | Disables page activity tracking. |
+| [disableActivityTrackingCallback](./browser-tracker.browsertracker.disableactivitytrackingcallback.md) | () => void | Disables page activity tracking callback. |
| [disableAnonymousTracking](./browser-tracker.browsertracker.disableanonymoustracking.md) | (configuration?: DisableAnonymousTrackingConfiguration) => void | Disables anonymous tracking if active (ie. tracker initialized with anonymousTracking) For stateStorageStrategy override, uses supplied value first, falls back to one defined in initial config, otherwise uses cookieAndLocalStorage. |
| [discardBrace](./browser-tracker.browsertracker.discardbrace.md) | (enableFilter: boolean) => void | Strip braces from URL |
| [discardHashTag](./browser-tracker.browsertracker.discardhashtag.md) | (enableFilter: boolean) => void | Strip hash tag (or anchor) from URL |
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.disableactivitytracking.md b/trackers/browser-tracker/docs/markdown/browser-tracker.disableactivitytracking.md
new file mode 100644
index 000000000..be17fdb57
--- /dev/null
+++ b/trackers/browser-tracker/docs/markdown/browser-tracker.disableactivitytracking.md
@@ -0,0 +1,24 @@
+
+
+[Home](./index.md) > [@snowplow/browser-tracker](./browser-tracker.md) > [disableActivityTracking](./browser-tracker.disableactivitytracking.md)
+
+## disableActivityTracking() function
+
+Disables page activity tracking.
+
+Signature:
+
+```typescript
+declare function disableActivityTracking(trackers?: Array): void;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| trackers | Array<string> | The tracker identifiers the activity tracking will be disabled. |
+
+Returns:
+
+void
+
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.disableactivitytrackingcallback.md b/trackers/browser-tracker/docs/markdown/browser-tracker.disableactivitytrackingcallback.md
new file mode 100644
index 000000000..9b15963b1
--- /dev/null
+++ b/trackers/browser-tracker/docs/markdown/browser-tracker.disableactivitytrackingcallback.md
@@ -0,0 +1,24 @@
+
+
+[Home](./index.md) > [@snowplow/browser-tracker](./browser-tracker.md) > [disableActivityTrackingCallback](./browser-tracker.disableactivitytrackingcallback.md)
+
+## disableActivityTrackingCallback() function
+
+Disables page activity tracking callback.
+
+Signature:
+
+```typescript
+declare function disableActivityTrackingCallback(trackers?: Array): void;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| trackers | Array<string> | The tracker identifiers the activity tracking callback will be disabled. |
+
+Returns:
+
+void
+
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.md b/trackers/browser-tracker/docs/markdown/browser-tracker.md
index 48b3032bc..66ea8d974 100644
--- a/trackers/browser-tracker/docs/markdown/browser-tracker.md
+++ b/trackers/browser-tracker/docs/markdown/browser-tracker.md
@@ -13,6 +13,8 @@
| [clearGlobalContexts(trackers)](./browser-tracker.clearglobalcontexts.md) | Clear all global contexts that are sent with events |
| [clearUserData(configuration, trackers)](./browser-tracker.clearuserdata.md) | Clears all cookies and local storage containing user and session identifiers |
| [crossDomainLinker(crossDomainLinkerCriterion, trackers)](./browser-tracker.crossdomainlinker.md) | Enable querystring decoration for links pasing a filter |
+| [disableActivityTracking(trackers)](./browser-tracker.disableactivitytracking.md) | Disables page activity tracking. |
+| [disableActivityTrackingCallback(trackers)](./browser-tracker.disableactivitytrackingcallback.md) | Disables page activity tracking callback. |
| [disableAnonymousTracking(configuration, trackers)](./browser-tracker.disableanonymoustracking.md) | Disables anonymous tracking if active (ie. tracker initialized with anonymousTracking) For stateStorageStrategy override, uses supplied value first, falls back to one defined in initial config, otherwise uses cookieAndLocalStorage. |
| [discardBrace(enable, trackers)](./browser-tracker.discardbrace.md) | Strip braces from URL |
| [discardHashTag(enable, trackers)](./browser-tracker.discardhashtag.md) | Strip hash tag (or anchor) from URL |
From 100309bd24405dcfffd7368ea7688f5b2d771d37 Mon Sep 17 00:00:00 2001
From: Peter Perlepes
Date: Wed, 23 Aug 2023 11:18:26 +0300
Subject: [PATCH 011/341] Add E2E testIdentifier randomness between test
retries
#1228
---
...dentifier-between-e2e-retries_2023-08-16-07-58.json | 10 ++++++++++
.../javascript-tracker/test/integration/helpers.ts | 3 ++-
2 files changed, 12 insertions(+), 1 deletion(-)
create mode 100644 common/changes/@snowplow/javascript-tracker/fix-proper-test-identifier-between-e2e-retries_2023-08-16-07-58.json
diff --git a/common/changes/@snowplow/javascript-tracker/fix-proper-test-identifier-between-e2e-retries_2023-08-16-07-58.json b/common/changes/@snowplow/javascript-tracker/fix-proper-test-identifier-between-e2e-retries_2023-08-16-07-58.json
new file mode 100644
index 000000000..ae2f53795
--- /dev/null
+++ b/common/changes/@snowplow/javascript-tracker/fix-proper-test-identifier-between-e2e-retries_2023-08-16-07-58.json
@@ -0,0 +1,10 @@
+{
+ "changes": [
+ {
+ "packageName": "@snowplow/javascript-tracker",
+ "comment": "",
+ "type": "none"
+ }
+ ],
+ "packageName": "@snowplow/javascript-tracker"
+}
\ No newline at end of file
diff --git a/trackers/javascript-tracker/test/integration/helpers.ts b/trackers/javascript-tracker/test/integration/helpers.ts
index 4099da8aa..e71d298ca 100644
--- a/trackers/javascript-tracker/test/integration/helpers.ts
+++ b/trackers/javascript-tracker/test/integration/helpers.ts
@@ -48,7 +48,8 @@ export async function pageSetup() {
if (!dockerUrl) {
throw 'dockerInstanceUrl not available in `browser.sharedStore`';
}
- const testIdentifier = browser.capabilities.browserName + '_' + browser.capabilities.browserVersion;
+ const testIdentifier =
+ browser.capabilities.browserName + '_' + browser.capabilities.browserVersion + '_' + Math.random();
await browser.url('/index.html');
await browser.setCookies([
{ name: 'container', value: dockerUrl },
From 0421bb650db8f101821ff0ef33f3ea428b56a238 Mon Sep 17 00:00:00 2001
From: Peter Perlepes
Date: Fri, 25 Aug 2023 11:55:31 +0300
Subject: [PATCH 012/341] Add the idService option to the tracker configuration
(close #1185)
#1186
---
...85-id-service-option_2023-05-11-20-22.json | 10 ++
...85-id-service-option_2023-05-12-07-26.json | 10 ++
.../browser-tracker-core/src/tracker/index.ts | 3 +-
.../src/tracker/out_queue.ts | 24 +++-
.../browser-tracker-core/src/tracker/types.ts | 7 +
.../test/out_queue.test.ts | 121 ++++++++++++++++++
.../docs/browser-tracker.api.md | 1 +
7 files changed, 171 insertions(+), 5 deletions(-)
create mode 100644 common/changes/@snowplow/browser-tracker-core/feature-1185-id-service-option_2023-05-11-20-22.json
create mode 100644 common/changes/@snowplow/browser-tracker/feature-1185-id-service-option_2023-05-12-07-26.json
diff --git a/common/changes/@snowplow/browser-tracker-core/feature-1185-id-service-option_2023-05-11-20-22.json b/common/changes/@snowplow/browser-tracker-core/feature-1185-id-service-option_2023-05-11-20-22.json
new file mode 100644
index 000000000..de331a7c7
--- /dev/null
+++ b/common/changes/@snowplow/browser-tracker-core/feature-1185-id-service-option_2023-05-11-20-22.json
@@ -0,0 +1,10 @@
+{
+ "changes": [
+ {
+ "packageName": "@snowplow/browser-tracker-core",
+ "comment": "Add idService option",
+ "type": "none"
+ }
+ ],
+ "packageName": "@snowplow/browser-tracker-core"
+}
\ No newline at end of file
diff --git a/common/changes/@snowplow/browser-tracker/feature-1185-id-service-option_2023-05-12-07-26.json b/common/changes/@snowplow/browser-tracker/feature-1185-id-service-option_2023-05-12-07-26.json
new file mode 100644
index 000000000..934020399
--- /dev/null
+++ b/common/changes/@snowplow/browser-tracker/feature-1185-id-service-option_2023-05-12-07-26.json
@@ -0,0 +1,10 @@
+{
+ "changes": [
+ {
+ "packageName": "@snowplow/browser-tracker",
+ "comment": "Add idService option",
+ "type": "none"
+ }
+ ],
+ "packageName": "@snowplow/browser-tracker"
+}
\ No newline at end of file
diff --git a/libraries/browser-tracker-core/src/tracker/index.ts b/libraries/browser-tracker-core/src/tracker/index.ts
index 8eb055dd4..a6443a932 100755
--- a/libraries/browser-tracker-core/src/tracker/index.ts
+++ b/libraries/browser-tracker-core/src/tracker/index.ts
@@ -302,7 +302,8 @@ export function Tracker(
trackerConfiguration.customHeaders ?? {},
trackerConfiguration.withCredentials ?? true,
trackerConfiguration.retryStatusCodes ?? [],
- (trackerConfiguration.dontRetryStatusCodes ?? []).concat([400, 401, 403, 410, 422])
+ (trackerConfiguration.dontRetryStatusCodes ?? []).concat([400, 401, 403, 410, 422]),
+ trackerConfiguration.idService
),
// Whether pageViewId should be regenerated after each trackPageView. Affect web_page context
preservePageViewId = false,
diff --git a/libraries/browser-tracker-core/src/tracker/out_queue.ts b/libraries/browser-tracker-core/src/tracker/out_queue.ts
index b838ba436..92e3ad968 100644
--- a/libraries/browser-tracker-core/src/tracker/out_queue.ts
+++ b/libraries/browser-tracker-core/src/tracker/out_queue.ts
@@ -63,6 +63,7 @@ export interface OutQueue {
* @param withCredentials - Sets the value of the withCredentials flag on XMLHttpRequest (GET and POST) requests
* @param retryStatusCodes – Failure HTTP response status codes from Collector for which sending events should be retried (they can override the `dontRetryStatusCodes`)
* @param dontRetryStatusCodes – Failure HTTP response status codes from Collector for which sending events should not be retried
+ * @param idService - Id service full URL. This URL will be added to the queue and will be called using a GET method.
* @returns object OutQueueManager instance
*/
export function OutQueueManager(
@@ -81,7 +82,8 @@ export function OutQueueManager(
customHeaders: Record,
withCredentials: boolean,
retryStatusCodes: number[],
- dontRetryStatusCodes: number[]
+ dontRetryStatusCodes: number[],
+ idService?: string
): OutQueue {
type PostEvent = {
evt: Record;
@@ -90,7 +92,8 @@ export function OutQueueManager(
let executingQueue = false,
configCollectorUrl: string,
- outQueue: Array | Array = [];
+ outQueue: Array | Array = [],
+ idServiceCalled = false;
//Force to lower case if its a string
eventMethod = typeof eventMethod === 'string' ? eventMethod.toLowerCase() : eventMethod;
@@ -222,7 +225,7 @@ export function OutQueueManager(
}
const postable = (queue: Array | Array): queue is Array => {
- return typeof queue[0] === 'object';
+ return typeof queue[0] === 'object' && 'evt' in queue[0];
};
/**
@@ -293,7 +296,7 @@ export function OutQueueManager(
outQueue.shift();
}
- if (outQueue.length < 1) {
+ if (!outQueue.length) {
executingQueue = false;
return;
}
@@ -305,6 +308,19 @@ export function OutQueueManager(
executingQueue = true;
+ if (idService && !idServiceCalled) {
+ const xhr = initializeXMLHttpRequest(idService, false, sync);
+ idServiceCalled = true;
+ xhr.timeout = connectionTimeout;
+ xhr.onreadystatechange = function () {
+ if (xhr.readyState === 4) {
+ executeQueue();
+ }
+ };
+ xhr.send();
+ return;
+ }
+
if (useXhr) {
// Keep track of number of events to delete from queue
const chooseHowManyToSend = (queue: Array<{ bytes: number }>) => {
diff --git a/libraries/browser-tracker-core/src/tracker/types.ts b/libraries/browser-tracker-core/src/tracker/types.ts
index f986e2a2d..0f5801c9d 100755
--- a/libraries/browser-tracker-core/src/tracker/types.ts
+++ b/libraries/browser-tracker-core/src/tracker/types.ts
@@ -242,6 +242,13 @@ export type TrackerConfiguration = {
* @param updatedSession - On session update, the new session information plus the previous session id.
*/
onSessionUpdateCallback?: (updatedSession: ClientSession) => void;
+ /**
+ * Id service full URL. This URL will be added to the queue and will be called using a GET method.
+ * This option is there to allow the service URL to be called in order to set any required identifiers e.g. extra cookies.
+ *
+ * The request respects the `anonymousTracking` option, including the SP-Anonymous header if needed, and any additional custom headers from the customHeaders option.
+ */
+ idService?: string;
};
/**
diff --git a/libraries/browser-tracker-core/test/out_queue.test.ts b/libraries/browser-tracker-core/test/out_queue.test.ts
index c51b71194..bab53486b 100644
--- a/libraries/browser-tracker-core/test/out_queue.test.ts
+++ b/libraries/browser-tracker-core/test/out_queue.test.ts
@@ -216,4 +216,125 @@ describe('OutQueueManager', () => {
expect(xhrOpenMock).toHaveBeenCalledWith('POST', 'http://acme.com/com.snowplowanalytics.snowplow/tp2', true); // should make the POST request
});
});
+
+ describe('idService requests', () => {
+ const idServiceEndpoint = 'http://example.com/id';
+ const readPostQueue = () => {
+ return JSON.parse(
+ window.localStorage.getItem('snowplowOutQueue_sp_post2') ?? fail('Unable to find local storage queue')
+ );
+ };
+
+ const readGetQueue = () =>
+ JSON.parse(window.localStorage.getItem('snowplowOutQueue_sp_get') ?? fail('Unable to find local storage queue'));
+
+ const getQuerystring = (p: object) =>
+ '?' +
+ Object.entries(p)
+ .map(([k, v]) => k + '=' + encodeURIComponent(v))
+ .join('&');
+
+ describe('GET requests', () => {
+ const createGetQueue = () =>
+ OutQueueManager(
+ 'sp',
+ new SharedState(),
+ true,
+ 'get',
+ '/com.snowplowanalytics.snowplow/tp2',
+ 1,
+ 40000,
+ 0,
+ false,
+ maxQueueSize,
+ 5000,
+ false,
+ {},
+ true,
+ [],
+ [],
+ idServiceEndpoint
+ );
+
+ it('should first execute the idService request and in the same `enqueueRequest` the tracking request', () => {
+ const request = { e: 'pv', eid: '65cb78de-470c-4764-8c10-02bd79477a3a' };
+ const getQueue = createGetQueue();
+
+ getQueue.enqueueRequest(request, 'http://example.com');
+
+ let retrievedQueue = readGetQueue();
+ expect(retrievedQueue).toHaveLength(1);
+ /* The first XHR is for the idService */
+ respondMockRequest(200);
+ retrievedQueue = readGetQueue();
+ expect(retrievedQueue).toHaveLength(1);
+ expect(retrievedQueue[0]).toEqual(getQuerystring(request));
+ /* The second XHR is the event request */
+ respondMockRequest(200);
+ retrievedQueue = readGetQueue();
+ expect(retrievedQueue).toHaveLength(0);
+ });
+
+ it('should first execute the idService request and in the same `enqueueRequest` the tracking request irregardless of failure of the idService endpoint', () => {
+ const request = { e: 'pv', eid: '65cb78de-470c-4764-8c10-02bd79477a3a' };
+ const getQueue = createGetQueue();
+
+ getQueue.enqueueRequest(request, 'http://example.com');
+
+ let retrievedQueue = readGetQueue();
+ expect(retrievedQueue).toHaveLength(1);
+ /* The first XHR is for the idService */
+ respondMockRequest(500);
+ retrievedQueue = readGetQueue();
+ expect(retrievedQueue).toHaveLength(1);
+ expect(retrievedQueue[0]).toEqual(getQuerystring(request));
+ /* The second XHR is the event request */
+ respondMockRequest(200);
+ retrievedQueue = readGetQueue();
+ expect(retrievedQueue).toHaveLength(0);
+ });
+ });
+
+ describe('POST requests', () => {
+ const createPostQueue = () =>
+ OutQueueManager(
+ 'sp',
+ new SharedState(),
+ true,
+ 'post',
+ '/com.snowplowanalytics.snowplow/tp2',
+ 1,
+ 40000,
+ 0,
+ false,
+ maxQueueSize,
+ 5000,
+ false,
+ {},
+ true,
+ [],
+ [],
+ idServiceEndpoint
+ );
+
+ it('should first execute the idService request and in the same `enqueueRequest` the tracking request irregardless of failure of the idService endpoint', () => {
+ const request = { e: 'pv', eid: '65cb78de-470c-4764-8c10-02bd79477a3a' };
+ const postQueue = createPostQueue();
+
+ postQueue.enqueueRequest(request, 'http://example.com');
+
+ let retrievedQueue = readPostQueue();
+ expect(retrievedQueue).toHaveLength(1);
+ /* The first XHR is for the idService */
+ respondMockRequest(500);
+ retrievedQueue = readPostQueue();
+ expect(retrievedQueue).toHaveLength(1);
+ expect(retrievedQueue[0].evt).toEqual(request);
+ /* The second XHR is the event request */
+ respondMockRequest(200);
+ retrievedQueue = readPostQueue();
+ expect(retrievedQueue).toHaveLength(0);
+ });
+ });
+ });
});
diff --git a/trackers/browser-tracker/docs/browser-tracker.api.md b/trackers/browser-tracker/docs/browser-tracker.api.md
index 1fedc9d25..70aabae95 100644
--- a/trackers/browser-tracker/docs/browser-tracker.api.md
+++ b/trackers/browser-tracker/docs/browser-tracker.api.md
@@ -368,6 +368,7 @@ export type TrackerConfiguration = {
retryStatusCodes?: number[];
dontRetryStatusCodes?: number[];
onSessionUpdateCallback?: (updatedSession: ClientSession) => void;
+ idService?: string;
};
// @public
From aebf8a4a9a0cc1fdd5824d03c7475ff526a3b318 Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Mon, 28 Aug 2023 14:25:14 +0000
Subject: [PATCH 013/341] Update changelogs [skip ci]
---
...ture-1185-id-service-option_2023-05-11-20-22.json | 10 ----------
...ture-1185-id-service-option_2023-05-12-07-26.json | 10 ----------
...ntifier-between-e2e-retries_2023-08-16-07-58.json | 10 ----------
libraries/browser-tracker-core/CHANGELOG.json | 12 ++++++++++++
libraries/browser-tracker-core/CHANGELOG.md | 9 ++++++++-
libraries/tracker-core/CHANGELOG.json | 6 ++++++
libraries/tracker-core/CHANGELOG.md | 7 ++++++-
plugins/browser-plugin-ad-tracking/CHANGELOG.json | 6 ++++++
plugins/browser-plugin-ad-tracking/CHANGELOG.md | 7 ++++++-
.../browser-plugin-browser-features/CHANGELOG.json | 6 ++++++
plugins/browser-plugin-browser-features/CHANGELOG.md | 7 ++++++-
plugins/browser-plugin-client-hints/CHANGELOG.json | 6 ++++++
plugins/browser-plugin-client-hints/CHANGELOG.md | 7 ++++++-
plugins/browser-plugin-consent/CHANGELOG.json | 6 ++++++
plugins/browser-plugin-consent/CHANGELOG.md | 7 ++++++-
plugins/browser-plugin-debugger/CHANGELOG.json | 6 ++++++
plugins/browser-plugin-debugger/CHANGELOG.md | 7 ++++++-
plugins/browser-plugin-ecommerce/CHANGELOG.json | 6 ++++++
plugins/browser-plugin-ecommerce/CHANGELOG.md | 7 ++++++-
.../browser-plugin-enhanced-consent/CHANGELOG.json | 6 ++++++
plugins/browser-plugin-enhanced-consent/CHANGELOG.md | 7 ++++++-
.../browser-plugin-enhanced-ecommerce/CHANGELOG.json | 6 ++++++
.../browser-plugin-enhanced-ecommerce/CHANGELOG.md | 7 ++++++-
plugins/browser-plugin-error-tracking/CHANGELOG.json | 6 ++++++
plugins/browser-plugin-error-tracking/CHANGELOG.md | 7 ++++++-
plugins/browser-plugin-form-tracking/CHANGELOG.json | 6 ++++++
plugins/browser-plugin-form-tracking/CHANGELOG.md | 7 ++++++-
plugins/browser-plugin-ga-cookies/CHANGELOG.json | 6 ++++++
plugins/browser-plugin-ga-cookies/CHANGELOG.md | 7 ++++++-
plugins/browser-plugin-geolocation/CHANGELOG.json | 6 ++++++
plugins/browser-plugin-geolocation/CHANGELOG.md | 7 ++++++-
.../CHANGELOG.json | 6 ++++++
.../browser-plugin-link-click-tracking/CHANGELOG.md | 7 ++++++-
plugins/browser-plugin-media-tracking/CHANGELOG.json | 6 ++++++
plugins/browser-plugin-media-tracking/CHANGELOG.md | 7 ++++++-
plugins/browser-plugin-media/CHANGELOG.json | 6 ++++++
plugins/browser-plugin-media/CHANGELOG.md | 7 ++++++-
plugins/browser-plugin-optimizely-x/CHANGELOG.json | 6 ++++++
plugins/browser-plugin-optimizely-x/CHANGELOG.md | 7 ++++++-
plugins/browser-plugin-optimizely/CHANGELOG.json | 6 ++++++
plugins/browser-plugin-optimizely/CHANGELOG.md | 7 ++++++-
.../CHANGELOG.json | 6 ++++++
.../CHANGELOG.md | 7 ++++++-
.../browser-plugin-performance-timing/CHANGELOG.json | 6 ++++++
.../browser-plugin-performance-timing/CHANGELOG.md | 7 ++++++-
.../browser-plugin-privacy-sandbox/CHANGELOG.json | 6 ++++++
plugins/browser-plugin-privacy-sandbox/CHANGELOG.md | 7 ++++++-
plugins/browser-plugin-site-tracking/CHANGELOG.json | 6 ++++++
plugins/browser-plugin-site-tracking/CHANGELOG.md | 7 ++++++-
.../browser-plugin-snowplow-ecommerce/CHANGELOG.json | 6 ++++++
.../browser-plugin-snowplow-ecommerce/CHANGELOG.md | 7 ++++++-
plugins/browser-plugin-timezone/CHANGELOG.json | 6 ++++++
plugins/browser-plugin-timezone/CHANGELOG.md | 7 ++++++-
plugins/browser-plugin-vimeo-tracking/CHANGELOG.json | 6 ++++++
plugins/browser-plugin-vimeo-tracking/CHANGELOG.md | 7 ++++++-
plugins/browser-plugin-web-vitals/CHANGELOG.json | 6 ++++++
plugins/browser-plugin-web-vitals/CHANGELOG.md | 7 ++++++-
.../browser-plugin-youtube-tracking/CHANGELOG.json | 6 ++++++
plugins/browser-plugin-youtube-tracking/CHANGELOG.md | 7 ++++++-
trackers/browser-tracker/CHANGELOG.json | 12 ++++++++++++
trackers/browser-tracker/CHANGELOG.md | 9 ++++++++-
trackers/javascript-tracker/CHANGELOG.json | 6 ++++++
trackers/javascript-tracker/CHANGELOG.md | 7 ++++++-
trackers/node-tracker/CHANGELOG.json | 6 ++++++
trackers/node-tracker/CHANGELOG.md | 7 ++++++-
65 files changed, 388 insertions(+), 61 deletions(-)
delete mode 100644 common/changes/@snowplow/browser-tracker-core/feature-1185-id-service-option_2023-05-11-20-22.json
delete mode 100644 common/changes/@snowplow/browser-tracker/feature-1185-id-service-option_2023-05-12-07-26.json
delete mode 100644 common/changes/@snowplow/javascript-tracker/fix-proper-test-identifier-between-e2e-retries_2023-08-16-07-58.json
diff --git a/common/changes/@snowplow/browser-tracker-core/feature-1185-id-service-option_2023-05-11-20-22.json b/common/changes/@snowplow/browser-tracker-core/feature-1185-id-service-option_2023-05-11-20-22.json
deleted file mode 100644
index de331a7c7..000000000
--- a/common/changes/@snowplow/browser-tracker-core/feature-1185-id-service-option_2023-05-11-20-22.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "changes": [
- {
- "packageName": "@snowplow/browser-tracker-core",
- "comment": "Add idService option",
- "type": "none"
- }
- ],
- "packageName": "@snowplow/browser-tracker-core"
-}
\ No newline at end of file
diff --git a/common/changes/@snowplow/browser-tracker/feature-1185-id-service-option_2023-05-12-07-26.json b/common/changes/@snowplow/browser-tracker/feature-1185-id-service-option_2023-05-12-07-26.json
deleted file mode 100644
index 934020399..000000000
--- a/common/changes/@snowplow/browser-tracker/feature-1185-id-service-option_2023-05-12-07-26.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "changes": [
- {
- "packageName": "@snowplow/browser-tracker",
- "comment": "Add idService option",
- "type": "none"
- }
- ],
- "packageName": "@snowplow/browser-tracker"
-}
\ No newline at end of file
diff --git a/common/changes/@snowplow/javascript-tracker/fix-proper-test-identifier-between-e2e-retries_2023-08-16-07-58.json b/common/changes/@snowplow/javascript-tracker/fix-proper-test-identifier-between-e2e-retries_2023-08-16-07-58.json
deleted file mode 100644
index ae2f53795..000000000
--- a/common/changes/@snowplow/javascript-tracker/fix-proper-test-identifier-between-e2e-retries_2023-08-16-07-58.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "changes": [
- {
- "packageName": "@snowplow/javascript-tracker",
- "comment": "",
- "type": "none"
- }
- ],
- "packageName": "@snowplow/javascript-tracker"
-}
\ No newline at end of file
diff --git a/libraries/browser-tracker-core/CHANGELOG.json b/libraries/browser-tracker-core/CHANGELOG.json
index 4c3dc6b7d..b25b0c079 100644
--- a/libraries/browser-tracker-core/CHANGELOG.json
+++ b/libraries/browser-tracker-core/CHANGELOG.json
@@ -1,6 +1,18 @@
{
"name": "@snowplow/browser-tracker-core",
"entries": [
+ {
+ "version": "3.15.0",
+ "tag": "@snowplow/browser-tracker-core_v3.15.0",
+ "date": "Mon, 28 Aug 2023 14:25:14 GMT",
+ "comments": {
+ "none": [
+ {
+ "comment": "Add idService option"
+ }
+ ]
+ }
+ },
{
"version": "3.14.0",
"tag": "@snowplow/browser-tracker-core_v3.14.0",
diff --git a/libraries/browser-tracker-core/CHANGELOG.md b/libraries/browser-tracker-core/CHANGELOG.md
index 65998c211..88501ac1b 100644
--- a/libraries/browser-tracker-core/CHANGELOG.md
+++ b/libraries/browser-tracker-core/CHANGELOG.md
@@ -1,6 +1,13 @@
# Change Log - @snowplow/browser-tracker-core
-This log was last generated on Thu, 10 Aug 2023 13:56:44 GMT and should not be manually modified.
+This log was last generated on Mon, 28 Aug 2023 14:25:14 GMT and should not be manually modified.
+
+## 3.15.0
+Mon, 28 Aug 2023 14:25:14 GMT
+
+### Updates
+
+- Add idService option
## 3.14.0
Thu, 10 Aug 2023 13:56:44 GMT
diff --git a/libraries/tracker-core/CHANGELOG.json b/libraries/tracker-core/CHANGELOG.json
index dd47bb7bb..834d26709 100644
--- a/libraries/tracker-core/CHANGELOG.json
+++ b/libraries/tracker-core/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/tracker-core",
"entries": [
+ {
+ "version": "3.15.0",
+ "tag": "@snowplow/tracker-core_v3.15.0",
+ "date": "Mon, 28 Aug 2023 14:25:14 GMT",
+ "comments": {}
+ },
{
"version": "3.14.0",
"tag": "@snowplow/tracker-core_v3.14.0",
diff --git a/libraries/tracker-core/CHANGELOG.md b/libraries/tracker-core/CHANGELOG.md
index 7089f61c8..bcebc2c07 100644
--- a/libraries/tracker-core/CHANGELOG.md
+++ b/libraries/tracker-core/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/tracker-core
-This log was last generated on Thu, 10 Aug 2023 13:56:44 GMT and should not be manually modified.
+This log was last generated on Mon, 28 Aug 2023 14:25:14 GMT and should not be manually modified.
+
+## 3.15.0
+Mon, 28 Aug 2023 14:25:14 GMT
+
+_Version update only_
## 3.14.0
Thu, 10 Aug 2023 13:56:44 GMT
diff --git a/plugins/browser-plugin-ad-tracking/CHANGELOG.json b/plugins/browser-plugin-ad-tracking/CHANGELOG.json
index 4be63befc..a91cd9666 100644
--- a/plugins/browser-plugin-ad-tracking/CHANGELOG.json
+++ b/plugins/browser-plugin-ad-tracking/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-ad-tracking",
"entries": [
+ {
+ "version": "3.15.0",
+ "tag": "@snowplow/browser-plugin-ad-tracking_v3.15.0",
+ "date": "Mon, 28 Aug 2023 14:25:14 GMT",
+ "comments": {}
+ },
{
"version": "3.14.0",
"tag": "@snowplow/browser-plugin-ad-tracking_v3.14.0",
diff --git a/plugins/browser-plugin-ad-tracking/CHANGELOG.md b/plugins/browser-plugin-ad-tracking/CHANGELOG.md
index 909179630..e251dddaa 100644
--- a/plugins/browser-plugin-ad-tracking/CHANGELOG.md
+++ b/plugins/browser-plugin-ad-tracking/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-ad-tracking
-This log was last generated on Thu, 10 Aug 2023 13:56:44 GMT and should not be manually modified.
+This log was last generated on Mon, 28 Aug 2023 14:25:14 GMT and should not be manually modified.
+
+## 3.15.0
+Mon, 28 Aug 2023 14:25:14 GMT
+
+_Version update only_
## 3.14.0
Thu, 10 Aug 2023 13:56:44 GMT
diff --git a/plugins/browser-plugin-browser-features/CHANGELOG.json b/plugins/browser-plugin-browser-features/CHANGELOG.json
index 3ee4131f6..3efcda4cb 100644
--- a/plugins/browser-plugin-browser-features/CHANGELOG.json
+++ b/plugins/browser-plugin-browser-features/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-browser-features",
"entries": [
+ {
+ "version": "3.15.0",
+ "tag": "@snowplow/browser-plugin-browser-features_v3.15.0",
+ "date": "Mon, 28 Aug 2023 14:25:14 GMT",
+ "comments": {}
+ },
{
"version": "3.14.0",
"tag": "@snowplow/browser-plugin-browser-features_v3.14.0",
diff --git a/plugins/browser-plugin-browser-features/CHANGELOG.md b/plugins/browser-plugin-browser-features/CHANGELOG.md
index e89371870..521110f7d 100644
--- a/plugins/browser-plugin-browser-features/CHANGELOG.md
+++ b/plugins/browser-plugin-browser-features/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-browser-features
-This log was last generated on Thu, 10 Aug 2023 13:56:44 GMT and should not be manually modified.
+This log was last generated on Mon, 28 Aug 2023 14:25:14 GMT and should not be manually modified.
+
+## 3.15.0
+Mon, 28 Aug 2023 14:25:14 GMT
+
+_Version update only_
## 3.14.0
Thu, 10 Aug 2023 13:56:44 GMT
diff --git a/plugins/browser-plugin-client-hints/CHANGELOG.json b/plugins/browser-plugin-client-hints/CHANGELOG.json
index 89ff9a1ca..9421091a2 100644
--- a/plugins/browser-plugin-client-hints/CHANGELOG.json
+++ b/plugins/browser-plugin-client-hints/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-client-hints",
"entries": [
+ {
+ "version": "3.15.0",
+ "tag": "@snowplow/browser-plugin-client-hints_v3.15.0",
+ "date": "Mon, 28 Aug 2023 14:25:14 GMT",
+ "comments": {}
+ },
{
"version": "3.14.0",
"tag": "@snowplow/browser-plugin-client-hints_v3.14.0",
diff --git a/plugins/browser-plugin-client-hints/CHANGELOG.md b/plugins/browser-plugin-client-hints/CHANGELOG.md
index d9be7495d..c2d21d34e 100644
--- a/plugins/browser-plugin-client-hints/CHANGELOG.md
+++ b/plugins/browser-plugin-client-hints/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-client-hints
-This log was last generated on Thu, 10 Aug 2023 13:56:44 GMT and should not be manually modified.
+This log was last generated on Mon, 28 Aug 2023 14:25:14 GMT and should not be manually modified.
+
+## 3.15.0
+Mon, 28 Aug 2023 14:25:14 GMT
+
+_Version update only_
## 3.14.0
Thu, 10 Aug 2023 13:56:44 GMT
diff --git a/plugins/browser-plugin-consent/CHANGELOG.json b/plugins/browser-plugin-consent/CHANGELOG.json
index fdc797eea..110210fc0 100644
--- a/plugins/browser-plugin-consent/CHANGELOG.json
+++ b/plugins/browser-plugin-consent/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-consent",
"entries": [
+ {
+ "version": "3.15.0",
+ "tag": "@snowplow/browser-plugin-consent_v3.15.0",
+ "date": "Mon, 28 Aug 2023 14:25:14 GMT",
+ "comments": {}
+ },
{
"version": "3.14.0",
"tag": "@snowplow/browser-plugin-consent_v3.14.0",
diff --git a/plugins/browser-plugin-consent/CHANGELOG.md b/plugins/browser-plugin-consent/CHANGELOG.md
index ab5692176..53c2cc797 100644
--- a/plugins/browser-plugin-consent/CHANGELOG.md
+++ b/plugins/browser-plugin-consent/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-consent
-This log was last generated on Thu, 10 Aug 2023 13:56:44 GMT and should not be manually modified.
+This log was last generated on Mon, 28 Aug 2023 14:25:14 GMT and should not be manually modified.
+
+## 3.15.0
+Mon, 28 Aug 2023 14:25:14 GMT
+
+_Version update only_
## 3.14.0
Thu, 10 Aug 2023 13:56:44 GMT
diff --git a/plugins/browser-plugin-debugger/CHANGELOG.json b/plugins/browser-plugin-debugger/CHANGELOG.json
index 234e7e40a..b5473a1fb 100644
--- a/plugins/browser-plugin-debugger/CHANGELOG.json
+++ b/plugins/browser-plugin-debugger/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-debugger",
"entries": [
+ {
+ "version": "3.15.0",
+ "tag": "@snowplow/browser-plugin-debugger_v3.15.0",
+ "date": "Mon, 28 Aug 2023 14:25:14 GMT",
+ "comments": {}
+ },
{
"version": "3.14.0",
"tag": "@snowplow/browser-plugin-debugger_v3.14.0",
diff --git a/plugins/browser-plugin-debugger/CHANGELOG.md b/plugins/browser-plugin-debugger/CHANGELOG.md
index 2ad30f3e8..13b88ce1b 100644
--- a/plugins/browser-plugin-debugger/CHANGELOG.md
+++ b/plugins/browser-plugin-debugger/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-debugger
-This log was last generated on Thu, 10 Aug 2023 13:56:44 GMT and should not be manually modified.
+This log was last generated on Mon, 28 Aug 2023 14:25:14 GMT and should not be manually modified.
+
+## 3.15.0
+Mon, 28 Aug 2023 14:25:14 GMT
+
+_Version update only_
## 3.14.0
Thu, 10 Aug 2023 13:56:44 GMT
diff --git a/plugins/browser-plugin-ecommerce/CHANGELOG.json b/plugins/browser-plugin-ecommerce/CHANGELOG.json
index 23a34d735..f5f051a63 100644
--- a/plugins/browser-plugin-ecommerce/CHANGELOG.json
+++ b/plugins/browser-plugin-ecommerce/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-ecommerce",
"entries": [
+ {
+ "version": "3.15.0",
+ "tag": "@snowplow/browser-plugin-ecommerce_v3.15.0",
+ "date": "Mon, 28 Aug 2023 14:25:14 GMT",
+ "comments": {}
+ },
{
"version": "3.14.0",
"tag": "@snowplow/browser-plugin-ecommerce_v3.14.0",
diff --git a/plugins/browser-plugin-ecommerce/CHANGELOG.md b/plugins/browser-plugin-ecommerce/CHANGELOG.md
index fbee898a3..4d4c40cd5 100644
--- a/plugins/browser-plugin-ecommerce/CHANGELOG.md
+++ b/plugins/browser-plugin-ecommerce/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-ecommerce
-This log was last generated on Thu, 10 Aug 2023 13:56:44 GMT and should not be manually modified.
+This log was last generated on Mon, 28 Aug 2023 14:25:14 GMT and should not be manually modified.
+
+## 3.15.0
+Mon, 28 Aug 2023 14:25:14 GMT
+
+_Version update only_
## 3.14.0
Thu, 10 Aug 2023 13:56:44 GMT
diff --git a/plugins/browser-plugin-enhanced-consent/CHANGELOG.json b/plugins/browser-plugin-enhanced-consent/CHANGELOG.json
index dc9aa0294..116520065 100644
--- a/plugins/browser-plugin-enhanced-consent/CHANGELOG.json
+++ b/plugins/browser-plugin-enhanced-consent/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-enhanced-consent",
"entries": [
+ {
+ "version": "3.15.0",
+ "tag": "@snowplow/browser-plugin-enhanced-consent_v3.15.0",
+ "date": "Mon, 28 Aug 2023 14:25:14 GMT",
+ "comments": {}
+ },
{
"version": "3.14.0",
"tag": "@snowplow/browser-plugin-enhanced-consent_v3.14.0",
diff --git a/plugins/browser-plugin-enhanced-consent/CHANGELOG.md b/plugins/browser-plugin-enhanced-consent/CHANGELOG.md
index 27ead6d8f..8e2ca61f7 100644
--- a/plugins/browser-plugin-enhanced-consent/CHANGELOG.md
+++ b/plugins/browser-plugin-enhanced-consent/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-enhanced-consent
-This log was last generated on Thu, 10 Aug 2023 13:56:44 GMT and should not be manually modified.
+This log was last generated on Mon, 28 Aug 2023 14:25:14 GMT and should not be manually modified.
+
+## 3.15.0
+Mon, 28 Aug 2023 14:25:14 GMT
+
+_Version update only_
## 3.14.0
Thu, 10 Aug 2023 13:56:44 GMT
diff --git a/plugins/browser-plugin-enhanced-ecommerce/CHANGELOG.json b/plugins/browser-plugin-enhanced-ecommerce/CHANGELOG.json
index ca272cd75..6f539f919 100644
--- a/plugins/browser-plugin-enhanced-ecommerce/CHANGELOG.json
+++ b/plugins/browser-plugin-enhanced-ecommerce/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-enhanced-ecommerce",
"entries": [
+ {
+ "version": "3.15.0",
+ "tag": "@snowplow/browser-plugin-enhanced-ecommerce_v3.15.0",
+ "date": "Mon, 28 Aug 2023 14:25:14 GMT",
+ "comments": {}
+ },
{
"version": "3.14.0",
"tag": "@snowplow/browser-plugin-enhanced-ecommerce_v3.14.0",
diff --git a/plugins/browser-plugin-enhanced-ecommerce/CHANGELOG.md b/plugins/browser-plugin-enhanced-ecommerce/CHANGELOG.md
index 2a9e66daf..83bd91a9c 100644
--- a/plugins/browser-plugin-enhanced-ecommerce/CHANGELOG.md
+++ b/plugins/browser-plugin-enhanced-ecommerce/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-enhanced-ecommerce
-This log was last generated on Thu, 10 Aug 2023 13:56:44 GMT and should not be manually modified.
+This log was last generated on Mon, 28 Aug 2023 14:25:14 GMT and should not be manually modified.
+
+## 3.15.0
+Mon, 28 Aug 2023 14:25:14 GMT
+
+_Version update only_
## 3.14.0
Thu, 10 Aug 2023 13:56:44 GMT
diff --git a/plugins/browser-plugin-error-tracking/CHANGELOG.json b/plugins/browser-plugin-error-tracking/CHANGELOG.json
index 65c2d6558..7557d2fe7 100644
--- a/plugins/browser-plugin-error-tracking/CHANGELOG.json
+++ b/plugins/browser-plugin-error-tracking/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-error-tracking",
"entries": [
+ {
+ "version": "3.15.0",
+ "tag": "@snowplow/browser-plugin-error-tracking_v3.15.0",
+ "date": "Mon, 28 Aug 2023 14:25:14 GMT",
+ "comments": {}
+ },
{
"version": "3.14.0",
"tag": "@snowplow/browser-plugin-error-tracking_v3.14.0",
diff --git a/plugins/browser-plugin-error-tracking/CHANGELOG.md b/plugins/browser-plugin-error-tracking/CHANGELOG.md
index 9d0af70b8..3324e0a57 100644
--- a/plugins/browser-plugin-error-tracking/CHANGELOG.md
+++ b/plugins/browser-plugin-error-tracking/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-error-tracking
-This log was last generated on Thu, 10 Aug 2023 13:56:44 GMT and should not be manually modified.
+This log was last generated on Mon, 28 Aug 2023 14:25:14 GMT and should not be manually modified.
+
+## 3.15.0
+Mon, 28 Aug 2023 14:25:14 GMT
+
+_Version update only_
## 3.14.0
Thu, 10 Aug 2023 13:56:44 GMT
diff --git a/plugins/browser-plugin-form-tracking/CHANGELOG.json b/plugins/browser-plugin-form-tracking/CHANGELOG.json
index 0d264cd96..a317c0d11 100644
--- a/plugins/browser-plugin-form-tracking/CHANGELOG.json
+++ b/plugins/browser-plugin-form-tracking/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-form-tracking",
"entries": [
+ {
+ "version": "3.15.0",
+ "tag": "@snowplow/browser-plugin-form-tracking_v3.15.0",
+ "date": "Mon, 28 Aug 2023 14:25:14 GMT",
+ "comments": {}
+ },
{
"version": "3.14.0",
"tag": "@snowplow/browser-plugin-form-tracking_v3.14.0",
diff --git a/plugins/browser-plugin-form-tracking/CHANGELOG.md b/plugins/browser-plugin-form-tracking/CHANGELOG.md
index 2b54eefc2..56d0e56fa 100644
--- a/plugins/browser-plugin-form-tracking/CHANGELOG.md
+++ b/plugins/browser-plugin-form-tracking/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-form-tracking
-This log was last generated on Thu, 10 Aug 2023 13:56:44 GMT and should not be manually modified.
+This log was last generated on Mon, 28 Aug 2023 14:25:14 GMT and should not be manually modified.
+
+## 3.15.0
+Mon, 28 Aug 2023 14:25:14 GMT
+
+_Version update only_
## 3.14.0
Thu, 10 Aug 2023 13:56:44 GMT
diff --git a/plugins/browser-plugin-ga-cookies/CHANGELOG.json b/plugins/browser-plugin-ga-cookies/CHANGELOG.json
index 3fcabfa99..09043257b 100644
--- a/plugins/browser-plugin-ga-cookies/CHANGELOG.json
+++ b/plugins/browser-plugin-ga-cookies/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-ga-cookies",
"entries": [
+ {
+ "version": "3.15.0",
+ "tag": "@snowplow/browser-plugin-ga-cookies_v3.15.0",
+ "date": "Mon, 28 Aug 2023 14:25:14 GMT",
+ "comments": {}
+ },
{
"version": "3.14.0",
"tag": "@snowplow/browser-plugin-ga-cookies_v3.14.0",
diff --git a/plugins/browser-plugin-ga-cookies/CHANGELOG.md b/plugins/browser-plugin-ga-cookies/CHANGELOG.md
index ea72d29c5..566398dfc 100644
--- a/plugins/browser-plugin-ga-cookies/CHANGELOG.md
+++ b/plugins/browser-plugin-ga-cookies/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-ga-cookies
-This log was last generated on Thu, 10 Aug 2023 13:56:44 GMT and should not be manually modified.
+This log was last generated on Mon, 28 Aug 2023 14:25:14 GMT and should not be manually modified.
+
+## 3.15.0
+Mon, 28 Aug 2023 14:25:14 GMT
+
+_Version update only_
## 3.14.0
Thu, 10 Aug 2023 13:56:44 GMT
diff --git a/plugins/browser-plugin-geolocation/CHANGELOG.json b/plugins/browser-plugin-geolocation/CHANGELOG.json
index 41d468b93..2a51c5b3b 100644
--- a/plugins/browser-plugin-geolocation/CHANGELOG.json
+++ b/plugins/browser-plugin-geolocation/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-geolocation",
"entries": [
+ {
+ "version": "3.15.0",
+ "tag": "@snowplow/browser-plugin-geolocation_v3.15.0",
+ "date": "Mon, 28 Aug 2023 14:25:14 GMT",
+ "comments": {}
+ },
{
"version": "3.14.0",
"tag": "@snowplow/browser-plugin-geolocation_v3.14.0",
diff --git a/plugins/browser-plugin-geolocation/CHANGELOG.md b/plugins/browser-plugin-geolocation/CHANGELOG.md
index adc5c0208..5b8978723 100644
--- a/plugins/browser-plugin-geolocation/CHANGELOG.md
+++ b/plugins/browser-plugin-geolocation/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-geolocation
-This log was last generated on Thu, 10 Aug 2023 13:56:44 GMT and should not be manually modified.
+This log was last generated on Mon, 28 Aug 2023 14:25:14 GMT and should not be manually modified.
+
+## 3.15.0
+Mon, 28 Aug 2023 14:25:14 GMT
+
+_Version update only_
## 3.14.0
Thu, 10 Aug 2023 13:56:44 GMT
diff --git a/plugins/browser-plugin-link-click-tracking/CHANGELOG.json b/plugins/browser-plugin-link-click-tracking/CHANGELOG.json
index 5f444eb27..d8e645110 100644
--- a/plugins/browser-plugin-link-click-tracking/CHANGELOG.json
+++ b/plugins/browser-plugin-link-click-tracking/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-link-click-tracking",
"entries": [
+ {
+ "version": "3.15.0",
+ "tag": "@snowplow/browser-plugin-link-click-tracking_v3.15.0",
+ "date": "Mon, 28 Aug 2023 14:25:14 GMT",
+ "comments": {}
+ },
{
"version": "3.14.0",
"tag": "@snowplow/browser-plugin-link-click-tracking_v3.14.0",
diff --git a/plugins/browser-plugin-link-click-tracking/CHANGELOG.md b/plugins/browser-plugin-link-click-tracking/CHANGELOG.md
index dc85537cd..9341ba145 100644
--- a/plugins/browser-plugin-link-click-tracking/CHANGELOG.md
+++ b/plugins/browser-plugin-link-click-tracking/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-link-click-tracking
-This log was last generated on Thu, 10 Aug 2023 13:56:44 GMT and should not be manually modified.
+This log was last generated on Mon, 28 Aug 2023 14:25:14 GMT and should not be manually modified.
+
+## 3.15.0
+Mon, 28 Aug 2023 14:25:14 GMT
+
+_Version update only_
## 3.14.0
Thu, 10 Aug 2023 13:56:44 GMT
diff --git a/plugins/browser-plugin-media-tracking/CHANGELOG.json b/plugins/browser-plugin-media-tracking/CHANGELOG.json
index 52db5dbe6..0a71c8eb2 100644
--- a/plugins/browser-plugin-media-tracking/CHANGELOG.json
+++ b/plugins/browser-plugin-media-tracking/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-media-tracking",
"entries": [
+ {
+ "version": "3.15.0",
+ "tag": "@snowplow/browser-plugin-media-tracking_v3.15.0",
+ "date": "Mon, 28 Aug 2023 14:25:14 GMT",
+ "comments": {}
+ },
{
"version": "3.14.0",
"tag": "@snowplow/browser-plugin-media-tracking_v3.14.0",
diff --git a/plugins/browser-plugin-media-tracking/CHANGELOG.md b/plugins/browser-plugin-media-tracking/CHANGELOG.md
index 89906c860..571ab38b1 100644
--- a/plugins/browser-plugin-media-tracking/CHANGELOG.md
+++ b/plugins/browser-plugin-media-tracking/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-media-tracking
-This log was last generated on Thu, 10 Aug 2023 13:56:44 GMT and should not be manually modified.
+This log was last generated on Mon, 28 Aug 2023 14:25:14 GMT and should not be manually modified.
+
+## 3.15.0
+Mon, 28 Aug 2023 14:25:14 GMT
+
+_Version update only_
## 3.14.0
Thu, 10 Aug 2023 13:56:44 GMT
diff --git a/plugins/browser-plugin-media/CHANGELOG.json b/plugins/browser-plugin-media/CHANGELOG.json
index 490cf8835..7cd56742f 100644
--- a/plugins/browser-plugin-media/CHANGELOG.json
+++ b/plugins/browser-plugin-media/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-media",
"entries": [
+ {
+ "version": "3.15.0",
+ "tag": "@snowplow/browser-plugin-media_v3.15.0",
+ "date": "Mon, 28 Aug 2023 14:25:14 GMT",
+ "comments": {}
+ },
{
"version": "3.14.0",
"tag": "@snowplow/browser-plugin-media_v3.14.0",
diff --git a/plugins/browser-plugin-media/CHANGELOG.md b/plugins/browser-plugin-media/CHANGELOG.md
index 77a4f1977..fea228a00 100644
--- a/plugins/browser-plugin-media/CHANGELOG.md
+++ b/plugins/browser-plugin-media/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-media
-This log was last generated on Thu, 10 Aug 2023 13:56:44 GMT and should not be manually modified.
+This log was last generated on Mon, 28 Aug 2023 14:25:14 GMT and should not be manually modified.
+
+## 3.15.0
+Mon, 28 Aug 2023 14:25:14 GMT
+
+_Version update only_
## 3.14.0
Thu, 10 Aug 2023 13:56:44 GMT
diff --git a/plugins/browser-plugin-optimizely-x/CHANGELOG.json b/plugins/browser-plugin-optimizely-x/CHANGELOG.json
index f5990a50e..85bc0f0dc 100644
--- a/plugins/browser-plugin-optimizely-x/CHANGELOG.json
+++ b/plugins/browser-plugin-optimizely-x/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-optimizely-x",
"entries": [
+ {
+ "version": "3.15.0",
+ "tag": "@snowplow/browser-plugin-optimizely-x_v3.15.0",
+ "date": "Mon, 28 Aug 2023 14:25:14 GMT",
+ "comments": {}
+ },
{
"version": "3.14.0",
"tag": "@snowplow/browser-plugin-optimizely-x_v3.14.0",
diff --git a/plugins/browser-plugin-optimizely-x/CHANGELOG.md b/plugins/browser-plugin-optimizely-x/CHANGELOG.md
index aef73e9df..5b50231b8 100644
--- a/plugins/browser-plugin-optimizely-x/CHANGELOG.md
+++ b/plugins/browser-plugin-optimizely-x/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-optimizely-x
-This log was last generated on Thu, 10 Aug 2023 13:56:44 GMT and should not be manually modified.
+This log was last generated on Mon, 28 Aug 2023 14:25:14 GMT and should not be manually modified.
+
+## 3.15.0
+Mon, 28 Aug 2023 14:25:14 GMT
+
+_Version update only_
## 3.14.0
Thu, 10 Aug 2023 13:56:44 GMT
diff --git a/plugins/browser-plugin-optimizely/CHANGELOG.json b/plugins/browser-plugin-optimizely/CHANGELOG.json
index 9a60d00af..95360a9e9 100644
--- a/plugins/browser-plugin-optimizely/CHANGELOG.json
+++ b/plugins/browser-plugin-optimizely/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-optimizely",
"entries": [
+ {
+ "version": "3.15.0",
+ "tag": "@snowplow/browser-plugin-optimizely_v3.15.0",
+ "date": "Mon, 28 Aug 2023 14:25:14 GMT",
+ "comments": {}
+ },
{
"version": "3.14.0",
"tag": "@snowplow/browser-plugin-optimizely_v3.14.0",
diff --git a/plugins/browser-plugin-optimizely/CHANGELOG.md b/plugins/browser-plugin-optimizely/CHANGELOG.md
index f93d75543..ec192ca22 100644
--- a/plugins/browser-plugin-optimizely/CHANGELOG.md
+++ b/plugins/browser-plugin-optimizely/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-optimizely
-This log was last generated on Thu, 10 Aug 2023 13:56:44 GMT and should not be manually modified.
+This log was last generated on Mon, 28 Aug 2023 14:25:14 GMT and should not be manually modified.
+
+## 3.15.0
+Mon, 28 Aug 2023 14:25:14 GMT
+
+_Version update only_
## 3.14.0
Thu, 10 Aug 2023 13:56:44 GMT
diff --git a/plugins/browser-plugin-performance-navigation-timing/CHANGELOG.json b/plugins/browser-plugin-performance-navigation-timing/CHANGELOG.json
index 9fa705c7b..79a81ade2 100644
--- a/plugins/browser-plugin-performance-navigation-timing/CHANGELOG.json
+++ b/plugins/browser-plugin-performance-navigation-timing/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-performance-navigation-timing",
"entries": [
+ {
+ "version": "3.15.0",
+ "tag": "@snowplow/browser-plugin-performance-navigation-timing_v3.15.0",
+ "date": "Mon, 28 Aug 2023 14:25:14 GMT",
+ "comments": {}
+ },
{
"version": "3.14.0",
"tag": "@snowplow/browser-plugin-performance-navigation-timing_v3.14.0",
diff --git a/plugins/browser-plugin-performance-navigation-timing/CHANGELOG.md b/plugins/browser-plugin-performance-navigation-timing/CHANGELOG.md
index 9f89391c2..518d5611a 100644
--- a/plugins/browser-plugin-performance-navigation-timing/CHANGELOG.md
+++ b/plugins/browser-plugin-performance-navigation-timing/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-performance-navigation-timing
-This log was last generated on Thu, 10 Aug 2023 13:56:44 GMT and should not be manually modified.
+This log was last generated on Mon, 28 Aug 2023 14:25:14 GMT and should not be manually modified.
+
+## 3.15.0
+Mon, 28 Aug 2023 14:25:14 GMT
+
+_Version update only_
## 3.14.0
Thu, 10 Aug 2023 13:56:44 GMT
diff --git a/plugins/browser-plugin-performance-timing/CHANGELOG.json b/plugins/browser-plugin-performance-timing/CHANGELOG.json
index f465c90bc..68b28c5d8 100644
--- a/plugins/browser-plugin-performance-timing/CHANGELOG.json
+++ b/plugins/browser-plugin-performance-timing/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-performance-timing",
"entries": [
+ {
+ "version": "3.15.0",
+ "tag": "@snowplow/browser-plugin-performance-timing_v3.15.0",
+ "date": "Mon, 28 Aug 2023 14:25:14 GMT",
+ "comments": {}
+ },
{
"version": "3.14.0",
"tag": "@snowplow/browser-plugin-performance-timing_v3.14.0",
diff --git a/plugins/browser-plugin-performance-timing/CHANGELOG.md b/plugins/browser-plugin-performance-timing/CHANGELOG.md
index 26db20165..b25cda7f9 100644
--- a/plugins/browser-plugin-performance-timing/CHANGELOG.md
+++ b/plugins/browser-plugin-performance-timing/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-performance-timing
-This log was last generated on Thu, 10 Aug 2023 13:56:44 GMT and should not be manually modified.
+This log was last generated on Mon, 28 Aug 2023 14:25:14 GMT and should not be manually modified.
+
+## 3.15.0
+Mon, 28 Aug 2023 14:25:14 GMT
+
+_Version update only_
## 3.14.0
Thu, 10 Aug 2023 13:56:44 GMT
diff --git a/plugins/browser-plugin-privacy-sandbox/CHANGELOG.json b/plugins/browser-plugin-privacy-sandbox/CHANGELOG.json
index c4caee8ae..4bfeeb66f 100644
--- a/plugins/browser-plugin-privacy-sandbox/CHANGELOG.json
+++ b/plugins/browser-plugin-privacy-sandbox/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-privacy-sandbox",
"entries": [
+ {
+ "version": "3.15.0",
+ "tag": "@snowplow/browser-plugin-privacy-sandbox_v3.15.0",
+ "date": "Mon, 28 Aug 2023 14:25:14 GMT",
+ "comments": {}
+ },
{
"version": "3.14.0",
"tag": "@snowplow/browser-plugin-privacy-sandbox_v3.14.0",
diff --git a/plugins/browser-plugin-privacy-sandbox/CHANGELOG.md b/plugins/browser-plugin-privacy-sandbox/CHANGELOG.md
index b2535d83f..6812b6bd7 100644
--- a/plugins/browser-plugin-privacy-sandbox/CHANGELOG.md
+++ b/plugins/browser-plugin-privacy-sandbox/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-privacy-sandbox
-This log was last generated on Thu, 10 Aug 2023 13:56:44 GMT and should not be manually modified.
+This log was last generated on Mon, 28 Aug 2023 14:25:14 GMT and should not be manually modified.
+
+## 3.15.0
+Mon, 28 Aug 2023 14:25:14 GMT
+
+_Version update only_
## 3.14.0
Thu, 10 Aug 2023 13:56:44 GMT
diff --git a/plugins/browser-plugin-site-tracking/CHANGELOG.json b/plugins/browser-plugin-site-tracking/CHANGELOG.json
index cc6e5dcef..b20a2aa59 100644
--- a/plugins/browser-plugin-site-tracking/CHANGELOG.json
+++ b/plugins/browser-plugin-site-tracking/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-site-tracking",
"entries": [
+ {
+ "version": "3.15.0",
+ "tag": "@snowplow/browser-plugin-site-tracking_v3.15.0",
+ "date": "Mon, 28 Aug 2023 14:25:14 GMT",
+ "comments": {}
+ },
{
"version": "3.14.0",
"tag": "@snowplow/browser-plugin-site-tracking_v3.14.0",
diff --git a/plugins/browser-plugin-site-tracking/CHANGELOG.md b/plugins/browser-plugin-site-tracking/CHANGELOG.md
index c2e6813c3..ce546eeba 100644
--- a/plugins/browser-plugin-site-tracking/CHANGELOG.md
+++ b/plugins/browser-plugin-site-tracking/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-site-tracking
-This log was last generated on Thu, 10 Aug 2023 13:56:44 GMT and should not be manually modified.
+This log was last generated on Mon, 28 Aug 2023 14:25:14 GMT and should not be manually modified.
+
+## 3.15.0
+Mon, 28 Aug 2023 14:25:14 GMT
+
+_Version update only_
## 3.14.0
Thu, 10 Aug 2023 13:56:44 GMT
diff --git a/plugins/browser-plugin-snowplow-ecommerce/CHANGELOG.json b/plugins/browser-plugin-snowplow-ecommerce/CHANGELOG.json
index 68d46e75c..d463c17dc 100644
--- a/plugins/browser-plugin-snowplow-ecommerce/CHANGELOG.json
+++ b/plugins/browser-plugin-snowplow-ecommerce/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-snowplow-ecommerce",
"entries": [
+ {
+ "version": "3.15.0",
+ "tag": "@snowplow/browser-plugin-snowplow-ecommerce_v3.15.0",
+ "date": "Mon, 28 Aug 2023 14:25:14 GMT",
+ "comments": {}
+ },
{
"version": "3.14.0",
"tag": "@snowplow/browser-plugin-snowplow-ecommerce_v3.14.0",
diff --git a/plugins/browser-plugin-snowplow-ecommerce/CHANGELOG.md b/plugins/browser-plugin-snowplow-ecommerce/CHANGELOG.md
index fa03076f5..853c98133 100644
--- a/plugins/browser-plugin-snowplow-ecommerce/CHANGELOG.md
+++ b/plugins/browser-plugin-snowplow-ecommerce/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-snowplow-ecommerce
-This log was last generated on Thu, 10 Aug 2023 13:56:44 GMT and should not be manually modified.
+This log was last generated on Mon, 28 Aug 2023 14:25:14 GMT and should not be manually modified.
+
+## 3.15.0
+Mon, 28 Aug 2023 14:25:14 GMT
+
+_Version update only_
## 3.14.0
Thu, 10 Aug 2023 13:56:44 GMT
diff --git a/plugins/browser-plugin-timezone/CHANGELOG.json b/plugins/browser-plugin-timezone/CHANGELOG.json
index 98d60b891..3357152a7 100644
--- a/plugins/browser-plugin-timezone/CHANGELOG.json
+++ b/plugins/browser-plugin-timezone/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-timezone",
"entries": [
+ {
+ "version": "3.15.0",
+ "tag": "@snowplow/browser-plugin-timezone_v3.15.0",
+ "date": "Mon, 28 Aug 2023 14:25:14 GMT",
+ "comments": {}
+ },
{
"version": "3.14.0",
"tag": "@snowplow/browser-plugin-timezone_v3.14.0",
diff --git a/plugins/browser-plugin-timezone/CHANGELOG.md b/plugins/browser-plugin-timezone/CHANGELOG.md
index f0317d67d..e84d66de4 100644
--- a/plugins/browser-plugin-timezone/CHANGELOG.md
+++ b/plugins/browser-plugin-timezone/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-timezone
-This log was last generated on Thu, 10 Aug 2023 13:56:44 GMT and should not be manually modified.
+This log was last generated on Mon, 28 Aug 2023 14:25:14 GMT and should not be manually modified.
+
+## 3.15.0
+Mon, 28 Aug 2023 14:25:14 GMT
+
+_Version update only_
## 3.14.0
Thu, 10 Aug 2023 13:56:44 GMT
diff --git a/plugins/browser-plugin-vimeo-tracking/CHANGELOG.json b/plugins/browser-plugin-vimeo-tracking/CHANGELOG.json
index c4082842d..862c9e933 100644
--- a/plugins/browser-plugin-vimeo-tracking/CHANGELOG.json
+++ b/plugins/browser-plugin-vimeo-tracking/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-vimeo-tracking",
"entries": [
+ {
+ "version": "3.15.0",
+ "tag": "@snowplow/browser-plugin-vimeo-tracking_v3.15.0",
+ "date": "Mon, 28 Aug 2023 14:25:14 GMT",
+ "comments": {}
+ },
{
"version": "3.14.0",
"tag": "@snowplow/browser-plugin-vimeo-tracking_v3.14.0",
diff --git a/plugins/browser-plugin-vimeo-tracking/CHANGELOG.md b/plugins/browser-plugin-vimeo-tracking/CHANGELOG.md
index 913d3f00d..aa0b99919 100644
--- a/plugins/browser-plugin-vimeo-tracking/CHANGELOG.md
+++ b/plugins/browser-plugin-vimeo-tracking/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-vimeo-tracking
-This log was last generated on Thu, 10 Aug 2023 13:56:44 GMT and should not be manually modified.
+This log was last generated on Mon, 28 Aug 2023 14:25:14 GMT and should not be manually modified.
+
+## 3.15.0
+Mon, 28 Aug 2023 14:25:14 GMT
+
+_Version update only_
## 3.14.0
Thu, 10 Aug 2023 13:56:44 GMT
diff --git a/plugins/browser-plugin-web-vitals/CHANGELOG.json b/plugins/browser-plugin-web-vitals/CHANGELOG.json
index 2c521de4a..1ad602765 100644
--- a/plugins/browser-plugin-web-vitals/CHANGELOG.json
+++ b/plugins/browser-plugin-web-vitals/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-web-vitals",
"entries": [
+ {
+ "version": "3.15.0",
+ "tag": "@snowplow/browser-plugin-web-vitals_v3.15.0",
+ "date": "Mon, 28 Aug 2023 14:25:14 GMT",
+ "comments": {}
+ },
{
"version": "3.14.0",
"tag": "@snowplow/browser-plugin-web-vitals_v3.14.0",
diff --git a/plugins/browser-plugin-web-vitals/CHANGELOG.md b/plugins/browser-plugin-web-vitals/CHANGELOG.md
index c2a3d963a..eac0845f1 100644
--- a/plugins/browser-plugin-web-vitals/CHANGELOG.md
+++ b/plugins/browser-plugin-web-vitals/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-web-vitals
-This log was last generated on Thu, 10 Aug 2023 13:56:44 GMT and should not be manually modified.
+This log was last generated on Mon, 28 Aug 2023 14:25:14 GMT and should not be manually modified.
+
+## 3.15.0
+Mon, 28 Aug 2023 14:25:14 GMT
+
+_Version update only_
## 3.14.0
Thu, 10 Aug 2023 13:56:44 GMT
diff --git a/plugins/browser-plugin-youtube-tracking/CHANGELOG.json b/plugins/browser-plugin-youtube-tracking/CHANGELOG.json
index 59aa8e7fb..908c2d615 100644
--- a/plugins/browser-plugin-youtube-tracking/CHANGELOG.json
+++ b/plugins/browser-plugin-youtube-tracking/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-youtube-tracking",
"entries": [
+ {
+ "version": "3.15.0",
+ "tag": "@snowplow/browser-plugin-youtube-tracking_v3.15.0",
+ "date": "Mon, 28 Aug 2023 14:25:14 GMT",
+ "comments": {}
+ },
{
"version": "3.14.0",
"tag": "@snowplow/browser-plugin-youtube-tracking_v3.14.0",
diff --git a/plugins/browser-plugin-youtube-tracking/CHANGELOG.md b/plugins/browser-plugin-youtube-tracking/CHANGELOG.md
index ab4363782..bb353b41b 100644
--- a/plugins/browser-plugin-youtube-tracking/CHANGELOG.md
+++ b/plugins/browser-plugin-youtube-tracking/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-youtube-tracking
-This log was last generated on Thu, 10 Aug 2023 13:56:44 GMT and should not be manually modified.
+This log was last generated on Mon, 28 Aug 2023 14:25:14 GMT and should not be manually modified.
+
+## 3.15.0
+Mon, 28 Aug 2023 14:25:14 GMT
+
+_Version update only_
## 3.14.0
Thu, 10 Aug 2023 13:56:44 GMT
diff --git a/trackers/browser-tracker/CHANGELOG.json b/trackers/browser-tracker/CHANGELOG.json
index 800b34d5c..d648da0bb 100644
--- a/trackers/browser-tracker/CHANGELOG.json
+++ b/trackers/browser-tracker/CHANGELOG.json
@@ -1,6 +1,18 @@
{
"name": "@snowplow/browser-tracker",
"entries": [
+ {
+ "version": "3.15.0",
+ "tag": "@snowplow/browser-tracker_v3.15.0",
+ "date": "Mon, 28 Aug 2023 14:25:14 GMT",
+ "comments": {
+ "none": [
+ {
+ "comment": "Add idService option"
+ }
+ ]
+ }
+ },
{
"version": "3.14.0",
"tag": "@snowplow/browser-tracker_v3.14.0",
diff --git a/trackers/browser-tracker/CHANGELOG.md b/trackers/browser-tracker/CHANGELOG.md
index e3be79aec..babcf4706 100644
--- a/trackers/browser-tracker/CHANGELOG.md
+++ b/trackers/browser-tracker/CHANGELOG.md
@@ -1,6 +1,13 @@
# Change Log - @snowplow/browser-tracker
-This log was last generated on Thu, 10 Aug 2023 13:56:44 GMT and should not be manually modified.
+This log was last generated on Mon, 28 Aug 2023 14:25:14 GMT and should not be manually modified.
+
+## 3.15.0
+Mon, 28 Aug 2023 14:25:14 GMT
+
+### Updates
+
+- Add idService option
## 3.14.0
Thu, 10 Aug 2023 13:56:44 GMT
diff --git a/trackers/javascript-tracker/CHANGELOG.json b/trackers/javascript-tracker/CHANGELOG.json
index 24abe60ff..3bf9eb3a5 100644
--- a/trackers/javascript-tracker/CHANGELOG.json
+++ b/trackers/javascript-tracker/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/javascript-tracker",
"entries": [
+ {
+ "version": "3.15.0",
+ "tag": "@snowplow/javascript-tracker_v3.15.0",
+ "date": "Mon, 28 Aug 2023 14:25:14 GMT",
+ "comments": {}
+ },
{
"version": "3.14.0",
"tag": "@snowplow/javascript-tracker_v3.14.0",
diff --git a/trackers/javascript-tracker/CHANGELOG.md b/trackers/javascript-tracker/CHANGELOG.md
index 29eabe18d..aab9bc81e 100644
--- a/trackers/javascript-tracker/CHANGELOG.md
+++ b/trackers/javascript-tracker/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/javascript-tracker
-This log was last generated on Thu, 10 Aug 2023 13:56:44 GMT and should not be manually modified.
+This log was last generated on Mon, 28 Aug 2023 14:25:14 GMT and should not be manually modified.
+
+## 3.15.0
+Mon, 28 Aug 2023 14:25:14 GMT
+
+_Version update only_
## 3.14.0
Thu, 10 Aug 2023 13:56:44 GMT
diff --git a/trackers/node-tracker/CHANGELOG.json b/trackers/node-tracker/CHANGELOG.json
index b0e529a11..0619ba575 100644
--- a/trackers/node-tracker/CHANGELOG.json
+++ b/trackers/node-tracker/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/node-tracker",
"entries": [
+ {
+ "version": "3.15.0",
+ "tag": "@snowplow/node-tracker_v3.15.0",
+ "date": "Mon, 28 Aug 2023 14:25:14 GMT",
+ "comments": {}
+ },
{
"version": "3.14.0",
"tag": "@snowplow/node-tracker_v3.14.0",
diff --git a/trackers/node-tracker/CHANGELOG.md b/trackers/node-tracker/CHANGELOG.md
index 5567058c7..21e1f5a6f 100644
--- a/trackers/node-tracker/CHANGELOG.md
+++ b/trackers/node-tracker/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/node-tracker
-This log was last generated on Thu, 10 Aug 2023 13:56:44 GMT and should not be manually modified.
+This log was last generated on Mon, 28 Aug 2023 14:25:14 GMT and should not be manually modified.
+
+## 3.15.0
+Mon, 28 Aug 2023 14:25:14 GMT
+
+_Version update only_
## 3.14.0
Thu, 10 Aug 2023 13:56:44 GMT
From d337cd36fc5696e51ab057579bfed8c82b8ab5a6 Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Mon, 28 Aug 2023 14:25:14 +0000
Subject: [PATCH 014/341] Bump versions [skip ci]
---
common/config/rush/version-policies.json | 2 +-
libraries/browser-tracker-core/package.json | 2 +-
libraries/tracker-core/package.json | 2 +-
plugins/browser-plugin-ad-tracking/package.json | 4 ++--
plugins/browser-plugin-browser-features/package.json | 4 ++--
plugins/browser-plugin-client-hints/package.json | 4 ++--
plugins/browser-plugin-consent/package.json | 4 ++--
plugins/browser-plugin-debugger/package.json | 4 ++--
plugins/browser-plugin-ecommerce/package.json | 4 ++--
plugins/browser-plugin-enhanced-consent/package.json | 4 ++--
plugins/browser-plugin-enhanced-ecommerce/package.json | 4 ++--
plugins/browser-plugin-error-tracking/package.json | 4 ++--
plugins/browser-plugin-form-tracking/package.json | 4 ++--
plugins/browser-plugin-ga-cookies/package.json | 4 ++--
plugins/browser-plugin-geolocation/package.json | 4 ++--
plugins/browser-plugin-link-click-tracking/package.json | 4 ++--
plugins/browser-plugin-media-tracking/package.json | 4 ++--
plugins/browser-plugin-media/package.json | 4 ++--
plugins/browser-plugin-optimizely-x/package.json | 4 ++--
plugins/browser-plugin-optimizely/package.json | 4 ++--
.../browser-plugin-performance-navigation-timing/package.json | 4 ++--
plugins/browser-plugin-performance-timing/package.json | 4 ++--
plugins/browser-plugin-privacy-sandbox/package.json | 4 ++--
plugins/browser-plugin-site-tracking/package.json | 4 ++--
plugins/browser-plugin-snowplow-ecommerce/package.json | 4 ++--
plugins/browser-plugin-timezone/package.json | 4 ++--
plugins/browser-plugin-vimeo-tracking/package.json | 4 ++--
plugins/browser-plugin-web-vitals/package.json | 4 ++--
plugins/browser-plugin-youtube-tracking/package.json | 4 ++--
trackers/browser-tracker/package.json | 2 +-
trackers/javascript-tracker/package.json | 2 +-
trackers/node-tracker/package.json | 2 +-
32 files changed, 58 insertions(+), 58 deletions(-)
diff --git a/common/config/rush/version-policies.json b/common/config/rush/version-policies.json
index 09a6ad8da..0553e91c8 100644
--- a/common/config/rush/version-policies.json
+++ b/common/config/rush/version-policies.json
@@ -33,7 +33,7 @@
* in the current branch. When bumping versions, Rush uses this to determine the next version.
* (The "version" field in package.json is NOT considered.)
*/
- "version": "3.14.0",
+ "version": "3.15.0",
/**
* (Required) The type of bump that will be performed when publishing the next release.
diff --git a/libraries/browser-tracker-core/package.json b/libraries/browser-tracker-core/package.json
index 370920f23..2f4d8b36f 100644
--- a/libraries/browser-tracker-core/package.json
+++ b/libraries/browser-tracker-core/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-tracker-core",
- "version": "3.14.0",
+ "version": "3.15.0",
"description": "Core functionality for Snowplow Browser trackers",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
diff --git a/libraries/tracker-core/package.json b/libraries/tracker-core/package.json
index 2d845f7b4..129977f8b 100644
--- a/libraries/tracker-core/package.json
+++ b/libraries/tracker-core/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/tracker-core",
- "version": "3.14.0",
+ "version": "3.15.0",
"description": "Core functionality for Snowplow JavaScript trackers",
"keywords": [
"tracking",
diff --git a/plugins/browser-plugin-ad-tracking/package.json b/plugins/browser-plugin-ad-tracking/package.json
index df809efb0..55f199a37 100644
--- a/plugins/browser-plugin-ad-tracking/package.json
+++ b/plugins/browser-plugin-ad-tracking/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-ad-tracking",
- "version": "3.14.0",
+ "version": "3.15.0",
"description": "Ad tracking for Snowplow",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -50,6 +50,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.14.0"
+ "@snowplow/browser-tracker": "~3.15.0"
}
}
diff --git a/plugins/browser-plugin-browser-features/package.json b/plugins/browser-plugin-browser-features/package.json
index 3900dcb3e..99d4ba3a1 100644
--- a/plugins/browser-plugin-browser-features/package.json
+++ b/plugins/browser-plugin-browser-features/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-browser-features",
- "version": "3.14.0",
+ "version": "3.15.0",
"description": "Attaches browser features to Snowplow events",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -48,6 +48,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.14.0"
+ "@snowplow/browser-tracker": "~3.15.0"
}
}
diff --git a/plugins/browser-plugin-client-hints/package.json b/plugins/browser-plugin-client-hints/package.json
index 1ff617309..62e01a71b 100644
--- a/plugins/browser-plugin-client-hints/package.json
+++ b/plugins/browser-plugin-client-hints/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-client-hints",
- "version": "3.14.0",
+ "version": "3.15.0",
"description": "Attaches Client Hints to Snowplow events",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -47,6 +47,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.14.0"
+ "@snowplow/browser-tracker": "~3.15.0"
}
}
diff --git a/plugins/browser-plugin-consent/package.json b/plugins/browser-plugin-consent/package.json
index 2dda1576c..24c02bb2a 100644
--- a/plugins/browser-plugin-consent/package.json
+++ b/plugins/browser-plugin-consent/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-consent",
- "version": "3.14.0",
+ "version": "3.15.0",
"description": "Consent and GDPR data for Snowplow events",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -50,6 +50,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.14.0"
+ "@snowplow/browser-tracker": "~3.15.0"
}
}
diff --git a/plugins/browser-plugin-debugger/package.json b/plugins/browser-plugin-debugger/package.json
index d431bf40e..341bba65b 100644
--- a/plugins/browser-plugin-debugger/package.json
+++ b/plugins/browser-plugin-debugger/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-debugger",
- "version": "3.14.0",
+ "version": "3.15.0",
"description": "Debugger for Snowplow",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -50,6 +50,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.14.0"
+ "@snowplow/browser-tracker": "~3.15.0"
}
}
diff --git a/plugins/browser-plugin-ecommerce/package.json b/plugins/browser-plugin-ecommerce/package.json
index f1aa21a0c..e3b741e9f 100644
--- a/plugins/browser-plugin-ecommerce/package.json
+++ b/plugins/browser-plugin-ecommerce/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-ecommerce",
- "version": "3.14.0",
+ "version": "3.15.0",
"description": "Ecommerce tracking for Snowplow",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -50,6 +50,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.14.0"
+ "@snowplow/browser-tracker": "~3.15.0"
}
}
diff --git a/plugins/browser-plugin-enhanced-consent/package.json b/plugins/browser-plugin-enhanced-consent/package.json
index db0dd4dc4..e35a4892b 100644
--- a/plugins/browser-plugin-enhanced-consent/package.json
+++ b/plugins/browser-plugin-enhanced-consent/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-enhanced-consent",
- "version": "3.14.0",
+ "version": "3.15.0",
"description": "Consent tracking for Snowplow",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
"repository": {
@@ -49,6 +49,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.14.0"
+ "@snowplow/browser-tracker": "~3.15.0"
}
}
diff --git a/plugins/browser-plugin-enhanced-ecommerce/package.json b/plugins/browser-plugin-enhanced-ecommerce/package.json
index 447a3839a..9ef7a7642 100644
--- a/plugins/browser-plugin-enhanced-ecommerce/package.json
+++ b/plugins/browser-plugin-enhanced-ecommerce/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-enhanced-ecommerce",
- "version": "3.14.0",
+ "version": "3.15.0",
"description": "Enhanced Ecommerce tracking for Snowplow",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -50,6 +50,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.14.0"
+ "@snowplow/browser-tracker": "~3.15.0"
}
}
diff --git a/plugins/browser-plugin-error-tracking/package.json b/plugins/browser-plugin-error-tracking/package.json
index 442459188..9a1b82aa6 100644
--- a/plugins/browser-plugin-error-tracking/package.json
+++ b/plugins/browser-plugin-error-tracking/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-error-tracking",
- "version": "3.14.0",
+ "version": "3.15.0",
"description": "Error tracking for Snowplow",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -50,6 +50,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.14.0"
+ "@snowplow/browser-tracker": "~3.15.0"
}
}
diff --git a/plugins/browser-plugin-form-tracking/package.json b/plugins/browser-plugin-form-tracking/package.json
index 791574c52..5a12708dc 100644
--- a/plugins/browser-plugin-form-tracking/package.json
+++ b/plugins/browser-plugin-form-tracking/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-form-tracking",
- "version": "3.14.0",
+ "version": "3.15.0",
"description": "Form tracking for Snowplow",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -48,6 +48,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.14.0"
+ "@snowplow/browser-tracker": "~3.15.0"
}
}
diff --git a/plugins/browser-plugin-ga-cookies/package.json b/plugins/browser-plugin-ga-cookies/package.json
index dbc3d46fe..7e3ac52b2 100644
--- a/plugins/browser-plugin-ga-cookies/package.json
+++ b/plugins/browser-plugin-ga-cookies/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-ga-cookies",
- "version": "3.14.0",
+ "version": "3.15.0",
"description": "Attaches GA cookie data to Snowplow events",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -48,6 +48,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.14.0"
+ "@snowplow/browser-tracker": "~3.15.0"
}
}
diff --git a/plugins/browser-plugin-geolocation/package.json b/plugins/browser-plugin-geolocation/package.json
index 58202d5fb..f675a82a7 100644
--- a/plugins/browser-plugin-geolocation/package.json
+++ b/plugins/browser-plugin-geolocation/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-geolocation",
- "version": "3.14.0",
+ "version": "3.15.0",
"description": "Attaches Geolocation data to Snowplow events",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -48,6 +48,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.14.0"
+ "@snowplow/browser-tracker": "~3.15.0"
}
}
diff --git a/plugins/browser-plugin-link-click-tracking/package.json b/plugins/browser-plugin-link-click-tracking/package.json
index 91946a84d..7893f5819 100644
--- a/plugins/browser-plugin-link-click-tracking/package.json
+++ b/plugins/browser-plugin-link-click-tracking/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-link-click-tracking",
- "version": "3.14.0",
+ "version": "3.15.0",
"description": "Link Click tracking for Snowplow",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -50,6 +50,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.14.0"
+ "@snowplow/browser-tracker": "~3.15.0"
}
}
diff --git a/plugins/browser-plugin-media-tracking/package.json b/plugins/browser-plugin-media-tracking/package.json
index 5689e5735..961eed562 100644
--- a/plugins/browser-plugin-media-tracking/package.json
+++ b/plugins/browser-plugin-media-tracking/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-media-tracking",
- "version": "3.14.0",
+ "version": "3.15.0",
"description": "Audio/Video tracking for Snowplow",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -47,6 +47,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.14.0"
+ "@snowplow/browser-tracker": "~3.15.0"
}
}
diff --git a/plugins/browser-plugin-media/package.json b/plugins/browser-plugin-media/package.json
index 2aea501d0..7ef089062 100644
--- a/plugins/browser-plugin-media/package.json
+++ b/plugins/browser-plugin-media/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-media",
- "version": "3.14.0",
+ "version": "3.15.0",
"description": "Snowplow media tracking",
"homepage": "https://github.com/snowplow/snowplow-javascript-tracker",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -50,6 +50,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.14.0"
+ "@snowplow/browser-tracker": "~3.15.0"
}
}
diff --git a/plugins/browser-plugin-optimizely-x/package.json b/plugins/browser-plugin-optimizely-x/package.json
index edbd2680b..3cc6d1f67 100644
--- a/plugins/browser-plugin-optimizely-x/package.json
+++ b/plugins/browser-plugin-optimizely-x/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-optimizely-x",
- "version": "3.14.0",
+ "version": "3.15.0",
"description": "Attaches OptimizelyX data to Snowplow events",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -48,6 +48,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.14.0"
+ "@snowplow/browser-tracker": "~3.15.0"
}
}
diff --git a/plugins/browser-plugin-optimizely/package.json b/plugins/browser-plugin-optimizely/package.json
index f01fc9c77..e5a6adeb1 100644
--- a/plugins/browser-plugin-optimizely/package.json
+++ b/plugins/browser-plugin-optimizely/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-optimizely",
- "version": "3.14.0",
+ "version": "3.15.0",
"description": "Attaches Optimizely data to Snowplow events",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -48,6 +48,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.14.0"
+ "@snowplow/browser-tracker": "~3.15.0"
}
}
diff --git a/plugins/browser-plugin-performance-navigation-timing/package.json b/plugins/browser-plugin-performance-navigation-timing/package.json
index a4763da6a..988f9aac9 100644
--- a/plugins/browser-plugin-performance-navigation-timing/package.json
+++ b/plugins/browser-plugin-performance-navigation-timing/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-performance-navigation-timing",
- "version": "3.14.0",
+ "version": "3.15.0",
"description": "Attaches Performance Navigation Timing data to Snowplow events",
"homepage": "https://docs.snowplow.io/",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -48,6 +48,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.14.0"
+ "@snowplow/browser-tracker": "~3.15.0"
}
}
diff --git a/plugins/browser-plugin-performance-timing/package.json b/plugins/browser-plugin-performance-timing/package.json
index 735be8d5f..62371fa5b 100644
--- a/plugins/browser-plugin-performance-timing/package.json
+++ b/plugins/browser-plugin-performance-timing/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-performance-timing",
- "version": "3.14.0",
+ "version": "3.15.0",
"description": "Attaches Performance Timing data to Snowplow events",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -48,6 +48,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.14.0"
+ "@snowplow/browser-tracker": "~3.15.0"
}
}
diff --git a/plugins/browser-plugin-privacy-sandbox/package.json b/plugins/browser-plugin-privacy-sandbox/package.json
index 814bd3e3c..044fc0ebf 100644
--- a/plugins/browser-plugin-privacy-sandbox/package.json
+++ b/plugins/browser-plugin-privacy-sandbox/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-privacy-sandbox",
- "version": "3.14.0",
+ "version": "3.15.0",
"description": "Allows for the collection of Privacy Sandbox specific data.",
"homepage": "https://docs.snowplow.io/",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -48,6 +48,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.14.0"
+ "@snowplow/browser-tracker": "~3.15.0"
}
}
diff --git a/plugins/browser-plugin-site-tracking/package.json b/plugins/browser-plugin-site-tracking/package.json
index 140e2640a..6ce2289a5 100644
--- a/plugins/browser-plugin-site-tracking/package.json
+++ b/plugins/browser-plugin-site-tracking/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-site-tracking",
- "version": "3.14.0",
+ "version": "3.15.0",
"description": "Site tracking for Snowplow",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -50,6 +50,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.14.0"
+ "@snowplow/browser-tracker": "~3.15.0"
}
}
diff --git a/plugins/browser-plugin-snowplow-ecommerce/package.json b/plugins/browser-plugin-snowplow-ecommerce/package.json
index a85d676f5..b77b11c16 100644
--- a/plugins/browser-plugin-snowplow-ecommerce/package.json
+++ b/plugins/browser-plugin-snowplow-ecommerce/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-snowplow-ecommerce",
- "version": "3.14.0",
+ "version": "3.15.0",
"description": "Snowplow ecommerce tracking",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -50,6 +50,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.14.0"
+ "@snowplow/browser-tracker": "~3.15.0"
}
}
diff --git a/plugins/browser-plugin-timezone/package.json b/plugins/browser-plugin-timezone/package.json
index c5f2fd83c..5c0d9f9eb 100644
--- a/plugins/browser-plugin-timezone/package.json
+++ b/plugins/browser-plugin-timezone/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-timezone",
- "version": "3.14.0",
+ "version": "3.15.0",
"description": "Attaches timezone to Snowplow events",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -51,6 +51,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.14.0"
+ "@snowplow/browser-tracker": "~3.15.0"
}
}
diff --git a/plugins/browser-plugin-vimeo-tracking/package.json b/plugins/browser-plugin-vimeo-tracking/package.json
index 79a5bbf76..a3398edb9 100644
--- a/plugins/browser-plugin-vimeo-tracking/package.json
+++ b/plugins/browser-plugin-vimeo-tracking/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-vimeo-tracking",
- "version": "3.14.0",
+ "version": "3.15.0",
"description": "Vimeo tracking for Snowplow",
"homepage": "https://github.com/snowplow/snowplow-javascript-tracker",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -50,6 +50,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.14.0"
+ "@snowplow/browser-tracker": "~3.15.0"
}
}
diff --git a/plugins/browser-plugin-web-vitals/package.json b/plugins/browser-plugin-web-vitals/package.json
index 2792bfe95..261418096 100644
--- a/plugins/browser-plugin-web-vitals/package.json
+++ b/plugins/browser-plugin-web-vitals/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-web-vitals",
- "version": "3.14.0",
+ "version": "3.15.0",
"description": "Adds the capability to track web performance metrics categorized as Web Vitals.",
"homepage": "https://github.com/snowplow/snowplow-javascript-tracker",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -49,6 +49,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.14.0"
+ "@snowplow/browser-tracker": "~3.15.0"
}
}
diff --git a/plugins/browser-plugin-youtube-tracking/package.json b/plugins/browser-plugin-youtube-tracking/package.json
index 1754c311a..b5d48bc7a 100644
--- a/plugins/browser-plugin-youtube-tracking/package.json
+++ b/plugins/browser-plugin-youtube-tracking/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-youtube-tracking",
- "version": "3.14.0",
+ "version": "3.15.0",
"description": "YouTube tracking for Snowplow",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -48,6 +48,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.14.0"
+ "@snowplow/browser-tracker": "~3.15.0"
}
}
diff --git a/trackers/browser-tracker/package.json b/trackers/browser-tracker/package.json
index cfde721c8..802a60683 100644
--- a/trackers/browser-tracker/package.json
+++ b/trackers/browser-tracker/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-tracker",
- "version": "3.14.0",
+ "version": "3.15.0",
"description": "Browser tracker for Snowplow",
"keywords": [
"tracking",
diff --git a/trackers/javascript-tracker/package.json b/trackers/javascript-tracker/package.json
index f75b4ddeb..4aa352dda 100644
--- a/trackers/javascript-tracker/package.json
+++ b/trackers/javascript-tracker/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/javascript-tracker",
- "version": "3.14.0",
+ "version": "3.15.0",
"description": "Web analytics for Snowplow",
"keywords": [
"tracking",
diff --git a/trackers/node-tracker/package.json b/trackers/node-tracker/package.json
index 0d6874f33..f290411f0 100644
--- a/trackers/node-tracker/package.json
+++ b/trackers/node-tracker/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/node-tracker",
- "version": "3.14.0",
+ "version": "3.15.0",
"description": "Node tracker for Snowplow",
"keywords": [
"snowplow",
From de97c3bef9ef4ceccd001ea051eddbf2a05e2c70 Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Mon, 28 Aug 2023 14:30:55 +0000
Subject: [PATCH 015/341] Applying documentation updates.
---
.../docs/markdown/browser-tracker.trackerconfiguration.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.trackerconfiguration.md b/trackers/browser-tracker/docs/markdown/browser-tracker.trackerconfiguration.md
index 81b8fdeaf..b0f36777d 100644
--- a/trackers/browser-tracker/docs/markdown/browser-tracker.trackerconfiguration.md
+++ b/trackers/browser-tracker/docs/markdown/browser-tracker.trackerconfiguration.md
@@ -40,6 +40,7 @@ type TrackerConfiguration = {
retryStatusCodes?: number[];
dontRetryStatusCodes?: number[];
onSessionUpdateCallback?: (updatedSession: ClientSession) => void;
+ idService?: string;
};
```
From 41d3a7589192089c095c1c558a6ad6fed0d064d6 Mon Sep 17 00:00:00 2001
From: Matus Tomlein
Date: Thu, 5 Oct 2023 14:15:46 +0200
Subject: [PATCH 016/341] Add plugin to send requests with user ID to a Kantar
FocalMeter endpoint (close #1133)
PR #1243 and #1134
---
.../issue-focalmeter_2022-12-22-13-04.json | 10 ++
.../rush/browser-approved-packages.json | 4 +
common/config/rush/pnpm-lock.yaml | 49 ++++++
common/config/rush/repo-state.json | 2 +-
.../browser-plugin-focalmeter/CHANGELOG.json | 5 +
plugins/browser-plugin-focalmeter/LICENSE | 29 ++++
plugins/browser-plugin-focalmeter/README.md | 56 ++++++
.../browser-plugin-focalmeter/jest.config.js | 5 +
.../browser-plugin-focalmeter/package.json | 53 ++++++
.../rollup.config.js | 67 ++++++++
.../browser-plugin-focalmeter/src/index.ts | 159 +++++++++++++++++
.../test/request.test.ts | 161 ++++++++++++++++++
.../browser-plugin-focalmeter/tsconfig.json | 3 +
rush.json | 6 +
14 files changed, 608 insertions(+), 1 deletion(-)
create mode 100644 common/changes/@snowplow/browser-plugin-focalmeter/issue-focalmeter_2022-12-22-13-04.json
create mode 100644 plugins/browser-plugin-focalmeter/CHANGELOG.json
create mode 100644 plugins/browser-plugin-focalmeter/LICENSE
create mode 100644 plugins/browser-plugin-focalmeter/README.md
create mode 100644 plugins/browser-plugin-focalmeter/jest.config.js
create mode 100644 plugins/browser-plugin-focalmeter/package.json
create mode 100644 plugins/browser-plugin-focalmeter/rollup.config.js
create mode 100644 plugins/browser-plugin-focalmeter/src/index.ts
create mode 100644 plugins/browser-plugin-focalmeter/test/request.test.ts
create mode 100644 plugins/browser-plugin-focalmeter/tsconfig.json
diff --git a/common/changes/@snowplow/browser-plugin-focalmeter/issue-focalmeter_2022-12-22-13-04.json b/common/changes/@snowplow/browser-plugin-focalmeter/issue-focalmeter_2022-12-22-13-04.json
new file mode 100644
index 000000000..325547edf
--- /dev/null
+++ b/common/changes/@snowplow/browser-plugin-focalmeter/issue-focalmeter_2022-12-22-13-04.json
@@ -0,0 +1,10 @@
+{
+ "changes": [
+ {
+ "packageName": "@snowplow/browser-plugin-focalmeter",
+ "comment": "Add plugin to send requests with user ID to a Kantar FocalMeter endpoint (#1133)",
+ "type": "none"
+ }
+ ],
+ "packageName": "@snowplow/browser-plugin-focalmeter"
+}
\ No newline at end of file
diff --git a/common/config/rush/browser-approved-packages.json b/common/config/rush/browser-approved-packages.json
index fd359cee8..c931363cf 100644
--- a/common/config/rush/browser-approved-packages.json
+++ b/common/config/rush/browser-approved-packages.json
@@ -118,6 +118,10 @@
"name": "@snowplow/browser-plugin-youtube-tracking",
"allowedCategories": [ "trackers" ]
},
+ {
+ "name": "@snowplow/browser-plugin-focalmeter",
+ "allowedCategories": [ "trackers" ]
+ },
{
"name": "@snowplow/browser-tracker",
"allowedCategories": [ "plugins", "trackers" ]
diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml
index 261787db4..d9205c692 100644
--- a/common/config/rush/pnpm-lock.yaml
+++ b/common/config/rush/pnpm-lock.yaml
@@ -572,6 +572,55 @@ importers:
ts-jest: 27.1.3_60149d457e34ffba7d4e845dde6a1263
typescript: 4.6.2
+ ../../plugins/browser-plugin-focalmeter:
+ specifiers:
+ '@ampproject/rollup-plugin-closure-compiler': ~0.27.0
+ '@rollup/plugin-commonjs': ~21.0.2
+ '@rollup/plugin-node-resolve': ~13.1.3
+ '@snowplow/browser-tracker-core': workspace:*
+ '@snowplow/tracker-core': workspace:*
+ '@types/jest': ~27.4.1
+ '@types/jsdom': ~16.2.14
+ '@typescript-eslint/eslint-plugin': ~5.15.0
+ '@typescript-eslint/parser': ~5.15.0
+ eslint: ~8.11.0
+ jest: ~27.5.1
+ jest-environment-jsdom: ~27.5.1
+ jest-environment-jsdom-global: ~3.0.0
+ jest-standard-reporter: ~2.0.0
+ rollup: ~2.70.1
+ rollup-plugin-cleanup: ~3.2.1
+ rollup-plugin-license: ~2.6.1
+ rollup-plugin-terser: ~7.0.2
+ rollup-plugin-ts: ~2.0.5
+ ts-jest: ~27.1.3
+ tslib: ^2.3.1
+ typescript: ~4.6.2
+ dependencies:
+ '@snowplow/browser-tracker-core': link:../../libraries/browser-tracker-core
+ '@snowplow/tracker-core': link:../../libraries/tracker-core
+ tslib: 2.3.1
+ devDependencies:
+ '@ampproject/rollup-plugin-closure-compiler': 0.27.0_rollup@2.70.1
+ '@rollup/plugin-commonjs': 21.0.2_rollup@2.70.1
+ '@rollup/plugin-node-resolve': 13.1.3_rollup@2.70.1
+ '@types/jest': 27.4.1
+ '@types/jsdom': 16.2.14
+ '@typescript-eslint/eslint-plugin': 5.15.0_f2c49ce7d0e93ebcfdb4b7d25b131b28
+ '@typescript-eslint/parser': 5.15.0_eslint@8.11.0+typescript@4.6.2
+ eslint: 8.11.0
+ jest: 27.5.1
+ jest-environment-jsdom: 27.5.1
+ jest-environment-jsdom-global: 3.0.0_jest-environment-jsdom@27.5.1
+ jest-standard-reporter: 2.0.0
+ rollup: 2.70.1
+ rollup-plugin-cleanup: 3.2.1_rollup@2.70.1
+ rollup-plugin-license: 2.6.1_rollup@2.70.1
+ rollup-plugin-terser: 7.0.2_rollup@2.70.1
+ rollup-plugin-ts: 2.0.5_rollup@2.70.1+typescript@4.6.2
+ ts-jest: 27.1.3_60149d457e34ffba7d4e845dde6a1263
+ typescript: 4.6.2
+
../../plugins/browser-plugin-form-tracking:
specifiers:
'@ampproject/rollup-plugin-closure-compiler': ~0.27.0
diff --git a/common/config/rush/repo-state.json b/common/config/rush/repo-state.json
index fc69b38e4..bbb32c307 100644
--- a/common/config/rush/repo-state.json
+++ b/common/config/rush/repo-state.json
@@ -1,5 +1,5 @@
// DO NOT MODIFY THIS FILE MANUALLY BUT DO COMMIT IT. It is generated and used by Rush.
{
- "pnpmShrinkwrapHash": "a8b7bdefbe86b839e0c359de02cae9c4ccc90039",
+ "pnpmShrinkwrapHash": "1a1088b00d3708ad3e18a4dae34bc79e9b057acd",
"preferredVersionsHash": "bf21a9e8fbc5a3846fb05b4fa0859e0917b2202f"
}
diff --git a/plugins/browser-plugin-focalmeter/CHANGELOG.json b/plugins/browser-plugin-focalmeter/CHANGELOG.json
new file mode 100644
index 000000000..7f74dc674
--- /dev/null
+++ b/plugins/browser-plugin-focalmeter/CHANGELOG.json
@@ -0,0 +1,5 @@
+{
+ "name": "@snowplow/browser-plugin-focalmeter",
+ "entries": [
+ ]
+}
diff --git a/plugins/browser-plugin-focalmeter/LICENSE b/plugins/browser-plugin-focalmeter/LICENSE
new file mode 100644
index 000000000..a311732d5
--- /dev/null
+++ b/plugins/browser-plugin-focalmeter/LICENSE
@@ -0,0 +1,29 @@
+BSD 3-Clause License
+
+Copyright (c) 2023 Snowplow Analytics Ltd, 2010 Anthon Pang
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+3. Neither the name of the copyright holder nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/plugins/browser-plugin-focalmeter/README.md b/plugins/browser-plugin-focalmeter/README.md
new file mode 100644
index 000000000..c3ef91f10
--- /dev/null
+++ b/plugins/browser-plugin-focalmeter/README.md
@@ -0,0 +1,56 @@
+# Snowplow FocalMeter Integration
+
+[![npm version][npm-image]][npm-url]
+[![License][license-image]](LICENSE)
+
+Browser Plugin to be used with `@snowplow/browser-tracker`.
+
+Adds integration with the Kantar FocalMeter to your Snowplow tracking.
+The plugin sends requests with the domain user ID to a Kantar endpoint used with the FocalMeter system.
+A request is made when the first event with a new user ID is tracked.
+
+## Maintainer quick start
+
+Part of the Snowplow JavaScript Tracker monorepo.
+Build with [Node.js](https://nodejs.org/en/) (14 or 16) and [Rush](https://rushjs.io/).
+
+### Setup repository
+
+```bash
+npm install -g @microsoft/rush
+git clone https://github.com/snowplow/snowplow-javascript-tracker.git
+rush update
+```
+
+## Package Installation
+
+With npm:
+
+```bash
+npm install @snowplow/browser-plugin-focalmeter
+```
+
+## Usage
+
+Initialize your tracker with the FocalMeterPlugin:
+
+```js
+import { newTracker } from '@snowplow/browser-tracker';
+import { FocalMeterPlugin } from '@snowplow/browser-plugin-focalmeter';
+
+newTracker('sp1', '{{collector}}', { plugins: [ FocalMeterPlugin() ] }); // Also stores reference at module level
+```
+
+## Copyright and license
+
+Licensed and distributed under the [BSD 3-Clause License](LICENSE) ([An OSI Approved License][osi]).
+
+Copyright (c) 2023 Snowplow Analytics Ltd, 2010 Anthon Pang.
+
+All rights reserved.
+
+[npm-url]: https://www.npmjs.com/package/@snowplow/browser-plugin-focalmeter
+[npm-image]: https://img.shields.io/npm/v/@snowplow/browser-plugin-focalmeter
+[docs]: https://docs.snowplowanalytics.com/docs/collecting-data/collecting-from-own-applications/javascript-tracker/
+[osi]: https://opensource.org/licenses/BSD-3-Clause
+[license-image]: https://img.shields.io/npm/l/@snowplow/browser-plugin-focalmeter
diff --git a/plugins/browser-plugin-focalmeter/jest.config.js b/plugins/browser-plugin-focalmeter/jest.config.js
new file mode 100644
index 000000000..bd3ea4e2a
--- /dev/null
+++ b/plugins/browser-plugin-focalmeter/jest.config.js
@@ -0,0 +1,5 @@
+module.exports = {
+ preset: 'ts-jest',
+ reporters: ['jest-standard-reporter'],
+ testEnvironment: 'jest-environment-jsdom-global',
+};
diff --git a/plugins/browser-plugin-focalmeter/package.json b/plugins/browser-plugin-focalmeter/package.json
new file mode 100644
index 000000000..45820c514
--- /dev/null
+++ b/plugins/browser-plugin-focalmeter/package.json
@@ -0,0 +1,53 @@
+{
+ "name": "@snowplow/browser-plugin-focalmeter",
+ "version": "3.15.0",
+ "description": "Kantar FocalMeter integration for Snowplow",
+ "homepage": "http://bit.ly/sp-js",
+ "bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/snowplow/snowplow-javascript-tracker.git"
+ },
+ "license": "BSD-3-Clause",
+ "author": "Matus Tomlein",
+ "sideEffects": false,
+ "main": "./dist/index.umd.js",
+ "module": "./dist/index.module.js",
+ "types": "./dist/index.module.d.ts",
+ "files": [
+ "dist"
+ ],
+ "scripts": {
+ "build": "rollup -c --silent --failAfterWarnings",
+ "test": "jest"
+ },
+ "dependencies": {
+ "@snowplow/browser-tracker-core": "workspace:*",
+ "@snowplow/tracker-core": "workspace:*",
+ "tslib": "^2.3.1"
+ },
+ "devDependencies": {
+ "@ampproject/rollup-plugin-closure-compiler": "~0.27.0",
+ "@rollup/plugin-commonjs": "~21.0.2",
+ "@rollup/plugin-node-resolve": "~13.1.3",
+ "@types/jest": "~27.4.1",
+ "@types/jsdom": "~16.2.14",
+ "@typescript-eslint/eslint-plugin": "~5.15.0",
+ "@typescript-eslint/parser": "~5.15.0",
+ "eslint": "~8.11.0",
+ "jest": "~27.5.1",
+ "jest-environment-jsdom": "~27.5.1",
+ "jest-environment-jsdom-global": "~3.0.0",
+ "jest-standard-reporter": "~2.0.0",
+ "rollup": "~2.70.1",
+ "rollup-plugin-cleanup": "~3.2.1",
+ "rollup-plugin-license": "~2.6.1",
+ "rollup-plugin-terser": "~7.0.2",
+ "rollup-plugin-ts": "~2.0.5",
+ "ts-jest": "~27.1.3",
+ "typescript": "~4.6.2"
+ },
+ "peerDependencies": {
+ "@snowplow/browser-tracker": "~3.15.0"
+ }
+}
diff --git a/plugins/browser-plugin-focalmeter/rollup.config.js b/plugins/browser-plugin-focalmeter/rollup.config.js
new file mode 100644
index 000000000..dfef86c7b
--- /dev/null
+++ b/plugins/browser-plugin-focalmeter/rollup.config.js
@@ -0,0 +1,67 @@
+/*
+ * Copyright (c) 2023 Snowplow Analytics Ltd, 2010 Anthon Pang
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * 3. Neither the name of the copyright holder nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+import { nodeResolve } from '@rollup/plugin-node-resolve';
+import commonjs from '@rollup/plugin-commonjs';
+import ts from 'rollup-plugin-ts'; // Prefered over @rollup/plugin-typescript as it bundles .d.ts files
+import { banner } from '../../banner';
+import compiler from '@ampproject/rollup-plugin-closure-compiler';
+import { terser } from 'rollup-plugin-terser';
+import cleanup from 'rollup-plugin-cleanup';
+import pkg from './package.json';
+import { builtinModules } from 'module';
+
+const umdPlugins = [nodeResolve({ browser: true }), commonjs(), ts()];
+const umdName = 'snowplowFocalMeter';
+
+export default [
+ // CommonJS (for Node) and ES module (for bundlers) build.
+ {
+ input: './src/index.ts',
+ plugins: [...umdPlugins, banner()],
+ treeshake: { moduleSideEffects: ['sha1'] },
+ output: [{ file: pkg.main, format: 'umd', sourcemap: true, name: umdName }],
+ },
+ {
+ input: './src/index.ts',
+ plugins: [...umdPlugins, compiler(), terser(), cleanup({ comments: 'none' }), banner()],
+ treeshake: { moduleSideEffects: ['sha1'] },
+ output: [{ file: pkg.main.replace('.js', '.min.js'), format: 'umd', sourcemap: true, name: umdName }],
+ },
+ {
+ input: './src/index.ts',
+ external: [...builtinModules, ...Object.keys(pkg.dependencies), ...Object.keys(pkg.devDependencies)],
+ plugins: [
+ ts(), // so Rollup can convert TypeScript to JavaScript
+ banner(),
+ ],
+ output: [{ file: pkg.module, format: 'es', sourcemap: true }],
+ },
+];
diff --git a/plugins/browser-plugin-focalmeter/src/index.ts b/plugins/browser-plugin-focalmeter/src/index.ts
new file mode 100644
index 000000000..ef2c290f8
--- /dev/null
+++ b/plugins/browser-plugin-focalmeter/src/index.ts
@@ -0,0 +1,159 @@
+/*
+ * Copyright (c) 2023 Snowplow Analytics Ltd, 2010 Anthon Pang
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * 3. Neither the name of the copyright holder nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+import {
+ attemptGetLocalStorage,
+ BrowserPlugin,
+ hasLocalStorage,
+ BrowserTracker,
+ attemptWriteLocalStorage,
+} from '@snowplow/browser-tracker-core';
+import { Logger, Payload } from '@snowplow/tracker-core';
+
+/** FocalMeter plugin configuration */
+export interface FocalMeterConfiguration {
+ /** URL of the Kantar endpoint to send the requests to (including protocol) */
+ kantarEndpoint: string;
+ /** Whether to store information about the last submitted user ID in local storage to prevent sending it again on next load (defaults not to use local storage) */
+ useLocalStorage?: boolean;
+ /** Callback to process user ID before sending it in a request. This may be used to apply hashing to the value. */
+ processUserId?: (userId: string) => string;
+}
+
+const _trackers: Record = {};
+const _configurations: Record = {};
+
+/**
+ * The FocalMeter Plugin
+ *
+ * The plugin sends requests with the domain user ID to a Kantar endpoint used with the FocalMeter system.
+ * A request is made when the first event with a new user ID is tracked.
+ *
+ * Call `enableFocalMeterIntegration()` to enable the integration with given configuration.
+ */
+export function FocalMeterPlugin(): BrowserPlugin {
+ let LOG: Logger;
+ let lastUserId: string | undefined | null;
+ let trackerId: string;
+
+ return {
+ activateBrowserPlugin: (tracker: BrowserTracker) => {
+ trackerId = tracker.id;
+ _trackers[tracker.id] = tracker;
+ },
+
+ logger: (logger: Logger) => {
+ LOG = logger;
+ },
+
+ afterTrack: (payload: Payload) => {
+ if (!_configurations[trackerId]) {
+ LOG.error('FocalMeter integration not enabled');
+ return;
+ }
+
+ const newUserId = payload['duid'] as string;
+ const { kantarEndpoint, useLocalStorage, processUserId } = _configurations[trackerId];
+
+ if (!lastUserId && useLocalStorage && hasLocalStorage()) {
+ const key = getLocalStorageKey(trackerId);
+ lastUserId = attemptGetLocalStorage(key);
+ }
+
+ if (newUserId && newUserId != lastUserId) {
+ lastUserId = newUserId;
+ const processedUserId = processUserId !== undefined ? processUserId(newUserId) : newUserId;
+
+ sendRequest(kantarEndpoint, processedUserId, LOG, () => {
+ // only write in local storage if the request succeeded
+ if (useLocalStorage && hasLocalStorage()) {
+ const key = getLocalStorageKey(trackerId);
+ attemptWriteLocalStorage(key, newUserId);
+ }
+ });
+ }
+ },
+ };
+}
+
+/**
+ * Enables the integration with Kantar FocalMeter.
+ *
+ * @param configuration - Configuration with the URL endpoint to send requests to
+ * @param trackers - The tracker identifiers which should have the context enabled
+ */
+export function enableFocalMeterIntegration(
+ configuration: FocalMeterConfiguration,
+ trackers: Array = Object.keys(_trackers)
+): void {
+ for (const id of trackers) {
+ if (_trackers[id]) {
+ _configurations[id] = configuration;
+ }
+ }
+}
+
+function getLocalStorageKey(trackerId: string): string {
+ return `sp-fclmtr-${trackerId}`;
+}
+
+function sendRequest(url: string, userId: string, LOG: Logger, successCallback: () => void): void {
+ const xhr = new XMLHttpRequest();
+ xhr.open('GET', getKantarURL(url, userId));
+ xhr.timeout = 5000;
+
+ xhr.onreadystatechange = function () {
+ if (xhr.readyState === 4 && xhr.status >= 200) {
+ if (xhr.status < 300) {
+ successCallback();
+ LOG.debug(`ID sent to Kantar: ${userId}`);
+ } else {
+ LOG.error(`Kantar request failed: ${xhr.status}: ${xhr.statusText}`);
+ }
+ }
+ };
+
+ xhr.send();
+}
+
+function getKantarURL(url: string, userId: string): string {
+ const query: Record = {
+ vendor: 'snowplow',
+ cs_fpid: userId,
+ c12: 'not_set',
+ };
+ return (
+ url +
+ '?' +
+ Object.keys(query)
+ .map((key) => key + '=' + query[key])
+ .join('&')
+ );
+}
diff --git a/plugins/browser-plugin-focalmeter/test/request.test.ts b/plugins/browser-plugin-focalmeter/test/request.test.ts
new file mode 100644
index 000000000..40ec88ecd
--- /dev/null
+++ b/plugins/browser-plugin-focalmeter/test/request.test.ts
@@ -0,0 +1,161 @@
+/*
+ * Copyright (c) 2023 Snowplow Analytics Ltd, 2010 Anthon Pang
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * 3. Neither the name of the copyright holder nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+import { addTracker, SharedState } from '@snowplow/browser-tracker-core';
+import { enableFocalMeterIntegration, FocalMeterPlugin } from '../src';
+
+describe('AdTrackingPlugin', () => {
+ // Mock XHR network requests
+ let xhrMock: Partial;
+ let xhrOpenMock: jest.Mock;
+ let queuedStateChangeCallbacks: any[] = [];
+ let domain = 'https://kantar.com';
+
+ beforeEach(() => {
+ xhrOpenMock = jest.fn();
+ xhrMock = {
+ open: xhrOpenMock,
+ send: jest.fn(),
+ setRequestHeader: jest.fn(),
+ withCredentials: true,
+ status: 200,
+ response: '',
+ readyState: 4,
+ };
+
+ Object.defineProperty(xhrMock, 'onreadystatechange', {
+ set: (val) => {
+ queuedStateChangeCallbacks.push(val);
+ },
+ });
+
+ jest.spyOn(window, 'XMLHttpRequest').mockImplementation(() => xhrMock as XMLHttpRequest);
+ });
+
+ it('makes a request to Kantar endpoint with user ID', async () => {
+ const tracker = createTrackerWithPlugin();
+ enableFocalMeterIntegration({ kantarEndpoint: domain });
+
+ tracker?.trackPageView();
+ const userId = tracker?.getDomainUserId();
+
+ await checkMock(() => {
+ expect(xhrOpenMock).toHaveBeenCalledTimes(2);
+ expect(xhrOpenMock).toHaveBeenLastCalledWith('GET', `${domain}?vendor=snowplow&cs_fpid=${userId}&c12=not_set`);
+ });
+ });
+
+ it('makes a request to Kantar endpoint with processed user ID', async () => {
+ const tracker = createTrackerWithPlugin();
+ enableFocalMeterIntegration({ kantarEndpoint: domain, processUserId: (userId) => userId + '-processed' });
+
+ tracker?.trackPageView();
+ const userId = tracker?.getDomainUserId();
+
+ await checkMock(() => {
+ expect(xhrOpenMock).toHaveBeenCalledTimes(2);
+ expect(xhrOpenMock).toHaveBeenLastCalledWith('GET', `${domain}?vendor=snowplow&cs_fpid=${userId}-processed&c12=not_set`);
+ });
+ });
+
+ it('makes a request to Kantar endpoint when user ID changes', async () => {
+ const tracker = createTrackerWithPlugin();
+ enableFocalMeterIntegration({ kantarEndpoint: domain });
+
+ // Doesn't make a request if anonymous tracking
+ tracker?.enableAnonymousTracking();
+ tracker?.trackPageView();
+ await checkMock(() => {
+ expect(xhrOpenMock).toHaveBeenCalledTimes(1);
+ });
+
+ // Makes a request when disabling anonymous tracking
+ tracker?.disableAnonymousTracking();
+ tracker?.trackPageView();
+ const userId = tracker?.getDomainUserId();
+ await checkMock(() => {
+ expect(xhrOpenMock).toHaveBeenCalledTimes(2);
+ expect(xhrOpenMock).toHaveBeenLastCalledWith('GET', `${domain}?vendor=snowplow&cs_fpid=${userId}&c12=not_set`);
+ });
+
+ // Doesn't make another request since user ID didn't change
+ tracker?.trackPageView();
+ await checkMock(() => {
+ expect(xhrOpenMock).toHaveBeenCalledTimes(1);
+ });
+ });
+
+ it('can work with multiple trackers', async () => {
+ const tracker1 = createTrackerWithPlugin();
+ const tracker2 = createTrackerWithPlugin();
+
+ enableFocalMeterIntegration(
+ {
+ kantarEndpoint: domain,
+ },
+ [tracker1!.namespace, tracker2!.namespace]
+ );
+
+ // Makes requests for both trackers
+ tracker1?.trackPageView();
+ await checkMock(() => expect(xhrOpenMock).toHaveBeenCalledTimes(2));
+ tracker2?.trackPageView();
+ await checkMock(() => expect(xhrOpenMock).toHaveBeenCalledTimes(2));
+
+ // Doesn't make any more requests for the trackers
+ tracker1?.trackPageView();
+ await checkMock(() => expect(xhrOpenMock).toHaveBeenCalledTimes(1));
+ tracker2?.trackPageView();
+ await checkMock(() => expect(xhrOpenMock).toHaveBeenCalledTimes(1));
+ });
+
+ function createTrackerWithPlugin(id: string | undefined = undefined) {
+ const state = new SharedState();
+ id ??= 'sp-' + Math.random();
+
+ return addTracker(id, id, 'js-3.0.0', '', state, {
+ stateStorageStrategy: 'cookie',
+ encodeBase64: false,
+ plugins: [FocalMeterPlugin()],
+ });
+ }
+
+ function checkMock(callback: () => void) {
+ return new Promise((resolve) => {
+ setTimeout(() => {
+ callback();
+ queuedStateChangeCallbacks.forEach((callback) => callback());
+ queuedStateChangeCallbacks = [];
+ xhrOpenMock.mockReset();
+ resolve(true);
+ }, 100);
+ });
+ }
+});
diff --git a/plugins/browser-plugin-focalmeter/tsconfig.json b/plugins/browser-plugin-focalmeter/tsconfig.json
new file mode 100644
index 000000000..4082f16a5
--- /dev/null
+++ b/plugins/browser-plugin-focalmeter/tsconfig.json
@@ -0,0 +1,3 @@
+{
+ "extends": "../../tsconfig.json"
+}
diff --git a/rush.json b/rush.json
index b2f795e50..0ff69c59a 100644
--- a/rush.json
+++ b/rush.json
@@ -571,6 +571,12 @@
"projectFolder": "plugins/browser-plugin-privacy-sandbox",
"reviewCategory": "plugins",
"versionPolicyName": "tracker"
+ },
+ {
+ "packageName": "@snowplow/browser-plugin-focalmeter",
+ "projectFolder": "plugins/browser-plugin-focalmeter",
+ "reviewCategory": "plugins",
+ "versionPolicyName": "tracker"
}
]
}
From 6be372615a3ebbe3fa06c11a9bf690791553e09d Mon Sep 17 00:00:00 2001
From: adatzer
Date: Thu, 12 Oct 2023 17:50:35 +0300
Subject: [PATCH 017/341] Make pre-commit hook script POSIX compliant (close
#1246)
---
common/git-hooks/pre-commit | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/common/git-hooks/pre-commit b/common/git-hooks/pre-commit
index 57df62b1a..07b96ad6c 100644
--- a/common/git-hooks/pre-commit
+++ b/common/git-hooks/pre-commit
@@ -12,7 +12,7 @@ ERROR_COLOR='\033[0;31m'
WARNING_COLOR='\033[0;33m'
STOP_COLOR='\033[0m'
-if ! command -v gitleaks &> /dev/null
+if ! command -v gitleaks > /dev/null 2>&1
then
echo "${ERROR_COLOR}\nGitleaks not found. To commit you safely, you need to install it per the instructions at https://github.com/gitleaks/gitleaks.${STOP_COLOR}"
exit 1
@@ -21,4 +21,4 @@ then
echo "${WARNING_COLOR}\nGitleaks skipped for this commit.${STOP_COLOR}"
else
gitleaks protect -v --staged --report-path ./findings.json
-fi
\ No newline at end of file
+fi
From f18328af8eea1403494f609cf21cd682219fc874 Mon Sep 17 00:00:00 2001
From: adatzer
Date: Thu, 12 Oct 2023 17:52:43 +0300
Subject: [PATCH 018/341] Fix transform function for submit_form event (close
#1241)
---
.../issue-1241_2023-10-10-10-15.json | 10 +++
.../issue-1241_2023-10-10-10-15.json | 10 +++
.../src/helpers.ts | 67 +++++++-----------
.../browser-plugin-form-tracking/src/index.ts | 30 --------
.../test/integration/autoTracking.test.ts | 70 +++++++++++++++++++
.../test/pages/form-tracking.html | 17 +++++
6 files changed, 132 insertions(+), 72 deletions(-)
create mode 100644 common/changes/@snowplow/browser-plugin-form-tracking/issue-1241_2023-10-10-10-15.json
create mode 100644 common/changes/@snowplow/javascript-tracker/issue-1241_2023-10-10-10-15.json
diff --git a/common/changes/@snowplow/browser-plugin-form-tracking/issue-1241_2023-10-10-10-15.json b/common/changes/@snowplow/browser-plugin-form-tracking/issue-1241_2023-10-10-10-15.json
new file mode 100644
index 000000000..57bdb1ff0
--- /dev/null
+++ b/common/changes/@snowplow/browser-plugin-form-tracking/issue-1241_2023-10-10-10-15.json
@@ -0,0 +1,10 @@
+{
+ "changes": [
+ {
+ "packageName": "@snowplow/browser-plugin-form-tracking",
+ "comment": "Fix transform function for submit_form event",
+ "type": "none"
+ }
+ ],
+ "packageName": "@snowplow/browser-plugin-form-tracking"
+}
\ No newline at end of file
diff --git a/common/changes/@snowplow/javascript-tracker/issue-1241_2023-10-10-10-15.json b/common/changes/@snowplow/javascript-tracker/issue-1241_2023-10-10-10-15.json
new file mode 100644
index 000000000..ae2f53795
--- /dev/null
+++ b/common/changes/@snowplow/javascript-tracker/issue-1241_2023-10-10-10-15.json
@@ -0,0 +1,10 @@
+{
+ "changes": [
+ {
+ "packageName": "@snowplow/javascript-tracker",
+ "comment": "",
+ "type": "none"
+ }
+ ],
+ "packageName": "@snowplow/javascript-tracker"
+}
\ No newline at end of file
diff --git a/plugins/browser-plugin-form-tracking/src/helpers.ts b/plugins/browser-plugin-form-tracking/src/helpers.ts
index da21e3f4c..4b424dd04 100644
--- a/plugins/browser-plugin-form-tracking/src/helpers.ts
+++ b/plugins/browser-plugin-form-tracking/src/helpers.ts
@@ -1,33 +1,3 @@
-/*
- * Copyright (c) 2022 Snowplow Analytics Ltd, 2010 Anthon Pang
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * 3. Neither the name of the copyright holder nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
import {
getCssClasses,
addEventListener,
@@ -90,12 +60,18 @@ export interface ElementData extends Record {
type?: string;
}
-export type transformFn = (x: string | null, elt: ElementData | TrackedHTMLElement) => string | null;
+export type transformFn = (
+ elementValue: string | null,
+ elementInfo: ElementData | TrackedHTMLElement,
+ elt: TrackedHTMLElement
+) => string | null;
export const innerElementTags: Array = ['textarea', 'input', 'select'];
type TrackedHTMLElementWithMarker = TrackedHTMLElement & Record;
+type ElementDataWrapper = { elementData: ElementData; originalElement: TrackedHTMLElement };
+
const defaultTransformFn: transformFn = (x) => x;
interface FormConfiguration {
@@ -242,7 +218,7 @@ function getParentFormIdentifier(elt: Node | null) {
* Returns a list of the input, textarea, and select elements inside a form along with their values
*/
function getInnerFormElements(trackingMarker: string, elt: HTMLFormElement) {
- var innerElements: Array = [];
+ var innerElements: Array = [];
Array.prototype.slice.call(innerElementTags).forEach((tagname: 'textarea' | 'input' | 'select') => {
let trackedChildren = Array.prototype.slice.call(elt.getElementsByTagName(tagname)).filter(function (child) {
return child.hasOwnProperty(trackingMarker);
@@ -252,17 +228,20 @@ function getInnerFormElements(trackingMarker: string, elt: HTMLFormElement) {
if (child.type === 'submit') {
return;
}
- var elementJson: ElementData = {
- name: getElementIdentifier(child),
- value: child.value,
- nodeName: child.nodeName,
+ var elementJson: ElementDataWrapper = {
+ elementData: {
+ name: getElementIdentifier(child),
+ value: child.value,
+ nodeName: child.nodeName,
+ },
+ originalElement: child,
};
if (child.type && child.nodeName.toUpperCase() === 'INPUT') {
- elementJson.type = child.type;
+ elementJson.elementData.type = child.type;
}
if ((child.type === 'checkbox' || child.type === 'radio') && !(child as HTMLInputElement).checked) {
- elementJson.value = null;
+ elementJson.elementData.value = null;
}
innerElements.push(elementJson);
});
@@ -285,7 +264,9 @@ function getFormChangeListener(
if (elt) {
var type = elt.nodeName && elt.nodeName.toUpperCase() === 'INPUT' ? elt.type : null;
var value =
- elt.type === 'checkbox' && !(elt as HTMLInputElement).checked ? null : config.fieldTransform(elt.value, elt);
+ elt.type === 'checkbox' && !(elt as HTMLInputElement).checked
+ ? null
+ : config.fieldTransform(elt.value, elt, elt);
if (event_type === 'change_form' || (type !== 'checkbox' && type !== 'radio')) {
tracker.core.track(
buildFormFocusOrChange({
@@ -317,15 +298,17 @@ function getFormSubmissionListener(
var elt = e.target as HTMLFormElement;
var innerElements = getInnerFormElements(trackingMarker, elt);
innerElements.forEach(function (innerElement) {
- innerElement.value = config.fieldTransform(innerElement.value, innerElement) ?? innerElement.value;
+ var eltData = innerElement.elementData;
+ eltData.value = config.fieldTransform(eltData.value, eltData, innerElement.originalElement) ?? eltData.value;
});
+ var elementsData = innerElements.map((elt) => elt.elementData);
tracker.core.track(
buildFormSubmission({
formId: getElementIdentifier(elt) ?? '',
formClasses: getCssClasses(elt),
- elements: innerElements,
+ elements: elementsData,
}),
- resolveDynamicContext(context, elt, innerElements)
+ resolveDynamicContext(context, elt, elementsData)
);
};
}
diff --git a/plugins/browser-plugin-form-tracking/src/index.ts b/plugins/browser-plugin-form-tracking/src/index.ts
index 24ddfcc4a..3f3f79a39 100644
--- a/plugins/browser-plugin-form-tracking/src/index.ts
+++ b/plugins/browser-plugin-form-tracking/src/index.ts
@@ -1,33 +1,3 @@
-/*
- * Copyright (c) 2022 Snowplow Analytics Ltd, 2010 Anthon Pang
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * 3. Neither the name of the copyright holder nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
import { BrowserPlugin, BrowserTracker } from '@snowplow/browser-tracker-core';
import { addFormListeners, FormTrackingConfiguration } from './helpers';
diff --git a/trackers/javascript-tracker/test/integration/autoTracking.test.ts b/trackers/javascript-tracker/test/integration/autoTracking.test.ts
index 7b3b885db..ca9c28005 100755
--- a/trackers/javascript-tracker/test/integration/autoTracking.test.ts
+++ b/trackers/javascript-tracker/test/integration/autoTracking.test.ts
@@ -280,6 +280,11 @@ describe('Auto tracking', () => {
await $('#fname').click();
await $('#lname').click();
+ await loadUrlAndWait('/form-tracking.html?filter=transform');
+
+ await $('#pid').click();
+ await $('#submit').click();
+
await browser.pause(1000);
await loadUrlAndWait('/form-tracking.html?filter=excludedForm');
@@ -808,4 +813,69 @@ describe('Auto tracking', () => {
})
).toBe(true);
});
+
+ it('should use transform function for pii field', () => {
+ expect(
+ logContains({
+ event: {
+ event: 'unstruct',
+ app_id: 'autotracking-form-' + testIdentifier,
+ unstruct_event: {
+ data: {
+ schema: 'iglu:com.snowplowanalytics.snowplow/focus_form/jsonschema/1-0-0',
+ data: {
+ formId: 'myForm',
+ elementId: 'pname',
+ nodeName: 'INPUT',
+ elementClasses: [],
+ value: 'redacted',
+ elementType: 'text',
+ },
+ },
+ },
+ },
+ })
+ ).toBe(true);
+
+ expect(
+ logContains({
+ event: {
+ event: 'unstruct',
+ app_id: 'autotracking-form-' + testIdentifier,
+ unstruct_event: {
+ data: {
+ schema: 'iglu:com.snowplowanalytics.snowplow/submit_form/jsonschema/1-0-0',
+ data: {
+ formId: 'myForm',
+ formClasses: ['formy-mcformface'],
+ elements: [
+ {
+ name: 'message',
+ value: 'This is a message',
+ nodeName: 'TEXTAREA',
+ },
+ {
+ name: 'fname',
+ value: 'John',
+ nodeName: 'INPUT',
+ type: 'text',
+ },
+ { name: 'lname', value: 'Doe', nodeName: 'INPUT', type: 'text' },
+ {
+ name: 'pname',
+ value: 'redacted',
+ nodeName: 'INPUT',
+ type: 'text',
+ },
+ { name: 'vehicle', value: null, nodeName: 'INPUT', type: 'radio' },
+ { name: 'terms', value: null, nodeName: 'INPUT', type: 'checkbox' },
+ { name: 'cars', value: 'volvo', nodeName: 'SELECT' },
+ ],
+ },
+ },
+ },
+ },
+ })
+ ).toBe(true);
+ });
});
diff --git a/trackers/javascript-tracker/test/pages/form-tracking.html b/trackers/javascript-tracker/test/pages/form-tracking.html
index 627f067d1..3717b0d17 100644
--- a/trackers/javascript-tracker/test/pages/form-tracking.html
+++ b/trackers/javascript-tracker/test/pages/form-tracking.html
@@ -41,6 +41,10 @@
+
+
+
+
@@ -106,6 +110,12 @@
function formFilter(formElement) {
return formElement.id !== 'lname';
}
+ function redactPII(eltValue, _, elt) {
+ if (elt.id === 'pid') {
+ return 'redacted';
+ }
+ return eltValue;
+ }
switch (parseQuery().filter) {
case 'exclude':
@@ -122,6 +132,13 @@
},
});
break;
+ case 'transform':
+ snowplow('enableFormTracking', {
+ options: {
+ fields: { transform: redactPII },
+ },
+ });
+ break;
case 'excludedForm':
snowplow('enableFormTracking', { options: { forms: { denylist: ['excluded-form'] } } });
break;
From fa6943d127e5f9bc9e0aa43c21f83d264d6dd6c5 Mon Sep 17 00:00:00 2001
From: Matus Tomlein
Date: Mon, 16 Oct 2023 12:58:23 +0200
Subject: [PATCH 019/341] Update saucelabs and webdriverio dependencies (#1253)
---
common/config/rush/pnpm-lock.yaml | 1880 +++++++++++-----------
common/config/rush/repo-state.json | 2 +-
trackers/javascript-tracker/package.json | 28 +-
3 files changed, 911 insertions(+), 999 deletions(-)
diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml
index d9205c692..62165f52e 100644
--- a/common/config/rush/pnpm-lock.yaml
+++ b/common/config/rush/pnpm-lock.yaml
@@ -1580,15 +1580,15 @@ importers:
'@types/node': ~14.6.0
'@types/node-fetch': '2'
'@types/youtube': ~0.0.46
- '@wdio/cli': ~8.3.3
- '@wdio/globals': ~8.11.2
- '@wdio/jasmine-framework': ~8.3.3
- '@wdio/local-runner': ~8.3.3
- '@wdio/sauce-service': ~8.3.3
- '@wdio/shared-store-service': ~8.11.2
- '@wdio/spec-reporter': ~8.3.0
- '@wdio/static-server-service': ~8.3.0
- '@wdio/types': ~8.3.0
+ '@wdio/cli': ~8.18.2
+ '@wdio/globals': ~8.18.2
+ '@wdio/jasmine-framework': ~8.18.2
+ '@wdio/local-runner': ~8.18.2
+ '@wdio/sauce-service': ~8.18.2
+ '@wdio/shared-store-service': ~8.18.2
+ '@wdio/spec-reporter': ~8.18.1
+ '@wdio/static-server-service': ~8.17.0
+ '@wdio/types': ~8.17.0
chalk: 4.1.2
chromedriver: ~114.0.0
dockerode: ~3.3.1
@@ -1606,15 +1606,15 @@ importers:
rollup-plugin-sizes: ~1.0.4
rollup-plugin-terser: ~7.0.2
rollup-plugin-ts: ~2.0.5
- saucelabs: ~7.2.0
+ saucelabs: ~7.4.0
ts-jest: ~27.1.3
ts-node: ~10.9.1
tslib: ^2.3.1
typescript: ~4.6.2
- wdio-chromedriver-service: ~8.0.1
- wdio-edgedriver-service: ~3.0.2
- wdio-safaridriver-service: ~2.1.0
- webdriverio: ~8.3.3
+ wdio-chromedriver-service: ~8.1.1
+ wdio-edgedriver-service: ~3.0.3
+ wdio-safaridriver-service: ~2.1.1
+ webdriverio: ~8.18.2
dependencies:
'@snowplow/browser-plugin-ad-tracking': link:../../plugins/browser-plugin-ad-tracking
'@snowplow/browser-plugin-browser-features': link:../../plugins/browser-plugin-browser-features
@@ -1657,15 +1657,15 @@ importers:
'@types/node': 14.6.4
'@types/node-fetch': 2.6.4
'@types/youtube': 0.0.46
- '@wdio/cli': 8.3.5_typescript@4.6.2
- '@wdio/globals': 8.11.2_typescript@4.6.2
- '@wdio/jasmine-framework': 8.3.5_typescript@4.6.2
- '@wdio/local-runner': 8.3.5_typescript@4.6.2
- '@wdio/sauce-service': 8.3.5
- '@wdio/shared-store-service': 8.11.2_typescript@4.6.2
- '@wdio/spec-reporter': 8.3.0
- '@wdio/static-server-service': 8.3.0
- '@wdio/types': 8.3.0
+ '@wdio/cli': 8.18.2_typescript@4.6.2
+ '@wdio/globals': 8.18.2_typescript@4.6.2
+ '@wdio/jasmine-framework': 8.18.2_typescript@4.6.2
+ '@wdio/local-runner': 8.18.2_typescript@4.6.2
+ '@wdio/sauce-service': 8.18.2_typescript@4.6.2
+ '@wdio/shared-store-service': 8.18.2_typescript@4.6.2
+ '@wdio/spec-reporter': 8.18.1
+ '@wdio/static-server-service': 8.17.0
+ '@wdio/types': 8.17.0
chalk: 4.1.2
chromedriver: 114.0.2
dockerode: 3.3.1
@@ -1683,14 +1683,14 @@ importers:
rollup-plugin-sizes: 1.0.4_rollup@2.70.1
rollup-plugin-terser: 7.0.2_rollup@2.70.1
rollup-plugin-ts: 2.0.5_rollup@2.70.1+typescript@4.6.2
- saucelabs: 7.2.0
+ saucelabs: 7.4.0
ts-jest: 27.1.3_60149d457e34ffba7d4e845dde6a1263
ts-node: 10.9.1_3a45c3db8dee5edcd277f201fb244988
typescript: 4.6.2
- wdio-chromedriver-service: 8.0.1_004e92621c7fa5837873d8fdb8947671
- wdio-edgedriver-service: 3.0.2_@wdio+types@8.3.0
- wdio-safaridriver-service: 2.1.0_38e69deb68987ddd418b1267598e302e
- webdriverio: 8.3.5
+ wdio-chromedriver-service: 8.1.1_514dbdcecc2bde428ae175e957c6d0fe
+ wdio-edgedriver-service: 3.0.3_@wdio+types@8.17.0
+ wdio-safaridriver-service: 2.1.1_4fb69569f1618470b3fa12973abeed28
+ webdriverio: 8.18.2_typescript@4.6.2
../../trackers/node-tracker:
specifiers:
@@ -1764,10 +1764,6 @@ packages:
engines: {node: '>=4'}
dev: true
- /@assemblyscript/loader/0.10.1:
- resolution: {integrity: sha512-H71nDOOL8Y7kWRLqf6Sums+01Q5msqBW2KhDUTemh1tvY04eSkSXrK0uj/4mmY0Xr16/3zyZmsrxN7CKuRbNRg==}
- dev: true
-
/@babel/code-frame/7.16.7:
resolution: {integrity: sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==}
engines: {node: '>=6.9.0'}
@@ -1775,6 +1771,14 @@ packages:
'@babel/highlight': 7.16.10
dev: true
+ /@babel/code-frame/7.22.13:
+ resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/highlight': 7.22.20
+ chalk: 2.4.2
+ dev: true
+
/@babel/core/7.12.10:
resolution: {integrity: sha512-eTAlQKq65zHfkHZV0sIVODCPGVgoo1HdBlbSLi9CqOzuZanMv2ihzY+4paiKr1mH+XmYESMAmJ/dpZ68eN6d8w==}
engines: {node: '>=6.9.0'}
@@ -1887,6 +1891,11 @@ packages:
engines: {node: '>=6.9.0'}
dev: true
+ /@babel/helper-validator-identifier/7.22.20:
+ resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==}
+ engines: {node: '>=6.9.0'}
+ dev: true
+
/@babel/helpers/7.12.5:
resolution: {integrity: sha512-lgKGMQlKqA8meJqKsW6rUnc4MdUk35Ln0ATDqdM1a/UpARODdI4j5Y5lVfUScnSNkJcdCRAaWkspykNoFg9sJA==}
dependencies:
@@ -1906,6 +1915,15 @@ packages:
js-tokens: 4.0.0
dev: true
+ /@babel/highlight/7.22.20:
+ resolution: {integrity: sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/helper-validator-identifier': 7.22.20
+ chalk: 2.4.2
+ js-tokens: 4.0.0
+ dev: true
+
/@babel/parser/7.16.12:
resolution: {integrity: sha512-VfaV15po8RiZssrkPweyvbGVSe4x2y+aciFCgn0n0/SJMR22cwofRV1mtnJQYcSB1wUTaA/X1LnA3es66MCO5A==}
engines: {node: '>=6.0.0'}
@@ -2080,6 +2098,13 @@ packages:
'@jridgewell/trace-mapping': 0.3.9
dev: true
+ /@eggjs/yauzl/2.11.0:
+ resolution: {integrity: sha512-Jq+k2fCZJ3i3HShb0nxLUiAgq5pwo8JTT1TrH22JoehZQ0Nm2dvByGIja1NYfNyuE4Tx5/Dns5nVsBN/mlC8yg==}
+ dependencies:
+ buffer-crc32: 0.2.13
+ fd-slicer2: 1.2.0
+ dev: true
+
/@eslint/eslintrc/1.2.1:
resolution: {integrity: sha512-bxvbYnBPN1Gibwyp6NrpnFzA3YtRL3BBAyEAFVIpNTm2Rn4Vy87GA5M4aSn3InRrlsbX5N0GW7XIx+U4SAEKdQ==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@@ -2268,20 +2293,12 @@ packages:
jest-mock: 27.5.1
dev: true
- /@jest/expect-utils/29.4.2:
- resolution: {integrity: sha512-Dd3ilDJpBnqa0GiPN7QrudVs0cczMMHtehSo2CSTjm3zdHx0RcpmhFNVEltuEFeqfLIyWKFI224FsMSQ/nsJQA==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dependencies:
- jest-get-type: 29.4.2
- dev: true
-
/@jest/expect-utils/29.6.1:
resolution: {integrity: sha512-o319vIf5pEMx0LmzSxxkYYxo4wrRLKHq9dP1yJU7FoPTB0LfAKSz8SWD6D/6U3v/O52t9cF5t+MeJiRsfk7zMw==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
dependencies:
jest-get-type: 29.4.3
dev: true
- optional: true
/@jest/fake-timers/27.5.1:
resolution: {integrity: sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==}
@@ -2342,20 +2359,12 @@ packages:
- supports-color
dev: true
- /@jest/schemas/29.4.2:
- resolution: {integrity: sha512-ZrGzGfh31NtdVH8tn0mgJw4khQuNHiKqdzJAFbCaERbyCP9tHlxWuL/mnMu8P7e/+k4puWjI1NOzi/sFsjce/g==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dependencies:
- '@sinclair/typebox': 0.25.21
- dev: true
-
/@jest/schemas/29.6.0:
resolution: {integrity: sha512-rxLjXyJBTL4LQeJW3aKo0M/+GkCOXsO+8i9Iu7eDb6KwtP65ayoDsitrdPBtujxQ88k4wI2FNYfa6TOGwSn6cQ==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
dependencies:
'@sinclair/typebox': 0.27.8
dev: true
- optional: true
/@jest/source-map/27.5.1:
resolution: {integrity: sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==}
@@ -2433,18 +2442,6 @@ packages:
chalk: 4.1.2
dev: true
- /@jest/types/29.4.2:
- resolution: {integrity: sha512-CKlngyGP0fwlgC1BRUtPZSiWLBhyS9dKwKmyGxk8Z6M82LBEGB2aLQSg+U1MyLsU+M7UjnlLllBM2BLWKVm/Uw==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dependencies:
- '@jest/schemas': 29.4.2
- '@types/istanbul-lib-coverage': 2.0.3
- '@types/istanbul-reports': 3.0.0
- '@types/node': 14.6.4
- '@types/yargs': 17.0.22
- chalk: 4.1.2
- dev: true
-
/@jest/types/29.6.1:
resolution: {integrity: sha512-tPKQNMPuXgvdOn2/Lg9HNfUvjYVGolt04Hp03f5hAk878uwOLikN+JzeLY0HcVgKgFl9Hs3EIqpu3WX27XNhnw==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
@@ -2456,7 +2453,6 @@ packages:
'@types/yargs': 17.0.22
chalk: 4.1.2
dev: true
- optional: true
/@jridgewell/gen-mapping/0.3.2:
resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==}
@@ -2507,6 +2503,13 @@ packages:
'@jridgewell/sourcemap-codec': 1.4.14
dev: true
+ /@ljharb/through/2.3.11:
+ resolution: {integrity: sha512-ccfcIDlogiXNq5KcbAwbaO7lMh3Tm1i3khMPYpxlK8hH/W53zN81KM9coerRLOnTGu3nfXIniAmQbRI9OxbC0w==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.2
+ dev: true
+
/@mdn/browser-compat-data/4.1.4:
resolution: {integrity: sha512-GT+WV0p/3Y90zfyv3alYZykqkySbFxq6lJcK1RMnaoPoA6RGrbXwOnOhD9RPw+Jy6IKdzfUjvtXvrep+qkwwrQ==}
dev: true
@@ -2603,9 +2606,9 @@ packages:
resolution: {integrity: sha512-oZLYFEAzUKyi3SKnXvj32ZCEGH6RDnao7COuCVhDydMS9NrCSVXhM79VaKyP5+Zc33m0QXEd2DN3UkU7OsHcfw==}
dev: true
- /@puppeteer/browsers/1.3.0_typescript@4.6.2:
- resolution: {integrity: sha512-an3QdbNPkuU6qpxpbssxAbjRLJcF+eP4L8UqIY3+6n0sbaVxw5pz7PiCLy9g32XEZuoamUlV5ZQPnA6FxvkIHA==}
- engines: {node: '>=16.0.0'}
+ /@puppeteer/browsers/1.4.6_typescript@4.6.2:
+ resolution: {integrity: sha512-x4BEjr2SjOPowNeiguzjozQbsc6h437ovD/wu+JpaenxVLm3jkgzHY2xOslMTp50HoTvQreMjiexiGQw1sqZlQ==}
+ engines: {node: '>=16.3.0'}
hasBin: true
peerDependencies:
typescript: '>= 4.7.4'
@@ -2615,11 +2618,9 @@ packages:
dependencies:
debug: 4.3.4
extract-zip: 2.0.1
- http-proxy-agent: 5.0.0
- https-proxy-agent: 5.0.1
progress: 2.0.3
- proxy-from-env: 1.1.0
- tar-fs: 2.1.1
+ proxy-agent: 6.3.0
+ tar-fs: 3.0.4
typescript: 4.6.2
unbzip2-stream: 1.4.3
yargs: 17.7.1
@@ -2627,6 +2628,22 @@ packages:
- supports-color
dev: true
+ /@puppeteer/browsers/1.7.1:
+ resolution: {integrity: sha512-nIb8SOBgDEMFY2iS2MdnUZOg2ikcYchRrBoF+wtdjieRFKR2uGRipHY/oFLo+2N6anDualyClPzGywTHRGrLfw==}
+ engines: {node: '>=16.3.0'}
+ hasBin: true
+ dependencies:
+ debug: 4.3.4
+ extract-zip: 2.0.1
+ progress: 2.0.3
+ proxy-agent: 6.3.1
+ tar-fs: 3.0.4
+ unbzip2-stream: 1.4.3
+ yargs: 17.7.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
/@rollup/plugin-alias/3.1.9_rollup@2.70.1:
resolution: {integrity: sha512-QI5fsEvm9bDzt32k39wpOwZhVzRcL5ydcffUHMyLVaVaLeC70I8TJZ17F1z1eMoLu4E/UOcH9BWVkKpIKdrfiw==}
engines: {node: '>=8.0.0'}
@@ -2707,14 +2724,9 @@ packages:
picomatch: 2.3.1
dev: true
- /@sinclair/typebox/0.25.21:
- resolution: {integrity: sha512-gFukHN4t8K4+wVC+ECqeqwzBDeFeTzBXroBTqE6vcWrQGbEUpHO7LYdG0f4xnvYq4VOEwITSlHlp0JBAIFMS/g==}
- dev: true
-
/@sinclair/typebox/0.27.8:
resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==}
dev: true
- optional: true
/@sindresorhus/is/0.7.0:
resolution: {integrity: sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==}
@@ -2764,7 +2776,7 @@ packages:
resolution: {integrity: sha512-PyRA9sm1Yayuj5OIoJ1hGt2YISX45w9WcFbh6ddT0Z/0yaFxOtGLInr4jUfU1EAFVs0Yfyfev4RNwBlUaHdlDQ==}
engines: {node: '>=10'}
dependencies:
- defer-to-connect: 2.0.0
+ defer-to-connect: 2.0.1
/@szmarczak/http-timer/5.0.1:
resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==}
@@ -2782,9 +2794,8 @@ packages:
engines: {node: '>= 6'}
dev: true
- /@tootallnate/once/2.0.0:
- resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==}
- engines: {node: '>= 10'}
+ /@tootallnate/quickjs-emscripten/0.23.0:
+ resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==}
dev: true
/@tsconfig/node10/1.0.8:
@@ -2835,7 +2846,7 @@ packages:
/@types/cacheable-request/6.0.1:
resolution: {integrity: sha512-ykFq2zmBGOCbpIXtoVbz4SKY5QriWPh3AjyU4G74RYbtt5yOc5OfaY75ftjg7mikMOla1CTGpX3lLbuJh8DTrQ==}
dependencies:
- '@types/http-cache-semantics': 4.0.0
+ '@types/http-cache-semantics': 4.0.1
'@types/keyv': 3.1.1
'@types/node': 14.6.4
'@types/responselike': 1.0.0
@@ -2868,12 +2879,8 @@ packages:
'@types/node': 14.6.4
dev: true
- /@types/http-cache-semantics/4.0.0:
- resolution: {integrity: sha512-c3Xy026kOF7QOTn00hbIllV1dLR9hG9NkSrLQgCVs8NF6sBU+VGWjD3wLPhmh1TYAc7ugCFsvHYMN4VcBN1U1A==}
-
/@types/http-cache-semantics/4.0.1:
resolution: {integrity: sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==}
- dev: true
/@types/istanbul-lib-coverage/2.0.3:
resolution: {integrity: sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==}
@@ -2937,10 +2944,6 @@ packages:
resolution: {integrity: sha512-Pf8M1XD9i1ksZEcCP8vuSNwooJ/bZapNmIzpmsMaL+jMI+8mEYU3PKvs+xDNuQcJWF/x24WzY4qxLtB0zNow9A==}
dev: true
- /@types/node/18.13.0:
- resolution: {integrity: sha512-gC3TazRzGoOnoKAhUx+Q0t8S9Tzs74z7m0ipwGpSqQrleP14hKxP4/JUeEQcD3W1/aIpnWl8pHowI7WokuZpXg==}
- dev: true
-
/@types/node/20.3.3:
resolution: {integrity: sha512-wheIYdr4NYML61AjC8MKj/2jrR/kDQri/CIpVoZwldwhnIrD/j9jIU5bJ8yBKuB2VhpFV7Ab6G2XkBjv9r9Zzw==}
dev: true
@@ -2996,8 +2999,8 @@ packages:
resolution: {integrity: sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==}
dev: true
- /@types/split2/3.2.1:
- resolution: {integrity: sha512-7uz3yU+LooBq4yNOzlZD9PU9/1Eu0rTD1MjQ6apOVEoHsPrMUrFw7W8XrvWtesm2vK67SBK9AyJcOXtMpl9bgQ==}
+ /@types/split2/4.2.1:
+ resolution: {integrity: sha512-QwkIwu4daHHpmRYhKIUxQjpVKxKMAniJOiu50ST7vHzFQFrvtGj3d8BJZfqgkAEir/oOcgg43WX5G2VHC6NFtw==}
dependencies:
'@types/node': 14.6.4
dev: true
@@ -3216,150 +3219,118 @@ packages:
weakmap-polyfill: 2.0.4
dev: false
- /@wdio/cli/8.3.5_typescript@4.6.2:
- resolution: {integrity: sha512-xg/03aYpMCEWdcc9dY/GmPePfzTR/yMRJLwtp5WWYrCl6eEAeViSpf4PLC6ieC5O6IMLWVR/2Os8DrC5PKQq/Q==}
+ /@wdio/cli/8.18.2_typescript@4.6.2:
+ resolution: {integrity: sha512-vjMedd7PEHZywxbRE/rHzAPbj+hsCJz5b7vPTXu9QuwH2wWU2ab79ZqQpaUMKwZx8yXJfG6neb89tEbF9ximqQ==}
engines: {node: ^16.13 || >=18}
hasBin: true
dependencies:
- '@types/node': 18.13.0
- '@wdio/config': 8.3.2
- '@wdio/globals': 8.3.5_typescript@4.6.2
- '@wdio/logger': 8.1.0
- '@wdio/protocols': 8.3.5
- '@wdio/types': 8.3.0
- '@wdio/utils': 8.3.0
+ '@types/node': 20.3.3
+ '@wdio/config': 8.18.2
+ '@wdio/globals': 8.18.2_typescript@4.6.2
+ '@wdio/logger': 8.16.17
+ '@wdio/protocols': 8.18.0
+ '@wdio/types': 8.17.0
+ '@wdio/utils': 8.18.2
async-exit-hook: 2.0.1
chalk: 5.2.0
chokidar: 3.5.3
- cli-spinners: 2.7.0
- ejs: 3.1.8
- execa: 6.1.0
- import-meta-resolve: 2.2.1
- inquirer: 9.1.2
+ cli-spinners: 2.9.1
+ dotenv: 16.3.1
+ ejs: 3.1.9
+ execa: 8.0.1
+ import-meta-resolve: 3.0.0
+ inquirer: 9.2.11
lodash.flattendeep: 4.4.0
lodash.pickby: 4.6.0
lodash.union: 4.6.0
- mkdirp: 2.1.3
- read-pkg-up: 9.1.0
- recursive-readdir: 2.2.2
- webdriverio: 8.3.5
- yargs: 17.6.2
+ read-pkg-up: 10.1.0
+ recursive-readdir: 2.2.3
+ webdriverio: 8.18.2_typescript@4.6.2
+ yargs: 17.7.2
yarn-install: 1.0.0
transitivePeerDependencies:
- bufferutil
+ - devtools
- encoding
- supports-color
- typescript
- utf-8-validate
dev: true
- /@wdio/config/8.11.0:
- resolution: {integrity: sha512-nBQXsXbPCjddtI/3rAK5yFs3eD3f0T3lZMivweTkLLR7GKBxGjiFoBjXtfqUrHJYa+2uwfXrwxo6y+dA6fVbuw==}
+ /@wdio/config/8.18.2:
+ resolution: {integrity: sha512-O3K36Wk/G/P5t9NfI/jBjLMdJq1KEDQTmbLvrbRckqzX5SQmPFg2pg18gE9N3JQE4A7qR+imxVo45HmhFDyn4w==}
engines: {node: ^16.13 || >=18}
dependencies:
- '@wdio/logger': 8.11.0
- '@wdio/types': 8.10.4
- '@wdio/utils': 8.11.0
+ '@wdio/logger': 8.16.17
+ '@wdio/types': 8.17.0
+ '@wdio/utils': 8.18.2
decamelize: 6.0.0
deepmerge-ts: 5.1.0
glob: 10.3.1
import-meta-resolve: 3.0.0
- read-pkg-up: 9.1.0
- dev: true
-
- /@wdio/config/8.3.2:
- resolution: {integrity: sha512-lLZh53MorYRxAr08x2o6B1npRgc5ZmGEGdzH2neILnVcs/x3fQV9uFKpC9sKtMmU8B0G0oMUSoIaj8GfqygcNQ==}
- engines: {node: ^16.13 || >=18}
- dependencies:
- '@wdio/logger': 8.1.0
- '@wdio/types': 8.3.0
- '@wdio/utils': 8.3.0
- decamelize: 6.0.0
- deepmerge-ts: 4.3.0
- glob: 8.1.0
- import-meta-resolve: 2.2.1
- read-pkg-up: 9.1.0
- dev: true
-
- /@wdio/globals/8.11.2_typescript@4.6.2:
- resolution: {integrity: sha512-oaPyGLmWOHQLYtT6Jn3mtZBSYyWxau6ncBDLPJDUwOxufi3tfT9DOen+65OGBK55GfjrCAZOSGAJ13mN/swIQQ==}
- engines: {node: ^16.13 || >=18}
- optionalDependencies:
- expect-webdriverio: 4.2.6_typescript@4.6.2
- webdriverio: 8.11.2_typescript@4.6.2
+ read-pkg-up: 10.1.0
transitivePeerDependencies:
- - bufferutil
- - encoding
- supports-color
- - typescript
- - utf-8-validate
dev: true
- /@wdio/globals/8.3.5_typescript@4.6.2:
- resolution: {integrity: sha512-w8JZ2seRMe9iPfMYCiKHT1LJIZBUhgT+2ROBDd4ZUP75RzyC0ayZn9CqA6sNCPL6Iq0DSgpqx0U7YVJQCwzwMA==}
+ /@wdio/globals/8.18.2_typescript@4.6.2:
+ resolution: {integrity: sha512-hHZqqWlvEaVHru+e5bMXsTBbPqKi85JO5q2XKX+ixS4XWoZXoMjN5WzL/3N9GkF2mJqIkyb9DHUT0T2vvf3oNA==}
engines: {node: ^16.13 || >=18}
optionalDependencies:
expect-webdriverio: 4.2.6_typescript@4.6.2
- webdriverio: 8.3.5
+ webdriverio: 8.18.2_typescript@4.6.2
transitivePeerDependencies:
- bufferutil
+ - devtools
- encoding
- supports-color
- typescript
- utf-8-validate
dev: true
- /@wdio/jasmine-framework/8.3.5_typescript@4.6.2:
- resolution: {integrity: sha512-HOWq5/nsvkFwx5OJ7ZxmCLTA80k9jVOU/5eImaI3b0b5Ewy6WOtEnQi6B1F+i8X7/G+QRotPk4qZeht/Y1NIyQ==}
+ /@wdio/jasmine-framework/8.18.2_typescript@4.6.2:
+ resolution: {integrity: sha512-NB4U75PX6ZaVmskSHZriSFSFSEUqmzSjlZpjC0gm/an/FZGxeMflJlHLO8E8T2T8/xsYiWuin0OywFfPK/9anA==}
engines: {node: ^16.13 || >=18}
dependencies:
- '@types/node': 18.13.0
- '@wdio/globals': 8.3.5_typescript@4.6.2
- '@wdio/logger': 8.1.0
- '@wdio/types': 8.3.0
- '@wdio/utils': 8.3.0
- expect-webdriverio: 4.1.1_typescript@4.6.2
- jasmine: 4.5.0
+ '@types/node': 20.3.3
+ '@wdio/globals': 8.18.2_typescript@4.6.2
+ '@wdio/logger': 8.16.17
+ '@wdio/types': 8.17.0
+ '@wdio/utils': 8.18.2
+ expect-webdriverio: 4.2.6_typescript@4.6.2
+ jasmine: 5.1.0
transitivePeerDependencies:
- bufferutil
+ - devtools
- encoding
- supports-color
- typescript
- utf-8-validate
dev: true
- /@wdio/local-runner/8.3.5_typescript@4.6.2:
- resolution: {integrity: sha512-Sg53i8KHAgvc55VsAZ7uZC/IQ5uPtlOY5rKY+XCjemQ5Y3KqqMxHc+X4VFmlsflB43K9CWzizkzq2ukctqKDXQ==}
+ /@wdio/local-runner/8.18.2_typescript@4.6.2:
+ resolution: {integrity: sha512-W5QRXmH+MngHEVktsX6WXyoP/WI3mSlN66E1xGYLtMVwPhp3wMXDIrk1K/0UCAViX7lQ3tvo0B2QoZhsAXVT+A==}
engines: {node: ^16.13 || >=18}
dependencies:
- '@types/node': 18.13.0
- '@wdio/logger': 8.1.0
- '@wdio/repl': 8.1.0
- '@wdio/runner': 8.3.5_typescript@4.6.2
- '@wdio/types': 8.3.0
+ '@types/node': 20.3.3
+ '@wdio/logger': 8.16.17
+ '@wdio/repl': 8.10.1
+ '@wdio/runner': 8.18.2_typescript@4.6.2
+ '@wdio/types': 8.17.0
async-exit-hook: 2.0.1
- split2: 4.1.0
+ split2: 4.2.0
stream-buffers: 3.0.2
transitivePeerDependencies:
- bufferutil
+ - devtools
- encoding
- supports-color
- typescript
- utf-8-validate
dev: true
- /@wdio/logger/8.1.0:
- resolution: {integrity: sha512-QRC5b7FF4JIYUCqggnVA0sZ80TwIUFN9JyBSbuGuMxaSLSLujSo7WfuSrnQXVvsRbnJ16wWwJWYigfLkxOW86Q==}
- engines: {node: ^16.13 || >=18}
- dependencies:
- chalk: 5.2.0
- loglevel: 1.7.1
- loglevel-plugin-prefix: 0.8.4
- strip-ansi: 6.0.1
- dev: true
-
- /@wdio/logger/8.11.0:
- resolution: {integrity: sha512-IsuKSaYi7NKEdgA57h8muzlN/MVp1dQG+V4C//7g4m03YJUnNQLvDhJzLjdeNTfvZy61U7foQSyt+3ktNzZkXA==}
+ /@wdio/logger/8.16.17:
+ resolution: {integrity: sha512-zeQ41z3T+b4IsrriZZipayXxLNDuGsm7TdExaviNGojPVrIsQUCSd/FvlLHM32b7ZrMyInHenu/zx1cjAZO71g==}
engines: {node: ^16.13 || >=18}
dependencies:
chalk: 5.2.0
@@ -3368,19 +3339,8 @@ packages:
strip-ansi: 7.1.0
dev: true
- /@wdio/protocols/8.11.0:
- resolution: {integrity: sha512-eXTMYt/XoaX53H/Q2qmsn1uWthIC5aSTGtX9YyXD/AkagG2hXeX3lLmzNWBaSIvKR+vWXRYbg3Y/7IvL2s25Wg==}
- dev: true
-
- /@wdio/protocols/8.3.5:
- resolution: {integrity: sha512-/zWz+ok6gIB1/L/VEOCoD8nCB8inNF+rsVOYps3FgNbrliQ782YLfA1uAVJTw3U6CaO+7zZ8aJw82EswpoxWjg==}
- dev: true
-
- /@wdio/repl/8.1.0:
- resolution: {integrity: sha512-96G4TzbYnRf95+GURo15FYt6iTYq85nbWU6YQedLRAV15RfSp4foKTbAnq++bKKMALNL6gdzTc+HGhQr3Q0sQg==}
- engines: {node: ^16.13 || >=18}
- dependencies:
- '@types/node': 18.13.0
+ /@wdio/protocols/8.18.0:
+ resolution: {integrity: sha512-TABA0mksHvu5tE8qNYYDR0fDyo90NCANeghbGAtsI8TUsJzgH0dwpos3WSSiB97J9HRSZuWIMa7YuABEkBIjWQ==}
dev: true
/@wdio/repl/8.10.1:
@@ -3390,129 +3350,127 @@ packages:
'@types/node': 20.3.3
dev: true
- /@wdio/reporter/8.3.0:
- resolution: {integrity: sha512-SCI6YXMDOs+rIDXUqaQYncv3SAcMPU9nQKGCLWjtZXsYHYlLZMT/PaFy7lWyebsObiRAKJYayXOqG7ymS6hDzA==}
+ /@wdio/reporter/8.17.0:
+ resolution: {integrity: sha512-U4GMgHjH+mgtwKUXHk1fYsIwET0NUvC5efWN8z/pSyzc93iHHzl1cY4FSAjND6KTnPFpxJB+3EamgQRpC2P92Q==}
engines: {node: ^16.13 || >=18}
dependencies:
- '@types/node': 18.13.0
- '@wdio/logger': 8.1.0
- '@wdio/types': 8.3.0
+ '@types/node': 20.3.3
+ '@wdio/logger': 8.16.17
+ '@wdio/types': 8.17.0
diff: 5.0.0
object-inspect: 1.12.0
- supports-color: 9.3.1
dev: true
- /@wdio/runner/8.3.5_typescript@4.6.2:
- resolution: {integrity: sha512-W0h1U90zGFmYvqfWsmtb3myDqFsHhHy6z9ngQDLOCKg6iwKWFvMW2Db3BJ1D641/lA2dRWFH5XklQqD6trsydg==}
+ /@wdio/runner/8.18.2_typescript@4.6.2:
+ resolution: {integrity: sha512-UPfvKA9yunEadHHDZwveZmKL0ayHDCkUegzUzgHFYmhnijUAa1Xeo837NpBe9y753TWt5PgRA4BIXSDlxJ9ySA==}
engines: {node: ^16.13 || >=18}
dependencies:
- '@types/node': 18.13.0
- '@wdio/config': 8.3.2
- '@wdio/globals': 8.3.5_typescript@4.6.2
- '@wdio/logger': 8.1.0
- '@wdio/types': 8.3.0
- '@wdio/utils': 8.3.0
- deepmerge-ts: 4.3.0
- expect-webdriverio: 4.1.1_typescript@4.6.2
+ '@types/node': 20.3.3
+ '@wdio/config': 8.18.2
+ '@wdio/globals': 8.18.2_typescript@4.6.2
+ '@wdio/logger': 8.16.17
+ '@wdio/types': 8.17.0
+ '@wdio/utils': 8.18.2
+ deepmerge-ts: 5.1.0
+ expect-webdriverio: 4.2.6_typescript@4.6.2
gaze: 1.1.3
- webdriver: 8.3.5
- webdriverio: 8.3.5
+ webdriver: 8.18.2
+ webdriverio: 8.18.2_typescript@4.6.2
transitivePeerDependencies:
- bufferutil
+ - devtools
- encoding
- supports-color
- typescript
- utf-8-validate
dev: true
- /@wdio/sauce-service/8.3.5:
- resolution: {integrity: sha512-KC4akZf3KlV5E2dikcVAbxzIY+XfexjomDD/2EzrvOtkZzSLwAHZ7aNzLBWrmYxFPDBjj34a/AenWGKSBpko1A==}
+ /@wdio/sauce-service/8.18.2_typescript@4.6.2:
+ resolution: {integrity: sha512-lKSWJGrpqb0BBOCko8uf/aKu3jsLeJ3E3dZL/D97amVH7oXTo2XOWr3n8mbSxkJjEFRW3CtbQ9FgXVAcNmnVuQ==}
engines: {node: ^16.13 || >=18}
dependencies:
- '@wdio/logger': 8.1.0
- '@wdio/types': 8.3.0
- '@wdio/utils': 8.3.0
+ '@wdio/logger': 8.16.17
+ '@wdio/types': 8.17.0
+ '@wdio/utils': 8.18.2
ip: 1.1.8
- saucelabs: 7.2.0
- webdriverio: 8.3.5
+ saucelabs: 7.2.2
+ webdriverio: 8.18.2_typescript@4.6.2
transitivePeerDependencies:
- bufferutil
+ - devtools
- encoding
- supports-color
+ - typescript
- utf-8-validate
dev: true
- /@wdio/shared-store-service/8.11.2_typescript@4.6.2:
- resolution: {integrity: sha512-NLt7HFmHfe43yfG1QymWcUSzUxe9j5Wq9ak/N7Q9MYJXZoqGiMi4pXuYVVmbaFC6/QPT1Ix6yssFo3cKIT8oUA==}
+ /@wdio/shared-store-service/8.18.2_typescript@4.6.2:
+ resolution: {integrity: sha512-zxbPVP/YAU4ZhqPeusUtAMvXWrT2xKtEcWTRWrvh42xzPQ0JIMx0GLMxatP+zyhciUIsT4yLEXTugX+sGiLrLQ==}
engines: {node: ^16.13 || >=18}
dependencies:
'@polka/parse': 1.0.0-next.0
- '@wdio/logger': 8.11.0
- '@wdio/types': 8.10.4
+ '@wdio/logger': 8.16.17
+ '@wdio/types': 8.17.0
got: 12.6.1
polka: 0.5.2
- webdriverio: 8.11.2_typescript@4.6.2
+ webdriverio: 8.18.2_typescript@4.6.2
transitivePeerDependencies:
- bufferutil
+ - devtools
- encoding
- supports-color
- typescript
- utf-8-validate
dev: true
- /@wdio/spec-reporter/8.3.0:
- resolution: {integrity: sha512-2K+qMNM5rYMCJdw5M3H6XfXUkto/jLnE2GgAI7VoTo6mZVOGGCRRPVtCa7NR/asWF+P0iBl9PJbPFv2/TzV59A==}
+ /@wdio/spec-reporter/8.18.1:
+ resolution: {integrity: sha512-p6l8mR7K+l66QJl/m+sV9ahCp570ThaqxLc3npYDt5N4ut/qqDgqnwVU3qt0kwx/QMLrYLiXjjMKXqs6DkJTiA==}
engines: {node: ^16.13 || >=18}
dependencies:
- '@wdio/reporter': 8.3.0
- '@wdio/types': 8.3.0
+ '@wdio/reporter': 8.17.0
+ '@wdio/types': 8.17.0
chalk: 5.2.0
easy-table: 1.2.0
pretty-ms: 7.0.1
dev: true
- /@wdio/static-server-service/8.3.0:
- resolution: {integrity: sha512-kh77zj+Zz4W/EnhnmlHnWjEhj0W0fVL6kXh0AeH/SGHTfiI7o8NdJa8e0yjr8Dh5mCUZuvBp4eIU1Ull25qhfg==}
+ /@wdio/static-server-service/8.17.0:
+ resolution: {integrity: sha512-EzivlQDF2/P5jqlp4+0PjwrVSkMAHtoXwcDfA+nabVyoxW/F6tHvooKGOL7gWQhO+T5C5JwMUmsF00KldHkZow==}
engines: {node: ^16.13 || >=18}
dependencies:
- '@wdio/logger': 8.1.0
- '@wdio/types': 8.3.0
+ '@wdio/logger': 8.16.17
+ '@wdio/types': 8.17.0
express: 4.17.1
morgan: 1.10.0
dev: true
- /@wdio/types/8.10.4:
- resolution: {integrity: sha512-aLJ1QQW+hhALeRK3bvMLjIrlUVyhOs3Od+91pR4Z4pLwyeNG1bJZCJRD5bAJK/mm7CnFa0NsdixPS9jJxZcRrw==}
+ /@wdio/types/8.17.0:
+ resolution: {integrity: sha512-OkIpr5iHcwFXQpr4csXsiQ/WelX+Dhz/A8STFzoDQFYxMlR3nzm/S+Q1P4UoJfyhrNWlsFpLhShGK1cn+XUE5Q==}
engines: {node: ^16.13 || >=18}
dependencies:
'@types/node': 20.3.3
dev: true
- /@wdio/types/8.3.0:
- resolution: {integrity: sha512-TTs3ETVOJtooTIY/u2+feeBnMBx2Hb4SEItN31r0pFncn37rnIZXE/buywLNf5wvZW9ukxoCup5hCnohOR27eQ==}
+ /@wdio/utils/8.18.2:
+ resolution: {integrity: sha512-TQrrKv+knFn4Z/T/e/+wdnBoykNBg6rfo0NsAwaWh4PbJ1tf+Dc9GjzWhvJTgHwZf4v78K8Z+77qkqoLCF1wSg==}
engines: {node: ^16.13 || >=18}
dependencies:
- '@types/node': 18.13.0
- dev: true
-
- /@wdio/utils/8.11.0:
- resolution: {integrity: sha512-XBl1zalk5UPu8QKZ7LZIA82Ad363fpNHZHP5uI5OxUFnk4ZPWgY9eCWpeD+4f9a0DS0w2Dro15E4PORNX84pIw==}
- engines: {node: ^16.13 || >=18}
- dependencies:
- '@wdio/logger': 8.11.0
- '@wdio/types': 8.10.4
+ '@puppeteer/browsers': 1.7.1
+ '@wdio/logger': 8.16.17
+ '@wdio/types': 8.17.0
+ decamelize: 6.0.0
+ deepmerge-ts: 5.1.0
+ edgedriver: 5.3.8
+ geckodriver: 4.2.1
+ get-port: 7.0.0
+ got: 13.0.0
import-meta-resolve: 3.0.0
- p-iteration: 1.1.8
- dev: true
-
- /@wdio/utils/8.3.0:
- resolution: {integrity: sha512-BbgzxAu4AN99l9hwaRUvkvBJLeIxON7F6ts+vq4LASRiGVRErrwYGeO9H3ffYgpCAaYSvXnw2GtOf2SQGaPoLA==}
- engines: {node: ^16.13 || >=18}
- dependencies:
- '@wdio/logger': 8.1.0
- '@wdio/types': 8.3.0
- import-meta-resolve: 2.2.1
- p-iteration: 1.1.8
+ locate-app: 2.1.0
+ safaridriver: 0.1.0
+ split2: 4.2.0
+ wait-port: 1.0.4
+ transitivePeerDependencies:
+ - supports-color
dev: true
/@wessberg/stringutil/1.0.19:
@@ -3593,6 +3551,15 @@ packages:
- supports-color
dev: true
+ /agent-base/7.1.0:
+ resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==}
+ engines: {node: '>= 14'}
+ dependencies:
+ debug: 4.3.4
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
/agentkeepalive/4.2.1:
resolution: {integrity: sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==}
engines: {node: '>= 8.0.0'}
@@ -3642,11 +3609,11 @@ packages:
type-fest: 0.11.0
dev: true
- /ansi-escapes/5.0.0:
- resolution: {integrity: sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==}
- engines: {node: '>=12'}
+ /ansi-escapes/4.3.2:
+ resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==}
+ engines: {node: '>=8'}
dependencies:
- type-fest: 1.4.0
+ type-fest: 0.21.3
dev: true
/ansi-regex/2.1.1:
@@ -3712,33 +3679,29 @@ packages:
file-type: 4.4.0
dev: true
- /archiver-utils/2.1.0:
- resolution: {integrity: sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==}
- engines: {node: '>= 6'}
+ /archiver-utils/4.0.1:
+ resolution: {integrity: sha512-Q4Q99idbvzmgCTEAAhi32BkOyq8iVI5EwdO0PmBDSGIzzjYNdcFn7Q7k3OzbLy4kLUPXfJtG6fO2RjftXbobBg==}
+ engines: {node: '>= 12.0.0'}
dependencies:
- glob: 7.2.0
+ glob: 8.1.0
graceful-fs: 4.2.9
lazystream: 1.0.0
- lodash.defaults: 4.2.0
- lodash.difference: 4.5.0
- lodash.flatten: 4.4.0
- lodash.isplainobject: 4.0.6
- lodash.union: 4.6.0
+ lodash: 4.17.21
normalize-path: 3.0.0
- readable-stream: 2.3.7
+ readable-stream: 3.6.0
dev: true
- /archiver/5.1.0:
- resolution: {integrity: sha512-iKuQUP1nuKzBC2PFlGet5twENzCfyODmvkxwDV0cEFXavwcLrIW5ssTuHi9dyTPvpWr6Faweo2eQaQiLIwyXTA==}
- engines: {node: '>= 10'}
+ /archiver/6.0.1:
+ resolution: {integrity: sha512-CXGy4poOLBKptiZH//VlWdFuUC1RESbdZjGjILwBuZ73P7WkAUN0htfSfBq/7k6FRFlpu7bg4JOkj1vU9G6jcQ==}
+ engines: {node: '>= 12.0.0'}
dependencies:
- archiver-utils: 2.1.0
- async: 3.2.0
+ archiver-utils: 4.0.1
+ async: 3.2.4
buffer-crc32: 0.2.13
readable-stream: 3.6.0
- readdir-glob: 1.1.1
- tar-stream: 2.1.4
- zip-stream: 4.0.4
+ readdir-glob: 1.1.3
+ tar-stream: 3.1.6
+ zip-stream: 5.0.1
dev: true
/are-we-there-yet/1.1.7:
@@ -3802,15 +3765,18 @@ packages:
engines: {node: '>=0.8'}
dev: true
+ /ast-types/0.13.4:
+ resolution: {integrity: sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==}
+ engines: {node: '>=4'}
+ dependencies:
+ tslib: 2.3.1
+ dev: true
+
/async-exit-hook/2.0.1:
resolution: {integrity: sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==}
engines: {node: '>=0.12.0'}
dev: true
- /async/3.2.0:
- resolution: {integrity: sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==}
- dev: true
-
/async/3.2.4:
resolution: {integrity: sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==}
dev: true
@@ -3896,6 +3862,10 @@ packages:
- debug
dev: true
+ /b4a/1.6.4:
+ resolution: {integrity: sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==}
+ dev: true
+
/babel-jest/27.5.1_@babel+core@7.12.10:
resolution: {integrity: sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==}
engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
@@ -3984,6 +3954,11 @@ packages:
safe-buffer: 5.1.2
dev: true
+ /basic-ftp/5.0.3:
+ resolution: {integrity: sha512-QHX8HLlncOLpy54mh+k/sWIFd0ThmRqwe9ZjELybGZK+tZ8rUb9VO0saKJUROTbE+KhzDUT7xziGpGrW8Kmd+g==}
+ engines: {node: '>=10.0.0'}
+ dev: true
+
/bcrypt-pbkdf/1.0.2:
resolution: {integrity: sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=}
dependencies:
@@ -4014,22 +3989,14 @@ packages:
safe-buffer: 5.2.1
dev: true
- /bl/4.0.3:
- resolution: {integrity: sha512-fs4G6/Hu4/EE+F75J8DuN/0IpQqNjAdC7aEQv7Qt8MHGUH7Ckv2MwTEEeN9QehD0pfIDkMI1bkHYkKy7xHyKIg==}
+ /bl/4.1.0:
+ resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==}
dependencies:
buffer: 5.7.1
inherits: 2.0.4
readable-stream: 3.6.0
dev: true
- /bl/5.1.0:
- resolution: {integrity: sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==}
- dependencies:
- buffer: 6.0.3
- inherits: 2.0.4
- readable-stream: 3.6.0
- dev: true
-
/bluebird/3.4.7:
resolution: {integrity: sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==}
dev: true
@@ -4187,13 +4154,6 @@ packages:
ieee754: 1.2.1
dev: true
- /buffer/6.0.3:
- resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==}
- dependencies:
- base64-js: 1.5.1
- ieee754: 1.2.1
- dev: true
-
/buffers/0.1.1:
resolution: {integrity: sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==}
engines: {node: '>=0.2.0'}
@@ -4220,7 +4180,7 @@ packages:
camelcase-keys: 3.0.0
chalk: 1.1.3
indent-string: 3.2.0
- minimist: 1.2.5
+ minimist: 1.2.8
read-pkg-up: 1.0.1
suffix: 0.1.1
text-table: 0.2.0
@@ -4272,19 +4232,6 @@ packages:
responselike: 3.0.0
dev: true
- /cacheable-request/10.2.7:
- resolution: {integrity: sha512-I4SA6mKgDxcxVbSt/UmIkb9Ny8qSkg6ReBHtAAXnZHk7KOSx5g3DTiAOaYzcHCs6oOdHn+bip9T48E6tMvK9hw==}
- engines: {node: '>=14.16'}
- dependencies:
- '@types/http-cache-semantics': 4.0.1
- get-stream: 6.0.1
- http-cache-semantics: 4.1.1
- keyv: 4.5.2
- mimic-response: 4.0.0
- normalize-url: 8.0.0
- responselike: 3.0.0
- dev: true
-
/cacheable-request/2.1.4:
resolution: {integrity: sha512-vag0O2LKZ/najSoUwDbVlnlCFvhBE/7mGTY2B5FgCBDcRD+oVV1HYTOwM6JZfMg/hIcM6IwnTZ1uQQL5/X3xIQ==}
dependencies:
@@ -4303,8 +4250,8 @@ packages:
dependencies:
clone-response: 1.0.2
get-stream: 5.2.0
- http-cache-semantics: 4.1.0
- keyv: 4.0.3
+ http-cache-semantics: 4.1.1
+ keyv: 4.5.2
lowercase-keys: 2.0.0
normalize-url: 6.1.0
responselike: 2.0.0
@@ -4326,13 +4273,6 @@ packages:
engines: {node: '>=12.20'}
dev: true
- /camaro/6.2.0:
- resolution: {integrity: sha512-81zTKgZb2LnkZKtLbIqLqBzQ6stWSlWC3I/lZd5u4NJVljDgMcsZqn9zZ+Yij/yNyiVpko0EhOKdYa6YAbOWrA==}
- engines: {node: '>= 12.0.0'}
- dependencies:
- piscina: 3.2.0
- dev: true
-
/camel-case/4.1.2:
resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==}
dependencies:
@@ -4430,6 +4370,11 @@ packages:
engines: {node: ^12.17.0 || ^14.13 || >=16.0.0}
dev: true
+ /chalk/5.3.0:
+ resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==}
+ engines: {node: ^12.17.0 || ^14.13 || >=16.0.0}
+ dev: true
+
/change-case/4.1.2:
resolution: {integrity: sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==}
dependencies:
@@ -4484,17 +4429,6 @@ packages:
engines: {node: '>=10'}
dev: true
- /chrome-launcher/0.15.0:
- resolution: {integrity: sha512-ZQqX5kb9H0+jy1OqLnWampfocrtSZaGl7Ny3F9GRha85o4odbL8x55paUzh51UC7cEmZ5obp3H2Mm70uC2PpRA==}
- engines: {node: '>=12.13.0'}
- hasBin: true
- dependencies:
- '@types/node': 14.6.4
- escape-string-regexp: 4.0.0
- is-wsl: 2.2.0
- lighthouse-logger: 1.2.0
- dev: true
-
/chromedriver/114.0.2:
resolution: {integrity: sha512-v0qrXRBknbxqmtklG7RWOe3TJ/dLaHhtB0jVxE7BAdYERxUjEaNRyqBwoGgVfQDibHCB0swzvzsj158nnfPgZw==}
engines: {node: '>=16'}
@@ -4513,12 +4447,12 @@ packages:
- supports-color
dev: true
- /chromium-bidi/0.4.9_devtools-protocol@0.0.1120988:
- resolution: {integrity: sha512-u3DC6XwgLCA9QJ5ak1voPslCmacQdulZNCPsI3qNXxSnEcZS7DFIbww+5RM2bznMEje7cc0oydavRLRvOIZtHw==}
+ /chromium-bidi/0.4.16_devtools-protocol@0.0.1147663:
+ resolution: {integrity: sha512-7ZbXdWERxRxSwo3txsBjjmc/NLxqb1Bk30mRb0BMS4YIaiV6zvKZqL/UAH+DdqcDYayDWk2n/y8klkBDODrPvA==}
peerDependencies:
devtools-protocol: '*'
dependencies:
- devtools-protocol: 0.0.1120988
+ devtools-protocol: 0.0.1147663
mitt: 3.0.0
dev: true
@@ -4564,15 +4498,15 @@ packages:
engines: {node: '>=6'}
dev: true
- /cli-cursor/4.0.0:
- resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+ /cli-cursor/3.1.0:
+ resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==}
+ engines: {node: '>=8'}
dependencies:
- restore-cursor: 4.0.0
+ restore-cursor: 3.1.0
dev: true
- /cli-spinners/2.7.0:
- resolution: {integrity: sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==}
+ /cli-spinners/2.9.1:
+ resolution: {integrity: sha512-jHgecW0pxkonBJdrKsqxgRX9AcG+u/5k0Q7WPDfi8AogLAdwxEkyYYNWwZ5GvVFoFx2uiY1eNcSK00fh+1+FyQ==}
engines: {node: '>=6'}
dev: true
@@ -4584,8 +4518,8 @@ packages:
string-width: 5.1.0
dev: true
- /cli-width/4.0.0:
- resolution: {integrity: sha512-ZksGS2xpa/bYkNzN3BAw1wEjsLV/ZKOf/CCrJ/QOBsxx6fOARIkwTutxp1XIOIohi6HKmOFjMoK/XaqDVUpEEw==}
+ /cli-width/4.1.0:
+ resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==}
engines: {node: '>= 12'}
dev: true
@@ -4612,7 +4546,7 @@ packages:
dev: true
/clone-response/1.0.2:
- resolution: {integrity: sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=}
+ resolution: {integrity: sha512-yjLXh88P599UOyPTFX0POsd7WxnbsVsGohcwzHOLspIhhpalPw1BcqED8NblyZLKcGrL8dTgMlcaZxV2jAD41Q==}
dependencies:
mimic-response: 1.0.1
@@ -4727,16 +4661,31 @@ packages:
typescript: 4.6.2
dev: true
- /compress-commons/4.0.2:
- resolution: {integrity: sha512-qhd32a9xgzmpfoga1VQEiLEwdKZ6Plnpx5UCgIsf89FSolyJ7WnifY4Gtjgv5WR6hWAyRaHxC5MiEhU/38U70A==}
- engines: {node: '>= 10'}
+ /compress-commons/5.0.1:
+ resolution: {integrity: sha512-MPh//1cERdLtqwO3pOFLeXtpuai0Y2WCd5AhtKxznqM7WtaMYaOEMSgn45d9D10sIHSfIKE603HlOp8OPGrvag==}
+ engines: {node: '>= 12.0.0'}
dependencies:
- buffer-crc32: 0.2.13
- crc32-stream: 4.0.1
+ crc-32: 1.2.0
+ crc32-stream: 5.0.0
normalize-path: 3.0.0
readable-stream: 3.6.0
dev: true
+ /compressing/1.10.0:
+ resolution: {integrity: sha512-k2vpbZLaJoHe9euyUZjYYE8vOrbR19aU3HcWIYw5EBXiUs34ygfDVnXU+ubI41JXMriHutnoiu0ZFdwCkH6jPA==}
+ engines: {node: '>= 4.0.0'}
+ dependencies:
+ '@eggjs/yauzl': 2.11.0
+ flushwritable: 1.0.0
+ get-ready: 1.0.0
+ iconv-lite: 0.5.2
+ mkdirp: 0.5.6
+ pump: 3.0.0
+ streamifier: 0.1.1
+ tar-stream: 1.6.2
+ yazl: 2.5.1
+ dev: true
+
/concat-map/0.0.1:
resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=}
dev: true
@@ -4821,9 +4770,9 @@ packages:
printj: 1.1.2
dev: true
- /crc32-stream/4.0.1:
- resolution: {integrity: sha512-FN5V+weeO/8JaXsamelVYO1PHyeCsuL3HcG4cqsj0ceARcocxalaShCsohZMSAF+db7UYFwBy1rARK/0oFItUw==}
- engines: {node: '>= 10'}
+ /crc32-stream/5.0.0:
+ resolution: {integrity: sha512-B0EPa1UK+qnpBZpG+7FgPCu0J2ETLpXq09o9BkLkEAhdB6Z61Qo4pJ3JYu0c+Qi+/SAL7QThqnzS06pmSSyZaw==}
+ engines: {node: '>= 12.0.0'}
dependencies:
crc-32: 1.2.0
readable-stream: 3.6.0
@@ -4833,16 +4782,8 @@ packages:
resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==}
dev: true
- /cross-fetch/3.1.5:
- resolution: {integrity: sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==}
- dependencies:
- node-fetch: 2.6.7
- transitivePeerDependencies:
- - encoding
- dev: true
-
- /cross-fetch/3.1.6:
- resolution: {integrity: sha512-riRvo06crlE8HiqOwIpQhxwdOk4fOeR7FVM/wXoxchFEqMNUjvbs3bfo4OTgMEMHzppd4DxFBDbyySj8Cv781g==}
+ /cross-fetch/4.0.0:
+ resolution: {integrity: sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==}
dependencies:
node-fetch: 2.6.12
transitivePeerDependencies:
@@ -4929,6 +4870,11 @@ packages:
engines: {node: '>= 12'}
dev: true
+ /data-uri-to-buffer/6.0.1:
+ resolution: {integrity: sha512-MZd3VlchQkp8rdend6vrx7MmVDJzSNTBvghvKjirLkD+WTChA3KUf0jkE68Q4UyctNqI11zZO9/x2Yx+ub5Cvg==}
+ engines: {node: '>= 14'}
+ dev: true
+
/data-urls/2.0.0:
resolution: {integrity: sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==}
engines: {node: '>=10'}
@@ -4996,8 +4942,8 @@ packages:
resolution: {integrity: sha512-KaL7+6Fw6i5A2XSnsbhm/6B+NuEA7TZ4vqxnd5tXz9sbKtrN9Srj8ab4vKVdK8YAqZO9P1kg45Y6YLoduPf+kw==}
dev: true
- /decode-uri-component/0.2.0:
- resolution: {integrity: sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==}
+ /decode-uri-component/0.2.2:
+ resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==}
engines: {node: '>=0.10'}
dev: true
@@ -5075,11 +5021,6 @@ packages:
resolution: {integrity: sha512-GtxAN4HvBachZzm4OnWqc45ESpUCMwkYcsjnsPs23FwJbsO+k4t0k9bQCgOmzIlpHO28+WPK/KRbRk0DDHuuDw==}
dev: true
- /deepmerge-ts/4.3.0:
- resolution: {integrity: sha512-if3ZYdkD2dClhnXR5reKtG98cwyaRT1NeugQoAPTTfsOpV9kqyeiBF9Qa5RHjemb3KzD5ulqygv6ED3t5j9eJw==}
- engines: {node: '>=12.4.0'}
- dev: true
-
/deepmerge-ts/5.1.0:
resolution: {integrity: sha512-eS8dRJOckyo9maw9Tu5O5RUi/4inFLrnoLkBe3cPfDMx3WZioXtmOew4TXQaxq7Rhl4xjDtR7c6x8nNTxOvbFw==}
engines: {node: '>=16.0.0'}
@@ -5096,14 +5037,9 @@ packages:
clone: 1.0.4
dev: true
- /defer-to-connect/2.0.0:
- resolution: {integrity: sha512-bYL2d05vOSf1JEZNx5vSAtPuBMkX8K9EUutg7zlKvTqKXHt7RhWJFbmd7qakVuf13i+IkGmp6FwSsONOf6VYIg==}
- engines: {node: '>=10'}
-
/defer-to-connect/2.0.1:
resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==}
engines: {node: '>=10'}
- dev: true
/define-properties/1.1.3:
resolution: {integrity: sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==}
@@ -5112,6 +5048,15 @@ packages:
object-keys: 1.1.1
dev: true
+ /degenerator/5.0.1:
+ resolution: {integrity: sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==}
+ engines: {node: '>= 14'}
+ dependencies:
+ ast-types: 0.13.4
+ escodegen: 2.1.0
+ esprima: 4.0.1
+ dev: true
+
/del/6.0.0:
resolution: {integrity: sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ==}
engines: {node: '>=10'}
@@ -5136,7 +5081,7 @@ packages:
dev: true
/depd/1.1.2:
- resolution: {integrity: sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=}
+ resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==}
engines: {node: '>= 0.6'}
dev: true
@@ -5154,71 +5099,12 @@ packages:
engines: {node: '>=8'}
dev: true
- /devtools-protocol/0.0.1082910:
- resolution: {integrity: sha512-RqoZ2GmqaNxyx+99L/RemY5CkwG9D0WEfOKxekwCRXOGrDCep62ngezEJUVMq6rISYQ+085fJnWDQqGHlxVNww==}
- dev: true
-
- /devtools-protocol/0.0.1101329:
- resolution: {integrity: sha512-3ph1q/ShAKFNnc7quSsAKTKAkQW/32gR4tRNAoqVzdAbyT8PjQFW/HzVWDm5mqP7zBd9nP1nd9jA1JHTHrJCXg==}
+ /devtools-protocol/0.0.1147663:
+ resolution: {integrity: sha512-hyWmRrexdhbZ1tcJUGpO95ivbRhWXz++F4Ko+n21AY5PNln2ovoJw+8ZMNDTtip+CNFQfrtLVh/w4009dXO/eQ==}
dev: true
- /devtools-protocol/0.0.1120988:
- resolution: {integrity: sha512-39fCpE3Z78IaIPChJsP6Lhmkbf4dWXOmzLk/KFTdRkNk/0JymRIfUynDVRndV9HoDz8PyalK1UH21ST/ivwW5Q==}
- dev: true
-
- /devtools-protocol/0.0.1152884:
- resolution: {integrity: sha512-9eP6OmCoU1cWArpXLuzyZQcBJ2PkINOh8Nwx8W5i8u6NDigDE5/mPlLLBAfshwn5YVvIz6ZQ9jbs0PZvKGccdQ==}
- dev: true
-
- /devtools/8.11.0_typescript@4.6.2:
- resolution: {integrity: sha512-j1wXFQyjswJ6doAV1+h4Bxl8+Oeb8SMpWTpBVa0DurGsxfft8sU2OhDlMo5tx/zbX82X5sGyJDMnKHqBJ2XRvQ==}
- engines: {node: ^16.13 || >=18}
- dependencies:
- '@types/node': 20.3.3
- '@wdio/config': 8.11.0
- '@wdio/logger': 8.11.0
- '@wdio/protocols': 8.11.0
- '@wdio/types': 8.10.4
- '@wdio/utils': 8.11.0
- chrome-launcher: 0.15.0
- edge-paths: 3.0.5
- import-meta-resolve: 3.0.0
- puppeteer-core: 20.3.0_typescript@4.6.2
- query-selector-shadow-dom: 1.0.0
- ua-parser-js: 1.0.2
- uuid: 9.0.0
- which: 3.0.1
- transitivePeerDependencies:
- - bufferutil
- - encoding
- - supports-color
- - typescript
- - utf-8-validate
- dev: true
-
- /devtools/8.3.5:
- resolution: {integrity: sha512-ncMUl1CKH6hWyxHMfVCRnzKkVvviXJhqy1GIE2SialdUh68CsfEibzmDof+a2E9stkN1vVdmMKYeC5LAQv2i5g==}
- engines: {node: ^16.13 || >=18}
- dependencies:
- '@types/node': 18.13.0
- '@wdio/config': 8.3.2
- '@wdio/logger': 8.1.0
- '@wdio/protocols': 8.3.5
- '@wdio/types': 8.3.0
- '@wdio/utils': 8.3.0
- chrome-launcher: 0.15.0
- edge-paths: 3.0.5
- import-meta-resolve: 2.2.1
- puppeteer-core: 19.6.3
- query-selector-shadow-dom: 1.0.0
- ua-parser-js: 1.0.2
- uuid: 9.0.0
- which: 3.0.1
- transitivePeerDependencies:
- - bufferutil
- - encoding
- - supports-color
- - utf-8-validate
+ /devtools-protocol/0.0.1206220:
+ resolution: {integrity: sha512-zTcXveZkrQdpBwZzAd6spwu+WZet0hU+m/hAm7j61PDUQgG42YkMMdbFYqbDrxIiMTEgJInn70ck1Jl10RQ1aQ==}
dev: true
/diff-sequences/27.5.1:
@@ -5226,16 +5112,10 @@ packages:
engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
dev: true
- /diff-sequences/29.4.2:
- resolution: {integrity: sha512-R6P0Y6PrsH3n4hUXxL3nns0rbRk6Q33js3ygJBeEpbzLzgcNuJ61+u0RXasFpTKISw99TxUzFnumSnRLsjhLaw==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dev: true
-
/diff-sequences/29.4.3:
resolution: {integrity: sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
dev: true
- optional: true
/diff/4.0.2:
resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==}
@@ -5297,6 +5177,11 @@ packages:
tslib: 2.3.1
dev: true
+ /dotenv/16.3.1:
+ resolution: {integrity: sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==}
+ engines: {node: '>=12'}
+ dev: true
+
/download/8.0.0:
resolution: {integrity: sha512-ASRY5QhDk7FK+XrQtQyvhpDKanLluEEQtWl/J7Lxuf/b+i8RYh997QeXvL85xitrmRKVlx9c7eTrcRdq2GS4eA==}
engines: {node: '>=10'}
@@ -5328,8 +5213,8 @@ packages:
readable-stream: 2.3.7
dev: true
- /duplexer3/0.1.4:
- resolution: {integrity: sha512-CEj8FwwNA4cVH2uFCoHUrmojhYh1vmCdOaneKJXwkeY1i9jnlslVo9dx+hQ5Hl9GnH/Bwy/IjxAyOePyPKYnzA==}
+ /duplexer3/0.1.5:
+ resolution: {integrity: sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==}
dev: true
/eastasianwidth/0.2.0:
@@ -5359,26 +5244,25 @@ packages:
which: 2.0.2
dev: true
- /edgedriver/5.2.1:
- resolution: {integrity: sha512-H8mF7UYMR/r6izCPgQA5d+pHdIF47wncoTS2KWogoZ4hbNeFz9VbCPxPFoGPCCfizk/e4H5DhXapcYX0yyZqjg==}
+ /edgedriver/5.3.8:
+ resolution: {integrity: sha512-FWLPDuwJDeGGgtmlqTXb4lQi/HV9yylLo1F9O1g9TLqSemA5T6xH28seUIfyleVirLFtDQyKNUxKsMhMT4IfnA==}
hasBin: true
requiresBuild: true
dependencies:
- '@wdio/logger': 8.11.0
- camaro: 6.2.0
+ '@wdio/logger': 8.16.17
decamelize: 6.0.0
edge-paths: 3.0.5
- node-fetch: 3.3.1
+ node-fetch: 3.3.2
unzipper: 0.10.14
- which: 3.0.1
+ which: 4.0.0
dev: true
/ee-first/1.1.1:
resolution: {integrity: sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=}
dev: true
- /ejs/3.1.8:
- resolution: {integrity: sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==}
+ /ejs/3.1.9:
+ resolution: {integrity: sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==}
engines: {node: '>=0.10.0'}
hasBin: true
dependencies:
@@ -5518,6 +5402,18 @@ packages:
source-map: 0.6.1
dev: true
+ /escodegen/2.1.0:
+ resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==}
+ engines: {node: '>=6.0'}
+ hasBin: true
+ dependencies:
+ esprima: 4.0.1
+ estraverse: 5.2.0
+ esutils: 2.0.3
+ optionalDependencies:
+ source-map: 0.6.1
+ dev: true
+
/eslint-plugin-ava/13.2.0_eslint@8.11.0:
resolution: {integrity: sha512-i5B5izsEdERKQLruk1nIWzTTE7C26/ju8qQf7JeyRv32XT2lRMW0zMFZNhIrEf5/5VvpSz2rqrV7UcjClGbKsw==}
engines: {node: '>=12.22 <13 || >=14.17 <15 || >=16.4'}
@@ -5698,10 +5594,6 @@ packages:
engines: {node: '>= 0.6'}
dev: true
- /eventemitter-asyncresource/1.0.0:
- resolution: {integrity: sha512-39F7TBIV0G7gTelxwbEqnwhp90eqCPON1k0NwNfwhgKn4Co4ybUbj2pECcXT0B3ztRKZ7Pw1JujUUgmQJHcVAQ==}
- dev: true
-
/execa/5.1.1:
resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==}
engines: {node: '>=10'}
@@ -5717,18 +5609,18 @@ packages:
strip-final-newline: 2.0.0
dev: true
- /execa/6.1.0:
- resolution: {integrity: sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+ /execa/8.0.1:
+ resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==}
+ engines: {node: '>=16.17'}
dependencies:
cross-spawn: 7.0.3
- get-stream: 6.0.1
- human-signals: 3.0.1
+ get-stream: 8.0.1
+ human-signals: 5.0.0
is-stream: 3.0.0
merge-stream: 2.0.0
npm-run-path: 5.1.0
onetime: 6.0.0
- signal-exit: 3.0.7
+ signal-exit: 4.1.0
strip-final-newline: 3.0.0
dev: true
@@ -5742,23 +5634,6 @@ packages:
engines: {node: '>= 0.8.0'}
dev: true
- /expect-webdriverio/4.1.1_typescript@4.6.2:
- resolution: {integrity: sha512-Qx29DagUJ8DDsEJe2aT1S+OdEcidIO+A2uRxjJqM3i7cI+wUiC85MBWmupSwuvyEAoCOoEJUiRbA0NPpXXViCg==}
- engines: {node: '>=16 || >=18 || >=20'}
- dependencies:
- expect: 29.4.2
- jest-matcher-utils: 29.4.2
- optionalDependencies:
- '@wdio/globals': 8.11.2_typescript@4.6.2
- webdriverio: 8.3.5
- transitivePeerDependencies:
- - bufferutil
- - encoding
- - supports-color
- - typescript
- - utf-8-validate
- dev: true
-
/expect-webdriverio/4.2.6_typescript@4.6.2:
resolution: {integrity: sha512-/7wImWgef6ooZSoivXq6jkCDE1vvDC42WcM7Iyguspah/h384nprUdpQPLIUkkvTCorSQdYtRftNvHJjEpVUmA==}
engines: {node: '>=16 || >=18 || >=20'}
@@ -5767,16 +5642,16 @@ packages:
expect: 29.6.1
jest-matcher-utils: 29.6.1
optionalDependencies:
- '@wdio/globals': 8.11.2_typescript@4.6.2
- webdriverio: 8.11.2_typescript@4.6.2
+ '@wdio/globals': 8.18.2_typescript@4.6.2
+ webdriverio: 8.18.2_typescript@4.6.2
transitivePeerDependencies:
- bufferutil
+ - devtools
- encoding
- supports-color
- typescript
- utf-8-validate
dev: true
- optional: true
/expect/27.5.1:
resolution: {integrity: sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==}
@@ -5788,17 +5663,6 @@ packages:
jest-message-util: 27.5.1
dev: true
- /expect/29.4.2:
- resolution: {integrity: sha512-+JHYg9O3hd3RlICG90OPVjRkPBoiUH7PxvDVMnRiaq1g6JUgZStX514erMl0v2Dc5SkfVbm7ztqbd6qHHPn+mQ==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dependencies:
- '@jest/expect-utils': 29.4.2
- jest-get-type: 29.4.2
- jest-matcher-utils: 29.4.2
- jest-message-util: 29.4.2
- jest-util: 29.4.2
- dev: true
-
/expect/29.6.1:
resolution: {integrity: sha512-XEdDLonERCU1n9uR56/Stx9OqojaLAQtZf9PrCHH9Hl8YXiEIka3H4NXJ3NOIBmQJTg7+j7buh34PMHfJujc8g==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
@@ -5810,7 +5674,6 @@ packages:
jest-message-util: 29.6.1
jest-util: 29.6.1
dev: true
- optional: true
/express/4.17.1:
resolution: {integrity: sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==}
@@ -5852,7 +5715,7 @@ packages:
resolution: {integrity: sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==}
engines: {node: '>=0.10.0'}
dependencies:
- mime-db: 1.45.0
+ mime-db: 1.44.0
dev: true
/ext-name/5.0.0:
@@ -5896,7 +5759,7 @@ packages:
dev: true
/fast-deep-equal/2.0.1:
- resolution: {integrity: sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=}
+ resolution: {integrity: sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w==}
dev: true
/fast-deep-equal/3.1.3:
@@ -5907,6 +5770,10 @@ packages:
resolution: {integrity: sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==}
dev: true
+ /fast-fifo/1.3.2:
+ resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==}
+ dev: true
+
/fast-glob/3.2.11:
resolution: {integrity: sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==}
engines: {node: '>=8.6.0'}
@@ -5944,6 +5811,12 @@ packages:
pend: 1.2.0
dev: true
+ /fd-slicer2/1.2.0:
+ resolution: {integrity: sha512-3lBUNUckhMZduCc4g+Pw4Ve16LD9vpX9b8qUkkKq2mgDRLYWzblszZH2luADnJqjJe+cypngjCuKRm/IW12rRw==}
+ dependencies:
+ pend: 1.2.0
+ dev: true
+
/fetch-blob/3.2.0:
resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==}
engines: {node: ^12.20 || >= 14.13}
@@ -6003,7 +5876,7 @@ packages:
/filelist/1.0.1:
resolution: {integrity: sha512-8zSK6Nu0DQIC08mUC46sWGXi+q3GGpKydAG36k+JDba6VRpkevvOWUW5a/PhShij4+vHT9M+ghgG7eM+a9JDUQ==}
dependencies:
- minimatch: 3.0.4
+ minimatch: 3.1.2
dev: true
/filename-reserved-regex/2.0.0:
@@ -6032,6 +5905,11 @@ packages:
to-regex-range: 5.0.1
dev: true
+ /filter-obj/1.1.0:
+ resolution: {integrity: sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
/finalhandler/1.1.2:
resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==}
engines: {node: '>= 0.8'}
@@ -6097,6 +5975,10 @@ packages:
resolution: {integrity: sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw==}
dev: true
+ /flushwritable/1.0.0:
+ resolution: {integrity: sha512-3VELfuWCLVzt5d2Gblk8qcqFro6nuwvxwMzHaENVDHI7rxcBRtMCwTk/E9FXcgh+82DSpavPNDueA9+RxXJoFg==}
+ dev: true
+
/follow-redirects/1.15.2:
resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==}
engines: {node: '>=4.0'}
@@ -6112,7 +5994,7 @@ packages:
engines: {node: '>=14'}
dependencies:
cross-spawn: 7.0.3
- signal-exit: 4.0.2
+ signal-exit: 4.1.0
dev: true
/forever-agent/0.6.1:
@@ -6188,6 +6070,24 @@ packages:
universalify: 2.0.0
dev: true
+ /fs-extra/11.1.1:
+ resolution: {integrity: sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==}
+ engines: {node: '>=14.14'}
+ dependencies:
+ graceful-fs: 4.2.9
+ jsonfile: 6.1.0
+ universalify: 2.0.0
+ dev: true
+
+ /fs-extra/8.1.0:
+ resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==}
+ engines: {node: '>=6 <7 || >=8'}
+ dependencies:
+ graceful-fs: 4.2.9
+ jsonfile: 4.0.0
+ universalify: 0.1.2
+ dev: true
+
/fs-minipass/2.1.0:
resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==}
engines: {node: '>= 8'}
@@ -6245,6 +6145,24 @@ packages:
globule: 1.3.2
dev: true
+ /geckodriver/4.2.1:
+ resolution: {integrity: sha512-4m/CRk0OI8MaANRuFIahvOxYTSjlNAO2p9JmE14zxueknq6cdtB5M9UGRQ8R9aMV0bLGNVHHDnDXmoXdOwJfWg==}
+ engines: {node: ^16.13 || >=18 || >=20}
+ hasBin: true
+ requiresBuild: true
+ dependencies:
+ '@wdio/logger': 8.16.17
+ decamelize: 6.0.0
+ http-proxy-agent: 7.0.0
+ https-proxy-agent: 7.0.2
+ node-fetch: 3.3.2
+ tar-fs: 3.0.4
+ unzipper: 0.10.14
+ which: 4.0.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
/gensync/1.0.0-beta.2:
resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
engines: {node: '>=6.9.0'}
@@ -6273,6 +6191,10 @@ packages:
engines: {node: '>=16'}
dev: true
+ /get-ready/1.0.0:
+ resolution: {integrity: sha512-mFXCZPJIlcYcth+N8267+mghfYN9h3EhsDa6JSnbA3Wrhh/XFpuowviFcsDeYZtKspQyWyJqfs4O6P8CHeTwzw==}
+ dev: true
+
/get-stream/2.3.1:
resolution: {integrity: sha512-AUGhbbemXxrZJRD5cDvKtQxLuYaIbNtDTK8YqupCI393Q2KSTreEsLUN3ZxAWFGiKTzL6nKuzfcIvieflUX9qA==}
engines: {node: '>=0.10.0'}
@@ -6304,6 +6226,23 @@ packages:
engines: {node: '>=10'}
dev: true
+ /get-stream/8.0.1:
+ resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==}
+ engines: {node: '>=16'}
+ dev: true
+
+ /get-uri/6.0.2:
+ resolution: {integrity: sha512-5KLucCJobh8vBY1K07EFV4+cPZH3mrV9YeAruUseCQKHB58SGjjT2l9/eA9LD082IiuMjSlFJEcdJ27TXvbZNw==}
+ engines: {node: '>= 14'}
+ dependencies:
+ basic-ftp: 5.0.3
+ data-uri-to-buffer: 6.0.1
+ debug: 4.3.4
+ fs-extra: 8.1.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
/getpass/0.1.7:
resolution: {integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==}
dependencies:
@@ -6342,7 +6281,7 @@ packages:
fs.realpath: 1.0.0
inflight: 1.0.6
inherits: 2.0.4
- minimatch: 3.0.4
+ minimatch: 3.1.2
once: 1.4.0
path-is-absolute: 1.0.1
dev: true
@@ -6365,7 +6304,7 @@ packages:
fs.realpath: 1.0.0
inflight: 1.0.6
inherits: 2.0.4
- minimatch: 5.0.1
+ minimatch: 5.1.6
once: 1.4.0
dev: true
@@ -6472,15 +6411,33 @@ packages:
lowercase-keys: 2.0.0
p-cancelable: 2.0.0
responselike: 2.0.0
+ dev: false
- /got/12.5.3:
- resolution: {integrity: sha512-8wKnb9MGU8IPGRIo+/ukTy9XLJBwDiCpIf5TVzQ9Cpol50eMTpBq2GAuDsuDIz7hTYmZgMgC1e9ydr6kSDWs3w==}
+ /got/11.8.6:
+ resolution: {integrity: sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==}
+ engines: {node: '>=10.19.0'}
+ dependencies:
+ '@sindresorhus/is': 4.6.0
+ '@szmarczak/http-timer': 4.0.5
+ '@types/cacheable-request': 6.0.1
+ '@types/responselike': 1.0.0
+ cacheable-lookup: 5.0.4
+ cacheable-request: 7.0.2
+ decompress-response: 6.0.0
+ http2-wrapper: 1.0.0-beta.5.2
+ lowercase-keys: 2.0.0
+ p-cancelable: 2.0.0
+ responselike: 2.0.0
+ dev: true
+
+ /got/12.6.1:
+ resolution: {integrity: sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==}
engines: {node: '>=14.16'}
dependencies:
'@sindresorhus/is': 5.3.0
'@szmarczak/http-timer': 5.0.1
cacheable-lookup: 7.0.0
- cacheable-request: 10.2.7
+ cacheable-request: 10.2.12
decompress-response: 6.0.0
form-data-encoder: 2.1.4
get-stream: 6.0.1
@@ -6490,9 +6447,9 @@ packages:
responselike: 3.0.0
dev: true
- /got/12.6.1:
- resolution: {integrity: sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==}
- engines: {node: '>=14.16'}
+ /got/13.0.0:
+ resolution: {integrity: sha512-XfBk1CxOOScDcMr9O1yKkNaQyy865NbYs+F7dr4H0LZMVgCj2Le59k6PqbNHoL5ToeaEQUYh6c6yMfVcc6SJxA==}
+ engines: {node: '>=16'}
dependencies:
'@sindresorhus/is': 5.3.0
'@szmarczak/http-timer': 5.0.1
@@ -6514,7 +6471,7 @@ packages:
'@sindresorhus/is': 0.7.0
cacheable-request: 2.1.4
decompress-response: 3.3.0
- duplexer3: 0.1.4
+ duplexer3: 0.1.5
get-stream: 3.0.0
into-stream: 3.1.0
is-retry-allowed: 1.2.0
@@ -6613,18 +6570,6 @@ packages:
minimalistic-assert: 1.0.1
dev: true
- /hdr-histogram-js/2.0.3:
- resolution: {integrity: sha512-Hkn78wwzWHNCp2uarhzQ2SGFLU3JY8SBDDd3TAABK4fc30wm+MuPOrg5QVFVfkKOQd6Bfz3ukJEI+q9sXEkK1g==}
- dependencies:
- '@assemblyscript/loader': 0.10.1
- base64-js: 1.5.1
- pako: 1.0.11
- dev: true
-
- /hdr-histogram-percentiles-obj/3.0.0:
- resolution: {integrity: sha512-7kIufnBqdsBGcSZLPJwqHT3yhk1QTsSlFsVD3kx5ixH/AlgBs9yM1q6DPhXZ8f8gtdqgh7N7/5btRLpQsS2gHw==}
- dev: true
-
/header-case/2.0.4:
resolution: {integrity: sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==}
dependencies:
@@ -6648,6 +6593,13 @@ packages:
lru-cache: 6.0.0
dev: true
+ /hosted-git-info/7.0.1:
+ resolution: {integrity: sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==}
+ engines: {node: ^16.14.0 || >=18.0.0}
+ dependencies:
+ lru-cache: 10.0.1
+ dev: true
+
/html-encoding-sniffer/2.0.1:
resolution: {integrity: sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==}
engines: {node: '>=10'}
@@ -6663,12 +6615,8 @@ packages:
resolution: {integrity: sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==}
dev: true
- /http-cache-semantics/4.1.0:
- resolution: {integrity: sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==}
-
/http-cache-semantics/4.1.1:
resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==}
- dev: true
/http-errors/1.7.2:
resolution: {integrity: sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==}
@@ -6703,12 +6651,11 @@ packages:
- supports-color
dev: true
- /http-proxy-agent/5.0.0:
- resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==}
- engines: {node: '>= 6'}
+ /http-proxy-agent/7.0.0:
+ resolution: {integrity: sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==}
+ engines: {node: '>= 14'}
dependencies:
- '@tootallnate/once': 2.0.0
- agent-base: 6.0.2
+ agent-base: 7.1.0
debug: 4.3.4
transitivePeerDependencies:
- supports-color
@@ -6728,7 +6675,7 @@ packages:
engines: {node: '>=10.19.0'}
dependencies:
quick-lru: 5.1.1
- resolve-alpn: 1.0.0
+ resolve-alpn: 1.2.1
/http2-wrapper/2.2.0:
resolution: {integrity: sha512-kZB0wxMo0sh1PehyjJUWRFEd99KC5TLjZ2cULC4f9iqJBAmKQQXEICjxl5iPJRwP40dpeHFqqhm7tYCvODpqpQ==}
@@ -6748,14 +6695,24 @@ packages:
- supports-color
dev: true
+ /https-proxy-agent/7.0.2:
+ resolution: {integrity: sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==}
+ engines: {node: '>= 14'}
+ dependencies:
+ agent-base: 7.1.0
+ debug: 4.3.4
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
/human-signals/2.1.0:
resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==}
engines: {node: '>=10.17.0'}
dev: true
- /human-signals/3.0.1:
- resolution: {integrity: sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==}
- engines: {node: '>=12.20.0'}
+ /human-signals/5.0.0:
+ resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==}
+ engines: {node: '>=16.17.0'}
dev: true
/humanize-ms/1.2.1:
@@ -6771,6 +6728,13 @@ packages:
safer-buffer: 2.1.2
dev: true
+ /iconv-lite/0.5.2:
+ resolution: {integrity: sha512-kERHXvpSaB4aU3eANwidg79K8FlrN77m8G9V+0vOR3HYaRifrlwMEpT7ZBJqLSEIHnEgJTHcWK82wwLwwKwtag==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ safer-buffer: 2.1.2
+ dev: true
+
/iconv-lite/0.6.3:
resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==}
engines: {node: '>=0.10.0'}
@@ -6791,7 +6755,7 @@ packages:
/ignore-walk/3.0.4:
resolution: {integrity: sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==}
dependencies:
- minimatch: 3.0.4
+ minimatch: 3.1.2
dev: true
/ignore/5.2.0:
@@ -6816,10 +6780,6 @@ packages:
resolve-cwd: 3.0.0
dev: true
- /import-meta-resolve/2.2.1:
- resolution: {integrity: sha512-C6lLL7EJPY44kBvA80gq4uMsVFw5x3oSKfuMl1cuZ2RkI5+UJqQXgn+6hlUew0y4ig7Ypt4CObAAIzU53Nfpuw==}
- dev: true
-
/import-meta-resolve/3.0.0:
resolution: {integrity: sha512-4IwhLhNNA8yy445rPjD/lWh++7hMDOml2eHtd58eG7h+qK3EryMuuRbsHGPikCoAgIkkDnckKfWSk2iDla/ejg==}
dev: true
@@ -6868,25 +6828,25 @@ packages:
resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
dev: true
- /inquirer/9.1.2:
- resolution: {integrity: sha512-Hj2Ml1WpxKJU2npP2Rj0OURGkHV+GtNW2CwFdHDiXlqUBAUrWTcZHxCkFywX/XHzOS7wrG/kExgJFbUkVgyHzg==}
- engines: {node: '>=12.0.0'}
+ /inquirer/9.2.11:
+ resolution: {integrity: sha512-B2LafrnnhbRzCWfAdOXisUzL89Kg8cVJlYmhqoi3flSiV/TveO+nsXwgKr9h9PIo+J1hz7nBSk6gegRIMBBf7g==}
+ engines: {node: '>=14.18.0'}
dependencies:
- ansi-escapes: 5.0.0
- chalk: 5.2.0
- cli-cursor: 4.0.0
- cli-width: 4.0.0
+ '@ljharb/through': 2.3.11
+ ansi-escapes: 4.3.2
+ chalk: 5.3.0
+ cli-cursor: 3.1.0
+ cli-width: 4.1.0
external-editor: 3.1.0
figures: 5.0.0
lodash: 4.17.21
- mute-stream: 0.0.8
- ora: 6.1.2
- run-async: 2.4.1
- rxjs: 7.8.0
- string-width: 5.1.2
- strip-ansi: 7.0.1
- through: 2.3.8
- wrap-ansi: 8.1.0
+ mute-stream: 1.0.0
+ ora: 5.4.1
+ run-async: 3.0.0
+ rxjs: 7.8.1
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+ wrap-ansi: 6.2.0
dev: true
/into-stream/3.1.0:
@@ -6960,12 +6920,6 @@ packages:
engines: {node: '>= 0.4'}
dev: true
- /is-docker/2.1.1:
- resolution: {integrity: sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw==}
- engines: {node: '>=8'}
- hasBin: true
- dev: true
-
/is-error/2.2.2:
resolution: {integrity: sha512-IOQqts/aHWbiisY5DuPJQ0gcbvaLFCa7fBa9xoLfxBZvQ+ZI/Zh9xoI7Gk+G64N0FdK4AbibytHht2tWgpJWLg==}
dev: true
@@ -7004,9 +6958,9 @@ packages:
is-extglob: 2.1.1
dev: true
- /is-interactive/2.0.0:
- resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==}
- engines: {node: '>=12'}
+ /is-interactive/1.0.0:
+ resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==}
+ engines: {node: '>=8'}
dev: true
/is-lambda/1.0.1:
@@ -7113,6 +7067,11 @@ packages:
resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==}
dev: true
+ /is-unicode-supported/0.1.0:
+ resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==}
+ engines: {node: '>=10'}
+ dev: true
+
/is-unicode-supported/1.1.0:
resolution: {integrity: sha512-lDcxivp8TJpLG75/DpatAqNzOpDPSpED8XNtrpBHTdQ2InQ1PbW78jhwSxyxhhu+xbVSast2X38bwj8atwoUQA==}
engines: {node: '>=12'}
@@ -7131,13 +7090,6 @@ packages:
resolution: {integrity: sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==}
dev: true
- /is-wsl/2.2.0:
- resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==}
- engines: {node: '>=8'}
- dependencies:
- is-docker: 2.1.1
- dev: true
-
/is2/2.0.6:
resolution: {integrity: sha512-+Z62OHOjA6k2sUDOKXoZI3EXv7Fb1K52jpTBLbkfx62bcUeSsrTBLhEquCRDKTx0XE5XbHcG/S2vrtE3lnEDsQ==}
engines: {node: '>=v0.10.0'}
@@ -7164,6 +7116,11 @@ packages:
resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
dev: true
+ /isexe/3.1.1:
+ resolution: {integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==}
+ engines: {node: '>=16'}
+ dev: true
+
/isstream/0.1.2:
resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==}
dev: true
@@ -7239,19 +7196,19 @@ packages:
async: 3.2.4
chalk: 4.1.2
filelist: 1.0.1
- minimatch: 3.0.4
+ minimatch: 3.1.2
dev: true
- /jasmine-core/4.5.0:
- resolution: {integrity: sha512-9PMzyvhtocxb3aXJVOPqBDswdgyAeSB81QnLop4npOpbqnheaTEwPc9ZloQeVswugPManznQBjD8kWDTjlnHuw==}
+ /jasmine-core/5.1.1:
+ resolution: {integrity: sha512-UrzO3fL7nnxlQXlvTynNAenL+21oUQRlzqQFsA2U11ryb4+NLOCOePZ70PTojEaUKhiFugh7dG0Q+I58xlPdWg==}
dev: true
- /jasmine/4.5.0:
- resolution: {integrity: sha512-9olGRvNZyADIwYL9XBNBst5BTU/YaePzuddK+YRslc7rI9MdTIE4r3xaBKbv2GEmzYYUfMOdTR8/i6JfLZaxSQ==}
+ /jasmine/5.1.0:
+ resolution: {integrity: sha512-prmJlC1dbLhti4nE4XAPDWmfJesYO15sjGXVp7Cs7Ym5I9Xtwa/hUHxxJXjnpfLO72+ySttA0Ztf8g/RiVnUKw==}
hasBin: true
dependencies:
- glob: 7.2.0
- jasmine-core: 4.5.0
+ glob: 10.3.1
+ jasmine-core: 5.1.1
dev: true
/jest-changed-files/27.5.1:
@@ -7441,16 +7398,6 @@ packages:
pretty-format: 27.5.1
dev: true
- /jest-diff/29.4.2:
- resolution: {integrity: sha512-EK8DSajVtnjx9sa1BkjZq3mqChm2Cd8rIzdXkQMA8e0wuXq53ypz6s5o5V8HRZkoEt2ywJ3eeNWFKWeYr8HK4g==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dependencies:
- chalk: 4.1.2
- diff-sequences: 29.4.2
- jest-get-type: 29.4.2
- pretty-format: 29.4.2
- dev: true
-
/jest-diff/29.6.1:
resolution: {integrity: sha512-FsNCvinvl8oVxpNLttNQX7FAq7vR+gMDGj90tiP7siWw1UdakWUGqrylpsYrpvj908IYckm5Y0Q7azNAozU1Kg==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
@@ -7460,7 +7407,6 @@ packages:
jest-get-type: 29.4.3
pretty-format: 29.6.1
dev: true
- optional: true
/jest-docblock/27.5.1:
resolution: {integrity: sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==}
@@ -7524,16 +7470,10 @@ packages:
engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
dev: true
- /jest-get-type/29.4.2:
- resolution: {integrity: sha512-vERN30V5i2N6lqlFu4ljdTqQAgrkTFMC9xaIIfOPYBw04pufjXRty5RuXBiB1d72tGbURa/UgoiHB90ruOSivg==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dev: true
-
/jest-get-type/29.4.3:
resolution: {integrity: sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
dev: true
- optional: true
/jest-haste-map/27.5.1:
resolution: {integrity: sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==}
@@ -7598,16 +7538,6 @@ packages:
pretty-format: 27.5.1
dev: true
- /jest-matcher-utils/29.4.2:
- resolution: {integrity: sha512-EZaAQy2je6Uqkrm6frnxBIdaWtSYFoR8SVb2sNLAtldswlR/29JAgx+hy67llT3+hXBaLB0zAm5UfeqerioZyg==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dependencies:
- chalk: 4.1.2
- jest-diff: 29.4.2
- jest-get-type: 29.4.2
- pretty-format: 29.4.2
- dev: true
-
/jest-matcher-utils/29.6.1:
resolution: {integrity: sha512-SLaztw9d2mfQQKHmJXKM0HCbl2PPVld/t9Xa6P9sgiExijviSp7TnZZpw2Fpt+OI3nwUO/slJbOfzfUMKKC5QA==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
@@ -7617,7 +7547,6 @@ packages:
jest-get-type: 29.4.3
pretty-format: 29.6.1
dev: true
- optional: true
/jest-message-util/26.6.2:
resolution: {integrity: sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==}
@@ -7649,26 +7578,11 @@ packages:
stack-utils: 2.0.5
dev: true
- /jest-message-util/29.4.2:
- resolution: {integrity: sha512-SElcuN4s6PNKpOEtTInjOAA8QvItu0iugkXqhYyguRvQoXapg5gN+9RQxLAkakChZA7Y26j6yUCsFWN+hlKD6g==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dependencies:
- '@babel/code-frame': 7.16.7
- '@jest/types': 29.4.2
- '@types/stack-utils': 2.0.0
- chalk: 4.1.2
- graceful-fs: 4.2.9
- micromatch: 4.0.4
- pretty-format: 29.4.2
- slash: 3.0.0
- stack-utils: 2.0.5
- dev: true
-
/jest-message-util/29.6.1:
resolution: {integrity: sha512-KoAW2zAmNSd3Gk88uJ56qXUWbFk787QKmjjJVOjtGFmmGSZgDBrlIL4AfQw1xyMYPNVD7dNInfIbur9B2rd/wQ==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
dependencies:
- '@babel/code-frame': 7.16.7
+ '@babel/code-frame': 7.22.13
'@jest/types': 29.6.1
'@types/stack-utils': 2.0.0
chalk: 4.1.2
@@ -7678,7 +7592,6 @@ packages:
slash: 3.0.0
stack-utils: 2.0.5
dev: true
- optional: true
/jest-mock/27.5.1:
resolution: {integrity: sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==}
@@ -7867,18 +7780,6 @@ packages:
picomatch: 2.3.1
dev: true
- /jest-util/29.4.2:
- resolution: {integrity: sha512-wKnm6XpJgzMUSRFB7YF48CuwdzuDIHenVuoIb1PLuJ6F+uErZsuDkU+EiExkChf6473XcawBrSfDSnXl+/YG4g==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dependencies:
- '@jest/types': 29.4.2
- '@types/node': 14.6.4
- chalk: 4.1.2
- ci-info: 3.3.0
- graceful-fs: 4.2.9
- picomatch: 2.3.1
- dev: true
-
/jest-util/29.6.1:
resolution: {integrity: sha512-NRFCcjc+/uO3ijUVyNOQJluf8PtGCe/W6cix36+M3cTFgiYqFOOW5MgN4JOOcvbUhcKTYVd1CvHz/LWi8d16Mg==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
@@ -7890,7 +7791,6 @@ packages:
graceful-fs: 4.2.9
picomatch: 2.3.1
dev: true
- optional: true
/jest-validate/27.5.1:
resolution: {integrity: sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==}
@@ -8077,6 +7977,11 @@ packages:
resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==}
dev: true
+ /json-parse-even-better-errors/3.0.0:
+ resolution: {integrity: sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==}
+ engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
+ dev: true
+
/json-schema-traverse/0.4.1:
resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
dev: true
@@ -8101,6 +8006,12 @@ packages:
minimist: 1.2.8
dev: true
+ /jsonfile/4.0.0:
+ resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==}
+ optionalDependencies:
+ graceful-fs: 4.2.9
+ dev: true
+
/jsonfile/6.1.0:
resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==}
dependencies:
@@ -8138,16 +8049,10 @@ packages:
json-buffer: 3.0.0
dev: true
- /keyv/4.0.3:
- resolution: {integrity: sha512-zdGa2TOpSZPq5mU6iowDARnMBZgtCqJ11dJROFi6tg6kTn4nuUdU09lFyLFSaHrWqpIJ+EBq4E8/Dc0Vx5vLdA==}
- dependencies:
- json-buffer: 3.0.1
-
/keyv/4.5.2:
resolution: {integrity: sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==}
dependencies:
json-buffer: 3.0.1
- dev: true
/kleur/3.0.3:
resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==}
@@ -8187,17 +8092,15 @@ packages:
type-check: 0.4.0
dev: true
- /lighthouse-logger/1.2.0:
- resolution: {integrity: sha512-wzUvdIeJZhRsG6gpZfmSCfysaxNEr43i+QT+Hie94wvHDKFLi4n7C2GqZ4sTC+PH5b5iktmXJvU87rWvhP3lHw==}
- dependencies:
- debug: 2.6.9
- marky: 1.2.1
- dev: true
-
/lines-and-columns/1.2.4:
resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
dev: true
+ /lines-and-columns/2.0.3:
+ resolution: {integrity: sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+ dev: true
+
/listenercount/1.0.1:
resolution: {integrity: sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ==}
dev: true
@@ -8228,6 +8131,14 @@ packages:
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
dev: true
+ /locate-app/2.1.0:
+ resolution: {integrity: sha512-rcVo/iLUxrd9d0lrmregK/Z5Y5NCpSwf9KlMbPpOHmKmdxdQY1Fj8NDQ5QymJTryCsBLqwmniFv2f3JKbk9Bvg==}
+ dependencies:
+ n12: 0.4.0
+ type-fest: 2.13.0
+ userhome: 1.0.0
+ dev: true
+
/locate-path/5.0.0:
resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==}
engines: {node: '>=8'}
@@ -8260,18 +8171,6 @@ packages:
resolution: {integrity: sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==}
dev: true
- /lodash.defaults/4.2.0:
- resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==}
- dev: true
-
- /lodash.difference/4.5.0:
- resolution: {integrity: sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==}
- dev: true
-
- /lodash.flatten/4.4.0:
- resolution: {integrity: sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==}
- dev: true
-
/lodash.flattendeep/4.4.0:
resolution: {integrity: sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==}
dev: true
@@ -8280,10 +8179,6 @@ packages:
resolution: {integrity: sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=}
dev: true
- /lodash.isplainobject/4.0.6:
- resolution: {integrity: sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=}
- dev: true
-
/lodash.memoize/4.1.2:
resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==}
dev: true
@@ -8305,19 +8200,19 @@ packages:
dev: true
/lodash.zip/4.2.0:
- resolution: {integrity: sha1-7GZi5IlkCO1KtsVCo5kLcswIACA=}
+ resolution: {integrity: sha512-C7IOaBBK/0gMORRBd8OETNx3kmOkgIWIPvyDpZSCTwUrpYmgZwJkjZeOD8ww4xbOUOs4/attY+pciKvadNfFbg==}
dev: true
/lodash/4.17.21:
resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
dev: true
- /log-symbols/5.1.0:
- resolution: {integrity: sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==}
- engines: {node: '>=12'}
+ /log-symbols/4.1.0:
+ resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==}
+ engines: {node: '>=10'}
dependencies:
- chalk: 5.2.0
- is-unicode-supported: 1.3.0
+ chalk: 4.1.2
+ is-unicode-supported: 0.1.0
dev: true
/loglevel-plugin-prefix/0.8.4:
@@ -8354,8 +8249,8 @@ packages:
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
dev: true
- /lru-cache/10.0.0:
- resolution: {integrity: sha512-svTf/fzsKHffP42sujkO/Rjs37BCIsQVRCeNYIm9WN8rgT7ffoUnRtZCqU+6BqcSBdv8gwJeTz8knJpgACeQMw==}
+ /lru-cache/10.0.1:
+ resolution: {integrity: sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==}
engines: {node: 14 || >=16.14}
dev: true
@@ -8373,6 +8268,11 @@ packages:
yallist: 4.0.0
dev: true
+ /lru-cache/7.18.3:
+ resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==}
+ engines: {node: '>=12'}
+ dev: true
+
/magic-string/0.25.7:
resolution: {integrity: sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==}
dependencies:
@@ -8411,7 +8311,7 @@ packages:
dependencies:
agentkeepalive: 4.2.1
cacache: 15.3.0
- http-cache-semantics: 4.1.0
+ http-cache-semantics: 4.1.1
http-proxy-agent: 4.0.1
https-proxy-agent: 5.0.1
is-lambda: 1.0.1
@@ -8447,10 +8347,6 @@ packages:
engines: {node: '>=0.10.0'}
dev: true
- /marky/1.2.1:
- resolution: {integrity: sha512-md9k+Gxa3qLH6sUKpeC2CNkJK/Ld+bEz5X96nYwloqphQE0CKCVEKco/6jxEZixinqNdz5RFi/KaCyfbMDMAXQ==}
- dev: true
-
/matcher/5.0.0:
resolution: {integrity: sha512-s2EMBOWtXFc8dgqvoAzKJXxNHibcdJMV0gwqKUaw9E2JBJuGUK7DrNKrA6g/i+v72TT16+6sVm5mS3thaMLQUw==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
@@ -8525,11 +8421,6 @@ packages:
engines: {node: '>= 0.6'}
dev: true
- /mime-db/1.45.0:
- resolution: {integrity: sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w==}
- engines: {node: '>= 0.6'}
- dev: true
-
/mime-types/2.1.27:
resolution: {integrity: sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==}
engines: {node: '>= 0.6'}
@@ -8576,15 +8467,14 @@ packages:
brace-expansion: 1.1.11
dev: true
- /minimatch/5.0.1:
- resolution: {integrity: sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==}
- engines: {node: '>=10'}
+ /minimatch/3.1.2:
+ resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
dependencies:
- brace-expansion: 2.0.1
+ brace-expansion: 1.1.11
dev: true
- /minimatch/6.1.6:
- resolution: {integrity: sha512-6bR3UIeh/DF8+p6A9Spyuy67ShOq42rOkHWi7eUe3Ua99Zo5lZfGC6lJJWkeoK4k9jQFT3Pl7czhTXimG2XheA==}
+ /minimatch/5.1.6:
+ resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==}
engines: {node: '>=10'}
dependencies:
brace-expansion: 2.0.1
@@ -8692,12 +8582,6 @@ packages:
hasBin: true
dev: true
- /mkdirp/2.1.3:
- resolution: {integrity: sha512-sjAkg21peAG9HS+Dkx7hlG9Ztx7HLeKnvB3NQRcu/mltCVmvkF0pisbiTSfDVYTT86XEfZrTUosLdZLStquZUw==}
- engines: {node: '>=10'}
- hasBin: true
- dev: true
-
/module-details-from-path/1.0.3:
resolution: {integrity: sha1-EUyUlnPiqKNenTV4hSeqN7Z52is=}
dev: true
@@ -8739,8 +8623,13 @@ packages:
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
dev: true
- /mute-stream/0.0.8:
- resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==}
+ /mute-stream/1.0.0:
+ resolution: {integrity: sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==}
+ engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
+ dev: true
+
+ /n12/0.4.0:
+ resolution: {integrity: sha512-p/hj4zQ8d3pbbFLQuN1K9honUxiDDhueOWyFLw/XgBv+wZCE44bcLH4CIcsolOceJQduh4Jf7m/LfaTxyGmGtQ==}
dev: true
/nan/2.15.0:
@@ -8761,15 +8650,10 @@ packages:
engines: {node: '>= 0.6'}
dev: true
- /nice-napi/1.0.2:
- resolution: {integrity: sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA==}
- os: ['!win32']
- requiresBuild: true
- dependencies:
- node-addon-api: 3.2.1
- node-gyp-build: 4.6.0
+ /netmask/2.0.2:
+ resolution: {integrity: sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==}
+ engines: {node: '>= 0.4.0'}
dev: true
- optional: true
/nice-try/1.0.5:
resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==}
@@ -8804,11 +8688,6 @@ packages:
- supports-color
dev: true
- /node-addon-api/3.2.1:
- resolution: {integrity: sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==}
- dev: true
- optional: true
-
/node-domexception/1.0.0:
resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==}
engines: {node: '>=10.5.0'}
@@ -8826,20 +8705,8 @@ packages:
whatwg-url: 5.0.0
dev: true
- /node-fetch/2.6.7:
- resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==}
- engines: {node: 4.x || >=6.0.0}
- peerDependencies:
- encoding: ^0.1.0
- peerDependenciesMeta:
- encoding:
- optional: true
- dependencies:
- whatwg-url: 5.0.0
- dev: true
-
- /node-fetch/3.3.1:
- resolution: {integrity: sha512-cRVc/kyto/7E5shrWca1Wsea4y6tL9iYJE5FBCius3JQfb/4P4I295PfhgbJQBLTx6lATE4z+wK0rPM4VS2uow==}
+ /node-fetch/3.3.2:
+ resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
dependencies:
data-uri-to-buffer: 4.0.1
@@ -8847,12 +8714,6 @@ packages:
formdata-polyfill: 4.0.10
dev: true
- /node-gyp-build/4.6.0:
- resolution: {integrity: sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==}
- hasBin: true
- dev: true
- optional: true
-
/node-gyp/7.1.2:
resolution: {integrity: sha512-CbpcIo7C3eMu3dL1c3d0xw449fHIGALIJsRP4DDPHpyiW8vcriNY7ubh9TE4zEKfSxscY7PjeFnshE7h75ynjQ==}
engines: {node: '>= 10.12.0'}
@@ -8900,11 +8761,11 @@ packages:
validate-npm-package-license: 3.0.4
dev: true
- /normalize-package-data/3.0.3:
- resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==}
- engines: {node: '>=10'}
+ /normalize-package-data/6.0.0:
+ resolution: {integrity: sha512-UL7ELRVxYBHBgYEtZCXjxuD5vPxnmvMGq0jp/dGPKKrN7tfsBh2IY7TlJ15WWwdjRWD3RJbnsygUurTK3xkPkg==}
+ engines: {node: ^16.14.0 || >=18.0.0}
dependencies:
- hosted-git-info: 4.1.0
+ hosted-git-info: 7.0.1
is-core-module: 2.8.1
semver: 7.3.5
validate-npm-package-license: 3.0.4
@@ -9133,18 +8994,18 @@ packages:
word-wrap: 1.2.3
dev: true
- /ora/6.1.2:
- resolution: {integrity: sha512-EJQ3NiP5Xo94wJXIzAyOtSb0QEIAUu7m8t6UZ9krbz0vAJqr92JpcK/lEXg91q6B9pEGqrykkd2EQplnifDSBw==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+ /ora/5.4.1:
+ resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==}
+ engines: {node: '>=10'}
dependencies:
- bl: 5.1.0
- chalk: 5.2.0
- cli-cursor: 4.0.0
- cli-spinners: 2.7.0
- is-interactive: 2.0.0
- is-unicode-supported: 1.1.0
- log-symbols: 5.1.0
- strip-ansi: 7.1.0
+ bl: 4.1.0
+ chalk: 4.1.2
+ cli-cursor: 3.1.0
+ cli-spinners: 2.9.1
+ is-interactive: 1.0.0
+ is-unicode-supported: 0.1.0
+ log-symbols: 4.1.0
+ strip-ansi: 6.0.1
wcwidth: 1.0.1
dev: true
@@ -9196,11 +9057,6 @@ packages:
engines: {node: '>=4'}
dev: true
- /p-iteration/1.1.8:
- resolution: {integrity: sha512-IMFBSDIYcPNnW7uWYGrBqmvTiq7W0uB0fJn6shQZs7dlF3OvrHOre+JT9ikSZ7gZS3vWqclVgoQSvToJrns7uQ==}
- engines: {node: '>=8.0.0'}
- dev: true
-
/p-limit/2.3.0:
resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==}
engines: {node: '>=6'}
@@ -9274,6 +9130,31 @@ packages:
engines: {node: '>=6'}
dev: true
+ /pac-proxy-agent/7.0.1:
+ resolution: {integrity: sha512-ASV8yU4LLKBAjqIPMbrgtaKIvxQri/yh2OpI+S6hVa9JRkUI3Y3NPFbfngDtY7oFtSMD3w31Xns89mDa3Feo5A==}
+ engines: {node: '>= 14'}
+ dependencies:
+ '@tootallnate/quickjs-emscripten': 0.23.0
+ agent-base: 7.1.0
+ debug: 4.3.4
+ get-uri: 6.0.2
+ http-proxy-agent: 7.0.0
+ https-proxy-agent: 7.0.2
+ pac-resolver: 7.0.0
+ socks-proxy-agent: 8.0.2
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /pac-resolver/7.0.0:
+ resolution: {integrity: sha512-Fd9lT9vJbHYRACT8OhCbZBbxr6KRSawSovFpy8nDGshaK99S/EBhVIHp9+crhxrsZOuvLpgL1n23iyPg6Rl2hg==}
+ engines: {node: '>= 14'}
+ dependencies:
+ degenerator: 5.0.1
+ ip: 1.1.8
+ netmask: 2.0.2
+ dev: true
+
/package-name-regex/2.0.5:
resolution: {integrity: sha512-F0lX+FBs/Bo7KWY6EuUXj+oarXU0Og1R2Zdg3F/fVcNw3pPQAKFKxUrugno0Ds5NUztlx/gRLnQW9MF+7VTqAw==}
engines: {node: '>=12'}
@@ -9307,10 +9188,6 @@ packages:
- supports-color
dev: true
- /pako/1.0.11:
- resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==}
- dev: true
-
/param-case/3.0.4:
resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==}
dependencies:
@@ -9350,6 +9227,17 @@ packages:
lines-and-columns: 1.2.4
dev: true
+ /parse-json/7.1.0:
+ resolution: {integrity: sha512-ihtdrgbqdONYD156Ap6qTcaGcGdkdAxodO1wLqQ/j7HP1u2sFYppINiq4jyC8F+Nm+4fVufylCV00QmkTHkSUg==}
+ engines: {node: '>=16'}
+ dependencies:
+ '@babel/code-frame': 7.22.13
+ error-ex: 1.3.2
+ json-parse-even-better-errors: 3.0.0
+ lines-and-columns: 2.0.3
+ type-fest: 3.13.1
+ dev: true
+
/parse-ms/2.1.0:
resolution: {integrity: sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==}
engines: {node: '>=6'}
@@ -9427,7 +9315,7 @@ packages:
resolution: {integrity: sha512-tZFEaRQbMLjwrsmidsGJ6wDMv0iazJWk6SfIKnY4Xru8auXgmJkOBa5DUbYFcFD2Rzk2+KDlIiF0GVXNCbgC7g==}
engines: {node: '>=16 || 14 >=14.17'}
dependencies:
- lru-cache: 10.0.0
+ lru-cache: 10.0.1
minipass: 6.0.2
dev: true
@@ -9503,7 +9391,7 @@ packages:
dev: true
/pify/2.3.0:
- resolution: {integrity: sha1-7RQaasBDqEnqWISY59yosVMw6Qw=}
+ resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==}
engines: {node: '>=0.10.0'}
dev: true
@@ -9518,14 +9406,14 @@ packages:
dev: true
/pinkie-promise/2.0.1:
- resolution: {integrity: sha1-ITXW36ejWMBprJsXh3YogihFD/o=}
+ resolution: {integrity: sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==}
engines: {node: '>=0.10.0'}
dependencies:
pinkie: 2.0.4
dev: true
/pinkie/2.0.4:
- resolution: {integrity: sha1-clVrgM+g1IqXToDnckjoDtT3+HA=}
+ resolution: {integrity: sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==}
engines: {node: '>=0.10.0'}
dev: true
@@ -9534,16 +9422,6 @@ packages:
engines: {node: '>= 6'}
dev: true
- /piscina/3.2.0:
- resolution: {integrity: sha512-yn/jMdHRw+q2ZJhFhyqsmANcbF6V2QwmD84c6xRau+QpQOmtrBCoRGdvTfeuFDYXB5W2m6MfLkjkvQa9lUSmIA==}
- dependencies:
- eventemitter-asyncresource: 1.0.0
- hdr-histogram-js: 2.0.3
- hdr-histogram-percentiles-obj: 3.0.0
- optionalDependencies:
- nice-napi: 1.0.2
- dev: true
-
/pkg-conf/4.0.0:
resolution: {integrity: sha512-7dmgi4UY4qk+4mj5Cd8v/GExPo0K+SlY+hulOSdfZ/T6jVH6//y7NtzZo5WrfhDBxuQ0jCa7fLZmNaNh7EWL/w==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
@@ -9614,15 +9492,6 @@ packages:
react-is: 17.0.1
dev: true
- /pretty-format/29.4.2:
- resolution: {integrity: sha512-qKlHR8yFVCbcEWba0H0TOC8dnLlO4vPlyEjRPw31FZ2Rupy9nLa8ZLbYny8gWEl8CkEhJqAE6IzdNELTBVcBEg==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dependencies:
- '@jest/schemas': 29.4.2
- ansi-styles: 5.2.0
- react-is: 18.2.0
- dev: true
-
/pretty-format/29.6.1:
resolution: {integrity: sha512-7jRj+yXO0W7e4/tSJKoR7HRIHLPPjtNaUGG2xxKQnGvPNRkgWcQ0AZX6P4KBRJN4FcTBWb3sa7DVUJmocYuoog==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
@@ -9631,7 +9500,6 @@ packages:
ansi-styles: 5.2.0
react-is: 18.2.0
dev: true
- optional: true
/pretty-ms/7.0.1:
resolution: {integrity: sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==}
@@ -9693,6 +9561,38 @@ packages:
ipaddr.js: 1.9.1
dev: true
+ /proxy-agent/6.3.0:
+ resolution: {integrity: sha512-0LdR757eTj/JfuU7TL2YCuAZnxWXu3tkJbg4Oq3geW/qFNT/32T0sp2HnZ9O0lMR4q3vwAt0+xCA8SR0WAD0og==}
+ engines: {node: '>= 14'}
+ dependencies:
+ agent-base: 7.1.0
+ debug: 4.3.4
+ http-proxy-agent: 7.0.0
+ https-proxy-agent: 7.0.2
+ lru-cache: 7.18.3
+ pac-proxy-agent: 7.0.1
+ proxy-from-env: 1.1.0
+ socks-proxy-agent: 8.0.2
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /proxy-agent/6.3.1:
+ resolution: {integrity: sha512-Rb5RVBy1iyqOtNl15Cw/llpeLH8bsb37gM1FUfKQ+Wck6xHlbAhWGUFiTRHtkjqGTA5pSHz6+0hrPW/oECihPQ==}
+ engines: {node: '>= 14'}
+ dependencies:
+ agent-base: 7.1.0
+ debug: 4.3.4
+ http-proxy-agent: 7.0.0
+ https-proxy-agent: 7.0.2
+ lru-cache: 7.18.3
+ pac-proxy-agent: 7.0.1
+ proxy-from-env: 1.1.0
+ socks-proxy-agent: 8.0.2
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
/proxy-from-env/1.1.0:
resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==}
dev: true
@@ -9716,41 +9616,20 @@ packages:
engines: {node: '>=6'}
dev: true
- /puppeteer-core/19.6.3:
- resolution: {integrity: sha512-8MbhioSlkDaHkmolpQf9Z7ui7jplFfOFTnN8d5kPsCazRRTNIH6/bVxPskn0v5Gh9oqOBlknw0eHH0/OBQAxpQ==}
- engines: {node: '>=14.1.0'}
- dependencies:
- cross-fetch: 3.1.5
- debug: 4.3.4
- devtools-protocol: 0.0.1082910
- extract-zip: 2.0.1
- https-proxy-agent: 5.0.1
- proxy-from-env: 1.1.0
- rimraf: 3.0.2
- tar-fs: 2.1.1
- unbzip2-stream: 1.4.3
- ws: 8.11.0
- transitivePeerDependencies:
- - bufferutil
- - encoding
- - supports-color
- - utf-8-validate
- dev: true
-
- /puppeteer-core/20.3.0_typescript@4.6.2:
- resolution: {integrity: sha512-264pBrIui5bO6NJeOcbJrLa0OCwmA4+WK00JMrLIKTfRiqe2gx8KWTzLsjyw/bizErp3TKS7vt/I0i5fTC+mAw==}
- engines: {node: '>=16.0.0'}
+ /puppeteer-core/20.9.0_typescript@4.6.2:
+ resolution: {integrity: sha512-H9fYZQzMTRrkboEfPmf7m3CLDN6JvbxXA3qTtS+dFt27tR+CsFHzPsT6pzp6lYL6bJbAPaR0HaPO6uSi+F94Pg==}
+ engines: {node: '>=16.3.0'}
peerDependencies:
typescript: '>= 4.7.4'
peerDependenciesMeta:
typescript:
optional: true
dependencies:
- '@puppeteer/browsers': 1.3.0_typescript@4.6.2
- chromium-bidi: 0.4.9_devtools-protocol@0.0.1120988
- cross-fetch: 3.1.6
+ '@puppeteer/browsers': 1.4.6_typescript@4.6.2
+ chromium-bidi: 0.4.16_devtools-protocol@0.0.1147663
+ cross-fetch: 4.0.0
debug: 4.3.4
- devtools-protocol: 0.0.1120988
+ devtools-protocol: 0.0.1147663
typescript: 4.6.2
ws: 8.13.0
transitivePeerDependencies:
@@ -9778,11 +9657,25 @@ packages:
resolution: {integrity: sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==}
engines: {node: '>=0.10.0'}
dependencies:
- decode-uri-component: 0.2.0
+ decode-uri-component: 0.2.2
object-assign: 4.1.1
strict-uri-encode: 1.1.0
dev: true
+ /query-string/7.1.3:
+ resolution: {integrity: sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==}
+ engines: {node: '>=6'}
+ dependencies:
+ decode-uri-component: 0.2.2
+ filter-obj: 1.1.0
+ split-on-first: 1.1.0
+ strict-uri-encode: 2.0.0
+ dev: true
+
+ /queue-tick/1.0.1:
+ resolution: {integrity: sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==}
+ dev: true
+
/quick-lru/5.1.1:
resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==}
engines: {node: '>=10'}
@@ -9836,13 +9729,13 @@ packages:
read-pkg: 1.1.0
dev: true
- /read-pkg-up/9.1.0:
- resolution: {integrity: sha512-vaMRR1AC1nrd5CQM0PhlRsO5oc2AAigqr7cCrZ/MW/Rsaflz4RlgzkpL4qoU/z1F6wrbd85iFv1OQj/y5RdGvg==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+ /read-pkg-up/10.1.0:
+ resolution: {integrity: sha512-aNtBq4jR8NawpKJQldrQcSW9y/d+KWH4v24HWkHljOZ7H0av+YTGANBzRh9A5pw7v/bLVsLVPpOhJ7gHNVy8lA==}
+ engines: {node: '>=16'}
dependencies:
find-up: 6.3.0
- read-pkg: 7.1.0
- type-fest: 2.19.0
+ read-pkg: 8.1.0
+ type-fest: 4.4.0
dev: true
/read-pkg/1.1.0:
@@ -9863,14 +9756,14 @@ packages:
path-type: 3.0.0
dev: true
- /read-pkg/7.1.0:
- resolution: {integrity: sha512-5iOehe+WF75IccPc30bWTbpdDQLOCc3Uu8bi3Dte3Eueij81yx1Mrufk8qBx/YAbR4uL1FdUr+7BKXDwEtisXg==}
- engines: {node: '>=12.20'}
+ /read-pkg/8.1.0:
+ resolution: {integrity: sha512-PORM8AgzXeskHO/WEv312k9U03B8K9JSiWF/8N9sUuFjBa+9SF2u6K7VClzXwDXab51jCd8Nd36CNM+zR97ScQ==}
+ engines: {node: '>=16'}
dependencies:
'@types/normalize-package-data': 2.4.1
- normalize-package-data: 3.0.3
- parse-json: 5.2.0
- type-fest: 2.19.0
+ normalize-package-data: 6.0.0
+ parse-json: 7.1.0
+ type-fest: 4.4.0
dev: true
/readable-stream/2.3.7:
@@ -9894,10 +9787,10 @@ packages:
util-deprecate: 1.0.2
dev: true
- /readdir-glob/1.1.1:
- resolution: {integrity: sha512-91/k1EzZwDx6HbERR+zucygRFfiPl2zkIYZtv3Jjr6Mn7SkKcVct8aVO+sSRiGMc6fLf72du3d92/uY63YPdEA==}
+ /readdir-glob/1.1.3:
+ resolution: {integrity: sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==}
dependencies:
- minimatch: 3.0.4
+ minimatch: 5.1.6
dev: true
/readdirp/3.6.0:
@@ -9907,11 +9800,11 @@ packages:
picomatch: 2.3.1
dev: true
- /recursive-readdir/2.2.2:
- resolution: {integrity: sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg==}
- engines: {node: '>=0.10.0'}
+ /recursive-readdir/2.2.3:
+ resolution: {integrity: sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==}
+ engines: {node: '>=6.0.0'}
dependencies:
- minimatch: 3.0.4
+ minimatch: 3.1.2
dev: true
/regenerator-runtime/0.13.9:
@@ -9964,12 +9857,8 @@ packages:
engines: {node: '>=0.10.0'}
dev: true
- /resolve-alpn/1.0.0:
- resolution: {integrity: sha512-rTuiIEqFmGxne4IovivKSDzld2lWW9QCjqv80SYjPgf+gS35eaCAjaP54CCwGAwBtnCsvNLYtqxe1Nw+i6JEmA==}
-
/resolve-alpn/1.2.1:
resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==}
- dev: true
/resolve-cwd/3.0.0:
resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==}
@@ -10033,9 +9922,9 @@ packages:
fast-deep-equal: 2.0.1
dev: true
- /restore-cursor/4.0.0:
- resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+ /restore-cursor/3.1.0:
+ resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==}
+ engines: {node: '>=8'}
dependencies:
onetime: 5.1.2
signal-exit: 3.0.7
@@ -10191,8 +10080,8 @@ packages:
fsevents: 2.3.2
dev: true
- /run-async/2.4.1:
- resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==}
+ /run-async/3.0.0:
+ resolution: {integrity: sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==}
engines: {node: '>=0.12.0'}
dev: true
@@ -10200,14 +10089,18 @@ packages:
resolution: {integrity: sha512-zb/1OuZ6flOlH6tQyMPUrE3x3Ulxjlo9WIVXR4yVYi4H9UXQaeIsPbLn2R3O3vQCnDKkAl2qHiuocKKX4Tz/Sw==}
dev: true
- /rxjs/7.8.0:
- resolution: {integrity: sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==}
+ /rxjs/7.8.1:
+ resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==}
dependencies:
tslib: 2.3.1
dev: true
- /safaridriver/0.0.4:
- resolution: {integrity: sha512-EgK9Vc2Bk4WaECq1E7ti9GyeQ6JKKQNs40vNOE/b5Ul5dDEt429G0Kj5Nzs4FRS5ZIVa7nBck1TyHuinOYdz2Q==}
+ /safaridriver/0.0.6:
+ resolution: {integrity: sha512-cU8eBBOOoCsPKb3o/lvx8ppYWFVmTsnAu2MofkPbUPCfDvyFRtD8VyOGwWTtuJTdMNIC+dPnOgaoPNnsk7zs0Q==}
+ dev: true
+
+ /safaridriver/0.1.0:
+ resolution: {integrity: sha512-azzzIP3gR1TB9bVPv7QO4Zjw0rR1BWEU/s2aFdUMN48gxDjxEB13grAEuXDmkKPgE74cObymDxmAmZnL3clj4w==}
dev: true
/safe-buffer/5.1.2:
@@ -10222,17 +10115,32 @@ packages:
resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
dev: true
- /saucelabs/7.2.0:
- resolution: {integrity: sha512-87NDR3J5aH+mOSO9MY49ukxd2+PpvqYghAA0Vr6CHHw/0yuKtF94henVMdnC1HxpWe9agBizV+Gh9Bi98qzQow==}
+ /saucelabs/7.2.2:
+ resolution: {integrity: sha512-rxbazYeKw0RDoXnGCfTeY6or9QM42Nn/LcZyO4Wi11h1d5k7EkoXU58g6FrYZgC7+UtI1t4CZu5Z1a2F/YQzvg==}
hasBin: true
dependencies:
change-case: 4.1.2
download: 8.0.0
form-data: 4.0.0
- got: 11.8.5
+ got: 11.8.6
hash.js: 1.1.7
+ query-string: 7.1.3
tunnel: 0.0.6
- yargs: 17.3.1
+ yargs: 17.7.1
+ dev: true
+
+ /saucelabs/7.4.0:
+ resolution: {integrity: sha512-8EQTiYd+ntJhrWGFCQt74RnhilRvyQLHC/VVlL5PweF/c5slIeY6A/XaIKBF25cLGZTnEKuexZmOewfPOi0mUQ==}
+ hasBin: true
+ dependencies:
+ change-case: 4.1.2
+ compressing: 1.10.0
+ form-data: 4.0.0
+ got: 11.8.6
+ hash.js: 1.1.7
+ query-string: 7.1.3
+ tunnel: 0.0.6
+ yargs: 17.7.1
dev: true
/saxes/5.0.1:
@@ -10294,18 +10202,18 @@ packages:
upper-case-first: 2.0.2
dev: true
- /serialize-error/7.0.1:
- resolution: {integrity: sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==}
- engines: {node: '>=10'}
+ /serialize-error/11.0.2:
+ resolution: {integrity: sha512-o43i0jLcA0LXA5Uu+gI1Vj+lF66KR9IAcy0ThbGq1bAMPN+k5IgSHsulfnqf/ddKAz6dWf+k8PD5hAr9oCSHEQ==}
+ engines: {node: '>=14.16'}
dependencies:
- type-fest: 0.13.1
+ type-fest: 2.19.0
dev: true
- /serialize-error/8.0.1:
- resolution: {integrity: sha512-r5o60rWFS+8/b49DNAbB+GXZA0SpDpuWE758JxDKgRTga05r3U5lwyksE91dYKDhXSmnu36RALj615E6Aj5pSg==}
+ /serialize-error/7.0.1:
+ resolution: {integrity: sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==}
engines: {node: '>=10'}
dependencies:
- type-fest: 0.20.2
+ type-fest: 0.13.1
dev: true
/serialize-javascript/4.0.0:
@@ -10375,8 +10283,8 @@ packages:
resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
dev: true
- /signal-exit/4.0.2:
- resolution: {integrity: sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==}
+ /signal-exit/4.1.0:
+ resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
engines: {node: '>=14'}
dev: true
@@ -10441,6 +10349,17 @@ packages:
- supports-color
dev: true
+ /socks-proxy-agent/8.0.2:
+ resolution: {integrity: sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g==}
+ engines: {node: '>= 14'}
+ dependencies:
+ agent-base: 7.1.0
+ debug: 4.3.4
+ socks: 2.7.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
/socks/2.7.0:
resolution: {integrity: sha512-scnOe9y4VuiNUULJN72GrM26BNOjVsfPXI+j+98PkyEfsIXroa5ofyjT+FzGvn/xHs73U2JtoBYAVx9Hl4quSA==}
engines: {node: '>= 10.13.0', npm: '>= 3.0.0'}
@@ -10449,6 +10368,14 @@ packages:
smart-buffer: 4.2.0
dev: true
+ /socks/2.7.1:
+ resolution: {integrity: sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==}
+ engines: {node: '>= 10.13.0', npm: '>= 3.0.0'}
+ dependencies:
+ ip: 2.0.0
+ smart-buffer: 4.2.0
+ dev: true
+
/sort-keys-length/1.0.1:
resolution: {integrity: sha512-GRbEOUqCxemTAk/b32F2xa8wDTs+Z1QHOkbhJDQTvv/6G3ZkbJ+frYWsTcc7cBB3Fu4wy4XlLCuNtJuMn7Gsvw==}
engines: {node: '>=0.10.0'}
@@ -10548,9 +10475,9 @@ packages:
resolution: {integrity: sha1-bIOv82kvphJW4M0ZfgXp3hV2kaY=}
dev: true
- /split2/4.1.0:
- resolution: {integrity: sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ==}
- engines: {node: '>= 10.x'}
+ /split-on-first/1.1.0:
+ resolution: {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==}
+ engines: {node: '>=6'}
dev: true
/split2/4.2.0:
@@ -10614,11 +10541,28 @@ packages:
engines: {node: '>= 0.10.0'}
dev: true
+ /streamifier/0.1.1:
+ resolution: {integrity: sha512-zDgl+muIlWzXNsXeyUfOk9dChMjlpkq0DRsxujtYPgyJ676yQ8jEm6zzaaWHFDg5BNcLuif0eD2MTyJdZqXpdg==}
+ engines: {node: '>=0.10'}
+ dev: true
+
+ /streamx/2.15.1:
+ resolution: {integrity: sha512-fQMzy2O/Q47rgwErk/eGeLu/roaFWV0jVsogDmrszM9uIw8L5OA+t+V93MgYlufNptfjmYR1tOMWhei/Eh7TQA==}
+ dependencies:
+ fast-fifo: 1.3.2
+ queue-tick: 1.0.1
+ dev: true
+
/strict-uri-encode/1.1.0:
resolution: {integrity: sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==}
engines: {node: '>=0.10.0'}
dev: true
+ /strict-uri-encode/2.0.0:
+ resolution: {integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==}
+ engines: {node: '>=4'}
+ dev: true
+
/string-length/4.0.1:
resolution: {integrity: sha512-PKyXUd0LK0ePjSOnWn34V2uD6acUWev9uy0Ft05k0E8xRW+SKcA0F7eMr7h5xlzfn+4O3N+55rduYyet3Jk+jw==}
engines: {node: '>=10'}
@@ -10812,11 +10756,6 @@ packages:
has-flag: 4.0.0
dev: true
- /supports-color/9.3.1:
- resolution: {integrity: sha512-knBY82pjmnIzK3NifMo3RxEIRD9E0kIzV4BKcyTZ9+9kWgLMxd4PrsTSMoFQUabgRBbF8KOLRDCyKgNV+iK44Q==}
- engines: {node: '>=12'}
- dev: true
-
/supports-hyperlinks/2.1.0:
resolution: {integrity: sha512-zoE5/e+dnEijk6ASB6/qrK+oYdm2do1hjoLWrqUC/8WEIW1gbxFcKuBof7sW8ArN6e+AYvsE8HBGiVRWL/F5CA==}
engines: {node: '>=8'}
@@ -10843,13 +10782,12 @@ packages:
tar-stream: 2.1.4
dev: true
- /tar-fs/2.1.1:
- resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==}
+ /tar-fs/3.0.4:
+ resolution: {integrity: sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==}
dependencies:
- chownr: 1.1.4
mkdirp-classic: 0.5.3
pump: 3.0.0
- tar-stream: 2.1.4
+ tar-stream: 3.1.6
dev: true
/tar-stream/1.6.2:
@@ -10869,13 +10807,21 @@ packages:
resolution: {integrity: sha512-o3pS2zlG4gxr67GmFYBLlq+dM8gyRGUOvsrHclSkvtVtQbjV0s/+ZE8OpICbaj8clrX3tjeHngYGP7rweaBnuw==}
engines: {node: '>=6'}
dependencies:
- bl: 4.0.3
+ bl: 4.1.0
end-of-stream: 1.4.4
fs-constants: 1.0.0
inherits: 2.0.4
readable-stream: 3.6.0
dev: true
+ /tar-stream/3.1.6:
+ resolution: {integrity: sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg==}
+ dependencies:
+ b4a: 1.6.4
+ fast-fifo: 1.3.2
+ streamx: 2.15.1
+ dev: true
+
/tar/6.1.11:
resolution: {integrity: sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==}
engines: {node: '>= 10'}
@@ -10939,7 +10885,7 @@ packages:
dev: true
/through/2.3.8:
- resolution: {integrity: sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=}
+ resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==}
dev: true
/time-zone/1.0.0:
@@ -11171,16 +11117,31 @@ packages:
engines: {node: '>=10'}
dev: true
- /type-fest/1.4.0:
- resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==}
+ /type-fest/0.21.3:
+ resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==}
engines: {node: '>=10'}
dev: true
+ /type-fest/2.13.0:
+ resolution: {integrity: sha512-lPfAm42MxE4/456+QyIaaVBAwgpJb6xZ8PRu09utnhPdWwcyj9vgy6Sq0Z5yNbJ21EdxB5dRU/Qg8bsyAMtlcw==}
+ engines: {node: '>=12.20'}
+ dev: true
+
/type-fest/2.19.0:
resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==}
engines: {node: '>=12.20'}
dev: true
+ /type-fest/3.13.1:
+ resolution: {integrity: sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==}
+ engines: {node: '>=14.16'}
+ dev: true
+
+ /type-fest/4.4.0:
+ resolution: {integrity: sha512-HT3RRs7sTfY22KuPQJkD/XjbTbxgP2Je5HPt6H6JEGvcjHd5Lqru75EbrP3tb4FYjNJ+DjLp+MNQTFQU0mhXNw==}
+ engines: {node: '>=16'}
+ dev: true
+
/type-is/1.6.18:
resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==}
engines: {node: '>= 0.6'}
@@ -11284,6 +11245,11 @@ packages:
engines: {node: '>= 4'}
dev: true
+ /userhome/1.0.0:
+ resolution: {integrity: sha512-ayFKY3H+Pwfy4W98yPdtH1VqH4psDeyW8lYYFzfecR9d6hqLpqhecktvYR3SEEXt7vG0S1JEpciI3g94pMErig==}
+ engines: {node: '>= 0.8.0'}
+ dev: true
+
/util-deprecate/1.0.2:
resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
dev: true
@@ -11309,11 +11275,6 @@ packages:
hasBin: true
dev: true
- /uuid/9.0.0:
- resolution: {integrity: sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==}
- hasBin: true
- dev: true
-
/v8-compile-cache-lib/3.0.1:
resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==}
dev: true
@@ -11415,8 +11376,8 @@ packages:
defaults: 1.0.3
dev: true
- /wdio-chromedriver-service/8.0.1_004e92621c7fa5837873d8fdb8947671:
- resolution: {integrity: sha512-nLjJmUBlng8RtnTM/ZJt1rzwAY1QqsMZbmNDxX7/AuSZEu88URTjjUhGPHY0d9al33GSiVoF606P0QSQT6B1ag==}
+ /wdio-chromedriver-service/8.1.1_514dbdcecc2bde428ae175e957c6d0fe:
+ resolution: {integrity: sha512-pN3GiOkTIMnalfq4PJAHdX95pDp1orHnTY8W1fIbd6ok81ba97UjerTgS7lUDRUh1p0MAm35Ww0uc0/9wzB7SA==}
engines: {node: ^16.13 || >=18}
peerDependencies:
'@wdio/types': ^7.0.0 || ^8.0.0-alpha.219
@@ -11428,19 +11389,19 @@ packages:
chromedriver:
optional: true
dependencies:
- '@wdio/logger': 8.1.0
- '@wdio/types': 8.3.0
+ '@wdio/logger': 8.16.17
+ '@wdio/types': 8.17.0
chromedriver: 114.0.2
fs-extra: 11.1.0
- split2: 4.1.0
+ split2: 4.2.0
tcp-port-used: 1.0.2
- webdriverio: 8.3.5
+ webdriverio: 8.18.2_typescript@4.6.2
transitivePeerDependencies:
- supports-color
dev: true
- /wdio-edgedriver-service/3.0.2_@wdio+types@8.3.0:
- resolution: {integrity: sha512-7rDzeG1Dpcbx28w5fpHX5MOm9bteiWeTVdeVvRVIqukVdgPyjS0Ej/pU4952wZBFWqnja4er0B90x6BYU1KiIw==}
+ /wdio-edgedriver-service/3.0.3_@wdio+types@8.17.0:
+ resolution: {integrity: sha512-oHKUFnh9Nn4s749Yl8hp20xvfF8GnK4jNV84qoy52/a0ETgWh0FG5qlRVXBIqIulqhGlfrCgL5/pIizMnEix1w==}
engines: {node: ^16.13 || >=18}
peerDependencies:
'@wdio/types': ^7.0.0 || ^8.0.0
@@ -11448,9 +11409,9 @@ packages:
'@wdio/types':
optional: true
dependencies:
- '@wdio/logger': 8.11.0
- '@wdio/types': 8.3.0
- edgedriver: 5.2.1
+ '@wdio/logger': 8.16.17
+ '@wdio/types': 8.17.0
+ edgedriver: 5.3.8
get-port: 7.0.0
split2: 4.2.0
wait-port: 1.0.4
@@ -11458,8 +11419,8 @@ packages:
- supports-color
dev: true
- /wdio-safaridriver-service/2.1.0_38e69deb68987ddd418b1267598e302e:
- resolution: {integrity: sha512-Zg0aZn8KJo+MwvdOTje2cja4OcrkpoCBhQSzVlhZ3SszMnwhi4VQ1p5TdHB9mWZpuVtsLHWpmx/G7ceJWendVw==}
+ /wdio-safaridriver-service/2.1.1_4fb69569f1618470b3fa12973abeed28:
+ resolution: {integrity: sha512-Rz8uls7EY0bHOZJpykmAMIQzT0gNe6lg32XdCjO/ppSvscWKP57lePGWD80RCU4kKnwX1TbrTivqfjl6vK/1rQ==}
engines: {node: ^16.13 || >=18}
peerDependencies:
'@wdio/types': ^7.0.0 || ^8.0.0-alpha.219
@@ -11468,15 +11429,15 @@ packages:
'@wdio/types':
optional: true
dependencies:
- '@types/split2': 3.2.1
+ '@types/split2': 4.2.1
'@types/tcp-port-used': 1.0.1
- '@wdio/logger': 8.11.0
- '@wdio/types': 8.3.0
- fs-extra: 11.1.0
- safaridriver: 0.0.4
- split2: 4.1.0
+ '@wdio/logger': 8.16.17
+ '@wdio/types': 8.17.0
+ fs-extra: 11.1.1
+ safaridriver: 0.0.6
+ split2: 4.2.0
tcp-port-used: 1.0.2
- webdriverio: 8.3.5
+ webdriverio: 8.18.2_typescript@4.6.2
transitivePeerDependencies:
- supports-color
dev: true
@@ -11495,75 +11456,60 @@ packages:
resolution: {integrity: sha512-qRkpmSeKfEWAzNhtX541xA8gCJ+pqCqBmUlDVkVDSCSYUvfvNqF+k9g8I+uyreRcDBdfiJrd0/aLbTy5ydo49Q==}
dev: false
- /webdriver/8.11.1:
- resolution: {integrity: sha512-hSpUZYzUA65t4DDtKujCHUX6hpFTUleb7lWMcf5xjPz8sxWrK9R8NIw7pXt/GU6PVS331nGAaYkzoXrqz2VB8w==}
+ /webdriver/8.18.2:
+ resolution: {integrity: sha512-7xr8K2jlrRdhqK6LLHrg96OiccWT5EeBIQXk9xAifgIbs6l/JfzCjC9WqC0AmX9plXjR8wf2LS+Ob9Ajhx6v+A==}
engines: {node: ^16.13 || >=18}
dependencies:
'@types/node': 20.3.3
'@types/ws': 8.5.4
- '@wdio/config': 8.11.0
- '@wdio/logger': 8.11.0
- '@wdio/protocols': 8.11.0
- '@wdio/types': 8.10.4
- '@wdio/utils': 8.11.0
+ '@wdio/config': 8.18.2
+ '@wdio/logger': 8.16.17
+ '@wdio/protocols': 8.18.0
+ '@wdio/types': 8.17.0
+ '@wdio/utils': 8.18.2
deepmerge-ts: 5.1.0
got: 12.6.1
ky: 0.33.2
ws: 8.13.0
transitivePeerDependencies:
- bufferutil
+ - supports-color
- utf-8-validate
dev: true
- /webdriver/8.3.5:
- resolution: {integrity: sha512-TNlvRtX4OVDzkrLSH5vAVpzTRbpOEYKyU80S8wVx9OddTFgs4fc4SLEqZobdSc1W/IvKjoTNa8TkFx9M237tOw==}
- engines: {node: ^16.13 || >=18}
- dependencies:
- '@types/node': 18.13.0
- '@types/ws': 8.5.4
- '@wdio/config': 8.3.2
- '@wdio/logger': 8.1.0
- '@wdio/protocols': 8.3.5
- '@wdio/types': 8.3.0
- '@wdio/utils': 8.3.0
- deepmerge-ts: 4.3.0
- got: 12.5.3
- ky: 0.33.2
- ws: 8.11.0
- transitivePeerDependencies:
- - bufferutil
- - utf-8-validate
- dev: true
-
- /webdriverio/8.11.2_typescript@4.6.2:
- resolution: {integrity: sha512-e/9WkdNTfWeoaSo2UzK0Giec/nQX3i7U9J8esimhozH/EpwSqIaEJ2pRRlxRVafEhe2OBG1QDhnLnDjdCC5Hxg==}
+ /webdriverio/8.18.2_typescript@4.6.2:
+ resolution: {integrity: sha512-vX+U4QH9HdyT3upcOzP6YMpnAA1oZJJAZetvf9aWZ9KnBzgkL60LiZ/q9xCX+VWYKEIvNZ66ekppbuZ8FpobIQ==}
engines: {node: ^16.13 || >=18}
+ peerDependencies:
+ devtools: ^8.14.0
+ peerDependenciesMeta:
+ devtools:
+ optional: true
dependencies:
'@types/node': 20.3.3
- '@wdio/config': 8.11.0
- '@wdio/logger': 8.11.0
- '@wdio/protocols': 8.11.0
+ '@wdio/config': 8.18.2
+ '@wdio/logger': 8.16.17
+ '@wdio/protocols': 8.18.0
'@wdio/repl': 8.10.1
- '@wdio/types': 8.10.4
- '@wdio/utils': 8.11.0
- archiver: 5.1.0
+ '@wdio/types': 8.17.0
+ '@wdio/utils': 8.18.2
+ archiver: 6.0.1
aria-query: 5.0.0
css-shorthand-properties: 1.1.1
css-value: 0.0.1
- devtools: 8.11.0_typescript@4.6.2
- devtools-protocol: 0.0.1152884
+ devtools-protocol: 0.0.1206220
grapheme-splitter: 1.0.4
import-meta-resolve: 3.0.0
is-plain-obj: 4.1.0
lodash.clonedeep: 4.5.0
lodash.zip: 4.2.0
minimatch: 9.0.2
- puppeteer-core: 20.3.0_typescript@4.6.2
+ puppeteer-core: 20.9.0_typescript@4.6.2
query-selector-shadow-dom: 1.0.0
resq: 1.10.0
rgb2hex: 0.2.5
- serialize-error: 8.0.1
- webdriver: 8.11.1
+ serialize-error: 11.0.2
+ webdriver: 8.18.2
transitivePeerDependencies:
- bufferutil
- encoding
@@ -11572,42 +11518,6 @@ packages:
- utf-8-validate
dev: true
- /webdriverio/8.3.5:
- resolution: {integrity: sha512-Rf3Yadk7qydAJiobazk0TzIPK8iYzzbDcbNKa3xX9u3VUMK1xZeoccZunE5WImu4Llg+1BBA2IN1rW0iiQHe5w==}
- engines: {node: ^16.13 || >=18}
- dependencies:
- '@types/node': 18.13.0
- '@wdio/config': 8.3.2
- '@wdio/logger': 8.1.0
- '@wdio/protocols': 8.3.5
- '@wdio/repl': 8.1.0
- '@wdio/types': 8.3.0
- '@wdio/utils': 8.3.0
- archiver: 5.1.0
- aria-query: 5.0.0
- css-shorthand-properties: 1.1.1
- css-value: 0.0.1
- devtools: 8.3.5
- devtools-protocol: 0.0.1101329
- grapheme-splitter: 1.0.4
- import-meta-resolve: 2.2.1
- is-plain-obj: 4.1.0
- lodash.clonedeep: 4.5.0
- lodash.zip: 4.2.0
- minimatch: 6.1.6
- puppeteer-core: 19.6.3
- query-selector-shadow-dom: 1.0.0
- resq: 1.10.0
- rgb2hex: 0.2.5
- serialize-error: 8.0.1
- webdriver: 8.3.5
- transitivePeerDependencies:
- - bufferutil
- - encoding
- - supports-color
- - utf-8-validate
- dev: true
-
/webidl-conversions/3.0.1:
resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}
dev: true
@@ -11668,12 +11578,12 @@ packages:
isexe: 2.0.0
dev: true
- /which/3.0.1:
- resolution: {integrity: sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==}
- engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
+ /which/4.0.0:
+ resolution: {integrity: sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==}
+ engines: {node: ^16.13.0 || >=18.0.0}
hasBin: true
dependencies:
- isexe: 2.0.0
+ isexe: 3.1.1
dev: true
/wide-align/1.1.5:
@@ -11694,6 +11604,15 @@ packages:
engines: {node: '>=0.10.0'}
dev: true
+ /wrap-ansi/6.2.0:
+ resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==}
+ engines: {node: '>=8'}
+ dependencies:
+ ansi-styles: 4.3.0
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+ dev: true
+
/wrap-ansi/7.0.0:
resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
engines: {node: '>=10'}
@@ -11745,19 +11664,6 @@ packages:
optional: true
dev: true
- /ws/8.11.0:
- resolution: {integrity: sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==}
- engines: {node: '>=10.0.0'}
- peerDependencies:
- bufferutil: ^4.0.1
- utf-8-validate: ^5.0.2
- peerDependenciesMeta:
- bufferutil:
- optional: true
- utf-8-validate:
- optional: true
- dev: true
-
/ws/8.13.0:
resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==}
engines: {node: '>=10.0.0'}
@@ -11838,8 +11744,8 @@ packages:
yargs-parser: 21.0.0
dev: true
- /yargs/17.6.2:
- resolution: {integrity: sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==}
+ /yargs/17.7.1:
+ resolution: {integrity: sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==}
engines: {node: '>=12'}
dependencies:
cliui: 8.0.1
@@ -11851,8 +11757,8 @@ packages:
yargs-parser: 21.1.1
dev: true
- /yargs/17.7.1:
- resolution: {integrity: sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==}
+ /yargs/17.7.2:
+ resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==}
engines: {node: '>=12'}
dependencies:
cliui: 8.0.1
@@ -11881,6 +11787,12 @@ packages:
fd-slicer: 1.1.0
dev: true
+ /yazl/2.5.1:
+ resolution: {integrity: sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==}
+ dependencies:
+ buffer-crc32: 0.2.13
+ dev: true
+
/yn/3.1.1:
resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==}
engines: {node: '>=6'}
@@ -11896,12 +11808,12 @@ packages:
engines: {node: '>=12.20'}
dev: true
- /zip-stream/4.0.4:
- resolution: {integrity: sha512-a65wQ3h5gcQ/nQGWV1mSZCEzCML6EK/vyVPcrPNynySP1j3VBbQKh3nhC8CbORb+jfl2vXvh56Ul5odP1bAHqw==}
- engines: {node: '>= 10'}
+ /zip-stream/5.0.1:
+ resolution: {integrity: sha512-UfZ0oa0C8LI58wJ+moL46BDIMgCQbnsb+2PoiJYtonhBsMh2bq1eRBVkvjfVsqbEHd9/EgKPUuL9saSSsec8OA==}
+ engines: {node: '>= 12.0.0'}
dependencies:
- archiver-utils: 2.1.0
- compress-commons: 4.0.2
+ archiver-utils: 4.0.1
+ compress-commons: 5.0.1
readable-stream: 3.6.0
dev: true
diff --git a/common/config/rush/repo-state.json b/common/config/rush/repo-state.json
index bbb32c307..77d8ad8e4 100644
--- a/common/config/rush/repo-state.json
+++ b/common/config/rush/repo-state.json
@@ -1,5 +1,5 @@
// DO NOT MODIFY THIS FILE MANUALLY BUT DO COMMIT IT. It is generated and used by Rush.
{
- "pnpmShrinkwrapHash": "1a1088b00d3708ad3e18a4dae34bc79e9b057acd",
+ "pnpmShrinkwrapHash": "c272b447631dc0e0be0f52f2e7d1ed6aa6603939",
"preferredVersionsHash": "bf21a9e8fbc5a3846fb05b4fa0859e0917b2202f"
}
diff --git a/trackers/javascript-tracker/package.json b/trackers/javascript-tracker/package.json
index 4aa352dda..9d660ed2b 100644
--- a/trackers/javascript-tracker/package.json
+++ b/trackers/javascript-tracker/package.json
@@ -79,13 +79,13 @@
"@types/jsdom": "~16.2.14",
"@types/lodash": "~4.14.180",
"@types/node": "~14.6.0",
- "@wdio/cli": "~8.3.3",
- "@wdio/jasmine-framework": "~8.3.3",
- "@wdio/local-runner": "~8.3.3",
- "@wdio/sauce-service": "~8.3.3",
- "@wdio/spec-reporter": "~8.3.0",
- "@wdio/static-server-service": "~8.3.0",
- "@wdio/types": "~8.3.0",
+ "@wdio/cli": "~8.18.2",
+ "@wdio/jasmine-framework": "~8.18.2",
+ "@wdio/local-runner": "~8.18.2",
+ "@wdio/sauce-service": "~8.18.2",
+ "@wdio/spec-reporter": "~8.18.1",
+ "@wdio/static-server-service": "~8.17.0",
+ "@wdio/types": "~8.17.0",
"chalk": "4.1.2",
"chromedriver": "~114.0.0",
"dockerode": "~3.3.1",
@@ -102,18 +102,18 @@
"rollup-plugin-sizes": "~1.0.4",
"rollup-plugin-terser": "~7.0.2",
"rollup-plugin-ts": "~2.0.5",
- "saucelabs": "~7.2.0",
+ "saucelabs": "~7.4.0",
"ts-jest": "~27.1.3",
"ts-node": "~10.9.1",
"typescript": "~4.6.2",
- "wdio-chromedriver-service": "~8.0.1",
- "webdriverio": "~8.3.3",
- "@wdio/shared-store-service": "~8.11.2",
+ "wdio-chromedriver-service": "~8.1.1",
+ "webdriverio": "~8.18.2",
+ "@wdio/shared-store-service": "~8.18.2",
"node-fetch": "2",
"@types/node-fetch": "2",
- "@wdio/globals": "~8.11.2",
- "wdio-safaridriver-service": "~2.1.0",
- "wdio-edgedriver-service": "~3.0.2",
+ "@wdio/globals": "~8.18.2",
+ "wdio-safaridriver-service": "~2.1.1",
+ "wdio-edgedriver-service": "~3.0.3",
"@types/youtube": "~0.0.46"
}
}
From 613ba5de520b997e87aa3a93d6d3dd5a5a3ec015 Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Mon, 16 Oct 2023 14:58:08 +0000
Subject: [PATCH 020/341] Update changelogs [skip ci]
---
.../issue-focalmeter_2022-12-22-13-04.json | 10 ----------
.../issue-1241_2023-10-10-10-15.json | 10 ----------
.../issue-1241_2023-10-10-10-15.json | 10 ----------
libraries/browser-tracker-core/CHANGELOG.json | 6 ++++++
libraries/browser-tracker-core/CHANGELOG.md | 7 ++++++-
libraries/tracker-core/CHANGELOG.json | 6 ++++++
libraries/tracker-core/CHANGELOG.md | 7 ++++++-
plugins/browser-plugin-ad-tracking/CHANGELOG.json | 6 ++++++
plugins/browser-plugin-ad-tracking/CHANGELOG.md | 7 ++++++-
.../browser-plugin-browser-features/CHANGELOG.json | 6 ++++++
plugins/browser-plugin-browser-features/CHANGELOG.md | 7 ++++++-
plugins/browser-plugin-client-hints/CHANGELOG.json | 6 ++++++
plugins/browser-plugin-client-hints/CHANGELOG.md | 7 ++++++-
plugins/browser-plugin-consent/CHANGELOG.json | 6 ++++++
plugins/browser-plugin-consent/CHANGELOG.md | 7 ++++++-
plugins/browser-plugin-debugger/CHANGELOG.json | 6 ++++++
plugins/browser-plugin-debugger/CHANGELOG.md | 7 ++++++-
plugins/browser-plugin-ecommerce/CHANGELOG.json | 6 ++++++
plugins/browser-plugin-ecommerce/CHANGELOG.md | 7 ++++++-
.../browser-plugin-enhanced-consent/CHANGELOG.json | 6 ++++++
plugins/browser-plugin-enhanced-consent/CHANGELOG.md | 7 ++++++-
.../browser-plugin-enhanced-ecommerce/CHANGELOG.json | 6 ++++++
.../browser-plugin-enhanced-ecommerce/CHANGELOG.md | 7 ++++++-
plugins/browser-plugin-error-tracking/CHANGELOG.json | 6 ++++++
plugins/browser-plugin-error-tracking/CHANGELOG.md | 7 ++++++-
plugins/browser-plugin-focalmeter/CHANGELOG.json | 12 ++++++++++++
plugins/browser-plugin-focalmeter/CHANGELOG.md | 11 +++++++++++
plugins/browser-plugin-form-tracking/CHANGELOG.json | 12 ++++++++++++
plugins/browser-plugin-form-tracking/CHANGELOG.md | 9 ++++++++-
plugins/browser-plugin-ga-cookies/CHANGELOG.json | 6 ++++++
plugins/browser-plugin-ga-cookies/CHANGELOG.md | 7 ++++++-
plugins/browser-plugin-geolocation/CHANGELOG.json | 6 ++++++
plugins/browser-plugin-geolocation/CHANGELOG.md | 7 ++++++-
.../CHANGELOG.json | 6 ++++++
.../browser-plugin-link-click-tracking/CHANGELOG.md | 7 ++++++-
plugins/browser-plugin-media-tracking/CHANGELOG.json | 6 ++++++
plugins/browser-plugin-media-tracking/CHANGELOG.md | 7 ++++++-
plugins/browser-plugin-media/CHANGELOG.json | 6 ++++++
plugins/browser-plugin-media/CHANGELOG.md | 7 ++++++-
plugins/browser-plugin-optimizely-x/CHANGELOG.json | 6 ++++++
plugins/browser-plugin-optimizely-x/CHANGELOG.md | 7 ++++++-
plugins/browser-plugin-optimizely/CHANGELOG.json | 6 ++++++
plugins/browser-plugin-optimizely/CHANGELOG.md | 7 ++++++-
.../CHANGELOG.json | 6 ++++++
.../CHANGELOG.md | 7 ++++++-
.../browser-plugin-performance-timing/CHANGELOG.json | 6 ++++++
.../browser-plugin-performance-timing/CHANGELOG.md | 7 ++++++-
.../browser-plugin-privacy-sandbox/CHANGELOG.json | 6 ++++++
plugins/browser-plugin-privacy-sandbox/CHANGELOG.md | 7 ++++++-
plugins/browser-plugin-site-tracking/CHANGELOG.json | 6 ++++++
plugins/browser-plugin-site-tracking/CHANGELOG.md | 7 ++++++-
.../browser-plugin-snowplow-ecommerce/CHANGELOG.json | 6 ++++++
.../browser-plugin-snowplow-ecommerce/CHANGELOG.md | 7 ++++++-
plugins/browser-plugin-timezone/CHANGELOG.json | 6 ++++++
plugins/browser-plugin-timezone/CHANGELOG.md | 7 ++++++-
plugins/browser-plugin-vimeo-tracking/CHANGELOG.json | 6 ++++++
plugins/browser-plugin-vimeo-tracking/CHANGELOG.md | 7 ++++++-
plugins/browser-plugin-web-vitals/CHANGELOG.json | 6 ++++++
plugins/browser-plugin-web-vitals/CHANGELOG.md | 7 ++++++-
.../browser-plugin-youtube-tracking/CHANGELOG.json | 6 ++++++
plugins/browser-plugin-youtube-tracking/CHANGELOG.md | 7 ++++++-
trackers/browser-tracker/CHANGELOG.json | 6 ++++++
trackers/browser-tracker/CHANGELOG.md | 7 ++++++-
trackers/javascript-tracker/CHANGELOG.json | 6 ++++++
trackers/javascript-tracker/CHANGELOG.md | 7 ++++++-
trackers/node-tracker/CHANGELOG.json | 6 ++++++
trackers/node-tracker/CHANGELOG.md | 7 ++++++-
67 files changed, 403 insertions(+), 61 deletions(-)
delete mode 100644 common/changes/@snowplow/browser-plugin-focalmeter/issue-focalmeter_2022-12-22-13-04.json
delete mode 100644 common/changes/@snowplow/browser-plugin-form-tracking/issue-1241_2023-10-10-10-15.json
delete mode 100644 common/changes/@snowplow/javascript-tracker/issue-1241_2023-10-10-10-15.json
create mode 100644 plugins/browser-plugin-focalmeter/CHANGELOG.md
diff --git a/common/changes/@snowplow/browser-plugin-focalmeter/issue-focalmeter_2022-12-22-13-04.json b/common/changes/@snowplow/browser-plugin-focalmeter/issue-focalmeter_2022-12-22-13-04.json
deleted file mode 100644
index 325547edf..000000000
--- a/common/changes/@snowplow/browser-plugin-focalmeter/issue-focalmeter_2022-12-22-13-04.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "changes": [
- {
- "packageName": "@snowplow/browser-plugin-focalmeter",
- "comment": "Add plugin to send requests with user ID to a Kantar FocalMeter endpoint (#1133)",
- "type": "none"
- }
- ],
- "packageName": "@snowplow/browser-plugin-focalmeter"
-}
\ No newline at end of file
diff --git a/common/changes/@snowplow/browser-plugin-form-tracking/issue-1241_2023-10-10-10-15.json b/common/changes/@snowplow/browser-plugin-form-tracking/issue-1241_2023-10-10-10-15.json
deleted file mode 100644
index 57bdb1ff0..000000000
--- a/common/changes/@snowplow/browser-plugin-form-tracking/issue-1241_2023-10-10-10-15.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "changes": [
- {
- "packageName": "@snowplow/browser-plugin-form-tracking",
- "comment": "Fix transform function for submit_form event",
- "type": "none"
- }
- ],
- "packageName": "@snowplow/browser-plugin-form-tracking"
-}
\ No newline at end of file
diff --git a/common/changes/@snowplow/javascript-tracker/issue-1241_2023-10-10-10-15.json b/common/changes/@snowplow/javascript-tracker/issue-1241_2023-10-10-10-15.json
deleted file mode 100644
index ae2f53795..000000000
--- a/common/changes/@snowplow/javascript-tracker/issue-1241_2023-10-10-10-15.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "changes": [
- {
- "packageName": "@snowplow/javascript-tracker",
- "comment": "",
- "type": "none"
- }
- ],
- "packageName": "@snowplow/javascript-tracker"
-}
\ No newline at end of file
diff --git a/libraries/browser-tracker-core/CHANGELOG.json b/libraries/browser-tracker-core/CHANGELOG.json
index b25b0c079..828399fee 100644
--- a/libraries/browser-tracker-core/CHANGELOG.json
+++ b/libraries/browser-tracker-core/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-tracker-core",
"entries": [
+ {
+ "version": "3.16.0",
+ "tag": "@snowplow/browser-tracker-core_v3.16.0",
+ "date": "Mon, 16 Oct 2023 14:58:08 GMT",
+ "comments": {}
+ },
{
"version": "3.15.0",
"tag": "@snowplow/browser-tracker-core_v3.15.0",
diff --git a/libraries/browser-tracker-core/CHANGELOG.md b/libraries/browser-tracker-core/CHANGELOG.md
index 88501ac1b..fb800840a 100644
--- a/libraries/browser-tracker-core/CHANGELOG.md
+++ b/libraries/browser-tracker-core/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-tracker-core
-This log was last generated on Mon, 28 Aug 2023 14:25:14 GMT and should not be manually modified.
+This log was last generated on Mon, 16 Oct 2023 14:58:08 GMT and should not be manually modified.
+
+## 3.16.0
+Mon, 16 Oct 2023 14:58:08 GMT
+
+_Version update only_
## 3.15.0
Mon, 28 Aug 2023 14:25:14 GMT
diff --git a/libraries/tracker-core/CHANGELOG.json b/libraries/tracker-core/CHANGELOG.json
index 834d26709..5ae8b3e2e 100644
--- a/libraries/tracker-core/CHANGELOG.json
+++ b/libraries/tracker-core/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/tracker-core",
"entries": [
+ {
+ "version": "3.16.0",
+ "tag": "@snowplow/tracker-core_v3.16.0",
+ "date": "Mon, 16 Oct 2023 14:58:08 GMT",
+ "comments": {}
+ },
{
"version": "3.15.0",
"tag": "@snowplow/tracker-core_v3.15.0",
diff --git a/libraries/tracker-core/CHANGELOG.md b/libraries/tracker-core/CHANGELOG.md
index bcebc2c07..6aba93d0d 100644
--- a/libraries/tracker-core/CHANGELOG.md
+++ b/libraries/tracker-core/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/tracker-core
-This log was last generated on Mon, 28 Aug 2023 14:25:14 GMT and should not be manually modified.
+This log was last generated on Mon, 16 Oct 2023 14:58:08 GMT and should not be manually modified.
+
+## 3.16.0
+Mon, 16 Oct 2023 14:58:08 GMT
+
+_Version update only_
## 3.15.0
Mon, 28 Aug 2023 14:25:14 GMT
diff --git a/plugins/browser-plugin-ad-tracking/CHANGELOG.json b/plugins/browser-plugin-ad-tracking/CHANGELOG.json
index a91cd9666..beecede67 100644
--- a/plugins/browser-plugin-ad-tracking/CHANGELOG.json
+++ b/plugins/browser-plugin-ad-tracking/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-ad-tracking",
"entries": [
+ {
+ "version": "3.16.0",
+ "tag": "@snowplow/browser-plugin-ad-tracking_v3.16.0",
+ "date": "Mon, 16 Oct 2023 14:58:08 GMT",
+ "comments": {}
+ },
{
"version": "3.15.0",
"tag": "@snowplow/browser-plugin-ad-tracking_v3.15.0",
diff --git a/plugins/browser-plugin-ad-tracking/CHANGELOG.md b/plugins/browser-plugin-ad-tracking/CHANGELOG.md
index e251dddaa..bd8faf463 100644
--- a/plugins/browser-plugin-ad-tracking/CHANGELOG.md
+++ b/plugins/browser-plugin-ad-tracking/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-ad-tracking
-This log was last generated on Mon, 28 Aug 2023 14:25:14 GMT and should not be manually modified.
+This log was last generated on Mon, 16 Oct 2023 14:58:08 GMT and should not be manually modified.
+
+## 3.16.0
+Mon, 16 Oct 2023 14:58:08 GMT
+
+_Version update only_
## 3.15.0
Mon, 28 Aug 2023 14:25:14 GMT
diff --git a/plugins/browser-plugin-browser-features/CHANGELOG.json b/plugins/browser-plugin-browser-features/CHANGELOG.json
index 3efcda4cb..68d98c2a2 100644
--- a/plugins/browser-plugin-browser-features/CHANGELOG.json
+++ b/plugins/browser-plugin-browser-features/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-browser-features",
"entries": [
+ {
+ "version": "3.16.0",
+ "tag": "@snowplow/browser-plugin-browser-features_v3.16.0",
+ "date": "Mon, 16 Oct 2023 14:58:08 GMT",
+ "comments": {}
+ },
{
"version": "3.15.0",
"tag": "@snowplow/browser-plugin-browser-features_v3.15.0",
diff --git a/plugins/browser-plugin-browser-features/CHANGELOG.md b/plugins/browser-plugin-browser-features/CHANGELOG.md
index 521110f7d..88e13827b 100644
--- a/plugins/browser-plugin-browser-features/CHANGELOG.md
+++ b/plugins/browser-plugin-browser-features/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-browser-features
-This log was last generated on Mon, 28 Aug 2023 14:25:14 GMT and should not be manually modified.
+This log was last generated on Mon, 16 Oct 2023 14:58:08 GMT and should not be manually modified.
+
+## 3.16.0
+Mon, 16 Oct 2023 14:58:08 GMT
+
+_Version update only_
## 3.15.0
Mon, 28 Aug 2023 14:25:14 GMT
diff --git a/plugins/browser-plugin-client-hints/CHANGELOG.json b/plugins/browser-plugin-client-hints/CHANGELOG.json
index 9421091a2..90ba29aee 100644
--- a/plugins/browser-plugin-client-hints/CHANGELOG.json
+++ b/plugins/browser-plugin-client-hints/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-client-hints",
"entries": [
+ {
+ "version": "3.16.0",
+ "tag": "@snowplow/browser-plugin-client-hints_v3.16.0",
+ "date": "Mon, 16 Oct 2023 14:58:08 GMT",
+ "comments": {}
+ },
{
"version": "3.15.0",
"tag": "@snowplow/browser-plugin-client-hints_v3.15.0",
diff --git a/plugins/browser-plugin-client-hints/CHANGELOG.md b/plugins/browser-plugin-client-hints/CHANGELOG.md
index c2d21d34e..5ddaa5b2f 100644
--- a/plugins/browser-plugin-client-hints/CHANGELOG.md
+++ b/plugins/browser-plugin-client-hints/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-client-hints
-This log was last generated on Mon, 28 Aug 2023 14:25:14 GMT and should not be manually modified.
+This log was last generated on Mon, 16 Oct 2023 14:58:08 GMT and should not be manually modified.
+
+## 3.16.0
+Mon, 16 Oct 2023 14:58:08 GMT
+
+_Version update only_
## 3.15.0
Mon, 28 Aug 2023 14:25:14 GMT
diff --git a/plugins/browser-plugin-consent/CHANGELOG.json b/plugins/browser-plugin-consent/CHANGELOG.json
index 110210fc0..4d94def9f 100644
--- a/plugins/browser-plugin-consent/CHANGELOG.json
+++ b/plugins/browser-plugin-consent/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-consent",
"entries": [
+ {
+ "version": "3.16.0",
+ "tag": "@snowplow/browser-plugin-consent_v3.16.0",
+ "date": "Mon, 16 Oct 2023 14:58:08 GMT",
+ "comments": {}
+ },
{
"version": "3.15.0",
"tag": "@snowplow/browser-plugin-consent_v3.15.0",
diff --git a/plugins/browser-plugin-consent/CHANGELOG.md b/plugins/browser-plugin-consent/CHANGELOG.md
index 53c2cc797..1b24d546f 100644
--- a/plugins/browser-plugin-consent/CHANGELOG.md
+++ b/plugins/browser-plugin-consent/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-consent
-This log was last generated on Mon, 28 Aug 2023 14:25:14 GMT and should not be manually modified.
+This log was last generated on Mon, 16 Oct 2023 14:58:08 GMT and should not be manually modified.
+
+## 3.16.0
+Mon, 16 Oct 2023 14:58:08 GMT
+
+_Version update only_
## 3.15.0
Mon, 28 Aug 2023 14:25:14 GMT
diff --git a/plugins/browser-plugin-debugger/CHANGELOG.json b/plugins/browser-plugin-debugger/CHANGELOG.json
index b5473a1fb..1d6914eb4 100644
--- a/plugins/browser-plugin-debugger/CHANGELOG.json
+++ b/plugins/browser-plugin-debugger/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-debugger",
"entries": [
+ {
+ "version": "3.16.0",
+ "tag": "@snowplow/browser-plugin-debugger_v3.16.0",
+ "date": "Mon, 16 Oct 2023 14:58:08 GMT",
+ "comments": {}
+ },
{
"version": "3.15.0",
"tag": "@snowplow/browser-plugin-debugger_v3.15.0",
diff --git a/plugins/browser-plugin-debugger/CHANGELOG.md b/plugins/browser-plugin-debugger/CHANGELOG.md
index 13b88ce1b..4a3e1a857 100644
--- a/plugins/browser-plugin-debugger/CHANGELOG.md
+++ b/plugins/browser-plugin-debugger/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-debugger
-This log was last generated on Mon, 28 Aug 2023 14:25:14 GMT and should not be manually modified.
+This log was last generated on Mon, 16 Oct 2023 14:58:08 GMT and should not be manually modified.
+
+## 3.16.0
+Mon, 16 Oct 2023 14:58:08 GMT
+
+_Version update only_
## 3.15.0
Mon, 28 Aug 2023 14:25:14 GMT
diff --git a/plugins/browser-plugin-ecommerce/CHANGELOG.json b/plugins/browser-plugin-ecommerce/CHANGELOG.json
index f5f051a63..f3dd02145 100644
--- a/plugins/browser-plugin-ecommerce/CHANGELOG.json
+++ b/plugins/browser-plugin-ecommerce/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-ecommerce",
"entries": [
+ {
+ "version": "3.16.0",
+ "tag": "@snowplow/browser-plugin-ecommerce_v3.16.0",
+ "date": "Mon, 16 Oct 2023 14:58:08 GMT",
+ "comments": {}
+ },
{
"version": "3.15.0",
"tag": "@snowplow/browser-plugin-ecommerce_v3.15.0",
diff --git a/plugins/browser-plugin-ecommerce/CHANGELOG.md b/plugins/browser-plugin-ecommerce/CHANGELOG.md
index 4d4c40cd5..018495162 100644
--- a/plugins/browser-plugin-ecommerce/CHANGELOG.md
+++ b/plugins/browser-plugin-ecommerce/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-ecommerce
-This log was last generated on Mon, 28 Aug 2023 14:25:14 GMT and should not be manually modified.
+This log was last generated on Mon, 16 Oct 2023 14:58:08 GMT and should not be manually modified.
+
+## 3.16.0
+Mon, 16 Oct 2023 14:58:08 GMT
+
+_Version update only_
## 3.15.0
Mon, 28 Aug 2023 14:25:14 GMT
diff --git a/plugins/browser-plugin-enhanced-consent/CHANGELOG.json b/plugins/browser-plugin-enhanced-consent/CHANGELOG.json
index 116520065..74e33fac7 100644
--- a/plugins/browser-plugin-enhanced-consent/CHANGELOG.json
+++ b/plugins/browser-plugin-enhanced-consent/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-enhanced-consent",
"entries": [
+ {
+ "version": "3.16.0",
+ "tag": "@snowplow/browser-plugin-enhanced-consent_v3.16.0",
+ "date": "Mon, 16 Oct 2023 14:58:08 GMT",
+ "comments": {}
+ },
{
"version": "3.15.0",
"tag": "@snowplow/browser-plugin-enhanced-consent_v3.15.0",
diff --git a/plugins/browser-plugin-enhanced-consent/CHANGELOG.md b/plugins/browser-plugin-enhanced-consent/CHANGELOG.md
index 8e2ca61f7..dfcea66ba 100644
--- a/plugins/browser-plugin-enhanced-consent/CHANGELOG.md
+++ b/plugins/browser-plugin-enhanced-consent/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-enhanced-consent
-This log was last generated on Mon, 28 Aug 2023 14:25:14 GMT and should not be manually modified.
+This log was last generated on Mon, 16 Oct 2023 14:58:08 GMT and should not be manually modified.
+
+## 3.16.0
+Mon, 16 Oct 2023 14:58:08 GMT
+
+_Version update only_
## 3.15.0
Mon, 28 Aug 2023 14:25:14 GMT
diff --git a/plugins/browser-plugin-enhanced-ecommerce/CHANGELOG.json b/plugins/browser-plugin-enhanced-ecommerce/CHANGELOG.json
index 6f539f919..4bc290418 100644
--- a/plugins/browser-plugin-enhanced-ecommerce/CHANGELOG.json
+++ b/plugins/browser-plugin-enhanced-ecommerce/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-enhanced-ecommerce",
"entries": [
+ {
+ "version": "3.16.0",
+ "tag": "@snowplow/browser-plugin-enhanced-ecommerce_v3.16.0",
+ "date": "Mon, 16 Oct 2023 14:58:08 GMT",
+ "comments": {}
+ },
{
"version": "3.15.0",
"tag": "@snowplow/browser-plugin-enhanced-ecommerce_v3.15.0",
diff --git a/plugins/browser-plugin-enhanced-ecommerce/CHANGELOG.md b/plugins/browser-plugin-enhanced-ecommerce/CHANGELOG.md
index 83bd91a9c..8ccbcaa80 100644
--- a/plugins/browser-plugin-enhanced-ecommerce/CHANGELOG.md
+++ b/plugins/browser-plugin-enhanced-ecommerce/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-enhanced-ecommerce
-This log was last generated on Mon, 28 Aug 2023 14:25:14 GMT and should not be manually modified.
+This log was last generated on Mon, 16 Oct 2023 14:58:08 GMT and should not be manually modified.
+
+## 3.16.0
+Mon, 16 Oct 2023 14:58:08 GMT
+
+_Version update only_
## 3.15.0
Mon, 28 Aug 2023 14:25:14 GMT
diff --git a/plugins/browser-plugin-error-tracking/CHANGELOG.json b/plugins/browser-plugin-error-tracking/CHANGELOG.json
index 7557d2fe7..d2b65fdbb 100644
--- a/plugins/browser-plugin-error-tracking/CHANGELOG.json
+++ b/plugins/browser-plugin-error-tracking/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-error-tracking",
"entries": [
+ {
+ "version": "3.16.0",
+ "tag": "@snowplow/browser-plugin-error-tracking_v3.16.0",
+ "date": "Mon, 16 Oct 2023 14:58:08 GMT",
+ "comments": {}
+ },
{
"version": "3.15.0",
"tag": "@snowplow/browser-plugin-error-tracking_v3.15.0",
diff --git a/plugins/browser-plugin-error-tracking/CHANGELOG.md b/plugins/browser-plugin-error-tracking/CHANGELOG.md
index 3324e0a57..dc22bbbac 100644
--- a/plugins/browser-plugin-error-tracking/CHANGELOG.md
+++ b/plugins/browser-plugin-error-tracking/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-error-tracking
-This log was last generated on Mon, 28 Aug 2023 14:25:14 GMT and should not be manually modified.
+This log was last generated on Mon, 16 Oct 2023 14:58:08 GMT and should not be manually modified.
+
+## 3.16.0
+Mon, 16 Oct 2023 14:58:08 GMT
+
+_Version update only_
## 3.15.0
Mon, 28 Aug 2023 14:25:14 GMT
diff --git a/plugins/browser-plugin-focalmeter/CHANGELOG.json b/plugins/browser-plugin-focalmeter/CHANGELOG.json
index 7f74dc674..b25f75995 100644
--- a/plugins/browser-plugin-focalmeter/CHANGELOG.json
+++ b/plugins/browser-plugin-focalmeter/CHANGELOG.json
@@ -1,5 +1,17 @@
{
"name": "@snowplow/browser-plugin-focalmeter",
"entries": [
+ {
+ "version": "3.16.0",
+ "tag": "@snowplow/browser-plugin-focalmeter_v3.16.0",
+ "date": "Mon, 16 Oct 2023 14:58:08 GMT",
+ "comments": {
+ "none": [
+ {
+ "comment": "Add plugin to send requests with user ID to a Kantar FocalMeter endpoint (#1133)"
+ }
+ ]
+ }
+ }
]
}
diff --git a/plugins/browser-plugin-focalmeter/CHANGELOG.md b/plugins/browser-plugin-focalmeter/CHANGELOG.md
new file mode 100644
index 000000000..1137844eb
--- /dev/null
+++ b/plugins/browser-plugin-focalmeter/CHANGELOG.md
@@ -0,0 +1,11 @@
+# Change Log - @snowplow/browser-plugin-focalmeter
+
+This log was last generated on Mon, 16 Oct 2023 14:58:08 GMT and should not be manually modified.
+
+## 3.16.0
+Mon, 16 Oct 2023 14:58:08 GMT
+
+### Updates
+
+- Add plugin to send requests with user ID to a Kantar FocalMeter endpoint (#1133)
+
diff --git a/plugins/browser-plugin-form-tracking/CHANGELOG.json b/plugins/browser-plugin-form-tracking/CHANGELOG.json
index a317c0d11..a8caf3bd9 100644
--- a/plugins/browser-plugin-form-tracking/CHANGELOG.json
+++ b/plugins/browser-plugin-form-tracking/CHANGELOG.json
@@ -1,6 +1,18 @@
{
"name": "@snowplow/browser-plugin-form-tracking",
"entries": [
+ {
+ "version": "3.16.0",
+ "tag": "@snowplow/browser-plugin-form-tracking_v3.16.0",
+ "date": "Mon, 16 Oct 2023 14:58:08 GMT",
+ "comments": {
+ "none": [
+ {
+ "comment": "Fix transform function for submit_form event"
+ }
+ ]
+ }
+ },
{
"version": "3.15.0",
"tag": "@snowplow/browser-plugin-form-tracking_v3.15.0",
diff --git a/plugins/browser-plugin-form-tracking/CHANGELOG.md b/plugins/browser-plugin-form-tracking/CHANGELOG.md
index 56d0e56fa..367d30ce9 100644
--- a/plugins/browser-plugin-form-tracking/CHANGELOG.md
+++ b/plugins/browser-plugin-form-tracking/CHANGELOG.md
@@ -1,6 +1,13 @@
# Change Log - @snowplow/browser-plugin-form-tracking
-This log was last generated on Mon, 28 Aug 2023 14:25:14 GMT and should not be manually modified.
+This log was last generated on Mon, 16 Oct 2023 14:58:08 GMT and should not be manually modified.
+
+## 3.16.0
+Mon, 16 Oct 2023 14:58:08 GMT
+
+### Updates
+
+- Fix transform function for submit_form event
## 3.15.0
Mon, 28 Aug 2023 14:25:14 GMT
diff --git a/plugins/browser-plugin-ga-cookies/CHANGELOG.json b/plugins/browser-plugin-ga-cookies/CHANGELOG.json
index 09043257b..07b158b9f 100644
--- a/plugins/browser-plugin-ga-cookies/CHANGELOG.json
+++ b/plugins/browser-plugin-ga-cookies/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-ga-cookies",
"entries": [
+ {
+ "version": "3.16.0",
+ "tag": "@snowplow/browser-plugin-ga-cookies_v3.16.0",
+ "date": "Mon, 16 Oct 2023 14:58:08 GMT",
+ "comments": {}
+ },
{
"version": "3.15.0",
"tag": "@snowplow/browser-plugin-ga-cookies_v3.15.0",
diff --git a/plugins/browser-plugin-ga-cookies/CHANGELOG.md b/plugins/browser-plugin-ga-cookies/CHANGELOG.md
index 566398dfc..9cf7fd021 100644
--- a/plugins/browser-plugin-ga-cookies/CHANGELOG.md
+++ b/plugins/browser-plugin-ga-cookies/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-ga-cookies
-This log was last generated on Mon, 28 Aug 2023 14:25:14 GMT and should not be manually modified.
+This log was last generated on Mon, 16 Oct 2023 14:58:08 GMT and should not be manually modified.
+
+## 3.16.0
+Mon, 16 Oct 2023 14:58:08 GMT
+
+_Version update only_
## 3.15.0
Mon, 28 Aug 2023 14:25:14 GMT
diff --git a/plugins/browser-plugin-geolocation/CHANGELOG.json b/plugins/browser-plugin-geolocation/CHANGELOG.json
index 2a51c5b3b..1a9c9807d 100644
--- a/plugins/browser-plugin-geolocation/CHANGELOG.json
+++ b/plugins/browser-plugin-geolocation/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-geolocation",
"entries": [
+ {
+ "version": "3.16.0",
+ "tag": "@snowplow/browser-plugin-geolocation_v3.16.0",
+ "date": "Mon, 16 Oct 2023 14:58:08 GMT",
+ "comments": {}
+ },
{
"version": "3.15.0",
"tag": "@snowplow/browser-plugin-geolocation_v3.15.0",
diff --git a/plugins/browser-plugin-geolocation/CHANGELOG.md b/plugins/browser-plugin-geolocation/CHANGELOG.md
index 5b8978723..51ebbc62c 100644
--- a/plugins/browser-plugin-geolocation/CHANGELOG.md
+++ b/plugins/browser-plugin-geolocation/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-geolocation
-This log was last generated on Mon, 28 Aug 2023 14:25:14 GMT and should not be manually modified.
+This log was last generated on Mon, 16 Oct 2023 14:58:08 GMT and should not be manually modified.
+
+## 3.16.0
+Mon, 16 Oct 2023 14:58:08 GMT
+
+_Version update only_
## 3.15.0
Mon, 28 Aug 2023 14:25:14 GMT
diff --git a/plugins/browser-plugin-link-click-tracking/CHANGELOG.json b/plugins/browser-plugin-link-click-tracking/CHANGELOG.json
index d8e645110..40751bc40 100644
--- a/plugins/browser-plugin-link-click-tracking/CHANGELOG.json
+++ b/plugins/browser-plugin-link-click-tracking/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-link-click-tracking",
"entries": [
+ {
+ "version": "3.16.0",
+ "tag": "@snowplow/browser-plugin-link-click-tracking_v3.16.0",
+ "date": "Mon, 16 Oct 2023 14:58:08 GMT",
+ "comments": {}
+ },
{
"version": "3.15.0",
"tag": "@snowplow/browser-plugin-link-click-tracking_v3.15.0",
diff --git a/plugins/browser-plugin-link-click-tracking/CHANGELOG.md b/plugins/browser-plugin-link-click-tracking/CHANGELOG.md
index 9341ba145..bd0343cb3 100644
--- a/plugins/browser-plugin-link-click-tracking/CHANGELOG.md
+++ b/plugins/browser-plugin-link-click-tracking/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-link-click-tracking
-This log was last generated on Mon, 28 Aug 2023 14:25:14 GMT and should not be manually modified.
+This log was last generated on Mon, 16 Oct 2023 14:58:08 GMT and should not be manually modified.
+
+## 3.16.0
+Mon, 16 Oct 2023 14:58:08 GMT
+
+_Version update only_
## 3.15.0
Mon, 28 Aug 2023 14:25:14 GMT
diff --git a/plugins/browser-plugin-media-tracking/CHANGELOG.json b/plugins/browser-plugin-media-tracking/CHANGELOG.json
index 0a71c8eb2..d3ced4f81 100644
--- a/plugins/browser-plugin-media-tracking/CHANGELOG.json
+++ b/plugins/browser-plugin-media-tracking/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-media-tracking",
"entries": [
+ {
+ "version": "3.16.0",
+ "tag": "@snowplow/browser-plugin-media-tracking_v3.16.0",
+ "date": "Mon, 16 Oct 2023 14:58:08 GMT",
+ "comments": {}
+ },
{
"version": "3.15.0",
"tag": "@snowplow/browser-plugin-media-tracking_v3.15.0",
diff --git a/plugins/browser-plugin-media-tracking/CHANGELOG.md b/plugins/browser-plugin-media-tracking/CHANGELOG.md
index 571ab38b1..672724506 100644
--- a/plugins/browser-plugin-media-tracking/CHANGELOG.md
+++ b/plugins/browser-plugin-media-tracking/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-media-tracking
-This log was last generated on Mon, 28 Aug 2023 14:25:14 GMT and should not be manually modified.
+This log was last generated on Mon, 16 Oct 2023 14:58:08 GMT and should not be manually modified.
+
+## 3.16.0
+Mon, 16 Oct 2023 14:58:08 GMT
+
+_Version update only_
## 3.15.0
Mon, 28 Aug 2023 14:25:14 GMT
diff --git a/plugins/browser-plugin-media/CHANGELOG.json b/plugins/browser-plugin-media/CHANGELOG.json
index 7cd56742f..68f6fc329 100644
--- a/plugins/browser-plugin-media/CHANGELOG.json
+++ b/plugins/browser-plugin-media/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-media",
"entries": [
+ {
+ "version": "3.16.0",
+ "tag": "@snowplow/browser-plugin-media_v3.16.0",
+ "date": "Mon, 16 Oct 2023 14:58:08 GMT",
+ "comments": {}
+ },
{
"version": "3.15.0",
"tag": "@snowplow/browser-plugin-media_v3.15.0",
diff --git a/plugins/browser-plugin-media/CHANGELOG.md b/plugins/browser-plugin-media/CHANGELOG.md
index fea228a00..403804cae 100644
--- a/plugins/browser-plugin-media/CHANGELOG.md
+++ b/plugins/browser-plugin-media/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-media
-This log was last generated on Mon, 28 Aug 2023 14:25:14 GMT and should not be manually modified.
+This log was last generated on Mon, 16 Oct 2023 14:58:08 GMT and should not be manually modified.
+
+## 3.16.0
+Mon, 16 Oct 2023 14:58:08 GMT
+
+_Version update only_
## 3.15.0
Mon, 28 Aug 2023 14:25:14 GMT
diff --git a/plugins/browser-plugin-optimizely-x/CHANGELOG.json b/plugins/browser-plugin-optimizely-x/CHANGELOG.json
index 85bc0f0dc..0ff6566eb 100644
--- a/plugins/browser-plugin-optimizely-x/CHANGELOG.json
+++ b/plugins/browser-plugin-optimizely-x/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-optimizely-x",
"entries": [
+ {
+ "version": "3.16.0",
+ "tag": "@snowplow/browser-plugin-optimizely-x_v3.16.0",
+ "date": "Mon, 16 Oct 2023 14:58:08 GMT",
+ "comments": {}
+ },
{
"version": "3.15.0",
"tag": "@snowplow/browser-plugin-optimizely-x_v3.15.0",
diff --git a/plugins/browser-plugin-optimizely-x/CHANGELOG.md b/plugins/browser-plugin-optimizely-x/CHANGELOG.md
index 5b50231b8..e999560d4 100644
--- a/plugins/browser-plugin-optimizely-x/CHANGELOG.md
+++ b/plugins/browser-plugin-optimizely-x/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-optimizely-x
-This log was last generated on Mon, 28 Aug 2023 14:25:14 GMT and should not be manually modified.
+This log was last generated on Mon, 16 Oct 2023 14:58:08 GMT and should not be manually modified.
+
+## 3.16.0
+Mon, 16 Oct 2023 14:58:08 GMT
+
+_Version update only_
## 3.15.0
Mon, 28 Aug 2023 14:25:14 GMT
diff --git a/plugins/browser-plugin-optimizely/CHANGELOG.json b/plugins/browser-plugin-optimizely/CHANGELOG.json
index 95360a9e9..9c9d14cea 100644
--- a/plugins/browser-plugin-optimizely/CHANGELOG.json
+++ b/plugins/browser-plugin-optimizely/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-optimizely",
"entries": [
+ {
+ "version": "3.16.0",
+ "tag": "@snowplow/browser-plugin-optimizely_v3.16.0",
+ "date": "Mon, 16 Oct 2023 14:58:08 GMT",
+ "comments": {}
+ },
{
"version": "3.15.0",
"tag": "@snowplow/browser-plugin-optimizely_v3.15.0",
diff --git a/plugins/browser-plugin-optimizely/CHANGELOG.md b/plugins/browser-plugin-optimizely/CHANGELOG.md
index ec192ca22..d2b8cef5d 100644
--- a/plugins/browser-plugin-optimizely/CHANGELOG.md
+++ b/plugins/browser-plugin-optimizely/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-optimizely
-This log was last generated on Mon, 28 Aug 2023 14:25:14 GMT and should not be manually modified.
+This log was last generated on Mon, 16 Oct 2023 14:58:08 GMT and should not be manually modified.
+
+## 3.16.0
+Mon, 16 Oct 2023 14:58:08 GMT
+
+_Version update only_
## 3.15.0
Mon, 28 Aug 2023 14:25:14 GMT
diff --git a/plugins/browser-plugin-performance-navigation-timing/CHANGELOG.json b/plugins/browser-plugin-performance-navigation-timing/CHANGELOG.json
index 79a81ade2..76f585902 100644
--- a/plugins/browser-plugin-performance-navigation-timing/CHANGELOG.json
+++ b/plugins/browser-plugin-performance-navigation-timing/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-performance-navigation-timing",
"entries": [
+ {
+ "version": "3.16.0",
+ "tag": "@snowplow/browser-plugin-performance-navigation-timing_v3.16.0",
+ "date": "Mon, 16 Oct 2023 14:58:08 GMT",
+ "comments": {}
+ },
{
"version": "3.15.0",
"tag": "@snowplow/browser-plugin-performance-navigation-timing_v3.15.0",
diff --git a/plugins/browser-plugin-performance-navigation-timing/CHANGELOG.md b/plugins/browser-plugin-performance-navigation-timing/CHANGELOG.md
index 518d5611a..3bd8f1a82 100644
--- a/plugins/browser-plugin-performance-navigation-timing/CHANGELOG.md
+++ b/plugins/browser-plugin-performance-navigation-timing/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-performance-navigation-timing
-This log was last generated on Mon, 28 Aug 2023 14:25:14 GMT and should not be manually modified.
+This log was last generated on Mon, 16 Oct 2023 14:58:08 GMT and should not be manually modified.
+
+## 3.16.0
+Mon, 16 Oct 2023 14:58:08 GMT
+
+_Version update only_
## 3.15.0
Mon, 28 Aug 2023 14:25:14 GMT
diff --git a/plugins/browser-plugin-performance-timing/CHANGELOG.json b/plugins/browser-plugin-performance-timing/CHANGELOG.json
index 68b28c5d8..90701849a 100644
--- a/plugins/browser-plugin-performance-timing/CHANGELOG.json
+++ b/plugins/browser-plugin-performance-timing/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-performance-timing",
"entries": [
+ {
+ "version": "3.16.0",
+ "tag": "@snowplow/browser-plugin-performance-timing_v3.16.0",
+ "date": "Mon, 16 Oct 2023 14:58:08 GMT",
+ "comments": {}
+ },
{
"version": "3.15.0",
"tag": "@snowplow/browser-plugin-performance-timing_v3.15.0",
diff --git a/plugins/browser-plugin-performance-timing/CHANGELOG.md b/plugins/browser-plugin-performance-timing/CHANGELOG.md
index b25cda7f9..be6da19bc 100644
--- a/plugins/browser-plugin-performance-timing/CHANGELOG.md
+++ b/plugins/browser-plugin-performance-timing/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-performance-timing
-This log was last generated on Mon, 28 Aug 2023 14:25:14 GMT and should not be manually modified.
+This log was last generated on Mon, 16 Oct 2023 14:58:08 GMT and should not be manually modified.
+
+## 3.16.0
+Mon, 16 Oct 2023 14:58:08 GMT
+
+_Version update only_
## 3.15.0
Mon, 28 Aug 2023 14:25:14 GMT
diff --git a/plugins/browser-plugin-privacy-sandbox/CHANGELOG.json b/plugins/browser-plugin-privacy-sandbox/CHANGELOG.json
index 4bfeeb66f..54b9aa4ae 100644
--- a/plugins/browser-plugin-privacy-sandbox/CHANGELOG.json
+++ b/plugins/browser-plugin-privacy-sandbox/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-privacy-sandbox",
"entries": [
+ {
+ "version": "3.16.0",
+ "tag": "@snowplow/browser-plugin-privacy-sandbox_v3.16.0",
+ "date": "Mon, 16 Oct 2023 14:58:08 GMT",
+ "comments": {}
+ },
{
"version": "3.15.0",
"tag": "@snowplow/browser-plugin-privacy-sandbox_v3.15.0",
diff --git a/plugins/browser-plugin-privacy-sandbox/CHANGELOG.md b/plugins/browser-plugin-privacy-sandbox/CHANGELOG.md
index 6812b6bd7..8d96b4370 100644
--- a/plugins/browser-plugin-privacy-sandbox/CHANGELOG.md
+++ b/plugins/browser-plugin-privacy-sandbox/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-privacy-sandbox
-This log was last generated on Mon, 28 Aug 2023 14:25:14 GMT and should not be manually modified.
+This log was last generated on Mon, 16 Oct 2023 14:58:08 GMT and should not be manually modified.
+
+## 3.16.0
+Mon, 16 Oct 2023 14:58:08 GMT
+
+_Version update only_
## 3.15.0
Mon, 28 Aug 2023 14:25:14 GMT
diff --git a/plugins/browser-plugin-site-tracking/CHANGELOG.json b/plugins/browser-plugin-site-tracking/CHANGELOG.json
index b20a2aa59..45b140296 100644
--- a/plugins/browser-plugin-site-tracking/CHANGELOG.json
+++ b/plugins/browser-plugin-site-tracking/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-site-tracking",
"entries": [
+ {
+ "version": "3.16.0",
+ "tag": "@snowplow/browser-plugin-site-tracking_v3.16.0",
+ "date": "Mon, 16 Oct 2023 14:58:08 GMT",
+ "comments": {}
+ },
{
"version": "3.15.0",
"tag": "@snowplow/browser-plugin-site-tracking_v3.15.0",
diff --git a/plugins/browser-plugin-site-tracking/CHANGELOG.md b/plugins/browser-plugin-site-tracking/CHANGELOG.md
index ce546eeba..b2c0f21aa 100644
--- a/plugins/browser-plugin-site-tracking/CHANGELOG.md
+++ b/plugins/browser-plugin-site-tracking/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-site-tracking
-This log was last generated on Mon, 28 Aug 2023 14:25:14 GMT and should not be manually modified.
+This log was last generated on Mon, 16 Oct 2023 14:58:08 GMT and should not be manually modified.
+
+## 3.16.0
+Mon, 16 Oct 2023 14:58:08 GMT
+
+_Version update only_
## 3.15.0
Mon, 28 Aug 2023 14:25:14 GMT
diff --git a/plugins/browser-plugin-snowplow-ecommerce/CHANGELOG.json b/plugins/browser-plugin-snowplow-ecommerce/CHANGELOG.json
index d463c17dc..78e6537a4 100644
--- a/plugins/browser-plugin-snowplow-ecommerce/CHANGELOG.json
+++ b/plugins/browser-plugin-snowplow-ecommerce/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-snowplow-ecommerce",
"entries": [
+ {
+ "version": "3.16.0",
+ "tag": "@snowplow/browser-plugin-snowplow-ecommerce_v3.16.0",
+ "date": "Mon, 16 Oct 2023 14:58:08 GMT",
+ "comments": {}
+ },
{
"version": "3.15.0",
"tag": "@snowplow/browser-plugin-snowplow-ecommerce_v3.15.0",
diff --git a/plugins/browser-plugin-snowplow-ecommerce/CHANGELOG.md b/plugins/browser-plugin-snowplow-ecommerce/CHANGELOG.md
index 853c98133..24a95a9ed 100644
--- a/plugins/browser-plugin-snowplow-ecommerce/CHANGELOG.md
+++ b/plugins/browser-plugin-snowplow-ecommerce/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-snowplow-ecommerce
-This log was last generated on Mon, 28 Aug 2023 14:25:14 GMT and should not be manually modified.
+This log was last generated on Mon, 16 Oct 2023 14:58:08 GMT and should not be manually modified.
+
+## 3.16.0
+Mon, 16 Oct 2023 14:58:08 GMT
+
+_Version update only_
## 3.15.0
Mon, 28 Aug 2023 14:25:14 GMT
diff --git a/plugins/browser-plugin-timezone/CHANGELOG.json b/plugins/browser-plugin-timezone/CHANGELOG.json
index 3357152a7..f04989af6 100644
--- a/plugins/browser-plugin-timezone/CHANGELOG.json
+++ b/plugins/browser-plugin-timezone/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-timezone",
"entries": [
+ {
+ "version": "3.16.0",
+ "tag": "@snowplow/browser-plugin-timezone_v3.16.0",
+ "date": "Mon, 16 Oct 2023 14:58:08 GMT",
+ "comments": {}
+ },
{
"version": "3.15.0",
"tag": "@snowplow/browser-plugin-timezone_v3.15.0",
diff --git a/plugins/browser-plugin-timezone/CHANGELOG.md b/plugins/browser-plugin-timezone/CHANGELOG.md
index e84d66de4..56d5bd19c 100644
--- a/plugins/browser-plugin-timezone/CHANGELOG.md
+++ b/plugins/browser-plugin-timezone/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-timezone
-This log was last generated on Mon, 28 Aug 2023 14:25:14 GMT and should not be manually modified.
+This log was last generated on Mon, 16 Oct 2023 14:58:08 GMT and should not be manually modified.
+
+## 3.16.0
+Mon, 16 Oct 2023 14:58:08 GMT
+
+_Version update only_
## 3.15.0
Mon, 28 Aug 2023 14:25:14 GMT
diff --git a/plugins/browser-plugin-vimeo-tracking/CHANGELOG.json b/plugins/browser-plugin-vimeo-tracking/CHANGELOG.json
index 862c9e933..76f066ac3 100644
--- a/plugins/browser-plugin-vimeo-tracking/CHANGELOG.json
+++ b/plugins/browser-plugin-vimeo-tracking/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-vimeo-tracking",
"entries": [
+ {
+ "version": "3.16.0",
+ "tag": "@snowplow/browser-plugin-vimeo-tracking_v3.16.0",
+ "date": "Mon, 16 Oct 2023 14:58:08 GMT",
+ "comments": {}
+ },
{
"version": "3.15.0",
"tag": "@snowplow/browser-plugin-vimeo-tracking_v3.15.0",
diff --git a/plugins/browser-plugin-vimeo-tracking/CHANGELOG.md b/plugins/browser-plugin-vimeo-tracking/CHANGELOG.md
index aa0b99919..a1ba1fc95 100644
--- a/plugins/browser-plugin-vimeo-tracking/CHANGELOG.md
+++ b/plugins/browser-plugin-vimeo-tracking/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-vimeo-tracking
-This log was last generated on Mon, 28 Aug 2023 14:25:14 GMT and should not be manually modified.
+This log was last generated on Mon, 16 Oct 2023 14:58:08 GMT and should not be manually modified.
+
+## 3.16.0
+Mon, 16 Oct 2023 14:58:08 GMT
+
+_Version update only_
## 3.15.0
Mon, 28 Aug 2023 14:25:14 GMT
diff --git a/plugins/browser-plugin-web-vitals/CHANGELOG.json b/plugins/browser-plugin-web-vitals/CHANGELOG.json
index 1ad602765..3fbf078b5 100644
--- a/plugins/browser-plugin-web-vitals/CHANGELOG.json
+++ b/plugins/browser-plugin-web-vitals/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-web-vitals",
"entries": [
+ {
+ "version": "3.16.0",
+ "tag": "@snowplow/browser-plugin-web-vitals_v3.16.0",
+ "date": "Mon, 16 Oct 2023 14:58:08 GMT",
+ "comments": {}
+ },
{
"version": "3.15.0",
"tag": "@snowplow/browser-plugin-web-vitals_v3.15.0",
diff --git a/plugins/browser-plugin-web-vitals/CHANGELOG.md b/plugins/browser-plugin-web-vitals/CHANGELOG.md
index eac0845f1..5603ea40c 100644
--- a/plugins/browser-plugin-web-vitals/CHANGELOG.md
+++ b/plugins/browser-plugin-web-vitals/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-web-vitals
-This log was last generated on Mon, 28 Aug 2023 14:25:14 GMT and should not be manually modified.
+This log was last generated on Mon, 16 Oct 2023 14:58:08 GMT and should not be manually modified.
+
+## 3.16.0
+Mon, 16 Oct 2023 14:58:08 GMT
+
+_Version update only_
## 3.15.0
Mon, 28 Aug 2023 14:25:14 GMT
diff --git a/plugins/browser-plugin-youtube-tracking/CHANGELOG.json b/plugins/browser-plugin-youtube-tracking/CHANGELOG.json
index 908c2d615..04ef3b205 100644
--- a/plugins/browser-plugin-youtube-tracking/CHANGELOG.json
+++ b/plugins/browser-plugin-youtube-tracking/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-youtube-tracking",
"entries": [
+ {
+ "version": "3.16.0",
+ "tag": "@snowplow/browser-plugin-youtube-tracking_v3.16.0",
+ "date": "Mon, 16 Oct 2023 14:58:08 GMT",
+ "comments": {}
+ },
{
"version": "3.15.0",
"tag": "@snowplow/browser-plugin-youtube-tracking_v3.15.0",
diff --git a/plugins/browser-plugin-youtube-tracking/CHANGELOG.md b/plugins/browser-plugin-youtube-tracking/CHANGELOG.md
index bb353b41b..d7612f962 100644
--- a/plugins/browser-plugin-youtube-tracking/CHANGELOG.md
+++ b/plugins/browser-plugin-youtube-tracking/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-youtube-tracking
-This log was last generated on Mon, 28 Aug 2023 14:25:14 GMT and should not be manually modified.
+This log was last generated on Mon, 16 Oct 2023 14:58:08 GMT and should not be manually modified.
+
+## 3.16.0
+Mon, 16 Oct 2023 14:58:08 GMT
+
+_Version update only_
## 3.15.0
Mon, 28 Aug 2023 14:25:14 GMT
diff --git a/trackers/browser-tracker/CHANGELOG.json b/trackers/browser-tracker/CHANGELOG.json
index d648da0bb..bfc97e3b0 100644
--- a/trackers/browser-tracker/CHANGELOG.json
+++ b/trackers/browser-tracker/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-tracker",
"entries": [
+ {
+ "version": "3.16.0",
+ "tag": "@snowplow/browser-tracker_v3.16.0",
+ "date": "Mon, 16 Oct 2023 14:58:08 GMT",
+ "comments": {}
+ },
{
"version": "3.15.0",
"tag": "@snowplow/browser-tracker_v3.15.0",
diff --git a/trackers/browser-tracker/CHANGELOG.md b/trackers/browser-tracker/CHANGELOG.md
index babcf4706..1aa0da24c 100644
--- a/trackers/browser-tracker/CHANGELOG.md
+++ b/trackers/browser-tracker/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-tracker
-This log was last generated on Mon, 28 Aug 2023 14:25:14 GMT and should not be manually modified.
+This log was last generated on Mon, 16 Oct 2023 14:58:08 GMT and should not be manually modified.
+
+## 3.16.0
+Mon, 16 Oct 2023 14:58:08 GMT
+
+_Version update only_
## 3.15.0
Mon, 28 Aug 2023 14:25:14 GMT
diff --git a/trackers/javascript-tracker/CHANGELOG.json b/trackers/javascript-tracker/CHANGELOG.json
index 3bf9eb3a5..8455da56a 100644
--- a/trackers/javascript-tracker/CHANGELOG.json
+++ b/trackers/javascript-tracker/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/javascript-tracker",
"entries": [
+ {
+ "version": "3.16.0",
+ "tag": "@snowplow/javascript-tracker_v3.16.0",
+ "date": "Mon, 16 Oct 2023 14:58:08 GMT",
+ "comments": {}
+ },
{
"version": "3.15.0",
"tag": "@snowplow/javascript-tracker_v3.15.0",
diff --git a/trackers/javascript-tracker/CHANGELOG.md b/trackers/javascript-tracker/CHANGELOG.md
index aab9bc81e..14d58d26f 100644
--- a/trackers/javascript-tracker/CHANGELOG.md
+++ b/trackers/javascript-tracker/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/javascript-tracker
-This log was last generated on Mon, 28 Aug 2023 14:25:14 GMT and should not be manually modified.
+This log was last generated on Mon, 16 Oct 2023 14:58:08 GMT and should not be manually modified.
+
+## 3.16.0
+Mon, 16 Oct 2023 14:58:08 GMT
+
+_Version update only_
## 3.15.0
Mon, 28 Aug 2023 14:25:14 GMT
diff --git a/trackers/node-tracker/CHANGELOG.json b/trackers/node-tracker/CHANGELOG.json
index 0619ba575..aff6bdf55 100644
--- a/trackers/node-tracker/CHANGELOG.json
+++ b/trackers/node-tracker/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/node-tracker",
"entries": [
+ {
+ "version": "3.16.0",
+ "tag": "@snowplow/node-tracker_v3.16.0",
+ "date": "Mon, 16 Oct 2023 14:58:08 GMT",
+ "comments": {}
+ },
{
"version": "3.15.0",
"tag": "@snowplow/node-tracker_v3.15.0",
diff --git a/trackers/node-tracker/CHANGELOG.md b/trackers/node-tracker/CHANGELOG.md
index 21e1f5a6f..96a3f599f 100644
--- a/trackers/node-tracker/CHANGELOG.md
+++ b/trackers/node-tracker/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/node-tracker
-This log was last generated on Mon, 28 Aug 2023 14:25:14 GMT and should not be manually modified.
+This log was last generated on Mon, 16 Oct 2023 14:58:08 GMT and should not be manually modified.
+
+## 3.16.0
+Mon, 16 Oct 2023 14:58:08 GMT
+
+_Version update only_
## 3.15.0
Mon, 28 Aug 2023 14:25:14 GMT
From 120917a9166260e264fb2a03f9e0e67fcd1c9842 Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Mon, 16 Oct 2023 14:58:08 +0000
Subject: [PATCH 021/341] Bump versions [skip ci]
---
common/config/rush/version-policies.json | 2 +-
libraries/browser-tracker-core/package.json | 2 +-
libraries/tracker-core/package.json | 2 +-
plugins/browser-plugin-ad-tracking/package.json | 4 ++--
plugins/browser-plugin-browser-features/package.json | 4 ++--
plugins/browser-plugin-client-hints/package.json | 4 ++--
plugins/browser-plugin-consent/package.json | 4 ++--
plugins/browser-plugin-debugger/package.json | 4 ++--
plugins/browser-plugin-ecommerce/package.json | 4 ++--
plugins/browser-plugin-enhanced-consent/package.json | 4 ++--
plugins/browser-plugin-enhanced-ecommerce/package.json | 4 ++--
plugins/browser-plugin-error-tracking/package.json | 4 ++--
plugins/browser-plugin-focalmeter/package.json | 4 ++--
plugins/browser-plugin-form-tracking/package.json | 4 ++--
plugins/browser-plugin-ga-cookies/package.json | 4 ++--
plugins/browser-plugin-geolocation/package.json | 4 ++--
plugins/browser-plugin-link-click-tracking/package.json | 4 ++--
plugins/browser-plugin-media-tracking/package.json | 4 ++--
plugins/browser-plugin-media/package.json | 4 ++--
plugins/browser-plugin-optimizely-x/package.json | 4 ++--
plugins/browser-plugin-optimizely/package.json | 4 ++--
.../browser-plugin-performance-navigation-timing/package.json | 4 ++--
plugins/browser-plugin-performance-timing/package.json | 4 ++--
plugins/browser-plugin-privacy-sandbox/package.json | 4 ++--
plugins/browser-plugin-site-tracking/package.json | 4 ++--
plugins/browser-plugin-snowplow-ecommerce/package.json | 4 ++--
plugins/browser-plugin-timezone/package.json | 4 ++--
plugins/browser-plugin-vimeo-tracking/package.json | 4 ++--
plugins/browser-plugin-web-vitals/package.json | 4 ++--
plugins/browser-plugin-youtube-tracking/package.json | 4 ++--
trackers/browser-tracker/package.json | 2 +-
trackers/javascript-tracker/package.json | 2 +-
trackers/node-tracker/package.json | 2 +-
33 files changed, 60 insertions(+), 60 deletions(-)
diff --git a/common/config/rush/version-policies.json b/common/config/rush/version-policies.json
index 0553e91c8..24536d1eb 100644
--- a/common/config/rush/version-policies.json
+++ b/common/config/rush/version-policies.json
@@ -33,7 +33,7 @@
* in the current branch. When bumping versions, Rush uses this to determine the next version.
* (The "version" field in package.json is NOT considered.)
*/
- "version": "3.15.0",
+ "version": "3.16.0",
/**
* (Required) The type of bump that will be performed when publishing the next release.
diff --git a/libraries/browser-tracker-core/package.json b/libraries/browser-tracker-core/package.json
index 2f4d8b36f..ff76ab25c 100644
--- a/libraries/browser-tracker-core/package.json
+++ b/libraries/browser-tracker-core/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-tracker-core",
- "version": "3.15.0",
+ "version": "3.16.0",
"description": "Core functionality for Snowplow Browser trackers",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
diff --git a/libraries/tracker-core/package.json b/libraries/tracker-core/package.json
index 129977f8b..6bc3764c7 100644
--- a/libraries/tracker-core/package.json
+++ b/libraries/tracker-core/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/tracker-core",
- "version": "3.15.0",
+ "version": "3.16.0",
"description": "Core functionality for Snowplow JavaScript trackers",
"keywords": [
"tracking",
diff --git a/plugins/browser-plugin-ad-tracking/package.json b/plugins/browser-plugin-ad-tracking/package.json
index 55f199a37..10d4ea616 100644
--- a/plugins/browser-plugin-ad-tracking/package.json
+++ b/plugins/browser-plugin-ad-tracking/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-ad-tracking",
- "version": "3.15.0",
+ "version": "3.16.0",
"description": "Ad tracking for Snowplow",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -50,6 +50,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.15.0"
+ "@snowplow/browser-tracker": "~3.16.0"
}
}
diff --git a/plugins/browser-plugin-browser-features/package.json b/plugins/browser-plugin-browser-features/package.json
index 99d4ba3a1..3d8dbce8f 100644
--- a/plugins/browser-plugin-browser-features/package.json
+++ b/plugins/browser-plugin-browser-features/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-browser-features",
- "version": "3.15.0",
+ "version": "3.16.0",
"description": "Attaches browser features to Snowplow events",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -48,6 +48,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.15.0"
+ "@snowplow/browser-tracker": "~3.16.0"
}
}
diff --git a/plugins/browser-plugin-client-hints/package.json b/plugins/browser-plugin-client-hints/package.json
index 62e01a71b..d74b53452 100644
--- a/plugins/browser-plugin-client-hints/package.json
+++ b/plugins/browser-plugin-client-hints/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-client-hints",
- "version": "3.15.0",
+ "version": "3.16.0",
"description": "Attaches Client Hints to Snowplow events",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -47,6 +47,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.15.0"
+ "@snowplow/browser-tracker": "~3.16.0"
}
}
diff --git a/plugins/browser-plugin-consent/package.json b/plugins/browser-plugin-consent/package.json
index 24c02bb2a..c939e9576 100644
--- a/plugins/browser-plugin-consent/package.json
+++ b/plugins/browser-plugin-consent/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-consent",
- "version": "3.15.0",
+ "version": "3.16.0",
"description": "Consent and GDPR data for Snowplow events",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -50,6 +50,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.15.0"
+ "@snowplow/browser-tracker": "~3.16.0"
}
}
diff --git a/plugins/browser-plugin-debugger/package.json b/plugins/browser-plugin-debugger/package.json
index 341bba65b..9661c63f3 100644
--- a/plugins/browser-plugin-debugger/package.json
+++ b/plugins/browser-plugin-debugger/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-debugger",
- "version": "3.15.0",
+ "version": "3.16.0",
"description": "Debugger for Snowplow",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -50,6 +50,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.15.0"
+ "@snowplow/browser-tracker": "~3.16.0"
}
}
diff --git a/plugins/browser-plugin-ecommerce/package.json b/plugins/browser-plugin-ecommerce/package.json
index e3b741e9f..cefc89f7c 100644
--- a/plugins/browser-plugin-ecommerce/package.json
+++ b/plugins/browser-plugin-ecommerce/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-ecommerce",
- "version": "3.15.0",
+ "version": "3.16.0",
"description": "Ecommerce tracking for Snowplow",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -50,6 +50,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.15.0"
+ "@snowplow/browser-tracker": "~3.16.0"
}
}
diff --git a/plugins/browser-plugin-enhanced-consent/package.json b/plugins/browser-plugin-enhanced-consent/package.json
index e35a4892b..248a4aa0b 100644
--- a/plugins/browser-plugin-enhanced-consent/package.json
+++ b/plugins/browser-plugin-enhanced-consent/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-enhanced-consent",
- "version": "3.15.0",
+ "version": "3.16.0",
"description": "Consent tracking for Snowplow",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
"repository": {
@@ -49,6 +49,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.15.0"
+ "@snowplow/browser-tracker": "~3.16.0"
}
}
diff --git a/plugins/browser-plugin-enhanced-ecommerce/package.json b/plugins/browser-plugin-enhanced-ecommerce/package.json
index 9ef7a7642..71c0ed960 100644
--- a/plugins/browser-plugin-enhanced-ecommerce/package.json
+++ b/plugins/browser-plugin-enhanced-ecommerce/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-enhanced-ecommerce",
- "version": "3.15.0",
+ "version": "3.16.0",
"description": "Enhanced Ecommerce tracking for Snowplow",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -50,6 +50,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.15.0"
+ "@snowplow/browser-tracker": "~3.16.0"
}
}
diff --git a/plugins/browser-plugin-error-tracking/package.json b/plugins/browser-plugin-error-tracking/package.json
index 9a1b82aa6..4f13656fb 100644
--- a/plugins/browser-plugin-error-tracking/package.json
+++ b/plugins/browser-plugin-error-tracking/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-error-tracking",
- "version": "3.15.0",
+ "version": "3.16.0",
"description": "Error tracking for Snowplow",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -50,6 +50,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.15.0"
+ "@snowplow/browser-tracker": "~3.16.0"
}
}
diff --git a/plugins/browser-plugin-focalmeter/package.json b/plugins/browser-plugin-focalmeter/package.json
index 45820c514..39da12dbc 100644
--- a/plugins/browser-plugin-focalmeter/package.json
+++ b/plugins/browser-plugin-focalmeter/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-focalmeter",
- "version": "3.15.0",
+ "version": "3.16.0",
"description": "Kantar FocalMeter integration for Snowplow",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -48,6 +48,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.15.0"
+ "@snowplow/browser-tracker": "~3.16.0"
}
}
diff --git a/plugins/browser-plugin-form-tracking/package.json b/plugins/browser-plugin-form-tracking/package.json
index 5a12708dc..f054213b8 100644
--- a/plugins/browser-plugin-form-tracking/package.json
+++ b/plugins/browser-plugin-form-tracking/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-form-tracking",
- "version": "3.15.0",
+ "version": "3.16.0",
"description": "Form tracking for Snowplow",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -48,6 +48,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.15.0"
+ "@snowplow/browser-tracker": "~3.16.0"
}
}
diff --git a/plugins/browser-plugin-ga-cookies/package.json b/plugins/browser-plugin-ga-cookies/package.json
index 7e3ac52b2..ccb1d3d63 100644
--- a/plugins/browser-plugin-ga-cookies/package.json
+++ b/plugins/browser-plugin-ga-cookies/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-ga-cookies",
- "version": "3.15.0",
+ "version": "3.16.0",
"description": "Attaches GA cookie data to Snowplow events",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -48,6 +48,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.15.0"
+ "@snowplow/browser-tracker": "~3.16.0"
}
}
diff --git a/plugins/browser-plugin-geolocation/package.json b/plugins/browser-plugin-geolocation/package.json
index f675a82a7..71e79ffd6 100644
--- a/plugins/browser-plugin-geolocation/package.json
+++ b/plugins/browser-plugin-geolocation/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-geolocation",
- "version": "3.15.0",
+ "version": "3.16.0",
"description": "Attaches Geolocation data to Snowplow events",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -48,6 +48,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.15.0"
+ "@snowplow/browser-tracker": "~3.16.0"
}
}
diff --git a/plugins/browser-plugin-link-click-tracking/package.json b/plugins/browser-plugin-link-click-tracking/package.json
index 7893f5819..926ecb918 100644
--- a/plugins/browser-plugin-link-click-tracking/package.json
+++ b/plugins/browser-plugin-link-click-tracking/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-link-click-tracking",
- "version": "3.15.0",
+ "version": "3.16.0",
"description": "Link Click tracking for Snowplow",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -50,6 +50,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.15.0"
+ "@snowplow/browser-tracker": "~3.16.0"
}
}
diff --git a/plugins/browser-plugin-media-tracking/package.json b/plugins/browser-plugin-media-tracking/package.json
index 961eed562..789512e8a 100644
--- a/plugins/browser-plugin-media-tracking/package.json
+++ b/plugins/browser-plugin-media-tracking/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-media-tracking",
- "version": "3.15.0",
+ "version": "3.16.0",
"description": "Audio/Video tracking for Snowplow",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -47,6 +47,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.15.0"
+ "@snowplow/browser-tracker": "~3.16.0"
}
}
diff --git a/plugins/browser-plugin-media/package.json b/plugins/browser-plugin-media/package.json
index 7ef089062..5b061c85f 100644
--- a/plugins/browser-plugin-media/package.json
+++ b/plugins/browser-plugin-media/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-media",
- "version": "3.15.0",
+ "version": "3.16.0",
"description": "Snowplow media tracking",
"homepage": "https://github.com/snowplow/snowplow-javascript-tracker",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -50,6 +50,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.15.0"
+ "@snowplow/browser-tracker": "~3.16.0"
}
}
diff --git a/plugins/browser-plugin-optimizely-x/package.json b/plugins/browser-plugin-optimizely-x/package.json
index 3cc6d1f67..c36b81e9a 100644
--- a/plugins/browser-plugin-optimizely-x/package.json
+++ b/plugins/browser-plugin-optimizely-x/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-optimizely-x",
- "version": "3.15.0",
+ "version": "3.16.0",
"description": "Attaches OptimizelyX data to Snowplow events",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -48,6 +48,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.15.0"
+ "@snowplow/browser-tracker": "~3.16.0"
}
}
diff --git a/plugins/browser-plugin-optimizely/package.json b/plugins/browser-plugin-optimizely/package.json
index e5a6adeb1..8dbcccb40 100644
--- a/plugins/browser-plugin-optimizely/package.json
+++ b/plugins/browser-plugin-optimizely/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-optimizely",
- "version": "3.15.0",
+ "version": "3.16.0",
"description": "Attaches Optimizely data to Snowplow events",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -48,6 +48,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.15.0"
+ "@snowplow/browser-tracker": "~3.16.0"
}
}
diff --git a/plugins/browser-plugin-performance-navigation-timing/package.json b/plugins/browser-plugin-performance-navigation-timing/package.json
index 988f9aac9..533ae94e0 100644
--- a/plugins/browser-plugin-performance-navigation-timing/package.json
+++ b/plugins/browser-plugin-performance-navigation-timing/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-performance-navigation-timing",
- "version": "3.15.0",
+ "version": "3.16.0",
"description": "Attaches Performance Navigation Timing data to Snowplow events",
"homepage": "https://docs.snowplow.io/",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -48,6 +48,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.15.0"
+ "@snowplow/browser-tracker": "~3.16.0"
}
}
diff --git a/plugins/browser-plugin-performance-timing/package.json b/plugins/browser-plugin-performance-timing/package.json
index 62371fa5b..f60bc0f4a 100644
--- a/plugins/browser-plugin-performance-timing/package.json
+++ b/plugins/browser-plugin-performance-timing/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-performance-timing",
- "version": "3.15.0",
+ "version": "3.16.0",
"description": "Attaches Performance Timing data to Snowplow events",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -48,6 +48,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.15.0"
+ "@snowplow/browser-tracker": "~3.16.0"
}
}
diff --git a/plugins/browser-plugin-privacy-sandbox/package.json b/plugins/browser-plugin-privacy-sandbox/package.json
index 044fc0ebf..bce009331 100644
--- a/plugins/browser-plugin-privacy-sandbox/package.json
+++ b/plugins/browser-plugin-privacy-sandbox/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-privacy-sandbox",
- "version": "3.15.0",
+ "version": "3.16.0",
"description": "Allows for the collection of Privacy Sandbox specific data.",
"homepage": "https://docs.snowplow.io/",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -48,6 +48,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.15.0"
+ "@snowplow/browser-tracker": "~3.16.0"
}
}
diff --git a/plugins/browser-plugin-site-tracking/package.json b/plugins/browser-plugin-site-tracking/package.json
index 6ce2289a5..5eaf3fb87 100644
--- a/plugins/browser-plugin-site-tracking/package.json
+++ b/plugins/browser-plugin-site-tracking/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-site-tracking",
- "version": "3.15.0",
+ "version": "3.16.0",
"description": "Site tracking for Snowplow",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -50,6 +50,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.15.0"
+ "@snowplow/browser-tracker": "~3.16.0"
}
}
diff --git a/plugins/browser-plugin-snowplow-ecommerce/package.json b/plugins/browser-plugin-snowplow-ecommerce/package.json
index b77b11c16..44162c6d5 100644
--- a/plugins/browser-plugin-snowplow-ecommerce/package.json
+++ b/plugins/browser-plugin-snowplow-ecommerce/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-snowplow-ecommerce",
- "version": "3.15.0",
+ "version": "3.16.0",
"description": "Snowplow ecommerce tracking",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -50,6 +50,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.15.0"
+ "@snowplow/browser-tracker": "~3.16.0"
}
}
diff --git a/plugins/browser-plugin-timezone/package.json b/plugins/browser-plugin-timezone/package.json
index 5c0d9f9eb..05e3afa6f 100644
--- a/plugins/browser-plugin-timezone/package.json
+++ b/plugins/browser-plugin-timezone/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-timezone",
- "version": "3.15.0",
+ "version": "3.16.0",
"description": "Attaches timezone to Snowplow events",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -51,6 +51,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.15.0"
+ "@snowplow/browser-tracker": "~3.16.0"
}
}
diff --git a/plugins/browser-plugin-vimeo-tracking/package.json b/plugins/browser-plugin-vimeo-tracking/package.json
index a3398edb9..29b7f7432 100644
--- a/plugins/browser-plugin-vimeo-tracking/package.json
+++ b/plugins/browser-plugin-vimeo-tracking/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-vimeo-tracking",
- "version": "3.15.0",
+ "version": "3.16.0",
"description": "Vimeo tracking for Snowplow",
"homepage": "https://github.com/snowplow/snowplow-javascript-tracker",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -50,6 +50,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.15.0"
+ "@snowplow/browser-tracker": "~3.16.0"
}
}
diff --git a/plugins/browser-plugin-web-vitals/package.json b/plugins/browser-plugin-web-vitals/package.json
index 261418096..72b45dc0c 100644
--- a/plugins/browser-plugin-web-vitals/package.json
+++ b/plugins/browser-plugin-web-vitals/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-web-vitals",
- "version": "3.15.0",
+ "version": "3.16.0",
"description": "Adds the capability to track web performance metrics categorized as Web Vitals.",
"homepage": "https://github.com/snowplow/snowplow-javascript-tracker",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -49,6 +49,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.15.0"
+ "@snowplow/browser-tracker": "~3.16.0"
}
}
diff --git a/plugins/browser-plugin-youtube-tracking/package.json b/plugins/browser-plugin-youtube-tracking/package.json
index b5d48bc7a..db8556d76 100644
--- a/plugins/browser-plugin-youtube-tracking/package.json
+++ b/plugins/browser-plugin-youtube-tracking/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-youtube-tracking",
- "version": "3.15.0",
+ "version": "3.16.0",
"description": "YouTube tracking for Snowplow",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -48,6 +48,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.15.0"
+ "@snowplow/browser-tracker": "~3.16.0"
}
}
diff --git a/trackers/browser-tracker/package.json b/trackers/browser-tracker/package.json
index 802a60683..a3c846c77 100644
--- a/trackers/browser-tracker/package.json
+++ b/trackers/browser-tracker/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-tracker",
- "version": "3.15.0",
+ "version": "3.16.0",
"description": "Browser tracker for Snowplow",
"keywords": [
"tracking",
diff --git a/trackers/javascript-tracker/package.json b/trackers/javascript-tracker/package.json
index 9d660ed2b..8e30995de 100644
--- a/trackers/javascript-tracker/package.json
+++ b/trackers/javascript-tracker/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/javascript-tracker",
- "version": "3.15.0",
+ "version": "3.16.0",
"description": "Web analytics for Snowplow",
"keywords": [
"tracking",
diff --git a/trackers/node-tracker/package.json b/trackers/node-tracker/package.json
index f290411f0..5a23d8162 100644
--- a/trackers/node-tracker/package.json
+++ b/trackers/node-tracker/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/node-tracker",
- "version": "3.15.0",
+ "version": "3.16.0",
"description": "Node tracker for Snowplow",
"keywords": [
"snowplow",
From 1df5e9f48411720a6449a8882665e490a58cbdbf Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Mon, 16 Oct 2023 15:04:06 +0000
Subject: [PATCH 022/341] Applying documentation updates.
From 010b952adf017e5b3096c710e3be15c5d097785b Mon Sep 17 00:00:00 2001
From: Greg Leonard <45019882+greg-el@users.noreply.github.com>
Date: Fri, 20 Oct 2023 16:35:55 +0100
Subject: [PATCH 023/341] Consider status codes <200 (close #1244)
---
...nsider-status-codes-under-200_2023-10-20-16-20.json | 10 ++++++++++
.../browser-tracker-core/src/tracker/out_queue.ts | 4 ++--
2 files changed, 12 insertions(+), 2 deletions(-)
create mode 100644 common/changes/@snowplow/browser-tracker-core/issue-1244-consider-status-codes-under-200_2023-10-20-16-20.json
diff --git a/common/changes/@snowplow/browser-tracker-core/issue-1244-consider-status-codes-under-200_2023-10-20-16-20.json b/common/changes/@snowplow/browser-tracker-core/issue-1244-consider-status-codes-under-200_2023-10-20-16-20.json
new file mode 100644
index 000000000..8b89f8b54
--- /dev/null
+++ b/common/changes/@snowplow/browser-tracker-core/issue-1244-consider-status-codes-under-200_2023-10-20-16-20.json
@@ -0,0 +1,10 @@
+{
+ "changes": [
+ {
+ "packageName": "@snowplow/browser-tracker-core",
+ "comment": "Consider status codes <200",
+ "type": "none"
+ }
+ ],
+ "packageName": "@snowplow/browser-tracker-core"
+}
\ No newline at end of file
diff --git a/libraries/browser-tracker-core/src/tracker/out_queue.ts b/libraries/browser-tracker-core/src/tracker/out_queue.ts
index 92e3ad968..eb5d8894d 100644
--- a/libraries/browser-tracker-core/src/tracker/out_queue.ts
+++ b/libraries/browser-tracker-core/src/tracker/out_queue.ts
@@ -371,9 +371,9 @@ export function OutQueueManager(
};
xhr.onreadystatechange = function () {
- if (xhr.readyState === 4 && xhr.status >= 200) {
+ if (xhr.readyState === 4) {
clearTimeout(xhrTimeout);
- if (xhr.status < 300) {
+ if (xhr.status >= 200 && xhr.status < 300) {
onPostSuccess(numberToSend);
} else {
if (!shouldRetryForStatusCode(xhr.status)) {
From c39677b56f839fa2eb1fe269f5366d06623f9470 Mon Sep 17 00:00:00 2001
From: Greg Leonard <45019882+greg-el@users.noreply.github.com>
Date: Thu, 19 Oct 2023 14:22:41 +0100
Subject: [PATCH 024/341] Provide option not to retry on event send failure
(close #1248)
---
...failure-retry-option_2023-10-23-14-24.json | 10 ++
...failure-retry-option_2023-10-23-14-29.json | 10 ++
.../browser-tracker-core/src/tracker/index.ts | 3 +-
.../src/tracker/out_queue.ts | 12 ++-
.../browser-tracker-core/src/tracker/types.ts | 13 +++
.../test/out_queue.test.ts | 94 ++++++++++++++++++-
.../docs/browser-tracker.api.md | 1 +
7 files changed, 136 insertions(+), 7 deletions(-)
create mode 100644 common/changes/@snowplow/browser-tracker/issue-1248-send-failure-retry-option_2023-10-23-14-24.json
create mode 100644 common/changes/@snowplow/browser-tracker/issue-1248-send-failure-retry-option_2023-10-23-14-29.json
diff --git a/common/changes/@snowplow/browser-tracker/issue-1248-send-failure-retry-option_2023-10-23-14-24.json b/common/changes/@snowplow/browser-tracker/issue-1248-send-failure-retry-option_2023-10-23-14-24.json
new file mode 100644
index 000000000..4a400f6fc
--- /dev/null
+++ b/common/changes/@snowplow/browser-tracker/issue-1248-send-failure-retry-option_2023-10-23-14-24.json
@@ -0,0 +1,10 @@
+{
+ "changes": [
+ {
+ "packageName": "@snowplow/browser-tracker",
+ "comment": "Update API docs with retryFailedRequests",
+ "type": "none"
+ }
+ ],
+ "packageName": "@snowplow/browser-tracker"
+}
\ No newline at end of file
diff --git a/common/changes/@snowplow/browser-tracker/issue-1248-send-failure-retry-option_2023-10-23-14-29.json b/common/changes/@snowplow/browser-tracker/issue-1248-send-failure-retry-option_2023-10-23-14-29.json
new file mode 100644
index 000000000..5fcd9f286
--- /dev/null
+++ b/common/changes/@snowplow/browser-tracker/issue-1248-send-failure-retry-option_2023-10-23-14-29.json
@@ -0,0 +1,10 @@
+{
+ "changes": [
+ {
+ "packageName": "@snowplow/browser-tracker",
+ "comment": "Add retryFailedRequests",
+ "type": "none"
+ }
+ ],
+ "packageName": "@snowplow/browser-tracker"
+}
\ No newline at end of file
diff --git a/libraries/browser-tracker-core/src/tracker/index.ts b/libraries/browser-tracker-core/src/tracker/index.ts
index a6443a932..2183981c0 100755
--- a/libraries/browser-tracker-core/src/tracker/index.ts
+++ b/libraries/browser-tracker-core/src/tracker/index.ts
@@ -303,7 +303,8 @@ export function Tracker(
trackerConfiguration.withCredentials ?? true,
trackerConfiguration.retryStatusCodes ?? [],
(trackerConfiguration.dontRetryStatusCodes ?? []).concat([400, 401, 403, 410, 422]),
- trackerConfiguration.idService
+ trackerConfiguration.idService,
+ trackerConfiguration.retryFailedRequests
),
// Whether pageViewId should be regenerated after each trackPageView. Affect web_page context
preservePageViewId = false,
diff --git a/libraries/browser-tracker-core/src/tracker/out_queue.ts b/libraries/browser-tracker-core/src/tracker/out_queue.ts
index eb5d8894d..13772d5a6 100644
--- a/libraries/browser-tracker-core/src/tracker/out_queue.ts
+++ b/libraries/browser-tracker-core/src/tracker/out_queue.ts
@@ -64,6 +64,7 @@ export interface OutQueue {
* @param retryStatusCodes – Failure HTTP response status codes from Collector for which sending events should be retried (they can override the `dontRetryStatusCodes`)
* @param dontRetryStatusCodes – Failure HTTP response status codes from Collector for which sending events should not be retried
* @param idService - Id service full URL. This URL will be added to the queue and will be called using a GET method.
+ * @param retryFailedRequests - Whether to retry failed requests - Takes precedent over `retryStatusCodes` and `dontRetryStatusCodes`
* @returns object OutQueueManager instance
*/
export function OutQueueManager(
@@ -83,7 +84,8 @@ export function OutQueueManager(
withCredentials: boolean,
retryStatusCodes: number[],
dontRetryStatusCodes: number[],
- idService?: string
+ idService?: string,
+ retryFailedRequests: boolean = true
): OutQueue {
type PostEvent = {
evt: Record;
@@ -351,6 +353,10 @@ export function OutQueueManager(
// Time out POST requests after connectionTimeout
const xhrTimeout = setTimeout(function () {
xhr.abort();
+
+ if (!retryFailedRequests) {
+ removeEventsFromQueue(numberToSend);
+ }
executingQueue = false;
}, connectionTimeout);
@@ -458,6 +464,10 @@ export function OutQueueManager(
return false;
}
+ if (!retryFailedRequests) {
+ return false;
+ }
+
// retry if status code among custom user-supplied retry codes
if (retryStatusCodes.includes(statusCode)) {
return true;
diff --git a/libraries/browser-tracker-core/src/tracker/types.ts b/libraries/browser-tracker-core/src/tracker/types.ts
index 0f5801c9d..85fd60261 100755
--- a/libraries/browser-tracker-core/src/tracker/types.ts
+++ b/libraries/browser-tracker-core/src/tracker/types.ts
@@ -249,6 +249,19 @@ export type TrackerConfiguration = {
* The request respects the `anonymousTracking` option, including the SP-Anonymous header if needed, and any additional custom headers from the customHeaders option.
*/
idService?: string;
+ /**
+ * Whether to retry failed requests to the collector.
+ *
+ * Failed requests are requests that failed due to
+ * [timeouts](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/timeout_event),
+ * [network errors](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/error_event),
+ * and [abort events](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/abort_event).
+ *
+ * Takes precedent over `retryStatusCodes` and `dontRetryStatusCodes`.
+ *
+ * @defaultValue true
+ */
+ retryFailedRequests?: boolean;
};
/**
diff --git a/libraries/browser-tracker-core/test/out_queue.test.ts b/libraries/browser-tracker-core/test/out_queue.test.ts
index bab53486b..98f8b6be2 100644
--- a/libraries/browser-tracker-core/test/out_queue.test.ts
+++ b/libraries/browser-tracker-core/test/out_queue.test.ts
@@ -31,6 +31,12 @@
import { OutQueueManager, OutQueue } from '../src/tracker/out_queue';
import { SharedState } from '../src/state';
+const readPostQueue = () => {
+ return JSON.parse(
+ window.localStorage.getItem('snowplowOutQueue_sp_post2') ?? fail('Unable to find local storage queue')
+ );
+};
+
describe('OutQueueManager', () => {
const maxQueueSize = 2;
@@ -45,6 +51,7 @@ describe('OutQueueManager', () => {
send: jest.fn(),
setRequestHeader: jest.fn(),
withCredentials: true,
+ abort: jest.fn(),
};
jest.spyOn(window, 'XMLHttpRequest').mockImplementation(() => xhrMock as XMLHttpRequest);
@@ -219,11 +226,6 @@ describe('OutQueueManager', () => {
describe('idService requests', () => {
const idServiceEndpoint = 'http://example.com/id';
- const readPostQueue = () => {
- return JSON.parse(
- window.localStorage.getItem('snowplowOutQueue_sp_post2') ?? fail('Unable to find local storage queue')
- );
- };
const readGetQueue = () =>
JSON.parse(window.localStorage.getItem('snowplowOutQueue_sp_get') ?? fail('Unable to find local storage queue'));
@@ -337,4 +339,86 @@ describe('OutQueueManager', () => {
});
});
});
+
+ describe('retryFailures = true', () => {
+ const request = { e: 'pv', eid: '65cb78de-470c-4764-8c10-02bd79477a3a' };
+ let createOutQueue = () =>
+ OutQueueManager(
+ 'sp',
+ new SharedState(),
+ true,
+ 'post',
+ '/com.snowplowanalytics.snowplow/tp2',
+ 1,
+ 40000,
+ 0,
+ false,
+ maxQueueSize,
+ 10,
+ false,
+ {},
+ true,
+ [],
+ [],
+ '',
+ true
+ );
+
+ it('should remain in queue on failure', (done) => {
+ let outQueue = createOutQueue();
+ outQueue.enqueueRequest(request, 'http://example.com');
+
+ let retrievedQueue = readPostQueue();
+ expect(retrievedQueue).toHaveLength(1);
+
+ respondMockRequest(0);
+
+ setTimeout(() => {
+ retrievedQueue = readPostQueue();
+ expect(retrievedQueue).toHaveLength(1);
+ done();
+ }, 20);
+ });
+ });
+
+ describe('retryFailures = false', () => {
+ const request = { e: 'pv', eid: '65cb78de-470c-4764-8c10-02bd79477a3a' };
+ let createOutQueue = () =>
+ OutQueueManager(
+ 'sp',
+ new SharedState(),
+ true,
+ 'post',
+ '/com.snowplowanalytics.snowplow/tp2',
+ 1,
+ 40000,
+ 0,
+ false,
+ maxQueueSize,
+ 0,
+ false,
+ {},
+ true,
+ [],
+ [],
+ '',
+ false
+ );
+
+ it('should remove from queue on failure', (done) => {
+ let outQueue = createOutQueue();
+ outQueue.enqueueRequest(request, 'http://example.com');
+
+ let retrievedQueue = readPostQueue();
+ expect(retrievedQueue).toHaveLength(1);
+
+ respondMockRequest(0);
+
+ setTimeout(() => {
+ retrievedQueue = readPostQueue();
+ expect(retrievedQueue).toHaveLength(0);
+ done();
+ }, 20);
+ });
+ });
});
diff --git a/trackers/browser-tracker/docs/browser-tracker.api.md b/trackers/browser-tracker/docs/browser-tracker.api.md
index 70aabae95..4328b687e 100644
--- a/trackers/browser-tracker/docs/browser-tracker.api.md
+++ b/trackers/browser-tracker/docs/browser-tracker.api.md
@@ -369,6 +369,7 @@ export type TrackerConfiguration = {
dontRetryStatusCodes?: number[];
onSessionUpdateCallback?: (updatedSession: ClientSession) => void;
idService?: string;
+ retryFailedRequests?: boolean;
};
// @public
From 99e3e64d6cb1eea6adce821e397502e0f744031d Mon Sep 17 00:00:00 2001
From: adatzer
Date: Wed, 25 Oct 2023 15:07:26 +0300
Subject: [PATCH 025/341] Bump browser_context schema to 2-0-0 (close #1260)
---
...sue-1260_bump_browser_context_2023-10-25-12-15.json | 10 ++++++++++
libraries/browser-tracker-core/src/tracker/schemata.ts | 2 +-
2 files changed, 11 insertions(+), 1 deletion(-)
create mode 100644 common/changes/@snowplow/browser-tracker-core/issue-1260_bump_browser_context_2023-10-25-12-15.json
diff --git a/common/changes/@snowplow/browser-tracker-core/issue-1260_bump_browser_context_2023-10-25-12-15.json b/common/changes/@snowplow/browser-tracker-core/issue-1260_bump_browser_context_2023-10-25-12-15.json
new file mode 100644
index 000000000..48cb88901
--- /dev/null
+++ b/common/changes/@snowplow/browser-tracker-core/issue-1260_bump_browser_context_2023-10-25-12-15.json
@@ -0,0 +1,10 @@
+{
+ "changes": [
+ {
+ "packageName": "@snowplow/browser-tracker-core",
+ "comment": "Bump browser_context schema to 2-0-0",
+ "type": "none"
+ }
+ ],
+ "packageName": "@snowplow/browser-tracker-core"
+}
\ No newline at end of file
diff --git a/libraries/browser-tracker-core/src/tracker/schemata.ts b/libraries/browser-tracker-core/src/tracker/schemata.ts
index 61db684e5..ccd0df3c8 100644
--- a/libraries/browser-tracker-core/src/tracker/schemata.ts
+++ b/libraries/browser-tracker-core/src/tracker/schemata.ts
@@ -1,4 +1,4 @@
export const WEB_PAGE_SCHEMA = 'iglu:com.snowplowanalytics.snowplow/web_page/jsonschema/1-0-0';
-export const BROWSER_CONTEXT_SCHEMA = 'iglu:com.snowplowanalytics.snowplow/browser_context/jsonschema/1-0-0';
+export const BROWSER_CONTEXT_SCHEMA = 'iglu:com.snowplowanalytics.snowplow/browser_context/jsonschema/2-0-0';
export const CLIENT_SESSION_SCHEMA = 'iglu:com.snowplowanalytics.snowplow/client_session/jsonschema/1-0-2';
export const PAYLOAD_DATA_SCHEMA = 'iglu:com.snowplowanalytics.snowplow/payload_data/jsonschema/1-0-4';
From 67a22e412abe1819b07a28002c40117a11576c7a Mon Sep 17 00:00:00 2001
From: adatzer
Date: Sat, 11 Nov 2023 13:09:11 +0200
Subject: [PATCH 026/341] Drop invalid client hints (close #1264)
---
...ue-1264_client_hints_2023-11-11-11-25.json | 10 ++
common/config/rush/pnpm-lock.yaml | 2 +
common/config/rush/repo-state.json | 2 +-
.../jest.config.js | 5 +
.../browser-plugin-client-hints/package.json | 3 +-
.../src/contexts.ts | 30 ----
.../browser-plugin-client-hints/src/index.ts | 95 +++++-----
.../test/client-hints.test.ts | 170 ++++++++++++++++++
8 files changed, 242 insertions(+), 75 deletions(-)
create mode 100644 common/changes/@snowplow/browser-plugin-client-hints/issue-1264_client_hints_2023-11-11-11-25.json
create mode 100644 plugins/browser-plugin-client-hints/jest.config.js
create mode 100644 plugins/browser-plugin-client-hints/test/client-hints.test.ts
diff --git a/common/changes/@snowplow/browser-plugin-client-hints/issue-1264_client_hints_2023-11-11-11-25.json b/common/changes/@snowplow/browser-plugin-client-hints/issue-1264_client_hints_2023-11-11-11-25.json
new file mode 100644
index 000000000..e4a5135cf
--- /dev/null
+++ b/common/changes/@snowplow/browser-plugin-client-hints/issue-1264_client_hints_2023-11-11-11-25.json
@@ -0,0 +1,10 @@
+{
+ "changes": [
+ {
+ "packageName": "@snowplow/browser-plugin-client-hints",
+ "comment": "Drop invalid client hints",
+ "type": "none"
+ }
+ ],
+ "packageName": "@snowplow/browser-plugin-client-hints"
+}
\ No newline at end of file
diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml
index 62165f52e..92caee30a 100644
--- a/common/config/rush/pnpm-lock.yaml
+++ b/common/config/rush/pnpm-lock.yaml
@@ -213,6 +213,7 @@ importers:
'@rollup/plugin-commonjs': ~21.0.2
'@rollup/plugin-node-resolve': ~13.1.3
'@snowplow/browser-tracker-core': workspace:*
+ '@snowplow/tracker-core': workspace:*
'@types/jest': ~27.4.1
'@types/jsdom': ~16.2.14
'@typescript-eslint/eslint-plugin': ~5.15.0
@@ -237,6 +238,7 @@ importers:
'@ampproject/rollup-plugin-closure-compiler': 0.27.0_rollup@2.70.1
'@rollup/plugin-commonjs': 21.0.2_rollup@2.70.1
'@rollup/plugin-node-resolve': 13.1.3_rollup@2.70.1
+ '@snowplow/tracker-core': link:../../libraries/tracker-core
'@types/jest': 27.4.1
'@types/jsdom': 16.2.14
'@typescript-eslint/eslint-plugin': 5.15.0_f2c49ce7d0e93ebcfdb4b7d25b131b28
diff --git a/common/config/rush/repo-state.json b/common/config/rush/repo-state.json
index 77d8ad8e4..5b45dccaf 100644
--- a/common/config/rush/repo-state.json
+++ b/common/config/rush/repo-state.json
@@ -1,5 +1,5 @@
// DO NOT MODIFY THIS FILE MANUALLY BUT DO COMMIT IT. It is generated and used by Rush.
{
- "pnpmShrinkwrapHash": "c272b447631dc0e0be0f52f2e7d1ed6aa6603939",
+ "pnpmShrinkwrapHash": "57af2bb401d45bb58b802eb1a04a7ee62b3aa732",
"preferredVersionsHash": "bf21a9e8fbc5a3846fb05b4fa0859e0917b2202f"
}
diff --git a/plugins/browser-plugin-client-hints/jest.config.js b/plugins/browser-plugin-client-hints/jest.config.js
new file mode 100644
index 000000000..bd3ea4e2a
--- /dev/null
+++ b/plugins/browser-plugin-client-hints/jest.config.js
@@ -0,0 +1,5 @@
+module.exports = {
+ preset: 'ts-jest',
+ reporters: ['jest-standard-reporter'],
+ testEnvironment: 'jest-environment-jsdom-global',
+};
diff --git a/plugins/browser-plugin-client-hints/package.json b/plugins/browser-plugin-client-hints/package.json
index d74b53452..cff50908e 100644
--- a/plugins/browser-plugin-client-hints/package.json
+++ b/plugins/browser-plugin-client-hints/package.json
@@ -19,7 +19,7 @@
],
"scripts": {
"build": "rollup -c --silent --failAfterWarnings",
- "test": ""
+ "test": "jest"
},
"dependencies": {
"@snowplow/browser-tracker-core": "workspace:*",
@@ -29,6 +29,7 @@
"@ampproject/rollup-plugin-closure-compiler": "~0.27.0",
"@rollup/plugin-commonjs": "~21.0.2",
"@rollup/plugin-node-resolve": "~13.1.3",
+ "@snowplow/tracker-core": "workspace:*",
"@types/jest": "~27.4.1",
"@types/jsdom": "~16.2.14",
"@typescript-eslint/eslint-plugin": "~5.15.0",
diff --git a/plugins/browser-plugin-client-hints/src/contexts.ts b/plugins/browser-plugin-client-hints/src/contexts.ts
index 068800ebb..5d55b5c0f 100644
--- a/plugins/browser-plugin-client-hints/src/contexts.ts
+++ b/plugins/browser-plugin-client-hints/src/contexts.ts
@@ -1,33 +1,3 @@
-/*
- * Copyright (c) 2022 Snowplow Analytics Ltd, 2010 Anthon Pang
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * 3. Neither the name of the copyright holder nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
/**
* Values based upon the user agents characteristics, typically requested via the ACCEPT-CH HTTP header, as defined in the HTTP Client Hint specification
*/
diff --git a/plugins/browser-plugin-client-hints/src/index.ts b/plugins/browser-plugin-client-hints/src/index.ts
index e8b4917ee..02205cc7b 100644
--- a/plugins/browser-plugin-client-hints/src/index.ts
+++ b/plugins/browser-plugin-client-hints/src/index.ts
@@ -1,33 +1,3 @@
-/*
- * Copyright (c) 2022 Snowplow Analytics Ltd, 2010 Anthon Pang
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * 3. Neither the name of the copyright holder nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
import { BrowserPlugin } from '@snowplow/browser-tracker-core';
import { HttpClientHints } from './contexts';
@@ -63,11 +33,44 @@ let uaClientHints: HttpClientHints;
function forceArray(array: T[] | Record): T[] {
if (Array.isArray(array)) return array;
- return Object.keys(array).map((e) => {
- return array[e];
+ if (Object.prototype.toString.call(array) === '[object Object]') {
+ return Object.keys(array).map((e) => {
+ return array[e];
+ });
+ }
+
+ return [];
+}
+
+/**
+ * Returns the client-hints brands, ensuring no additional properties.
+ */
+function getBrands(brands: Array): Array {
+ return brands.map((b) => {
+ const { brand, version } = b;
+ return { brand, version };
});
}
+/**
+ * Validates whether userAgentData is compliant to the client-hints interface.
+ * https://wicg.github.io/ua-client-hints/#interface
+ */
+function validClientHints(hints: HttpClientHints): boolean {
+ if (!hints || typeof hints.isMobile !== 'boolean' || !Array.isArray(hints.brands)) {
+ return false;
+ }
+
+ if (
+ hints.brands.length === 0 ||
+ hints.brands.some((brand) => typeof brand.brand !== 'string' || typeof brand.version !== 'string')
+ ) {
+ return false;
+ }
+
+ return true;
+}
+
/**
* Attaches Client Hint information where available
* @param includeHighEntropy - Should high entropy values be included
@@ -75,23 +78,29 @@ function forceArray(array: T[] | Record): T[] {
export function ClientHintsPlugin(includeHighEntropy?: boolean): BrowserPlugin {
const populateClientHints = () => {
const navigatorAlias = navigator;
+ const uaData = navigatorAlias.userAgentData;
- if (navigatorAlias.userAgentData) {
- uaClientHints = {
- isMobile: navigatorAlias.userAgentData.mobile,
- brands: forceArray(navigatorAlias.userAgentData.brands),
+ if (uaData) {
+ let candidateHints: HttpClientHints;
+ candidateHints = {
+ isMobile: uaData.mobile,
+ brands: getBrands(forceArray(uaData.brands)),
};
- if (includeHighEntropy && navigatorAlias.userAgentData.getHighEntropyValues) {
- navigatorAlias.userAgentData
+ if (includeHighEntropy && uaData.getHighEntropyValues) {
+ uaData
.getHighEntropyValues(['platform', 'platformVersion', 'architecture', 'model', 'uaFullVersion'])
.then((res) => {
- uaClientHints.architecture = res.architecture;
- uaClientHints.model = res.model;
- uaClientHints.platform = res.platform;
- uaClientHints.uaFullVersion = res.uaFullVersion;
- uaClientHints.platformVersion = res.platformVersion;
+ candidateHints.architecture = res.architecture;
+ candidateHints.model = res.model;
+ candidateHints.platform = res.platform;
+ candidateHints.uaFullVersion = res.uaFullVersion;
+ candidateHints.platformVersion = res.platformVersion;
});
}
+
+ if (validClientHints(candidateHints)) {
+ uaClientHints = candidateHints;
+ }
}
};
diff --git a/plugins/browser-plugin-client-hints/test/client-hints.test.ts b/plugins/browser-plugin-client-hints/test/client-hints.test.ts
new file mode 100644
index 000000000..4da682972
--- /dev/null
+++ b/plugins/browser-plugin-client-hints/test/client-hints.test.ts
@@ -0,0 +1,170 @@
+import { buildLinkClick, trackerCore } from '@snowplow/tracker-core';
+import { BrowserTracker } from '@snowplow/browser-tracker-core';
+import { JSDOM } from 'jsdom';
+import { setImmediate } from 'timers';
+import { ClientHintsPlugin } from '../src';
+
+declare var jsdom: JSDOM;
+
+describe('Client Hints plugin', () => {
+ const ctxSchema = 'iglu:com.snowplowanalytics.snowplow/contexts/jsonschema/1-0-0';
+ const hintsSchema = 'iglu:org.ietf/http_client_hints/jsonschema/1-0-0';
+
+ it('Attaches no context on undefined userAgentData', (done) => {
+ const plugin = ClientHintsPlugin(false);
+ const core = trackerCore({
+ corePlugins: [plugin],
+ callback: (payloadBuilder) => {
+ const json = payloadBuilder.getJson().filter((e) => e.keyIfEncoded === 'cx');
+ expect(json.length).toBe(0);
+ done();
+ },
+ });
+
+ plugin.activateBrowserPlugin?.({ core } as BrowserTracker);
+ core.track(buildLinkClick({ targetUrl: 'https://example.com' }));
+ });
+
+ it('Attaches no context on invalid userAgentData(no mobile)', (done) => {
+ const sampleUserAgentData = {
+ brands: [
+ {
+ brand: 'Opera GX',
+ version: '98',
+ },
+ ],
+ } as any;
+
+ Object.defineProperty(jsdom.window.navigator, 'userAgentData', {
+ value: sampleUserAgentData,
+ configurable: true,
+ });
+
+ const plugin = ClientHintsPlugin(false);
+ const core = trackerCore({
+ corePlugins: [plugin],
+ callback: (payloadBuilder) => {
+ const json = payloadBuilder.getJson().filter((e) => e.keyIfEncoded === 'cx');
+ expect(json.length).toBe(0);
+ done();
+ },
+ });
+
+ plugin.activateBrowserPlugin?.({ core } as BrowserTracker);
+ core.track(buildLinkClick({ targetUrl: 'https://example.com' }));
+ });
+
+ it('Attaches no context on invalid userAgentData(no brands)', (done) => {
+ const sampleUserAgentData = {
+ mobile: true,
+ } as any;
+
+ Object.defineProperty(jsdom.window.navigator, 'userAgentData', {
+ value: sampleUserAgentData,
+ configurable: true,
+ });
+
+ const plugin = ClientHintsPlugin(false);
+ const core = trackerCore({
+ corePlugins: [plugin],
+ callback: (payloadBuilder) => {
+ const json = payloadBuilder.getJson().filter((e) => e.keyIfEncoded === 'cx');
+ expect(json.length).toBe(0);
+ done();
+ },
+ });
+
+ plugin.activateBrowserPlugin?.({ core } as BrowserTracker);
+ core.track(buildLinkClick({ targetUrl: 'https://example.com' }));
+ });
+
+ it('Attaches no context on invalid userAgentData(no valid brands)', (done) => {
+ const sampleUserAgentData = {
+ mobile: false,
+ brands: [
+ {
+ brand: 'Opera GX',
+ version: 98,
+ },
+ ],
+ } as any;
+
+ Object.defineProperty(jsdom.window.navigator, 'userAgentData', {
+ value: sampleUserAgentData,
+ configurable: true,
+ });
+
+ const plugin = ClientHintsPlugin(true);
+ const core = trackerCore({
+ corePlugins: [plugin],
+ callback: (payloadBuilder) => {
+ const json = payloadBuilder.getJson().filter((e) => e.keyIfEncoded === 'cx');
+ expect(json.length).toBe(0);
+ done();
+ },
+ });
+
+ plugin.activateBrowserPlugin?.({ core } as BrowserTracker);
+ core.track(buildLinkClick({ targetUrl: 'https://example.com' }));
+ });
+
+ it('Attaches context on valid userAgentData properties', async () => {
+ const highEntropyVals = {
+ platform: 'PhoneOS',
+ platformVersion: '10A',
+ architecture: 'arm',
+ model: 'X633GTM',
+ uaFullVersion: '73.32.AGX.5',
+ };
+ const sampleUserAgentData = {
+ brands: [
+ {
+ brand: 'Chromium',
+ version: '119',
+ },
+ {
+ brand: 'Not?A_Brand',
+ version: '24',
+ },
+ ],
+ mobile: false,
+ getHighEntropyValues: (_: any) => Promise.resolve(highEntropyVals),
+ };
+
+ const expected = {
+ schema: ctxSchema,
+ data: [
+ {
+ schema: hintsSchema,
+ data: Object.assign(
+ {
+ isMobile: false,
+ brands: sampleUserAgentData.brands,
+ },
+ highEntropyVals
+ ),
+ },
+ ],
+ };
+
+ Object.defineProperty(jsdom.window.navigator, 'userAgentData', {
+ value: sampleUserAgentData,
+ configurable: true,
+ });
+
+ const plugin = ClientHintsPlugin(true);
+ const core = trackerCore({
+ corePlugins: [plugin],
+ callback: (payloadBuilder) => {
+ const json = payloadBuilder.getJson().filter((e) => e.keyIfEncoded === 'cx');
+
+ expect(json[0].json).toMatchObject(expected);
+ },
+ });
+
+ plugin.activateBrowserPlugin?.({ core } as BrowserTracker);
+ const flushPromises = () => Promise.resolve(setImmediate);
+ await flushPromises();
+ core.track(buildLinkClick({ targetUrl: 'https://example.com' }));
+ });
+});
From 6acd10b2826ca3248af5c477a20cf5a8fd634d2a Mon Sep 17 00:00:00 2001
From: Peter Perlepes
Date: Tue, 14 Nov 2023 14:36:40 +0200
Subject: [PATCH 027/341] Update browser-plugin-ga-cookies to include options
for Google Analytics 4 cookies (close #1225)
---
...ga4-cookies-addition_2023-08-08-14-04.json | 10 +
...ga4-cookies-addition_2023-08-14-14-18.json | 10 +
plugins/browser-plugin-ga-cookies/README.md | 18 +-
.../browser-plugin-ga-cookies/jest.config.js | 5 +
.../browser-plugin-ga-cookies/package.json | 2 +-
.../browser-plugin-ga-cookies/src/contexts.ts | 42 -----
.../browser-plugin-ga-cookies/src/index.ts | 126 ++++++++-----
.../browser-plugin-ga-cookies/src/schemata.ts | 2 +
.../browser-plugin-ga-cookies/src/types.ts | 20 ++
.../__snapshots__/ga-cookies.test.ts.snap | 170 +++++++++++++++++
.../test/ga-cookies.test.ts | 175 ++++++++++++++++++
trackers/javascript-tracker/src/features.ts | 5 +-
12 files changed, 494 insertions(+), 91 deletions(-)
create mode 100644 common/changes/@snowplow/browser-plugin-ga-cookies/feature-ga-cookies-plugin-ga4-cookies-addition_2023-08-08-14-04.json
create mode 100644 common/changes/@snowplow/javascript-tracker/feature-1225-ga-cookies-plugin-ga4-cookies-addition_2023-08-14-14-18.json
create mode 100644 plugins/browser-plugin-ga-cookies/jest.config.js
delete mode 100644 plugins/browser-plugin-ga-cookies/src/contexts.ts
create mode 100644 plugins/browser-plugin-ga-cookies/src/schemata.ts
create mode 100644 plugins/browser-plugin-ga-cookies/src/types.ts
create mode 100644 plugins/browser-plugin-ga-cookies/test/__snapshots__/ga-cookies.test.ts.snap
create mode 100644 plugins/browser-plugin-ga-cookies/test/ga-cookies.test.ts
diff --git a/common/changes/@snowplow/browser-plugin-ga-cookies/feature-ga-cookies-plugin-ga4-cookies-addition_2023-08-08-14-04.json b/common/changes/@snowplow/browser-plugin-ga-cookies/feature-ga-cookies-plugin-ga4-cookies-addition_2023-08-08-14-04.json
new file mode 100644
index 000000000..7273f3046
--- /dev/null
+++ b/common/changes/@snowplow/browser-plugin-ga-cookies/feature-ga-cookies-plugin-ga4-cookies-addition_2023-08-08-14-04.json
@@ -0,0 +1,10 @@
+{
+ "changes": [
+ {
+ "packageName": "@snowplow/browser-plugin-ga-cookies",
+ "comment": "Update to include options for Google Analytics 4 cookies",
+ "type": "none"
+ }
+ ],
+ "packageName": "@snowplow/browser-plugin-ga-cookies"
+}
\ No newline at end of file
diff --git a/common/changes/@snowplow/javascript-tracker/feature-1225-ga-cookies-plugin-ga4-cookies-addition_2023-08-14-14-18.json b/common/changes/@snowplow/javascript-tracker/feature-1225-ga-cookies-plugin-ga4-cookies-addition_2023-08-14-14-18.json
new file mode 100644
index 000000000..e3ff286e4
--- /dev/null
+++ b/common/changes/@snowplow/javascript-tracker/feature-1225-ga-cookies-plugin-ga4-cookies-addition_2023-08-14-14-18.json
@@ -0,0 +1,10 @@
+{
+ "changes": [
+ {
+ "packageName": "@snowplow/javascript-tracker",
+ "comment": "Add further options for the gaCookies context",
+ "type": "none"
+ }
+ ],
+ "packageName": "@snowplow/javascript-tracker"
+}
\ No newline at end of file
diff --git a/plugins/browser-plugin-ga-cookies/README.md b/plugins/browser-plugin-ga-cookies/README.md
index 098e8283b..0d8775d62 100644
--- a/plugins/browser-plugin-ga-cookies/README.md
+++ b/plugins/browser-plugin-ga-cookies/README.md
@@ -5,7 +5,7 @@
Browser Plugin to be used with `@snowplow/browser-tracker`.
-Adds GA Cookies to your Snowplow tracking.
+Adds Universal Analytics and Google Analytics 4 cookies to your Snowplow tracking.
## Maintainer quick start
@@ -36,14 +36,26 @@ Initialize your tracker with the GaCookiesPlugin:
import { newTracker } from '@snowplow/browser-tracker';
import { GaCookiesPlugin } from '@snowplow/browser-plugin-ga-cookies';
-newTracker('sp1', '{{collector}}', { plugins: [ GaCookiesPlugin() ] }); // Also stores reference at module level
+newTracker('sp1', '{{collector}}', { plugins: [ GaCookiesPlugin(
+ /* pluginOptions */
+) ] });
+
+/*
+ * Available plugin options `GACookiesPluginOptions`:
+ * {
+ * ua: Send Universal Analytics specific cookie values. Defaults to true.
+ * ga4: Send Google Analytics 4 specific cookie values. Defaults to false.
+ * ga4MeasurementId: Measurement id/ids to search the Google Analytics 4 session cookie. Can be a single measurement id as a string or an array of measurement id strings. The cookie has the form of _ga_ where is the data stream container id and is the optional cookie_prefix option of the gtag.js tracker.
+ * cookiePrefix: Cookie prefix set on the Google Analytics 4 cookies using the cookie_prefix option of the gtag.js tracker.
+ * }
+ */
```
## Copyright and license
Licensed and distributed under the [BSD 3-Clause License](LICENSE) ([An OSI Approved License][osi]).
-Copyright (c) 2022 Snowplow Analytics Ltd, 2010 Anthon Pang.
+Copyright (c) 2023 Snowplow Analytics Ltd.
All rights reserved.
diff --git a/plugins/browser-plugin-ga-cookies/jest.config.js b/plugins/browser-plugin-ga-cookies/jest.config.js
new file mode 100644
index 000000000..bd3ea4e2a
--- /dev/null
+++ b/plugins/browser-plugin-ga-cookies/jest.config.js
@@ -0,0 +1,5 @@
+module.exports = {
+ preset: 'ts-jest',
+ reporters: ['jest-standard-reporter'],
+ testEnvironment: 'jest-environment-jsdom-global',
+};
diff --git a/plugins/browser-plugin-ga-cookies/package.json b/plugins/browser-plugin-ga-cookies/package.json
index ccb1d3d63..87011a3e5 100644
--- a/plugins/browser-plugin-ga-cookies/package.json
+++ b/plugins/browser-plugin-ga-cookies/package.json
@@ -19,7 +19,7 @@
],
"scripts": {
"build": "rollup -c --silent --failAfterWarnings",
- "test": ""
+ "test": "jest"
},
"dependencies": {
"@snowplow/browser-tracker-core": "workspace:*",
diff --git a/plugins/browser-plugin-ga-cookies/src/contexts.ts b/plugins/browser-plugin-ga-cookies/src/contexts.ts
deleted file mode 100644
index 044e41eaf..000000000
--- a/plugins/browser-plugin-ga-cookies/src/contexts.ts
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (c) 2022 Snowplow Analytics Ltd, 2010 Anthon Pang
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * 3. Neither the name of the copyright holder nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-/**
- * Schema for a context of Google Analytics cookie values
- */
-export interface Cookies {
- __utma?: string;
- __utmb?: string;
- __utmc?: string;
- __utmv?: string;
- __utmz?: string;
- _ga?: string;
- [key: string]: string | undefined;
-}
diff --git a/plugins/browser-plugin-ga-cookies/src/index.ts b/plugins/browser-plugin-ga-cookies/src/index.ts
index 4e695ec1c..bd7a78ed3 100644
--- a/plugins/browser-plugin-ga-cookies/src/index.ts
+++ b/plugins/browser-plugin-ga-cookies/src/index.ts
@@ -1,54 +1,94 @@
-/*
- * Copyright (c) 2022 Snowplow Analytics Ltd, 2010 Anthon Pang
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * 3. Neither the name of the copyright holder nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
import { SelfDescribingJson } from '@snowplow/tracker-core';
import { BrowserPlugin, cookie } from '@snowplow/browser-tracker-core';
-import { Cookies } from './contexts';
+import { GA4Cookies, GA4SessionCookies, UACookies } from './types';
+import { GOOGLE_ANALYTICS_4_COOKIES_SCHEMA, UNIVERSAL_ANALYTICS_COOKIES_SCHEMA } from './schemata';
+
+interface GACookiesPluginOptions {
+ ua?: boolean;
+ ga4?: boolean;
+ ga4MeasurementId?: string | string[];
+ cookiePrefix?: string | string[];
+}
+
+const defaultPluginOptions: GACookiesPluginOptions = {
+ ua: true,
+ ga4: false,
+ ga4MeasurementId: '',
+ cookiePrefix: [],
+};
/**
* Captures the GA cookies on a page and sends as context on each event
+ * @param pluginOptions.ua - Send Universal Analytics specific cookie values.
+ * @param pluginOptions.ga4 - Send Google Analytics 4 specific cookie values.
+ * @param pluginOptions.ga4MeasurementId - Measurement id/ids to search the Google Analytics 4 session cookie. Can be a single measurement id as a string or an array of measurement id strings. The cookie has the form of _ga_ where is the data stream container id.
+ * @param pluginOptions.cookiePrefix - Cookie prefix set on the Google Analytics 4 cookies using the cookie_prefix option of the gtag.js tracker.
*/
-export function GaCookiesPlugin(): BrowserPlugin {
+export function GaCookiesPlugin(pluginOptions: GACookiesPluginOptions = defaultPluginOptions): BrowserPlugin {
return {
contexts: () => {
- const gaCookieData: SelfDescribingJson = {
- schema: 'iglu:com.google.analytics/cookies/jsonschema/1-0-0',
- data: {},
- };
- ['__utma', '__utmb', '__utmc', '__utmv', '__utmz', '_ga'].forEach(function (cookieType) {
- var value = cookie(cookieType);
- if (value) {
- gaCookieData.data[cookieType] = value;
- }
- });
- return [gaCookieData];
+ const contexts: SelfDescribingJson>[] = [];
+ const { ga4, ga4MeasurementId, ua, cookiePrefix } = { ...defaultPluginOptions, ...pluginOptions };
+ const GA_USER_COOKIE = '_ga';
+ const GA4_MEASUREMENT_ID_PREFIX = 'G-';
+ const GA4_COOKIE_PREFIX = '_ga_';
+
+ if (ua) {
+ const uaCookiesContext: SelfDescribingJson = {
+ schema: UNIVERSAL_ANALYTICS_COOKIES_SCHEMA,
+ data: {},
+ };
+ ['__utma', '__utmb', '__utmc', '__utmv', '__utmz', GA_USER_COOKIE].forEach(function (cookieType) {
+ var value = cookie(cookieType);
+ if (value) {
+ uaCookiesContext.data[cookieType] = value;
+ }
+ });
+ contexts.push(uaCookiesContext);
+ }
+
+ if (ga4) {
+ const cookiePrefixes = Array.isArray(cookiePrefix) ? [...cookiePrefix] : [cookiePrefix];
+
+ /* We also will search for the default (no prefix) in every case. */
+ cookiePrefixes.unshift('');
+ cookiePrefixes.forEach((prefix) => {
+ const userCookie = cookie(prefix + GA_USER_COOKIE);
+ const sessionCookies: GA4SessionCookies[] = [];
+ if (ga4MeasurementId) {
+ const measurementIdentifiers = Array.isArray(ga4MeasurementId) ? [...ga4MeasurementId] : [ga4MeasurementId];
+
+ measurementIdentifiers.forEach(function (cookieIdentifier) {
+ const sessionCookieValue = cookie(
+ prefix + cookieIdentifier.replace(GA4_MEASUREMENT_ID_PREFIX, GA4_COOKIE_PREFIX)
+ );
+ if (sessionCookieValue) {
+ sessionCookies.push({
+ measurement_id: cookieIdentifier,
+ session_cookie: sessionCookieValue,
+ });
+ }
+ });
+ }
+
+ if (!userCookie && !sessionCookies.length) {
+ return;
+ }
+
+ const ga4CookiesContext: SelfDescribingJson = {
+ schema: GOOGLE_ANALYTICS_4_COOKIES_SCHEMA,
+ data: {
+ _ga: userCookie,
+ session_cookies: sessionCookies.length ? sessionCookies : undefined,
+ cookie_prefix: prefix || undefined,
+ },
+ };
+
+ contexts.push(ga4CookiesContext);
+ });
+ }
+
+ return contexts;
},
};
}
diff --git a/plugins/browser-plugin-ga-cookies/src/schemata.ts b/plugins/browser-plugin-ga-cookies/src/schemata.ts
new file mode 100644
index 000000000..39e923674
--- /dev/null
+++ b/plugins/browser-plugin-ga-cookies/src/schemata.ts
@@ -0,0 +1,2 @@
+export const UNIVERSAL_ANALYTICS_COOKIES_SCHEMA = 'iglu:com.google.analytics/cookies/jsonschema/1-0-0';
+export const GOOGLE_ANALYTICS_4_COOKIES_SCHEMA = 'iglu:com.google.ga4/cookies/jsonschema/1-0-0';
diff --git a/plugins/browser-plugin-ga-cookies/src/types.ts b/plugins/browser-plugin-ga-cookies/src/types.ts
new file mode 100644
index 000000000..6e41dfe54
--- /dev/null
+++ b/plugins/browser-plugin-ga-cookies/src/types.ts
@@ -0,0 +1,20 @@
+export interface UACookies {
+ __utma?: string;
+ __utmb?: string;
+ __utmc?: string;
+ __utmv?: string;
+ __utmz?: string;
+ _ga?: string;
+ [key: string]: string | undefined;
+}
+
+export interface GA4Cookies {
+ _ga?: string;
+ session_cookies?: GA4SessionCookies[];
+ [key: string]: unknown;
+}
+
+export interface GA4SessionCookies {
+ measurement_id: string;
+ session_cookie?: string;
+}
diff --git a/plugins/browser-plugin-ga-cookies/test/__snapshots__/ga-cookies.test.ts.snap b/plugins/browser-plugin-ga-cookies/test/__snapshots__/ga-cookies.test.ts.snap
new file mode 100644
index 000000000..fff2ed783
--- /dev/null
+++ b/plugins/browser-plugin-ga-cookies/test/__snapshots__/ga-cookies.test.ts.snap
@@ -0,0 +1,170 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`GA Cookies plugin Correctly returns values for GA4 cookies for multiple measurement ids 1`] = `
+Array [
+ Object {
+ "data": Object {
+ "_ga": "1234",
+ "cookie_prefix": undefined,
+ "session_cookies": Array [
+ Object {
+ "measurement_id": "G-1234",
+ "session_cookie": "567",
+ },
+ Object {
+ "measurement_id": "G-5678",
+ "session_cookie": "789",
+ },
+ ],
+ },
+ "schema": "iglu:com.google.ga4/cookies/jsonschema/1-0-0",
+ },
+]
+`;
+
+exports[`GA Cookies plugin Correctly returns values for GA4 cookies with cookie prefix 1`] = `
+Array [
+ Object {
+ "data": Object {
+ "_ga": "1234",
+ "cookie_prefix": "test",
+ "session_cookies": Array [
+ Object {
+ "measurement_id": "G-1234",
+ "session_cookie": "567",
+ },
+ ],
+ },
+ "schema": "iglu:com.google.ga4/cookies/jsonschema/1-0-0",
+ },
+]
+`;
+
+exports[`GA Cookies plugin Does not add any additional GA4 context when GA4 cookies are not detected 1`] = `
+Array [
+ Object {
+ "data": Object {},
+ "schema": "iglu:com.google.analytics/cookies/jsonschema/1-0-0",
+ },
+]
+`;
+
+exports[`GA Cookies plugin Only returns values for GA4 user cookies without measurement id/s and GA4 enabled 1`] = `
+Array [
+ Object {
+ "data": Object {
+ "_ga": "1234",
+ "cookie_prefix": undefined,
+ "session_cookies": undefined,
+ },
+ "schema": "iglu:com.google.ga4/cookies/jsonschema/1-0-0",
+ },
+]
+`;
+
+exports[`GA Cookies plugin Returns separate contexts for GA4 enabled setup with different cookie_prefix options 1`] = `
+Array [
+ Object {
+ "data": Object {
+ "_ga": "1234",
+ "cookie_prefix": undefined,
+ "session_cookies": undefined,
+ },
+ "schema": "iglu:com.google.ga4/cookies/jsonschema/1-0-0",
+ },
+ Object {
+ "data": Object {
+ "_ga": "890",
+ "cookie_prefix": "test",
+ "session_cookies": undefined,
+ },
+ "schema": "iglu:com.google.ga4/cookies/jsonschema/1-0-0",
+ },
+]
+`;
+
+exports[`GA Cookies plugin Returns separate contexts for GA4 enabled setup with different cookie_prefix options and measurement ids 1`] = `
+Array [
+ Object {
+ "data": Object {
+ "_ga": "1234",
+ "cookie_prefix": undefined,
+ "session_cookies": Array [
+ Object {
+ "measurement_id": "G-1234",
+ "session_cookie": "567",
+ },
+ ],
+ },
+ "schema": "iglu:com.google.ga4/cookies/jsonschema/1-0-0",
+ },
+ Object {
+ "data": Object {
+ "_ga": "890",
+ "cookie_prefix": "test",
+ "session_cookies": Array [
+ Object {
+ "measurement_id": "G-567",
+ "session_cookie": "098",
+ },
+ ],
+ },
+ "schema": "iglu:com.google.ga4/cookies/jsonschema/1-0-0",
+ },
+]
+`;
+
+exports[`GA Cookies plugin Returns values for GA4 cookies and Universal Analytics cookies 1`] = `
+Array [
+ Object {
+ "data": Object {
+ "__utma": "567",
+ "_ga": "1234",
+ },
+ "schema": "iglu:com.google.analytics/cookies/jsonschema/1-0-0",
+ },
+ Object {
+ "data": Object {
+ "_ga": "1234",
+ "cookie_prefix": undefined,
+ "session_cookies": Array [
+ Object {
+ "measurement_id": "G-1234",
+ "session_cookie": "567",
+ },
+ ],
+ },
+ "schema": "iglu:com.google.ga4/cookies/jsonschema/1-0-0",
+ },
+]
+`;
+
+exports[`GA Cookies plugin Returns values for GA4 cookies and not Universal Analytics cookies 1`] = `
+Array [
+ Object {
+ "data": Object {
+ "_ga": "1234",
+ "cookie_prefix": undefined,
+ "session_cookies": Array [
+ Object {
+ "measurement_id": "G-1234",
+ "session_cookie": "567",
+ },
+ ],
+ },
+ "schema": "iglu:com.google.ga4/cookies/jsonschema/1-0-0",
+ },
+]
+`;
+
+exports[`GA Cookies plugin Returns values for Universal Analytics cookies by default 1`] = `
+Array [
+ Object {
+ "data": Object {
+ "__utma": "567",
+ "_ga": "1234",
+ },
+ "schema": "iglu:com.google.analytics/cookies/jsonschema/1-0-0",
+ },
+]
+`;
diff --git a/plugins/browser-plugin-ga-cookies/test/ga-cookies.test.ts b/plugins/browser-plugin-ga-cookies/test/ga-cookies.test.ts
new file mode 100644
index 000000000..6e82c5ec3
--- /dev/null
+++ b/plugins/browser-plugin-ga-cookies/test/ga-cookies.test.ts
@@ -0,0 +1,175 @@
+import { buildLinkClick, trackerCore } from '@snowplow/tracker-core';
+import { GaCookiesPlugin } from '../src';
+
+describe('GA Cookies plugin', () => {
+ let cookieJar: string;
+
+ beforeAll(() => {
+ cookieJar = '';
+ jest.spyOn(document, 'cookie', 'set').mockImplementation((cookie) => {
+ cookieJar += cookie;
+ });
+ jest.spyOn(document, 'cookie', 'get').mockImplementation(() => cookieJar);
+ });
+
+ afterEach(() => {
+ cookieJar = '';
+ jest.clearAllTimers();
+ });
+
+ afterAll(() => {
+ jest.clearAllMocks();
+ });
+
+ it('Returns values for Universal Analytics cookies by default', (done) => {
+ const containerId = '1234';
+ document.cookie = `_ga=1234; __utma=567; _ga_${containerId}=567;`;
+ const core = trackerCore({
+ corePlugins: [GaCookiesPlugin()],
+ callback: (payloadBuilder) => {
+ const { data } = payloadBuilder.getJson()[1].json;
+ expect(data).toMatchSnapshot();
+ done();
+ },
+ });
+
+ core.track(buildLinkClick({ targetUrl: 'https://example.com' }));
+ });
+
+ it('Does not add any additional GA4 context when GA4 cookies are not detected', (done) => {
+ /* In v3, an empty Universal Analytics cookies context was added to the contexts array. */
+ const containerId = '1234';
+ const measurementId = `G-${containerId}`;
+ document.cookie = ``;
+ const core = trackerCore({
+ corePlugins: [GaCookiesPlugin({ ga4: true, ga4MeasurementId: measurementId })],
+ callback: (payloadBuilder) => {
+ const { data } = payloadBuilder.getJson()[1].json;
+ expect(data).toMatchSnapshot();
+ done();
+ },
+ });
+
+ core.track(buildLinkClick({ targetUrl: 'https://example.com' }));
+ });
+
+ it('Returns values for GA4 cookies and Universal Analytics cookies', (done) => {
+ const containerId = '1234';
+ const measurementId = `G-${containerId}`;
+ document.cookie = `_ga=1234; __utma=567; _ga_${containerId}=567;`;
+ const core = trackerCore({
+ corePlugins: [GaCookiesPlugin({ ga4: true, ga4MeasurementId: measurementId })],
+ callback: (payloadBuilder) => {
+ const { data } = payloadBuilder.getJson()[1].json;
+ expect(data).toMatchSnapshot();
+ done();
+ },
+ });
+
+ core.track(buildLinkClick({ targetUrl: 'https://example.com' }));
+ });
+
+ it('Returns values for GA4 cookies and not Universal Analytics cookies', (done) => {
+ const containerId = '1234';
+ const measurementId = `G-${containerId}`;
+ document.cookie = `_ga=1234; __utma=567; _ga_${containerId}=567;`;
+ const core = trackerCore({
+ corePlugins: [GaCookiesPlugin({ ua: false, ga4: true, ga4MeasurementId: measurementId })],
+ callback: (payloadBuilder) => {
+ const { data } = payloadBuilder.getJson()[1].json;
+ expect(data).toMatchSnapshot();
+ done();
+ },
+ });
+
+ core.track(buildLinkClick({ targetUrl: 'https://example.com' }));
+ });
+
+ it('Correctly returns values for GA4 cookies for multiple measurement ids', (done) => {
+ const containerIdFoo = '1234';
+ const containerIdBar = '5678';
+ const measurementIds = [`G-${containerIdFoo}`, `G-${containerIdBar}`];
+ document.cookie = `_ga=1234; __utma=567; _ga_${containerIdFoo}=567; _ga_${containerIdBar}=789;`;
+ const core = trackerCore({
+ corePlugins: [GaCookiesPlugin({ ua: false, ga4: true, ga4MeasurementId: measurementIds })],
+ callback: (payloadBuilder) => {
+ const { data } = payloadBuilder.getJson()[1].json;
+ expect(data).toMatchSnapshot();
+ done();
+ },
+ });
+
+ core.track(buildLinkClick({ targetUrl: 'https://example.com' }));
+ });
+
+ it('Correctly returns values for GA4 cookies with cookie prefix', (done) => {
+ const containerId = '1234';
+ const measurementId = `G-${containerId}`;
+ const cookiePrefix = 'test';
+ document.cookie = `${cookiePrefix}_ga=1234; __utma=567; ${cookiePrefix}_ga_${containerId}=567;`;
+ const core = trackerCore({
+ corePlugins: [GaCookiesPlugin({ ua: false, ga4: true, ga4MeasurementId: measurementId, cookiePrefix })],
+ callback: (payloadBuilder) => {
+ const { data } = payloadBuilder.getJson()[1].json;
+ expect(data).toMatchSnapshot();
+ done();
+ },
+ });
+
+ core.track(buildLinkClick({ targetUrl: 'https://example.com' }));
+ });
+
+ it('Only returns values for GA4 user cookies without measurement id/s and GA4 enabled', (done) => {
+ const containerId = '1234';
+ document.cookie = `_ga=1234; __utma=567; _ga_${containerId}=567;`;
+ const core = trackerCore({
+ corePlugins: [GaCookiesPlugin({ ua: false, ga4: true })],
+ callback: (payloadBuilder) => {
+ const { data } = payloadBuilder.getJson()[1].json;
+ expect(data).toMatchSnapshot();
+ done();
+ },
+ });
+
+ core.track(buildLinkClick({ targetUrl: 'https://example.com' }));
+ });
+
+ it('Returns separate contexts for GA4 enabled setup with different cookie_prefix options', (done) => {
+ const containerId = '1234';
+ const cookiePrefix = 'test';
+ /* gtag.js with the { cookie_prefix } option will create {cookie_prefix}_ga and {cookie_prefix}_ga_{containerId} cookies. */
+ document.cookie = `_ga=1234; __utma=567; _ga_${containerId}=567; ${cookiePrefix}_ga=890;`;
+ const core = trackerCore({
+ corePlugins: [GaCookiesPlugin({ ua: false, ga4: true, cookiePrefix })],
+ callback: (payloadBuilder) => {
+ const { data } = payloadBuilder.getJson()[1].json;
+ expect(data).toMatchSnapshot();
+ done();
+ },
+ });
+
+ core.track(buildLinkClick({ targetUrl: 'https://example.com' }));
+ });
+
+ it('Returns separate contexts for GA4 enabled setup with different cookie_prefix options and measurement ids', (done) => {
+ const containerId = '1234';
+ const measurementId = `G-${containerId}`;
+ const prefixContainerId = '567';
+ const prefixMeasurementId = `G-${prefixContainerId}`;
+ const cookiePrefix = 'test';
+ /* gtag.js with the { cookie_prefix } option will create {cookie_prefix}_ga and {cookie_prefix}_ga_{containerId} cookies. */
+ document.cookie = `_ga=1234; __utma=567; _ga_${containerId}=567; ${cookiePrefix}_ga=890; ${cookiePrefix}_ga_${prefixContainerId}=098`;
+ const core = trackerCore({
+ corePlugins: [
+ GaCookiesPlugin({ ua: false, ga4: true, cookiePrefix, ga4MeasurementId: [measurementId, prefixMeasurementId] }),
+ ],
+ callback: (payloadBuilder) => {
+ const { data } = payloadBuilder.getJson()[1].json;
+ expect(data).toMatchSnapshot();
+ done();
+ },
+ });
+
+ core.track(buildLinkClick({ targetUrl: 'https://example.com' }));
+ });
+});
diff --git a/trackers/javascript-tracker/src/features.ts b/trackers/javascript-tracker/src/features.ts
index 6a2932a75..c576696ce 100644
--- a/trackers/javascript-tracker/src/features.ts
+++ b/trackers/javascript-tracker/src/features.ts
@@ -121,7 +121,8 @@ export function Plugins(configuration: JavaScriptTrackerConfiguration) {
if (plugins.gaCookies && gaCookies) {
const { GaCookiesPlugin, ...apiMethods } = GaCookies;
- activatedPlugins.push([GaCookiesPlugin(), apiMethods]);
+ const gaCookiesPlugin = typeof gaCookies === 'object' ? GaCookiesPlugin(gaCookies) : GaCookiesPlugin();
+ activatedPlugins.push([gaCookiesPlugin, apiMethods]);
}
if (plugins.consent) {
@@ -208,7 +209,7 @@ export function Plugins(configuration: JavaScriptTrackerConfiguration) {
const { VimeoTrackingPlugin, ...apiMethods } = VimeoTracking;
activatedPlugins.push([VimeoTrackingPlugin(), apiMethods]);
}
-
+
if (plugins.privacySandbox) {
const { PrivacySandboxPlugin, ...apiMethods } = PrivacySandbox;
activatedPlugins.push([PrivacySandboxPlugin(), apiMethods]);
From a7131c32213c0423d8e85fc69af5242d24d5c78a Mon Sep 17 00:00:00 2001
From: Peter Perlepes
Date: Tue, 14 Nov 2023 15:53:12 +0200
Subject: [PATCH 028/341] Add CommonEventProperties type argument (close #1249)
#1254
---
...mon-event-properties-type-arg_2023-10-11-10-45.json | 10 ++++++++++
...mon-event-properties-type-arg_2023-10-11-10-22.json | 10 ++++++++++
libraries/tracker-core/src/core.ts | 4 ++--
trackers/browser-tracker/docs/browser-tracker.api.md | 4 ++--
4 files changed, 24 insertions(+), 4 deletions(-)
create mode 100644 common/changes/@snowplow/browser-tracker/feature-1249-common-event-properties-type-arg_2023-10-11-10-45.json
create mode 100644 common/changes/@snowplow/tracker-core/feature-1249-common-event-properties-type-arg_2023-10-11-10-22.json
diff --git a/common/changes/@snowplow/browser-tracker/feature-1249-common-event-properties-type-arg_2023-10-11-10-45.json b/common/changes/@snowplow/browser-tracker/feature-1249-common-event-properties-type-arg_2023-10-11-10-45.json
new file mode 100644
index 000000000..da9cef551
--- /dev/null
+++ b/common/changes/@snowplow/browser-tracker/feature-1249-common-event-properties-type-arg_2023-10-11-10-45.json
@@ -0,0 +1,10 @@
+{
+ "changes": [
+ {
+ "packageName": "@snowplow/browser-tracker",
+ "comment": "Add CommonEventProperties type argument",
+ "type": "none"
+ }
+ ],
+ "packageName": "@snowplow/browser-tracker"
+}
\ No newline at end of file
diff --git a/common/changes/@snowplow/tracker-core/feature-1249-common-event-properties-type-arg_2023-10-11-10-22.json b/common/changes/@snowplow/tracker-core/feature-1249-common-event-properties-type-arg_2023-10-11-10-22.json
new file mode 100644
index 000000000..bdb8e0495
--- /dev/null
+++ b/common/changes/@snowplow/tracker-core/feature-1249-common-event-properties-type-arg_2023-10-11-10-22.json
@@ -0,0 +1,10 @@
+{
+ "changes": [
+ {
+ "packageName": "@snowplow/tracker-core",
+ "comment": "Add CommonEventProperties type argument",
+ "type": "none"
+ }
+ ],
+ "packageName": "@snowplow/tracker-core"
+}
\ No newline at end of file
diff --git a/libraries/tracker-core/src/core.ts b/libraries/tracker-core/src/core.ts
index 4a37e7f16..6bb8e277c 100644
--- a/libraries/tracker-core/src/core.ts
+++ b/libraries/tracker-core/src/core.ts
@@ -119,9 +119,9 @@ function getTimestamp(timestamp?: Timestamp | null): TimestampPayload {
}
/** Additional data points to set when tracking an event */
-export interface CommonEventProperties {
+export interface CommonEventProperties> {
/** Add context to an event by setting an Array of Self Describing JSON */
- context?: Array | null;
+ context?: Array> | null;
/** Set the true timestamp or overwrite the device sent timestamp on an event */
timestamp?: Timestamp | null;
}
diff --git a/trackers/browser-tracker/docs/browser-tracker.api.md b/trackers/browser-tracker/docs/browser-tracker.api.md
index 4328b687e..f064fc99b 100644
--- a/trackers/browser-tracker/docs/browser-tracker.api.md
+++ b/trackers/browser-tracker/docs/browser-tracker.api.md
@@ -142,8 +142,8 @@ export interface ClientSession extends Record {
}
// @public
-export interface CommonEventProperties {
- context?: Array | null;
+export interface CommonEventProperties> {
+ context?: Array> | null;
// Warning: (ae-forgotten-export) The symbol "Timestamp" needs to be exported by the entry point index.module.d.ts
timestamp?: Timestamp | null;
}
From 77ea93c36bfc0eb2328a0bef46d8d9b0a6f6222d Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Tue, 14 Nov 2023 17:58:27 +0000
Subject: [PATCH 029/341] Update changelogs [skip ci]
---
...sue-1264_client_hints_2023-11-11-11-25.json | 10 ----------
...-ga4-cookies-addition_2023-08-08-14-04.json | 10 ----------
...tatus-codes-under-200_2023-10-20-16-20.json | 10 ----------
..._bump_browser_context_2023-10-25-12-15.json | 10 ----------
...t-properties-type-arg_2023-10-11-10-45.json | 10 ----------
...-failure-retry-option_2023-10-23-14-24.json | 10 ----------
...-failure-retry-option_2023-10-23-14-29.json | 10 ----------
...-ga4-cookies-addition_2023-08-14-14-18.json | 10 ----------
...t-properties-type-arg_2023-10-11-10-22.json | 10 ----------
libraries/browser-tracker-core/CHANGELOG.json | 15 +++++++++++++++
libraries/browser-tracker-core/CHANGELOG.md | 10 +++++++++-
libraries/tracker-core/CHANGELOG.json | 12 ++++++++++++
libraries/tracker-core/CHANGELOG.md | 9 ++++++++-
.../browser-plugin-ad-tracking/CHANGELOG.json | 6 ++++++
.../browser-plugin-ad-tracking/CHANGELOG.md | 7 ++++++-
.../CHANGELOG.json | 6 ++++++
.../CHANGELOG.md | 7 ++++++-
.../browser-plugin-client-hints/CHANGELOG.json | 12 ++++++++++++
.../browser-plugin-client-hints/CHANGELOG.md | 9 ++++++++-
plugins/browser-plugin-consent/CHANGELOG.json | 6 ++++++
plugins/browser-plugin-consent/CHANGELOG.md | 7 ++++++-
plugins/browser-plugin-debugger/CHANGELOG.json | 6 ++++++
plugins/browser-plugin-debugger/CHANGELOG.md | 7 ++++++-
.../browser-plugin-ecommerce/CHANGELOG.json | 6 ++++++
plugins/browser-plugin-ecommerce/CHANGELOG.md | 7 ++++++-
.../CHANGELOG.json | 6 ++++++
.../CHANGELOG.md | 7 ++++++-
.../CHANGELOG.json | 6 ++++++
.../CHANGELOG.md | 7 ++++++-
.../CHANGELOG.json | 6 ++++++
.../browser-plugin-error-tracking/CHANGELOG.md | 7 ++++++-
.../browser-plugin-focalmeter/CHANGELOG.json | 6 ++++++
plugins/browser-plugin-focalmeter/CHANGELOG.md | 7 ++++++-
.../CHANGELOG.json | 6 ++++++
.../browser-plugin-form-tracking/CHANGELOG.md | 7 ++++++-
.../browser-plugin-ga-cookies/CHANGELOG.json | 12 ++++++++++++
plugins/browser-plugin-ga-cookies/CHANGELOG.md | 9 ++++++++-
.../browser-plugin-geolocation/CHANGELOG.json | 6 ++++++
.../browser-plugin-geolocation/CHANGELOG.md | 7 ++++++-
.../CHANGELOG.json | 6 ++++++
.../CHANGELOG.md | 7 ++++++-
.../CHANGELOG.json | 6 ++++++
.../browser-plugin-media-tracking/CHANGELOG.md | 7 ++++++-
plugins/browser-plugin-media/CHANGELOG.json | 6 ++++++
plugins/browser-plugin-media/CHANGELOG.md | 7 ++++++-
.../browser-plugin-optimizely-x/CHANGELOG.json | 6 ++++++
.../browser-plugin-optimizely-x/CHANGELOG.md | 7 ++++++-
.../browser-plugin-optimizely/CHANGELOG.json | 6 ++++++
plugins/browser-plugin-optimizely/CHANGELOG.md | 7 ++++++-
.../CHANGELOG.json | 6 ++++++
.../CHANGELOG.md | 7 ++++++-
.../CHANGELOG.json | 6 ++++++
.../CHANGELOG.md | 7 ++++++-
.../CHANGELOG.json | 6 ++++++
.../CHANGELOG.md | 7 ++++++-
.../CHANGELOG.json | 6 ++++++
.../browser-plugin-site-tracking/CHANGELOG.md | 7 ++++++-
.../CHANGELOG.json | 6 ++++++
.../CHANGELOG.md | 7 ++++++-
plugins/browser-plugin-timezone/CHANGELOG.json | 6 ++++++
plugins/browser-plugin-timezone/CHANGELOG.md | 7 ++++++-
.../CHANGELOG.json | 6 ++++++
.../browser-plugin-vimeo-tracking/CHANGELOG.md | 7 ++++++-
.../browser-plugin-web-vitals/CHANGELOG.json | 6 ++++++
plugins/browser-plugin-web-vitals/CHANGELOG.md | 7 ++++++-
.../CHANGELOG.json | 6 ++++++
.../CHANGELOG.md | 7 ++++++-
trackers/browser-tracker/CHANGELOG.json | 18 ++++++++++++++++++
trackers/browser-tracker/CHANGELOG.md | 11 ++++++++++-
trackers/javascript-tracker/CHANGELOG.json | 12 ++++++++++++
trackers/javascript-tracker/CHANGELOG.md | 9 ++++++++-
trackers/node-tracker/CHANGELOG.json | 6 ++++++
trackers/node-tracker/CHANGELOG.md | 7 ++++++-
73 files changed, 444 insertions(+), 122 deletions(-)
delete mode 100644 common/changes/@snowplow/browser-plugin-client-hints/issue-1264_client_hints_2023-11-11-11-25.json
delete mode 100644 common/changes/@snowplow/browser-plugin-ga-cookies/feature-ga-cookies-plugin-ga4-cookies-addition_2023-08-08-14-04.json
delete mode 100644 common/changes/@snowplow/browser-tracker-core/issue-1244-consider-status-codes-under-200_2023-10-20-16-20.json
delete mode 100644 common/changes/@snowplow/browser-tracker-core/issue-1260_bump_browser_context_2023-10-25-12-15.json
delete mode 100644 common/changes/@snowplow/browser-tracker/feature-1249-common-event-properties-type-arg_2023-10-11-10-45.json
delete mode 100644 common/changes/@snowplow/browser-tracker/issue-1248-send-failure-retry-option_2023-10-23-14-24.json
delete mode 100644 common/changes/@snowplow/browser-tracker/issue-1248-send-failure-retry-option_2023-10-23-14-29.json
delete mode 100644 common/changes/@snowplow/javascript-tracker/feature-1225-ga-cookies-plugin-ga4-cookies-addition_2023-08-14-14-18.json
delete mode 100644 common/changes/@snowplow/tracker-core/feature-1249-common-event-properties-type-arg_2023-10-11-10-22.json
diff --git a/common/changes/@snowplow/browser-plugin-client-hints/issue-1264_client_hints_2023-11-11-11-25.json b/common/changes/@snowplow/browser-plugin-client-hints/issue-1264_client_hints_2023-11-11-11-25.json
deleted file mode 100644
index e4a5135cf..000000000
--- a/common/changes/@snowplow/browser-plugin-client-hints/issue-1264_client_hints_2023-11-11-11-25.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "changes": [
- {
- "packageName": "@snowplow/browser-plugin-client-hints",
- "comment": "Drop invalid client hints",
- "type": "none"
- }
- ],
- "packageName": "@snowplow/browser-plugin-client-hints"
-}
\ No newline at end of file
diff --git a/common/changes/@snowplow/browser-plugin-ga-cookies/feature-ga-cookies-plugin-ga4-cookies-addition_2023-08-08-14-04.json b/common/changes/@snowplow/browser-plugin-ga-cookies/feature-ga-cookies-plugin-ga4-cookies-addition_2023-08-08-14-04.json
deleted file mode 100644
index 7273f3046..000000000
--- a/common/changes/@snowplow/browser-plugin-ga-cookies/feature-ga-cookies-plugin-ga4-cookies-addition_2023-08-08-14-04.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "changes": [
- {
- "packageName": "@snowplow/browser-plugin-ga-cookies",
- "comment": "Update to include options for Google Analytics 4 cookies",
- "type": "none"
- }
- ],
- "packageName": "@snowplow/browser-plugin-ga-cookies"
-}
\ No newline at end of file
diff --git a/common/changes/@snowplow/browser-tracker-core/issue-1244-consider-status-codes-under-200_2023-10-20-16-20.json b/common/changes/@snowplow/browser-tracker-core/issue-1244-consider-status-codes-under-200_2023-10-20-16-20.json
deleted file mode 100644
index 8b89f8b54..000000000
--- a/common/changes/@snowplow/browser-tracker-core/issue-1244-consider-status-codes-under-200_2023-10-20-16-20.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "changes": [
- {
- "packageName": "@snowplow/browser-tracker-core",
- "comment": "Consider status codes <200",
- "type": "none"
- }
- ],
- "packageName": "@snowplow/browser-tracker-core"
-}
\ No newline at end of file
diff --git a/common/changes/@snowplow/browser-tracker-core/issue-1260_bump_browser_context_2023-10-25-12-15.json b/common/changes/@snowplow/browser-tracker-core/issue-1260_bump_browser_context_2023-10-25-12-15.json
deleted file mode 100644
index 48cb88901..000000000
--- a/common/changes/@snowplow/browser-tracker-core/issue-1260_bump_browser_context_2023-10-25-12-15.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "changes": [
- {
- "packageName": "@snowplow/browser-tracker-core",
- "comment": "Bump browser_context schema to 2-0-0",
- "type": "none"
- }
- ],
- "packageName": "@snowplow/browser-tracker-core"
-}
\ No newline at end of file
diff --git a/common/changes/@snowplow/browser-tracker/feature-1249-common-event-properties-type-arg_2023-10-11-10-45.json b/common/changes/@snowplow/browser-tracker/feature-1249-common-event-properties-type-arg_2023-10-11-10-45.json
deleted file mode 100644
index da9cef551..000000000
--- a/common/changes/@snowplow/browser-tracker/feature-1249-common-event-properties-type-arg_2023-10-11-10-45.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "changes": [
- {
- "packageName": "@snowplow/browser-tracker",
- "comment": "Add CommonEventProperties type argument",
- "type": "none"
- }
- ],
- "packageName": "@snowplow/browser-tracker"
-}
\ No newline at end of file
diff --git a/common/changes/@snowplow/browser-tracker/issue-1248-send-failure-retry-option_2023-10-23-14-24.json b/common/changes/@snowplow/browser-tracker/issue-1248-send-failure-retry-option_2023-10-23-14-24.json
deleted file mode 100644
index 4a400f6fc..000000000
--- a/common/changes/@snowplow/browser-tracker/issue-1248-send-failure-retry-option_2023-10-23-14-24.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "changes": [
- {
- "packageName": "@snowplow/browser-tracker",
- "comment": "Update API docs with retryFailedRequests",
- "type": "none"
- }
- ],
- "packageName": "@snowplow/browser-tracker"
-}
\ No newline at end of file
diff --git a/common/changes/@snowplow/browser-tracker/issue-1248-send-failure-retry-option_2023-10-23-14-29.json b/common/changes/@snowplow/browser-tracker/issue-1248-send-failure-retry-option_2023-10-23-14-29.json
deleted file mode 100644
index 5fcd9f286..000000000
--- a/common/changes/@snowplow/browser-tracker/issue-1248-send-failure-retry-option_2023-10-23-14-29.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "changes": [
- {
- "packageName": "@snowplow/browser-tracker",
- "comment": "Add retryFailedRequests",
- "type": "none"
- }
- ],
- "packageName": "@snowplow/browser-tracker"
-}
\ No newline at end of file
diff --git a/common/changes/@snowplow/javascript-tracker/feature-1225-ga-cookies-plugin-ga4-cookies-addition_2023-08-14-14-18.json b/common/changes/@snowplow/javascript-tracker/feature-1225-ga-cookies-plugin-ga4-cookies-addition_2023-08-14-14-18.json
deleted file mode 100644
index e3ff286e4..000000000
--- a/common/changes/@snowplow/javascript-tracker/feature-1225-ga-cookies-plugin-ga4-cookies-addition_2023-08-14-14-18.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "changes": [
- {
- "packageName": "@snowplow/javascript-tracker",
- "comment": "Add further options for the gaCookies context",
- "type": "none"
- }
- ],
- "packageName": "@snowplow/javascript-tracker"
-}
\ No newline at end of file
diff --git a/common/changes/@snowplow/tracker-core/feature-1249-common-event-properties-type-arg_2023-10-11-10-22.json b/common/changes/@snowplow/tracker-core/feature-1249-common-event-properties-type-arg_2023-10-11-10-22.json
deleted file mode 100644
index bdb8e0495..000000000
--- a/common/changes/@snowplow/tracker-core/feature-1249-common-event-properties-type-arg_2023-10-11-10-22.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "changes": [
- {
- "packageName": "@snowplow/tracker-core",
- "comment": "Add CommonEventProperties type argument",
- "type": "none"
- }
- ],
- "packageName": "@snowplow/tracker-core"
-}
\ No newline at end of file
diff --git a/libraries/browser-tracker-core/CHANGELOG.json b/libraries/browser-tracker-core/CHANGELOG.json
index 828399fee..a4ff09af1 100644
--- a/libraries/browser-tracker-core/CHANGELOG.json
+++ b/libraries/browser-tracker-core/CHANGELOG.json
@@ -1,6 +1,21 @@
{
"name": "@snowplow/browser-tracker-core",
"entries": [
+ {
+ "version": "3.17.0",
+ "tag": "@snowplow/browser-tracker-core_v3.17.0",
+ "date": "Tue, 14 Nov 2023 17:58:26 GMT",
+ "comments": {
+ "none": [
+ {
+ "comment": "Consider status codes <200"
+ },
+ {
+ "comment": "Bump browser_context schema to 2-0-0"
+ }
+ ]
+ }
+ },
{
"version": "3.16.0",
"tag": "@snowplow/browser-tracker-core_v3.16.0",
diff --git a/libraries/browser-tracker-core/CHANGELOG.md b/libraries/browser-tracker-core/CHANGELOG.md
index fb800840a..8aaec122f 100644
--- a/libraries/browser-tracker-core/CHANGELOG.md
+++ b/libraries/browser-tracker-core/CHANGELOG.md
@@ -1,6 +1,14 @@
# Change Log - @snowplow/browser-tracker-core
-This log was last generated on Mon, 16 Oct 2023 14:58:08 GMT and should not be manually modified.
+This log was last generated on Tue, 14 Nov 2023 17:58:26 GMT and should not be manually modified.
+
+## 3.17.0
+Tue, 14 Nov 2023 17:58:26 GMT
+
+### Updates
+
+- Consider status codes <200
+- Bump browser_context schema to 2-0-0
## 3.16.0
Mon, 16 Oct 2023 14:58:08 GMT
diff --git a/libraries/tracker-core/CHANGELOG.json b/libraries/tracker-core/CHANGELOG.json
index 5ae8b3e2e..829312ffe 100644
--- a/libraries/tracker-core/CHANGELOG.json
+++ b/libraries/tracker-core/CHANGELOG.json
@@ -1,6 +1,18 @@
{
"name": "@snowplow/tracker-core",
"entries": [
+ {
+ "version": "3.17.0",
+ "tag": "@snowplow/tracker-core_v3.17.0",
+ "date": "Tue, 14 Nov 2023 17:58:26 GMT",
+ "comments": {
+ "none": [
+ {
+ "comment": "Add CommonEventProperties type argument"
+ }
+ ]
+ }
+ },
{
"version": "3.16.0",
"tag": "@snowplow/tracker-core_v3.16.0",
diff --git a/libraries/tracker-core/CHANGELOG.md b/libraries/tracker-core/CHANGELOG.md
index 6aba93d0d..040fa978d 100644
--- a/libraries/tracker-core/CHANGELOG.md
+++ b/libraries/tracker-core/CHANGELOG.md
@@ -1,6 +1,13 @@
# Change Log - @snowplow/tracker-core
-This log was last generated on Mon, 16 Oct 2023 14:58:08 GMT and should not be manually modified.
+This log was last generated on Tue, 14 Nov 2023 17:58:26 GMT and should not be manually modified.
+
+## 3.17.0
+Tue, 14 Nov 2023 17:58:26 GMT
+
+### Updates
+
+- Add CommonEventProperties type argument
## 3.16.0
Mon, 16 Oct 2023 14:58:08 GMT
diff --git a/plugins/browser-plugin-ad-tracking/CHANGELOG.json b/plugins/browser-plugin-ad-tracking/CHANGELOG.json
index beecede67..7c1315957 100644
--- a/plugins/browser-plugin-ad-tracking/CHANGELOG.json
+++ b/plugins/browser-plugin-ad-tracking/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-ad-tracking",
"entries": [
+ {
+ "version": "3.17.0",
+ "tag": "@snowplow/browser-plugin-ad-tracking_v3.17.0",
+ "date": "Tue, 14 Nov 2023 17:58:26 GMT",
+ "comments": {}
+ },
{
"version": "3.16.0",
"tag": "@snowplow/browser-plugin-ad-tracking_v3.16.0",
diff --git a/plugins/browser-plugin-ad-tracking/CHANGELOG.md b/plugins/browser-plugin-ad-tracking/CHANGELOG.md
index bd8faf463..6fee35ddc 100644
--- a/plugins/browser-plugin-ad-tracking/CHANGELOG.md
+++ b/plugins/browser-plugin-ad-tracking/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-ad-tracking
-This log was last generated on Mon, 16 Oct 2023 14:58:08 GMT and should not be manually modified.
+This log was last generated on Tue, 14 Nov 2023 17:58:26 GMT and should not be manually modified.
+
+## 3.17.0
+Tue, 14 Nov 2023 17:58:26 GMT
+
+_Version update only_
## 3.16.0
Mon, 16 Oct 2023 14:58:08 GMT
diff --git a/plugins/browser-plugin-browser-features/CHANGELOG.json b/plugins/browser-plugin-browser-features/CHANGELOG.json
index 68d98c2a2..20df0b7d0 100644
--- a/plugins/browser-plugin-browser-features/CHANGELOG.json
+++ b/plugins/browser-plugin-browser-features/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-browser-features",
"entries": [
+ {
+ "version": "3.17.0",
+ "tag": "@snowplow/browser-plugin-browser-features_v3.17.0",
+ "date": "Tue, 14 Nov 2023 17:58:26 GMT",
+ "comments": {}
+ },
{
"version": "3.16.0",
"tag": "@snowplow/browser-plugin-browser-features_v3.16.0",
diff --git a/plugins/browser-plugin-browser-features/CHANGELOG.md b/plugins/browser-plugin-browser-features/CHANGELOG.md
index 88e13827b..ff7365703 100644
--- a/plugins/browser-plugin-browser-features/CHANGELOG.md
+++ b/plugins/browser-plugin-browser-features/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-browser-features
-This log was last generated on Mon, 16 Oct 2023 14:58:08 GMT and should not be manually modified.
+This log was last generated on Tue, 14 Nov 2023 17:58:26 GMT and should not be manually modified.
+
+## 3.17.0
+Tue, 14 Nov 2023 17:58:26 GMT
+
+_Version update only_
## 3.16.0
Mon, 16 Oct 2023 14:58:08 GMT
diff --git a/plugins/browser-plugin-client-hints/CHANGELOG.json b/plugins/browser-plugin-client-hints/CHANGELOG.json
index 90ba29aee..880dfc665 100644
--- a/plugins/browser-plugin-client-hints/CHANGELOG.json
+++ b/plugins/browser-plugin-client-hints/CHANGELOG.json
@@ -1,6 +1,18 @@
{
"name": "@snowplow/browser-plugin-client-hints",
"entries": [
+ {
+ "version": "3.17.0",
+ "tag": "@snowplow/browser-plugin-client-hints_v3.17.0",
+ "date": "Tue, 14 Nov 2023 17:58:26 GMT",
+ "comments": {
+ "none": [
+ {
+ "comment": "Drop invalid client hints"
+ }
+ ]
+ }
+ },
{
"version": "3.16.0",
"tag": "@snowplow/browser-plugin-client-hints_v3.16.0",
diff --git a/plugins/browser-plugin-client-hints/CHANGELOG.md b/plugins/browser-plugin-client-hints/CHANGELOG.md
index 5ddaa5b2f..134a63b1e 100644
--- a/plugins/browser-plugin-client-hints/CHANGELOG.md
+++ b/plugins/browser-plugin-client-hints/CHANGELOG.md
@@ -1,6 +1,13 @@
# Change Log - @snowplow/browser-plugin-client-hints
-This log was last generated on Mon, 16 Oct 2023 14:58:08 GMT and should not be manually modified.
+This log was last generated on Tue, 14 Nov 2023 17:58:26 GMT and should not be manually modified.
+
+## 3.17.0
+Tue, 14 Nov 2023 17:58:26 GMT
+
+### Updates
+
+- Drop invalid client hints
## 3.16.0
Mon, 16 Oct 2023 14:58:08 GMT
diff --git a/plugins/browser-plugin-consent/CHANGELOG.json b/plugins/browser-plugin-consent/CHANGELOG.json
index 4d94def9f..3c4d51266 100644
--- a/plugins/browser-plugin-consent/CHANGELOG.json
+++ b/plugins/browser-plugin-consent/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-consent",
"entries": [
+ {
+ "version": "3.17.0",
+ "tag": "@snowplow/browser-plugin-consent_v3.17.0",
+ "date": "Tue, 14 Nov 2023 17:58:26 GMT",
+ "comments": {}
+ },
{
"version": "3.16.0",
"tag": "@snowplow/browser-plugin-consent_v3.16.0",
diff --git a/plugins/browser-plugin-consent/CHANGELOG.md b/plugins/browser-plugin-consent/CHANGELOG.md
index 1b24d546f..283949292 100644
--- a/plugins/browser-plugin-consent/CHANGELOG.md
+++ b/plugins/browser-plugin-consent/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-consent
-This log was last generated on Mon, 16 Oct 2023 14:58:08 GMT and should not be manually modified.
+This log was last generated on Tue, 14 Nov 2023 17:58:26 GMT and should not be manually modified.
+
+## 3.17.0
+Tue, 14 Nov 2023 17:58:26 GMT
+
+_Version update only_
## 3.16.0
Mon, 16 Oct 2023 14:58:08 GMT
diff --git a/plugins/browser-plugin-debugger/CHANGELOG.json b/plugins/browser-plugin-debugger/CHANGELOG.json
index 1d6914eb4..6e482089e 100644
--- a/plugins/browser-plugin-debugger/CHANGELOG.json
+++ b/plugins/browser-plugin-debugger/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-debugger",
"entries": [
+ {
+ "version": "3.17.0",
+ "tag": "@snowplow/browser-plugin-debugger_v3.17.0",
+ "date": "Tue, 14 Nov 2023 17:58:26 GMT",
+ "comments": {}
+ },
{
"version": "3.16.0",
"tag": "@snowplow/browser-plugin-debugger_v3.16.0",
diff --git a/plugins/browser-plugin-debugger/CHANGELOG.md b/plugins/browser-plugin-debugger/CHANGELOG.md
index 4a3e1a857..cfd8dceb9 100644
--- a/plugins/browser-plugin-debugger/CHANGELOG.md
+++ b/plugins/browser-plugin-debugger/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-debugger
-This log was last generated on Mon, 16 Oct 2023 14:58:08 GMT and should not be manually modified.
+This log was last generated on Tue, 14 Nov 2023 17:58:26 GMT and should not be manually modified.
+
+## 3.17.0
+Tue, 14 Nov 2023 17:58:26 GMT
+
+_Version update only_
## 3.16.0
Mon, 16 Oct 2023 14:58:08 GMT
diff --git a/plugins/browser-plugin-ecommerce/CHANGELOG.json b/plugins/browser-plugin-ecommerce/CHANGELOG.json
index f3dd02145..268e04e6f 100644
--- a/plugins/browser-plugin-ecommerce/CHANGELOG.json
+++ b/plugins/browser-plugin-ecommerce/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-ecommerce",
"entries": [
+ {
+ "version": "3.17.0",
+ "tag": "@snowplow/browser-plugin-ecommerce_v3.17.0",
+ "date": "Tue, 14 Nov 2023 17:58:26 GMT",
+ "comments": {}
+ },
{
"version": "3.16.0",
"tag": "@snowplow/browser-plugin-ecommerce_v3.16.0",
diff --git a/plugins/browser-plugin-ecommerce/CHANGELOG.md b/plugins/browser-plugin-ecommerce/CHANGELOG.md
index 018495162..dfc2cbe2e 100644
--- a/plugins/browser-plugin-ecommerce/CHANGELOG.md
+++ b/plugins/browser-plugin-ecommerce/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-ecommerce
-This log was last generated on Mon, 16 Oct 2023 14:58:08 GMT and should not be manually modified.
+This log was last generated on Tue, 14 Nov 2023 17:58:26 GMT and should not be manually modified.
+
+## 3.17.0
+Tue, 14 Nov 2023 17:58:26 GMT
+
+_Version update only_
## 3.16.0
Mon, 16 Oct 2023 14:58:08 GMT
diff --git a/plugins/browser-plugin-enhanced-consent/CHANGELOG.json b/plugins/browser-plugin-enhanced-consent/CHANGELOG.json
index 74e33fac7..f8fb3ae2e 100644
--- a/plugins/browser-plugin-enhanced-consent/CHANGELOG.json
+++ b/plugins/browser-plugin-enhanced-consent/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-enhanced-consent",
"entries": [
+ {
+ "version": "3.17.0",
+ "tag": "@snowplow/browser-plugin-enhanced-consent_v3.17.0",
+ "date": "Tue, 14 Nov 2023 17:58:26 GMT",
+ "comments": {}
+ },
{
"version": "3.16.0",
"tag": "@snowplow/browser-plugin-enhanced-consent_v3.16.0",
diff --git a/plugins/browser-plugin-enhanced-consent/CHANGELOG.md b/plugins/browser-plugin-enhanced-consent/CHANGELOG.md
index dfcea66ba..130862ea9 100644
--- a/plugins/browser-plugin-enhanced-consent/CHANGELOG.md
+++ b/plugins/browser-plugin-enhanced-consent/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-enhanced-consent
-This log was last generated on Mon, 16 Oct 2023 14:58:08 GMT and should not be manually modified.
+This log was last generated on Tue, 14 Nov 2023 17:58:26 GMT and should not be manually modified.
+
+## 3.17.0
+Tue, 14 Nov 2023 17:58:26 GMT
+
+_Version update only_
## 3.16.0
Mon, 16 Oct 2023 14:58:08 GMT
diff --git a/plugins/browser-plugin-enhanced-ecommerce/CHANGELOG.json b/plugins/browser-plugin-enhanced-ecommerce/CHANGELOG.json
index 4bc290418..2535d6bae 100644
--- a/plugins/browser-plugin-enhanced-ecommerce/CHANGELOG.json
+++ b/plugins/browser-plugin-enhanced-ecommerce/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-enhanced-ecommerce",
"entries": [
+ {
+ "version": "3.17.0",
+ "tag": "@snowplow/browser-plugin-enhanced-ecommerce_v3.17.0",
+ "date": "Tue, 14 Nov 2023 17:58:26 GMT",
+ "comments": {}
+ },
{
"version": "3.16.0",
"tag": "@snowplow/browser-plugin-enhanced-ecommerce_v3.16.0",
diff --git a/plugins/browser-plugin-enhanced-ecommerce/CHANGELOG.md b/plugins/browser-plugin-enhanced-ecommerce/CHANGELOG.md
index 8ccbcaa80..19728327a 100644
--- a/plugins/browser-plugin-enhanced-ecommerce/CHANGELOG.md
+++ b/plugins/browser-plugin-enhanced-ecommerce/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-enhanced-ecommerce
-This log was last generated on Mon, 16 Oct 2023 14:58:08 GMT and should not be manually modified.
+This log was last generated on Tue, 14 Nov 2023 17:58:26 GMT and should not be manually modified.
+
+## 3.17.0
+Tue, 14 Nov 2023 17:58:26 GMT
+
+_Version update only_
## 3.16.0
Mon, 16 Oct 2023 14:58:08 GMT
diff --git a/plugins/browser-plugin-error-tracking/CHANGELOG.json b/plugins/browser-plugin-error-tracking/CHANGELOG.json
index d2b65fdbb..4013cb598 100644
--- a/plugins/browser-plugin-error-tracking/CHANGELOG.json
+++ b/plugins/browser-plugin-error-tracking/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-error-tracking",
"entries": [
+ {
+ "version": "3.17.0",
+ "tag": "@snowplow/browser-plugin-error-tracking_v3.17.0",
+ "date": "Tue, 14 Nov 2023 17:58:26 GMT",
+ "comments": {}
+ },
{
"version": "3.16.0",
"tag": "@snowplow/browser-plugin-error-tracking_v3.16.0",
diff --git a/plugins/browser-plugin-error-tracking/CHANGELOG.md b/plugins/browser-plugin-error-tracking/CHANGELOG.md
index dc22bbbac..e08b28a34 100644
--- a/plugins/browser-plugin-error-tracking/CHANGELOG.md
+++ b/plugins/browser-plugin-error-tracking/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-error-tracking
-This log was last generated on Mon, 16 Oct 2023 14:58:08 GMT and should not be manually modified.
+This log was last generated on Tue, 14 Nov 2023 17:58:26 GMT and should not be manually modified.
+
+## 3.17.0
+Tue, 14 Nov 2023 17:58:26 GMT
+
+_Version update only_
## 3.16.0
Mon, 16 Oct 2023 14:58:08 GMT
diff --git a/plugins/browser-plugin-focalmeter/CHANGELOG.json b/plugins/browser-plugin-focalmeter/CHANGELOG.json
index b25f75995..b1aa00ab5 100644
--- a/plugins/browser-plugin-focalmeter/CHANGELOG.json
+++ b/plugins/browser-plugin-focalmeter/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-focalmeter",
"entries": [
+ {
+ "version": "3.17.0",
+ "tag": "@snowplow/browser-plugin-focalmeter_v3.17.0",
+ "date": "Tue, 14 Nov 2023 17:58:26 GMT",
+ "comments": {}
+ },
{
"version": "3.16.0",
"tag": "@snowplow/browser-plugin-focalmeter_v3.16.0",
diff --git a/plugins/browser-plugin-focalmeter/CHANGELOG.md b/plugins/browser-plugin-focalmeter/CHANGELOG.md
index 1137844eb..a0f431080 100644
--- a/plugins/browser-plugin-focalmeter/CHANGELOG.md
+++ b/plugins/browser-plugin-focalmeter/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-focalmeter
-This log was last generated on Mon, 16 Oct 2023 14:58:08 GMT and should not be manually modified.
+This log was last generated on Tue, 14 Nov 2023 17:58:26 GMT and should not be manually modified.
+
+## 3.17.0
+Tue, 14 Nov 2023 17:58:26 GMT
+
+_Version update only_
## 3.16.0
Mon, 16 Oct 2023 14:58:08 GMT
diff --git a/plugins/browser-plugin-form-tracking/CHANGELOG.json b/plugins/browser-plugin-form-tracking/CHANGELOG.json
index a8caf3bd9..2fe2e91df 100644
--- a/plugins/browser-plugin-form-tracking/CHANGELOG.json
+++ b/plugins/browser-plugin-form-tracking/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-form-tracking",
"entries": [
+ {
+ "version": "3.17.0",
+ "tag": "@snowplow/browser-plugin-form-tracking_v3.17.0",
+ "date": "Tue, 14 Nov 2023 17:58:26 GMT",
+ "comments": {}
+ },
{
"version": "3.16.0",
"tag": "@snowplow/browser-plugin-form-tracking_v3.16.0",
diff --git a/plugins/browser-plugin-form-tracking/CHANGELOG.md b/plugins/browser-plugin-form-tracking/CHANGELOG.md
index 367d30ce9..6bba89c44 100644
--- a/plugins/browser-plugin-form-tracking/CHANGELOG.md
+++ b/plugins/browser-plugin-form-tracking/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-form-tracking
-This log was last generated on Mon, 16 Oct 2023 14:58:08 GMT and should not be manually modified.
+This log was last generated on Tue, 14 Nov 2023 17:58:26 GMT and should not be manually modified.
+
+## 3.17.0
+Tue, 14 Nov 2023 17:58:26 GMT
+
+_Version update only_
## 3.16.0
Mon, 16 Oct 2023 14:58:08 GMT
diff --git a/plugins/browser-plugin-ga-cookies/CHANGELOG.json b/plugins/browser-plugin-ga-cookies/CHANGELOG.json
index 07b158b9f..8f604fb24 100644
--- a/plugins/browser-plugin-ga-cookies/CHANGELOG.json
+++ b/plugins/browser-plugin-ga-cookies/CHANGELOG.json
@@ -1,6 +1,18 @@
{
"name": "@snowplow/browser-plugin-ga-cookies",
"entries": [
+ {
+ "version": "3.17.0",
+ "tag": "@snowplow/browser-plugin-ga-cookies_v3.17.0",
+ "date": "Tue, 14 Nov 2023 17:58:26 GMT",
+ "comments": {
+ "none": [
+ {
+ "comment": "Update to include options for Google Analytics 4 cookies"
+ }
+ ]
+ }
+ },
{
"version": "3.16.0",
"tag": "@snowplow/browser-plugin-ga-cookies_v3.16.0",
diff --git a/plugins/browser-plugin-ga-cookies/CHANGELOG.md b/plugins/browser-plugin-ga-cookies/CHANGELOG.md
index 9cf7fd021..d202c0cc8 100644
--- a/plugins/browser-plugin-ga-cookies/CHANGELOG.md
+++ b/plugins/browser-plugin-ga-cookies/CHANGELOG.md
@@ -1,6 +1,13 @@
# Change Log - @snowplow/browser-plugin-ga-cookies
-This log was last generated on Mon, 16 Oct 2023 14:58:08 GMT and should not be manually modified.
+This log was last generated on Tue, 14 Nov 2023 17:58:26 GMT and should not be manually modified.
+
+## 3.17.0
+Tue, 14 Nov 2023 17:58:26 GMT
+
+### Updates
+
+- Update to include options for Google Analytics 4 cookies
## 3.16.0
Mon, 16 Oct 2023 14:58:08 GMT
diff --git a/plugins/browser-plugin-geolocation/CHANGELOG.json b/plugins/browser-plugin-geolocation/CHANGELOG.json
index 1a9c9807d..077bb4511 100644
--- a/plugins/browser-plugin-geolocation/CHANGELOG.json
+++ b/plugins/browser-plugin-geolocation/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-geolocation",
"entries": [
+ {
+ "version": "3.17.0",
+ "tag": "@snowplow/browser-plugin-geolocation_v3.17.0",
+ "date": "Tue, 14 Nov 2023 17:58:26 GMT",
+ "comments": {}
+ },
{
"version": "3.16.0",
"tag": "@snowplow/browser-plugin-geolocation_v3.16.0",
diff --git a/plugins/browser-plugin-geolocation/CHANGELOG.md b/plugins/browser-plugin-geolocation/CHANGELOG.md
index 51ebbc62c..8009d2dc9 100644
--- a/plugins/browser-plugin-geolocation/CHANGELOG.md
+++ b/plugins/browser-plugin-geolocation/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-geolocation
-This log was last generated on Mon, 16 Oct 2023 14:58:08 GMT and should not be manually modified.
+This log was last generated on Tue, 14 Nov 2023 17:58:26 GMT and should not be manually modified.
+
+## 3.17.0
+Tue, 14 Nov 2023 17:58:26 GMT
+
+_Version update only_
## 3.16.0
Mon, 16 Oct 2023 14:58:08 GMT
diff --git a/plugins/browser-plugin-link-click-tracking/CHANGELOG.json b/plugins/browser-plugin-link-click-tracking/CHANGELOG.json
index 40751bc40..734a4f300 100644
--- a/plugins/browser-plugin-link-click-tracking/CHANGELOG.json
+++ b/plugins/browser-plugin-link-click-tracking/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-link-click-tracking",
"entries": [
+ {
+ "version": "3.17.0",
+ "tag": "@snowplow/browser-plugin-link-click-tracking_v3.17.0",
+ "date": "Tue, 14 Nov 2023 17:58:26 GMT",
+ "comments": {}
+ },
{
"version": "3.16.0",
"tag": "@snowplow/browser-plugin-link-click-tracking_v3.16.0",
diff --git a/plugins/browser-plugin-link-click-tracking/CHANGELOG.md b/plugins/browser-plugin-link-click-tracking/CHANGELOG.md
index bd0343cb3..1a2cbf0a0 100644
--- a/plugins/browser-plugin-link-click-tracking/CHANGELOG.md
+++ b/plugins/browser-plugin-link-click-tracking/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-link-click-tracking
-This log was last generated on Mon, 16 Oct 2023 14:58:08 GMT and should not be manually modified.
+This log was last generated on Tue, 14 Nov 2023 17:58:26 GMT and should not be manually modified.
+
+## 3.17.0
+Tue, 14 Nov 2023 17:58:26 GMT
+
+_Version update only_
## 3.16.0
Mon, 16 Oct 2023 14:58:08 GMT
diff --git a/plugins/browser-plugin-media-tracking/CHANGELOG.json b/plugins/browser-plugin-media-tracking/CHANGELOG.json
index d3ced4f81..33e1dd2ce 100644
--- a/plugins/browser-plugin-media-tracking/CHANGELOG.json
+++ b/plugins/browser-plugin-media-tracking/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-media-tracking",
"entries": [
+ {
+ "version": "3.17.0",
+ "tag": "@snowplow/browser-plugin-media-tracking_v3.17.0",
+ "date": "Tue, 14 Nov 2023 17:58:26 GMT",
+ "comments": {}
+ },
{
"version": "3.16.0",
"tag": "@snowplow/browser-plugin-media-tracking_v3.16.0",
diff --git a/plugins/browser-plugin-media-tracking/CHANGELOG.md b/plugins/browser-plugin-media-tracking/CHANGELOG.md
index 672724506..4a4e19035 100644
--- a/plugins/browser-plugin-media-tracking/CHANGELOG.md
+++ b/plugins/browser-plugin-media-tracking/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-media-tracking
-This log was last generated on Mon, 16 Oct 2023 14:58:08 GMT and should not be manually modified.
+This log was last generated on Tue, 14 Nov 2023 17:58:26 GMT and should not be manually modified.
+
+## 3.17.0
+Tue, 14 Nov 2023 17:58:26 GMT
+
+_Version update only_
## 3.16.0
Mon, 16 Oct 2023 14:58:08 GMT
diff --git a/plugins/browser-plugin-media/CHANGELOG.json b/plugins/browser-plugin-media/CHANGELOG.json
index 68f6fc329..c84f9bb90 100644
--- a/plugins/browser-plugin-media/CHANGELOG.json
+++ b/plugins/browser-plugin-media/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-media",
"entries": [
+ {
+ "version": "3.17.0",
+ "tag": "@snowplow/browser-plugin-media_v3.17.0",
+ "date": "Tue, 14 Nov 2023 17:58:26 GMT",
+ "comments": {}
+ },
{
"version": "3.16.0",
"tag": "@snowplow/browser-plugin-media_v3.16.0",
diff --git a/plugins/browser-plugin-media/CHANGELOG.md b/plugins/browser-plugin-media/CHANGELOG.md
index 403804cae..07210f2be 100644
--- a/plugins/browser-plugin-media/CHANGELOG.md
+++ b/plugins/browser-plugin-media/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-media
-This log was last generated on Mon, 16 Oct 2023 14:58:08 GMT and should not be manually modified.
+This log was last generated on Tue, 14 Nov 2023 17:58:26 GMT and should not be manually modified.
+
+## 3.17.0
+Tue, 14 Nov 2023 17:58:26 GMT
+
+_Version update only_
## 3.16.0
Mon, 16 Oct 2023 14:58:08 GMT
diff --git a/plugins/browser-plugin-optimizely-x/CHANGELOG.json b/plugins/browser-plugin-optimizely-x/CHANGELOG.json
index 0ff6566eb..1ddbffd0f 100644
--- a/plugins/browser-plugin-optimizely-x/CHANGELOG.json
+++ b/plugins/browser-plugin-optimizely-x/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-optimizely-x",
"entries": [
+ {
+ "version": "3.17.0",
+ "tag": "@snowplow/browser-plugin-optimizely-x_v3.17.0",
+ "date": "Tue, 14 Nov 2023 17:58:26 GMT",
+ "comments": {}
+ },
{
"version": "3.16.0",
"tag": "@snowplow/browser-plugin-optimizely-x_v3.16.0",
diff --git a/plugins/browser-plugin-optimizely-x/CHANGELOG.md b/plugins/browser-plugin-optimizely-x/CHANGELOG.md
index e999560d4..6db6afce9 100644
--- a/plugins/browser-plugin-optimizely-x/CHANGELOG.md
+++ b/plugins/browser-plugin-optimizely-x/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-optimizely-x
-This log was last generated on Mon, 16 Oct 2023 14:58:08 GMT and should not be manually modified.
+This log was last generated on Tue, 14 Nov 2023 17:58:26 GMT and should not be manually modified.
+
+## 3.17.0
+Tue, 14 Nov 2023 17:58:26 GMT
+
+_Version update only_
## 3.16.0
Mon, 16 Oct 2023 14:58:08 GMT
diff --git a/plugins/browser-plugin-optimizely/CHANGELOG.json b/plugins/browser-plugin-optimizely/CHANGELOG.json
index 9c9d14cea..3f2c98ba7 100644
--- a/plugins/browser-plugin-optimizely/CHANGELOG.json
+++ b/plugins/browser-plugin-optimizely/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-optimizely",
"entries": [
+ {
+ "version": "3.17.0",
+ "tag": "@snowplow/browser-plugin-optimizely_v3.17.0",
+ "date": "Tue, 14 Nov 2023 17:58:26 GMT",
+ "comments": {}
+ },
{
"version": "3.16.0",
"tag": "@snowplow/browser-plugin-optimizely_v3.16.0",
diff --git a/plugins/browser-plugin-optimizely/CHANGELOG.md b/plugins/browser-plugin-optimizely/CHANGELOG.md
index d2b8cef5d..108d8dc43 100644
--- a/plugins/browser-plugin-optimizely/CHANGELOG.md
+++ b/plugins/browser-plugin-optimizely/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-optimizely
-This log was last generated on Mon, 16 Oct 2023 14:58:08 GMT and should not be manually modified.
+This log was last generated on Tue, 14 Nov 2023 17:58:26 GMT and should not be manually modified.
+
+## 3.17.0
+Tue, 14 Nov 2023 17:58:26 GMT
+
+_Version update only_
## 3.16.0
Mon, 16 Oct 2023 14:58:08 GMT
diff --git a/plugins/browser-plugin-performance-navigation-timing/CHANGELOG.json b/plugins/browser-plugin-performance-navigation-timing/CHANGELOG.json
index 76f585902..6afd161cb 100644
--- a/plugins/browser-plugin-performance-navigation-timing/CHANGELOG.json
+++ b/plugins/browser-plugin-performance-navigation-timing/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-performance-navigation-timing",
"entries": [
+ {
+ "version": "3.17.0",
+ "tag": "@snowplow/browser-plugin-performance-navigation-timing_v3.17.0",
+ "date": "Tue, 14 Nov 2023 17:58:26 GMT",
+ "comments": {}
+ },
{
"version": "3.16.0",
"tag": "@snowplow/browser-plugin-performance-navigation-timing_v3.16.0",
diff --git a/plugins/browser-plugin-performance-navigation-timing/CHANGELOG.md b/plugins/browser-plugin-performance-navigation-timing/CHANGELOG.md
index 3bd8f1a82..9c3cc3c1a 100644
--- a/plugins/browser-plugin-performance-navigation-timing/CHANGELOG.md
+++ b/plugins/browser-plugin-performance-navigation-timing/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-performance-navigation-timing
-This log was last generated on Mon, 16 Oct 2023 14:58:08 GMT and should not be manually modified.
+This log was last generated on Tue, 14 Nov 2023 17:58:26 GMT and should not be manually modified.
+
+## 3.17.0
+Tue, 14 Nov 2023 17:58:26 GMT
+
+_Version update only_
## 3.16.0
Mon, 16 Oct 2023 14:58:08 GMT
diff --git a/plugins/browser-plugin-performance-timing/CHANGELOG.json b/plugins/browser-plugin-performance-timing/CHANGELOG.json
index 90701849a..b3becbcad 100644
--- a/plugins/browser-plugin-performance-timing/CHANGELOG.json
+++ b/plugins/browser-plugin-performance-timing/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-performance-timing",
"entries": [
+ {
+ "version": "3.17.0",
+ "tag": "@snowplow/browser-plugin-performance-timing_v3.17.0",
+ "date": "Tue, 14 Nov 2023 17:58:26 GMT",
+ "comments": {}
+ },
{
"version": "3.16.0",
"tag": "@snowplow/browser-plugin-performance-timing_v3.16.0",
diff --git a/plugins/browser-plugin-performance-timing/CHANGELOG.md b/plugins/browser-plugin-performance-timing/CHANGELOG.md
index be6da19bc..81f6836de 100644
--- a/plugins/browser-plugin-performance-timing/CHANGELOG.md
+++ b/plugins/browser-plugin-performance-timing/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-performance-timing
-This log was last generated on Mon, 16 Oct 2023 14:58:08 GMT and should not be manually modified.
+This log was last generated on Tue, 14 Nov 2023 17:58:26 GMT and should not be manually modified.
+
+## 3.17.0
+Tue, 14 Nov 2023 17:58:26 GMT
+
+_Version update only_
## 3.16.0
Mon, 16 Oct 2023 14:58:08 GMT
diff --git a/plugins/browser-plugin-privacy-sandbox/CHANGELOG.json b/plugins/browser-plugin-privacy-sandbox/CHANGELOG.json
index 54b9aa4ae..81cd4b930 100644
--- a/plugins/browser-plugin-privacy-sandbox/CHANGELOG.json
+++ b/plugins/browser-plugin-privacy-sandbox/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-privacy-sandbox",
"entries": [
+ {
+ "version": "3.17.0",
+ "tag": "@snowplow/browser-plugin-privacy-sandbox_v3.17.0",
+ "date": "Tue, 14 Nov 2023 17:58:26 GMT",
+ "comments": {}
+ },
{
"version": "3.16.0",
"tag": "@snowplow/browser-plugin-privacy-sandbox_v3.16.0",
diff --git a/plugins/browser-plugin-privacy-sandbox/CHANGELOG.md b/plugins/browser-plugin-privacy-sandbox/CHANGELOG.md
index 8d96b4370..e8d2923d9 100644
--- a/plugins/browser-plugin-privacy-sandbox/CHANGELOG.md
+++ b/plugins/browser-plugin-privacy-sandbox/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-privacy-sandbox
-This log was last generated on Mon, 16 Oct 2023 14:58:08 GMT and should not be manually modified.
+This log was last generated on Tue, 14 Nov 2023 17:58:26 GMT and should not be manually modified.
+
+## 3.17.0
+Tue, 14 Nov 2023 17:58:26 GMT
+
+_Version update only_
## 3.16.0
Mon, 16 Oct 2023 14:58:08 GMT
diff --git a/plugins/browser-plugin-site-tracking/CHANGELOG.json b/plugins/browser-plugin-site-tracking/CHANGELOG.json
index 45b140296..e66dfbd5f 100644
--- a/plugins/browser-plugin-site-tracking/CHANGELOG.json
+++ b/plugins/browser-plugin-site-tracking/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-site-tracking",
"entries": [
+ {
+ "version": "3.17.0",
+ "tag": "@snowplow/browser-plugin-site-tracking_v3.17.0",
+ "date": "Tue, 14 Nov 2023 17:58:26 GMT",
+ "comments": {}
+ },
{
"version": "3.16.0",
"tag": "@snowplow/browser-plugin-site-tracking_v3.16.0",
diff --git a/plugins/browser-plugin-site-tracking/CHANGELOG.md b/plugins/browser-plugin-site-tracking/CHANGELOG.md
index b2c0f21aa..792815bda 100644
--- a/plugins/browser-plugin-site-tracking/CHANGELOG.md
+++ b/plugins/browser-plugin-site-tracking/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-site-tracking
-This log was last generated on Mon, 16 Oct 2023 14:58:08 GMT and should not be manually modified.
+This log was last generated on Tue, 14 Nov 2023 17:58:26 GMT and should not be manually modified.
+
+## 3.17.0
+Tue, 14 Nov 2023 17:58:26 GMT
+
+_Version update only_
## 3.16.0
Mon, 16 Oct 2023 14:58:08 GMT
diff --git a/plugins/browser-plugin-snowplow-ecommerce/CHANGELOG.json b/plugins/browser-plugin-snowplow-ecommerce/CHANGELOG.json
index 78e6537a4..c21b6bc00 100644
--- a/plugins/browser-plugin-snowplow-ecommerce/CHANGELOG.json
+++ b/plugins/browser-plugin-snowplow-ecommerce/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-snowplow-ecommerce",
"entries": [
+ {
+ "version": "3.17.0",
+ "tag": "@snowplow/browser-plugin-snowplow-ecommerce_v3.17.0",
+ "date": "Tue, 14 Nov 2023 17:58:26 GMT",
+ "comments": {}
+ },
{
"version": "3.16.0",
"tag": "@snowplow/browser-plugin-snowplow-ecommerce_v3.16.0",
diff --git a/plugins/browser-plugin-snowplow-ecommerce/CHANGELOG.md b/plugins/browser-plugin-snowplow-ecommerce/CHANGELOG.md
index 24a95a9ed..1a48b1b15 100644
--- a/plugins/browser-plugin-snowplow-ecommerce/CHANGELOG.md
+++ b/plugins/browser-plugin-snowplow-ecommerce/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-snowplow-ecommerce
-This log was last generated on Mon, 16 Oct 2023 14:58:08 GMT and should not be manually modified.
+This log was last generated on Tue, 14 Nov 2023 17:58:26 GMT and should not be manually modified.
+
+## 3.17.0
+Tue, 14 Nov 2023 17:58:26 GMT
+
+_Version update only_
## 3.16.0
Mon, 16 Oct 2023 14:58:08 GMT
diff --git a/plugins/browser-plugin-timezone/CHANGELOG.json b/plugins/browser-plugin-timezone/CHANGELOG.json
index f04989af6..356396868 100644
--- a/plugins/browser-plugin-timezone/CHANGELOG.json
+++ b/plugins/browser-plugin-timezone/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-timezone",
"entries": [
+ {
+ "version": "3.17.0",
+ "tag": "@snowplow/browser-plugin-timezone_v3.17.0",
+ "date": "Tue, 14 Nov 2023 17:58:26 GMT",
+ "comments": {}
+ },
{
"version": "3.16.0",
"tag": "@snowplow/browser-plugin-timezone_v3.16.0",
diff --git a/plugins/browser-plugin-timezone/CHANGELOG.md b/plugins/browser-plugin-timezone/CHANGELOG.md
index 56d5bd19c..d00b0adb7 100644
--- a/plugins/browser-plugin-timezone/CHANGELOG.md
+++ b/plugins/browser-plugin-timezone/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-timezone
-This log was last generated on Mon, 16 Oct 2023 14:58:08 GMT and should not be manually modified.
+This log was last generated on Tue, 14 Nov 2023 17:58:26 GMT and should not be manually modified.
+
+## 3.17.0
+Tue, 14 Nov 2023 17:58:26 GMT
+
+_Version update only_
## 3.16.0
Mon, 16 Oct 2023 14:58:08 GMT
diff --git a/plugins/browser-plugin-vimeo-tracking/CHANGELOG.json b/plugins/browser-plugin-vimeo-tracking/CHANGELOG.json
index 76f066ac3..aaab409a9 100644
--- a/plugins/browser-plugin-vimeo-tracking/CHANGELOG.json
+++ b/plugins/browser-plugin-vimeo-tracking/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-vimeo-tracking",
"entries": [
+ {
+ "version": "3.17.0",
+ "tag": "@snowplow/browser-plugin-vimeo-tracking_v3.17.0",
+ "date": "Tue, 14 Nov 2023 17:58:26 GMT",
+ "comments": {}
+ },
{
"version": "3.16.0",
"tag": "@snowplow/browser-plugin-vimeo-tracking_v3.16.0",
diff --git a/plugins/browser-plugin-vimeo-tracking/CHANGELOG.md b/plugins/browser-plugin-vimeo-tracking/CHANGELOG.md
index a1ba1fc95..665229c51 100644
--- a/plugins/browser-plugin-vimeo-tracking/CHANGELOG.md
+++ b/plugins/browser-plugin-vimeo-tracking/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-vimeo-tracking
-This log was last generated on Mon, 16 Oct 2023 14:58:08 GMT and should not be manually modified.
+This log was last generated on Tue, 14 Nov 2023 17:58:26 GMT and should not be manually modified.
+
+## 3.17.0
+Tue, 14 Nov 2023 17:58:26 GMT
+
+_Version update only_
## 3.16.0
Mon, 16 Oct 2023 14:58:08 GMT
diff --git a/plugins/browser-plugin-web-vitals/CHANGELOG.json b/plugins/browser-plugin-web-vitals/CHANGELOG.json
index 3fbf078b5..69c2113fd 100644
--- a/plugins/browser-plugin-web-vitals/CHANGELOG.json
+++ b/plugins/browser-plugin-web-vitals/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-web-vitals",
"entries": [
+ {
+ "version": "3.17.0",
+ "tag": "@snowplow/browser-plugin-web-vitals_v3.17.0",
+ "date": "Tue, 14 Nov 2023 17:58:26 GMT",
+ "comments": {}
+ },
{
"version": "3.16.0",
"tag": "@snowplow/browser-plugin-web-vitals_v3.16.0",
diff --git a/plugins/browser-plugin-web-vitals/CHANGELOG.md b/plugins/browser-plugin-web-vitals/CHANGELOG.md
index 5603ea40c..72b8ba42a 100644
--- a/plugins/browser-plugin-web-vitals/CHANGELOG.md
+++ b/plugins/browser-plugin-web-vitals/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-web-vitals
-This log was last generated on Mon, 16 Oct 2023 14:58:08 GMT and should not be manually modified.
+This log was last generated on Tue, 14 Nov 2023 17:58:26 GMT and should not be manually modified.
+
+## 3.17.0
+Tue, 14 Nov 2023 17:58:26 GMT
+
+_Version update only_
## 3.16.0
Mon, 16 Oct 2023 14:58:08 GMT
diff --git a/plugins/browser-plugin-youtube-tracking/CHANGELOG.json b/plugins/browser-plugin-youtube-tracking/CHANGELOG.json
index 04ef3b205..bd6a910c6 100644
--- a/plugins/browser-plugin-youtube-tracking/CHANGELOG.json
+++ b/plugins/browser-plugin-youtube-tracking/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/browser-plugin-youtube-tracking",
"entries": [
+ {
+ "version": "3.17.0",
+ "tag": "@snowplow/browser-plugin-youtube-tracking_v3.17.0",
+ "date": "Tue, 14 Nov 2023 17:58:26 GMT",
+ "comments": {}
+ },
{
"version": "3.16.0",
"tag": "@snowplow/browser-plugin-youtube-tracking_v3.16.0",
diff --git a/plugins/browser-plugin-youtube-tracking/CHANGELOG.md b/plugins/browser-plugin-youtube-tracking/CHANGELOG.md
index d7612f962..f33052866 100644
--- a/plugins/browser-plugin-youtube-tracking/CHANGELOG.md
+++ b/plugins/browser-plugin-youtube-tracking/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/browser-plugin-youtube-tracking
-This log was last generated on Mon, 16 Oct 2023 14:58:08 GMT and should not be manually modified.
+This log was last generated on Tue, 14 Nov 2023 17:58:26 GMT and should not be manually modified.
+
+## 3.17.0
+Tue, 14 Nov 2023 17:58:26 GMT
+
+_Version update only_
## 3.16.0
Mon, 16 Oct 2023 14:58:08 GMT
diff --git a/trackers/browser-tracker/CHANGELOG.json b/trackers/browser-tracker/CHANGELOG.json
index bfc97e3b0..90329dd47 100644
--- a/trackers/browser-tracker/CHANGELOG.json
+++ b/trackers/browser-tracker/CHANGELOG.json
@@ -1,6 +1,24 @@
{
"name": "@snowplow/browser-tracker",
"entries": [
+ {
+ "version": "3.17.0",
+ "tag": "@snowplow/browser-tracker_v3.17.0",
+ "date": "Tue, 14 Nov 2023 17:58:26 GMT",
+ "comments": {
+ "none": [
+ {
+ "comment": "Add CommonEventProperties type argument"
+ },
+ {
+ "comment": "Update API docs with retryFailedRequests"
+ },
+ {
+ "comment": "Add retryFailedRequests"
+ }
+ ]
+ }
+ },
{
"version": "3.16.0",
"tag": "@snowplow/browser-tracker_v3.16.0",
diff --git a/trackers/browser-tracker/CHANGELOG.md b/trackers/browser-tracker/CHANGELOG.md
index 1aa0da24c..1af46150f 100644
--- a/trackers/browser-tracker/CHANGELOG.md
+++ b/trackers/browser-tracker/CHANGELOG.md
@@ -1,6 +1,15 @@
# Change Log - @snowplow/browser-tracker
-This log was last generated on Mon, 16 Oct 2023 14:58:08 GMT and should not be manually modified.
+This log was last generated on Tue, 14 Nov 2023 17:58:26 GMT and should not be manually modified.
+
+## 3.17.0
+Tue, 14 Nov 2023 17:58:26 GMT
+
+### Updates
+
+- Add CommonEventProperties type argument
+- Update API docs with retryFailedRequests
+- Add retryFailedRequests
## 3.16.0
Mon, 16 Oct 2023 14:58:08 GMT
diff --git a/trackers/javascript-tracker/CHANGELOG.json b/trackers/javascript-tracker/CHANGELOG.json
index 8455da56a..1005df02d 100644
--- a/trackers/javascript-tracker/CHANGELOG.json
+++ b/trackers/javascript-tracker/CHANGELOG.json
@@ -1,6 +1,18 @@
{
"name": "@snowplow/javascript-tracker",
"entries": [
+ {
+ "version": "3.17.0",
+ "tag": "@snowplow/javascript-tracker_v3.17.0",
+ "date": "Tue, 14 Nov 2023 17:58:26 GMT",
+ "comments": {
+ "none": [
+ {
+ "comment": "Add further options for the gaCookies context"
+ }
+ ]
+ }
+ },
{
"version": "3.16.0",
"tag": "@snowplow/javascript-tracker_v3.16.0",
diff --git a/trackers/javascript-tracker/CHANGELOG.md b/trackers/javascript-tracker/CHANGELOG.md
index 14d58d26f..590a9ef83 100644
--- a/trackers/javascript-tracker/CHANGELOG.md
+++ b/trackers/javascript-tracker/CHANGELOG.md
@@ -1,6 +1,13 @@
# Change Log - @snowplow/javascript-tracker
-This log was last generated on Mon, 16 Oct 2023 14:58:08 GMT and should not be manually modified.
+This log was last generated on Tue, 14 Nov 2023 17:58:26 GMT and should not be manually modified.
+
+## 3.17.0
+Tue, 14 Nov 2023 17:58:26 GMT
+
+### Updates
+
+- Add further options for the gaCookies context
## 3.16.0
Mon, 16 Oct 2023 14:58:08 GMT
diff --git a/trackers/node-tracker/CHANGELOG.json b/trackers/node-tracker/CHANGELOG.json
index aff6bdf55..075c030b6 100644
--- a/trackers/node-tracker/CHANGELOG.json
+++ b/trackers/node-tracker/CHANGELOG.json
@@ -1,6 +1,12 @@
{
"name": "@snowplow/node-tracker",
"entries": [
+ {
+ "version": "3.17.0",
+ "tag": "@snowplow/node-tracker_v3.17.0",
+ "date": "Tue, 14 Nov 2023 17:58:26 GMT",
+ "comments": {}
+ },
{
"version": "3.16.0",
"tag": "@snowplow/node-tracker_v3.16.0",
diff --git a/trackers/node-tracker/CHANGELOG.md b/trackers/node-tracker/CHANGELOG.md
index 96a3f599f..1638ffe82 100644
--- a/trackers/node-tracker/CHANGELOG.md
+++ b/trackers/node-tracker/CHANGELOG.md
@@ -1,6 +1,11 @@
# Change Log - @snowplow/node-tracker
-This log was last generated on Mon, 16 Oct 2023 14:58:08 GMT and should not be manually modified.
+This log was last generated on Tue, 14 Nov 2023 17:58:26 GMT and should not be manually modified.
+
+## 3.17.0
+Tue, 14 Nov 2023 17:58:26 GMT
+
+_Version update only_
## 3.16.0
Mon, 16 Oct 2023 14:58:08 GMT
From 75e52723e0fa33999c2aa1b56c1c641387fc82eb Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Tue, 14 Nov 2023 17:58:27 +0000
Subject: [PATCH 030/341] Bump versions [skip ci]
---
common/config/rush/version-policies.json | 2 +-
libraries/browser-tracker-core/package.json | 2 +-
libraries/tracker-core/package.json | 2 +-
plugins/browser-plugin-ad-tracking/package.json | 4 ++--
plugins/browser-plugin-browser-features/package.json | 4 ++--
plugins/browser-plugin-client-hints/package.json | 4 ++--
plugins/browser-plugin-consent/package.json | 4 ++--
plugins/browser-plugin-debugger/package.json | 4 ++--
plugins/browser-plugin-ecommerce/package.json | 4 ++--
plugins/browser-plugin-enhanced-consent/package.json | 4 ++--
plugins/browser-plugin-enhanced-ecommerce/package.json | 4 ++--
plugins/browser-plugin-error-tracking/package.json | 4 ++--
plugins/browser-plugin-focalmeter/package.json | 4 ++--
plugins/browser-plugin-form-tracking/package.json | 4 ++--
plugins/browser-plugin-ga-cookies/package.json | 4 ++--
plugins/browser-plugin-geolocation/package.json | 4 ++--
plugins/browser-plugin-link-click-tracking/package.json | 4 ++--
plugins/browser-plugin-media-tracking/package.json | 4 ++--
plugins/browser-plugin-media/package.json | 4 ++--
plugins/browser-plugin-optimizely-x/package.json | 4 ++--
plugins/browser-plugin-optimizely/package.json | 4 ++--
.../browser-plugin-performance-navigation-timing/package.json | 4 ++--
plugins/browser-plugin-performance-timing/package.json | 4 ++--
plugins/browser-plugin-privacy-sandbox/package.json | 4 ++--
plugins/browser-plugin-site-tracking/package.json | 4 ++--
plugins/browser-plugin-snowplow-ecommerce/package.json | 4 ++--
plugins/browser-plugin-timezone/package.json | 4 ++--
plugins/browser-plugin-vimeo-tracking/package.json | 4 ++--
plugins/browser-plugin-web-vitals/package.json | 4 ++--
plugins/browser-plugin-youtube-tracking/package.json | 4 ++--
trackers/browser-tracker/package.json | 2 +-
trackers/javascript-tracker/package.json | 2 +-
trackers/node-tracker/package.json | 2 +-
33 files changed, 60 insertions(+), 60 deletions(-)
diff --git a/common/config/rush/version-policies.json b/common/config/rush/version-policies.json
index 24536d1eb..ef0229a93 100644
--- a/common/config/rush/version-policies.json
+++ b/common/config/rush/version-policies.json
@@ -33,7 +33,7 @@
* in the current branch. When bumping versions, Rush uses this to determine the next version.
* (The "version" field in package.json is NOT considered.)
*/
- "version": "3.16.0",
+ "version": "3.17.0",
/**
* (Required) The type of bump that will be performed when publishing the next release.
diff --git a/libraries/browser-tracker-core/package.json b/libraries/browser-tracker-core/package.json
index ff76ab25c..edf3ab14b 100644
--- a/libraries/browser-tracker-core/package.json
+++ b/libraries/browser-tracker-core/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-tracker-core",
- "version": "3.16.0",
+ "version": "3.17.0",
"description": "Core functionality for Snowplow Browser trackers",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
diff --git a/libraries/tracker-core/package.json b/libraries/tracker-core/package.json
index 6bc3764c7..20a45bdf8 100644
--- a/libraries/tracker-core/package.json
+++ b/libraries/tracker-core/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/tracker-core",
- "version": "3.16.0",
+ "version": "3.17.0",
"description": "Core functionality for Snowplow JavaScript trackers",
"keywords": [
"tracking",
diff --git a/plugins/browser-plugin-ad-tracking/package.json b/plugins/browser-plugin-ad-tracking/package.json
index 10d4ea616..c599379e8 100644
--- a/plugins/browser-plugin-ad-tracking/package.json
+++ b/plugins/browser-plugin-ad-tracking/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-ad-tracking",
- "version": "3.16.0",
+ "version": "3.17.0",
"description": "Ad tracking for Snowplow",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -50,6 +50,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.16.0"
+ "@snowplow/browser-tracker": "~3.17.0"
}
}
diff --git a/plugins/browser-plugin-browser-features/package.json b/plugins/browser-plugin-browser-features/package.json
index 3d8dbce8f..d83a23666 100644
--- a/plugins/browser-plugin-browser-features/package.json
+++ b/plugins/browser-plugin-browser-features/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-browser-features",
- "version": "3.16.0",
+ "version": "3.17.0",
"description": "Attaches browser features to Snowplow events",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -48,6 +48,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.16.0"
+ "@snowplow/browser-tracker": "~3.17.0"
}
}
diff --git a/plugins/browser-plugin-client-hints/package.json b/plugins/browser-plugin-client-hints/package.json
index cff50908e..4c7da8f18 100644
--- a/plugins/browser-plugin-client-hints/package.json
+++ b/plugins/browser-plugin-client-hints/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-client-hints",
- "version": "3.16.0",
+ "version": "3.17.0",
"description": "Attaches Client Hints to Snowplow events",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -48,6 +48,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.16.0"
+ "@snowplow/browser-tracker": "~3.17.0"
}
}
diff --git a/plugins/browser-plugin-consent/package.json b/plugins/browser-plugin-consent/package.json
index c939e9576..6d65a7941 100644
--- a/plugins/browser-plugin-consent/package.json
+++ b/plugins/browser-plugin-consent/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-consent",
- "version": "3.16.0",
+ "version": "3.17.0",
"description": "Consent and GDPR data for Snowplow events",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -50,6 +50,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.16.0"
+ "@snowplow/browser-tracker": "~3.17.0"
}
}
diff --git a/plugins/browser-plugin-debugger/package.json b/plugins/browser-plugin-debugger/package.json
index 9661c63f3..86345e334 100644
--- a/plugins/browser-plugin-debugger/package.json
+++ b/plugins/browser-plugin-debugger/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-debugger",
- "version": "3.16.0",
+ "version": "3.17.0",
"description": "Debugger for Snowplow",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -50,6 +50,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.16.0"
+ "@snowplow/browser-tracker": "~3.17.0"
}
}
diff --git a/plugins/browser-plugin-ecommerce/package.json b/plugins/browser-plugin-ecommerce/package.json
index cefc89f7c..080e7ce6b 100644
--- a/plugins/browser-plugin-ecommerce/package.json
+++ b/plugins/browser-plugin-ecommerce/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-ecommerce",
- "version": "3.16.0",
+ "version": "3.17.0",
"description": "Ecommerce tracking for Snowplow",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -50,6 +50,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.16.0"
+ "@snowplow/browser-tracker": "~3.17.0"
}
}
diff --git a/plugins/browser-plugin-enhanced-consent/package.json b/plugins/browser-plugin-enhanced-consent/package.json
index 248a4aa0b..f6ba72a7f 100644
--- a/plugins/browser-plugin-enhanced-consent/package.json
+++ b/plugins/browser-plugin-enhanced-consent/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-enhanced-consent",
- "version": "3.16.0",
+ "version": "3.17.0",
"description": "Consent tracking for Snowplow",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
"repository": {
@@ -49,6 +49,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.16.0"
+ "@snowplow/browser-tracker": "~3.17.0"
}
}
diff --git a/plugins/browser-plugin-enhanced-ecommerce/package.json b/plugins/browser-plugin-enhanced-ecommerce/package.json
index 71c0ed960..0f5b9914a 100644
--- a/plugins/browser-plugin-enhanced-ecommerce/package.json
+++ b/plugins/browser-plugin-enhanced-ecommerce/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-enhanced-ecommerce",
- "version": "3.16.0",
+ "version": "3.17.0",
"description": "Enhanced Ecommerce tracking for Snowplow",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -50,6 +50,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.16.0"
+ "@snowplow/browser-tracker": "~3.17.0"
}
}
diff --git a/plugins/browser-plugin-error-tracking/package.json b/plugins/browser-plugin-error-tracking/package.json
index 4f13656fb..62e35b30c 100644
--- a/plugins/browser-plugin-error-tracking/package.json
+++ b/plugins/browser-plugin-error-tracking/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-error-tracking",
- "version": "3.16.0",
+ "version": "3.17.0",
"description": "Error tracking for Snowplow",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -50,6 +50,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.16.0"
+ "@snowplow/browser-tracker": "~3.17.0"
}
}
diff --git a/plugins/browser-plugin-focalmeter/package.json b/plugins/browser-plugin-focalmeter/package.json
index 39da12dbc..f81979b63 100644
--- a/plugins/browser-plugin-focalmeter/package.json
+++ b/plugins/browser-plugin-focalmeter/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-focalmeter",
- "version": "3.16.0",
+ "version": "3.17.0",
"description": "Kantar FocalMeter integration for Snowplow",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -48,6 +48,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.16.0"
+ "@snowplow/browser-tracker": "~3.17.0"
}
}
diff --git a/plugins/browser-plugin-form-tracking/package.json b/plugins/browser-plugin-form-tracking/package.json
index f054213b8..1575439f9 100644
--- a/plugins/browser-plugin-form-tracking/package.json
+++ b/plugins/browser-plugin-form-tracking/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-form-tracking",
- "version": "3.16.0",
+ "version": "3.17.0",
"description": "Form tracking for Snowplow",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -48,6 +48,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.16.0"
+ "@snowplow/browser-tracker": "~3.17.0"
}
}
diff --git a/plugins/browser-plugin-ga-cookies/package.json b/plugins/browser-plugin-ga-cookies/package.json
index 87011a3e5..74ab37343 100644
--- a/plugins/browser-plugin-ga-cookies/package.json
+++ b/plugins/browser-plugin-ga-cookies/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-ga-cookies",
- "version": "3.16.0",
+ "version": "3.17.0",
"description": "Attaches GA cookie data to Snowplow events",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -48,6 +48,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.16.0"
+ "@snowplow/browser-tracker": "~3.17.0"
}
}
diff --git a/plugins/browser-plugin-geolocation/package.json b/plugins/browser-plugin-geolocation/package.json
index 71e79ffd6..bf36a2a8d 100644
--- a/plugins/browser-plugin-geolocation/package.json
+++ b/plugins/browser-plugin-geolocation/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-geolocation",
- "version": "3.16.0",
+ "version": "3.17.0",
"description": "Attaches Geolocation data to Snowplow events",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -48,6 +48,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.16.0"
+ "@snowplow/browser-tracker": "~3.17.0"
}
}
diff --git a/plugins/browser-plugin-link-click-tracking/package.json b/plugins/browser-plugin-link-click-tracking/package.json
index 926ecb918..00905fc09 100644
--- a/plugins/browser-plugin-link-click-tracking/package.json
+++ b/plugins/browser-plugin-link-click-tracking/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-link-click-tracking",
- "version": "3.16.0",
+ "version": "3.17.0",
"description": "Link Click tracking for Snowplow",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -50,6 +50,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.16.0"
+ "@snowplow/browser-tracker": "~3.17.0"
}
}
diff --git a/plugins/browser-plugin-media-tracking/package.json b/plugins/browser-plugin-media-tracking/package.json
index 789512e8a..aa95e18b9 100644
--- a/plugins/browser-plugin-media-tracking/package.json
+++ b/plugins/browser-plugin-media-tracking/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-media-tracking",
- "version": "3.16.0",
+ "version": "3.17.0",
"description": "Audio/Video tracking for Snowplow",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -47,6 +47,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.16.0"
+ "@snowplow/browser-tracker": "~3.17.0"
}
}
diff --git a/plugins/browser-plugin-media/package.json b/plugins/browser-plugin-media/package.json
index 5b061c85f..30f3a9caf 100644
--- a/plugins/browser-plugin-media/package.json
+++ b/plugins/browser-plugin-media/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-media",
- "version": "3.16.0",
+ "version": "3.17.0",
"description": "Snowplow media tracking",
"homepage": "https://github.com/snowplow/snowplow-javascript-tracker",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -50,6 +50,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.16.0"
+ "@snowplow/browser-tracker": "~3.17.0"
}
}
diff --git a/plugins/browser-plugin-optimizely-x/package.json b/plugins/browser-plugin-optimizely-x/package.json
index c36b81e9a..609d87a24 100644
--- a/plugins/browser-plugin-optimizely-x/package.json
+++ b/plugins/browser-plugin-optimizely-x/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-optimizely-x",
- "version": "3.16.0",
+ "version": "3.17.0",
"description": "Attaches OptimizelyX data to Snowplow events",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -48,6 +48,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.16.0"
+ "@snowplow/browser-tracker": "~3.17.0"
}
}
diff --git a/plugins/browser-plugin-optimizely/package.json b/plugins/browser-plugin-optimizely/package.json
index 8dbcccb40..3687d8ac3 100644
--- a/plugins/browser-plugin-optimizely/package.json
+++ b/plugins/browser-plugin-optimizely/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-optimizely",
- "version": "3.16.0",
+ "version": "3.17.0",
"description": "Attaches Optimizely data to Snowplow events",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -48,6 +48,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.16.0"
+ "@snowplow/browser-tracker": "~3.17.0"
}
}
diff --git a/plugins/browser-plugin-performance-navigation-timing/package.json b/plugins/browser-plugin-performance-navigation-timing/package.json
index 533ae94e0..8e4cb74a9 100644
--- a/plugins/browser-plugin-performance-navigation-timing/package.json
+++ b/plugins/browser-plugin-performance-navigation-timing/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-performance-navigation-timing",
- "version": "3.16.0",
+ "version": "3.17.0",
"description": "Attaches Performance Navigation Timing data to Snowplow events",
"homepage": "https://docs.snowplow.io/",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -48,6 +48,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.16.0"
+ "@snowplow/browser-tracker": "~3.17.0"
}
}
diff --git a/plugins/browser-plugin-performance-timing/package.json b/plugins/browser-plugin-performance-timing/package.json
index f60bc0f4a..9eb3278be 100644
--- a/plugins/browser-plugin-performance-timing/package.json
+++ b/plugins/browser-plugin-performance-timing/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-performance-timing",
- "version": "3.16.0",
+ "version": "3.17.0",
"description": "Attaches Performance Timing data to Snowplow events",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -48,6 +48,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.16.0"
+ "@snowplow/browser-tracker": "~3.17.0"
}
}
diff --git a/plugins/browser-plugin-privacy-sandbox/package.json b/plugins/browser-plugin-privacy-sandbox/package.json
index bce009331..8db85d0a2 100644
--- a/plugins/browser-plugin-privacy-sandbox/package.json
+++ b/plugins/browser-plugin-privacy-sandbox/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-privacy-sandbox",
- "version": "3.16.0",
+ "version": "3.17.0",
"description": "Allows for the collection of Privacy Sandbox specific data.",
"homepage": "https://docs.snowplow.io/",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -48,6 +48,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.16.0"
+ "@snowplow/browser-tracker": "~3.17.0"
}
}
diff --git a/plugins/browser-plugin-site-tracking/package.json b/plugins/browser-plugin-site-tracking/package.json
index 5eaf3fb87..14f17cd25 100644
--- a/plugins/browser-plugin-site-tracking/package.json
+++ b/plugins/browser-plugin-site-tracking/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-site-tracking",
- "version": "3.16.0",
+ "version": "3.17.0",
"description": "Site tracking for Snowplow",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -50,6 +50,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.16.0"
+ "@snowplow/browser-tracker": "~3.17.0"
}
}
diff --git a/plugins/browser-plugin-snowplow-ecommerce/package.json b/plugins/browser-plugin-snowplow-ecommerce/package.json
index 44162c6d5..ea13a020d 100644
--- a/plugins/browser-plugin-snowplow-ecommerce/package.json
+++ b/plugins/browser-plugin-snowplow-ecommerce/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-snowplow-ecommerce",
- "version": "3.16.0",
+ "version": "3.17.0",
"description": "Snowplow ecommerce tracking",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -50,6 +50,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.16.0"
+ "@snowplow/browser-tracker": "~3.17.0"
}
}
diff --git a/plugins/browser-plugin-timezone/package.json b/plugins/browser-plugin-timezone/package.json
index 05e3afa6f..cfaacfba3 100644
--- a/plugins/browser-plugin-timezone/package.json
+++ b/plugins/browser-plugin-timezone/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-timezone",
- "version": "3.16.0",
+ "version": "3.17.0",
"description": "Attaches timezone to Snowplow events",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -51,6 +51,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.16.0"
+ "@snowplow/browser-tracker": "~3.17.0"
}
}
diff --git a/plugins/browser-plugin-vimeo-tracking/package.json b/plugins/browser-plugin-vimeo-tracking/package.json
index 29b7f7432..0d967c604 100644
--- a/plugins/browser-plugin-vimeo-tracking/package.json
+++ b/plugins/browser-plugin-vimeo-tracking/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-vimeo-tracking",
- "version": "3.16.0",
+ "version": "3.17.0",
"description": "Vimeo tracking for Snowplow",
"homepage": "https://github.com/snowplow/snowplow-javascript-tracker",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -50,6 +50,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.16.0"
+ "@snowplow/browser-tracker": "~3.17.0"
}
}
diff --git a/plugins/browser-plugin-web-vitals/package.json b/plugins/browser-plugin-web-vitals/package.json
index 72b45dc0c..de0c28de7 100644
--- a/plugins/browser-plugin-web-vitals/package.json
+++ b/plugins/browser-plugin-web-vitals/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-web-vitals",
- "version": "3.16.0",
+ "version": "3.17.0",
"description": "Adds the capability to track web performance metrics categorized as Web Vitals.",
"homepage": "https://github.com/snowplow/snowplow-javascript-tracker",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -49,6 +49,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.16.0"
+ "@snowplow/browser-tracker": "~3.17.0"
}
}
diff --git a/plugins/browser-plugin-youtube-tracking/package.json b/plugins/browser-plugin-youtube-tracking/package.json
index db8556d76..e7d4c0661 100644
--- a/plugins/browser-plugin-youtube-tracking/package.json
+++ b/plugins/browser-plugin-youtube-tracking/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-plugin-youtube-tracking",
- "version": "3.16.0",
+ "version": "3.17.0",
"description": "YouTube tracking for Snowplow",
"homepage": "http://bit.ly/sp-js",
"bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
@@ -48,6 +48,6 @@
"typescript": "~4.6.2"
},
"peerDependencies": {
- "@snowplow/browser-tracker": "~3.16.0"
+ "@snowplow/browser-tracker": "~3.17.0"
}
}
diff --git a/trackers/browser-tracker/package.json b/trackers/browser-tracker/package.json
index a3c846c77..aac5be1e3 100644
--- a/trackers/browser-tracker/package.json
+++ b/trackers/browser-tracker/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/browser-tracker",
- "version": "3.16.0",
+ "version": "3.17.0",
"description": "Browser tracker for Snowplow",
"keywords": [
"tracking",
diff --git a/trackers/javascript-tracker/package.json b/trackers/javascript-tracker/package.json
index 8e30995de..df2fa33ed 100644
--- a/trackers/javascript-tracker/package.json
+++ b/trackers/javascript-tracker/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/javascript-tracker",
- "version": "3.16.0",
+ "version": "3.17.0",
"description": "Web analytics for Snowplow",
"keywords": [
"tracking",
diff --git a/trackers/node-tracker/package.json b/trackers/node-tracker/package.json
index 5a23d8162..8c5d7311b 100644
--- a/trackers/node-tracker/package.json
+++ b/trackers/node-tracker/package.json
@@ -1,6 +1,6 @@
{
"name": "@snowplow/node-tracker",
- "version": "3.16.0",
+ "version": "3.17.0",
"description": "Node tracker for Snowplow",
"keywords": [
"snowplow",
From 5cb4d38311c218ecda944f3a97f4f01b1e471cee Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Tue, 14 Nov 2023 18:01:44 +0000
Subject: [PATCH 031/341] Applying documentation updates.
---
.../markdown/browser-tracker.commoneventproperties.context.md | 2 +-
.../docs/markdown/browser-tracker.commoneventproperties.md | 4 ++--
.../docs/markdown/browser-tracker.trackerconfiguration.md | 1 +
3 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.commoneventproperties.context.md b/trackers/browser-tracker/docs/markdown/browser-tracker.commoneventproperties.context.md
index c038c9cc4..22877ecc2 100644
--- a/trackers/browser-tracker/docs/markdown/browser-tracker.commoneventproperties.context.md
+++ b/trackers/browser-tracker/docs/markdown/browser-tracker.commoneventproperties.context.md
@@ -9,5 +9,5 @@ Add context to an event by setting an Array of Self Describing JSON
Signature:
```typescript
-context?: Array | null;
+context?: Array> | null;
```
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.commoneventproperties.md b/trackers/browser-tracker/docs/markdown/browser-tracker.commoneventproperties.md
index 4cf044323..491fd5645 100644
--- a/trackers/browser-tracker/docs/markdown/browser-tracker.commoneventproperties.md
+++ b/trackers/browser-tracker/docs/markdown/browser-tracker.commoneventproperties.md
@@ -9,13 +9,13 @@ Additional data points to set when tracking an event
Signature:
```typescript
-interface CommonEventProperties
+interface CommonEventProperties>
```
## Properties
| Property | Type | Description |
| --- | --- | --- |
-| [context?](./browser-tracker.commoneventproperties.context.md) | Array<SelfDescribingJson> \| null | (Optional) Add context to an event by setting an Array of Self Describing JSON |
+| [context?](./browser-tracker.commoneventproperties.context.md) | Array<SelfDescribingJson<T>> \| null | (Optional) Add context to an event by setting an Array of Self Describing JSON |
| [timestamp?](./browser-tracker.commoneventproperties.timestamp.md) | Timestamp \| null | (Optional) Set the true timestamp or overwrite the device sent timestamp on an event |
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.trackerconfiguration.md b/trackers/browser-tracker/docs/markdown/browser-tracker.trackerconfiguration.md
index b0f36777d..271caf8f3 100644
--- a/trackers/browser-tracker/docs/markdown/browser-tracker.trackerconfiguration.md
+++ b/trackers/browser-tracker/docs/markdown/browser-tracker.trackerconfiguration.md
@@ -41,6 +41,7 @@ type TrackerConfiguration = {
dontRetryStatusCodes?: number[];
onSessionUpdateCallback?: (updatedSession: ClientSession) => void;
idService?: string;
+ retryFailedRequests?: boolean;
};
```
From ee07554f61e85e758cdf67e3150278c6f2bd4a81 Mon Sep 17 00:00:00 2001
From: Greg Leonard <45019882+greg-el@users.noreply.github.com>
Date: Wed, 4 Oct 2023 19:16:57 +0100
Subject: [PATCH 032/341] Add support for callbacks on failed/successful event
sending (close #1262)
---
.bundlemonrc.json | 2 +-
...ail-success-callback_2023-11-16-12-57.json | 10 +
...ail-success-callback_2023-11-16-12-57.json | 10 +
.../src/tracker/out_queue.ts | 170 ++++++-----
.../browser-tracker-core/src/tracker/types.ts | 62 ++--
.../test/out_queue.test.ts | 281 +++++++++++++++++-
.../test/integration/integration.test.ts | 3 +
7 files changed, 425 insertions(+), 113 deletions(-)
create mode 100644 common/changes/@snowplow/browser-tracker-core/issue-1262-event-fail-success-callback_2023-11-16-12-57.json
create mode 100644 common/changes/@snowplow/javascript-tracker/issue-1262-event-fail-success-callback_2023-11-16-12-57.json
diff --git a/.bundlemonrc.json b/.bundlemonrc.json
index 31ef43ecb..502cd2cd3 100644
--- a/.bundlemonrc.json
+++ b/.bundlemonrc.json
@@ -17,7 +17,7 @@
},
{
"path": "./trackers/javascript-tracker/dist/sp.lite.js",
- "maxSize": "15kb",
+ "maxSize": "15.5kb",
"maxPercentIncrease": 10
},
{
diff --git a/common/changes/@snowplow/browser-tracker-core/issue-1262-event-fail-success-callback_2023-11-16-12-57.json b/common/changes/@snowplow/browser-tracker-core/issue-1262-event-fail-success-callback_2023-11-16-12-57.json
new file mode 100644
index 000000000..88a695ae9
--- /dev/null
+++ b/common/changes/@snowplow/browser-tracker-core/issue-1262-event-fail-success-callback_2023-11-16-12-57.json
@@ -0,0 +1,10 @@
+{
+ "changes": [
+ {
+ "packageName": "@snowplow/browser-tracker-core",
+ "comment": "Add onRequestSuccess and onRequestFailure callbacks",
+ "type": "none"
+ }
+ ],
+ "packageName": "@snowplow/browser-tracker-core"
+}
\ No newline at end of file
diff --git a/common/changes/@snowplow/javascript-tracker/issue-1262-event-fail-success-callback_2023-11-16-12-57.json b/common/changes/@snowplow/javascript-tracker/issue-1262-event-fail-success-callback_2023-11-16-12-57.json
new file mode 100644
index 000000000..3ede5aadd
--- /dev/null
+++ b/common/changes/@snowplow/javascript-tracker/issue-1262-event-fail-success-callback_2023-11-16-12-57.json
@@ -0,0 +1,10 @@
+{
+ "changes": [
+ {
+ "packageName": "@snowplow/javascript-tracker",
+ "comment": "Add onRequestSuccess and onRequestFailure callbacks",
+ "type": "none"
+ }
+ ],
+ "packageName": "@snowplow/javascript-tracker"
+}
\ No newline at end of file
diff --git a/libraries/browser-tracker-core/src/tracker/out_queue.ts b/libraries/browser-tracker-core/src/tracker/out_queue.ts
index 13772d5a6..106a1e4fa 100644
--- a/libraries/browser-tracker-core/src/tracker/out_queue.ts
+++ b/libraries/browser-tracker-core/src/tracker/out_queue.ts
@@ -1,38 +1,9 @@
-/*
- * Copyright (c) 2022 Snowplow Analytics Ltd, 2010 Anthon Pang
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * 3. Neither the name of the copyright holder nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
import { attemptWriteLocalStorage, isString } from '../helpers';
import { SharedState } from '../state';
import { localStorageAccessible } from '../detectors';
import { LOG, Payload } from '@snowplow/tracker-core';
import { PAYLOAD_DATA_SCHEMA } from './schemata';
+import { EventBatch, RequestFailure } from './types';
export interface OutQueue {
enqueueRequest: (request: Payload, url: string) => void;
@@ -65,6 +36,8 @@ export interface OutQueue {
* @param dontRetryStatusCodes – Failure HTTP response status codes from Collector for which sending events should not be retried
* @param idService - Id service full URL. This URL will be added to the queue and will be called using a GET method.
* @param retryFailedRequests - Whether to retry failed requests - Takes precedent over `retryStatusCodes` and `dontRetryStatusCodes`
+ * @param onRequestSuccess - Function called when a request succeeds
+ * @param onRequestFailure - Function called when a request does not succeed
* @returns object OutQueueManager instance
*/
export function OutQueueManager(
@@ -85,7 +58,9 @@ export function OutQueueManager(
retryStatusCodes: number[],
dontRetryStatusCodes: number[],
idService?: string,
- retryFailedRequests: boolean = true
+ retryFailedRequests: boolean = true,
+ onRequestSuccess?: (data: EventBatch) => void,
+ onRequestFailure?: (data: RequestFailure) => void
): OutQueue {
type PostEvent = {
evt: Record;
@@ -237,7 +212,75 @@ export function OutQueueManager(
*/
function sendPostRequestWithoutQueueing(body: PostEvent, configCollectorUrl: string) {
const xhr = initializeXMLHttpRequest(configCollectorUrl, true, false);
- xhr.send(encloseInPayloadDataEnvelope(attachStmToEvent([body.evt])));
+ const batch = attachStmToEvent([body.evt]);
+
+ xhr.onreadystatechange = function () {
+ if (xhr.readyState === 4) {
+ if (isSuccessfulRequest(xhr.status)) {
+ onRequestSuccess?.(batch);
+ } else {
+ onRequestFailure?.({
+ status: xhr.status,
+ message: xhr.statusText,
+ events: batch,
+ willRetry: false,
+ });
+ }
+ }
+ };
+
+ xhr.send(encloseInPayloadDataEnvelope(batch));
+ }
+
+ function removeEventsFromQueue(numberToSend: number): void {
+ for (let deleteCount = 0; deleteCount < numberToSend; deleteCount++) {
+ outQueue.shift();
+ }
+ if (useLocalStorage) {
+ attemptWriteLocalStorage(queueName, JSON.stringify(outQueue.slice(0, maxLocalStorageQueueSize)));
+ }
+ }
+
+ function setXhrCallbacks(xhr: XMLHttpRequest, numberToSend: number, batch: EventBatch) {
+ xhr.onreadystatechange = function () {
+ if (xhr.readyState === 4) {
+ clearTimeout(xhrTimeout);
+ if (isSuccessfulRequest(xhr.status)) {
+ removeEventsFromQueue(numberToSend);
+ onRequestSuccess?.(batch);
+ executeQueue();
+ } else {
+ const willRetry = shouldRetryForStatusCode(xhr.status);
+ if (!willRetry) {
+ LOG.error(`Status ${xhr.status}, will not retry.`);
+ removeEventsFromQueue(numberToSend);
+ }
+ onRequestFailure?.({
+ status: xhr.status,
+ message: xhr.statusText,
+ events: batch,
+ willRetry,
+ });
+
+ executingQueue = false;
+ }
+ }
+ };
+
+ // Time out POST requests after connectionTimeout
+ const xhrTimeout = setTimeout(function () {
+ xhr.abort();
+ if (!retryFailedRequests) {
+ removeEventsFromQueue(numberToSend);
+ }
+ onRequestFailure?.({
+ status: 0,
+ message: 'timeout',
+ events: batch,
+ willRetry: retryFailedRequests,
+ });
+ executingQueue = false;
+ }, connectionTimeout);
}
/*
@@ -350,49 +393,9 @@ export function OutQueueManager(
numberToSend = 1;
}
- // Time out POST requests after connectionTimeout
- const xhrTimeout = setTimeout(function () {
- xhr.abort();
-
- if (!retryFailedRequests) {
- removeEventsFromQueue(numberToSend);
- }
- executingQueue = false;
- }, connectionTimeout);
-
- const removeEventsFromQueue = (numberToSend: number): void => {
- for (let deleteCount = 0; deleteCount < numberToSend; deleteCount++) {
- outQueue.shift();
- }
- if (useLocalStorage) {
- attemptWriteLocalStorage(queueName, JSON.stringify(outQueue.slice(0, maxLocalStorageQueueSize)));
- }
- };
-
- // The events (`numberToSend` of them), have been sent, so we remove them from the outQueue
- // We also call executeQueue() again, to let executeQueue() check if we should keep running through the queue
- const onPostSuccess = (numberToSend: number): void => {
- removeEventsFromQueue(numberToSend);
- executeQueue();
- };
-
- xhr.onreadystatechange = function () {
- if (xhr.readyState === 4) {
- clearTimeout(xhrTimeout);
- if (xhr.status >= 200 && xhr.status < 300) {
- onPostSuccess(numberToSend);
- } else {
- if (!shouldRetryForStatusCode(xhr.status)) {
- LOG.error(`Status ${xhr.status}, will not retry.`);
- removeEventsFromQueue(numberToSend);
- }
- executingQueue = false;
- }
- }
- };
-
if (!postable(outQueue)) {
// If not postable then it's a GET so just send it
+ setXhrCallbacks(xhr, numberToSend, [url]);
xhr.send();
} else {
let batch = outQueue.slice(0, numberToSend);
@@ -418,9 +421,13 @@ export function OutQueueManager(
// When beaconStatus is true, we can't _guarantee_ that it was successful (beacon queues asynchronously)
// but the browser has taken it out of our hands, so we want to flush the queue assuming it will do its job
if (beaconStatus === true) {
- onPostSuccess(numberToSend);
+ removeEventsFromQueue(numberToSend);
+ onRequestSuccess?.(batch);
+ executeQueue();
} else {
- xhr.send(encloseInPayloadDataEnvelope(attachStmToEvent(eventBatch)));
+ const batch = attachStmToEvent(eventBatch);
+ setXhrCallbacks(xhr, numberToSend, batch);
+ xhr.send(encloseInPayloadDataEnvelope(batch));
}
}
}
@@ -458,9 +465,20 @@ export function OutQueueManager(
}
}
+ /**
+ * Determines whether a request was successful, based on its status code
+ * Anything in the 2xx range is considered successful
+ *
+ * @param statusCode The status code of the request
+ * @returns Whether the request was successful
+ */
+ function isSuccessfulRequest(statusCode: number): boolean {
+ return statusCode >= 200 && statusCode < 300;
+ }
+
function shouldRetryForStatusCode(statusCode: number) {
// success, don't retry
- if (statusCode >= 200 && statusCode < 300) {
+ if (isSuccessfulRequest(statusCode)) {
return false;
}
diff --git a/libraries/browser-tracker-core/src/tracker/types.ts b/libraries/browser-tracker-core/src/tracker/types.ts
index 85fd60261..31042b902 100755
--- a/libraries/browser-tracker-core/src/tracker/types.ts
+++ b/libraries/browser-tracker-core/src/tracker/types.ts
@@ -1,33 +1,3 @@
-/*
- * Copyright (c) 2022 Snowplow Analytics Ltd, 2010 Anthon Pang
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * 3. Neither the name of the copyright holder nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
import { BrowserPlugin } from '../plugins';
import {
CommonEventProperties,
@@ -661,3 +631,35 @@ export interface ClientSession extends Record {
*/
firstEventTimestamp: string | null;
}
+
+/**
+ * A collection of GET events which are sent to the collector.
+ * This will be a collection of query strings.
+ */
+export type GetBatch = string[];
+
+/**
+ * A collection of POST events which are sent to the collector.
+ * This will be a collection of JSON objects.
+ */
+export type PostBatch = Record[];
+
+/**
+ * A collection of events which are sent to the collector.
+ * This can either be a collection of query strings or JSON objects.
+ */
+export type EventBatch = GetBatch | PostBatch;
+
+/**
+ * The data that will be available to the `onRequestFailure` callback
+ */
+export type RequestFailure = {
+ /** The batch of events that failed to send */
+ events: EventBatch;
+ /** The status code of the failed request */
+ status?: number;
+ /** The error message of the failed request */
+ message?: string;
+ /** Whether the tracker will retry the request */
+ willRetry: boolean;
+};
diff --git a/libraries/browser-tracker-core/test/out_queue.test.ts b/libraries/browser-tracker-core/test/out_queue.test.ts
index 98f8b6be2..c2550a40c 100644
--- a/libraries/browser-tracker-core/test/out_queue.test.ts
+++ b/libraries/browser-tracker-core/test/out_queue.test.ts
@@ -30,6 +30,7 @@
import { OutQueueManager, OutQueue } from '../src/tracker/out_queue';
import { SharedState } from '../src/state';
+import { EventBatch, RequestFailure } from '../src/tracker/types';
const readPostQueue = () => {
return JSON.parse(
@@ -37,6 +38,15 @@ const readPostQueue = () => {
);
};
+const readGetQueue = () =>
+ JSON.parse(window.localStorage.getItem('snowplowOutQueue_sp_get') ?? fail('Unable to find local storage queue'));
+
+const getQuerystring = (p: object) =>
+ '?' +
+ Object.entries(p)
+ .map(([k, v]) => k + '=' + encodeURIComponent(v))
+ .join('&');
+
describe('OutQueueManager', () => {
const maxQueueSize = 2;
@@ -57,9 +67,10 @@ describe('OutQueueManager', () => {
jest.spyOn(window, 'XMLHttpRequest').mockImplementation(() => xhrMock as XMLHttpRequest);
});
- const respondMockRequest = (status: number) => {
+ const respondMockRequest = (status: number, statusText: string = '') => {
(xhrMock as any).status = status;
(xhrMock as any).response = '';
+ (xhrMock as any).statusText = statusText;
(xhrMock as any).readyState = 4;
(xhrMock as any).onreadystatechange();
};
@@ -169,11 +180,6 @@ describe('OutQueueManager', () => {
describe('GET requests', () => {
var getOutQueue: (maxGetBytes: number) => OutQueue;
- const getQuerystring = (p: object) =>
- '?' +
- Object.entries(p)
- .map(([k, v]) => k + '=' + encodeURIComponent(v))
- .join('&');
beforeEach(() => {
getOutQueue = (maxGetBytes) =>
@@ -421,4 +427,267 @@ describe('OutQueueManager', () => {
}, 20);
});
});
+
+ type createQueueArgs = {
+ method: string;
+ onSuccess?: (data: EventBatch) => void;
+ onFailure?: (data: RequestFailure) => void;
+ maxPostBytes?: number;
+ maxGetBytes?: number;
+ };
+
+ const createQueue = (args: createQueueArgs) =>
+ OutQueueManager(
+ 'sp',
+ new SharedState(),
+ true,
+ args.method,
+ '/com.snowplowanalytics.snowplow/tp2',
+ 1,
+ args.maxPostBytes ?? 40000,
+ args.maxGetBytes ?? 0,
+ true,
+ maxQueueSize,
+ 5000,
+ false,
+ {},
+ true,
+ [],
+ [],
+ '',
+ false,
+ args.onSuccess,
+ args.onFailure
+ );
+
+ describe('onRequestSuccess', () => {
+ const request = { e: 'pv', eid: '65cb78de-470c-4764-8c10-02bd79477a3a' };
+
+ describe('POST requests', () => {
+ const method = 'POST';
+
+ it('should fire on a successful request', () => {
+ const callbackStorage: EventBatch[] = [];
+ const onSuccess = (e: EventBatch) => {
+ callbackStorage.push(e);
+ };
+
+ const postQueue = createQueue({ method, onSuccess });
+ postQueue.enqueueRequest(request, 'http://example.com');
+
+ expect(readPostQueue()).toHaveLength(1);
+
+ respondMockRequest(200);
+
+ expect(readPostQueue()).toHaveLength(0);
+ expect(callbackStorage).toHaveLength(1);
+
+ let dataFromCallback = callbackStorage[0][0] as Record;
+ expect(dataFromCallback.e).toEqual(request.e);
+ expect(dataFromCallback.eid).toEqual(request.eid);
+ expect(dataFromCallback.stm).toMatch(/\d{13}/);
+ });
+
+ // Oversized events don't get placed in the queue, but the callback should still fire
+ it('should fire on a successful oversized request', () => {
+ const callbackStorage: EventBatch[] = [];
+ const onSuccess = (e: EventBatch) => {
+ callbackStorage.push(e);
+ };
+
+ const postQueue = createQueue({ method, onSuccess, maxPostBytes: 1 });
+ postQueue.enqueueRequest(request, 'http://example.com');
+
+ respondMockRequest(200);
+
+ expect(callbackStorage).toHaveLength(1);
+
+ let dataFromCallback = callbackStorage[0][0] as Record;
+ expect(dataFromCallback.e).toEqual(request.e);
+ expect(dataFromCallback.eid).toEqual(request.eid);
+ expect(dataFromCallback.stm).toMatch(/\d{13}/);
+ });
+ });
+
+ describe('GET requests', () => {
+ const method = 'GET';
+
+ it('should fire on a successful request', () => {
+ let callbackStorage: EventBatch[] = [];
+ const onSuccess = (e: EventBatch) => {
+ callbackStorage.push(e);
+ };
+
+ const getQueue = createQueue({ method, onSuccess });
+ getQueue.enqueueRequest(request, 'http://example.com');
+
+ expect(readGetQueue()).toHaveLength(1);
+
+ respondMockRequest(200);
+
+ expect(readGetQueue()).toHaveLength(0);
+ expect(callbackStorage).toHaveLength(1);
+
+ let dataFromCallback = callbackStorage[0][0] as string;
+ expect(dataFromCallback).toMatch(/\?stm=\d{13}&e=pv&eid=65cb78de-470c-4764-8c10-02bd79477a3a/);
+ });
+
+ // A single oversized events means no queue, but the callback should still fire
+ it('should fire the onRequestSuccess on a successful oversized request', () => {
+ let callbackStorage: EventBatch[] = [];
+ const onSuccess = (e: EventBatch) => {
+ callbackStorage.push(e);
+ };
+
+ const getQueue = createQueue({ method, onSuccess });
+ getQueue.enqueueRequest(request, 'http://example.com');
+
+ respondMockRequest(200);
+
+ expect(callbackStorage).toHaveLength(1);
+
+ let dataFromCallback = callbackStorage[0][0] as string;
+ expect(dataFromCallback).toMatch(/\?stm=\d{13}&e=pv&eid=65cb78de-470c-4764-8c10-02bd79477a3a/);
+ });
+ });
+ });
+
+ describe('onRequestFailure', () => {
+ const request = { e: 'pv', eid: '65cb78de-470c-4764-8c10-02bd79477a3a' };
+
+ const createQueue = (args: createQueueArgs) =>
+ OutQueueManager(
+ 'sp',
+ new SharedState(),
+ true,
+ args.method,
+ '/com.snowplowanalytics.snowplow/tp2',
+ 1,
+ 40000,
+ 0,
+ true,
+ maxQueueSize,
+ 5000,
+ false,
+ {},
+ true,
+ [],
+ [500],
+ '',
+ false,
+ args.onSuccess,
+ args.onFailure
+ );
+
+ describe('POST requests', () => {
+ const method = 'POST';
+
+ it('should fire on a failed request', () => {
+ const callbackStorage: RequestFailure[] = [];
+ const onFailure = (e: RequestFailure) => {
+ callbackStorage.push(e);
+ };
+
+ const postQueue = createQueue({ method, onFailure });
+ postQueue.enqueueRequest(request, 'http://example.com');
+
+ expect(readPostQueue()).toHaveLength(1);
+
+ respondMockRequest(500, 'Internal Server Error');
+
+ expect(readPostQueue()).toHaveLength(0);
+ expect(callbackStorage).toHaveLength(1);
+
+ let dataFromCallback = callbackStorage[0] as RequestFailure;
+
+ const event = dataFromCallback.events[0] as Record;
+ expect(event.e).toEqual(request.e);
+ expect(event.eid).toEqual(request.eid);
+ expect(event.stm).toMatch(/\d{13}/);
+
+ expect(dataFromCallback.status).toEqual(500);
+ expect(dataFromCallback.message).toEqual('Internal Server Error');
+ expect(dataFromCallback.willRetry).toEqual(false);
+ });
+
+ // A single oversized events means no queue, but the callback should still fire
+ it('should fire on a failed oversized request', () => {
+ const callbackStorage: RequestFailure[] = [];
+ const onFailure = (e: RequestFailure) => {
+ callbackStorage.push(e);
+ };
+
+ const postQueue = createQueue({ method, onFailure, maxPostBytes: 1 });
+ postQueue.enqueueRequest(request, 'http://example.com');
+
+ respondMockRequest(0, 'Request failed');
+
+ expect(callbackStorage).toHaveLength(1);
+
+ let dataFromCallback = callbackStorage[0].events[0] as Record;
+ expect(dataFromCallback.e).toEqual(request.e);
+ expect(dataFromCallback.eid).toEqual(request.eid);
+
+ // The payload will have had `stm` added to it
+ expect(dataFromCallback.stm).toMatch(/\d{13}/);
+ expect(callbackStorage[0].status).toEqual(0);
+ expect(callbackStorage[0].message).toEqual('Request failed');
+ });
+ });
+
+ describe('GET requests', () => {
+ const method = 'GET';
+
+ it('should fire on a failed request', () => {
+ let callbackStorage: RequestFailure[] = [];
+ const onFailure = (e: RequestFailure) => {
+ callbackStorage.push(e);
+ };
+
+ const getQueue = createQueue({ method, onFailure });
+ getQueue.enqueueRequest(request, 'http://example.com');
+
+ expect(readGetQueue()).toHaveLength(1);
+
+ respondMockRequest(500, 'Internal Server Error');
+
+ expect(readGetQueue()).toHaveLength(0);
+ expect(callbackStorage).toHaveLength(1);
+
+ let dataFromCallback = callbackStorage[0] as RequestFailure;
+
+ expect(dataFromCallback.events[0]).toMatch(/\?stm=\d{13}&e=pv&eid=65cb78de-470c-4764-8c10-02bd79477a3a/);
+
+ expect(dataFromCallback.status).toEqual(500);
+ expect(dataFromCallback.message).toEqual('Internal Server Error');
+ expect(dataFromCallback.willRetry).toEqual(false);
+ });
+
+ // A single oversized events means no queue, but the callback should still fire
+ it('should fire on a failed oversized request', () => {
+ let callbackStorage: RequestFailure[] = [];
+ const onFailure = (e: RequestFailure) => {
+ callbackStorage.push(e);
+ };
+
+ const getQueue = createQueue({ method, onFailure, maxPostBytes: 1 });
+ getQueue.enqueueRequest(request, 'http://example.com');
+
+ expect(readGetQueue()).toHaveLength(1);
+
+ respondMockRequest(500, 'Internal Server Error');
+
+ expect(readGetQueue()).toHaveLength(0);
+ expect(callbackStorage).toHaveLength(1);
+
+ let dataFromCallback = callbackStorage[0] as RequestFailure;
+
+ expect(dataFromCallback.events[0]).toMatch(/\?stm=\d{13}&e=pv&eid=65cb78de-470c-4764-8c10-02bd79477a3a/);
+
+ expect(dataFromCallback.status).toEqual(500);
+ expect(dataFromCallback.message).toEqual('Internal Server Error');
+ expect(dataFromCallback.willRetry).toEqual(false);
+ });
+ });
+ });
});
diff --git a/trackers/javascript-tracker/test/integration/integration.test.ts b/trackers/javascript-tracker/test/integration/integration.test.ts
index 1218068ff..28ba0966c 100755
--- a/trackers/javascript-tracker/test/integration/integration.test.ts
+++ b/trackers/javascript-tracker/test/integration/integration.test.ts
@@ -50,12 +50,15 @@ describe('Snowplow Micro integration', () => {
beforeAll(async () => {
testIdentifier = await pageSetup();
await loadUrlAndWait('/integration.html?eventMethod=get');
+ await browser.pause(2000); // Time for pings
await $('#bottomRight').click();
await browser.pause(5000); // Time for requests to get written
await loadUrlAndWait('/integration.html?eventMethod=post');
+ await browser.pause(2000); // Time for pings
await $('#bottomRight').click();
await browser.pause(6000); // Time for requests to get written
await loadUrlAndWait('/integration.html?eventMethod=beacon');
+ await browser.pause(2000); // Time for pings
await $('#bottomRight').click();
await browser.pause(6000); // Time for requests to get written
log = await browser.call(async () => await fetchResults());
From b13558aeb2dd1bc0399153a8742a5dfca08d9df8 Mon Sep 17 00:00:00 2001
From: Jack Keene
Date: Tue, 28 Nov 2023 12:04:22 +0000
Subject: [PATCH 033/341] Host Javascript API docs (close #1255)
PR #1256
* Add docs workflow
* Remove old docs folder
* Update publish workflow
---
.github/workflows/docs.yml | 31 +
.github/workflows/publish.yml | 8 +-
api-docs/.gitignore | 20 +
api-docs/babel.config.js | 3 +
.../browser-tracker}/browser-tracker.api.md | 0
.../browser-tracker.activitycallback.md | 0
.../browser-tracker.activitycallbackdata.md | 0
...itytrackingconfiguration.heartbeatdelay.md | 0
...r-tracker.activitytrackingconfiguration.md | 0
...rackingconfiguration.minimumvisitlength.md | 0
...ytrackingconfigurationcallback.callback.md | 0
...r.activitytrackingconfigurationcallback.md | 0
.../browser-tracker.addglobalcontexts.md | 0
.../markdown/browser-tracker.addplugin.md | 0
...rowser-tracker.anonymoustrackingoptions.md | 0
...ker.browserplugin.activatebrowserplugin.md | 0
.../markdown/browser-tracker.browserplugin.md | 0
...wser-tracker.browserpluginconfiguration.md | 0
...acker.browserpluginconfiguration.plugin.md | 0
...rowser-tracker.browsertracker.addplugin.md | 0
...er-tracker.browsertracker.clearuserdata.md | 0
.../browser-tracker.browsertracker.core.md | 0
...racker.browsertracker.crossdomainlinker.md | 0
....browsertracker.disableactivitytracking.md | 0
...tracker.disableactivitytrackingcallback.md | 0
...browsertracker.disableanonymoustracking.md | 0
...ser-tracker.browsertracker.discardbrace.md | 0
...r-tracker.browsertracker.discardhashtag.md | 0
...r.browsertracker.enableactivitytracking.md | 0
...rtracker.enableactivitytrackingcallback.md | 0
....browsertracker.enableanonymoustracking.md | 0
...wser-tracker.browsertracker.flushbuffer.md | 0
...er-tracker.browsertracker.getcookiename.md | 0
...er.browsertracker.getdomainsessionindex.md | 0
...-tracker.browsertracker.getdomainuserid.md | 0
...racker.browsertracker.getdomainuserinfo.md | 0
...er-tracker.browsertracker.getpageviewid.md | 0
...browser-tracker.browsertracker.gettabid.md | 0
...rowser-tracker.browsertracker.getuserid.md | 0
.../browser-tracker.browsertracker.id.md | 0
.../browser-tracker.browsertracker.md | 0
...rowser-tracker.browsertracker.namespace.md | 0
...owser-tracker.browsertracker.newsession.md | 0
...acker.browsertracker.preservepageviewid.md | 0
...er-tracker.browsertracker.setbuffersize.md | 0
...-tracker.browsertracker.setcollectorurl.md | 0
...er-tracker.browsertracker.setcookiepath.md | 0
...ser-tracker.browsertracker.setcustomurl.md | 0
...tracker.browsertracker.setdocumenttitle.md | 0
...-tracker.browsertracker.setoptoutcookie.md | 0
...r-tracker.browsertracker.setreferrerurl.md | 0
...rowser-tracker.browsertracker.setuserid.md | 0
...cker.browsertracker.setuseridfromcookie.md | 0
...er.browsertracker.setuseridfromlocation.md | 0
...er.browsertracker.setuseridfromreferrer.md | 0
....browsertracker.setvisitorcookietimeout.md | 0
...wser-tracker.browsertracker.sharedstate.md | 0
...er-tracker.browsertracker.trackpageview.md | 0
...acker.browsertracker.updatepageactivity.md | 0
.../browser-tracker.builtincontexts.md | 0
.../browser-tracker.clearglobalcontexts.md | 0
.../markdown/browser-tracker.clearuserdata.md | 0
...wser-tracker.clearuserdataconfiguration.md | 0
...aruserdataconfiguration.preservesession.md | 0
...clearuserdataconfiguration.preserveuser.md | 0
...rowser-tracker.clientsession.eventindex.md | 0
...wser-tracker.clientsession.firsteventid.md | 0
...acker.clientsession.firsteventtimestamp.md | 0
.../markdown/browser-tracker.clientsession.md | 0
...tracker.clientsession.previoussessionid.md | 0
...browser-tracker.clientsession.sessionid.md | 0
...wser-tracker.clientsession.sessionindex.md | 0
...-tracker.clientsession.storagemechanism.md | 0
.../browser-tracker.clientsession.userid.md | 0
...r-tracker.commoneventproperties.context.md | 0
.../browser-tracker.commoneventproperties.md | 0
...tracker.commoneventproperties.timestamp.md | 0
...wser-tracker.conditionalcontextprovider.md | 0
.../browser-tracker.contextevent.event.md | 0
...rowser-tracker.contextevent.eventschema.md | 0
.../browser-tracker.contextevent.eventtype.md | 0
.../markdown/browser-tracker.contextevent.md | 0
.../markdown/browser-tracker.contextfilter.md | 0
.../browser-tracker.contextgenerator.md | 0
.../browser-tracker.contextprimitive.md | 0
.../browser-tracker.cookiesamesite.md | 0
.../browser-tracker.crossdomainlinker.md | 0
...browser-tracker.disableactivitytracking.md | 0
...tracker.disableactivitytrackingcallback.md | 0
...rowser-tracker.disableanonymoustracking.md | 0
...r.disableanonymoustrackingconfiguration.md | 0
...ckingconfiguration.statestoragestrategy.md | 0
.../markdown/browser-tracker.discardbrace.md | 0
.../browser-tracker.discardhashtag.md | 0
.../browser-tracker.enableactivitytracking.md | 0
...-tracker.enableactivitytrackingcallback.md | 0
...browser-tracker.enableanonymoustracking.md | 0
...er.enableanonymoustrackingconfiguration.md | 0
...eanonymoustrackingconfiguration.options.md | 0
...ckingconfiguration.statestoragestrategy.md | 0
.../markdown/browser-tracker.eventmethod.md | 0
.../browser-tracker.filterprovider.md | 0
.../markdown/browser-tracker.flushbuffer.md | 0
...rowser-tracker.flushbufferconfiguration.md | 0
....flushbufferconfiguration.newbuffersize.md | 0
.../markdown/browser-tracker.md | 0
.../markdown/browser-tracker.newsession.md | 0
.../markdown/browser-tracker.newtracker.md | 0
.../markdown/browser-tracker.newtracker_1.md | 0
...r-tracker.pageviewevent.contextcallback.md | 0
.../markdown/browser-tracker.pageviewevent.md | 0
.../browser-tracker.pageviewevent.title.md | 0
.../markdown/browser-tracker.platform.md | 0
.../browser-tracker.preservepageviewid.md | 0
.../browser-tracker.removeglobalcontexts.md | 0
.../browser-tracker.ruleset.accept.md | 0
.../markdown/browser-tracker.ruleset.md | 0
.../browser-tracker.ruleset.reject.md | 0
.../browser-tracker.rulesetprovider.md | 0
...owser-tracker.selfdescribingevent.event.md | 0
.../browser-tracker.selfdescribingevent.md | 0
.../browser-tracker.selfdescribingjson.md | 0
.../markdown/browser-tracker.setbuffersize.md | 0
.../browser-tracker.setcollectorurl.md | 0
.../markdown/browser-tracker.setcookiepath.md | 0
.../markdown/browser-tracker.setcustomurl.md | 0
.../browser-tracker.setdocumenttitle.md | 0
.../browser-tracker.setoptoutcookie.md | 0
.../browser-tracker.setreferrerurl.md | 0
.../markdown/browser-tracker.setuserid.md | 0
.../browser-tracker.setuseridfromcookie.md | 0
.../browser-tracker.setuseridfromlocation.md | 0
.../browser-tracker.setuseridfromreferrer.md | 0
...browser-tracker.setvisitorcookietimeout.md | 0
.../browser-tracker.statestoragestrategy.md | 0
.../browser-tracker.structuredevent.action.md | 0
...rowser-tracker.structuredevent.category.md | 0
.../browser-tracker.structuredevent.label.md | 0
.../browser-tracker.structuredevent.md | 0
...rowser-tracker.structuredevent.property.md | 0
.../browser-tracker.structuredevent.value.md | 0
.../browser-tracker.trackerconfiguration.md | 0
.../markdown/browser-tracker.trackpageview.md | 0
...rowser-tracker.trackselfdescribingevent.md | 0
.../browser-tracker.trackstructevent.md | 0
.../browser-tracker.updatepageactivity.md | 0
.../markdown/browser-tracker.version.md | 0
.../docs/browser-tracker}/markdown/index.md | 0
api-docs/docs/index.md | 22 +
.../docs/node-tracker}/markdown/index.md | 0
.../node-tracker.adclickevent.advertiserid.md | 0
.../node-tracker.adclickevent.bannerid.md | 0
.../node-tracker.adclickevent.campaignid.md | 0
.../node-tracker.adclickevent.clickid.md | 0
.../node-tracker.adclickevent.cost.md | 0
.../node-tracker.adclickevent.costmodel.md | 0
.../node-tracker.adclickevent.impressionid.md | 0
.../markdown/node-tracker.adclickevent.md | 0
.../node-tracker.adclickevent.targeturl.md | 0
.../node-tracker.adclickevent.zoneid.md | 0
.../node-tracker.adconversionevent.action.md | 0
...-tracker.adconversionevent.advertiserid.md | 0
...de-tracker.adconversionevent.campaignid.md | 0
...node-tracker.adconversionevent.category.md | 0
...-tracker.adconversionevent.conversionid.md | 0
.../node-tracker.adconversionevent.cost.md | 0
...ode-tracker.adconversionevent.costmodel.md | 0
...-tracker.adconversionevent.initialvalue.md | 0
.../node-tracker.adconversionevent.md | 0
...node-tracker.adconversionevent.property.md | 0
.../node-tracker.addtocartevent.category.md | 0
.../node-tracker.addtocartevent.currency.md | 0
.../markdown/node-tracker.addtocartevent.md | 0
.../node-tracker.addtocartevent.name.md | 0
.../node-tracker.addtocartevent.quantity.md | 0
.../node-tracker.addtocartevent.sku.md | 0
.../node-tracker.addtocartevent.unitprice.md | 0
...-tracker.adimpressionevent.advertiserid.md | 0
...node-tracker.adimpressionevent.bannerid.md | 0
...de-tracker.adimpressionevent.campaignid.md | 0
.../node-tracker.adimpressionevent.cost.md | 0
...ode-tracker.adimpressionevent.costmodel.md | 0
...-tracker.adimpressionevent.impressionid.md | 0
.../node-tracker.adimpressionevent.md | 0
...ode-tracker.adimpressionevent.targeturl.md | 0
.../node-tracker.adimpressionevent.zoneid.md | 0
.../markdown/node-tracker.buildadclick.md | 0
.../node-tracker.buildadconversion.md | 0
.../markdown/node-tracker.buildaddtocart.md | 0
.../node-tracker.buildadimpression.md | 0
.../node-tracker.buildconsentgranted.md | 2 +-
.../node-tracker.buildconsentwithdrawn.md | 2 +-
.../node-tracker.buildecommercetransaction.md | 0
...e-tracker.buildecommercetransactionitem.md | 0
.../node-tracker.buildformfocusorchange.md | 0
.../node-tracker.buildformsubmission.md | 0
.../markdown/node-tracker.buildlinkclick.md | 2 +-
.../markdown/node-tracker.buildpageping.md | 0
.../markdown/node-tracker.buildpageview.md | 0
.../node-tracker.buildremovefromcart.md | 0
.../markdown/node-tracker.buildscreenview.md | 0
.../node-tracker.buildselfdescribingevent.md | 0
.../markdown/node-tracker.buildsitesearch.md | 0
.../node-tracker.buildsocialinteraction.md | 0
.../markdown/node-tracker.buildstructevent.md | 0
...tracker.consentgrantedevent.description.md | 0
...node-tracker.consentgrantedevent.expiry.md | 0
.../node-tracker.consentgrantedevent.id.md | 0
.../node-tracker.consentgrantedevent.md | 0
.../node-tracker.consentgrantedevent.name.md | 0
...ode-tracker.consentgrantedevent.version.md | 0
.../node-tracker.consentwithdrawnevent.all.md | 0
...acker.consentwithdrawnevent.description.md | 0
.../node-tracker.consentwithdrawnevent.id.md | 0
.../node-tracker.consentwithdrawnevent.md | 0
...node-tracker.consentwithdrawnevent.name.md | 0
...e-tracker.consentwithdrawnevent.version.md | 0
.../node-tracker.contextevent.event.md | 0
.../node-tracker.contextevent.eventschema.md | 0
.../node-tracker.contextevent.eventtype.md | 0
.../markdown/node-tracker.contextevent.md | 0
.../markdown/node-tracker.contextfilter.md | 0
.../markdown/node-tracker.contextgenerator.md | 0
.../node-tracker.coreconfiguration.base64.md | 0
...node-tracker.coreconfiguration.callback.md | 0
...e-tracker.coreconfiguration.coreplugins.md | 0
.../node-tracker.coreconfiguration.md | 0
...e-tracker.coreplugin.activatecoreplugin.md | 0
.../node-tracker.coreplugin.aftertrack.md | 0
.../node-tracker.coreplugin.beforetrack.md | 0
.../node-tracker.coreplugin.contexts.md | 0
.../node-tracker.coreplugin.logger.md | 0
.../markdown/node-tracker.coreplugin.md | 0
...r.ecommercetransactionevent.affiliation.md | 0
...-tracker.ecommercetransactionevent.city.md | 0
...acker.ecommercetransactionevent.country.md | 0
...cker.ecommercetransactionevent.currency.md | 0
.../node-tracker.ecommercetransactionevent.md | 0
...acker.ecommercetransactionevent.orderid.md | 0
...cker.ecommercetransactionevent.shipping.md | 0
...tracker.ecommercetransactionevent.state.md | 0
...e-tracker.ecommercetransactionevent.tax.md | 0
...tracker.ecommercetransactionevent.total.md | 0
....ecommercetransactionitemevent.category.md | 0
....ecommercetransactionitemevent.currency.md | 0
...e-tracker.ecommercetransactionitemevent.md | 0
...cker.ecommercetransactionitemevent.name.md | 0
...r.ecommercetransactionitemevent.orderid.md | 0
...ker.ecommercetransactionitemevent.price.md | 0
....ecommercetransactionitemevent.quantity.md | 0
...acker.ecommercetransactionitemevent.sku.md | 0
.../markdown/node-tracker.emitter.flush.md | 0
.../markdown/node-tracker.emitter.input.md | 0
.../markdown/node-tracker.emitter.md | 0
...r.formfocusorchangeevent.elementclasses.md | 0
...racker.formfocusorchangeevent.elementid.md | 0
...e-tracker.formfocusorchangeevent.formid.md | 0
.../node-tracker.formfocusorchangeevent.md | 0
...tracker.formfocusorchangeevent.nodename.md | 0
...e-tracker.formfocusorchangeevent.schema.md | 0
...ode-tracker.formfocusorchangeevent.type.md | 0
...de-tracker.formfocusorchangeevent.value.md | 0
...de-tracker.formsubmissionevent.elements.md | 0
...tracker.formsubmissionevent.formclasses.md | 0
...node-tracker.formsubmissionevent.formid.md | 0
.../node-tracker.formsubmissionevent.md | 0
.../markdown/node-tracker.gotemitter.md | 0
.../markdown/node-tracker.httpmethod.md | 0
.../markdown/node-tracker.httpprotocol.md | 0
...e-tracker.linkclickevent.elementclasses.md | 0
...e-tracker.linkclickevent.elementcontent.md | 0
.../node-tracker.linkclickevent.elementid.md | 0
...de-tracker.linkclickevent.elementtarget.md | 0
.../markdown/node-tracker.linkclickevent.md | 2 +-
.../node-tracker.linkclickevent.targeturl.md | 0
.../node-tracker}/markdown/node-tracker.md | 6 +-
.../node-tracker.pagepingevent.maxxoffset.md | 0
.../node-tracker.pagepingevent.maxyoffset.md | 0
.../markdown/node-tracker.pagepingevent.md | 0
.../node-tracker.pagepingevent.minxoffset.md | 0
.../node-tracker.pagepingevent.minyoffset.md | 0
.../markdown/node-tracker.pageviewevent.md | 0
.../node-tracker.pageviewevent.pagetitle.md | 0
.../node-tracker.pageviewevent.pageurl.md | 0
.../node-tracker.pageviewevent.referrer.md | 0
.../markdown/node-tracker.payload.md | 0
.../node-tracker.payloadbuilder.add.md | 0
...tracker.payloadbuilder.addcontextentity.md | 0
.../node-tracker.payloadbuilder.adddict.md | 0
.../node-tracker.payloadbuilder.addjson.md | 0
.../node-tracker.payloadbuilder.build.md | 0
.../node-tracker.payloadbuilder.getjson.md | 0
.../node-tracker.payloadbuilder.getpayload.md | 0
.../markdown/node-tracker.payloadbuilder.md | 0
...racker.payloadbuilder.withjsonprocessor.md | 0
...de-tracker.removefromcartevent.category.md | 0
...de-tracker.removefromcartevent.currency.md | 0
.../node-tracker.removefromcartevent.md | 0
.../node-tracker.removefromcartevent.name.md | 0
...de-tracker.removefromcartevent.quantity.md | 0
.../node-tracker.removefromcartevent.sku.md | 0
...e-tracker.removefromcartevent.unitprice.md | 0
.../node-tracker.screenviewevent.id.md | 0
.../markdown/node-tracker.screenviewevent.md | 0
.../node-tracker.screenviewevent.name.md | 0
.../node-tracker.selfdescribingevent.event.md | 0
.../node-tracker.selfdescribingevent.md | 0
.../node-tracker.selfdescribingjson.md | 2 +-
.../node-tracker.sitesearchevent.filters.md | 0
.../markdown/node-tracker.sitesearchevent.md | 0
...ode-tracker.sitesearchevent.pageresults.md | 0
.../node-tracker.sitesearchevent.terms.md | 0
...de-tracker.sitesearchevent.totalresults.md | 0
...e-tracker.socialinteractionevent.action.md | 0
.../node-tracker.socialinteractionevent.md | 0
...-tracker.socialinteractionevent.network.md | 0
...e-tracker.socialinteractionevent.target.md | 0
.../node-tracker.structuredevent.action.md | 0
.../node-tracker.structuredevent.category.md | 0
.../node-tracker.structuredevent.label.md | 0
.../markdown/node-tracker.structuredevent.md | 0
.../node-tracker.structuredevent.property.md | 0
.../node-tracker.structuredevent.value.md | 0
.../markdown/node-tracker.timestamp.md | 0
.../markdown/node-tracker.tracker.md | 0
.../node-tracker.tracker.setdomainuserid.md | 0
.../node-tracker.tracker.setnetworkuserid.md | 0
.../node-tracker.tracker.setsessionid.md | 0
.../node-tracker.tracker.setsessionindex.md | 0
.../markdown/node-tracker.version.md | 0
.../docs/node-tracker}/node-tracker.api.md | 0
api-docs/docusaurus.config.js | 100 +
api-docs/package-lock.json | 14917 ++++++++++++++++
api-docs/package.json | 51 +
api-docs/sidebars.js | 8 +
api-docs/src/css/custom.css | 30 +
api-docs/src/pages/index.md | 17 +
api-docs/src/pages/index.module.css | 23 +
api-docs/static/.nojekyll | 0
api-docs/static/img/favicon.ico | Bin 0 -> 16465 bytes
...ue-1255-host_js_docs_2023-11-28-10-57.json | 10 +
...ue-1255-host_js_docs_2023-11-28-10-57.json | 10 +
...ue-1255-host_js_docs_2023-11-28-10-57.json | 10 +
libraries/tracker-core/src/core.ts | 10 +-
trackers/browser-tracker/api-extractor.json | 2 +-
trackers/node-tracker/api-extractor.json | 2 +-
346 files changed, 15271 insertions(+), 19 deletions(-)
create mode 100644 .github/workflows/docs.yml
create mode 100644 api-docs/.gitignore
create mode 100644 api-docs/babel.config.js
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/browser-tracker.api.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.activitycallback.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.activitycallbackdata.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.activitytrackingconfiguration.heartbeatdelay.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.activitytrackingconfiguration.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.activitytrackingconfiguration.minimumvisitlength.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.activitytrackingconfigurationcallback.callback.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.activitytrackingconfigurationcallback.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.addglobalcontexts.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.addplugin.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.anonymoustrackingoptions.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.browserplugin.activatebrowserplugin.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.browserplugin.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.browserpluginconfiguration.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.browserpluginconfiguration.plugin.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.browsertracker.addplugin.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.browsertracker.clearuserdata.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.browsertracker.core.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.browsertracker.crossdomainlinker.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.browsertracker.disableactivitytracking.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.browsertracker.disableactivitytrackingcallback.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.browsertracker.disableanonymoustracking.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.browsertracker.discardbrace.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.browsertracker.discardhashtag.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.browsertracker.enableactivitytracking.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.browsertracker.enableactivitytrackingcallback.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.browsertracker.enableanonymoustracking.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.browsertracker.flushbuffer.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.browsertracker.getcookiename.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.browsertracker.getdomainsessionindex.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.browsertracker.getdomainuserid.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.browsertracker.getdomainuserinfo.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.browsertracker.getpageviewid.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.browsertracker.gettabid.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.browsertracker.getuserid.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.browsertracker.id.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.browsertracker.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.browsertracker.namespace.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.browsertracker.newsession.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.browsertracker.preservepageviewid.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.browsertracker.setbuffersize.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.browsertracker.setcollectorurl.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.browsertracker.setcookiepath.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.browsertracker.setcustomurl.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.browsertracker.setdocumenttitle.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.browsertracker.setoptoutcookie.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.browsertracker.setreferrerurl.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.browsertracker.setuserid.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.browsertracker.setuseridfromcookie.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.browsertracker.setuseridfromlocation.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.browsertracker.setuseridfromreferrer.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.browsertracker.setvisitorcookietimeout.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.browsertracker.sharedstate.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.browsertracker.trackpageview.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.browsertracker.updatepageactivity.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.builtincontexts.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.clearglobalcontexts.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.clearuserdata.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.clearuserdataconfiguration.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.clearuserdataconfiguration.preservesession.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.clearuserdataconfiguration.preserveuser.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.clientsession.eventindex.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.clientsession.firsteventid.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.clientsession.firsteventtimestamp.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.clientsession.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.clientsession.previoussessionid.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.clientsession.sessionid.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.clientsession.sessionindex.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.clientsession.storagemechanism.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.clientsession.userid.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.commoneventproperties.context.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.commoneventproperties.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.commoneventproperties.timestamp.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.conditionalcontextprovider.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.contextevent.event.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.contextevent.eventschema.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.contextevent.eventtype.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.contextevent.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.contextfilter.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.contextgenerator.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.contextprimitive.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.cookiesamesite.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.crossdomainlinker.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.disableactivitytracking.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.disableactivitytrackingcallback.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.disableanonymoustracking.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.disableanonymoustrackingconfiguration.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.disableanonymoustrackingconfiguration.statestoragestrategy.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.discardbrace.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.discardhashtag.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.enableactivitytracking.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.enableactivitytrackingcallback.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.enableanonymoustracking.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.enableanonymoustrackingconfiguration.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.enableanonymoustrackingconfiguration.options.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.enableanonymoustrackingconfiguration.statestoragestrategy.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.eventmethod.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.filterprovider.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.flushbuffer.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.flushbufferconfiguration.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.flushbufferconfiguration.newbuffersize.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.newsession.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.newtracker.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.newtracker_1.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.pageviewevent.contextcallback.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.pageviewevent.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.pageviewevent.title.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.platform.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.preservepageviewid.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.removeglobalcontexts.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.ruleset.accept.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.ruleset.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.ruleset.reject.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.rulesetprovider.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.selfdescribingevent.event.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.selfdescribingevent.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.selfdescribingjson.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.setbuffersize.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.setcollectorurl.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.setcookiepath.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.setcustomurl.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.setdocumenttitle.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.setoptoutcookie.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.setreferrerurl.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.setuserid.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.setuseridfromcookie.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.setuseridfromlocation.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.setuseridfromreferrer.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.setvisitorcookietimeout.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.statestoragestrategy.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.structuredevent.action.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.structuredevent.category.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.structuredevent.label.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.structuredevent.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.structuredevent.property.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.structuredevent.value.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.trackerconfiguration.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.trackpageview.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.trackselfdescribingevent.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.trackstructevent.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.updatepageactivity.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/browser-tracker.version.md (100%)
rename {trackers/browser-tracker/docs => api-docs/docs/browser-tracker}/markdown/index.md (100%)
create mode 100644 api-docs/docs/index.md
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/index.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.adclickevent.advertiserid.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.adclickevent.bannerid.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.adclickevent.campaignid.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.adclickevent.clickid.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.adclickevent.cost.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.adclickevent.costmodel.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.adclickevent.impressionid.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.adclickevent.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.adclickevent.targeturl.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.adclickevent.zoneid.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.adconversionevent.action.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.adconversionevent.advertiserid.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.adconversionevent.campaignid.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.adconversionevent.category.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.adconversionevent.conversionid.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.adconversionevent.cost.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.adconversionevent.costmodel.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.adconversionevent.initialvalue.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.adconversionevent.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.adconversionevent.property.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.addtocartevent.category.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.addtocartevent.currency.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.addtocartevent.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.addtocartevent.name.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.addtocartevent.quantity.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.addtocartevent.sku.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.addtocartevent.unitprice.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.adimpressionevent.advertiserid.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.adimpressionevent.bannerid.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.adimpressionevent.campaignid.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.adimpressionevent.cost.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.adimpressionevent.costmodel.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.adimpressionevent.impressionid.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.adimpressionevent.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.adimpressionevent.targeturl.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.adimpressionevent.zoneid.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.buildadclick.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.buildadconversion.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.buildaddtocart.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.buildadimpression.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.buildconsentgranted.md (86%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.buildconsentwithdrawn.md (86%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.buildecommercetransaction.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.buildecommercetransactionitem.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.buildformfocusorchange.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.buildformsubmission.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.buildlinkclick.md (90%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.buildpageping.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.buildpageview.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.buildremovefromcart.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.buildscreenview.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.buildselfdescribingevent.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.buildsitesearch.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.buildsocialinteraction.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.buildstructevent.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.consentgrantedevent.description.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.consentgrantedevent.expiry.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.consentgrantedevent.id.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.consentgrantedevent.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.consentgrantedevent.name.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.consentgrantedevent.version.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.consentwithdrawnevent.all.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.consentwithdrawnevent.description.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.consentwithdrawnevent.id.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.consentwithdrawnevent.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.consentwithdrawnevent.name.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.consentwithdrawnevent.version.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.contextevent.event.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.contextevent.eventschema.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.contextevent.eventtype.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.contextevent.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.contextfilter.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.contextgenerator.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.coreconfiguration.base64.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.coreconfiguration.callback.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.coreconfiguration.coreplugins.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.coreconfiguration.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.coreplugin.activatecoreplugin.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.coreplugin.aftertrack.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.coreplugin.beforetrack.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.coreplugin.contexts.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.coreplugin.logger.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.coreplugin.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.ecommercetransactionevent.affiliation.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.ecommercetransactionevent.city.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.ecommercetransactionevent.country.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.ecommercetransactionevent.currency.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.ecommercetransactionevent.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.ecommercetransactionevent.orderid.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.ecommercetransactionevent.shipping.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.ecommercetransactionevent.state.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.ecommercetransactionevent.tax.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.ecommercetransactionevent.total.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.ecommercetransactionitemevent.category.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.ecommercetransactionitemevent.currency.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.ecommercetransactionitemevent.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.ecommercetransactionitemevent.name.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.ecommercetransactionitemevent.orderid.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.ecommercetransactionitemevent.price.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.ecommercetransactionitemevent.quantity.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.ecommercetransactionitemevent.sku.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.emitter.flush.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.emitter.input.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.emitter.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.formfocusorchangeevent.elementclasses.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.formfocusorchangeevent.elementid.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.formfocusorchangeevent.formid.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.formfocusorchangeevent.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.formfocusorchangeevent.nodename.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.formfocusorchangeevent.schema.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.formfocusorchangeevent.type.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.formfocusorchangeevent.value.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.formsubmissionevent.elements.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.formsubmissionevent.formclasses.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.formsubmissionevent.formid.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.formsubmissionevent.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.gotemitter.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.httpmethod.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.httpprotocol.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.linkclickevent.elementclasses.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.linkclickevent.elementcontent.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.linkclickevent.elementid.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.linkclickevent.elementtarget.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.linkclickevent.md (95%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.linkclickevent.targeturl.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.md (97%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.pagepingevent.maxxoffset.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.pagepingevent.maxyoffset.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.pagepingevent.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.pagepingevent.minxoffset.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.pagepingevent.minyoffset.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.pageviewevent.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.pageviewevent.pagetitle.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.pageviewevent.pageurl.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.pageviewevent.referrer.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.payload.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.payloadbuilder.add.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.payloadbuilder.addcontextentity.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.payloadbuilder.adddict.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.payloadbuilder.addjson.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.payloadbuilder.build.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.payloadbuilder.getjson.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.payloadbuilder.getpayload.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.payloadbuilder.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.payloadbuilder.withjsonprocessor.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.removefromcartevent.category.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.removefromcartevent.currency.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.removefromcartevent.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.removefromcartevent.name.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.removefromcartevent.quantity.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.removefromcartevent.sku.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.removefromcartevent.unitprice.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.screenviewevent.id.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.screenviewevent.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.screenviewevent.name.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.selfdescribingevent.event.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.selfdescribingevent.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.selfdescribingjson.md (84%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.sitesearchevent.filters.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.sitesearchevent.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.sitesearchevent.pageresults.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.sitesearchevent.terms.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.sitesearchevent.totalresults.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.socialinteractionevent.action.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.socialinteractionevent.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.socialinteractionevent.network.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.socialinteractionevent.target.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.structuredevent.action.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.structuredevent.category.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.structuredevent.label.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.structuredevent.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.structuredevent.property.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.structuredevent.value.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.timestamp.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.tracker.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.tracker.setdomainuserid.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.tracker.setnetworkuserid.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.tracker.setsessionid.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.tracker.setsessionindex.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/markdown/node-tracker.version.md (100%)
rename {trackers/node-tracker/docs => api-docs/docs/node-tracker}/node-tracker.api.md (100%)
create mode 100644 api-docs/docusaurus.config.js
create mode 100644 api-docs/package-lock.json
create mode 100644 api-docs/package.json
create mode 100644 api-docs/sidebars.js
create mode 100644 api-docs/src/css/custom.css
create mode 100644 api-docs/src/pages/index.md
create mode 100644 api-docs/src/pages/index.module.css
create mode 100644 api-docs/static/.nojekyll
create mode 100644 api-docs/static/img/favicon.ico
create mode 100644 common/changes/@snowplow/browser-tracker/issue-1255-host_js_docs_2023-11-28-10-57.json
create mode 100644 common/changes/@snowplow/node-tracker/issue-1255-host_js_docs_2023-11-28-10-57.json
create mode 100644 common/changes/@snowplow/tracker-core/issue-1255-host_js_docs_2023-11-28-10-57.json
diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml
new file mode 100644
index 000000000..a0f49e65f
--- /dev/null
+++ b/.github/workflows/docs.yml
@@ -0,0 +1,31 @@
+name: Deploy to GitHub Pages
+
+on:
+ workflow_run:
+ workflows: ['Deploy Tracker']
+ types:
+ - completed
+permissions:
+ contents: write
+
+jobs:
+ deploy:
+ name: Deploy to GitHub Pages
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+ - uses: actions/setup-node@v3
+ with:
+ node-version: 18
+
+ - name: Install dependencies
+ working-directory: ./api-docs
+ run: npm install
+ - name: Build website
+ working-directory: ./api-docs
+ run: npm run build
+ - name: Deploy to GitHub Pages
+ uses: peaceiris/actions-gh-pages@v3
+ with:
+ github_token: ${{ secrets.GITHUB_TOKEN }}
+ publish_dir: ./api-docs/build
diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml
index 1ec622866..5329c781e 100644
--- a/.github/workflows/publish.yml
+++ b/.github/workflows/publish.yml
@@ -67,18 +67,18 @@ jobs:
working-directory: ./trackers/browser-tracker
run: |
api-extractor run
- api-documenter markdown --input-folder temp --output-folder docs/markdown
+ api-documenter markdown --input-folder temp --output-folder ../../api-docs/docs/browser-tracker/markdown
- name: Create API documentation for @snowplow/node-tracker
working-directory: ./trackers/node-tracker
run: |
api-extractor run
- api-documenter markdown --input-folder temp --output-folder docs/markdown
+ api-documenter markdown --input-folder temp --output-folder ../../api-docs/docs/node-tracker/markdown
- name: Apply API documentation updates
run: |
- git add trackers/browser-tracker/docs
- git add trackers/node-tracker/docs
+ git add api-docs/docs/browser-tracker
+ git add api-docs/docs/node-tracker
git commit --no-verify --allow-empty -m "Applying documentation updates."
git push
diff --git a/api-docs/.gitignore b/api-docs/.gitignore
new file mode 100644
index 000000000..b2d6de306
--- /dev/null
+++ b/api-docs/.gitignore
@@ -0,0 +1,20 @@
+# Dependencies
+/node_modules
+
+# Production
+/build
+
+# Generated files
+.docusaurus
+.cache-loader
+
+# Misc
+.DS_Store
+.env.local
+.env.development.local
+.env.test.local
+.env.production.local
+
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
diff --git a/api-docs/babel.config.js b/api-docs/babel.config.js
new file mode 100644
index 000000000..e00595dae
--- /dev/null
+++ b/api-docs/babel.config.js
@@ -0,0 +1,3 @@
+module.exports = {
+ presets: [require.resolve('@docusaurus/core/lib/babel/preset')],
+};
diff --git a/trackers/browser-tracker/docs/browser-tracker.api.md b/api-docs/docs/browser-tracker/browser-tracker.api.md
similarity index 100%
rename from trackers/browser-tracker/docs/browser-tracker.api.md
rename to api-docs/docs/browser-tracker/browser-tracker.api.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.activitycallback.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.activitycallback.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.activitycallback.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.activitycallback.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.activitycallbackdata.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.activitycallbackdata.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.activitycallbackdata.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.activitycallbackdata.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.activitytrackingconfiguration.heartbeatdelay.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.activitytrackingconfiguration.heartbeatdelay.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.activitytrackingconfiguration.heartbeatdelay.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.activitytrackingconfiguration.heartbeatdelay.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.activitytrackingconfiguration.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.activitytrackingconfiguration.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.activitytrackingconfiguration.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.activitytrackingconfiguration.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.activitytrackingconfiguration.minimumvisitlength.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.activitytrackingconfiguration.minimumvisitlength.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.activitytrackingconfiguration.minimumvisitlength.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.activitytrackingconfiguration.minimumvisitlength.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.activitytrackingconfigurationcallback.callback.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.activitytrackingconfigurationcallback.callback.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.activitytrackingconfigurationcallback.callback.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.activitytrackingconfigurationcallback.callback.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.activitytrackingconfigurationcallback.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.activitytrackingconfigurationcallback.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.activitytrackingconfigurationcallback.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.activitytrackingconfigurationcallback.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.addglobalcontexts.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.addglobalcontexts.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.addglobalcontexts.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.addglobalcontexts.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.addplugin.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.addplugin.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.addplugin.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.addplugin.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.anonymoustrackingoptions.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.anonymoustrackingoptions.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.anonymoustrackingoptions.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.anonymoustrackingoptions.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.browserplugin.activatebrowserplugin.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.browserplugin.activatebrowserplugin.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.browserplugin.activatebrowserplugin.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.browserplugin.activatebrowserplugin.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.browserplugin.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.browserplugin.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.browserplugin.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.browserplugin.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.browserpluginconfiguration.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.browserpluginconfiguration.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.browserpluginconfiguration.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.browserpluginconfiguration.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.browserpluginconfiguration.plugin.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.browserpluginconfiguration.plugin.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.browserpluginconfiguration.plugin.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.browserpluginconfiguration.plugin.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.addplugin.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.addplugin.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.addplugin.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.addplugin.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.clearuserdata.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.clearuserdata.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.clearuserdata.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.clearuserdata.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.core.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.core.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.core.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.core.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.crossdomainlinker.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.crossdomainlinker.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.crossdomainlinker.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.crossdomainlinker.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.disableactivitytracking.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.disableactivitytracking.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.disableactivitytracking.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.disableactivitytracking.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.disableactivitytrackingcallback.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.disableactivitytrackingcallback.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.disableactivitytrackingcallback.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.disableactivitytrackingcallback.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.disableanonymoustracking.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.disableanonymoustracking.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.disableanonymoustracking.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.disableanonymoustracking.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.discardbrace.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.discardbrace.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.discardbrace.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.discardbrace.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.discardhashtag.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.discardhashtag.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.discardhashtag.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.discardhashtag.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.enableactivitytracking.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.enableactivitytracking.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.enableactivitytracking.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.enableactivitytracking.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.enableactivitytrackingcallback.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.enableactivitytrackingcallback.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.enableactivitytrackingcallback.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.enableactivitytrackingcallback.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.enableanonymoustracking.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.enableanonymoustracking.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.enableanonymoustracking.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.enableanonymoustracking.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.flushbuffer.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.flushbuffer.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.flushbuffer.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.flushbuffer.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.getcookiename.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.getcookiename.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.getcookiename.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.getcookiename.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.getdomainsessionindex.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.getdomainsessionindex.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.getdomainsessionindex.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.getdomainsessionindex.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.getdomainuserid.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.getdomainuserid.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.getdomainuserid.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.getdomainuserid.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.getdomainuserinfo.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.getdomainuserinfo.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.getdomainuserinfo.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.getdomainuserinfo.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.getpageviewid.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.getpageviewid.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.getpageviewid.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.getpageviewid.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.gettabid.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.gettabid.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.gettabid.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.gettabid.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.getuserid.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.getuserid.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.getuserid.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.getuserid.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.id.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.id.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.id.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.id.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.namespace.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.namespace.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.namespace.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.namespace.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.newsession.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.newsession.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.newsession.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.newsession.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.preservepageviewid.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.preservepageviewid.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.preservepageviewid.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.preservepageviewid.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.setbuffersize.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.setbuffersize.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.setbuffersize.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.setbuffersize.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.setcollectorurl.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.setcollectorurl.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.setcollectorurl.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.setcollectorurl.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.setcookiepath.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.setcookiepath.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.setcookiepath.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.setcookiepath.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.setcustomurl.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.setcustomurl.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.setcustomurl.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.setcustomurl.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.setdocumenttitle.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.setdocumenttitle.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.setdocumenttitle.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.setdocumenttitle.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.setoptoutcookie.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.setoptoutcookie.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.setoptoutcookie.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.setoptoutcookie.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.setreferrerurl.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.setreferrerurl.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.setreferrerurl.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.setreferrerurl.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.setuserid.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.setuserid.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.setuserid.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.setuserid.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.setuseridfromcookie.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.setuseridfromcookie.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.setuseridfromcookie.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.setuseridfromcookie.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.setuseridfromlocation.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.setuseridfromlocation.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.setuseridfromlocation.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.setuseridfromlocation.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.setuseridfromreferrer.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.setuseridfromreferrer.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.setuseridfromreferrer.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.setuseridfromreferrer.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.setvisitorcookietimeout.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.setvisitorcookietimeout.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.setvisitorcookietimeout.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.setvisitorcookietimeout.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.sharedstate.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.sharedstate.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.sharedstate.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.sharedstate.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.trackpageview.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.trackpageview.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.trackpageview.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.trackpageview.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.updatepageactivity.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.updatepageactivity.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.browsertracker.updatepageactivity.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.updatepageactivity.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.builtincontexts.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.builtincontexts.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.builtincontexts.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.builtincontexts.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.clearglobalcontexts.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.clearglobalcontexts.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.clearglobalcontexts.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.clearglobalcontexts.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.clearuserdata.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.clearuserdata.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.clearuserdata.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.clearuserdata.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.clearuserdataconfiguration.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.clearuserdataconfiguration.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.clearuserdataconfiguration.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.clearuserdataconfiguration.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.clearuserdataconfiguration.preservesession.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.clearuserdataconfiguration.preservesession.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.clearuserdataconfiguration.preservesession.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.clearuserdataconfiguration.preservesession.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.clearuserdataconfiguration.preserveuser.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.clearuserdataconfiguration.preserveuser.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.clearuserdataconfiguration.preserveuser.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.clearuserdataconfiguration.preserveuser.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.clientsession.eventindex.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.clientsession.eventindex.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.clientsession.eventindex.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.clientsession.eventindex.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.clientsession.firsteventid.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.clientsession.firsteventid.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.clientsession.firsteventid.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.clientsession.firsteventid.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.clientsession.firsteventtimestamp.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.clientsession.firsteventtimestamp.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.clientsession.firsteventtimestamp.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.clientsession.firsteventtimestamp.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.clientsession.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.clientsession.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.clientsession.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.clientsession.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.clientsession.previoussessionid.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.clientsession.previoussessionid.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.clientsession.previoussessionid.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.clientsession.previoussessionid.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.clientsession.sessionid.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.clientsession.sessionid.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.clientsession.sessionid.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.clientsession.sessionid.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.clientsession.sessionindex.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.clientsession.sessionindex.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.clientsession.sessionindex.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.clientsession.sessionindex.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.clientsession.storagemechanism.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.clientsession.storagemechanism.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.clientsession.storagemechanism.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.clientsession.storagemechanism.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.clientsession.userid.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.clientsession.userid.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.clientsession.userid.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.clientsession.userid.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.commoneventproperties.context.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.commoneventproperties.context.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.commoneventproperties.context.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.commoneventproperties.context.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.commoneventproperties.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.commoneventproperties.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.commoneventproperties.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.commoneventproperties.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.commoneventproperties.timestamp.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.commoneventproperties.timestamp.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.commoneventproperties.timestamp.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.commoneventproperties.timestamp.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.conditionalcontextprovider.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.conditionalcontextprovider.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.conditionalcontextprovider.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.conditionalcontextprovider.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.contextevent.event.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.contextevent.event.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.contextevent.event.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.contextevent.event.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.contextevent.eventschema.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.contextevent.eventschema.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.contextevent.eventschema.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.contextevent.eventschema.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.contextevent.eventtype.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.contextevent.eventtype.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.contextevent.eventtype.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.contextevent.eventtype.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.contextevent.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.contextevent.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.contextevent.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.contextevent.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.contextfilter.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.contextfilter.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.contextfilter.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.contextfilter.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.contextgenerator.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.contextgenerator.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.contextgenerator.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.contextgenerator.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.contextprimitive.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.contextprimitive.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.contextprimitive.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.contextprimitive.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.cookiesamesite.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.cookiesamesite.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.cookiesamesite.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.cookiesamesite.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.crossdomainlinker.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.crossdomainlinker.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.crossdomainlinker.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.crossdomainlinker.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.disableactivitytracking.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.disableactivitytracking.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.disableactivitytracking.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.disableactivitytracking.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.disableactivitytrackingcallback.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.disableactivitytrackingcallback.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.disableactivitytrackingcallback.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.disableactivitytrackingcallback.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.disableanonymoustracking.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.disableanonymoustracking.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.disableanonymoustracking.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.disableanonymoustracking.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.disableanonymoustrackingconfiguration.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.disableanonymoustrackingconfiguration.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.disableanonymoustrackingconfiguration.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.disableanonymoustrackingconfiguration.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.disableanonymoustrackingconfiguration.statestoragestrategy.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.disableanonymoustrackingconfiguration.statestoragestrategy.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.disableanonymoustrackingconfiguration.statestoragestrategy.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.disableanonymoustrackingconfiguration.statestoragestrategy.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.discardbrace.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.discardbrace.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.discardbrace.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.discardbrace.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.discardhashtag.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.discardhashtag.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.discardhashtag.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.discardhashtag.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.enableactivitytracking.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.enableactivitytracking.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.enableactivitytracking.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.enableactivitytracking.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.enableactivitytrackingcallback.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.enableactivitytrackingcallback.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.enableactivitytrackingcallback.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.enableactivitytrackingcallback.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.enableanonymoustracking.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.enableanonymoustracking.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.enableanonymoustracking.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.enableanonymoustracking.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.enableanonymoustrackingconfiguration.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.enableanonymoustrackingconfiguration.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.enableanonymoustrackingconfiguration.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.enableanonymoustrackingconfiguration.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.enableanonymoustrackingconfiguration.options.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.enableanonymoustrackingconfiguration.options.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.enableanonymoustrackingconfiguration.options.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.enableanonymoustrackingconfiguration.options.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.enableanonymoustrackingconfiguration.statestoragestrategy.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.enableanonymoustrackingconfiguration.statestoragestrategy.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.enableanonymoustrackingconfiguration.statestoragestrategy.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.enableanonymoustrackingconfiguration.statestoragestrategy.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.eventmethod.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.eventmethod.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.eventmethod.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.eventmethod.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.filterprovider.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.filterprovider.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.filterprovider.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.filterprovider.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.flushbuffer.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.flushbuffer.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.flushbuffer.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.flushbuffer.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.flushbufferconfiguration.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.flushbufferconfiguration.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.flushbufferconfiguration.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.flushbufferconfiguration.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.flushbufferconfiguration.newbuffersize.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.flushbufferconfiguration.newbuffersize.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.flushbufferconfiguration.newbuffersize.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.flushbufferconfiguration.newbuffersize.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.newsession.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.newsession.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.newsession.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.newsession.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.newtracker.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.newtracker.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.newtracker.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.newtracker.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.newtracker_1.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.newtracker_1.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.newtracker_1.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.newtracker_1.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.pageviewevent.contextcallback.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.pageviewevent.contextcallback.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.pageviewevent.contextcallback.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.pageviewevent.contextcallback.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.pageviewevent.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.pageviewevent.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.pageviewevent.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.pageviewevent.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.pageviewevent.title.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.pageviewevent.title.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.pageviewevent.title.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.pageviewevent.title.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.platform.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.platform.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.platform.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.platform.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.preservepageviewid.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.preservepageviewid.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.preservepageviewid.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.preservepageviewid.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.removeglobalcontexts.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.removeglobalcontexts.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.removeglobalcontexts.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.removeglobalcontexts.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.ruleset.accept.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.ruleset.accept.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.ruleset.accept.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.ruleset.accept.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.ruleset.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.ruleset.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.ruleset.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.ruleset.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.ruleset.reject.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.ruleset.reject.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.ruleset.reject.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.ruleset.reject.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.rulesetprovider.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.rulesetprovider.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.rulesetprovider.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.rulesetprovider.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.selfdescribingevent.event.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.selfdescribingevent.event.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.selfdescribingevent.event.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.selfdescribingevent.event.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.selfdescribingevent.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.selfdescribingevent.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.selfdescribingevent.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.selfdescribingevent.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.selfdescribingjson.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.selfdescribingjson.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.selfdescribingjson.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.selfdescribingjson.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.setbuffersize.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.setbuffersize.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.setbuffersize.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.setbuffersize.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.setcollectorurl.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.setcollectorurl.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.setcollectorurl.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.setcollectorurl.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.setcookiepath.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.setcookiepath.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.setcookiepath.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.setcookiepath.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.setcustomurl.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.setcustomurl.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.setcustomurl.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.setcustomurl.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.setdocumenttitle.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.setdocumenttitle.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.setdocumenttitle.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.setdocumenttitle.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.setoptoutcookie.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.setoptoutcookie.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.setoptoutcookie.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.setoptoutcookie.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.setreferrerurl.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.setreferrerurl.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.setreferrerurl.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.setreferrerurl.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.setuserid.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.setuserid.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.setuserid.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.setuserid.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.setuseridfromcookie.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.setuseridfromcookie.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.setuseridfromcookie.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.setuseridfromcookie.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.setuseridfromlocation.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.setuseridfromlocation.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.setuseridfromlocation.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.setuseridfromlocation.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.setuseridfromreferrer.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.setuseridfromreferrer.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.setuseridfromreferrer.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.setuseridfromreferrer.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.setvisitorcookietimeout.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.setvisitorcookietimeout.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.setvisitorcookietimeout.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.setvisitorcookietimeout.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.statestoragestrategy.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.statestoragestrategy.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.statestoragestrategy.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.statestoragestrategy.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.structuredevent.action.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.structuredevent.action.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.structuredevent.action.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.structuredevent.action.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.structuredevent.category.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.structuredevent.category.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.structuredevent.category.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.structuredevent.category.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.structuredevent.label.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.structuredevent.label.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.structuredevent.label.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.structuredevent.label.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.structuredevent.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.structuredevent.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.structuredevent.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.structuredevent.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.structuredevent.property.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.structuredevent.property.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.structuredevent.property.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.structuredevent.property.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.structuredevent.value.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.structuredevent.value.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.structuredevent.value.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.structuredevent.value.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.trackerconfiguration.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.trackerconfiguration.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.trackerconfiguration.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.trackerconfiguration.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.trackpageview.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.trackpageview.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.trackpageview.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.trackpageview.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.trackselfdescribingevent.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.trackselfdescribingevent.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.trackselfdescribingevent.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.trackselfdescribingevent.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.trackstructevent.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.trackstructevent.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.trackstructevent.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.trackstructevent.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.updatepageactivity.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.updatepageactivity.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.updatepageactivity.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.updatepageactivity.md
diff --git a/trackers/browser-tracker/docs/markdown/browser-tracker.version.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.version.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/browser-tracker.version.md
rename to api-docs/docs/browser-tracker/markdown/browser-tracker.version.md
diff --git a/trackers/browser-tracker/docs/markdown/index.md b/api-docs/docs/browser-tracker/markdown/index.md
similarity index 100%
rename from trackers/browser-tracker/docs/markdown/index.md
rename to api-docs/docs/browser-tracker/markdown/index.md
diff --git a/api-docs/docs/index.md b/api-docs/docs/index.md
new file mode 100644
index 000000000..e2d694363
--- /dev/null
+++ b/api-docs/docs/index.md
@@ -0,0 +1,22 @@
+---
+sidebar_position: 1
+---
+
+# JavaScript Trackers
+The Snowplow JavaScript Trackers support being used in a number of environments. There are three versions of the tracker.
+
+## Web tracking
+We have two flavours of web tracker: JavaScript and Browser.
+
+- JavaScript Tracker (v2 and v3) for loading via tags, by adding code snippets to your website or Tag Manager solution.
+- Browser Tracker (v3) for installation into web apps via npm. Popular when natively integrating tracking into React, Angular and Vue applications.
+
+Find the documentation for both in the [Web trackers](https://docs.snowplow.io/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/) section.
+
+
+## Server-side tracking
+Track events in server-side Node.js environments using the Node.js Tracker (v3). Used via npm.
+
+Find the documentation in the [Node.js tracker](https://docs.snowplow.io/docs/collecting-data/collecting-from-own-applications/javascript-trackers/node-js-tracker) section.
+
+
diff --git a/trackers/node-tracker/docs/markdown/index.md b/api-docs/docs/node-tracker/markdown/index.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/index.md
rename to api-docs/docs/node-tracker/markdown/index.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.adclickevent.advertiserid.md b/api-docs/docs/node-tracker/markdown/node-tracker.adclickevent.advertiserid.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.adclickevent.advertiserid.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.adclickevent.advertiserid.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.adclickevent.bannerid.md b/api-docs/docs/node-tracker/markdown/node-tracker.adclickevent.bannerid.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.adclickevent.bannerid.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.adclickevent.bannerid.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.adclickevent.campaignid.md b/api-docs/docs/node-tracker/markdown/node-tracker.adclickevent.campaignid.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.adclickevent.campaignid.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.adclickevent.campaignid.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.adclickevent.clickid.md b/api-docs/docs/node-tracker/markdown/node-tracker.adclickevent.clickid.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.adclickevent.clickid.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.adclickevent.clickid.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.adclickevent.cost.md b/api-docs/docs/node-tracker/markdown/node-tracker.adclickevent.cost.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.adclickevent.cost.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.adclickevent.cost.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.adclickevent.costmodel.md b/api-docs/docs/node-tracker/markdown/node-tracker.adclickevent.costmodel.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.adclickevent.costmodel.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.adclickevent.costmodel.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.adclickevent.impressionid.md b/api-docs/docs/node-tracker/markdown/node-tracker.adclickevent.impressionid.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.adclickevent.impressionid.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.adclickevent.impressionid.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.adclickevent.md b/api-docs/docs/node-tracker/markdown/node-tracker.adclickevent.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.adclickevent.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.adclickevent.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.adclickevent.targeturl.md b/api-docs/docs/node-tracker/markdown/node-tracker.adclickevent.targeturl.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.adclickevent.targeturl.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.adclickevent.targeturl.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.adclickevent.zoneid.md b/api-docs/docs/node-tracker/markdown/node-tracker.adclickevent.zoneid.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.adclickevent.zoneid.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.adclickevent.zoneid.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.adconversionevent.action.md b/api-docs/docs/node-tracker/markdown/node-tracker.adconversionevent.action.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.adconversionevent.action.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.adconversionevent.action.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.adconversionevent.advertiserid.md b/api-docs/docs/node-tracker/markdown/node-tracker.adconversionevent.advertiserid.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.adconversionevent.advertiserid.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.adconversionevent.advertiserid.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.adconversionevent.campaignid.md b/api-docs/docs/node-tracker/markdown/node-tracker.adconversionevent.campaignid.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.adconversionevent.campaignid.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.adconversionevent.campaignid.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.adconversionevent.category.md b/api-docs/docs/node-tracker/markdown/node-tracker.adconversionevent.category.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.adconversionevent.category.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.adconversionevent.category.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.adconversionevent.conversionid.md b/api-docs/docs/node-tracker/markdown/node-tracker.adconversionevent.conversionid.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.adconversionevent.conversionid.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.adconversionevent.conversionid.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.adconversionevent.cost.md b/api-docs/docs/node-tracker/markdown/node-tracker.adconversionevent.cost.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.adconversionevent.cost.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.adconversionevent.cost.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.adconversionevent.costmodel.md b/api-docs/docs/node-tracker/markdown/node-tracker.adconversionevent.costmodel.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.adconversionevent.costmodel.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.adconversionevent.costmodel.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.adconversionevent.initialvalue.md b/api-docs/docs/node-tracker/markdown/node-tracker.adconversionevent.initialvalue.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.adconversionevent.initialvalue.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.adconversionevent.initialvalue.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.adconversionevent.md b/api-docs/docs/node-tracker/markdown/node-tracker.adconversionevent.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.adconversionevent.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.adconversionevent.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.adconversionevent.property.md b/api-docs/docs/node-tracker/markdown/node-tracker.adconversionevent.property.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.adconversionevent.property.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.adconversionevent.property.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.addtocartevent.category.md b/api-docs/docs/node-tracker/markdown/node-tracker.addtocartevent.category.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.addtocartevent.category.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.addtocartevent.category.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.addtocartevent.currency.md b/api-docs/docs/node-tracker/markdown/node-tracker.addtocartevent.currency.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.addtocartevent.currency.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.addtocartevent.currency.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.addtocartevent.md b/api-docs/docs/node-tracker/markdown/node-tracker.addtocartevent.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.addtocartevent.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.addtocartevent.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.addtocartevent.name.md b/api-docs/docs/node-tracker/markdown/node-tracker.addtocartevent.name.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.addtocartevent.name.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.addtocartevent.name.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.addtocartevent.quantity.md b/api-docs/docs/node-tracker/markdown/node-tracker.addtocartevent.quantity.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.addtocartevent.quantity.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.addtocartevent.quantity.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.addtocartevent.sku.md b/api-docs/docs/node-tracker/markdown/node-tracker.addtocartevent.sku.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.addtocartevent.sku.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.addtocartevent.sku.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.addtocartevent.unitprice.md b/api-docs/docs/node-tracker/markdown/node-tracker.addtocartevent.unitprice.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.addtocartevent.unitprice.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.addtocartevent.unitprice.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.adimpressionevent.advertiserid.md b/api-docs/docs/node-tracker/markdown/node-tracker.adimpressionevent.advertiserid.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.adimpressionevent.advertiserid.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.adimpressionevent.advertiserid.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.adimpressionevent.bannerid.md b/api-docs/docs/node-tracker/markdown/node-tracker.adimpressionevent.bannerid.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.adimpressionevent.bannerid.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.adimpressionevent.bannerid.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.adimpressionevent.campaignid.md b/api-docs/docs/node-tracker/markdown/node-tracker.adimpressionevent.campaignid.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.adimpressionevent.campaignid.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.adimpressionevent.campaignid.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.adimpressionevent.cost.md b/api-docs/docs/node-tracker/markdown/node-tracker.adimpressionevent.cost.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.adimpressionevent.cost.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.adimpressionevent.cost.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.adimpressionevent.costmodel.md b/api-docs/docs/node-tracker/markdown/node-tracker.adimpressionevent.costmodel.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.adimpressionevent.costmodel.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.adimpressionevent.costmodel.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.adimpressionevent.impressionid.md b/api-docs/docs/node-tracker/markdown/node-tracker.adimpressionevent.impressionid.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.adimpressionevent.impressionid.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.adimpressionevent.impressionid.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.adimpressionevent.md b/api-docs/docs/node-tracker/markdown/node-tracker.adimpressionevent.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.adimpressionevent.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.adimpressionevent.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.adimpressionevent.targeturl.md b/api-docs/docs/node-tracker/markdown/node-tracker.adimpressionevent.targeturl.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.adimpressionevent.targeturl.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.adimpressionevent.targeturl.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.adimpressionevent.zoneid.md b/api-docs/docs/node-tracker/markdown/node-tracker.adimpressionevent.zoneid.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.adimpressionevent.zoneid.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.adimpressionevent.zoneid.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.buildadclick.md b/api-docs/docs/node-tracker/markdown/node-tracker.buildadclick.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.buildadclick.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.buildadclick.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.buildadconversion.md b/api-docs/docs/node-tracker/markdown/node-tracker.buildadconversion.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.buildadconversion.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.buildadconversion.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.buildaddtocart.md b/api-docs/docs/node-tracker/markdown/node-tracker.buildaddtocart.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.buildaddtocart.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.buildaddtocart.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.buildadimpression.md b/api-docs/docs/node-tracker/markdown/node-tracker.buildadimpression.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.buildadimpression.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.buildadimpression.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.buildconsentgranted.md b/api-docs/docs/node-tracker/markdown/node-tracker.buildconsentgranted.md
similarity index 86%
rename from trackers/node-tracker/docs/markdown/node-tracker.buildconsentgranted.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.buildconsentgranted.md
index da5d9a077..7c9272b65 100644
--- a/trackers/node-tracker/docs/markdown/node-tracker.buildconsentgranted.md
+++ b/api-docs/docs/node-tracker/markdown/node-tracker.buildconsentgranted.md
@@ -26,7 +26,7 @@ declare function buildConsentGranted(event: ConsentGrantedEvent): {
Returns:
-{ event: PayloadBuilder; context: { schema: string; data: Record<string, unknown>; }\[\]; }
+`{ event: PayloadBuilder; context: { schema: string; data: Record<string, unknown>; }\[\]; }`
An object containing the PayloadBuilder to be sent to and a 'consent\_document' context
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.buildconsentwithdrawn.md b/api-docs/docs/node-tracker/markdown/node-tracker.buildconsentwithdrawn.md
similarity index 86%
rename from trackers/node-tracker/docs/markdown/node-tracker.buildconsentwithdrawn.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.buildconsentwithdrawn.md
index dc59cff79..9c6128a27 100644
--- a/trackers/node-tracker/docs/markdown/node-tracker.buildconsentwithdrawn.md
+++ b/api-docs/docs/node-tracker/markdown/node-tracker.buildconsentwithdrawn.md
@@ -26,7 +26,7 @@ declare function buildConsentWithdrawn(event: ConsentWithdrawnEvent): {
Returns:
-{ event: PayloadBuilder; context: { schema: string; data: Record<string, unknown>; }\[\]; }
+`{ event: PayloadBuilder; context: { schema: string; data: Record<string, unknown>; }\[\]; }`
An object containing the PayloadBuilder to be sent to and a 'consent\_document' context
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.buildecommercetransaction.md b/api-docs/docs/node-tracker/markdown/node-tracker.buildecommercetransaction.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.buildecommercetransaction.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.buildecommercetransaction.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.buildecommercetransactionitem.md b/api-docs/docs/node-tracker/markdown/node-tracker.buildecommercetransactionitem.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.buildecommercetransactionitem.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.buildecommercetransactionitem.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.buildformfocusorchange.md b/api-docs/docs/node-tracker/markdown/node-tracker.buildformfocusorchange.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.buildformfocusorchange.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.buildformfocusorchange.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.buildformsubmission.md b/api-docs/docs/node-tracker/markdown/node-tracker.buildformsubmission.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.buildformsubmission.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.buildformsubmission.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.buildlinkclick.md b/api-docs/docs/node-tracker/markdown/node-tracker.buildlinkclick.md
similarity index 90%
rename from trackers/node-tracker/docs/markdown/node-tracker.buildlinkclick.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.buildlinkclick.md
index c9e082945..0d93ee880 100644
--- a/trackers/node-tracker/docs/markdown/node-tracker.buildlinkclick.md
+++ b/api-docs/docs/node-tracker/markdown/node-tracker.buildlinkclick.md
@@ -4,7 +4,7 @@
## buildLinkClick() function
-Build a Link Click Event Used when a user clicks on a link on a webpage, typically an anchor tag
+Build a Link Click Event Used when a user clicks on a link on a webpage, typically an anchor tag ``
Signature:
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.buildpageping.md b/api-docs/docs/node-tracker/markdown/node-tracker.buildpageping.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.buildpageping.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.buildpageping.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.buildpageview.md b/api-docs/docs/node-tracker/markdown/node-tracker.buildpageview.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.buildpageview.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.buildpageview.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.buildremovefromcart.md b/api-docs/docs/node-tracker/markdown/node-tracker.buildremovefromcart.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.buildremovefromcart.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.buildremovefromcart.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.buildscreenview.md b/api-docs/docs/node-tracker/markdown/node-tracker.buildscreenview.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.buildscreenview.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.buildscreenview.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.buildselfdescribingevent.md b/api-docs/docs/node-tracker/markdown/node-tracker.buildselfdescribingevent.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.buildselfdescribingevent.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.buildselfdescribingevent.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.buildsitesearch.md b/api-docs/docs/node-tracker/markdown/node-tracker.buildsitesearch.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.buildsitesearch.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.buildsitesearch.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.buildsocialinteraction.md b/api-docs/docs/node-tracker/markdown/node-tracker.buildsocialinteraction.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.buildsocialinteraction.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.buildsocialinteraction.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.buildstructevent.md b/api-docs/docs/node-tracker/markdown/node-tracker.buildstructevent.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.buildstructevent.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.buildstructevent.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.consentgrantedevent.description.md b/api-docs/docs/node-tracker/markdown/node-tracker.consentgrantedevent.description.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.consentgrantedevent.description.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.consentgrantedevent.description.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.consentgrantedevent.expiry.md b/api-docs/docs/node-tracker/markdown/node-tracker.consentgrantedevent.expiry.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.consentgrantedevent.expiry.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.consentgrantedevent.expiry.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.consentgrantedevent.id.md b/api-docs/docs/node-tracker/markdown/node-tracker.consentgrantedevent.id.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.consentgrantedevent.id.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.consentgrantedevent.id.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.consentgrantedevent.md b/api-docs/docs/node-tracker/markdown/node-tracker.consentgrantedevent.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.consentgrantedevent.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.consentgrantedevent.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.consentgrantedevent.name.md b/api-docs/docs/node-tracker/markdown/node-tracker.consentgrantedevent.name.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.consentgrantedevent.name.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.consentgrantedevent.name.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.consentgrantedevent.version.md b/api-docs/docs/node-tracker/markdown/node-tracker.consentgrantedevent.version.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.consentgrantedevent.version.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.consentgrantedevent.version.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.consentwithdrawnevent.all.md b/api-docs/docs/node-tracker/markdown/node-tracker.consentwithdrawnevent.all.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.consentwithdrawnevent.all.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.consentwithdrawnevent.all.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.consentwithdrawnevent.description.md b/api-docs/docs/node-tracker/markdown/node-tracker.consentwithdrawnevent.description.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.consentwithdrawnevent.description.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.consentwithdrawnevent.description.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.consentwithdrawnevent.id.md b/api-docs/docs/node-tracker/markdown/node-tracker.consentwithdrawnevent.id.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.consentwithdrawnevent.id.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.consentwithdrawnevent.id.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.consentwithdrawnevent.md b/api-docs/docs/node-tracker/markdown/node-tracker.consentwithdrawnevent.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.consentwithdrawnevent.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.consentwithdrawnevent.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.consentwithdrawnevent.name.md b/api-docs/docs/node-tracker/markdown/node-tracker.consentwithdrawnevent.name.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.consentwithdrawnevent.name.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.consentwithdrawnevent.name.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.consentwithdrawnevent.version.md b/api-docs/docs/node-tracker/markdown/node-tracker.consentwithdrawnevent.version.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.consentwithdrawnevent.version.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.consentwithdrawnevent.version.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.contextevent.event.md b/api-docs/docs/node-tracker/markdown/node-tracker.contextevent.event.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.contextevent.event.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.contextevent.event.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.contextevent.eventschema.md b/api-docs/docs/node-tracker/markdown/node-tracker.contextevent.eventschema.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.contextevent.eventschema.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.contextevent.eventschema.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.contextevent.eventtype.md b/api-docs/docs/node-tracker/markdown/node-tracker.contextevent.eventtype.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.contextevent.eventtype.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.contextevent.eventtype.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.contextevent.md b/api-docs/docs/node-tracker/markdown/node-tracker.contextevent.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.contextevent.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.contextevent.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.contextfilter.md b/api-docs/docs/node-tracker/markdown/node-tracker.contextfilter.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.contextfilter.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.contextfilter.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.contextgenerator.md b/api-docs/docs/node-tracker/markdown/node-tracker.contextgenerator.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.contextgenerator.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.contextgenerator.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.coreconfiguration.base64.md b/api-docs/docs/node-tracker/markdown/node-tracker.coreconfiguration.base64.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.coreconfiguration.base64.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.coreconfiguration.base64.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.coreconfiguration.callback.md b/api-docs/docs/node-tracker/markdown/node-tracker.coreconfiguration.callback.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.coreconfiguration.callback.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.coreconfiguration.callback.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.coreconfiguration.coreplugins.md b/api-docs/docs/node-tracker/markdown/node-tracker.coreconfiguration.coreplugins.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.coreconfiguration.coreplugins.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.coreconfiguration.coreplugins.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.coreconfiguration.md b/api-docs/docs/node-tracker/markdown/node-tracker.coreconfiguration.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.coreconfiguration.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.coreconfiguration.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.coreplugin.activatecoreplugin.md b/api-docs/docs/node-tracker/markdown/node-tracker.coreplugin.activatecoreplugin.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.coreplugin.activatecoreplugin.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.coreplugin.activatecoreplugin.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.coreplugin.aftertrack.md b/api-docs/docs/node-tracker/markdown/node-tracker.coreplugin.aftertrack.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.coreplugin.aftertrack.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.coreplugin.aftertrack.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.coreplugin.beforetrack.md b/api-docs/docs/node-tracker/markdown/node-tracker.coreplugin.beforetrack.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.coreplugin.beforetrack.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.coreplugin.beforetrack.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.coreplugin.contexts.md b/api-docs/docs/node-tracker/markdown/node-tracker.coreplugin.contexts.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.coreplugin.contexts.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.coreplugin.contexts.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.coreplugin.logger.md b/api-docs/docs/node-tracker/markdown/node-tracker.coreplugin.logger.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.coreplugin.logger.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.coreplugin.logger.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.coreplugin.md b/api-docs/docs/node-tracker/markdown/node-tracker.coreplugin.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.coreplugin.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.coreplugin.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.ecommercetransactionevent.affiliation.md b/api-docs/docs/node-tracker/markdown/node-tracker.ecommercetransactionevent.affiliation.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.ecommercetransactionevent.affiliation.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.ecommercetransactionevent.affiliation.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.ecommercetransactionevent.city.md b/api-docs/docs/node-tracker/markdown/node-tracker.ecommercetransactionevent.city.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.ecommercetransactionevent.city.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.ecommercetransactionevent.city.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.ecommercetransactionevent.country.md b/api-docs/docs/node-tracker/markdown/node-tracker.ecommercetransactionevent.country.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.ecommercetransactionevent.country.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.ecommercetransactionevent.country.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.ecommercetransactionevent.currency.md b/api-docs/docs/node-tracker/markdown/node-tracker.ecommercetransactionevent.currency.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.ecommercetransactionevent.currency.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.ecommercetransactionevent.currency.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.ecommercetransactionevent.md b/api-docs/docs/node-tracker/markdown/node-tracker.ecommercetransactionevent.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.ecommercetransactionevent.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.ecommercetransactionevent.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.ecommercetransactionevent.orderid.md b/api-docs/docs/node-tracker/markdown/node-tracker.ecommercetransactionevent.orderid.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.ecommercetransactionevent.orderid.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.ecommercetransactionevent.orderid.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.ecommercetransactionevent.shipping.md b/api-docs/docs/node-tracker/markdown/node-tracker.ecommercetransactionevent.shipping.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.ecommercetransactionevent.shipping.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.ecommercetransactionevent.shipping.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.ecommercetransactionevent.state.md b/api-docs/docs/node-tracker/markdown/node-tracker.ecommercetransactionevent.state.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.ecommercetransactionevent.state.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.ecommercetransactionevent.state.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.ecommercetransactionevent.tax.md b/api-docs/docs/node-tracker/markdown/node-tracker.ecommercetransactionevent.tax.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.ecommercetransactionevent.tax.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.ecommercetransactionevent.tax.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.ecommercetransactionevent.total.md b/api-docs/docs/node-tracker/markdown/node-tracker.ecommercetransactionevent.total.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.ecommercetransactionevent.total.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.ecommercetransactionevent.total.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.ecommercetransactionitemevent.category.md b/api-docs/docs/node-tracker/markdown/node-tracker.ecommercetransactionitemevent.category.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.ecommercetransactionitemevent.category.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.ecommercetransactionitemevent.category.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.ecommercetransactionitemevent.currency.md b/api-docs/docs/node-tracker/markdown/node-tracker.ecommercetransactionitemevent.currency.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.ecommercetransactionitemevent.currency.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.ecommercetransactionitemevent.currency.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.ecommercetransactionitemevent.md b/api-docs/docs/node-tracker/markdown/node-tracker.ecommercetransactionitemevent.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.ecommercetransactionitemevent.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.ecommercetransactionitemevent.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.ecommercetransactionitemevent.name.md b/api-docs/docs/node-tracker/markdown/node-tracker.ecommercetransactionitemevent.name.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.ecommercetransactionitemevent.name.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.ecommercetransactionitemevent.name.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.ecommercetransactionitemevent.orderid.md b/api-docs/docs/node-tracker/markdown/node-tracker.ecommercetransactionitemevent.orderid.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.ecommercetransactionitemevent.orderid.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.ecommercetransactionitemevent.orderid.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.ecommercetransactionitemevent.price.md b/api-docs/docs/node-tracker/markdown/node-tracker.ecommercetransactionitemevent.price.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.ecommercetransactionitemevent.price.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.ecommercetransactionitemevent.price.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.ecommercetransactionitemevent.quantity.md b/api-docs/docs/node-tracker/markdown/node-tracker.ecommercetransactionitemevent.quantity.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.ecommercetransactionitemevent.quantity.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.ecommercetransactionitemevent.quantity.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.ecommercetransactionitemevent.sku.md b/api-docs/docs/node-tracker/markdown/node-tracker.ecommercetransactionitemevent.sku.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.ecommercetransactionitemevent.sku.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.ecommercetransactionitemevent.sku.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.emitter.flush.md b/api-docs/docs/node-tracker/markdown/node-tracker.emitter.flush.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.emitter.flush.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.emitter.flush.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.emitter.input.md b/api-docs/docs/node-tracker/markdown/node-tracker.emitter.input.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.emitter.input.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.emitter.input.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.emitter.md b/api-docs/docs/node-tracker/markdown/node-tracker.emitter.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.emitter.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.emitter.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.formfocusorchangeevent.elementclasses.md b/api-docs/docs/node-tracker/markdown/node-tracker.formfocusorchangeevent.elementclasses.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.formfocusorchangeevent.elementclasses.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.formfocusorchangeevent.elementclasses.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.formfocusorchangeevent.elementid.md b/api-docs/docs/node-tracker/markdown/node-tracker.formfocusorchangeevent.elementid.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.formfocusorchangeevent.elementid.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.formfocusorchangeevent.elementid.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.formfocusorchangeevent.formid.md b/api-docs/docs/node-tracker/markdown/node-tracker.formfocusorchangeevent.formid.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.formfocusorchangeevent.formid.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.formfocusorchangeevent.formid.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.formfocusorchangeevent.md b/api-docs/docs/node-tracker/markdown/node-tracker.formfocusorchangeevent.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.formfocusorchangeevent.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.formfocusorchangeevent.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.formfocusorchangeevent.nodename.md b/api-docs/docs/node-tracker/markdown/node-tracker.formfocusorchangeevent.nodename.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.formfocusorchangeevent.nodename.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.formfocusorchangeevent.nodename.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.formfocusorchangeevent.schema.md b/api-docs/docs/node-tracker/markdown/node-tracker.formfocusorchangeevent.schema.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.formfocusorchangeevent.schema.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.formfocusorchangeevent.schema.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.formfocusorchangeevent.type.md b/api-docs/docs/node-tracker/markdown/node-tracker.formfocusorchangeevent.type.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.formfocusorchangeevent.type.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.formfocusorchangeevent.type.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.formfocusorchangeevent.value.md b/api-docs/docs/node-tracker/markdown/node-tracker.formfocusorchangeevent.value.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.formfocusorchangeevent.value.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.formfocusorchangeevent.value.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.formsubmissionevent.elements.md b/api-docs/docs/node-tracker/markdown/node-tracker.formsubmissionevent.elements.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.formsubmissionevent.elements.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.formsubmissionevent.elements.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.formsubmissionevent.formclasses.md b/api-docs/docs/node-tracker/markdown/node-tracker.formsubmissionevent.formclasses.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.formsubmissionevent.formclasses.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.formsubmissionevent.formclasses.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.formsubmissionevent.formid.md b/api-docs/docs/node-tracker/markdown/node-tracker.formsubmissionevent.formid.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.formsubmissionevent.formid.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.formsubmissionevent.formid.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.formsubmissionevent.md b/api-docs/docs/node-tracker/markdown/node-tracker.formsubmissionevent.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.formsubmissionevent.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.formsubmissionevent.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.gotemitter.md b/api-docs/docs/node-tracker/markdown/node-tracker.gotemitter.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.gotemitter.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.gotemitter.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.httpmethod.md b/api-docs/docs/node-tracker/markdown/node-tracker.httpmethod.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.httpmethod.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.httpmethod.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.httpprotocol.md b/api-docs/docs/node-tracker/markdown/node-tracker.httpprotocol.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.httpprotocol.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.httpprotocol.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.linkclickevent.elementclasses.md b/api-docs/docs/node-tracker/markdown/node-tracker.linkclickevent.elementclasses.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.linkclickevent.elementclasses.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.linkclickevent.elementclasses.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.linkclickevent.elementcontent.md b/api-docs/docs/node-tracker/markdown/node-tracker.linkclickevent.elementcontent.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.linkclickevent.elementcontent.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.linkclickevent.elementcontent.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.linkclickevent.elementid.md b/api-docs/docs/node-tracker/markdown/node-tracker.linkclickevent.elementid.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.linkclickevent.elementid.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.linkclickevent.elementid.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.linkclickevent.elementtarget.md b/api-docs/docs/node-tracker/markdown/node-tracker.linkclickevent.elementtarget.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.linkclickevent.elementtarget.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.linkclickevent.elementtarget.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.linkclickevent.md b/api-docs/docs/node-tracker/markdown/node-tracker.linkclickevent.md
similarity index 95%
rename from trackers/node-tracker/docs/markdown/node-tracker.linkclickevent.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.linkclickevent.md
index 07a6312e0..4ec30914a 100644
--- a/trackers/node-tracker/docs/markdown/node-tracker.linkclickevent.md
+++ b/api-docs/docs/node-tracker/markdown/node-tracker.linkclickevent.md
@@ -4,7 +4,7 @@
## LinkClickEvent interface
-A Link Click Event Used when a user clicks on a link on a webpage, typically an anchor tag
+A Link Click Event Used when a user clicks on a link on a webpage, typically an anchor tag ``
Signature:
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.linkclickevent.targeturl.md b/api-docs/docs/node-tracker/markdown/node-tracker.linkclickevent.targeturl.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.linkclickevent.targeturl.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.linkclickevent.targeturl.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.md b/api-docs/docs/node-tracker/markdown/node-tracker.md
similarity index 97%
rename from trackers/node-tracker/docs/markdown/node-tracker.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.md
index 82ddbc525..6802206e8 100644
--- a/trackers/node-tracker/docs/markdown/node-tracker.md
+++ b/api-docs/docs/node-tracker/markdown/node-tracker.md
@@ -25,7 +25,7 @@
| [buildEcommerceTransactionItem(event)](./node-tracker.buildecommercetransactionitem.md) | Build an Ecommerce Transaction Item Event Related to the [buildEcommerceTransaction()](./node-tracker.buildecommercetransaction.md) Each Ecommerce Transaction may contain one or more EcommerceTransactionItem events |
| [buildFormFocusOrChange(event)](./node-tracker.buildformfocusorchange.md) | Build a Form Focus or Change Form Event based on schema property When a user focuses on a form element or when a user makes a change to a form element. |
| [buildFormSubmission(event)](./node-tracker.buildformsubmission.md) | Build a Form Submission Event Used to track when a user submits a form |
-| [buildLinkClick(event)](./node-tracker.buildlinkclick.md) | Build a Link Click Event Used when a user clicks on a link on a webpage, typically an anchor tag |
+| [buildLinkClick(event)](./node-tracker.buildlinkclick.md) | Build a Link Click Event Used when a user clicks on a link on a webpage, typically an anchor tag `` |
| [buildPagePing(event)](./node-tracker.buildpageping.md) | Build a Page Ping Event Fires when activity tracking is enabled in the browser. Tracks same information as the last tracked Page View and includes scroll information from the current page view |
| [buildPageView(event)](./node-tracker.buildpageview.md) | Build a Page View Event Represents a Page View, which is typically fired as soon as possible when a web page is loaded within the users browser. Often also fired on "virtual page views" within Single Page Applications (SPA). |
| [buildRemoveFromCart(event)](./node-tracker.buildremovefromcart.md) | Build a Remove From Cart Event For tracking users removing items from a cart on an ecommerce site. |
@@ -55,7 +55,7 @@
| [Emitter](./node-tracker.emitter.md) | |
| [FormFocusOrChangeEvent](./node-tracker.formfocusorchangeevent.md) | Represents either a Form Focus or Form Change event When a user focuses on a form element or when a user makes a change to a form element. |
| [FormSubmissionEvent](./node-tracker.formsubmissionevent.md) | A Form Submission Event Used to track when a user submits a form |
-| [LinkClickEvent](./node-tracker.linkclickevent.md) | A Link Click Event Used when a user clicks on a link on a webpage, typically an anchor tag |
+| [LinkClickEvent](./node-tracker.linkclickevent.md) | A Link Click Event Used when a user clicks on a link on a webpage, typically an anchor tag `` |
| [PagePingEvent](./node-tracker.pagepingevent.md) | A Page Ping Event Fires when activity tracking is enabled in the browser. Tracks same information as the last tracked Page View and includes scroll information from the current page view |
| [PageViewEvent](./node-tracker.pageviewevent.md) | A Page View Event Represents a Page View, which is typically fired as soon as possible when a web page is loaded within the users browser. Often also fired on "virtual page views" within Single Page Applications (SPA). |
| [PayloadBuilder](./node-tracker.payloadbuilder.md) | Interface for mutable object encapsulating tracker payload |
@@ -80,6 +80,6 @@
| [ContextFilter](./node-tracker.contextfilter.md) | A context filter is a user-supplied callback that is evaluated for each event to determine if the context associated with the filter should be attached to the event |
| [ContextGenerator](./node-tracker.contextgenerator.md) | A context generator is a user-supplied callback that is evaluated for each event to allow an additional context to be dynamically attached to the event |
| [Payload](./node-tracker.payload.md) | Type for a Payload dictionary |
-| [SelfDescribingJson](./node-tracker.selfdescribingjson.md) | export interface for any Self-Describing JSON such as context or Self Describing events |
+| [SelfDescribingJson](./node-tracker.selfdescribingjson.md) | Export interface for any Self-Describing JSON such as context or Self Describing events |
| [Timestamp](./node-tracker.timestamp.md) | Algebraic datatype representing possible timestamp type choice |
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.pagepingevent.maxxoffset.md b/api-docs/docs/node-tracker/markdown/node-tracker.pagepingevent.maxxoffset.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.pagepingevent.maxxoffset.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.pagepingevent.maxxoffset.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.pagepingevent.maxyoffset.md b/api-docs/docs/node-tracker/markdown/node-tracker.pagepingevent.maxyoffset.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.pagepingevent.maxyoffset.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.pagepingevent.maxyoffset.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.pagepingevent.md b/api-docs/docs/node-tracker/markdown/node-tracker.pagepingevent.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.pagepingevent.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.pagepingevent.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.pagepingevent.minxoffset.md b/api-docs/docs/node-tracker/markdown/node-tracker.pagepingevent.minxoffset.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.pagepingevent.minxoffset.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.pagepingevent.minxoffset.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.pagepingevent.minyoffset.md b/api-docs/docs/node-tracker/markdown/node-tracker.pagepingevent.minyoffset.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.pagepingevent.minyoffset.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.pagepingevent.minyoffset.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.pageviewevent.md b/api-docs/docs/node-tracker/markdown/node-tracker.pageviewevent.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.pageviewevent.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.pageviewevent.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.pageviewevent.pagetitle.md b/api-docs/docs/node-tracker/markdown/node-tracker.pageviewevent.pagetitle.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.pageviewevent.pagetitle.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.pageviewevent.pagetitle.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.pageviewevent.pageurl.md b/api-docs/docs/node-tracker/markdown/node-tracker.pageviewevent.pageurl.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.pageviewevent.pageurl.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.pageviewevent.pageurl.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.pageviewevent.referrer.md b/api-docs/docs/node-tracker/markdown/node-tracker.pageviewevent.referrer.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.pageviewevent.referrer.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.pageviewevent.referrer.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.payload.md b/api-docs/docs/node-tracker/markdown/node-tracker.payload.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.payload.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.payload.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.payloadbuilder.add.md b/api-docs/docs/node-tracker/markdown/node-tracker.payloadbuilder.add.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.payloadbuilder.add.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.payloadbuilder.add.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.payloadbuilder.addcontextentity.md b/api-docs/docs/node-tracker/markdown/node-tracker.payloadbuilder.addcontextentity.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.payloadbuilder.addcontextentity.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.payloadbuilder.addcontextentity.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.payloadbuilder.adddict.md b/api-docs/docs/node-tracker/markdown/node-tracker.payloadbuilder.adddict.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.payloadbuilder.adddict.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.payloadbuilder.adddict.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.payloadbuilder.addjson.md b/api-docs/docs/node-tracker/markdown/node-tracker.payloadbuilder.addjson.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.payloadbuilder.addjson.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.payloadbuilder.addjson.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.payloadbuilder.build.md b/api-docs/docs/node-tracker/markdown/node-tracker.payloadbuilder.build.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.payloadbuilder.build.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.payloadbuilder.build.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.payloadbuilder.getjson.md b/api-docs/docs/node-tracker/markdown/node-tracker.payloadbuilder.getjson.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.payloadbuilder.getjson.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.payloadbuilder.getjson.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.payloadbuilder.getpayload.md b/api-docs/docs/node-tracker/markdown/node-tracker.payloadbuilder.getpayload.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.payloadbuilder.getpayload.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.payloadbuilder.getpayload.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.payloadbuilder.md b/api-docs/docs/node-tracker/markdown/node-tracker.payloadbuilder.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.payloadbuilder.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.payloadbuilder.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.payloadbuilder.withjsonprocessor.md b/api-docs/docs/node-tracker/markdown/node-tracker.payloadbuilder.withjsonprocessor.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.payloadbuilder.withjsonprocessor.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.payloadbuilder.withjsonprocessor.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.removefromcartevent.category.md b/api-docs/docs/node-tracker/markdown/node-tracker.removefromcartevent.category.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.removefromcartevent.category.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.removefromcartevent.category.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.removefromcartevent.currency.md b/api-docs/docs/node-tracker/markdown/node-tracker.removefromcartevent.currency.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.removefromcartevent.currency.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.removefromcartevent.currency.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.removefromcartevent.md b/api-docs/docs/node-tracker/markdown/node-tracker.removefromcartevent.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.removefromcartevent.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.removefromcartevent.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.removefromcartevent.name.md b/api-docs/docs/node-tracker/markdown/node-tracker.removefromcartevent.name.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.removefromcartevent.name.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.removefromcartevent.name.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.removefromcartevent.quantity.md b/api-docs/docs/node-tracker/markdown/node-tracker.removefromcartevent.quantity.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.removefromcartevent.quantity.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.removefromcartevent.quantity.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.removefromcartevent.sku.md b/api-docs/docs/node-tracker/markdown/node-tracker.removefromcartevent.sku.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.removefromcartevent.sku.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.removefromcartevent.sku.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.removefromcartevent.unitprice.md b/api-docs/docs/node-tracker/markdown/node-tracker.removefromcartevent.unitprice.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.removefromcartevent.unitprice.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.removefromcartevent.unitprice.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.screenviewevent.id.md b/api-docs/docs/node-tracker/markdown/node-tracker.screenviewevent.id.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.screenviewevent.id.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.screenviewevent.id.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.screenviewevent.md b/api-docs/docs/node-tracker/markdown/node-tracker.screenviewevent.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.screenviewevent.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.screenviewevent.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.screenviewevent.name.md b/api-docs/docs/node-tracker/markdown/node-tracker.screenviewevent.name.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.screenviewevent.name.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.screenviewevent.name.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.selfdescribingevent.event.md b/api-docs/docs/node-tracker/markdown/node-tracker.selfdescribingevent.event.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.selfdescribingevent.event.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.selfdescribingevent.event.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.selfdescribingevent.md b/api-docs/docs/node-tracker/markdown/node-tracker.selfdescribingevent.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.selfdescribingevent.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.selfdescribingevent.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.selfdescribingjson.md b/api-docs/docs/node-tracker/markdown/node-tracker.selfdescribingjson.md
similarity index 84%
rename from trackers/node-tracker/docs/markdown/node-tracker.selfdescribingjson.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.selfdescribingjson.md
index a107c6c06..7807f98f5 100644
--- a/trackers/node-tracker/docs/markdown/node-tracker.selfdescribingjson.md
+++ b/api-docs/docs/node-tracker/markdown/node-tracker.selfdescribingjson.md
@@ -4,7 +4,7 @@
## SelfDescribingJson type
-export interface for any Self-Describing JSON such as context or Self Describing events
+Export interface for any Self-Describing JSON such as context or Self Describing events
Signature:
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.sitesearchevent.filters.md b/api-docs/docs/node-tracker/markdown/node-tracker.sitesearchevent.filters.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.sitesearchevent.filters.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.sitesearchevent.filters.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.sitesearchevent.md b/api-docs/docs/node-tracker/markdown/node-tracker.sitesearchevent.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.sitesearchevent.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.sitesearchevent.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.sitesearchevent.pageresults.md b/api-docs/docs/node-tracker/markdown/node-tracker.sitesearchevent.pageresults.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.sitesearchevent.pageresults.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.sitesearchevent.pageresults.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.sitesearchevent.terms.md b/api-docs/docs/node-tracker/markdown/node-tracker.sitesearchevent.terms.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.sitesearchevent.terms.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.sitesearchevent.terms.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.sitesearchevent.totalresults.md b/api-docs/docs/node-tracker/markdown/node-tracker.sitesearchevent.totalresults.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.sitesearchevent.totalresults.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.sitesearchevent.totalresults.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.socialinteractionevent.action.md b/api-docs/docs/node-tracker/markdown/node-tracker.socialinteractionevent.action.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.socialinteractionevent.action.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.socialinteractionevent.action.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.socialinteractionevent.md b/api-docs/docs/node-tracker/markdown/node-tracker.socialinteractionevent.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.socialinteractionevent.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.socialinteractionevent.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.socialinteractionevent.network.md b/api-docs/docs/node-tracker/markdown/node-tracker.socialinteractionevent.network.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.socialinteractionevent.network.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.socialinteractionevent.network.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.socialinteractionevent.target.md b/api-docs/docs/node-tracker/markdown/node-tracker.socialinteractionevent.target.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.socialinteractionevent.target.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.socialinteractionevent.target.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.structuredevent.action.md b/api-docs/docs/node-tracker/markdown/node-tracker.structuredevent.action.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.structuredevent.action.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.structuredevent.action.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.structuredevent.category.md b/api-docs/docs/node-tracker/markdown/node-tracker.structuredevent.category.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.structuredevent.category.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.structuredevent.category.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.structuredevent.label.md b/api-docs/docs/node-tracker/markdown/node-tracker.structuredevent.label.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.structuredevent.label.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.structuredevent.label.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.structuredevent.md b/api-docs/docs/node-tracker/markdown/node-tracker.structuredevent.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.structuredevent.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.structuredevent.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.structuredevent.property.md b/api-docs/docs/node-tracker/markdown/node-tracker.structuredevent.property.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.structuredevent.property.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.structuredevent.property.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.structuredevent.value.md b/api-docs/docs/node-tracker/markdown/node-tracker.structuredevent.value.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.structuredevent.value.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.structuredevent.value.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.timestamp.md b/api-docs/docs/node-tracker/markdown/node-tracker.timestamp.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.timestamp.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.timestamp.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.tracker.md b/api-docs/docs/node-tracker/markdown/node-tracker.tracker.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.tracker.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.tracker.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.tracker.setdomainuserid.md b/api-docs/docs/node-tracker/markdown/node-tracker.tracker.setdomainuserid.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.tracker.setdomainuserid.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.tracker.setdomainuserid.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.tracker.setnetworkuserid.md b/api-docs/docs/node-tracker/markdown/node-tracker.tracker.setnetworkuserid.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.tracker.setnetworkuserid.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.tracker.setnetworkuserid.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.tracker.setsessionid.md b/api-docs/docs/node-tracker/markdown/node-tracker.tracker.setsessionid.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.tracker.setsessionid.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.tracker.setsessionid.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.tracker.setsessionindex.md b/api-docs/docs/node-tracker/markdown/node-tracker.tracker.setsessionindex.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.tracker.setsessionindex.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.tracker.setsessionindex.md
diff --git a/trackers/node-tracker/docs/markdown/node-tracker.version.md b/api-docs/docs/node-tracker/markdown/node-tracker.version.md
similarity index 100%
rename from trackers/node-tracker/docs/markdown/node-tracker.version.md
rename to api-docs/docs/node-tracker/markdown/node-tracker.version.md
diff --git a/trackers/node-tracker/docs/node-tracker.api.md b/api-docs/docs/node-tracker/node-tracker.api.md
similarity index 100%
rename from trackers/node-tracker/docs/node-tracker.api.md
rename to api-docs/docs/node-tracker/node-tracker.api.md
diff --git a/api-docs/docusaurus.config.js b/api-docs/docusaurus.config.js
new file mode 100644
index 000000000..3c37c193c
--- /dev/null
+++ b/api-docs/docusaurus.config.js
@@ -0,0 +1,100 @@
+// @ts-check
+// `@type` JSDoc annotations allow editor autocompletion and type checking
+// (when paired with `@ts-check`).
+// There are various equivalent ways to declare your Docusaurus config.
+// See: https://docusaurus.io/docs/api/docusaurus-config
+
+import { themes as prismThemes } from 'prism-react-renderer';
+
+/** @type {import('@docusaurus/types').Config} */
+const config = {
+ title: 'Snowplow Javascript API Docs',
+ favicon: 'img/favicon.ico',
+ url: 'http://snowplow.github.io/',
+ baseUrl: '/snowplow-javascript-tracker/',
+ organizationName: 'snowplow',
+ projectName: 'snowplow-javascript-tracker',
+ onBrokenLinks: 'throw',
+ onBrokenMarkdownLinks: 'warn',
+ i18n: {
+ defaultLocale: 'en',
+ locales: ['en'],
+ },
+ presets: [
+ [
+ 'classic',
+ /** @type {import('@docusaurus/preset-classic').Options} */
+ ({
+ docs: {
+ sidebarPath: './sidebars.js',
+ // Please change this to your repo.
+ },
+ theme: {
+ customCss: './src/css/custom.css',
+ },
+ }),
+ ],
+ ],
+
+ themeConfig:
+ /** @type {import('@docusaurus/preset-classic').ThemeConfig} */
+ ({
+ navbar: {
+ title: 'API Docs',
+ logo: {
+ src: 'img/favicon.ico',
+ href: '/docs',
+ target: '_self',
+ },
+ items: [
+ {
+ href: 'https://github.com/snowplow/snowplow-javascript-tracker',
+ label: 'GitHub',
+ position: 'right',
+ },
+ ],
+ },
+ footer: {
+ style: 'dark',
+ links: [
+ {
+ title: 'Docs',
+ items: [
+ {
+ label: 'Snowplow JS Docs',
+ to: 'https://docs.snowplow.io/docs/collecting-data/collecting-from-own-applications/javascript-trackers/',
+ },
+ ],
+ },
+ {
+ title: 'Community',
+ items: [
+ {
+ label: 'Discourse',
+ href: 'https://discourse.snowplow.io/',
+ },
+ {
+ label: 'Website',
+ href: 'https://snowplow.io/',
+ },
+ ],
+ },
+ {
+ title: 'More',
+ items: [
+ {
+ label: 'GitHub',
+ href: 'https://github.com/snowplow/snowplow-javascript-tracker',
+ },
+ ],
+ },
+ ],
+ },
+ prism: {
+ theme: prismThemes.github,
+ darkTheme: prismThemes.dracula,
+ },
+ }),
+};
+
+export default config;
diff --git a/api-docs/package-lock.json b/api-docs/package-lock.json
new file mode 100644
index 000000000..6654c9def
--- /dev/null
+++ b/api-docs/package-lock.json
@@ -0,0 +1,14917 @@
+{
+ "name": "api-docs",
+ "version": "0.0.0",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "api-docs",
+ "version": "0.0.0",
+ "license": "ISC",
+ "dependencies": {
+ "@docusaurus/core": "3.0.0",
+ "@docusaurus/preset-classic": "3.0.0",
+ "@mdx-js/react": "^3.0.0",
+ "clsx": "^1.2.1",
+ "prism-react-renderer": "^2.1.0",
+ "react": "^18.0.0",
+ "react-dom": "^18.0.0"
+ },
+ "devDependencies": {
+ "@docusaurus/module-type-aliases": "3.0.0",
+ "@docusaurus/types": "3.0.0"
+ },
+ "engines": {
+ "node": ">=18.0"
+ }
+ },
+ "node_modules/@algolia/autocomplete-core": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.9.3.tgz",
+ "integrity": "sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw==",
+ "dependencies": {
+ "@algolia/autocomplete-plugin-algolia-insights": "1.9.3",
+ "@algolia/autocomplete-shared": "1.9.3"
+ }
+ },
+ "node_modules/@algolia/autocomplete-plugin-algolia-insights": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.9.3.tgz",
+ "integrity": "sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg==",
+ "dependencies": {
+ "@algolia/autocomplete-shared": "1.9.3"
+ },
+ "peerDependencies": {
+ "search-insights": ">= 1 < 3"
+ }
+ },
+ "node_modules/@algolia/autocomplete-preset-algolia": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.9.3.tgz",
+ "integrity": "sha512-d4qlt6YmrLMYy95n5TB52wtNDr6EgAIPH81dvvvW8UmuWRgxEtY0NJiPwl/h95JtG2vmRM804M0DSwMCNZlzRA==",
+ "dependencies": {
+ "@algolia/autocomplete-shared": "1.9.3"
+ },
+ "peerDependencies": {
+ "@algolia/client-search": ">= 4.9.1 < 6",
+ "algoliasearch": ">= 4.9.1 < 6"
+ }
+ },
+ "node_modules/@algolia/autocomplete-shared": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.9.3.tgz",
+ "integrity": "sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ==",
+ "peerDependencies": {
+ "@algolia/client-search": ">= 4.9.1 < 6",
+ "algoliasearch": ">= 4.9.1 < 6"
+ }
+ },
+ "node_modules/@algolia/cache-browser-local-storage": {
+ "version": "4.20.0",
+ "resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.20.0.tgz",
+ "integrity": "sha512-uujahcBt4DxduBTvYdwO3sBfHuJvJokiC3BP1+O70fglmE1ShkH8lpXqZBac1rrU3FnNYSUs4pL9lBdTKeRPOQ==",
+ "dependencies": {
+ "@algolia/cache-common": "4.20.0"
+ }
+ },
+ "node_modules/@algolia/cache-common": {
+ "version": "4.20.0",
+ "resolved": "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.20.0.tgz",
+ "integrity": "sha512-vCfxauaZutL3NImzB2G9LjLt36vKAckc6DhMp05An14kVo8F1Yofb6SIl6U3SaEz8pG2QOB9ptwM5c+zGevwIQ=="
+ },
+ "node_modules/@algolia/cache-in-memory": {
+ "version": "4.20.0",
+ "resolved": "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.20.0.tgz",
+ "integrity": "sha512-Wm9ak/IaacAZXS4mB3+qF/KCoVSBV6aLgIGFEtQtJwjv64g4ePMapORGmCyulCFwfePaRAtcaTbMcJF+voc/bg==",
+ "dependencies": {
+ "@algolia/cache-common": "4.20.0"
+ }
+ },
+ "node_modules/@algolia/client-account": {
+ "version": "4.20.0",
+ "resolved": "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.20.0.tgz",
+ "integrity": "sha512-GGToLQvrwo7am4zVkZTnKa72pheQeez/16sURDWm7Seyz+HUxKi3BM6fthVVPUEBhtJ0reyVtuK9ArmnaKl10Q==",
+ "dependencies": {
+ "@algolia/client-common": "4.20.0",
+ "@algolia/client-search": "4.20.0",
+ "@algolia/transporter": "4.20.0"
+ }
+ },
+ "node_modules/@algolia/client-analytics": {
+ "version": "4.20.0",
+ "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.20.0.tgz",
+ "integrity": "sha512-EIr+PdFMOallRdBTHHdKI3CstslgLORQG7844Mq84ib5oVFRVASuuPmG4bXBgiDbcsMLUeOC6zRVJhv1KWI0ug==",
+ "dependencies": {
+ "@algolia/client-common": "4.20.0",
+ "@algolia/client-search": "4.20.0",
+ "@algolia/requester-common": "4.20.0",
+ "@algolia/transporter": "4.20.0"
+ }
+ },
+ "node_modules/@algolia/client-common": {
+ "version": "4.20.0",
+ "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.20.0.tgz",
+ "integrity": "sha512-P3WgMdEss915p+knMMSd/fwiHRHKvDu4DYRrCRaBrsfFw7EQHon+EbRSm4QisS9NYdxbS04kcvNoavVGthyfqQ==",
+ "dependencies": {
+ "@algolia/requester-common": "4.20.0",
+ "@algolia/transporter": "4.20.0"
+ }
+ },
+ "node_modules/@algolia/client-personalization": {
+ "version": "4.20.0",
+ "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-4.20.0.tgz",
+ "integrity": "sha512-N9+zx0tWOQsLc3K4PVRDV8GUeOLAY0i445En79Pr3zWB+m67V+n/8w4Kw1C5LlbHDDJcyhMMIlqezh6BEk7xAQ==",
+ "dependencies": {
+ "@algolia/client-common": "4.20.0",
+ "@algolia/requester-common": "4.20.0",
+ "@algolia/transporter": "4.20.0"
+ }
+ },
+ "node_modules/@algolia/client-search": {
+ "version": "4.20.0",
+ "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.20.0.tgz",
+ "integrity": "sha512-zgwqnMvhWLdpzKTpd3sGmMlr4c+iS7eyyLGiaO51zDZWGMkpgoNVmltkzdBwxOVXz0RsFMznIxB9zuarUv4TZg==",
+ "dependencies": {
+ "@algolia/client-common": "4.20.0",
+ "@algolia/requester-common": "4.20.0",
+ "@algolia/transporter": "4.20.0"
+ }
+ },
+ "node_modules/@algolia/events": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@algolia/events/-/events-4.0.1.tgz",
+ "integrity": "sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ=="
+ },
+ "node_modules/@algolia/logger-common": {
+ "version": "4.20.0",
+ "resolved": "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.20.0.tgz",
+ "integrity": "sha512-xouigCMB5WJYEwvoWW5XDv7Z9f0A8VoXJc3VKwlHJw/je+3p2RcDXfksLI4G4lIVncFUYMZx30tP/rsdlvvzHQ=="
+ },
+ "node_modules/@algolia/logger-console": {
+ "version": "4.20.0",
+ "resolved": "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.20.0.tgz",
+ "integrity": "sha512-THlIGG1g/FS63z0StQqDhT6bprUczBI8wnLT3JWvfAQDZX5P6fCg7dG+pIrUBpDIHGszgkqYEqECaKKsdNKOUA==",
+ "dependencies": {
+ "@algolia/logger-common": "4.20.0"
+ }
+ },
+ "node_modules/@algolia/requester-browser-xhr": {
+ "version": "4.20.0",
+ "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.20.0.tgz",
+ "integrity": "sha512-HbzoSjcjuUmYOkcHECkVTwAelmvTlgs48N6Owt4FnTOQdwn0b8pdht9eMgishvk8+F8bal354nhx/xOoTfwiAw==",
+ "dependencies": {
+ "@algolia/requester-common": "4.20.0"
+ }
+ },
+ "node_modules/@algolia/requester-common": {
+ "version": "4.20.0",
+ "resolved": "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.20.0.tgz",
+ "integrity": "sha512-9h6ye6RY/BkfmeJp7Z8gyyeMrmmWsMOCRBXQDs4mZKKsyVlfIVICpcSibbeYcuUdurLhIlrOUkH3rQEgZzonng=="
+ },
+ "node_modules/@algolia/requester-node-http": {
+ "version": "4.20.0",
+ "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.20.0.tgz",
+ "integrity": "sha512-ocJ66L60ABSSTRFnCHIEZpNHv6qTxsBwJEPfYaSBsLQodm0F9ptvalFkHMpvj5DfE22oZrcrLbOYM2bdPJRHng==",
+ "dependencies": {
+ "@algolia/requester-common": "4.20.0"
+ }
+ },
+ "node_modules/@algolia/transporter": {
+ "version": "4.20.0",
+ "resolved": "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.20.0.tgz",
+ "integrity": "sha512-Lsii1pGWOAISbzeyuf+r/GPhvHMPHSPrTDWNcIzOE1SG1inlJHICaVe2ikuoRjcpgxZNU54Jl+if15SUCsaTUg==",
+ "dependencies": {
+ "@algolia/cache-common": "4.20.0",
+ "@algolia/logger-common": "4.20.0",
+ "@algolia/requester-common": "4.20.0"
+ }
+ },
+ "node_modules/@ampproject/remapping": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz",
+ "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==",
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.0",
+ "@jridgewell/trace-mapping": "^0.3.9"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@babel/code-frame": {
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.4.tgz",
+ "integrity": "sha512-r1IONyb6Ia+jYR2vvIDhdWdlTGhqbBoFqLTQidzZ4kepUFH15ejXvFHxCVbtl7BOXIudsIubf4E81xeA3h3IXA==",
+ "dependencies": {
+ "@babel/highlight": "^7.23.4",
+ "chalk": "^2.4.2"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/code-frame/node_modules/ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dependencies": {
+ "color-convert": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@babel/code-frame/node_modules/chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dependencies": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@babel/code-frame/node_modules/color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dependencies": {
+ "color-name": "1.1.3"
+ }
+ },
+ "node_modules/@babel/code-frame/node_modules/color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
+ },
+ "node_modules/@babel/code-frame/node_modules/escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/@babel/code-frame/node_modules/has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@babel/code-frame/node_modules/supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dependencies": {
+ "has-flag": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@babel/compat-data": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.3.tgz",
+ "integrity": "sha512-BmR4bWbDIoFJmJ9z2cZ8Gmm2MXgEDgjdWgpKmKWUt54UGFJdlj31ECtbaDvCG/qVdG3AQ1SfpZEs01lUFbzLOQ==",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/core": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.3.tgz",
+ "integrity": "sha512-Jg+msLuNuCJDyBvFv5+OKOUjWMZgd85bKjbICd3zWrKAo+bJ49HJufi7CQE0q0uR8NGyO6xkCACScNqyjHSZew==",
+ "dependencies": {
+ "@ampproject/remapping": "^2.2.0",
+ "@babel/code-frame": "^7.22.13",
+ "@babel/generator": "^7.23.3",
+ "@babel/helper-compilation-targets": "^7.22.15",
+ "@babel/helper-module-transforms": "^7.23.3",
+ "@babel/helpers": "^7.23.2",
+ "@babel/parser": "^7.23.3",
+ "@babel/template": "^7.22.15",
+ "@babel/traverse": "^7.23.3",
+ "@babel/types": "^7.23.3",
+ "convert-source-map": "^2.0.0",
+ "debug": "^4.1.0",
+ "gensync": "^1.0.0-beta.2",
+ "json5": "^2.2.3",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/babel"
+ }
+ },
+ "node_modules/@babel/core/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/@babel/generator": {
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.4.tgz",
+ "integrity": "sha512-esuS49Cga3HcThFNebGhlgsrVLkvhqvYDTzgjfFFlHJcIfLe5jFmRRfCQ1KuBfc4Jrtn3ndLgKWAKjBE+IraYQ==",
+ "dependencies": {
+ "@babel/types": "^7.23.4",
+ "@jridgewell/gen-mapping": "^0.3.2",
+ "@jridgewell/trace-mapping": "^0.3.17",
+ "jsesc": "^2.5.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-annotate-as-pure": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz",
+ "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==",
+ "dependencies": {
+ "@babel/types": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": {
+ "version": "7.22.15",
+ "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz",
+ "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==",
+ "dependencies": {
+ "@babel/types": "^7.22.15"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-compilation-targets": {
+ "version": "7.22.15",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz",
+ "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==",
+ "dependencies": {
+ "@babel/compat-data": "^7.22.9",
+ "@babel/helper-validator-option": "^7.22.15",
+ "browserslist": "^4.21.9",
+ "lru-cache": "^5.1.1",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-compilation-targets/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/@babel/helper-create-class-features-plugin": {
+ "version": "7.22.15",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz",
+ "integrity": "sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==",
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.22.5",
+ "@babel/helper-environment-visitor": "^7.22.5",
+ "@babel/helper-function-name": "^7.22.5",
+ "@babel/helper-member-expression-to-functions": "^7.22.15",
+ "@babel/helper-optimise-call-expression": "^7.22.5",
+ "@babel/helper-replace-supers": "^7.22.9",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5",
+ "@babel/helper-split-export-declaration": "^7.22.6",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/@babel/helper-create-regexp-features-plugin": {
+ "version": "7.22.15",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz",
+ "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==",
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.22.5",
+ "regexpu-core": "^5.3.1",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/@babel/helper-define-polyfill-provider": {
+ "version": "0.4.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.3.tgz",
+ "integrity": "sha512-WBrLmuPP47n7PNwsZ57pqam6G/RGo1vw/87b0Blc53tZNGZ4x7YvZ6HgQe2vo1W/FR20OgjeZuGXzudPiXHFug==",
+ "dependencies": {
+ "@babel/helper-compilation-targets": "^7.22.6",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "debug": "^4.1.1",
+ "lodash.debounce": "^4.0.8",
+ "resolve": "^1.14.2"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
+ }
+ },
+ "node_modules/@babel/helper-environment-visitor": {
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz",
+ "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-function-name": {
+ "version": "7.23.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz",
+ "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==",
+ "dependencies": {
+ "@babel/template": "^7.22.15",
+ "@babel/types": "^7.23.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-hoist-variables": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz",
+ "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==",
+ "dependencies": {
+ "@babel/types": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-member-expression-to-functions": {
+ "version": "7.23.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz",
+ "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==",
+ "dependencies": {
+ "@babel/types": "^7.23.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-imports": {
+ "version": "7.22.15",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz",
+ "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==",
+ "dependencies": {
+ "@babel/types": "^7.22.15"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-transforms": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz",
+ "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==",
+ "dependencies": {
+ "@babel/helper-environment-visitor": "^7.22.20",
+ "@babel/helper-module-imports": "^7.22.15",
+ "@babel/helper-simple-access": "^7.22.5",
+ "@babel/helper-split-export-declaration": "^7.22.6",
+ "@babel/helper-validator-identifier": "^7.22.20"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-optimise-call-expression": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz",
+ "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==",
+ "dependencies": {
+ "@babel/types": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-plugin-utils": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz",
+ "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-remap-async-to-generator": {
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz",
+ "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==",
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.22.5",
+ "@babel/helper-environment-visitor": "^7.22.20",
+ "@babel/helper-wrap-function": "^7.22.20"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-replace-supers": {
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz",
+ "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==",
+ "dependencies": {
+ "@babel/helper-environment-visitor": "^7.22.20",
+ "@babel/helper-member-expression-to-functions": "^7.22.15",
+ "@babel/helper-optimise-call-expression": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-simple-access": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz",
+ "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==",
+ "dependencies": {
+ "@babel/types": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-skip-transparent-expression-wrappers": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz",
+ "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==",
+ "dependencies": {
+ "@babel/types": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-split-export-declaration": {
+ "version": "7.22.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz",
+ "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==",
+ "dependencies": {
+ "@babel/types": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-string-parser": {
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz",
+ "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-identifier": {
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz",
+ "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-option": {
+ "version": "7.22.15",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz",
+ "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-wrap-function": {
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz",
+ "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==",
+ "dependencies": {
+ "@babel/helper-function-name": "^7.22.5",
+ "@babel/template": "^7.22.15",
+ "@babel/types": "^7.22.19"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helpers": {
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.4.tgz",
+ "integrity": "sha512-HfcMizYz10cr3h29VqyfGL6ZWIjTwWfvYBMsBVGwpcbhNGe3wQ1ZXZRPzZoAHhd9OqHadHqjQ89iVKINXnbzuw==",
+ "dependencies": {
+ "@babel/template": "^7.22.15",
+ "@babel/traverse": "^7.23.4",
+ "@babel/types": "^7.23.4"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/highlight": {
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz",
+ "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==",
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.22.20",
+ "chalk": "^2.4.2",
+ "js-tokens": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/highlight/node_modules/ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dependencies": {
+ "color-convert": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@babel/highlight/node_modules/chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dependencies": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@babel/highlight/node_modules/color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dependencies": {
+ "color-name": "1.1.3"
+ }
+ },
+ "node_modules/@babel/highlight/node_modules/color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
+ },
+ "node_modules/@babel/highlight/node_modules/escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/@babel/highlight/node_modules/has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@babel/highlight/node_modules/supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dependencies": {
+ "has-flag": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@babel/parser": {
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.4.tgz",
+ "integrity": "sha512-vf3Xna6UEprW+7t6EtOmFpHNAuxw3xqPZghy+brsnusscJRW5BMUzzHZc5ICjULee81WeUV2jjakG09MDglJXQ==",
+ "bin": {
+ "parser": "bin/babel-parser.js"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.23.3.tgz",
+ "integrity": "sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.23.3.tgz",
+ "integrity": "sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5",
+ "@babel/plugin-transform-optional-chaining": "^7.23.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.13.0"
+ }
+ },
+ "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.3.tgz",
+ "integrity": "sha512-XaJak1qcityzrX0/IU5nKHb34VaibwP3saKqG6a/tppelgllOH13LUann4ZCIBcVOeE6H18K4Vx9QKkVww3z/w==",
+ "dependencies": {
+ "@babel/helper-environment-visitor": "^7.22.20",
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-proposal-private-property-in-object": {
+ "version": "7.21.0-placeholder-for-preset-env.2",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz",
+ "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==",
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-async-generators": {
+ "version": "7.8.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz",
+ "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-class-properties": {
+ "version": "7.12.13",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz",
+ "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.12.13"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-class-static-block": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz",
+ "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-dynamic-import": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz",
+ "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-export-namespace-from": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz",
+ "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.3"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-import-assertions": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.23.3.tgz",
+ "integrity": "sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-import-attributes": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.23.3.tgz",
+ "integrity": "sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-import-meta": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz",
+ "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.10.4"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-json-strings": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz",
+ "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-jsx": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz",
+ "integrity": "sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-logical-assignment-operators": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz",
+ "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.10.4"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz",
+ "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-numeric-separator": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz",
+ "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.10.4"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-object-rest-spread": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz",
+ "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-optional-catch-binding": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz",
+ "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-optional-chaining": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz",
+ "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-private-property-in-object": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz",
+ "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-top-level-await": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz",
+ "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-typescript": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz",
+ "integrity": "sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-unicode-sets-regex": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz",
+ "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==",
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.18.6",
+ "@babel/helper-plugin-utils": "^7.18.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-arrow-functions": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.23.3.tgz",
+ "integrity": "sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-async-generator-functions": {
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.4.tgz",
+ "integrity": "sha512-efdkfPhHYTtn0G6n2ddrESE91fgXxjlqLsnUtPWnJs4a4mZIbUaK7ffqKIIUKXSHwcDvaCVX6GXkaJJFqtX7jw==",
+ "dependencies": {
+ "@babel/helper-environment-visitor": "^7.22.20",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-remap-async-to-generator": "^7.22.20",
+ "@babel/plugin-syntax-async-generators": "^7.8.4"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-async-to-generator": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz",
+ "integrity": "sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==",
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.22.15",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-remap-async-to-generator": "^7.22.20"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-block-scoped-functions": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.23.3.tgz",
+ "integrity": "sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-block-scoping": {
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.4.tgz",
+ "integrity": "sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-class-properties": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.23.3.tgz",
+ "integrity": "sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==",
+ "dependencies": {
+ "@babel/helper-create-class-features-plugin": "^7.22.15",
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-class-static-block": {
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.4.tgz",
+ "integrity": "sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==",
+ "dependencies": {
+ "@babel/helper-create-class-features-plugin": "^7.22.15",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/plugin-syntax-class-static-block": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.12.0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-classes": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.3.tgz",
+ "integrity": "sha512-FGEQmugvAEu2QtgtU0uTASXevfLMFfBeVCIIdcQhn/uBQsMTjBajdnAtanQlOcuihWh10PZ7+HWvc7NtBwP74w==",
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.22.5",
+ "@babel/helper-compilation-targets": "^7.22.15",
+ "@babel/helper-environment-visitor": "^7.22.20",
+ "@babel/helper-function-name": "^7.23.0",
+ "@babel/helper-optimise-call-expression": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-replace-supers": "^7.22.20",
+ "@babel/helper-split-export-declaration": "^7.22.6",
+ "globals": "^11.1.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-computed-properties": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.23.3.tgz",
+ "integrity": "sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/template": "^7.22.15"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-destructuring": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.3.tgz",
+ "integrity": "sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-dotall-regex": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.23.3.tgz",
+ "integrity": "sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==",
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.22.15",
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-duplicate-keys": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.23.3.tgz",
+ "integrity": "sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-dynamic-import": {
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.4.tgz",
+ "integrity": "sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/plugin-syntax-dynamic-import": "^7.8.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-exponentiation-operator": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.23.3.tgz",
+ "integrity": "sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==",
+ "dependencies": {
+ "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15",
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-export-namespace-from": {
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.4.tgz",
+ "integrity": "sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/plugin-syntax-export-namespace-from": "^7.8.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-for-of": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.3.tgz",
+ "integrity": "sha512-X8jSm8X1CMwxmK878qsUGJRmbysKNbdpTv/O1/v0LuY/ZkZrng5WYiekYSdg9m09OTmDDUWeEDsTE+17WYbAZw==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-function-name": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.23.3.tgz",
+ "integrity": "sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==",
+ "dependencies": {
+ "@babel/helper-compilation-targets": "^7.22.15",
+ "@babel/helper-function-name": "^7.23.0",
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-json-strings": {
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.4.tgz",
+ "integrity": "sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/plugin-syntax-json-strings": "^7.8.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-literals": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.23.3.tgz",
+ "integrity": "sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-logical-assignment-operators": {
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.4.tgz",
+ "integrity": "sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-member-expression-literals": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.23.3.tgz",
+ "integrity": "sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-modules-amd": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.3.tgz",
+ "integrity": "sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==",
+ "dependencies": {
+ "@babel/helper-module-transforms": "^7.23.3",
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-modules-commonjs": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz",
+ "integrity": "sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==",
+ "dependencies": {
+ "@babel/helper-module-transforms": "^7.23.3",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-simple-access": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-modules-systemjs": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.3.tgz",
+ "integrity": "sha512-ZxyKGTkF9xT9YJuKQRo19ewf3pXpopuYQd8cDXqNzc3mUNbOME0RKMoZxviQk74hwzfQsEe66dE92MaZbdHKNQ==",
+ "dependencies": {
+ "@babel/helper-hoist-variables": "^7.22.5",
+ "@babel/helper-module-transforms": "^7.23.3",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-validator-identifier": "^7.22.20"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-modules-umd": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.23.3.tgz",
+ "integrity": "sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==",
+ "dependencies": {
+ "@babel/helper-module-transforms": "^7.23.3",
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-named-capturing-groups-regex": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz",
+ "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==",
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-new-target": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.23.3.tgz",
+ "integrity": "sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-nullish-coalescing-operator": {
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.4.tgz",
+ "integrity": "sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-numeric-separator": {
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.4.tgz",
+ "integrity": "sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/plugin-syntax-numeric-separator": "^7.10.4"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-object-rest-spread": {
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.23.4.tgz",
+ "integrity": "sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g==",
+ "dependencies": {
+ "@babel/compat-data": "^7.23.3",
+ "@babel/helper-compilation-targets": "^7.22.15",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+ "@babel/plugin-transform-parameters": "^7.23.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-object-super": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.23.3.tgz",
+ "integrity": "sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-replace-supers": "^7.22.20"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-optional-catch-binding": {
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.4.tgz",
+ "integrity": "sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/plugin-syntax-optional-catch-binding": "^7.8.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-optional-chaining": {
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.4.tgz",
+ "integrity": "sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5",
+ "@babel/plugin-syntax-optional-chaining": "^7.8.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-parameters": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz",
+ "integrity": "sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-private-methods": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.23.3.tgz",
+ "integrity": "sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==",
+ "dependencies": {
+ "@babel/helper-create-class-features-plugin": "^7.22.15",
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-private-property-in-object": {
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.4.tgz",
+ "integrity": "sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==",
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.22.5",
+ "@babel/helper-create-class-features-plugin": "^7.22.15",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/plugin-syntax-private-property-in-object": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-property-literals": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.23.3.tgz",
+ "integrity": "sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-react-constant-elements": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.23.3.tgz",
+ "integrity": "sha512-zP0QKq/p6O42OL94udMgSfKXyse4RyJ0JqbQ34zDAONWjyrEsghYEyTSK5FIpmXmCpB55SHokL1cRRKHv8L2Qw==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-react-display-name": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.23.3.tgz",
+ "integrity": "sha512-GnvhtVfA2OAtzdX58FJxU19rhoGeQzyVndw3GgtdECQvQFXPEZIOVULHVZGAYmOgmqjXpVpfocAbSjh99V/Fqw==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-react-jsx": {
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.23.4.tgz",
+ "integrity": "sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==",
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.22.5",
+ "@babel/helper-module-imports": "^7.22.15",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/plugin-syntax-jsx": "^7.23.3",
+ "@babel/types": "^7.23.4"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-react-jsx-development": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz",
+ "integrity": "sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==",
+ "dependencies": {
+ "@babel/plugin-transform-react-jsx": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-react-pure-annotations": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.23.3.tgz",
+ "integrity": "sha512-qMFdSS+TUhB7Q/3HVPnEdYJDQIk57jkntAwSuz9xfSE4n+3I+vHYCli3HoHawN1Z3RfCz/y1zXA/JXjG6cVImQ==",
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-regenerator": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz",
+ "integrity": "sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "regenerator-transform": "^0.15.2"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-reserved-words": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.23.3.tgz",
+ "integrity": "sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-runtime": {
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.23.4.tgz",
+ "integrity": "sha512-ITwqpb6V4btwUG0YJR82o2QvmWrLgDnx/p2A3CTPYGaRgULkDiC0DRA2C4jlRB9uXGUEfaSS/IGHfVW+ohzYDw==",
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.22.15",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "babel-plugin-polyfill-corejs2": "^0.4.6",
+ "babel-plugin-polyfill-corejs3": "^0.8.5",
+ "babel-plugin-polyfill-regenerator": "^0.5.3",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-runtime/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/@babel/plugin-transform-shorthand-properties": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.23.3.tgz",
+ "integrity": "sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-spread": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.23.3.tgz",
+ "integrity": "sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-sticky-regex": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.23.3.tgz",
+ "integrity": "sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-template-literals": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.23.3.tgz",
+ "integrity": "sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-typeof-symbol": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.23.3.tgz",
+ "integrity": "sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-typescript": {
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.23.4.tgz",
+ "integrity": "sha512-39hCCOl+YUAyMOu6B9SmUTiHUU0t/CxJNUmY3qRdJujbqi+lrQcL11ysYUsAvFWPBdhihrv1z0oRG84Yr3dODQ==",
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.22.5",
+ "@babel/helper-create-class-features-plugin": "^7.22.15",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/plugin-syntax-typescript": "^7.23.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-unicode-escapes": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.23.3.tgz",
+ "integrity": "sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-unicode-property-regex": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.23.3.tgz",
+ "integrity": "sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==",
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.22.15",
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-unicode-regex": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.23.3.tgz",
+ "integrity": "sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==",
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.22.15",
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-unicode-sets-regex": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.23.3.tgz",
+ "integrity": "sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==",
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.22.15",
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/preset-env": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.3.tgz",
+ "integrity": "sha512-ovzGc2uuyNfNAs/jyjIGxS8arOHS5FENZaNn4rtE7UdKMMkqHCvboHfcuhWLZNX5cB44QfcGNWjaevxMzzMf+Q==",
+ "dependencies": {
+ "@babel/compat-data": "^7.23.3",
+ "@babel/helper-compilation-targets": "^7.22.15",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-validator-option": "^7.22.15",
+ "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.23.3",
+ "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.23.3",
+ "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.23.3",
+ "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2",
+ "@babel/plugin-syntax-async-generators": "^7.8.4",
+ "@babel/plugin-syntax-class-properties": "^7.12.13",
+ "@babel/plugin-syntax-class-static-block": "^7.14.5",
+ "@babel/plugin-syntax-dynamic-import": "^7.8.3",
+ "@babel/plugin-syntax-export-namespace-from": "^7.8.3",
+ "@babel/plugin-syntax-import-assertions": "^7.23.3",
+ "@babel/plugin-syntax-import-attributes": "^7.23.3",
+ "@babel/plugin-syntax-import-meta": "^7.10.4",
+ "@babel/plugin-syntax-json-strings": "^7.8.3",
+ "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4",
+ "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
+ "@babel/plugin-syntax-numeric-separator": "^7.10.4",
+ "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+ "@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
+ "@babel/plugin-syntax-optional-chaining": "^7.8.3",
+ "@babel/plugin-syntax-private-property-in-object": "^7.14.5",
+ "@babel/plugin-syntax-top-level-await": "^7.14.5",
+ "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6",
+ "@babel/plugin-transform-arrow-functions": "^7.23.3",
+ "@babel/plugin-transform-async-generator-functions": "^7.23.3",
+ "@babel/plugin-transform-async-to-generator": "^7.23.3",
+ "@babel/plugin-transform-block-scoped-functions": "^7.23.3",
+ "@babel/plugin-transform-block-scoping": "^7.23.3",
+ "@babel/plugin-transform-class-properties": "^7.23.3",
+ "@babel/plugin-transform-class-static-block": "^7.23.3",
+ "@babel/plugin-transform-classes": "^7.23.3",
+ "@babel/plugin-transform-computed-properties": "^7.23.3",
+ "@babel/plugin-transform-destructuring": "^7.23.3",
+ "@babel/plugin-transform-dotall-regex": "^7.23.3",
+ "@babel/plugin-transform-duplicate-keys": "^7.23.3",
+ "@babel/plugin-transform-dynamic-import": "^7.23.3",
+ "@babel/plugin-transform-exponentiation-operator": "^7.23.3",
+ "@babel/plugin-transform-export-namespace-from": "^7.23.3",
+ "@babel/plugin-transform-for-of": "^7.23.3",
+ "@babel/plugin-transform-function-name": "^7.23.3",
+ "@babel/plugin-transform-json-strings": "^7.23.3",
+ "@babel/plugin-transform-literals": "^7.23.3",
+ "@babel/plugin-transform-logical-assignment-operators": "^7.23.3",
+ "@babel/plugin-transform-member-expression-literals": "^7.23.3",
+ "@babel/plugin-transform-modules-amd": "^7.23.3",
+ "@babel/plugin-transform-modules-commonjs": "^7.23.3",
+ "@babel/plugin-transform-modules-systemjs": "^7.23.3",
+ "@babel/plugin-transform-modules-umd": "^7.23.3",
+ "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5",
+ "@babel/plugin-transform-new-target": "^7.23.3",
+ "@babel/plugin-transform-nullish-coalescing-operator": "^7.23.3",
+ "@babel/plugin-transform-numeric-separator": "^7.23.3",
+ "@babel/plugin-transform-object-rest-spread": "^7.23.3",
+ "@babel/plugin-transform-object-super": "^7.23.3",
+ "@babel/plugin-transform-optional-catch-binding": "^7.23.3",
+ "@babel/plugin-transform-optional-chaining": "^7.23.3",
+ "@babel/plugin-transform-parameters": "^7.23.3",
+ "@babel/plugin-transform-private-methods": "^7.23.3",
+ "@babel/plugin-transform-private-property-in-object": "^7.23.3",
+ "@babel/plugin-transform-property-literals": "^7.23.3",
+ "@babel/plugin-transform-regenerator": "^7.23.3",
+ "@babel/plugin-transform-reserved-words": "^7.23.3",
+ "@babel/plugin-transform-shorthand-properties": "^7.23.3",
+ "@babel/plugin-transform-spread": "^7.23.3",
+ "@babel/plugin-transform-sticky-regex": "^7.23.3",
+ "@babel/plugin-transform-template-literals": "^7.23.3",
+ "@babel/plugin-transform-typeof-symbol": "^7.23.3",
+ "@babel/plugin-transform-unicode-escapes": "^7.23.3",
+ "@babel/plugin-transform-unicode-property-regex": "^7.23.3",
+ "@babel/plugin-transform-unicode-regex": "^7.23.3",
+ "@babel/plugin-transform-unicode-sets-regex": "^7.23.3",
+ "@babel/preset-modules": "0.1.6-no-external-plugins",
+ "babel-plugin-polyfill-corejs2": "^0.4.6",
+ "babel-plugin-polyfill-corejs3": "^0.8.5",
+ "babel-plugin-polyfill-regenerator": "^0.5.3",
+ "core-js-compat": "^3.31.0",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/preset-env/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/@babel/preset-modules": {
+ "version": "0.1.6-no-external-plugins",
+ "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz",
+ "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/types": "^7.4.4",
+ "esutils": "^2.0.2"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0"
+ }
+ },
+ "node_modules/@babel/preset-react": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.23.3.tgz",
+ "integrity": "sha512-tbkHOS9axH6Ysf2OUEqoSZ6T3Fa2SrNH6WTWSPBboxKzdxNc9qOICeLXkNG0ZEwbQ1HY8liwOce4aN/Ceyuq6w==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-validator-option": "^7.22.15",
+ "@babel/plugin-transform-react-display-name": "^7.23.3",
+ "@babel/plugin-transform-react-jsx": "^7.22.15",
+ "@babel/plugin-transform-react-jsx-development": "^7.22.5",
+ "@babel/plugin-transform-react-pure-annotations": "^7.23.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/preset-typescript": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.23.3.tgz",
+ "integrity": "sha512-17oIGVlqz6CchO9RFYn5U6ZpWRZIngayYCtrPRSgANSwC2V1Jb+iP74nVxzzXJte8b8BYxrL1yY96xfhTBrNNQ==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-validator-option": "^7.22.15",
+ "@babel/plugin-syntax-jsx": "^7.23.3",
+ "@babel/plugin-transform-modules-commonjs": "^7.23.3",
+ "@babel/plugin-transform-typescript": "^7.23.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/regjsgen": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz",
+ "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA=="
+ },
+ "node_modules/@babel/runtime": {
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.4.tgz",
+ "integrity": "sha512-2Yv65nlWnWlSpe3fXEyX5i7fx5kIKo4Qbcj+hMO0odwaneFjfXw5fdum+4yL20O0QiaHpia0cYQ9xpNMqrBwHg==",
+ "dependencies": {
+ "regenerator-runtime": "^0.14.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/runtime-corejs3": {
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.23.4.tgz",
+ "integrity": "sha512-zQyB4MJGM+rvd4pM58n26kf3xbiitw9MHzL8oLiBMKb8MCtVDfV5nDzzJWWzLMtbvKI9wN6XwJYl479qF4JluQ==",
+ "dependencies": {
+ "core-js-pure": "^3.30.2",
+ "regenerator-runtime": "^0.14.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/template": {
+ "version": "7.22.15",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz",
+ "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==",
+ "dependencies": {
+ "@babel/code-frame": "^7.22.13",
+ "@babel/parser": "^7.22.15",
+ "@babel/types": "^7.22.15"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/traverse": {
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.4.tgz",
+ "integrity": "sha512-IYM8wSUwunWTB6tFC2dkKZhxbIjHoWemdK+3f8/wq8aKhbUscxD5MX72ubd90fxvFknaLPeGw5ycU84V1obHJg==",
+ "dependencies": {
+ "@babel/code-frame": "^7.23.4",
+ "@babel/generator": "^7.23.4",
+ "@babel/helper-environment-visitor": "^7.22.20",
+ "@babel/helper-function-name": "^7.23.0",
+ "@babel/helper-hoist-variables": "^7.22.5",
+ "@babel/helper-split-export-declaration": "^7.22.6",
+ "@babel/parser": "^7.23.4",
+ "@babel/types": "^7.23.4",
+ "debug": "^4.1.0",
+ "globals": "^11.1.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/types": {
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.4.tgz",
+ "integrity": "sha512-7uIFwVYpoplT5jp/kVv6EF93VaJ8H+Yn5IczYiaAi98ajzjfoZfslet/e0sLh+wVBjb2qqIut1b0S26VSafsSQ==",
+ "dependencies": {
+ "@babel/helper-string-parser": "^7.23.4",
+ "@babel/helper-validator-identifier": "^7.22.20",
+ "to-fast-properties": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@colors/colors": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz",
+ "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==",
+ "optional": true,
+ "engines": {
+ "node": ">=0.1.90"
+ }
+ },
+ "node_modules/@discoveryjs/json-ext": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz",
+ "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==",
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/@docsearch/css": {
+ "version": "3.5.2",
+ "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.5.2.tgz",
+ "integrity": "sha512-SPiDHaWKQZpwR2siD0KQUwlStvIAnEyK6tAE2h2Wuoq8ue9skzhlyVQ1ddzOxX6khULnAALDiR/isSF3bnuciA=="
+ },
+ "node_modules/@docsearch/react": {
+ "version": "3.5.2",
+ "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.5.2.tgz",
+ "integrity": "sha512-9Ahcrs5z2jq/DcAvYtvlqEBHImbm4YJI8M9y0x6Tqg598P40HTEkX7hsMcIuThI+hTFxRGZ9hll0Wygm2yEjng==",
+ "dependencies": {
+ "@algolia/autocomplete-core": "1.9.3",
+ "@algolia/autocomplete-preset-algolia": "1.9.3",
+ "@docsearch/css": "3.5.2",
+ "algoliasearch": "^4.19.1"
+ },
+ "peerDependencies": {
+ "@types/react": ">= 16.8.0 < 19.0.0",
+ "react": ">= 16.8.0 < 19.0.0",
+ "react-dom": ">= 16.8.0 < 19.0.0",
+ "search-insights": ">= 1 < 3"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "react": {
+ "optional": true
+ },
+ "react-dom": {
+ "optional": true
+ },
+ "search-insights": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@docusaurus/core": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@docusaurus/core/-/core-3.0.0.tgz",
+ "integrity": "sha512-bHWtY55tJTkd6pZhHrWz1MpWuwN4edZe0/UWgFF7PW/oJeDZvLSXKqwny3L91X1/LGGoypBGkeZn8EOuKeL4yQ==",
+ "dependencies": {
+ "@babel/core": "^7.22.9",
+ "@babel/generator": "^7.22.9",
+ "@babel/plugin-syntax-dynamic-import": "^7.8.3",
+ "@babel/plugin-transform-runtime": "^7.22.9",
+ "@babel/preset-env": "^7.22.9",
+ "@babel/preset-react": "^7.22.5",
+ "@babel/preset-typescript": "^7.22.5",
+ "@babel/runtime": "^7.22.6",
+ "@babel/runtime-corejs3": "^7.22.6",
+ "@babel/traverse": "^7.22.8",
+ "@docusaurus/cssnano-preset": "3.0.0",
+ "@docusaurus/logger": "3.0.0",
+ "@docusaurus/mdx-loader": "3.0.0",
+ "@docusaurus/react-loadable": "5.5.2",
+ "@docusaurus/utils": "3.0.0",
+ "@docusaurus/utils-common": "3.0.0",
+ "@docusaurus/utils-validation": "3.0.0",
+ "@slorber/static-site-generator-webpack-plugin": "^4.0.7",
+ "@svgr/webpack": "^6.5.1",
+ "autoprefixer": "^10.4.14",
+ "babel-loader": "^9.1.3",
+ "babel-plugin-dynamic-import-node": "^2.3.3",
+ "boxen": "^6.2.1",
+ "chalk": "^4.1.2",
+ "chokidar": "^3.5.3",
+ "clean-css": "^5.3.2",
+ "cli-table3": "^0.6.3",
+ "combine-promises": "^1.1.0",
+ "commander": "^5.1.0",
+ "copy-webpack-plugin": "^11.0.0",
+ "core-js": "^3.31.1",
+ "css-loader": "^6.8.1",
+ "css-minimizer-webpack-plugin": "^4.2.2",
+ "cssnano": "^5.1.15",
+ "del": "^6.1.1",
+ "detect-port": "^1.5.1",
+ "escape-html": "^1.0.3",
+ "eta": "^2.2.0",
+ "file-loader": "^6.2.0",
+ "fs-extra": "^11.1.1",
+ "html-minifier-terser": "^7.2.0",
+ "html-tags": "^3.3.1",
+ "html-webpack-plugin": "^5.5.3",
+ "leven": "^3.1.0",
+ "lodash": "^4.17.21",
+ "mini-css-extract-plugin": "^2.7.6",
+ "postcss": "^8.4.26",
+ "postcss-loader": "^7.3.3",
+ "prompts": "^2.4.2",
+ "react-dev-utils": "^12.0.1",
+ "react-helmet-async": "^1.3.0",
+ "react-loadable": "npm:@docusaurus/react-loadable@5.5.2",
+ "react-loadable-ssr-addon-v5-slorber": "^1.0.1",
+ "react-router": "^5.3.4",
+ "react-router-config": "^5.1.1",
+ "react-router-dom": "^5.3.4",
+ "rtl-detect": "^1.0.4",
+ "semver": "^7.5.4",
+ "serve-handler": "^6.1.5",
+ "shelljs": "^0.8.5",
+ "terser-webpack-plugin": "^5.3.9",
+ "tslib": "^2.6.0",
+ "update-notifier": "^6.0.2",
+ "url-loader": "^4.1.1",
+ "wait-on": "^7.0.1",
+ "webpack": "^5.88.1",
+ "webpack-bundle-analyzer": "^4.9.0",
+ "webpack-dev-server": "^4.15.1",
+ "webpack-merge": "^5.9.0",
+ "webpackbar": "^5.0.2"
+ },
+ "bin": {
+ "docusaurus": "bin/docusaurus.mjs"
+ },
+ "engines": {
+ "node": ">=18.0"
+ },
+ "peerDependencies": {
+ "react": "^18.0.0",
+ "react-dom": "^18.0.0"
+ }
+ },
+ "node_modules/@docusaurus/cssnano-preset": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@docusaurus/cssnano-preset/-/cssnano-preset-3.0.0.tgz",
+ "integrity": "sha512-FHiRfwmVvIVdIGsHcijUOaX7hMn0mugVYB7m4GkpYI6Mi56zwQV4lH5p7DxcW5CUYNWMVxz2loWSCiWEm5ikwA==",
+ "dependencies": {
+ "cssnano-preset-advanced": "^5.3.10",
+ "postcss": "^8.4.26",
+ "postcss-sort-media-queries": "^4.4.1",
+ "tslib": "^2.6.0"
+ },
+ "engines": {
+ "node": ">=18.0"
+ }
+ },
+ "node_modules/@docusaurus/logger": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@docusaurus/logger/-/logger-3.0.0.tgz",
+ "integrity": "sha512-6eX0eOfioMQCk+qgCnHvbLLuyIAA+r2lSID6d6JusiLtDKmYMfNp3F4yyE8bnb0Abmzt2w68XwptEFYyALSAXw==",
+ "dependencies": {
+ "chalk": "^4.1.2",
+ "tslib": "^2.6.0"
+ },
+ "engines": {
+ "node": ">=18.0"
+ }
+ },
+ "node_modules/@docusaurus/mdx-loader": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@docusaurus/mdx-loader/-/mdx-loader-3.0.0.tgz",
+ "integrity": "sha512-JkGge6WYDrwjNgMxwkb6kNQHnpISt5L1tMaBWFDBKeDToFr5Kj29IL35MIQm0RfrnoOfr/29RjSH4aRtvlAR0A==",
+ "dependencies": {
+ "@babel/parser": "^7.22.7",
+ "@babel/traverse": "^7.22.8",
+ "@docusaurus/logger": "3.0.0",
+ "@docusaurus/utils": "3.0.0",
+ "@docusaurus/utils-validation": "3.0.0",
+ "@mdx-js/mdx": "^3.0.0",
+ "@slorber/remark-comment": "^1.0.0",
+ "escape-html": "^1.0.3",
+ "estree-util-value-to-estree": "^3.0.1",
+ "file-loader": "^6.2.0",
+ "fs-extra": "^11.1.1",
+ "image-size": "^1.0.2",
+ "mdast-util-mdx": "^3.0.0",
+ "mdast-util-to-string": "^4.0.0",
+ "rehype-raw": "^7.0.0",
+ "remark-directive": "^3.0.0",
+ "remark-emoji": "^4.0.0",
+ "remark-frontmatter": "^5.0.0",
+ "remark-gfm": "^4.0.0",
+ "stringify-object": "^3.3.0",
+ "tslib": "^2.6.0",
+ "unified": "^11.0.3",
+ "unist-util-visit": "^5.0.0",
+ "url-loader": "^4.1.1",
+ "vfile": "^6.0.1",
+ "webpack": "^5.88.1"
+ },
+ "engines": {
+ "node": ">=18.0"
+ },
+ "peerDependencies": {
+ "react": "^18.0.0",
+ "react-dom": "^18.0.0"
+ }
+ },
+ "node_modules/@docusaurus/module-type-aliases": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@docusaurus/module-type-aliases/-/module-type-aliases-3.0.0.tgz",
+ "integrity": "sha512-CfC6CgN4u/ce+2+L1JdsHNyBd8yYjl4De2B2CBj2a9F7WuJ5RjV1ciuU7KDg8uyju+NRVllRgvJvxVUjCdkPiw==",
+ "dependencies": {
+ "@docusaurus/react-loadable": "5.5.2",
+ "@docusaurus/types": "3.0.0",
+ "@types/history": "^4.7.11",
+ "@types/react": "*",
+ "@types/react-router-config": "*",
+ "@types/react-router-dom": "*",
+ "react-helmet-async": "*",
+ "react-loadable": "npm:@docusaurus/react-loadable@5.5.2"
+ },
+ "peerDependencies": {
+ "react": "*",
+ "react-dom": "*"
+ }
+ },
+ "node_modules/@docusaurus/plugin-content-blog": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-blog/-/plugin-content-blog-3.0.0.tgz",
+ "integrity": "sha512-iA8Wc3tIzVnROJxrbIsU/iSfixHW16YeW9RWsBw7hgEk4dyGsip9AsvEDXobnRq3lVv4mfdgoS545iGWf1Ip9w==",
+ "dependencies": {
+ "@docusaurus/core": "3.0.0",
+ "@docusaurus/logger": "3.0.0",
+ "@docusaurus/mdx-loader": "3.0.0",
+ "@docusaurus/types": "3.0.0",
+ "@docusaurus/utils": "3.0.0",
+ "@docusaurus/utils-common": "3.0.0",
+ "@docusaurus/utils-validation": "3.0.0",
+ "cheerio": "^1.0.0-rc.12",
+ "feed": "^4.2.2",
+ "fs-extra": "^11.1.1",
+ "lodash": "^4.17.21",
+ "reading-time": "^1.5.0",
+ "srcset": "^4.0.0",
+ "tslib": "^2.6.0",
+ "unist-util-visit": "^5.0.0",
+ "utility-types": "^3.10.0",
+ "webpack": "^5.88.1"
+ },
+ "engines": {
+ "node": ">=18.0"
+ },
+ "peerDependencies": {
+ "react": "^18.0.0",
+ "react-dom": "^18.0.0"
+ }
+ },
+ "node_modules/@docusaurus/plugin-content-docs": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.0.0.tgz",
+ "integrity": "sha512-MFZsOSwmeJ6rvoZMLieXxPuJsA9M9vn7/mUZmfUzSUTeHAeq+fEqvLltFOxcj4DVVDTYlQhgWYd+PISIWgamKw==",
+ "dependencies": {
+ "@docusaurus/core": "3.0.0",
+ "@docusaurus/logger": "3.0.0",
+ "@docusaurus/mdx-loader": "3.0.0",
+ "@docusaurus/module-type-aliases": "3.0.0",
+ "@docusaurus/types": "3.0.0",
+ "@docusaurus/utils": "3.0.0",
+ "@docusaurus/utils-validation": "3.0.0",
+ "@types/react-router-config": "^5.0.7",
+ "combine-promises": "^1.1.0",
+ "fs-extra": "^11.1.1",
+ "js-yaml": "^4.1.0",
+ "lodash": "^4.17.21",
+ "tslib": "^2.6.0",
+ "utility-types": "^3.10.0",
+ "webpack": "^5.88.1"
+ },
+ "engines": {
+ "node": ">=18.0"
+ },
+ "peerDependencies": {
+ "react": "^18.0.0",
+ "react-dom": "^18.0.0"
+ }
+ },
+ "node_modules/@docusaurus/plugin-content-pages": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-pages/-/plugin-content-pages-3.0.0.tgz",
+ "integrity": "sha512-EXYHXK2Ea1B5BUmM0DgSwaOYt8EMSzWtYUToNo62Q/EoWxYOQFdWglYnw3n7ZEGyw5Kog4LHaRwlazAdmDomvQ==",
+ "dependencies": {
+ "@docusaurus/core": "3.0.0",
+ "@docusaurus/mdx-loader": "3.0.0",
+ "@docusaurus/types": "3.0.0",
+ "@docusaurus/utils": "3.0.0",
+ "@docusaurus/utils-validation": "3.0.0",
+ "fs-extra": "^11.1.1",
+ "tslib": "^2.6.0",
+ "webpack": "^5.88.1"
+ },
+ "engines": {
+ "node": ">=18.0"
+ },
+ "peerDependencies": {
+ "react": "^18.0.0",
+ "react-dom": "^18.0.0"
+ }
+ },
+ "node_modules/@docusaurus/plugin-debug": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@docusaurus/plugin-debug/-/plugin-debug-3.0.0.tgz",
+ "integrity": "sha512-gSV07HfQgnUboVEb3lucuVyv5pEoy33E7QXzzn++3kSc/NLEimkjXh3sSnTGOishkxCqlFV9BHfY/VMm5Lko5g==",
+ "dependencies": {
+ "@docusaurus/core": "3.0.0",
+ "@docusaurus/types": "3.0.0",
+ "@docusaurus/utils": "3.0.0",
+ "@microlink/react-json-view": "^1.22.2",
+ "fs-extra": "^11.1.1",
+ "tslib": "^2.6.0"
+ },
+ "engines": {
+ "node": ">=18.0"
+ },
+ "peerDependencies": {
+ "react": "^18.0.0",
+ "react-dom": "^18.0.0"
+ }
+ },
+ "node_modules/@docusaurus/plugin-google-analytics": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-3.0.0.tgz",
+ "integrity": "sha512-0zcLK8w+ohmSm1fjUQCqeRsjmQc0gflvXnaVA/QVVCtm2yCiBtkrSGQXqt4MdpD7Xq8mwo3qVd5nhIcvrcebqw==",
+ "dependencies": {
+ "@docusaurus/core": "3.0.0",
+ "@docusaurus/types": "3.0.0",
+ "@docusaurus/utils-validation": "3.0.0",
+ "tslib": "^2.6.0"
+ },
+ "engines": {
+ "node": ">=18.0"
+ },
+ "peerDependencies": {
+ "react": "^18.0.0",
+ "react-dom": "^18.0.0"
+ }
+ },
+ "node_modules/@docusaurus/plugin-google-gtag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-3.0.0.tgz",
+ "integrity": "sha512-asEKavw8fczUqvXu/s9kG2m1epLnHJ19W6CCCRZEmpnkZUZKiM8rlkDiEmxApwIc2JDDbIMk+Y2TMkJI8mInbQ==",
+ "dependencies": {
+ "@docusaurus/core": "3.0.0",
+ "@docusaurus/types": "3.0.0",
+ "@docusaurus/utils-validation": "3.0.0",
+ "@types/gtag.js": "^0.0.12",
+ "tslib": "^2.6.0"
+ },
+ "engines": {
+ "node": ">=18.0"
+ },
+ "peerDependencies": {
+ "react": "^18.0.0",
+ "react-dom": "^18.0.0"
+ }
+ },
+ "node_modules/@docusaurus/plugin-google-tag-manager": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-3.0.0.tgz",
+ "integrity": "sha512-lytgu2eyn+7p4WklJkpMGRhwC29ezj4IjPPmVJ8vGzcSl6JkR1sADTHLG5xWOMuci420xZl9dGEiLTQ8FjCRyA==",
+ "dependencies": {
+ "@docusaurus/core": "3.0.0",
+ "@docusaurus/types": "3.0.0",
+ "@docusaurus/utils-validation": "3.0.0",
+ "tslib": "^2.6.0"
+ },
+ "engines": {
+ "node": ">=18.0"
+ },
+ "peerDependencies": {
+ "react": "^18.0.0",
+ "react-dom": "^18.0.0"
+ }
+ },
+ "node_modules/@docusaurus/plugin-sitemap": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@docusaurus/plugin-sitemap/-/plugin-sitemap-3.0.0.tgz",
+ "integrity": "sha512-cfcONdWku56Oi7Hdus2uvUw/RKRRlIGMViiHLjvQ21CEsEqnQ297MRoIgjU28kL7/CXD/+OiANSq3T1ezAiMhA==",
+ "dependencies": {
+ "@docusaurus/core": "3.0.0",
+ "@docusaurus/logger": "3.0.0",
+ "@docusaurus/types": "3.0.0",
+ "@docusaurus/utils": "3.0.0",
+ "@docusaurus/utils-common": "3.0.0",
+ "@docusaurus/utils-validation": "3.0.0",
+ "fs-extra": "^11.1.1",
+ "sitemap": "^7.1.1",
+ "tslib": "^2.6.0"
+ },
+ "engines": {
+ "node": ">=18.0"
+ },
+ "peerDependencies": {
+ "react": "^18.0.0",
+ "react-dom": "^18.0.0"
+ }
+ },
+ "node_modules/@docusaurus/preset-classic": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@docusaurus/preset-classic/-/preset-classic-3.0.0.tgz",
+ "integrity": "sha512-90aOKZGZdi0+GVQV+wt8xx4M4GiDrBRke8NO8nWwytMEXNrxrBxsQYFRD1YlISLJSCiHikKf3Z/MovMnQpnZyg==",
+ "dependencies": {
+ "@docusaurus/core": "3.0.0",
+ "@docusaurus/plugin-content-blog": "3.0.0",
+ "@docusaurus/plugin-content-docs": "3.0.0",
+ "@docusaurus/plugin-content-pages": "3.0.0",
+ "@docusaurus/plugin-debug": "3.0.0",
+ "@docusaurus/plugin-google-analytics": "3.0.0",
+ "@docusaurus/plugin-google-gtag": "3.0.0",
+ "@docusaurus/plugin-google-tag-manager": "3.0.0",
+ "@docusaurus/plugin-sitemap": "3.0.0",
+ "@docusaurus/theme-classic": "3.0.0",
+ "@docusaurus/theme-common": "3.0.0",
+ "@docusaurus/theme-search-algolia": "3.0.0",
+ "@docusaurus/types": "3.0.0"
+ },
+ "engines": {
+ "node": ">=18.0"
+ },
+ "peerDependencies": {
+ "react": "^18.0.0",
+ "react-dom": "^18.0.0"
+ }
+ },
+ "node_modules/@docusaurus/react-loadable": {
+ "version": "5.5.2",
+ "resolved": "https://registry.npmjs.org/@docusaurus/react-loadable/-/react-loadable-5.5.2.tgz",
+ "integrity": "sha512-A3dYjdBGuy0IGT+wyLIGIKLRE+sAk1iNk0f1HjNDysO7u8lhL4N3VEm+FAubmJbAztn94F7MxBTPmnixbiyFdQ==",
+ "dependencies": {
+ "@types/react": "*",
+ "prop-types": "^15.6.2"
+ },
+ "peerDependencies": {
+ "react": "*"
+ }
+ },
+ "node_modules/@docusaurus/theme-classic": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@docusaurus/theme-classic/-/theme-classic-3.0.0.tgz",
+ "integrity": "sha512-wWOHSrKMn7L4jTtXBsb5iEJ3xvTddBye5PjYBnWiCkTAlhle2yMdc4/qRXW35Ot+OV/VXu6YFG8XVUJEl99z0A==",
+ "dependencies": {
+ "@docusaurus/core": "3.0.0",
+ "@docusaurus/mdx-loader": "3.0.0",
+ "@docusaurus/module-type-aliases": "3.0.0",
+ "@docusaurus/plugin-content-blog": "3.0.0",
+ "@docusaurus/plugin-content-docs": "3.0.0",
+ "@docusaurus/plugin-content-pages": "3.0.0",
+ "@docusaurus/theme-common": "3.0.0",
+ "@docusaurus/theme-translations": "3.0.0",
+ "@docusaurus/types": "3.0.0",
+ "@docusaurus/utils": "3.0.0",
+ "@docusaurus/utils-common": "3.0.0",
+ "@docusaurus/utils-validation": "3.0.0",
+ "@mdx-js/react": "^3.0.0",
+ "clsx": "^1.2.1",
+ "copy-text-to-clipboard": "^3.2.0",
+ "infima": "0.2.0-alpha.43",
+ "lodash": "^4.17.21",
+ "nprogress": "^0.2.0",
+ "postcss": "^8.4.26",
+ "prism-react-renderer": "^2.1.0",
+ "prismjs": "^1.29.0",
+ "react-router-dom": "^5.3.4",
+ "rtlcss": "^4.1.0",
+ "tslib": "^2.6.0",
+ "utility-types": "^3.10.0"
+ },
+ "engines": {
+ "node": ">=18.0"
+ },
+ "peerDependencies": {
+ "react": "^18.0.0",
+ "react-dom": "^18.0.0"
+ }
+ },
+ "node_modules/@docusaurus/theme-common": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@docusaurus/theme-common/-/theme-common-3.0.0.tgz",
+ "integrity": "sha512-PahRpCLRK5owCMEqcNtUeTMOkTUCzrJlKA+HLu7f+8osYOni617YurXvHASCsSTxurjXaLz/RqZMnASnqATxIA==",
+ "dependencies": {
+ "@docusaurus/mdx-loader": "3.0.0",
+ "@docusaurus/module-type-aliases": "3.0.0",
+ "@docusaurus/plugin-content-blog": "3.0.0",
+ "@docusaurus/plugin-content-docs": "3.0.0",
+ "@docusaurus/plugin-content-pages": "3.0.0",
+ "@docusaurus/utils": "3.0.0",
+ "@docusaurus/utils-common": "3.0.0",
+ "@types/history": "^4.7.11",
+ "@types/react": "*",
+ "@types/react-router-config": "*",
+ "clsx": "^1.2.1",
+ "parse-numeric-range": "^1.3.0",
+ "prism-react-renderer": "^2.1.0",
+ "tslib": "^2.6.0",
+ "utility-types": "^3.10.0"
+ },
+ "engines": {
+ "node": ">=18.0"
+ },
+ "peerDependencies": {
+ "react": "^18.0.0",
+ "react-dom": "^18.0.0"
+ }
+ },
+ "node_modules/@docusaurus/theme-search-algolia": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@docusaurus/theme-search-algolia/-/theme-search-algolia-3.0.0.tgz",
+ "integrity": "sha512-PyMUNIS9yu0dx7XffB13ti4TG47pJq3G2KE/INvOFb6M0kWh+wwCnucPg4WAOysHOPh+SD9fjlXILoLQstgEIA==",
+ "dependencies": {
+ "@docsearch/react": "^3.5.2",
+ "@docusaurus/core": "3.0.0",
+ "@docusaurus/logger": "3.0.0",
+ "@docusaurus/plugin-content-docs": "3.0.0",
+ "@docusaurus/theme-common": "3.0.0",
+ "@docusaurus/theme-translations": "3.0.0",
+ "@docusaurus/utils": "3.0.0",
+ "@docusaurus/utils-validation": "3.0.0",
+ "algoliasearch": "^4.18.0",
+ "algoliasearch-helper": "^3.13.3",
+ "clsx": "^1.2.1",
+ "eta": "^2.2.0",
+ "fs-extra": "^11.1.1",
+ "lodash": "^4.17.21",
+ "tslib": "^2.6.0",
+ "utility-types": "^3.10.0"
+ },
+ "engines": {
+ "node": ">=18.0"
+ },
+ "peerDependencies": {
+ "react": "^18.0.0",
+ "react-dom": "^18.0.0"
+ }
+ },
+ "node_modules/@docusaurus/theme-translations": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@docusaurus/theme-translations/-/theme-translations-3.0.0.tgz",
+ "integrity": "sha512-p/H3+5LdnDtbMU+csYukA6601U1ld2v9knqxGEEV96qV27HsHfP63J9Ta2RBZUrNhQAgrwFzIc9GdDO8P1Baag==",
+ "dependencies": {
+ "fs-extra": "^11.1.1",
+ "tslib": "^2.6.0"
+ },
+ "engines": {
+ "node": ">=18.0"
+ }
+ },
+ "node_modules/@docusaurus/types": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.0.0.tgz",
+ "integrity": "sha512-Qb+l/hmCOVemReuzvvcFdk84bUmUFyD0Zi81y651ie3VwMrXqC7C0E7yZLKMOsLj/vkqsxHbtkAuYMI89YzNzg==",
+ "dependencies": {
+ "@types/history": "^4.7.11",
+ "@types/react": "*",
+ "commander": "^5.1.0",
+ "joi": "^17.9.2",
+ "react-helmet-async": "^1.3.0",
+ "utility-types": "^3.10.0",
+ "webpack": "^5.88.1",
+ "webpack-merge": "^5.9.0"
+ },
+ "peerDependencies": {
+ "react": "^18.0.0",
+ "react-dom": "^18.0.0"
+ }
+ },
+ "node_modules/@docusaurus/utils": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@docusaurus/utils/-/utils-3.0.0.tgz",
+ "integrity": "sha512-JwGjh5mtjG9XIAESyPxObL6CZ6LO/yU4OSTpq7Q0x+jN25zi/AMbvLjpSyZzWy+qm5uQiFiIhqFaOxvy+82Ekg==",
+ "dependencies": {
+ "@docusaurus/logger": "3.0.0",
+ "@svgr/webpack": "^6.5.1",
+ "escape-string-regexp": "^4.0.0",
+ "file-loader": "^6.2.0",
+ "fs-extra": "^11.1.1",
+ "github-slugger": "^1.5.0",
+ "globby": "^11.1.0",
+ "gray-matter": "^4.0.3",
+ "jiti": "^1.20.0",
+ "js-yaml": "^4.1.0",
+ "lodash": "^4.17.21",
+ "micromatch": "^4.0.5",
+ "resolve-pathname": "^3.0.0",
+ "shelljs": "^0.8.5",
+ "tslib": "^2.6.0",
+ "url-loader": "^4.1.1",
+ "webpack": "^5.88.1"
+ },
+ "engines": {
+ "node": ">=18.0"
+ },
+ "peerDependencies": {
+ "@docusaurus/types": "*"
+ },
+ "peerDependenciesMeta": {
+ "@docusaurus/types": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@docusaurus/utils-common": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@docusaurus/utils-common/-/utils-common-3.0.0.tgz",
+ "integrity": "sha512-7iJWAtt4AHf4PFEPlEPXko9LZD/dbYnhLe0q8e3GRK1EXZyRASah2lznpMwB3lLmVjq/FR6ZAKF+E0wlmL5j0g==",
+ "dependencies": {
+ "tslib": "^2.6.0"
+ },
+ "engines": {
+ "node": ">=18.0"
+ },
+ "peerDependencies": {
+ "@docusaurus/types": "*"
+ },
+ "peerDependenciesMeta": {
+ "@docusaurus/types": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@docusaurus/utils-validation": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@docusaurus/utils-validation/-/utils-validation-3.0.0.tgz",
+ "integrity": "sha512-MlIGUspB/HBW5CYgHvRhmkZbeMiUWKbyVoCQYvbGN8S19SSzVgzyy97KRpcjCOYYeEdkhmRCUwFBJBlLg3IoNQ==",
+ "dependencies": {
+ "@docusaurus/logger": "3.0.0",
+ "@docusaurus/utils": "3.0.0",
+ "joi": "^17.9.2",
+ "js-yaml": "^4.1.0",
+ "tslib": "^2.6.0"
+ },
+ "engines": {
+ "node": ">=18.0"
+ }
+ },
+ "node_modules/@hapi/hoek": {
+ "version": "9.3.0",
+ "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz",
+ "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ=="
+ },
+ "node_modules/@hapi/topo": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz",
+ "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==",
+ "dependencies": {
+ "@hapi/hoek": "^9.0.0"
+ }
+ },
+ "node_modules/@jest/schemas": {
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz",
+ "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==",
+ "dependencies": {
+ "@sinclair/typebox": "^0.27.8"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@jest/types": {
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz",
+ "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==",
+ "dependencies": {
+ "@jest/schemas": "^29.6.3",
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^3.0.0",
+ "@types/node": "*",
+ "@types/yargs": "^17.0.8",
+ "chalk": "^4.0.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@jridgewell/gen-mapping": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz",
+ "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==",
+ "dependencies": {
+ "@jridgewell/set-array": "^1.0.1",
+ "@jridgewell/sourcemap-codec": "^1.4.10",
+ "@jridgewell/trace-mapping": "^0.3.9"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/resolve-uri": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz",
+ "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==",
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/set-array": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
+ "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/source-map": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz",
+ "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==",
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.0",
+ "@jridgewell/trace-mapping": "^0.3.9"
+ }
+ },
+ "node_modules/@jridgewell/sourcemap-codec": {
+ "version": "1.4.15",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
+ "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg=="
+ },
+ "node_modules/@jridgewell/trace-mapping": {
+ "version": "0.3.20",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz",
+ "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==",
+ "dependencies": {
+ "@jridgewell/resolve-uri": "^3.1.0",
+ "@jridgewell/sourcemap-codec": "^1.4.14"
+ }
+ },
+ "node_modules/@leichtgewicht/ip-codec": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz",
+ "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A=="
+ },
+ "node_modules/@mdx-js/mdx": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-3.0.0.tgz",
+ "integrity": "sha512-Icm0TBKBLYqroYbNW3BPnzMGn+7mwpQOK310aZ7+fkCtiU3aqv2cdcX+nd0Ydo3wI5Rx8bX2Z2QmGb/XcAClCw==",
+ "dependencies": {
+ "@types/estree": "^1.0.0",
+ "@types/estree-jsx": "^1.0.0",
+ "@types/hast": "^3.0.0",
+ "@types/mdx": "^2.0.0",
+ "collapse-white-space": "^2.0.0",
+ "devlop": "^1.0.0",
+ "estree-util-build-jsx": "^3.0.0",
+ "estree-util-is-identifier-name": "^3.0.0",
+ "estree-util-to-js": "^2.0.0",
+ "estree-walker": "^3.0.0",
+ "hast-util-to-estree": "^3.0.0",
+ "hast-util-to-jsx-runtime": "^2.0.0",
+ "markdown-extensions": "^2.0.0",
+ "periscopic": "^3.0.0",
+ "remark-mdx": "^3.0.0",
+ "remark-parse": "^11.0.0",
+ "remark-rehype": "^11.0.0",
+ "source-map": "^0.7.0",
+ "unified": "^11.0.0",
+ "unist-util-position-from-estree": "^2.0.0",
+ "unist-util-stringify-position": "^4.0.0",
+ "unist-util-visit": "^5.0.0",
+ "vfile": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/@mdx-js/react": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-3.0.0.tgz",
+ "integrity": "sha512-nDctevR9KyYFyV+m+/+S4cpzCWHqj+iHDHq3QrsWezcC+B17uZdIWgCguESUkwFhM3n/56KxWVE3V6EokrmONQ==",
+ "dependencies": {
+ "@types/mdx": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ },
+ "peerDependencies": {
+ "@types/react": ">=16",
+ "react": ">=16"
+ }
+ },
+ "node_modules/@microlink/react-json-view": {
+ "version": "1.23.0",
+ "resolved": "https://registry.npmjs.org/@microlink/react-json-view/-/react-json-view-1.23.0.tgz",
+ "integrity": "sha512-HYJ1nsfO4/qn8afnAMhuk7+5a1vcjEaS8Gm5Vpr1SqdHDY0yLBJGpA+9DvKyxyVKaUkXzKXt3Mif9RcmFSdtYg==",
+ "dependencies": {
+ "flux": "~4.0.1",
+ "react-base16-styling": "~0.6.0",
+ "react-lifecycles-compat": "~3.0.4",
+ "react-textarea-autosize": "~8.3.2"
+ },
+ "peerDependencies": {
+ "react": ">= 15",
+ "react-dom": ">= 15"
+ }
+ },
+ "node_modules/@microlink/react-json-view/node_modules/flux": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/flux/-/flux-4.0.4.tgz",
+ "integrity": "sha512-NCj3XlayA2UsapRpM7va6wU1+9rE5FIL7qoMcmxWHRzbp0yujihMBm9BBHZ1MDIk5h5o2Bl6eGiCe8rYELAmYw==",
+ "dependencies": {
+ "fbemitter": "^3.0.0",
+ "fbjs": "^3.0.1"
+ },
+ "peerDependencies": {
+ "react": "^15.0.2 || ^16.0.0 || ^17.0.0"
+ }
+ },
+ "node_modules/@nodelib/fs.scandir": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+ "dependencies": {
+ "@nodelib/fs.stat": "2.0.5",
+ "run-parallel": "^1.1.9"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.stat": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.walk": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+ "dependencies": {
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@pnpm/config.env-replace": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz",
+ "integrity": "sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==",
+ "engines": {
+ "node": ">=12.22.0"
+ }
+ },
+ "node_modules/@pnpm/network.ca-file": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz",
+ "integrity": "sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==",
+ "dependencies": {
+ "graceful-fs": "4.2.10"
+ },
+ "engines": {
+ "node": ">=12.22.0"
+ }
+ },
+ "node_modules/@pnpm/network.ca-file/node_modules/graceful-fs": {
+ "version": "4.2.10",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
+ "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA=="
+ },
+ "node_modules/@pnpm/npm-conf": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-2.2.2.tgz",
+ "integrity": "sha512-UA91GwWPhFExt3IizW6bOeY/pQ0BkuNwKjk9iQW9KqxluGCrg4VenZ0/L+2Y0+ZOtme72EVvg6v0zo3AMQRCeA==",
+ "dependencies": {
+ "@pnpm/config.env-replace": "^1.1.0",
+ "@pnpm/network.ca-file": "^1.0.1",
+ "config-chain": "^1.1.11"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@polka/url": {
+ "version": "1.0.0-next.23",
+ "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.23.tgz",
+ "integrity": "sha512-C16M+IYz0rgRhWZdCmK+h58JMv8vijAA61gmz2rspCSwKwzBebpdcsiUmwrtJRdphuY30i6BSLEOP8ppbNLyLg=="
+ },
+ "node_modules/@sideway/address": {
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz",
+ "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==",
+ "dependencies": {
+ "@hapi/hoek": "^9.0.0"
+ }
+ },
+ "node_modules/@sideway/formula": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz",
+ "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg=="
+ },
+ "node_modules/@sideway/pinpoint": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz",
+ "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ=="
+ },
+ "node_modules/@sinclair/typebox": {
+ "version": "0.27.8",
+ "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz",
+ "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA=="
+ },
+ "node_modules/@sindresorhus/is": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz",
+ "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/is?sponsor=1"
+ }
+ },
+ "node_modules/@slorber/remark-comment": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@slorber/remark-comment/-/remark-comment-1.0.0.tgz",
+ "integrity": "sha512-RCE24n7jsOj1M0UPvIQCHTe7fI0sFL4S2nwKVWwHyVr/wI/H8GosgsJGyhnsZoGFnD/P2hLf1mSbrrgSLN93NA==",
+ "dependencies": {
+ "micromark-factory-space": "^1.0.0",
+ "micromark-util-character": "^1.1.0",
+ "micromark-util-symbol": "^1.0.1"
+ }
+ },
+ "node_modules/@slorber/static-site-generator-webpack-plugin": {
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/@slorber/static-site-generator-webpack-plugin/-/static-site-generator-webpack-plugin-4.0.7.tgz",
+ "integrity": "sha512-Ug7x6z5lwrz0WqdnNFOMYrDQNTPAprvHLSh6+/fmml3qUiz6l5eq+2MzLKWtn/q5K5NpSiFsZTP/fck/3vjSxA==",
+ "dependencies": {
+ "eval": "^0.1.8",
+ "p-map": "^4.0.0",
+ "webpack-sources": "^3.2.2"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/@svgr/babel-plugin-add-jsx-attribute": {
+ "version": "6.5.1",
+ "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.5.1.tgz",
+ "integrity": "sha512-9PYGcXrAxitycIjRmZB+Q0JaN07GZIWaTBIGQzfaZv+qr1n8X1XUEJ5rZ/vx6OVD9RRYlrNnXWExQXcmZeD/BQ==",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/gregberge"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@svgr/babel-plugin-remove-jsx-attribute": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz",
+ "integrity": "sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==",
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/gregberge"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@svgr/babel-plugin-remove-jsx-empty-expression": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz",
+ "integrity": "sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==",
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/gregberge"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": {
+ "version": "6.5.1",
+ "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-6.5.1.tgz",
+ "integrity": "sha512-8DPaVVE3fd5JKuIC29dqyMB54sA6mfgki2H2+swh+zNJoynC8pMPzOkidqHOSc6Wj032fhl8Z0TVn1GiPpAiJg==",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/gregberge"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@svgr/babel-plugin-svg-dynamic-title": {
+ "version": "6.5.1",
+ "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-6.5.1.tgz",
+ "integrity": "sha512-FwOEi0Il72iAzlkaHrlemVurgSQRDFbk0OC8dSvD5fSBPHltNh7JtLsxmZUhjYBZo2PpcU/RJvvi6Q0l7O7ogw==",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/gregberge"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@svgr/babel-plugin-svg-em-dimensions": {
+ "version": "6.5.1",
+ "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-6.5.1.tgz",
+ "integrity": "sha512-gWGsiwjb4tw+ITOJ86ndY/DZZ6cuXMNE/SjcDRg+HLuCmwpcjOktwRF9WgAiycTqJD/QXqL2f8IzE2Rzh7aVXA==",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/gregberge"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@svgr/babel-plugin-transform-react-native-svg": {
+ "version": "6.5.1",
+ "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-6.5.1.tgz",
+ "integrity": "sha512-2jT3nTayyYP7kI6aGutkyfJ7UMGtuguD72OjeGLwVNyfPRBD8zQthlvL+fAbAKk5n9ZNcvFkp/b1lZ7VsYqVJg==",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/gregberge"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@svgr/babel-plugin-transform-svg-component": {
+ "version": "6.5.1",
+ "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-6.5.1.tgz",
+ "integrity": "sha512-a1p6LF5Jt33O3rZoVRBqdxL350oge54iZWHNI6LJB5tQ7EelvD/Mb1mfBiZNAan0dt4i3VArkFRjA4iObuNykQ==",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/gregberge"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@svgr/babel-preset": {
+ "version": "6.5.1",
+ "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-6.5.1.tgz",
+ "integrity": "sha512-6127fvO/FF2oi5EzSQOAjo1LE3OtNVh11R+/8FXa+mHx1ptAaS4cknIjnUA7e6j6fwGGJ17NzaTJFUwOV2zwCw==",
+ "dependencies": {
+ "@svgr/babel-plugin-add-jsx-attribute": "^6.5.1",
+ "@svgr/babel-plugin-remove-jsx-attribute": "*",
+ "@svgr/babel-plugin-remove-jsx-empty-expression": "*",
+ "@svgr/babel-plugin-replace-jsx-attribute-value": "^6.5.1",
+ "@svgr/babel-plugin-svg-dynamic-title": "^6.5.1",
+ "@svgr/babel-plugin-svg-em-dimensions": "^6.5.1",
+ "@svgr/babel-plugin-transform-react-native-svg": "^6.5.1",
+ "@svgr/babel-plugin-transform-svg-component": "^6.5.1"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/gregberge"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@svgr/core": {
+ "version": "6.5.1",
+ "resolved": "https://registry.npmjs.org/@svgr/core/-/core-6.5.1.tgz",
+ "integrity": "sha512-/xdLSWxK5QkqG524ONSjvg3V/FkNyCv538OIBdQqPNaAta3AsXj/Bd2FbvR87yMbXO2hFSWiAe/Q6IkVPDw+mw==",
+ "dependencies": {
+ "@babel/core": "^7.19.6",
+ "@svgr/babel-preset": "^6.5.1",
+ "@svgr/plugin-jsx": "^6.5.1",
+ "camelcase": "^6.2.0",
+ "cosmiconfig": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/gregberge"
+ }
+ },
+ "node_modules/@svgr/hast-util-to-babel-ast": {
+ "version": "6.5.1",
+ "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-6.5.1.tgz",
+ "integrity": "sha512-1hnUxxjd83EAxbL4a0JDJoD3Dao3hmjvyvyEV8PzWmLK3B9m9NPlW7GKjFyoWE8nM7HnXzPcmmSyOW8yOddSXw==",
+ "dependencies": {
+ "@babel/types": "^7.20.0",
+ "entities": "^4.4.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/gregberge"
+ }
+ },
+ "node_modules/@svgr/plugin-jsx": {
+ "version": "6.5.1",
+ "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-6.5.1.tgz",
+ "integrity": "sha512-+UdQxI3jgtSjCykNSlEMuy1jSRQlGC7pqBCPvkG/2dATdWo082zHTTK3uhnAju2/6XpE6B5mZ3z4Z8Ns01S8Gw==",
+ "dependencies": {
+ "@babel/core": "^7.19.6",
+ "@svgr/babel-preset": "^6.5.1",
+ "@svgr/hast-util-to-babel-ast": "^6.5.1",
+ "svg-parser": "^2.0.4"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/gregberge"
+ },
+ "peerDependencies": {
+ "@svgr/core": "^6.0.0"
+ }
+ },
+ "node_modules/@svgr/plugin-svgo": {
+ "version": "6.5.1",
+ "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-6.5.1.tgz",
+ "integrity": "sha512-omvZKf8ixP9z6GWgwbtmP9qQMPX4ODXi+wzbVZgomNFsUIlHA1sf4fThdwTWSsZGgvGAG6yE+b/F5gWUkcZ/iQ==",
+ "dependencies": {
+ "cosmiconfig": "^7.0.1",
+ "deepmerge": "^4.2.2",
+ "svgo": "^2.8.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/gregberge"
+ },
+ "peerDependencies": {
+ "@svgr/core": "*"
+ }
+ },
+ "node_modules/@svgr/webpack": {
+ "version": "6.5.1",
+ "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-6.5.1.tgz",
+ "integrity": "sha512-cQ/AsnBkXPkEK8cLbv4Dm7JGXq2XrumKnL1dRpJD9rIO2fTIlJI9a1uCciYG1F2aUsox/hJQyNGbt3soDxSRkA==",
+ "dependencies": {
+ "@babel/core": "^7.19.6",
+ "@babel/plugin-transform-react-constant-elements": "^7.18.12",
+ "@babel/preset-env": "^7.19.4",
+ "@babel/preset-react": "^7.18.6",
+ "@babel/preset-typescript": "^7.18.6",
+ "@svgr/core": "^6.5.1",
+ "@svgr/plugin-jsx": "^6.5.1",
+ "@svgr/plugin-svgo": "^6.5.1"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/gregberge"
+ }
+ },
+ "node_modules/@szmarczak/http-timer": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz",
+ "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==",
+ "dependencies": {
+ "defer-to-connect": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=14.16"
+ }
+ },
+ "node_modules/@trysound/sax": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz",
+ "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==",
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/@types/acorn": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/@types/acorn/-/acorn-4.0.6.tgz",
+ "integrity": "sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==",
+ "dependencies": {
+ "@types/estree": "*"
+ }
+ },
+ "node_modules/@types/body-parser": {
+ "version": "1.19.5",
+ "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz",
+ "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==",
+ "dependencies": {
+ "@types/connect": "*",
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/bonjour": {
+ "version": "3.5.13",
+ "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz",
+ "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==",
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/connect": {
+ "version": "3.4.38",
+ "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz",
+ "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==",
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/connect-history-api-fallback": {
+ "version": "1.5.4",
+ "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz",
+ "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==",
+ "dependencies": {
+ "@types/express-serve-static-core": "*",
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/debug": {
+ "version": "4.1.12",
+ "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz",
+ "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==",
+ "dependencies": {
+ "@types/ms": "*"
+ }
+ },
+ "node_modules/@types/eslint": {
+ "version": "8.44.7",
+ "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.7.tgz",
+ "integrity": "sha512-f5ORu2hcBbKei97U73mf+l9t4zTGl74IqZ0GQk4oVea/VS8tQZYkUveSYojk+frraAVYId0V2WC9O4PTNru2FQ==",
+ "dependencies": {
+ "@types/estree": "*",
+ "@types/json-schema": "*"
+ }
+ },
+ "node_modules/@types/eslint-scope": {
+ "version": "3.7.7",
+ "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz",
+ "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==",
+ "dependencies": {
+ "@types/eslint": "*",
+ "@types/estree": "*"
+ }
+ },
+ "node_modules/@types/estree": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz",
+ "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw=="
+ },
+ "node_modules/@types/estree-jsx": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.3.tgz",
+ "integrity": "sha512-pvQ+TKeRHeiUGRhvYwRrQ/ISnohKkSJR14fT2yqyZ4e9K5vqc7hrtY2Y1Dw0ZwAzQ6DQsxsaCUuSIIi8v0Cq6w==",
+ "dependencies": {
+ "@types/estree": "*"
+ }
+ },
+ "node_modules/@types/express": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz",
+ "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==",
+ "dependencies": {
+ "@types/body-parser": "*",
+ "@types/express-serve-static-core": "^4.17.33",
+ "@types/qs": "*",
+ "@types/serve-static": "*"
+ }
+ },
+ "node_modules/@types/express-serve-static-core": {
+ "version": "4.17.41",
+ "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.41.tgz",
+ "integrity": "sha512-OaJ7XLaelTgrvlZD8/aa0vvvxZdUmlCn6MtWeB7TkiKW70BQLc9XEPpDLPdbo52ZhXUCrznlWdCHWxJWtdyajA==",
+ "dependencies": {
+ "@types/node": "*",
+ "@types/qs": "*",
+ "@types/range-parser": "*",
+ "@types/send": "*"
+ }
+ },
+ "node_modules/@types/gtag.js": {
+ "version": "0.0.12",
+ "resolved": "https://registry.npmjs.org/@types/gtag.js/-/gtag.js-0.0.12.tgz",
+ "integrity": "sha512-YQV9bUsemkzG81Ea295/nF/5GijnD2Af7QhEofh7xu+kvCN6RdodgNwwGWXB5GMI3NoyvQo0odNctoH/qLMIpg=="
+ },
+ "node_modules/@types/hast": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.3.tgz",
+ "integrity": "sha512-2fYGlaDy/qyLlhidX42wAH0KBi2TCjKMH8CHmBXgRlJ3Y+OXTiqsPQ6IWarZKwF1JoUcAJdPogv1d4b0COTpmQ==",
+ "dependencies": {
+ "@types/unist": "*"
+ }
+ },
+ "node_modules/@types/history": {
+ "version": "4.7.11",
+ "resolved": "https://registry.npmjs.org/@types/history/-/history-4.7.11.tgz",
+ "integrity": "sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA=="
+ },
+ "node_modules/@types/html-minifier-terser": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz",
+ "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg=="
+ },
+ "node_modules/@types/http-cache-semantics": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz",
+ "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA=="
+ },
+ "node_modules/@types/http-errors": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz",
+ "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA=="
+ },
+ "node_modules/@types/http-proxy": {
+ "version": "1.17.14",
+ "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.14.tgz",
+ "integrity": "sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==",
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/istanbul-lib-coverage": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz",
+ "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w=="
+ },
+ "node_modules/@types/istanbul-lib-report": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz",
+ "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==",
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "*"
+ }
+ },
+ "node_modules/@types/istanbul-reports": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz",
+ "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==",
+ "dependencies": {
+ "@types/istanbul-lib-report": "*"
+ }
+ },
+ "node_modules/@types/json-schema": {
+ "version": "7.0.15",
+ "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
+ "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA=="
+ },
+ "node_modules/@types/mdast": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz",
+ "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==",
+ "dependencies": {
+ "@types/unist": "*"
+ }
+ },
+ "node_modules/@types/mdx": {
+ "version": "2.0.10",
+ "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.10.tgz",
+ "integrity": "sha512-Rllzc5KHk0Al5/WANwgSPl1/CwjqCy+AZrGd78zuK+jO9aDM6ffblZ+zIjgPNAaEBmlO0RYDvLNh7wD0zKVgEg=="
+ },
+ "node_modules/@types/mime": {
+ "version": "1.3.5",
+ "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz",
+ "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w=="
+ },
+ "node_modules/@types/ms": {
+ "version": "0.7.34",
+ "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz",
+ "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g=="
+ },
+ "node_modules/@types/node": {
+ "version": "20.10.0",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.0.tgz",
+ "integrity": "sha512-D0WfRmU9TQ8I9PFx9Yc+EBHw+vSpIub4IDvQivcp26PtPrdMGAq5SDcpXEo/epqa/DXotVpekHiLNTg3iaKXBQ==",
+ "dependencies": {
+ "undici-types": "~5.26.4"
+ }
+ },
+ "node_modules/@types/node-forge": {
+ "version": "1.3.10",
+ "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.10.tgz",
+ "integrity": "sha512-y6PJDYN4xYBxwd22l+OVH35N+1fCYWiuC3aiP2SlXVE6Lo7SS+rSx9r89hLxrP4pn6n1lBGhHJ12pj3F3Mpttw==",
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/parse-json": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz",
+ "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw=="
+ },
+ "node_modules/@types/prismjs": {
+ "version": "1.26.3",
+ "resolved": "https://registry.npmjs.org/@types/prismjs/-/prismjs-1.26.3.tgz",
+ "integrity": "sha512-A0D0aTXvjlqJ5ZILMz3rNfDBOx9hHxLZYv2by47Sm/pqW35zzjusrZTryatjN/Rf8Us2gZrJD+KeHbUSTux1Cw=="
+ },
+ "node_modules/@types/prop-types": {
+ "version": "15.7.11",
+ "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz",
+ "integrity": "sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng=="
+ },
+ "node_modules/@types/qs": {
+ "version": "6.9.10",
+ "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.10.tgz",
+ "integrity": "sha512-3Gnx08Ns1sEoCrWssEgTSJs/rsT2vhGP+Ja9cnnk9k4ALxinORlQneLXFeFKOTJMOeZUFD1s7w+w2AphTpvzZw=="
+ },
+ "node_modules/@types/range-parser": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz",
+ "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ=="
+ },
+ "node_modules/@types/react": {
+ "version": "18.2.38",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.38.tgz",
+ "integrity": "sha512-cBBXHzuPtQK6wNthuVMV6IjHAFkdl/FOPFIlkd81/Cd1+IqkHu/A+w4g43kaQQoYHik/ruaQBDL72HyCy1vuMw==",
+ "dependencies": {
+ "@types/prop-types": "*",
+ "@types/scheduler": "*",
+ "csstype": "^3.0.2"
+ }
+ },
+ "node_modules/@types/react-router": {
+ "version": "5.1.20",
+ "resolved": "https://registry.npmjs.org/@types/react-router/-/react-router-5.1.20.tgz",
+ "integrity": "sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==",
+ "dependencies": {
+ "@types/history": "^4.7.11",
+ "@types/react": "*"
+ }
+ },
+ "node_modules/@types/react-router-config": {
+ "version": "5.0.10",
+ "resolved": "https://registry.npmjs.org/@types/react-router-config/-/react-router-config-5.0.10.tgz",
+ "integrity": "sha512-Wn6c/tXdEgi9adCMtDwx8Q2vGty6TsPTc/wCQQ9kAlye8UqFxj0vGFWWuhywNfkwqth+SOgJxQTLTZukrqDQmQ==",
+ "dependencies": {
+ "@types/history": "^4.7.11",
+ "@types/react": "*",
+ "@types/react-router": "^5.1.0"
+ }
+ },
+ "node_modules/@types/react-router-dom": {
+ "version": "5.3.3",
+ "resolved": "https://registry.npmjs.org/@types/react-router-dom/-/react-router-dom-5.3.3.tgz",
+ "integrity": "sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==",
+ "dependencies": {
+ "@types/history": "^4.7.11",
+ "@types/react": "*",
+ "@types/react-router": "*"
+ }
+ },
+ "node_modules/@types/retry": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz",
+ "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA=="
+ },
+ "node_modules/@types/sax": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/@types/sax/-/sax-1.2.7.tgz",
+ "integrity": "sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==",
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/scheduler": {
+ "version": "0.16.8",
+ "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz",
+ "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A=="
+ },
+ "node_modules/@types/send": {
+ "version": "0.17.4",
+ "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz",
+ "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==",
+ "dependencies": {
+ "@types/mime": "^1",
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/serve-index": {
+ "version": "1.9.4",
+ "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz",
+ "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==",
+ "dependencies": {
+ "@types/express": "*"
+ }
+ },
+ "node_modules/@types/serve-static": {
+ "version": "1.15.5",
+ "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.5.tgz",
+ "integrity": "sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==",
+ "dependencies": {
+ "@types/http-errors": "*",
+ "@types/mime": "*",
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/sockjs": {
+ "version": "0.3.36",
+ "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz",
+ "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==",
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/unist": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz",
+ "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ=="
+ },
+ "node_modules/@types/ws": {
+ "version": "8.5.10",
+ "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz",
+ "integrity": "sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==",
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/yargs": {
+ "version": "17.0.32",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz",
+ "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==",
+ "dependencies": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "node_modules/@types/yargs-parser": {
+ "version": "21.0.3",
+ "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz",
+ "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ=="
+ },
+ "node_modules/@ungap/structured-clone": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz",
+ "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ=="
+ },
+ "node_modules/@webassemblyjs/ast": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz",
+ "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==",
+ "dependencies": {
+ "@webassemblyjs/helper-numbers": "1.11.6",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.6"
+ }
+ },
+ "node_modules/@webassemblyjs/floating-point-hex-parser": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz",
+ "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw=="
+ },
+ "node_modules/@webassemblyjs/helper-api-error": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz",
+ "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q=="
+ },
+ "node_modules/@webassemblyjs/helper-buffer": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz",
+ "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA=="
+ },
+ "node_modules/@webassemblyjs/helper-numbers": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz",
+ "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==",
+ "dependencies": {
+ "@webassemblyjs/floating-point-hex-parser": "1.11.6",
+ "@webassemblyjs/helper-api-error": "1.11.6",
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "node_modules/@webassemblyjs/helper-wasm-bytecode": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz",
+ "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA=="
+ },
+ "node_modules/@webassemblyjs/helper-wasm-section": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz",
+ "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==",
+ "dependencies": {
+ "@webassemblyjs/ast": "1.11.6",
+ "@webassemblyjs/helper-buffer": "1.11.6",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
+ "@webassemblyjs/wasm-gen": "1.11.6"
+ }
+ },
+ "node_modules/@webassemblyjs/ieee754": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz",
+ "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==",
+ "dependencies": {
+ "@xtuc/ieee754": "^1.2.0"
+ }
+ },
+ "node_modules/@webassemblyjs/leb128": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz",
+ "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==",
+ "dependencies": {
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "node_modules/@webassemblyjs/utf8": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz",
+ "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA=="
+ },
+ "node_modules/@webassemblyjs/wasm-edit": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz",
+ "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==",
+ "dependencies": {
+ "@webassemblyjs/ast": "1.11.6",
+ "@webassemblyjs/helper-buffer": "1.11.6",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
+ "@webassemblyjs/helper-wasm-section": "1.11.6",
+ "@webassemblyjs/wasm-gen": "1.11.6",
+ "@webassemblyjs/wasm-opt": "1.11.6",
+ "@webassemblyjs/wasm-parser": "1.11.6",
+ "@webassemblyjs/wast-printer": "1.11.6"
+ }
+ },
+ "node_modules/@webassemblyjs/wasm-gen": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz",
+ "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==",
+ "dependencies": {
+ "@webassemblyjs/ast": "1.11.6",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
+ "@webassemblyjs/ieee754": "1.11.6",
+ "@webassemblyjs/leb128": "1.11.6",
+ "@webassemblyjs/utf8": "1.11.6"
+ }
+ },
+ "node_modules/@webassemblyjs/wasm-opt": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz",
+ "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==",
+ "dependencies": {
+ "@webassemblyjs/ast": "1.11.6",
+ "@webassemblyjs/helper-buffer": "1.11.6",
+ "@webassemblyjs/wasm-gen": "1.11.6",
+ "@webassemblyjs/wasm-parser": "1.11.6"
+ }
+ },
+ "node_modules/@webassemblyjs/wasm-parser": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz",
+ "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==",
+ "dependencies": {
+ "@webassemblyjs/ast": "1.11.6",
+ "@webassemblyjs/helper-api-error": "1.11.6",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
+ "@webassemblyjs/ieee754": "1.11.6",
+ "@webassemblyjs/leb128": "1.11.6",
+ "@webassemblyjs/utf8": "1.11.6"
+ }
+ },
+ "node_modules/@webassemblyjs/wast-printer": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz",
+ "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==",
+ "dependencies": {
+ "@webassemblyjs/ast": "1.11.6",
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "node_modules/@xtuc/ieee754": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
+ "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA=="
+ },
+ "node_modules/@xtuc/long": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz",
+ "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ=="
+ },
+ "node_modules/accepts": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
+ "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
+ "dependencies": {
+ "mime-types": "~2.1.34",
+ "negotiator": "0.6.3"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/accepts/node_modules/mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/accepts/node_modules/mime-types": {
+ "version": "2.1.35",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "dependencies": {
+ "mime-db": "1.52.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/acorn": {
+ "version": "8.11.2",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz",
+ "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==",
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/acorn-import-assertions": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz",
+ "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==",
+ "peerDependencies": {
+ "acorn": "^8"
+ }
+ },
+ "node_modules/acorn-jsx": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
+ "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
+ "peerDependencies": {
+ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ }
+ },
+ "node_modules/acorn-walk": {
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.0.tgz",
+ "integrity": "sha512-FS7hV565M5l1R08MXqo8odwMTB02C2UqzB17RVgu9EyuYFBqJZ3/ZY97sQD5FewVu1UyDFc1yztUDrAwT0EypA==",
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/address": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/address/-/address-1.2.2.tgz",
+ "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==",
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/aggregate-error": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz",
+ "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==",
+ "dependencies": {
+ "clean-stack": "^2.0.0",
+ "indent-string": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ajv": {
+ "version": "8.12.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
+ "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/ajv-formats": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz",
+ "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==",
+ "dependencies": {
+ "ajv": "^8.0.0"
+ },
+ "peerDependencies": {
+ "ajv": "^8.0.0"
+ },
+ "peerDependenciesMeta": {
+ "ajv": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/ajv-keywords": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz",
+ "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.3"
+ },
+ "peerDependencies": {
+ "ajv": "^8.8.2"
+ }
+ },
+ "node_modules/algoliasearch": {
+ "version": "4.20.0",
+ "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.20.0.tgz",
+ "integrity": "sha512-y+UHEjnOItoNy0bYO+WWmLWBlPwDjKHW6mNHrPi0NkuhpQOOEbrkwQH/wgKFDLh7qlKjzoKeiRtlpewDPDG23g==",
+ "dependencies": {
+ "@algolia/cache-browser-local-storage": "4.20.0",
+ "@algolia/cache-common": "4.20.0",
+ "@algolia/cache-in-memory": "4.20.0",
+ "@algolia/client-account": "4.20.0",
+ "@algolia/client-analytics": "4.20.0",
+ "@algolia/client-common": "4.20.0",
+ "@algolia/client-personalization": "4.20.0",
+ "@algolia/client-search": "4.20.0",
+ "@algolia/logger-common": "4.20.0",
+ "@algolia/logger-console": "4.20.0",
+ "@algolia/requester-browser-xhr": "4.20.0",
+ "@algolia/requester-common": "4.20.0",
+ "@algolia/requester-node-http": "4.20.0",
+ "@algolia/transporter": "4.20.0"
+ }
+ },
+ "node_modules/algoliasearch-helper": {
+ "version": "3.15.0",
+ "resolved": "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.15.0.tgz",
+ "integrity": "sha512-DGUnK3TGtDQsaUE4ayF/LjSN0DGsuYThB8WBgnnDY0Wq04K6lNVruO3LfqJOgSfDiezp+Iyt8Tj4YKHi+/ivSA==",
+ "dependencies": {
+ "@algolia/events": "^4.0.1"
+ },
+ "peerDependencies": {
+ "algoliasearch": ">= 3.1 < 6"
+ }
+ },
+ "node_modules/ansi-align": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz",
+ "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==",
+ "dependencies": {
+ "string-width": "^4.1.0"
+ }
+ },
+ "node_modules/ansi-align/node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
+ },
+ "node_modules/ansi-align/node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ansi-html-community": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz",
+ "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==",
+ "engines": [
+ "node >= 0.8.0"
+ ],
+ "bin": {
+ "ansi-html": "bin/ansi-html"
+ }
+ },
+ "node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/anymatch": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
+ "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
+ "dependencies": {
+ "normalize-path": "^3.0.0",
+ "picomatch": "^2.0.4"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/arg": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
+ "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg=="
+ },
+ "node_modules/argparse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="
+ },
+ "node_modules/array-flatten": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz",
+ "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ=="
+ },
+ "node_modules/array-union": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
+ "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/asap": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
+ "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA=="
+ },
+ "node_modules/astring": {
+ "version": "1.8.6",
+ "resolved": "https://registry.npmjs.org/astring/-/astring-1.8.6.tgz",
+ "integrity": "sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg==",
+ "bin": {
+ "astring": "bin/astring"
+ }
+ },
+ "node_modules/asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
+ },
+ "node_modules/at-least-node": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz",
+ "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==",
+ "engines": {
+ "node": ">= 4.0.0"
+ }
+ },
+ "node_modules/autoprefixer": {
+ "version": "10.4.16",
+ "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.16.tgz",
+ "integrity": "sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/autoprefixer"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "dependencies": {
+ "browserslist": "^4.21.10",
+ "caniuse-lite": "^1.0.30001538",
+ "fraction.js": "^4.3.6",
+ "normalize-range": "^0.1.2",
+ "picocolors": "^1.0.0",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "bin": {
+ "autoprefixer": "bin/autoprefixer"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ },
+ "peerDependencies": {
+ "postcss": "^8.1.0"
+ }
+ },
+ "node_modules/axios": {
+ "version": "1.6.2",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.2.tgz",
+ "integrity": "sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==",
+ "dependencies": {
+ "follow-redirects": "^1.15.0",
+ "form-data": "^4.0.0",
+ "proxy-from-env": "^1.1.0"
+ }
+ },
+ "node_modules/babel-loader": {
+ "version": "9.1.3",
+ "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz",
+ "integrity": "sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==",
+ "dependencies": {
+ "find-cache-dir": "^4.0.0",
+ "schema-utils": "^4.0.0"
+ },
+ "engines": {
+ "node": ">= 14.15.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.12.0",
+ "webpack": ">=5"
+ }
+ },
+ "node_modules/babel-plugin-dynamic-import-node": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz",
+ "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==",
+ "dependencies": {
+ "object.assign": "^4.1.0"
+ }
+ },
+ "node_modules/babel-plugin-polyfill-corejs2": {
+ "version": "0.4.6",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.6.tgz",
+ "integrity": "sha512-jhHiWVZIlnPbEUKSSNb9YoWcQGdlTLq7z1GHL4AjFxaoOUMuuEVJ+Y4pAaQUGOGk93YsVCKPbqbfw3m0SM6H8Q==",
+ "dependencies": {
+ "@babel/compat-data": "^7.22.6",
+ "@babel/helper-define-polyfill-provider": "^0.4.3",
+ "semver": "^6.3.1"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
+ }
+ },
+ "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/babel-plugin-polyfill-corejs3": {
+ "version": "0.8.6",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.6.tgz",
+ "integrity": "sha512-leDIc4l4tUgU7str5BWLS2h8q2N4Nf6lGZP6UrNDxdtfF2g69eJ5L0H7S8A5Ln/arfFAfHor5InAdZuIOwZdgQ==",
+ "dependencies": {
+ "@babel/helper-define-polyfill-provider": "^0.4.3",
+ "core-js-compat": "^3.33.1"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
+ }
+ },
+ "node_modules/babel-plugin-polyfill-regenerator": {
+ "version": "0.5.3",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.3.tgz",
+ "integrity": "sha512-8sHeDOmXC8csczMrYEOf0UTNa4yE2SxV5JGeT/LP1n0OYVDUUFPxG9vdk2AlDlIit4t+Kf0xCtpgXPBwnn/9pw==",
+ "dependencies": {
+ "@babel/helper-define-polyfill-provider": "^0.4.3"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
+ }
+ },
+ "node_modules/bail": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz",
+ "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
+ },
+ "node_modules/base16": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/base16/-/base16-1.0.0.tgz",
+ "integrity": "sha512-pNdYkNPiJUnEhnfXV56+sQy8+AaPcG3POZAUnwr4EeqCUZFz4u2PePbo3e5Gj4ziYPCWGUZT9RHisvJKnwFuBQ=="
+ },
+ "node_modules/batch": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz",
+ "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw=="
+ },
+ "node_modules/big.js": {
+ "version": "5.2.2",
+ "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
+ "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/binary-extensions": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
+ "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/body-parser": {
+ "version": "1.20.1",
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz",
+ "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==",
+ "dependencies": {
+ "bytes": "3.1.2",
+ "content-type": "~1.0.4",
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "destroy": "1.2.0",
+ "http-errors": "2.0.0",
+ "iconv-lite": "0.4.24",
+ "on-finished": "2.4.1",
+ "qs": "6.11.0",
+ "raw-body": "2.5.1",
+ "type-is": "~1.6.18",
+ "unpipe": "1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8",
+ "npm": "1.2.8000 || >= 1.4.16"
+ }
+ },
+ "node_modules/body-parser/node_modules/bytes": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
+ "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/body-parser/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/body-parser/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+ },
+ "node_modules/bonjour-service": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.1.1.tgz",
+ "integrity": "sha512-Z/5lQRMOG9k7W+FkeGTNjh7htqn/2LMnfOvBZ8pynNZCM9MwkQkI3zeI4oz09uWdcgmgHugVvBqxGg4VQJ5PCg==",
+ "dependencies": {
+ "array-flatten": "^2.1.2",
+ "dns-equal": "^1.0.0",
+ "fast-deep-equal": "^3.1.3",
+ "multicast-dns": "^7.2.5"
+ }
+ },
+ "node_modules/boolbase": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
+ "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww=="
+ },
+ "node_modules/boxen": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/boxen/-/boxen-6.2.1.tgz",
+ "integrity": "sha512-H4PEsJXfFI/Pt8sjDWbHlQPx4zL/bvSQjcilJmaulGt5mLDorHOHpmdXAJcBcmru7PhYSp/cDMWRko4ZUMFkSw==",
+ "dependencies": {
+ "ansi-align": "^3.0.1",
+ "camelcase": "^6.2.0",
+ "chalk": "^4.1.2",
+ "cli-boxes": "^3.0.0",
+ "string-width": "^5.0.1",
+ "type-fest": "^2.5.0",
+ "widest-line": "^4.0.1",
+ "wrap-ansi": "^8.0.1"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/braces": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
+ "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "dependencies": {
+ "fill-range": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/browserslist": {
+ "version": "4.22.1",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz",
+ "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "dependencies": {
+ "caniuse-lite": "^1.0.30001541",
+ "electron-to-chromium": "^1.4.535",
+ "node-releases": "^2.0.13",
+ "update-browserslist-db": "^1.0.13"
+ },
+ "bin": {
+ "browserslist": "cli.js"
+ },
+ "engines": {
+ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
+ }
+ },
+ "node_modules/buffer-from": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
+ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="
+ },
+ "node_modules/bytes": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
+ "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/cacheable-lookup": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz",
+ "integrity": "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==",
+ "engines": {
+ "node": ">=14.16"
+ }
+ },
+ "node_modules/cacheable-request": {
+ "version": "10.2.14",
+ "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.14.tgz",
+ "integrity": "sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==",
+ "dependencies": {
+ "@types/http-cache-semantics": "^4.0.2",
+ "get-stream": "^6.0.1",
+ "http-cache-semantics": "^4.1.1",
+ "keyv": "^4.5.3",
+ "mimic-response": "^4.0.0",
+ "normalize-url": "^8.0.0",
+ "responselike": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=14.16"
+ }
+ },
+ "node_modules/cacheable-request/node_modules/normalize-url": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.0.tgz",
+ "integrity": "sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==",
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/call-bind": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz",
+ "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==",
+ "dependencies": {
+ "function-bind": "^1.1.2",
+ "get-intrinsic": "^1.2.1",
+ "set-function-length": "^1.1.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/camel-case": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz",
+ "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==",
+ "dependencies": {
+ "pascal-case": "^3.1.2",
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/camelcase": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
+ "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/caniuse-api": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz",
+ "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==",
+ "dependencies": {
+ "browserslist": "^4.0.0",
+ "caniuse-lite": "^1.0.0",
+ "lodash.memoize": "^4.1.2",
+ "lodash.uniq": "^4.5.0"
+ }
+ },
+ "node_modules/caniuse-lite": {
+ "version": "1.0.30001564",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001564.tgz",
+ "integrity": "sha512-DqAOf+rhof+6GVx1y+xzbFPeOumfQnhYzVnZD6LAXijR77yPtm9mfOcqOnT3mpnJiZVT+kwLAFnRlZcIz+c6bg==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ]
+ },
+ "node_modules/ccount": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz",
+ "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/char-regex": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz",
+ "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/character-entities": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz",
+ "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/character-entities-html4": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz",
+ "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/character-entities-legacy": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz",
+ "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/character-reference-invalid": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz",
+ "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/cheerio": {
+ "version": "1.0.0-rc.12",
+ "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz",
+ "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==",
+ "dependencies": {
+ "cheerio-select": "^2.1.0",
+ "dom-serializer": "^2.0.0",
+ "domhandler": "^5.0.3",
+ "domutils": "^3.0.1",
+ "htmlparser2": "^8.0.1",
+ "parse5": "^7.0.0",
+ "parse5-htmlparser2-tree-adapter": "^7.0.0"
+ },
+ "engines": {
+ "node": ">= 6"
+ },
+ "funding": {
+ "url": "https://github.com/cheeriojs/cheerio?sponsor=1"
+ }
+ },
+ "node_modules/cheerio-select": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz",
+ "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==",
+ "dependencies": {
+ "boolbase": "^1.0.0",
+ "css-select": "^5.1.0",
+ "css-what": "^6.1.0",
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.3",
+ "domutils": "^3.0.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
+ }
+ },
+ "node_modules/chokidar": {
+ "version": "3.5.3",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
+ "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://paulmillr.com/funding/"
+ }
+ ],
+ "dependencies": {
+ "anymatch": "~3.1.2",
+ "braces": "~3.0.2",
+ "glob-parent": "~5.1.2",
+ "is-binary-path": "~2.1.0",
+ "is-glob": "~4.0.1",
+ "normalize-path": "~3.0.0",
+ "readdirp": "~3.6.0"
+ },
+ "engines": {
+ "node": ">= 8.10.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ }
+ },
+ "node_modules/chrome-trace-event": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz",
+ "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==",
+ "engines": {
+ "node": ">=6.0"
+ }
+ },
+ "node_modules/ci-info": {
+ "version": "3.9.0",
+ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz",
+ "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/sibiraj-s"
+ }
+ ],
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/clean-css": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.2.tgz",
+ "integrity": "sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==",
+ "dependencies": {
+ "source-map": "~0.6.0"
+ },
+ "engines": {
+ "node": ">= 10.0"
+ }
+ },
+ "node_modules/clean-css/node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/clean-stack": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
+ "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/cli-boxes": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz",
+ "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/cli-table3": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz",
+ "integrity": "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==",
+ "dependencies": {
+ "string-width": "^4.2.0"
+ },
+ "engines": {
+ "node": "10.* || >= 12.*"
+ },
+ "optionalDependencies": {
+ "@colors/colors": "1.5.0"
+ }
+ },
+ "node_modules/cli-table3/node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
+ },
+ "node_modules/cli-table3/node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/clone-deep": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz",
+ "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==",
+ "dependencies": {
+ "is-plain-object": "^2.0.4",
+ "kind-of": "^6.0.2",
+ "shallow-clone": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/clone-deep/node_modules/is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "dependencies": {
+ "isobject": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/clsx": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz",
+ "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/collapse-white-space": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-2.1.0.tgz",
+ "integrity": "sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+ },
+ "node_modules/colord": {
+ "version": "2.9.3",
+ "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz",
+ "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw=="
+ },
+ "node_modules/colorette": {
+ "version": "2.0.20",
+ "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz",
+ "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w=="
+ },
+ "node_modules/combine-promises": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/combine-promises/-/combine-promises-1.2.0.tgz",
+ "integrity": "sha512-VcQB1ziGD0NXrhKxiwyNbCDmRzs/OShMs2GqW2DlU2A/Sd0nQxE1oWDAE5O0ygSx5mgQOn9eIFh7yKPgFRVkPQ==",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/combined-stream": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+ "dependencies": {
+ "delayed-stream": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/comma-separated-tokens": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz",
+ "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/commander": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz",
+ "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==",
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/common-path-prefix": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz",
+ "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w=="
+ },
+ "node_modules/compressible": {
+ "version": "2.0.18",
+ "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz",
+ "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==",
+ "dependencies": {
+ "mime-db": ">= 1.43.0 < 2"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/compressible/node_modules/mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/compression": {
+ "version": "1.7.4",
+ "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz",
+ "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==",
+ "dependencies": {
+ "accepts": "~1.3.5",
+ "bytes": "3.0.0",
+ "compressible": "~2.0.16",
+ "debug": "2.6.9",
+ "on-headers": "~1.0.2",
+ "safe-buffer": "5.1.2",
+ "vary": "~1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/compression/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/compression/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+ },
+ "node_modules/compression/node_modules/safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ },
+ "node_modules/concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
+ },
+ "node_modules/config-chain": {
+ "version": "1.1.13",
+ "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz",
+ "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==",
+ "dependencies": {
+ "ini": "^1.3.4",
+ "proto-list": "~1.2.1"
+ }
+ },
+ "node_modules/configstore": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/configstore/-/configstore-6.0.0.tgz",
+ "integrity": "sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA==",
+ "dependencies": {
+ "dot-prop": "^6.0.1",
+ "graceful-fs": "^4.2.6",
+ "unique-string": "^3.0.0",
+ "write-file-atomic": "^3.0.3",
+ "xdg-basedir": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/yeoman/configstore?sponsor=1"
+ }
+ },
+ "node_modules/connect-history-api-fallback": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz",
+ "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==",
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
+ "node_modules/consola": {
+ "version": "2.15.3",
+ "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz",
+ "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw=="
+ },
+ "node_modules/content-disposition": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz",
+ "integrity": "sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/content-type": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
+ "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/convert-source-map": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
+ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg=="
+ },
+ "node_modules/cookie": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
+ "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/cookie-signature": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
+ "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
+ },
+ "node_modules/copy-text-to-clipboard": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/copy-text-to-clipboard/-/copy-text-to-clipboard-3.2.0.tgz",
+ "integrity": "sha512-RnJFp1XR/LOBDckxTib5Qjr/PMfkatD0MUCQgdpqS8MdKiNUzBjAQBEN6oUy+jW7LI93BBG3DtMB2KOOKpGs2Q==",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/copy-webpack-plugin": {
+ "version": "11.0.0",
+ "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz",
+ "integrity": "sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==",
+ "dependencies": {
+ "fast-glob": "^3.2.11",
+ "glob-parent": "^6.0.1",
+ "globby": "^13.1.1",
+ "normalize-path": "^3.0.0",
+ "schema-utils": "^4.0.0",
+ "serialize-javascript": "^6.0.0"
+ },
+ "engines": {
+ "node": ">= 14.15.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependencies": {
+ "webpack": "^5.1.0"
+ }
+ },
+ "node_modules/copy-webpack-plugin/node_modules/glob-parent": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
+ "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
+ "dependencies": {
+ "is-glob": "^4.0.3"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/copy-webpack-plugin/node_modules/globby": {
+ "version": "13.2.2",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz",
+ "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==",
+ "dependencies": {
+ "dir-glob": "^3.0.1",
+ "fast-glob": "^3.3.0",
+ "ignore": "^5.2.4",
+ "merge2": "^1.4.1",
+ "slash": "^4.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/copy-webpack-plugin/node_modules/slash": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz",
+ "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/core-js": {
+ "version": "3.33.3",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.33.3.tgz",
+ "integrity": "sha512-lo0kOocUlLKmm6kv/FswQL8zbkH7mVsLJ/FULClOhv8WRVmKLVcs6XPNQAzstfeJTCHMyButEwG+z1kHxHoDZw==",
+ "hasInstallScript": true,
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/core-js"
+ }
+ },
+ "node_modules/core-js-compat": {
+ "version": "3.33.3",
+ "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.33.3.tgz",
+ "integrity": "sha512-cNzGqFsh3Ot+529GIXacjTJ7kegdt5fPXxCBVS1G0iaZpuo/tBz399ymceLJveQhFFZ8qThHiP3fzuoQjKN2ow==",
+ "dependencies": {
+ "browserslist": "^4.22.1"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/core-js"
+ }
+ },
+ "node_modules/core-js-pure": {
+ "version": "3.33.3",
+ "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.33.3.tgz",
+ "integrity": "sha512-taJ00IDOP+XYQEA2dAe4ESkmHt1fL8wzYDo3mRWQey8uO9UojlBFMneA65kMyxfYP7106c6LzWaq7/haDT6BCQ==",
+ "hasInstallScript": true,
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/core-js"
+ }
+ },
+ "node_modules/core-util-is": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
+ "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="
+ },
+ "node_modules/cosmiconfig": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz",
+ "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==",
+ "dependencies": {
+ "@types/parse-json": "^4.0.0",
+ "import-fresh": "^3.2.1",
+ "parse-json": "^5.0.0",
+ "path-type": "^4.0.0",
+ "yaml": "^1.10.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/cross-fetch": {
+ "version": "3.1.8",
+ "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz",
+ "integrity": "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==",
+ "dependencies": {
+ "node-fetch": "^2.6.12"
+ }
+ },
+ "node_modules/cross-spawn": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
+ "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/crypto-random-string": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz",
+ "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==",
+ "dependencies": {
+ "type-fest": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/crypto-random-string/node_modules/type-fest": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz",
+ "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/css-declaration-sorter": {
+ "version": "6.4.1",
+ "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz",
+ "integrity": "sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==",
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ },
+ "peerDependencies": {
+ "postcss": "^8.0.9"
+ }
+ },
+ "node_modules/css-loader": {
+ "version": "6.8.1",
+ "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.8.1.tgz",
+ "integrity": "sha512-xDAXtEVGlD0gJ07iclwWVkLoZOpEvAWaSyf6W18S2pOC//K8+qUDIx8IIT3D+HjnmkJPQeesOPv5aiUaJsCM2g==",
+ "dependencies": {
+ "icss-utils": "^5.1.0",
+ "postcss": "^8.4.21",
+ "postcss-modules-extract-imports": "^3.0.0",
+ "postcss-modules-local-by-default": "^4.0.3",
+ "postcss-modules-scope": "^3.0.0",
+ "postcss-modules-values": "^4.0.0",
+ "postcss-value-parser": "^4.2.0",
+ "semver": "^7.3.8"
+ },
+ "engines": {
+ "node": ">= 12.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependencies": {
+ "webpack": "^5.0.0"
+ }
+ },
+ "node_modules/css-minimizer-webpack-plugin": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-4.2.2.tgz",
+ "integrity": "sha512-s3Of/4jKfw1Hj9CxEO1E5oXhQAxlayuHO2y/ML+C6I9sQ7FdzfEV6QgMLN3vI+qFsjJGIAFLKtQK7t8BOXAIyA==",
+ "dependencies": {
+ "cssnano": "^5.1.8",
+ "jest-worker": "^29.1.2",
+ "postcss": "^8.4.17",
+ "schema-utils": "^4.0.0",
+ "serialize-javascript": "^6.0.0",
+ "source-map": "^0.6.1"
+ },
+ "engines": {
+ "node": ">= 14.15.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependencies": {
+ "webpack": "^5.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@parcel/css": {
+ "optional": true
+ },
+ "@swc/css": {
+ "optional": true
+ },
+ "clean-css": {
+ "optional": true
+ },
+ "csso": {
+ "optional": true
+ },
+ "esbuild": {
+ "optional": true
+ },
+ "lightningcss": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/css-minimizer-webpack-plugin/node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/css-select": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz",
+ "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==",
+ "dependencies": {
+ "boolbase": "^1.0.0",
+ "css-what": "^6.1.0",
+ "domhandler": "^5.0.2",
+ "domutils": "^3.0.1",
+ "nth-check": "^2.0.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
+ }
+ },
+ "node_modules/css-tree": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz",
+ "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==",
+ "dependencies": {
+ "mdn-data": "2.0.14",
+ "source-map": "^0.6.1"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/css-tree/node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/css-what": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz",
+ "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==",
+ "engines": {
+ "node": ">= 6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
+ }
+ },
+ "node_modules/cssesc": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
+ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
+ "bin": {
+ "cssesc": "bin/cssesc"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/cssnano": {
+ "version": "5.1.15",
+ "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.15.tgz",
+ "integrity": "sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==",
+ "dependencies": {
+ "cssnano-preset-default": "^5.2.14",
+ "lilconfig": "^2.0.3",
+ "yaml": "^1.10.2"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/cssnano"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/cssnano-preset-advanced": {
+ "version": "5.3.10",
+ "resolved": "https://registry.npmjs.org/cssnano-preset-advanced/-/cssnano-preset-advanced-5.3.10.tgz",
+ "integrity": "sha512-fnYJyCS9jgMU+cmHO1rPSPf9axbQyD7iUhLO5Df6O4G+fKIOMps+ZbU0PdGFejFBBZ3Pftf18fn1eG7MAPUSWQ==",
+ "dependencies": {
+ "autoprefixer": "^10.4.12",
+ "cssnano-preset-default": "^5.2.14",
+ "postcss-discard-unused": "^5.1.0",
+ "postcss-merge-idents": "^5.1.1",
+ "postcss-reduce-idents": "^5.2.0",
+ "postcss-zindex": "^5.1.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/cssnano-preset-default": {
+ "version": "5.2.14",
+ "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz",
+ "integrity": "sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==",
+ "dependencies": {
+ "css-declaration-sorter": "^6.3.1",
+ "cssnano-utils": "^3.1.0",
+ "postcss-calc": "^8.2.3",
+ "postcss-colormin": "^5.3.1",
+ "postcss-convert-values": "^5.1.3",
+ "postcss-discard-comments": "^5.1.2",
+ "postcss-discard-duplicates": "^5.1.0",
+ "postcss-discard-empty": "^5.1.1",
+ "postcss-discard-overridden": "^5.1.0",
+ "postcss-merge-longhand": "^5.1.7",
+ "postcss-merge-rules": "^5.1.4",
+ "postcss-minify-font-values": "^5.1.0",
+ "postcss-minify-gradients": "^5.1.1",
+ "postcss-minify-params": "^5.1.4",
+ "postcss-minify-selectors": "^5.2.1",
+ "postcss-normalize-charset": "^5.1.0",
+ "postcss-normalize-display-values": "^5.1.0",
+ "postcss-normalize-positions": "^5.1.1",
+ "postcss-normalize-repeat-style": "^5.1.1",
+ "postcss-normalize-string": "^5.1.0",
+ "postcss-normalize-timing-functions": "^5.1.0",
+ "postcss-normalize-unicode": "^5.1.1",
+ "postcss-normalize-url": "^5.1.0",
+ "postcss-normalize-whitespace": "^5.1.1",
+ "postcss-ordered-values": "^5.1.3",
+ "postcss-reduce-initial": "^5.1.2",
+ "postcss-reduce-transforms": "^5.1.0",
+ "postcss-svgo": "^5.1.0",
+ "postcss-unique-selectors": "^5.1.1"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/cssnano-utils": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz",
+ "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==",
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/csso": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz",
+ "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==",
+ "dependencies": {
+ "css-tree": "^1.1.2"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/csstype": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz",
+ "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ=="
+ },
+ "node_modules/debounce": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz",
+ "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug=="
+ },
+ "node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/decode-named-character-reference": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz",
+ "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==",
+ "dependencies": {
+ "character-entities": "^2.0.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/decompress-response": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz",
+ "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==",
+ "dependencies": {
+ "mimic-response": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/decompress-response/node_modules/mimic-response": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz",
+ "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/deep-extend": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
+ "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/deepmerge": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",
+ "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/default-gateway": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz",
+ "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==",
+ "dependencies": {
+ "execa": "^5.0.0"
+ },
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/defer-to-connect": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz",
+ "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/define-data-property": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz",
+ "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==",
+ "dependencies": {
+ "get-intrinsic": "^1.2.1",
+ "gopd": "^1.0.1",
+ "has-property-descriptors": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/define-lazy-prop": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz",
+ "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/define-properties": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz",
+ "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==",
+ "dependencies": {
+ "define-data-property": "^1.0.1",
+ "has-property-descriptors": "^1.0.0",
+ "object-keys": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/del": {
+ "version": "6.1.1",
+ "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz",
+ "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==",
+ "dependencies": {
+ "globby": "^11.0.1",
+ "graceful-fs": "^4.2.4",
+ "is-glob": "^4.0.1",
+ "is-path-cwd": "^2.2.0",
+ "is-path-inside": "^3.0.2",
+ "p-map": "^4.0.0",
+ "rimraf": "^3.0.2",
+ "slash": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/depd": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
+ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/dequal": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz",
+ "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/destroy": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
+ "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
+ "engines": {
+ "node": ">= 0.8",
+ "npm": "1.2.8000 || >= 1.4.16"
+ }
+ },
+ "node_modules/detect-node": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz",
+ "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g=="
+ },
+ "node_modules/detect-port": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.5.1.tgz",
+ "integrity": "sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ==",
+ "dependencies": {
+ "address": "^1.0.1",
+ "debug": "4"
+ },
+ "bin": {
+ "detect": "bin/detect-port.js",
+ "detect-port": "bin/detect-port.js"
+ }
+ },
+ "node_modules/detect-port-alt": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz",
+ "integrity": "sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==",
+ "dependencies": {
+ "address": "^1.0.1",
+ "debug": "^2.6.0"
+ },
+ "bin": {
+ "detect": "bin/detect-port",
+ "detect-port": "bin/detect-port"
+ },
+ "engines": {
+ "node": ">= 4.2.1"
+ }
+ },
+ "node_modules/detect-port-alt/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/detect-port-alt/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+ },
+ "node_modules/devlop": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz",
+ "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==",
+ "dependencies": {
+ "dequal": "^2.0.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/dir-glob": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
+ "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
+ "dependencies": {
+ "path-type": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/dns-equal": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz",
+ "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg=="
+ },
+ "node_modules/dns-packet": {
+ "version": "5.6.1",
+ "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz",
+ "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==",
+ "dependencies": {
+ "@leichtgewicht/ip-codec": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/dom-converter": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz",
+ "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==",
+ "dependencies": {
+ "utila": "~0.4"
+ }
+ },
+ "node_modules/dom-serializer": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
+ "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==",
+ "dependencies": {
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.2",
+ "entities": "^4.2.0"
+ },
+ "funding": {
+ "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
+ }
+ },
+ "node_modules/domelementtype": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
+ "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fb55"
+ }
+ ]
+ },
+ "node_modules/domhandler": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
+ "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
+ "dependencies": {
+ "domelementtype": "^2.3.0"
+ },
+ "engines": {
+ "node": ">= 4"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domhandler?sponsor=1"
+ }
+ },
+ "node_modules/domutils": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz",
+ "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==",
+ "dependencies": {
+ "dom-serializer": "^2.0.0",
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.3"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domutils?sponsor=1"
+ }
+ },
+ "node_modules/dot-case": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz",
+ "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==",
+ "dependencies": {
+ "no-case": "^3.0.4",
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/dot-prop": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz",
+ "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==",
+ "dependencies": {
+ "is-obj": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/dot-prop/node_modules/is-obj": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz",
+ "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/duplexer": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz",
+ "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg=="
+ },
+ "node_modules/eastasianwidth": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
+ "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA=="
+ },
+ "node_modules/ee-first": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
+ },
+ "node_modules/electron-to-chromium": {
+ "version": "1.4.593",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.593.tgz",
+ "integrity": "sha512-c7+Hhj87zWmdpmjDONbvNKNo24tvmD4mjal1+qqTYTrlF0/sNpAcDlU0Ki84ftA/5yj3BF2QhSGEC0Rky6larg=="
+ },
+ "node_modules/emoji-regex": {
+ "version": "9.2.2",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
+ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="
+ },
+ "node_modules/emojilib": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/emojilib/-/emojilib-2.4.0.tgz",
+ "integrity": "sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw=="
+ },
+ "node_modules/emojis-list": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
+ "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/emoticon": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/emoticon/-/emoticon-4.0.1.tgz",
+ "integrity": "sha512-dqx7eA9YaqyvYtUhJwT4rC1HIp82j5ybS1/vQ42ur+jBe17dJMwZE4+gvL1XadSFfxaPFFGt3Xsw+Y8akThDlw==",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/encodeurl": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
+ "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/enhanced-resolve": {
+ "version": "5.15.0",
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz",
+ "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==",
+ "dependencies": {
+ "graceful-fs": "^4.2.4",
+ "tapable": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/entities": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
+ "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
+ "engines": {
+ "node": ">=0.12"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/error-ex": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
+ "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+ "dependencies": {
+ "is-arrayish": "^0.2.1"
+ }
+ },
+ "node_modules/es-module-lexer": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.4.1.tgz",
+ "integrity": "sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w=="
+ },
+ "node_modules/escalade": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
+ "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/escape-goat": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-4.0.0.tgz",
+ "integrity": "sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/escape-html": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
+ },
+ "node_modules/escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/eslint-scope": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
+ "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
+ "dependencies": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^4.1.1"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/esprima": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+ "bin": {
+ "esparse": "bin/esparse.js",
+ "esvalidate": "bin/esvalidate.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/esrecurse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
+ "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
+ "dependencies": {
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/esrecurse/node_modules/estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/estraverse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
+ "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/estree-util-attach-comments": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-3.0.0.tgz",
+ "integrity": "sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==",
+ "dependencies": {
+ "@types/estree": "^1.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/estree-util-build-jsx": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/estree-util-build-jsx/-/estree-util-build-jsx-3.0.1.tgz",
+ "integrity": "sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==",
+ "dependencies": {
+ "@types/estree-jsx": "^1.0.0",
+ "devlop": "^1.0.0",
+ "estree-util-is-identifier-name": "^3.0.0",
+ "estree-walker": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/estree-util-is-identifier-name": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz",
+ "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/estree-util-to-js": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/estree-util-to-js/-/estree-util-to-js-2.0.0.tgz",
+ "integrity": "sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==",
+ "dependencies": {
+ "@types/estree-jsx": "^1.0.0",
+ "astring": "^1.8.0",
+ "source-map": "^0.7.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/estree-util-value-to-estree": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/estree-util-value-to-estree/-/estree-util-value-to-estree-3.0.1.tgz",
+ "integrity": "sha512-b2tdzTurEIbwRh+mKrEcaWfu1wgb8J1hVsgREg7FFiecWwK/PhO8X0kyc+0bIcKNtD4sqxIdNoRy6/p/TvECEA==",
+ "dependencies": {
+ "@types/estree": "^1.0.0",
+ "is-plain-obj": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/remcohaszing"
+ }
+ },
+ "node_modules/estree-util-visit": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-2.0.0.tgz",
+ "integrity": "sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==",
+ "dependencies": {
+ "@types/estree-jsx": "^1.0.0",
+ "@types/unist": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/estree-walker": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz",
+ "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==",
+ "dependencies": {
+ "@types/estree": "^1.0.0"
+ }
+ },
+ "node_modules/esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/eta": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/eta/-/eta-2.2.0.tgz",
+ "integrity": "sha512-UVQ72Rqjy/ZKQalzV5dCCJP80GrmPrMxh6NlNf+erV6ObL0ZFkhCstWRawS85z3smdr3d2wXPsZEY7rDPfGd2g==",
+ "engines": {
+ "node": ">=6.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/eta-dev/eta?sponsor=1"
+ }
+ },
+ "node_modules/etag": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
+ "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/eval": {
+ "version": "0.1.8",
+ "resolved": "https://registry.npmjs.org/eval/-/eval-0.1.8.tgz",
+ "integrity": "sha512-EzV94NYKoO09GLXGjXj9JIlXijVck4ONSr5wiCWDvhsvj5jxSrzTmRU/9C1DyB6uToszLs8aifA6NQ7lEQdvFw==",
+ "dependencies": {
+ "@types/node": "*",
+ "require-like": ">= 0.1.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/eventemitter3": {
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz",
+ "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw=="
+ },
+ "node_modules/events": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
+ "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
+ "engines": {
+ "node": ">=0.8.x"
+ }
+ },
+ "node_modules/execa": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
+ "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
+ "dependencies": {
+ "cross-spawn": "^7.0.3",
+ "get-stream": "^6.0.0",
+ "human-signals": "^2.1.0",
+ "is-stream": "^2.0.0",
+ "merge-stream": "^2.0.0",
+ "npm-run-path": "^4.0.1",
+ "onetime": "^5.1.2",
+ "signal-exit": "^3.0.3",
+ "strip-final-newline": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ }
+ },
+ "node_modules/express": {
+ "version": "4.18.2",
+ "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz",
+ "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==",
+ "dependencies": {
+ "accepts": "~1.3.8",
+ "array-flatten": "1.1.1",
+ "body-parser": "1.20.1",
+ "content-disposition": "0.5.4",
+ "content-type": "~1.0.4",
+ "cookie": "0.5.0",
+ "cookie-signature": "1.0.6",
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "etag": "~1.8.1",
+ "finalhandler": "1.2.0",
+ "fresh": "0.5.2",
+ "http-errors": "2.0.0",
+ "merge-descriptors": "1.0.1",
+ "methods": "~1.1.2",
+ "on-finished": "2.4.1",
+ "parseurl": "~1.3.3",
+ "path-to-regexp": "0.1.7",
+ "proxy-addr": "~2.0.7",
+ "qs": "6.11.0",
+ "range-parser": "~1.2.1",
+ "safe-buffer": "5.2.1",
+ "send": "0.18.0",
+ "serve-static": "1.15.0",
+ "setprototypeof": "1.2.0",
+ "statuses": "2.0.1",
+ "type-is": "~1.6.18",
+ "utils-merge": "1.0.1",
+ "vary": "~1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.10.0"
+ }
+ },
+ "node_modules/express/node_modules/array-flatten": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
+ "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
+ },
+ "node_modules/express/node_modules/content-disposition": {
+ "version": "0.5.4",
+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
+ "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
+ "dependencies": {
+ "safe-buffer": "5.2.1"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/express/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/express/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+ },
+ "node_modules/express/node_modules/path-to-regexp": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
+ "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ=="
+ },
+ "node_modules/express/node_modules/range-parser": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
+ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/extend": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
+ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
+ },
+ "node_modules/extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
+ "dependencies": {
+ "is-extendable": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/fast-deep-equal": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
+ },
+ "node_modules/fast-glob": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
+ "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
+ "dependencies": {
+ "@nodelib/fs.stat": "^2.0.2",
+ "@nodelib/fs.walk": "^1.2.3",
+ "glob-parent": "^5.1.2",
+ "merge2": "^1.3.0",
+ "micromatch": "^4.0.4"
+ },
+ "engines": {
+ "node": ">=8.6.0"
+ }
+ },
+ "node_modules/fast-json-stable-stringify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
+ },
+ "node_modules/fast-url-parser": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz",
+ "integrity": "sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ==",
+ "dependencies": {
+ "punycode": "^1.3.2"
+ }
+ },
+ "node_modules/fastq": {
+ "version": "1.15.0",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz",
+ "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==",
+ "dependencies": {
+ "reusify": "^1.0.4"
+ }
+ },
+ "node_modules/fault": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/fault/-/fault-2.0.1.tgz",
+ "integrity": "sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==",
+ "dependencies": {
+ "format": "^0.2.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/faye-websocket": {
+ "version": "0.11.4",
+ "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz",
+ "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==",
+ "dependencies": {
+ "websocket-driver": ">=0.5.1"
+ },
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/fbemitter": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/fbemitter/-/fbemitter-3.0.0.tgz",
+ "integrity": "sha512-KWKaceCwKQU0+HPoop6gn4eOHk50bBv/VxjJtGMfwmJt3D29JpN4H4eisCtIPA+a8GVBam+ldMMpMjJUvpDyHw==",
+ "dependencies": {
+ "fbjs": "^3.0.0"
+ }
+ },
+ "node_modules/fbjs": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-3.0.5.tgz",
+ "integrity": "sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg==",
+ "dependencies": {
+ "cross-fetch": "^3.1.5",
+ "fbjs-css-vars": "^1.0.0",
+ "loose-envify": "^1.0.0",
+ "object-assign": "^4.1.0",
+ "promise": "^7.1.1",
+ "setimmediate": "^1.0.5",
+ "ua-parser-js": "^1.0.35"
+ }
+ },
+ "node_modules/fbjs-css-vars": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz",
+ "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ=="
+ },
+ "node_modules/feed": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/feed/-/feed-4.2.2.tgz",
+ "integrity": "sha512-u5/sxGfiMfZNtJ3OvQpXcvotFpYkL0n9u9mM2vkui2nGo8b4wvDkJ8gAkYqbA8QpGyFCv3RK0Z+Iv+9veCS9bQ==",
+ "dependencies": {
+ "xml-js": "^1.6.11"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/file-loader": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz",
+ "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==",
+ "dependencies": {
+ "loader-utils": "^2.0.0",
+ "schema-utils": "^3.0.0"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependencies": {
+ "webpack": "^4.0.0 || ^5.0.0"
+ }
+ },
+ "node_modules/file-loader/node_modules/ajv": {
+ "version": "6.12.6",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/file-loader/node_modules/ajv-keywords": {
+ "version": "3.5.2",
+ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
+ "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
+ "peerDependencies": {
+ "ajv": "^6.9.1"
+ }
+ },
+ "node_modules/file-loader/node_modules/json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
+ },
+ "node_modules/file-loader/node_modules/schema-utils": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz",
+ "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==",
+ "dependencies": {
+ "@types/json-schema": "^7.0.8",
+ "ajv": "^6.12.5",
+ "ajv-keywords": "^3.5.2"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ }
+ },
+ "node_modules/filesize": {
+ "version": "8.0.7",
+ "resolved": "https://registry.npmjs.org/filesize/-/filesize-8.0.7.tgz",
+ "integrity": "sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==",
+ "engines": {
+ "node": ">= 0.4.0"
+ }
+ },
+ "node_modules/fill-range": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
+ "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "dependencies": {
+ "to-regex-range": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/finalhandler": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
+ "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
+ "dependencies": {
+ "debug": "2.6.9",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "on-finished": "2.4.1",
+ "parseurl": "~1.3.3",
+ "statuses": "2.0.1",
+ "unpipe": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/finalhandler/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/finalhandler/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+ },
+ "node_modules/find-cache-dir": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz",
+ "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==",
+ "dependencies": {
+ "common-path-prefix": "^3.0.0",
+ "pkg-dir": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/find-up": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz",
+ "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==",
+ "dependencies": {
+ "locate-path": "^7.1.0",
+ "path-exists": "^5.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/flat": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz",
+ "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==",
+ "bin": {
+ "flat": "cli.js"
+ }
+ },
+ "node_modules/follow-redirects": {
+ "version": "1.15.3",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz",
+ "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://github.com/sponsors/RubenVerborgh"
+ }
+ ],
+ "engines": {
+ "node": ">=4.0"
+ },
+ "peerDependenciesMeta": {
+ "debug": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/fork-ts-checker-webpack-plugin": {
+ "version": "6.5.3",
+ "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.3.tgz",
+ "integrity": "sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==",
+ "dependencies": {
+ "@babel/code-frame": "^7.8.3",
+ "@types/json-schema": "^7.0.5",
+ "chalk": "^4.1.0",
+ "chokidar": "^3.4.2",
+ "cosmiconfig": "^6.0.0",
+ "deepmerge": "^4.2.2",
+ "fs-extra": "^9.0.0",
+ "glob": "^7.1.6",
+ "memfs": "^3.1.2",
+ "minimatch": "^3.0.4",
+ "schema-utils": "2.7.0",
+ "semver": "^7.3.2",
+ "tapable": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=10",
+ "yarn": ">=1.0.0"
+ },
+ "peerDependencies": {
+ "eslint": ">= 6",
+ "typescript": ">= 2.7",
+ "vue-template-compiler": "*",
+ "webpack": ">= 4"
+ },
+ "peerDependenciesMeta": {
+ "eslint": {
+ "optional": true
+ },
+ "vue-template-compiler": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/fork-ts-checker-webpack-plugin/node_modules/ajv": {
+ "version": "6.12.6",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/fork-ts-checker-webpack-plugin/node_modules/ajv-keywords": {
+ "version": "3.5.2",
+ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
+ "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
+ "peerDependencies": {
+ "ajv": "^6.9.1"
+ }
+ },
+ "node_modules/fork-ts-checker-webpack-plugin/node_modules/cosmiconfig": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz",
+ "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==",
+ "dependencies": {
+ "@types/parse-json": "^4.0.0",
+ "import-fresh": "^3.1.0",
+ "parse-json": "^5.0.0",
+ "path-type": "^4.0.0",
+ "yaml": "^1.7.2"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/fork-ts-checker-webpack-plugin/node_modules/fs-extra": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
+ "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
+ "dependencies": {
+ "at-least-node": "^1.0.0",
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/fork-ts-checker-webpack-plugin/node_modules/json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
+ },
+ "node_modules/fork-ts-checker-webpack-plugin/node_modules/schema-utils": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz",
+ "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==",
+ "dependencies": {
+ "@types/json-schema": "^7.0.4",
+ "ajv": "^6.12.2",
+ "ajv-keywords": "^3.4.1"
+ },
+ "engines": {
+ "node": ">= 8.9.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ }
+ },
+ "node_modules/fork-ts-checker-webpack-plugin/node_modules/tapable": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz",
+ "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/form-data": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
+ "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
+ "dependencies": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.8",
+ "mime-types": "^2.1.12"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/form-data-encoder": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz",
+ "integrity": "sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==",
+ "engines": {
+ "node": ">= 14.17"
+ }
+ },
+ "node_modules/format": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz",
+ "integrity": "sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==",
+ "engines": {
+ "node": ">=0.4.x"
+ }
+ },
+ "node_modules/forwarded": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
+ "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/fraction.js": {
+ "version": "4.3.7",
+ "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz",
+ "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==",
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "type": "patreon",
+ "url": "https://github.com/sponsors/rawify"
+ }
+ },
+ "node_modules/fresh": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
+ "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/fs-extra": {
+ "version": "11.1.1",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz",
+ "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==",
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=14.14"
+ }
+ },
+ "node_modules/fs-monkey": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.5.tgz",
+ "integrity": "sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew=="
+ },
+ "node_modules/fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
+ },
+ "node_modules/fsevents": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+ "hasInstallScript": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
+ "node_modules/function-bind": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/gensync": {
+ "version": "1.0.0-beta.2",
+ "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
+ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/get-intrinsic": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz",
+ "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==",
+ "dependencies": {
+ "function-bind": "^1.1.2",
+ "has-proto": "^1.0.1",
+ "has-symbols": "^1.0.3",
+ "hasown": "^2.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-own-enumerable-property-symbols": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz",
+ "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g=="
+ },
+ "node_modules/get-stream": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
+ "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/github-slugger": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-1.5.0.tgz",
+ "integrity": "sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw=="
+ },
+ "node_modules/glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/glob-to-regexp": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
+ "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw=="
+ },
+ "node_modules/global-dirs": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz",
+ "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==",
+ "dependencies": {
+ "ini": "2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/global-dirs/node_modules/ini": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz",
+ "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/global-modules": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz",
+ "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==",
+ "dependencies": {
+ "global-prefix": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/global-prefix": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz",
+ "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==",
+ "dependencies": {
+ "ini": "^1.3.5",
+ "kind-of": "^6.0.2",
+ "which": "^1.3.1"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/global-prefix/node_modules/which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "which": "bin/which"
+ }
+ },
+ "node_modules/globals": {
+ "version": "11.12.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
+ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/globby": {
+ "version": "11.1.0",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
+ "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
+ "dependencies": {
+ "array-union": "^2.1.0",
+ "dir-glob": "^3.0.1",
+ "fast-glob": "^3.2.9",
+ "ignore": "^5.2.0",
+ "merge2": "^1.4.1",
+ "slash": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/gopd": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
+ "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
+ "dependencies": {
+ "get-intrinsic": "^1.1.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/got": {
+ "version": "12.6.1",
+ "resolved": "https://registry.npmjs.org/got/-/got-12.6.1.tgz",
+ "integrity": "sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==",
+ "dependencies": {
+ "@sindresorhus/is": "^5.2.0",
+ "@szmarczak/http-timer": "^5.0.1",
+ "cacheable-lookup": "^7.0.0",
+ "cacheable-request": "^10.2.8",
+ "decompress-response": "^6.0.0",
+ "form-data-encoder": "^2.1.2",
+ "get-stream": "^6.0.1",
+ "http2-wrapper": "^2.1.10",
+ "lowercase-keys": "^3.0.0",
+ "p-cancelable": "^3.0.0",
+ "responselike": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/got?sponsor=1"
+ }
+ },
+ "node_modules/got/node_modules/@sindresorhus/is": {
+ "version": "5.6.0",
+ "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.6.0.tgz",
+ "integrity": "sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==",
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/is?sponsor=1"
+ }
+ },
+ "node_modules/graceful-fs": {
+ "version": "4.2.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="
+ },
+ "node_modules/gray-matter": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz",
+ "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==",
+ "dependencies": {
+ "js-yaml": "^3.13.1",
+ "kind-of": "^6.0.2",
+ "section-matter": "^1.0.0",
+ "strip-bom-string": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=6.0"
+ }
+ },
+ "node_modules/gray-matter/node_modules/argparse": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "dependencies": {
+ "sprintf-js": "~1.0.2"
+ }
+ },
+ "node_modules/gray-matter/node_modules/js-yaml": {
+ "version": "3.14.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
+ "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
+ "dependencies": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/gzip-size": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz",
+ "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==",
+ "dependencies": {
+ "duplexer": "^0.1.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/handle-thing": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz",
+ "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg=="
+ },
+ "node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/has-property-descriptors": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz",
+ "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==",
+ "dependencies": {
+ "get-intrinsic": "^1.2.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-proto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz",
+ "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-symbols": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
+ "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-yarn": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-3.0.0.tgz",
+ "integrity": "sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA==",
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/hasown": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz",
+ "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==",
+ "dependencies": {
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/hast-util-from-parse5": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.1.tgz",
+ "integrity": "sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ==",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "@types/unist": "^3.0.0",
+ "devlop": "^1.0.0",
+ "hastscript": "^8.0.0",
+ "property-information": "^6.0.0",
+ "vfile": "^6.0.0",
+ "vfile-location": "^5.0.0",
+ "web-namespaces": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-parse-selector": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz",
+ "integrity": "sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==",
+ "dependencies": {
+ "@types/hast": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-raw": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-9.0.1.tgz",
+ "integrity": "sha512-5m1gmba658Q+lO5uqL5YNGQWeh1MYWZbZmWrM5lncdcuiXuo5E2HT/CIOp0rLF8ksfSwiCVJ3twlgVRyTGThGA==",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "@types/unist": "^3.0.0",
+ "@ungap/structured-clone": "^1.0.0",
+ "hast-util-from-parse5": "^8.0.0",
+ "hast-util-to-parse5": "^8.0.0",
+ "html-void-elements": "^3.0.0",
+ "mdast-util-to-hast": "^13.0.0",
+ "parse5": "^7.0.0",
+ "unist-util-position": "^5.0.0",
+ "unist-util-visit": "^5.0.0",
+ "vfile": "^6.0.0",
+ "web-namespaces": "^2.0.0",
+ "zwitch": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-to-estree": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-3.1.0.tgz",
+ "integrity": "sha512-lfX5g6hqVh9kjS/B9E2gSkvHH4SZNiQFiqWS0x9fENzEl+8W12RqdRxX6d/Cwxi30tPQs3bIO+aolQJNp1bIyw==",
+ "dependencies": {
+ "@types/estree": "^1.0.0",
+ "@types/estree-jsx": "^1.0.0",
+ "@types/hast": "^3.0.0",
+ "comma-separated-tokens": "^2.0.0",
+ "devlop": "^1.0.0",
+ "estree-util-attach-comments": "^3.0.0",
+ "estree-util-is-identifier-name": "^3.0.0",
+ "hast-util-whitespace": "^3.0.0",
+ "mdast-util-mdx-expression": "^2.0.0",
+ "mdast-util-mdx-jsx": "^3.0.0",
+ "mdast-util-mdxjs-esm": "^2.0.0",
+ "property-information": "^6.0.0",
+ "space-separated-tokens": "^2.0.0",
+ "style-to-object": "^0.4.0",
+ "unist-util-position": "^5.0.0",
+ "zwitch": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-to-jsx-runtime": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.2.0.tgz",
+ "integrity": "sha512-wSlp23N45CMjDg/BPW8zvhEi3R+8eRE1qFbjEyAUzMCzu2l1Wzwakq+Tlia9nkCtEl5mDxa7nKHsvYJ6Gfn21A==",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "@types/unist": "^3.0.0",
+ "comma-separated-tokens": "^2.0.0",
+ "hast-util-whitespace": "^3.0.0",
+ "property-information": "^6.0.0",
+ "space-separated-tokens": "^2.0.0",
+ "style-to-object": "^0.4.0",
+ "unist-util-position": "^5.0.0",
+ "vfile-message": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-to-parse5": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-8.0.0.tgz",
+ "integrity": "sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "comma-separated-tokens": "^2.0.0",
+ "devlop": "^1.0.0",
+ "property-information": "^6.0.0",
+ "space-separated-tokens": "^2.0.0",
+ "web-namespaces": "^2.0.0",
+ "zwitch": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-whitespace": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz",
+ "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==",
+ "dependencies": {
+ "@types/hast": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hastscript": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-8.0.0.tgz",
+ "integrity": "sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "comma-separated-tokens": "^2.0.0",
+ "hast-util-parse-selector": "^4.0.0",
+ "property-information": "^6.0.0",
+ "space-separated-tokens": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/he": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
+ "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
+ "bin": {
+ "he": "bin/he"
+ }
+ },
+ "node_modules/history": {
+ "version": "4.10.1",
+ "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz",
+ "integrity": "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==",
+ "dependencies": {
+ "@babel/runtime": "^7.1.2",
+ "loose-envify": "^1.2.0",
+ "resolve-pathname": "^3.0.0",
+ "tiny-invariant": "^1.0.2",
+ "tiny-warning": "^1.0.0",
+ "value-equal": "^1.0.1"
+ }
+ },
+ "node_modules/hoist-non-react-statics": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz",
+ "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==",
+ "dependencies": {
+ "react-is": "^16.7.0"
+ }
+ },
+ "node_modules/hpack.js": {
+ "version": "2.1.6",
+ "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz",
+ "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==",
+ "dependencies": {
+ "inherits": "^2.0.1",
+ "obuf": "^1.0.0",
+ "readable-stream": "^2.0.1",
+ "wbuf": "^1.1.0"
+ }
+ },
+ "node_modules/hpack.js/node_modules/isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="
+ },
+ "node_modules/hpack.js/node_modules/readable-stream": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+ "dependencies": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "node_modules/hpack.js/node_modules/safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ },
+ "node_modules/hpack.js/node_modules/string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dependencies": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "node_modules/html-entities": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.4.0.tgz",
+ "integrity": "sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/mdevils"
+ },
+ {
+ "type": "patreon",
+ "url": "https://patreon.com/mdevils"
+ }
+ ]
+ },
+ "node_modules/html-escaper": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz",
+ "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg=="
+ },
+ "node_modules/html-minifier-terser": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-7.2.0.tgz",
+ "integrity": "sha512-tXgn3QfqPIpGl9o+K5tpcj3/MN4SfLtsx2GWwBC3SSd0tXQGyF3gsSqad8loJgKZGM3ZxbYDd5yhiBIdWpmvLA==",
+ "dependencies": {
+ "camel-case": "^4.1.2",
+ "clean-css": "~5.3.2",
+ "commander": "^10.0.0",
+ "entities": "^4.4.0",
+ "param-case": "^3.0.4",
+ "relateurl": "^0.2.7",
+ "terser": "^5.15.1"
+ },
+ "bin": {
+ "html-minifier-terser": "cli.js"
+ },
+ "engines": {
+ "node": "^14.13.1 || >=16.0.0"
+ }
+ },
+ "node_modules/html-minifier-terser/node_modules/commander": {
+ "version": "10.0.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz",
+ "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==",
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/html-tags": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz",
+ "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/html-void-elements": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz",
+ "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/html-webpack-plugin": {
+ "version": "5.5.3",
+ "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.3.tgz",
+ "integrity": "sha512-6YrDKTuqaP/TquFH7h4srYWsZx+x6k6+FbsTm0ziCwGHDP78Unr1r9F/H4+sGmMbX08GQcJ+K64x55b+7VM/jg==",
+ "dependencies": {
+ "@types/html-minifier-terser": "^6.0.0",
+ "html-minifier-terser": "^6.0.2",
+ "lodash": "^4.17.21",
+ "pretty-error": "^4.0.0",
+ "tapable": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/html-webpack-plugin"
+ },
+ "peerDependencies": {
+ "webpack": "^5.20.0"
+ }
+ },
+ "node_modules/html-webpack-plugin/node_modules/commander": {
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz",
+ "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==",
+ "engines": {
+ "node": ">= 12"
+ }
+ },
+ "node_modules/html-webpack-plugin/node_modules/html-minifier-terser": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz",
+ "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==",
+ "dependencies": {
+ "camel-case": "^4.1.2",
+ "clean-css": "^5.2.2",
+ "commander": "^8.3.0",
+ "he": "^1.2.0",
+ "param-case": "^3.0.4",
+ "relateurl": "^0.2.7",
+ "terser": "^5.10.0"
+ },
+ "bin": {
+ "html-minifier-terser": "cli.js"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/htmlparser2": {
+ "version": "8.0.2",
+ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz",
+ "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==",
+ "funding": [
+ "https://github.com/fb55/htmlparser2?sponsor=1",
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fb55"
+ }
+ ],
+ "dependencies": {
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.3",
+ "domutils": "^3.0.1",
+ "entities": "^4.4.0"
+ }
+ },
+ "node_modules/http-cache-semantics": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz",
+ "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ=="
+ },
+ "node_modules/http-deceiver": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz",
+ "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw=="
+ },
+ "node_modules/http-errors": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
+ "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
+ "dependencies": {
+ "depd": "2.0.0",
+ "inherits": "2.0.4",
+ "setprototypeof": "1.2.0",
+ "statuses": "2.0.1",
+ "toidentifier": "1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/http-parser-js": {
+ "version": "0.5.8",
+ "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz",
+ "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q=="
+ },
+ "node_modules/http-proxy": {
+ "version": "1.18.1",
+ "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz",
+ "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==",
+ "dependencies": {
+ "eventemitter3": "^4.0.0",
+ "follow-redirects": "^1.0.0",
+ "requires-port": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/http-proxy-middleware": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz",
+ "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==",
+ "dependencies": {
+ "@types/http-proxy": "^1.17.8",
+ "http-proxy": "^1.18.1",
+ "is-glob": "^4.0.1",
+ "is-plain-obj": "^3.0.0",
+ "micromatch": "^4.0.2"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "peerDependencies": {
+ "@types/express": "^4.17.13"
+ },
+ "peerDependenciesMeta": {
+ "@types/express": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/http-proxy-middleware/node_modules/is-plain-obj": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz",
+ "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/http2-wrapper": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.1.tgz",
+ "integrity": "sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==",
+ "dependencies": {
+ "quick-lru": "^5.1.1",
+ "resolve-alpn": "^1.2.0"
+ },
+ "engines": {
+ "node": ">=10.19.0"
+ }
+ },
+ "node_modules/human-signals": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
+ "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
+ "engines": {
+ "node": ">=10.17.0"
+ }
+ },
+ "node_modules/iconv-lite": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/icss-utils": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz",
+ "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==",
+ "engines": {
+ "node": "^10 || ^12 || >= 14"
+ },
+ "peerDependencies": {
+ "postcss": "^8.1.0"
+ }
+ },
+ "node_modules/ignore": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz",
+ "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==",
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/image-size": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.0.2.tgz",
+ "integrity": "sha512-xfOoWjceHntRb3qFCrh5ZFORYH8XCdYpASltMhZ/Q0KZiOwjdE/Yl2QCiWdwD+lygV5bMCvauzgu5PxBX/Yerg==",
+ "dependencies": {
+ "queue": "6.0.2"
+ },
+ "bin": {
+ "image-size": "bin/image-size.js"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/immer": {
+ "version": "9.0.21",
+ "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz",
+ "integrity": "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/immer"
+ }
+ },
+ "node_modules/import-fresh": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
+ "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
+ "dependencies": {
+ "parent-module": "^1.0.0",
+ "resolve-from": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/import-lazy": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz",
+ "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
+ "engines": {
+ "node": ">=0.8.19"
+ }
+ },
+ "node_modules/indent-string": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
+ "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/infima": {
+ "version": "0.2.0-alpha.43",
+ "resolved": "https://registry.npmjs.org/infima/-/infima-0.2.0-alpha.43.tgz",
+ "integrity": "sha512-2uw57LvUqW0rK/SWYnd/2rRfxNA5DDNOh33jxF7fy46VWoNhGxiUQyVZHbBMjQ33mQem0cjdDVwgWVAmlRfgyQ==",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+ "dependencies": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
+ },
+ "node_modules/ini": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
+ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew=="
+ },
+ "node_modules/inline-style-parser": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz",
+ "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q=="
+ },
+ "node_modules/interpret": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz",
+ "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==",
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/invariant": {
+ "version": "2.2.4",
+ "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
+ "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
+ "dependencies": {
+ "loose-envify": "^1.0.0"
+ }
+ },
+ "node_modules/ipaddr.js": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.1.0.tgz",
+ "integrity": "sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==",
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/is-alphabetical": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz",
+ "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/is-alphanumerical": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz",
+ "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==",
+ "dependencies": {
+ "is-alphabetical": "^2.0.0",
+ "is-decimal": "^2.0.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/is-arrayish": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+ "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg=="
+ },
+ "node_modules/is-binary-path": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
+ "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+ "dependencies": {
+ "binary-extensions": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-ci": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz",
+ "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==",
+ "dependencies": {
+ "ci-info": "^3.2.0"
+ },
+ "bin": {
+ "is-ci": "bin.js"
+ }
+ },
+ "node_modules/is-core-module": {
+ "version": "2.13.1",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz",
+ "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==",
+ "dependencies": {
+ "hasown": "^2.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-decimal": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz",
+ "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/is-docker": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
+ "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
+ "bin": {
+ "is-docker": "cli.js"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-extendable": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
+ "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "dependencies": {
+ "is-extglob": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-hexadecimal": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz",
+ "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/is-installed-globally": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz",
+ "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==",
+ "dependencies": {
+ "global-dirs": "^3.0.0",
+ "is-path-inside": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-npm": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-6.0.0.tgz",
+ "integrity": "sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ==",
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "node_modules/is-obj": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
+ "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-path-cwd": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz",
+ "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/is-path-inside": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
+ "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-plain-obj": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz",
+ "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-plain-object": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
+ "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-reference": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.2.tgz",
+ "integrity": "sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==",
+ "dependencies": {
+ "@types/estree": "*"
+ }
+ },
+ "node_modules/is-regexp": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz",
+ "integrity": "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-root": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz",
+ "integrity": "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/is-stream": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-typedarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
+ "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA=="
+ },
+ "node_modules/is-wsl": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
+ "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
+ "dependencies": {
+ "is-docker": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-yarn-global": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.4.1.tgz",
+ "integrity": "sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ==",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ=="
+ },
+ "node_modules/isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="
+ },
+ "node_modules/isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/jest-util": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz",
+ "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==",
+ "dependencies": {
+ "@jest/types": "^29.6.3",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "ci-info": "^3.2.0",
+ "graceful-fs": "^4.2.9",
+ "picomatch": "^2.2.3"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-worker": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz",
+ "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==",
+ "dependencies": {
+ "@types/node": "*",
+ "jest-util": "^29.7.0",
+ "merge-stream": "^2.0.0",
+ "supports-color": "^8.0.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-worker/node_modules/supports-color": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
+ "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/supports-color?sponsor=1"
+ }
+ },
+ "node_modules/jiti": {
+ "version": "1.21.0",
+ "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz",
+ "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==",
+ "bin": {
+ "jiti": "bin/jiti.js"
+ }
+ },
+ "node_modules/joi": {
+ "version": "17.11.0",
+ "resolved": "https://registry.npmjs.org/joi/-/joi-17.11.0.tgz",
+ "integrity": "sha512-NgB+lZLNoqISVy1rZocE9PZI36bL/77ie924Ri43yEvi9GUUMPeyVIr8KdFTMUlby1p0PBYMk9spIxEUQYqrJQ==",
+ "dependencies": {
+ "@hapi/hoek": "^9.0.0",
+ "@hapi/topo": "^5.0.0",
+ "@sideway/address": "^4.1.3",
+ "@sideway/formula": "^3.0.1",
+ "@sideway/pinpoint": "^2.0.0"
+ }
+ },
+ "node_modules/js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
+ },
+ "node_modules/js-yaml": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/jsesc": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
+ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
+ "bin": {
+ "jsesc": "bin/jsesc"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/json-buffer": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
+ "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ=="
+ },
+ "node_modules/json-parse-even-better-errors": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
+ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w=="
+ },
+ "node_modules/json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="
+ },
+ "node_modules/json5": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
+ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
+ "bin": {
+ "json5": "lib/cli.js"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/jsonfile": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+ "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+ "dependencies": {
+ "universalify": "^2.0.0"
+ },
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/keyv": {
+ "version": "4.5.4",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
+ "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
+ "dependencies": {
+ "json-buffer": "3.0.1"
+ }
+ },
+ "node_modules/kind-of": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
+ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/kleur": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
+ "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/latest-version": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-7.0.0.tgz",
+ "integrity": "sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg==",
+ "dependencies": {
+ "package-json": "^8.1.0"
+ },
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/launch-editor": {
+ "version": "2.6.1",
+ "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.1.tgz",
+ "integrity": "sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw==",
+ "dependencies": {
+ "picocolors": "^1.0.0",
+ "shell-quote": "^1.8.1"
+ }
+ },
+ "node_modules/leven": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
+ "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/lilconfig": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz",
+ "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/lines-and-columns": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
+ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="
+ },
+ "node_modules/loader-runner": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz",
+ "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==",
+ "engines": {
+ "node": ">=6.11.5"
+ }
+ },
+ "node_modules/loader-utils": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz",
+ "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==",
+ "dependencies": {
+ "big.js": "^5.2.2",
+ "emojis-list": "^3.0.0",
+ "json5": "^2.1.2"
+ },
+ "engines": {
+ "node": ">=8.9.0"
+ }
+ },
+ "node_modules/locate-path": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz",
+ "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==",
+ "dependencies": {
+ "p-locate": "^6.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/lodash": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
+ },
+ "node_modules/lodash.curry": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/lodash.curry/-/lodash.curry-4.1.1.tgz",
+ "integrity": "sha512-/u14pXGviLaweY5JI0IUzgzF2J6Ne8INyzAZjImcryjgkZ+ebruBxy2/JaOOkTqScddcYtakjhSaeemV8lR0tA=="
+ },
+ "node_modules/lodash.debounce": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
+ "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow=="
+ },
+ "node_modules/lodash.flow": {
+ "version": "3.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.flow/-/lodash.flow-3.5.0.tgz",
+ "integrity": "sha512-ff3BX/tSioo+XojX4MOsOMhJw0nZoUEF011LX8g8d3gvjVbxd89cCio4BCXronjxcTUIJUoqKEUA+n4CqvvRPw=="
+ },
+ "node_modules/lodash.memoize": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
+ "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag=="
+ },
+ "node_modules/lodash.uniq": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
+ "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ=="
+ },
+ "node_modules/longest-streak": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz",
+ "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/loose-envify": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
+ "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
+ "dependencies": {
+ "js-tokens": "^3.0.0 || ^4.0.0"
+ },
+ "bin": {
+ "loose-envify": "cli.js"
+ }
+ },
+ "node_modules/lower-case": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz",
+ "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==",
+ "dependencies": {
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/lowercase-keys": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz",
+ "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==",
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/lru-cache": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
+ "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+ "dependencies": {
+ "yallist": "^3.0.2"
+ }
+ },
+ "node_modules/markdown-extensions": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-2.0.0.tgz",
+ "integrity": "sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==",
+ "engines": {
+ "node": ">=16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/markdown-table": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.3.tgz",
+ "integrity": "sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/mdast-util-directive": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-directive/-/mdast-util-directive-3.0.0.tgz",
+ "integrity": "sha512-JUpYOqKI4mM3sZcNxmF/ox04XYFFkNwr0CFlrQIkCwbvH0xzMCqkMqAde9wRd80VAhaUrwFwKm2nxretdT1h7Q==",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "@types/unist": "^3.0.0",
+ "devlop": "^1.0.0",
+ "mdast-util-from-markdown": "^2.0.0",
+ "mdast-util-to-markdown": "^2.0.0",
+ "parse-entities": "^4.0.0",
+ "stringify-entities": "^4.0.0",
+ "unist-util-visit-parents": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-find-and-replace": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.1.tgz",
+ "integrity": "sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "escape-string-regexp": "^5.0.0",
+ "unist-util-is": "^6.0.0",
+ "unist-util-visit-parents": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz",
+ "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/mdast-util-from-markdown": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.0.tgz",
+ "integrity": "sha512-n7MTOr/z+8NAX/wmhhDji8O3bRvPTV/U0oTCaZJkjhPSKTPhS3xufVhKGF8s1pJ7Ox4QgoIU7KHseh09S+9rTA==",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "@types/unist": "^3.0.0",
+ "decode-named-character-reference": "^1.0.0",
+ "devlop": "^1.0.0",
+ "mdast-util-to-string": "^4.0.0",
+ "micromark": "^4.0.0",
+ "micromark-util-decode-numeric-character-reference": "^2.0.0",
+ "micromark-util-decode-string": "^2.0.0",
+ "micromark-util-normalize-identifier": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0",
+ "unist-util-stringify-position": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-from-markdown/node_modules/micromark-util-symbol": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
+ "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ]
+ },
+ "node_modules/mdast-util-frontmatter": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/mdast-util-frontmatter/-/mdast-util-frontmatter-2.0.1.tgz",
+ "integrity": "sha512-LRqI9+wdgC25P0URIJY9vwocIzCcksduHQ9OF2joxQoyTNVduwLAFUzjoopuRJbJAReaKrNQKAZKL3uCMugWJA==",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "devlop": "^1.0.0",
+ "escape-string-regexp": "^5.0.0",
+ "mdast-util-from-markdown": "^2.0.0",
+ "mdast-util-to-markdown": "^2.0.0",
+ "micromark-extension-frontmatter": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-frontmatter/node_modules/escape-string-regexp": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz",
+ "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/mdast-util-gfm": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.0.0.tgz",
+ "integrity": "sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==",
+ "dependencies": {
+ "mdast-util-from-markdown": "^2.0.0",
+ "mdast-util-gfm-autolink-literal": "^2.0.0",
+ "mdast-util-gfm-footnote": "^2.0.0",
+ "mdast-util-gfm-strikethrough": "^2.0.0",
+ "mdast-util-gfm-table": "^2.0.0",
+ "mdast-util-gfm-task-list-item": "^2.0.0",
+ "mdast-util-to-markdown": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-gfm-autolink-literal": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.0.tgz",
+ "integrity": "sha512-FyzMsduZZHSc3i0Px3PQcBT4WJY/X/RCtEJKuybiC6sjPqLv7h1yqAkmILZtuxMSsUyaLUWNp71+vQH2zqp5cg==",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "ccount": "^2.0.0",
+ "devlop": "^1.0.0",
+ "mdast-util-find-and-replace": "^3.0.0",
+ "micromark-util-character": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-gfm-autolink-literal/node_modules/micromark-util-character": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.0.1.tgz",
+ "integrity": "sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "dependencies": {
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/mdast-util-gfm-autolink-literal/node_modules/micromark-util-symbol": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
+ "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ]
+ },
+ "node_modules/mdast-util-gfm-footnote": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.0.0.tgz",
+ "integrity": "sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "devlop": "^1.1.0",
+ "mdast-util-from-markdown": "^2.0.0",
+ "mdast-util-to-markdown": "^2.0.0",
+ "micromark-util-normalize-identifier": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-gfm-strikethrough": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz",
+ "integrity": "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "mdast-util-from-markdown": "^2.0.0",
+ "mdast-util-to-markdown": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-gfm-table": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz",
+ "integrity": "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "devlop": "^1.0.0",
+ "markdown-table": "^3.0.0",
+ "mdast-util-from-markdown": "^2.0.0",
+ "mdast-util-to-markdown": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-gfm-task-list-item": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz",
+ "integrity": "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "devlop": "^1.0.0",
+ "mdast-util-from-markdown": "^2.0.0",
+ "mdast-util-to-markdown": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-mdx": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-3.0.0.tgz",
+ "integrity": "sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==",
+ "dependencies": {
+ "mdast-util-from-markdown": "^2.0.0",
+ "mdast-util-mdx-expression": "^2.0.0",
+ "mdast-util-mdx-jsx": "^3.0.0",
+ "mdast-util-mdxjs-esm": "^2.0.0",
+ "mdast-util-to-markdown": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-mdx-expression": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.0.tgz",
+ "integrity": "sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw==",
+ "dependencies": {
+ "@types/estree-jsx": "^1.0.0",
+ "@types/hast": "^3.0.0",
+ "@types/mdast": "^4.0.0",
+ "devlop": "^1.0.0",
+ "mdast-util-from-markdown": "^2.0.0",
+ "mdast-util-to-markdown": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-mdx-jsx": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.0.0.tgz",
+ "integrity": "sha512-XZuPPzQNBPAlaqsTTgRrcJnyFbSOBovSadFgbFu8SnuNgm+6Bdx1K+IWoitsmj6Lq6MNtI+ytOqwN70n//NaBA==",
+ "dependencies": {
+ "@types/estree-jsx": "^1.0.0",
+ "@types/hast": "^3.0.0",
+ "@types/mdast": "^4.0.0",
+ "@types/unist": "^3.0.0",
+ "ccount": "^2.0.0",
+ "devlop": "^1.1.0",
+ "mdast-util-from-markdown": "^2.0.0",
+ "mdast-util-to-markdown": "^2.0.0",
+ "parse-entities": "^4.0.0",
+ "stringify-entities": "^4.0.0",
+ "unist-util-remove-position": "^5.0.0",
+ "unist-util-stringify-position": "^4.0.0",
+ "vfile-message": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-mdxjs-esm": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz",
+ "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==",
+ "dependencies": {
+ "@types/estree-jsx": "^1.0.0",
+ "@types/hast": "^3.0.0",
+ "@types/mdast": "^4.0.0",
+ "devlop": "^1.0.0",
+ "mdast-util-from-markdown": "^2.0.0",
+ "mdast-util-to-markdown": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-phrasing": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.0.0.tgz",
+ "integrity": "sha512-xadSsJayQIucJ9n053dfQwVu1kuXg7jCTdYsMK8rqzKZh52nLfSH/k0sAxE0u+pj/zKZX+o5wB+ML5mRayOxFA==",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "unist-util-is": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-to-hast": {
+ "version": "13.0.2",
+ "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.0.2.tgz",
+ "integrity": "sha512-U5I+500EOOw9e3ZrclN3Is3fRpw8c19SMyNZlZ2IS+7vLsNzb2Om11VpIVOR+/0137GhZsFEF6YiKD5+0Hr2Og==",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "@types/mdast": "^4.0.0",
+ "@ungap/structured-clone": "^1.0.0",
+ "devlop": "^1.0.0",
+ "micromark-util-sanitize-uri": "^2.0.0",
+ "trim-lines": "^3.0.0",
+ "unist-util-position": "^5.0.0",
+ "unist-util-visit": "^5.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-to-markdown": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.0.tgz",
+ "integrity": "sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "@types/unist": "^3.0.0",
+ "longest-streak": "^3.0.0",
+ "mdast-util-phrasing": "^4.0.0",
+ "mdast-util-to-string": "^4.0.0",
+ "micromark-util-decode-string": "^2.0.0",
+ "unist-util-visit": "^5.0.0",
+ "zwitch": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-to-string": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz",
+ "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==",
+ "dependencies": {
+ "@types/mdast": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdn-data": {
+ "version": "2.0.14",
+ "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz",
+ "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow=="
+ },
+ "node_modules/media-typer": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
+ "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/memfs": {
+ "version": "3.5.3",
+ "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz",
+ "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==",
+ "dependencies": {
+ "fs-monkey": "^1.0.4"
+ },
+ "engines": {
+ "node": ">= 4.0.0"
+ }
+ },
+ "node_modules/merge-descriptors": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
+ "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w=="
+ },
+ "node_modules/merge-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
+ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w=="
+ },
+ "node_modules/merge2": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/methods": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
+ "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/micromark": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.0.tgz",
+ "integrity": "sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "dependencies": {
+ "@types/debug": "^4.0.0",
+ "debug": "^4.0.0",
+ "decode-named-character-reference": "^1.0.0",
+ "devlop": "^1.0.0",
+ "micromark-core-commonmark": "^2.0.0",
+ "micromark-factory-space": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-chunked": "^2.0.0",
+ "micromark-util-combine-extensions": "^2.0.0",
+ "micromark-util-decode-numeric-character-reference": "^2.0.0",
+ "micromark-util-encode": "^2.0.0",
+ "micromark-util-normalize-identifier": "^2.0.0",
+ "micromark-util-resolve-all": "^2.0.0",
+ "micromark-util-sanitize-uri": "^2.0.0",
+ "micromark-util-subtokenize": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-core-commonmark": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.0.tgz",
+ "integrity": "sha512-jThOz/pVmAYUtkroV3D5c1osFXAMv9e0ypGDOIZuCeAe91/sD6BoE2Sjzt30yuXtwOYUmySOhMas/PVyh02itA==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "dependencies": {
+ "decode-named-character-reference": "^1.0.0",
+ "devlop": "^1.0.0",
+ "micromark-factory-destination": "^2.0.0",
+ "micromark-factory-label": "^2.0.0",
+ "micromark-factory-space": "^2.0.0",
+ "micromark-factory-title": "^2.0.0",
+ "micromark-factory-whitespace": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-chunked": "^2.0.0",
+ "micromark-util-classify-character": "^2.0.0",
+ "micromark-util-html-tag-name": "^2.0.0",
+ "micromark-util-normalize-identifier": "^2.0.0",
+ "micromark-util-resolve-all": "^2.0.0",
+ "micromark-util-subtokenize": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-core-commonmark/node_modules/micromark-factory-space": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz",
+ "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "dependencies": {
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-core-commonmark/node_modules/micromark-util-character": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.0.1.tgz",
+ "integrity": "sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "dependencies": {
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-core-commonmark/node_modules/micromark-util-symbol": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
+ "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ]
+ },
+ "node_modules/micromark-extension-directive": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-extension-directive/-/micromark-extension-directive-3.0.0.tgz",
+ "integrity": "sha512-61OI07qpQrERc+0wEysLHMvoiO3s2R56x5u7glHq2Yqq6EHbH4dW25G9GfDdGCDYqA21KE6DWgNSzxSwHc2hSg==",
+ "dependencies": {
+ "devlop": "^1.0.0",
+ "micromark-factory-space": "^2.0.0",
+ "micromark-factory-whitespace": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0",
+ "parse-entities": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-directive/node_modules/micromark-factory-space": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz",
+ "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "dependencies": {
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-extension-directive/node_modules/micromark-util-character": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.0.1.tgz",
+ "integrity": "sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "dependencies": {
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-extension-directive/node_modules/micromark-util-symbol": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
+ "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ]
+ },
+ "node_modules/micromark-extension-frontmatter": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-extension-frontmatter/-/micromark-extension-frontmatter-2.0.0.tgz",
+ "integrity": "sha512-C4AkuM3dA58cgZha7zVnuVxBhDsbttIMiytjgsM2XbHAB2faRVaHRle40558FBN+DJcrLNCoqG5mlrpdU4cRtg==",
+ "dependencies": {
+ "fault": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-frontmatter/node_modules/micromark-util-character": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.0.1.tgz",
+ "integrity": "sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "dependencies": {
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-extension-frontmatter/node_modules/micromark-util-symbol": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
+ "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ]
+ },
+ "node_modules/micromark-extension-gfm": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz",
+ "integrity": "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==",
+ "dependencies": {
+ "micromark-extension-gfm-autolink-literal": "^2.0.0",
+ "micromark-extension-gfm-footnote": "^2.0.0",
+ "micromark-extension-gfm-strikethrough": "^2.0.0",
+ "micromark-extension-gfm-table": "^2.0.0",
+ "micromark-extension-gfm-tagfilter": "^2.0.0",
+ "micromark-extension-gfm-task-list-item": "^2.0.0",
+ "micromark-util-combine-extensions": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-gfm-autolink-literal": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.0.0.tgz",
+ "integrity": "sha512-rTHfnpt/Q7dEAK1Y5ii0W8bhfJlVJFnJMHIPisfPK3gpVNuOP0VnRl96+YJ3RYWV/P4gFeQoGKNlT3RhuvpqAg==",
+ "dependencies": {
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-sanitize-uri": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-gfm-autolink-literal/node_modules/micromark-util-character": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.0.1.tgz",
+ "integrity": "sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "dependencies": {
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-extension-gfm-autolink-literal/node_modules/micromark-util-symbol": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
+ "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ]
+ },
+ "node_modules/micromark-extension-gfm-footnote": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.0.0.tgz",
+ "integrity": "sha512-6Rzu0CYRKDv3BfLAUnZsSlzx3ak6HAoI85KTiijuKIz5UxZxbUI+pD6oHgw+6UtQuiRwnGRhzMmPRv4smcz0fg==",
+ "dependencies": {
+ "devlop": "^1.0.0",
+ "micromark-core-commonmark": "^2.0.0",
+ "micromark-factory-space": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-normalize-identifier": "^2.0.0",
+ "micromark-util-sanitize-uri": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-factory-space": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz",
+ "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "dependencies": {
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-util-character": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.0.1.tgz",
+ "integrity": "sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "dependencies": {
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-util-symbol": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
+ "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ]
+ },
+ "node_modules/micromark-extension-gfm-strikethrough": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.0.0.tgz",
+ "integrity": "sha512-c3BR1ClMp5fxxmwP6AoOY2fXO9U8uFMKs4ADD66ahLTNcwzSCyRVU4k7LPV5Nxo/VJiR4TdzxRQY2v3qIUceCw==",
+ "dependencies": {
+ "devlop": "^1.0.0",
+ "micromark-util-chunked": "^2.0.0",
+ "micromark-util-classify-character": "^2.0.0",
+ "micromark-util-resolve-all": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-gfm-strikethrough/node_modules/micromark-util-symbol": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
+ "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ]
+ },
+ "node_modules/micromark-extension-gfm-table": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.0.0.tgz",
+ "integrity": "sha512-PoHlhypg1ItIucOaHmKE8fbin3vTLpDOUg8KAr8gRCF1MOZI9Nquq2i/44wFvviM4WuxJzc3demT8Y3dkfvYrw==",
+ "dependencies": {
+ "devlop": "^1.0.0",
+ "micromark-factory-space": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-gfm-table/node_modules/micromark-factory-space": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz",
+ "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "dependencies": {
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-extension-gfm-table/node_modules/micromark-util-character": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.0.1.tgz",
+ "integrity": "sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "dependencies": {
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-extension-gfm-table/node_modules/micromark-util-symbol": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
+ "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ]
+ },
+ "node_modules/micromark-extension-gfm-tagfilter": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz",
+ "integrity": "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==",
+ "dependencies": {
+ "micromark-util-types": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-gfm-task-list-item": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.0.1.tgz",
+ "integrity": "sha512-cY5PzGcnULaN5O7T+cOzfMoHjBW7j+T9D2sucA5d/KbsBTPcYdebm9zUd9zzdgJGCwahV+/W78Z3nbulBYVbTw==",
+ "dependencies": {
+ "devlop": "^1.0.0",
+ "micromark-factory-space": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-gfm-task-list-item/node_modules/micromark-factory-space": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz",
+ "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "dependencies": {
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-extension-gfm-task-list-item/node_modules/micromark-util-character": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.0.1.tgz",
+ "integrity": "sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "dependencies": {
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-extension-gfm-task-list-item/node_modules/micromark-util-symbol": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
+ "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ]
+ },
+ "node_modules/micromark-extension-mdx-expression": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-3.0.0.tgz",
+ "integrity": "sha512-sI0nwhUDz97xyzqJAbHQhp5TfaxEvZZZ2JDqUo+7NvyIYG6BZ5CPPqj2ogUoPJlmXHBnyZUzISg9+oUmU6tUjQ==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "dependencies": {
+ "@types/estree": "^1.0.0",
+ "devlop": "^1.0.0",
+ "micromark-factory-mdx-expression": "^2.0.0",
+ "micromark-factory-space": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-events-to-acorn": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-extension-mdx-expression/node_modules/micromark-factory-space": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz",
+ "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "dependencies": {
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-extension-mdx-expression/node_modules/micromark-util-character": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.0.1.tgz",
+ "integrity": "sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "dependencies": {
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-extension-mdx-expression/node_modules/micromark-util-symbol": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
+ "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ]
+ },
+ "node_modules/micromark-extension-mdx-jsx": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-3.0.0.tgz",
+ "integrity": "sha512-uvhhss8OGuzR4/N17L1JwvmJIpPhAd8oByMawEKx6NVdBCbesjH4t+vjEp3ZXft9DwvlKSD07fCeI44/N0Vf2w==",
+ "dependencies": {
+ "@types/acorn": "^4.0.0",
+ "@types/estree": "^1.0.0",
+ "devlop": "^1.0.0",
+ "estree-util-is-identifier-name": "^3.0.0",
+ "micromark-factory-mdx-expression": "^2.0.0",
+ "micromark-factory-space": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0",
+ "vfile-message": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-mdx-jsx/node_modules/micromark-factory-space": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz",
+ "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "dependencies": {
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-extension-mdx-jsx/node_modules/micromark-util-character": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.0.1.tgz",
+ "integrity": "sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "dependencies": {
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-extension-mdx-jsx/node_modules/micromark-util-symbol": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
+ "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ]
+ },
+ "node_modules/micromark-extension-mdx-md": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-2.0.0.tgz",
+ "integrity": "sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==",
+ "dependencies": {
+ "micromark-util-types": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-mdxjs": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs/-/micromark-extension-mdxjs-3.0.0.tgz",
+ "integrity": "sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==",
+ "dependencies": {
+ "acorn": "^8.0.0",
+ "acorn-jsx": "^5.0.0",
+ "micromark-extension-mdx-expression": "^3.0.0",
+ "micromark-extension-mdx-jsx": "^3.0.0",
+ "micromark-extension-mdx-md": "^2.0.0",
+ "micromark-extension-mdxjs-esm": "^3.0.0",
+ "micromark-util-combine-extensions": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-mdxjs-esm": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-3.0.0.tgz",
+ "integrity": "sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==",
+ "dependencies": {
+ "@types/estree": "^1.0.0",
+ "devlop": "^1.0.0",
+ "micromark-core-commonmark": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-events-to-acorn": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0",
+ "unist-util-position-from-estree": "^2.0.0",
+ "vfile-message": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-mdxjs-esm/node_modules/micromark-util-character": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.0.1.tgz",
+ "integrity": "sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "dependencies": {
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-extension-mdxjs-esm/node_modules/micromark-util-symbol": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
+ "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ]
+ },
+ "node_modules/micromark-factory-destination": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz",
+ "integrity": "sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "dependencies": {
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-factory-destination/node_modules/micromark-util-character": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.0.1.tgz",
+ "integrity": "sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "dependencies": {
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-factory-destination/node_modules/micromark-util-symbol": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
+ "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ]
+ },
+ "node_modules/micromark-factory-label": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.0.tgz",
+ "integrity": "sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "dependencies": {
+ "devlop": "^1.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-factory-label/node_modules/micromark-util-character": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.0.1.tgz",
+ "integrity": "sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "dependencies": {
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-factory-label/node_modules/micromark-util-symbol": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
+ "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ]
+ },
+ "node_modules/micromark-factory-mdx-expression": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-2.0.1.tgz",
+ "integrity": "sha512-F0ccWIUHRLRrYp5TC9ZYXmZo+p2AM13ggbsW4T0b5CRKP8KHVRB8t4pwtBgTxtjRmwrK0Irwm7vs2JOZabHZfg==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "dependencies": {
+ "@types/estree": "^1.0.0",
+ "devlop": "^1.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-events-to-acorn": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0",
+ "unist-util-position-from-estree": "^2.0.0",
+ "vfile-message": "^4.0.0"
+ }
+ },
+ "node_modules/micromark-factory-mdx-expression/node_modules/micromark-util-character": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.0.1.tgz",
+ "integrity": "sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "dependencies": {
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-factory-mdx-expression/node_modules/micromark-util-symbol": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
+ "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ]
+ },
+ "node_modules/micromark-factory-space": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-1.1.0.tgz",
+ "integrity": "sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "dependencies": {
+ "micromark-util-character": "^1.0.0",
+ "micromark-util-types": "^1.0.0"
+ }
+ },
+ "node_modules/micromark-factory-space/node_modules/micromark-util-types": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.1.0.tgz",
+ "integrity": "sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ]
+ },
+ "node_modules/micromark-factory-title": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.0.tgz",
+ "integrity": "sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "dependencies": {
+ "micromark-factory-space": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-factory-title/node_modules/micromark-factory-space": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz",
+ "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "dependencies": {
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-factory-title/node_modules/micromark-util-character": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.0.1.tgz",
+ "integrity": "sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "dependencies": {
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-factory-title/node_modules/micromark-util-symbol": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
+ "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ]
+ },
+ "node_modules/micromark-factory-whitespace": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.0.tgz",
+ "integrity": "sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "dependencies": {
+ "micromark-factory-space": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-factory-whitespace/node_modules/micromark-factory-space": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz",
+ "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "dependencies": {
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-factory-whitespace/node_modules/micromark-util-character": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.0.1.tgz",
+ "integrity": "sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "dependencies": {
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-factory-whitespace/node_modules/micromark-util-symbol": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
+ "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ]
+ },
+ "node_modules/micromark-util-character": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-1.2.0.tgz",
+ "integrity": "sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "dependencies": {
+ "micromark-util-symbol": "^1.0.0",
+ "micromark-util-types": "^1.0.0"
+ }
+ },
+ "node_modules/micromark-util-character/node_modules/micromark-util-types": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.1.0.tgz",
+ "integrity": "sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ]
+ },
+ "node_modules/micromark-util-chunked": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.0.tgz",
+ "integrity": "sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "dependencies": {
+ "micromark-util-symbol": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-chunked/node_modules/micromark-util-symbol": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
+ "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ]
+ },
+ "node_modules/micromark-util-classify-character": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.0.tgz",
+ "integrity": "sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "dependencies": {
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-classify-character/node_modules/micromark-util-character": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.0.1.tgz",
+ "integrity": "sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "dependencies": {
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-classify-character/node_modules/micromark-util-symbol": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
+ "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ]
+ },
+ "node_modules/micromark-util-combine-extensions": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.0.tgz",
+ "integrity": "sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "dependencies": {
+ "micromark-util-chunked": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-decode-numeric-character-reference": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.1.tgz",
+ "integrity": "sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "dependencies": {
+ "micromark-util-symbol": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-decode-numeric-character-reference/node_modules/micromark-util-symbol": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
+ "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ]
+ },
+ "node_modules/micromark-util-decode-string": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz",
+ "integrity": "sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "dependencies": {
+ "decode-named-character-reference": "^1.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-decode-numeric-character-reference": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-decode-string/node_modules/micromark-util-character": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.0.1.tgz",
+ "integrity": "sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "dependencies": {
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-decode-string/node_modules/micromark-util-symbol": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
+ "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ]
+ },
+ "node_modules/micromark-util-encode": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz",
+ "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ]
+ },
+ "node_modules/micromark-util-events-to-acorn": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-2.0.2.tgz",
+ "integrity": "sha512-Fk+xmBrOv9QZnEDguL9OI9/NQQp6Hz4FuQ4YmCb/5V7+9eAh1s6AYSvL20kHkD67YIg7EpE54TiSlcsf3vyZgA==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "dependencies": {
+ "@types/acorn": "^4.0.0",
+ "@types/estree": "^1.0.0",
+ "@types/unist": "^3.0.0",
+ "devlop": "^1.0.0",
+ "estree-util-visit": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0",
+ "vfile-message": "^4.0.0"
+ }
+ },
+ "node_modules/micromark-util-events-to-acorn/node_modules/micromark-util-symbol": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
+ "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ]
+ },
+ "node_modules/micromark-util-html-tag-name": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.0.tgz",
+ "integrity": "sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ]
+ },
+ "node_modules/micromark-util-normalize-identifier": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.0.tgz",
+ "integrity": "sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "dependencies": {
+ "micromark-util-symbol": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-normalize-identifier/node_modules/micromark-util-symbol": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
+ "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ]
+ },
+ "node_modules/micromark-util-resolve-all": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.0.tgz",
+ "integrity": "sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "dependencies": {
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-sanitize-uri": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz",
+ "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "dependencies": {
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-encode": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-sanitize-uri/node_modules/micromark-util-character": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.0.1.tgz",
+ "integrity": "sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "dependencies": {
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-sanitize-uri/node_modules/micromark-util-symbol": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
+ "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ]
+ },
+ "node_modules/micromark-util-subtokenize": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.0.tgz",
+ "integrity": "sha512-vc93L1t+gpR3p8jxeVdaYlbV2jTYteDje19rNSS/H5dlhxUYll5Fy6vJ2cDwP8RnsXi818yGty1ayP55y3W6fg==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "dependencies": {
+ "devlop": "^1.0.0",
+ "micromark-util-chunked": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-subtokenize/node_modules/micromark-util-symbol": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
+ "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ]
+ },
+ "node_modules/micromark-util-symbol": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.1.0.tgz",
+ "integrity": "sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ]
+ },
+ "node_modules/micromark-util-types": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz",
+ "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ]
+ },
+ "node_modules/micromark/node_modules/micromark-factory-space": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz",
+ "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "dependencies": {
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark/node_modules/micromark-util-character": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.0.1.tgz",
+ "integrity": "sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "dependencies": {
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark/node_modules/micromark-util-symbol": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
+ "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ]
+ },
+ "node_modules/micromatch": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
+ "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
+ "dependencies": {
+ "braces": "^3.0.2",
+ "picomatch": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=8.6"
+ }
+ },
+ "node_modules/mime": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+ "bin": {
+ "mime": "cli.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/mime-db": {
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz",
+ "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mime-types": {
+ "version": "2.1.18",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz",
+ "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==",
+ "dependencies": {
+ "mime-db": "~1.33.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mimic-fn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/mimic-response": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-4.0.0.tgz",
+ "integrity": "sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==",
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/mini-css-extract-plugin": {
+ "version": "2.7.6",
+ "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.6.tgz",
+ "integrity": "sha512-Qk7HcgaPkGG6eD77mLvZS1nmxlao3j+9PkrT9Uc7HAE1id3F41+DdBRYRYkbyfNRGzm8/YWtzhw7nVPmwhqTQw==",
+ "dependencies": {
+ "schema-utils": "^4.0.0"
+ },
+ "engines": {
+ "node": ">= 12.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependencies": {
+ "webpack": "^5.0.0"
+ }
+ },
+ "node_modules/minimalistic-assert": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
+ "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A=="
+ },
+ "node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/minimist": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
+ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/mrmime": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz",
+ "integrity": "sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ },
+ "node_modules/multicast-dns": {
+ "version": "7.2.5",
+ "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz",
+ "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==",
+ "dependencies": {
+ "dns-packet": "^5.2.2",
+ "thunky": "^1.0.2"
+ },
+ "bin": {
+ "multicast-dns": "cli.js"
+ }
+ },
+ "node_modules/nanoid": {
+ "version": "3.3.7",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
+ "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "bin": {
+ "nanoid": "bin/nanoid.cjs"
+ },
+ "engines": {
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ }
+ },
+ "node_modules/negotiator": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
+ "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/neo-async": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
+ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw=="
+ },
+ "node_modules/no-case": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz",
+ "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==",
+ "dependencies": {
+ "lower-case": "^2.0.2",
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/node-emoji": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-2.1.3.tgz",
+ "integrity": "sha512-E2WEOVsgs7O16zsURJ/eH8BqhF029wGpEOnv7Urwdo2wmQanOACwJQh0devF9D9RhoZru0+9JXIS0dBXIAz+lA==",
+ "dependencies": {
+ "@sindresorhus/is": "^4.6.0",
+ "char-regex": "^1.0.2",
+ "emojilib": "^2.4.0",
+ "skin-tone": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/node-fetch": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
+ "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
+ "dependencies": {
+ "whatwg-url": "^5.0.0"
+ },
+ "engines": {
+ "node": "4.x || >=6.0.0"
+ },
+ "peerDependencies": {
+ "encoding": "^0.1.0"
+ },
+ "peerDependenciesMeta": {
+ "encoding": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/node-forge": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz",
+ "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==",
+ "engines": {
+ "node": ">= 6.13.0"
+ }
+ },
+ "node_modules/node-releases": {
+ "version": "2.0.13",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz",
+ "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ=="
+ },
+ "node_modules/normalize-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/normalize-range": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
+ "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/normalize-url": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz",
+ "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/npm-run-path": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
+ "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
+ "dependencies": {
+ "path-key": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/nprogress": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/nprogress/-/nprogress-0.2.0.tgz",
+ "integrity": "sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA=="
+ },
+ "node_modules/nth-check": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
+ "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
+ "dependencies": {
+ "boolbase": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/nth-check?sponsor=1"
+ }
+ },
+ "node_modules/object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object-inspect": {
+ "version": "1.13.1",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz",
+ "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/object-keys": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/object.assign": {
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz",
+ "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==",
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.4",
+ "has-symbols": "^1.0.3",
+ "object-keys": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/obuf": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz",
+ "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg=="
+ },
+ "node_modules/on-finished": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
+ "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
+ "dependencies": {
+ "ee-first": "1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/on-headers": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
+ "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+ "dependencies": {
+ "wrappy": "1"
+ }
+ },
+ "node_modules/onetime": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
+ "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+ "dependencies": {
+ "mimic-fn": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/open": {
+ "version": "8.4.2",
+ "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz",
+ "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==",
+ "dependencies": {
+ "define-lazy-prop": "^2.0.0",
+ "is-docker": "^2.1.1",
+ "is-wsl": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/opener": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz",
+ "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==",
+ "bin": {
+ "opener": "bin/opener-bin.js"
+ }
+ },
+ "node_modules/p-cancelable": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz",
+ "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==",
+ "engines": {
+ "node": ">=12.20"
+ }
+ },
+ "node_modules/p-limit": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz",
+ "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==",
+ "dependencies": {
+ "yocto-queue": "^1.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-locate": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz",
+ "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==",
+ "dependencies": {
+ "p-limit": "^4.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-map": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz",
+ "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==",
+ "dependencies": {
+ "aggregate-error": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-retry": {
+ "version": "4.6.2",
+ "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz",
+ "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==",
+ "dependencies": {
+ "@types/retry": "0.12.0",
+ "retry": "^0.13.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/p-try": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/package-json": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/package-json/-/package-json-8.1.1.tgz",
+ "integrity": "sha512-cbH9IAIJHNj9uXi196JVsRlt7cHKak6u/e6AkL/bkRelZ7rlL3X1YKxsZwa36xipOEKAsdtmaG6aAJoM1fx2zA==",
+ "dependencies": {
+ "got": "^12.1.0",
+ "registry-auth-token": "^5.0.1",
+ "registry-url": "^6.0.0",
+ "semver": "^7.3.7"
+ },
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/param-case": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz",
+ "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==",
+ "dependencies": {
+ "dot-case": "^3.0.4",
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/parent-module": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+ "dependencies": {
+ "callsites": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/parse-entities": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.1.tgz",
+ "integrity": "sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==",
+ "dependencies": {
+ "@types/unist": "^2.0.0",
+ "character-entities": "^2.0.0",
+ "character-entities-legacy": "^3.0.0",
+ "character-reference-invalid": "^2.0.0",
+ "decode-named-character-reference": "^1.0.0",
+ "is-alphanumerical": "^2.0.0",
+ "is-decimal": "^2.0.0",
+ "is-hexadecimal": "^2.0.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/parse-entities/node_modules/@types/unist": {
+ "version": "2.0.10",
+ "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz",
+ "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA=="
+ },
+ "node_modules/parse-json": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
+ "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
+ "dependencies": {
+ "@babel/code-frame": "^7.0.0",
+ "error-ex": "^1.3.1",
+ "json-parse-even-better-errors": "^2.3.0",
+ "lines-and-columns": "^1.1.6"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/parse-numeric-range": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/parse-numeric-range/-/parse-numeric-range-1.3.0.tgz",
+ "integrity": "sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ=="
+ },
+ "node_modules/parse5": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz",
+ "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==",
+ "dependencies": {
+ "entities": "^4.4.0"
+ },
+ "funding": {
+ "url": "https://github.com/inikulin/parse5?sponsor=1"
+ }
+ },
+ "node_modules/parse5-htmlparser2-tree-adapter": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz",
+ "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==",
+ "dependencies": {
+ "domhandler": "^5.0.2",
+ "parse5": "^7.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/inikulin/parse5?sponsor=1"
+ }
+ },
+ "node_modules/parseurl": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
+ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/pascal-case": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz",
+ "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==",
+ "dependencies": {
+ "no-case": "^3.0.4",
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/path-exists": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz",
+ "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==",
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ }
+ },
+ "node_modules/path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/path-is-inside": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
+ "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w=="
+ },
+ "node_modules/path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-parse": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
+ },
+ "node_modules/path-to-regexp": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz",
+ "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==",
+ "dependencies": {
+ "isarray": "0.0.1"
+ }
+ },
+ "node_modules/path-type": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
+ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/periscopic": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.1.0.tgz",
+ "integrity": "sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==",
+ "dependencies": {
+ "@types/estree": "^1.0.0",
+ "estree-walker": "^3.0.0",
+ "is-reference": "^3.0.0"
+ }
+ },
+ "node_modules/picocolors": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
+ "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
+ },
+ "node_modules/picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/pkg-dir": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz",
+ "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==",
+ "dependencies": {
+ "find-up": "^6.3.0"
+ },
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/pkg-up": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz",
+ "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==",
+ "dependencies": {
+ "find-up": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/pkg-up/node_modules/find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "dependencies": {
+ "locate-path": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/pkg-up/node_modules/locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "dependencies": {
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/pkg-up/node_modules/p-limit": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
+ "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+ "dependencies": {
+ "p-try": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/pkg-up/node_modules/p-locate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "dependencies": {
+ "p-limit": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/pkg-up/node_modules/path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/postcss": {
+ "version": "8.4.31",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz",
+ "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/postcss"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "dependencies": {
+ "nanoid": "^3.3.6",
+ "picocolors": "^1.0.0",
+ "source-map-js": "^1.0.2"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ }
+ },
+ "node_modules/postcss-calc": {
+ "version": "8.2.4",
+ "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz",
+ "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==",
+ "dependencies": {
+ "postcss-selector-parser": "^6.0.9",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.2"
+ }
+ },
+ "node_modules/postcss-colormin": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.1.tgz",
+ "integrity": "sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==",
+ "dependencies": {
+ "browserslist": "^4.21.4",
+ "caniuse-api": "^3.0.0",
+ "colord": "^2.9.1",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-convert-values": {
+ "version": "5.1.3",
+ "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz",
+ "integrity": "sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==",
+ "dependencies": {
+ "browserslist": "^4.21.4",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-discard-comments": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz",
+ "integrity": "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==",
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-discard-duplicates": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz",
+ "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==",
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-discard-empty": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz",
+ "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==",
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-discard-overridden": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz",
+ "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==",
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-discard-unused": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-5.1.0.tgz",
+ "integrity": "sha512-KwLWymI9hbwXmJa0dkrzpRbSJEh0vVUd7r8t0yOGPcfKzyJJxFM8kLyC5Ev9avji6nY95pOp1W6HqIrfT+0VGw==",
+ "dependencies": {
+ "postcss-selector-parser": "^6.0.5"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-loader": {
+ "version": "7.3.3",
+ "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.3.3.tgz",
+ "integrity": "sha512-YgO/yhtevGO/vJePCQmTxiaEwER94LABZN0ZMT4A0vsak9TpO+RvKRs7EmJ8peIlB9xfXCsS7M8LjqncsUZ5HA==",
+ "dependencies": {
+ "cosmiconfig": "^8.2.0",
+ "jiti": "^1.18.2",
+ "semver": "^7.3.8"
+ },
+ "engines": {
+ "node": ">= 14.15.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependencies": {
+ "postcss": "^7.0.0 || ^8.0.1",
+ "webpack": "^5.0.0"
+ }
+ },
+ "node_modules/postcss-loader/node_modules/cosmiconfig": {
+ "version": "8.3.6",
+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz",
+ "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==",
+ "dependencies": {
+ "import-fresh": "^3.3.0",
+ "js-yaml": "^4.1.0",
+ "parse-json": "^5.2.0",
+ "path-type": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/d-fischer"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.9.5"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/postcss-merge-idents": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-5.1.1.tgz",
+ "integrity": "sha512-pCijL1TREiCoog5nQp7wUe+TUonA2tC2sQ54UGeMmryK3UFGIYKqDyjnqd6RcuI4znFn9hWSLNN8xKE/vWcUQw==",
+ "dependencies": {
+ "cssnano-utils": "^3.1.0",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-merge-longhand": {
+ "version": "5.1.7",
+ "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz",
+ "integrity": "sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==",
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0",
+ "stylehacks": "^5.1.1"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-merge-rules": {
+ "version": "5.1.4",
+ "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz",
+ "integrity": "sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==",
+ "dependencies": {
+ "browserslist": "^4.21.4",
+ "caniuse-api": "^3.0.0",
+ "cssnano-utils": "^3.1.0",
+ "postcss-selector-parser": "^6.0.5"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-minify-font-values": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz",
+ "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==",
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-minify-gradients": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz",
+ "integrity": "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==",
+ "dependencies": {
+ "colord": "^2.9.1",
+ "cssnano-utils": "^3.1.0",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-minify-params": {
+ "version": "5.1.4",
+ "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz",
+ "integrity": "sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==",
+ "dependencies": {
+ "browserslist": "^4.21.4",
+ "cssnano-utils": "^3.1.0",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-minify-selectors": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz",
+ "integrity": "sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==",
+ "dependencies": {
+ "postcss-selector-parser": "^6.0.5"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-modules-extract-imports": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz",
+ "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==",
+ "engines": {
+ "node": "^10 || ^12 || >= 14"
+ },
+ "peerDependencies": {
+ "postcss": "^8.1.0"
+ }
+ },
+ "node_modules/postcss-modules-local-by-default": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.3.tgz",
+ "integrity": "sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA==",
+ "dependencies": {
+ "icss-utils": "^5.0.0",
+ "postcss-selector-parser": "^6.0.2",
+ "postcss-value-parser": "^4.1.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >= 14"
+ },
+ "peerDependencies": {
+ "postcss": "^8.1.0"
+ }
+ },
+ "node_modules/postcss-modules-scope": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz",
+ "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==",
+ "dependencies": {
+ "postcss-selector-parser": "^6.0.4"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >= 14"
+ },
+ "peerDependencies": {
+ "postcss": "^8.1.0"
+ }
+ },
+ "node_modules/postcss-modules-values": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz",
+ "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==",
+ "dependencies": {
+ "icss-utils": "^5.0.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >= 14"
+ },
+ "peerDependencies": {
+ "postcss": "^8.1.0"
+ }
+ },
+ "node_modules/postcss-normalize-charset": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz",
+ "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==",
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-normalize-display-values": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz",
+ "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==",
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-normalize-positions": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz",
+ "integrity": "sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==",
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-normalize-repeat-style": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz",
+ "integrity": "sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==",
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-normalize-string": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz",
+ "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==",
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-normalize-timing-functions": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz",
+ "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==",
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-normalize-unicode": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz",
+ "integrity": "sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==",
+ "dependencies": {
+ "browserslist": "^4.21.4",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-normalize-url": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz",
+ "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==",
+ "dependencies": {
+ "normalize-url": "^6.0.1",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-normalize-whitespace": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz",
+ "integrity": "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==",
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-ordered-values": {
+ "version": "5.1.3",
+ "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz",
+ "integrity": "sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==",
+ "dependencies": {
+ "cssnano-utils": "^3.1.0",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-reduce-idents": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-5.2.0.tgz",
+ "integrity": "sha512-BTrLjICoSB6gxbc58D5mdBK8OhXRDqud/zodYfdSi52qvDHdMwk+9kB9xsM8yJThH/sZU5A6QVSmMmaN001gIg==",
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-reduce-initial": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz",
+ "integrity": "sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==",
+ "dependencies": {
+ "browserslist": "^4.21.4",
+ "caniuse-api": "^3.0.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-reduce-transforms": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz",
+ "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==",
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-selector-parser": {
+ "version": "6.0.13",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz",
+ "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==",
+ "dependencies": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/postcss-sort-media-queries": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/postcss-sort-media-queries/-/postcss-sort-media-queries-4.4.1.tgz",
+ "integrity": "sha512-QDESFzDDGKgpiIh4GYXsSy6sek2yAwQx1JASl5AxBtU1Lq2JfKBljIPNdil989NcSKRQX1ToiaKphImtBuhXWw==",
+ "dependencies": {
+ "sort-css-media-queries": "2.1.0"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4.16"
+ }
+ },
+ "node_modules/postcss-svgo": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz",
+ "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==",
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0",
+ "svgo": "^2.7.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-unique-selectors": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz",
+ "integrity": "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==",
+ "dependencies": {
+ "postcss-selector-parser": "^6.0.5"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-value-parser": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
+ "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ=="
+ },
+ "node_modules/postcss-zindex": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-5.1.0.tgz",
+ "integrity": "sha512-fgFMf0OtVSBR1va1JNHYgMxYk73yhn/qb4uQDq1DLGYolz8gHCyr/sesEuGUaYs58E3ZJRcpoGuPVoB7Meiq9A==",
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/pretty-error": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz",
+ "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==",
+ "dependencies": {
+ "lodash": "^4.17.20",
+ "renderkid": "^3.0.0"
+ }
+ },
+ "node_modules/pretty-time": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/pretty-time/-/pretty-time-1.1.0.tgz",
+ "integrity": "sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/prism-react-renderer": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/prism-react-renderer/-/prism-react-renderer-2.3.0.tgz",
+ "integrity": "sha512-UYRg2TkVIaI6tRVHC5OJ4/BxqPUxJkJvq/odLT/ykpt1zGYXooNperUxQcCvi87LyRnR4nCh81ceOA+e7nrydg==",
+ "dependencies": {
+ "@types/prismjs": "^1.26.0",
+ "clsx": "^2.0.0"
+ },
+ "peerDependencies": {
+ "react": ">=16.0.0"
+ }
+ },
+ "node_modules/prism-react-renderer/node_modules/clsx": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz",
+ "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/prismjs": {
+ "version": "1.29.0",
+ "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz",
+ "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/process-nextick-args": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
+ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
+ },
+ "node_modules/promise": {
+ "version": "7.3.1",
+ "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz",
+ "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==",
+ "dependencies": {
+ "asap": "~2.0.3"
+ }
+ },
+ "node_modules/prompts": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz",
+ "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==",
+ "dependencies": {
+ "kleur": "^3.0.3",
+ "sisteransi": "^1.0.5"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/prop-types": {
+ "version": "15.8.1",
+ "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
+ "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==",
+ "dependencies": {
+ "loose-envify": "^1.4.0",
+ "object-assign": "^4.1.1",
+ "react-is": "^16.13.1"
+ }
+ },
+ "node_modules/property-information": {
+ "version": "6.4.0",
+ "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.4.0.tgz",
+ "integrity": "sha512-9t5qARVofg2xQqKtytzt+lZ4d1Qvj8t5B8fEwXK6qOfgRLgH/b13QlgEyDh033NOS31nXeFbYv7CLUDG1CeifQ==",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/proto-list": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz",
+ "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA=="
+ },
+ "node_modules/proxy-addr": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
+ "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
+ "dependencies": {
+ "forwarded": "0.2.0",
+ "ipaddr.js": "1.9.1"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/proxy-addr/node_modules/ipaddr.js": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
+ "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/proxy-from-env": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
+ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
+ },
+ "node_modules/punycode": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
+ "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ=="
+ },
+ "node_modules/pupa": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/pupa/-/pupa-3.1.0.tgz",
+ "integrity": "sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug==",
+ "dependencies": {
+ "escape-goat": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=12.20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/pure-color": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/pure-color/-/pure-color-1.3.0.tgz",
+ "integrity": "sha512-QFADYnsVoBMw1srW7OVKEYjG+MbIa49s54w1MA1EDY6r2r/sTcKKYqRX1f4GYvnXP7eN/Pe9HFcX+hwzmrXRHA=="
+ },
+ "node_modules/qs": {
+ "version": "6.11.0",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
+ "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
+ "dependencies": {
+ "side-channel": "^1.0.4"
+ },
+ "engines": {
+ "node": ">=0.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/queue": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz",
+ "integrity": "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==",
+ "dependencies": {
+ "inherits": "~2.0.3"
+ }
+ },
+ "node_modules/queue-microtask": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/quick-lru": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz",
+ "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/randombytes": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
+ "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
+ "dependencies": {
+ "safe-buffer": "^5.1.0"
+ }
+ },
+ "node_modules/range-parser": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz",
+ "integrity": "sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/raw-body": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz",
+ "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==",
+ "dependencies": {
+ "bytes": "3.1.2",
+ "http-errors": "2.0.0",
+ "iconv-lite": "0.4.24",
+ "unpipe": "1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/raw-body/node_modules/bytes": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
+ "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/rc": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
+ "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
+ "dependencies": {
+ "deep-extend": "^0.6.0",
+ "ini": "~1.3.0",
+ "minimist": "^1.2.0",
+ "strip-json-comments": "~2.0.1"
+ },
+ "bin": {
+ "rc": "cli.js"
+ }
+ },
+ "node_modules/rc/node_modules/strip-json-comments": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
+ "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/react": {
+ "version": "18.2.0",
+ "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz",
+ "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==",
+ "dependencies": {
+ "loose-envify": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/react-base16-styling": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/react-base16-styling/-/react-base16-styling-0.6.0.tgz",
+ "integrity": "sha512-yvh/7CArceR/jNATXOKDlvTnPKPmGZz7zsenQ3jUwLzHkNUR0CvY3yGYJbWJ/nnxsL8Sgmt5cO3/SILVuPO6TQ==",
+ "dependencies": {
+ "base16": "^1.0.0",
+ "lodash.curry": "^4.0.1",
+ "lodash.flow": "^3.3.0",
+ "pure-color": "^1.2.0"
+ }
+ },
+ "node_modules/react-dev-utils": {
+ "version": "12.0.1",
+ "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.1.tgz",
+ "integrity": "sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==",
+ "dependencies": {
+ "@babel/code-frame": "^7.16.0",
+ "address": "^1.1.2",
+ "browserslist": "^4.18.1",
+ "chalk": "^4.1.2",
+ "cross-spawn": "^7.0.3",
+ "detect-port-alt": "^1.1.6",
+ "escape-string-regexp": "^4.0.0",
+ "filesize": "^8.0.6",
+ "find-up": "^5.0.0",
+ "fork-ts-checker-webpack-plugin": "^6.5.0",
+ "global-modules": "^2.0.0",
+ "globby": "^11.0.4",
+ "gzip-size": "^6.0.0",
+ "immer": "^9.0.7",
+ "is-root": "^2.1.0",
+ "loader-utils": "^3.2.0",
+ "open": "^8.4.0",
+ "pkg-up": "^3.1.0",
+ "prompts": "^2.4.2",
+ "react-error-overlay": "^6.0.11",
+ "recursive-readdir": "^2.2.2",
+ "shell-quote": "^1.7.3",
+ "strip-ansi": "^6.0.1",
+ "text-table": "^0.2.0"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/react-dev-utils/node_modules/find-up": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
+ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+ "dependencies": {
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/react-dev-utils/node_modules/loader-utils": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.1.tgz",
+ "integrity": "sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==",
+ "engines": {
+ "node": ">= 12.13.0"
+ }
+ },
+ "node_modules/react-dev-utils/node_modules/locate-path": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+ "dependencies": {
+ "p-locate": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/react-dev-utils/node_modules/p-limit": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+ "dependencies": {
+ "yocto-queue": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/react-dev-utils/node_modules/p-locate": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
+ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+ "dependencies": {
+ "p-limit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/react-dev-utils/node_modules/path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/react-dev-utils/node_modules/yocto-queue": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
+ "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/react-dom": {
+ "version": "18.2.0",
+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz",
+ "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==",
+ "dependencies": {
+ "loose-envify": "^1.1.0",
+ "scheduler": "^0.23.0"
+ },
+ "peerDependencies": {
+ "react": "^18.2.0"
+ }
+ },
+ "node_modules/react-error-overlay": {
+ "version": "6.0.11",
+ "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.11.tgz",
+ "integrity": "sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg=="
+ },
+ "node_modules/react-fast-compare": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz",
+ "integrity": "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ=="
+ },
+ "node_modules/react-helmet-async": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/react-helmet-async/-/react-helmet-async-1.3.0.tgz",
+ "integrity": "sha512-9jZ57/dAn9t3q6hneQS0wukqC2ENOBgMNVEhb/ZG9ZSxUetzVIw4iAmEU38IaVg3QGYauQPhSeUTuIUtFglWpg==",
+ "dependencies": {
+ "@babel/runtime": "^7.12.5",
+ "invariant": "^2.2.4",
+ "prop-types": "^15.7.2",
+ "react-fast-compare": "^3.2.0",
+ "shallowequal": "^1.1.0"
+ },
+ "peerDependencies": {
+ "react": "^16.6.0 || ^17.0.0 || ^18.0.0",
+ "react-dom": "^16.6.0 || ^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/react-is": {
+ "version": "16.13.1",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
+ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
+ },
+ "node_modules/react-lifecycles-compat": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz",
+ "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA=="
+ },
+ "node_modules/react-loadable": {
+ "name": "@docusaurus/react-loadable",
+ "version": "5.5.2",
+ "resolved": "https://registry.npmjs.org/@docusaurus/react-loadable/-/react-loadable-5.5.2.tgz",
+ "integrity": "sha512-A3dYjdBGuy0IGT+wyLIGIKLRE+sAk1iNk0f1HjNDysO7u8lhL4N3VEm+FAubmJbAztn94F7MxBTPmnixbiyFdQ==",
+ "dependencies": {
+ "@types/react": "*",
+ "prop-types": "^15.6.2"
+ },
+ "peerDependencies": {
+ "react": "*"
+ }
+ },
+ "node_modules/react-loadable-ssr-addon-v5-slorber": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/react-loadable-ssr-addon-v5-slorber/-/react-loadable-ssr-addon-v5-slorber-1.0.1.tgz",
+ "integrity": "sha512-lq3Lyw1lGku8zUEJPDxsNm1AfYHBrO9Y1+olAYwpUJ2IGFBskM0DMKok97A6LWUpHm+o7IvQBOWu9MLenp9Z+A==",
+ "dependencies": {
+ "@babel/runtime": "^7.10.3"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ },
+ "peerDependencies": {
+ "react-loadable": "*",
+ "webpack": ">=4.41.1 || 5.x"
+ }
+ },
+ "node_modules/react-router": {
+ "version": "5.3.4",
+ "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.3.4.tgz",
+ "integrity": "sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA==",
+ "dependencies": {
+ "@babel/runtime": "^7.12.13",
+ "history": "^4.9.0",
+ "hoist-non-react-statics": "^3.1.0",
+ "loose-envify": "^1.3.1",
+ "path-to-regexp": "^1.7.0",
+ "prop-types": "^15.6.2",
+ "react-is": "^16.6.0",
+ "tiny-invariant": "^1.0.2",
+ "tiny-warning": "^1.0.0"
+ },
+ "peerDependencies": {
+ "react": ">=15"
+ }
+ },
+ "node_modules/react-router-config": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/react-router-config/-/react-router-config-5.1.1.tgz",
+ "integrity": "sha512-DuanZjaD8mQp1ppHjgnnUnyOlqYXZVjnov/JzFhjLEwd3Z4dYjMSnqrEzzGThH47vpCOqPPwJM2FtthLeJ8Pbg==",
+ "dependencies": {
+ "@babel/runtime": "^7.1.2"
+ },
+ "peerDependencies": {
+ "react": ">=15",
+ "react-router": ">=5"
+ }
+ },
+ "node_modules/react-router-dom": {
+ "version": "5.3.4",
+ "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.3.4.tgz",
+ "integrity": "sha512-m4EqFMHv/Ih4kpcBCONHbkT68KoAeHN4p3lAGoNryfHi0dMy0kCzEZakiKRsvg5wHZ/JLrLW8o8KomWiz/qbYQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.12.13",
+ "history": "^4.9.0",
+ "loose-envify": "^1.3.1",
+ "prop-types": "^15.6.2",
+ "react-router": "5.3.4",
+ "tiny-invariant": "^1.0.2",
+ "tiny-warning": "^1.0.0"
+ },
+ "peerDependencies": {
+ "react": ">=15"
+ }
+ },
+ "node_modules/react-textarea-autosize": {
+ "version": "8.3.4",
+ "resolved": "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.3.4.tgz",
+ "integrity": "sha512-CdtmP8Dc19xL8/R6sWvtknD/eCXkQr30dtvC4VmGInhRsfF8X/ihXCq6+9l9qbxmKRiq407/7z5fxE7cVWQNgQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.10.2",
+ "use-composed-ref": "^1.3.0",
+ "use-latest": "^1.2.1"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/readable-stream": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/readdirp": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
+ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+ "dependencies": {
+ "picomatch": "^2.2.1"
+ },
+ "engines": {
+ "node": ">=8.10.0"
+ }
+ },
+ "node_modules/reading-time": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/reading-time/-/reading-time-1.5.0.tgz",
+ "integrity": "sha512-onYyVhBNr4CmAxFsKS7bz+uTLRakypIe4R+5A824vBSkQy/hB3fZepoVEf8OVAxzLvK+H/jm9TzpI3ETSm64Kg=="
+ },
+ "node_modules/rechoir": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
+ "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==",
+ "dependencies": {
+ "resolve": "^1.1.6"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/recursive-readdir": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz",
+ "integrity": "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==",
+ "dependencies": {
+ "minimatch": "^3.0.5"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/regenerate": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz",
+ "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A=="
+ },
+ "node_modules/regenerate-unicode-properties": {
+ "version": "10.1.1",
+ "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz",
+ "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==",
+ "dependencies": {
+ "regenerate": "^1.4.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/regenerator-runtime": {
+ "version": "0.14.0",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz",
+ "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA=="
+ },
+ "node_modules/regenerator-transform": {
+ "version": "0.15.2",
+ "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz",
+ "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==",
+ "dependencies": {
+ "@babel/runtime": "^7.8.4"
+ }
+ },
+ "node_modules/regexpu-core": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz",
+ "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==",
+ "dependencies": {
+ "@babel/regjsgen": "^0.8.0",
+ "regenerate": "^1.4.2",
+ "regenerate-unicode-properties": "^10.1.0",
+ "regjsparser": "^0.9.1",
+ "unicode-match-property-ecmascript": "^2.0.0",
+ "unicode-match-property-value-ecmascript": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/registry-auth-token": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.0.2.tgz",
+ "integrity": "sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ==",
+ "dependencies": {
+ "@pnpm/npm-conf": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/registry-url": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-6.0.1.tgz",
+ "integrity": "sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==",
+ "dependencies": {
+ "rc": "1.2.8"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/regjsparser": {
+ "version": "0.9.1",
+ "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz",
+ "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==",
+ "dependencies": {
+ "jsesc": "~0.5.0"
+ },
+ "bin": {
+ "regjsparser": "bin/parser"
+ }
+ },
+ "node_modules/regjsparser/node_modules/jsesc": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
+ "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==",
+ "bin": {
+ "jsesc": "bin/jsesc"
+ }
+ },
+ "node_modules/rehype-raw": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/rehype-raw/-/rehype-raw-7.0.0.tgz",
+ "integrity": "sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "hast-util-raw": "^9.0.0",
+ "vfile": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/relateurl": {
+ "version": "0.2.7",
+ "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz",
+ "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==",
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/remark-directive": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/remark-directive/-/remark-directive-3.0.0.tgz",
+ "integrity": "sha512-l1UyWJ6Eg1VPU7Hm/9tt0zKtReJQNOA4+iDMAxTyZNWnJnFlbS/7zhiel/rogTLQ2vMYwDzSJa4BiVNqGlqIMA==",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "mdast-util-directive": "^3.0.0",
+ "micromark-extension-directive": "^3.0.0",
+ "unified": "^11.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/remark-emoji": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/remark-emoji/-/remark-emoji-4.0.1.tgz",
+ "integrity": "sha512-fHdvsTR1dHkWKev9eNyhTo4EFwbUvJ8ka9SgeWkMPYFX4WoI7ViVBms3PjlQYgw5TLvNQso3GUB/b/8t3yo+dg==",
+ "dependencies": {
+ "@types/mdast": "^4.0.2",
+ "emoticon": "^4.0.1",
+ "mdast-util-find-and-replace": "^3.0.1",
+ "node-emoji": "^2.1.0",
+ "unified": "^11.0.4"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ }
+ },
+ "node_modules/remark-frontmatter": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/remark-frontmatter/-/remark-frontmatter-5.0.0.tgz",
+ "integrity": "sha512-XTFYvNASMe5iPN0719nPrdItC9aU0ssC4v14mH1BCi1u0n1gAocqcujWUrByftZTbLhRtiKRyjYTSIOcr69UVQ==",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "mdast-util-frontmatter": "^2.0.0",
+ "micromark-extension-frontmatter": "^2.0.0",
+ "unified": "^11.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/remark-gfm": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.0.tgz",
+ "integrity": "sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "mdast-util-gfm": "^3.0.0",
+ "micromark-extension-gfm": "^3.0.0",
+ "remark-parse": "^11.0.0",
+ "remark-stringify": "^11.0.0",
+ "unified": "^11.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/remark-mdx": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-3.0.0.tgz",
+ "integrity": "sha512-O7yfjuC6ra3NHPbRVxfflafAj3LTwx3b73aBvkEFU5z4PsD6FD4vrqJAkE5iNGLz71GdjXfgRqm3SQ0h0VuE7g==",
+ "dependencies": {
+ "mdast-util-mdx": "^3.0.0",
+ "micromark-extension-mdxjs": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/remark-parse": {
+ "version": "11.0.0",
+ "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz",
+ "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "mdast-util-from-markdown": "^2.0.0",
+ "micromark-util-types": "^2.0.0",
+ "unified": "^11.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/remark-rehype": {
+ "version": "11.0.0",
+ "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.0.0.tgz",
+ "integrity": "sha512-vx8x2MDMcxuE4lBmQ46zYUDfcFMmvg80WYX+UNLeG6ixjdCCLcw1lrgAukwBTuOFsS78eoAedHGn9sNM0w7TPw==",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "@types/mdast": "^4.0.0",
+ "mdast-util-to-hast": "^13.0.0",
+ "unified": "^11.0.0",
+ "vfile": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/remark-stringify": {
+ "version": "11.0.0",
+ "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz",
+ "integrity": "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "mdast-util-to-markdown": "^2.0.0",
+ "unified": "^11.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/renderkid": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz",
+ "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==",
+ "dependencies": {
+ "css-select": "^4.1.3",
+ "dom-converter": "^0.2.0",
+ "htmlparser2": "^6.1.0",
+ "lodash": "^4.17.21",
+ "strip-ansi": "^6.0.1"
+ }
+ },
+ "node_modules/renderkid/node_modules/css-select": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz",
+ "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==",
+ "dependencies": {
+ "boolbase": "^1.0.0",
+ "css-what": "^6.0.1",
+ "domhandler": "^4.3.1",
+ "domutils": "^2.8.0",
+ "nth-check": "^2.0.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
+ }
+ },
+ "node_modules/renderkid/node_modules/dom-serializer": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz",
+ "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==",
+ "dependencies": {
+ "domelementtype": "^2.0.1",
+ "domhandler": "^4.2.0",
+ "entities": "^2.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
+ }
+ },
+ "node_modules/renderkid/node_modules/domhandler": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz",
+ "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==",
+ "dependencies": {
+ "domelementtype": "^2.2.0"
+ },
+ "engines": {
+ "node": ">= 4"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domhandler?sponsor=1"
+ }
+ },
+ "node_modules/renderkid/node_modules/domutils": {
+ "version": "2.8.0",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
+ "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==",
+ "dependencies": {
+ "dom-serializer": "^1.0.1",
+ "domelementtype": "^2.2.0",
+ "domhandler": "^4.2.0"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domutils?sponsor=1"
+ }
+ },
+ "node_modules/renderkid/node_modules/entities": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
+ "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==",
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/renderkid/node_modules/htmlparser2": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz",
+ "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==",
+ "funding": [
+ "https://github.com/fb55/htmlparser2?sponsor=1",
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fb55"
+ }
+ ],
+ "dependencies": {
+ "domelementtype": "^2.0.1",
+ "domhandler": "^4.0.0",
+ "domutils": "^2.5.2",
+ "entities": "^2.0.0"
+ }
+ },
+ "node_modules/require-from-string": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
+ "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/require-like": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/require-like/-/require-like-0.1.2.tgz",
+ "integrity": "sha512-oyrU88skkMtDdauHDuKVrgR+zuItqr6/c//FXzvmxRGMexSDc6hNvJInGW3LL46n+8b50RykrvwSUIIQH2LQ5A==",
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/requires-port": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
+ "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ=="
+ },
+ "node_modules/resolve": {
+ "version": "1.22.8",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
+ "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",
+ "dependencies": {
+ "is-core-module": "^2.13.0",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
+ },
+ "bin": {
+ "resolve": "bin/resolve"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/resolve-alpn": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz",
+ "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g=="
+ },
+ "node_modules/resolve-from": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/resolve-pathname": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz",
+ "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng=="
+ },
+ "node_modules/responselike": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz",
+ "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==",
+ "dependencies": {
+ "lowercase-keys": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/retry": {
+ "version": "0.13.1",
+ "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz",
+ "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==",
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/reusify": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
+ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
+ "engines": {
+ "iojs": ">=1.0.0",
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/rimraf": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+ "dependencies": {
+ "glob": "^7.1.3"
+ },
+ "bin": {
+ "rimraf": "bin.js"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/rtl-detect": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/rtl-detect/-/rtl-detect-1.1.2.tgz",
+ "integrity": "sha512-PGMBq03+TTG/p/cRB7HCLKJ1MgDIi07+QU1faSjiYRfmY5UsAttV9Hs08jDAHVwcOwmVLcSJkpwyfXszVjWfIQ=="
+ },
+ "node_modules/rtlcss": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/rtlcss/-/rtlcss-4.1.1.tgz",
+ "integrity": "sha512-/oVHgBtnPNcggP2aVXQjSy6N1mMAfHg4GSag0QtZBlD5bdDgAHwr4pydqJGd+SUCu9260+Pjqbjwtvu7EMH1KQ==",
+ "dependencies": {
+ "escalade": "^3.1.1",
+ "picocolors": "^1.0.0",
+ "postcss": "^8.4.21",
+ "strip-json-comments": "^3.1.1"
+ },
+ "bin": {
+ "rtlcss": "bin/rtlcss.js"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
+ "node_modules/run-parallel": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "dependencies": {
+ "queue-microtask": "^1.2.2"
+ }
+ },
+ "node_modules/rxjs": {
+ "version": "7.8.1",
+ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz",
+ "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==",
+ "dependencies": {
+ "tslib": "^2.1.0"
+ }
+ },
+ "node_modules/safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
+ },
+ "node_modules/sax": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz",
+ "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA=="
+ },
+ "node_modules/scheduler": {
+ "version": "0.23.0",
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz",
+ "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==",
+ "dependencies": {
+ "loose-envify": "^1.1.0"
+ }
+ },
+ "node_modules/schema-utils": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz",
+ "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==",
+ "dependencies": {
+ "@types/json-schema": "^7.0.9",
+ "ajv": "^8.9.0",
+ "ajv-formats": "^2.1.1",
+ "ajv-keywords": "^5.1.0"
+ },
+ "engines": {
+ "node": ">= 12.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ }
+ },
+ "node_modules/search-insights": {
+ "version": "2.11.0",
+ "resolved": "https://registry.npmjs.org/search-insights/-/search-insights-2.11.0.tgz",
+ "integrity": "sha512-Uin2J8Bpm3xaZi9Y8QibSys6uJOFZ+REMrf42v20AA3FUDUrshKkMEP6liJbMAHCm71wO6ls4mwAf7a3gFVxLw==",
+ "peer": true
+ },
+ "node_modules/section-matter": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz",
+ "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==",
+ "dependencies": {
+ "extend-shallow": "^2.0.1",
+ "kind-of": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/select-hose": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz",
+ "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg=="
+ },
+ "node_modules/selfsigned": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz",
+ "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==",
+ "dependencies": {
+ "@types/node-forge": "^1.3.0",
+ "node-forge": "^1"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/semver": {
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/semver-diff": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-4.0.0.tgz",
+ "integrity": "sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==",
+ "dependencies": {
+ "semver": "^7.3.5"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/semver/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/semver/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
+ },
+ "node_modules/send": {
+ "version": "0.18.0",
+ "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
+ "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
+ "dependencies": {
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "destroy": "1.2.0",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "etag": "~1.8.1",
+ "fresh": "0.5.2",
+ "http-errors": "2.0.0",
+ "mime": "1.6.0",
+ "ms": "2.1.3",
+ "on-finished": "2.4.1",
+ "range-parser": "~1.2.1",
+ "statuses": "2.0.1"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/send/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/send/node_modules/debug/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+ },
+ "node_modules/send/node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
+ },
+ "node_modules/send/node_modules/range-parser": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
+ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/serialize-javascript": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz",
+ "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==",
+ "dependencies": {
+ "randombytes": "^2.1.0"
+ }
+ },
+ "node_modules/serve-handler": {
+ "version": "6.1.5",
+ "resolved": "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.5.tgz",
+ "integrity": "sha512-ijPFle6Hwe8zfmBxJdE+5fta53fdIY0lHISJvuikXB3VYFafRjMRpOffSPvCYsbKyBA7pvy9oYr/BT1O3EArlg==",
+ "dependencies": {
+ "bytes": "3.0.0",
+ "content-disposition": "0.5.2",
+ "fast-url-parser": "1.1.3",
+ "mime-types": "2.1.18",
+ "minimatch": "3.1.2",
+ "path-is-inside": "1.0.2",
+ "path-to-regexp": "2.2.1",
+ "range-parser": "1.2.0"
+ }
+ },
+ "node_modules/serve-handler/node_modules/path-to-regexp": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.2.1.tgz",
+ "integrity": "sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ=="
+ },
+ "node_modules/serve-index": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz",
+ "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==",
+ "dependencies": {
+ "accepts": "~1.3.4",
+ "batch": "0.6.1",
+ "debug": "2.6.9",
+ "escape-html": "~1.0.3",
+ "http-errors": "~1.6.2",
+ "mime-types": "~2.1.17",
+ "parseurl": "~1.3.2"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/serve-index/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/serve-index/node_modules/depd": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
+ "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/serve-index/node_modules/http-errors": {
+ "version": "1.6.3",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
+ "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==",
+ "dependencies": {
+ "depd": "~1.1.2",
+ "inherits": "2.0.3",
+ "setprototypeof": "1.1.0",
+ "statuses": ">= 1.4.0 < 2"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/serve-index/node_modules/inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw=="
+ },
+ "node_modules/serve-index/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+ },
+ "node_modules/serve-index/node_modules/setprototypeof": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
+ "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ=="
+ },
+ "node_modules/serve-index/node_modules/statuses": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
+ "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/serve-static": {
+ "version": "1.15.0",
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
+ "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
+ "dependencies": {
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "parseurl": "~1.3.3",
+ "send": "0.18.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/set-function-length": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz",
+ "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==",
+ "dependencies": {
+ "define-data-property": "^1.1.1",
+ "get-intrinsic": "^1.2.1",
+ "gopd": "^1.0.1",
+ "has-property-descriptors": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/setimmediate": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
+ "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA=="
+ },
+ "node_modules/setprototypeof": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
+ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
+ },
+ "node_modules/shallow-clone": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz",
+ "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==",
+ "dependencies": {
+ "kind-of": "^6.0.2"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/shallowequal": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz",
+ "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ=="
+ },
+ "node_modules/shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "dependencies": {
+ "shebang-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/shell-quote": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz",
+ "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/shelljs": {
+ "version": "0.8.5",
+ "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz",
+ "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==",
+ "dependencies": {
+ "glob": "^7.0.0",
+ "interpret": "^1.0.0",
+ "rechoir": "^0.6.2"
+ },
+ "bin": {
+ "shjs": "bin/shjs"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/side-channel": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
+ "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
+ "dependencies": {
+ "call-bind": "^1.0.0",
+ "get-intrinsic": "^1.0.2",
+ "object-inspect": "^1.9.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/signal-exit": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="
+ },
+ "node_modules/sirv": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.3.tgz",
+ "integrity": "sha512-O9jm9BsID1P+0HOi81VpXPoDxYP374pkOLzACAoyUQ/3OUVndNpsz6wMnY2z+yOxzbllCKZrM+9QrWsv4THnyA==",
+ "dependencies": {
+ "@polka/url": "^1.0.0-next.20",
+ "mrmime": "^1.0.0",
+ "totalist": "^3.0.0"
+ },
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/sisteransi": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz",
+ "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg=="
+ },
+ "node_modules/sitemap": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/sitemap/-/sitemap-7.1.1.tgz",
+ "integrity": "sha512-mK3aFtjz4VdJN0igpIJrinf3EO8U8mxOPsTBzSsy06UtjZQJ3YY3o3Xa7zSc5nMqcMrRwlChHZ18Kxg0caiPBg==",
+ "dependencies": {
+ "@types/node": "^17.0.5",
+ "@types/sax": "^1.2.1",
+ "arg": "^5.0.0",
+ "sax": "^1.2.4"
+ },
+ "bin": {
+ "sitemap": "dist/cli.js"
+ },
+ "engines": {
+ "node": ">=12.0.0",
+ "npm": ">=5.6.0"
+ }
+ },
+ "node_modules/sitemap/node_modules/@types/node": {
+ "version": "17.0.45",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz",
+ "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw=="
+ },
+ "node_modules/skin-tone": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/skin-tone/-/skin-tone-2.0.0.tgz",
+ "integrity": "sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==",
+ "dependencies": {
+ "unicode-emoji-modifier-base": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/slash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/sockjs": {
+ "version": "0.3.24",
+ "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz",
+ "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==",
+ "dependencies": {
+ "faye-websocket": "^0.11.3",
+ "uuid": "^8.3.2",
+ "websocket-driver": "^0.7.4"
+ }
+ },
+ "node_modules/sort-css-media-queries": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/sort-css-media-queries/-/sort-css-media-queries-2.1.0.tgz",
+ "integrity": "sha512-IeWvo8NkNiY2vVYdPa27MCQiR0MN0M80johAYFVxWWXQ44KU84WNxjslwBHmc/7ZL2ccwkM7/e6S5aiKZXm7jA==",
+ "engines": {
+ "node": ">= 6.3.0"
+ }
+ },
+ "node_modules/source-map": {
+ "version": "0.7.4",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz",
+ "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/source-map-js": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
+ "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/source-map-support": {
+ "version": "0.5.21",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
+ "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
+ "dependencies": {
+ "buffer-from": "^1.0.0",
+ "source-map": "^0.6.0"
+ }
+ },
+ "node_modules/source-map-support/node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/space-separated-tokens": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz",
+ "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/spdy": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz",
+ "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==",
+ "dependencies": {
+ "debug": "^4.1.0",
+ "handle-thing": "^2.0.0",
+ "http-deceiver": "^1.2.7",
+ "select-hose": "^2.0.0",
+ "spdy-transport": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/spdy-transport": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz",
+ "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==",
+ "dependencies": {
+ "debug": "^4.1.0",
+ "detect-node": "^2.0.4",
+ "hpack.js": "^2.1.6",
+ "obuf": "^1.1.2",
+ "readable-stream": "^3.0.6",
+ "wbuf": "^1.7.3"
+ }
+ },
+ "node_modules/sprintf-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g=="
+ },
+ "node_modules/srcset": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/srcset/-/srcset-4.0.0.tgz",
+ "integrity": "sha512-wvLeHgcVHKO8Sc/H/5lkGreJQVeYMm9rlmt8PuR1xE31rIuXhuzznUUqAt8MqLhB3MqJdFzlNAfpcWnxiFUcPw==",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/stable": {
+ "version": "0.1.8",
+ "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz",
+ "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==",
+ "deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility"
+ },
+ "node_modules/statuses": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
+ "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/std-env": {
+ "version": "3.5.0",
+ "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.5.0.tgz",
+ "integrity": "sha512-JGUEaALvL0Mf6JCfYnJOTcobY+Nc7sG/TemDRBqCA0wEr4DER7zDchaaixTlmOxAjG1uRJmX82EQcxwTQTkqVA=="
+ },
+ "node_modules/string_decoder": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
+ "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
+ "dependencies": {
+ "safe-buffer": "~5.2.0"
+ }
+ },
+ "node_modules/string-width": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
+ "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
+ "dependencies": {
+ "eastasianwidth": "^0.2.0",
+ "emoji-regex": "^9.2.2",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/string-width/node_modules/ansi-regex": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
+ "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/string-width/node_modules/strip-ansi": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
+ "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
+ "node_modules/stringify-entities": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.3.tgz",
+ "integrity": "sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==",
+ "dependencies": {
+ "character-entities-html4": "^2.0.0",
+ "character-entities-legacy": "^3.0.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/stringify-object": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz",
+ "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==",
+ "dependencies": {
+ "get-own-enumerable-property-symbols": "^3.0.0",
+ "is-obj": "^1.0.1",
+ "is-regexp": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-bom-string": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz",
+ "integrity": "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/strip-final-newline": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
+ "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/strip-json-comments": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/style-to-object": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.4.4.tgz",
+ "integrity": "sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==",
+ "dependencies": {
+ "inline-style-parser": "0.1.1"
+ }
+ },
+ "node_modules/stylehacks": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.1.tgz",
+ "integrity": "sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==",
+ "dependencies": {
+ "browserslist": "^4.21.4",
+ "postcss-selector-parser": "^6.0.4"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/supports-preserve-symlinks-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/svg-parser": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz",
+ "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ=="
+ },
+ "node_modules/svgo": {
+ "version": "2.8.0",
+ "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz",
+ "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==",
+ "dependencies": {
+ "@trysound/sax": "0.2.0",
+ "commander": "^7.2.0",
+ "css-select": "^4.1.3",
+ "css-tree": "^1.1.3",
+ "csso": "^4.2.0",
+ "picocolors": "^1.0.0",
+ "stable": "^0.1.8"
+ },
+ "bin": {
+ "svgo": "bin/svgo"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/svgo/node_modules/commander": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
+ "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/svgo/node_modules/css-select": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz",
+ "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==",
+ "dependencies": {
+ "boolbase": "^1.0.0",
+ "css-what": "^6.0.1",
+ "domhandler": "^4.3.1",
+ "domutils": "^2.8.0",
+ "nth-check": "^2.0.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
+ }
+ },
+ "node_modules/svgo/node_modules/dom-serializer": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz",
+ "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==",
+ "dependencies": {
+ "domelementtype": "^2.0.1",
+ "domhandler": "^4.2.0",
+ "entities": "^2.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
+ }
+ },
+ "node_modules/svgo/node_modules/domhandler": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz",
+ "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==",
+ "dependencies": {
+ "domelementtype": "^2.2.0"
+ },
+ "engines": {
+ "node": ">= 4"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domhandler?sponsor=1"
+ }
+ },
+ "node_modules/svgo/node_modules/domutils": {
+ "version": "2.8.0",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
+ "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==",
+ "dependencies": {
+ "dom-serializer": "^1.0.1",
+ "domelementtype": "^2.2.0",
+ "domhandler": "^4.2.0"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domutils?sponsor=1"
+ }
+ },
+ "node_modules/svgo/node_modules/entities": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
+ "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==",
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/tapable": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
+ "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/terser": {
+ "version": "5.24.0",
+ "resolved": "https://registry.npmjs.org/terser/-/terser-5.24.0.tgz",
+ "integrity": "sha512-ZpGR4Hy3+wBEzVEnHvstMvqpD/nABNelQn/z2r0fjVWGQsN3bpOLzQlqDxmb4CDZnXq5lpjnQ+mHQLAOpfM5iw==",
+ "dependencies": {
+ "@jridgewell/source-map": "^0.3.3",
+ "acorn": "^8.8.2",
+ "commander": "^2.20.0",
+ "source-map-support": "~0.5.20"
+ },
+ "bin": {
+ "terser": "bin/terser"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/terser-webpack-plugin": {
+ "version": "5.3.9",
+ "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz",
+ "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==",
+ "dependencies": {
+ "@jridgewell/trace-mapping": "^0.3.17",
+ "jest-worker": "^27.4.5",
+ "schema-utils": "^3.1.1",
+ "serialize-javascript": "^6.0.1",
+ "terser": "^5.16.8"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependencies": {
+ "webpack": "^5.1.0"
+ },
+ "peerDependenciesMeta": {
+ "@swc/core": {
+ "optional": true
+ },
+ "esbuild": {
+ "optional": true
+ },
+ "uglify-js": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/terser-webpack-plugin/node_modules/ajv": {
+ "version": "6.12.6",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/terser-webpack-plugin/node_modules/ajv-keywords": {
+ "version": "3.5.2",
+ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
+ "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
+ "peerDependencies": {
+ "ajv": "^6.9.1"
+ }
+ },
+ "node_modules/terser-webpack-plugin/node_modules/jest-worker": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz",
+ "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==",
+ "dependencies": {
+ "@types/node": "*",
+ "merge-stream": "^2.0.0",
+ "supports-color": "^8.0.0"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ }
+ },
+ "node_modules/terser-webpack-plugin/node_modules/json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
+ },
+ "node_modules/terser-webpack-plugin/node_modules/schema-utils": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz",
+ "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==",
+ "dependencies": {
+ "@types/json-schema": "^7.0.8",
+ "ajv": "^6.12.5",
+ "ajv-keywords": "^3.5.2"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ }
+ },
+ "node_modules/terser-webpack-plugin/node_modules/supports-color": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
+ "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/supports-color?sponsor=1"
+ }
+ },
+ "node_modules/terser/node_modules/commander": {
+ "version": "2.20.3",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
+ },
+ "node_modules/text-table": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
+ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw=="
+ },
+ "node_modules/thunky": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz",
+ "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA=="
+ },
+ "node_modules/tiny-invariant": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.1.tgz",
+ "integrity": "sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw=="
+ },
+ "node_modules/tiny-warning": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz",
+ "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA=="
+ },
+ "node_modules/to-fast-properties": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
+ "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "dependencies": {
+ "is-number": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/toidentifier": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
+ "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
+ "engines": {
+ "node": ">=0.6"
+ }
+ },
+ "node_modules/totalist": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz",
+ "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/tr46": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
+ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
+ },
+ "node_modules/trim-lines": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz",
+ "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/trough": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/trough/-/trough-2.1.0.tgz",
+ "integrity": "sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/type-fest": {
+ "version": "2.19.0",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz",
+ "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==",
+ "engines": {
+ "node": ">=12.20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/type-is": {
+ "version": "1.6.18",
+ "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
+ "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
+ "dependencies": {
+ "media-typer": "0.3.0",
+ "mime-types": "~2.1.24"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/type-is/node_modules/mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/type-is/node_modules/mime-types": {
+ "version": "2.1.35",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "dependencies": {
+ "mime-db": "1.52.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/typedarray-to-buffer": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz",
+ "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==",
+ "dependencies": {
+ "is-typedarray": "^1.0.0"
+ }
+ },
+ "node_modules/typescript": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.2.tgz",
+ "integrity": "sha512-6l+RyNy7oAHDfxC4FzSJcz9vnjTKxrLpDG5M2Vu4SHRVNg6xzqZp6LYSR9zjqQTu8DU/f5xwxUdADOkbrIX2gQ==",
+ "peer": true,
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=14.17"
+ }
+ },
+ "node_modules/ua-parser-js": {
+ "version": "1.0.37",
+ "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.37.tgz",
+ "integrity": "sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/ua-parser-js"
+ },
+ {
+ "type": "paypal",
+ "url": "https://paypal.me/faisalman"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/faisalman"
+ }
+ ],
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/undici-types": {
+ "version": "5.26.5",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
+ "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA=="
+ },
+ "node_modules/unicode-canonical-property-names-ecmascript": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz",
+ "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/unicode-emoji-modifier-base": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unicode-emoji-modifier-base/-/unicode-emoji-modifier-base-1.0.0.tgz",
+ "integrity": "sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/unicode-match-property-ecmascript": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz",
+ "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==",
+ "dependencies": {
+ "unicode-canonical-property-names-ecmascript": "^2.0.0",
+ "unicode-property-aliases-ecmascript": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/unicode-match-property-value-ecmascript": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz",
+ "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/unicode-property-aliases-ecmascript": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz",
+ "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/unified": {
+ "version": "11.0.4",
+ "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz",
+ "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "bail": "^2.0.0",
+ "devlop": "^1.0.0",
+ "extend": "^3.0.0",
+ "is-plain-obj": "^4.0.0",
+ "trough": "^2.0.0",
+ "vfile": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unique-string": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz",
+ "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==",
+ "dependencies": {
+ "crypto-random-string": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/unist-util-is": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz",
+ "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==",
+ "dependencies": {
+ "@types/unist": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-position": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz",
+ "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==",
+ "dependencies": {
+ "@types/unist": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-position-from-estree": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-position-from-estree/-/unist-util-position-from-estree-2.0.0.tgz",
+ "integrity": "sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==",
+ "dependencies": {
+ "@types/unist": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-remove-position": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-5.0.0.tgz",
+ "integrity": "sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "unist-util-visit": "^5.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-stringify-position": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz",
+ "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==",
+ "dependencies": {
+ "@types/unist": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-visit": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz",
+ "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "unist-util-is": "^6.0.0",
+ "unist-util-visit-parents": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-visit-parents": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz",
+ "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "unist-util-is": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/universalify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/unpipe": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
+ "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/update-browserslist-db": {
+ "version": "1.0.13",
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz",
+ "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "dependencies": {
+ "escalade": "^3.1.1",
+ "picocolors": "^1.0.0"
+ },
+ "bin": {
+ "update-browserslist-db": "cli.js"
+ },
+ "peerDependencies": {
+ "browserslist": ">= 4.21.0"
+ }
+ },
+ "node_modules/update-notifier": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-6.0.2.tgz",
+ "integrity": "sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og==",
+ "dependencies": {
+ "boxen": "^7.0.0",
+ "chalk": "^5.0.1",
+ "configstore": "^6.0.0",
+ "has-yarn": "^3.0.0",
+ "import-lazy": "^4.0.0",
+ "is-ci": "^3.0.1",
+ "is-installed-globally": "^0.4.0",
+ "is-npm": "^6.0.0",
+ "is-yarn-global": "^0.4.0",
+ "latest-version": "^7.0.0",
+ "pupa": "^3.1.0",
+ "semver": "^7.3.7",
+ "semver-diff": "^4.0.0",
+ "xdg-basedir": "^5.1.0"
+ },
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/yeoman/update-notifier?sponsor=1"
+ }
+ },
+ "node_modules/update-notifier/node_modules/boxen": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/boxen/-/boxen-7.1.1.tgz",
+ "integrity": "sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==",
+ "dependencies": {
+ "ansi-align": "^3.0.1",
+ "camelcase": "^7.0.1",
+ "chalk": "^5.2.0",
+ "cli-boxes": "^3.0.0",
+ "string-width": "^5.1.2",
+ "type-fest": "^2.13.0",
+ "widest-line": "^4.0.1",
+ "wrap-ansi": "^8.1.0"
+ },
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/update-notifier/node_modules/camelcase": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.1.tgz",
+ "integrity": "sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==",
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/update-notifier/node_modules/chalk": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz",
+ "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==",
+ "engines": {
+ "node": "^12.17.0 || ^14.13 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/uri-js": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
+ "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+ "dependencies": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "node_modules/uri-js/node_modules/punycode": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
+ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/url-loader": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-4.1.1.tgz",
+ "integrity": "sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==",
+ "dependencies": {
+ "loader-utils": "^2.0.0",
+ "mime-types": "^2.1.27",
+ "schema-utils": "^3.0.0"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependencies": {
+ "file-loader": "*",
+ "webpack": "^4.0.0 || ^5.0.0"
+ },
+ "peerDependenciesMeta": {
+ "file-loader": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/url-loader/node_modules/ajv": {
+ "version": "6.12.6",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/url-loader/node_modules/ajv-keywords": {
+ "version": "3.5.2",
+ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
+ "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
+ "peerDependencies": {
+ "ajv": "^6.9.1"
+ }
+ },
+ "node_modules/url-loader/node_modules/json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
+ },
+ "node_modules/url-loader/node_modules/mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/url-loader/node_modules/mime-types": {
+ "version": "2.1.35",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "dependencies": {
+ "mime-db": "1.52.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/url-loader/node_modules/schema-utils": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz",
+ "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==",
+ "dependencies": {
+ "@types/json-schema": "^7.0.8",
+ "ajv": "^6.12.5",
+ "ajv-keywords": "^3.5.2"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ }
+ },
+ "node_modules/use-composed-ref": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/use-composed-ref/-/use-composed-ref-1.3.0.tgz",
+ "integrity": "sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ==",
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/use-isomorphic-layout-effect": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz",
+ "integrity": "sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==",
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/use-latest": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/use-latest/-/use-latest-1.2.1.tgz",
+ "integrity": "sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw==",
+ "dependencies": {
+ "use-isomorphic-layout-effect": "^1.1.1"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
+ },
+ "node_modules/utila": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz",
+ "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA=="
+ },
+ "node_modules/utility-types": {
+ "version": "3.10.0",
+ "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.10.0.tgz",
+ "integrity": "sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg==",
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/utils-merge": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
+ "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
+ "engines": {
+ "node": ">= 0.4.0"
+ }
+ },
+ "node_modules/uuid": {
+ "version": "8.3.2",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
+ "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
+ "bin": {
+ "uuid": "dist/bin/uuid"
+ }
+ },
+ "node_modules/value-equal": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz",
+ "integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw=="
+ },
+ "node_modules/vary": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
+ "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/vfile": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz",
+ "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "unist-util-stringify-position": "^4.0.0",
+ "vfile-message": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/vfile-location": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.2.tgz",
+ "integrity": "sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg==",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "vfile": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/vfile-message": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz",
+ "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "unist-util-stringify-position": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/wait-on": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-7.2.0.tgz",
+ "integrity": "sha512-wCQcHkRazgjG5XoAq9jbTMLpNIjoSlZslrJ2+N9MxDsGEv1HnFoVjOCexL0ESva7Y9cu350j+DWADdk54s4AFQ==",
+ "dependencies": {
+ "axios": "^1.6.1",
+ "joi": "^17.11.0",
+ "lodash": "^4.17.21",
+ "minimist": "^1.2.8",
+ "rxjs": "^7.8.1"
+ },
+ "bin": {
+ "wait-on": "bin/wait-on"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
+ "node_modules/watchpack": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz",
+ "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==",
+ "dependencies": {
+ "glob-to-regexp": "^0.4.1",
+ "graceful-fs": "^4.1.2"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/wbuf": {
+ "version": "1.7.3",
+ "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz",
+ "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==",
+ "dependencies": {
+ "minimalistic-assert": "^1.0.0"
+ }
+ },
+ "node_modules/web-namespaces": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz",
+ "integrity": "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/webidl-conversions": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
+ "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
+ },
+ "node_modules/webpack": {
+ "version": "5.89.0",
+ "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.89.0.tgz",
+ "integrity": "sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==",
+ "dependencies": {
+ "@types/eslint-scope": "^3.7.3",
+ "@types/estree": "^1.0.0",
+ "@webassemblyjs/ast": "^1.11.5",
+ "@webassemblyjs/wasm-edit": "^1.11.5",
+ "@webassemblyjs/wasm-parser": "^1.11.5",
+ "acorn": "^8.7.1",
+ "acorn-import-assertions": "^1.9.0",
+ "browserslist": "^4.14.5",
+ "chrome-trace-event": "^1.0.2",
+ "enhanced-resolve": "^5.15.0",
+ "es-module-lexer": "^1.2.1",
+ "eslint-scope": "5.1.1",
+ "events": "^3.2.0",
+ "glob-to-regexp": "^0.4.1",
+ "graceful-fs": "^4.2.9",
+ "json-parse-even-better-errors": "^2.3.1",
+ "loader-runner": "^4.2.0",
+ "mime-types": "^2.1.27",
+ "neo-async": "^2.6.2",
+ "schema-utils": "^3.2.0",
+ "tapable": "^2.1.1",
+ "terser-webpack-plugin": "^5.3.7",
+ "watchpack": "^2.4.0",
+ "webpack-sources": "^3.2.3"
+ },
+ "bin": {
+ "webpack": "bin/webpack.js"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependenciesMeta": {
+ "webpack-cli": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/webpack-bundle-analyzer": {
+ "version": "4.10.1",
+ "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.10.1.tgz",
+ "integrity": "sha512-s3P7pgexgT/HTUSYgxJyn28A+99mmLq4HsJepMPzu0R8ImJc52QNqaFYW1Z2z2uIb1/J3eYgaAWVpaC+v/1aAQ==",
+ "dependencies": {
+ "@discoveryjs/json-ext": "0.5.7",
+ "acorn": "^8.0.4",
+ "acorn-walk": "^8.0.0",
+ "commander": "^7.2.0",
+ "debounce": "^1.2.1",
+ "escape-string-regexp": "^4.0.0",
+ "gzip-size": "^6.0.0",
+ "html-escaper": "^2.0.2",
+ "is-plain-object": "^5.0.0",
+ "opener": "^1.5.2",
+ "picocolors": "^1.0.0",
+ "sirv": "^2.0.3",
+ "ws": "^7.3.1"
+ },
+ "bin": {
+ "webpack-bundle-analyzer": "lib/bin/analyzer.js"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ }
+ },
+ "node_modules/webpack-bundle-analyzer/node_modules/commander": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
+ "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/webpack-dev-middleware": {
+ "version": "5.3.3",
+ "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz",
+ "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==",
+ "dependencies": {
+ "colorette": "^2.0.10",
+ "memfs": "^3.4.3",
+ "mime-types": "^2.1.31",
+ "range-parser": "^1.2.1",
+ "schema-utils": "^4.0.0"
+ },
+ "engines": {
+ "node": ">= 12.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependencies": {
+ "webpack": "^4.0.0 || ^5.0.0"
+ }
+ },
+ "node_modules/webpack-dev-middleware/node_modules/mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/webpack-dev-middleware/node_modules/mime-types": {
+ "version": "2.1.35",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "dependencies": {
+ "mime-db": "1.52.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/webpack-dev-middleware/node_modules/range-parser": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
+ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/webpack-dev-server": {
+ "version": "4.15.1",
+ "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.1.tgz",
+ "integrity": "sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA==",
+ "dependencies": {
+ "@types/bonjour": "^3.5.9",
+ "@types/connect-history-api-fallback": "^1.3.5",
+ "@types/express": "^4.17.13",
+ "@types/serve-index": "^1.9.1",
+ "@types/serve-static": "^1.13.10",
+ "@types/sockjs": "^0.3.33",
+ "@types/ws": "^8.5.5",
+ "ansi-html-community": "^0.0.8",
+ "bonjour-service": "^1.0.11",
+ "chokidar": "^3.5.3",
+ "colorette": "^2.0.10",
+ "compression": "^1.7.4",
+ "connect-history-api-fallback": "^2.0.0",
+ "default-gateway": "^6.0.3",
+ "express": "^4.17.3",
+ "graceful-fs": "^4.2.6",
+ "html-entities": "^2.3.2",
+ "http-proxy-middleware": "^2.0.3",
+ "ipaddr.js": "^2.0.1",
+ "launch-editor": "^2.6.0",
+ "open": "^8.0.9",
+ "p-retry": "^4.5.0",
+ "rimraf": "^3.0.2",
+ "schema-utils": "^4.0.0",
+ "selfsigned": "^2.1.1",
+ "serve-index": "^1.9.1",
+ "sockjs": "^0.3.24",
+ "spdy": "^4.0.2",
+ "webpack-dev-middleware": "^5.3.1",
+ "ws": "^8.13.0"
+ },
+ "bin": {
+ "webpack-dev-server": "bin/webpack-dev-server.js"
+ },
+ "engines": {
+ "node": ">= 12.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependencies": {
+ "webpack": "^4.37.0 || ^5.0.0"
+ },
+ "peerDependenciesMeta": {
+ "webpack": {
+ "optional": true
+ },
+ "webpack-cli": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/webpack-dev-server/node_modules/ws": {
+ "version": "8.14.2",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.2.tgz",
+ "integrity": "sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==",
+ "engines": {
+ "node": ">=10.0.0"
+ },
+ "peerDependencies": {
+ "bufferutil": "^4.0.1",
+ "utf-8-validate": ">=5.0.2"
+ },
+ "peerDependenciesMeta": {
+ "bufferutil": {
+ "optional": true
+ },
+ "utf-8-validate": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/webpack-merge": {
+ "version": "5.10.0",
+ "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz",
+ "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==",
+ "dependencies": {
+ "clone-deep": "^4.0.1",
+ "flat": "^5.0.2",
+ "wildcard": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/webpack-sources": {
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz",
+ "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==",
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/webpack/node_modules/ajv": {
+ "version": "6.12.6",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/webpack/node_modules/ajv-keywords": {
+ "version": "3.5.2",
+ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
+ "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
+ "peerDependencies": {
+ "ajv": "^6.9.1"
+ }
+ },
+ "node_modules/webpack/node_modules/json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
+ },
+ "node_modules/webpack/node_modules/mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/webpack/node_modules/mime-types": {
+ "version": "2.1.35",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "dependencies": {
+ "mime-db": "1.52.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/webpack/node_modules/schema-utils": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz",
+ "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==",
+ "dependencies": {
+ "@types/json-schema": "^7.0.8",
+ "ajv": "^6.12.5",
+ "ajv-keywords": "^3.5.2"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ }
+ },
+ "node_modules/webpackbar": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/webpackbar/-/webpackbar-5.0.2.tgz",
+ "integrity": "sha512-BmFJo7veBDgQzfWXl/wwYXr/VFus0614qZ8i9znqcl9fnEdiVkdbi0TedLQ6xAK92HZHDJ0QmyQ0fmuZPAgCYQ==",
+ "dependencies": {
+ "chalk": "^4.1.0",
+ "consola": "^2.15.3",
+ "pretty-time": "^1.1.0",
+ "std-env": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "peerDependencies": {
+ "webpack": "3 || 4 || 5"
+ }
+ },
+ "node_modules/websocket-driver": {
+ "version": "0.7.4",
+ "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz",
+ "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==",
+ "dependencies": {
+ "http-parser-js": ">=0.5.1",
+ "safe-buffer": ">=5.1.0",
+ "websocket-extensions": ">=0.1.1"
+ },
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/websocket-extensions": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz",
+ "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==",
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/whatwg-url": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
+ "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
+ "dependencies": {
+ "tr46": "~0.0.3",
+ "webidl-conversions": "^3.0.0"
+ }
+ },
+ "node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/widest-line": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz",
+ "integrity": "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==",
+ "dependencies": {
+ "string-width": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/wildcard": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz",
+ "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ=="
+ },
+ "node_modules/wrap-ansi": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
+ "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
+ "dependencies": {
+ "ansi-styles": "^6.1.0",
+ "string-width": "^5.0.1",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi/node_modules/ansi-regex": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
+ "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi/node_modules/ansi-styles": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
+ "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi/node_modules/strip-ansi": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
+ "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
+ "node_modules/wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
+ },
+ "node_modules/write-file-atomic": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz",
+ "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==",
+ "dependencies": {
+ "imurmurhash": "^0.1.4",
+ "is-typedarray": "^1.0.0",
+ "signal-exit": "^3.0.2",
+ "typedarray-to-buffer": "^3.1.5"
+ }
+ },
+ "node_modules/ws": {
+ "version": "7.5.9",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz",
+ "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==",
+ "engines": {
+ "node": ">=8.3.0"
+ },
+ "peerDependencies": {
+ "bufferutil": "^4.0.1",
+ "utf-8-validate": "^5.0.2"
+ },
+ "peerDependenciesMeta": {
+ "bufferutil": {
+ "optional": true
+ },
+ "utf-8-validate": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/xdg-basedir": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-5.1.0.tgz",
+ "integrity": "sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/xml-js": {
+ "version": "1.6.11",
+ "resolved": "https://registry.npmjs.org/xml-js/-/xml-js-1.6.11.tgz",
+ "integrity": "sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==",
+ "dependencies": {
+ "sax": "^1.2.4"
+ },
+ "bin": {
+ "xml-js": "bin/cli.js"
+ }
+ },
+ "node_modules/yallist": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
+ },
+ "node_modules/yaml": {
+ "version": "1.10.2",
+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
+ "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==",
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/yocto-queue": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz",
+ "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==",
+ "engines": {
+ "node": ">=12.20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/zwitch": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz",
+ "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ }
+ }
+}
diff --git a/api-docs/package.json b/api-docs/package.json
new file mode 100644
index 000000000..84e54759f
--- /dev/null
+++ b/api-docs/package.json
@@ -0,0 +1,51 @@
+{
+ "name": "api-docs",
+ "version": "0.0.0",
+ "private": true,
+ "scripts": {
+ "docusaurus": "docusaurus",
+ "start": "docusaurus start",
+ "build": "docusaurus build",
+ "swizzle": "docusaurus swizzle",
+ "deploy": "docusaurus deploy",
+ "clear": "docusaurus clear",
+ "serve": "docusaurus serve",
+ "write-translations": "docusaurus write-translations",
+ "write-heading-ids": "docusaurus write-heading-ids"
+ },
+ "dependencies": {
+ "@docusaurus/core": "3.0.0",
+ "@docusaurus/preset-classic": "3.0.0",
+ "@mdx-js/react": "^3.0.0",
+ "clsx": "^1.2.1",
+ "prism-react-renderer": "^2.1.0",
+ "react": "^18.0.0",
+ "react-dom": "^18.0.0"
+ },
+ "devDependencies": {
+ "@docusaurus/module-type-aliases": "3.0.0",
+ "@docusaurus/types": "3.0.0"
+ },
+ "browserslist": {
+ "production": [
+ ">0.5%",
+ "not dead",
+ "not op_mini all"
+ ],
+ "development": [
+ "last 3 chrome version",
+ "last 3 firefox version",
+ "last 5 safari version"
+ ]
+ },
+ "engines": {
+ "node": ">=18.0"
+ },
+ "description": "This website is built using [Docusaurus 2](https://docusaurus.io/), a modern static website generator.",
+ "main": "babel.config.js",
+ "directories": {
+ "doc": "docs"
+ },
+ "author": "",
+ "license": "ISC"
+}
diff --git a/api-docs/sidebars.js b/api-docs/sidebars.js
new file mode 100644
index 000000000..c1ca6072d
--- /dev/null
+++ b/api-docs/sidebars.js
@@ -0,0 +1,8 @@
+// @ts-check
+
+/** @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} */
+const sidebars = {
+ tutorialSidebar: [{ type: 'autogenerated', dirName: '.' }],
+};
+
+export default sidebars;
diff --git a/api-docs/src/css/custom.css b/api-docs/src/css/custom.css
new file mode 100644
index 000000000..2bc6a4cfd
--- /dev/null
+++ b/api-docs/src/css/custom.css
@@ -0,0 +1,30 @@
+/**
+ * Any CSS included here will be global. The classic template
+ * bundles Infima by default. Infima is a CSS framework designed to
+ * work well for content-centric websites.
+ */
+
+/* You can override the default Infima variables here. */
+:root {
+ --ifm-color-primary: #2e8555;
+ --ifm-color-primary-dark: #29784c;
+ --ifm-color-primary-darker: #277148;
+ --ifm-color-primary-darkest: #205d3b;
+ --ifm-color-primary-light: #33925d;
+ --ifm-color-primary-lighter: #359962;
+ --ifm-color-primary-lightest: #3cad6e;
+ --ifm-code-font-size: 95%;
+ --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.1);
+}
+
+/* For readability concerns, you should choose a lighter palette in dark mode. */
+[data-theme='dark'] {
+ --ifm-color-primary: #25c2a0;
+ --ifm-color-primary-dark: #21af90;
+ --ifm-color-primary-darker: #1fa588;
+ --ifm-color-primary-darkest: #1a8870;
+ --ifm-color-primary-light: #29d5b0;
+ --ifm-color-primary-lighter: #32d8b4;
+ --ifm-color-primary-lightest: #4fddbf;
+ --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.3);
+}
diff --git a/api-docs/src/pages/index.md b/api-docs/src/pages/index.md
new file mode 100644
index 000000000..ed88adf59
--- /dev/null
+++ b/api-docs/src/pages/index.md
@@ -0,0 +1,17 @@
+---
+sidebar_position: 1
+---
+
+# JavaScript Trackers
+The Snowplow JavaScript Trackers support being used in a number of environments. There are three versions of the tracker.
+
+## Web tracking
+We have two flavours of web tracker: JavaScript and Browser.
+
+- JavaScript Tracker (v2 and v3) for loading via tags, by adding code snippets to your website or Tag Manager solution.
+- Browser Tracker (v3) for installation into web apps via npm. Popular when natively integrating tracking into React, Angular and Vue applications.
+
+## Server-side tracking
+Track events in server-side Node.js environments using the Node.js Tracker (v3). Used via npm.
+
+
diff --git a/api-docs/src/pages/index.module.css b/api-docs/src/pages/index.module.css
new file mode 100644
index 000000000..9f71a5da7
--- /dev/null
+++ b/api-docs/src/pages/index.module.css
@@ -0,0 +1,23 @@
+/**
+ * CSS files with the .module.css suffix will be treated as CSS modules
+ * and scoped locally.
+ */
+
+.heroBanner {
+ padding: 4rem 0;
+ text-align: center;
+ position: relative;
+ overflow: hidden;
+}
+
+@media screen and (max-width: 996px) {
+ .heroBanner {
+ padding: 2rem;
+ }
+}
+
+.buttons {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
diff --git a/api-docs/static/.nojekyll b/api-docs/static/.nojekyll
new file mode 100644
index 000000000..e69de29bb
diff --git a/api-docs/static/img/favicon.ico b/api-docs/static/img/favicon.ico
new file mode 100644
index 0000000000000000000000000000000000000000..a0e01c17cca0dbc1606cd1282242ef669ca7ad63
GIT binary patch
literal 16465
zcmbtc^;et0(hd$SgyIgxp=j~o?ruejYoNHhH^trEp~YIPxD|JYP#l6g6o)VOp6@@n
z?=Q(Yo88%+cV}j2=XnyTt}2K1hV%^p0Kig^m(~OT5aC}D0qDr^4`UZ{7XUz-C#JW@f;iJw2!RJuaO>((hoOaaQYo%&5@TR$@ZDsG?AuclGwB{lP<|>K_YD
zRhbkg(9sbUCo)F^y2RAQLde!cZ6FK3gFO
zG%8@3($4IK%#A5EfDNeNc-}!A=K3@wFr13xYQwpX8a#ILB(uYJz_PqR#HH)HSw(v1U1kg=AHY)gmWu8*l?(RBKtrP`
z`w}hj4bRxX;gVTyso<#3WsDv-u13p#m(2nLz!*
zt8`R8YO2_-4p`!~m<^{+n!!0VNDin4x6kWFdE8X|%+kKdQVxKrrRVsh_><513WdM4
z;;=g#5X22{IcT{{(|npSsH024b;An)_u&rs1x$Gmhkd&Nsa_K-(L43G}!~n>}TjwRB^YbU)m
zht=W5au12+6}0Ffg0RO85u@d=YNV|C$?eSEp6shxr$DrO1d~Q-QtBvovwfUOS6{5>
z$&JfERdVx~SBYyp*@o3}_f}9vJ*6zqpNG3$O~93c4(O-CHcQE~#dDM8S-lat`XAy(DCP6$#6d{F{nvZdgsmMj$>p
z6&aEmV}+oY$+>EF_Z_MJDjV?Q>9Za$G3R`yYe>>=VJ@}}l4`$`*nVxl>|DUsC&sN0XCR5t+cXm7#Te|ul?ZGTCGyxwaysuMjvI
z)G_8Ht)4hR)*|h;k#S~ytkm{=^Bv@`9~1k!|HH%
z$DJ-M?}W$Cm5T|mlL>m1TjypGqCn)kbx(`4PYhI1jr*Fe+!}wp`+F??7akw+wb0Lz
z#?6{0F3YJC+w)=Gsnd#GEsERxGoOF(sQI}h_C2moG!RJt5)Mds_>{tDe8Bff40=+l
zqg;p_SP1gBHr7H{5lvMTD^4}mI)TIz-mr&?HjKiGV((R`dG2jTVk@lMXTaZWYzM_Y
zeT=YM5_j{SZvXmzB){Byz_xT!Iks*#$v8?tyM4XLhl)mxhk2QW{lyzh#%R+(r@Rdgmn8jS?
z+}`&uzqHC|K`tts9*4vr5SB`nSITaoVHH;TS^HhPmbJ14DB8l`m
zefcxK&X^g~NmjOc-xGtxh|C3E2h=i!_T#Wy!*+gYhNP09SFF`9wK#X1tSdKJmK)f{
z_S!%tj5E!1l%B~dFd6^I#r=
=RWp9j!crkF@GJ6)QdpPEd
zaPsd}LpdZq6tKoyixK&t#dGyGM%PYR9sg=ynC+1n=1g@GB{co#iGl8L{-7e-CyPIS
z7948au)SWGftcR}jnez7^rD*O$5Bim`r@jmu=T3qR-@al+_vef&D({M=ug60JX({&
zZEUtpB`)+r5XJn2)xrZ=gYi<&zLpahD-k^))kR2)DP8p_`%AQK(4=s7VPppKS?izn
zUl#-=dOpqKYYFt3Jx(qZX_6Ab
zUs%IRCF~uN63-vt3@+ZW6syl)|M`_cxZrmyU?6t(V#yL|{A|7X!w|X(1G9%x(nhBg;r*(WMcGbeg7q|Pdwo*g{0zB$U54@E=$E27B=^X&eEie+
zb3DqpkeG0)#+vuAs9p(2nX&p8R%7fZns1QVxS%BSH~jGB3S}%x+meWKYe4#x)ZJ
zoSty^7|hBd(Jk06F1&8(=QSXo!M%%+ZUv^!YryM=@U)
zGVc_{`lw`8&&M_`6wCfFO+kZx|Bn8BdQgS!-je({HG;Xxo&Y%V2|OsK@iC$t{3b0>
zkdp97-tbtbI8{ux^SEEHA3uu*;#uA{Zf|bh_>-_DOITX8skPDk&Drc~5Xnf!;-5cu
z)hEY_ztGi6DPHOO@#DOfUfO!w8D!JQWLHkKiyJvag-qB~C8oaDzxM{W38rx7*@vaE=NM4TxQMwfGTrlV(HlXn}VkDm7+r4({91lQ(egfC&=TEajC@yuyRc
z*BN}i!d4#@5w~rmbXId;VXjy7nr_YzMged;u}_6xC^^+`keVwyDZ9diAn;aSg?z
z8tLQfKTNRyzVkhzVk&b^>if4&599sV46}u%L5QnrzpRqUaE5tiDx?{*|NHkvB4{EY
z^Ppm)gd(WI{LQETSW+Vp79x{he&S=zVDTYT-}9Kj>SvB;x>vQEkJ&8TcpLVsFoACe
zbl^S#E;fKCBG>jy?kL`mH8sPV@5(aTq+R+8esjILDwiD*NN^t(K2$NB@mV3qP9CM%qwDeJ}0a6GwFXsk)o$5N#$3UXESjxH=b>5_)Ng
zV)mEN(zCUqZ?8Y~Y4FG&=HWpzV~m9P^>23B2z+@pvZWXidPF5w<2a*C(YKYIj(hcL
z#Edd$S21f}GgEKOf6Z+=uTbuF6^PxXfO|y`xK{+{4r{S=DXrX{kA+;aMbe?E%yU(U
zJK-%C;^d!0=J8!}!(
z7kKM38?HZhkgdJOZ<9hV9$Ct|)5YPAVj)tv`QKneW9@WY5vy(jQ(AGA!5fGm>#LCy
z#gLnQvsc}}sEQ6zA#>7Zbg~ISjR~n5@%KT`dwH)cY(dxwJP|$DsaLxgN0ND?rV#rd
zBW$jQDY4P+UL=pBYDKiUI$TJ~IAD1(n~*WZ*94-&^-pMBR&$T9%09CPXoe+b=RXz@
zHb4iC9N{tPY?t-^v}$O{Tm_FdqnO~GyW&C#>{KK`)-e9hEL(=4p<7q`f_6=IUxssx
zW+ekuZXO`uY*Ybu!{FyHzsmL;_PKGjt7r^_It2B+Hr<}%?dB{7@Y;ztYf%Vod1yNUC
zcHPQF5ezT5$9L^4A^}7VvsT*VIVQz_Ns@)~p-pQtFx>bWy;ljPFt7%Qz(wJ|x3UZt
z%td8bZa!2{qvr;sq~B{UxBo2x45xbbNXwkP#$B4t@awbPgx!!@0|KhxT@E2p6T&n~
zs9&A4M`q-DFac;oYUT&5DsR%SLKjmo0js+$>W&RMq$o=M`3QgQSJ%Un9yLD8+;Y&H
zQCM;?-}=5_1QX883$KJH`4(;OU)^YOH~4wTysZ^OI8V&6&2x|(K?M_6oj*OBsK695
zY#s)YDLQfyHUy4d7=W6pPaKFVYP~84E;Mmh?x?}y4D$9@c6eyZ^wnWt%C1-Jq=Q1n
zx0!4qmJ07Bs$N&nIFa%g
zwfo3Q%Ir6d&IRB{Wrtz@m#2C9YbVr4n$;##ljKeE~~eY-J)13PVWfl_mdY!
zq4vc#&~e6>+YU|6ngS1zWwPAQiXH#f_7)uuh+ukDrtU==?Nv>WL_L^Uy>ym^0)b_<
zRJ$VC2PI|Pi6@b&uf^53Z!ZPNqSFu7y`qGoSd|Njcn`l*0RDT_VxbA00CovL-2@qD
zvW$-+L{Ikl1)MeVyegD9veY8)i$Lt98p0J#kLjgdZXsT9#e8CSL!HFvkg{tXfyk)&
zOBg!RTt>F{hh2-X$8tyE>M5UHf3Nn9f3&rDv8pBua`TS=3zk!%c5WKVIaGTpl4LDaBD24a|0?2pydnLa*lU3KX`}6k;N{5;t(yW
z=9#s^>NDfMoBLg`QQX#Clmjxk8$@_PCqR`;WL!uCLD74~qamx5H`jK%ldf}#GsUdUH3Edy&e~Y&7XF`caT)O`!
z{YQYBjRqiM(YCmnSs0zv>L;s~=y!F@D|r>hKf9RWQZ%*5aqY#3y0e*diltPjRPC2e
zjjONf5DYVp!#I)s$CFDs73r7OJlP{CE#V29LcX`c`H;|y%6ga6L)Yfg7rwXZ$|rzx
zHix=xcX;2M3E9MSZ
z+$KNuZQ4UNoX$1@iy>{Ek07BkJmHJ>-z6V}PrnlyvVJMxeOhFuxaL>&3KTl_k%?gz
zJsKrJhkP=|wKqmT4@29d{|Fy4273D%3v@aJs(Lv}W7l?%=V?``c72*9MUIwrXF%F$
zEy??nu0cZbT3UMxSKWv^4Vr2A)hbodSqJ<0dgyTS@kt*Edb>=stMRXTu680fn!7CH
za>p7^fcKc0L`BWjD$5L+WcO@dGOGlm?6as*ezHKXS(BIQjGDb_ZH#{^kl1F1>E%b$
zBfon_3AX$`h6n|&D$i98Y`LL^sJt>_eVUD&XyoceN$hN_LgT!=rMaLC{=!Yl3?nZw
zTwz+O0XrgUo~kVZ6bPIGlkh7YZzi=Wh4S=l3YRw?pJj@F%Q@VNjr36aGCZZI0@XnM
zZbkm)bAgG?)x2ayMp<4KNe`&JSYgG?sR?3N$*J&?sM;g;bCpiTK4^L6z=974_QyrwxI^?W
zmOg&J+V$|%;dHk*gO;TBThpn*O<}zmhzGgqI8wZ~YMPkcm4~H+>+qDb(!ScBmt0;X
zqO66l)MT8R@~K}v&pS-2HSufSY{z@YJ*D$Et3~~lL(|euVyDvEbA7}zeFE@s
za?Ueu`WA@38_8}zb>`jGJ|g(k%k*YUfWSdXAsjKTBtQQUIt~1(?)2m2MTLTJ_Y`Ax|5MgS3E7(>fkCzP?;wo)t7E`=EL;8aPuvQ+6bGQ&AMF3@9Tg0YR
zwQK!2|JDR}pcuSualR?Sp2|5foHBHcNKAgV@vac|MT!hkxlfR%RiiT4jimw>iZW#w
z_jgwo6`EAg!P{!4#_6zVEeXREvHu~(9A(9H1Uh)R)~MHI{?ebyb73SPP%1prbsuMM
zOYBt{@apB|{rXCKU4Et}6mm=ySQC@*m>Xs$9L;vB%gzb%wf_ad-gA!&l>u;{;0U+%Y0B4$Y
z9o_uBU5@#zlF!6*Aaqk|O!xr*1P7dI4B32ruA}tfc^=}2n{YBYd6D6Wp%$d({n2w8
z>xdbs@*ra>FEc`cXMK{E@e*~lskrYRX34#NeEm#r(1{skD*LeAb8Cx}|G}>Q3`F9h
zKX+yh!5aGf#O6wgbpS;+OWAhO^9YnYd3;rb+y>F1xu~OdO|$t9yFK{l{#iEr(+zTH
z1ggDFWZeH}lyF@9c?4fq3;H}dldQh6I%MDh&RN%_J{nn6c=AG5YvVob(FNW!C9w@3
zCA_)tY&?5?v_%z~rt7_>dCh%Dz2!5F@2in0rOVeQI0Dy%%?yOaqo1UXS&Uc^+-H~s
zm^e(NORznBHu#fjKtX7uzob&PcdyNegaSI9W=jiWzq*njz3Q{6}M
zw3gUhgU~cv-PZ4>q+MWBOeM`#Qr1G();BSyJEwSz!!g6Dic`9k5MiT%e}C`~oUhbs
zH%SD(;4oN>!w}tchQxn&o1NIkZ>^4`EAv1Pc>WA`RDC_v?8>u#F7&ItHX_Zke9sd~
zoCI%k&w+QMgwji2BHE^Ao?%qe*~%v=p07n2c&`@xz_b3GIapPs_+rphD}#FUH1(#D
zGM8~N#dFAER&Fmf;X{z!`s?Du#yjAdjA_*^pP5=|l{Ctr5K*6S*0$l#%?q*Cadr$P
zoGHJt6%94;?H*CCWEE=m)~)#;v`?A^_IQGr|ELFrURS80+XYMK6>=O%YOWc@TQsBt
zwD6IiE}=jkc{f9`f)&BRTf12Am_S~TUO)JEyv~piW#LKyj^F5(o^-icMODKi)xJ8`
z>1IQ76Z5k%CcPeCb*t_Gsiqd>1Bh7uYUQ0rgIuBTQfp%Lklwq$Da?MOD4gD@)(P(C
zV5XCR-r9c*rAHoSRAZ79kj+lDWADF`&Cd)l&(yj!RXz<(@U7Qy%Pb2aTaBb4miL(3
z(Rmwpa!c{D_cHae(y{+qVICLv-7Ix_H$8mT>ob_JQhv%~4u{UQL76IKk6kI#Z%}2`
z>AauUKA$Co`DC2RkLYQS?BLt>W}NJT*ouVkNn6L{?SreK
z-nj%I=d28gmijFN9|ag;d?Q=0@yQ($a)dlt?arB7_Ag}08m~L@=WdS^3Q`EYoal{@$m;kt97J{BcqF&VZ#x}S0^DM?Yfx=v5=Cs@x;oq`OEh3ea7z@0yLJ=or7
zIvsDlE8%DbvHe=)X@R=djf-=__G8
zd7h2qi6Kk%4C(|Zj6)M#Gq)9$B15aw+;OF&|yhly~;{^KJ}cquoB`FrxF@XI?vUAwl=
zW{92B~Gya?Ib3|L~WTbrsP0&VFtpa*umIz+;f$NBit)GT{)^L8llo
z!Sj|?iX{HJRr*TWi^FIIuC4eP=7u+7B2*@n92yU?L^zgO2;nW$^Bu7VM0kMDo6D|K
z$YR)hj3pyp?68G3}XQ7lT#t-&6@G
zjnV@5cDUrY68a~)E1T(e$N|MWdg}~gx4KNz;RlUJ^%aqlIuT#j=-Voe4&_;1Q?aaP
z--cweDeY48wsLlOQt$(K7Htkp%UMg<$CBiOfo{NVYg
zw&Nl9K*`8KgIksOve5N5vGTHr#=*c1satsKSD*G*#2^(DQ1`8X4-SrxCd`0}L){VR
z+E@`f<4WwZ{KWcUq_)Ji3gyXUS;AOf&QbSb+AaC!0@3ozc_NL&iv)^{%0v?L+zI=F
z&6#OS%+5O2l1a$G*%0HxtyZ
zC4+}c8s?PEt!c!$PoU7Z(D-0e5NN|DZ7$KC0L-26H0Gz}sfN#K@>_D6BJAVg0z%ZV
za;2JayEf@PB~xhAWe5IG%C7jT)UQ2u1e5_q&TS-bLmw_5s-_9yO5UI`^SAE$uH?RcxOEWeg+cqndG>+a)nItpMlkYe(?DBO0H8fUO1diT
zO`;f9560?39pwh9S<6;!@bWPEthjlVZ5|)%)2M!n#odOA2knE0hQQ
zwODF$8ntY9sJ#id!gEh}54)@13s!{Hqy!aq-<>CfWs`45s(KvsF1HB$wLhXDHE`&*
z5Se|VGpG-3_SVQYmd|(-u{Q#*hTEoSZOEvzi5Bo)3cGQ3VmJUYwvxSQ-)bGGE%x??
zJBwjewvB+gQ-O}Isb~-9D{Z6xMz1eMvlHlAHP`Z2rwzKd+-KeMJL81KCA|m*=w;Ia
zp9VTc3lIZ~8$pZqZ3O*lg+Rcl#suEDk~v1@tlfx-3k8;fS=xIX^1TfP?7`3JHnu9l
zleioBL;b_=)p*XN?AMk?lA#Rs<}bJU(ap+lU^}q4b^EyDdf*I8X@zlKoTmDXE3MyLzg
z`p7q0iJO8jS04sNnzikHOSdPh?Q_aDcNn3w2JJ_IS78U+v?dkgfM1-`X8O$5Al#|>
z&0M_+H>CjOqlfejUVqsa*y7zn{~w}jcD*XMgpJ7(pnA>pOJ)@_}JP{vq32i`-~MVR6*<@fiAuPyXG4
z_I~A)Ma4Zq11z#!NDd^}zV#_Z6NG&2m0>!tC57I<&yO@U>UNYeP}@+$v2)?~l5t(Q
zX4lD8$xC@%g0oua3Sd&PnL&aT>0ui9qphw*b_V_4R5e%>F7IIqiP$;oieB_A2ut;2
zxGgBUjypir)&e2Bdt@M$h~xod_qYGHo%2t!^{H)!_+7Q21%;j$5rd6m7yON9FpSCH
zJU3Lwi2$kAy~el?jVS@#xNHX0ejM)uT$mPV0%b}RFVUL1@(sr`Q_EA9M%)!vBea+
z))TBd#=PJoU~~u!GVR+%uqKr~HCyeJGJ)Xe<@~#TcBa>2|DVHo+hsgD;*-4nqsO;}
zah2Cz=GlaNN4h=oP(lP1x)zq0iA>aOp*-jhn2C?`>Y(W*^Em#iUv>Z21~q
z1Ly4x6rggy;3&;UFquW>`x@7^k;YrbO}tyscxxDx6M
z^45O{U*=kG&bXwWS}+qj@0aiT)>W{=JLJcrU8ZCz)GsK2Ptd}ql9gWQw{e+rE&h}&
zJ7;o09xP^+9_^Xf7$x?up0m?t1?)go*l2W=R*Jwe8(r~OD&zLTeU|^wDZaJoKmRj?
zPg44kxXQH!PR^sb
zuBlfhX%>Xp69s@S@@GuBNI9Du;a;V`+2{}IvyA6HvTB0Q<-~G62;Gco6r$N7T!H)SDa44
zMChRG!;gp)yZQlkNd6pDL`1q+Xh)ZI^|4}F+xr_2m4a~Y&ksgMK;rx?OU>Uin_oh2
zt^R5NS!@IHRWJ2#_Nx@tVga}IcOjWTg15#R;@P$8IEt&&zMwpD6A0&@%wHSXx%bDP{7XVfC~
z^diT{;#w#%LLkml{KMpRn*3Hl-p0adVc1Q}bO_%Vnj%`TB9QTdAp$2F!s;(4cHxK;
zUe6i3aJ!w5znTDSP#k^{f`>$>eDBY^>SS#8G{=Fh}0jtKeB>
z71i$OzyF#6og1%KqXp)A+q6(7yM)e_eO%dvWos{Z
zgQ~t#Rfq0I09mnPOJo+OPe2TndksZD)BuC
z;VW=@HAhaqa)L4=K?74R@ebS8O=brencr|ikPfspyCK&`lkQ8HKdM5vV;cs9l3rnD
zh8~KC@uu6-40YtiTgCI)+Xt3j#F6b_D
z_nF@&`eRG2tt;M4vPo~D;59Zoo4elqKCTm<_4Mq*iJA3CEJ2t7Q2$tL{FeP}`qo<)
zgFn4>6g@`J>YuQeth~g#q`!dsKZIk@rcJwn+w8aSPO5xmy
zAJ~C88`F!~u(;c7!aEeZjQqrbM@tV`ahj#I`zfIKR%6Xf=mL>`%vaD~ppP*LZhMhnbS&%bgJBL4?rX^hTyooxA=-7R>TQ|7X-*FR390!^JooQBNVj1svWrT
zumybFyK4BTrYVGc-rvT5tUrMZnQ{tet0)gAq>^f3zTbi$pqfwvgzdcxZ?}}jM9$(t
z0m8H7d|{sM{A=6quz!6_eKB&PulgJnG(fYC@GzC%Lh+_Oe&I7Ia5tyzM=nykIQQMC
z9lB#-5HGKX&Vjj*#S_~M>F@jIjCgO7Pg9=nTW7P@&(akFM(xwqB5BU&&$=q*y571K
zgD|Lm@D>vj2=)88XJ4s&s};;IlX?>&3SU@2_oxqzDgorR`0EU@!QMgQVmFpW>R$Sj
zu?z6UB{#^L?JG)&>%pW$UTY*xKGYmXQSg}JDXUd_35WY|pHqIoZkYJwKqs%$=cV&Q
zz%SE~^uje@a><}{WkG$IpIErnb>kk>W^x2`!$kg{nwu{#ohnOW@g`z0KB4Q$-|RQz
zq!kp1qH=ead8C5rf~+Y`kw!<@-PXTuIF7GYP)XE3;SEl~0#r@_QzK@P(E<5$8ogyH
zQk}(SKj$`7eea+whXl3LSybEgk?W=N#|56~-h4X<8>qaNj^!S42kgK5-u>I9?Apc_
z?K*0X%$_~#;+O{l=EYHl9RZ(YoXoxZ8i$02u4u&iszVdXhFENux;$`rx-81oFW
z89;$`7jo=DlwWt_&xPF7AUQc~Er5eT*N0zZFtH8R6R8AZIUT4jAaR2UMmTDp$=ei$)w(iSWlA4%L_g5GN
zC*V#R-y(eC^6SlpfKSzzw@ya=4iPB*mQ8gSW^$-Deuxci!bFEylR#NnZtA!^r#8XyOx)ZLZx8N$z+80N`Wa0g{!A+?~D4@rm+BWBk2ob$~ik18wNq7(Osi^
zg{#LE8!T2x!RTvA++*b`w)z}cp*qF^pJG$$C0nLfdNMT{LGWZHQaPChw#ZQO7Z>yV
zM^6O@x75_$vyf|onBd7A;vgy;1W>DIa^G=8N)k-;uy_++tQ#j>0<71YVeS|*Cgc{ATMCPxP
zINZkjqrMOQlF5#i8K1qw(pI9wxoU%QUXznFg}o<#^_~&hBpY}tI+VBu+h#x+x(f6P
z!fDaKjovz=@VHg$!xWcBHW}T7?J@X_Sc8e5U~RbG(tnkF{PD-q*
z>t0t)q#uS!#e8K9P=if#a@SI)J<1f{-y4=GSUg;kg9*pR3lPMS<45OrN{LWuHD^Mr
z#L&`;Fo2vgrQVc5*j0>-*6&*AycH4!8HXRQ`_+&aOTaZre8M_bohha4&-$cjLhYoF
z%LqHjpoNF$vtPRGz_r2OQy?M_FQbX%
z%aSca0FczfaL+Z_C2=Nwf60)EXyjkf@L#1FDc^P>QvwILPgP&!+p>;dXpm;+pXqaF
zbyAXiG{aim8|SbWSaNR{l0ceC?RWL>uSulPsU&?~$&U05cXfOO?~HSeMo0ZCm5m;<
zdC;3IHvsQLDKAYfXF@`t=hT0xpZB9_NAQV;AyYtonrN#?wR|t&19nOC4g1@?Tqh44AIh9NrCjO^tNnaTr_*iy
z@^TI;M9W9bo79yz4WVXy1+5-+8HV*JMtF~IVe^zNbXD
zpR5vRsOR%Gffli%){ucbT4fGECq=
zJSj55LCKlWBlUjoXR+UF4M!{!^uhJ;6KR^^$2h|F%%=R^ekjss1wmqKtPdYx=b#hu
zYz;W@-+JK(9JF;qxPs~ENJf;@#g4Z}a=sWW-y#swP8{x2hcEkF6w%OEuadxl&y`JwmoQc->YT
z3rAZEv7$h=x!85>r3PICzcgT)OTbwX>>>cx2m-^#^mLk-KHJ5!l8jzvpj)sX9DHl~
zGuhS;i`$?nK~n(ou|di~hTjl*fi_taX
zWXmw;hYXU7BE|7^DHNBoeq*yN;Memc$I&iBlQbGOXyCz=opUHWl{@N3CLW!~xv^hQ^AJh(ohB
z`g#SFrETzFkPa`z3k+P*Sbt)0eQdWrIM$5tT8Ip;lgXQQY}8YY@b#{u1oy{
z9p8Kd0g0qH-_U}3gi-zCRO_A#shTf};ecgSG)h$XGwIIN_hhOQ8ZR)`<
zn2KTiIC>@cfu)e0%K;Xbsm1BI^-sKzL>>r*?U%r0SHHg!E8Bv_shIobdg4UmRb?4c
zA`cln=OOnhQPmn)Wb%fr;vctD$&asW2ZLr7qyp2E$DB0nqF<-d1SW0i-wJhO(;es9
zR%A%&KgqVOvRY>Em5kwH{Y-A?!zO$oLp?7B4^mZT_0hv$rZF7*Uf-A9KoG}gu=#$E
zb_@GId<#5VpuNWO69c`jKuS|jn=A|KzJF*{t&STUZ38?{xmQvAa?U#}hBh9f>%9b-
ziVG^U1Jc?8LAH*8c!EKl{zvbM2^j94e`X?!8D1e0+gZFl3Dpgz`SP%wp_1;ny6zqE
z_SF%3QL8y#nBQm9O#76EWV1~^!yq9#Ks*rkD`W-t(rs#C9xQ@L*c
zQE{Odiz7H2_Znjdq}bQi?skLA;|xk;SX;I&oxt4QSE*z84r-Tg+h%Xz>r%+_!V|=`
z%9&OyrM^=qo@eILNX|<@G|5<}8-Jw8`iCRS(pcs_`T-XCZG#U|+U+*(lw=-2r}Dt|
zA8rRv*`#?ud6pDLYcOfuJNhxVB-3Y#0LuBKpVFpr<#0BQ952KTZuiaE>vUuHpM`>O
zIKq~`j#1HdmKeDuN0c!PE%D`B*ro`92fJi>A$;x^_@)_fno3M)S
zRM+B-%!YfbwyZsYpVbOfop}!W#Kn9Q2ZWe#n4@`yT(VwOi@)NVC1B}ro?}B1|Kulk
z&Z@(|0zfJ1sr9F?Fldgk`SXZvX`eV`%JH?+6_;uje$(0H15~&{$~vT$Wf5WU&E=c^
z_#H&9Or?YHViPF!QRFMbL+i9+dLpSg8n}eYqc(V30WulfH}3Xkmt;e(mC!@eBA6j5O!eGYUj>I{A*7~q4i>UQu3_L5Y%#xC+Dx&a?>gf5mxtIie
zeIB#zA9g<3SH7oWW^_q~XL^cPIUW14h4m~A+;F-Wg^9o;@-7R_tSv5!`kL?_$FXY3
za4e^R3%9Yz7sgnA4E^s4GO|Idc0q*dLyC@(@3>{uDFq$Yz_EPWv-2)poNES>
zaN@M+RaAAlE!Uo&VAhXnS6n!Bz5{QZYrzCMqfuf}?R9TDwa_3TrXkk2s)&tX0dEj3
zG$F2rH<-
z+TTq@6s)MD4C5~+yNzs{gET>rNOhUki61L#$VVzYey;88EuJAibSz4MqJ`iFCu9@u
z+jisQ(-?w7xF+pKdI1%WL@iP0G2|Ls?hG8t{*pPez;^V;Oke!
z#b&lqeEafQcJXL`mq7`~RA!rY(D{fI=M56+88&1iUMA`UfhC=DZN%nOGVwIyOD2J!(x;tg+&%l&Lol8T^p_cI}d+Ji!+Wj>q
z6X9Dy%vg#6Y?&dPHLa|tY)qZkqO8A%;oyVNc(clz)Z7_ft=2Bf884Uf($C;E2hEDl
zB>tJ85$m~LJx*=Z?4WFXrm(O=l6gk1(bl0P4c92276sAEyd26M>!ea1MHvd@m4)s=lrjg7h*W<;_?
z#x=jTPaQ8$a^;7IvrP92%o|mn=N4F{J{%o&{pJ%iFzPkKn~`5RV&m-Z&uJ2uAVfdt
zD~_rZ_m^4D((!h3pQJngDmc(JgaUs={J(T@2CqOezzZ>Q*6^xpnadE9kJ1AwH)a?X
zAP5stWtXN!-Hr_7<}$jSrY|%TwHGzG11&^6E{WZ>YL1`qgH@;hhrZoWz*l%fC~D})
zj4D*gzLFueBuP7^XyA|1GPAu^Y*iuwm%_m4ooOufPlWf02!-J;m#&h{ = Record> = {
@@ -58,7 +58,7 @@ export type SelfDescribingJson = Record = Record> = {
@@ -127,7 +127,7 @@ export interface CommonEventProperties> {
}
/**
- * export interface containing all Core functions
+ * Export interface containing all Core functions
*/
export interface TrackerCore {
/**
@@ -819,7 +819,7 @@ export function buildScreenView(event: ScreenViewEvent): PayloadBuilder {
/**
* A Link Click Event
- * Used when a user clicks on a link on a webpage, typically an anchor tag
+ * Used when a user clicks on a link on a webpage, typically an anchor tag ``
*/
export interface LinkClickEvent {
/** The target URL of the link */
@@ -836,7 +836,7 @@ export interface LinkClickEvent {
/**
* Build a Link Click Event
- * Used when a user clicks on a link on a webpage, typically an anchor tag
+ * Used when a user clicks on a link on a webpage, typically an anchor tag ``
*
* @param event - Contains the properties for the Link Click event
* @returns PayloadBuilder to be sent to {@link @snowplow/tracker-core#TrackerCore.track}
diff --git a/trackers/browser-tracker/api-extractor.json b/trackers/browser-tracker/api-extractor.json
index 9d9a69053..6d99f5d5c 100644
--- a/trackers/browser-tracker/api-extractor.json
+++ b/trackers/browser-tracker/api-extractor.json
@@ -135,7 +135,7 @@
* SUPPORTED TOKENS: , ,
* DEFAULT VALUE: "/etc/"
*/
- "reportFolder": "/docs/"
+ "reportFolder": "../../api-docs/docs/browser-tracker/"
/**
* Specifies the folder where the temporary report file is written. The file name portion is determined by
diff --git a/trackers/node-tracker/api-extractor.json b/trackers/node-tracker/api-extractor.json
index d8abf13ef..d44afd2c0 100644
--- a/trackers/node-tracker/api-extractor.json
+++ b/trackers/node-tracker/api-extractor.json
@@ -135,7 +135,7 @@
* SUPPORTED TOKENS: , ,
* DEFAULT VALUE: "/etc/"
*/
- "reportFolder": "/docs/"
+ "reportFolder": "../../api-docs/docs/node-tracker/"
/**
* Specifies the folder where the temporary report file is written. The file name portion is determined by
From c9e7f24e30a915bd950ce9fa5929365d62addc87 Mon Sep 17 00:00:00 2001
From: Greg Leonard <45019882+greg-el@users.noreply.github.com>
Date: Thu, 16 Nov 2023 16:09:47 +0000
Subject: [PATCH 034/341] Add OTB Button Click Tracking (close #1267)
---
...utton-click-tracking_2023-11-22-13-22.json | 10 +
...utton-click-tracking_2023-11-22-13-22.json | 10 +
.../rush/browser-approved-packages.json | 12 +-
common/config/rush/pnpm-lock.yaml | 119 +++++++----
common/config/rush/repo-state.json | 2 +-
libraries/tracker-core/src/core.ts | 2 +-
.../LICENSE | 29 +++
.../README.md | 63 ++++++
.../jest.config.js | 5 +
.../package.json | 55 ++++++
.../rollup.config.js | 37 ++++
.../src/api.ts | 108 ++++++++++
.../src/core.ts | 19 ++
.../src/index.ts | 1 +
.../src/types.ts | 47 +++++
.../src/util.ts | 60 ++++++
.../test/test.test.ts | 185 ++++++++++++++++++
.../tsconfig.json | 3 +
rush.json | 6 +
trackers/javascript-tracker/package.json | 3 +-
trackers/javascript-tracker/src/features.ts | 6 +
.../test/integration/buttonClick.test.ts | 149 ++++++++++++++
.../test/pages/button-click-tracking.html | 100 ++++++++++
trackers/javascript-tracker/tracker.config.ts | 1 +
.../javascript-tracker/tracker.lite.config.ts | 1 +
.../javascript-tracker/tracker.test.config.ts | 1 +
26 files changed, 989 insertions(+), 45 deletions(-)
create mode 100644 common/changes/@snowplow/browser-plugin-button-click-tracking/issue-1267-otb-button-click-tracking_2023-11-22-13-22.json
create mode 100644 common/changes/@snowplow/tracker-core/issue-1267-otb-button-click-tracking_2023-11-22-13-22.json
create mode 100644 plugins/browser-plugin-button-click-tracking/LICENSE
create mode 100644 plugins/browser-plugin-button-click-tracking/README.md
create mode 100644 plugins/browser-plugin-button-click-tracking/jest.config.js
create mode 100644 plugins/browser-plugin-button-click-tracking/package.json
create mode 100644 plugins/browser-plugin-button-click-tracking/rollup.config.js
create mode 100644 plugins/browser-plugin-button-click-tracking/src/api.ts
create mode 100644 plugins/browser-plugin-button-click-tracking/src/core.ts
create mode 100644 plugins/browser-plugin-button-click-tracking/src/index.ts
create mode 100644 plugins/browser-plugin-button-click-tracking/src/types.ts
create mode 100644 plugins/browser-plugin-button-click-tracking/src/util.ts
create mode 100644 plugins/browser-plugin-button-click-tracking/test/test.test.ts
create mode 100644 plugins/browser-plugin-button-click-tracking/tsconfig.json
create mode 100644 trackers/javascript-tracker/test/integration/buttonClick.test.ts
create mode 100644 trackers/javascript-tracker/test/pages/button-click-tracking.html
diff --git a/common/changes/@snowplow/browser-plugin-button-click-tracking/issue-1267-otb-button-click-tracking_2023-11-22-13-22.json b/common/changes/@snowplow/browser-plugin-button-click-tracking/issue-1267-otb-button-click-tracking_2023-11-22-13-22.json
new file mode 100644
index 000000000..4a7e3b702
--- /dev/null
+++ b/common/changes/@snowplow/browser-plugin-button-click-tracking/issue-1267-otb-button-click-tracking_2023-11-22-13-22.json
@@ -0,0 +1,10 @@
+{
+ "changes": [
+ {
+ "packageName": "@snowplow/browser-plugin-button-click-tracking",
+ "comment": "Add Button Click tracking plugin (close #1267)",
+ "type": "none"
+ }
+ ],
+ "packageName": "@snowplow/browser-plugin-button-click-tracking"
+}
\ No newline at end of file
diff --git a/common/changes/@snowplow/tracker-core/issue-1267-otb-button-click-tracking_2023-11-22-13-22.json b/common/changes/@snowplow/tracker-core/issue-1267-otb-button-click-tracking_2023-11-22-13-22.json
new file mode 100644
index 000000000..6cd8b579d
--- /dev/null
+++ b/common/changes/@snowplow/tracker-core/issue-1267-otb-button-click-tracking_2023-11-22-13-22.json
@@ -0,0 +1,10 @@
+{
+ "changes": [
+ {
+ "packageName": "@snowplow/tracker-core",
+ "comment": "Export 'removeEmptyProperties'",
+ "type": "none"
+ }
+ ],
+ "packageName": "@snowplow/tracker-core"
+}
\ No newline at end of file
diff --git a/common/config/rush/browser-approved-packages.json b/common/config/rush/browser-approved-packages.json
index c931363cf..376c8af07 100644
--- a/common/config/rush/browser-approved-packages.json
+++ b/common/config/rush/browser-approved-packages.json
@@ -34,6 +34,10 @@
"name": "@snowplow/browser-plugin-browser-features",
"allowedCategories": [ "trackers" ]
},
+ {
+ "name": "@snowplow/browser-plugin-button-click-tracking",
+ "allowedCategories": [ "trackers" ]
+ },
{
"name": "@snowplow/browser-plugin-client-hints",
"allowedCategories": [ "trackers" ]
@@ -58,6 +62,10 @@
"name": "@snowplow/browser-plugin-error-tracking",
"allowedCategories": [ "trackers" ]
},
+ {
+ "name": "@snowplow/browser-plugin-focalmeter",
+ "allowedCategories": [ "trackers" ]
+ },
{
"name": "@snowplow/browser-plugin-form-tracking",
"allowedCategories": [ "trackers" ]
@@ -118,10 +126,6 @@
"name": "@snowplow/browser-plugin-youtube-tracking",
"allowedCategories": [ "trackers" ]
},
- {
- "name": "@snowplow/browser-plugin-focalmeter",
- "allowedCategories": [ "trackers" ]
- },
{
"name": "@snowplow/browser-tracker",
"allowedCategories": [ "plugins", "trackers" ]
diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml
index 92caee30a..1f09a82f2 100644
--- a/common/config/rush/pnpm-lock.yaml
+++ b/common/config/rush/pnpm-lock.yaml
@@ -207,6 +207,59 @@ importers:
ts-jest: 27.1.3_60149d457e34ffba7d4e845dde6a1263
typescript: 4.6.2
+ ../../plugins/browser-plugin-button-click-tracking:
+ specifiers:
+ '@ampproject/rollup-plugin-closure-compiler': ~0.27.0
+ '@rollup/plugin-commonjs': ~21.0.2
+ '@rollup/plugin-node-resolve': ~13.1.3
+ '@snowplow/browser-tracker-core': workspace:*
+ '@snowplow/tracker-core': workspace:*
+ '@types/jest': ~27.4.1
+ '@types/jsdom': ~16.2.14
+ '@types/lodash': ~4.14.180
+ '@typescript-eslint/eslint-plugin': ~5.15.0
+ '@typescript-eslint/parser': ~5.15.0
+ eslint: ~8.11.0
+ jest: ~27.5.1
+ jest-environment-jsdom: ~27.5.1
+ jest-environment-jsdom-global: ~3.0.0
+ jest-standard-reporter: ~2.0.0
+ lodash: ~4.17.21
+ rollup: ~2.70.1
+ rollup-plugin-cleanup: ~3.2.1
+ rollup-plugin-license: ~2.6.1
+ rollup-plugin-terser: ~7.0.2
+ rollup-plugin-ts: ~2.0.5
+ ts-jest: ~27.1.3
+ tslib: ^2.3.1
+ typescript: ~4.6.2
+ dependencies:
+ '@snowplow/browser-tracker-core': link:../../libraries/browser-tracker-core
+ '@snowplow/tracker-core': link:../../libraries/tracker-core
+ tslib: 2.3.1
+ devDependencies:
+ '@ampproject/rollup-plugin-closure-compiler': 0.27.0_rollup@2.70.1
+ '@rollup/plugin-commonjs': 21.0.2_rollup@2.70.1
+ '@rollup/plugin-node-resolve': 13.1.3_rollup@2.70.1
+ '@types/jest': 27.4.1
+ '@types/jsdom': 16.2.14
+ '@types/lodash': 4.14.180
+ '@typescript-eslint/eslint-plugin': 5.15.0_f2c49ce7d0e93ebcfdb4b7d25b131b28
+ '@typescript-eslint/parser': 5.15.0_eslint@8.11.0+typescript@4.6.2
+ eslint: 8.11.0
+ jest: 27.5.1
+ jest-environment-jsdom: 27.5.1
+ jest-environment-jsdom-global: 3.0.0_jest-environment-jsdom@27.5.1
+ jest-standard-reporter: 2.0.0
+ lodash: 4.17.21
+ rollup: 2.70.1
+ rollup-plugin-cleanup: 3.2.1_rollup@2.70.1
+ rollup-plugin-license: 2.6.1_rollup@2.70.1
+ rollup-plugin-terser: 7.0.2_rollup@2.70.1
+ rollup-plugin-ts: 2.0.5_rollup@2.70.1+typescript@4.6.2
+ ts-jest: 27.1.3_60149d457e34ffba7d4e845dde6a1263
+ typescript: 4.6.2
+
../../plugins/browser-plugin-client-hints:
specifiers:
'@ampproject/rollup-plugin-closure-compiler': ~0.27.0
@@ -1551,6 +1604,7 @@ importers:
'@rollup/plugin-replace': ~4.0.0
'@snowplow/browser-plugin-ad-tracking': workspace:*
'@snowplow/browser-plugin-browser-features': workspace:*
+ '@snowplow/browser-plugin-button-click-tracking': workspace:*
'@snowplow/browser-plugin-client-hints': workspace:*
'@snowplow/browser-plugin-consent': workspace:*
'@snowplow/browser-plugin-ecommerce': workspace:*
@@ -1620,6 +1674,7 @@ importers:
dependencies:
'@snowplow/browser-plugin-ad-tracking': link:../../plugins/browser-plugin-ad-tracking
'@snowplow/browser-plugin-browser-features': link:../../plugins/browser-plugin-browser-features
+ '@snowplow/browser-plugin-button-click-tracking': link:../../plugins/browser-plugin-button-click-tracking
'@snowplow/browser-plugin-client-hints': link:../../plugins/browser-plugin-client-hints
'@snowplow/browser-plugin-consent': link:../../plugins/browser-plugin-consent
'@snowplow/browser-plugin-ecommerce': link:../../plugins/browser-plugin-ecommerce
@@ -1669,7 +1724,7 @@ importers:
'@wdio/static-server-service': 8.17.0
'@wdio/types': 8.17.0
chalk: 4.1.2
- chromedriver: 114.0.2
+ chromedriver: 114.0.3
dockerode: 3.3.1
jest: 27.5.1_ts-node@10.9.1
jest-environment-jsdom: 27.5.1
@@ -1689,7 +1744,7 @@ importers:
ts-jest: 27.1.3_60149d457e34ffba7d4e845dde6a1263
ts-node: 10.9.1_3a45c3db8dee5edcd277f201fb244988
typescript: 4.6.2
- wdio-chromedriver-service: 8.1.1_514dbdcecc2bde428ae175e957c6d0fe
+ wdio-chromedriver-service: 8.1.1_e56eb4ff7720135f2fea4d5c81e984e9
wdio-edgedriver-service: 3.0.3_@wdio+types@8.17.0
wdio-safaridriver-service: 2.1.1_4fb69569f1618470b3fa12973abeed28
webdriverio: 8.18.2_typescript@4.6.2
@@ -1785,7 +1840,7 @@ packages:
resolution: {integrity: sha512-eTAlQKq65zHfkHZV0sIVODCPGVgoo1HdBlbSLi9CqOzuZanMv2ihzY+4paiKr1mH+XmYESMAmJ/dpZ68eN6d8w==}
engines: {node: '>=6.9.0'}
dependencies:
- '@babel/code-frame': 7.16.7
+ '@babel/code-frame': 7.22.13
'@babel/generator': 7.12.11
'@babel/helper-module-transforms': 7.12.1
'@babel/helpers': 7.12.5
@@ -1845,7 +1900,7 @@ packages:
'@babel/helper-replace-supers': 7.12.11
'@babel/helper-simple-access': 7.12.1
'@babel/helper-split-export-declaration': 7.12.11
- '@babel/helper-validator-identifier': 7.16.7
+ '@babel/helper-validator-identifier': 7.22.20
'@babel/template': 7.12.7
'@babel/traverse': 7.12.10
'@babel/types': 7.16.8
@@ -2060,7 +2115,7 @@ packages:
/@babel/template/7.12.7:
resolution: {integrity: sha512-GkDzmHS6GV7ZeXfJZ0tLRBhZcMcY0/Lnb+eEbXDBfCAcZCjrZKe6p3J4we/D24O9Y8enxWAg1cWwof59yLh2ow==}
dependencies:
- '@babel/code-frame': 7.16.7
+ '@babel/code-frame': 7.22.13
'@babel/parser': 7.16.12
'@babel/types': 7.16.8
dev: true
@@ -2068,7 +2123,7 @@ packages:
/@babel/traverse/7.12.10:
resolution: {integrity: sha512-6aEtf0IeRgbYWzta29lePeYSk+YAFIC3kyqESeft8o5CkFlYIMX+EQDDWEiAQ9LHOA3d0oHdgrSsID/CKqXJlg==}
dependencies:
- '@babel/code-frame': 7.16.7
+ '@babel/code-frame': 7.22.13
'@babel/generator': 7.12.11
'@babel/helper-function-name': 7.12.11
'@babel/helper-split-export-declaration': 7.12.11
@@ -2085,7 +2140,7 @@ packages:
resolution: {integrity: sha512-smN2DQc5s4M7fntyjGtyIPbRJv6wW4rU/94fmYJ7PKQuZkC0qGMHXJbg6sNGt12JmVr4k5YaptI/XtiLJBnmIg==}
engines: {node: '>=6.9.0'}
dependencies:
- '@babel/helper-validator-identifier': 7.16.7
+ '@babel/helper-validator-identifier': 7.22.20
to-fast-properties: 2.0.0
dev: true
@@ -2210,7 +2265,7 @@ packages:
'@jest/transform': 27.5.1
'@jest/types': 27.5.1
'@types/node': 14.6.4
- ansi-escapes: 4.3.1
+ ansi-escapes: 4.3.2
chalk: 4.1.2
emittery: 0.8.1
exit: 0.1.2
@@ -2255,7 +2310,7 @@ packages:
'@jest/transform': 27.5.1
'@jest/types': 27.5.1
'@types/node': 14.6.4
- ansi-escapes: 4.3.1
+ ansi-escapes: 4.3.2
chalk: 4.1.2
emittery: 0.8.1
exit: 0.1.2
@@ -2787,8 +2842,8 @@ packages:
defer-to-connect: 2.0.1
dev: true
- /@testim/chrome-version/1.1.3:
- resolution: {integrity: sha512-g697J3WxV/Zytemz8aTuKjTGYtta9+02kva3C1xc7KXB8GdbfE1akGJIsZLyY/FSh2QrnE+fiB7vmWU3XNcb6A==}
+ /@testim/chrome-version/1.1.4:
+ resolution: {integrity: sha512-kIhULpw9TrGYnHp/8VfdcneIcxKnLixmADtukQRtJUmsVlMg0niMkwV0xZmi8hqa57xqilIHjWFA0GKvEjVU5g==}
dev: true
/@tootallnate/once/1.1.2:
@@ -3604,13 +3659,6 @@ packages:
string-width: 4.2.3
dev: true
- /ansi-escapes/4.3.1:
- resolution: {integrity: sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==}
- engines: {node: '>=8'}
- dependencies:
- type-fest: 0.11.0
- dev: true
-
/ansi-escapes/4.3.2:
resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==}
engines: {node: '>=8'}
@@ -3854,8 +3902,8 @@ packages:
resolution: {integrity: sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==}
dev: true
- /axios/1.4.0:
- resolution: {integrity: sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==}
+ /axios/1.6.2:
+ resolution: {integrity: sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==}
dependencies:
follow-redirects: 1.15.2
form-data: 4.0.0
@@ -4431,15 +4479,15 @@ packages:
engines: {node: '>=10'}
dev: true
- /chromedriver/114.0.2:
- resolution: {integrity: sha512-v0qrXRBknbxqmtklG7RWOe3TJ/dLaHhtB0jVxE7BAdYERxUjEaNRyqBwoGgVfQDibHCB0swzvzsj158nnfPgZw==}
+ /chromedriver/114.0.3:
+ resolution: {integrity: sha512-Qy5kqsAUrCDwpovM5pIWFkb3X3IgJLoorigwFEDgC1boL094svny3N7yw06marJHAuyX4CE/hhd25RarIcKvKg==}
engines: {node: '>=16'}
hasBin: true
requiresBuild: true
dependencies:
- '@testim/chrome-version': 1.1.3
- axios: 1.4.0
- compare-versions: 5.0.3
+ '@testim/chrome-version': 1.1.4
+ axios: 1.6.2
+ compare-versions: 6.1.0
extract-zip: 2.0.1
https-proxy-agent: 5.0.1
proxy-from-env: 1.1.0
@@ -4649,8 +4697,8 @@ packages:
resolution: {integrity: sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=}
dev: true
- /compare-versions/5.0.3:
- resolution: {integrity: sha512-4UZlZP8Z99MGEY+Ovg/uJxJuvoXuN4M6B3hKaiackiHrgzQFEe3diJi1mf1PNHbFujM7FvLrK2bpgIaImbtZ1A==}
+ /compare-versions/6.1.0:
+ resolution: {integrity: sha512-LNZQXhqUvqUTotpZ00qLSaify3b4VFD588aRr8MKFw4CMUr98ytzCW5wDH5qx/DEY5kCDXcbcRuCqL0szEf2tg==}
dev: true
/compatfactory/0.0.12_typescript@4.6.2:
@@ -7813,7 +7861,7 @@ packages:
'@jest/test-result': 27.5.1
'@jest/types': 27.5.1
'@types/node': 14.6.4
- ansi-escapes: 4.3.1
+ ansi-escapes: 4.3.2
chalk: 4.1.2
jest-util: 27.5.1
string-length: 4.0.1
@@ -9223,7 +9271,7 @@ packages:
resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==}
engines: {node: '>=8'}
dependencies:
- '@babel/code-frame': 7.16.7
+ '@babel/code-frame': 7.22.13
error-ex: 1.3.2
json-parse-even-better-errors: 2.3.1
lines-and-columns: 1.2.4
@@ -10854,7 +10902,7 @@ packages:
resolution: {integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==}
engines: {node: '>=8'}
dependencies:
- ansi-escapes: 4.3.1
+ ansi-escapes: 4.3.2
supports-hyperlinks: 2.1.0
dev: true
@@ -10875,7 +10923,7 @@ packages:
dependencies:
'@istanbuljs/schema': 0.1.2
glob: 7.2.0
- minimatch: 3.0.4
+ minimatch: 3.1.2
dev: true
/text-table/0.2.0:
@@ -11104,11 +11152,6 @@ packages:
engines: {node: '>=4'}
dev: true
- /type-fest/0.11.0:
- resolution: {integrity: sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==}
- engines: {node: '>=8'}
- dev: true
-
/type-fest/0.13.1:
resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==}
engines: {node: '>=10'}
@@ -11378,7 +11421,7 @@ packages:
defaults: 1.0.3
dev: true
- /wdio-chromedriver-service/8.1.1_514dbdcecc2bde428ae175e957c6d0fe:
+ /wdio-chromedriver-service/8.1.1_e56eb4ff7720135f2fea4d5c81e984e9:
resolution: {integrity: sha512-pN3GiOkTIMnalfq4PJAHdX95pDp1orHnTY8W1fIbd6ok81ba97UjerTgS7lUDRUh1p0MAm35Ww0uc0/9wzB7SA==}
engines: {node: ^16.13 || >=18}
peerDependencies:
@@ -11393,7 +11436,7 @@ packages:
dependencies:
'@wdio/logger': 8.16.17
'@wdio/types': 8.17.0
- chromedriver: 114.0.2
+ chromedriver: 114.0.3
fs-extra: 11.1.0
split2: 4.2.0
tcp-port-used: 1.0.2
diff --git a/common/config/rush/repo-state.json b/common/config/rush/repo-state.json
index 5b45dccaf..d5834052d 100644
--- a/common/config/rush/repo-state.json
+++ b/common/config/rush/repo-state.json
@@ -1,5 +1,5 @@
// DO NOT MODIFY THIS FILE MANUALLY BUT DO COMMIT IT. It is generated and used by Rush.
{
- "pnpmShrinkwrapHash": "57af2bb401d45bb58b802eb1a04a7ee62b3aa732",
+ "pnpmShrinkwrapHash": "f22225c05d2747a95a11b5d6c6ee8827084cf800",
"preferredVersionsHash": "bf21a9e8fbc5a3846fb05b4fa0859e0917b2202f"
}
diff --git a/libraries/tracker-core/src/core.ts b/libraries/tracker-core/src/core.ts
index ba2debc72..1cb617117 100644
--- a/libraries/tracker-core/src/core.ts
+++ b/libraries/tracker-core/src/core.ts
@@ -1366,7 +1366,7 @@ export function buildConsentGranted(event: ConsentGrantedEvent) {
* @param exemptFields - Set of fields which should not be removed even if empty
* @returns A cleaned copy of eventJson
*/
-function removeEmptyProperties(
+export function removeEmptyProperties(
event: Record,
exemptFields: Record = {}
): Record {
diff --git a/plugins/browser-plugin-button-click-tracking/LICENSE b/plugins/browser-plugin-button-click-tracking/LICENSE
new file mode 100644
index 000000000..a311732d5
--- /dev/null
+++ b/plugins/browser-plugin-button-click-tracking/LICENSE
@@ -0,0 +1,29 @@
+BSD 3-Clause License
+
+Copyright (c) 2023 Snowplow Analytics Ltd, 2010 Anthon Pang
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+3. Neither the name of the copyright holder nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/plugins/browser-plugin-button-click-tracking/README.md b/plugins/browser-plugin-button-click-tracking/README.md
new file mode 100644
index 000000000..4890728bd
--- /dev/null
+++ b/plugins/browser-plugin-button-click-tracking/README.md
@@ -0,0 +1,63 @@
+# Snowplow Button Click Tracking
+
+[![npm version][npm-image]][npm-url]
+[![License][license-image]](LICENSE)
+
+Browser Plugin to be used with `@snowplow/browser-tracker`.
+
+Adds button click tracking events to your Snowplow tracking.
+
+## Maintainer quick start
+
+Part of the Snowplow JavaScript Tracker monorepo.
+Build with [Node.js](https://nodejs.org/en/) (14 or 16) and [Rush](https://rushjs.io/).
+
+### Setup repository
+
+```bash
+npm install -g @microsoft/rush
+git clone https://github.com/snowplow/snowplow-javascript-tracker.git
+rush update
+```
+
+## Package Installation
+
+With npm:
+
+```bash
+npm install @snowplow/browser-plugin-button-click-tracking
+```
+
+## Usage
+
+Initialize your tracker with the ButtonClickTrackingPlugin:
+
+```js
+import { newTracker } from '@snowplow/browser-tracker';
+import { ButtonClickTrackingPlugin } from '@snowplow/browser-plugin-button-click-tracking';
+
+newTracker('sp1', '{{collector}}', { plugins: [ ButtonClickTrackingPlugin() ] }); // Also stores reference at module level
+```
+
+Then use the available functions from this package to track to all trackers which have been initialized with this plugin:
+
+```js
+import { enableButtonClickTracking } from '@snowplow/browser-plugin-button-click-tracking';
+
+enableButtonClickTracking({ filter: { .. }, context: { .. } });
+```
+
+For a full API reference, you can read the plugin [documentation page](https://docs.snowplow.io/docs/collecting-data/collecting-from-own-applications/javascript-trackers/browser-tracker/browser-tracker-v3-reference/plugins/button-click-tracking/).
+
+## Copyright and license
+
+Licensed and distributed under the [BSD 3-Clause License](LICENSE) ([An OSI Approved License][osi]).
+
+Copyright (c) 2023 Snowplow Analytics Ltd, 2010 Anthon Pang.
+
+All rights reserved.
+
+[npm-url]: https://www.npmjs.com/package/@snowplow/browser-plugin-form-tracking
+[npm-image]: https://img.shields.io/npm/v/@snowplow/browser-plugin-form-tracking
+[osi]: https://opensource.org/licenses/BSD-3-Clause
+[license-image]: https://img.shields.io/npm/l/@snowplow/browser-plugin-form-tracking
diff --git a/plugins/browser-plugin-button-click-tracking/jest.config.js b/plugins/browser-plugin-button-click-tracking/jest.config.js
new file mode 100644
index 000000000..bd3ea4e2a
--- /dev/null
+++ b/plugins/browser-plugin-button-click-tracking/jest.config.js
@@ -0,0 +1,5 @@
+module.exports = {
+ preset: 'ts-jest',
+ reporters: ['jest-standard-reporter'],
+ testEnvironment: 'jest-environment-jsdom-global',
+};
diff --git a/plugins/browser-plugin-button-click-tracking/package.json b/plugins/browser-plugin-button-click-tracking/package.json
new file mode 100644
index 000000000..6b97dfe09
--- /dev/null
+++ b/plugins/browser-plugin-button-click-tracking/package.json
@@ -0,0 +1,55 @@
+{
+ "name": "@snowplow/browser-plugin-button-click-tracking",
+ "version": "3.17.0",
+ "description": "Button Click tracking for Snowplow",
+ "homepage": "https://github.com/snowplow/snowplow-javascript-tracker",
+ "bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/snowplow/snowplow-javascript-tracker.git"
+ },
+ "license": "BSD-3-Clause",
+ "author": "Snowplow Analytics Ltd (https://snowplow.io/)",
+ "sideEffects": false,
+ "main": "./dist/index.umd.js",
+ "module": "./dist/index.module.js",
+ "types": "./dist/index.module.d.ts",
+ "files": [
+ "dist"
+ ],
+ "scripts": {
+ "build": "rollup -c --silent --failAfterWarnings",
+ "test": "jest"
+ },
+ "dependencies": {
+ "@snowplow/browser-tracker-core": "workspace:*",
+ "@snowplow/tracker-core": "workspace:*",
+ "tslib": "^2.3.1"
+ },
+ "devDependencies": {
+ "@ampproject/rollup-plugin-closure-compiler": "~0.27.0",
+ "@rollup/plugin-commonjs": "~21.0.2",
+ "@rollup/plugin-node-resolve": "~13.1.3",
+ "@types/jest": "~27.4.1",
+ "@types/jsdom": "~16.2.14",
+ "@types/lodash": "~4.14.180",
+ "@typescript-eslint/eslint-plugin": "~5.15.0",
+ "@typescript-eslint/parser": "~5.15.0",
+ "eslint": "~8.11.0",
+ "jest": "~27.5.1",
+ "jest-environment-jsdom": "~27.5.1",
+ "jest-environment-jsdom-global": "~3.0.0",
+ "jest-standard-reporter": "~2.0.0",
+ "lodash": "~4.17.21",
+ "rollup": "~2.70.1",
+ "rollup-plugin-cleanup": "~3.2.1",
+ "rollup-plugin-license": "~2.6.1",
+ "rollup-plugin-terser": "~7.0.2",
+ "rollup-plugin-ts": "~2.0.5",
+ "ts-jest": "~27.1.3",
+ "typescript": "~4.6.2"
+ },
+ "peerDependencies": {
+ "@snowplow/browser-tracker": "~3.16.0"
+ }
+}
diff --git a/plugins/browser-plugin-button-click-tracking/rollup.config.js b/plugins/browser-plugin-button-click-tracking/rollup.config.js
new file mode 100644
index 000000000..5654a26d7
--- /dev/null
+++ b/plugins/browser-plugin-button-click-tracking/rollup.config.js
@@ -0,0 +1,37 @@
+import { nodeResolve } from '@rollup/plugin-node-resolve';
+import commonjs from '@rollup/plugin-commonjs';
+import ts from 'rollup-plugin-ts'; // Prefered over @rollup/plugin-typescript as it bundles .d.ts files
+import { banner } from '../../banner';
+import compiler from '@ampproject/rollup-plugin-closure-compiler';
+import { terser } from 'rollup-plugin-terser';
+import cleanup from 'rollup-plugin-cleanup';
+import pkg from './package.json';
+import { builtinModules } from 'module';
+
+const umdPlugins = [nodeResolve({ browser: true }), commonjs(), ts()];
+const umdName = 'snowplowButtonClickTracking';
+
+export default [
+ // CommonJS (for Node) and ES module (for bundlers) build.
+ {
+ input: './src/index.ts',
+ plugins: [...umdPlugins, banner()],
+ treeshake: { moduleSideEffects: ['sha1'] },
+ output: [{ file: pkg.main, format: 'umd', sourcemap: true, name: umdName }],
+ },
+ {
+ input: './src/index.ts',
+ plugins: [...umdPlugins, compiler(), terser(), cleanup({ comments: 'none' }), banner()],
+ treeshake: { moduleSideEffects: ['sha1'] },
+ output: [{ file: pkg.main.replace('.js', '.min.js'), format: 'umd', sourcemap: true, name: umdName }],
+ },
+ {
+ input: './src/index.ts',
+ external: [...builtinModules, ...Object.keys(pkg.dependencies), ...Object.keys(pkg.devDependencies)],
+ plugins: [
+ ts(), // so Rollup can convert TypeScript to JavaScript
+ banner(),
+ ],
+ output: [{ file: pkg.module, format: 'es', sourcemap: true }],
+ },
+];
diff --git a/plugins/browser-plugin-button-click-tracking/src/api.ts b/plugins/browser-plugin-button-click-tracking/src/api.ts
new file mode 100644
index 000000000..9b8e94b1f
--- /dev/null
+++ b/plugins/browser-plugin-button-click-tracking/src/api.ts
@@ -0,0 +1,108 @@
+import { BrowserPlugin, BrowserTracker, dispatchToTrackersInCollection } from '@snowplow/browser-tracker-core';
+import { DynamicContext, CommonEventProperties, resolveDynamicContext } from '@snowplow/tracker-core';
+
+import { createEventFromButton, filterFunctionFromFilter } from './util';
+import { buildButtonClick } from './core';
+import { ButtonClickEvent, ButtonClickTrackingConfiguration, FilterFunction } from './types';
+
+const _trackers: Record = {};
+
+// The event listeners added to the document, for each tracker
+// This allows them to be removed with `removeEventListener` if button click tracking is disabled
+const _listeners: Record void> = {};
+
+/**
+ * Button click tracking
+ *
+ * Will automatically tracking button clicks once enabled with 'enableButtonClickTracking'
+ * or you can manually track button clicks with 'trackButtonClick'
+ */
+export function ButtonClickTrackingPlugin(): BrowserPlugin {
+ return {
+ activateBrowserPlugin: (tracker: BrowserTracker) => {
+ _trackers[tracker.id] = tracker;
+ },
+ };
+}
+
+/**
+ * Manually log a click
+ *
+ * @param event - The event information
+ * @param trackers - The tracker identifiers which the event will be sent to
+ */
+export function trackButtonClick(
+ event: ButtonClickEvent & CommonEventProperties,
+ trackers: Array = Object.keys(_trackers)
+) {
+ dispatchToTrackersInCollection(trackers, _trackers, (t) => {
+ t.core.track(buildButtonClick(event), event.context, event.timestamp);
+ });
+}
+
+/**
+ * Enable automatic click tracking for all `