@sovereign-sdk/modules 0.0.7 → 0.1.1
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/README.md +32 -0
- package/dist/index.js +4 -17
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +4 -17
- package/dist/index.mjs.map +1 -1
- package/package.json +7 -5
package/README.md
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# @sovereign-sdk/modules
|
|
2
|
+
|
|
3
|
+
[](https://www.npmjs.com/package/@sovereign-sdk/modules)
|
|
4
|
+
[](https://github.com/Sovereign-Labs/sovereign-sdk-web3-js/actions/workflows/ci.yaml)
|
|
5
|
+
|
|
6
|
+
Convenient helpers for interacting with core Sovereign SDK modules.
|
|
7
|
+
|
|
8
|
+
## Installation
|
|
9
|
+
|
|
10
|
+
```bash
|
|
11
|
+
npm install @sovereign-sdk/modules
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Usage
|
|
15
|
+
|
|
16
|
+
### Bank Module
|
|
17
|
+
|
|
18
|
+
```typescript
|
|
19
|
+
import { BankModule } from "@sovereign-sdk/modules";
|
|
20
|
+
import { StandardRollup } from "@sovereign-sdk/web3";
|
|
21
|
+
|
|
22
|
+
const rollup = new StandardRollup({
|
|
23
|
+
url: "https://your-rollup-node.com",
|
|
24
|
+
// ... other config
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
const bank = new BankModule(rollup);
|
|
28
|
+
|
|
29
|
+
// Get balance for an address
|
|
30
|
+
const balance = await bank.getBalance(address, tokenAddress);
|
|
31
|
+
```
|
|
32
|
+
|
package/dist/index.js
CHANGED
|
@@ -46,14 +46,6 @@ module.exports = __toCommonJS(src_exports);
|
|
|
46
46
|
|
|
47
47
|
// src/bank.ts
|
|
48
48
|
var import_web3 = require("@sovereign-sdk/web3");
|
|
49
|
-
|
|
50
|
-
// src/types.ts
|
|
51
|
-
function isSuccessResponse(response) {
|
|
52
|
-
if (response.data === void 0)
|
|
53
|
-
throw new Error("data field missing from response");
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
// src/bank.ts
|
|
57
49
|
var Bank = class {
|
|
58
50
|
/**
|
|
59
51
|
* Creates a new Bank instance.
|
|
@@ -90,8 +82,7 @@ var Bank = class {
|
|
|
90
82
|
const response = yield this.rollup.http.get(
|
|
91
83
|
`/modules/bank/tokens/${token}/balances/${address}`
|
|
92
84
|
);
|
|
93
|
-
|
|
94
|
-
return BigInt(response.data.amount);
|
|
85
|
+
return BigInt(response.amount);
|
|
95
86
|
} catch (err) {
|
|
96
87
|
if (this.isMissingAccountError(err)) return BigInt(0);
|
|
97
88
|
throw err;
|
|
@@ -122,8 +113,7 @@ var Bank = class {
|
|
|
122
113
|
const response = yield this.rollup.http.get(
|
|
123
114
|
`/modules/bank/tokens/${token}/total-supply`
|
|
124
115
|
);
|
|
125
|
-
|
|
126
|
-
return BigInt(response.data.amount);
|
|
116
|
+
return BigInt(response.amount);
|
|
127
117
|
});
|
|
128
118
|
}
|
|
129
119
|
/**
|
|
@@ -146,8 +136,7 @@ var Bank = class {
|
|
|
146
136
|
const response = yield this.rollup.http.get(
|
|
147
137
|
"/modules/bank/tokens/gas_token"
|
|
148
138
|
);
|
|
149
|
-
|
|
150
|
-
this._gasTokenId = response.data.token_id;
|
|
139
|
+
this._gasTokenId = response.token_id;
|
|
151
140
|
return this._gasTokenId;
|
|
152
141
|
});
|
|
153
142
|
}
|
|
@@ -160,9 +149,7 @@ var Bank = class {
|
|
|
160
149
|
if (!(anyError instanceof import_web3.SovereignClient.APIError)) return false;
|
|
161
150
|
if (anyError.status !== 404) return false;
|
|
162
151
|
const body = anyError.error;
|
|
163
|
-
|
|
164
|
-
if (!error) return false;
|
|
165
|
-
return error.title.startsWith("Balance") && error.title.endsWith("not found");
|
|
152
|
+
return body.message.startsWith("Balance") && body.message.endsWith("not found");
|
|
166
153
|
}
|
|
167
154
|
};
|
|
168
155
|
// Annotate the CommonJS export names for ESM import in node:
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/bank.ts"
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/bank.ts"],"sourcesContent":["export * from \"./bank\";\n","import { type Rollup, SovereignClient } from \"@sovereign-sdk/web3\";\nimport type { ErrorResponse } from \"./types\";\n\ntype GasTokenIdPayload = {\n token_id: string;\n};\n\ntype BalancePayload = {\n amount: string;\n token_id: string;\n};\n\ntype TotalSupplyPayload = {\n amount: string;\n token_id: string;\n};\n\n/**\n * Bank class for interacting with the Sovereign SDK Bank module.\n */\nexport class Bank {\n // biome-ignore lint/suspicious/noExplicitAny: types arent used\n private readonly rollup: Rollup<any, any>;\n private _gasTokenId?: string;\n\n /**\n * Creates a new Bank instance.\n *\n * @param rollup - The rollup instance to use for HTTP requests\n */\n // biome-ignore lint/suspicious/noExplicitAny: types arent used\n constructor(rollup: Rollup<any, any>) {\n this.rollup = rollup;\n }\n\n /**\n * Gets the balance of a specific token for a given address.\n *\n * If no token ID is provided, the gas token balance will be returned.\n *\n * @param address - The address to query the balance for\n * @param tokenId - Optional token ID. If not provided, uses the gas token\n * @returns Promise resolving to the token balance as a bigint\n * @throws {SovereignClient.APIError} When the request fails for reasons other than missing account\n * @example\n * ```typescript\n * const bank = new Bank(rollup);\n * const balance = await bank.balance(\"0x123...\");\n * console.log(`Balance: ${balance}`);\n *\n * // Query specific token balance\n * const tokenBalance = await bank.balance(\"0x123...\", \"token_123\");\n * ```\n */\n async balance(address: string, tokenId?: string): Promise<bigint> {\n const token = await this.tokenIdOrElseGasTokenId(tokenId);\n\n try {\n const response: BalancePayload = await this.rollup.http.get(\n `/modules/bank/tokens/${token}/balances/${address}`,\n );\n\n return BigInt(response.amount);\n } catch (err) {\n if (this.isMissingAccountError(err)) return BigInt(0);\n\n throw err;\n }\n }\n\n /**\n * Gets the total supply of a specific token.\n *\n * If no token ID is provided, returns the total supply of the gas token.\n *\n * @param tokenId - Optional token ID. If not provided, uses the gas token\n * @returns Promise resolving to the total supply as a bigint\n * @throws {SovereignClient.APIError} When the request fails\n * @example\n * ```typescript\n * const bank = new Bank(rollup);\n * const totalSupply = await bank.totalSupply();\n * console.log(`Total gas token supply: ${totalSupply}`);\n *\n * // Query specific token supply\n * const tokenSupply = await bank.totalSupply(\"token_123\");\n * ```\n */\n async totalSupply(tokenId?: string): Promise<bigint> {\n const token = await this.tokenIdOrElseGasTokenId(tokenId);\n const response: TotalSupplyPayload = await this.rollup.http.get(\n `/modules/bank/tokens/${token}/total-supply`,\n );\n return BigInt(response.amount);\n }\n\n /**\n * Gets the gas token identifier.\n *\n * The gas token ID is cached after the first request to avoid repeated API calls.\n *\n * @returns Promise resolving to the gas token ID as a string\n * @throws {Error} When the gas token ID cannot be retrieved\n * @example\n * ```typescript\n * const bank = new Bank(rollup);\n * const gasTokenId = await bank.gasTokenId();\n * console.log(`Gas token ID: ${gasTokenId}`);\n * ```\n */\n async gasTokenId(): Promise<string> {\n if (this._gasTokenId) return this._gasTokenId;\n const response: GasTokenIdPayload = await this.rollup.http.get(\n \"/modules/bank/tokens/gas_token\",\n );\n this._gasTokenId = response.token_id;\n return this._gasTokenId;\n }\n\n private async tokenIdOrElseGasTokenId(tokenId?: string): Promise<string> {\n return tokenId ?? this.gasTokenId();\n }\n\n private isMissingAccountError(anyError: unknown): boolean {\n if (!(anyError instanceof SovereignClient.APIError)) return false;\n if (anyError.status !== 404) return false;\n const body = anyError.error as ErrorResponse;\n return (\n body.message.startsWith(\"Balance\") && body.message.endsWith(\"not found\")\n );\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,kBAA6C;AAoBtC,IAAM,OAAN,MAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWhB,YAAY,QAA0B;AACpC,SAAK,SAAS;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAqBM,QAAQ,SAAiB,SAAmC;AAAA;AAChE,YAAM,QAAQ,MAAM,KAAK,wBAAwB,OAAO;AAExD,UAAI;AACF,cAAM,WAA2B,MAAM,KAAK,OAAO,KAAK;AAAA,UACtD,wBAAwB,KAAK,aAAa,OAAO;AAAA,QACnD;AAEA,eAAO,OAAO,SAAS,MAAM;AAAA,MAC/B,SAAS,KAAK;AACZ,YAAI,KAAK,sBAAsB,GAAG,EAAG,QAAO,OAAO,CAAC;AAEpD,cAAM;AAAA,MACR;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAoBM,YAAY,SAAmC;AAAA;AACnD,YAAM,QAAQ,MAAM,KAAK,wBAAwB,OAAO;AACxD,YAAM,WAA+B,MAAM,KAAK,OAAO,KAAK;AAAA,QAC1D,wBAAwB,KAAK;AAAA,MAC/B;AACA,aAAO,OAAO,SAAS,MAAM;AAAA,IAC/B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgBM,aAA8B;AAAA;AAClC,UAAI,KAAK,YAAa,QAAO,KAAK;AAClC,YAAM,WAA8B,MAAM,KAAK,OAAO,KAAK;AAAA,QACzD;AAAA,MACF;AACA,WAAK,cAAc,SAAS;AAC5B,aAAO,KAAK;AAAA,IACd;AAAA;AAAA,EAEc,wBAAwB,SAAmC;AAAA;AACvE,aAAO,4BAAW,KAAK,WAAW;AAAA,IACpC;AAAA;AAAA,EAEQ,sBAAsB,UAA4B;AACxD,QAAI,EAAE,oBAAoB,4BAAgB,UAAW,QAAO;AAC5D,QAAI,SAAS,WAAW,IAAK,QAAO;AACpC,UAAM,OAAO,SAAS;AACtB,WACE,KAAK,QAAQ,WAAW,SAAS,KAAK,KAAK,QAAQ,SAAS,WAAW;AAAA,EAE3E;AACF;","names":[]}
|
package/dist/index.mjs
CHANGED
|
@@ -21,14 +21,6 @@ var __async = (__this, __arguments, generator) => {
|
|
|
21
21
|
|
|
22
22
|
// src/bank.ts
|
|
23
23
|
import { SovereignClient } from "@sovereign-sdk/web3";
|
|
24
|
-
|
|
25
|
-
// src/types.ts
|
|
26
|
-
function isSuccessResponse(response) {
|
|
27
|
-
if (response.data === void 0)
|
|
28
|
-
throw new Error("data field missing from response");
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
// src/bank.ts
|
|
32
24
|
var Bank = class {
|
|
33
25
|
/**
|
|
34
26
|
* Creates a new Bank instance.
|
|
@@ -65,8 +57,7 @@ var Bank = class {
|
|
|
65
57
|
const response = yield this.rollup.http.get(
|
|
66
58
|
`/modules/bank/tokens/${token}/balances/${address}`
|
|
67
59
|
);
|
|
68
|
-
|
|
69
|
-
return BigInt(response.data.amount);
|
|
60
|
+
return BigInt(response.amount);
|
|
70
61
|
} catch (err) {
|
|
71
62
|
if (this.isMissingAccountError(err)) return BigInt(0);
|
|
72
63
|
throw err;
|
|
@@ -97,8 +88,7 @@ var Bank = class {
|
|
|
97
88
|
const response = yield this.rollup.http.get(
|
|
98
89
|
`/modules/bank/tokens/${token}/total-supply`
|
|
99
90
|
);
|
|
100
|
-
|
|
101
|
-
return BigInt(response.data.amount);
|
|
91
|
+
return BigInt(response.amount);
|
|
102
92
|
});
|
|
103
93
|
}
|
|
104
94
|
/**
|
|
@@ -121,8 +111,7 @@ var Bank = class {
|
|
|
121
111
|
const response = yield this.rollup.http.get(
|
|
122
112
|
"/modules/bank/tokens/gas_token"
|
|
123
113
|
);
|
|
124
|
-
|
|
125
|
-
this._gasTokenId = response.data.token_id;
|
|
114
|
+
this._gasTokenId = response.token_id;
|
|
126
115
|
return this._gasTokenId;
|
|
127
116
|
});
|
|
128
117
|
}
|
|
@@ -135,9 +124,7 @@ var Bank = class {
|
|
|
135
124
|
if (!(anyError instanceof SovereignClient.APIError)) return false;
|
|
136
125
|
if (anyError.status !== 404) return false;
|
|
137
126
|
const body = anyError.error;
|
|
138
|
-
|
|
139
|
-
if (!error) return false;
|
|
140
|
-
return error.title.startsWith("Balance") && error.title.endsWith("not found");
|
|
127
|
+
return body.message.startsWith("Balance") && body.message.endsWith("not found");
|
|
141
128
|
}
|
|
142
129
|
};
|
|
143
130
|
export {
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/bank.ts"
|
|
1
|
+
{"version":3,"sources":["../src/bank.ts"],"sourcesContent":["import { type Rollup, SovereignClient } from \"@sovereign-sdk/web3\";\nimport type { ErrorResponse } from \"./types\";\n\ntype GasTokenIdPayload = {\n token_id: string;\n};\n\ntype BalancePayload = {\n amount: string;\n token_id: string;\n};\n\ntype TotalSupplyPayload = {\n amount: string;\n token_id: string;\n};\n\n/**\n * Bank class for interacting with the Sovereign SDK Bank module.\n */\nexport class Bank {\n // biome-ignore lint/suspicious/noExplicitAny: types arent used\n private readonly rollup: Rollup<any, any>;\n private _gasTokenId?: string;\n\n /**\n * Creates a new Bank instance.\n *\n * @param rollup - The rollup instance to use for HTTP requests\n */\n // biome-ignore lint/suspicious/noExplicitAny: types arent used\n constructor(rollup: Rollup<any, any>) {\n this.rollup = rollup;\n }\n\n /**\n * Gets the balance of a specific token for a given address.\n *\n * If no token ID is provided, the gas token balance will be returned.\n *\n * @param address - The address to query the balance for\n * @param tokenId - Optional token ID. If not provided, uses the gas token\n * @returns Promise resolving to the token balance as a bigint\n * @throws {SovereignClient.APIError} When the request fails for reasons other than missing account\n * @example\n * ```typescript\n * const bank = new Bank(rollup);\n * const balance = await bank.balance(\"0x123...\");\n * console.log(`Balance: ${balance}`);\n *\n * // Query specific token balance\n * const tokenBalance = await bank.balance(\"0x123...\", \"token_123\");\n * ```\n */\n async balance(address: string, tokenId?: string): Promise<bigint> {\n const token = await this.tokenIdOrElseGasTokenId(tokenId);\n\n try {\n const response: BalancePayload = await this.rollup.http.get(\n `/modules/bank/tokens/${token}/balances/${address}`,\n );\n\n return BigInt(response.amount);\n } catch (err) {\n if (this.isMissingAccountError(err)) return BigInt(0);\n\n throw err;\n }\n }\n\n /**\n * Gets the total supply of a specific token.\n *\n * If no token ID is provided, returns the total supply of the gas token.\n *\n * @param tokenId - Optional token ID. If not provided, uses the gas token\n * @returns Promise resolving to the total supply as a bigint\n * @throws {SovereignClient.APIError} When the request fails\n * @example\n * ```typescript\n * const bank = new Bank(rollup);\n * const totalSupply = await bank.totalSupply();\n * console.log(`Total gas token supply: ${totalSupply}`);\n *\n * // Query specific token supply\n * const tokenSupply = await bank.totalSupply(\"token_123\");\n * ```\n */\n async totalSupply(tokenId?: string): Promise<bigint> {\n const token = await this.tokenIdOrElseGasTokenId(tokenId);\n const response: TotalSupplyPayload = await this.rollup.http.get(\n `/modules/bank/tokens/${token}/total-supply`,\n );\n return BigInt(response.amount);\n }\n\n /**\n * Gets the gas token identifier.\n *\n * The gas token ID is cached after the first request to avoid repeated API calls.\n *\n * @returns Promise resolving to the gas token ID as a string\n * @throws {Error} When the gas token ID cannot be retrieved\n * @example\n * ```typescript\n * const bank = new Bank(rollup);\n * const gasTokenId = await bank.gasTokenId();\n * console.log(`Gas token ID: ${gasTokenId}`);\n * ```\n */\n async gasTokenId(): Promise<string> {\n if (this._gasTokenId) return this._gasTokenId;\n const response: GasTokenIdPayload = await this.rollup.http.get(\n \"/modules/bank/tokens/gas_token\",\n );\n this._gasTokenId = response.token_id;\n return this._gasTokenId;\n }\n\n private async tokenIdOrElseGasTokenId(tokenId?: string): Promise<string> {\n return tokenId ?? this.gasTokenId();\n }\n\n private isMissingAccountError(anyError: unknown): boolean {\n if (!(anyError instanceof SovereignClient.APIError)) return false;\n if (anyError.status !== 404) return false;\n const body = anyError.error as ErrorResponse;\n return (\n body.message.startsWith(\"Balance\") && body.message.endsWith(\"not found\")\n );\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,SAAsB,uBAAuB;AAoBtC,IAAM,OAAN,MAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWhB,YAAY,QAA0B;AACpC,SAAK,SAAS;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAqBM,QAAQ,SAAiB,SAAmC;AAAA;AAChE,YAAM,QAAQ,MAAM,KAAK,wBAAwB,OAAO;AAExD,UAAI;AACF,cAAM,WAA2B,MAAM,KAAK,OAAO,KAAK;AAAA,UACtD,wBAAwB,KAAK,aAAa,OAAO;AAAA,QACnD;AAEA,eAAO,OAAO,SAAS,MAAM;AAAA,MAC/B,SAAS,KAAK;AACZ,YAAI,KAAK,sBAAsB,GAAG,EAAG,QAAO,OAAO,CAAC;AAEpD,cAAM;AAAA,MACR;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAoBM,YAAY,SAAmC;AAAA;AACnD,YAAM,QAAQ,MAAM,KAAK,wBAAwB,OAAO;AACxD,YAAM,WAA+B,MAAM,KAAK,OAAO,KAAK;AAAA,QAC1D,wBAAwB,KAAK;AAAA,MAC/B;AACA,aAAO,OAAO,SAAS,MAAM;AAAA,IAC/B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgBM,aAA8B;AAAA;AAClC,UAAI,KAAK,YAAa,QAAO,KAAK;AAClC,YAAM,WAA8B,MAAM,KAAK,OAAO,KAAK;AAAA,QACzD;AAAA,MACF;AACA,WAAK,cAAc,SAAS;AAC5B,aAAO,KAAK;AAAA,IACd;AAAA;AAAA,EAEc,wBAAwB,SAAmC;AAAA;AACvE,aAAO,4BAAW,KAAK,WAAW;AAAA,IACpC;AAAA;AAAA,EAEQ,sBAAsB,UAA4B;AACxD,QAAI,EAAE,oBAAoB,gBAAgB,UAAW,QAAO;AAC5D,QAAI,SAAS,WAAW,IAAK,QAAO;AACpC,UAAM,OAAO,SAAS;AACtB,WACE,KAAK,QAAQ,WAAW,SAAS,KAAK,KAAK,QAAQ,SAAS,WAAW;AAAA,EAE3E;AACF;","names":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sovereign-sdk/modules",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"description": "A package providing convenient helpers for interacting with core Sovereign SDK modules",
|
|
5
5
|
"repository": "github:Sovereign-Labs/sovereign-sdk-web3-js",
|
|
6
6
|
"files": [
|
|
@@ -21,7 +21,8 @@
|
|
|
21
21
|
"devDependencies": {
|
|
22
22
|
"tsup": "^8.3.0",
|
|
23
23
|
"typescript": "^5.6.3",
|
|
24
|
-
"vitest": "^3.0.5"
|
|
24
|
+
"vitest": "^3.0.5",
|
|
25
|
+
"@sovereign-sdk/signers": "^0.2.1"
|
|
25
26
|
},
|
|
26
27
|
"peerDependencies": {
|
|
27
28
|
"tsup": "^8.3.0",
|
|
@@ -31,14 +32,15 @@
|
|
|
31
32
|
"access": "public"
|
|
32
33
|
},
|
|
33
34
|
"dependencies": {
|
|
34
|
-
"@sovereign-sdk/web3": "^0.8.
|
|
35
|
-
"@sovereign-sdk/utils": "^0.0.
|
|
35
|
+
"@sovereign-sdk/web3": "^0.8.1",
|
|
36
|
+
"@sovereign-sdk/utils": "^0.0.4"
|
|
36
37
|
},
|
|
37
38
|
"scripts": {
|
|
38
39
|
"build": "tsup",
|
|
39
40
|
"ci": "biome ci",
|
|
40
41
|
"fix": "biome check --write",
|
|
41
42
|
"lint": "biome lint",
|
|
42
|
-
"test": "vitest"
|
|
43
|
+
"test": "vitest **/*.test.ts",
|
|
44
|
+
"test:integration": "vitest **/*.integration-test.ts"
|
|
43
45
|
}
|
|
44
46
|
}
|