diff --git a/.cspell.jsonc b/.cspell.jsonc index 55601ca..127e87b 100644 --- a/.cspell.jsonc +++ b/.cspell.jsonc @@ -12,6 +12,7 @@ "Codacy", "Codecov", "consts", + "deno", "ecies", "eciesjs", "eciespy", @@ -39,7 +40,6 @@ ".gitignore", ".cspell.jsonc", "LICENSE", - "package.json", - "yarn.lock" + "package.json" ] } diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index fa31624..f96ad70 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -12,9 +12,7 @@ jobs: id-token: write steps: - uses: actions/checkout@v4 - - uses: pnpm/action-setup@v4 - - uses: actions/setup-node@v4 with: node-version: 22 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 10ecff2..ffe7058 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -16,9 +16,7 @@ jobs: node: [18, 20, 22] steps: - uses: actions/checkout@v4 - - uses: pnpm/action-setup@v4 - - uses: actions/setup-node@v4 with: node-version: ${{ matrix.node }} @@ -32,6 +30,27 @@ jobs: token: ${{ secrets.CODECOV_TOKEN }} - run: pnpm run build && npm publish --dry-run - - run: cd example && pnpm install - - run: node example/index.js - - run: node example/import.js + check-runtimes: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: pnpm/action-setup@v4 + - uses: actions/setup-node@v4 + with: + node-version: 22 + cache: pnpm + cache-dependency-path: pnpm-lock.yaml + + - uses: oven-sh/setup-bun@v2 + with: + bun-version: latest + + - uses: denoland/setup-deno@v2 + with: + deno-version: v2.x + + - run: pnpm install && pnpm build + - run: cd example/runtime && bun install + - run: bun run example/runtime/main.js + - run: deno run --allow-read example/runtime/main.js + - run: node example/runtime/main.js diff --git a/.gitignore b/.gitignore index 7b588c6..324e0af 100644 --- a/.gitignore +++ b/.gitignore @@ -116,4 +116,8 @@ dist .pnp.* .DS_Store -*.html + +# example +bun.lockb +deno.lock +example/runtime/pnpm-lock.yaml diff --git a/example/README.md b/example/README.md index 3ca7459..6c6885d 100644 --- a/example/README.md +++ b/example/README.md @@ -1,15 +1,21 @@ -# eciesjs-example +# example -Run `pnpm install` first +Make sure `pnpm build` under the parent directory is run before. -## Basic usage +## Browser example -Run `node index.js` +Run `cd browser && pnpm install && pnpm dev` -## Check import +For production, run `pnpm build && pnpm preview` -Run `node import.js` +## Runtime example (Node/Bun/Deno) -## Browser +Run `cd runtime && bun install` -Run `pnpm dev` +### Basic usage + +Run `node main.js` or `bun run main.js` or `deno run --allow-read main.js` + +### Check import + +Run `node import.js` or `bun run import.js` or `deno run --allow-read import.js` diff --git a/example/index.html b/example/browser/index.html similarity index 79% rename from example/index.html rename to example/browser/index.html index 8ad1bef..43fc312 100644 --- a/example/index.html +++ b/example/browser/index.html @@ -9,7 +9,7 @@
- + diff --git a/example/package.json b/example/browser/package.json similarity index 72% rename from example/package.json rename to example/browser/package.json index fa56835..f98d93a 100644 --- a/example/package.json +++ b/example/browser/package.json @@ -1,8 +1,7 @@ { - "name": "eciesjs-example", - "version": "1.0.0", + "name": "browser-example", + "version": "0.1.0", "description": "", - "main": "index.js", "type": "module", "scripts": { "dev": "vite", @@ -14,10 +13,10 @@ "license": "MIT", "dependencies": { "buffer": "^6.0.3", - "eciesjs": "file:.." + "eciesjs": "file:../.." }, "devDependencies": { - "vite": "^5.4.8", + "vite": "^5.4.9", "vite-bundle-visualizer": "^1.2.1" } } diff --git a/example/pnpm-lock.yaml b/example/browser/pnpm-lock.yaml similarity index 97% rename from example/pnpm-lock.yaml rename to example/browser/pnpm-lock.yaml index e735add..655e3cf 100644 --- a/example/pnpm-lock.yaml +++ b/example/browser/pnpm-lock.yaml @@ -12,12 +12,12 @@ importers: specifier: ^6.0.3 version: 6.0.3 eciesjs: - specifier: file:.. - version: file:.. + specifier: file:../.. + version: file:../.. devDependencies: vite: - specifier: ^5.4.8 - version: 5.4.8 + specifier: ^5.4.9 + version: 5.4.9 vite-bundle-visualizer: specifier: ^1.2.1 version: 1.2.1(rollup@4.24.0) @@ -303,8 +303,8 @@ packages: resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} engines: {node: '>=8'} - eciesjs@file:..: - resolution: {directory: .., type: directory} + eciesjs@file:../..: + resolution: {directory: ../.., type: directory} engines: {node: '>=16.0.0'} emoji-regex@8.0.0: @@ -363,8 +363,8 @@ packages: resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} engines: {node: '>=12'} - picocolors@1.1.0: - resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==} + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} @@ -418,8 +418,8 @@ packages: engines: {node: ^18.19.0 || >=20.6.0} hasBin: true - vite@5.4.8: - resolution: {integrity: sha512-FqrItQ4DT1NC4zCUqMB4c4AZORMKIa0m8/URVCZ77OZ/QSNeJ54bU1vrFADbDsuwfIPcgknRkmqakQcgnL4GiQ==} + vite@5.4.9: + resolution: {integrity: sha512-20OVpJHh0PAM0oSOELa5GaZNWeDjcAvQjGXy2Uyr+Tp+/D2/Hdz6NLgpJLsarPTA2QJ6v8mX2P1ZfbsSKvdMkg==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -631,7 +631,7 @@ snapshots: define-lazy-prop@2.0.0: {} - eciesjs@file:..: + eciesjs@file:../..: dependencies: '@ecies/ciphers': 0.1.0 '@noble/ciphers': 1.0.0 @@ -702,14 +702,14 @@ snapshots: is-docker: 2.2.1 is-wsl: 2.2.0 - picocolors@1.1.0: {} + picocolors@1.1.1: {} picomatch@2.3.1: {} postcss@8.4.47: dependencies: nanoid: 3.3.7 - picocolors: 1.1.0 + picocolors: 1.1.1 source-map-js: 1.2.1 require-directory@2.1.1: {} @@ -771,7 +771,7 @@ snapshots: - rollup - supports-color - vite@5.4.8: + vite@5.4.9: dependencies: esbuild: 0.21.5 postcss: 8.4.47 diff --git a/example/browser/script.js b/example/browser/script.js index 4da5acf..edf570f 100644 --- a/example/browser/script.js +++ b/example/browser/script.js @@ -4,42 +4,41 @@ import { PrivateKey, decrypt, encrypt } from "eciesjs"; import "./style.css"; -globalThis.Buffer = Buffer +globalThis.Buffer = Buffer; const sk = new PrivateKey(); const encoder = new TextEncoder(); const decoder = new TextDecoder(); export function setup(encryptedElement, textElement, decryptedElement) { - const text = "hello eciesjs🔒" + const text = "hello eciesjs🔒"; let encrypted; - encryptedElement.innerHTML = `click me to encrypt` - textElement.innerHTML = text - decryptedElement.innerHTML = `click me to decrypt` + encryptedElement.innerHTML = `click me to encrypt`; + textElement.innerHTML = text; + decryptedElement.innerHTML = `click me to decrypt`; const _encrypt = () => { - encrypted = encrypt(sk.publicKey.toHex(), encoder.encode(text)) - encryptedElement.innerHTML = `encrypted:` - textElement.innerHTML = `${bytesToHex(encrypted)}` - decryptedElement.innerHTML = `click me to decrypt` - } + encrypted = encrypt(sk.publicKey.toHex(), encoder.encode(text)); + encryptedElement.innerHTML = `encrypted:`; + textElement.innerHTML = `${bytesToHex(encrypted)}`; + decryptedElement.innerHTML = `click me to decrypt`; + }; const _decrypt = () => { - encryptedElement.innerHTML = `click me to encrypt` + encryptedElement.innerHTML = `click me to encrypt`; if (encrypted) { - textElement.innerHTML = `${decoder.decode(decrypt(sk.secret, encrypted))}` - decryptedElement.innerHTML = `decrypted:` - encrypted = undefined + textElement.innerHTML = `${decoder.decode(decrypt(sk.secret, encrypted))}`; + decryptedElement.innerHTML = `decrypted:`; + encrypted = undefined; } else { - textElement.innerHTML = "click encrypt button first" + textElement.innerHTML = "click encrypt button first"; } - } - encryptedElement.addEventListener('click', () => _encrypt()) - decryptedElement.addEventListener('click', () => _decrypt()) + }; + encryptedElement.addEventListener("click", () => _encrypt()); + decryptedElement.addEventListener("click", () => _decrypt()); } - -document.querySelector('#app').innerHTML = ` +document.querySelector("#app").innerHTML = `

