diff --git a/examples/google-secure-signals-integration/react_client_side/package-lock.json b/examples/google-secure-signals-integration/react_client_side/package-lock.json index 91f19e6..049e33f 100644 --- a/examples/google-secure-signals-integration/react_client_side/package-lock.json +++ b/examples/google-secure-signals-integration/react_client_side/package-lock.json @@ -7630,15 +7630,15 @@ } }, "node_modules/form-data": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz", - "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.2.tgz", + "integrity": "sha512-sJe+TQb2vIaIyO783qN6BlMYWMw3WBOHA1Ay2qxsnjuafEOQFJ2JakedOQirT6D5XPRxDvS7AHYyem9fTpb4LQ==", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", "es-set-tostringtag": "^2.1.0", "hasown": "^2.0.2", - "mime-types": "^2.1.12" + "mime-types": "^2.1.35" }, "engines": { "node": ">= 6" @@ -13528,9 +13528,8 @@ "node": ">=4" } }, - "node_modules/regenerator-runtime": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" }, "node_modules/regex-parser": { diff --git a/examples/google-secure-signals-integration/server_side/package-lock.json b/examples/google-secure-signals-integration/server_side/package-lock.json index 2fa3a53..b75e681 100644 --- a/examples/google-secure-signals-integration/server_side/package-lock.json +++ b/examples/google-secure-signals-integration/server_side/package-lock.json @@ -675,7 +675,7 @@ "dependencies": { "possible-typed-array-names": "^1.0.0" }, - "engines": { + "license": "MIT" "node": ">= 0.4" }, "funding": { @@ -4299,3 +4299,17 @@ } } } + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.8.3.tgz", + "integrity": "sha512-iP4DebzoNlP/YN2dpwCgb8zoCmhtkajzS48JvwmkSkXvPI3DHc7m+XYL5tGnSlJtR6nImXZmdCuN5aP8dh1d8A==", + "form-data": "^4.0.0", + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz", + "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==", + "hasown": "^2.0.2", diff --git a/examples/google-secure-signals-integration/with_sdk_v3/package-lock.json b/examples/google-secure-signals-integration/with_sdk_v3/package-lock.json index 76f7446..2ecf542 100644 --- a/examples/google-secure-signals-integration/with_sdk_v3/package-lock.json +++ b/examples/google-secure-signals-integration/with_sdk_v3/package-lock.json @@ -603,7 +603,7 @@ "dependencies": { "possible-typed-array-names": "^1.0.0" }, - "engines": { + "license": "MIT" "node": ">= 0.4" }, "funding": { @@ -4176,3 +4176,17 @@ } } } + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.8.3.tgz", + "integrity": "sha512-iP4DebzoNlP/YN2dpwCgb8zoCmhtkajzS48JvwmkSkXvPI3DHc7m+XYL5tGnSlJtR6nImXZmdCuN5aP8dh1d8A==", + "form-data": "^4.0.0", + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz", + "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==", + "hasown": "^2.0.2", diff --git a/package-lock.json b/package-lock.json index 7793c02..44be98e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -618,17 +618,17 @@ "node": ">=10.0.0" } }, - "node_modules/@esbuild/darwin-arm64": { + "node_modules/@esbuild/win32-x64": { "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz", - "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz", + "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==", "cpu": [ - "arm64" + "x64" ], "dev": true, "optional": true, "os": [ - "darwin" + "win32" ], "engines": { "node": ">=12" @@ -1249,9 +1249,9 @@ } }, "node_modules/@rollup/plugin-commonjs/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, "dependencies": { "balanced-match": "^1.0.0" @@ -1556,9 +1556,9 @@ "dev": true }, "node_modules/@types/http-proxy": { - "version": "1.17.11", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.11.tgz", - "integrity": "sha512-HC8G7c1WmaF2ekqpnFq626xd3Zz0uvaqFmBJNRZCGEZCXkvSdJoNFn/8Ygbd9fKNQj8UzLdCETaI0UWPAjK7IA==", + "version": "1.17.16", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.16.tgz", + "integrity": "sha512-sdWoUajOB1cd0A8cRRQ1cfyWNbmFKLAqBB89Y8x5iYyG/mkJHc0YUH8pdWBy2omi9qtCpiIgGjuwO0dQST2l5w==", "dev": true, "dependencies": { "@types/node": "*" @@ -2530,22 +2530,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/async-function": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", - "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/async-generator-function": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-generator-function/-/async-generator-function-1.0.0.tgz", - "integrity": "sha512-+NAXNqgCrB95ya4Sr66i1CL2hqLVckAk7xwRYWdcm39/ELQ6YNn1aw5r0bdQtqNZgQpEWzc5yc/igXc7aL5SLA==", - "engines": { - "node": ">= 0.4" - } - }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -2753,15 +2737,6 @@ "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==", - "license": "MIT", - "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", @@ -2808,9 +2783,9 @@ "license": "ISC" }, "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==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "dependencies": { "balanced-match": "^1.0.0", @@ -2918,10 +2893,9 @@ } }, "node_modules/bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", - "dev": true, + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "engines": { "node": ">= 0.8" } @@ -3247,17 +3221,17 @@ } }, "node_modules/compression": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", - "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.1.tgz", + "integrity": "sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==", "dev": true, "dependencies": { - "accepts": "~1.3.5", - "bytes": "3.0.0", - "compressible": "~2.0.16", + "bytes": "3.1.2", + "compressible": "~2.0.18", "debug": "2.6.9", - "on-headers": "~1.0.2", - "safe-buffer": "5.1.2", + "negotiator": "~0.6.4", + "on-headers": "~1.1.0", + "safe-buffer": "5.2.1", "vary": "~1.1.2" }, "engines": { @@ -3279,11 +3253,14 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, - "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==", - "dev": true + "node_modules/compression/node_modules/negotiator": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", + "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", + "dev": true, + "engines": { + "node": ">= 0.6" + } }, "node_modules/concat-map": { "version": "0.0.1", @@ -5216,21 +5193,6 @@ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "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", @@ -5266,14 +5228,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/generator-function": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.0.tgz", - "integrity": "sha512-xPypGGincdfyl/AiSGa7GjXLkvld9V7GjZlowup9SHIJnQnHLFiLODCd/DqKOp0PBagbHJ68r1KJI9Mut7m4sA==", - "engines": { - "node": ">= 0.4" - } - }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -5293,18 +5247,15 @@ } }, "node_modules/get-intrinsic": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.1.tgz", - "integrity": "sha512-fk1ZVEeOX9hVZ6QzoBNEC55+Ucqg4sTVwrVuigZhuRPESVFpMyXnd3sbXvPOwp7Y9riVyANiqhEuRF0G1aVSeQ==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", "dependencies": { - "async-function": "^1.0.0", - "async-generator-function": "^1.0.0", "call-bind-apply-helpers": "^1.0.2", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.1.1", "function-bind": "^1.1.2", - "generator-function": "^2.0.0", "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-symbols": "^1.1.0", @@ -5719,22 +5670,6 @@ "node": ">=12" } }, - "node_modules/html-entities": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.4.0.tgz", - "integrity": "sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ==", - "dev": true, - "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", @@ -5820,9 +5755,9 @@ } }, "node_modules/http-proxy-middleware": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.7.tgz", - "integrity": "sha512-fgVY8AV7qU7z/MmXJ/rxwbrtQH4jBQ9m7kp3llF0liB7glmFeVZFBepQb32T3y8n8k2+AEYuMPCpinYW+/CuRA==", + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.9.tgz", + "integrity": "sha512-c1IyJYLYppU574+YI7R4QyX2ystMtVXZwIdzazUIPIJsHuWNd+mho2j+bKoHftndicGj9yh+xjd+l0yj7VeT1Q==", "dev": true, "dependencies": { "@types/http-proxy": "^1.17.8", @@ -7754,18 +7689,18 @@ } } }, - "node_modules/mkdist/node_modules/@esbuild/darwin-arm64": { + "node_modules/mkdist/node_modules/@esbuild/win32-x64": { "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.2.tgz", - "integrity": "sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.2.tgz", + "integrity": "sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==", "cpu": [ - "arm64" + "x64" ], "dev": true, "license": "MIT", "optional": true, "os": [ - "darwin" + "win32" ], "engines": { "node": ">=18" @@ -8081,9 +8016,9 @@ } }, "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==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.1.0.tgz", + "integrity": "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==", "dev": true, "engines": { "node": ">= 0.8" @@ -9246,15 +9181,6 @@ "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==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/raw-body/node_modules/iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -10786,18 +10712,18 @@ "fsevents": "~2.3.3" } }, - "node_modules/tsx/node_modules/@esbuild/darwin-arm64": { + "node_modules/tsx/node_modules/@esbuild/win32-x64": { "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.1.tgz", - "integrity": "sha512-5hEZKPf+nQjYoSr/elb62U19/l1mZDdqidGfmFutVUjjUZrOazAtwK+Kr+3y0C/oeJfLlxo9fXb1w7L+P7E4FQ==", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.1.tgz", + "integrity": "sha512-Y1EQdcfwMSeQN/ujR5VayLOJ1BHaK+ssyk0AEzPjC+t1lITgsnccPqFjb6V+LsTp/9Iov4ysfjxLaGJ9RPtkVg==", "cpu": [ - "arm64" + "x64" ], "dev": true, "license": "MIT", "optional": true, "os": [ - "darwin" + "win32" ], "engines": { "node": ">=18" @@ -11453,15 +11379,15 @@ } }, "node_modules/webpack-dev-server": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.1.0.tgz", - "integrity": "sha512-aQpaN81X6tXie1FoOB7xlMfCsN19pSvRAeYUHOdFWOlhpQ/LlbfTqYwwmEDFV0h8GGuqmCmKmT+pxcUV/Nt2gQ==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.2.2.tgz", + "integrity": "sha512-QcQ72gh8a+7JO63TAx/6XZf/CWhgMzu5m0QirvPfGvptOusAxG12w2+aua1Jkjr7hzaWDnJ2n6JFeexMHI+Zjg==", "dev": true, - "license": "MIT", "dependencies": { "@types/bonjour": "^3.5.13", "@types/connect-history-api-fallback": "^1.5.4", "@types/express": "^4.17.21", + "@types/express-serve-static-core": "^4.17.21", "@types/serve-index": "^1.9.4", "@types/serve-static": "^1.15.5", "@types/sockjs": "^0.3.36", @@ -11472,10 +11398,9 @@ "colorette": "^2.0.10", "compression": "^1.7.4", "connect-history-api-fallback": "^2.0.0", - "express": "^4.19.2", + "express": "^4.21.2", "graceful-fs": "^4.2.6", - "html-entities": "^2.4.0", - "http-proxy-middleware": "^2.0.3", + "http-proxy-middleware": "^2.0.9", "ipaddr.js": "^2.1.0", "launch-editor": "^2.6.1", "open": "^10.0.3", diff --git a/src/integrationTests/secureSignal.test.ts b/src/integrationTests/secureSignal.test.ts index fe0857d..5f2ac81 100644 --- a/src/integrationTests/secureSignal.test.ts +++ b/src/integrationTests/secureSignal.test.ts @@ -100,6 +100,7 @@ describe('Secure Signal Tests', () => { afterEach(() => { mocks.resetFakeTime(); + mocks.removeUid2LocalStorage(); }); test('should send signal to Google ESP when SDK initialized', async () => { @@ -117,6 +118,56 @@ describe('Secure Signal Tests', () => { identity.advertising_token ); }); + + test('should send signal to Google ESP when SDK initialized and Identity is available', async () => { + mocks.setUid2LocalStorage(identity); + __uid2SSProviderScriptLoad(); + __uid2InternalHandleScriptLoad(); + (window.__uid2 as UID2).init({}); + expect(secureSignalProvidersPushMock).toHaveBeenCalledTimes(1); + await expect(secureSignalProvidersPushMock).toHaveBeenCalledWith( + expect.objectContaining({ + id: 'uidapi.com', + }) + ); + await mocks.flushPromises(); + expect(await secureSignalProvidersPushMock.mock.results[0].value).toBe( + identity.advertising_token + ); + }); + + test('should send signal to Google ESP when SDK initialized and Identity is set after', async () => { + __uid2SSProviderScriptLoad(); + __uid2InternalHandleScriptLoad(); + (window.__uid2 as UID2).init({}); + (window.__uid2 as UID2).setIdentity(identity); + expect(secureSignalProvidersPushMock).toHaveBeenCalledTimes(1); + await expect(secureSignalProvidersPushMock).toHaveBeenCalledWith( + expect.objectContaining({ + id: 'uidapi.com', + }) + ); + await mocks.flushPromises(); + expect(await secureSignalProvidersPushMock.mock.results[0].value).toBe( + identity.advertising_token + ); + }); + + test('should send signal to Google ESP when SDK initialized and SS script is included later', async () => { + __uid2InternalHandleScriptLoad(); + (window.__uid2 as UID2).init({ identity }); + __uid2SSProviderScriptLoad(); + expect(secureSignalProvidersPushMock).toHaveBeenCalledTimes(1); + await expect(secureSignalProvidersPushMock).toHaveBeenCalledWith( + expect.objectContaining({ + id: 'uidapi.com', + }) + ); + await mocks.flushPromises(); + expect(await secureSignalProvidersPushMock.mock.results[0].value).toBe( + identity.advertising_token + ); + }); }); describe('When script loaded after SDK loaded', () => { @@ -184,6 +235,7 @@ describe('Secure Signal Tests', () => { describe('When SDK initialized after both SDK and SS script loaded - UID2', () => { beforeEach(() => { window.__uid2 = new UID2(); + mocks.removeUid2LocalStorage(); }); test('should send identity to Google ESP', async () => { __uid2InternalHandleScriptLoad(); diff --git a/src/secureSignalEuid.ts b/src/secureSignalEuid.ts index 3ccec5f..67e6145 100644 --- a/src/secureSignalEuid.ts +++ b/src/secureSignalEuid.ts @@ -15,14 +15,22 @@ export function __euidSSProviderScriptLoad() { isDebugModeOn(INTEG_BASE_URL), true ); - // For UID2 SDK integration + // For EUID SDK integration window.__euid = window.__euid || { callbacks: [], }; window.__euid.callbacks?.push((eventType) => { - //@ts-ignore - if (eventType === 'SdkLoaded') { - window.__euidSecureSignalProvider!.registerSecureSignalProvider(); + if ( + eventType === 'InitCompleted' || + eventType === 'SdkLoaded' || + eventType === 'IdentityUpdated' + ) { + if ('getIdentity' in window.__euid! && window.__euid!.getIdentity()) { + if (eventType === 'IdentityUpdated') { + window.__euidSecureSignalProvider?.resetProviderRegistration(); + } + window.__euidSecureSignalProvider?.registerSecureSignalProvider(); + } } }); } diff --git a/src/secureSignalUid2.ts b/src/secureSignalUid2.ts index d986c81..c44afe2 100644 --- a/src/secureSignalUid2.ts +++ b/src/secureSignalUid2.ts @@ -17,9 +17,17 @@ export function __uid2SSProviderScriptLoad() { callbacks: [], }; window.__uid2.callbacks?.push((eventType) => { - //@ts-ignore - if (eventType === 'SdkLoaded') { - window.__uid2SecureSignalProvider!.registerSecureSignalProvider(); + if ( + eventType === 'InitCompleted' || + eventType === 'SdkLoaded' || + eventType === 'IdentityUpdated' + ) { + if ('getIdentity' in window.__uid2! && window.__uid2!.getIdentity()) { + if (eventType === 'IdentityUpdated') { + window.__uid2SecureSignalProvider?.resetProviderRegistration(); + } + window.__uid2SecureSignalProvider?.registerSecureSignalProvider(); + } } }); } diff --git a/src/secureSignal_shared.ts b/src/secureSignal_shared.ts index 1a0a361..1893e35 100644 --- a/src/secureSignal_shared.ts +++ b/src/secureSignal_shared.ts @@ -4,10 +4,12 @@ const MAXIMUM_RETRY = 3; export class UidSecureSignalProvider implements UidSecureSignalProviderType { debug: boolean; isEuid: boolean; + hasRegisteredSecureSignals: boolean; constructor(debug = false, isEuid = false) { this.debug = debug; this.isEuid = isEuid; + this.hasRegisteredSecureSignals = false; if ( (!this.isEuid && typeof window.getUid2AdvertisingToken === 'function') || @@ -31,15 +33,19 @@ export class UidSecureSignalProvider implements UidSecureSignalProviderType { }; window.googletag.secureSignalProviders = window.googletag.secureSignalProviders || []; - window.googletag.secureSignalProviders.push({ - id: this.isEuid ? 'euid.eu' : 'uidapi.com', - collectorFunction: async () => { - this.logging('collectorFunction invoked'); - const uidAdvertisingToken = await this.getUidAdvertisingTokenWithRetry(uidHandler); - this.logging(`collectorFunction pushes: ${uidAdvertisingToken}`); - return uidAdvertisingToken; - }, - }); + + if (!this.hasRegisteredSecureSignals) { + this.hasRegisteredSecureSignals = true; + window.googletag.secureSignalProviders.push({ + id: this.isEuid ? 'euid.eu' : 'uidapi.com', + collectorFunction: async () => { + this.logging('collectorFunction invoked'); + const uidAdvertisingToken = await this.getUidAdvertisingTokenWithRetry(uidHandler); + this.logging(`collectorFunction pushes: ${uidAdvertisingToken}`); + return uidAdvertisingToken; + }, + }); + } }; public logging = (message: string) => { @@ -96,6 +102,10 @@ export class UidSecureSignalProvider implements UidSecureSignalProviderType { attempt(); }); }; + + public resetProviderRegistration = () => { + this.hasRegisteredSecureSignals = false; + }; } declare global { diff --git a/src/secureSignal_types.ts b/src/secureSignal_types.ts index 521b90f..7db347a 100644 --- a/src/secureSignal_types.ts +++ b/src/secureSignal_types.ts @@ -1,3 +1,4 @@ export interface UidSecureSignalProviderType { + resetProviderRegistration: () => void; registerSecureSignalProvider: () => void; } diff --git a/tsconfig.json b/tsconfig.json index 0f6a19c..4ec04b2 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -3,9 +3,9 @@ "display": "Node 16", "compilerOptions": { - "lib": ["es2021"], + "lib": ["DOM", "es2022"], "module": "commonjs", - "target": "es6", + "target": "es2022", "allowJs": true, "strict": true, "esModuleInterop": true,