skittles 1.1.1 → 1.2.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 +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +80 -69
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/test.d.ts +1 -1
- package/dist/commands/test.js +8 -8
- package/dist/commands/test.js.map +1 -1
- package/dist/compiler/compiler.d.ts +1 -2
- package/dist/compiler/compiler.d.ts.map +1 -1
- package/dist/compiler/compiler.js +15 -46
- package/dist/compiler/compiler.js.map +1 -1
- package/dist/index.js +1 -12
- package/dist/index.js.map +1 -1
- package/dist/testing.d.ts +16 -16
- package/dist/testing.d.ts.map +1 -1
- package/dist/testing.js +46 -37
- package/dist/testing.js.map +1 -1
- package/dist/types/index.d.ts +0 -2
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +3 -20
- package/testing.d.ts +0 -76
- package/testing.mjs +0 -83
package/README.md
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
Write, Test and Deploy EVM Smart Contracts with TypeScript.
|
|
8
8
|
|
|
9
|
-
Skittles compiles TypeScript classes to Solidity source code
|
|
9
|
+
Skittles compiles TypeScript classes to Solidity source code. Use Hardhat (or any Solidity toolchain) to compile that to ABI and EVM bytecode. You get TypeScript tooling (autocomplete, type checking, familiar syntax) while targeting the EVM.
|
|
10
10
|
|
|
11
11
|
Website: [skittles.dev](https://skittles.dev/)
|
|
12
12
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAmMA,wBAAsB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkKpE"}
|
package/dist/commands/init.js
CHANGED
|
@@ -5,10 +5,6 @@ import { writeFile, ensureDirectory } from "../utils/file.js";
|
|
|
5
5
|
import { logSuccess, logError, logInfo, logWarning } from "../utils/console.js";
|
|
6
6
|
const CONFIG_TEMPLATE = JSON.stringify({
|
|
7
7
|
typeCheck: true,
|
|
8
|
-
optimizer: {
|
|
9
|
-
enabled: false,
|
|
10
|
-
runs: 200,
|
|
11
|
-
},
|
|
12
8
|
contractsDir: "contracts",
|
|
13
9
|
outputDir: "build",
|
|
14
10
|
}, null, 2);
|
|
@@ -28,31 +24,45 @@ const TSCONFIG_TEMPLATE = JSON.stringify({
|
|
|
28
24
|
outDir: "./dist",
|
|
29
25
|
rootDir: ".",
|
|
30
26
|
},
|
|
31
|
-
include: ["contracts/**/*", "test/**/*"],
|
|
27
|
+
include: ["contracts/**/*", "test/**/*", "types/**/*"],
|
|
32
28
|
exclude: ["node_modules", "build", "dist"],
|
|
33
29
|
}, null, 2);
|
|
34
|
-
const
|
|
30
|
+
const HARDHAT_CONFIG_TEMPLATE = `import { defineConfig } from "hardhat/config";
|
|
31
|
+
import hardhatEthers from "@nomicfoundation/hardhat-ethers";
|
|
32
|
+
import hardhatTypechain from "@nomicfoundation/hardhat-typechain";
|
|
33
|
+
import hardhatMocha from "@nomicfoundation/hardhat-mocha";
|
|
34
|
+
import hardhatEthersChaiMatchers from "@nomicfoundation/hardhat-ethers-chai-matchers";
|
|
35
|
+
import hardhatNetworkHelpers from "@nomicfoundation/hardhat-network-helpers";
|
|
35
36
|
|
|
36
37
|
export default defineConfig({
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
38
|
+
plugins: [
|
|
39
|
+
hardhatEthers,
|
|
40
|
+
hardhatTypechain,
|
|
41
|
+
hardhatMocha,
|
|
42
|
+
hardhatEthersChaiMatchers,
|
|
43
|
+
hardhatNetworkHelpers,
|
|
44
|
+
],
|
|
45
|
+
paths: {
|
|
46
|
+
sources: "./build/solidity",
|
|
47
|
+
tests: "./test",
|
|
48
|
+
},
|
|
49
|
+
solidity: {
|
|
50
|
+
version: "0.8.20",
|
|
51
|
+
settings: {
|
|
52
|
+
optimizer: { enabled: false, runs: 200 },
|
|
45
53
|
},
|
|
46
54
|
},
|
|
47
55
|
});
|
|
48
56
|
`;
|
|
49
|
-
const
|
|
50
|
-
|
|
51
|
-
export default defineConfig({});
|
|
52
|
-
`;
|
|
53
|
-
const EXAMPLE_CONTRACT = `import { address, msg } from "skittles";
|
|
57
|
+
const EXAMPLE_CONTRACT = `import { address, msg, SkittlesEvent, Indexed } from "skittles";
|
|
54
58
|
|
|
55
59
|
export class Token {
|
|
60
|
+
Transfer: SkittlesEvent<{
|
|
61
|
+
from: Indexed<address>;
|
|
62
|
+
to: Indexed<address>;
|
|
63
|
+
value: number;
|
|
64
|
+
}>;
|
|
65
|
+
|
|
56
66
|
public name: string = "MyToken";
|
|
57
67
|
public symbol: string = "MTK";
|
|
58
68
|
public totalSupply: number = 0;
|
|
@@ -74,53 +84,49 @@ export class Token {
|
|
|
74
84
|
}
|
|
75
85
|
this.balances[sender] -= amount;
|
|
76
86
|
this.balances[to] += amount;
|
|
87
|
+
this.Transfer.emit(sender, to, amount);
|
|
77
88
|
return true;
|
|
78
89
|
}
|
|
79
90
|
}
|
|
80
91
|
`;
|
|
81
|
-
const EXAMPLE_TEST = `import
|
|
82
|
-
import
|
|
92
|
+
const EXAMPLE_TEST = `import "@nomicfoundation/hardhat-ethers";
|
|
93
|
+
import "@nomicfoundation/hardhat-ethers-chai-matchers";
|
|
94
|
+
import "@nomicfoundation/hardhat-network-helpers";
|
|
95
|
+
import { expect } from "chai";
|
|
96
|
+
import hre from "hardhat";
|
|
83
97
|
|
|
98
|
+
const { ethers, networkHelpers } = await hre.network.connect();
|
|
84
99
|
const INITIAL_SUPPLY = 1_000_000n;
|
|
85
100
|
|
|
86
|
-
describe("Token", ()
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
it("has the correct name", async () => {
|
|
95
|
-
expect(await token.name()).toBe("MyToken");
|
|
96
|
-
});
|
|
97
|
-
|
|
98
|
-
it("has the correct symbol", async () => {
|
|
99
|
-
expect(await token.symbol()).toBe("MTK");
|
|
100
|
-
});
|
|
101
|
+
describe("Token", function () {
|
|
102
|
+
async function deployTokenFixture() {
|
|
103
|
+
const token = await ethers.deployContract("Token", [INITIAL_SUPPLY]);
|
|
104
|
+
const [owner, alice, bob] = await ethers.getSigners();
|
|
105
|
+
const addr = await token.getAddress();
|
|
106
|
+
const tokenAsAlice = await ethers.getContractAt("Token", addr, alice);
|
|
107
|
+
return { token, tokenAsAlice, owner, alice, bob };
|
|
108
|
+
}
|
|
101
109
|
|
|
102
|
-
it("
|
|
103
|
-
const
|
|
104
|
-
|
|
105
|
-
expect(balance).toBe(INITIAL_SUPPLY);
|
|
110
|
+
it("has the correct name", async function () {
|
|
111
|
+
const { token } = await networkHelpers.loadFixture(deployTokenFixture);
|
|
112
|
+
expect(await token.name()).to.equal("MyToken");
|
|
106
113
|
});
|
|
107
114
|
|
|
108
|
-
it("
|
|
109
|
-
const
|
|
110
|
-
const
|
|
115
|
+
it("emits Transfer event when transferring tokens", async function () {
|
|
116
|
+
const { token, owner, alice } = await networkHelpers.loadFixture(deployTokenFixture);
|
|
117
|
+
const amount = 100n;
|
|
111
118
|
|
|
112
|
-
await token.transfer(
|
|
113
|
-
|
|
119
|
+
await expect(token.transfer(alice.address, amount))
|
|
120
|
+
.to.emit(token, "Transfer")
|
|
121
|
+
.withArgs(owner.address, alice.address, amount);
|
|
114
122
|
});
|
|
115
123
|
|
|
116
|
-
it("reverts on insufficient balance", async ()
|
|
117
|
-
const
|
|
118
|
-
const bobAddr = await bob.getAddress();
|
|
119
|
-
const aliceToken = env.connectAs(token, alice);
|
|
124
|
+
it("reverts on insufficient balance", async function () {
|
|
125
|
+
const { token, tokenAsAlice, bob } = await networkHelpers.loadFixture(deployTokenFixture);
|
|
120
126
|
|
|
121
127
|
await expect(
|
|
122
|
-
|
|
123
|
-
).
|
|
128
|
+
tokenAsAlice.transfer(bob.address, 999_999_999n)
|
|
129
|
+
).to.be.revertedWith("Insufficient balance");
|
|
124
130
|
});
|
|
125
131
|
});
|
|
126
132
|
`;
|
|
@@ -145,20 +151,27 @@ function buildPackageJson(projectName) {
|
|
|
145
151
|
type: "module",
|
|
146
152
|
scripts: {
|
|
147
153
|
compile: "skittles compile",
|
|
154
|
+
build: "skittles compile && hardhat build",
|
|
148
155
|
clean: "skittles clean",
|
|
149
|
-
test: "skittles test",
|
|
150
|
-
"test:watch": "skittles test --watch",
|
|
156
|
+
test: "skittles compile && hardhat test",
|
|
151
157
|
},
|
|
152
158
|
dependencies: {
|
|
153
159
|
skittles: "latest",
|
|
154
160
|
},
|
|
155
161
|
devDependencies: {
|
|
162
|
+
"@nomicfoundation/hardhat-ethers": "^4.0.0",
|
|
163
|
+
"@nomicfoundation/hardhat-ethers-chai-matchers": "^3.0.0",
|
|
164
|
+
"@nomicfoundation/hardhat-mocha": "^3.0.0",
|
|
165
|
+
"@nomicfoundation/hardhat-network-helpers": "^3.0.0",
|
|
166
|
+
"@nomicfoundation/hardhat-typechain": "^3.0.0",
|
|
167
|
+
chai: "^5.1.2",
|
|
156
168
|
ethers: "^6.16.0",
|
|
157
169
|
hardhat: "^3.0.0",
|
|
158
|
-
|
|
170
|
+
mocha: "^10.0.0",
|
|
171
|
+
"@types/mocha": "^10.0.0",
|
|
159
172
|
},
|
|
160
173
|
engines: {
|
|
161
|
-
node: ">=
|
|
174
|
+
node: ">=22.0.0",
|
|
162
175
|
},
|
|
163
176
|
}, null, 2);
|
|
164
177
|
}
|
|
@@ -178,9 +191,16 @@ export async function initCommand(projectRoot) {
|
|
|
178
191
|
if (!pkg.devDependencies)
|
|
179
192
|
pkg.devDependencies = {};
|
|
180
193
|
const requiredDevDeps = {
|
|
194
|
+
"@nomicfoundation/hardhat-ethers": "^4.0.0",
|
|
195
|
+
"@nomicfoundation/hardhat-ethers-chai-matchers": "^3.0.0",
|
|
196
|
+
"@nomicfoundation/hardhat-mocha": "^3.0.0",
|
|
197
|
+
"@nomicfoundation/hardhat-network-helpers": "^3.0.0",
|
|
198
|
+
"@nomicfoundation/hardhat-typechain": "^3.0.0",
|
|
199
|
+
chai: "^5.1.2",
|
|
181
200
|
ethers: "^6.16.0",
|
|
182
201
|
hardhat: "^3.0.0",
|
|
183
|
-
|
|
202
|
+
mocha: "^10.0.0",
|
|
203
|
+
"@types/mocha": "^10.0.0",
|
|
184
204
|
};
|
|
185
205
|
for (const [dep, version] of Object.entries(requiredDevDeps)) {
|
|
186
206
|
if (!pkg.devDependencies[dep] && !pkg.dependencies?.[dep]) {
|
|
@@ -198,9 +218,9 @@ export async function initCommand(projectRoot) {
|
|
|
198
218
|
pkg.scripts = {};
|
|
199
219
|
const defaultScripts = {
|
|
200
220
|
compile: "skittles compile",
|
|
221
|
+
build: "skittles compile && hardhat build",
|
|
201
222
|
clean: "skittles clean",
|
|
202
|
-
test: "skittles test",
|
|
203
|
-
"test:watch": "skittles test --watch",
|
|
223
|
+
test: "skittles compile && hardhat test",
|
|
204
224
|
};
|
|
205
225
|
for (const [name, cmd] of Object.entries(defaultScripts)) {
|
|
206
226
|
if (!pkg.scripts[name]) {
|
|
@@ -267,15 +287,6 @@ export async function initCommand(projectRoot) {
|
|
|
267
287
|
writeFile(tsconfigPath, TSCONFIG_TEMPLATE + "\n");
|
|
268
288
|
logSuccess("Created tsconfig.json");
|
|
269
289
|
}
|
|
270
|
-
// Write vitest.config.ts
|
|
271
|
-
const vitestConfigPath = path.join(projectRoot, "vitest.config.ts");
|
|
272
|
-
if (fs.existsSync(vitestConfigPath)) {
|
|
273
|
-
logWarning("vitest.config.ts already exists, skipping");
|
|
274
|
-
}
|
|
275
|
-
else {
|
|
276
|
-
writeFile(vitestConfigPath, VITEST_CONFIG_TEMPLATE);
|
|
277
|
-
logSuccess("Created vitest.config.ts");
|
|
278
|
-
}
|
|
279
290
|
// Write hardhat.config.ts
|
|
280
291
|
const hardhatConfigPath = path.join(projectRoot, "hardhat.config.ts");
|
|
281
292
|
if (fs.existsSync(hardhatConfigPath)) {
|
|
@@ -287,7 +298,7 @@ export async function initCommand(projectRoot) {
|
|
|
287
298
|
}
|
|
288
299
|
// Update .gitignore
|
|
289
300
|
const gitignorePath = path.join(projectRoot, ".gitignore");
|
|
290
|
-
const gitignoreEntries = ["build/", "dist/", "node_modules/"];
|
|
301
|
+
const gitignoreEntries = ["build/", "dist/", "types/", "node_modules/"];
|
|
291
302
|
if (fs.existsSync(gitignorePath)) {
|
|
292
303
|
const existing = fs.readFileSync(gitignorePath, "utf-8");
|
|
293
304
|
const toAdd = gitignoreEntries.filter((entry) => !existing.includes(entry));
|
|
@@ -319,6 +330,6 @@ export async function initCommand(projectRoot) {
|
|
|
319
330
|
logInfo("");
|
|
320
331
|
logInfo("Next steps:");
|
|
321
332
|
logInfo(" Compile and test:");
|
|
322
|
-
logInfo("
|
|
333
|
+
logInfo(" npm run test");
|
|
323
334
|
}
|
|
324
335
|
//# sourceMappingURL=init.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEhF,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CACpC;IACE,SAAS,EAAE,IAAI;IACf,
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/test.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The `skittles test` command.
|
|
3
3
|
* 1. Compiles all contracts (same as `skittles compile`)
|
|
4
|
-
* 2. Runs
|
|
4
|
+
* 2. Runs hardhat test
|
|
5
5
|
*/
|
|
6
6
|
export declare function testCommand(projectRoot: string, watch: boolean): Promise<void>;
|
|
7
7
|
//# sourceMappingURL=test.d.ts.map
|
package/dist/commands/test.js
CHANGED
|
@@ -18,7 +18,7 @@ function resolveLocalBin(projectRoot, bin) {
|
|
|
18
18
|
/**
|
|
19
19
|
* The `skittles test` command.
|
|
20
20
|
* 1. Compiles all contracts (same as `skittles compile`)
|
|
21
|
-
* 2. Runs
|
|
21
|
+
* 2. Runs hardhat test
|
|
22
22
|
*/
|
|
23
23
|
export async function testCommand(projectRoot, watch) {
|
|
24
24
|
// Step 1: Compile contracts
|
|
@@ -39,11 +39,11 @@ export async function testCommand(projectRoot, watch) {
|
|
|
39
39
|
logError(`Compilation failed: ${message}`);
|
|
40
40
|
process.exit(1);
|
|
41
41
|
}
|
|
42
|
-
// Step 2: Run
|
|
43
|
-
logInfo(watch ? "Starting
|
|
44
|
-
const
|
|
45
|
-
const args = watch ? ["--watch"] : ["
|
|
46
|
-
const child = spawn(
|
|
42
|
+
// Step 2: Run hardhat test using the locally installed binary
|
|
43
|
+
logInfo(watch ? "Starting tests in watch mode..." : "Running tests...");
|
|
44
|
+
const hardhatBin = resolveLocalBin(projectRoot, "hardhat");
|
|
45
|
+
const args = watch ? ["test", "--watch"] : ["test"];
|
|
46
|
+
const child = spawn(hardhatBin, args, {
|
|
47
47
|
cwd: projectRoot,
|
|
48
48
|
stdio: "inherit",
|
|
49
49
|
shell: true,
|
|
@@ -52,8 +52,8 @@ export async function testCommand(projectRoot, watch) {
|
|
|
52
52
|
process.exit(code ?? 0);
|
|
53
53
|
});
|
|
54
54
|
child.on("error", (err) => {
|
|
55
|
-
logError(`Failed to start
|
|
56
|
-
logInfo("Make sure
|
|
55
|
+
logError(`Failed to start hardhat: ${err.message}`);
|
|
56
|
+
logInfo("Make sure hardhat is installed: npm install --save-dev hardhat");
|
|
57
57
|
process.exit(1);
|
|
58
58
|
});
|
|
59
59
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test.js","sourceRoot":"","sources":["../../src/commands/test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAEpE;;;GAGG;AACH,SAAS,eAAe,CAAC,WAAmB,EAAE,GAAW;IACvD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;IACtE,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,WAAmB,EACnB,KAAc;IAEd,4BAA4B;IAC5B,OAAO,CAAC,6CAA6C,CAAC,CAAC;IAEvD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,WAAW,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QAElD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAClC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,UAAU,CACR,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,oCAAoC,CAC/D,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GACX,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,wBAAwB,CAAC;QAChE,QAAQ,CAAC,uBAAuB,OAAO,EAAE,CAAC,CAAC;QAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,
|
|
1
|
+
{"version":3,"file":"test.js","sourceRoot":"","sources":["../../src/commands/test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAEpE;;;GAGG;AACH,SAAS,eAAe,CAAC,WAAmB,EAAE,GAAW;IACvD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;IACtE,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,WAAmB,EACnB,KAAc;IAEd,4BAA4B;IAC5B,OAAO,CAAC,6CAA6C,CAAC,CAAC;IAEvD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,WAAW,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QAElD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAClC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,UAAU,CACR,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,oCAAoC,CAC/D,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GACX,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,wBAAwB,CAAC;QAChE,QAAQ,CAAC,uBAAuB,OAAO,EAAE,CAAC,CAAC;QAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,8DAA8D;IAC9D,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC;IAExE,MAAM,UAAU,GAAG,eAAe,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IAC3D,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACpD,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,EAAE,IAAI,EAAE;QACpC,GAAG,EAAE,WAAW;QAChB,KAAK,EAAE,SAAS;QAChB,KAAK,EAAE,IAAI;KACZ,CAAC,CAAC;IAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;QACzB,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;QACxB,QAAQ,CAAC,4BAA4B,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QACpD,OAAO,CACL,gEAAgE,CACjE,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -9,8 +9,7 @@ export interface CompilationResult {
|
|
|
9
9
|
* 1. Find all TypeScript contract files
|
|
10
10
|
* 2. Parse each file into a SkittlesContract IR
|
|
11
11
|
* 3. Generate Solidity source from each contract
|
|
12
|
-
* 4.
|
|
13
|
-
* 5. Write build artifacts to output directory
|
|
12
|
+
* 4. Write Solidity to build/solidity (Hardhat compiles to ABI + bytecode)
|
|
14
13
|
*/
|
|
15
14
|
export declare function compile(projectRoot: string, config: Required<SkittlesConfig>): Promise<CompilationResult>;
|
|
16
15
|
//# sourceMappingURL=compiler.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../../src/compiler/compiler.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,cAAc,EAEd,aAAa,
|
|
1
|
+
{"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../../src/compiler/compiler.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,cAAc,EAEd,aAAa,EACd,MAAM,mBAAmB,CAAC;AAO3B,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,aAAa,EAAE,CAAC;IAC3B,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AA6CD;;;;;;GAMG;AACH,wBAAsB,OAAO,CAC3B,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,GAC/B,OAAO,CAAC,iBAAiB,CAAC,CAoJ5B"}
|
|
@@ -2,14 +2,13 @@ import crypto from "crypto";
|
|
|
2
2
|
import fs from "fs";
|
|
3
3
|
import path from "path";
|
|
4
4
|
import { findTypeScriptFiles, readFile, writeFile } from "../utils/file.js";
|
|
5
|
-
import { logInfo, logSuccess, logError
|
|
5
|
+
import { logInfo, logSuccess, logError } from "../utils/console.js";
|
|
6
6
|
import { parse, collectTypes, collectFunctions } from "./parser.js";
|
|
7
7
|
import { generateSolidity, generateSolidityFile } from "./codegen.js";
|
|
8
|
-
import { compileSolidityBatch } from "./solc.js";
|
|
9
8
|
// ============================================================
|
|
10
9
|
// Incremental compilation cache
|
|
11
10
|
// ============================================================
|
|
12
|
-
const CACHE_VERSION = "
|
|
11
|
+
const CACHE_VERSION = "2";
|
|
13
12
|
function hashString(input) {
|
|
14
13
|
return crypto.createHash("sha256").update(input).digest("hex").slice(0, 16);
|
|
15
14
|
}
|
|
@@ -37,8 +36,7 @@ function saveCache(outputDir, cache) {
|
|
|
37
36
|
* 1. Find all TypeScript contract files
|
|
38
37
|
* 2. Parse each file into a SkittlesContract IR
|
|
39
38
|
* 3. Generate Solidity source from each contract
|
|
40
|
-
* 4.
|
|
41
|
-
* 5. Write build artifacts to output directory
|
|
39
|
+
* 4. Write Solidity to build/solidity (Hardhat compiles to ABI + bytecode)
|
|
42
40
|
*/
|
|
43
41
|
export async function compile(projectRoot, config) {
|
|
44
42
|
const contractsDir = path.join(projectRoot, config.contractsDir);
|
|
@@ -106,17 +104,14 @@ export async function compile(projectRoot, config) {
|
|
|
106
104
|
const cached = cache.files[relativePath];
|
|
107
105
|
if (cached && cached.fileHash === fileHash && cached.sharedHash === sharedHash) {
|
|
108
106
|
logInfo(`${relativePath} unchanged, using cache`);
|
|
107
|
+
const cachedBaseName = path.basename(filePath, path.extname(filePath));
|
|
108
|
+
writeFile(path.join(outputDir, "solidity", `${cachedBaseName}.sol`), cached.contracts[0].solidity);
|
|
109
109
|
for (const c of cached.contracts) {
|
|
110
110
|
const artifact = {
|
|
111
111
|
contractName: c.name,
|
|
112
|
-
abi: c.abi,
|
|
113
|
-
bytecode: c.bytecode,
|
|
114
112
|
solidity: c.solidity,
|
|
115
113
|
};
|
|
116
114
|
artifacts.push(artifact);
|
|
117
|
-
writeFile(path.join(outputDir, "abi", `${c.name}.json`), JSON.stringify(c.abi, null, 2));
|
|
118
|
-
writeFile(path.join(outputDir, "bytecode", `${c.name}.bin`), c.bytecode);
|
|
119
|
-
writeFile(path.join(outputDir, "solidity", `${c.name}.sol`), c.solidity);
|
|
120
115
|
logSuccess(`${c.name} compiled successfully (cached)`);
|
|
121
116
|
}
|
|
122
117
|
newCache.files[relativePath] = cached;
|
|
@@ -134,42 +129,16 @@ export async function compile(projectRoot, config) {
|
|
|
134
129
|
if (!solidity)
|
|
135
130
|
continue;
|
|
136
131
|
const cacheEntry = { fileHash, sharedHash, contracts: [] };
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
const
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
else {
|
|
148
|
-
for (const contract of contracts) {
|
|
149
|
-
const result = compiled.contracts[contract.name];
|
|
150
|
-
if (!result) {
|
|
151
|
-
errors.push(`${relativePath}:${contract.name}: No output found for contract ${contract.name}`);
|
|
152
|
-
continue;
|
|
153
|
-
}
|
|
154
|
-
const artifact = {
|
|
155
|
-
contractName: contract.name,
|
|
156
|
-
abi: result.abi,
|
|
157
|
-
bytecode: result.bytecode,
|
|
158
|
-
solidity,
|
|
159
|
-
};
|
|
160
|
-
artifacts.push(artifact);
|
|
161
|
-
cacheEntry.contracts.push({
|
|
162
|
-
name: contract.name,
|
|
163
|
-
abi: result.abi,
|
|
164
|
-
bytecode: result.bytecode,
|
|
165
|
-
solidity,
|
|
166
|
-
});
|
|
167
|
-
// Step 5: Write artifacts
|
|
168
|
-
writeFile(path.join(outputDir, "abi", `${contract.name}.json`), JSON.stringify(result.abi, null, 2));
|
|
169
|
-
writeFile(path.join(outputDir, "bytecode", `${contract.name}.bin`), result.bytecode);
|
|
170
|
-
writeFile(path.join(outputDir, "solidity", `${contract.name}.sol`), solidity);
|
|
171
|
-
logSuccess(`${contract.name} compiled successfully`);
|
|
172
|
-
}
|
|
132
|
+
const sourceBaseName = path.basename(filePath, path.extname(filePath));
|
|
133
|
+
writeFile(path.join(outputDir, "solidity", `${sourceBaseName}.sol`), solidity);
|
|
134
|
+
for (const contract of contracts) {
|
|
135
|
+
const artifact = {
|
|
136
|
+
contractName: contract.name,
|
|
137
|
+
solidity,
|
|
138
|
+
};
|
|
139
|
+
artifacts.push(artifact);
|
|
140
|
+
cacheEntry.contracts.push({ name: contract.name, solidity });
|
|
141
|
+
logSuccess(`${contract.name} compiled successfully`);
|
|
173
142
|
}
|
|
174
143
|
newCache.files[relativePath] = cacheEntry;
|
|
175
144
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compiler.js","sourceRoot":"","sources":["../../src/compiler/compiler.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"compiler.js","sourceRoot":"","sources":["../../src/compiler/compiler.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -4,13 +4,12 @@ import { hideBin } from "yargs/helpers";
|
|
|
4
4
|
import { compileCommand } from "./commands/compile.js";
|
|
5
5
|
import { cleanCommand } from "./commands/clean.js";
|
|
6
6
|
import { initCommand } from "./commands/init.js";
|
|
7
|
-
import { testCommand } from "./commands/test.js";
|
|
8
7
|
import { printLogo } from "./utils/console.js";
|
|
9
8
|
printLogo();
|
|
10
9
|
yargs(hideBin(process.argv))
|
|
11
10
|
.scriptName("skittles")
|
|
12
11
|
.usage("$0 <command> [options]")
|
|
13
|
-
.command("compile", "Compile TypeScript contracts to
|
|
12
|
+
.command("compile", "Compile TypeScript contracts to Solidity", () => { }, async () => {
|
|
14
13
|
await compileCommand(process.cwd());
|
|
15
14
|
})
|
|
16
15
|
.command("clean", "Remove build artifacts", () => { }, async () => {
|
|
@@ -18,16 +17,6 @@ yargs(hideBin(process.argv))
|
|
|
18
17
|
})
|
|
19
18
|
.command("init", "Initialize a new Skittles project", () => { }, async () => {
|
|
20
19
|
await initCommand(process.cwd());
|
|
21
|
-
})
|
|
22
|
-
.command("test", "Compile contracts and run tests with vitest", (yargs) => {
|
|
23
|
-
return yargs.option("watch", {
|
|
24
|
-
alias: "w",
|
|
25
|
-
type: "boolean",
|
|
26
|
-
description: "Run vitest in watch mode",
|
|
27
|
-
default: false,
|
|
28
|
-
});
|
|
29
|
-
}, async (argv) => {
|
|
30
|
-
await testCommand(process.cwd(), argv.watch);
|
|
31
20
|
})
|
|
32
21
|
.demandCommand(1, "Please specify a command")
|
|
33
22
|
.strict()
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,SAAS,EAAE,CAAC;AAEZ,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;KACzB,UAAU,CAAC,UAAU,CAAC;KACtB,KAAK,CAAC,wBAAwB,CAAC;KAC/B,OAAO,CACN,SAAS,EACT,0CAA0C,EAC1C,GAAG,EAAE,GAAE,CAAC,EACR,KAAK,IAAI,EAAE;IACT,MAAM,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;AACtC,CAAC,CACF;KACA,OAAO,CACN,OAAO,EACP,wBAAwB,EACxB,GAAG,EAAE,GAAE,CAAC,EACR,KAAK,IAAI,EAAE;IACT,MAAM,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;AACpC,CAAC,CACF;KACA,OAAO,CACN,MAAM,EACN,mCAAmC,EACnC,GAAG,EAAE,GAAE,CAAC,EACR,KAAK,IAAI,EAAE;IACT,MAAM,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;AACnC,CAAC,CACF;KACA,aAAa,CAAC,CAAC,EAAE,0BAA0B,CAAC;KAC5C,MAAM,EAAE;KACR,IAAI,EAAE;KACN,OAAO,EAAE;KACT,UAAU,EAAE,CAAC"}
|
package/dist/testing.d.ts
CHANGED
|
@@ -8,39 +8,39 @@
|
|
|
8
8
|
* Most users should import from "skittles/testing" which provides the
|
|
9
9
|
* higher level `setup()` function with automatic lifecycle management.
|
|
10
10
|
*
|
|
11
|
-
* Requirements
|
|
11
|
+
* Requirements (devDependencies in your project):
|
|
12
12
|
* - ethers ^6.0.0
|
|
13
|
-
* - hardhat ^
|
|
13
|
+
* - hardhat ^2.22.0
|
|
14
|
+
* - @nomicfoundation/hardhat-toolbox ^5.0.0
|
|
14
15
|
*
|
|
15
|
-
*
|
|
16
|
-
* - vitest ^2.0.0 (or another compatible test runner)
|
|
16
|
+
* Tests are run via `hardhat test` which uses Mocha under the hood.
|
|
17
17
|
*/
|
|
18
18
|
import { ethers } from "ethers";
|
|
19
19
|
/**
|
|
20
|
-
* A test environment backed by an in memory Hardhat
|
|
20
|
+
* A test environment backed by an in memory Hardhat Network.
|
|
21
21
|
* Create one per test suite with `createTestEnv()`.
|
|
22
22
|
*/
|
|
23
23
|
export interface TestEnv {
|
|
24
|
-
/**
|
|
25
|
-
provider: ethers.
|
|
24
|
+
/** ethers provider connected to Hardhat Network. */
|
|
25
|
+
provider: ethers.BrowserProvider;
|
|
26
26
|
/** Ten pre-funded signer accounts. */
|
|
27
27
|
accounts: ethers.Signer[];
|
|
28
|
-
/** Shut down the
|
|
28
|
+
/** Shut down the environment. No-op for Hardhat 2 (network lifecycle is managed by Hardhat). */
|
|
29
29
|
close: () => Promise<void>;
|
|
30
30
|
}
|
|
31
31
|
/**
|
|
32
|
-
* Create a
|
|
33
|
-
*
|
|
34
|
-
*
|
|
32
|
+
* Create a test environment backed by Hardhat Network.
|
|
33
|
+
* Uses the Hardhat Runtime Environment's in memory EVM and wraps it
|
|
34
|
+
* with an ethers BrowserProvider.
|
|
35
|
+
*
|
|
36
|
+
* Each test suite should call this once in a `before` hook.
|
|
35
37
|
*
|
|
36
38
|
* ```ts
|
|
37
39
|
* let env: TestEnv;
|
|
38
|
-
*
|
|
39
|
-
* afterAll(async () => { await env.close(); });
|
|
40
|
+
* before(async function () { env = await createTestEnv(); });
|
|
40
41
|
* ```
|
|
41
42
|
*
|
|
42
|
-
* @param dynamicImport Optional custom import function.
|
|
43
|
-
* passes native import() here so it works inside vitest's runtime.
|
|
43
|
+
* @param dynamicImport Optional custom import function.
|
|
44
44
|
*/
|
|
45
45
|
export declare function createTestEnv(dynamicImport?: (specifier: string) => Promise<any>): Promise<TestEnv>;
|
|
46
46
|
/**
|
|
@@ -67,7 +67,7 @@ export interface DeployOptions {
|
|
|
67
67
|
*
|
|
68
68
|
* ```ts
|
|
69
69
|
* const token = await deploy(env, "Token", [1_000_000n]);
|
|
70
|
-
* expect(await token.name()).
|
|
70
|
+
* expect(await token.name()).to.equal("MyToken");
|
|
71
71
|
* ```
|
|
72
72
|
*/
|
|
73
73
|
export declare function deploy(env: TestEnv, contractName: string, constructorArgs?: unknown[], options?: DeployOptions): Promise<ethers.Contract>;
|
package/dist/testing.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAMhC;;;GAGG;AACH,MAAM,WAAW,OAAO;IACtB,
|
|
1
|
+
{"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAMhC;;;GAGG;AACH,MAAM,WAAW,OAAO;IACtB,oDAAoD;IACpD,QAAQ,EAAE,MAAM,CAAC,eAAe,CAAC;IACjC,sCAAsC;IACtC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;IAC1B,gGAAgG;IAChG,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B;AAaD;;;;;;;;;;;;;GAaG;AACH,wBAAsB,aAAa,CACjC,aAAa,GAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,CAAgB,GAChE,OAAO,CAAC,OAAO,CAAC,CAelB;AAMD;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,YAAY,EAAE,MAAM,EACpB,QAAQ,CAAC,EAAE,MAAM,GAChB;IAAE,GAAG,EAAE,MAAM,CAAC,YAAY,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAqBhD;AAMD,MAAM,WAAW,aAAa;IAC5B,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uDAAuD;IACvD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0DAA0D;IAC1D,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,MAAM,CAC1B,GAAG,EAAE,OAAO,EACZ,YAAY,EAAE,MAAM,EACpB,eAAe,GAAE,OAAO,EAAO,EAC/B,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAW1B;AAMD;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CACvB,QAAQ,EAAE,MAAM,CAAC,QAAQ,EACzB,MAAM,EAAE,MAAM,CAAC,MAAM,GACpB,MAAM,CAAC,QAAQ,CAEjB;AAED;;;;;;GAMG;AACH,wBAAsB,UAAU,CAC9B,GAAG,EAAE,OAAO,EACZ,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC,CAEjB"}
|
package/dist/testing.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
/**
|
|
2
3
|
* skittles/testing (core)
|
|
3
4
|
*
|
|
@@ -8,13 +9,16 @@
|
|
|
8
9
|
* Most users should import from "skittles/testing" which provides the
|
|
9
10
|
* higher level `setup()` function with automatic lifecycle management.
|
|
10
11
|
*
|
|
11
|
-
* Requirements
|
|
12
|
+
* Requirements (devDependencies in your project):
|
|
12
13
|
* - ethers ^6.0.0
|
|
13
|
-
* - hardhat ^
|
|
14
|
+
* - hardhat ^2.22.0
|
|
15
|
+
* - @nomicfoundation/hardhat-toolbox ^5.0.0
|
|
14
16
|
*
|
|
15
|
-
*
|
|
16
|
-
* - vitest ^2.0.0 (or another compatible test runner)
|
|
17
|
+
* Tests are run via `hardhat test` which uses Mocha under the hood.
|
|
17
18
|
*/
|
|
19
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
20
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
21
|
+
};
|
|
18
22
|
var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {
|
|
19
23
|
if (typeof path === "string" && /^\.\.?\//.test(path)) {
|
|
20
24
|
return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
|
|
@@ -23,36 +27,41 @@ var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExte
|
|
|
23
27
|
}
|
|
24
28
|
return path;
|
|
25
29
|
};
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
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");
|
|
29
39
|
// ============================================================
|
|
30
40
|
// Internal helpers
|
|
31
41
|
// ============================================================
|
|
32
|
-
/** Dynamic import wrapper for loading ESM packages like Hardhat
|
|
42
|
+
/** Dynamic import wrapper for loading ESM packages like Hardhat. */
|
|
33
43
|
const importModule = (specifier) => import(__rewriteRelativeImportExtension(specifier));
|
|
34
44
|
// ============================================================
|
|
35
45
|
// Environment setup
|
|
36
46
|
// ============================================================
|
|
37
47
|
/**
|
|
38
|
-
* Create a
|
|
39
|
-
*
|
|
40
|
-
*
|
|
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.
|
|
41
53
|
*
|
|
42
54
|
* ```ts
|
|
43
55
|
* let env: TestEnv;
|
|
44
|
-
*
|
|
45
|
-
* afterAll(async () => { await env.close(); });
|
|
56
|
+
* before(async function () { env = await createTestEnv(); });
|
|
46
57
|
* ```
|
|
47
58
|
*
|
|
48
|
-
* @param dynamicImport Optional custom import function.
|
|
49
|
-
* passes native import() here so it works inside vitest's runtime.
|
|
59
|
+
* @param dynamicImport Optional custom import function.
|
|
50
60
|
*/
|
|
51
|
-
|
|
52
|
-
const
|
|
53
|
-
const
|
|
54
|
-
const
|
|
55
|
-
const provider = new ethers.JsonRpcProvider(`http://${address}:${port}`);
|
|
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);
|
|
56
65
|
const accounts = [];
|
|
57
66
|
for (let i = 0; i < 10; i++) {
|
|
58
67
|
accounts.push(await provider.getSigner(i));
|
|
@@ -60,7 +69,7 @@ export async function createTestEnv(dynamicImport = importModule) {
|
|
|
60
69
|
return {
|
|
61
70
|
provider,
|
|
62
71
|
accounts,
|
|
63
|
-
close: () =>
|
|
72
|
+
close: async () => { },
|
|
64
73
|
};
|
|
65
74
|
}
|
|
66
75
|
// ============================================================
|
|
@@ -70,18 +79,18 @@ export async function createTestEnv(dynamicImport = importModule) {
|
|
|
70
79
|
* Load a compiled contract artifact (ABI + bytecode) from the build directory.
|
|
71
80
|
* Defaults to `build/` relative to the current working directory.
|
|
72
81
|
*/
|
|
73
|
-
|
|
74
|
-
const dir = buildDir ??
|
|
75
|
-
const abiPath =
|
|
76
|
-
const bytecodePath =
|
|
77
|
-
if (!
|
|
78
|
-
throw new Error(`ABI not found for "${contractName}". Did you run "skittles
|
|
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}`);
|
|
79
88
|
}
|
|
80
|
-
if (!
|
|
81
|
-
throw new Error(`Bytecode not found for "${contractName}". Did you run "skittles
|
|
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}`);
|
|
82
91
|
}
|
|
83
|
-
const abi = JSON.parse(
|
|
84
|
-
const bytecode =
|
|
92
|
+
const abi = JSON.parse(fs_1.default.readFileSync(abiPath, "utf-8"));
|
|
93
|
+
const bytecode = fs_1.default.readFileSync(bytecodePath, "utf-8");
|
|
85
94
|
return { abi, bytecode: "0x" + bytecode };
|
|
86
95
|
}
|
|
87
96
|
/**
|
|
@@ -92,18 +101,18 @@ export function loadArtifact(contractName, buildDir) {
|
|
|
92
101
|
*
|
|
93
102
|
* ```ts
|
|
94
103
|
* const token = await deploy(env, "Token", [1_000_000n]);
|
|
95
|
-
* expect(await token.name()).
|
|
104
|
+
* expect(await token.name()).to.equal("MyToken");
|
|
96
105
|
* ```
|
|
97
106
|
*/
|
|
98
|
-
|
|
107
|
+
async function deploy(env, contractName, constructorArgs = [], options = {}) {
|
|
99
108
|
const { abi, bytecode } = loadArtifact(contractName, options.buildDir);
|
|
100
109
|
const deployer = env.accounts[options.from ?? 0];
|
|
101
|
-
const factory = new ethers.ContractFactory(abi, bytecode, deployer);
|
|
110
|
+
const factory = new ethers_1.ethers.ContractFactory(abi, bytecode, deployer);
|
|
102
111
|
const overrides = options.value ? { value: options.value } : {};
|
|
103
112
|
const deployed = await factory.deploy(...constructorArgs, overrides);
|
|
104
113
|
await deployed.waitForDeployment();
|
|
105
114
|
const address = await deployed.getAddress();
|
|
106
|
-
return new ethers.Contract(address, abi, deployer);
|
|
115
|
+
return new ethers_1.ethers.Contract(address, abi, deployer);
|
|
107
116
|
}
|
|
108
117
|
// ============================================================
|
|
109
118
|
// Utilities
|
|
@@ -118,7 +127,7 @@ export async function deploy(env, contractName, constructorArgs = [], options =
|
|
|
118
127
|
* await aliceToken.transfer(bobAddr, 100n);
|
|
119
128
|
* ```
|
|
120
129
|
*/
|
|
121
|
-
|
|
130
|
+
function connectAs(contract, signer) {
|
|
122
131
|
return contract.connect(signer);
|
|
123
132
|
}
|
|
124
133
|
/**
|
|
@@ -128,7 +137,7 @@ export function connectAs(contract, signer) {
|
|
|
128
137
|
* const balance = await getBalance(env, aliceAddr);
|
|
129
138
|
* ```
|
|
130
139
|
*/
|
|
131
|
-
|
|
140
|
+
async function getBalance(env, address) {
|
|
132
141
|
return env.provider.getBalance(address);
|
|
133
142
|
}
|
|
134
143
|
//# sourceMappingURL=testing.js.map
|
package/dist/testing.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testing.js","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG
|
|
1
|
+
{"version":3,"file":"testing.js","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"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"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "skittles",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.1",
|
|
4
4
|
"description": "TypeScript to Solidity to EVM bytecode compiler",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/exports.js",
|
|
@@ -10,23 +10,10 @@
|
|
|
10
10
|
".": {
|
|
11
11
|
"types": "./dist/exports.d.ts",
|
|
12
12
|
"default": "./dist/exports.js"
|
|
13
|
-
},
|
|
14
|
-
"./testing": {
|
|
15
|
-
"types": "./testing.d.ts",
|
|
16
|
-
"import": "./testing.mjs"
|
|
17
|
-
}
|
|
18
|
-
},
|
|
19
|
-
"typesVersions": {
|
|
20
|
-
"*": {
|
|
21
|
-
"testing": [
|
|
22
|
-
"./testing.d.ts"
|
|
23
|
-
]
|
|
24
13
|
}
|
|
25
14
|
},
|
|
26
15
|
"files": [
|
|
27
|
-
"dist"
|
|
28
|
-
"testing.mjs",
|
|
29
|
-
"testing.d.ts"
|
|
16
|
+
"dist"
|
|
30
17
|
],
|
|
31
18
|
"scripts": {
|
|
32
19
|
"build": "tsc",
|
|
@@ -61,8 +48,7 @@
|
|
|
61
48
|
},
|
|
62
49
|
"peerDependencies": {
|
|
63
50
|
"ethers": "^6.0.0",
|
|
64
|
-
"hardhat": "^3.0.0"
|
|
65
|
-
"vitest": "^2.0.0"
|
|
51
|
+
"hardhat": "^3.0.0"
|
|
66
52
|
},
|
|
67
53
|
"peerDependenciesMeta": {
|
|
68
54
|
"ethers": {
|
|
@@ -70,9 +56,6 @@
|
|
|
70
56
|
},
|
|
71
57
|
"hardhat": {
|
|
72
58
|
"optional": true
|
|
73
|
-
},
|
|
74
|
-
"vitest": {
|
|
75
|
-
"optional": true
|
|
76
59
|
}
|
|
77
60
|
},
|
|
78
61
|
"devDependencies": {
|
package/testing.d.ts
DELETED
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
import { ethers } from "ethers";
|
|
2
|
-
|
|
3
|
-
/** A test environment backed by an in memory Hardhat EDR node. */
|
|
4
|
-
export interface TestEnv {
|
|
5
|
-
/** JSON RPC provider connected to the in memory EVM. */
|
|
6
|
-
provider: ethers.JsonRpcProvider;
|
|
7
|
-
/** Ten pre funded signer accounts. */
|
|
8
|
-
accounts: ethers.Signer[];
|
|
9
|
-
/** Shut down the in memory EVM. */
|
|
10
|
-
close: () => Promise<void>;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
export interface DeployOptions {
|
|
14
|
-
/** Override the build directory. Defaults to `build/` in the project root. */
|
|
15
|
-
buildDir?: string;
|
|
16
|
-
/** Send ETH with deployment (payable constructors). */
|
|
17
|
-
value?: bigint;
|
|
18
|
-
/** Index of the account to deploy from. Defaults to 0. */
|
|
19
|
-
from?: number;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
/** The object returned by `setup()`. */
|
|
23
|
-
export interface SkittlesTestContext {
|
|
24
|
-
/** Ten pre funded signer accounts. Available after beforeAll runs. */
|
|
25
|
-
readonly accounts: ethers.Signer[];
|
|
26
|
-
/** JSON RPC provider connected to the in memory EVM. */
|
|
27
|
-
readonly provider: ethers.JsonRpcProvider;
|
|
28
|
-
/** Deploy a compiled contract to the test EVM. */
|
|
29
|
-
deploy(
|
|
30
|
-
contractName: string,
|
|
31
|
-
constructorArgs?: unknown[],
|
|
32
|
-
options?: DeployOptions
|
|
33
|
-
): Promise<ethers.Contract>;
|
|
34
|
-
/** Connect to a deployed contract from a different signer. */
|
|
35
|
-
connectAs(
|
|
36
|
-
contract: ethers.Contract,
|
|
37
|
-
signer: ethers.Signer
|
|
38
|
-
): ethers.Contract;
|
|
39
|
-
/** Get the ETH balance of an address. */
|
|
40
|
-
getBalance(address: string): Promise<bigint>;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* Set up a complete test environment with automatic lifecycle management.
|
|
45
|
-
* Registers Vitest `beforeAll`/`afterAll` hooks to start and stop an in
|
|
46
|
-
* memory EVM automatically.
|
|
47
|
-
*
|
|
48
|
-
* Call this inside a `describe` block or at the top level of a test file.
|
|
49
|
-
*/
|
|
50
|
-
export function setup(): SkittlesTestContext;
|
|
51
|
-
|
|
52
|
-
/** Create a fresh in memory EVM backed by Hardhat's EDR runtime. */
|
|
53
|
-
export function createTestEnv(): Promise<TestEnv>;
|
|
54
|
-
|
|
55
|
-
/** Deploy a compiled Skittles contract to the test EVM. */
|
|
56
|
-
export function deploy(
|
|
57
|
-
env: TestEnv,
|
|
58
|
-
contractName: string,
|
|
59
|
-
constructorArgs?: unknown[],
|
|
60
|
-
options?: DeployOptions
|
|
61
|
-
): Promise<ethers.Contract>;
|
|
62
|
-
|
|
63
|
-
/** Connect to a deployed contract from a different signer. */
|
|
64
|
-
export function connectAs(
|
|
65
|
-
contract: ethers.Contract,
|
|
66
|
-
signer: ethers.Signer
|
|
67
|
-
): ethers.Contract;
|
|
68
|
-
|
|
69
|
-
/** Get the ETH balance of an address. */
|
|
70
|
-
export function getBalance(env: TestEnv, address: string): Promise<bigint>;
|
|
71
|
-
|
|
72
|
-
/** Load a compiled contract's ABI and bytecode from disk. */
|
|
73
|
-
export function loadArtifact(
|
|
74
|
-
contractName: string,
|
|
75
|
-
buildDir?: string
|
|
76
|
-
): { abi: ethers.InterfaceAbi; bytecode: string };
|
package/testing.mjs
DELETED
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
// ESM entry point for skittles/testing.
|
|
2
|
-
// Vitest resolves to this file via the package.json "import" condition.
|
|
3
|
-
|
|
4
|
-
import { beforeAll, afterAll } from "vitest";
|
|
5
|
-
import {
|
|
6
|
-
createTestEnv as coreCreateTestEnv,
|
|
7
|
-
deploy as coreDeploy,
|
|
8
|
-
connectAs,
|
|
9
|
-
getBalance as coreGetBalance,
|
|
10
|
-
loadArtifact,
|
|
11
|
-
} from "./dist/testing.js";
|
|
12
|
-
|
|
13
|
-
function createTestEnv() {
|
|
14
|
-
return coreCreateTestEnv();
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* Set up a complete test environment with automatic lifecycle management.
|
|
19
|
-
* Registers beforeAll and afterAll hooks so you never have to create or
|
|
20
|
-
* tear down the EVM yourself.
|
|
21
|
-
*
|
|
22
|
-
* Call this inside a describe block (or at the top level of a test file).
|
|
23
|
-
* The returned object's properties (accounts, provider) are populated once
|
|
24
|
-
* the internal beforeAll has run, so access them inside beforeAll, it,
|
|
25
|
-
* beforeEach, etc.
|
|
26
|
-
*
|
|
27
|
-
* @example
|
|
28
|
-
* import { describe, it, expect, beforeAll } from "vitest";
|
|
29
|
-
* import { setup } from "skittles/testing";
|
|
30
|
-
*
|
|
31
|
-
* describe("Token", () => {
|
|
32
|
-
* const env = setup();
|
|
33
|
-
* let token;
|
|
34
|
-
*
|
|
35
|
-
* beforeAll(async () => {
|
|
36
|
-
* token = await env.deploy("Token", [1_000_000n]);
|
|
37
|
-
* });
|
|
38
|
-
*
|
|
39
|
-
* it("has the correct name", async () => {
|
|
40
|
-
* expect(await token.name()).toBe("MyToken");
|
|
41
|
-
* });
|
|
42
|
-
* });
|
|
43
|
-
*/
|
|
44
|
-
export function setup() {
|
|
45
|
-
let env;
|
|
46
|
-
|
|
47
|
-
function requireEnv() {
|
|
48
|
-
if (!env) {
|
|
49
|
-
throw new Error(
|
|
50
|
-
"skittles/testing: setup() environment is not ready yet. " +
|
|
51
|
-
"Make sure setup() is called at the top of your describe block " +
|
|
52
|
-
"and only access its properties inside beforeAll, beforeEach, it, or afterAll hooks."
|
|
53
|
-
);
|
|
54
|
-
}
|
|
55
|
-
return env;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
beforeAll(async () => {
|
|
59
|
-
env = await createTestEnv();
|
|
60
|
-
}, 30_000);
|
|
61
|
-
|
|
62
|
-
afterAll(async () => {
|
|
63
|
-
await env?.close();
|
|
64
|
-
});
|
|
65
|
-
|
|
66
|
-
return {
|
|
67
|
-
get accounts() {
|
|
68
|
-
return requireEnv().accounts;
|
|
69
|
-
},
|
|
70
|
-
get provider() {
|
|
71
|
-
return requireEnv().provider;
|
|
72
|
-
},
|
|
73
|
-
deploy(contractName, constructorArgs = [], options = {}) {
|
|
74
|
-
return coreDeploy(requireEnv(), contractName, constructorArgs, options);
|
|
75
|
-
},
|
|
76
|
-
connectAs,
|
|
77
|
-
getBalance(address) {
|
|
78
|
-
return coreGetBalance(requireEnv(), address);
|
|
79
|
-
},
|
|
80
|
-
};
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
export { createTestEnv, coreDeploy as deploy, connectAs, coreGetBalance as getBalance, loadArtifact };
|