diff --git a/commitlint.config.js b/commitlint.config.js
index 8597e53f1..956644057 100644
--- a/commitlint.config.js
+++ b/commitlint.config.js
@@ -21,6 +21,7 @@ const scopeEnumValues = [
"utils",
"runner",
"e2e-test",
+ "crypto",
];
const Configuration = {
extends: ["@commitlint/config-conventional"],
diff --git a/devtools/.gitignore b/devtools/.gitignore
new file mode 100644
index 000000000..849db4de5
--- /dev/null
+++ b/devtools/.gitignore
@@ -0,0 +1,2 @@
+lib
+stats.json
diff --git a/devtools/bundler/README.md b/devtools/bundler/README.md
new file mode 100644
index 000000000..1f291b716
--- /dev/null
+++ b/devtools/bundler/README.md
@@ -0,0 +1,10 @@
+# Bundler
+
+A Lumos bundler playground to test, check and analyze the bundled code.
+
+## Usage
+
+```bash
+npm run bundle-stats
+npm run bundle-analyze
+```
diff --git a/devtools/bundler/package.json b/devtools/bundler/package.json
new file mode 100644
index 000000000..7f1d5523e
--- /dev/null
+++ b/devtools/bundler/package.json
@@ -0,0 +1,29 @@
+{
+ "name": "@ckb-lumos/bundler",
+ "version": "0.20.0",
+ "homepage": "https://github.com/ckb-js/lumos#readme",
+ "bugs": {
+ "url": "https://github.com/ckb-js/lumos/issues"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/ckb-js/lumos.git"
+ },
+ "license": "MIT",
+ "author": "",
+ "scripts": {
+ "bundle-stats": "webpack --profile --json > stats.json",
+ "bundle-analyze": "webpack-bundle-analyzer stats.json"
+ },
+ "dependencies": {
+ "@ckb-lumos/lumos": "0.20.0",
+ "@types/webpack-bundle-analyzer": "^4.6.0",
+ "buffer": "^5.6.0",
+ "fork-ts-checker-webpack-plugin": "^6.4.0",
+ "ts-loader": "^9.4.3",
+ "unminified-webpack-plugin": "^3.0.0",
+ "webpack": "^5.64.1",
+ "webpack-bundle-analyzer": "^4.9.0",
+ "webpack-cli": "^4.9.1"
+ }
+}
diff --git a/devtools/bundler/src/index.ts b/devtools/bundler/src/index.ts
new file mode 100644
index 000000000..5d1b89dd7
--- /dev/null
+++ b/devtools/bundler/src/index.ts
@@ -0,0 +1 @@
+export * from "@ckb-lumos/lumos";
diff --git a/devtools/bundler/tsconfig.json b/devtools/bundler/tsconfig.json
new file mode 100644
index 000000000..310cf31e9
--- /dev/null
+++ b/devtools/bundler/tsconfig.json
@@ -0,0 +1,8 @@
+{
+ "extends": "../../tsconfig.json",
+ "compilerOptions": {
+ "outDir": "lib",
+ "rootDir": "src"
+ },
+ "include": ["src"]
+}
diff --git a/devtools/bundler/webpack.config.js b/devtools/bundler/webpack.config.js
new file mode 100644
index 000000000..7c283abea
--- /dev/null
+++ b/devtools/bundler/webpack.config.js
@@ -0,0 +1,39 @@
+const path = require("path");
+const webpack = require("webpack");
+const ForkTsCheckerWebpackPlugin = require("fork-ts-checker-webpack-plugin");
+
+module.exports = {
+ mode: "production",
+ devtool: "source-map",
+ entry: { output: "./src/index.ts" },
+ output: {
+ path: path.join(__dirname, "lib"),
+ filename: "lumos.min.js",
+ library: "lumos",
+ libraryTarget: "umd",
+ globalObject: "this",
+ },
+ module: {
+ rules: [
+ {
+ test: /\.tsx?$/,
+ loader: "ts-loader",
+ options: {},
+ },
+ ],
+ },
+ resolve: {
+ extensions: [".ts", ".js", ".json"],
+ fallback: {
+ // https://www.npmjs.com/package/buffer#usage
+ buffer: require.resolve("buffer/"),
+ path: false,
+ fs: false,
+ stream: false,
+ },
+ },
+ plugins: [
+ new ForkTsCheckerWebpackPlugin({ async: false }),
+ new webpack.ProvidePlugin({ Buffer: ["buffer", "Buffer"] }),
+ ],
+};
diff --git a/packages/base/package.json b/packages/base/package.json
index 9576457e2..f38ec744e 100644
--- a/packages/base/package.json
+++ b/packages/base/package.json
@@ -48,10 +48,8 @@
"@ckb-lumos/codec": "0.20.0",
"@ckb-lumos/toolkit": "0.20.0",
"@types/blake2b": "^2.1.0",
- "@types/lodash.isequal": "^4.5.5",
"blake2b": "^2.1.3",
- "js-xxhash": "^1.0.4",
- "lodash.isequal": "^4.5.0"
+ "js-xxhash": "^1.0.4"
},
"devDependencies": {
"jsbi": "^4.1.0"
diff --git a/packages/base/src/utils.ts b/packages/base/src/utils.ts
index 770aa2759..004de2ca4 100644
--- a/packages/base/src/utils.ts
+++ b/packages/base/src/utils.ts
@@ -1,5 +1,4 @@
import blake2b, { Blake2b } from "blake2b";
-import isEqual from "lodash.isequal";
import { xxHash32 } from "js-xxhash";
import { bytes, number, BytesLike } from "@ckb-lumos/codec";
import { BI, BIish } from "@ckb-lumos/bi";
@@ -170,10 +169,6 @@ function assertHexadecimal(debugPath: string, str: string): void {
}
}
-// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types
-function isDeepEqual(a: any, b: any): boolean {
- return isEqual(a, b);
-}
// Buffer.from('TYPE_ID')
const TYPE_ID_CODE_HASH =
"0x00000000000000000000000000000000000000000000000000545950455f4944";
@@ -287,6 +282,5 @@ export {
hashCode,
assertHexString,
assertHexadecimal,
- isDeepEqual,
generateTypeIdScript,
};
diff --git a/packages/base/tests/since.test.js b/packages/base/tests/since.test.js
index bfff204a9..d5e049e66 100644
--- a/packages/base/tests/since.test.js
+++ b/packages/base/tests/since.test.js
@@ -1,7 +1,7 @@
const test = require("ava");
const { BI } = require("@ckb-lumos/bi");
-const { since, utils } = require("../src");
+const { since } = require("../src");
const {
parseSinceCompatible,
@@ -91,7 +91,11 @@ test.before(() => {
test("parsedSince", (t) => {
fixtrues.forEach((v) => {
const parsed = parseSinceCompatible(v.since);
- t.true(utils.isDeepEqual(parsed, v.parsed));
+ t.is(parsed.type, v.parsed.type);
+ t.is(parsed.relative, v.parsed.relative);
+ BI.isBI(parsed.value)
+ ? t.true(parsed.value.eq(v.parsed.value))
+ : t.deepEqual(parsed.value, v.parsed.value);
});
});
diff --git a/packages/crypto/.gitignore b/packages/crypto/.gitignore
new file mode 100644
index 000000000..a65b41774
--- /dev/null
+++ b/packages/crypto/.gitignore
@@ -0,0 +1 @@
+lib
diff --git a/packages/crypto/README.md b/packages/crypto/README.md
new file mode 100644
index 000000000..5f9ee998e
--- /dev/null
+++ b/packages/crypto/README.md
@@ -0,0 +1,20 @@
+# @ckb-lumos/crypto
+
+Low-level cryptographic primitives for Lumos, works in both Node.js and browsers. The API is compatible with `node:crypto`
+
+## Usage
+
+The `package.json` defined the entry point for both Node.js and browsers. You can just import
+
+```ts
+import { createHash } from "@ckb-lumos/crypto";
+```
+
+### Manually
+
+```typescript
+// In Node.js
+import { createHash } from "@ckb-lumos/crypto";
+// In browsers
+import { createHash } from "@ckb-lumos/crypto/lib/crypto-browser";
+```
diff --git a/packages/crypto/package.json b/packages/crypto/package.json
new file mode 100644
index 000000000..4c43df44d
--- /dev/null
+++ b/packages/crypto/package.json
@@ -0,0 +1,58 @@
+{
+ "name": "@ckb-lumos/crypto",
+ "version": "0.20.0",
+ "description": "Crypto library for Lumos",
+ "author": "",
+ "homepage": "https://github.com/ckb-js/lumos#readme",
+ "license": "MIT",
+ "browser": "./lib/crypto-browser.js",
+ "types": "lib/crypto.d.ts",
+ "main": "./lib/crypto.js",
+ "sideEffects": false,
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "directories": {
+ "lib": "lib",
+ "test": "tests"
+ },
+ "files": [
+ "lib",
+ "src"
+ ],
+ "dependencies": {
+ "@noble/hashes": "1.3.1",
+ "@noble/secp256k1": "2.0.0",
+ "@types/aes-js": "^3.1.1",
+ "browserify-aes": "^1.2.0",
+ "scrypt-js": "^3.0.1"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/ckb-js/lumos.git"
+ },
+ "scripts": {
+ "fmt": "prettier --write \"{src,tests,examples}/**/*.ts\" package.json",
+ "lint": "eslint -c ../../.eslintrc.js \"{src,tests,examples}/**/*.ts\"",
+ "build": "npm run build:types && npm run build:js",
+ "build:types": "tsc --declaration --emitDeclarationOnly",
+ "build:js": "babel --root-mode upward src --out-dir lib --extensions .ts -s",
+ "clean": "rm -rf lib",
+ "prepublishOnly": "npm run clean && npm run build",
+ "release": "npm publish"
+ },
+ "bugs": {
+ "url": "https://github.com/ckb-js/lumos/issues"
+ },
+ "ava": {
+ "extensions": [
+ "ts"
+ ],
+ "require": [
+ "ts-node/register"
+ ]
+ },
+ "publishConfig": {
+ "access": "public"
+ }
+}
diff --git a/packages/crypto/src/crypto-browser.ts b/packages/crypto/src/crypto-browser.ts
new file mode 100644
index 000000000..912c46ab1
--- /dev/null
+++ b/packages/crypto/src/crypto-browser.ts
@@ -0,0 +1,67 @@
+// eslint-disable-next-line @typescript-eslint/triple-slash-reference
+///
+import { hmac } from "@noble/hashes/hmac";
+import { sha512 } from "@noble/hashes/sha512";
+import { sha256 } from "@noble/hashes/sha256";
+import { ripemd160 } from "@noble/hashes/ripemd160";
+// the noble/hashes is not compatible with the https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage/#scrypt
+// import { scrypt } from "@noble/hashes/scrypt";
+import { randomBytes as _randomBytes } from "@noble/hashes/utils";
+import { pbkdf2 as _pbkdf2 } from "@noble/hashes/pbkdf2";
+import type { Hash, HashAlgo } from "./types";
+// TODO may replace with the crypto.subtle API
+import {
+ createCipheriv as _createCipheriv,
+ createDecipheriv as _createDecipheriv,
+} from "browserify-aes";
+import { Cipher } from "./types";
+
+function _createHash(algorithm: HashAlgo) {
+ if (algorithm === "sha512") return sha512;
+ if (algorithm === "sha256") return sha256;
+ if (algorithm === "ripemd160") return ripemd160;
+ throw new Error(`Unknown hash algorithm ${algorithm}`);
+}
+
+export function createHash(algorithm: HashAlgo): Hash {
+ return _createHash(algorithm).create();
+}
+
+export function createHmac(algorithm: HashAlgo, key: Uint8Array): Hash {
+ return hmac.create(_createHash(algorithm), key);
+}
+
+export function randomBytes(bytesLen: number): Uint8Array {
+ return _randomBytes(bytesLen);
+}
+
+export function createCipheriv(
+ algorithm: string,
+ key: Uint8Array,
+ iv: Uint8Array
+): Cipher {
+ return _createCipheriv(algorithm, key, iv);
+}
+
+export function createDecipheriv(
+ algorithm: string,
+ key: Uint8Array,
+ iv: Uint8Array
+): Cipher {
+ return _createDecipheriv(algorithm, key, iv);
+}
+
+export function pbkdf2Sync(
+ password: Uint8Array,
+ salt: Uint8Array,
+ iterations: number,
+ keyLen: number,
+ digest: HashAlgo
+): Uint8Array {
+ return _pbkdf2(_createHash(digest), password, salt, {
+ dkLen: keyLen,
+ c: iterations,
+ });
+}
+
+export { scryptSync, scrypt } from "./scrypt";
diff --git a/packages/crypto/src/crypto.ts b/packages/crypto/src/crypto.ts
new file mode 100644
index 000000000..59a8cde88
--- /dev/null
+++ b/packages/crypto/src/crypto.ts
@@ -0,0 +1,50 @@
+import {
+ createHmac as _createHmac,
+ createHash as _createHash,
+ scryptSync as _scryptSync,
+ randomBytes as _randomBytes,
+ createCipheriv as _createCipheriv,
+ createDecipheriv as _createDecipheriv,
+ pbkdf2Sync as _pbkdf2Sync,
+} from "node:crypto";
+import type { Cipher, Hash, HashAlgo } from "./types";
+
+export function createHash(algorithm: HashAlgo): Hash {
+ return _createHash(algorithm);
+}
+
+export function createHmac(algorithm: HashAlgo, key: Uint8Array): Hash {
+ return _createHmac(algorithm, key);
+}
+
+export function randomBytes(bytesLen: number): Uint8Array {
+ return _randomBytes(bytesLen);
+}
+
+export function createCipheriv(
+ algorithm: string,
+ key: Uint8Array,
+ iv: Uint8Array
+): Cipher {
+ return _createCipheriv(algorithm, key, iv);
+}
+
+export function createDecipheriv(
+ algorithm: string,
+ key: Uint8Array,
+ iv: Uint8Array
+): Cipher {
+ return _createDecipheriv(algorithm, key, iv);
+}
+
+export function pbkdf2Sync(
+ password: Uint8Array,
+ salt: Uint8Array,
+ iterations: number,
+ keyLen: number,
+ digest: HashAlgo
+): Uint8Array {
+ return _pbkdf2Sync(password, salt, iterations, keyLen, digest);
+}
+
+export { scryptSync, scrypt } from "./scrypt";
diff --git a/packages/crypto/src/scrypt.ts b/packages/crypto/src/scrypt.ts
new file mode 100644
index 000000000..118716d17
--- /dev/null
+++ b/packages/crypto/src/scrypt.ts
@@ -0,0 +1,32 @@
+import { syncScrypt as _scryptSync, scrypt as _scrypt } from "scrypt-js";
+import { ScryptOptions } from "./types";
+
+function assertOptions(
+ options: ScryptOptions
+): asserts options is Required {
+ if (!options.r || !options.p || !options.N) {
+ throw new Error(
+ `Invalid scrypt options ${JSON.stringify(options)}, r, p, N are required`
+ );
+ }
+}
+
+export function scryptSync(
+ password: Uint8Array,
+ salt: Uint8Array,
+ dkLen: number,
+ options: ScryptOptions
+): Uint8Array {
+ assertOptions(options);
+ return _scryptSync(password, salt, options.N, options.r, options.p, dkLen);
+}
+
+export function scrypt(
+ password: Uint8Array,
+ salt: Uint8Array,
+ dkLen: number,
+ options: ScryptOptions
+): Promise {
+ assertOptions(options);
+ return _scrypt(password, salt, options.N, options.r, options.p, dkLen);
+}
diff --git a/packages/crypto/src/third.d.ts b/packages/crypto/src/third.d.ts
new file mode 100644
index 000000000..d0bfa53d8
--- /dev/null
+++ b/packages/crypto/src/third.d.ts
@@ -0,0 +1,18 @@
+declare module "browserify-aes" {
+ interface Cipher {
+ update(data: Uint8Array): Uint8Array;
+ final(): Uint8Array;
+ }
+
+ export function createCipheriv(
+ algorithm: string,
+ key: Uint8Array,
+ iv: Uint8Array
+ ): Cipher;
+
+ export function createDecipheriv(
+ algorithm: string,
+ key: Uint8Array,
+ iv: Uint8Array
+ ): Cipher;
+}
diff --git a/packages/crypto/src/types.ts b/packages/crypto/src/types.ts
new file mode 100644
index 000000000..7e118a9ae
--- /dev/null
+++ b/packages/crypto/src/types.ts
@@ -0,0 +1,22 @@
+export interface Hash {
+ update(data: Uint8Array): Hash;
+ digest(): Uint8Array;
+}
+
+export type HashAlgo = "sha512" | "sha256" | "ripemd160";
+
+export type CreateHmac = (algorithm: HashAlgo, bytes: Uint8Array) => Hash;
+
+export type ScryptOptions = {
+ // cost factor
+ N?: number;
+ // block size
+ r?: number;
+ // parallelization
+ p?: number;
+};
+
+export interface Cipher {
+ update(data: Uint8Array): Uint8Array;
+ final(): Uint8Array;
+}
diff --git a/packages/crypto/tsconfig.json b/packages/crypto/tsconfig.json
new file mode 100644
index 000000000..1b551f4e9
--- /dev/null
+++ b/packages/crypto/tsconfig.json
@@ -0,0 +1,7 @@
+{
+ "extends": "../../tsconfig.json",
+ "compilerOptions": {
+ "outDir": "lib"
+ },
+ "include": ["src"]
+}
diff --git a/packages/crypto/typedoc.json b/packages/crypto/typedoc.json
new file mode 100644
index 000000000..f593f276c
--- /dev/null
+++ b/packages/crypto/typedoc.json
@@ -0,0 +1,4 @@
+{
+ "extends": ["../../typedoc.base.json"],
+ "entryPoints": ["src/index.ts"]
+}
diff --git a/packages/hd/README.md b/packages/hd/README.md
index 264546714..4ea891eb8 100644
--- a/packages/hd/README.md
+++ b/packages/hd/README.md
@@ -44,7 +44,6 @@ resolve: {
buffer: require.resolve('buffer/'),
stream: require.resolve('stream-browserify'),
path: require.resolve('path-browserify'),
- crypto: require.resolve('crypto-browserify'),
},
plugins: [
new webpack.ProvidePlugin({
@@ -55,4 +54,4 @@ resolve: {
}
```
-You'll need to install `buffer`, `stream-browserify`, `path-browserify` and `crypto-browserify` also.
+You'll need to install `buffer`, `stream-browserify`, `path-browserify` also.
diff --git a/packages/hd/package.json b/packages/hd/package.json
index af86b8720..4848874f4 100644
--- a/packages/hd/package.json
+++ b/packages/hd/package.json
@@ -21,9 +21,10 @@
"dependencies": {
"@ckb-lumos/base": "0.20.0",
"@ckb-lumos/bi": "0.20.0",
- "bn.js": "^5.1.3",
+ "@ckb-lumos/codec": "0.20.0",
+ "@ckb-lumos/crypto": "0.20.0",
+ "bn.js": "^4.11.6",
"elliptic": "^6.5.4",
- "scrypt-js": "^3.0.1",
"sha3": "^2.1.3",
"uuid": "^8.3.0"
},
@@ -34,8 +35,10 @@
"scripts": {
"fmt": "prettier --write \"{src,tests}/**/*.ts\" package.json",
"lint": "eslint -c ../../.eslintrc.js \"{src,tests}/**/*.ts\"",
- "test": "ava **/*.test.ts --timeout=5m",
- "build": "pnpm run build:types && pnpm run build:js",
+ "test": "npm run test:node && npm run test:browser",
+ "test:node": "ava **/*.test.ts --timeout=5m",
+ "test:browser": "echo 'export * from \"@ckb-lumos/crypto/lib/crypto-browser\"' > src/crypto.ts && ava **/*.test.ts --timeout=5m && echo 'export * from \"@ckb-lumos/crypto\"' > src/crypto.ts",
+ "build": "npm run build:types && npm run build:js",
"build:types": "tsc --declaration --emitDeclarationOnly",
"build:js": "babel --root-mode upward src --out-dir lib --extensions .ts -s",
"clean": "rm -rf lib"
diff --git a/packages/hd/src/crypto.ts b/packages/hd/src/crypto.ts
new file mode 100644
index 000000000..c398ab84f
--- /dev/null
+++ b/packages/hd/src/crypto.ts
@@ -0,0 +1 @@
+export * from "@ckb-lumos/crypto";
diff --git a/packages/hd/src/keychain.ts b/packages/hd/src/keychain.ts
index 9e65f88b2..dbc202efa 100644
--- a/packages/hd/src/keychain.ts
+++ b/packages/hd/src/keychain.ts
@@ -1,7 +1,7 @@
-import crypto from "crypto";
import { ec as EC } from "elliptic";
import BN from "bn.js";
import { privateToPublic } from "./key";
+import { createHash, createHmac } from "./crypto";
const ec = new EC("secp256k1");
@@ -12,11 +12,11 @@ export default class Keychain {
privateKey: Buffer = EMPTY_BUFFER;
publicKey: Buffer = EMPTY_BUFFER;
chainCode: Buffer = EMPTY_BUFFER;
- index: number = 0;
- depth: number = 0;
+ index = 0;
+ depth = 0;
identifier: Buffer = EMPTY_BUFFER;
- fingerprint: number = 0;
- parentFingerprint: number = 0;
+ fingerprint = 0;
+ parentFingerprint = 0;
constructor(privateKey: Buffer, chainCode: Buffer) {
this.privateKey = privateKey;
@@ -33,11 +33,13 @@ export default class Keychain {
}
public static fromSeed(seed: Buffer): Keychain {
- const i = crypto
- .createHmac("sha512", Buffer.from("Bitcoin seed", "utf8"))
+ const i = createHmac("sha512", Buffer.from("Bitcoin seed", "utf8"))
.update(seed)
.digest();
- const keychain = new Keychain(i.slice(0, 32), i.slice(32));
+ const keychain = new Keychain(
+ Buffer.from(i.slice(0, 32)),
+ Buffer.from(i.slice(32))
+ );
keychain.calculateFingerprint();
return keychain;
}
@@ -47,7 +49,7 @@ export default class Keychain {
public static fromPublicKey(
publicKey: Buffer,
chainCode: Buffer,
- path: String
+ path: string
): Keychain {
const keychain = new Keychain(EMPTY_BUFFER, chainCode);
keychain.publicKey = publicKey;
@@ -74,7 +76,9 @@ export default class Keychain {
data = Buffer.concat([this.publicKey, indexBuffer]);
}
- const i = crypto.createHmac("sha512", this.chainCode).update(data).digest();
+ const i = Buffer.from(
+ createHmac("sha512", this.chainCode).update(data).digest()
+ );
const il = i.slice(0, 32);
const ir = i.slice(32);
@@ -102,6 +106,7 @@ export default class Keychain {
return this;
}
+ // eslint-disable-next-line @typescript-eslint/no-this-alias
let bip32: Keychain = this;
let entries = path.split("/");
@@ -117,13 +122,13 @@ export default class Keychain {
return bip32;
}
- isNeutered(): Boolean {
+ isNeutered(): boolean {
return this.privateKey === EMPTY_BUFFER;
}
hash160(data: Buffer): Buffer {
- const sha256 = crypto.createHash("sha256").update(data).digest();
- return crypto.createHash("ripemd160").update(sha256).digest();
+ const sha256 = createHash("sha256").update(data).digest();
+ return Buffer.from(createHash("ripemd160").update(sha256).digest());
}
private static privateKeyAdd(privateKey: Buffer, factor: Buffer): Buffer {
diff --git a/packages/hd/src/keystore.ts b/packages/hd/src/keystore.ts
index f3c2f87c4..6480a2cac 100644
--- a/packages/hd/src/keystore.ts
+++ b/packages/hd/src/keystore.ts
@@ -1,9 +1,13 @@
-import crypto from "crypto";
import { Keccak } from "sha3";
import { v4 as uuid } from "uuid";
import { ExtendedPrivateKey } from "./extended_key";
import { HexString } from "@ckb-lumos/base";
-import { syncScrypt } from "scrypt-js";
+import {
+ createCipheriv,
+ createDecipheriv,
+ randomBytes,
+ scryptSync,
+} from "./crypto";
export type HexStringWithoutPrefix = string;
@@ -123,8 +127,8 @@ export default class Keystore {
// Create an empty keystore object that contains empty private key
static createEmpty(): Keystore {
- const salt: Buffer = crypto.randomBytes(32);
- const iv: Buffer = crypto.randomBytes(16);
+ const salt: Buffer = Buffer.from(randomBytes(32));
+ const iv: Buffer = Buffer.from(randomBytes(16));
const kdfparams: KdfParams = {
dklen: 32,
salt: salt.toString("hex"),
@@ -152,8 +156,8 @@ export default class Keystore {
password: string,
options: { salt?: Buffer; iv?: Buffer } = {}
): Keystore {
- const salt: Buffer = options.salt || crypto.randomBytes(32);
- const iv: Buffer = options.iv || crypto.randomBytes(16);
+ const salt: Buffer = options.salt || Buffer.from(randomBytes(32));
+ const iv: Buffer = options.iv || Buffer.from(randomBytes(16));
const kdfparams: KdfParams = {
dklen: 32,
salt: salt.toString("hex"),
@@ -162,21 +166,14 @@ export default class Keystore {
p: 1,
};
const derivedKey: Buffer = Buffer.from(
- syncScrypt(
- Buffer.from(password),
- salt,
- kdfparams.n,
- kdfparams.r,
- kdfparams.p,
- kdfparams.dklen
- )
+ scryptSync(Buffer.from(password), salt, kdfparams.dklen, {
+ N: kdfparams.n,
+ r: kdfparams.r,
+ p: kdfparams.p,
+ })
);
- const cipher: crypto.Cipher = crypto.createCipheriv(
- CIPHER,
- derivedKey.slice(0, 16),
- iv
- );
+ const cipher = createCipheriv(CIPHER, derivedKey.slice(0, 16), iv);
if (!cipher) {
throw new UnsupportedCipher();
}
@@ -214,7 +211,7 @@ export default class Keystore {
if (Keystore.mac(derivedKey, ciphertext) !== this.crypto.mac) {
throw new IncorrectPassword();
}
- const decipher = crypto.createDecipheriv(
+ const decipher = createDecipheriv(
this.crypto.cipher,
derivedKey.slice(0, 16),
Buffer.from(this.crypto.cipherparams.iv, "hex")
@@ -240,13 +237,15 @@ export default class Keystore {
derivedKey(password: string): Buffer {
const { kdfparams } = this.crypto;
return Buffer.from(
- syncScrypt(
+ scryptSync(
Buffer.from(password),
Buffer.from(kdfparams.salt, "hex"),
- kdfparams.n,
- kdfparams.r,
- kdfparams.p,
- kdfparams.dklen
+ kdfparams.dklen,
+ {
+ N: kdfparams.n,
+ r: kdfparams.r,
+ p: kdfparams.p,
+ }
)
);
}
@@ -257,7 +256,7 @@ export default class Keystore {
.digest("hex");
}
- static scryptOptions(kdfparams: KdfParams): crypto.ScryptOptions {
+ static scryptOptions(kdfparams: KdfParams): ScryptOptions {
return {
N: kdfparams.n,
r: kdfparams.r,
@@ -266,3 +265,13 @@ export default class Keystore {
};
}
}
+
+interface ScryptOptions {
+ cost?: number | undefined;
+ blockSize?: number | undefined;
+ parallelization?: number | undefined;
+ N?: number | undefined;
+ r?: number | undefined;
+ p?: number | undefined;
+ maxmem?: number | undefined;
+}
diff --git a/packages/hd/src/mnemonic/index.ts b/packages/hd/src/mnemonic/index.ts
index 0b3f956a4..11bf7a7b7 100644
--- a/packages/hd/src/mnemonic/index.ts
+++ b/packages/hd/src/mnemonic/index.ts
@@ -1,6 +1,7 @@
-import crypto from "crypto";
import wordList from "./word_list";
import { HexString } from "@ckb-lumos/base";
+import { createHash, pbkdf2Sync, randomBytes } from "../crypto";
+import { bytes } from "@ckb-lumos/codec";
const RADIX = 2048;
const PBKDF2_ROUNDS = 2048;
@@ -28,7 +29,7 @@ if (wordList.length !== RADIX) {
);
}
-function bytesToBinary(bytes: Buffer): string {
+function bytesToBinary(bytes: Uint8Array): string {
return bytes.reduce((binary, byte) => {
return binary + byte.toString(2).padStart(8, "0");
}, "");
@@ -37,57 +38,35 @@ function bytesToBinary(bytes: Buffer): string {
function deriveChecksumBits(entropyBuffer: Buffer): string {
const ENT = entropyBuffer.length * 8;
const CS = ENT / 32;
- const hash = crypto.createHash("sha256").update(entropyBuffer).digest();
+ const hash = createHash("sha256").update(entropyBuffer).digest();
return bytesToBinary(hash).slice(0, CS);
}
-function salt(password: string = ""): string {
+function salt(password = ""): string {
return `mnemonic${password}`;
}
-export function mnemonicToSeedSync(
- mnemonic: string = "",
- password: string = ""
-): Buffer {
+export function mnemonicToSeedSync(mnemonic = "", password = ""): Buffer {
const mnemonicBuffer = Buffer.from(mnemonic.normalize("NFKD"), "utf8");
const saltBuffer = Buffer.from(salt(password.normalize("NFKD")), "utf8");
- return crypto.pbkdf2Sync(
- mnemonicBuffer,
- saltBuffer,
- PBKDF2_ROUNDS,
- KEY_LEN,
- "sha512"
+ return Buffer.from(
+ pbkdf2Sync(mnemonicBuffer, saltBuffer, PBKDF2_ROUNDS, KEY_LEN, "sha512")
);
}
-export function mnemonicToSeed(
- mnemonic: string = "",
- password: string = ""
-): Promise {
+export function mnemonicToSeed(mnemonic = "", password = ""): Promise {
return new Promise((resolve, reject) => {
try {
const mnemonicBuffer = Buffer.from(mnemonic.normalize("NFKD"), "utf8");
const saltBuffer = Buffer.from(salt(password.normalize("NFKD")), "utf8");
- crypto.pbkdf2(
- mnemonicBuffer,
- saltBuffer,
- PBKDF2_ROUNDS,
- KEY_LEN,
- "sha512",
- (err, data) => {
- if (err) {
- reject(err);
- }
- resolve(data);
- }
- );
+ pbkdf2Sync(mnemonicBuffer, saltBuffer, PBKDF2_ROUNDS, KEY_LEN, "sha512");
} catch (error) {
reject(error);
}
});
}
-export function mnemonicToEntropy(mnemonic: string = ""): HexString {
+export function mnemonicToEntropy(mnemonic = ""): HexString {
const words = mnemonic.normalize("NFKD").split(" ");
if (words.length < MIN_WORDS_SIZE) {
throw new Error(WORDS_TOO_SHORT);
@@ -172,8 +151,7 @@ export function validateMnemonic(mnemonic: string): boolean {
// Generate 12 words mnemonic code
export function generateMnemonic(): string {
const entropySize = 16;
- const entropy: HexString =
- "0x" + crypto.randomBytes(entropySize).toString("hex");
+ const entropy: HexString = bytes.hexify(randomBytes(entropySize));
return entropyToMnemonic(entropy);
}
diff --git a/packages/lumos/package.json b/packages/lumos/package.json
index 64b612924..7710707b7 100644
--- a/packages/lumos/package.json
+++ b/packages/lumos/package.json
@@ -46,7 +46,6 @@
},
"devDependencies": {
"buffer": "^6.0.3",
- "crypto-browserify": "^3.12.0",
"fork-ts-checker-webpack-plugin": "^6.4.0",
"ts-loader": "^9.2.6",
"unminified-webpack-plugin": "^3.0.0",
diff --git a/packages/lumos/webpack.config.js b/packages/lumos/webpack.config.js
index 43c7918e6..032a1d14c 100644
--- a/packages/lumos/webpack.config.js
+++ b/packages/lumos/webpack.config.js
@@ -32,7 +32,6 @@ module.exports = {
fallback: {
// https://www.npmjs.com/package/buffer#usage
buffer: require.resolve("buffer/"),
- crypto: require.resolve("crypto-browserify"),
path: false,
fs: false,
stream: false,
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 773b6d655..19a8e7498 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -99,6 +99,36 @@ importers:
specifier: 5.0.4
version: 5.0.4
+ devtools/bundler:
+ dependencies:
+ '@ckb-lumos/lumos':
+ specifier: 0.20.0
+ version: link:../../packages/lumos
+ '@types/webpack-bundle-analyzer':
+ specifier: ^4.6.0
+ version: 4.6.0(webpack-cli@4.9.1)
+ buffer:
+ specifier: ^5.6.0
+ version: 5.6.0
+ fork-ts-checker-webpack-plugin:
+ specifier: ^6.4.0
+ version: 6.4.0(eslint@8.40.0)(typescript@4.9.5)(webpack@5.64.1)
+ ts-loader:
+ specifier: ^9.4.3
+ version: 9.4.3(typescript@4.9.5)(webpack@5.64.1)
+ unminified-webpack-plugin:
+ specifier: ^3.0.0
+ version: 3.0.0(webpack@5.64.1)
+ webpack:
+ specifier: ^5.64.1
+ version: 5.64.1(webpack-cli@4.9.1)
+ webpack-bundle-analyzer:
+ specifier: ^4.9.0
+ version: 4.9.0
+ webpack-cli:
+ specifier: ^4.9.1
+ version: 4.9.1(webpack-bundle-analyzer@4.9.0)(webpack@5.64.1)
+
devtools/changelog:
dependencies:
'@changesets/get-github-info':
@@ -125,18 +155,12 @@ importers:
'@types/blake2b':
specifier: ^2.1.0
version: 2.1.0
- '@types/lodash.isequal':
- specifier: ^4.5.5
- version: 4.5.5
blake2b:
specifier: ^2.1.3
version: 2.1.3
js-xxhash:
specifier: ^1.0.4
version: 1.0.4
- lodash.isequal:
- specifier: ^4.5.0
- version: 4.5.0
devDependencies:
jsbi:
specifier: ^4.1.0
@@ -268,6 +292,24 @@ importers:
specifier: ^1.1.1
version: 1.1.1
+ packages/crypto:
+ dependencies:
+ '@noble/hashes':
+ specifier: 1.3.1
+ version: 1.3.1
+ '@noble/secp256k1':
+ specifier: 2.0.0
+ version: 2.0.0
+ '@types/aes-js':
+ specifier: ^3.1.1
+ version: 3.1.1
+ browserify-aes:
+ specifier: ^1.2.0
+ version: 1.2.0
+ scrypt-js:
+ specifier: ^3.0.1
+ version: 3.0.1
+
packages/debugger:
dependencies:
'@ckb-lumos/base':
@@ -413,15 +455,18 @@ importers:
'@ckb-lumos/bi':
specifier: 0.20.0
version: link:../bi
+ '@ckb-lumos/codec':
+ specifier: 0.20.0
+ version: link:../codec
+ '@ckb-lumos/crypto':
+ specifier: 0.20.0
+ version: link:../crypto
bn.js:
- specifier: ^5.1.3
- version: 5.1.3
+ specifier: ^4.11.6
+ version: 4.12.0
elliptic:
specifier: ^6.5.4
version: 6.5.4
- scrypt-js:
- specifier: ^3.0.1
- version: 3.0.1
sha3:
specifier: ^2.1.3
version: 2.1.3
@@ -558,9 +603,6 @@ importers:
buffer:
specifier: ^6.0.3
version: 6.0.3
- crypto-browserify:
- specifier: ^3.12.0
- version: 3.12.0
fork-ts-checker-webpack-plugin:
specifier: ^6.4.0
version: 6.4.0(eslint@8.40.0)(typescript@4.9.5)(webpack@5.64.1)
@@ -575,7 +617,7 @@ importers:
version: 5.64.1(webpack-cli@4.9.1)
webpack-cli:
specifier: ^4.9.1
- version: 4.9.1(webpack@5.64.1)
+ version: 4.9.1(webpack-bundle-analyzer@4.9.0)(webpack@5.64.1)
packages/molecule:
dependencies:
@@ -3769,8 +3811,8 @@ packages:
update-notifier: 5.1.0
url-loader: 4.1.1(file-loader@6.2.0)(webpack@5.82.0)
wait-on: 6.0.1
- webpack: 5.82.0
- webpack-bundle-analyzer: 4.8.0
+ webpack: 5.82.0(webpack-cli@4.9.1)
+ webpack-bundle-analyzer: 4.9.0
webpack-dev-server: 4.15.0(webpack@5.82.0)
webpack-merge: 5.8.0
webpackbar: 5.0.2(webpack@5.82.0)
@@ -3836,7 +3878,7 @@ packages:
unified: 9.2.2
unist-util-visit: 2.0.3
url-loader: 4.1.1(file-loader@6.2.0)(webpack@5.82.0)
- webpack: 5.82.0
+ webpack: 5.82.0(webpack-cli@4.9.1)
transitivePeerDependencies:
- '@docusaurus/types'
- '@swc/core'
@@ -3892,7 +3934,7 @@ packages:
tslib: 2.5.0
unist-util-visit: 2.0.3
utility-types: 3.10.0
- webpack: 5.82.0
+ webpack: 5.82.0(webpack-cli@4.9.1)
transitivePeerDependencies:
- '@parcel/css'
- '@swc/core'
@@ -3935,7 +3977,7 @@ packages:
react-dom: 17.0.2(react@17.0.2)
tslib: 2.5.0
utility-types: 3.10.0
- webpack: 5.82.0
+ webpack: 5.82.0(webpack-cli@4.9.1)
transitivePeerDependencies:
- '@parcel/css'
- '@swc/core'
@@ -3970,7 +4012,7 @@ packages:
react: 17.0.2
react-dom: 17.0.2(react@17.0.2)
tslib: 2.5.0
- webpack: 5.82.0
+ webpack: 5.82.0(webpack-cli@4.9.1)
transitivePeerDependencies:
- '@parcel/css'
- '@swc/core'
@@ -4369,7 +4411,7 @@ packages:
react-dom: 17.0.2(react@17.0.2)
react-helmet-async: 1.3.0(react-dom@17.0.2)(react@17.0.2)
utility-types: 3.10.0
- webpack: 5.82.0
+ webpack: 5.82.0(webpack-cli@4.9.1)
webpack-merge: 5.8.0
transitivePeerDependencies:
- '@swc/core'
@@ -4433,7 +4475,7 @@ packages:
shelljs: 0.8.5
tslib: 2.5.0
url-loader: 4.1.1(file-loader@6.2.0)(webpack@5.82.0)
- webpack: 5.82.0
+ webpack: 5.82.0(webpack-cli@4.9.1)
transitivePeerDependencies:
- '@swc/core'
- esbuild
@@ -5160,6 +5202,15 @@ packages:
dev: true
optional: true
+ /@noble/hashes@1.3.1:
+ resolution: {integrity: sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==}
+ engines: {node: '>= 16'}
+ dev: false
+
+ /@noble/secp256k1@2.0.0:
+ resolution: {integrity: sha512-rUGBd95e2a45rlmFTqQJYEFA4/gdIARFfuTuTqLglz0PZ6AKyzyXsEZZq7UZn8hZsvaBgpCzKKBJizT2cJERXw==}
+ dev: false
+
/@nodelib/fs.scandir@2.1.5:
resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
engines: {node: '>= 8'}
@@ -5180,7 +5231,6 @@ packages:
/@polka/url@1.0.0-next.21:
resolution: {integrity: sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==}
- dev: false
/@popperjs/core@2.11.7:
resolution: {integrity: sha512-Cr4OjIkipTtcXKjAsm8agyleBuDHvxzeBoa1v543lbv1YaIwQjESsVcmjiWiPEbC1FIeHOG/Op9kdCmAmiS3Kw==}
@@ -5464,6 +5514,10 @@ packages:
resolution: {integrity: sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==}
dev: true
+ /@types/aes-js@3.1.1:
+ resolution: {integrity: sha512-SDSGgXT3LRCH6qMWk8OHT1vLSVNuHNvCpKCx2/TYtQMbMGGgxJC9fspwSkQjqzRagrWnCrxuLL3jMNXLXHHvSw==}
+ dev: false
+
/@types/babel__core@7.20.0:
resolution: {integrity: sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ==}
dependencies:
@@ -5704,12 +5758,6 @@ packages:
shell-exec: 1.0.2
dev: false
- /@types/lodash.isequal@4.5.5:
- resolution: {integrity: sha512-4IKbinG7MGP131wRfceK6W4E/Qt3qssEFLF30LnJbjYiSfHGGRU/Io8YxXrZX109ir+iDETC8hw8QsDijukUVg==}
- dependencies:
- '@types/lodash': 4.14.194
- dev: false
-
/@types/lodash.uniqby@4.7.7:
resolution: {integrity: sha512-sv2g6vkCIvEUsK5/Vq17haoZaisfj2EWW8mP7QWlnKi6dByoNmeuHDDXHR7sabuDqwO4gvU7ModIL22MmnOocg==}
dependencies:
@@ -5952,6 +6000,19 @@ packages:
resolution: {integrity: sha512-eQ9qFW/fhfGJF8WKHGEHZEyVWfZxrT+6CLIJGBcZPfxUh/+BnEj+UCGYMlr9qZuX/2AltsvwrGqp0LhEW8D0zQ==}
dev: true
+ /@types/webpack-bundle-analyzer@4.6.0(webpack-cli@4.9.1):
+ resolution: {integrity: sha512-XeQmQCCXdZdap+A/60UKmxW5Mz31Vp9uieGlHB3T4z/o2OLVLtTI3bvTuS6A2OWd/rbAAQiGGWIEFQACu16szA==}
+ dependencies:
+ '@types/node': 20.1.0
+ tapable: 2.2.1
+ webpack: 5.82.0(webpack-cli@4.9.1)
+ transitivePeerDependencies:
+ - '@swc/core'
+ - esbuild
+ - uglify-js
+ - webpack-cli
+ dev: false
+
/@types/ws@8.5.4:
resolution: {integrity: sha512-zdQDHKUgcX/zBc4GrwsE/7dVdAD8JR4EuiAXiiUhhfyIJXXb2+PrGshFyeXWQPMmmZ2XxgaqclgpIC7eTXc1mg==}
dependencies:
@@ -6109,7 +6170,6 @@ packages:
dependencies:
'@webassemblyjs/helper-numbers': 1.11.1
'@webassemblyjs/helper-wasm-bytecode': 1.11.1
- dev: true
/@webassemblyjs/ast@1.11.5:
resolution: {integrity: sha512-LHY/GSAZZRpsNQH+/oHqhRQ5FT7eoULcBqgfyTB5nQHogFnK3/7QoN7dLnwSE/JkUAF0SrRuclT7ODqMFtWxxQ==}
@@ -6119,21 +6179,18 @@ packages:
/@webassemblyjs/floating-point-hex-parser@1.11.1:
resolution: {integrity: sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==}
- dev: true
/@webassemblyjs/floating-point-hex-parser@1.11.5:
resolution: {integrity: sha512-1j1zTIC5EZOtCplMBG/IEwLtUojtwFVwdyVMbL/hwWqbzlQoJsWCOavrdnLkemwNoC/EOwtUFch3fuo+cbcXYQ==}
/@webassemblyjs/helper-api-error@1.11.1:
resolution: {integrity: sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==}
- dev: true
/@webassemblyjs/helper-api-error@1.11.5:
resolution: {integrity: sha512-L65bDPmfpY0+yFrsgz8b6LhXmbbs38OnwDCf6NpnMUYqa+ENfE5Dq9E42ny0qz/PdR0LJyq/T5YijPnU8AXEpA==}
/@webassemblyjs/helper-buffer@1.11.1:
resolution: {integrity: sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==}
- dev: true
/@webassemblyjs/helper-buffer@1.11.5:
resolution: {integrity: sha512-fDKo1gstwFFSfacIeH5KfwzjykIE6ldh1iH9Y/8YkAZrhmu4TctqYjSh7t0K2VyDSXOZJ1MLhht/k9IvYGcIxg==}
@@ -6144,7 +6201,6 @@ packages:
'@webassemblyjs/floating-point-hex-parser': 1.11.1
'@webassemblyjs/helper-api-error': 1.11.1
'@xtuc/long': 4.2.2
- dev: true
/@webassemblyjs/helper-numbers@1.11.5:
resolution: {integrity: sha512-DhykHXM0ZABqfIGYNv93A5KKDw/+ywBFnuWybZZWcuzWHfbp21wUfRkbtz7dMGwGgT4iXjWuhRMA2Mzod6W4WA==}
@@ -6155,7 +6211,6 @@ packages:
/@webassemblyjs/helper-wasm-bytecode@1.11.1:
resolution: {integrity: sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==}
- dev: true
/@webassemblyjs/helper-wasm-bytecode@1.11.5:
resolution: {integrity: sha512-oC4Qa0bNcqnjAowFn7MPCETQgDYytpsfvz4ujZz63Zu/a/v71HeCAAmZsgZ3YVKec3zSPYytG3/PrRCqbtcAvA==}
@@ -6167,7 +6222,6 @@ packages:
'@webassemblyjs/helper-buffer': 1.11.1
'@webassemblyjs/helper-wasm-bytecode': 1.11.1
'@webassemblyjs/wasm-gen': 1.11.1
- dev: true
/@webassemblyjs/helper-wasm-section@1.11.5:
resolution: {integrity: sha512-uEoThA1LN2NA+K3B9wDo3yKlBfVtC6rh0i4/6hvbz071E8gTNZD/pT0MsBf7MeD6KbApMSkaAK0XeKyOZC7CIA==}
@@ -6181,7 +6235,6 @@ packages:
resolution: {integrity: sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==}
dependencies:
'@xtuc/ieee754': 1.2.0
- dev: true
/@webassemblyjs/ieee754@1.11.5:
resolution: {integrity: sha512-37aGq6qVL8A8oPbPrSGMBcp38YZFXcHfiROflJn9jxSdSMMM5dS5P/9e2/TpaJuhE+wFrbukN2WI6Hw9MH5acg==}
@@ -6192,7 +6245,6 @@ packages:
resolution: {integrity: sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==}
dependencies:
'@xtuc/long': 4.2.2
- dev: true
/@webassemblyjs/leb128@1.11.5:
resolution: {integrity: sha512-ajqrRSXaTJoPW+xmkfYN6l8VIeNnR4vBOTQO9HzR7IygoCcKWkICbKFbVTNMjMgMREqXEr0+2M6zukzM47ZUfQ==}
@@ -6201,7 +6253,6 @@ packages:
/@webassemblyjs/utf8@1.11.1:
resolution: {integrity: sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==}
- dev: true
/@webassemblyjs/utf8@1.11.5:
resolution: {integrity: sha512-WiOhulHKTZU5UPlRl53gHR8OxdGsSOxqfpqWeA2FmcwBMaoEdz6b2x2si3IwC9/fSPLfe8pBMRTHVMk5nlwnFQ==}
@@ -6217,7 +6268,6 @@ packages:
'@webassemblyjs/wasm-opt': 1.11.1
'@webassemblyjs/wasm-parser': 1.11.1
'@webassemblyjs/wast-printer': 1.11.1
- dev: true
/@webassemblyjs/wasm-edit@1.11.5:
resolution: {integrity: sha512-C0p9D2fAu3Twwqvygvf42iGCQ4av8MFBLiTb+08SZ4cEdwzWx9QeAHDo1E2k+9s/0w1DM40oflJOpkZ8jW4HCQ==}
@@ -6239,7 +6289,6 @@ packages:
'@webassemblyjs/ieee754': 1.11.1
'@webassemblyjs/leb128': 1.11.1
'@webassemblyjs/utf8': 1.11.1
- dev: true
/@webassemblyjs/wasm-gen@1.11.5:
resolution: {integrity: sha512-14vteRlRjxLK9eSyYFvw1K8Vv+iPdZU0Aebk3j6oB8TQiQYuO6hj9s4d7qf6f2HJr2khzvNldAFG13CgdkAIfA==}
@@ -6257,7 +6306,6 @@ packages:
'@webassemblyjs/helper-buffer': 1.11.1
'@webassemblyjs/wasm-gen': 1.11.1
'@webassemblyjs/wasm-parser': 1.11.1
- dev: true
/@webassemblyjs/wasm-opt@1.11.5:
resolution: {integrity: sha512-tcKwlIXstBQgbKy1MlbDMlXaxpucn42eb17H29rawYLxm5+MsEmgPzeCP8B1Cl69hCice8LeKgZpRUAPtqYPgw==}
@@ -6276,7 +6324,6 @@ packages:
'@webassemblyjs/ieee754': 1.11.1
'@webassemblyjs/leb128': 1.11.1
'@webassemblyjs/utf8': 1.11.1
- dev: true
/@webassemblyjs/wasm-parser@1.11.5:
resolution: {integrity: sha512-SVXUIwsLQlc8srSD7jejsfTU83g7pIGr2YYNb9oHdtldSxaOhvA5xwvIiWIfcX8PlSakgqMXsLpLfbbJ4cBYew==}
@@ -6293,7 +6340,6 @@ packages:
dependencies:
'@webassemblyjs/ast': 1.11.1
'@xtuc/long': 4.2.2
- dev: true
/@webassemblyjs/wast-printer@1.11.5:
resolution: {integrity: sha512-f7Pq3wvg3GSPUPzR0F6bmI89Hdb+u9WXrSKc4v+N0aV0q6r42WoF92Jp2jEorBEBRoRNXgjp53nBniDXcqZYPA==}
@@ -6308,8 +6354,7 @@ packages:
webpack-cli: 4.x.x
dependencies:
webpack: 5.64.1(webpack-cli@4.9.1)
- webpack-cli: 4.9.1(webpack@5.64.1)
- dev: true
+ webpack-cli: 4.9.1(webpack-bundle-analyzer@4.9.0)(webpack@5.64.1)
/@webpack-cli/info@1.5.0(webpack-cli@4.9.1):
resolution: {integrity: sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==}
@@ -6317,8 +6362,7 @@ packages:
webpack-cli: 4.x.x
dependencies:
envinfo: 7.8.1
- webpack-cli: 4.9.1(webpack@5.64.1)
- dev: true
+ webpack-cli: 4.9.1(webpack-bundle-analyzer@4.9.0)(webpack@5.64.1)
/@webpack-cli/serve@1.7.0(webpack-cli@4.9.1):
resolution: {integrity: sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==}
@@ -6329,8 +6373,7 @@ packages:
webpack-dev-server:
optional: true
dependencies:
- webpack-cli: 4.9.1(webpack@5.64.1)
- dev: true
+ webpack-cli: 4.9.1(webpack-bundle-analyzer@4.9.0)(webpack@5.64.1)
/@xtuc/ieee754@1.2.0:
resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==}
@@ -6639,15 +6682,6 @@ packages:
resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==}
dev: false
- /asn1.js@5.4.1:
- resolution: {integrity: sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==}
- dependencies:
- bn.js: 4.12.0
- inherits: 2.0.4
- minimalistic-assert: 1.0.1
- safer-buffer: 2.1.2
- dev: true
-
/asn1@0.2.6:
resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==}
dependencies:
@@ -6811,7 +6845,7 @@ packages:
loader-utils: 2.0.4
make-dir: 3.1.0
schema-utils: 2.7.0
- webpack: 5.82.0
+ webpack: 5.82.0(webpack-cli@4.9.1)
dev: false
/babel-plugin-apply-mdx-type-prop@1.6.22(@babel/core@7.12.9):
@@ -7040,9 +7074,7 @@ packages:
/bn.js@4.12.0:
resolution: {integrity: sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==}
-
- /bn.js@5.1.3:
- resolution: {integrity: sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ==}
+ dev: false
/body-parser@1.19.0:
resolution: {integrity: sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==}
@@ -7183,6 +7215,7 @@ packages:
/brorand@1.1.0:
resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==}
+ dev: false
/browserify-aes@1.2.0:
resolution: {integrity: sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==}
@@ -7193,45 +7226,7 @@ packages:
evp_bytestokey: 1.0.3
inherits: 2.0.4
safe-buffer: 5.2.1
- dev: true
-
- /browserify-cipher@1.0.1:
- resolution: {integrity: sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==}
- dependencies:
- browserify-aes: 1.2.0
- browserify-des: 1.0.2
- evp_bytestokey: 1.0.3
- dev: true
-
- /browserify-des@1.0.2:
- resolution: {integrity: sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==}
- dependencies:
- cipher-base: 1.0.4
- des.js: 1.0.1
- inherits: 2.0.4
- safe-buffer: 5.2.1
- dev: true
-
- /browserify-rsa@4.1.0:
- resolution: {integrity: sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==}
- dependencies:
- bn.js: 5.1.3
- randombytes: 2.1.0
- dev: true
-
- /browserify-sign@4.2.1:
- resolution: {integrity: sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==}
- dependencies:
- bn.js: 5.1.3
- browserify-rsa: 4.1.0
- create-hash: 1.2.0
- create-hmac: 1.1.7
- elliptic: 6.5.4
- inherits: 2.0.4
- parse-asn1: 5.1.6
- readable-stream: 3.6.2
- safe-buffer: 5.2.1
- dev: true
+ dev: false
/browserslist@4.21.5:
resolution: {integrity: sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==}
@@ -7273,7 +7268,7 @@ packages:
/buffer-xor@1.0.3:
resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==}
- dev: true
+ dev: false
/buffer@5.6.0:
resolution: {integrity: sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==}
@@ -7512,7 +7507,7 @@ packages:
dependencies:
inherits: 2.0.4
safe-buffer: 5.2.1
- dev: true
+ dev: false
/cjs-module-lexer@1.2.2:
resolution: {integrity: sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==}
@@ -7885,7 +7880,7 @@ packages:
normalize-path: 3.0.0
schema-utils: 4.0.1
serialize-javascript: 6.0.1
- webpack: 5.82.0
+ webpack: 5.82.0(webpack-cli@4.9.1)
dev: false
/core-js-compat@3.30.2:
@@ -7958,13 +7953,6 @@ packages:
path-type: 4.0.0
dev: false
- /create-ecdh@4.0.4:
- resolution: {integrity: sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==}
- dependencies:
- bn.js: 4.12.0
- elliptic: 6.5.4
- dev: true
-
/create-hash@1.2.0:
resolution: {integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==}
dependencies:
@@ -7973,18 +7961,7 @@ packages:
md5.js: 1.3.5
ripemd160: 2.0.2
sha.js: 2.4.11
- dev: true
-
- /create-hmac@1.1.7:
- resolution: {integrity: sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==}
- dependencies:
- cipher-base: 1.0.4
- create-hash: 1.2.0
- inherits: 2.0.4
- ripemd160: 2.0.2
- safe-buffer: 5.2.1
- sha.js: 2.4.11
- dev: true
+ dev: false
/create-require@1.1.1:
resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==}
@@ -8025,22 +8002,6 @@ packages:
shebang-command: 2.0.0
which: 2.0.2
- /crypto-browserify@3.12.0:
- resolution: {integrity: sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==}
- dependencies:
- browserify-cipher: 1.0.1
- browserify-sign: 4.2.1
- create-ecdh: 4.0.4
- create-hash: 1.2.0
- create-hmac: 1.1.7
- diffie-hellman: 5.0.3
- inherits: 2.0.4
- pbkdf2: 3.1.2
- public-encrypt: 4.0.3
- randombytes: 2.1.0
- randomfill: 1.0.4
- dev: true
-
/crypto-random-string@2.0.0:
resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==}
engines: {node: '>=8'}
@@ -8067,8 +8028,8 @@ packages:
postcss-modules-scope: 3.0.0(postcss@8.4.23)
postcss-modules-values: 4.0.0(postcss@8.4.23)
postcss-value-parser: 4.2.0
- semver: 7.5.0
- webpack: 5.82.0
+ semver: 7.5.4
+ webpack: 5.82.0(webpack-cli@4.9.1)
dev: false
/css-minimizer-webpack-plugin@4.2.2(clean-css@5.3.2)(webpack@5.82.0):
@@ -8103,7 +8064,7 @@ packages:
schema-utils: 4.0.1
serialize-javascript: 6.0.1
source-map: 0.6.1
- webpack: 5.82.0
+ webpack: 5.82.0(webpack-cli@4.9.1)
dev: false
/css-select@4.3.0:
@@ -8478,13 +8439,6 @@ packages:
resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==}
engines: {node: '>= 0.8'}
- /des.js@1.0.1:
- resolution: {integrity: sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==}
- dependencies:
- inherits: 2.0.4
- minimalistic-assert: 1.0.1
- dev: true
-
/destroy@1.2.0:
resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==}
engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
@@ -8550,14 +8504,6 @@ packages:
engines: {node: '>=0.3.1'}
dev: true
- /diffie-hellman@5.0.3:
- resolution: {integrity: sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==}
- dependencies:
- bn.js: 4.12.0
- miller-rabin: 4.0.1
- randombytes: 2.1.0
- dev: true
-
/dir-glob@3.0.1:
resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
engines: {node: '>=8'}
@@ -8700,7 +8646,6 @@ packages:
/duplexer@0.1.2:
resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==}
- dev: false
/eastasianwidth@0.2.0:
resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
@@ -8728,6 +8673,7 @@ packages:
inherits: 2.0.4
minimalistic-assert: 1.0.1
minimalistic-crypto-utils: 1.0.1
+ dev: false
/emittery@0.10.2:
resolution: {integrity: sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==}
@@ -8795,7 +8741,6 @@ packages:
resolution: {integrity: sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==}
engines: {node: '>=4'}
hasBin: true
- dev: true
/equal-length@1.0.1:
resolution: {integrity: sha512-TK2m7MvWPt/v3dan0BCNp99pytIE5UGrUj7F0KZirNX8xz8fDFUAZfgm8uB5FuQq9u0sMeDocYBfEhsd1nwGoA==}
@@ -8849,7 +8794,6 @@ packages:
/es-module-lexer@0.9.3:
resolution: {integrity: sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==}
- dev: true
/es-module-lexer@1.2.1:
resolution: {integrity: sha512-9978wrXM50Y4rTMmW5kXIC09ZdXQZqkE4mxhwkd8VbzsGkXGPgV4zWuqQJgCEzYngdo2dYDa0l8xhX4fkSwJSg==}
@@ -9147,7 +9091,7 @@ packages:
dependencies:
md5.js: 1.3.5
safe-buffer: 5.2.1
- dev: true
+ dev: false
/execa@5.1.1:
resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==}
@@ -9343,7 +9287,6 @@ packages:
/fastest-levenshtein@1.0.16:
resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==}
engines: {node: '>= 4.9.1'}
- dev: true
/fastq@1.15.0:
resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==}
@@ -9423,7 +9366,7 @@ packages:
dependencies:
loader-utils: 2.0.4
schema-utils: 3.1.2
- webpack: 5.82.0
+ webpack: 5.82.0(webpack-cli@4.9.1)
dev: false
/file-type@11.1.0:
@@ -9617,11 +9560,10 @@ packages:
memfs: 3.5.1
minimatch: 3.1.2
schema-utils: 2.7.0
- semver: 7.5.0
+ semver: 7.5.4
tapable: 1.1.3
typescript: 4.9.5
webpack: 5.64.1(webpack-cli@4.9.1)
- dev: true
/fork-ts-checker-webpack-plugin@6.5.3(eslint@8.40.0)(typescript@4.9.5)(webpack@5.82.0):
resolution: {integrity: sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==}
@@ -9649,10 +9591,10 @@ packages:
memfs: 3.5.1
minimatch: 3.1.2
schema-utils: 2.7.0
- semver: 7.5.0
+ semver: 7.5.4
tapable: 1.1.3
typescript: 4.9.5
- webpack: 5.82.0
+ webpack: 5.82.0(webpack-cli@4.9.1)
dev: false
/form-data@2.3.3:
@@ -10047,7 +9989,6 @@ packages:
engines: {node: '>=10'}
dependencies:
duplexer: 0.1.2
- dev: false
/handle-thing@2.0.1:
resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==}
@@ -10132,13 +10073,14 @@ packages:
inherits: 2.0.4
readable-stream: 3.6.2
safe-buffer: 5.2.1
- dev: true
+ dev: false
/hash.js@1.1.7:
resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==}
dependencies:
inherits: 2.0.4
minimalistic-assert: 1.0.1
+ dev: false
/hast-to-hyperscript@9.0.1:
resolution: {integrity: sha512-zQgLKqF+O2F72S1aa4y2ivxzSlko3MAvxkwG8ehGmNiqd98BIN3JM1rAJPmplEyLmGLO2QZYJtIneOSZ2YbJuA==}
@@ -10230,6 +10172,7 @@ packages:
hash.js: 1.1.7
minimalistic-assert: 1.0.1
minimalistic-crypto-utils: 1.0.1
+ dev: false
/hoist-non-react-statics@3.3.2:
resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==}
@@ -10304,7 +10247,7 @@ packages:
lodash: 4.17.21
pretty-error: 4.0.0
tapable: 2.2.1
- webpack: 5.82.0
+ webpack: 5.82.0(webpack-cli@4.9.1)
dev: false
/htmlparser2@6.1.0:
@@ -10484,7 +10427,6 @@ packages:
dependencies:
pkg-dir: 4.2.0
resolve-cwd: 3.0.0
- dev: true
/imurmurhash@0.1.4:
resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
@@ -10549,7 +10491,6 @@ packages:
/interpret@2.2.0:
resolution: {integrity: sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==}
engines: {node: '>= 0.10'}
- dev: true
/into-stream@3.1.0:
resolution: {integrity: sha512-TcdjPibTksa1NQximqep2r17ISRiNE9fwlfbg3F8ANdvP5/yrFTew86VcO//jk4QTaMlbjypPBq76HN2zaKfZQ==}
@@ -11528,7 +11469,6 @@ packages:
/json-parse-better-errors@1.0.2:
resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==}
- dev: true
/json-parse-even-better-errors@2.3.1:
resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==}
@@ -11820,10 +11760,6 @@ packages:
resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==}
dev: true
- /lodash.isequal@4.5.0:
- resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==}
- dev: false
-
/lodash.islength@4.0.1:
resolution: {integrity: sha512-FlJtdcHNU8YEXbzZXYWMEHLkQOpvmlnGr5o2N1iQKB7hNyr6qPkWAe+Ceczz6JYlIzD4AlTD2igvt/2/0Pb3Zw==}
dev: true
@@ -12002,7 +11938,7 @@ packages:
hash-base: 3.1.0
inherits: 2.0.4
safe-buffer: 5.2.1
- dev: true
+ dev: false
/mdast-squeeze-paragraphs@4.0.0:
resolution: {integrity: sha512-zxdPn69hkQ1rm4J+2Cs2j6wDEv7O17TfXTJ33tl/+JPIoEmtV9t2ZzBM5LPHE8QlHsmVD8t3vPKCyY3oH+H8MQ==}
@@ -12119,14 +12055,6 @@ packages:
braces: 3.0.2
picomatch: 2.3.1
- /miller-rabin@4.0.1:
- resolution: {integrity: sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==}
- hasBin: true
- dependencies:
- bn.js: 4.12.0
- brorand: 1.1.0
- dev: true
-
/mime-db@1.33.0:
resolution: {integrity: sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==}
engines: {node: '>= 0.6'}
@@ -12179,14 +12107,16 @@ packages:
webpack: ^5.0.0
dependencies:
schema-utils: 4.0.1
- webpack: 5.82.0
+ webpack: 5.82.0(webpack-cli@4.9.1)
dev: false
/minimalistic-assert@1.0.1:
resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==}
+ dev: false
/minimalistic-crypto-utils@1.0.1:
resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==}
+ dev: false
/minimatch@3.1.2:
resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
@@ -12224,7 +12154,6 @@ packages:
/mrmime@1.0.1:
resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==}
engines: {node: '>=10'}
- dev: false
/ms@2.0.0:
resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==}
@@ -12554,7 +12483,6 @@ packages:
/opener@1.5.2:
resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==}
hasBin: true
- dev: false
/optionator@0.9.1:
resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==}
@@ -12717,16 +12645,6 @@ packages:
dependencies:
callsites: 3.1.0
- /parse-asn1@5.1.6:
- resolution: {integrity: sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==}
- dependencies:
- asn1.js: 5.4.1
- browserify-aes: 1.2.0
- evp_bytestokey: 1.0.3
- pbkdf2: 3.1.2
- safe-buffer: 5.2.1
- dev: true
-
/parse-entities@2.0.0:
resolution: {integrity: sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==}
dependencies:
@@ -12843,17 +12761,6 @@ packages:
resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
engines: {node: '>=8'}
- /pbkdf2@3.1.2:
- resolution: {integrity: sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==}
- engines: {node: '>=0.12'}
- dependencies:
- create-hash: 1.2.0
- create-hmac: 1.1.7
- ripemd160: 2.0.2
- safe-buffer: 5.2.1
- sha.js: 2.4.11
- dev: true
-
/pend@1.2.0:
resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==}
dev: false
@@ -13024,8 +12931,8 @@ packages:
jiti: 1.18.2
klona: 2.0.6
postcss: 8.4.23
- semver: 7.5.0
- webpack: 5.82.0
+ semver: 7.5.4
+ webpack: 5.82.0(webpack-cli@4.9.1)
dev: false
/postcss-merge-idents@5.1.1(postcss@8.4.23):
@@ -13475,17 +13382,6 @@ packages:
resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==}
dev: true
- /public-encrypt@4.0.3:
- resolution: {integrity: sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==}
- dependencies:
- bn.js: 4.12.0
- browserify-rsa: 4.1.0
- create-hash: 1.2.0
- parse-asn1: 5.1.6
- randombytes: 2.1.0
- safe-buffer: 5.2.1
- dev: true
-
/pump@3.0.0:
resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==}
dependencies:
@@ -13579,13 +13475,6 @@ packages:
dependencies:
safe-buffer: 5.2.1
- /randomfill@1.0.4:
- resolution: {integrity: sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==}
- dependencies:
- randombytes: 2.1.0
- safe-buffer: 5.2.1
- dev: true
-
/range-parser@1.2.0:
resolution: {integrity: sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A==}
engines: {node: '>= 0.6'}
@@ -13679,7 +13568,7 @@ packages:
strip-ansi: 6.0.1
text-table: 0.2.0
typescript: 4.9.5
- webpack: 5.82.0
+ webpack: 5.82.0(webpack-cli@4.9.1)
transitivePeerDependencies:
- eslint
- supports-color
@@ -13768,7 +13657,7 @@ packages:
dependencies:
'@babel/runtime': 7.21.5
react-loadable: /@docusaurus/react-loadable@5.5.2(react@17.0.2)
- webpack: 5.82.0
+ webpack: 5.82.0(webpack-cli@4.9.1)
dev: false
/react-router-config@5.1.1(react-router@5.3.4)(react@17.0.2):
@@ -13928,7 +13817,6 @@ packages:
engines: {node: '>= 0.10'}
dependencies:
resolve: 1.22.2
- dev: true
/recursive-readdir@2.2.3:
resolution: {integrity: sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==}
@@ -14128,7 +14016,6 @@ packages:
engines: {node: '>=8'}
dependencies:
resolve-from: 5.0.0
- dev: true
/resolve-from@4.0.0:
resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
@@ -14137,7 +14024,6 @@ packages:
/resolve-from@5.0.0:
resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==}
engines: {node: '>=8'}
- dev: true
/resolve-global@1.0.0:
resolution: {integrity: sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw==}
@@ -14219,7 +14105,7 @@ packages:
dependencies:
hash-base: 3.1.0
inherits: 2.0.4
- dev: true
+ dev: false
/rtl-detect@1.0.4:
resolution: {integrity: sha512-EBR4I2VDSSYr7PkBmFy04uhycIpDKp+21p/jARYXlCSjQksTBQcJ0HFUPOO79EPPH5JS6VAhiIQbycf0O3JAxQ==}
@@ -14364,7 +14250,6 @@ packages:
hasBin: true
dependencies:
lru-cache: 6.0.0
- dev: true
/send@0.18.0:
resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==}
@@ -14460,7 +14345,7 @@ packages:
dependencies:
inherits: 2.0.4
safe-buffer: 5.2.1
- dev: true
+ dev: false
/sha3@2.1.3:
resolution: {integrity: sha512-Io53D4o9qOmf3Ow9p/DoGLQiQHhtuR0ulbyambvRSG+OX5yXExk2yYfvjHtb7AtOyk6K6+sPeK/qaowWc/E/GA==}
@@ -14567,7 +14452,6 @@ packages:
'@polka/url': 1.0.0-next.21
mrmime: 1.0.1
totalist: 1.1.0
- dev: false
/sisteransi@1.0.5:
resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==}
@@ -15132,7 +15016,6 @@ packages:
serialize-javascript: 6.0.1
terser: 5.17.1
webpack: 5.64.1(webpack-cli@4.9.1)
- dev: true
/terser-webpack-plugin@5.3.8(webpack@5.82.0):
resolution: {integrity: sha512-WiHL3ElchZMsK27P8uIUh4604IgJyAW47LVXGbEoB21DbQcZ+OuMpGjVYnEUaqcWM6dO8uS2qUbA7LSCWqvsbg==}
@@ -15155,7 +15038,7 @@ packages:
schema-utils: 3.1.2
serialize-javascript: 6.0.1
terser: 5.17.1
- webpack: 5.82.0
+ webpack: 5.82.0(webpack-cli@4.9.1)
/terser@5.17.1:
resolution: {integrity: sha512-hVl35zClmpisy6oaoKALOpS0rDYLxRFLHhRuDlEGTKey9qHjS1w9GMORjuwIMt70Wan4lwsLYyWDVnWgF+KUEw==}
@@ -15256,7 +15139,6 @@ packages:
/totalist@1.1.0:
resolution: {integrity: sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==}
engines: {node: '>=6'}
- dev: false
/tough-cookie@2.5.0:
resolution: {integrity: sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==}
@@ -15314,6 +15196,21 @@ packages:
webpack: 5.64.1(webpack-cli@4.9.1)
dev: true
+ /ts-loader@9.4.3(typescript@4.9.5)(webpack@5.64.1):
+ resolution: {integrity: sha512-n3hBnm6ozJYzwiwt5YRiJZkzktftRpMiBApHaJPoWLA+qetQBAXkHqCLM6nwSdRDimqVtA5ocIkcTRLMTt7yzA==}
+ engines: {node: '>=12.0.0'}
+ peerDependencies:
+ typescript: '*'
+ webpack: ^5.0.0
+ dependencies:
+ chalk: 4.1.2
+ enhanced-resolve: 5.13.0
+ micromatch: 4.0.5
+ semver: 7.5.4
+ typescript: 4.9.5
+ webpack: 5.64.1(webpack-cli@4.9.1)
+ dev: false
+
/ts-node@10.9.1(@types/node@20.1.0)(typescript@4.9.5):
resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==}
hasBin: true
@@ -15666,7 +15563,6 @@ packages:
webpack: ^5.36.2
dependencies:
webpack: 5.64.1(webpack-cli@4.9.1)
- dev: true
/unpipe@1.0.0:
resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==}
@@ -15716,7 +15612,7 @@ packages:
is-yarn-global: 0.3.0
latest-version: 5.1.0
pupa: 2.1.1
- semver: 7.5.0
+ semver: 7.5.4
semver-diff: 3.1.1
xdg-basedir: 4.0.0
dev: false
@@ -15740,7 +15636,7 @@ packages:
loader-utils: 2.0.4
mime-types: 2.1.35
schema-utils: 3.1.2
- webpack: 5.82.0
+ webpack: 5.82.0(webpack-cli@4.9.1)
dev: false
/url-parse-lax@3.0.0:
@@ -15948,8 +15844,8 @@ packages:
/webidl-conversions@3.0.1:
resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}
- /webpack-bundle-analyzer@4.8.0:
- resolution: {integrity: sha512-ZzoSBePshOKhr+hd8u6oCkZVwpVaXgpw23ScGLFpR6SjYI7+7iIWYarjN6OEYOfRt8o7ZyZZQk0DuMizJ+LEIg==}
+ /webpack-bundle-analyzer@4.9.0:
+ resolution: {integrity: sha512-+bXGmO1LyiNx0i9enBu3H8mv42sj/BJWhZNFwjz92tVnBa9J3JMGo2an2IXlEleoDOPn/Hofl5hr/xCpObUDtw==}
engines: {node: '>= 10.13.0'}
hasBin: true
dependencies:
@@ -15966,9 +15862,8 @@ packages:
transitivePeerDependencies:
- bufferutil
- utf-8-validate
- dev: false
- /webpack-cli@4.9.1(webpack@5.64.1):
+ /webpack-cli@4.9.1(webpack-bundle-analyzer@4.9.0)(webpack@5.64.1):
resolution: {integrity: sha512-JYRFVuyFpzDxMDB+v/nanUdQYcZtqFPGzmlW4s+UkPMFhSpfRNmf1z4AwYcHJVdvEFAM7FFCQdNTpsBYhDLusQ==}
engines: {node: '>=10.13.0'}
hasBin: true
@@ -16000,8 +15895,8 @@ packages:
interpret: 2.2.0
rechoir: 0.7.1
webpack: 5.64.1(webpack-cli@4.9.1)
+ webpack-bundle-analyzer: 4.9.0
webpack-merge: 5.8.0
- dev: true
/webpack-dev-middleware@5.3.3(webpack@5.82.0):
resolution: {integrity: sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==}
@@ -16014,7 +15909,7 @@ packages:
mime-types: 2.1.35
range-parser: 1.2.1
schema-utils: 4.0.1
- webpack: 5.82.0
+ webpack: 5.82.0(webpack-cli@4.9.1)
dev: false
/webpack-dev-server@4.15.0(webpack@5.82.0):
@@ -16058,7 +15953,7 @@ packages:
serve-index: 1.9.1
sockjs: 0.3.24
spdy: 4.0.2
- webpack: 5.82.0
+ webpack: 5.82.0(webpack-cli@4.9.1)
webpack-dev-middleware: 5.3.3(webpack@5.82.0)
ws: 8.13.0
transitivePeerDependencies:
@@ -16112,15 +16007,14 @@ packages:
tapable: 2.2.1
terser-webpack-plugin: 5.3.8(webpack@5.64.1)
watchpack: 2.4.0
- webpack-cli: 4.9.1(webpack@5.64.1)
+ webpack-cli: 4.9.1(webpack-bundle-analyzer@4.9.0)(webpack@5.64.1)
webpack-sources: 3.2.3
transitivePeerDependencies:
- '@swc/core'
- esbuild
- uglify-js
- dev: true
- /webpack@5.82.0:
+ /webpack@5.82.0(webpack-cli@4.9.1):
resolution: {integrity: sha512-iGNA2fHhnDcV1bONdUu554eZx+XeldsaeQ8T67H6KKHl2nUSwX8Zm7cmzOA46ox/X1ARxf7Bjv8wQ/HsB5fxBg==}
engines: {node: '>=10.13.0'}
hasBin: true
@@ -16153,6 +16047,7 @@ packages:
tapable: 2.2.1
terser-webpack-plugin: 5.3.8(webpack@5.82.0)
watchpack: 2.4.0
+ webpack-cli: 4.9.1(webpack-bundle-analyzer@4.9.0)(webpack@5.64.1)
webpack-sources: 3.2.3
transitivePeerDependencies:
- '@swc/core'
@@ -16169,7 +16064,7 @@ packages:
consola: 2.15.3
pretty-time: 1.1.0
std-env: 3.3.3
- webpack: 5.82.0
+ webpack: 5.82.0(webpack-cli@4.9.1)
dev: false
/websocket-driver@0.7.4:
@@ -16320,7 +16215,6 @@ packages:
optional: true
utf-8-validate:
optional: true
- dev: false
/ws@8.13.0:
resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==}
diff --git a/typedoc.json b/typedoc.json
index 83ba24de0..ba85a9744 100644
--- a/typedoc.json
+++ b/typedoc.json
@@ -9,7 +9,8 @@
"packages/e2e-test",
"packages/testkit",
"packages/molecule",
- "packages/toolkit"
+ "packages/toolkit",
+ "packages/crypto"
],
"logLevel": "Verbose",
"skipErrorChecking": true,
diff --git a/website/docusaurus.config.js b/website/docusaurus.config.js
index 36fc0051e..215d3e59d 100644
--- a/website/docusaurus.config.js
+++ b/website/docusaurus.config.js
@@ -67,7 +67,6 @@ const config = {
return {
resolve: {
fallback: {
- crypto: require.resolve("crypto-browserify"),
buffer: require.resolve("buffer/"),
path: false,
fs: false,