Hello eciesjs!

@@ -48,7 +47,10 @@ document.querySelector('#app').innerHTML = `

-` +`; -setup(document.querySelector('#encrypted'), document.querySelector('#text'), - document.querySelector('#decrypted')) +setup( + document.querySelector("#encrypted"), + document.querySelector("#text"), + document.querySelector("#decrypted") +); diff --git a/example/browser/vite.config.ts b/example/browser/vite.config.ts new file mode 100644 index 0000000..b0c43a4 --- /dev/null +++ b/example/browser/vite.config.ts @@ -0,0 +1,17 @@ +import { defineConfig } from "vite"; + +export default defineConfig({ + build: { + rollupOptions: { + output: { + manualChunks(id) { + if (id.includes("@noble")) { + return "noble"; + } else if (id.includes("buffer")) { + return "buffer"; + } + }, + }, + }, + }, +}); diff --git a/example/index.js b/example/index.js deleted file mode 100644 index 0309c47..0000000 --- a/example/index.js +++ /dev/null @@ -1,6 +0,0 @@ -import { PrivateKey, decrypt, encrypt } from "eciesjs"; - -const sk = new PrivateKey() -const data = Buffer.from("hello world🌍") -const decrypted = decrypt(sk.secret, encrypt(sk.publicKey.toHex(), data)) -console.log(Buffer.from(decrypted).toString()) diff --git a/example/import.js b/example/runtime/import.js similarity index 100% rename from example/import.js rename to example/runtime/import.js diff --git a/example/runtime/main.js b/example/runtime/main.js new file mode 100644 index 0000000..0108176 --- /dev/null +++ b/example/runtime/main.js @@ -0,0 +1,18 @@ +import { ECIES_CONFIG, PrivateKey, decrypt, encrypt } from "eciesjs"; +import { Buffer } from "node:buffer"; + +globalThis.Buffer = Buffer; + +// because deno does not support indirect conditional exports +// it falls to node:crypto's implementation +// despite that @ecies/ciphers exports @noble/ciphers implementation to deno +// see: https://github.com/denoland/deno/discussions/17964#discussioncomment-10917259 +// deno's node:crypto does not support 16 bytes iv +// so aes-256-gcm (16 bytes iv) does not work +ECIES_CONFIG.symmetricNonceLength = 12; +// ECIES_CONFIG.symmetricAlgorithm = "xchacha20"; + +const sk = new PrivateKey(); +const data = Buffer.from("hello world🌍"); +const decrypted = decrypt(sk.secret, encrypt(sk.publicKey.toHex(), data)); +console.log(Buffer.from(decrypted).toString()); diff --git a/example/runtime/package.json b/example/runtime/package.json new file mode 100644 index 0000000..201f60e --- /dev/null +++ b/example/runtime/package.json @@ -0,0 +1,14 @@ +{ + "name": "runtime-example", + "version": "0.1.0", + "description": "", + "main": "main.js", + "type": "module", + "scripts": {}, + "keywords": [], + "author": "", + "license": "MIT", + "dependencies": { + "eciesjs": "file:../.." + } +} diff --git a/example/vite.config.ts b/example/vite.config.ts deleted file mode 100644 index 5190dd6..0000000 --- a/example/vite.config.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { defineConfig } from "vite"; - -export default defineConfig({ - plugins: [], -}); diff --git a/package.json b/package.json index c48bf89..53878e9 100644 --- a/package.json +++ b/package.json @@ -59,11 +59,11 @@ "@noble/hashes": "^1.5.0" }, "devDependencies": { - "@types/node": "^22.7.5", - "@vitest/coverage-v8": "2.1.2", + "@types/node": "^22.7.6", + "@vitest/coverage-v8": "^2.1.3", "typescript": "^5.6.3", - "undici": "^6.20.0", - "vitest": "^2.1.2" + "undici": "^6.20.1", + "vitest": "^2.1.3" }, - "packageManager": "pnpm@9.12.1+sha512.e5a7e52a4183a02d5931057f7a0dbff9d5e9ce3161e33fa68ae392125b79282a8a8a470a51dfc8a0ed86221442eb2fb57019b0990ed24fab519bf0e1bc5ccfc4" + "packageManager": "pnpm@9.12.2+sha512.22721b3a11f81661ae1ec68ce1a7b879425a1ca5b991c975b074ac220b187ce56c708fe5db69f4c962c989452eee76c82877f4ee80f474cebd61ee13461b6228" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2d214c0..d0db959 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -22,20 +22,20 @@ importers: version: 1.5.0 devDependencies: '@types/node': - specifier: ^22.7.5 - version: 22.7.5 + specifier: ^22.7.6 + version: 22.7.6 '@vitest/coverage-v8': - specifier: 2.1.2 - version: 2.1.2(vitest@2.1.2(@types/node@22.7.5)) + specifier: ^2.1.3 + version: 2.1.3(vitest@2.1.3(@types/node@22.7.6)) typescript: specifier: ^5.6.3 version: 5.6.3 undici: - specifier: ^6.20.0 - version: 6.20.0 + specifier: ^6.20.1 + version: 6.20.1 vitest: - specifier: ^2.1.2 - version: 2.1.2(@types/node@22.7.5) + specifier: ^2.1.3 + version: 2.1.3(@types/node@22.7.6) packages: @@ -330,25 +330,25 @@ packages: '@types/estree@1.0.6': resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} - '@types/node@22.7.5': - resolution: {integrity: sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==} + '@types/node@22.7.6': + resolution: {integrity: sha512-/d7Rnj0/ExXDMcioS78/kf1lMzYk4BZV8MZGTBKzTGZ6/406ukkbYlIsZmMPhcR5KlkunDHQLrtAVmSq7r+mSw==} - '@vitest/coverage-v8@2.1.2': - resolution: {integrity: sha512-b7kHrFrs2urS0cOk5N10lttI8UdJ/yP3nB4JYTREvR5o18cR99yPpK4gK8oQgI42BVv0ILWYUSYB7AXkAUDc0g==} + '@vitest/coverage-v8@2.1.3': + resolution: {integrity: sha512-2OJ3c7UPoFSmBZwqD2VEkUw6A/tzPF0LmW0ZZhhB8PFxuc+9IBG/FaSM+RLEenc7ljzFvGN+G0nGQoZnh7sy2A==} peerDependencies: - '@vitest/browser': 2.1.2 - vitest: 2.1.2 + '@vitest/browser': 2.1.3 + vitest: 2.1.3 peerDependenciesMeta: '@vitest/browser': optional: true - '@vitest/expect@2.1.2': - resolution: {integrity: sha512-FEgtlN8mIUSEAAnlvn7mP8vzaWhEaAEvhSXCqrsijM7K6QqjB11qoRZYEd4AKSCDz8p0/+yH5LzhZ47qt+EyPg==} + '@vitest/expect@2.1.3': + resolution: {integrity: sha512-SNBoPubeCJhZ48agjXruCI57DvxcsivVDdWz+SSsmjTT4QN/DfHk3zB/xKsJqMs26bLZ/pNRLnCf0j679i0uWQ==} - '@vitest/mocker@2.1.2': - resolution: {integrity: sha512-ExElkCGMS13JAJy+812fw1aCv2QO/LBK6CyO4WOPAzLTmve50gydOlWhgdBJPx2ztbADUq3JVI0C5U+bShaeEA==} + '@vitest/mocker@2.1.3': + resolution: {integrity: sha512-eSpdY/eJDuOvuTA3ASzCjdithHa+GIF1L4PqtEELl6Qa3XafdMLBpBlZCIUCX2J+Q6sNmjmxtosAG62fK4BlqQ==} peerDependencies: - '@vitest/spy': 2.1.2 + '@vitest/spy': 2.1.3 msw: ^2.3.5 vite: ^5.0.0 peerDependenciesMeta: @@ -357,20 +357,20 @@ packages: vite: optional: true - '@vitest/pretty-format@2.1.2': - resolution: {integrity: sha512-FIoglbHrSUlOJPDGIrh2bjX1sNars5HbxlcsFKCtKzu4+5lpsRhOCVcuzp0fEhAGHkPZRIXVNzPcpSlkoZ3LuA==} + '@vitest/pretty-format@2.1.3': + resolution: {integrity: sha512-XH1XdtoLZCpqV59KRbPrIhFCOO0hErxrQCMcvnQete3Vibb9UeIOX02uFPfVn3Z9ZXsq78etlfyhnkmIZSzIwQ==} - '@vitest/runner@2.1.2': - resolution: {integrity: sha512-UCsPtvluHO3u7jdoONGjOSil+uON5SSvU9buQh3lP7GgUXHp78guN1wRmZDX4wGK6J10f9NUtP6pO+SFquoMlw==} + '@vitest/runner@2.1.3': + resolution: {integrity: sha512-JGzpWqmFJ4fq5ZKHtVO3Xuy1iF2rHGV4d/pdzgkYHm1+gOzNZtqjvyiaDGJytRyMU54qkxpNzCx+PErzJ1/JqQ==} - '@vitest/snapshot@2.1.2': - resolution: {integrity: sha512-xtAeNsZ++aRIYIUsek7VHzry/9AcxeULlegBvsdLncLmNCR6tR8SRjn8BbDP4naxtccvzTqZ+L1ltZlRCfBZFA==} + '@vitest/snapshot@2.1.3': + resolution: {integrity: sha512-qWC2mWc7VAXmjAkEKxrScWHWFyCQx/cmiZtuGqMi+WwqQJ2iURsVY4ZfAK6dVo6K2smKRU6l3BPwqEBvhnpQGg==} - '@vitest/spy@2.1.2': - resolution: {integrity: sha512-GSUi5zoy+abNRJwmFhBDC0yRuVUn8WMlQscvnbbXdKLXX9dE59YbfwXxuJ/mth6eeqIzofU8BB5XDo/Ns/qK2A==} + '@vitest/spy@2.1.3': + resolution: {integrity: sha512-Nb2UzbcUswzeSP7JksMDaqsI43Sj5+Kry6ry6jQJT4b5gAK+NS9NED6mDb8FlMRCX8m5guaHCDZmqYMMWRy5nQ==} - '@vitest/utils@2.1.2': - resolution: {integrity: sha512-zMO2KdYy6mx56btx9JvAqAZ6EyS3g49krMPPrgOp1yxGZiA93HumGk+bZ5jIZtOg5/VBYl5eBmGRQHqq4FG6uQ==} + '@vitest/utils@2.1.3': + resolution: {integrity: sha512-xpiVfDSg1RrYT0tX6czgerkpcKFmFOF/gCr30+Mve5V2kewCy4Prn1/NDMSRwaSmT7PRaOF83wu+bEtsY1wrvA==} ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} @@ -547,8 +547,8 @@ packages: resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} engines: {node: '>= 14.16'} - picocolors@1.1.0: - resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==} + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} postcss@8.4.47: resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==} @@ -616,8 +616,8 @@ packages: tinybench@2.9.0: resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} - tinyexec@0.3.0: - resolution: {integrity: sha512-tVGE0mVJPGb0chKhqmsoosjsS+qUnJVGJpZgsHYQcGoPlG3B51R3PouqTgEGH2Dc9jjFyOqOpix6ZHNMXp1FZg==} + tinyexec@0.3.1: + resolution: {integrity: sha512-WiCJLEECkO18gwqIp6+hJg0//p23HXp4S+gGtAKu3mI2F2/sXC4FvHvXvB0zJVVaTPhx1/tOwdbRsa1sOBIKqQ==} tinypool@1.0.1: resolution: {integrity: sha512-URZYihUbRPcGv95En+sz6MfghfIc2OJ1sv/RmhWZLouPY0/8Vo80viwPvg3dlaS9fuq7fQMEfgRRK7BBZThBEA==} @@ -643,17 +643,17 @@ packages: undici-types@6.19.8: resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} - undici@6.20.0: - resolution: {integrity: sha512-AITZfPuxubm31Sx0vr8bteSalEbs9wQb/BOBi9FPlD9Qpd6HxZ4Q0+hI742jBhkPb4RT2v5MQzaW5VhRVyj+9A==} + undici@6.20.1: + resolution: {integrity: sha512-AjQF1QsmqfJys+LXfGTNum+qw4S88CojRInG/6t31W/1fk6G59s92bnAvGz5Cmur+kQv2SURXEvvudLmbrE8QA==} engines: {node: '>=18.17'} - vite-node@2.1.2: - resolution: {integrity: sha512-HPcGNN5g/7I2OtPjLqgOtCRu/qhVvBxTUD3qzitmL0SrG1cWFzxzhMDWussxSbrRYWqnKf8P2jiNhPMSN+ymsQ==} + vite-node@2.1.3: + resolution: {integrity: sha512-I1JadzO+xYX887S39Do+paRePCKoiDrWRRjp9kkG5he0t7RXNvPAJPCQSJqbGN4uCrFFeS3Kj3sLqY8NMYBEdA==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true - vite@5.4.8: - resolution: {integrity: sha512-FqrItQ4DT1NC4zCUqMB4c4AZORMKIa0m8/URVCZ77OZ/QSNeJ54bU1vrFADbDsuwfIPcgknRkmqakQcgnL4GiQ==} + vite@5.4.9: + resolution: {integrity: sha512-20OVpJHh0PAM0oSOELa5GaZNWeDjcAvQjGXy2Uyr+Tp+/D2/Hdz6NLgpJLsarPTA2QJ6v8mX2P1ZfbsSKvdMkg==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -683,15 +683,15 @@ packages: terser: optional: true - vitest@2.1.2: - resolution: {integrity: sha512-veNjLizOMkRrJ6xxb+pvxN6/QAWg95mzcRjtmkepXdN87FNfxAss9RKe2far/G9cQpipfgP2taqg0KiWsquj8A==} + vitest@2.1.3: + resolution: {integrity: sha512-Zrxbg/WiIvUP2uEzelDNTXmEMJXuzJ1kCpbDvaKByFA9MNeO95V+7r/3ti0qzJzrxdyuUw5VduN7k+D3VmVOSA==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@types/node': ^18.0.0 || >=20.0.0 - '@vitest/browser': 2.1.2 - '@vitest/ui': 2.1.2 + '@vitest/browser': 2.1.3 + '@vitest/ui': 2.1.3 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -911,11 +911,11 @@ snapshots: '@types/estree@1.0.6': {} - '@types/node@22.7.5': + '@types/node@22.7.6': dependencies: undici-types: 6.19.8 - '@vitest/coverage-v8@2.1.2(vitest@2.1.2(@types/node@22.7.5))': + '@vitest/coverage-v8@2.1.3(vitest@2.1.3(@types/node@22.7.6))': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 0.2.3 @@ -929,47 +929,47 @@ snapshots: std-env: 3.7.0 test-exclude: 7.0.1 tinyrainbow: 1.2.0 - vitest: 2.1.2(@types/node@22.7.5) + vitest: 2.1.3(@types/node@22.7.6) transitivePeerDependencies: - supports-color - '@vitest/expect@2.1.2': + '@vitest/expect@2.1.3': dependencies: - '@vitest/spy': 2.1.2 - '@vitest/utils': 2.1.2 + '@vitest/spy': 2.1.3 + '@vitest/utils': 2.1.3 chai: 5.1.1 tinyrainbow: 1.2.0 - '@vitest/mocker@2.1.2(@vitest/spy@2.1.2)(vite@5.4.8(@types/node@22.7.5))': + '@vitest/mocker@2.1.3(@vitest/spy@2.1.3)(vite@5.4.9(@types/node@22.7.6))': dependencies: - '@vitest/spy': 2.1.2 + '@vitest/spy': 2.1.3 estree-walker: 3.0.3 magic-string: 0.30.12 optionalDependencies: - vite: 5.4.8(@types/node@22.7.5) + vite: 5.4.9(@types/node@22.7.6) - '@vitest/pretty-format@2.1.2': + '@vitest/pretty-format@2.1.3': dependencies: tinyrainbow: 1.2.0 - '@vitest/runner@2.1.2': + '@vitest/runner@2.1.3': dependencies: - '@vitest/utils': 2.1.2 + '@vitest/utils': 2.1.3 pathe: 1.1.2 - '@vitest/snapshot@2.1.2': + '@vitest/snapshot@2.1.3': dependencies: - '@vitest/pretty-format': 2.1.2 + '@vitest/pretty-format': 2.1.3 magic-string: 0.30.12 pathe: 1.1.2 - '@vitest/spy@2.1.2': + '@vitest/spy@2.1.3': dependencies: tinyspy: 3.0.2 - '@vitest/utils@2.1.2': + '@vitest/utils@2.1.3': dependencies: - '@vitest/pretty-format': 2.1.2 + '@vitest/pretty-format': 2.1.3 loupe: 3.1.2 tinyrainbow: 1.2.0 @@ -1150,12 +1150,12 @@ snapshots: pathval@2.0.0: {} - picocolors@1.1.0: {} + picocolors@1.1.1: {} postcss@8.4.47: dependencies: nanoid: 3.3.7 - picocolors: 1.1.0 + picocolors: 1.1.1 source-map-js: 1.2.1 rollup@4.24.0: @@ -1230,7 +1230,7 @@ snapshots: tinybench@2.9.0: {} - tinyexec@0.3.0: {} + tinyexec@0.3.1: {} tinypool@1.0.1: {} @@ -1244,14 +1244,14 @@ snapshots: undici-types@6.19.8: {} - undici@6.20.0: {} + undici@6.20.1: {} - vite-node@2.1.2(@types/node@22.7.5): + vite-node@2.1.3(@types/node@22.7.6): dependencies: cac: 6.7.14 debug: 4.3.7 pathe: 1.1.2 - vite: 5.4.8(@types/node@22.7.5) + vite: 5.4.9(@types/node@22.7.6) transitivePeerDependencies: - '@types/node' - less @@ -1263,38 +1263,38 @@ snapshots: - supports-color - terser - vite@5.4.8(@types/node@22.7.5): + vite@5.4.9(@types/node@22.7.6): dependencies: esbuild: 0.21.5 postcss: 8.4.47 rollup: 4.24.0 optionalDependencies: - '@types/node': 22.7.5 + '@types/node': 22.7.6 fsevents: 2.3.3 - vitest@2.1.2(@types/node@22.7.5): + vitest@2.1.3(@types/node@22.7.6): dependencies: - '@vitest/expect': 2.1.2 - '@vitest/mocker': 2.1.2(@vitest/spy@2.1.2)(vite@5.4.8(@types/node@22.7.5)) - '@vitest/pretty-format': 2.1.2 - '@vitest/runner': 2.1.2 - '@vitest/snapshot': 2.1.2 - '@vitest/spy': 2.1.2 - '@vitest/utils': 2.1.2 + '@vitest/expect': 2.1.3 + '@vitest/mocker': 2.1.3(@vitest/spy@2.1.3)(vite@5.4.9(@types/node@22.7.6)) + '@vitest/pretty-format': 2.1.3 + '@vitest/runner': 2.1.3 + '@vitest/snapshot': 2.1.3 + '@vitest/spy': 2.1.3 + '@vitest/utils': 2.1.3 chai: 5.1.1 debug: 4.3.7 magic-string: 0.30.12 pathe: 1.1.2 std-env: 3.7.0 tinybench: 2.9.0 - tinyexec: 0.3.0 + tinyexec: 0.3.1 tinypool: 1.0.1 tinyrainbow: 1.2.0 - vite: 5.4.8(@types/node@22.7.5) - vite-node: 2.1.2(@types/node@22.7.5) + vite: 5.4.9(@types/node@22.7.6) + vite-node: 2.1.3(@types/node@22.7.6) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 22.7.5 + '@types/node': 22.7.6 transitivePeerDependencies: - less - lightningcss