diff --git a/package.json b/package.json index 5b65403..286f47c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "aelf-sdk", - "version": "3.5.0-beta.9", + "version": "3.5.0-beta.10", "description": "aelf-sdk js library", "type": "module", "main": "dist/aelf.cjs", @@ -93,6 +93,7 @@ "@aws-crypto/sha256-js": "^5.0.0", "@babel/plugin-proposal-optional-chaining": "^7.21.0", "@babel/runtime": "^7.4.5", + "@scure/base": "^2.0.0", "@scure/bip32": "^2.0.0", "@typescript-eslint/parser": "^5.47.1", "babel-plugin-rewire": "^1.2.0", @@ -100,7 +101,6 @@ "bip39": "^3.0.2", "bn.js": "^5.2.1", "browserify-cipher": "^1.0.1", - "bs58": "^4.0.1", "buffer": "^5.2.1", "crypto-js": "^4.2.0", "elliptic": "^6.4.1", diff --git a/src/util/formatters.js b/src/util/formatters.js index ba0555b..d30bd73 100644 --- a/src/util/formatters.js +++ b/src/util/formatters.js @@ -5,12 +5,15 @@ * @date 2015 */ import descriptor from '@aelfqueen/protobufjs/ext/descriptor/index.js'; -import bs58 from 'bs58'; +// import bs58 from 'bs58'; +import { base58 as bs58 } from '@scure/base'; import { base58 } from './utils.js'; const getByteCountByAddress = base58Str => { // convert a Base58 string to a binary array and get its byte count - const buffer = bs58.decode(base58Str); + // @scure/base returns Uint8Array, convert to Buffer + const decoded = bs58.decode(base58Str); + const buffer = Buffer.from(decoded); // get byte const byteCount = buffer.length; // last four digits are the checksum diff --git a/src/util/utils.js b/src/util/utils.js index 8c105de..6671324 100644 --- a/src/util/utils.js +++ b/src/util/utils.js @@ -4,7 +4,8 @@ */ import BigNumber from 'bignumber.js'; -import bs58 from 'bs58'; +// import bs58 from 'bs58'; +import { base58 as bs58 } from '@scure/base'; import { UNIT_MAP, UNSIGNED_256_INT } from '../common/unitConstants.js'; import sha256 from './sha256.js'; @@ -21,10 +22,13 @@ export const base58 = { hash = Buffer.from(sha256(result), 'hex'); hash = Buffer.from(sha256(hash), 'hex'); hash = Buffer.from(result.toString('hex') + hash.slice(0, 4).toString('hex'), 'hex'); - return bs58.encode(hash); + // Convert Buffer to Uint8Array for @scure/base + return bs58.encode(new Uint8Array(hash)); }, decode(str, encoding) { - const buffer = Buffer.from(bs58.decode(str)); + // @scure/base returns Uint8Array, convert to Buffer + const decoded = bs58.decode(str); + const buffer = Buffer.from(decoded); let data = buffer.slice(0, -4); let hash = data; hash = Buffer.from(sha256(hash), 'hex'); @@ -47,10 +51,13 @@ export const chainIdConvertor = { const bufferTemp = Buffer.alloc(4); bufferTemp.writeInt32LE(`0x${chainId.toString('16')}`, 0); const bytes = Buffer.concat([bufferTemp], 3); - return bs58.encode(bytes); + // Convert Buffer to Uint8Array for @scure/base + return bs58.encode(new Uint8Array(bytes)); }, base58ToChainId(base58String) { - return Buffer.concat([bs58.decode(base58String)], 4).readInt32LE(0); + // @scure/base returns Uint8Array, convert to Buffer + const decoded = bs58.decode(base58String); + return Buffer.concat([Buffer.from(decoded)], 4).readInt32LE(0); } }; diff --git a/test/compatibility/bs58-compatibility.test.js b/test/compatibility/bs58-compatibility.test.js new file mode 100644 index 0000000..693a06e --- /dev/null +++ b/test/compatibility/bs58-compatibility.test.js @@ -0,0 +1,184 @@ +/** + * @file bs58 compatibility tests + * @description Tests to verify compatibility between bs58 and @scure/base + * This ensures that both implementations produce identical results + */ + +import { describe, it, expect } from 'vitest'; +import bs58 from 'bs58'; +import { base58 as scureBase58 } from '@scure/base'; + +describe('bs58 Compatibility Tests', () => { + // Test data - various types of input + const testCases = [ + { + name: 'simple hex string', + input: '48656c6c6f20576f726c64', // "Hello World" in hex + encoding: 'hex' + }, + { + name: 'empty buffer', + input: '', + encoding: 'hex' + }, + { + name: 'single byte', + input: 'ff', + encoding: 'hex' + }, + { + name: '32 bytes (typical hash)', + input: 'a1b2c3d4e5f6789012345678901234567890abcdef1234567890abcdef123456', + encoding: 'hex' + }, + { + name: 'address-like data (33 bytes)', + input: 'a1b2c3d4e5f6789012345678901234567890abcdef1234567890abcdef12345678', + encoding: 'hex' + }, + { + name: 'chain ID data (3 bytes)', + input: '123456', + encoding: 'hex' + } + ]; + + describe('Direct encoding/decoding compatibility', () => { + testCases.forEach(({ name, input, encoding }) => { + it(`should produce identical results for ${name}`, () => { + const buffer = Buffer.from(input, encoding); + + // Test bs58 + const bs58Encoded = bs58.encode(buffer); + const bs58Decoded = bs58.decode(bs58Encoded); + + // Test @scure/base with Uint8Array + const uint8Array = new Uint8Array(buffer); + const scureEncoded = scureBase58.encode(uint8Array); + const scureDecoded = scureBase58.decode(scureEncoded); + + // Results should be identical + expect(scureEncoded).toBe(bs58Encoded); + expect(Buffer.from(scureDecoded).toString('hex')).toBe(Buffer.from(bs58Decoded).toString('hex')); + }); + }); + }); + + describe('Buffer vs Uint8Array conversion', () => { + it('should handle Buffer to Uint8Array conversion correctly', () => { + const testData = '48656c6c6f20576f726c64'; + const buffer = Buffer.from(testData, 'hex'); + const uint8Array = new Uint8Array(buffer); + + // Both should produce same result + const bs58Result = bs58.encode(buffer); + const scureResult = scureBase58.encode(uint8Array); + + expect(scureResult).toBe(bs58Result); + }); + + it('should handle Uint8Array to Buffer conversion correctly', () => { + const testData = '48656c6c6f20576f726c64'; + const uint8Array = new Uint8Array(Buffer.from(testData, 'hex')); + + const encoded = scureBase58.encode(uint8Array); + const decoded = scureBase58.decode(encoded); + + // Convert back to Buffer for comparison + const buffer = Buffer.from(decoded); + expect(buffer.toString('hex')).toBe(testData); + }); + }); + + describe('Edge cases', () => { + it('should handle zero bytes correctly', () => { + const zeroBuffer = Buffer.alloc(10, 0); + const zeroUint8Array = new Uint8Array(zeroBuffer); + + const bs58Result = bs58.encode(zeroBuffer); + const scureResult = scureBase58.encode(zeroUint8Array); + + expect(scureResult).toBe(bs58Result); + }); + + it('should handle maximum byte values correctly', () => { + const maxBuffer = Buffer.alloc(10, 0xff); + const maxUint8Array = new Uint8Array(maxBuffer); + + const bs58Result = bs58.encode(maxBuffer); + const scureResult = scureBase58.encode(maxUint8Array); + + expect(scureResult).toBe(bs58Result); + }); + + it('should handle mixed byte values correctly', () => { + const mixedBuffer = Buffer.from([0x00, 0xff, 0x7f, 0x80, 0x01, 0xfe]); + const mixedUint8Array = new Uint8Array(mixedBuffer); + + const bs58Result = bs58.encode(mixedBuffer); + const scureResult = scureBase58.encode(mixedUint8Array); + + expect(scureResult).toBe(bs58Result); + }); + }); + + describe('Round-trip compatibility', () => { + testCases.forEach(({ name, input, encoding }) => { + it(`should maintain data integrity through round-trip for ${name}`, () => { + const originalBuffer = Buffer.from(input, encoding); + const originalUint8Array = new Uint8Array(originalBuffer); + + // Encode with @scure/base + const encoded = scureBase58.encode(originalUint8Array); + + // Decode with @scure/base + const decoded = scureBase58.decode(encoded); + const resultBuffer = Buffer.from(decoded); + + // Should match original + expect(resultBuffer.toString('hex')).toBe(originalBuffer.toString('hex')); + }); + }); + }); + + describe('Error handling compatibility', () => { + it('should handle invalid base58 strings similarly', () => { + const invalidStrings = [ + '0', // contains invalid character + 'O', // contains invalid character + 'I', // contains invalid character + 'l', // contains invalid character + 'invalid!@#', // contains invalid characters + ]; + + invalidStrings.forEach(invalidStr => { + expect(() => bs58.decode(invalidStr)).toThrow(); + expect(() => scureBase58.decode(invalidStr)).toThrow(); + }); + }); + + it('should handle empty string consistently', () => { + // Empty string might be handled differently by different libraries + const emptyStr = ''; + + // Test if both throw or both don't throw + let bs58Throws = false; + let scureThrows = false; + + try { + bs58.decode(emptyStr); + } catch (e) { + bs58Throws = true; + } + + try { + scureBase58.decode(emptyStr); + } catch (e) { + scureThrows = true; + } + + // Both should behave the same way + expect(bs58Throws).toBe(scureThrows); + }); + }); +}); diff --git a/yarn.lock b/yarn.lock index 2e69bdc..0e148b6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -87,9 +87,9 @@ tslib "^2.6.2" "@aws-sdk/types@^3.222.0": - version "3.887.0" - resolved "https://registry.npmjs.org/@aws-sdk/types/-/types-3.887.0.tgz#989f3b67d7ddb97443e4bdb80ad2313c604b240d" - integrity sha512-fmTEJpUhsPsovQ12vZSpVTEP/IaRoJAMBGQXlQNjtCpkBp6Iq3KQDa/HDaPINE+3xxo6XvTdtibsNOd5zJLV9A== + version "3.893.0" + resolved "https://registry.npmjs.org/@aws-sdk/types/-/types-3.893.0.tgz#1afbdb9d62bf86caeac380e3cac11a051076400a" + integrity sha512-Aht1nn5SnA0N+Tjv0dzhAY7CQbxVtmq1bBR6xI0MhG7p2XYVh1wXuKTzrldEvQWwA3odOYunAfT9aBiKZx9qIg== dependencies: "@smithy/types" "^4.5.0" tslib "^2.6.2" @@ -1457,117 +1457,122 @@ resolved "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw== -"@rollup/rollup-android-arm-eabi@4.50.2": - version "4.50.2" - resolved "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.50.2.tgz#52d66eba5198155f265f54aed94d2489c49269f6" - integrity sha512-uLN8NAiFVIRKX9ZQha8wy6UUs06UNSZ32xj6giK/rmMXAgKahwExvK6SsmgU5/brh4w/nSgj8e0k3c1HBQpa0A== - -"@rollup/rollup-android-arm64@4.50.2": - version "4.50.2" - resolved "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.50.2.tgz#137e8153fc9ce6757531ce300b8d2262299f758e" - integrity sha512-oEouqQk2/zxxj22PNcGSskya+3kV0ZKH+nQxuCCOGJ4oTXBdNTbv+f/E3c74cNLeMO1S5wVWacSws10TTSB77g== - -"@rollup/rollup-darwin-arm64@4.50.2": - version "4.50.2" - resolved "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.50.2.tgz#d4afd904386d37192cf5ef7345fdb0dd1bac0bc3" - integrity sha512-OZuTVTpj3CDSIxmPgGH8en/XtirV5nfljHZ3wrNwvgkT5DQLhIKAeuFSiwtbMto6oVexV0k1F1zqURPKf5rI1Q== - -"@rollup/rollup-darwin-x64@4.50.2": - version "4.50.2" - resolved "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.50.2.tgz#6dbe83431fc7cbc09a2b6ed2b9fb7a62dd66ebc2" - integrity sha512-Wa/Wn8RFkIkr1vy1k1PB//VYhLnlnn5eaJkfTQKivirOvzu5uVd2It01ukeQstMursuz7S1bU+8WW+1UPXpa8A== - -"@rollup/rollup-freebsd-arm64@4.50.2": - version "4.50.2" - resolved "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.50.2.tgz#d35afb9f66154b557b3387d12450920f8a954b96" - integrity sha512-QkzxvH3kYN9J1w7D1A+yIMdI1pPekD+pWx7G5rXgnIlQ1TVYVC6hLl7SOV9pi5q9uIDF9AuIGkuzcbF7+fAhow== - -"@rollup/rollup-freebsd-x64@4.50.2": - version "4.50.2" - resolved "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.50.2.tgz#849303ecdc171a420317ad9166a70af308348f34" - integrity sha512-dkYXB0c2XAS3a3jmyDkX4Jk0m7gWLFzq1C3qUnJJ38AyxIF5G/dyS4N9B30nvFseCfgtCEdbYFhk0ChoCGxPog== - -"@rollup/rollup-linux-arm-gnueabihf@4.50.2": - version "4.50.2" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.50.2.tgz#ab36199ca613376232794b2f3ba10e2b547a447c" - integrity sha512-9VlPY/BN3AgbukfVHAB8zNFWB/lKEuvzRo1NKev0Po8sYFKx0i+AQlCYftgEjcL43F2h9Ui1ZSdVBc4En/sP2w== - -"@rollup/rollup-linux-arm-musleabihf@4.50.2": - version "4.50.2" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.50.2.tgz#f3704bc2eaecd176f558dc47af64197fcac36e8a" - integrity sha512-+GdKWOvsifaYNlIVf07QYan1J5F141+vGm5/Y8b9uCZnG/nxoGqgCmR24mv0koIWWuqvFYnbURRqw1lv7IBINw== - -"@rollup/rollup-linux-arm64-gnu@4.50.2": - version "4.50.2" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.50.2.tgz#dda0b06fd1daedd00b34395a2fb4aaaa2ed6c32b" - integrity sha512-df0Eou14ojtUdLQdPFnymEQteENwSJAdLf5KCDrmZNsy1c3YaCNaJvYsEUHnrg+/DLBH612/R0xd3dD03uz2dg== - -"@rollup/rollup-linux-arm64-musl@4.50.2": - version "4.50.2" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.50.2.tgz#a018de66209051dad0c58e689e080326c3dd15b0" - integrity sha512-iPeouV0UIDtz8j1YFR4OJ/zf7evjauqv7jQ/EFs0ClIyL+by++hiaDAfFipjOgyz6y6xbDvJuiU4HwpVMpRFDQ== - -"@rollup/rollup-linux-loong64-gnu@4.50.2": - version "4.50.2" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.50.2.tgz#6e514f09988615e0c98fa5a34a88a30fec64d969" - integrity sha512-OL6KaNvBopLlj5fTa5D5bau4W82f+1TyTZRr2BdnfsrnQnmdxh4okMxR2DcDkJuh4KeoQZVuvHvzuD/lyLn2Kw== - -"@rollup/rollup-linux-ppc64-gnu@4.50.2": - version "4.50.2" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.50.2.tgz#9b2efebc7b4a1951e684a895fdee0fef26319e0d" - integrity sha512-I21VJl1w6z/K5OTRl6aS9DDsqezEZ/yKpbqlvfHbW0CEF5IL8ATBMuUx6/mp683rKTK8thjs/0BaNrZLXetLag== - -"@rollup/rollup-linux-riscv64-gnu@4.50.2": - version "4.50.2" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.50.2.tgz#a7104270e93d75789d1ba857b2c68ddf61f24f68" - integrity sha512-Hq6aQJT/qFFHrYMjS20nV+9SKrXL2lvFBENZoKfoTH2kKDOJqff5OSJr4x72ZaG/uUn+XmBnGhfr4lwMRrmqCQ== - -"@rollup/rollup-linux-riscv64-musl@4.50.2": - version "4.50.2" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.50.2.tgz#42d153f734a7b9fcacd764cc9bee6c207dca4db6" - integrity sha512-82rBSEXRv5qtKyr0xZ/YMF531oj2AIpLZkeNYxmKNN6I2sVE9PGegN99tYDLK2fYHJITL1P2Lgb4ZXnv0PjQvw== - -"@rollup/rollup-linux-s390x-gnu@4.50.2": - version "4.50.2" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.50.2.tgz#826ad73099f6fd57c083dc5329151b25404bc67d" - integrity sha512-4Q3S3Hy7pC6uaRo9gtXUTJ+EKo9AKs3BXKc2jYypEcMQ49gDPFU2P1ariX9SEtBzE5egIX6fSUmbmGazwBVF9w== - -"@rollup/rollup-linux-x64-gnu@4.50.2": - version "4.50.2" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.50.2.tgz#b9ec17bf0ca3f737d0895fca2115756674342142" - integrity sha512-9Jie/At6qk70dNIcopcL4p+1UirusEtznpNtcq/u/C5cC4HBX7qSGsYIcG6bdxj15EYWhHiu02YvmdPzylIZlA== - -"@rollup/rollup-linux-x64-musl@4.50.2": - version "4.50.2" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.50.2.tgz#29fe0adb45a1d99042f373685efbac9cdd5354d9" - integrity sha512-HPNJwxPL3EmhzeAnsWQCM3DcoqOz3/IC6de9rWfGR8ZCuEHETi9km66bH/wG3YH0V3nyzyFEGUZeL5PKyy4xvw== - -"@rollup/rollup-openharmony-arm64@4.50.2": - version "4.50.2" - resolved "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.50.2.tgz#29648f11e202736b74413f823b71e339e3068d60" - integrity sha512-nMKvq6FRHSzYfKLHZ+cChowlEkR2lj/V0jYj9JnGUVPL2/mIeFGmVM2mLaFeNa5Jev7W7TovXqXIG2d39y1KYA== - -"@rollup/rollup-win32-arm64-msvc@4.50.2": - version "4.50.2" - resolved "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.50.2.tgz#91e7edec80542fd81ab1c2581a91403ac63458ae" - integrity sha512-eFUvvnTYEKeTyHEijQKz81bLrUQOXKZqECeiWH6tb8eXXbZk+CXSG2aFrig2BQ/pjiVRj36zysjgILkqarS2YA== - -"@rollup/rollup-win32-ia32-msvc@4.50.2": - version "4.50.2" - resolved "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.50.2.tgz#9b7cd9779f1147a3e8d3ddad432ae64dd222c4e9" - integrity sha512-cBaWmXqyfRhH8zmUxK3d3sAhEWLrtMjWBRwdMMHJIXSjvjLKvv49adxiEz+FJ8AP90apSDDBx2Tyd/WylV6ikA== - -"@rollup/rollup-win32-x64-msvc@4.50.2": - version "4.50.2" - resolved "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.50.2.tgz#40ecd1357526fe328c7af704a283ee8533ca7ad6" - integrity sha512-APwKy6YUhvZaEoHyM+9xqmTpviEI+9eL7LoCH+aLcvWYHJ663qG5zx7WzWZY+a9qkg5JtzcMyJ9z0WtQBMDmgA== +"@rollup/rollup-android-arm-eabi@4.52.0": + version "4.52.0" + resolved "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.52.0.tgz#dfcddfa85a3cba8a0e95483b4a7255ab9e4cdf4d" + integrity sha512-VxDYCDqOaR7NXzAtvRx7G1u54d2kEHopb28YH/pKzY6y0qmogP3gG7CSiWsq9WvDFxOQMpNEyjVAHZFXfH3o/A== + +"@rollup/rollup-android-arm64@4.52.0": + version "4.52.0" + resolved "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.52.0.tgz#f37b4a8741a7f42d2f2921bd621e7e824a262f0c" + integrity sha512-pqDirm8koABIKvzL59YI9W9DWbRlTX7RWhN+auR8HXJxo89m4mjqbah7nJZjeKNTNYopqL+yGg+0mhCpf3xZtQ== + +"@rollup/rollup-darwin-arm64@4.52.0": + version "4.52.0" + resolved "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.52.0.tgz#fda8701d38d9888039c1a0e040c026daec908a3f" + integrity sha512-YCdWlY/8ltN6H78HnMsRHYlPiKvqKagBP1r+D7SSylxX+HnsgXGCmLiV3Y4nSyY9hW8qr8U9LDUx/Lo7M6MfmQ== + +"@rollup/rollup-darwin-x64@4.52.0": + version "4.52.0" + resolved "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.52.0.tgz#c6008839852a33a686080957d296f727af9ca80d" + integrity sha512-z4nw6y1j+OOSGzuVbSWdIp1IUks9qNw4dc7z7lWuWDKojY38VMWBlEN7F9jk5UXOkUcp97vA1N213DF+Lz8BRg== + +"@rollup/rollup-freebsd-arm64@4.52.0": + version "4.52.0" + resolved "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.52.0.tgz#2b3ee9028493fd58245ded2137de0bc5d6b8f1e4" + integrity sha512-Q/dv9Yvyr5rKlK8WQJZVrp5g2SOYeZUs9u/t2f9cQ2E0gJjYB/BWoedXfUT0EcDJefi2zzVfhcOj8drWCzTviw== + +"@rollup/rollup-freebsd-x64@4.52.0": + version "4.52.0" + resolved "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.52.0.tgz#32e1ed194ceb3e0ef204efa237c04db13dece948" + integrity sha512-kdBsLs4Uile/fbjZVvCRcKB4q64R+1mUq0Yd7oU1CMm1Av336ajIFqNFovByipciuUQjBCPMxwJhCgfG2re3rg== + +"@rollup/rollup-linux-arm-gnueabihf@4.52.0": + version "4.52.0" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.52.0.tgz#e64b1b7b2744803d7f52701f8bbd2989ae399424" + integrity sha512-aL6hRwu0k7MTUESgkg7QHY6CoqPgr6gdQXRJI1/VbFlUMwsSzPGSR7sG5d+MCbYnJmJwThc2ol3nixj1fvI/zQ== + +"@rollup/rollup-linux-arm-musleabihf@4.52.0": + version "4.52.0" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.52.0.tgz#cef6569f633cacd09ad89189b9a805067141e01f" + integrity sha512-BTs0M5s1EJejgIBJhCeiFo7GZZ2IXWkFGcyZhxX4+8usnIo5Mti57108vjXFIQmmJaRyDwmV59Tw64Ap1dkwMw== + +"@rollup/rollup-linux-arm64-gnu@4.52.0": + version "4.52.0" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.52.0.tgz#358c20dc375f80e20048f99f46b507d6d8063fdf" + integrity sha512-uj672IVOU9m08DBGvoPKPi/J8jlVgjh12C9GmjjBxCTQc3XtVmRkRKyeHSmIKQpvJ7fIm1EJieBUcnGSzDVFyw== + +"@rollup/rollup-linux-arm64-musl@4.52.0": + version "4.52.0" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.52.0.tgz#8141352ddffbf4200b464c1e1957c050f5c0842a" + integrity sha512-/+IVbeDMDCtB/HP/wiWsSzduD10SEGzIZX2945KSgZRNi4TSkjHqRJtNTVtVb8IRwhJ65ssI56krlLik+zFWkw== + +"@rollup/rollup-linux-loong64-gnu@4.52.0": + version "4.52.0" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.52.0.tgz#d92ac6909a29c9f3793e12fdd826d81a0eef0966" + integrity sha512-U1vVzvSWtSMWKKrGoROPBXMh3Vwn93TA9V35PldokHGqiUbF6erSzox/5qrSMKp6SzakvyjcPiVF8yB1xKr9Pg== + +"@rollup/rollup-linux-ppc64-gnu@4.52.0": + version "4.52.0" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.52.0.tgz#01aacb8e24c41fc5bed2d592c34c210e92975cd3" + integrity sha512-X/4WfuBAdQRH8cK3DYl8zC00XEE6aM472W+QCycpQJeLWVnHfkv7RyBFVaTqNUMsTgIX8ihMjCvFF9OUgeABzw== + +"@rollup/rollup-linux-riscv64-gnu@4.52.0": + version "4.52.0" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.52.0.tgz#fe3224c04b005a378b22f53f3be718c6c175d782" + integrity sha512-xIRYc58HfWDBZoLmWfWXg2Sq8VCa2iJ32B7mqfWnkx5mekekl0tMe7FHpY8I72RXEcUkaWawRvl3qA55og+cwQ== + +"@rollup/rollup-linux-riscv64-musl@4.52.0": + version "4.52.0" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.52.0.tgz#ff25daa05f99c77f43e4d8eef02d57c231dac6ed" + integrity sha512-mbsoUey05WJIOz8U1WzNdf+6UMYGwE3fZZnQqsM22FZ3wh1N887HT6jAOjXs6CNEK3Ntu2OBsyQDXfIjouI4dw== + +"@rollup/rollup-linux-s390x-gnu@4.52.0": + version "4.52.0" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.52.0.tgz#7afac92ea34b129e1430351f615b9f6a84f6510d" + integrity sha512-qP6aP970bucEi5KKKR4AuPFd8aTx9EF6BvutvYxmZuWLJHmnq4LvBfp0U+yFDMGwJ+AIJEH5sIP+SNypauMWzg== + +"@rollup/rollup-linux-x64-gnu@4.52.0": + version "4.52.0" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.52.0.tgz#214b534701614c7502603e2a083bb9f072ae8500" + integrity sha512-nmSVN+F2i1yKZ7rJNKO3G7ZzmxJgoQBQZ/6c4MuS553Grmr7WqR7LLDcYG53Z2m9409z3JLt4sCOhLdbKQ3HmA== + +"@rollup/rollup-linux-x64-musl@4.52.0": + version "4.52.0" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.52.0.tgz#8bdc313319fb097795b9213782354afeb8452658" + integrity sha512-2d0qRo33G6TfQVjaMR71P+yJVGODrt5V6+T0BDYH4EMfGgdC/2HWDVjSSFw888GSzAZUwuska3+zxNUCDco6rQ== + +"@rollup/rollup-openharmony-arm64@4.52.0": + version "4.52.0" + resolved "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.52.0.tgz#3a6050fc85143f14039c2e8f8f6e90e9e60a392c" + integrity sha512-A1JalX4MOaFAAyGgpO7XP5khquv/7xKzLIyLmhNrbiCxWpMlnsTYr8dnsWM7sEeotNmxvSOEL7F65j0HXFcFsw== + +"@rollup/rollup-win32-arm64-msvc@4.52.0": + version "4.52.0" + resolved "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.52.0.tgz#7a57e55beeb598b7a27786e95142f39fff5daddb" + integrity sha512-YQugafP/rH0eOOHGjmNgDURrpYHrIX0yuojOI8bwCyXwxC9ZdTd3vYkmddPX0oHONLXu9Rb1dDmT0VNpjkzGGw== + +"@rollup/rollup-win32-ia32-msvc@4.52.0": + version "4.52.0" + resolved "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.52.0.tgz#a7a7a1b5d53bd3fdddf494106961c018a39f6f77" + integrity sha512-zYdUYhi3Qe2fndujBqL5FjAFzvNeLxtIqfzNEVKD1I7C37/chv1VxhscWSQHTNfjPCrBFQMnynwA3kpZpZ8w4A== + +"@rollup/rollup-win32-x64-gnu@4.52.0": + version "4.52.0" + resolved "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.52.0.tgz#45040d6623b0db5dd3b9ee0054708ba8b25cd787" + integrity sha512-fGk03kQylNaCOQ96HDMeT7E2n91EqvCDd3RwvT5k+xNdFCeMGnj5b5hEgTGrQuyidqSsD3zJDQ21QIaxXqTBJw== + +"@rollup/rollup-win32-x64-msvc@4.52.0": + version "4.52.0" + resolved "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.52.0.tgz#79bc6c361bd80134402274e7c4a6bb36c88d50c2" + integrity sha512-6iKDCVSIUQ8jPMoIV0OytRKniaYyy5EbY/RRydmLW8ZR3cEBhxbWl5ro0rkUNe0ef6sScvhbY79HrjRm8i3vDQ== "@rtsao/scc@^1.1.0": version "1.1.0" resolved "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz#927dd2fae9bc3361403ac2c7a00c32ddce9ad7e8" integrity sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g== -"@scure/base@2.0.0": +"@scure/base@2.0.0", "@scure/base@^2.0.0": version "2.0.0" resolved "https://registry.npmjs.org/@scure/base/-/base-2.0.0.tgz#ba6371fddf92c2727e88ad6ab485db6e624f9a98" integrity sha512-3E1kpuZginKkek01ovG8krQ0Z44E3DHPjc5S2rjJw9lZn3KSQOs8S7wqikF/AH7iRanHypj85uGyxk0XAyC37w== @@ -2177,13 +2182,6 @@ balanced-match@^1.0.0: resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== -base-x@^3.0.2: - version "3.0.11" - resolved "https://registry.npmjs.org/base-x/-/base-x-3.0.11.tgz#40d80e2a1aeacba29792ccc6c5354806421287ff" - integrity sha512-xz7wQ8xDhdyP7tQxwdteLYeFfS68tSMNCZ/Y37WJ4bhGfKPpqEIlmIyueQHqOyoPhE6xNUqjzRr8ra0eF9VRvA== - dependencies: - safe-buffer "^5.0.1" - base64-js@^1.3.1: version "1.5.1" resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" @@ -2203,9 +2201,9 @@ base@^0.11.1: pascalcase "^0.1.1" baseline-browser-mapping@^2.8.3: - version "2.8.5" - resolved "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.5.tgz#3147fe6b01a0c49ce1952daebcfc2057fc43fedb" - integrity sha512-TiU4qUT9jdCuh4aVOG7H1QozyeI2sZRqoRPdqBIaslfNt4WUSanRBueAwl2x5jt4rXBMim3lIN2x6yT8PDi24Q== + version "2.8.6" + resolved "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.6.tgz#c37dea4291ed8d01682f85661dbe87967028642e" + integrity sha512-wrH5NNqren/QMtKUEEJf7z86YjfqW/2uw3IL3/xpqZUC95SSVIFXYQeeGjL6FT/X68IROu6RMehZQS5foy2BXw== bidi-js@^1.0.3: version "1.0.3" @@ -2374,13 +2372,6 @@ browserslist@^4.24.0, browserslist@^4.25.3: node-releases "^2.0.21" update-browserslist-db "^1.1.3" -bs58@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" - integrity sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw== - dependencies: - base-x "^3.0.2" - buffer-from@^1.0.0: version "1.1.2" resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" @@ -3036,9 +3027,9 @@ css-tree@^3.1.0: source-map-js "^1.0.1" cssstyle@^5.3.0: - version "5.3.0" - resolved "https://registry.npmjs.org/cssstyle/-/cssstyle-5.3.0.tgz#9d0750a5bda34351464850e5524c414435b8d72c" - integrity sha512-RveJPnk3m7aarYQ2bJ6iw+Urh55S6FzUiqtBq+TihnTDP4cI8y/TYDqGOyqgnG1J1a6BxJXZsV9JFSTulm9Z7g== + version "5.3.1" + resolved "https://registry.npmjs.org/cssstyle/-/cssstyle-5.3.1.tgz#f55a9cc73d12705da8a341261d5e85003fe3a441" + integrity sha512-g5PC9Aiph9eiczFpcgUhd9S4UUO3F+LHGRIi5NUMZ+4xtoIYbHNZwZnWA2JsFGe8OU8nl4WyaEFiZuGuxlutJQ== dependencies: "@asamuzakjp/css-color" "^4.0.3" "@csstools/css-syntax-patches-for-csstree" "^1.0.14" @@ -3310,9 +3301,9 @@ ee-first@1.1.1: integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== electron-to-chromium@^1.5.218: - version "1.5.221" - resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.221.tgz#bd98014b2a247701c4ebd713080448d539545d79" - integrity sha512-/1hFJ39wkW01ogqSyYoA4goOXOtMRy6B+yvA1u42nnsEGtHzIzmk93aPISumVQeblj47JUHLC9coCjUxb1EvtQ== + version "1.5.222" + resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.222.tgz#965c93783ad989116b74593ae3068b9466fdb237" + integrity sha512-gA7psSwSwQRE60CEoLz6JBCQPIxNeuzB2nL8vE03GK/OHxlvykbLyeiumQy1iH5C2f3YbRAZpGCMT12a/9ih9w== elliptic@^6.4.1: version "6.6.1" @@ -6680,33 +6671,34 @@ ripemd160@^2.0.1: inherits "^2.0.1" rollup@^4.20.0, rollup@^4.43.0: - version "4.50.2" - resolved "https://registry.npmjs.org/rollup/-/rollup-4.50.2.tgz#938d898394939f3386d1e367ee6410a796b8f268" - integrity sha512-BgLRGy7tNS9H66aIMASq1qSYbAAJV6Z6WR4QYTvj5FgF15rZ/ympT1uixHXwzbZUBDbkvqUI1KR0fH1FhMaQ9w== + version "4.52.0" + resolved "https://registry.npmjs.org/rollup/-/rollup-4.52.0.tgz#5a906bf98f7c7a2c08d2b18fbfa52955552423d7" + integrity sha512-+IuescNkTJQgX7AkIDtITipZdIGcWF0pnVvZTWStiazUmcGA2ag8dfg0urest2XlXUi9kuhfQ+qmdc5Stc3z7g== dependencies: "@types/estree" "1.0.8" optionalDependencies: - "@rollup/rollup-android-arm-eabi" "4.50.2" - "@rollup/rollup-android-arm64" "4.50.2" - "@rollup/rollup-darwin-arm64" "4.50.2" - "@rollup/rollup-darwin-x64" "4.50.2" - "@rollup/rollup-freebsd-arm64" "4.50.2" - "@rollup/rollup-freebsd-x64" "4.50.2" - "@rollup/rollup-linux-arm-gnueabihf" "4.50.2" - "@rollup/rollup-linux-arm-musleabihf" "4.50.2" - "@rollup/rollup-linux-arm64-gnu" "4.50.2" - "@rollup/rollup-linux-arm64-musl" "4.50.2" - "@rollup/rollup-linux-loong64-gnu" "4.50.2" - "@rollup/rollup-linux-ppc64-gnu" "4.50.2" - "@rollup/rollup-linux-riscv64-gnu" "4.50.2" - "@rollup/rollup-linux-riscv64-musl" "4.50.2" - "@rollup/rollup-linux-s390x-gnu" "4.50.2" - "@rollup/rollup-linux-x64-gnu" "4.50.2" - "@rollup/rollup-linux-x64-musl" "4.50.2" - "@rollup/rollup-openharmony-arm64" "4.50.2" - "@rollup/rollup-win32-arm64-msvc" "4.50.2" - "@rollup/rollup-win32-ia32-msvc" "4.50.2" - "@rollup/rollup-win32-x64-msvc" "4.50.2" + "@rollup/rollup-android-arm-eabi" "4.52.0" + "@rollup/rollup-android-arm64" "4.52.0" + "@rollup/rollup-darwin-arm64" "4.52.0" + "@rollup/rollup-darwin-x64" "4.52.0" + "@rollup/rollup-freebsd-arm64" "4.52.0" + "@rollup/rollup-freebsd-x64" "4.52.0" + "@rollup/rollup-linux-arm-gnueabihf" "4.52.0" + "@rollup/rollup-linux-arm-musleabihf" "4.52.0" + "@rollup/rollup-linux-arm64-gnu" "4.52.0" + "@rollup/rollup-linux-arm64-musl" "4.52.0" + "@rollup/rollup-linux-loong64-gnu" "4.52.0" + "@rollup/rollup-linux-ppc64-gnu" "4.52.0" + "@rollup/rollup-linux-riscv64-gnu" "4.52.0" + "@rollup/rollup-linux-riscv64-musl" "4.52.0" + "@rollup/rollup-linux-s390x-gnu" "4.52.0" + "@rollup/rollup-linux-x64-gnu" "4.52.0" + "@rollup/rollup-linux-x64-musl" "4.52.0" + "@rollup/rollup-openharmony-arm64" "4.52.0" + "@rollup/rollup-win32-arm64-msvc" "4.52.0" + "@rollup/rollup-win32-ia32-msvc" "4.52.0" + "@rollup/rollup-win32-x64-gnu" "4.52.0" + "@rollup/rollup-win32-x64-msvc" "4.52.0" fsevents "~2.3.2" rrweb-cssom@^0.8.0: @@ -7398,21 +7390,21 @@ tinyrainbow@^2.0.0: integrity sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw== tinyspy@^4.0.3: - version "4.0.3" - resolved "https://registry.npmjs.org/tinyspy/-/tinyspy-4.0.3.tgz#d1d0f0602f4c15f1aae083a34d6d0df3363b1b52" - integrity sha512-t2T/WLB2WRgZ9EpE4jgPJ9w+i66UZfDc8wHh0xrwiRNN+UwH98GIJkTeZqX9rg0i0ptwzqW+uYeIF0T4F8LR7A== + version "4.0.4" + resolved "https://registry.npmjs.org/tinyspy/-/tinyspy-4.0.4.tgz#d77a002fb53a88aa1429b419c1c92492e0c81f78" + integrity sha512-azl+t0z7pw/z958Gy9svOTuzqIk6xq+NSheJzn5MMWtWTFywIacg2wUlzKFGtt3cthx0r2SxMK0yzJOR0IES7Q== -tldts-core@^7.0.14: - version "7.0.14" - resolved "https://registry.npmjs.org/tldts-core/-/tldts-core-7.0.14.tgz#eb49edf8a39a37a2372ffc22f82d6ac725ace6cd" - integrity sha512-viZGNK6+NdluOJWwTO9olaugx0bkKhscIdriQQ+lNNhwitIKvb+SvhbYgnCz6j9p7dX3cJntt4agQAKMXLjJ5g== +tldts-core@^7.0.15: + version "7.0.15" + resolved "https://registry.npmjs.org/tldts-core/-/tldts-core-7.0.15.tgz#68b12802db18f65279f647687608bf7fa582fb5b" + integrity sha512-YBkp2VfS9VTRMPNL2PA6PMESmxV1JEVoAr5iBlZnB5JG3KUrWzNCB3yNNkRa2FZkqClaBgfNYCp8PgpYmpjkZw== tldts@^7.0.5: - version "7.0.14" - resolved "https://registry.npmjs.org/tldts/-/tldts-7.0.14.tgz#5dc352e087c12978b7d1d36d8a346496e04dca72" - integrity sha512-lMNHE4aSI3LlkMUMicTmAG3tkkitjOQGDTFboPJwAg2kJXKP1ryWEyqujktg5qhrFZOkk5YFzgkxg3jErE+i5w== + version "7.0.15" + resolved "https://registry.npmjs.org/tldts/-/tldts-7.0.15.tgz#0d08f6145856b016790fe4be27079d53f1c3a5a3" + integrity sha512-heYRCiGLhtI+U/D0V8YM3QRwPfsLJiP+HX+YwiHZTnWzjIKC+ZCxQRYlzvOoTEc6KIP62B1VeAN63diGCng2hg== dependencies: - tldts-core "^7.0.14" + tldts-core "^7.0.15" tmp@^0.0.33: version "0.0.33" @@ -7765,9 +7757,9 @@ vite@^5.0.0: fsevents "~2.3.3" "vite@^5.0.0 || ^6.0.0 || ^7.0.0-0": - version "7.1.6" - resolved "https://registry.npmjs.org/vite/-/vite-7.1.6.tgz#336806d29983135677f498a05efb0fd46c5eef2d" - integrity sha512-SRYIB8t/isTwNn8vMB3MR6E+EQZM/WG1aKmmIUCfDXfVvKfc20ZpamngWHKzAmmu9ppsgxsg4b2I7c90JZudIQ== + version "7.1.7" + resolved "https://registry.npmjs.org/vite/-/vite-7.1.7.tgz#ed3f9f06e21d6574fe1ad425f6b0912d027ffc13" + integrity sha512-VbA8ScMvAISJNJVbRDTJdCwqQoAareR/wutevKanhR2/1EkoXVZVkkORaYm/tNVCjP/UDTKtcw3bAkwOUdedmA== dependencies: esbuild "^0.25.0" fdir "^6.5.0"