@xyo-network/elliptic 5.2.18 → 5.2.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/Elliptic.d.ts.map +1 -1
- package/dist/browser/index.mjs +1 -2
- package/dist/browser/index.mjs.map +1 -1
- package/dist/neutral/Elliptic.d.ts.map +1 -1
- package/dist/neutral/index.mjs +1 -2
- package/dist/neutral/index.mjs.map +1 -1
- package/dist/node/Elliptic.d.ts.map +1 -1
- package/dist/node/index.mjs +1 -2
- package/dist/node/index.mjs.map +1 -1
- package/package.json +7 -8
- package/src/Elliptic.ts +1 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Elliptic.d.ts","sourceRoot":"","sources":["../../src/Elliptic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"Elliptic.d.ts","sourceRoot":"","sources":["../../src/Elliptic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAKjD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAuB/C,qBAAa,QAAQ;IACnB,MAAM,CAAC,QAAQ,CAAC,WAAW,cAAoB;IAC/C,SAAS,CAAC,MAAM,CAAC,UAAU,EAAE,SAAS,GAAG,SAAS,CAAA;IAClD,OAAO,CAAC,MAAM,CAAC,eAAe,CAAc;IAE5C,MAAM,CAAC,oBAAoB,CAAC,GAAG,EAAE,eAAe,GAAG,eAAe;IAIlE,MAAM,CAAC,UAAU;WAIJ,uBAAuB,CAAC,UAAU,EAAE,eAAe,EAAE,MAAM,UAAQ,GAAG,OAAO,CAAC,eAAe,CAAC;IAU3G,MAAM,CAAC,KAAK;WAIC,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC;WAW/B,IAAI,CAAC,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,eAAe;WAMhD,MAAM,CAAC,GAAG,EAAE,eAAe,EAAE,SAAS,EAAE,eAAe,EAAE,OAAO,EAAE,eAAe;CAuB/F"}
|
package/dist/browser/index.mjs
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
// src/Elliptic.ts
|
|
2
2
|
import { instantiateSecp256k1 } from "@bitauth/libauth";
|
|
3
3
|
import { toUint8Array } from "@xylabs/arraybuffer";
|
|
4
|
-
import { assertEx } from "@xylabs/
|
|
5
|
-
import { toHex } from "@xylabs/hex";
|
|
4
|
+
import { assertEx, toHex } from "@xylabs/sdk-js";
|
|
6
5
|
import { Data } from "@xyo-network/data";
|
|
7
6
|
import { WasmSupport } from "@xyo-network/wasm";
|
|
8
7
|
import { Mutex } from "async-mutex";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/Elliptic.ts"],"sourcesContent":["import type { Secp256k1 } from '@bitauth/libauth'\nimport { instantiateSecp256k1 } from '@bitauth/libauth'\nimport { toUint8Array } from '@xylabs/arraybuffer'\nimport { assertEx
|
|
1
|
+
{"version":3,"sources":["../../src/Elliptic.ts"],"sourcesContent":["import type { Secp256k1 } from '@bitauth/libauth'\nimport { instantiateSecp256k1 } from '@bitauth/libauth'\nimport { toUint8Array } from '@xylabs/arraybuffer'\nimport { assertEx, toHex } from '@xylabs/sdk-js'\nimport { Data } from '@xyo-network/data'\nimport { WasmSupport } from '@xyo-network/wasm'\nimport { Mutex } from 'async-mutex'\n\nconst wasmSupportStatic = new WasmSupport(['bigInt', 'mutableGlobals', 'referenceTypes', 'saturatedFloatToInt', 'signExtensions', 'simd'])\nconst recoveryIds = [0, 1, 2, 3] as const\n\nfunction compareArrayBuffers(b1: ArrayBufferLike, b2: ArrayBufferLike) {\n if (b1.byteLength !== b2.byteLength) {\n return false\n }\n\n const a1 = new Uint8Array(b1)\n const a2 = new Uint8Array(b2)\n\n for (let i = 0; i < b1.byteLength; i++) {\n if (a1[1] !== a2[1]) {\n return false\n }\n }\n\n return true\n}\n\nexport class Elliptic {\n static readonly wasmSupport = wasmSupportStatic\n protected static _secp256k1: Secp256k1 | undefined\n private static _secp256k1Mutex = new Mutex()\n\n static addressFromPublicKey(key: ArrayBufferLike): ArrayBufferLike {\n return new Data(64, key).keccak256.slice(12)\n }\n\n static initialize() {\n return this.secp256k1()\n }\n\n static async publicKeyFromPrivateKey(privateKey: ArrayBufferLike, prefix = false): Promise<ArrayBufferLike> {\n const { derivePublicKeyUncompressed } = await this.secp256k1()\n if (BigInt(toHex(privateKey, { prefix: true })) === 0n) {\n throw new Error(`Invalid private key [${toHex(privateKey)}]`)\n }\n const derivedPublicKey = derivePublicKeyUncompressed(new Uint8Array(privateKey))\n const fullPublicKey = typeof derivedPublicKey === 'string' ? toUint8Array(derivedPublicKey) : derivedPublicKey\n return (prefix ? fullPublicKey : fullPublicKey.slice(1)).buffer\n }\n\n static ready() {\n return !!this._secp256k1\n }\n\n static async secp256k1(): Promise<Secp256k1> {\n return await this._secp256k1Mutex.runExclusive(async () => {\n if (this._secp256k1) return this._secp256k1\n\n await wasmSupportStatic.initialize()\n const secp256k1 = assertEx(await instantiateSecp256k1(), () => 'No Wasm Support')\n this._secp256k1 = secp256k1\n return secp256k1\n })\n }\n\n static async sign(hash: ArrayBufferLike, key: ArrayBufferLike) {\n const { signMessageHashCompact } = await this.secp256k1()\n const signature = signMessageHashCompact(new Uint8Array(key), toUint8Array(hash))\n return (typeof signature === 'string' ? toUint8Array(signature) : signature).buffer\n }\n\n static async verify(msg: ArrayBufferLike, signature: ArrayBufferLike, address: ArrayBufferLike) {\n const verifier = await this.secp256k1()\n if (verifier && this.wasmSupport.canUseWasm) {\n for (const recoveryId of recoveryIds) {\n try {\n const rawRecoveredPublicKey = verifier.recoverPublicKeyUncompressed(toUint8Array(signature), recoveryId, toUint8Array(msg))\n const recoveredPublicKey = (typeof rawRecoveredPublicKey === 'string' ? toUint8Array(rawRecoveredPublicKey) : rawRecoveredPublicKey).slice(1).buffer\n const recoveredAddress = this.addressFromPublicKey(recoveredPublicKey)\n if (compareArrayBuffers(address, recoveredAddress)) {\n return true\n }\n } catch (ex) {\n const error = ex as Error\n console.log(error.message)\n console.log(error.stack)\n continue\n }\n }\n return false\n }\n // In all failure modes default to the JS implementation\n throw new Error('No wasm support')\n }\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Elliptic.d.ts","sourceRoot":"","sources":["../../src/Elliptic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"Elliptic.d.ts","sourceRoot":"","sources":["../../src/Elliptic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAKjD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAuB/C,qBAAa,QAAQ;IACnB,MAAM,CAAC,QAAQ,CAAC,WAAW,cAAoB;IAC/C,SAAS,CAAC,MAAM,CAAC,UAAU,EAAE,SAAS,GAAG,SAAS,CAAA;IAClD,OAAO,CAAC,MAAM,CAAC,eAAe,CAAc;IAE5C,MAAM,CAAC,oBAAoB,CAAC,GAAG,EAAE,eAAe,GAAG,eAAe;IAIlE,MAAM,CAAC,UAAU;WAIJ,uBAAuB,CAAC,UAAU,EAAE,eAAe,EAAE,MAAM,UAAQ,GAAG,OAAO,CAAC,eAAe,CAAC;IAU3G,MAAM,CAAC,KAAK;WAIC,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC;WAW/B,IAAI,CAAC,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,eAAe;WAMhD,MAAM,CAAC,GAAG,EAAE,eAAe,EAAE,SAAS,EAAE,eAAe,EAAE,OAAO,EAAE,eAAe;CAuB/F"}
|
package/dist/neutral/index.mjs
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
// src/Elliptic.ts
|
|
2
2
|
import { instantiateSecp256k1 } from "@bitauth/libauth";
|
|
3
3
|
import { toUint8Array } from "@xylabs/arraybuffer";
|
|
4
|
-
import { assertEx } from "@xylabs/
|
|
5
|
-
import { toHex } from "@xylabs/hex";
|
|
4
|
+
import { assertEx, toHex } from "@xylabs/sdk-js";
|
|
6
5
|
import { Data } from "@xyo-network/data";
|
|
7
6
|
import { WasmSupport } from "@xyo-network/wasm";
|
|
8
7
|
import { Mutex } from "async-mutex";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/Elliptic.ts"],"sourcesContent":["import type { Secp256k1 } from '@bitauth/libauth'\nimport { instantiateSecp256k1 } from '@bitauth/libauth'\nimport { toUint8Array } from '@xylabs/arraybuffer'\nimport { assertEx
|
|
1
|
+
{"version":3,"sources":["../../src/Elliptic.ts"],"sourcesContent":["import type { Secp256k1 } from '@bitauth/libauth'\nimport { instantiateSecp256k1 } from '@bitauth/libauth'\nimport { toUint8Array } from '@xylabs/arraybuffer'\nimport { assertEx, toHex } from '@xylabs/sdk-js'\nimport { Data } from '@xyo-network/data'\nimport { WasmSupport } from '@xyo-network/wasm'\nimport { Mutex } from 'async-mutex'\n\nconst wasmSupportStatic = new WasmSupport(['bigInt', 'mutableGlobals', 'referenceTypes', 'saturatedFloatToInt', 'signExtensions', 'simd'])\nconst recoveryIds = [0, 1, 2, 3] as const\n\nfunction compareArrayBuffers(b1: ArrayBufferLike, b2: ArrayBufferLike) {\n if (b1.byteLength !== b2.byteLength) {\n return false\n }\n\n const a1 = new Uint8Array(b1)\n const a2 = new Uint8Array(b2)\n\n for (let i = 0; i < b1.byteLength; i++) {\n if (a1[1] !== a2[1]) {\n return false\n }\n }\n\n return true\n}\n\nexport class Elliptic {\n static readonly wasmSupport = wasmSupportStatic\n protected static _secp256k1: Secp256k1 | undefined\n private static _secp256k1Mutex = new Mutex()\n\n static addressFromPublicKey(key: ArrayBufferLike): ArrayBufferLike {\n return new Data(64, key).keccak256.slice(12)\n }\n\n static initialize() {\n return this.secp256k1()\n }\n\n static async publicKeyFromPrivateKey(privateKey: ArrayBufferLike, prefix = false): Promise<ArrayBufferLike> {\n const { derivePublicKeyUncompressed } = await this.secp256k1()\n if (BigInt(toHex(privateKey, { prefix: true })) === 0n) {\n throw new Error(`Invalid private key [${toHex(privateKey)}]`)\n }\n const derivedPublicKey = derivePublicKeyUncompressed(new Uint8Array(privateKey))\n const fullPublicKey = typeof derivedPublicKey === 'string' ? toUint8Array(derivedPublicKey) : derivedPublicKey\n return (prefix ? fullPublicKey : fullPublicKey.slice(1)).buffer\n }\n\n static ready() {\n return !!this._secp256k1\n }\n\n static async secp256k1(): Promise<Secp256k1> {\n return await this._secp256k1Mutex.runExclusive(async () => {\n if (this._secp256k1) return this._secp256k1\n\n await wasmSupportStatic.initialize()\n const secp256k1 = assertEx(await instantiateSecp256k1(), () => 'No Wasm Support')\n this._secp256k1 = secp256k1\n return secp256k1\n })\n }\n\n static async sign(hash: ArrayBufferLike, key: ArrayBufferLike) {\n const { signMessageHashCompact } = await this.secp256k1()\n const signature = signMessageHashCompact(new Uint8Array(key), toUint8Array(hash))\n return (typeof signature === 'string' ? toUint8Array(signature) : signature).buffer\n }\n\n static async verify(msg: ArrayBufferLike, signature: ArrayBufferLike, address: ArrayBufferLike) {\n const verifier = await this.secp256k1()\n if (verifier && this.wasmSupport.canUseWasm) {\n for (const recoveryId of recoveryIds) {\n try {\n const rawRecoveredPublicKey = verifier.recoverPublicKeyUncompressed(toUint8Array(signature), recoveryId, toUint8Array(msg))\n const recoveredPublicKey = (typeof rawRecoveredPublicKey === 'string' ? toUint8Array(rawRecoveredPublicKey) : rawRecoveredPublicKey).slice(1).buffer\n const recoveredAddress = this.addressFromPublicKey(recoveredPublicKey)\n if (compareArrayBuffers(address, recoveredAddress)) {\n return true\n }\n } catch (ex) {\n const error = ex as Error\n console.log(error.message)\n console.log(error.stack)\n continue\n }\n }\n return false\n }\n // In all failure modes default to the JS implementation\n throw new Error('No wasm support')\n }\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Elliptic.d.ts","sourceRoot":"","sources":["../../src/Elliptic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"Elliptic.d.ts","sourceRoot":"","sources":["../../src/Elliptic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAKjD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAuB/C,qBAAa,QAAQ;IACnB,MAAM,CAAC,QAAQ,CAAC,WAAW,cAAoB;IAC/C,SAAS,CAAC,MAAM,CAAC,UAAU,EAAE,SAAS,GAAG,SAAS,CAAA;IAClD,OAAO,CAAC,MAAM,CAAC,eAAe,CAAc;IAE5C,MAAM,CAAC,oBAAoB,CAAC,GAAG,EAAE,eAAe,GAAG,eAAe;IAIlE,MAAM,CAAC,UAAU;WAIJ,uBAAuB,CAAC,UAAU,EAAE,eAAe,EAAE,MAAM,UAAQ,GAAG,OAAO,CAAC,eAAe,CAAC;IAU3G,MAAM,CAAC,KAAK;WAIC,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC;WAW/B,IAAI,CAAC,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,eAAe;WAMhD,MAAM,CAAC,GAAG,EAAE,eAAe,EAAE,SAAS,EAAE,eAAe,EAAE,OAAO,EAAE,eAAe;CAuB/F"}
|
package/dist/node/index.mjs
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
// src/Elliptic.ts
|
|
2
2
|
import { instantiateSecp256k1 } from "@bitauth/libauth";
|
|
3
3
|
import { toUint8Array } from "@xylabs/arraybuffer";
|
|
4
|
-
import { assertEx } from "@xylabs/
|
|
5
|
-
import { toHex } from "@xylabs/hex";
|
|
4
|
+
import { assertEx, toHex } from "@xylabs/sdk-js";
|
|
6
5
|
import { Data } from "@xyo-network/data";
|
|
7
6
|
import { WasmSupport } from "@xyo-network/wasm";
|
|
8
7
|
import { Mutex } from "async-mutex";
|
package/dist/node/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/Elliptic.ts"],"sourcesContent":["import type { Secp256k1 } from '@bitauth/libauth'\nimport { instantiateSecp256k1 } from '@bitauth/libauth'\nimport { toUint8Array } from '@xylabs/arraybuffer'\nimport { assertEx
|
|
1
|
+
{"version":3,"sources":["../../src/Elliptic.ts"],"sourcesContent":["import type { Secp256k1 } from '@bitauth/libauth'\nimport { instantiateSecp256k1 } from '@bitauth/libauth'\nimport { toUint8Array } from '@xylabs/arraybuffer'\nimport { assertEx, toHex } from '@xylabs/sdk-js'\nimport { Data } from '@xyo-network/data'\nimport { WasmSupport } from '@xyo-network/wasm'\nimport { Mutex } from 'async-mutex'\n\nconst wasmSupportStatic = new WasmSupport(['bigInt', 'mutableGlobals', 'referenceTypes', 'saturatedFloatToInt', 'signExtensions', 'simd'])\nconst recoveryIds = [0, 1, 2, 3] as const\n\nfunction compareArrayBuffers(b1: ArrayBufferLike, b2: ArrayBufferLike) {\n if (b1.byteLength !== b2.byteLength) {\n return false\n }\n\n const a1 = new Uint8Array(b1)\n const a2 = new Uint8Array(b2)\n\n for (let i = 0; i < b1.byteLength; i++) {\n if (a1[1] !== a2[1]) {\n return false\n }\n }\n\n return true\n}\n\nexport class Elliptic {\n static readonly wasmSupport = wasmSupportStatic\n protected static _secp256k1: Secp256k1 | undefined\n private static _secp256k1Mutex = new Mutex()\n\n static addressFromPublicKey(key: ArrayBufferLike): ArrayBufferLike {\n return new Data(64, key).keccak256.slice(12)\n }\n\n static initialize() {\n return this.secp256k1()\n }\n\n static async publicKeyFromPrivateKey(privateKey: ArrayBufferLike, prefix = false): Promise<ArrayBufferLike> {\n const { derivePublicKeyUncompressed } = await this.secp256k1()\n if (BigInt(toHex(privateKey, { prefix: true })) === 0n) {\n throw new Error(`Invalid private key [${toHex(privateKey)}]`)\n }\n const derivedPublicKey = derivePublicKeyUncompressed(new Uint8Array(privateKey))\n const fullPublicKey = typeof derivedPublicKey === 'string' ? toUint8Array(derivedPublicKey) : derivedPublicKey\n return (prefix ? fullPublicKey : fullPublicKey.slice(1)).buffer\n }\n\n static ready() {\n return !!this._secp256k1\n }\n\n static async secp256k1(): Promise<Secp256k1> {\n return await this._secp256k1Mutex.runExclusive(async () => {\n if (this._secp256k1) return this._secp256k1\n\n await wasmSupportStatic.initialize()\n const secp256k1 = assertEx(await instantiateSecp256k1(), () => 'No Wasm Support')\n this._secp256k1 = secp256k1\n return secp256k1\n })\n }\n\n static async sign(hash: ArrayBufferLike, key: ArrayBufferLike) {\n const { signMessageHashCompact } = await this.secp256k1()\n const signature = signMessageHashCompact(new Uint8Array(key), toUint8Array(hash))\n return (typeof signature === 'string' ? toUint8Array(signature) : signature).buffer\n }\n\n static async verify(msg: ArrayBufferLike, signature: ArrayBufferLike, address: ArrayBufferLike) {\n const verifier = await this.secp256k1()\n if (verifier && this.wasmSupport.canUseWasm) {\n for (const recoveryId of recoveryIds) {\n try {\n const rawRecoveredPublicKey = verifier.recoverPublicKeyUncompressed(toUint8Array(signature), recoveryId, toUint8Array(msg))\n const recoveredPublicKey = (typeof rawRecoveredPublicKey === 'string' ? toUint8Array(rawRecoveredPublicKey) : rawRecoveredPublicKey).slice(1).buffer\n const recoveredAddress = this.addressFromPublicKey(recoveredPublicKey)\n if (compareArrayBuffers(address, recoveredAddress)) {\n return true\n }\n } catch (ex) {\n const error = ex as Error\n console.log(error.message)\n console.log(error.stack)\n continue\n }\n }\n return false\n }\n // In all failure modes default to the JS implementation\n throw new Error('No wasm support')\n }\n}\n"],"mappings":"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","names":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xyo-network/elliptic",
|
|
3
|
-
"version": "5.2.
|
|
3
|
+
"version": "5.2.19",
|
|
4
4
|
"description": "Primary SDK for using XYO Protocol 2.0",
|
|
5
5
|
"homepage": "https://xyo.network",
|
|
6
6
|
"bugs": {
|
|
@@ -37,16 +37,15 @@
|
|
|
37
37
|
],
|
|
38
38
|
"dependencies": {
|
|
39
39
|
"@bitauth/libauth": "~3.0.0",
|
|
40
|
-
"@xylabs/arraybuffer": "~5.0.
|
|
41
|
-
"@xylabs/
|
|
42
|
-
"@
|
|
43
|
-
"@xyo-network/
|
|
44
|
-
"@xyo-network/wasm": "~5.2.18",
|
|
40
|
+
"@xylabs/arraybuffer": "~5.0.61",
|
|
41
|
+
"@xylabs/sdk-js": "~5.0.61",
|
|
42
|
+
"@xyo-network/data": "~5.2.19",
|
|
43
|
+
"@xyo-network/wasm": "~5.2.19",
|
|
45
44
|
"async-mutex": "~0.5.0"
|
|
46
45
|
},
|
|
47
46
|
"devDependencies": {
|
|
48
|
-
"@xylabs/ts-scripts-yarn3": "~7.2.
|
|
49
|
-
"@xylabs/tsconfig": "~7.2.
|
|
47
|
+
"@xylabs/ts-scripts-yarn3": "~7.2.32",
|
|
48
|
+
"@xylabs/tsconfig": "~7.2.32",
|
|
50
49
|
"typescript": "~5.9.3"
|
|
51
50
|
},
|
|
52
51
|
"publishConfig": {
|
package/src/Elliptic.ts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import type { Secp256k1 } from '@bitauth/libauth'
|
|
2
2
|
import { instantiateSecp256k1 } from '@bitauth/libauth'
|
|
3
3
|
import { toUint8Array } from '@xylabs/arraybuffer'
|
|
4
|
-
import { assertEx } from '@xylabs/
|
|
5
|
-
import { toHex } from '@xylabs/hex'
|
|
4
|
+
import { assertEx, toHex } from '@xylabs/sdk-js'
|
|
6
5
|
import { Data } from '@xyo-network/data'
|
|
7
6
|
import { WasmSupport } from '@xyo-network/wasm'
|
|
8
7
|
import { Mutex } from 'async-mutex'
|