skittles 1.2.5 → 1.2.7

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 CHANGED
@@ -4,9 +4,9 @@
4
4
 
5
5
  # Skittles
6
6
 
7
- Write, Test and Deploy EVM Smart Contracts with TypeScript.
7
+ Write smart contracts in TypeScript.
8
8
 
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.
9
+ Skittles lets you write blockchain smart contracts using TypeScript the language you already know. No new syntax to learn. Full IDE support with autocomplete, type checking, and go-to-definition. Under the hood, Skittles compiles to Solidity for compatibility with every EVM tool and blockchain.
10
10
 
11
11
  Website: [skittles.dev](https://skittles.dev/)
12
12
 
@@ -55,7 +55,7 @@ export class Token {
55
55
  }
56
56
  ```
57
57
 
58
- This compiles to a Solidity contract with events, mappings, a constructor, and a transfer function.
58
+ This creates a simple token contract. Users can transfer tokens to each other, with balance checks and a Transfer event that logs activity on the blockchain.
59
59
 
60
60
  ## Contributing
61
61
 
@@ -1 +1 @@
1
- {"version":3,"file":"clean.d.ts","sourceRoot":"","sources":["../../src/commands/clean.ts"],"names":[],"mappings":"AAKA,wBAAsB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAMrE"}
1
+ {"version":3,"file":"clean.d.ts","sourceRoot":"","sources":["../../src/commands/clean.ts"],"names":[],"mappings":"AAKA,wBAAsB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CASrE"}
@@ -5,8 +5,11 @@ import { loadConfig } from "../config/config.js";
5
5
  export async function cleanCommand(projectRoot) {
6
6
  const config = await loadConfig(projectRoot);
7
7
  const outputDir = path.join(projectRoot, config.outputDir);
8
- logInfo(`Removing build directory: ${config.outputDir}/`);
8
+ const cacheDir = path.join(projectRoot, config.cacheDir);
9
+ logInfo(`Removing output directory: ${config.outputDir}/`);
9
10
  removeDirectory(outputDir);
11
+ logInfo(`Removing cache directory: ${config.cacheDir}/`);
12
+ removeDirectory(cacheDir);
10
13
  logSuccess("Build artifacts cleaned");
11
14
  }
12
15
  //# sourceMappingURL=clean.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"clean.js","sourceRoot":"","sources":["../../src/commands/clean.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,WAAmB;IACpD,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,WAAW,CAAC,CAAC;IAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;IAC3D,OAAO,CAAC,6BAA6B,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC;IAC1D,eAAe,CAAC,SAAS,CAAC,CAAC;IAC3B,UAAU,CAAC,yBAAyB,CAAC,CAAC;AACxC,CAAC"}
1
+ {"version":3,"file":"clean.js","sourceRoot":"","sources":["../../src/commands/clean.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,WAAmB;IACpD,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,WAAW,CAAC,CAAC;IAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;IAC3D,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IACzD,OAAO,CAAC,8BAA8B,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC;IAC3D,eAAe,CAAC,SAAS,CAAC,CAAC;IAC3B,OAAO,CAAC,6BAA6B,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC;IACzD,eAAe,CAAC,QAAQ,CAAC,CAAC;IAC1B,UAAU,CAAC,yBAAyB,CAAC,CAAC;AACxC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAmMA,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAsB,WAAW,CAC/B,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,IAAI,CAAC,CAgLf"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAmMA,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAsB,WAAW,CAC/B,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,IAAI,CAAC,CA+Kf"}
@@ -6,7 +6,7 @@ import { logSuccess, logError, logInfo, logWarning } from "../utils/console.js";
6
6
  const CONFIG_TEMPLATE = JSON.stringify({
7
7
  typeCheck: true,
8
8
  contractsDir: "contracts",
9
- outputDir: "build",
9
+ outputDir: "artifacts",
10
10
  }, null, 2);
11
11
  const TSCONFIG_TEMPLATE = JSON.stringify({
12
12
  compilerOptions: {
@@ -25,7 +25,7 @@ const TSCONFIG_TEMPLATE = JSON.stringify({
25
25
  rootDir: ".",
26
26
  },
27
27
  include: ["contracts/**/*", "test/**/*", "types/**/*"],
28
- exclude: ["node_modules", "build", "dist"],
28
+ exclude: ["node_modules", "artifacts", "cache", "dist"],
29
29
  }, null, 2);
30
30
  const HARDHAT_CONFIG_TEMPLATE = `import { defineConfig } from "hardhat/config";
31
31
  import hardhatEthers from "@nomicfoundation/hardhat-ethers";
@@ -43,7 +43,7 @@ export default defineConfig({
43
43
  hardhatNetworkHelpers,
44
44
  ],
45
45
  paths: {
46
- sources: "./build/solidity",
46
+ sources: "./artifacts/solidity",
47
47
  tests: "./test",
48
48
  },
49
49
  solidity: {
@@ -300,7 +300,6 @@ export async function initCommand(projectRoot, options = {}) {
300
300
  // Update .gitignore
301
301
  const gitignorePath = path.join(projectRoot, ".gitignore");
302
302
  const gitignoreEntries = [
303
- "build/",
304
303
  "dist/",
305
304
  "types/",
306
305
  "node_modules/",
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -3,8 +3,8 @@ import { type SkittlesContract, type SkittlesType, type Statement, type Expressi
3
3
  * Generate a Solidity file containing multiple contracts.
4
4
  * Used when a single source file defines multiple classes (e.g., for inheritance).
5
5
  */
6
- export declare function generateSolidityFile(contracts: SkittlesContract[]): string;
7
- export declare function generateSolidity(contract: SkittlesContract): string;
6
+ export declare function generateSolidityFile(contracts: SkittlesContract[], imports?: string[]): string;
7
+ export declare function generateSolidity(contract: SkittlesContract, imports?: string[]): string;
8
8
  export declare function generateType(type: SkittlesType): string;
9
9
  export declare function generateExpression(expr: Expression): string;
10
10
  export declare function generateStatement(stmt: Statement, indent: string): string;
@@ -1 +1 @@
1
- {"version":3,"file":"codegen.d.ts","sourceRoot":"","sources":["../../src/compiler/codegen.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,gBAAgB,EAKrB,KAAK,YAAY,EAEjB,KAAK,SAAS,EACd,KAAK,UAAU,EAKhB,MAAM,mBAAmB,CAAC;AAM3B;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,gBAAgB,EAAE,GAAG,MAAM,CAiE1E;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,MAAM,CAEnE;AAqPD,wBAAgB,YAAY,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CA+BvD;AA+BD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAmE3D;AAMD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAiKzE"}
1
+ {"version":3,"file":"codegen.d.ts","sourceRoot":"","sources":["../../src/compiler/codegen.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,gBAAgB,EAKrB,KAAK,YAAY,EAEjB,KAAK,SAAS,EACd,KAAK,UAAU,EAKhB,MAAM,mBAAmB,CAAC;AAM3B;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,gBAAgB,EAAE,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAwE9F;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAEvF;AAqPD,wBAAgB,YAAY,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CA+BvD;AA+BD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAmE3D;AAMD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAiKzE"}
@@ -6,11 +6,17 @@ import { SkittlesTypeKind, } from "../types/index.js";
6
6
  * Generate a Solidity file containing multiple contracts.
7
7
  * Used when a single source file defines multiple classes (e.g., for inheritance).
8
8
  */
9
- export function generateSolidityFile(contracts) {
9
+ export function generateSolidityFile(contracts, imports) {
10
10
  const parts = [];
11
11
  parts.push("// SPDX-License-Identifier: MIT");
12
12
  parts.push("pragma solidity ^0.8.20;");
13
13
  parts.push("");
14
+ if (imports && imports.length > 0) {
15
+ for (const imp of imports) {
16
+ parts.push(`import "${imp}";`);
17
+ }
18
+ parts.push("");
19
+ }
14
20
  // Collect and deduplicate contract interfaces across all contracts
15
21
  const allInterfaces = [];
16
22
  const emittedInterfaces = new Set();
@@ -66,8 +72,8 @@ export function generateSolidityFile(contracts) {
66
72
  parts.push("");
67
73
  return parts.join("\n");
68
74
  }
69
- export function generateSolidity(contract) {
70
- return generateSolidityFile([contract]);
75
+ export function generateSolidity(contract, imports) {
76
+ return generateSolidityFile([contract], imports);
71
77
  }
72
78
  function generateContractBody(contract, fileScopeTypes = new Set()) {
73
79
  const parts = [];
@@ -1 +1 @@
1
- {"version":3,"file":"codegen.js","sourceRoot":"","sources":["../../src/compiler/codegen.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"codegen.js","sourceRoot":"","sources":["../../src/compiler/codegen.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,GAcjB,MAAM,mBAAmB,CAAC;AAE3B,+DAA+D;AAC/D,aAAa;AACb,+DAA+D;AAE/D;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,SAA6B,EAAE,OAAkB;IACpF,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;IAC9C,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IACvC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClC,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YAC1B,KAAK,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;QACjC,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,mEAAmE;IACnE,MAAM,aAAa,GAAgC,EAAE,CAAC;IACtD,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAU,CAAC;IAC5C,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,kBAAkB,IAAI,EAAE,EAAE,CAAC;YACtD,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBACvC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAClC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;IACH,CAAC;IAED,2EAA2E;IAC3E,qDAAqD;IACrD,MAAM,cAAc,GAAG,IAAI,GAAG,EAAU,CAAC;IACzC,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;IACvC,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;QAClC,KAAK,MAAM,EAAE,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;YACjC,0BAA0B,CAAC,EAAE,CAAC,UAAU,EAAE,cAAc,EAAE,YAAY,CAAC,CAAC;YACxE,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE,CAAC;gBAC9B,0BAA0B,CAAC,CAAC,CAAC,IAAI,EAAE,cAAc,EAAE,YAAY,CAAC,CAAC;YACnE,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,qBAAqB,GAAG,IAAI,GAAG,EAAU,CAAC;IAChD,IAAI,cAAc,CAAC,IAAI,GAAG,CAAC,IAAI,YAAY,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QACrD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,KAAK,MAAM,EAAE,IAAI,QAAQ,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC;gBACtC,IAAI,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;oBACrE,qBAAqB,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;oBACnC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC3D,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACjB,CAAC;YACH,CAAC;YACD,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;gBACvC,IAAI,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;oBACrE,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;oBAClC,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC3C,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACjB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;QAClC,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC;QACzC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1C,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,qBAAqB,CAAC,CAAC,CAAC;QACtE,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,QAA0B,EAAE,OAAkB;IAC7E,OAAO,oBAAoB,CAAC,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC;AACnD,CAAC;AAED,SAAS,oBAAoB,CAC3B,QAA0B,EAC1B,iBAA8B,IAAI,GAAG,EAAE;IAEvC,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,MAAM,WAAW,GACf,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;QAC1B,CAAC,CAAC,OAAO,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QACvC,CAAC,CAAC,EAAE,CAAC;IACT,KAAK,CAAC,IAAI,CAAC,YAAY,QAAQ,CAAC,IAAI,GAAG,WAAW,IAAI,CAAC,CAAC;IAExD,KAAK,MAAM,EAAE,IAAI,QAAQ,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC;QACtC,IAAI,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC;YAAE,SAAS;QAC1C,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,IAAI,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/D,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,KAAK,MAAM,EAAE,IAAI,QAAQ,CAAC,YAAY,IAAI,EAAE,EAAE,CAAC;QAC7C,MAAM,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxF,KAAK,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,IAAI,IAAI,MAAM,IAAI,CAAC,CAAC;IACjD,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7C,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;QACvC,IAAI,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;YAAE,SAAS;QACzC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;QAClC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;QAChC,KAAK,CAAC,IAAI,CAAC,OAAO,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,OAAO,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC3C,CAAC;IAED,IACE,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;QAC7B,CAAC,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,EAChD,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/C,IAAI,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;IACH,CAAC;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACnD,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACpD,IAAI,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEhB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,+DAA+D;AAC/D,oBAAoB;AACpB,+DAA+D;AAE/D,SAAS,kBAAkB,CAAC,CAAgD;IAC1E,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;IACrC,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,WAAW,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;IAC3D,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACpB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,2BAA2B,CAAC,CAAgD;IACnF,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;IACjC,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,OAAO,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;IACvD,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,0BAA0B,CACjC,IAAqC,EACrC,OAAoB,EACpB,KAAkB;IAElB,IAAI,CAAC,IAAI;QAAE,OAAO;IAClB,IAAI,IAAI,CAAC,IAAI,KAAK,gBAAgB,CAAC,MAAM,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC/B,CAAC;SAAM,IAAI,IAAI,CAAC,IAAI,KAAK,gBAAgB,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QAClE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC7B,CAAC;SAAM,IAAI,IAAI,CAAC,IAAI,KAAK,gBAAgB,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QAClE,0BAA0B,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAC7D,CAAC;SAAM,IAAI,IAAI,CAAC,IAAI,KAAK,gBAAgB,CAAC,OAAO,EAAE,CAAC;QAClD,0BAA0B,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;QACzD,0BAA0B,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAgC;IAC7D,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,aAAa,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC;IACxC,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;QAChC,MAAM,MAAM,GAAG,CAAC,CAAC,UAAU;aACxB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,yBAAyB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;aAC5D,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,MAAM,GAAG,GAAG,CAAC,CAAC,eAAe,IAAI,CAAC,CAAC,eAAe,KAAK,YAAY;YACjE,CAAC,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE;YACzB,CAAC,CAAC,EAAE,CAAC;QACP,IAAI,OAAO,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,KAAK,gBAAgB,CAAC,IAAI,EAAE,CAAC;YAChE,OAAO,GAAG,aAAa,iBAAiB,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC;QAC5D,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,IAAI,IAAI,MAAM,aAAa,GAAG,GAAG,OAAO,GAAG,CAAC,CAAC;IAC5E,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,iBAAiB,CAAC,CAAgB;IACzC,MAAM,MAAM,GAAG,CAAC,CAAC,UAAU;SACxB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACT,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5C,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;IACvD,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,OAAO,SAAS,CAAC,CAAC,IAAI,IAAI,MAAM,IAAI,CAAC;AACvC,CAAC;AAED,SAAS,WAAW,CAAC,IAAkB;IACrC,OAAO;QACL,gBAAgB,CAAC,OAAO;QACxB,gBAAgB,CAAC,MAAM;QACvB,gBAAgB,CAAC,OAAO;QACxB,gBAAgB,CAAC,IAAI;QACrB,gBAAgB,CAAC,OAAO;KACzB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxB,CAAC;AAED,SAAS,gBAAgB,CAAC,CAAmB;IAC3C,MAAM,IAAI,GAAG,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,GAAG,GAAG,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IACxC,IAAI,QAAQ,GAAG,EAAE,CAAC;IAClB,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;QACf,QAAQ,GAAG,WAAW,CAAC;IACzB,CAAC;SAAM,IAAI,CAAC,CAAC,SAAS,IAAI,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9C,QAAQ,GAAG,YAAY,CAAC;IAC1B,CAAC;IAED,MAAM,WAAW,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;IAEpD,IACE,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,gBAAgB,CAAC,OAAO;QACxC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,gBAAgB,CAAC,KAAK,EACtC,CAAC;QACD,OAAO,GAAG,IAAI,IAAI,GAAG,GAAG,QAAQ,GAAG,WAAW,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC;IAC9D,CAAC;IAED,IAAI,CAAC,CAAC,YAAY,EAAE,CAAC;QACnB,OAAO,GAAG,IAAI,IAAI,GAAG,GAAG,QAAQ,GAAG,WAAW,IAAI,CAAC,CAAC,IAAI,MAAM,kBAAkB,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC;IACtG,CAAC;IAED,OAAO,GAAG,IAAI,IAAI,GAAG,GAAG,QAAQ,GAAG,WAAW,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC;AAC9D,CAAC;AAED,SAAS,gBAAgB,CAAC,CAAmB;IAC3C,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACzB,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;QAC/C,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;YACvB,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;QAC/C,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACpB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAC1B,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;QAChD,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;YACvB,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;QAC/C,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACpB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,MAAM,MAAM,GAAG,CAAC,CAAC,UAAU;SACxB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;SACpD,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,MAAM,GAAG,GAAG,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IACxC,MAAM,GAAG,GACP,CAAC,CAAC,eAAe,KAAK,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,CAAC;IAEnH,MAAM,YAAY,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;IAEhF,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,IAAI,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,KAAK,gBAAgB,CAAC,IAAI,EAAE,CAAC;QAChE,OAAO,GAAG,aAAa,iBAAiB,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC;IAC5D,CAAC;IAED,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,IAAI,IAAI,MAAM,KAAK,GAAG,GAAG,GAAG,GAAG,YAAY,GAAG,OAAO,IAAI,CAAC,CAAC;IACxF,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;IAC/C,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAEpB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,mBAAmB,CAAC,CAAsB;IACjD,MAAM,MAAM,GAAG,CAAC,CAAC,UAAU;SACxB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;SACpD,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,mBAAmB,MAAM,KAAK,CAAC,CAAC;IAC3C,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;IAC/C,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAEpB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,+DAA+D;AAC/D,kBAAkB;AAClB,+DAA+D;AAE/D,MAAM,UAAU,YAAY,CAAC,IAAkB;IAC7C,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,gBAAgB,CAAC,OAAO;YAC3B,OAAO,SAAS,CAAC;QACnB,KAAK,gBAAgB,CAAC,MAAM;YAC1B,OAAO,QAAQ,CAAC;QAClB,KAAK,gBAAgB,CAAC,OAAO;YAC3B,OAAO,SAAS,CAAC;QACnB,KAAK,gBAAgB,CAAC,IAAI;YACxB,OAAO,MAAM,CAAC;QAChB,KAAK,gBAAgB,CAAC,MAAM;YAC1B,OAAO,QAAQ,CAAC;QAClB,KAAK,gBAAgB,CAAC,OAAO;YAC3B,OAAO,SAAS,CAAC;QACnB,KAAK,gBAAgB,CAAC,KAAK;YACzB,OAAO,OAAO,CAAC;QACjB,KAAK,gBAAgB,CAAC,OAAO;YAC3B,OAAO,WAAW,YAAY,CAAC,IAAI,CAAC,OAAQ,CAAC,OAAO,YAAY,CAAC,IAAI,CAAC,SAAU,CAAC,GAAG,CAAC;QACvF,KAAK,gBAAgB,CAAC,KAAK;YACzB,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,SAAU,CAAC,IAAI,CAAC;QAC9C,KAAK,gBAAgB,CAAC,MAAM;YAC1B,OAAO,IAAI,CAAC,UAAU,IAAI,eAAe,CAAC;QAC5C,KAAK,gBAAgB,CAAC,iBAAiB;YACrC,OAAO,IAAI,CAAC,UAAU,IAAI,kBAAkB,CAAC;QAC/C,KAAK,gBAAgB,CAAC,IAAI;YACxB,OAAO,IAAI,CAAC,UAAU,IAAI,aAAa,CAAC;QAC1C,KAAK,gBAAgB,CAAC,IAAI;YACxB,OAAO,EAAE,CAAC;QACZ;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAkB;IAC3C,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,OAAO,GAAG,IAAI,SAAS,CAAC;IAC1B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,yBAAyB,CAAC,IAAkB;IACnD,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,OAAO,GAAG,IAAI,WAAW,CAAC;IAC5B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAkB;IAC7C,OAAO;QACL,gBAAgB,CAAC,MAAM;QACvB,gBAAgB,CAAC,KAAK;QACtB,gBAAgB,CAAC,KAAK;QACtB,gBAAgB,CAAC,MAAM;KACxB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxB,CAAC;AAED,+DAA+D;AAC/D,wBAAwB;AACxB,+DAA+D;AAE/D,MAAM,UAAU,kBAAkB,CAAC,IAAgB;IACjD,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,gBAAgB;YACnB,OAAO,IAAI,CAAC,KAAK,CAAC;QACpB,KAAK,gBAAgB,CAAC,CAAC,CAAC;YACtB,IAAI,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3C,OAAO,WAAW,IAAI,CAAC,KAAK,GAAG,CAAC;YAClC,CAAC;YACD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACvE,OAAO,IAAI,OAAO,GAAG,CAAC;QACxB,CAAC;QACD,KAAK,iBAAiB;YACpB,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;QACvC,KAAK,YAAY;YACf,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;gBAAE,OAAO,eAAe,CAAC;YACjD,OAAO,IAAI,CAAC,IAAI,CAAC;QACnB,KAAK,iBAAiB;YACpB,IACE,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,YAAY;gBACjC,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,EAC3B,CAAC;gBACD,OAAO,IAAI,CAAC,QAAQ,CAAC;YACvB,CAAC;YACD,uCAAuC;YACvC,IACE,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,YAAY;gBACjC,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ;gBAC7B,IAAI,CAAC,QAAQ,KAAK,WAAW,EAC7B,CAAC;gBACD,OAAO,mBAAmB,CAAC;YAC7B,CAAC;YACD,wDAAwD;YACxD,IACE,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,YAAY;gBACjC,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ;gBAC7B,IAAI,CAAC,QAAQ,KAAK,kBAAkB,EACpC,CAAC;gBACD,OAAO,kBAAkB,CAAC;YAC5B,CAAC;YACD,OAAO,GAAG,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC/D,KAAK,gBAAgB;YACnB,OAAO,GAAG,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;QACjF,KAAK,QAAQ;YACX,OAAO,IAAI,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,IAAI,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;QACjG,KAAK,OAAO;YACV,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,OAAO,GAAG,IAAI,CAAC,QAAQ,GAAG,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC/D,CAAC;YACD,OAAO,GAAG,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC/D,KAAK,YAAY;YACf,OAAO,GAAG,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,IAAI,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACjG,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,UAAU,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;YAChD,IAAI,UAAU;gBAAE,OAAO,UAAU,CAAC;YAClC,OAAO,GAAG,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;QAC/F,CAAC;QACD,KAAK,aAAa;YAChB,OAAO,IAAI,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;QAClI,KAAK,KAAK;YACR,OAAO,OAAO,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;QAC/E,KAAK,gBAAgB,CAAC,CAAC,CAAC;YACtB,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClF,OAAO,MAAM,CAAC;QAChB,CAAC;QACD;YACE,OAAO,mBAAmB,CAAC;IAC/B,CAAC;AACH,CAAC;AAED,+DAA+D;AAC/D,uBAAuB;AACvB,+DAA+D;AAE/D,MAAM,UAAU,iBAAiB,CAAC,IAAe,EAAE,MAAc;IAC/D,MAAM,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;IAE9B,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,QAAQ;YACX,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBACf,OAAO,GAAG,MAAM,UAAU,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;YAC9D,CAAC;YACD,OAAO,GAAG,MAAM,SAAS,CAAC;QAE5B,KAAK,sBAAsB,CAAC,CAAC,CAAC;YAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAClE,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACrB,IAAI,QAAQ,GAAG,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBACpD,sEAAsE;gBACtE,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,gBAAgB,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,KAAK,gBAAgB,CAAC,MAAM,EAAE,CAAC;oBAC9F,QAAQ,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,QAAQ,GAAG,CAAC;gBACpD,CAAC;gBACD,OAAO,GAAG,MAAM,GAAG,IAAI,IAAI,IAAI,CAAC,IAAI,MAAM,QAAQ,GAAG,CAAC;YACxD,CAAC;YACD,OAAO,GAAG,MAAM,GAAG,IAAI,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC;QAC1C,CAAC;QAED,KAAK,YAAY;YACf,OAAO,GAAG,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAE5D,KAAK,IAAI,CAAC,CAAC,CAAC;YACV,IAAI,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC3B,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACjD,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAoB,CAAC;gBACnD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;oBACnB,OAAO,GAAG,MAAM,WAAW,kBAAkB,CAAC,OAAO,CAAC,KAAK,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;gBACpG,CAAC;gBACD,OAAO,GAAG,MAAM,WAAW,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC;YAC7D,CAAC;YAED,MAAM,KAAK,GAAa,EAAE,CAAC;YAC3B,KAAK,CAAC,IAAI,CACR,GAAG,MAAM,OAAO,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CACxD,CAAC;YACF,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC9B,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;YAC1C,CAAC;YACD,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClB,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,UAAU,CAAC,CAAC;gBAChC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAC9B,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;gBAC1C,CAAC;YACH,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC;YACzB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QAED,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,IAAI,OAAO,GAAG,EAAE,CAAC;YACjB,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACrB,OAAO,GAAG,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC;gBAC9D,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC1B,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBACjC,CAAC;YACH,CAAC;YACD,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS;gBAC5B,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC;gBACpC,CAAC,CAAC,EAAE,CAAC;YACP,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW;gBAC9B,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;gBACtC,CAAC,CAAC,EAAE,CAAC;YAEP,MAAM,KAAK,GAAa,EAAE,CAAC;YAC3B,KAAK,CAAC,IAAI,CACR,GAAG,MAAM,QAAQ,OAAO,KAAK,OAAO,KAAK,OAAO,KAAK,CACtD,CAAC;YACF,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBAC1B,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;YAC1C,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC;YACzB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QAED,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,KAAK,GAAa,EAAE,CAAC;YAC3B,KAAK,CAAC,IAAI,CACR,GAAG,MAAM,UAAU,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAC3D,CAAC;YACF,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBAC1B,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;YAC1C,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC;YACzB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QAED,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,MAAM,KAAK,GAAa,EAAE,CAAC;YAC3B,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,MAAM,CAAC,CAAC;YAC5B,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBAC1B,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;YAC1C,CAAC;YACD,KAAK,CAAC,IAAI,CACR,GAAG,MAAM,YAAY,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAC5D,CAAC;YACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QAED,KAAK,OAAO;YACV,OAAO,GAAG,MAAM,QAAQ,CAAC;QAE3B,KAAK,UAAU;YACb,OAAO,GAAG,MAAM,WAAW,CAAC;QAE9B,KAAK,QAAQ;YACX,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACrB,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC7E,OAAO,GAAG,MAAM,UAAU,IAAI,CAAC,WAAW,IAAI,IAAI,IAAI,CAAC;YACzD,CAAC;YACD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjB,OAAO,GAAG,MAAM,UAAU,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;YACjE,CAAC;YACD,OAAO,GAAG,MAAM,WAAW,CAAC;QAE9B,KAAK,MAAM;YACT,OAAO,GAAG,MAAM,QAAQ,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QAE7F,KAAK,QAAQ;YACX,OAAO,GAAG,MAAM,UAAU,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;QAE/D,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,KAAK,GAAa,EAAE,CAAC;YAC3B,MAAM,QAAQ,GAAG,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACvD,IAAI,KAAK,GAAG,IAAI,CAAC;YACjB,IAAI,WAAoC,CAAC;YAEzC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBAC3B,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;oBACb,WAAW,GAAG,CAAC,CAAC,IAAI,CAAC;oBACrB,SAAS;gBACX,CAAC;gBACD,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC;gBAC3C,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,GAAG,OAAO,KAAK,QAAQ,OAAO,kBAAkB,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACpF,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;oBACvB,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;gBAC1C,CAAC;gBACD,KAAK,GAAG,KAAK,CAAC;YAChB,CAAC;YAED,IAAI,WAAW,EAAE,CAAC;gBAChB,IAAI,CAAC,KAAK,EAAE,CAAC;oBACX,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,UAAU,CAAC,CAAC;gBAClC,CAAC;qBAAM,CAAC;oBACN,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC;gBAC3B,CAAC;gBACD,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;oBAC5B,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;gBAC1C,CAAC;YACH,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC;YACzB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QAED;YACE,OAAO,GAAG,MAAM,0BAA0B,CAAC;IAC/C,CAAC;AACH,CAAC;AAED,+DAA+D;AAC/D,+BAA+B;AAC/B,+DAA+D;AAE/D,SAAS,gBAAgB,CAAC,IAAiB;IACzC,IACE,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;QAC1B,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ;QAClC,CAAC,IAAI,CAAC,QAAQ,EACd,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAChC,IAAI,MAAM,CAAC,WAAW;YAAE,OAAO,KAAK,CAAC;QACrC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAgB;IACxC,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9C,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;QACxC,CAAC;IACH,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AACvE,CAAC;AAED,SAAS,cAAc,CAAC,EAAU;IAChC,MAAM,GAAG,GAA2B;QAClC,GAAG,EAAE,IAAI;QACT,GAAG,EAAE,IAAI;QACT,IAAI,EAAE,GAAG;QACT,IAAI,EAAE,GAAG;QACT,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,IAAI;KACX,CAAC;IACF,OAAO,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC;AACzB,CAAC;AAED,+DAA+D;AAC/D,gCAAgC;AAChC,+DAA+D;AAE/D,SAAS,WAAW,CAAC,IAAgB;IACnC,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY;QAAE,OAAO,IAAI,CAAC,IAAI,CAAC;IACjD,IACE,IAAI,CAAC,IAAI,KAAK,iBAAiB;QAC/B,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,YAAY,EACjC,CAAC;QACD,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;IAChD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,sBAAsB,CAAC,IAG/B;IACC,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACtC,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE1D,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,MAAM,CAAC;QACZ,KAAK,WAAW;YACd,OAAO,8BAA8B,IAAI,IAAI,CAAC;QAChD,KAAK,QAAQ;YACX,OAAO,2BAA2B,IAAI,IAAI,CAAC;QAC7C,KAAK,YAAY;YACf,OAAO,cAAc,IAAI,GAAG,CAAC;QAC/B,KAAK,kBAAkB;YACrB,OAAO,oBAAoB,IAAI,GAAG,CAAC;QACrC,KAAK,YAAY;YACf,OAAO,cAAc,IAAI,GAAG,CAAC;QAC/B,KAAK,WAAW;YACd,OAAO,aAAa,IAAI,GAAG,CAAC;QAC9B,KAAK,QAAQ;YACX,OAAO,UAAU,IAAI,GAAG,CAAC;QAC3B,KAAK,QAAQ;YACX,OAAO,UAAU,IAAI,GAAG,CAAC;QAC3B,KAAK,QAAQ;YACX,OAAO,UAAU,IAAI,GAAG,CAAC;QAC3B,KAAK,SAAS;YACZ,OAAO,WAAW,CAAC;QACrB,KAAK,eAAe;YAClB,OAAO,iBAAiB,IAAI,GAAG,CAAC;QAClC,KAAK,cAAc;YACjB,OAAO,gBAAgB,IAAI,GAAG,CAAC;QACjC;YACE,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC;AAED,+DAA+D;AAC/D,+CAA+C;AAC/C,+DAA+D;AAE/D,SAAS,aAAa,CAAC,GAAe;IACpC,IAAI,GAAG,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC;IACtC,OAAO,UAAU,CAAC;AACpB,CAAC"}
@@ -9,7 +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. Write Solidity to build/solidity (Hardhat compiles to ABI + bytecode)
12
+ * 4. Write Solidity to artifacts/solidity (Hardhat compiles to ABI + bytecode)
13
13
  */
14
14
  export declare function compile(projectRoot: string, config: Required<SkittlesConfig>): Promise<CompilationResult>;
15
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,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,CAuJ5B"}
1
+ {"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../../src/compiler/compiler.ts"],"names":[],"mappings":"AAIA,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;AAoDD;;;;;;GAMG;AACH,wBAAsB,OAAO,CAC3B,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,GAC/B,OAAO,CAAC,iBAAiB,CAAC,CA2Q5B"}
@@ -1,6 +1,7 @@
1
1
  import crypto from "crypto";
2
2
  import fs from "fs";
3
3
  import path from "path";
4
+ import { fileURLToPath } from "url";
4
5
  import { findTypeScriptFiles, readFile, writeFile } from "../utils/file.js";
5
6
  import { logInfo, logSuccess, logError } from "../utils/console.js";
6
7
  import { parse, collectTypes, collectFunctions } from "./parser.js";
@@ -8,7 +9,9 @@ import { generateSolidity, generateSolidityFile } from "./codegen.js";
8
9
  // ============================================================
9
10
  // Incremental compilation cache
10
11
  // ============================================================
11
- const CACHE_VERSION = "2";
12
+ const CACHE_VERSION = "4";
13
+ const __dirname = path.dirname(fileURLToPath(import.meta.url));
14
+ const PACKAGE_VERSION = JSON.parse(fs.readFileSync(path.resolve(__dirname, "../../package.json"), "utf-8")).version;
12
15
  function hashString(input) {
13
16
  return crypto.createHash("sha256").update(input).digest("hex").slice(0, 16);
14
17
  }
@@ -17,14 +20,14 @@ function loadCache(outputDir) {
17
20
  try {
18
21
  if (fs.existsSync(cachePath)) {
19
22
  const data = JSON.parse(fs.readFileSync(cachePath, "utf-8"));
20
- if (data.version === CACHE_VERSION)
23
+ if (data.version === CACHE_VERSION && data.skittlesVersion === PACKAGE_VERSION)
21
24
  return data;
22
25
  }
23
26
  }
24
27
  catch {
25
28
  // Corrupt cache, start fresh
26
29
  }
27
- return { version: CACHE_VERSION, files: {} };
30
+ return { version: CACHE_VERSION, skittlesVersion: PACKAGE_VERSION, files: {} };
28
31
  }
29
32
  function saveCache(outputDir, cache) {
30
33
  const cachePath = path.join(outputDir, ".skittles-cache.json");
@@ -36,11 +39,12 @@ function saveCache(outputDir, cache) {
36
39
  * 1. Find all TypeScript contract files
37
40
  * 2. Parse each file into a SkittlesContract IR
38
41
  * 3. Generate Solidity source from each contract
39
- * 4. Write Solidity to build/solidity (Hardhat compiles to ABI + bytecode)
42
+ * 4. Write Solidity to artifacts/solidity (Hardhat compiles to ABI + bytecode)
40
43
  */
41
44
  export async function compile(projectRoot, config) {
42
45
  const contractsDir = path.join(projectRoot, config.contractsDir);
43
46
  const outputDir = path.join(projectRoot, config.outputDir);
47
+ const cacheDir = path.join(projectRoot, config.cacheDir);
44
48
  const artifacts = [];
45
49
  const errors = [];
46
50
  // Step 1: Find source files
@@ -53,21 +57,30 @@ export async function compile(projectRoot, config) {
53
57
  // Pre-scan all files to collect shared types (type alias structs, contract
54
58
  // interfaces, enums), file level functions, and file level constants.
55
59
  // This allows contracts in one file to reference things defined in another.
60
+ // Also tracks which file defines each interface for cross-file imports.
56
61
  const globalStructs = new Map();
57
62
  const globalEnums = new Map();
58
63
  const globalContractInterfaces = new Map();
59
64
  const globalFunctions = [];
60
65
  const globalConstants = new Map();
66
+ const interfaceOriginFile = new Map();
67
+ const preScanContractFiles = [];
61
68
  for (const filePath of sourceFiles) {
62
69
  try {
63
70
  const source = readFile(filePath);
64
71
  const { structs, enums, contractInterfaces } = collectTypes(source, filePath);
72
+ const baseName = path.basename(filePath, path.extname(filePath));
65
73
  for (const [name, fields] of structs)
66
74
  globalStructs.set(name, fields);
67
75
  for (const [name, members] of enums)
68
76
  globalEnums.set(name, members);
69
- for (const [name, iface] of contractInterfaces)
70
- globalContractInterfaces.set(name, iface);
77
+ for (const [name, iface] of contractInterfaces) {
78
+ const existingOrigin = interfaceOriginFile.get(name);
79
+ if (!existingOrigin || baseName < existingOrigin) {
80
+ globalContractInterfaces.set(name, iface);
81
+ interfaceOriginFile.set(name, baseName);
82
+ }
83
+ }
71
84
  const { functions, constants } = collectFunctions(source, filePath);
72
85
  for (const fn of functions) {
73
86
  if (!globalFunctions.some((f) => f.name === fn.name)) {
@@ -76,6 +89,9 @@ export async function compile(projectRoot, config) {
76
89
  }
77
90
  for (const [name, expr] of constants)
78
91
  globalConstants.set(name, expr);
92
+ if (/\bclass\s+\w+/.test(source)) {
93
+ preScanContractFiles.push(baseName);
94
+ }
79
95
  }
80
96
  catch {
81
97
  // Errors will be caught in the main compilation loop below
@@ -85,62 +101,162 @@ export async function compile(projectRoot, config) {
85
101
  const externalFunctions = { functions: globalFunctions, constants: globalConstants };
86
102
  // Compute a hash of all shared definitions (types, functions, constants).
87
103
  // If any shared definition changes, all files must be recompiled.
88
- // We hash the serialized definitions rather than the full concatenated sources
89
- // to avoid extra I/O and to prevent over-broad cache invalidation from
90
- // unrelated changes (e.g. comments, whitespace, class body edits).
104
+ // contractFiles tracks which source files produce .sol output; if a file
105
+ // gains or loses a class declaration the import structure may change, so
106
+ // all caches must be invalidated.
91
107
  const sharedDefinitions = {
92
108
  structs: Array.from(globalStructs.entries()).sort(([a], [b]) => a.localeCompare(b)),
93
109
  enums: Array.from(globalEnums.entries()).sort(([a], [b]) => a.localeCompare(b)),
94
110
  contractInterfaces: Array.from(globalContractInterfaces.entries()).sort(([a], [b]) => a.localeCompare(b)),
95
111
  functions: [...globalFunctions].sort((a, b) => a.name.localeCompare(b.name)),
96
112
  constants: Array.from(globalConstants.entries()).sort(([a], [b]) => a.localeCompare(b)),
113
+ contractFiles: preScanContractFiles.sort(),
97
114
  };
98
115
  const sharedHash = hashString(JSON.stringify(sharedDefinitions));
99
116
  // Load incremental compilation cache
100
- const cache = loadCache(outputDir);
101
- const newCache = { version: CACHE_VERSION, files: {} };
117
+ const cache = loadCache(cacheDir);
118
+ const newCache = { version: CACHE_VERSION, skittlesVersion: PACKAGE_VERSION, files: {} };
119
+ const parsedFiles = [];
120
+ const cachedFiles = [];
121
+ const filesWithContracts = new Set();
102
122
  for (const filePath of sourceFiles) {
103
123
  const relativePath = path.relative(projectRoot, filePath);
104
124
  try {
105
125
  const source = readFile(filePath);
106
126
  const fileHash = hashString(source);
107
- // Check cache: skip compilation if file and shared defs unchanged
108
127
  const cached = cache.files[relativePath];
109
128
  if (cached && cached.fileHash === fileHash && cached.sharedHash === sharedHash) {
110
- logInfo(`${relativePath} unchanged, using cache`);
111
- const cachedBaseName = path.basename(filePath, path.extname(filePath));
112
- writeFile(path.join(outputDir, "solidity", `${cachedBaseName}.sol`), cached.contracts[0].solidity);
113
- for (const c of cached.contracts) {
114
- const artifact = {
115
- contractName: c.name,
116
- solidity: c.solidity,
117
- };
118
- artifacts.push(artifact);
119
- logSuccess(`${c.name} compiled successfully (cached)`);
129
+ cachedFiles.push({ filePath, relativePath, cached });
130
+ if (cached.contracts.length > 0) {
131
+ filesWithContracts.add(path.basename(filePath, path.extname(filePath)));
120
132
  }
121
- newCache.files[relativePath] = cached;
122
133
  continue;
123
134
  }
124
135
  logInfo(`Compiling ${relativePath}...`);
125
- // Step 2: Parse TypeScript into SkittlesContract IR
126
136
  const contracts = parse(source, filePath, externalTypes, externalFunctions);
127
- // Step 3: Generate Solidity (combine all contracts from same file)
137
+ if (contracts.length > 0) {
138
+ filesWithContracts.add(path.basename(filePath, path.extname(filePath)));
139
+ }
140
+ parsedFiles.push({ filePath, relativePath, source, fileHash, contracts });
141
+ }
142
+ catch (err) {
143
+ const message = err instanceof Error ? err.message : "Unknown error occurred";
144
+ errors.push(`${relativePath}: ${message}`);
145
+ logError(`Failed to compile ${relativePath}: ${message}`);
146
+ }
147
+ }
148
+ // Phase 2: Resolve interface mutabilities from implementing contracts
149
+ // and propagate back to the global interface map.
150
+ // Process both freshly parsed files and cached files so that
151
+ // mutabilities are available even when the implementing file is cached.
152
+ for (const { contracts } of parsedFiles) {
153
+ for (const contract of contracts) {
154
+ for (const iface of contract.contractInterfaces) {
155
+ const globalIface = globalContractInterfaces.get(iface.name);
156
+ if (!globalIface)
157
+ continue;
158
+ for (const fn of iface.functions) {
159
+ if (!fn.stateMutability)
160
+ continue;
161
+ const globalFn = globalIface.functions.find((f) => f.name === fn.name);
162
+ if (globalFn && !globalFn.stateMutability) {
163
+ globalFn.stateMutability = fn.stateMutability;
164
+ }
165
+ }
166
+ }
167
+ }
168
+ }
169
+ for (const { cached } of cachedFiles) {
170
+ if (!cached.resolvedMutabilities)
171
+ continue;
172
+ for (const [ifaceName, methods] of Object.entries(cached.resolvedMutabilities)) {
173
+ const globalIface = globalContractInterfaces.get(ifaceName);
174
+ if (!globalIface)
175
+ continue;
176
+ for (const [fnName, mut] of Object.entries(methods)) {
177
+ const globalFn = globalIface.functions.find((f) => f.name === fnName);
178
+ if (globalFn && !globalFn.stateMutability) {
179
+ globalFn.stateMutability = mut;
180
+ }
181
+ }
182
+ }
183
+ }
184
+ // Phase 3: Emit cached files
185
+ for (const { filePath, relativePath, cached } of cachedFiles) {
186
+ logInfo(`${relativePath} unchanged, using cache`);
187
+ const cachedBaseName = path.basename(filePath, path.extname(filePath));
188
+ writeFile(path.join(outputDir, "solidity", `${cachedBaseName}.sol`), cached.contracts[0].solidity);
189
+ for (const c of cached.contracts) {
190
+ artifacts.push({ contractName: c.name, solidity: c.solidity });
191
+ logSuccess(`${c.name} compiled successfully (cached)`);
192
+ }
193
+ newCache.files[relativePath] = cached;
194
+ }
195
+ // Phase 4: Generate Solidity for parsed files, with imports for external interfaces
196
+ for (const { filePath, relativePath, fileHash, contracts } of parsedFiles) {
197
+ try {
198
+ const baseName = path.basename(filePath, path.extname(filePath));
199
+ // Determine which interfaces should be imported from other .sol files
200
+ const imports = [];
201
+ const importedIfaceNames = new Set();
202
+ for (const contract of contracts) {
203
+ for (const iface of contract.contractInterfaces) {
204
+ const originBase = interfaceOriginFile.get(iface.name);
205
+ if (originBase && originBase !== baseName && filesWithContracts.has(originBase)) {
206
+ if (!importedIfaceNames.has(iface.name)) {
207
+ importedIfaceNames.add(iface.name);
208
+ imports.push(`./${originBase}.sol`);
209
+ }
210
+ }
211
+ }
212
+ }
213
+ // Snapshot resolved interface mutabilities before imports strip them.
214
+ // Cached files need this to propagate mutabilities in future compiles.
215
+ const resolvedMutabilities = {};
216
+ for (const contract of contracts) {
217
+ for (const iface of contract.contractInterfaces) {
218
+ for (const fn of iface.functions) {
219
+ if (fn.stateMutability) {
220
+ if (!resolvedMutabilities[iface.name])
221
+ resolvedMutabilities[iface.name] = {};
222
+ resolvedMutabilities[iface.name][fn.name] = fn.stateMutability;
223
+ }
224
+ }
225
+ }
226
+ }
227
+ // Remove imported interfaces from inline declarations
228
+ for (const contract of contracts) {
229
+ contract.contractInterfaces = contract.contractInterfaces.filter((iface) => !importedIfaceNames.has(iface.name));
230
+ }
231
+ // Update remaining inline interface mutabilities from the resolved global map
232
+ for (const contract of contracts) {
233
+ for (const iface of contract.contractInterfaces) {
234
+ const globalIface = globalContractInterfaces.get(iface.name);
235
+ if (!globalIface)
236
+ continue;
237
+ for (const fn of iface.functions) {
238
+ if (fn.stateMutability)
239
+ continue;
240
+ const globalFn = globalIface.functions.find((f) => f.name === fn.name);
241
+ if (globalFn?.stateMutability) {
242
+ fn.stateMutability = globalFn.stateMutability;
243
+ }
244
+ }
245
+ }
246
+ }
247
+ // Deduplicate imports
248
+ const uniqueImports = [...new Set(imports)];
128
249
  const solidity = contracts.length > 1
129
- ? generateSolidityFile(contracts)
250
+ ? generateSolidityFile(contracts, uniqueImports)
130
251
  : contracts.length === 1
131
- ? generateSolidity(contracts[0])
252
+ ? generateSolidity(contracts[0], uniqueImports)
132
253
  : "";
133
254
  if (!solidity)
134
255
  continue;
135
- const cacheEntry = { fileHash, sharedHash, contracts: [] };
136
- const sourceBaseName = path.basename(filePath, path.extname(filePath));
137
- writeFile(path.join(outputDir, "solidity", `${sourceBaseName}.sol`), solidity);
256
+ const cacheEntry = { fileHash, sharedHash, contracts: [], resolvedMutabilities };
257
+ writeFile(path.join(outputDir, "solidity", `${baseName}.sol`), solidity);
138
258
  for (const contract of contracts) {
139
- const artifact = {
140
- contractName: contract.name,
141
- solidity,
142
- };
143
- artifacts.push(artifact);
259
+ artifacts.push({ contractName: contract.name, solidity });
144
260
  cacheEntry.contracts.push({ name: contract.name, solidity });
145
261
  logSuccess(`${contract.name} compiled successfully`);
146
262
  }
@@ -154,7 +270,7 @@ export async function compile(projectRoot, config) {
154
270
  }
155
271
  // Save updated cache
156
272
  try {
157
- saveCache(outputDir, newCache);
273
+ saveCache(cacheDir, newCache);
158
274
  }
159
275
  catch {
160
276
  // Non critical if cache save fails