npm package, cjs -> esm...

This commit is contained in:
yigid balaban 2024-10-07 21:30:18 +03:00
parent 28ce8c6fb3
commit 9ea2dd5f69
Signed by: fyb
GPG Key ID: CF1BBD1336C0A3D6
15 changed files with 410 additions and 292 deletions

1
.gitignore vendored
View File

@ -1,2 +1 @@
node_modules/
dist/

3
.gitmodules vendored
View File

@ -1,3 +0,0 @@
[submodule "zkl-kds"]
path = zkl-kds
url = https://git.fybx.dev/fyb/zkl-kds

1
.npmignore Normal file
View File

@ -0,0 +1 @@
dist/

View File

@ -4,29 +4,48 @@ Cryptographic functions provider and example repository.
This module provides encryption and decryption functions for handling both binary data and strings using public and private keys. It utilizes `ecies-wasm` for the underlying cryptographic operations.
Package available on npm: https://www.npmjs.com/package/@zklx/crypto
## Functions
### `encryptFile(publicKey: Key, fileName: string, data: Uint8Array): Uint8Array`
Encrypts the given binary data for the recipient using the public key. The file name is included in the encrypted data.
- `publicKey`: The recipient's public key.
- `fileName`: The name of the file being encrypted.
- `data`: The plaintext data as a `Uint8Array`.
Returns the ciphertext as a `Uint8Array`.
### `decryptFile(privateKey: Key, data: Uint8Array): { data: Uint8Array, fileName: string }`
Decrypts the given ciphertext using the recipient's private key. Returns the decrypted data and the original file name.
- `privateKey`: The recipient's private key.
- `data`: The ciphertext data as a `Uint8Array`.
Returns an object containing the plaintext data and the original file name.
### `encryptString(publicKey: Key, string: string): string`
Encrypts the given string with the recipient's public key. Returns the ciphertext as a hexadecimal string.
Encrypts the given string for the recipient using their public key. Returns the ciphertext as a hexadecimal string.
- `publicKey`: The recipient's public key.
- `string`: The plaintext string.
### `decryptString(privateKey: Key, string: string): string`
Decrypts the given ciphertext string (in hexadecimal format) with the recipient's private key. Returns the plaintext string.
Decrypts the given ciphertext string (in hexadecimal format) using the recipient's private key. Returns the plaintext string.
### `encryptFile(publicKey: Key, data: Uint8Array): Uint8Array`
Encrypts the given binary data (`Uint8Array`) with the recipient's public key. Returns the ciphertext as a `Uint8Array`.
### `decryptFile(privateKey: Key, data: Uint8Array): Uint8Array`
Decrypts the given ciphertext data (`Uint8Array`) with the recipient's private key. Returns the plaintext data as a `Uint8Array`.
- `privateKey`: The recipient's private key.
- `string`: The ciphertext string in hexadecimal format.
## Usage
```javascript
import { Key } from "./zkl-kds/key";
import { encryptString, decryptString, encryptFile, decryptFile } from "./crypto";
import { Key } from "@zklx/kds";
import { encryptString, decryptString, encryptFile, decryptFile } from "@zklx/crypto";
// Example usage:
@ -43,12 +62,14 @@ const decryptedString = decryptString(privateKey, encryptedString);
console.log(decryptedString); // "Hello, World!"
// Encrypt binary data
const fileName = "document.txt";
const data = new Uint8Array([/* ... */]);
const encryptedData = encryptFile(publicKey, data);
const encryptedData = encryptFile(publicKey, fileName, data);
// Decrypt the binary data
const decryptedData = decryptFile(privateKey, encryptedData);
const { data: decryptedData, fileName: decryptedFileName } = decryptFile(privateKey, encryptedData);
console.log(decryptedFileName); // "document.txt"
console.log(decryptedData); // Uint8Array
```
@ -61,8 +82,6 @@ pnpm install
npx webpack # use npx, pnpm - webpack integration is broken
```
then navigate to index.html.
## Error Handling
This module performs type checks on its inputs. It throws `TypeError` if arguments are not of the expected types. Additionally, the `decryptString` function issues a warning if the provided ciphertext string does not appear to be a valid hexadecimal string.
@ -76,4 +95,9 @@ This module performs type checks on its inputs. It throws `TypeError` if argumen
This project is licensed under the GNU Lesser General Public License, version 2.1.
Yigid BALABAN, <fyb@fybx.dev>
Authored by Yigid BALABAN, fyb@fybx.dev
2024 © zk-Lokomotive team
https://zk-lokomotive.xyz/

View File

@ -1,5 +1,5 @@
import init, * as ecies from "ecies-wasm";
import { Key } from "./zkl-kds/key";
import { Key } from "@zklx/kds";
init();
const td = new TextDecoder();
@ -23,8 +23,7 @@ export function encryptFile(publicKey, fileName, data) {
if (!(data instanceof Uint8Array)) {
throw new TypeError("data must be an instance of Uint8Array");
}
if (!fileName)
fileName = "Unknown file";
if (!fileName) fileName = "Unknown file";
const _data = new Uint8Array(METADATA_LENGTH + data.length);
const fnBytes = te.encode(fileName);
@ -57,9 +56,9 @@ export function decryptFile(privateKey, data) {
const fdBytes = plaintext.slice(METADATA_LENGTH, plaintext.length);
const fileName = td.decode(fnBytes);
return {
return {
data: fdBytes,
fileName: fileName
fileName: fileName,
};
}
@ -104,7 +103,7 @@ export function decryptString(privateKey, string) {
}
const byteArray = Uint8Array.from(
string.match(/.{1,2}/g).map((byte) => parseInt(byte, 16))
string.match(/.{1,2}/g).map((byte) => parseInt(byte, 16)),
);
const decryptedData = decrypt(privateKey, byteArray);
return td.decode(decryptedData);
@ -144,8 +143,8 @@ function int2byteArray(int) {
int & 0xff ? int & 0xff : 0,
(int >> 8) & 0xff ? (int >> 8) & 0xff : 0,
(int >> 16) & 0xff ? (int >> 16) & 0xff : 0,
(int >> 24) & 0xff ? (int >> 24) & 0xff : 0
]
(int >> 24) & 0xff ? (int >> 24) & 0xff : 0,
];
}
/**
@ -158,16 +157,13 @@ function int2byteArray(int) {
* byteArray2int([120, 86, 52, 18]); // 305419896 (0x12345678)
*/
function byteArray2int(bytes) {
return (bytes[0]) |
(bytes[1] << 8) |
(bytes[2] << 16) |
(bytes[3] << 24);
return bytes[0] | (bytes[1] << 8) | (bytes[2] << 16) | (bytes[3] << 24);
}
function asHexString() {
return this.reduce(
(str, byte) => str + byte.toString(16).padStart(2, "0"),
""
"",
);
}

BIN
dist/21cfd03815fda4edba72.wasm vendored Normal file

Binary file not shown.

1
dist/bundle.js vendored Normal file

File diff suppressed because one or more lines are too long

18
dist/index.html vendored Normal file
View File

@ -0,0 +1,18 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>ZKL Crypto Provider Demo</title>
</head>
<body>
<h1>ZKL Crypto Provider Demo</h1>
<p>Upload a file to be encrypted. The ciphertext will be presented as a bitmap here.</p>
<input type="file" id="fileInput">
<canvas id="bitmapCanvas"></canvas>
<hr>
<p>Yigid BALABAN, <a href="https://fybx.dev/">https://fybx.dev/</a></p>
<script src="bundle.js"></script>
</body>
</html>

83
dist/index.js vendored Normal file
View File

@ -0,0 +1,83 @@
import { generateKeypair } from "@zklx/kds";
import {
encryptFile,
decryptFile,
encryptString,
decryptString,
} from "../crypto.js";
let keypair;
const el_fileInput = document.querySelector("#fileInput");
el_fileInput.addEventListener("change", function (event) {
const file = event.target.files[0];
if (file) {
const reader = new FileReader();
reader.onload = function (e) {
const arrayBuffer = e.target.result;
const byteArray = new Uint8Array(arrayBuffer);
if (!keypair) {
console.error("keypair not ready, skipping file enc/dec");
return;
}
console.log("File to be encrypted:", el_fileInput.files[0].name);
const cipherFile = encryptFile(
keypair.pkey,
el_fileInput.files[0].name,
byteArray,
);
console.log("Ciphertext bytes:", cipherFile);
{
const numPixels = cipherFile.length / 4;
const width = Math.floor(Math.sqrt(numPixels));
const height = Math.ceil(numPixels / width);
const canvas = document.getElementById("bitmapCanvas");
const context = canvas.getContext("2d");
canvas.width = width;
canvas.height = height;
const imageData = context.createImageData(width, height);
for (let i = 0; i < cipherFile.length; i++) {
imageData.data[i] = cipherFile[i];
}
context.putImageData(imageData, 0, 0);
}
const plainFile = decryptFile(keypair.skey, cipherFile);
console.log("Decrypted raw data:", plainFile.data);
console.log(
"Decrypted decoded:",
new TextDecoder().decode(plainFile.data),
);
console.log("Decrypted file name:", plainFile.fileName);
};
reader.readAsArrayBuffer(file);
} else {
console.warn("No file selected");
}
});
// we wait for a second before executing this block
// because WASM module takes time to load
setTimeout(async () => {
console.log("start");
const mnemonic =
"digital radio analyst fine casino have mass blood potato hat web capital prefer debate fee differ spray cloud";
// for this time, skey means private key, and pkey is public
const { publicKey: pkey, privateKey: skey } = await generateKeypair(mnemonic);
keypair = { pkey, skey };
const cipherText = encryptString(pkey, "message");
console.log("encrypted string is", cipherText);
console.log("decrypted string is", decryptString(skey, cipherText));
console.log("end");
}, 1000);

View File

@ -1,15 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>ZKL Crypto Provider Demo</title>
</head>
<body>
<h1>ZKL Crypto Provider Demo</h1>
<p>Upload a file to be encrypted. The ciphertext will be presented as a bitmap here.</p>
<input type="file" id="fileInput">
<canvas id="bitmapCanvas"></canvas>
<hr>
<p>Yigid BALABAN, <a href="https://fybx.dev/">https://fybx.dev/</a></p>
<script src="dist/bundle.js"></script>
</body>
</html>

View File

@ -1,77 +1 @@
import { generateKeypair } from "./zkl-kds/key-derivation.js";
import {
encryptFile,
decryptFile,
encryptString,
decryptString,
} from "./crypto.js";
let keypair;
const el_fileInput = document.querySelector("#fileInput");
el_fileInput
.addEventListener("change", function (event) {
const file = event.target.files[0];
if (file) {
const reader = new FileReader();
reader.onload = function (e) {
const arrayBuffer = e.target.result;
const byteArray = new Uint8Array(arrayBuffer);
if (!keypair) {
console.error("keypair not ready, skipping file enc/dec");
return;
}
console.log('File to be encrypted:', el_fileInput.files[0].name);
const cipherFile = encryptFile(keypair.pkey, el_fileInput.files[0].name, byteArray);
console.log('Ciphertext bytes:', cipherFile);
{
const numPixels = cipherFile.length / 4;
const width = Math.floor(Math.sqrt(numPixels));
const height = Math.ceil(numPixels / width);
const canvas = document.getElementById("bitmapCanvas");
const context = canvas.getContext("2d");
canvas.width = width;
canvas.height = height;
const imageData = context.createImageData(width, height);
for (let i = 0; i < cipherFile.length; i++) {
imageData.data[i] = cipherFile[i];
}
context.putImageData(imageData, 0, 0);
}
const plainFile = decryptFile(keypair.skey, cipherFile);
console.log("Decrypted raw data:", plainFile.data);
console.log("Decrypted decoded:", (new TextDecoder()).decode(plainFile.data));
console.log("Decrypted file name:", plainFile.fileName);
};
reader.readAsArrayBuffer(file);
} else {
console.warn("No file selected");
}
});
// we wait for a second before executing this block
// because WASM module takes time to load
setTimeout(async () => {
console.log("start");
const mnemonic =
"digital radio analyst fine casino have mass blood potato hat web capital prefer debate fee differ spray cloud";
// for this time, skey means private key, and pkey is public
const { publicKey: pkey, privateKey: skey } = await generateKeypair(mnemonic);
keypair = { pkey, skey };
const cipherText = encryptString(pkey, "message");
console.log("encrypted string is", cipherText);
console.log("decrypted string is", decryptString(skey, cipherText));
console.log("end");
}, 1000);
export * from "./crypto.js";

View File

@ -1,20 +1,22 @@
{
"name": "zkl-crypto",
"name": "@zklx/crypto",
"version": "1.0.0",
"description": "",
"description": "zk-Lokomotive cryptographic applications provider",
"type": "module",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"keywords": ["cryptography", "zero knowledge", "elliptic"],
"author": "Yigid BALABAN <fyb@fybx.dev>",
"license": "LGPL-2.0-only",
"devDependencies": {
"babel-loader": "^9.1.3",
"webpack": "^5.94.0",
"babel-loader": "^9.2.1",
"webpack": "^5.95.0",
"webpack-cli": "^5.1.4"
},
"dependencies": {
"@zklx/kds": "^1.0.2",
"ecies-wasm": "^0.2.0"
}
}

397
pnpm-lock.yaml generated
View File

@ -8,19 +8,22 @@ importers:
.:
dependencies:
'@zklx/kds':
specifier: ^1.0.2
version: 1.0.2
ecies-wasm:
specifier: ^0.2.0
version: 0.2.0
devDependencies:
babel-loader:
specifier: ^9.1.3
version: 9.1.3(@babel/core@7.25.2)(webpack@5.94.0(webpack-cli@5.1.4))
specifier: ^9.2.1
version: 9.2.1(@babel/core@7.25.2)(webpack@5.95.0(webpack-cli@5.1.4))
webpack:
specifier: ^5.94.0
version: 5.94.0(webpack-cli@5.1.4)
specifier: ^5.95.0
version: 5.95.0(webpack-cli@5.1.4)
webpack-cli:
specifier: ^5.1.4
version: 5.1.4(webpack@5.94.0)
version: 5.1.4(webpack@5.95.0)
packages:
@ -28,75 +31,75 @@ packages:
resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==}
engines: {node: '>=6.0.0'}
'@babel/code-frame@7.24.7':
resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==}
'@babel/code-frame@7.25.7':
resolution: {integrity: sha512-0xZJFNE5XMpENsgfHYTw8FbX4kv53mFLn2i3XPoq69LyhYSCBJtitaHx9QnsVTrsogI4Z3+HtEfZ2/GFPOtf5g==}
engines: {node: '>=6.9.0'}
'@babel/compat-data@7.25.4':
resolution: {integrity: sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==}
'@babel/compat-data@7.25.7':
resolution: {integrity: sha512-9ickoLz+hcXCeh7jrcin+/SLWm+GkxE2kTvoYyp38p4WkdFXfQJxDFGWp/YHjiKLPx06z2A7W8XKuqbReXDzsw==}
engines: {node: '>=6.9.0'}
'@babel/core@7.25.2':
resolution: {integrity: sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==}
engines: {node: '>=6.9.0'}
'@babel/generator@7.25.6':
resolution: {integrity: sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==}
'@babel/generator@7.25.7':
resolution: {integrity: sha512-5Dqpl5fyV9pIAD62yK9P7fcA768uVPUyrQmqpqstHWgMma4feF1x/oFysBCVZLY5wJ2GkMUCdsNDnGZrPoR6rA==}
engines: {node: '>=6.9.0'}
'@babel/helper-compilation-targets@7.25.2':
resolution: {integrity: sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==}
'@babel/helper-compilation-targets@7.25.7':
resolution: {integrity: sha512-DniTEax0sv6isaw6qSQSfV4gVRNtw2rte8HHM45t9ZR0xILaufBRNkpMifCRiAPyvL4ACD6v0gfCwCmtOQaV4A==}
engines: {node: '>=6.9.0'}
'@babel/helper-module-imports@7.24.7':
resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==}
'@babel/helper-module-imports@7.25.7':
resolution: {integrity: sha512-o0xCgpNmRohmnoWKQ0Ij8IdddjyBFE4T2kagL/x6M3+4zUgc+4qTOUBoNe4XxDskt1HPKO007ZPiMgLDq2s7Kw==}
engines: {node: '>=6.9.0'}
'@babel/helper-module-transforms@7.25.2':
resolution: {integrity: sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==}
'@babel/helper-module-transforms@7.25.7':
resolution: {integrity: sha512-k/6f8dKG3yDz/qCwSM+RKovjMix563SLxQFo0UhRNo239SP6n9u5/eLtKD6EAjwta2JHJ49CsD8pms2HdNiMMQ==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0
'@babel/helper-simple-access@7.24.7':
resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==}
'@babel/helper-simple-access@7.25.7':
resolution: {integrity: sha512-FPGAkJmyoChQeM+ruBGIDyrT2tKfZJO8NcxdC+CWNJi7N8/rZpSxK7yvBJ5O/nF1gfu5KzN7VKG3YVSLFfRSxQ==}
engines: {node: '>=6.9.0'}
'@babel/helper-string-parser@7.24.8':
resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==}
'@babel/helper-string-parser@7.25.7':
resolution: {integrity: sha512-CbkjYdsJNHFk8uqpEkpCvRs3YRp9tY6FmFY7wLMSYuGYkrdUi7r2lc4/wqsvlHoMznX3WJ9IP8giGPq68T/Y6g==}
engines: {node: '>=6.9.0'}
'@babel/helper-validator-identifier@7.24.7':
resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==}
'@babel/helper-validator-identifier@7.25.7':
resolution: {integrity: sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg==}
engines: {node: '>=6.9.0'}
'@babel/helper-validator-option@7.24.8':
resolution: {integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==}
'@babel/helper-validator-option@7.25.7':
resolution: {integrity: sha512-ytbPLsm+GjArDYXJ8Ydr1c/KJuutjF2besPNbIZnZ6MKUxi/uTA22t2ymmA4WFjZFpjiAMO0xuuJPqK2nvDVfQ==}
engines: {node: '>=6.9.0'}
'@babel/helpers@7.25.6':
resolution: {integrity: sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q==}
'@babel/helpers@7.25.7':
resolution: {integrity: sha512-Sv6pASx7Esm38KQpF/U/OXLwPPrdGHNKoeblRxgZRLXnAtnkEe4ptJPDtAZM7fBLadbc1Q07kQpSiGQ0Jg6tRA==}
engines: {node: '>=6.9.0'}
'@babel/highlight@7.24.7':
resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==}
'@babel/highlight@7.25.7':
resolution: {integrity: sha512-iYyACpW3iW8Fw+ZybQK+drQre+ns/tKpXbNESfrhNnPLIklLbXr7MYJ6gPEd0iETGLOK+SxMjVvKb/ffmk+FEw==}
engines: {node: '>=6.9.0'}
'@babel/parser@7.25.6':
resolution: {integrity: sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==}
'@babel/parser@7.25.7':
resolution: {integrity: sha512-aZn7ETtQsjjGG5HruveUK06cU3Hljuhd9Iojm4M8WWv3wLE6OkE5PWbDUkItmMgegmccaITudyuW5RPYrYlgWw==}
engines: {node: '>=6.0.0'}
hasBin: true
'@babel/template@7.25.0':
resolution: {integrity: sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==}
'@babel/template@7.25.7':
resolution: {integrity: sha512-wRwtAgI3bAS+JGU2upWNL9lSlDcRCqD05BZ1n3X2ONLH1WilFP6O1otQjeMK/1g0pvYcXC7b/qVUB1keofjtZA==}
engines: {node: '>=6.9.0'}
'@babel/traverse@7.25.6':
resolution: {integrity: sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ==}
'@babel/traverse@7.25.7':
resolution: {integrity: sha512-jatJPT1Zjqvh/1FyJs6qAHL+Dzb7sTb+xr7Q+gM1b+1oBsMsQQ4FkVKb6dFlJvLlVssqkRzV05Jzervt9yhnzg==}
engines: {node: '>=6.9.0'}
'@babel/types@7.25.6':
resolution: {integrity: sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==}
'@babel/types@7.25.7':
resolution: {integrity: sha512-vwIVdXG+j+FOpkwqHRcBgHLYNL7XMkufrlaFvL9o6Ai9sJn9+PdyIL5qa0XzTZw084c+u9LOls53eoZWP/W5WQ==}
engines: {node: '>=6.9.0'}
'@discoveryjs/json-ext@0.5.7':
@ -124,14 +127,24 @@ packages:
'@jridgewell/trace-mapping@0.3.25':
resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
'@types/estree@1.0.5':
resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==}
'@noble/hashes@1.5.0':
resolution: {integrity: sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA==}
engines: {node: ^14.21.3 || >=16}
'@scure/base@1.1.9':
resolution: {integrity: sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==}
'@scure/bip39@1.4.0':
resolution: {integrity: sha512-BEEm6p8IueV/ZTfQLp/0vhw4NPnT9oWf5+28nvmeUICjP99f4vr2d+qc7AVGDDtwRep6ifR43Yed9ERVmiITzw==}
'@types/estree@1.0.6':
resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==}
'@types/json-schema@7.0.15':
resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
'@types/node@22.5.4':
resolution: {integrity: sha512-FDuKUJQm/ju9fT/SeX/6+gBzoPzlVCzfzmGkwKvRHQVxi4BntVbyIwf6a4Xn62mrvndLiml6z/UBXIdEVjQLXg==}
'@types/node@22.7.4':
resolution: {integrity: sha512-y+NPi1rFzDs1NdQHHToqeiX2TIS79SWEAw9GYhkkx8bD0ChpfqC+n2j5OXOCpzfojBEBt6DnEnnG9MY0zk1XLg==}
'@webassemblyjs/ast@1.12.1':
resolution: {integrity: sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==}
@ -209,6 +222,9 @@ packages:
'@xtuc/long@4.2.2':
resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==}
'@zklx/kds@1.0.2':
resolution: {integrity: sha512-566DGii/l7FO8fl9QieLj3lRHE6K+TPoVrloRbYeTKGieI7FjBPAeP0wLQlTFPVsygGAKvGzNpakJGZe6Coo1g==}
acorn-import-attributes@1.9.5:
resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==}
peerDependencies:
@ -247,23 +263,29 @@ packages:
resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
engines: {node: '>=4'}
babel-loader@9.1.3:
resolution: {integrity: sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==}
babel-loader@9.2.1:
resolution: {integrity: sha512-fqe8naHt46e0yIdkjUZYqddSXfej3AHajX+CSO5X7oy0EmPc6o5Xh+RClNoHjnieWz9AW4kZxW9yyFMhVB1QLA==}
engines: {node: '>= 14.15.0'}
peerDependencies:
'@babel/core': ^7.12.0
webpack: '>=5'
browserslist@4.23.3:
resolution: {integrity: sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==}
bn.js@4.12.0:
resolution: {integrity: sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==}
brorand@1.1.0:
resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==}
browserslist@4.24.0:
resolution: {integrity: sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A==}
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
hasBin: true
buffer-from@1.1.2:
resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
caniuse-lite@1.0.30001660:
resolution: {integrity: sha512-GacvNTTuATm26qC74pt+ad1fW15mlQ/zuTzzY1ZoIzECTP8HURDfF43kNxPgf7H1jmelCBQTTbBNxdSXOA7Bqg==}
caniuse-lite@1.0.30001667:
resolution: {integrity: sha512-7LTwJjcRkzKFmtqGsibMeuXmvFDfZq/nzIjnmgCGzKKRVzjD72selLDK1oPF/Oxzmt4fNcPvTDvGqSDG4tCALw==}
chalk@2.4.2:
resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
@ -315,15 +337,18 @@ packages:
ecies-wasm@0.2.0:
resolution: {integrity: sha512-T0wkoz2iOu3IN0wugO3gzCn3ADAafA8FRDQUWWST31InPWlUSvH5JH5akegAZw48or1kwQsWE5jGiNqh5woxhg==}
electron-to-chromium@1.5.18:
resolution: {integrity: sha512-1OfuVACu+zKlmjsNdcJuVQuVE61sZOLbNM4JAQ1Rvh6EOj0/EUKhMJjRH73InPlXSh8HIJk1cVZ8pyOV/FMdUQ==}
electron-to-chromium@1.5.32:
resolution: {integrity: sha512-M+7ph0VGBQqqpTT2YrabjNKSQ2fEl9PVx6AK3N558gDH9NO8O6XN9SXXFWRo9u9PbEg/bWq+tjXQr+eXmxubCw==}
elliptic@6.5.7:
resolution: {integrity: sha512-ESVCtTwiA+XhY3wyh24QqRGBoP3rEdDUl3EDUUo9tft074fi19IrdpH7hLCMMP3CIj7jb3W96rn8lt/BqIlt5Q==}
enhanced-resolve@5.17.1:
resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==}
engines: {node: '>=10.13.0'}
envinfo@7.13.0:
resolution: {integrity: sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==}
envinfo@7.14.0:
resolution: {integrity: sha512-CO40UI41xDQzhLB1hWyqUKgFhs250pNcGbyGKe1l/e4FSaI/+YE4IMG76GDt0In67WLPACIITC+sOi08x4wIvg==}
engines: {node: '>=4'}
hasBin: true
@ -364,8 +389,8 @@ packages:
fast-json-stable-stringify@2.1.0:
resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
fast-uri@3.0.1:
resolution: {integrity: sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==}
fast-uri@3.0.2:
resolution: {integrity: sha512-GR6f0hD7XXyNJa25Tb9BuIdN0tdr+0BMi6/CJPH3wJO1JjNG3n/VsSw38AwRdKZABm8lGbPfakLRkYzx2V9row==}
fastest-levenshtein@1.0.16:
resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==}
@ -412,15 +437,24 @@ packages:
resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
engines: {node: '>=8'}
hash.js@1.1.7:
resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==}
hasown@2.0.2:
resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
engines: {node: '>= 0.4'}
hmac-drbg@1.0.1:
resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==}
import-local@3.2.0:
resolution: {integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==}
engines: {node: '>=8'}
hasBin: true
inherits@2.0.4:
resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
interpret@3.1.1:
resolution: {integrity: sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==}
engines: {node: '>=10.13.0'}
@ -447,9 +481,9 @@ packages:
js-tokens@4.0.0:
resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
jsesc@2.5.2:
resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==}
engines: {node: '>=4'}
jsesc@3.0.2:
resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==}
engines: {node: '>=6'}
hasBin: true
json-parse-even-better-errors@2.3.1:
@ -496,6 +530,12 @@ packages:
resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
engines: {node: '>= 0.6'}
minimalistic-assert@1.0.1:
resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==}
minimalistic-crypto-utils@1.0.1:
resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==}
ms@2.1.3:
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
@ -647,8 +687,8 @@ packages:
uglify-js:
optional: true
terser@5.32.0:
resolution: {integrity: sha512-v3Gtw3IzpBJ0ugkxEX8U0W6+TnPKRRCWGh1jC/iM/e3Ki5+qvO1L1EAZ56bZasc64aXHwRHNIQEzm6//i5cemQ==}
terser@5.34.1:
resolution: {integrity: sha512-FsJZ7iZLd/BXkz+4xrRTGJ26o/6VTjQytUk8b8OxkwcD2I+79VPJlz7qss1+zE7h8GNIScFqXcDyJ/KqBYZFVA==}
engines: {node: '>=10'}
hasBin: true
@ -659,8 +699,8 @@ packages:
undici-types@6.19.8:
resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==}
update-browserslist-db@1.1.0:
resolution: {integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==}
update-browserslist-db@1.1.1:
resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==}
hasBin: true
peerDependencies:
browserslist: '>= 4.21.0'
@ -697,8 +737,8 @@ packages:
resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==}
engines: {node: '>=10.13.0'}
webpack@5.94.0:
resolution: {integrity: sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==}
webpack@5.95.0:
resolution: {integrity: sha512-2t3XstrKULz41MNMBF+cJ97TyHdyQ8HCt//pqErqDvNjU9YQBnZxIHa11VXsi7F3mb5/aO2tuDxdeTPdU7xu9Q==}
engines: {node: '>=10.13.0'}
hasBin: true
peerDependencies:
@ -729,25 +769,25 @@ snapshots:
'@jridgewell/gen-mapping': 0.3.5
'@jridgewell/trace-mapping': 0.3.25
'@babel/code-frame@7.24.7':
'@babel/code-frame@7.25.7':
dependencies:
'@babel/highlight': 7.24.7
'@babel/highlight': 7.25.7
picocolors: 1.1.0
'@babel/compat-data@7.25.4': {}
'@babel/compat-data@7.25.7': {}
'@babel/core@7.25.2':
dependencies:
'@ampproject/remapping': 2.3.0
'@babel/code-frame': 7.24.7
'@babel/generator': 7.25.6
'@babel/helper-compilation-targets': 7.25.2
'@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2)
'@babel/helpers': 7.25.6
'@babel/parser': 7.25.6
'@babel/template': 7.25.0
'@babel/traverse': 7.25.6
'@babel/types': 7.25.6
'@babel/code-frame': 7.25.7
'@babel/generator': 7.25.7
'@babel/helper-compilation-targets': 7.25.7
'@babel/helper-module-transforms': 7.25.7(@babel/core@7.25.2)
'@babel/helpers': 7.25.7
'@babel/parser': 7.25.7
'@babel/template': 7.25.7
'@babel/traverse': 7.25.7
'@babel/types': 7.25.7
convert-source-map: 2.0.0
debug: 4.3.7
gensync: 1.0.0-beta.2
@ -756,89 +796,89 @@ snapshots:
transitivePeerDependencies:
- supports-color
'@babel/generator@7.25.6':
'@babel/generator@7.25.7':
dependencies:
'@babel/types': 7.25.6
'@babel/types': 7.25.7
'@jridgewell/gen-mapping': 0.3.5
'@jridgewell/trace-mapping': 0.3.25
jsesc: 2.5.2
jsesc: 3.0.2
'@babel/helper-compilation-targets@7.25.2':
'@babel/helper-compilation-targets@7.25.7':
dependencies:
'@babel/compat-data': 7.25.4
'@babel/helper-validator-option': 7.24.8
browserslist: 4.23.3
'@babel/compat-data': 7.25.7
'@babel/helper-validator-option': 7.25.7
browserslist: 4.24.0
lru-cache: 5.1.1
semver: 6.3.1
'@babel/helper-module-imports@7.24.7':
'@babel/helper-module-imports@7.25.7':
dependencies:
'@babel/traverse': 7.25.6
'@babel/types': 7.25.6
'@babel/traverse': 7.25.7
'@babel/types': 7.25.7
transitivePeerDependencies:
- supports-color
'@babel/helper-module-transforms@7.25.2(@babel/core@7.25.2)':
'@babel/helper-module-transforms@7.25.7(@babel/core@7.25.2)':
dependencies:
'@babel/core': 7.25.2
'@babel/helper-module-imports': 7.24.7
'@babel/helper-simple-access': 7.24.7
'@babel/helper-validator-identifier': 7.24.7
'@babel/traverse': 7.25.6
'@babel/helper-module-imports': 7.25.7
'@babel/helper-simple-access': 7.25.7
'@babel/helper-validator-identifier': 7.25.7
'@babel/traverse': 7.25.7
transitivePeerDependencies:
- supports-color
'@babel/helper-simple-access@7.24.7':
'@babel/helper-simple-access@7.25.7':
dependencies:
'@babel/traverse': 7.25.6
'@babel/types': 7.25.6
'@babel/traverse': 7.25.7
'@babel/types': 7.25.7
transitivePeerDependencies:
- supports-color
'@babel/helper-string-parser@7.24.8': {}
'@babel/helper-string-parser@7.25.7': {}
'@babel/helper-validator-identifier@7.24.7': {}
'@babel/helper-validator-identifier@7.25.7': {}
'@babel/helper-validator-option@7.24.8': {}
'@babel/helper-validator-option@7.25.7': {}
'@babel/helpers@7.25.6':
'@babel/helpers@7.25.7':
dependencies:
'@babel/template': 7.25.0
'@babel/types': 7.25.6
'@babel/template': 7.25.7
'@babel/types': 7.25.7
'@babel/highlight@7.24.7':
'@babel/highlight@7.25.7':
dependencies:
'@babel/helper-validator-identifier': 7.24.7
'@babel/helper-validator-identifier': 7.25.7
chalk: 2.4.2
js-tokens: 4.0.0
picocolors: 1.1.0
'@babel/parser@7.25.6':
'@babel/parser@7.25.7':
dependencies:
'@babel/types': 7.25.6
'@babel/types': 7.25.7
'@babel/template@7.25.0':
'@babel/template@7.25.7':
dependencies:
'@babel/code-frame': 7.24.7
'@babel/parser': 7.25.6
'@babel/types': 7.25.6
'@babel/code-frame': 7.25.7
'@babel/parser': 7.25.7
'@babel/types': 7.25.7
'@babel/traverse@7.25.6':
'@babel/traverse@7.25.7':
dependencies:
'@babel/code-frame': 7.24.7
'@babel/generator': 7.25.6
'@babel/parser': 7.25.6
'@babel/template': 7.25.0
'@babel/types': 7.25.6
'@babel/code-frame': 7.25.7
'@babel/generator': 7.25.7
'@babel/parser': 7.25.7
'@babel/template': 7.25.7
'@babel/types': 7.25.7
debug: 4.3.7
globals: 11.12.0
transitivePeerDependencies:
- supports-color
'@babel/types@7.25.6':
'@babel/types@7.25.7':
dependencies:
'@babel/helper-string-parser': 7.24.8
'@babel/helper-validator-identifier': 7.24.7
'@babel/helper-string-parser': 7.25.7
'@babel/helper-validator-identifier': 7.25.7
to-fast-properties: 2.0.0
'@discoveryjs/json-ext@0.5.7': {}
@ -865,11 +905,20 @@ snapshots:
'@jridgewell/resolve-uri': 3.1.2
'@jridgewell/sourcemap-codec': 1.5.0
'@types/estree@1.0.5': {}
'@noble/hashes@1.5.0': {}
'@scure/base@1.1.9': {}
'@scure/bip39@1.4.0':
dependencies:
'@noble/hashes': 1.5.0
'@scure/base': 1.1.9
'@types/estree@1.0.6': {}
'@types/json-schema@7.0.15': {}
'@types/node@22.5.4':
'@types/node@22.7.4':
dependencies:
undici-types: 6.19.8
@ -949,25 +998,30 @@ snapshots:
'@webassemblyjs/ast': 1.12.1
'@xtuc/long': 4.2.2
'@webpack-cli/configtest@2.1.1(webpack-cli@5.1.4(webpack@5.94.0))(webpack@5.94.0(webpack-cli@5.1.4))':
'@webpack-cli/configtest@2.1.1(webpack-cli@5.1.4(webpack@5.95.0))(webpack@5.95.0(webpack-cli@5.1.4))':
dependencies:
webpack: 5.94.0(webpack-cli@5.1.4)
webpack-cli: 5.1.4(webpack@5.94.0)
webpack: 5.95.0(webpack-cli@5.1.4)
webpack-cli: 5.1.4(webpack@5.95.0)
'@webpack-cli/info@2.0.2(webpack-cli@5.1.4(webpack@5.94.0))(webpack@5.94.0(webpack-cli@5.1.4))':
'@webpack-cli/info@2.0.2(webpack-cli@5.1.4(webpack@5.95.0))(webpack@5.95.0(webpack-cli@5.1.4))':
dependencies:
webpack: 5.94.0(webpack-cli@5.1.4)
webpack-cli: 5.1.4(webpack@5.94.0)
webpack: 5.95.0(webpack-cli@5.1.4)
webpack-cli: 5.1.4(webpack@5.95.0)
'@webpack-cli/serve@2.0.5(webpack-cli@5.1.4(webpack@5.94.0))(webpack@5.94.0(webpack-cli@5.1.4))':
'@webpack-cli/serve@2.0.5(webpack-cli@5.1.4(webpack@5.95.0))(webpack@5.95.0(webpack-cli@5.1.4))':
dependencies:
webpack: 5.94.0(webpack-cli@5.1.4)
webpack-cli: 5.1.4(webpack@5.94.0)
webpack: 5.95.0(webpack-cli@5.1.4)
webpack-cli: 5.1.4(webpack@5.95.0)
'@xtuc/ieee754@1.2.0': {}
'@xtuc/long@4.2.2': {}
'@zklx/kds@1.0.2':
dependencies:
'@scure/bip39': 1.4.0
elliptic: 6.5.7
acorn-import-attributes@1.9.5(acorn@8.12.1):
dependencies:
acorn: 8.12.1
@ -997,7 +1051,7 @@ snapshots:
ajv@8.17.1:
dependencies:
fast-deep-equal: 3.1.3
fast-uri: 3.0.1
fast-uri: 3.0.2
json-schema-traverse: 1.0.0
require-from-string: 2.0.2
@ -1005,23 +1059,27 @@ snapshots:
dependencies:
color-convert: 1.9.3
babel-loader@9.1.3(@babel/core@7.25.2)(webpack@5.94.0(webpack-cli@5.1.4)):
babel-loader@9.2.1(@babel/core@7.25.2)(webpack@5.95.0(webpack-cli@5.1.4)):
dependencies:
'@babel/core': 7.25.2
find-cache-dir: 4.0.0
schema-utils: 4.2.0
webpack: 5.94.0(webpack-cli@5.1.4)
webpack: 5.95.0(webpack-cli@5.1.4)
browserslist@4.23.3:
bn.js@4.12.0: {}
brorand@1.1.0: {}
browserslist@4.24.0:
dependencies:
caniuse-lite: 1.0.30001660
electron-to-chromium: 1.5.18
caniuse-lite: 1.0.30001667
electron-to-chromium: 1.5.32
node-releases: 2.0.18
update-browserslist-db: 1.1.0(browserslist@4.23.3)
update-browserslist-db: 1.1.1(browserslist@4.24.0)
buffer-from@1.1.2: {}
caniuse-lite@1.0.30001660: {}
caniuse-lite@1.0.30001667: {}
chalk@2.4.2:
dependencies:
@ -1065,14 +1123,24 @@ snapshots:
ecies-wasm@0.2.0: {}
electron-to-chromium@1.5.18: {}
electron-to-chromium@1.5.32: {}
elliptic@6.5.7:
dependencies:
bn.js: 4.12.0
brorand: 1.1.0
hash.js: 1.1.7
hmac-drbg: 1.0.1
inherits: 2.0.4
minimalistic-assert: 1.0.1
minimalistic-crypto-utils: 1.0.1
enhanced-resolve@5.17.1:
dependencies:
graceful-fs: 4.2.11
tapable: 2.2.1
envinfo@7.13.0: {}
envinfo@7.14.0: {}
es-module-lexer@1.5.4: {}
@ -1099,7 +1167,7 @@ snapshots:
fast-json-stable-stringify@2.1.0: {}
fast-uri@3.0.1: {}
fast-uri@3.0.2: {}
fastest-levenshtein@1.0.16: {}
@ -1134,15 +1202,28 @@ snapshots:
has-flag@4.0.0: {}
hash.js@1.1.7:
dependencies:
inherits: 2.0.4
minimalistic-assert: 1.0.1
hasown@2.0.2:
dependencies:
function-bind: 1.1.2
hmac-drbg@1.0.1:
dependencies:
hash.js: 1.1.7
minimalistic-assert: 1.0.1
minimalistic-crypto-utils: 1.0.1
import-local@3.2.0:
dependencies:
pkg-dir: 4.2.0
resolve-cwd: 3.0.0
inherits@2.0.4: {}
interpret@3.1.1: {}
is-core-module@2.15.1:
@ -1159,13 +1240,13 @@ snapshots:
jest-worker@27.5.1:
dependencies:
'@types/node': 22.5.4
'@types/node': 22.7.4
merge-stream: 2.0.0
supports-color: 8.1.1
js-tokens@4.0.0: {}
jsesc@2.5.2: {}
jsesc@3.0.2: {}
json-parse-even-better-errors@2.3.1: {}
@ -1199,6 +1280,10 @@ snapshots:
dependencies:
mime-db: 1.52.0
minimalistic-assert@1.0.1: {}
minimalistic-crypto-utils@1.0.1: {}
ms@2.1.3: {}
neo-async@2.6.2: {}
@ -1315,16 +1400,16 @@ snapshots:
tapable@2.2.1: {}
terser-webpack-plugin@5.3.10(webpack@5.94.0(webpack-cli@5.1.4)):
terser-webpack-plugin@5.3.10(webpack@5.95.0(webpack-cli@5.1.4)):
dependencies:
'@jridgewell/trace-mapping': 0.3.25
jest-worker: 27.5.1
schema-utils: 3.3.0
serialize-javascript: 6.0.2
terser: 5.32.0
webpack: 5.94.0(webpack-cli@5.1.4)
terser: 5.34.1
webpack: 5.95.0(webpack-cli@5.1.4)
terser@5.32.0:
terser@5.34.1:
dependencies:
'@jridgewell/source-map': 0.3.6
acorn: 8.12.1
@ -1335,9 +1420,9 @@ snapshots:
undici-types@6.19.8: {}
update-browserslist-db@1.1.0(browserslist@4.23.3):
update-browserslist-db@1.1.1(browserslist@4.24.0):
dependencies:
browserslist: 4.23.3
browserslist: 4.24.0
escalade: 3.2.0
picocolors: 1.1.0
@ -1350,21 +1435,21 @@ snapshots:
glob-to-regexp: 0.4.1
graceful-fs: 4.2.11
webpack-cli@5.1.4(webpack@5.94.0):
webpack-cli@5.1.4(webpack@5.95.0):
dependencies:
'@discoveryjs/json-ext': 0.5.7
'@webpack-cli/configtest': 2.1.1(webpack-cli@5.1.4(webpack@5.94.0))(webpack@5.94.0(webpack-cli@5.1.4))
'@webpack-cli/info': 2.0.2(webpack-cli@5.1.4(webpack@5.94.0))(webpack@5.94.0(webpack-cli@5.1.4))
'@webpack-cli/serve': 2.0.5(webpack-cli@5.1.4(webpack@5.94.0))(webpack@5.94.0(webpack-cli@5.1.4))
'@webpack-cli/configtest': 2.1.1(webpack-cli@5.1.4(webpack@5.95.0))(webpack@5.95.0(webpack-cli@5.1.4))
'@webpack-cli/info': 2.0.2(webpack-cli@5.1.4(webpack@5.95.0))(webpack@5.95.0(webpack-cli@5.1.4))
'@webpack-cli/serve': 2.0.5(webpack-cli@5.1.4(webpack@5.95.0))(webpack@5.95.0(webpack-cli@5.1.4))
colorette: 2.0.20
commander: 10.0.1
cross-spawn: 7.0.3
envinfo: 7.13.0
envinfo: 7.14.0
fastest-levenshtein: 1.0.16
import-local: 3.2.0
interpret: 3.1.1
rechoir: 0.8.0
webpack: 5.94.0(webpack-cli@5.1.4)
webpack: 5.95.0(webpack-cli@5.1.4)
webpack-merge: 5.10.0
webpack-merge@5.10.0:
@ -1375,15 +1460,15 @@ snapshots:
webpack-sources@3.2.3: {}
webpack@5.94.0(webpack-cli@5.1.4):
webpack@5.95.0(webpack-cli@5.1.4):
dependencies:
'@types/estree': 1.0.5
'@types/estree': 1.0.6
'@webassemblyjs/ast': 1.12.1
'@webassemblyjs/wasm-edit': 1.12.1
'@webassemblyjs/wasm-parser': 1.12.1
acorn: 8.12.1
acorn-import-attributes: 1.9.5(acorn@8.12.1)
browserslist: 4.23.3
browserslist: 4.24.0
chrome-trace-event: 1.0.4
enhanced-resolve: 5.17.1
es-module-lexer: 1.5.4
@ -1397,11 +1482,11 @@ snapshots:
neo-async: 2.6.2
schema-utils: 3.3.0
tapable: 2.2.1
terser-webpack-plugin: 5.3.10(webpack@5.94.0(webpack-cli@5.1.4))
terser-webpack-plugin: 5.3.10(webpack@5.95.0(webpack-cli@5.1.4))
watchpack: 2.4.2
webpack-sources: 3.2.3
optionalDependencies:
webpack-cli: 5.1.4(webpack@5.94.0)
webpack-cli: 5.1.4(webpack@5.95.0)
transitivePeerDependencies:
- '@swc/core'
- esbuild

View File

@ -1,13 +1,17 @@
const path = require("path");
import path from "path";
import { fileURLToPath } from "url";
module.exports = {
entry: "./index.js",
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
export default {
entry: "./dist/index.js",
output: {
filename: "bundle.js",
filename: "./bundle.js",
path: path.resolve(__dirname, "dist"),
},
experiments: {
syncWebAssembly: true,
},
mode: "development",
mode: "production",
};

@ -1 +0,0 @@
Subproject commit ca521e033f6e4434d336b6fd9e8e2f4f3cb11bee