skittles 1.2.7 → 1.3.0
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 +1 -1
- package/dist/commands/compile.d.ts +1 -0
- package/dist/commands/compile.d.ts.map +1 -1
- package/dist/commands/compile.js +51 -1
- package/dist/commands/compile.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +2 -0
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/test.d.ts +7 -0
- package/dist/commands/test.d.ts.map +1 -0
- package/dist/commands/test.js +60 -0
- package/dist/commands/test.js.map +1 -0
- package/dist/compiler/analysis.d.ts +7 -0
- package/dist/compiler/analysis.d.ts.map +1 -0
- package/dist/compiler/analysis.js +234 -0
- package/dist/compiler/analysis.js.map +1 -0
- package/dist/compiler/codegen.d.ts +10 -1
- package/dist/compiler/codegen.d.ts.map +1 -1
- package/dist/compiler/codegen.js +389 -22
- package/dist/compiler/codegen.js.map +1 -1
- package/dist/compiler/compiler.d.ts +1 -0
- package/dist/compiler/compiler.d.ts.map +1 -1
- package/dist/compiler/compiler.js +90 -6
- package/dist/compiler/compiler.js.map +1 -1
- package/dist/compiler/parser.d.ts +7 -1
- package/dist/compiler/parser.d.ts.map +1 -1
- package/dist/compiler/parser.js +731 -47
- package/dist/compiler/parser.js.map +1 -1
- package/dist/config/config.d.ts.map +1 -1
- package/dist/config/config.js +2 -0
- package/dist/config/config.js.map +1 -1
- package/dist/exports.d.ts +13 -2
- package/dist/exports.d.ts.map +1 -1
- package/dist/exports.js.map +1 -1
- package/dist/index.js +13 -3
- package/dist/index.js.map +1 -1
- package/dist/testing.d.ts +93 -0
- package/dist/testing.d.ts.map +1 -0
- package/dist/testing.js +143 -0
- package/dist/testing.js.map +1 -0
- package/dist/types/index.d.ts +50 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +1 -0
- package/dist/types/index.js.map +1 -1
- package/package.json +2 -2
package/dist/testing.js
ADDED
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* skittles/testing (core)
|
|
4
|
+
*
|
|
5
|
+
* Lower level testing utilities for Skittles projects.
|
|
6
|
+
* Provides helpers to spin up an in memory EVM, deploy compiled contracts,
|
|
7
|
+
* and interact with them using ethers.js v6.
|
|
8
|
+
*
|
|
9
|
+
* Most users should import from "skittles/testing" which provides the
|
|
10
|
+
* higher level `setup()` function with automatic lifecycle management.
|
|
11
|
+
*
|
|
12
|
+
* Requirements (devDependencies in your project):
|
|
13
|
+
* - ethers ^6.0.0
|
|
14
|
+
* - hardhat ^2.22.0
|
|
15
|
+
* - @nomicfoundation/hardhat-toolbox ^5.0.0
|
|
16
|
+
*
|
|
17
|
+
* Tests are run via `hardhat test` which uses Mocha under the hood.
|
|
18
|
+
*/
|
|
19
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
20
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
21
|
+
};
|
|
22
|
+
var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {
|
|
23
|
+
if (typeof path === "string" && /^\.\.?\//.test(path)) {
|
|
24
|
+
return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
|
|
25
|
+
return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js");
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
return path;
|
|
29
|
+
};
|
|
30
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
31
|
+
exports.createTestEnv = createTestEnv;
|
|
32
|
+
exports.loadArtifact = loadArtifact;
|
|
33
|
+
exports.deploy = deploy;
|
|
34
|
+
exports.connectAs = connectAs;
|
|
35
|
+
exports.getBalance = getBalance;
|
|
36
|
+
const path_1 = __importDefault(require("path"));
|
|
37
|
+
const fs_1 = __importDefault(require("fs"));
|
|
38
|
+
const ethers_1 = require("ethers");
|
|
39
|
+
// ============================================================
|
|
40
|
+
// Internal helpers
|
|
41
|
+
// ============================================================
|
|
42
|
+
/** Dynamic import wrapper for loading ESM packages like Hardhat. */
|
|
43
|
+
const importModule = (specifier) => import(__rewriteRelativeImportExtension(specifier));
|
|
44
|
+
// ============================================================
|
|
45
|
+
// Environment setup
|
|
46
|
+
// ============================================================
|
|
47
|
+
/**
|
|
48
|
+
* Create a test environment backed by Hardhat Network.
|
|
49
|
+
* Uses the Hardhat Runtime Environment's in memory EVM and wraps it
|
|
50
|
+
* with an ethers BrowserProvider.
|
|
51
|
+
*
|
|
52
|
+
* Each test suite should call this once in a `before` hook.
|
|
53
|
+
*
|
|
54
|
+
* ```ts
|
|
55
|
+
* let env: TestEnv;
|
|
56
|
+
* before(async function () { env = await createTestEnv(); });
|
|
57
|
+
* ```
|
|
58
|
+
*
|
|
59
|
+
* @param dynamicImport Optional custom import function.
|
|
60
|
+
*/
|
|
61
|
+
async function createTestEnv(dynamicImport = importModule) {
|
|
62
|
+
const hardhatModule = await dynamicImport("hardhat");
|
|
63
|
+
const hre = hardhatModule.default || hardhatModule;
|
|
64
|
+
const provider = new ethers_1.ethers.BrowserProvider(hre.network.provider);
|
|
65
|
+
const accounts = [];
|
|
66
|
+
for (let i = 0; i < 10; i++) {
|
|
67
|
+
accounts.push(await provider.getSigner(i));
|
|
68
|
+
}
|
|
69
|
+
return {
|
|
70
|
+
provider,
|
|
71
|
+
accounts,
|
|
72
|
+
close: async () => { },
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
// ============================================================
|
|
76
|
+
// Artifact loading
|
|
77
|
+
// ============================================================
|
|
78
|
+
/**
|
|
79
|
+
* Load a compiled contract artifact (ABI + bytecode) from the build directory.
|
|
80
|
+
* Defaults to `build/` relative to the current working directory.
|
|
81
|
+
*/
|
|
82
|
+
function loadArtifact(contractName, buildDir) {
|
|
83
|
+
const dir = buildDir ?? path_1.default.join(process.cwd(), "build");
|
|
84
|
+
const abiPath = path_1.default.join(dir, "abi", `${contractName}.json`);
|
|
85
|
+
const bytecodePath = path_1.default.join(dir, "bytecode", `${contractName}.bin`);
|
|
86
|
+
if (!fs_1.default.existsSync(abiPath)) {
|
|
87
|
+
throw new Error(`ABI not found for "${contractName}". Did you run "skittles compile" first?\n Expected: ${abiPath}`);
|
|
88
|
+
}
|
|
89
|
+
if (!fs_1.default.existsSync(bytecodePath)) {
|
|
90
|
+
throw new Error(`Bytecode not found for "${contractName}". Did you run "skittles compile" first?\n Expected: ${bytecodePath}`);
|
|
91
|
+
}
|
|
92
|
+
const abi = JSON.parse(fs_1.default.readFileSync(abiPath, "utf-8"));
|
|
93
|
+
const bytecode = fs_1.default.readFileSync(bytecodePath, "utf-8");
|
|
94
|
+
return { abi, bytecode: "0x" + bytecode };
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Deploy a compiled Skittles contract to the test EVM.
|
|
98
|
+
*
|
|
99
|
+
* Automatically loads the ABI and bytecode from the build directory,
|
|
100
|
+
* deploys the contract, and returns an ethers.js Contract instance.
|
|
101
|
+
*
|
|
102
|
+
* ```ts
|
|
103
|
+
* const token = await deploy(env, "Token", [1_000_000n]);
|
|
104
|
+
* expect(await token.name()).to.equal("MyToken");
|
|
105
|
+
* ```
|
|
106
|
+
*/
|
|
107
|
+
async function deploy(env, contractName, constructorArgs = [], options = {}) {
|
|
108
|
+
const { abi, bytecode } = loadArtifact(contractName, options.buildDir);
|
|
109
|
+
const deployer = env.accounts[options.from ?? 0];
|
|
110
|
+
const factory = new ethers_1.ethers.ContractFactory(abi, bytecode, deployer);
|
|
111
|
+
const overrides = options.value ? { value: options.value } : {};
|
|
112
|
+
const deployed = await factory.deploy(...constructorArgs, overrides);
|
|
113
|
+
await deployed.waitForDeployment();
|
|
114
|
+
const address = await deployed.getAddress();
|
|
115
|
+
return new ethers_1.ethers.Contract(address, abi, deployer);
|
|
116
|
+
}
|
|
117
|
+
// ============================================================
|
|
118
|
+
// Utilities
|
|
119
|
+
// ============================================================
|
|
120
|
+
/**
|
|
121
|
+
* Connect to a deployed contract from a different signer.
|
|
122
|
+
* Useful for testing multi account scenarios.
|
|
123
|
+
*
|
|
124
|
+
* ```ts
|
|
125
|
+
* const [, alice] = env.accounts;
|
|
126
|
+
* const aliceToken = connectAs(token, alice);
|
|
127
|
+
* await aliceToken.transfer(bobAddr, 100n);
|
|
128
|
+
* ```
|
|
129
|
+
*/
|
|
130
|
+
function connectAs(contract, signer) {
|
|
131
|
+
return contract.connect(signer);
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Get the ETH balance of an address.
|
|
135
|
+
*
|
|
136
|
+
* ```ts
|
|
137
|
+
* const balance = await getBalance(env, aliceAddr);
|
|
138
|
+
* ```
|
|
139
|
+
*/
|
|
140
|
+
async function getBalance(env, address) {
|
|
141
|
+
return env.provider.getBalance(address);
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=testing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testing.js","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"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"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ export interface SkittlesConfig {
|
|
|
4
4
|
contractsDir?: string;
|
|
5
5
|
outputDir?: string;
|
|
6
6
|
cacheDir?: string;
|
|
7
|
+
consoleLog?: boolean;
|
|
7
8
|
}
|
|
8
9
|
export interface OptimizerConfig {
|
|
9
10
|
enabled?: boolean;
|
|
@@ -43,6 +44,8 @@ export interface SkittlesContract {
|
|
|
43
44
|
customErrors: SkittlesCustomError[];
|
|
44
45
|
ctor?: SkittlesConstructor;
|
|
45
46
|
inherits: string[];
|
|
47
|
+
isAbstract?: boolean;
|
|
48
|
+
sourceLine?: number;
|
|
46
49
|
}
|
|
47
50
|
export interface SkittlesVariable {
|
|
48
51
|
name: string;
|
|
@@ -52,6 +55,7 @@ export interface SkittlesVariable {
|
|
|
52
55
|
constant: boolean;
|
|
53
56
|
isOverride?: boolean;
|
|
54
57
|
initialValue?: Expression;
|
|
58
|
+
sourceLine?: number;
|
|
55
59
|
}
|
|
56
60
|
export interface SkittlesFunction {
|
|
57
61
|
name: string;
|
|
@@ -61,20 +65,25 @@ export interface SkittlesFunction {
|
|
|
61
65
|
stateMutability: StateMutability;
|
|
62
66
|
isVirtual: boolean;
|
|
63
67
|
isOverride: boolean;
|
|
68
|
+
isAbstract?: boolean;
|
|
64
69
|
body: Statement[];
|
|
70
|
+
sourceLine?: number;
|
|
65
71
|
}
|
|
66
72
|
export interface SkittlesConstructor {
|
|
67
73
|
parameters: SkittlesParameter[];
|
|
68
74
|
body: Statement[];
|
|
75
|
+
sourceLine?: number;
|
|
69
76
|
}
|
|
70
77
|
export interface SkittlesEvent {
|
|
71
78
|
name: string;
|
|
72
79
|
parameters: SkittlesParameter[];
|
|
80
|
+
sourceLine?: number;
|
|
73
81
|
}
|
|
74
82
|
export interface SkittlesParameter {
|
|
75
83
|
name: string;
|
|
76
84
|
type: SkittlesType;
|
|
77
85
|
indexed?: boolean;
|
|
86
|
+
defaultValue?: Expression;
|
|
78
87
|
}
|
|
79
88
|
export declare enum SkittlesTypeKind {
|
|
80
89
|
Uint256 = "uint256",
|
|
@@ -89,6 +98,7 @@ export declare enum SkittlesTypeKind {
|
|
|
89
98
|
Struct = "struct",
|
|
90
99
|
ContractInterface = "contract-interface",
|
|
91
100
|
Enum = "enum",
|
|
101
|
+
Tuple = "tuple",
|
|
92
102
|
Void = "void"
|
|
93
103
|
}
|
|
94
104
|
export interface SkittlesType {
|
|
@@ -97,29 +107,34 @@ export interface SkittlesType {
|
|
|
97
107
|
valueType?: SkittlesType;
|
|
98
108
|
structName?: string;
|
|
99
109
|
structFields?: SkittlesParameter[];
|
|
110
|
+
tupleTypes?: SkittlesType[];
|
|
100
111
|
}
|
|
101
112
|
export type Visibility = "public" | "private" | "internal" | "external";
|
|
102
113
|
export type StateMutability = "pure" | "view" | "nonpayable" | "payable";
|
|
103
|
-
export type Statement = ReturnStatement | VariableDeclarationStatement | ExpressionStatement | IfStatement | ForStatement | WhileStatement | DoWhileStatement | BreakStatement | ContinueStatement | RevertStatement | EmitStatement | SwitchStatement | DeleteStatement;
|
|
114
|
+
export type Statement = ReturnStatement | VariableDeclarationStatement | ExpressionStatement | IfStatement | ForStatement | WhileStatement | DoWhileStatement | BreakStatement | ContinueStatement | RevertStatement | EmitStatement | SwitchStatement | DeleteStatement | TryCatchStatement | ConsoleLogStatement;
|
|
104
115
|
export interface ReturnStatement {
|
|
105
116
|
kind: "return";
|
|
106
117
|
value?: Expression;
|
|
118
|
+
sourceLine?: number;
|
|
107
119
|
}
|
|
108
120
|
export interface VariableDeclarationStatement {
|
|
109
121
|
kind: "variable-declaration";
|
|
110
122
|
name: string;
|
|
111
123
|
type?: SkittlesType;
|
|
112
124
|
initializer?: Expression;
|
|
125
|
+
sourceLine?: number;
|
|
113
126
|
}
|
|
114
127
|
export interface ExpressionStatement {
|
|
115
128
|
kind: "expression";
|
|
116
129
|
expression: Expression;
|
|
130
|
+
sourceLine?: number;
|
|
117
131
|
}
|
|
118
132
|
export interface IfStatement {
|
|
119
133
|
kind: "if";
|
|
120
134
|
condition: Expression;
|
|
121
135
|
thenBody: Statement[];
|
|
122
136
|
elseBody?: Statement[];
|
|
137
|
+
sourceLine?: number;
|
|
123
138
|
}
|
|
124
139
|
export interface ForStatement {
|
|
125
140
|
kind: "for";
|
|
@@ -127,37 +142,54 @@ export interface ForStatement {
|
|
|
127
142
|
condition?: Expression;
|
|
128
143
|
incrementor?: Expression;
|
|
129
144
|
body: Statement[];
|
|
145
|
+
sourceLine?: number;
|
|
130
146
|
}
|
|
131
147
|
export interface WhileStatement {
|
|
132
148
|
kind: "while";
|
|
133
149
|
condition: Expression;
|
|
134
150
|
body: Statement[];
|
|
151
|
+
sourceLine?: number;
|
|
135
152
|
}
|
|
136
153
|
export interface DoWhileStatement {
|
|
137
154
|
kind: "do-while";
|
|
138
155
|
condition: Expression;
|
|
139
156
|
body: Statement[];
|
|
157
|
+
sourceLine?: number;
|
|
140
158
|
}
|
|
141
159
|
export interface BreakStatement {
|
|
142
160
|
kind: "break";
|
|
161
|
+
sourceLine?: number;
|
|
143
162
|
}
|
|
144
163
|
export interface ContinueStatement {
|
|
145
164
|
kind: "continue";
|
|
165
|
+
sourceLine?: number;
|
|
146
166
|
}
|
|
147
167
|
export interface RevertStatement {
|
|
148
168
|
kind: "revert";
|
|
149
169
|
message?: Expression;
|
|
150
170
|
customError?: string;
|
|
151
171
|
customErrorArgs?: Expression[];
|
|
172
|
+
sourceLine?: number;
|
|
152
173
|
}
|
|
153
174
|
export interface EmitStatement {
|
|
154
175
|
kind: "emit";
|
|
155
176
|
eventName: string;
|
|
156
177
|
args: Expression[];
|
|
178
|
+
sourceLine?: number;
|
|
157
179
|
}
|
|
158
180
|
export interface DeleteStatement {
|
|
159
181
|
kind: "delete";
|
|
160
182
|
target: Expression;
|
|
183
|
+
sourceLine?: number;
|
|
184
|
+
}
|
|
185
|
+
export interface TryCatchStatement {
|
|
186
|
+
kind: "try-catch";
|
|
187
|
+
call: Expression;
|
|
188
|
+
returnVarName?: string;
|
|
189
|
+
returnType?: SkittlesType;
|
|
190
|
+
successBody: Statement[];
|
|
191
|
+
catchBody: Statement[];
|
|
192
|
+
sourceLine?: number;
|
|
161
193
|
}
|
|
162
194
|
export interface SwitchCase {
|
|
163
195
|
value?: Expression;
|
|
@@ -167,8 +199,14 @@ export interface SwitchStatement {
|
|
|
167
199
|
kind: "switch";
|
|
168
200
|
discriminant: Expression;
|
|
169
201
|
cases: SwitchCase[];
|
|
202
|
+
sourceLine?: number;
|
|
203
|
+
}
|
|
204
|
+
export interface ConsoleLogStatement {
|
|
205
|
+
kind: "console-log";
|
|
206
|
+
args: Expression[];
|
|
207
|
+
sourceLine?: number;
|
|
170
208
|
}
|
|
171
|
-
export type Expression = NumberLiteral | StringLiteral | BooleanLiteral | Identifier | PropertyAccessExpression | ElementAccessExpression | BinaryExpression | UnaryExpression | AssignmentExpression | CallExpression | ConditionalExpression | NewExpression | ObjectLiteralExpression;
|
|
209
|
+
export type Expression = NumberLiteral | StringLiteral | BooleanLiteral | Identifier | PropertyAccessExpression | ElementAccessExpression | BinaryExpression | UnaryExpression | AssignmentExpression | CallExpression | ConditionalExpression | NewExpression | ObjectLiteralExpression | TupleLiteralExpression;
|
|
172
210
|
export interface NumberLiteral {
|
|
173
211
|
kind: "number-literal";
|
|
174
212
|
value: string;
|
|
@@ -217,6 +255,7 @@ export interface CallExpression {
|
|
|
217
255
|
kind: "call";
|
|
218
256
|
callee: Expression;
|
|
219
257
|
args: Expression[];
|
|
258
|
+
typeArgs?: SkittlesType[];
|
|
220
259
|
}
|
|
221
260
|
export interface ConditionalExpression {
|
|
222
261
|
kind: "conditional";
|
|
@@ -236,9 +275,18 @@ export interface ObjectLiteralExpression {
|
|
|
236
275
|
value: Expression;
|
|
237
276
|
}[];
|
|
238
277
|
}
|
|
278
|
+
export interface TupleLiteralExpression {
|
|
279
|
+
kind: "tuple-literal";
|
|
280
|
+
elements: Expression[];
|
|
281
|
+
}
|
|
282
|
+
export interface SourceMapping {
|
|
283
|
+
sourceFile: string;
|
|
284
|
+
mappings: Record<number, number>;
|
|
285
|
+
}
|
|
239
286
|
export interface BuildArtifact {
|
|
240
287
|
contractName: string;
|
|
241
288
|
solidity: string;
|
|
289
|
+
sourceMap?: SourceMapping;
|
|
242
290
|
}
|
|
243
291
|
export interface AbiItem {
|
|
244
292
|
type: "function" | "event" | "constructor" | "fallback" | "receive";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,cAAc;IAC7B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|
package/dist/types/index.js
CHANGED
|
@@ -18,6 +18,7 @@ export var SkittlesTypeKind;
|
|
|
18
18
|
SkittlesTypeKind["Struct"] = "struct";
|
|
19
19
|
SkittlesTypeKind["ContractInterface"] = "contract-interface";
|
|
20
20
|
SkittlesTypeKind["Enum"] = "enum";
|
|
21
|
+
SkittlesTypeKind["Tuple"] = "tuple";
|
|
21
22
|
SkittlesTypeKind["Void"] = "void";
|
|
22
23
|
})(SkittlesTypeKind || (SkittlesTypeKind = {}));
|
|
23
24
|
//# sourceMappingURL=index.js.map
|
package/dist/types/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,SAAS;AACT,+DAA+D;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,SAAS;AACT,+DAA+D;AA0G/D,+DAA+D;AAC/D,cAAc;AACd,+DAA+D;AAE/D,MAAM,CAAN,IAAY,gBAeX;AAfD,WAAY,gBAAgB;IAC1B,uCAAmB,CAAA;IACnB,qCAAiB,CAAA;IACjB,uCAAmB,CAAA;IACnB,iCAAa,CAAA;IACb,qCAAiB,CAAA;IACjB,uCAAmB,CAAA;IACnB,mCAAe,CAAA;IACf,uCAAmB,CAAA;IACnB,mCAAe,CAAA;IACf,qCAAiB,CAAA;IACjB,4DAAwC,CAAA;IACxC,iCAAa,CAAA;IACb,mCAAe,CAAA;IACf,iCAAa,CAAA;AACf,CAAC,EAfW,gBAAgB,KAAhB,gBAAgB,QAe3B"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "skittles",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"description": "TypeScript to Solidity to EVM bytecode compiler",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/exports.js",
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
},
|
|
37
37
|
"homepage": "https://github.com/chase-manning/skittles#readme",
|
|
38
38
|
"engines": {
|
|
39
|
-
"node": ">=
|
|
39
|
+
"node": ">=22.0.0"
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
42
|
"chalk": "^4.0.0",
|