@layerzerolabs/evm-sdks-core 3.0.15 → 3.0.16
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/CHANGELOG.md +6 -0
- package/README.md +40 -0
- package/dist/index.cjs +6 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.mts +47 -0
- package/dist/index.d.ts +47 -0
- package/dist/index.mjs +6 -0
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
package/README.md
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# @layerzerolabs/evm-sdks-core
|
|
2
|
+
|
|
3
|
+
The EVM SDKs Core package provides essential utilities and tools for interacting with EVM-compatible blockchains. It includes functions for contract error parsing.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- **Error Parsing**: Parse contract errors and convert them into easy-to-read and structured data.
|
|
8
|
+
|
|
9
|
+
## Installation
|
|
10
|
+
|
|
11
|
+
To install the EVM SDKs Core package, you can use npm or yarn:
|
|
12
|
+
|
|
13
|
+
```sh
|
|
14
|
+
npm install @layerzerolabs/evm-sdks-core
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
or
|
|
18
|
+
|
|
19
|
+
```sh
|
|
20
|
+
yarn add @layerzerolabs/evm-sdks-core
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Usage
|
|
24
|
+
|
|
25
|
+
### Error Parsing
|
|
26
|
+
|
|
27
|
+
```typescript
|
|
28
|
+
import { LayerZeroErrorParser, Abi } from "@layerzerolabs/evm-sdks-core";
|
|
29
|
+
import { EndpointV2__factory } from "@layerzerolabs/lz-evm-sdk-v2";
|
|
30
|
+
|
|
31
|
+
const abi: Abi = Endpoint__factory.createInterface();
|
|
32
|
+
const parser = new LayerZeroErrorParser(abi);
|
|
33
|
+
|
|
34
|
+
const errorData = "..."; // Error data string
|
|
35
|
+
const parsedError = parser.parse(errorData);
|
|
36
|
+
|
|
37
|
+
if (parsedError) {
|
|
38
|
+
console.log(`Error: ${parsedError.message}`);
|
|
39
|
+
}
|
|
40
|
+
```
|
package/dist/index.cjs
CHANGED
|
@@ -4,6 +4,12 @@ var ethers = require('ethers');
|
|
|
4
4
|
|
|
5
5
|
// src/error-parser.ts
|
|
6
6
|
var LayerZeroContractError = class extends Error {
|
|
7
|
+
/**
|
|
8
|
+
* Creates an instance of LayerZeroContractError.
|
|
9
|
+
* @param message The error message.
|
|
10
|
+
* @param cause The cause of the error.
|
|
11
|
+
* @param args The arguments associated with the error. {@link FormattedErrorArg}
|
|
12
|
+
*/
|
|
7
13
|
constructor(message, cause, args) {
|
|
8
14
|
super(message);
|
|
9
15
|
this.name = "LayerZeroContractError";
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/error-parser.ts"],"names":[],"mappings":";AAAA,SAAS,aAAa;
|
|
1
|
+
{"version":3,"sources":["../src/error-parser.ts"],"names":[],"mappings":";AAAA,SAAS,aAAa;AAmDf,IAAM,yBAAN,cAAqC,MAAuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgB/D,YAAY,SAAiB,OAAe,MAA2B;AACnE,UAAM,OAAO;AACb,SAAK,OAAO;AACZ,SAAK,QAAQ;AACb,SAAK,OAAO;AAAA,EAChB;AACJ;AAKO,IAAM,uBAAN,MAA2B;AAAA;AAAA;AAAA;AAAA;AAAA,EAK9B,YAAmB,KAAU;AAAV;AAAA,EAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQtB,mBAAmB,MAA2C;AAClE,QAAI;AACA,YAAM,SAAS,IAAI,MAAM,UAAU,KAAK,GAAG;AAC3C,YAAM,SAAS,OAAO,WAAW,IAAI;AACrC,UAAI,CAAC;AAAQ,eAAO;AACpB,YAAM,EAAE,MAAM,OAAO,KAAK,IAAI;AAC9B,YAAM,gBAAqC,CAAC;AAC5C,UAAI,UAAU,GAAG,KAAK;AACtB,aAAO,cAAc,OAAO,QAAQ,CAAC,EAAE,MAAM,SAAS,KAAK,GAAG,MAAM;AAChE,sBAAc,KAAK,EAAE,OAAO,SAAS,MAAM,OAAO,KAAK,CAAC,GAAG,SAAS,KAAK,KAAK,CAAC,EAAE,CAAC;AAClF,YAAI;AAAS,qBAAW,GAAG,OAAO;AAClC,mBAAW,GAAG,KAAK,CAAC,CAAC;AAAA,MACzB,CAAC;AACD,aAAO,EAAE,SAAS,QAAQ,MAAM,GAAG,EAAE,GAAG,MAAM,0BAA0B,OAAO,MAAM,cAAc;AAAA,IACvG,SAAS,OAAO;AACZ,aAAO;AAAA,IACX;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOO,MAAM,MAA2C;AACpD,UAAM,QAAQ,KAAK,mBAAmB,IAAI;AAE1C,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQO,MAAM,MAAc,mBAAiD;AACxE,UAAM,QAAQ,KAAK,mBAAmB,IAAI;AAC1C,QAAI,OAAO;AACP,YAAM,QAAQ,IAAI,uBAAuB,MAAM,SAAS,MAAM,OAAO,MAAM,IAAI;AAC/E,UAAI;AAAmB,cAAM,kBAAkB,OAAO,iBAAiB;AACvE,YAAM;AAAA,IACV;AAAA,EACJ;AACJ","sourcesContent":["import { utils } from 'ethers'\n\n/**\n * Interface representing a parsed LayerZero error.\n */\nexport interface LayerZeroParsedError {\n /**\n * The error message.\n */\n message: string\n /**\n * The name of the error.\n */\n name: string\n /**\n * The cause of the error.\n */\n cause: string\n /**\n * The arguments associated with the error.\n * @see {@link FormattedErrorArg}\n */\n args: FormattedErrorArg[]\n}\n\n/**\n * Type representing the ABI of a contract.\n */\nexport type Abi = ConstructorParameters<typeof utils.Interface>[0]\n\n/**\n * Interface representing a formatted error argument.\n */\nexport interface FormattedErrorArg {\n /**\n * The parameter name.\n */\n param: string | null\n /**\n * The type of the parameter.\n */\n type: string\n /**\n * The value of the parameter.\n */\n value: string\n}\n\n/**\n * Class representing a LayerZero contract error.\n */\nexport class LayerZeroContractError extends Error implements Error {\n /**\n * The arguments associated with the error.\n * @see {@link FormattedErrorArg}\n */\n public args: FormattedErrorArg[]\n /**\n * The cause of the error.\n */\n public cause: string\n /**\n * Creates an instance of LayerZeroContractError.\n * @param message The error message.\n * @param cause The cause of the error.\n * @param args The arguments associated with the error. {@link FormattedErrorArg}\n */\n constructor(message: string, cause: string, args: FormattedErrorArg[]) {\n super(message)\n this.name = 'LayerZeroContractError'\n this.cause = cause\n this.args = args\n }\n}\n\n/**\n * Class responsible for parsing errors related to LayerZero operations.\n */\nexport class LayerZeroErrorParser {\n /**\n * Creates an instance of LayerZeroErrorParser.\n * @param abi The error abi of the contracts that are interacted with.\n */\n constructor(public abi: Abi) {}\n\n /**\n * Parses a contract error from a given data string.\n * @param data The error data string to parse.\n * @returns The parsed error information or null if parsing fails.\n * @private\n */\n private parseContractError(data: string): LayerZeroParsedError | null {\n try {\n const interf = new utils.Interface(this.abi)\n const parsed = interf.parseError(data)\n if (!parsed) return null\n const { name: cause, args } = parsed\n const formattedArgs: FormattedErrorArg[] = []\n let message = `${cause}, `\n parsed.errorFragment.inputs.forEach(({ name: argName, type }, i) => {\n formattedArgs.push({ param: argName, type, value: args[i]?.toString() ?? args[i] })\n if (argName) message += `${argName} `\n message += `${args[i]}, `\n })\n return { message: message.slice(0, -2), name: 'LayerZeroContractError', cause, args: formattedArgs }\n } catch (error) {\n return null\n }\n }\n\n /**\n * Parses an error from a given data string.\n * @param data The error data string to parse.\n * @returns The parsed error information or null if the error is unrecognized.\n */\n public parse(data: string): LayerZeroParsedError | null {\n const error = this.parseContractError(data)\n // add more error parsers here as needed, for now only contract errors are supported\n return error\n }\n\n /**\n * Checks for a contract error in the given data string, throwing a `LayerZeroContractError` if one is found.\n * @param data The error data string to check.\n * @param cleanUpStackTrace An optional function to clean up the stack. This function and all function above in the stack will be excluded from the trace.\n * @throws {LayerZeroContractError} Throws a LayerZeroContractError if an error is found corresponding to the data string.\n */\n public check(data: string, cleanUpStackTrace?: (...args: any) => any): void {\n const error = this.parseContractError(data)\n if (error) {\n const lzErr = new LayerZeroContractError(error.message, error.cause, error.args)\n if (cleanUpStackTrace) Error.captureStackTrace(lzErr, cleanUpStackTrace)\n throw lzErr\n }\n }\n}\n"]}
|
package/dist/index.d.mts
CHANGED
|
@@ -1,20 +1,67 @@
|
|
|
1
1
|
import { utils } from 'ethers';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* Interface representing a parsed LayerZero error.
|
|
5
|
+
*/
|
|
3
6
|
interface LayerZeroParsedError {
|
|
7
|
+
/**
|
|
8
|
+
* The error message.
|
|
9
|
+
*/
|
|
4
10
|
message: string;
|
|
11
|
+
/**
|
|
12
|
+
* The name of the error.
|
|
13
|
+
*/
|
|
5
14
|
name: string;
|
|
15
|
+
/**
|
|
16
|
+
* The cause of the error.
|
|
17
|
+
*/
|
|
6
18
|
cause: string;
|
|
19
|
+
/**
|
|
20
|
+
* The arguments associated with the error.
|
|
21
|
+
* @see {@link FormattedErrorArg}
|
|
22
|
+
*/
|
|
7
23
|
args: FormattedErrorArg[];
|
|
8
24
|
}
|
|
25
|
+
/**
|
|
26
|
+
* Type representing the ABI of a contract.
|
|
27
|
+
*/
|
|
9
28
|
type Abi = ConstructorParameters<typeof utils.Interface>[0];
|
|
29
|
+
/**
|
|
30
|
+
* Interface representing a formatted error argument.
|
|
31
|
+
*/
|
|
10
32
|
interface FormattedErrorArg {
|
|
33
|
+
/**
|
|
34
|
+
* The parameter name.
|
|
35
|
+
*/
|
|
11
36
|
param: string | null;
|
|
37
|
+
/**
|
|
38
|
+
* The type of the parameter.
|
|
39
|
+
*/
|
|
12
40
|
type: string;
|
|
41
|
+
/**
|
|
42
|
+
* The value of the parameter.
|
|
43
|
+
*/
|
|
13
44
|
value: string;
|
|
14
45
|
}
|
|
46
|
+
/**
|
|
47
|
+
* Class representing a LayerZero contract error.
|
|
48
|
+
*/
|
|
15
49
|
declare class LayerZeroContractError extends Error implements Error {
|
|
50
|
+
/**
|
|
51
|
+
* The arguments associated with the error.
|
|
52
|
+
* @see {@link FormattedErrorArg}
|
|
53
|
+
*/
|
|
16
54
|
args: FormattedErrorArg[];
|
|
55
|
+
/**
|
|
56
|
+
* The cause of the error.
|
|
57
|
+
*/
|
|
17
58
|
cause: string;
|
|
59
|
+
/**
|
|
60
|
+
* Creates an instance of LayerZeroContractError.
|
|
61
|
+
* @param message The error message.
|
|
62
|
+
* @param cause The cause of the error.
|
|
63
|
+
* @param args The arguments associated with the error. {@link FormattedErrorArg}
|
|
64
|
+
*/
|
|
18
65
|
constructor(message: string, cause: string, args: FormattedErrorArg[]);
|
|
19
66
|
}
|
|
20
67
|
/**
|
package/dist/index.d.ts
CHANGED
|
@@ -1,20 +1,67 @@
|
|
|
1
1
|
import { utils } from 'ethers';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* Interface representing a parsed LayerZero error.
|
|
5
|
+
*/
|
|
3
6
|
interface LayerZeroParsedError {
|
|
7
|
+
/**
|
|
8
|
+
* The error message.
|
|
9
|
+
*/
|
|
4
10
|
message: string;
|
|
11
|
+
/**
|
|
12
|
+
* The name of the error.
|
|
13
|
+
*/
|
|
5
14
|
name: string;
|
|
15
|
+
/**
|
|
16
|
+
* The cause of the error.
|
|
17
|
+
*/
|
|
6
18
|
cause: string;
|
|
19
|
+
/**
|
|
20
|
+
* The arguments associated with the error.
|
|
21
|
+
* @see {@link FormattedErrorArg}
|
|
22
|
+
*/
|
|
7
23
|
args: FormattedErrorArg[];
|
|
8
24
|
}
|
|
25
|
+
/**
|
|
26
|
+
* Type representing the ABI of a contract.
|
|
27
|
+
*/
|
|
9
28
|
type Abi = ConstructorParameters<typeof utils.Interface>[0];
|
|
29
|
+
/**
|
|
30
|
+
* Interface representing a formatted error argument.
|
|
31
|
+
*/
|
|
10
32
|
interface FormattedErrorArg {
|
|
33
|
+
/**
|
|
34
|
+
* The parameter name.
|
|
35
|
+
*/
|
|
11
36
|
param: string | null;
|
|
37
|
+
/**
|
|
38
|
+
* The type of the parameter.
|
|
39
|
+
*/
|
|
12
40
|
type: string;
|
|
41
|
+
/**
|
|
42
|
+
* The value of the parameter.
|
|
43
|
+
*/
|
|
13
44
|
value: string;
|
|
14
45
|
}
|
|
46
|
+
/**
|
|
47
|
+
* Class representing a LayerZero contract error.
|
|
48
|
+
*/
|
|
15
49
|
declare class LayerZeroContractError extends Error implements Error {
|
|
50
|
+
/**
|
|
51
|
+
* The arguments associated with the error.
|
|
52
|
+
* @see {@link FormattedErrorArg}
|
|
53
|
+
*/
|
|
16
54
|
args: FormattedErrorArg[];
|
|
55
|
+
/**
|
|
56
|
+
* The cause of the error.
|
|
57
|
+
*/
|
|
17
58
|
cause: string;
|
|
59
|
+
/**
|
|
60
|
+
* Creates an instance of LayerZeroContractError.
|
|
61
|
+
* @param message The error message.
|
|
62
|
+
* @param cause The cause of the error.
|
|
63
|
+
* @param args The arguments associated with the error. {@link FormattedErrorArg}
|
|
64
|
+
*/
|
|
18
65
|
constructor(message: string, cause: string, args: FormattedErrorArg[]);
|
|
19
66
|
}
|
|
20
67
|
/**
|
package/dist/index.mjs
CHANGED
|
@@ -2,6 +2,12 @@ import { utils } from 'ethers';
|
|
|
2
2
|
|
|
3
3
|
// src/error-parser.ts
|
|
4
4
|
var LayerZeroContractError = class extends Error {
|
|
5
|
+
/**
|
|
6
|
+
* Creates an instance of LayerZeroContractError.
|
|
7
|
+
* @param message The error message.
|
|
8
|
+
* @param cause The cause of the error.
|
|
9
|
+
* @param args The arguments associated with the error. {@link FormattedErrorArg}
|
|
10
|
+
*/
|
|
5
11
|
constructor(message, cause, args) {
|
|
6
12
|
super(message);
|
|
7
13
|
this.name = "LayerZeroContractError";
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/error-parser.ts"],"names":[],"mappings":";AAAA,SAAS,aAAa;
|
|
1
|
+
{"version":3,"sources":["../src/error-parser.ts"],"names":[],"mappings":";AAAA,SAAS,aAAa;AAmDf,IAAM,yBAAN,cAAqC,MAAuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgB/D,YAAY,SAAiB,OAAe,MAA2B;AACnE,UAAM,OAAO;AACb,SAAK,OAAO;AACZ,SAAK,QAAQ;AACb,SAAK,OAAO;AAAA,EAChB;AACJ;AAKO,IAAM,uBAAN,MAA2B;AAAA;AAAA;AAAA;AAAA;AAAA,EAK9B,YAAmB,KAAU;AAAV;AAAA,EAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQtB,mBAAmB,MAA2C;AAClE,QAAI;AACA,YAAM,SAAS,IAAI,MAAM,UAAU,KAAK,GAAG;AAC3C,YAAM,SAAS,OAAO,WAAW,IAAI;AACrC,UAAI,CAAC;AAAQ,eAAO;AACpB,YAAM,EAAE,MAAM,OAAO,KAAK,IAAI;AAC9B,YAAM,gBAAqC,CAAC;AAC5C,UAAI,UAAU,GAAG,KAAK;AACtB,aAAO,cAAc,OAAO,QAAQ,CAAC,EAAE,MAAM,SAAS,KAAK,GAAG,MAAM;AAChE,sBAAc,KAAK,EAAE,OAAO,SAAS,MAAM,OAAO,KAAK,CAAC,GAAG,SAAS,KAAK,KAAK,CAAC,EAAE,CAAC;AAClF,YAAI;AAAS,qBAAW,GAAG,OAAO;AAClC,mBAAW,GAAG,KAAK,CAAC,CAAC;AAAA,MACzB,CAAC;AACD,aAAO,EAAE,SAAS,QAAQ,MAAM,GAAG,EAAE,GAAG,MAAM,0BAA0B,OAAO,MAAM,cAAc;AAAA,IACvG,SAAS,OAAO;AACZ,aAAO;AAAA,IACX;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOO,MAAM,MAA2C;AACpD,UAAM,QAAQ,KAAK,mBAAmB,IAAI;AAE1C,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQO,MAAM,MAAc,mBAAiD;AACxE,UAAM,QAAQ,KAAK,mBAAmB,IAAI;AAC1C,QAAI,OAAO;AACP,YAAM,QAAQ,IAAI,uBAAuB,MAAM,SAAS,MAAM,OAAO,MAAM,IAAI;AAC/E,UAAI;AAAmB,cAAM,kBAAkB,OAAO,iBAAiB;AACvE,YAAM;AAAA,IACV;AAAA,EACJ;AACJ","sourcesContent":["import { utils } from 'ethers'\n\n/**\n * Interface representing a parsed LayerZero error.\n */\nexport interface LayerZeroParsedError {\n /**\n * The error message.\n */\n message: string\n /**\n * The name of the error.\n */\n name: string\n /**\n * The cause of the error.\n */\n cause: string\n /**\n * The arguments associated with the error.\n * @see {@link FormattedErrorArg}\n */\n args: FormattedErrorArg[]\n}\n\n/**\n * Type representing the ABI of a contract.\n */\nexport type Abi = ConstructorParameters<typeof utils.Interface>[0]\n\n/**\n * Interface representing a formatted error argument.\n */\nexport interface FormattedErrorArg {\n /**\n * The parameter name.\n */\n param: string | null\n /**\n * The type of the parameter.\n */\n type: string\n /**\n * The value of the parameter.\n */\n value: string\n}\n\n/**\n * Class representing a LayerZero contract error.\n */\nexport class LayerZeroContractError extends Error implements Error {\n /**\n * The arguments associated with the error.\n * @see {@link FormattedErrorArg}\n */\n public args: FormattedErrorArg[]\n /**\n * The cause of the error.\n */\n public cause: string\n /**\n * Creates an instance of LayerZeroContractError.\n * @param message The error message.\n * @param cause The cause of the error.\n * @param args The arguments associated with the error. {@link FormattedErrorArg}\n */\n constructor(message: string, cause: string, args: FormattedErrorArg[]) {\n super(message)\n this.name = 'LayerZeroContractError'\n this.cause = cause\n this.args = args\n }\n}\n\n/**\n * Class responsible for parsing errors related to LayerZero operations.\n */\nexport class LayerZeroErrorParser {\n /**\n * Creates an instance of LayerZeroErrorParser.\n * @param abi The error abi of the contracts that are interacted with.\n */\n constructor(public abi: Abi) {}\n\n /**\n * Parses a contract error from a given data string.\n * @param data The error data string to parse.\n * @returns The parsed error information or null if parsing fails.\n * @private\n */\n private parseContractError(data: string): LayerZeroParsedError | null {\n try {\n const interf = new utils.Interface(this.abi)\n const parsed = interf.parseError(data)\n if (!parsed) return null\n const { name: cause, args } = parsed\n const formattedArgs: FormattedErrorArg[] = []\n let message = `${cause}, `\n parsed.errorFragment.inputs.forEach(({ name: argName, type }, i) => {\n formattedArgs.push({ param: argName, type, value: args[i]?.toString() ?? args[i] })\n if (argName) message += `${argName} `\n message += `${args[i]}, `\n })\n return { message: message.slice(0, -2), name: 'LayerZeroContractError', cause, args: formattedArgs }\n } catch (error) {\n return null\n }\n }\n\n /**\n * Parses an error from a given data string.\n * @param data The error data string to parse.\n * @returns The parsed error information or null if the error is unrecognized.\n */\n public parse(data: string): LayerZeroParsedError | null {\n const error = this.parseContractError(data)\n // add more error parsers here as needed, for now only contract errors are supported\n return error\n }\n\n /**\n * Checks for a contract error in the given data string, throwing a `LayerZeroContractError` if one is found.\n * @param data The error data string to check.\n * @param cleanUpStackTrace An optional function to clean up the stack. This function and all function above in the stack will be excluded from the trace.\n * @throws {LayerZeroContractError} Throws a LayerZeroContractError if an error is found corresponding to the data string.\n */\n public check(data: string, cleanUpStackTrace?: (...args: any) => any): void {\n const error = this.parseContractError(data)\n if (error) {\n const lzErr = new LayerZeroContractError(error.message, error.cause, error.args)\n if (cleanUpStackTrace) Error.captureStackTrace(lzErr, cleanUpStackTrace)\n throw lzErr\n }\n }\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@layerzerolabs/evm-sdks-core",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.16",
|
|
4
4
|
"license": "BUSL-1.1",
|
|
5
5
|
"exports": {
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -23,8 +23,8 @@
|
|
|
23
23
|
"ethers": "^5.7.2"
|
|
24
24
|
},
|
|
25
25
|
"devDependencies": {
|
|
26
|
-
"@layerzerolabs/tsup-config-next": "^3.0.
|
|
27
|
-
"@layerzerolabs/typescript-config-next": "^3.0.
|
|
26
|
+
"@layerzerolabs/tsup-config-next": "^3.0.16",
|
|
27
|
+
"@layerzerolabs/typescript-config-next": "^3.0.16",
|
|
28
28
|
"@types/jest": "^29.5.10",
|
|
29
29
|
"@types/node": "^20.10.5",
|
|
30
30
|
"jest": "^29.7.0",
|