diff --git a/package.json b/package.json index cb3facf..4636449 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,7 @@ "@types/node": "^22.10.5", "@vitest/coverage-v8": "^3.2.6", "eslint": "^10.8.1", - "jsdom": "^25.0.1", + "jsdom": "^30.0.1", "typescript": "^6.0.3", "typescript-eslint": "^8.19.0", "vite": "^8.2.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 09a2005..ac22c5b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -16,13 +16,13 @@ importers: version: 22.20.1 '@vitest/coverage-v8': specifier: ^3.2.6 - version: 3.2.7(vitest@3.2.7(@types/node@22.20.1)(jsdom@25.0.1)(lightningcss@1.33.0)) + version: 3.2.7(vitest@3.2.7(@types/node@22.20.1)(jsdom@30.0.1)(lightningcss@1.33.0)) eslint: specifier: ^10.8.1 version: 10.8.1 jsdom: - specifier: ^25.0.1 - version: 25.0.1 + specifier: ^30.0.1 + version: 30.0.1 typescript: specifier: ^6.0.3 version: 6.0.3 @@ -34,7 +34,7 @@ importers: version: 8.2.2(@types/node@22.20.1) vitest: specifier: ^3.0.4 - version: 3.2.7(@types/node@22.20.1)(jsdom@25.0.1)(lightningcss@1.33.0) + version: 3.2.7(@types/node@22.20.1)(jsdom@30.0.1)(lightningcss@1.33.0) packages: @@ -42,8 +42,13 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@asamuzakjp/css-color@3.2.0': - resolution: {integrity: sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw==} + '@asamuzakjp/css-color@6.0.7': + resolution: {integrity: sha512-vC/bk1Lz7Tn/EfU9/apOTBk80/8dyGyWMowPoV1tJ52muDGsDqt2HPT2klrFUiY60MQmQv9q8yIht15JnBgDGw==} + engines: {node: ^22.13.0 || >=24.0.0} + + '@asamuzakjp/dom-selector@8.3.2': + resolution: {integrity: sha512-93Z1N+BQNXysodoicpOIyNh2drHfz/CTf9nnT0FEx72GJcIiwgydD7tGAr78j41LsYn3hlRn+LdGPuBLn1Bl8Q==} + engines: {node: ^22.13.0 || >=24.0.0} '@babel/helper-string-parser@7.29.7': resolution: {integrity: sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==} @@ -66,33 +71,45 @@ packages: resolution: {integrity: sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==} engines: {node: '>=18'} - '@csstools/color-helpers@5.1.0': - resolution: {integrity: sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==} - engines: {node: '>=18'} + '@bramus/specificity@2.4.2': + resolution: {integrity: sha512-ctxtJ/eA+t+6q2++vj5j7FYX3nRu311q1wfYH3xjlLOsczhlhxAg2FWNUXhpGvAw3BWo1xBcvOV6/YLc2r5FJw==} + hasBin: true - '@csstools/css-calc@2.1.4': - resolution: {integrity: sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==} - engines: {node: '>=18'} + '@csstools/color-helpers@6.1.1': + resolution: {integrity: sha512-gLNsunvwf3mCi5u5o46/Z/JcJMnhbHSaZ69rkgPzNM3J4s8hWwpPUQB6/tt0EDFyCiWzxANlx+2LJwpYj4zS1w==} + engines: {node: '>=20.19.0'} + + '@csstools/css-calc@3.3.0': + resolution: {integrity: sha512-c5ihYsPkdG6JCkU2zTMm4+k6r7RXuGxtWYhu5DHMIiF1FHzrfmHL5so11AoFpUv/tu61xfcmT4AmKoFfMPoqdQ==} + engines: {node: '>=20.19.0'} peerDependencies: - '@csstools/css-parser-algorithms': ^3.0.5 - '@csstools/css-tokenizer': ^3.0.4 + '@csstools/css-parser-algorithms': ^4.0.0 + '@csstools/css-tokenizer': ^4.0.0 - '@csstools/css-color-parser@3.1.0': - resolution: {integrity: sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==} - engines: {node: '>=18'} + '@csstools/css-color-parser@4.2.1': + resolution: {integrity: sha512-YpAJZhaHplYQkG8ib+/Fx5Y0eF2lVWi3tIvMJA6i39TLyUNp2439cifzW8VMjhlqrBjHzK5hVGugRRm2zTKI/A==} + engines: {node: '>=20.19.0'} peerDependencies: - '@csstools/css-parser-algorithms': ^3.0.5 - '@csstools/css-tokenizer': ^3.0.4 + '@csstools/css-parser-algorithms': ^4.0.0 + '@csstools/css-tokenizer': ^4.0.0 - '@csstools/css-parser-algorithms@3.0.5': - resolution: {integrity: sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==} - engines: {node: '>=18'} + '@csstools/css-parser-algorithms@4.0.0': + resolution: {integrity: sha512-+B87qS7fIG3L5h3qwJ/IFbjoVoOe/bpOdh9hAjXbvx0o8ImEmUsGXN0inFOnk2ChCFgqkkGFQ+TpM5rbhkKe4w==} + engines: {node: '>=20.19.0'} peerDependencies: - '@csstools/css-tokenizer': ^3.0.4 + '@csstools/css-tokenizer': ^4.0.0 - '@csstools/css-tokenizer@3.0.4': - resolution: {integrity: sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==} - engines: {node: '>=18'} + '@csstools/css-syntax-patches-for-csstree@1.1.9': + resolution: {integrity: sha512-iGGw4OsAYsS6pD29MdJ2bX/nJx65a04ZZiw6x+VwWlP2DdXf6f++Zmuv/OzALpdyfVhjbduIIF2cXM7HWBIe9A==} + peerDependencies: + css-tree: ^3.2.1 + peerDependenciesMeta: + css-tree: + optional: true + + '@csstools/css-tokenizer@4.0.0': + resolution: {integrity: sha512-QxULHAm7cNu72w97JUNCBFODFaXpbDg+dP8b/oWFAZ2MTRppA3U00Y2L1HqaS4J6yBqxwa/Y3nMBaxVKbB/NsA==} + engines: {node: '>=20.19.0'} '@esbuild/aix-ppc64@0.25.12': resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==} @@ -284,6 +301,15 @@ packages: resolution: {integrity: sha512-+CNAzxglkrpNf/kKywqQfk74QjtceuOE7Qm+AF8miRvPF/wmmK5+OJOgVh3AVTT3RP2mH3+FOaxlE5v72owk0A==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} + '@exodus/bytes@1.15.1': + resolution: {integrity: sha512-S6mL0yNB/Abt9Ei4tq8gDhcczc4S3+vQ4ra7vxnAf+YHC02srtqxKKZghx2Dq6p0e66THKwR6r8N6P95wEty7Q==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + peerDependencies: + '@noble/hashes': ^1.8.0 || ^2.0.0 + peerDependenciesMeta: + '@noble/hashes': + optional: true + '@humanfs/core@0.19.2': resolution: {integrity: sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==} engines: {node: '>=18.18.0'} @@ -701,10 +727,6 @@ packages: engines: {node: '>=0.4.0'} hasBin: true - agent-base@7.1.4: - resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} - engines: {node: '>= 14'} - ajv@6.15.0: resolution: {integrity: sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==} @@ -731,9 +753,6 @@ packages: ast-v8-to-istanbul@0.3.12: resolution: {integrity: sha512-BRRC8VRZY2R4Z4lFIL35MwNXmwVqBityvOIwETtsCSwvjl0IdgFsy9NhdaA6j74nUdtJJlIypeRhpDam19Wq3g==} - asynckit@0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} @@ -741,6 +760,9 @@ packages: resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} engines: {node: 18 || 20 || >=22} + bidi-js@1.0.3: + resolution: {integrity: sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==} + brace-expansion@2.1.4: resolution: {integrity: sha512-hGfVzPxthbf3+2yjg/RBs60cB0FhqBS/zvdV/4wn4/BmN0bNMMHPc4V/BbFieqf1TKAGGAHnY4eSjajCl0f2Xg==} @@ -752,10 +774,6 @@ packages: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} - call-bind-apply-helpers@1.0.2: - resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} - engines: {node: '>= 0.4'} - chai@5.3.3: resolution: {integrity: sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==} engines: {node: '>=18'} @@ -771,21 +789,17 @@ packages: color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - combined-stream@1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} - engines: {node: '>= 0.8'} - cross-spawn@7.0.6: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} - cssstyle@4.6.0: - resolution: {integrity: sha512-2z+rWdzbbSZv6/rhtvzvqeZQHrBaqgogqt85sqFNbabZOuFbCVFb8kPeEtZjiKkbrm395irpNKiYeFeLiQnFPg==} - engines: {node: '>=18'} + css-tree@3.2.1: + resolution: {integrity: sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} - data-urls@5.0.0: - resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==} - engines: {node: '>=18'} + data-urls@7.0.0: + resolution: {integrity: sha512-23XHcCF+coGYevirZceTVD7NdJOqVn+49IHyxgszm+JIiHLoB2TkmPtsYkNWT1pvRSGkc35L6NHs0yHkN2SumA==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} debug@4.4.3: resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} @@ -806,18 +820,10 @@ packages: deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - delayed-stream@1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} - engines: {node: '>=0.4.0'} - detect-libc@2.1.2: resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} engines: {node: '>=8'} - dunder-proto@1.0.1: - resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} - engines: {node: '>= 0.4'} - eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} @@ -827,29 +833,13 @@ packages: emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - entities@6.0.1: - resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} - engines: {node: '>=0.12'} - - es-define-property@1.0.1: - resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} - engines: {node: '>= 0.4'} - - es-errors@1.3.0: - resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} - engines: {node: '>= 0.4'} + entities@8.0.0: + resolution: {integrity: sha512-zwfzJecQ/Uej6tusMqwAqU/6KL2XaB2VZ2Jg54Je6ahNBGNH6Ek6g3jjNCF0fG9EWQKGZNddNjU5F1ZQn/sBnA==} + engines: {node: '>=20.19.0'} es-module-lexer@1.7.0: resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} - es-object-atoms@1.1.2: - resolution: {integrity: sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==} - engines: {node: '>= 0.4'} - - es-set-tostringtag@2.1.0: - resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} - engines: {node: '>= 0.4'} - esbuild@0.25.12: resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==} engines: {node: '>=18'} @@ -945,26 +935,11 @@ packages: resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} engines: {node: '>=14'} - form-data@4.0.6: - resolution: {integrity: sha512-vKatAh4SlVfgbv+YtmhiRjhEMJsYpsG1Y2rMQtR+SVSbytsSD1YGzDIcrAJmdFec88u/+VoGmxnl+80gL1tRCQ==} - engines: {node: '>= 6'} - fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] - function-bind@1.1.2: - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - - get-intrinsic@1.3.0: - resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} - engines: {node: '>= 0.4'} - - get-proto@1.0.1: - resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} - engines: {node: '>= 0.4'} - glob-parent@6.0.2: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} @@ -974,45 +949,17 @@ packages: deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me hasBin: true - gopd@1.2.0: - resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} - engines: {node: '>= 0.4'} - has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} - has-symbols@1.1.0: - resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} - engines: {node: '>= 0.4'} - - has-tostringtag@1.0.2: - resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} - engines: {node: '>= 0.4'} - - hasown@2.0.4: - resolution: {integrity: sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==} - engines: {node: '>= 0.4'} - - html-encoding-sniffer@4.0.0: - resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==} - engines: {node: '>=18'} + html-encoding-sniffer@6.0.0: + resolution: {integrity: sha512-CV9TW3Y3f8/wT0BRFc1/KAVQ3TUHiXmaAb6VW9vtiMFf7SLoMd1PdAc4W3KFOFETBJUb90KatHqlsZMWV+R9Gg==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} - http-proxy-agent@7.0.2: - resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} - engines: {node: '>= 14'} - - https-proxy-agent@7.0.6: - resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} - engines: {node: '>= 14'} - - iconv-lite@0.6.3: - resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} - engines: {node: '>=0.10.0'} - ignore@5.3.2: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} @@ -1068,11 +1015,11 @@ packages: js-tokens@9.0.1: resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==} - jsdom@25.0.1: - resolution: {integrity: sha512-8i7LzZj7BF8uplX+ZyOlIz86V6TAsSs+np6m1kpW9u0JWi4z/1t+FzcK1aek+ybTnAC4KhBL4uXCNT0wcUIeCw==} - engines: {node: '>=18'} + jsdom@30.0.1: + resolution: {integrity: sha512-52v7mUVUfNQVYYqE1lcdaymWL0njO7lTLUog6ZvW2U5KsbiLk/GnZlVJ+qx0xfNJZ6Gn+KSpPNE52vurbxZwrA==} + engines: {node: ^22.22.2 || ^24.15.0 || >=26.0.0} peerDependencies: - canvas: ^2.11.2 + canvas: ^3.2.3 peerDependenciesMeta: canvas: optional: true @@ -1177,6 +1124,10 @@ packages: lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + lru-cache@11.5.2: + resolution: {integrity: sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==} + engines: {node: 20 || >=22} + magic-string@0.30.21: resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} @@ -1187,17 +1138,8 @@ packages: resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} engines: {node: '>=10'} - math-intrinsics@1.1.0: - resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} - engines: {node: '>= 0.4'} - - mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} - - mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} + mdn-data@2.27.1: + resolution: {integrity: sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==} minimatch@10.2.6: resolution: {integrity: sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==} @@ -1222,9 +1164,6 @@ packages: natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - nwsapi@2.2.24: - resolution: {integrity: sha512-7YRhZ3jS45LwmSCT4b2sVFHt/WuovaktDU07QrtOBY2PXskss5a9jfmR9jptyumwXST+rFjrmppMY1KT/yn35A==} - optionator@0.9.4: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} @@ -1240,8 +1179,8 @@ packages: package-json-from-dist@1.0.1: resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} - parse5@7.3.0: - resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} + parse5@8.0.1: + resolution: {integrity: sha512-z1e/HMG90obSGeidlli3hj7cbocou0/wa5HacvI3ASx34PecNjNQeaHNo5WIZpWofN9kgkqV1q5YvXe3F0FoPw==} path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} @@ -1281,6 +1220,10 @@ packages: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + rolldown@1.2.5: resolution: {integrity: sha512-VD2IE5PUG4Oj8zz2VGykiYd5wbnjdIiSsNQb8Qu5B+noEp+A78mu2iVvpp27g8es14Tk9rofNs5Tku9iQCS4fA==} engines: {node: ^20.19.0 || >=22.12.0} @@ -1291,15 +1234,6 @@ packages: engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true - rrweb-cssom@0.7.1: - resolution: {integrity: sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg==} - - rrweb-cssom@0.8.0: - resolution: {integrity: sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==} - - safer-buffer@2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - saxes@6.0.0: resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} engines: {node: '>=v12.22.7'} @@ -1386,20 +1320,20 @@ packages: resolution: {integrity: sha512-azl+t0z7pw/z958Gy9svOTuzqIk6xq+NSheJzn5MMWtWTFywIacg2wUlzKFGtt3cthx0r2SxMK0yzJOR0IES7Q==} engines: {node: '>=14.0.0'} - tldts-core@6.1.86: - resolution: {integrity: sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA==} + tldts-core@7.4.11: + resolution: {integrity: sha512-CW3WN2rIIE/Of21mulhgnGOwoDyEFNygyIBOONSdyAuSATgMMUCpLeUlB+E8sAwA5xRV9hYPl+kyZ9citHCaKg==} - tldts@6.1.86: - resolution: {integrity: sha512-WMi/OQ2axVTf/ykqCQgXiIct+mSQDFdH2fkwhPwgEwvJ1kSzZRiinb0zF2Xb8u4+OqPChmyI6MEu4EezNJz+FQ==} + tldts@7.4.11: + resolution: {integrity: sha512-aBiNayCfTQxuIJBm06M+xR14cYaYlDlSXZbgsnKzKNxDKUVq7KFwTjwBSsb7m9Y5xO8WfPnBc63WaYFMTGlvqw==} hasBin: true - tough-cookie@5.1.2: - resolution: {integrity: sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==} + tough-cookie@6.0.2: + resolution: {integrity: sha512-exgYmnmL/sJpR3upZfXG5PoatXQii55xAiXGXzY+sROLZ/Y+SLcp9PgJNI9Vz37HpQ74WvDcLT8eqm+kV3FzrA==} engines: {node: '>=16'} - tr46@5.1.1: - resolution: {integrity: sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==} - engines: {node: '>=18'} + tr46@6.0.0: + resolution: {integrity: sha512-bLVMLPtstlZ4iMQHpFHTR7GAGj2jxi8Dg0s2h2MafAE4uSWF98FC/3MomU51iQAMf8/qDUbKWf5GxuvvVcXEhw==} + engines: {node: '>=20'} ts-api-utils@2.5.0: resolution: {integrity: sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==} @@ -1426,6 +1360,10 @@ packages: undici-types@6.21.0: resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} + undici@8.10.0: + resolution: {integrity: sha512-HvltHd7avK13QIw/oLe4qoOLyoVSoafqJ2jYOrtMRBkbYT31eiBQ8O0ehRKZiEZCMEyLFQNIADpgCWC5fALvYQ==} + engines: {node: '>=22.19.0'} + uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} @@ -1549,22 +1487,21 @@ packages: resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} engines: {node: '>=18'} - webidl-conversions@7.0.0: - resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} - engines: {node: '>=12'} + webidl-conversions@8.0.1: + resolution: {integrity: sha512-BMhLD/Sw+GbJC21C/UgyaZX41nPt8bUTg+jWyDeg7e7YN4xOM05YPSIXceACnXVtqyEw/LMClUQMtMZ+PGGpqQ==} + engines: {node: '>=20'} - whatwg-encoding@3.1.1: - resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} - engines: {node: '>=18'} - deprecated: Use @exodus/bytes instead for a more spec-conformant and faster implementation + whatwg-mimetype@5.0.0: + resolution: {integrity: sha512-sXcNcHOC51uPGF0P/D4NVtrkjSU2fNsm9iog4ZvZJsL3rjoDAzXZhkm2MWt1y+PUdggKAYVoMAIYcs78wJ51Cw==} + engines: {node: '>=20'} - whatwg-mimetype@4.0.0: - resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} - engines: {node: '>=18'} + whatwg-url@16.0.1: + resolution: {integrity: sha512-1to4zXBxmXHV3IiSSEInrreIlu02vUOvrhxJJH5vcxYTBDAx51cqZiKdyTxlecdKNSjj8EcxGBxNf6Vg+945gw==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} - whatwg-url@14.2.0: - resolution: {integrity: sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==} - engines: {node: '>=18'} + whatwg-url@17.1.0: + resolution: {integrity: sha512-3GeworPmc2ZfEEHP7lEbUfBX/L75wdEsi0rLNhXcXxnoN5jyq0SL5gCy06SGW2cyTIZdTvWIDQNQoza++vKeaw==} + engines: {node: ^22.14.0 || >=24.0.0} which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} @@ -1588,18 +1525,6 @@ packages: resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} engines: {node: '>=12'} - ws@8.21.3: - resolution: {integrity: sha512-201TZ/kPWxoPr/OKWjquZR1SWKXcvxdH+e1xrx89b3YbmzLMFCLfnaG1HFIgWzJOEWZ7MvpK++odZufgYR50Rw==} - 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 - xml-name-validator@5.0.0: resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} engines: {node: '>=18'} @@ -1618,13 +1543,20 @@ snapshots: '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 - '@asamuzakjp/css-color@3.2.0': + '@asamuzakjp/css-color@6.0.7': dependencies: - '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) - '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) - '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) - '@csstools/css-tokenizer': 3.0.4 - lru-cache: 10.4.3 + '@csstools/css-calc': 3.3.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + '@csstools/css-color-parser': 4.2.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) + '@csstools/css-tokenizer': 4.0.0 + lru-cache: 11.5.2 + + '@asamuzakjp/dom-selector@8.3.2': + dependencies: + bidi-js: 1.0.3 + css-tree: 3.2.1 + is-potential-custom-element-name: 1.0.1 + lru-cache: 11.5.2 '@babel/helper-string-parser@7.29.7': {} @@ -1641,25 +1573,33 @@ snapshots: '@bcoe/v8-coverage@1.0.2': {} - '@csstools/color-helpers@5.1.0': {} + '@bramus/specificity@2.4.2': + dependencies: + css-tree: 3.2.1 + + '@csstools/color-helpers@6.1.1': {} - '@csstools/css-calc@2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': + '@csstools/css-calc@3.3.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': dependencies: - '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) - '@csstools/css-tokenizer': 3.0.4 + '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) + '@csstools/css-tokenizer': 4.0.0 - '@csstools/css-color-parser@3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': + '@csstools/css-color-parser@4.2.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': dependencies: - '@csstools/color-helpers': 5.1.0 - '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) - '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) - '@csstools/css-tokenizer': 3.0.4 + '@csstools/color-helpers': 6.1.1 + '@csstools/css-calc': 3.3.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) + '@csstools/css-tokenizer': 4.0.0 - '@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4)': + '@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0)': dependencies: - '@csstools/css-tokenizer': 3.0.4 + '@csstools/css-tokenizer': 4.0.0 + + '@csstools/css-syntax-patches-for-csstree@1.1.9(css-tree@3.2.1)': + optionalDependencies: + css-tree: 3.2.1 - '@csstools/css-tokenizer@3.0.4': {} + '@csstools/css-tokenizer@4.0.0': {} '@esbuild/aix-ppc64@0.25.12': optional: true @@ -1771,6 +1711,8 @@ snapshots: '@eslint/core': 1.2.1 levn: 0.4.1 + '@exodus/bytes@1.15.1': {} + '@humanfs/core@0.19.2': dependencies: '@humanfs/types': 0.15.0 @@ -2050,7 +1992,7 @@ snapshots: '@typescript-eslint/types': 8.67.0 eslint-visitor-keys: 5.0.1 - '@vitest/coverage-v8@3.2.7(vitest@3.2.7(@types/node@22.20.1)(jsdom@25.0.1)(lightningcss@1.33.0))': + '@vitest/coverage-v8@3.2.7(vitest@3.2.7(@types/node@22.20.1)(jsdom@30.0.1)(lightningcss@1.33.0))': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 1.0.2 @@ -2065,7 +2007,7 @@ snapshots: std-env: 3.10.0 test-exclude: 7.0.2 tinyrainbow: 2.0.0 - vitest: 3.2.7(@types/node@22.20.1)(jsdom@25.0.1)(lightningcss@1.33.0) + vitest: 3.2.7(@types/node@22.20.1)(jsdom@30.0.1)(lightningcss@1.33.0) transitivePeerDependencies: - supports-color @@ -2117,8 +2059,6 @@ snapshots: acorn@8.18.0: {} - agent-base@7.1.4: {} - ajv@6.15.0: dependencies: fast-deep-equal: 3.1.3 @@ -2144,12 +2084,14 @@ snapshots: estree-walker: 3.0.3 js-tokens: 10.0.0 - asynckit@0.4.0: {} - balanced-match@1.0.2: {} balanced-match@4.0.4: {} + bidi-js@1.0.3: + dependencies: + require-from-string: 2.0.2 + brace-expansion@2.1.4: dependencies: balanced-match: 1.0.2 @@ -2160,11 +2102,6 @@ snapshots: cac@6.7.14: {} - call-bind-apply-helpers@1.0.2: - dependencies: - es-errors: 1.3.0 - function-bind: 1.1.2 - chai@5.3.3: dependencies: assertion-error: 2.0.1 @@ -2181,25 +2118,23 @@ snapshots: color-name@1.1.4: {} - combined-stream@1.0.8: - dependencies: - delayed-stream: 1.0.0 - cross-spawn@7.0.6: dependencies: path-key: 3.1.1 shebang-command: 2.0.0 which: 2.0.2 - cssstyle@4.6.0: + css-tree@3.2.1: dependencies: - '@asamuzakjp/css-color': 3.2.0 - rrweb-cssom: 0.8.0 + mdn-data: 2.27.1 + source-map-js: 1.2.1 - data-urls@5.0.0: + data-urls@7.0.0: dependencies: - whatwg-mimetype: 4.0.0 - whatwg-url: 14.2.0 + whatwg-mimetype: 5.0.0 + whatwg-url: 16.0.1 + transitivePeerDependencies: + - '@noble/hashes' debug@4.4.3: dependencies: @@ -2211,41 +2146,18 @@ snapshots: deep-is@0.1.4: {} - delayed-stream@1.0.0: {} - detect-libc@2.1.2: {} - dunder-proto@1.0.1: - dependencies: - call-bind-apply-helpers: 1.0.2 - es-errors: 1.3.0 - gopd: 1.2.0 - eastasianwidth@0.2.0: {} emoji-regex@8.0.0: {} emoji-regex@9.2.2: {} - entities@6.0.1: {} - - es-define-property@1.0.1: {} - - es-errors@1.3.0: {} + entities@8.0.0: {} es-module-lexer@1.7.0: {} - es-object-atoms@1.1.2: - dependencies: - es-errors: 1.3.0 - - es-set-tostringtag@2.1.0: - dependencies: - es-errors: 1.3.0 - get-intrinsic: 1.3.0 - has-tostringtag: 1.0.2 - hasown: 2.0.4 - esbuild@0.25.12: optionalDependencies: '@esbuild/aix-ppc64': 0.25.12 @@ -2378,37 +2290,9 @@ snapshots: cross-spawn: 7.0.6 signal-exit: 4.1.0 - form-data@4.0.6: - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - es-set-tostringtag: 2.1.0 - hasown: 2.0.4 - mime-types: 2.1.35 - fsevents@2.3.3: optional: true - function-bind@1.1.2: {} - - get-intrinsic@1.3.0: - dependencies: - call-bind-apply-helpers: 1.0.2 - es-define-property: 1.0.1 - es-errors: 1.3.0 - es-object-atoms: 1.1.2 - function-bind: 1.1.2 - get-proto: 1.0.1 - gopd: 1.2.0 - has-symbols: 1.1.0 - hasown: 2.0.4 - math-intrinsics: 1.1.0 - - get-proto@1.0.1: - dependencies: - dunder-proto: 1.0.1 - es-object-atoms: 1.1.2 - glob-parent@6.0.2: dependencies: is-glob: 4.0.3 @@ -2422,43 +2306,15 @@ snapshots: package-json-from-dist: 1.0.1 path-scurry: 1.11.1 - gopd@1.2.0: {} - has-flag@4.0.0: {} - has-symbols@1.1.0: {} - - has-tostringtag@1.0.2: + html-encoding-sniffer@6.0.0: dependencies: - has-symbols: 1.1.0 - - hasown@2.0.4: - dependencies: - function-bind: 1.1.2 - - html-encoding-sniffer@4.0.0: - dependencies: - whatwg-encoding: 3.1.1 - - html-escaper@2.0.2: {} - - http-proxy-agent@7.0.2: - dependencies: - agent-base: 7.1.4 - debug: 4.4.3 + '@exodus/bytes': 1.15.1 transitivePeerDependencies: - - supports-color - - https-proxy-agent@7.0.6: - dependencies: - agent-base: 7.1.4 - debug: 4.4.3 - transitivePeerDependencies: - - supports-color + - '@noble/hashes' - iconv-lite@0.6.3: - dependencies: - safer-buffer: 2.1.2 + html-escaper@2.0.2: {} ignore@5.3.2: {} @@ -2509,33 +2365,31 @@ snapshots: js-tokens@9.0.1: {} - jsdom@25.0.1: + jsdom@30.0.1: dependencies: - cssstyle: 4.6.0 - data-urls: 5.0.0 + '@asamuzakjp/css-color': 6.0.7 + '@asamuzakjp/dom-selector': 8.3.2 + '@bramus/specificity': 2.4.2 + '@csstools/css-syntax-patches-for-csstree': 1.1.9(css-tree@3.2.1) + '@exodus/bytes': 1.15.1 + css-tree: 3.2.1 + data-urls: 7.0.0 decimal.js: 10.6.0 - form-data: 4.0.6 - html-encoding-sniffer: 4.0.0 - http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.6 + html-encoding-sniffer: 6.0.0 is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.24 - parse5: 7.3.0 - rrweb-cssom: 0.7.1 + lru-cache: 11.5.2 + parse5: 8.0.1 saxes: 6.0.0 symbol-tree: 3.2.4 - tough-cookie: 5.1.2 + tough-cookie: 6.0.2 + undici: 8.10.0 w3c-xmlserializer: 5.0.0 - webidl-conversions: 7.0.0 - whatwg-encoding: 3.1.1 - whatwg-mimetype: 4.0.0 - whatwg-url: 14.2.0 - ws: 8.21.3 + webidl-conversions: 8.0.1 + whatwg-mimetype: 5.0.0 + whatwg-url: 17.1.0 xml-name-validator: 5.0.0 transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate + - '@noble/hashes' json-buffer@3.0.1: {} @@ -2609,6 +2463,8 @@ snapshots: lru-cache@10.4.3: {} + lru-cache@11.5.2: {} + magic-string@0.30.21: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 @@ -2623,13 +2479,7 @@ snapshots: dependencies: semver: 7.8.5 - math-intrinsics@1.1.0: {} - - mime-db@1.52.0: {} - - mime-types@2.1.35: - dependencies: - mime-db: 1.52.0 + mdn-data@2.27.1: {} minimatch@10.2.6: dependencies: @@ -2647,8 +2497,6 @@ snapshots: natural-compare@1.4.0: {} - nwsapi@2.2.24: {} - optionator@0.9.4: dependencies: deep-is: 0.1.4 @@ -2668,9 +2516,9 @@ snapshots: package-json-from-dist@1.0.1: {} - parse5@7.3.0: + parse5@8.0.1: dependencies: - entities: 6.0.1 + entities: 8.0.0 path-exists@4.0.0: {} @@ -2699,6 +2547,8 @@ snapshots: punycode@2.3.1: {} + require-from-string@2.0.2: {} + rolldown@1.2.5: dependencies: '@oxc-project/types': 0.146.0 @@ -2752,12 +2602,6 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.62.5 fsevents: 2.3.3 - rrweb-cssom@0.7.1: {} - - rrweb-cssom@0.8.0: {} - - safer-buffer@2.1.2: {} - saxes@6.0.0: dependencies: xmlchars: 2.2.0 @@ -2831,17 +2675,17 @@ snapshots: tinyspy@4.0.4: {} - tldts-core@6.1.86: {} + tldts-core@7.4.11: {} - tldts@6.1.86: + tldts@7.4.11: dependencies: - tldts-core: 6.1.86 + tldts-core: 7.4.11 - tough-cookie@5.1.2: + tough-cookie@6.0.2: dependencies: - tldts: 6.1.86 + tldts: 7.4.11 - tr46@5.1.1: + tr46@6.0.0: dependencies: punycode: 2.3.1 @@ -2868,6 +2712,8 @@ snapshots: undici-types@6.21.0: {} + undici@8.10.0: {} + uri-js@4.4.1: dependencies: punycode: 2.3.1 @@ -2917,7 +2763,7 @@ snapshots: '@types/node': 22.20.1 fsevents: 2.3.3 - vitest@3.2.7(@types/node@22.20.1)(jsdom@25.0.1)(lightningcss@1.33.0): + vitest@3.2.7(@types/node@22.20.1)(jsdom@30.0.1)(lightningcss@1.33.0): dependencies: '@types/chai': 5.2.3 '@vitest/expect': 3.2.7 @@ -2944,7 +2790,7 @@ snapshots: why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 22.20.1 - jsdom: 25.0.1 + jsdom: 30.0.1 transitivePeerDependencies: - jiti - less @@ -2963,18 +2809,25 @@ snapshots: dependencies: xml-name-validator: 5.0.0 - webidl-conversions@7.0.0: {} + webidl-conversions@8.0.1: {} - whatwg-encoding@3.1.1: - dependencies: - iconv-lite: 0.6.3 + whatwg-mimetype@5.0.0: {} - whatwg-mimetype@4.0.0: {} + whatwg-url@16.0.1: + dependencies: + '@exodus/bytes': 1.15.1 + tr46: 6.0.0 + webidl-conversions: 8.0.1 + transitivePeerDependencies: + - '@noble/hashes' - whatwg-url@14.2.0: + whatwg-url@17.1.0: dependencies: - tr46: 5.1.1 - webidl-conversions: 7.0.0 + '@exodus/bytes': 1.15.1 + tr46: 6.0.0 + webidl-conversions: 8.0.1 + transitivePeerDependencies: + - '@noble/hashes' which@2.0.2: dependencies: @@ -2999,8 +2852,6 @@ snapshots: string-width: 5.1.2 strip-ansi: 7.2.0 - ws@8.21.3: {} - xml-name-validator@5.0.0: {} xmlchars@2.2.0: {} diff --git a/src/Resources/public/js/device-intelligence.min.js b/src/Resources/public/js/device-intelligence.min.js index 9454098..f3e562e 100644 --- a/src/Resources/public/js/device-intelligence.min.js +++ b/src/Resources/public/js/device-intelligence.min.js @@ -1,2 +1,2 @@ -var DeviceIntelligence=(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=class{entry=null;get(){return this.entry===null?null:Date.now()>=this.entry.expiresAt?(this.entry=null,null):this.entry.value}set(e,t){let n=t*1e3;this.entry={value:e,expiresAt:Date.now()+n},n<=0&&(this.entry=null)}clear(){this.entry=null}has(){return this.get()!==null}},n=16;async function r(e){let t=globalThis.crypto?.subtle;if(!t)throw Error(`WebCrypto SubtleCrypto is not available`);let n=typeof e==`string`?new TextEncoder().encode(e):e,r=await t.digest(`SHA-256`,n),i=new Uint8Array(r),a=``;for(let e=0;e1?1:e}function o(e){return{name:e.name,value:e.value,normalizedValue:e.normalizedValue,quality:a(e.quality),stability:a(e.stability),entropyCategory:e.entropyCategory,collectedAt:e.collectedAt??Date.now()}}function s(e){return new Promise((t,n)=>{let r=()=>{n(new DOMException(`The operation was aborted.`,`AbortError`))};if(e.aborted){r();return}e.addEventListener(`abort`,r,{once:!0})})}function c(e,t){return Promise.race([e,s(t)])}function l(e){if(e.abortSignal.aborted)throw new DOMException(`The operation was aborted.`,`AbortError`)}var u=44100,d=44100,f=256,p=class{name=`audio`;async collect(e){l(e);let t=m();if(!t)throw Error(`OfflineAudioContext is not available`);let n=new t(1,d,u),r=n.createOscillator();r.type=`triangle`,r.frequency.value=1e4;let a=n.createDynamicsCompressor();a.threshold.value=-50,a.knee.value=40,a.ratio.value=12,a.attack.value=0,a.release.value=.25,r.connect(a),a.connect(n.destination),r.start(0);let s=await i(h((await c(n.startRendering(),e.abortSignal)).getChannelData(0),f).join(`,`));return o({name:this.name,value:s,normalizedValue:s,quality:.85,stability:.9,entropyCategory:`high`})}};function m(){let e=globalThis;return e.OfflineAudioContext??e.webkitOfflineAudioContext??null}function h(e,t){let n=Math.max(1,Math.floor(e.length/t)),r=[];for(let i=0;i`u`?null:navigator,r=n?.userAgent??``;n&&n.webdriver===!0&&t.push(`webdriver`),!n||!Array.isArray(n.languages)||n.languages.length===0?t.push(`missing-languages`):n.language&&n.languages[0]&&n.language!==n.languages[0]&&t.push(`language-mismatch`),!n||typeof n.hardwareConcurrency!=`number`?t.push(`missing-hardware-concurrency`):(n.hardwareConcurrency<=0||n.hardwareConcurrency>128)&&t.push(`implausible-hardware-concurrency`),/headless/i.test(r)&&t.push(`headless-ua`),/HeadlessChrome/i.test(r)&&t.push(`headless-chrome`),typeof window<`u`&&window.outerWidth===0&&window.outerHeight===0&&t.push(`zero-outer-size`);let i={indicators:t,confidence:a(t.reduce((e,t)=>e+(ee[t]??.15),0))};return o({name:this.name,value:i,normalizedValue:i,quality:.8,stability:.5,entropyCategory:`low`})}},g=280,_=80,v=class{name=`canvas`;async collect(e){if(l(e),typeof document>`u`)throw Error(`document is not available`);let t=document.createElement(`canvas`);t.width=g,t.height=_,t.style.display=`none`;let n=t.getContext(`2d`,{willReadFrequently:!0});if(!n)throw Error(`CanvasRenderingContext2D is not available`);y(n);let r=await i(n.getImageData(0,0,g,_).data);return o({name:this.name,value:r,normalizedValue:r,quality:.92,stability:.95,entropyCategory:`high`})}};function y(e){e.fillStyle=`#f60`,e.fillRect(8,8,90,48),e.fillStyle=`#069`,e.fillRect(108,12,70,40),e.strokeStyle=`#111827`,e.lineWidth=2,e.beginPath(),e.arc(220,36,26,0,Math.PI*2),e.stroke(),e.beginPath(),e.arc(248,52,14,.25*Math.PI,1.6*Math.PI),e.stroke(),e.fillStyle=`#111827`,e.font=`16px Arial, sans-serif`,e.textBaseline=`top`,e.fillText(`DeviceIntelligence`,12,58),e.fillStyle=`rgba(16, 185, 129, 0.45)`,e.fillRect(40,20,36,18)}var b=class{name=`capabilities`;async collect(e){l(e);let t=typeof navigator>`u`?null:navigator,n=typeof window>`u`?null:window,r={cookieEnabled:t?.cookieEnabled??!1,pdfViewerEnabled:!!t?.pdfViewerEnabled,serviceWorker:!!(t&&`serviceWorker`in t),webgl:x(),webgpu:!!(t&&`gpu`in t),wasm:typeof WebAssembly<`u`,sharedArrayBuffer:typeof SharedArrayBuffer<`u`,touch:(t?.maxTouchPoints??0)>0,matchMedia:typeof n?.matchMedia==`function`,localStorage:S(`localStorage`),sessionStorage:S(`sessionStorage`),indexedDB:typeof indexedDB<`u`},i=Object.entries(r).filter(([,e])=>e).map(([e])=>e).sort();return o({name:this.name,value:r,normalizedValue:i,quality:.9,stability:.9,entropyCategory:`medium`})}};function x(){if(typeof document>`u`||typeof navigator<`u`&&/jsdom/i.test(navigator.userAgent))return!1;try{let e=document.createElement(`canvas`);return!!(e.getContext(`webgl`)||e.getContext(`experimental-webgl`))}catch{return!1}}function S(e){try{let t=globalThis[e],n=`__di_cap__`;return t.setItem(n,`1`),t.removeItem(n),!0}catch{return!1}}function C(e){let t=e.trim();return t.length===0?`other`:/Edg(?:e|A|iOS)?\/|\bEdge\//i.test(t)||/^Edge\s/i.test(t)?w(t,`Edge`,/(?:Edg(?:e|A|iOS)?|Edge)[/\s](\d+)/i):/\bOPR\/|\bOpera\//i.test(t)||/^Opera\s/i.test(t)?w(t,`Opera`,/(?:OPR|Opera)[/\s](\d+)/i):/\bFirefox\/|\bFxiOS\//i.test(t)||/^Firefox\s/i.test(t)?w(t,`Firefox`,/(?:Firefox|FxiOS)[/\s](\d+)/i):/^Chrome\s+\d+/i.test(t)?w(t,`Chrome`,/^Chrome\s+(\d+)/i):/\bSafari\//i.test(t)&&/\bVersion\//i.test(t)&&!/\b(Chrome|Chromium|CriOS|Edg|OPR)\b/i.test(t)||/^Safari\s/i.test(t)?w(t,`Safari`,/(?:Version|Safari)[/\s](\d+)/i):/\b(Chrome|Chromium|CriOS)\//i.test(t)?w(t,`Chrome`,/(?:Chrome|Chromium|CriOS)\/(\d+)/i):`other`}function w(e,t,n){let r=e.match(n)?.[1];return r?`${t} ${r}`:t}function T(e){let t=e.toLowerCase();return t.includes(`win`)?`windows`:t.includes(`android`)?`android`:t.includes(`iphone`)||t.includes(`ipad`)||t.includes(`ipod`)||t.includes(`ios`)?`ios`:t.includes(`mac`)||t.includes(`darwin`)?`macos`:t.includes(`linux`)||t.includes(`x11`)||t.includes(`cros`)?`linux`:`other`}function E(e,t){let n=Math.max(e,t);return!Number.isFinite(n)||n<=0?`other`:n<=480?`mobile-s`:n<=767?`mobile-l`:n<=1280?`tablet`:n<=1920?`hd`:n<=2560?`qhd`:n<=3840?`uhd`:`other`}function D(e,t){let n=`${e} ${t}`.toLowerCase();return n.includes(`apple`)||n.includes(`metal`)?`apple`:n.includes(`nvidia`)||n.includes(`geforce`)||n.includes(`quadro`)?`nvidia`:n.includes(`amd`)||n.includes(`radeon`)||n.includes(`ati`)?`amd`:n.includes(`intel`)?`intel`:n.includes(`mali`)?`mali`:n.includes(`adreno`)?`adreno`:`other`}var O=[`architecture`,`bitness`,`model`,`platformVersion`,`uaFullVersion`,`fullVersionList`],ne=class{name=`client_hints`;async collect(e){if(l(e),typeof navigator>`u`)throw Error(`navigator is not available`);let t=navigator.userAgentData;if(!t)return o({name:this.name,value:{brands:[],mobile:null,platform:``,highEntropy:!1,available:!1},normalizedValue:{browser:C(navigator.userAgent??``),platform:T(navigator.platform??navigator.userAgent??``),highEntropy:!1},quality:.35,stability:.7,entropyCategory:`medium`});let n={brands:Array.isArray(t.brands)?t.brands:[],mobile:typeof t.mobile==`boolean`?t.mobile:null,platform:t.platform??``,highEntropy:!1,available:!0},r={},i=!1;if(e.consent.highEntropy&&typeof t.getHighEntropyValues==`function`)try{r=await c(t.getHighEntropyValues([...O]),e.abortSignal),i=!0}catch{i=!1}let a={...n,...r,highEntropy:i},s=re(n.brands),u=typeof r.uaFullVersion==`string`?String(r.uaFullVersion):s?.version??``,d=s?`${s.brand} ${u}`:navigator.userAgent;return o({name:this.name,value:a,normalizedValue:{browser:C(d),platform:T(n.platform||navigator.platform||``),highEntropy:i},quality:i?.95:.7,stability:.75,entropyCategory:`medium`})}};function re(e){return e.find(e=>{let t=e.brand.toLowerCase();return t!==`not?a;brand`&&t!==`not a;brand`&&!t.includes(`not:`)})??e[0]??null}var k=`mmmmmmmmmmlli`,A=`monospace`,j=[`Arial`,`Times New Roman`,`Courier New`,`Georgia`,`Verdana`,`Roboto`],M=class{name=`fonts`;async collect(e){if(l(e),typeof document>`u`||!document.body)throw Error(`document.body is not available`);let t=N(k,A),n=j.filter(e=>N(k,`${e}, ${A}`)!==t);return o({name:this.name,value:n,normalizedValue:[...n].sort(),quality:.7,stability:.8,entropyCategory:`high`})}};function N(e,t){let n=document.createElement(`span`);n.style.cssText=[`position:absolute`,`left:-9999px`,`top:0`,`visibility:hidden`,`white-space:nowrap`,`font:72px ${t}`].join(`;`),n.textContent=e,document.body.appendChild(n);let r=n.offsetWidth;return document.body.removeChild(n),r}var P=class{name=`navigator`;async collect(e){if(l(e),typeof navigator>`u`)throw Error(`navigator is not available`);let t=navigator.userAgent??``,n=navigator.platform??``,r=Array.isArray(navigator.languages)?[...navigator.languages]:[],i=navigator,a={userAgent:t,platform:n,language:navigator.language??``,languages:r,hardwareConcurrency:navigator.hardwareConcurrency??null,deviceMemory:typeof i.deviceMemory==`number`?i.deviceMemory:null,maxTouchPoints:navigator.maxTouchPoints??0,vendor:navigator.vendor??``},s=C(t),c=T(n||t);return o({name:this.name,value:a,normalizedValue:{browser:s,platform:c,hardwareConcurrency:a.hardwareConcurrency},quality:t.length>0?.9:.4,stability:.8,entropyCategory:`medium`})}},F=class{name=`screen`;async collect(e){l(e);let t=typeof screen>`u`?null:screen;if(!t)throw Error(`screen is not available`);let n=I(t.width),r=I(t.height),i={width:n,height:r,availWidth:I(t.availWidth),availHeight:I(t.availHeight),colorDepth:I(t.colorDepth),pixelDepth:I(t.pixelDepth),pixelRatio:I(typeof devicePixelRatio==`number`?devicePixelRatio:1)},a=E(n,r);return o({name:this.name,value:i,normalizedValue:{screenClass:a,width:n,height:r},quality:n>0&&r>0?.95:.4,stability:.7,entropyCategory:`low`})}};function I(e){return Number.isFinite(e)?e:0}var L=class{name=`timezone`;async collect(e){l(e);let t=`UTC`;try{t=Intl.DateTimeFormat().resolvedOptions().timeZone||`UTC`}catch{t=`UTC`}let n=new Date().getTimezoneOffset(),r={timeZone:t,offsetMinutes:n};return o({name:this.name,value:r,normalizedValue:t,quality:t.length>0?.99:.3,stability:.85,entropyCategory:`low`})}},R=class{name=`webgl`;async collect(e){if(l(e),typeof document>`u`)throw Error(`document is not available`);let t=document.createElement(`canvas`);t.width=1,t.height=1;let n=z(t);if(!n)throw Error(`WebGL is not available`);try{let e=n.getExtension(`WEBGL_debug_renderer_info`),t=B(n,e?e.UNMASKED_VENDOR_WEBGL:n.VENDOR),r=B(n,e?e.UNMASKED_RENDERER_WEBGL:n.RENDERER),a=await i([...n.getSupportedExtensions()??[]].sort().join(`,`)),s=n.getParameter(n.MAX_VIEWPORT_DIMS),c={maxTextureSize:V(n,n.MAX_TEXTURE_SIZE),maxViewportDims:Array.isArray(s)?[Number(s[0]),Number(s[1])]:s instanceof Int32Array?[s[0]??0,s[1]??0]:null,maxRenderbufferSize:V(n,n.MAX_RENDERBUFFER_SIZE),maxVertexAttribs:V(n,n.MAX_VERTEX_ATTRIBS),maxFragmentUniformVectors:V(n,n.MAX_FRAGMENT_UNIFORM_VECTORS)},l={vendor:t,renderer:r,extensionsHash:a,limits:c},u=typeof r==`string`&&r.length>0,d=u&&e?.88:u?.7:.45;return o({name:this.name,value:l,normalizedValue:{gpuFamily:D(t??``,r??``),extensionsHash:a,maxTextureSize:c.maxTextureSize},quality:d,stability:.95,entropyCategory:`high`})}finally{n.getExtension(`WEBGL_lose_context`)?.loseContext()}}};function z(e){let t={alpha:!0,antialias:!1,depth:!1,failIfMajorPerformanceCaveat:!1,preserveDrawingBuffer:!1};return e.getContext(`webgl`,t)||e.getContext(`experimental-webgl`,t)}function B(e,t){try{let n=e.getParameter(t);return typeof n==`string`&&n.length>0?n:null}catch{return null}}function V(e,t){try{let n=e.getParameter(t);return typeof n==`number`&&Number.isFinite(n)?n:null}catch{return null}}var H=`X-Previous-Debug-Token`;function U(){if(typeof document>`u`)return;let e=document.querySelector(`[id^="sfwdt"]`);if(!(e instanceof Element)||!e.id.startsWith(`sfwdt`))return;let t=e.id.slice(5);return t.length>0?t:void 0}async function W(e,t,n){try{let r={"Content-Type":`application/json`},i=U();i!==void 0&&(r[H]=i);let a=await fetch(e,{method:`POST`,credentials:`same-origin`,headers:r,body:JSON.stringify(t),signal:n});if(!a.ok)return null;let o=await a.text();if(o.trim().length===0)return{ok:!0};let s=JSON.parse(o);return typeof s!=`object`||!s?{ok:!0}:s}catch{return null}}var G=`1.0.0`,K=`/_device/collect`,q=1500,J=3600,Y={audio:!0,canvas:!0,webgl:!0,screen:!0,timezone:!0,navigator:!0,clientHints:!0,capabilities:!0,automation:!0,fonts:!1},ie=class{endpoint;timeout;cacheTtl;cacheEnabled;consent;cache=new t;collectors=[];constructor(e={}){this.endpoint=e.endpoint??K,this.timeout=oe(e.timeout),this.cacheEnabled=e.cache?.enabled??!0,this.cacheTtl=e.cache?.ttl??J,this.consent={highEntropy:e.consent?.highEntropy??!0},this.collectors=ae({...Y,...e.collectors})}async collect(){return this.runCollect(!1)}async refresh(){return this.runCollect(!0)}getCachedObservation(){return this.cache.get()}clear(){this.cache.clear()}registerCollector(e){this.collectors.push(e)}async runCollect(e){try{if(!e&&this.cacheEnabled){let e=this.cache.get();if(e)return e.result}let t=new AbortController,n=globalThis.setTimeout(()=>t.abort(),this.timeout),r={timeout:this.timeout,abortSignal:t.signal,consent:this.consent},i={};try{i=await this.collectSignals(r)}finally{globalThis.clearTimeout(n)}let a=this.collectors.length,o=Object.keys(i).length,s=ol.abort(),this.timeout),d=null;try{d=await W(this.endpoint,c,l.signal)}finally{globalThis.clearTimeout(u)}let f=d===null,p=o>0,m={ok:!f&&p&&d?.ok!==!1,degraded:!!d?.degraded||s||f||!p,signals:i};d?.new!==void 0&&(m.new=d.new),d?.token!==void 0&&(m.token=d.token),d?.expiresAt!==void 0&&(m.expiresAt=d.expiresAt),d?.deviceId!==void 0&&(m.deviceId=d.deviceId),d?.confidence!==void 0&&(m.confidence=d.confidence),d?.risk!==void 0&&(m.risk=d.risk),(f||!p)&&(m.ok=!1,m.degraded=!0);let h={timestamp:Date.now(),signals:i,result:m};return this.cacheEnabled&&this.cache.set(h,this.cacheTtl),m}catch{return{ok:!1,degraded:!0,signals:{}}}}async collectSignals(e){let t={},n=this.collectors.map(async n=>{try{let r=await c(n.collect(e),e.abortSignal);r&&typeof r.name==`string`&&(t[r.name]=r)}catch{}}),r=Promise.all(n),i=ce(this.timeout,e.abortSignal);return await Promise.race([r,i]),await Promise.allSettled(n),t}toPayload(e){let t={};for(let[n,r]of Object.entries(e))t[n]={value:r.value,quality:r.quality,collectedAt:r.collectedAt};return{v:1,sdkVersion:G,timestamp:Math.floor(Date.now()/1e3),nonce:se(),consent:this.consent,signals:t}}};function ae(e){let t=[];return e.navigator&&t.push(new P),e.clientHints&&t.push(new ne),e.screen&&t.push(new F),e.timezone&&t.push(new L),e.capabilities&&t.push(new b),e.automation&&t.push(new te),e.canvas&&t.push(new v),e.webgl&&t.push(new R),e.audio&&t.push(new p),e.fonts&&t.push(new M),t}function oe(e){return typeof e==`number`&&Number.isFinite(e)&&e>0?e:q}function se(){let e=new Uint8Array(16);if(globalThis.crypto?.getRandomValues)globalThis.crypto.getRandomValues(e);else for(let t=0;t{if(t.aborted){n();return}let r=globalThis.setTimeout(n,e);t.addEventListener(`abort`,()=>{globalThis.clearTimeout(r),n()},{once:!0})})}var X={script:`color:#0ea5e9;font-weight:bold`,debug:`color:#6b7280`,info:`color:#2563eb`,warn:`color:#d97706`,error:`color:#dc2626;font-weight:bold`},Z={script:`đŸ“Ļ`,debug:`🔍`,info:`â„šī¸`,warn:`âš ī¸`,error:`❌`};function le(e){return e.map(e=>typeof e==`object`&&e&&!(e instanceof Error)?JSON.stringify(e):e)}function ue(e,t){if(t!==void 0&&t!==``){console.log(`%c${Z.script} ${e} script loaded, build time: %c${t}`,X.script,`color:#059669`);return}console.log(`%c${Z.script} ${e} script loaded`,X.script)}function Q(e,t,n){let r=Z[e],i=X[e],a=`%c${r} ${t}`,o=console[e];if(n.length>0){o(a,i,...le(n));return}o(a,i)}function $(e,t,n){return(...r)=>{e()&&Q(n,t,r)}}function de(e,t={}){let n=`[${e}]`,{buildTime:r,alwaysLog:i=!1}=t,a=i===!0,o=a;return{scriptLoaded(){ue(n,r)},setDebug(e){o=a?!0:e},debug:$(()=>o,n,`debug`),info:$(()=>o,n,`info`),warn:$(()=>o,n,`warn`),error:$(()=>o,n,`error`)}}return de(`device-intelligence`,{buildTime:`2026-08-26T07:08:33.857Z`}).scriptLoaded(),e.DeviceIntelligence=ie,e.MemoryCache=t,e.SDK_VERSION=G,e.normalizeBrowser=C,e.normalizeGpuFamily=D,e.normalizePlatform=T,e.normalizeScreenClass=E,e})({});globalThis.DeviceIntelligence=DeviceIntelligence.DeviceIntelligence; +var DeviceIntelligence=(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=class{entry=null;get(){return this.entry===null?null:Date.now()>=this.entry.expiresAt?(this.entry=null,null):this.entry.value}set(e,t){let n=t*1e3;this.entry={value:e,expiresAt:Date.now()+n},n<=0&&(this.entry=null)}clear(){this.entry=null}has(){return this.get()!==null}},n=16;async function r(e){let t=globalThis.crypto?.subtle;if(!t)throw Error(`WebCrypto SubtleCrypto is not available`);let n=typeof e==`string`?new TextEncoder().encode(e):e,r=await t.digest(`SHA-256`,n),i=new Uint8Array(r),a=``;for(let e=0;e1?1:e}function o(e){return{name:e.name,value:e.value,normalizedValue:e.normalizedValue,quality:a(e.quality),stability:a(e.stability),entropyCategory:e.entropyCategory,collectedAt:e.collectedAt??Date.now()}}function s(e){return new Promise((t,n)=>{let r=()=>{n(new DOMException(`The operation was aborted.`,`AbortError`))};if(e.aborted){r();return}e.addEventListener(`abort`,r,{once:!0})})}function c(e,t){return Promise.race([e,s(t)])}function l(e){if(e.abortSignal.aborted)throw new DOMException(`The operation was aborted.`,`AbortError`)}var u=44100,d=44100,f=256,p=class{name=`audio`;async collect(e){l(e);let t=m();if(!t)throw Error(`OfflineAudioContext is not available`);let n=new t(1,d,u),r=n.createOscillator();r.type=`triangle`,r.frequency.value=1e4;let a=n.createDynamicsCompressor();a.threshold.value=-50,a.knee.value=40,a.ratio.value=12,a.attack.value=0,a.release.value=.25,r.connect(a),a.connect(n.destination),r.start(0);let s=await i(h((await c(n.startRendering(),e.abortSignal)).getChannelData(0),f).join(`,`));return o({name:this.name,value:s,normalizedValue:s,quality:.85,stability:.9,entropyCategory:`high`})}};function m(){let e=globalThis;return e.OfflineAudioContext??e.webkitOfflineAudioContext??null}function h(e,t){let n=Math.max(1,Math.floor(e.length/t)),r=[];for(let i=0;i`u`?null:navigator,r=n?.userAgent??``;n&&n.webdriver===!0&&t.push(`webdriver`),!n||!Array.isArray(n.languages)||n.languages.length===0?t.push(`missing-languages`):n.language&&n.languages[0]&&n.language!==n.languages[0]&&t.push(`language-mismatch`),!n||typeof n.hardwareConcurrency!=`number`?t.push(`missing-hardware-concurrency`):(n.hardwareConcurrency<=0||n.hardwareConcurrency>128)&&t.push(`implausible-hardware-concurrency`),/headless/i.test(r)&&t.push(`headless-ua`),/HeadlessChrome/i.test(r)&&t.push(`headless-chrome`),typeof window<`u`&&window.outerWidth===0&&window.outerHeight===0&&t.push(`zero-outer-size`);let i={indicators:t,confidence:a(t.reduce((e,t)=>e+(ee[t]??.15),0))};return o({name:this.name,value:i,normalizedValue:i,quality:.8,stability:.5,entropyCategory:`low`})}},g=280,_=80,v=class{name=`canvas`;async collect(e){if(l(e),typeof document>`u`)throw Error(`document is not available`);let t=document.createElement(`canvas`);t.width=g,t.height=_,t.style.display=`none`;let n=t.getContext(`2d`,{willReadFrequently:!0});if(!n)throw Error(`CanvasRenderingContext2D is not available`);y(n);let r=await i(n.getImageData(0,0,g,_).data);return o({name:this.name,value:r,normalizedValue:r,quality:.92,stability:.95,entropyCategory:`high`})}};function y(e){e.fillStyle=`#f60`,e.fillRect(8,8,90,48),e.fillStyle=`#069`,e.fillRect(108,12,70,40),e.strokeStyle=`#111827`,e.lineWidth=2,e.beginPath(),e.arc(220,36,26,0,Math.PI*2),e.stroke(),e.beginPath(),e.arc(248,52,14,.25*Math.PI,1.6*Math.PI),e.stroke(),e.fillStyle=`#111827`,e.font=`16px Arial, sans-serif`,e.textBaseline=`top`,e.fillText(`DeviceIntelligence`,12,58),e.fillStyle=`rgba(16, 185, 129, 0.45)`,e.fillRect(40,20,36,18)}var b=class{name=`capabilities`;async collect(e){l(e);let t=typeof navigator>`u`?null:navigator,n=typeof window>`u`?null:window,r={cookieEnabled:t?.cookieEnabled??!1,pdfViewerEnabled:!!t?.pdfViewerEnabled,serviceWorker:!!(t&&`serviceWorker`in t),webgl:x(),webgpu:!!(t&&`gpu`in t),wasm:typeof WebAssembly<`u`,sharedArrayBuffer:typeof SharedArrayBuffer<`u`,touch:(t?.maxTouchPoints??0)>0,matchMedia:typeof n?.matchMedia==`function`,localStorage:S(`localStorage`),sessionStorage:S(`sessionStorage`),indexedDB:typeof indexedDB<`u`},i=Object.entries(r).filter(([,e])=>e).map(([e])=>e).sort();return o({name:this.name,value:r,normalizedValue:i,quality:.9,stability:.9,entropyCategory:`medium`})}};function x(){if(typeof document>`u`||typeof navigator<`u`&&/jsdom/i.test(navigator.userAgent))return!1;try{let e=document.createElement(`canvas`);return!!(e.getContext(`webgl`)||e.getContext(`experimental-webgl`))}catch{return!1}}function S(e){try{let t=globalThis[e],n=`__di_cap__`;return t.setItem(n,`1`),t.removeItem(n),!0}catch{return!1}}function C(e){let t=e.trim();return t.length===0?`other`:/Edg(?:e|A|iOS)?\/|\bEdge\//i.test(t)||/^Edge\s/i.test(t)?w(t,`Edge`,/(?:Edg(?:e|A|iOS)?|Edge)[/\s](\d+)/i):/\bOPR\/|\bOpera\//i.test(t)||/^Opera\s/i.test(t)?w(t,`Opera`,/(?:OPR|Opera)[/\s](\d+)/i):/\bFirefox\/|\bFxiOS\//i.test(t)||/^Firefox\s/i.test(t)?w(t,`Firefox`,/(?:Firefox|FxiOS)[/\s](\d+)/i):/^Chrome\s+\d+/i.test(t)?w(t,`Chrome`,/^Chrome\s+(\d+)/i):/\bSafari\//i.test(t)&&/\bVersion\//i.test(t)&&!/\b(Chrome|Chromium|CriOS|Edg|OPR)\b/i.test(t)||/^Safari\s/i.test(t)?w(t,`Safari`,/(?:Version|Safari)[/\s](\d+)/i):/\b(Chrome|Chromium|CriOS)\//i.test(t)?w(t,`Chrome`,/(?:Chrome|Chromium|CriOS)\/(\d+)/i):`other`}function w(e,t,n){let r=e.match(n)?.[1];return r?`${t} ${r}`:t}function T(e){let t=e.toLowerCase();return t.includes(`win`)?`windows`:t.includes(`android`)?`android`:t.includes(`iphone`)||t.includes(`ipad`)||t.includes(`ipod`)||t.includes(`ios`)?`ios`:t.includes(`mac`)||t.includes(`darwin`)?`macos`:t.includes(`linux`)||t.includes(`x11`)||t.includes(`cros`)?`linux`:`other`}function E(e,t){let n=Math.max(e,t);return!Number.isFinite(n)||n<=0?`other`:n<=480?`mobile-s`:n<=767?`mobile-l`:n<=1280?`tablet`:n<=1920?`hd`:n<=2560?`qhd`:n<=3840?`uhd`:`other`}function D(e,t){let n=`${e} ${t}`.toLowerCase();return n.includes(`apple`)||n.includes(`metal`)?`apple`:n.includes(`nvidia`)||n.includes(`geforce`)||n.includes(`quadro`)?`nvidia`:n.includes(`amd`)||n.includes(`radeon`)||n.includes(`ati`)?`amd`:n.includes(`intel`)?`intel`:n.includes(`mali`)?`mali`:n.includes(`adreno`)?`adreno`:`other`}var O=[`architecture`,`bitness`,`model`,`platformVersion`,`uaFullVersion`,`fullVersionList`],ne=class{name=`client_hints`;async collect(e){if(l(e),typeof navigator>`u`)throw Error(`navigator is not available`);let t=navigator.userAgentData;if(!t)return o({name:this.name,value:{brands:[],mobile:null,platform:``,highEntropy:!1,available:!1},normalizedValue:{browser:C(navigator.userAgent??``),platform:T(navigator.platform??navigator.userAgent??``),highEntropy:!1},quality:.35,stability:.7,entropyCategory:`medium`});let n={brands:Array.isArray(t.brands)?t.brands:[],mobile:typeof t.mobile==`boolean`?t.mobile:null,platform:t.platform??``,highEntropy:!1,available:!0},r={},i=!1;if(e.consent.highEntropy&&typeof t.getHighEntropyValues==`function`)try{r=await c(t.getHighEntropyValues([...O]),e.abortSignal),i=!0}catch{i=!1}let a={...n,...r,highEntropy:i},s=re(n.brands),u=typeof r.uaFullVersion==`string`?String(r.uaFullVersion):s?.version??``,d=s?`${s.brand} ${u}`:navigator.userAgent;return o({name:this.name,value:a,normalizedValue:{browser:C(d),platform:T(n.platform||navigator.platform||``),highEntropy:i},quality:i?.95:.7,stability:.75,entropyCategory:`medium`})}};function re(e){return e.find(e=>{let t=e.brand.toLowerCase();return t!==`not?a;brand`&&t!==`not a;brand`&&!t.includes(`not:`)})??e[0]??null}var k=`mmmmmmmmmmlli`,A=`monospace`,j=[`Arial`,`Times New Roman`,`Courier New`,`Georgia`,`Verdana`,`Roboto`],M=class{name=`fonts`;async collect(e){if(l(e),typeof document>`u`||!document.body)throw Error(`document.body is not available`);let t=N(k,A),n=j.filter(e=>N(k,`${e}, ${A}`)!==t);return o({name:this.name,value:n,normalizedValue:[...n].sort(),quality:.7,stability:.8,entropyCategory:`high`})}};function N(e,t){let n=document.createElement(`span`);n.style.cssText=[`position:absolute`,`left:-9999px`,`top:0`,`visibility:hidden`,`white-space:nowrap`,`font:72px ${t}`].join(`;`),n.textContent=e,document.body.appendChild(n);let r=n.offsetWidth;return document.body.removeChild(n),r}var P=class{name=`navigator`;async collect(e){if(l(e),typeof navigator>`u`)throw Error(`navigator is not available`);let t=navigator.userAgent??``,n=navigator.platform??``,r=Array.isArray(navigator.languages)?[...navigator.languages]:[],i=navigator,a={userAgent:t,platform:n,language:navigator.language??``,languages:r,hardwareConcurrency:navigator.hardwareConcurrency??null,deviceMemory:typeof i.deviceMemory==`number`?i.deviceMemory:null,maxTouchPoints:navigator.maxTouchPoints??0,vendor:navigator.vendor??``},s=C(t),c=T(n||t);return o({name:this.name,value:a,normalizedValue:{browser:s,platform:c,hardwareConcurrency:a.hardwareConcurrency},quality:t.length>0?.9:.4,stability:.8,entropyCategory:`medium`})}},F=class{name=`screen`;async collect(e){l(e);let t=typeof screen>`u`?null:screen;if(!t)throw Error(`screen is not available`);let n=I(t.width),r=I(t.height),i={width:n,height:r,availWidth:I(t.availWidth),availHeight:I(t.availHeight),colorDepth:I(t.colorDepth),pixelDepth:I(t.pixelDepth),pixelRatio:I(typeof devicePixelRatio==`number`?devicePixelRatio:1)},a=E(n,r);return o({name:this.name,value:i,normalizedValue:{screenClass:a,width:n,height:r},quality:n>0&&r>0?.95:.4,stability:.7,entropyCategory:`low`})}};function I(e){return Number.isFinite(e)?e:0}var L=class{name=`timezone`;async collect(e){l(e);let t=`UTC`;try{t=Intl.DateTimeFormat().resolvedOptions().timeZone||`UTC`}catch{t=`UTC`}let n=new Date().getTimezoneOffset(),r={timeZone:t,offsetMinutes:n};return o({name:this.name,value:r,normalizedValue:t,quality:t.length>0?.99:.3,stability:.85,entropyCategory:`low`})}},R=class{name=`webgl`;async collect(e){if(l(e),typeof document>`u`)throw Error(`document is not available`);let t=document.createElement(`canvas`);t.width=1,t.height=1;let n=z(t);if(!n)throw Error(`WebGL is not available`);try{let e=n.getExtension(`WEBGL_debug_renderer_info`),t=B(n,e?e.UNMASKED_VENDOR_WEBGL:n.VENDOR),r=B(n,e?e.UNMASKED_RENDERER_WEBGL:n.RENDERER),a=await i([...n.getSupportedExtensions()??[]].sort().join(`,`)),s=n.getParameter(n.MAX_VIEWPORT_DIMS),c={maxTextureSize:V(n,n.MAX_TEXTURE_SIZE),maxViewportDims:Array.isArray(s)?[Number(s[0]),Number(s[1])]:s instanceof Int32Array?[s[0]??0,s[1]??0]:null,maxRenderbufferSize:V(n,n.MAX_RENDERBUFFER_SIZE),maxVertexAttribs:V(n,n.MAX_VERTEX_ATTRIBS),maxFragmentUniformVectors:V(n,n.MAX_FRAGMENT_UNIFORM_VECTORS)},l={vendor:t,renderer:r,extensionsHash:a,limits:c},u=typeof r==`string`&&r.length>0,d=u&&e?.88:u?.7:.45;return o({name:this.name,value:l,normalizedValue:{gpuFamily:D(t??``,r??``),extensionsHash:a,maxTextureSize:c.maxTextureSize},quality:d,stability:.95,entropyCategory:`high`})}finally{n.getExtension(`WEBGL_lose_context`)?.loseContext()}}};function z(e){let t={alpha:!0,antialias:!1,depth:!1,failIfMajorPerformanceCaveat:!1,preserveDrawingBuffer:!1};return e.getContext(`webgl`,t)||e.getContext(`experimental-webgl`,t)}function B(e,t){try{let n=e.getParameter(t);return typeof n==`string`&&n.length>0?n:null}catch{return null}}function V(e,t){try{let n=e.getParameter(t);return typeof n==`number`&&Number.isFinite(n)?n:null}catch{return null}}var H=`X-Previous-Debug-Token`;function U(){if(typeof document>`u`)return;let e=document.querySelector(`[id^="sfwdt"]`);if(!(e instanceof Element)||!e.id.startsWith(`sfwdt`))return;let t=e.id.slice(5);return t.length>0?t:void 0}async function W(e,t,n){try{let r={"Content-Type":`application/json`},i=U();i!==void 0&&(r[H]=i);let a=await fetch(e,{method:`POST`,credentials:`same-origin`,headers:r,body:JSON.stringify(t),signal:n});if(!a.ok)return null;let o=await a.text();if(o.trim().length===0)return{ok:!0};let s=JSON.parse(o);return typeof s!=`object`||!s?{ok:!0}:s}catch{return null}}var G=`1.0.0`,K=`/_device/collect`,q=1500,J=3600,Y={audio:!0,canvas:!0,webgl:!0,screen:!0,timezone:!0,navigator:!0,clientHints:!0,capabilities:!0,automation:!0,fonts:!1},ie=class{endpoint;timeout;cacheTtl;cacheEnabled;consent;cache=new t;collectors=[];constructor(e={}){this.endpoint=e.endpoint??K,this.timeout=oe(e.timeout),this.cacheEnabled=e.cache?.enabled??!0,this.cacheTtl=e.cache?.ttl??J,this.consent={highEntropy:e.consent?.highEntropy??!0},this.collectors=ae({...Y,...e.collectors})}async collect(){return this.runCollect(!1)}async refresh(){return this.runCollect(!0)}getCachedObservation(){return this.cache.get()}clear(){this.cache.clear()}registerCollector(e){this.collectors.push(e)}async runCollect(e){try{if(!e&&this.cacheEnabled){let e=this.cache.get();if(e)return e.result}let t=new AbortController,n=globalThis.setTimeout(()=>t.abort(),this.timeout),r={timeout:this.timeout,abortSignal:t.signal,consent:this.consent},i={};try{i=await this.collectSignals(r)}finally{globalThis.clearTimeout(n)}let a=this.collectors.length,o=Object.keys(i).length,s=ol.abort(),this.timeout),d=null;try{d=await W(this.endpoint,c,l.signal)}finally{globalThis.clearTimeout(u)}let f=d===null,p=o>0,m={ok:!f&&p&&d?.ok!==!1,degraded:!!d?.degraded||s||f||!p,signals:i};d?.new!==void 0&&(m.new=d.new),d?.token!==void 0&&(m.token=d.token),d?.expiresAt!==void 0&&(m.expiresAt=d.expiresAt),d?.deviceId!==void 0&&(m.deviceId=d.deviceId),d?.confidence!==void 0&&(m.confidence=d.confidence),d?.risk!==void 0&&(m.risk=d.risk),(f||!p)&&(m.ok=!1,m.degraded=!0);let h={timestamp:Date.now(),signals:i,result:m};return this.cacheEnabled&&this.cache.set(h,this.cacheTtl),m}catch{return{ok:!1,degraded:!0,signals:{}}}}async collectSignals(e){let t={},n=this.collectors.map(async n=>{try{let r=await c(n.collect(e),e.abortSignal);r&&typeof r.name==`string`&&(t[r.name]=r)}catch{}}),r=Promise.all(n),i=ce(this.timeout,e.abortSignal);return await Promise.race([r,i]),await Promise.allSettled(n),t}toPayload(e){let t={};for(let[n,r]of Object.entries(e))t[n]={value:r.value,quality:r.quality,collectedAt:r.collectedAt};return{v:1,sdkVersion:G,timestamp:Math.floor(Date.now()/1e3),nonce:se(),consent:this.consent,signals:t}}};function ae(e){let t=[];return e.navigator&&t.push(new P),e.clientHints&&t.push(new ne),e.screen&&t.push(new F),e.timezone&&t.push(new L),e.capabilities&&t.push(new b),e.automation&&t.push(new te),e.canvas&&t.push(new v),e.webgl&&t.push(new R),e.audio&&t.push(new p),e.fonts&&t.push(new M),t}function oe(e){return typeof e==`number`&&Number.isFinite(e)&&e>0?e:q}function se(){let e=new Uint8Array(16);if(globalThis.crypto?.getRandomValues)globalThis.crypto.getRandomValues(e);else for(let t=0;t{if(t.aborted){n();return}let r=globalThis.setTimeout(n,e);t.addEventListener(`abort`,()=>{globalThis.clearTimeout(r),n()},{once:!0})})}var X={script:`color:#0ea5e9;font-weight:bold`,debug:`color:#6b7280`,info:`color:#2563eb`,warn:`color:#d97706`,error:`color:#dc2626;font-weight:bold`},Z={script:`đŸ“Ļ`,debug:`🔍`,info:`â„šī¸`,warn:`âš ī¸`,error:`❌`};function le(e){return e.map(e=>typeof e==`object`&&e&&!(e instanceof Error)?JSON.stringify(e):e)}function ue(e,t){if(t!==void 0&&t!==``){console.log(`%c${Z.script} ${e} script loaded, build time: %c${t}`,X.script,`color:#059669`);return}console.log(`%c${Z.script} ${e} script loaded`,X.script)}function Q(e,t,n){let r=Z[e],i=X[e],a=`%c${r} ${t}`,o=console[e];if(n.length>0){o(a,i,...le(n));return}o(a,i)}function $(e,t,n){return(...r)=>{e()&&Q(n,t,r)}}function de(e,t={}){let n=`[${e}]`,{buildTime:r,alwaysLog:i=!1}=t,a=i===!0,o=a;return{scriptLoaded(){ue(n,r)},setDebug(e){o=a?!0:e},debug:$(()=>o,n,`debug`),info:$(()=>o,n,`info`),warn:$(()=>o,n,`warn`),error:$(()=>o,n,`error`)}}return de(`device-intelligence`,{buildTime:`2026-08-31T08:19:30.941Z`}).scriptLoaded(),e.DeviceIntelligence=ie,e.MemoryCache=t,e.SDK_VERSION=G,e.normalizeBrowser=C,e.normalizeGpuFamily=D,e.normalizePlatform=T,e.normalizeScreenClass=E,e})({});globalThis.DeviceIntelligence=DeviceIntelligence.DeviceIntelligence; //# sourceMappingURL=device-intelligence.min.js.map \ No newline at end of file