hardhat-external-artifacts 0.0.4 → 0.0.6

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.
@@ -20,6 +20,8 @@ interface CompilerInput {
20
20
  useLiteralContent?: boolean;
21
21
  bytecodeHash?: string;
22
22
  };
23
+ evmVersion?: string;
24
+ viaIR?: boolean;
23
25
  };
24
26
  }
25
27
  interface CompilerOutput {
@@ -54,9 +56,9 @@ interface BytecodeOutput {
54
56
  }
55
57
  /**
56
58
  * Convert artifacts to compilation format.
57
- * If artifacts are "rich" (have solcInput), use the embedded data.
58
- * Otherwise, synthesize a minimal compilation.
59
+ * Flexibly extracts data from each artifact - uses solcInput if available,
60
+ * falls back to metadata for settings, or synthesizes minimal compilation.
59
61
  */
60
- export declare function artifactsToCompilations(artifacts: ExternalArtifact[], defaultSolcVersion: string): SyntheticCompilation[];
62
+ export declare function artifactsToCompilations(artifacts: ExternalArtifact[], defaultSolcVersion: string, debug?: boolean): SyntheticCompilation[];
61
63
  export {};
62
64
  //# sourceMappingURL=converter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"converter.d.ts","sourceRoot":"","sources":["../../src/artifacts/converter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,gBAAgB,EAAgB,cAAc,EAAC,MAAM,YAAY,CAAC;AAG/E,MAAM,WAAW,oBAAoB;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,aAAa,CAAC;IAC7B,cAAc,EAAE,cAAc,CAAC;CAC/B;AAED,UAAU,aAAa;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE;QAAC,OAAO,EAAE,MAAM,CAAA;KAAC,CAAC,CAAC;IAC3C,QAAQ,EAAE;QACT,SAAS,EAAE;YAAC,OAAO,EAAE,OAAO,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAA;SAAC,CAAC;QAC7C,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QAC1D,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;QACtB,QAAQ,CAAC,EAAE;YAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC;YAAC,YAAY,CAAC,EAAE,MAAM,CAAA;SAAC,CAAC;KAChE,CAAC;CACF;AAED,UAAU,cAAc;IACvB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAC,CAAC,CAAC;IACnD,SAAS,EAAE,MAAM,CAChB,MAAM,EACN,MAAM,CACL,MAAM,EACN;QACC,GAAG,EAAE,SAAS,GAAG,EAAE,CAAC;QACpB,GAAG,EAAE;YACJ,QAAQ,EAAE,cAAc,CAAC;YACzB,gBAAgB,EAAE,cAAc,CAAC;YACjC,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;SAC1C,CAAC;QACF,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,GAAG,CAAC;QACb,OAAO,CAAC,EAAE,GAAG,CAAC;QACd,aAAa,CAAC,EAAE,GAAG,CAAC;KACpB,CACD,CACD,CAAC;CACF;AAED,UAAU,cAAc;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,cAAc,CAAC;IAC/B,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAC,CAAC,CAAC,CAAC;IAC7E,gBAAgB,CAAC,EAAE,GAAG,EAAE,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACxC;AA2CD;;;;GAIG;AACH,wBAAgB,uBAAuB,CACtC,SAAS,EAAE,gBAAgB,EAAE,EAC7B,kBAAkB,EAAE,MAAM,GACxB,oBAAoB,EAAE,CAuBxB"}
1
+ {"version":3,"file":"converter.d.ts","sourceRoot":"","sources":["../../src/artifacts/converter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,gBAAgB,EAAgB,cAAc,EAAC,MAAM,YAAY,CAAC;AAG/E,MAAM,WAAW,oBAAoB;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,aAAa,CAAC;IAC7B,cAAc,EAAE,cAAc,CAAC;CAC/B;AAED,UAAU,aAAa;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE;QAAC,OAAO,EAAE,MAAM,CAAA;KAAC,CAAC,CAAC;IAC3C,QAAQ,EAAE;QACT,SAAS,EAAE;YAAC,OAAO,EAAE,OAAO,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAA;SAAC,CAAC;QAC7C,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QAC1D,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;QACtB,QAAQ,CAAC,EAAE;YAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC;YAAC,YAAY,CAAC,EAAE,MAAM,CAAA;SAAC,CAAC;QAChE,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,KAAK,CAAC,EAAE,OAAO,CAAC;KAChB,CAAC;CACF;AAED,UAAU,cAAc;IACvB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAC,CAAC,CAAC;IACnD,SAAS,EAAE,MAAM,CAChB,MAAM,EACN,MAAM,CACL,MAAM,EACN;QACC,GAAG,EAAE,SAAS,GAAG,EAAE,CAAC;QACpB,GAAG,EAAE;YACJ,QAAQ,EAAE,cAAc,CAAC;YACzB,gBAAgB,EAAE,cAAc,CAAC;YACjC,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;SAC1C,CAAC;QACF,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,GAAG,CAAC;QACb,OAAO,CAAC,EAAE,GAAG,CAAC;QACd,aAAa,CAAC,EAAE,GAAG,CAAC;KACpB,CACD,CACD,CAAC;CACF;AAED,UAAU,cAAc;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,cAAc,CAAC;IAC/B,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAC,CAAC,CAAC,CAAC;IAC7E,gBAAgB,CAAC,EAAE,GAAG,EAAE,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACxC;AA0LD;;;;GAIG;AACH,wBAAgB,uBAAuB,CACtC,SAAS,EAAE,gBAAgB,EAAE,EAC7B,kBAAkB,EAAE,MAAM,EAC1B,KAAK,GAAE,OAAe,GACpB,oBAAoB,EAAE,CA6CxB"}
@@ -1,4 +1,4 @@
1
- import { isRichArtifact } from './types.js';
1
+ import { hasSolcInput, hasMetadata, hasEvmData } from './types.js';
2
2
  /**
3
3
  * Creates a minimal valid AST for a source file.
4
4
  * This is needed because Hardhat's contract decoder expects a valid AST structure.
@@ -34,139 +34,192 @@ function createMinimalAst(sourceName, sourceId, contracts) {
34
34
  };
35
35
  }
36
36
  /**
37
- * Convert artifacts to compilation format.
38
- * If artifacts are "rich" (have solcInput), use the embedded data.
39
- * Otherwise, synthesize a minimal compilation.
37
+ * Extract compilation context from an artifact.
38
+ * Tries solcInput first, then falls back to metadata, then defaults.
40
39
  */
41
- export function artifactsToCompilations(artifacts, defaultSolcVersion) {
42
- // Group artifacts by whether they have solcInput
43
- const richArtifacts = artifacts.filter(isRichArtifact);
44
- const simpleArtifacts = artifacts.filter((a) => !isRichArtifact(a));
45
- const compilations = [];
46
- // Process rich artifacts - these have embedded solcInput
47
- for (const artifact of richArtifacts) {
48
- const compilation = richArtifactToCompilation(artifact);
49
- if (compilation) {
50
- compilations.push(compilation);
40
+ function extractCompilationContext(artifact, defaultSolcVersion, debug = false) {
41
+ // Try to extract from solcInput first (most complete)
42
+ if (hasSolcInput(artifact)) {
43
+ try {
44
+ const compilerInput = JSON.parse(artifact.solcInput);
45
+ const solcVersion = extractVersionFromMetadata(artifact.metadata) ?? defaultSolcVersion;
46
+ // Use a hash of settings to group artifacts with same compilation context
47
+ const settingsKey = JSON.stringify(compilerInput.settings);
48
+ return {
49
+ solcVersion,
50
+ compilerInput,
51
+ groupKey: `solcInput:${solcVersion}:${hashString(settingsKey)}`,
52
+ };
53
+ }
54
+ catch (e) {
55
+ if (debug) {
56
+ console.log(`[external-artifacts] Failed to parse solcInput for ${artifact.contractName}: ${e}`);
57
+ }
58
+ // Fall through to metadata extraction
51
59
  }
52
60
  }
53
- // Process simple artifacts - synthesize compilation
54
- if (simpleArtifacts.length > 0) {
55
- compilations.push(synthesizeCompilation(simpleArtifacts, defaultSolcVersion));
56
- }
57
- return compilations;
58
- }
59
- /**
60
- * Convert a rich artifact (with embedded solcInput) to a compilation.
61
- * Uses the embedded solcInput directly for maximum fidelity.
62
- */
63
- function richArtifactToCompilation(artifact) {
64
- if (!artifact.solcInput) {
65
- return null;
66
- }
67
- // Parse the embedded solcInput
68
- const compilerInput = JSON.parse(artifact.solcInput);
69
- // Extract solc version from metadata
70
- let solcVersion = '0.8.20'; // Default
71
- if (artifact.metadata) {
61
+ // Try to extract from metadata (partial but useful)
62
+ if (hasMetadata(artifact)) {
72
63
  try {
73
64
  const metadata = JSON.parse(artifact.metadata);
74
- if (metadata.compiler?.version) {
75
- // Format: "0.8.10+commit.fc410830" -> extract "0.8.10"
76
- solcVersion = metadata.compiler.version.split('+')[0];
65
+ const solcVersion = extractVersionFromMetadataObject(metadata) ?? defaultSolcVersion;
66
+ const compilerInput = metadataToCompilerInput(metadata);
67
+ if (compilerInput) {
68
+ const settingsKey = JSON.stringify(compilerInput.settings);
69
+ return {
70
+ solcVersion,
71
+ compilerInput,
72
+ groupKey: `metadata:${solcVersion}:${hashString(settingsKey)}`,
73
+ };
77
74
  }
78
75
  }
79
- catch {
80
- // Ignore parsing errors, use default
76
+ catch (e) {
77
+ if (debug) {
78
+ console.log(`[external-artifacts] Failed to parse metadata for ${artifact.contractName}: ${e}`);
79
+ }
80
+ // Fall through to defaults
81
81
  }
82
82
  }
83
- // Build compiler output from the artifact
84
- // Only include sources that we have contract data for
85
- // Including empty sources/contracts can cause EDR selector fixup issues
86
- const compilerOutput = {
87
- sources: {},
88
- contracts: {},
83
+ // Default: no compiler input available, use defaults
84
+ return {
85
+ solcVersion: defaultSolcVersion,
86
+ compilerInput: null,
87
+ groupKey: `default:${defaultSolcVersion}`,
89
88
  };
90
- const sourceName = artifact.sourceName;
91
- // Track source IDs for all input sources (needed for consistent source indexing)
92
- let sourceId = 0;
93
- const sourceIds = {};
94
- for (const srcName of Object.keys(compilerInput.sources)) {
95
- sourceIds[srcName] = sourceId++;
89
+ }
90
+ /**
91
+ * Extract solc version from metadata string.
92
+ */
93
+ function extractVersionFromMetadata(metadataStr) {
94
+ if (!metadataStr)
95
+ return null;
96
+ try {
97
+ const metadata = JSON.parse(metadataStr);
98
+ return extractVersionFromMetadataObject(metadata);
96
99
  }
97
- // Only include the source that contains our contract
98
- const contractSourceId = sourceIds[sourceName] ?? sourceId++;
99
- const contractNodeId = contractSourceId + 1000; // Use an offset to avoid ID conflicts
100
- compilerOutput.sources[sourceName] = {
101
- id: contractSourceId,
102
- ast: createMinimalAst(sourceName, contractSourceId, [
103
- { name: artifact.contractName, nodeId: contractNodeId },
104
- ]),
105
- };
106
- compilerOutput.contracts[sourceName] = {};
107
- // Ensure the source is in compilerInput as well
108
- if (!compilerInput.sources[sourceName]) {
109
- compilerInput.sources[sourceName] = { content: '' };
100
+ catch {
101
+ return null;
102
+ }
103
+ }
104
+ /**
105
+ * Extract solc version from parsed metadata object.
106
+ */
107
+ function extractVersionFromMetadataObject(metadata) {
108
+ if (metadata?.compiler?.version) {
109
+ // Format: "0.8.10+commit.fc410830" -> extract "0.8.10"
110
+ return metadata.compiler.version.split('+')[0];
111
+ }
112
+ return null;
113
+ }
114
+ /**
115
+ * Convert metadata to compiler input.
116
+ * Metadata contains settings but not full source content.
117
+ */
118
+ function metadataToCompilerInput(metadata) {
119
+ if (!metadata?.settings)
120
+ return null;
121
+ const settings = metadata.settings;
122
+ const sources = {};
123
+ // Metadata has source hashes but not content
124
+ // We'll add empty placeholders that get filled in later
125
+ if (metadata.sources) {
126
+ for (const sourceName of Object.keys(metadata.sources)) {
127
+ // Some metadata includes content in keccak256 only
128
+ // We use empty content as placeholder
129
+ sources[sourceName] = { content: '' };
130
+ }
110
131
  }
111
- // Build bytecode output, ensuring proper format
112
- // Standard solc output has bytecode.object without 0x prefix
113
- const bytecode = {
114
- object: stripHexPrefix(artifact.evm?.bytecode?.object ?? artifact.bytecode ?? '0x'),
115
- opcodes: artifact.evm?.bytecode?.opcodes ?? '',
116
- sourceMap: artifact.evm?.bytecode?.sourceMap ?? '',
117
- linkReferences: artifact.evm?.bytecode?.linkReferences ?? artifact.linkReferences ?? {},
118
- generatedSources: artifact.evm?.bytecode?.generatedSources,
119
- functionDebugData: artifact.evm?.bytecode?.functionDebugData,
120
- };
121
- const deployedBytecode = {
122
- object: stripHexPrefix(artifact.evm?.deployedBytecode?.object ??
123
- artifact.deployedBytecode ??
124
- '0x'),
125
- opcodes: artifact.evm?.deployedBytecode?.opcodes ?? '',
126
- sourceMap: artifact.evm?.deployedBytecode?.sourceMap ?? '',
127
- linkReferences: artifact.evm?.deployedBytecode?.linkReferences ??
128
- artifact.deployedLinkReferences ??
129
- {},
130
- immutableReferences: artifact.evm?.deployedBytecode?.immutableReferences ??
131
- artifact.immutableReferences ??
132
- {},
133
- generatedSources: artifact.evm?.deployedBytecode?.generatedSources,
134
- functionDebugData: artifact.evm?.deployedBytecode?.functionDebugData,
135
- };
136
- // IMPORTANT: Do NOT provide method identifiers - let EDR compute them
137
- // EDR has internal "selector fixup" logic for function overloading that can fail
138
- // if we provide method identifiers that it then tries to reconcile with AST info.
139
- // The error "Failed to fix up the selector for ... #supportsInterface" happens
140
- // when EDR can't match provided selectors with overloaded functions.
141
- // By providing an empty object, EDR will compute selectors from the ABI directly.
142
- const methodIdentifiers = {};
143
- compilerOutput.contracts[sourceName][artifact.contractName] = {
144
- abi: artifact.abi,
145
- evm: {
146
- bytecode,
147
- deployedBytecode,
148
- methodIdentifiers,
149
- },
150
- metadata: artifact.metadata,
151
- devdoc: artifact.devdoc,
152
- userdoc: artifact.userdoc,
153
- storageLayout: artifact.storageLayout,
154
- };
155
132
  return {
156
- solcVersion,
157
- compilerInput,
158
- compilerOutput,
133
+ language: metadata.language ?? 'Solidity',
134
+ sources,
135
+ settings: {
136
+ optimizer: settings.optimizer ?? { enabled: false },
137
+ outputSelection: settings.outputSelection ?? {
138
+ '*': { '*': ['abi', 'evm.bytecode', 'evm.deployedBytecode'] },
139
+ },
140
+ remappings: settings.remappings,
141
+ metadata: settings.metadata,
142
+ evmVersion: settings.evmVersion,
143
+ viaIR: settings.viaIR,
144
+ },
159
145
  };
160
146
  }
161
147
  /**
162
- * Synthesize a minimal compilation from simple artifacts.
163
- * Used when artifacts don't have embedded solcInput.
148
+ * Simple string hash for grouping.
164
149
  */
165
- function synthesizeCompilation(artifacts, solcVersion) {
166
- const sources = {};
167
- const outputSources = {};
168
- const contracts = {};
169
- // First, group artifacts by source
150
+ function hashString(str) {
151
+ let hash = 0;
152
+ for (let i = 0; i < str.length; i++) {
153
+ const char = str.charCodeAt(i);
154
+ hash = ((hash << 5) - hash) + char;
155
+ hash = hash & hash; // Convert to 32-bit integer
156
+ }
157
+ return hash.toString(16);
158
+ }
159
+ /**
160
+ * Convert artifacts to compilation format.
161
+ * Flexibly extracts data from each artifact - uses solcInput if available,
162
+ * falls back to metadata for settings, or synthesizes minimal compilation.
163
+ */
164
+ export function artifactsToCompilations(artifacts, defaultSolcVersion, debug = false) {
165
+ if (debug) {
166
+ console.log(`[external-artifacts] Processing ${artifacts.length} artifacts`);
167
+ }
168
+ // Extract context from each artifact and group by compilation context
169
+ const artifactsByContext = new Map();
170
+ for (const artifact of artifacts) {
171
+ const context = extractCompilationContext(artifact, defaultSolcVersion, debug);
172
+ const richArt = artifact;
173
+ const immRefs = richArt.evm?.deployedBytecode?.immutableReferences ?? artifact.immutableReferences;
174
+ const immCount = immRefs ? Object.keys(immRefs).length : 0;
175
+ if (debug) {
176
+ console.log(` - ${artifact.contractName}: solcInput=${hasSolcInput(artifact)}, metadata=${hasMetadata(artifact)}, immutableReferences=${immCount} keys, group=${context.groupKey}`);
177
+ }
178
+ const existing = artifactsByContext.get(context.groupKey);
179
+ if (existing) {
180
+ existing.artifacts.push(artifact);
181
+ }
182
+ else {
183
+ artifactsByContext.set(context.groupKey, {
184
+ context,
185
+ artifacts: [artifact],
186
+ });
187
+ }
188
+ }
189
+ if (debug) {
190
+ console.log(`[external-artifacts] Grouped into ${artifactsByContext.size} compilations`);
191
+ }
192
+ // Convert each group to a compilation
193
+ const compilations = [];
194
+ for (const { context, artifacts: groupArtifacts } of artifactsByContext.values()) {
195
+ const compilation = buildCompilation(groupArtifacts, context, debug);
196
+ compilations.push(compilation);
197
+ }
198
+ return compilations;
199
+ }
200
+ /**
201
+ * Build a compilation from a group of artifacts sharing the same context.
202
+ * Flexibly extracts available data from each artifact.
203
+ */
204
+ function buildCompilation(artifacts, context, debug = false) {
205
+ // Start with context's compiler input or create a minimal one
206
+ const compilerInput = context.compilerInput
207
+ ? { ...context.compilerInput, sources: { ...context.compilerInput.sources } }
208
+ : {
209
+ language: 'Solidity',
210
+ sources: {},
211
+ settings: {
212
+ optimizer: { enabled: false },
213
+ outputSelection: {
214
+ '*': { '*': ['abi', 'evm.bytecode', 'evm.deployedBytecode'] },
215
+ },
216
+ },
217
+ };
218
+ const compilerOutput = {
219
+ sources: {},
220
+ contracts: {},
221
+ };
222
+ // Group artifacts by source for AST generation
170
223
  const contractsBySource = {};
171
224
  for (const artifact of artifacts) {
172
225
  if (!contractsBySource[artifact.sourceName]) {
@@ -177,64 +230,95 @@ function synthesizeCompilation(artifacts, solcVersion) {
177
230
  artifact,
178
231
  });
179
232
  }
180
- // Track IDs for AST nodes
181
- let nextId = 0;
182
- // Create sources with contract definitions in AST
233
+ // Track source IDs - use existing ones from compiler input if available
234
+ let nextSourceId = 0;
235
+ const sourceIds = {};
236
+ for (const srcName of Object.keys(compilerInput.sources)) {
237
+ sourceIds[srcName] = nextSourceId++;
238
+ }
239
+ // Track node IDs for AST
240
+ let nextNodeId = nextSourceId + 1000; // Offset to avoid conflicts
241
+ // Process each source
183
242
  for (const [sourceName, sourceContracts] of Object.entries(contractsBySource)) {
184
- const sourceId = nextId++;
185
- sources[sourceName] = { content: '' };
186
- contracts[sourceName] = {};
243
+ // Ensure source exists in compiler input
244
+ if (!compilerInput.sources[sourceName]) {
245
+ compilerInput.sources[sourceName] = { content: '' };
246
+ }
247
+ // Get or assign source ID
248
+ const sourceId = sourceIds[sourceName] ?? nextSourceId++;
249
+ sourceIds[sourceName] = sourceId;
187
250
  // Create contract nodes for AST
188
251
  const contractNodes = [];
189
252
  for (const { name } of sourceContracts) {
190
- const nodeId = nextId++;
191
- contractNodes.push({ name, nodeId });
253
+ contractNodes.push({ name, nodeId: nextNodeId++ });
192
254
  }
193
- outputSources[sourceName] = {
255
+ compilerOutput.sources[sourceName] = {
194
256
  id: sourceId,
195
257
  ast: createMinimalAst(sourceName, sourceId, contractNodes),
196
258
  };
259
+ compilerOutput.contracts[sourceName] = {};
197
260
  // Add contract outputs
198
261
  for (const { name, artifact } of sourceContracts) {
199
- contracts[sourceName][name] = {
262
+ const richArtifact = artifact;
263
+ // Build bytecode output, extracting from evm if available
264
+ const bytecode = {
265
+ object: stripHexPrefix(richArtifact.evm?.bytecode?.object ?? artifact.bytecode ?? '0x'),
266
+ opcodes: richArtifact.evm?.bytecode?.opcodes ?? '',
267
+ sourceMap: richArtifact.evm?.bytecode?.sourceMap ?? '',
268
+ linkReferences: richArtifact.evm?.bytecode?.linkReferences ?? artifact.linkReferences ?? {},
269
+ generatedSources: richArtifact.evm?.bytecode?.generatedSources,
270
+ functionDebugData: richArtifact.evm?.bytecode?.functionDebugData,
271
+ };
272
+ const immutableReferences = richArtifact.evm?.deployedBytecode?.immutableReferences ??
273
+ artifact.immutableReferences ??
274
+ {};
275
+ const deployedBytecode = {
276
+ object: stripHexPrefix(richArtifact.evm?.deployedBytecode?.object ??
277
+ artifact.deployedBytecode ??
278
+ '0x'),
279
+ opcodes: richArtifact.evm?.deployedBytecode?.opcodes ?? '',
280
+ sourceMap: richArtifact.evm?.deployedBytecode?.sourceMap ?? '',
281
+ linkReferences: richArtifact.evm?.deployedBytecode?.linkReferences ??
282
+ artifact.deployedLinkReferences ??
283
+ {},
284
+ immutableReferences,
285
+ generatedSources: richArtifact.evm?.deployedBytecode?.generatedSources,
286
+ functionDebugData: richArtifact.evm?.deployedBytecode?.functionDebugData,
287
+ };
288
+ // IMPORTANT: Do NOT provide method identifiers - let EDR compute them
289
+ // EDR has internal "selector fixup" logic for function overloading that can fail
290
+ // if we provide method identifiers that it then tries to reconcile with AST info.
291
+ compilerOutput.contracts[sourceName][name] = {
200
292
  abi: artifact.abi,
201
293
  evm: {
202
- bytecode: {
203
- object: stripHexPrefix(artifact.bytecode),
204
- opcodes: '',
205
- sourceMap: '',
206
- linkReferences: artifact.linkReferences ?? {},
207
- },
208
- deployedBytecode: {
209
- object: stripHexPrefix(artifact.deployedBytecode),
210
- opcodes: '',
211
- sourceMap: '',
212
- linkReferences: artifact.deployedLinkReferences ?? {},
213
- immutableReferences: artifact.immutableReferences ?? {},
214
- },
215
- // Empty object - let EDR compute selectors to avoid selector fixup issues
216
- // with overloaded functions (consistent with richArtifactToCompilation)
294
+ bytecode,
295
+ deployedBytecode,
217
296
  methodIdentifiers: {},
218
297
  },
298
+ metadata: richArtifact.metadata,
299
+ devdoc: richArtifact.devdoc,
300
+ userdoc: richArtifact.userdoc,
301
+ storageLayout: richArtifact.storageLayout,
219
302
  };
303
+ if (debug) {
304
+ const immRefKeys = Object.keys(immutableReferences);
305
+ console.log(`[external-artifacts] Built artifact: ${name}`);
306
+ console.log(` - sourceName: ${sourceName}`);
307
+ console.log(` - hasSolcInput: ${hasSolcInput(artifact)}`);
308
+ console.log(` - hasMetadata: ${hasMetadata(artifact)}`);
309
+ console.log(` - hasEvmData: ${hasEvmData(artifact)}`);
310
+ console.log(` - immutableReferences keys: ${immRefKeys.length}`);
311
+ if (immRefKeys.length > 0) {
312
+ console.log(` - immutableReferences sample:`, JSON.stringify(immutableReferences, null, 2).slice(0, 500));
313
+ }
314
+ console.log(` - deployedBytecode length: ${deployedBytecode.object.length / 2} bytes`);
315
+ }
220
316
  }
221
317
  }
222
318
  return {
223
- solcVersion,
224
- compilerInput: {
225
- language: 'Solidity',
226
- sources,
227
- settings: {
228
- optimizer: { enabled: false },
229
- outputSelection: {
230
- '*': { '*': ['abi', 'evm.bytecode', 'evm.deployedBytecode'] },
231
- },
232
- },
233
- },
234
- compilerOutput: {
235
- sources: outputSources,
236
- contracts,
237
- },
319
+ solcVersion: context.solcVersion,
320
+ compilerInput,
321
+ compilerOutput,
238
322
  };
239
323
  }
240
324
  function stripHexPrefix(hex) {
@@ -1 +1 @@
1
- {"version":3,"file":"converter.js","sourceRoot":"","sources":["../../src/artifacts/converter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"converter.js","sourceRoot":"","sources":["../../src/artifacts/converter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=converter.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"converter.test.d.ts","sourceRoot":"","sources":["../../src/artifacts/converter.test.ts"],"names":[],"mappings":""}