hardhat-deploy 2.0.0-next.7 → 2.0.0-next.71

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.
Files changed (124) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +120 -0
  3. package/dist/cli.d.ts +3 -0
  4. package/dist/cli.d.ts.map +1 -0
  5. package/dist/cli.js +197 -0
  6. package/dist/cli.js.map +1 -0
  7. package/dist/config/default.d.ts.map +1 -0
  8. package/dist/config/default.js +5 -0
  9. package/dist/config/default.js.map +1 -0
  10. package/dist/config/get-config.d.ts.map +1 -0
  11. package/dist/config/get-config.js +9 -0
  12. package/dist/config/get-config.js.map +1 -0
  13. package/dist/config/validation.d.ts.map +1 -0
  14. package/dist/config/validation.js +17 -0
  15. package/dist/config/validation.js.map +1 -0
  16. package/dist/generate-types.d.ts +5 -0
  17. package/dist/generate-types.d.ts.map +1 -0
  18. package/dist/generate-types.js +241 -0
  19. package/dist/generate-types.js.map +1 -0
  20. package/dist/helpers.d.ts +34 -0
  21. package/dist/helpers.d.ts.map +1 -0
  22. package/dist/{esm/helpers.js → helpers.js} +106 -73
  23. package/dist/helpers.js.map +1 -0
  24. package/dist/hook-handlers/config.d.ts.map +1 -0
  25. package/dist/hook-handlers/config.js +68 -0
  26. package/dist/hook-handlers/config.js.map +1 -0
  27. package/dist/hook-handlers/solidity.d.ts.map +1 -0
  28. package/dist/hook-handlers/solidity.js +21 -0
  29. package/dist/hook-handlers/solidity.js.map +1 -0
  30. package/dist/index.d.ts +8 -0
  31. package/dist/index.d.ts.map +1 -0
  32. package/dist/{esm/index.js → index.js} +20 -3
  33. package/dist/index.js.map +1 -0
  34. package/dist/postinstall.d.ts +3 -0
  35. package/dist/postinstall.d.ts.map +1 -0
  36. package/dist/postinstall.js +148 -0
  37. package/dist/postinstall.js.map +1 -0
  38. package/dist/{esm/tasks → tasks}/deploy.d.ts +1 -0
  39. package/dist/tasks/deploy.d.ts.map +1 -0
  40. package/dist/tasks/deploy.js +32 -0
  41. package/dist/tasks/deploy.js.map +1 -0
  42. package/dist/{esm/type-extensions.d.ts → type-extensions.d.ts} +2 -2
  43. package/dist/type-extensions.d.ts.map +1 -0
  44. package/dist/type-extensions.js.map +1 -0
  45. package/dist/types.d.ts +13 -0
  46. package/dist/types.d.ts.map +1 -0
  47. package/dist/types.js.map +1 -0
  48. package/dist/utils/files.d.ts +10 -0
  49. package/dist/utils/files.d.ts.map +1 -0
  50. package/dist/utils/files.js +44 -0
  51. package/dist/utils/files.js.map +1 -0
  52. package/dist/v1-detection.d.ts +12 -0
  53. package/dist/v1-detection.d.ts.map +1 -0
  54. package/dist/v1-detection.js +118 -0
  55. package/dist/v1-detection.js.map +1 -0
  56. package/dist/v1-entry.cjs +92 -0
  57. package/package.json +57 -27
  58. package/src/cli.ts +246 -0
  59. package/src/config/default.ts +6 -0
  60. package/src/config/get-config.ts +12 -0
  61. package/src/config/validation.ts +25 -0
  62. package/src/generate-types.ts +278 -0
  63. package/src/helpers.ts +311 -0
  64. package/src/hook-handlers/config.ts +80 -0
  65. package/src/hook-handlers/solidity.ts +33 -0
  66. package/src/index.ts +53 -0
  67. package/src/postinstall.ts +166 -0
  68. package/src/tasks/deploy.ts +43 -0
  69. package/src/type-extensions.ts +12 -0
  70. package/src/types.ts +9 -0
  71. package/src/utils/files.ts +59 -0
  72. package/src/v1-entry.cjs +92 -0
  73. package/templates/basic/README.md +44 -0
  74. package/templates/basic/contracts/Counter.sol +19 -0
  75. package/templates/basic/contracts/Counter.t.sol +29 -0
  76. package/templates/basic/deploy/01_deploy_counter.ts +13 -0
  77. package/templates/basic/hardhat.config.ts +50 -0
  78. package/templates/basic/package.json +31 -0
  79. package/templates/basic/pnpm-lock.yaml +1643 -0
  80. package/templates/basic/rocketh/config.ts +65 -0
  81. package/templates/basic/rocketh/deploy.ts +20 -0
  82. package/templates/basic/rocketh/environment.ts +22 -0
  83. package/templates/basic/test/Counter.ts +61 -0
  84. package/templates/basic/tsconfig.json +13 -0
  85. package/dist/esm/config/default.d.ts.map +0 -1
  86. package/dist/esm/config/default.js +0 -8
  87. package/dist/esm/config/default.js.map +0 -1
  88. package/dist/esm/config/get-config.d.ts.map +0 -1
  89. package/dist/esm/config/get-config.js +0 -8
  90. package/dist/esm/config/get-config.js.map +0 -1
  91. package/dist/esm/config/validation.d.ts.map +0 -1
  92. package/dist/esm/config/validation.js +0 -16
  93. package/dist/esm/config/validation.js.map +0 -1
  94. package/dist/esm/generate-types.d.ts +0 -6
  95. package/dist/esm/generate-types.d.ts.map +0 -1
  96. package/dist/esm/generate-types.js +0 -198
  97. package/dist/esm/generate-types.js.map +0 -1
  98. package/dist/esm/helpers.d.ts +0 -18
  99. package/dist/esm/helpers.d.ts.map +0 -1
  100. package/dist/esm/helpers.js.map +0 -1
  101. package/dist/esm/hook-handlers/config.d.ts.map +0 -1
  102. package/dist/esm/hook-handlers/config.js +0 -16
  103. package/dist/esm/hook-handlers/config.js.map +0 -1
  104. package/dist/esm/hook-handlers/solidity.d.ts.map +0 -1
  105. package/dist/esm/hook-handlers/solidity.js +0 -15
  106. package/dist/esm/hook-handlers/solidity.js.map +0 -1
  107. package/dist/esm/index.d.ts +0 -5
  108. package/dist/esm/index.d.ts.map +0 -1
  109. package/dist/esm/index.js.map +0 -1
  110. package/dist/esm/tasks/deploy.d.ts.map +0 -1
  111. package/dist/esm/tasks/deploy.js +0 -21
  112. package/dist/esm/tasks/deploy.js.map +0 -1
  113. package/dist/esm/type-extensions.d.ts.map +0 -1
  114. package/dist/esm/type-extensions.js.map +0 -1
  115. package/dist/esm/types.d.ts +0 -15
  116. package/dist/esm/types.d.ts.map +0 -1
  117. package/dist/esm/types.js.map +0 -1
  118. /package/dist/{esm/config → config}/default.d.ts +0 -0
  119. /package/dist/{esm/config → config}/get-config.d.ts +0 -0
  120. /package/dist/{esm/config → config}/validation.d.ts +0 -0
  121. /package/dist/{esm/hook-handlers → hook-handlers}/config.d.ts +0 -0
  122. /package/dist/{esm/hook-handlers → hook-handlers}/solidity.d.ts +0 -0
  123. /package/dist/{esm/type-extensions.js → type-extensions.js} +0 -0
  124. /package/dist/{esm/types.js → types.js} +0 -0
@@ -0,0 +1,241 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ import { slash, traverse } from './utils/files.js';
4
+ function writeIfDifferent(filePath, newTextContent) {
5
+ // Ensure we're working with a string
6
+ const contentToWrite = String(newTextContent);
7
+ try {
8
+ let existingContent;
9
+ try {
10
+ existingContent = fs.readFileSync(filePath, 'utf8');
11
+ }
12
+ catch (error) {
13
+ // console.log(`do not exist? => writing ${filePath}`);
14
+ // File doesn't exist, write and return
15
+ fs.writeFileSync(filePath, contentToWrite);
16
+ return { written: true, reason: 'File did not exist' };
17
+ }
18
+ // Simple string comparison
19
+ if (contentToWrite !== existingContent) {
20
+ // console.log(`content different => writing ${filePath}`);
21
+ fs.writeFileSync(filePath, contentToWrite);
22
+ return { written: true, reason: 'Content was different' };
23
+ }
24
+ return { written: false, reason: 'Content was identical' };
25
+ }
26
+ catch (error) {
27
+ console.error('Error in writeIfDifferent:', error);
28
+ throw error;
29
+ }
30
+ }
31
+ function ensureDirExistsSync(folderPath) {
32
+ // Check if directory already exists
33
+ if (fs.existsSync(folderPath)) {
34
+ return { created: false, reason: 'Directory already exists' };
35
+ }
36
+ // console.log(`do not exist? => mkdir ${folderPath}`);
37
+ // Directory doesn't exist, create it
38
+ fs.mkdirSync(folderPath, { recursive: true });
39
+ return { created: true, reason: 'Directory was created' };
40
+ }
41
+ function writeArtifactToFile(folder, canonicalName, data, mode) {
42
+ const name = canonicalName.split('/').pop();
43
+ const artifactName = `Artifact_${name}`;
44
+ const tsFilepath = path.join(folder, 'artifacts', canonicalName) + '.ts';
45
+ const folderPath = path.dirname(tsFilepath);
46
+ ensureDirExistsSync(folderPath);
47
+ if (mode === 'typescript') {
48
+ const newContent = `export const ${artifactName}: ${JSON.stringify(data, null, 2)} = ${JSON.stringify(data, null, 2)} as const;`;
49
+ writeIfDifferent(tsFilepath, newContent);
50
+ }
51
+ else if (mode === 'javascript') {
52
+ const newContent = `export const ${artifactName} = /** @type {const} **/ (${JSON.stringify(data, null, 2)});`;
53
+ const dtsContent = `export declare const ${artifactName}: ${JSON.stringify(data, null, 2)};`;
54
+ const jsFilepath = path.join(folder, 'artifacts', canonicalName) + '.js';
55
+ writeIfDifferent(jsFilepath, newContent);
56
+ writeIfDifferent(jsFilepath.replace(/\.js$/, '.d.ts'), dtsContent);
57
+ }
58
+ }
59
+ function writeArtifactIndexToFile(folder, data, mode) {
60
+ const tsFilepath = path.join(folder, 'artifacts', 'index') + '.ts';
61
+ const folderPath = path.dirname(tsFilepath);
62
+ ensureDirExistsSync(folderPath);
63
+ if (mode === 'typescript') {
64
+ let newContent = '';
65
+ for (const canonicalName of Object.keys(data)) {
66
+ const transformedName = canonicalName.replaceAll('/', '_').replaceAll('.', '_');
67
+ const name = canonicalName.split('/').pop();
68
+ const artifactName = `Artifact_${name}`;
69
+ const importNaming = canonicalName != name ? `${artifactName} as ${transformedName}` : `${artifactName} as ${name}`;
70
+ newContent += `export {${importNaming}} from './${canonicalName}.js';\n`;
71
+ }
72
+ writeIfDifferent(tsFilepath, newContent);
73
+ }
74
+ else if (mode === 'javascript') {
75
+ let newContent = '';
76
+ for (const canonicalName of Object.keys(data)) {
77
+ const transformedName = canonicalName.replaceAll('/', '_').replaceAll('.', '_');
78
+ const name = canonicalName.split('/').pop();
79
+ const artifactName = `Artifact_${name}`;
80
+ const importNaming = canonicalName != name ? `${artifactName} as ${transformedName}` : `${artifactName} as ${name}`;
81
+ newContent += `export {${importNaming}} from './${canonicalName}.js';\n`;
82
+ }
83
+ const jsFilepath = path.join(folder, 'artifacts', 'index') + '.js';
84
+ writeIfDifferent(jsFilepath, newContent);
85
+ writeIfDifferent(jsFilepath.replace(/\.js$/, '.d.ts'), newContent);
86
+ }
87
+ }
88
+ function writeABIDefinitionToFile(folder, canonicalName, data, mode) {
89
+ const nameAsPath = canonicalName.split('/');
90
+ const name = nameAsPath[nameAsPath.length - 1];
91
+ const abiName = `Abi_${name}`;
92
+ const artifactName = `Artifact_${name}`;
93
+ const relativePath = `../`.repeat(nameAsPath.length);
94
+ const tsFilepath = path.join(folder, 'abis', canonicalName) + '.ts';
95
+ const folderPath = path.dirname(tsFilepath);
96
+ ensureDirExistsSync(folderPath);
97
+ if (mode === 'typescript') {
98
+ const newContent = `import {${artifactName}} from '${relativePath}artifacts/${canonicalName}.js';
99
+ export type ${abiName} = (typeof ${artifactName})['abi'];\n`;
100
+ writeIfDifferent(tsFilepath, newContent);
101
+ }
102
+ else if (mode === 'javascript') {
103
+ const jsFilepath = path.join(folder, 'abis', canonicalName) + '.js';
104
+ const newContent = `export {};\n`;
105
+ const dtsContent = `import {${artifactName}} from '${relativePath}artifacts/${canonicalName}.js';
106
+ export type ${abiName} = (typeof ${artifactName})['abi'];\n`;
107
+ writeIfDifferent(jsFilepath, newContent);
108
+ writeIfDifferent(jsFilepath.replace(/\.js$/, '.d.ts'), dtsContent);
109
+ }
110
+ }
111
+ function writeABIDefinitionIndexToFile(folder, data, mode) {
112
+ const tsFilepath = path.join(folder, 'abis', 'index') + '.ts';
113
+ const folderPath = path.dirname(tsFilepath);
114
+ ensureDirExistsSync(folderPath);
115
+ if (mode === 'typescript') {
116
+ let newContent = '';
117
+ for (const canonicalName of Object.keys(data)) {
118
+ const transformedName = canonicalName.replaceAll('/', '_').replaceAll('.', '_');
119
+ const name = canonicalName.split('/').pop();
120
+ const abiName = `Abi_${name}`;
121
+ const importNaming = canonicalName != name ? `${abiName} as ${transformedName}` : `${abiName} as ${name}`;
122
+ newContent += `export {${importNaming}} from "./${canonicalName}.js"\n`;
123
+ }
124
+ writeIfDifferent(tsFilepath, newContent);
125
+ }
126
+ else if (mode === 'javascript') {
127
+ const jsFilepath = path.join(folder, 'abis', 'index') + '.js';
128
+ let newContent = '';
129
+ for (const canonicalName of Object.keys(data)) {
130
+ const transformedName = canonicalName.replaceAll('/', '_').replaceAll('.', '_');
131
+ const name = canonicalName.split('/').pop();
132
+ const abiName = `Abi_${name}`;
133
+ const importNaming = canonicalName != name ? `${abiName} as ${transformedName}` : `${abiName} as ${name}`;
134
+ newContent += `export {${importNaming}} from "./${canonicalName}.js"\n`;
135
+ }
136
+ writeIfDifferent(jsFilepath, newContent);
137
+ writeIfDifferent(jsFilepath.replace(/\.js$/, '.d.ts'), newContent);
138
+ }
139
+ }
140
+ export async function generateTypes(paths, config) {
141
+ const buildInfoCache = new Map();
142
+ const allArtifacts = {};
143
+ const shortNameDict = {};
144
+ for (const artifactsPath of paths.artifacts) {
145
+ const files = traverse(artifactsPath, [], artifactsPath, (name) => name != 'build-info' && !name.endsWith('.t.sol') && !name.endsWith('.dbg.json'));
146
+ // console.log('--------------------------');
147
+ // console.log(files);
148
+ // console.log('--------------------------');
149
+ for (const file of files) {
150
+ const filepath = file.path;
151
+ if (file.directory || !filepath.endsWith('.json')) {
152
+ continue;
153
+ }
154
+ const filename = slash(path.basename(filepath));
155
+ const dirname = slash(path.dirname(file.relativePath));
156
+ // const namePath = dirname.replace('.sol', '');
157
+ const contractName = filename.replace('.json', '');
158
+ // const shortName = artifact.artifactsEmitted[i];
159
+ // console.log({path: filepath});
160
+ const content = fs.readFileSync(filepath, 'utf-8');
161
+ const parsed = JSON.parse(content);
162
+ if (!parsed.buildInfoId)
163
+ continue;
164
+ // TODO read config for artifacts folder
165
+ let buildInfoFilepath = path.join(artifactsPath, 'build-info', `${parsed.buildInfoId}.output.json`);
166
+ if (!parsed.buildInfoId) {
167
+ // support hardhat v2 artifacts files
168
+ if (fs.existsSync(filepath.replace('.json', '.dbg.json'))) {
169
+ // console.warn(`Artifact ${filepath} does not have a buildInfoId, but found a .dbg.json file. Using that instead.`);
170
+ const dbgContent = fs.readFileSync(filepath.replace('.json', '.dbg.json'), 'utf-8');
171
+ const dbgParsed = JSON.parse(dbgContent);
172
+ const buildInfoRelativePath = dbgParsed.buildInfo;
173
+ parsed.buildInfoId = path.basename(buildInfoRelativePath, '.json');
174
+ // console.log({buildInfoRelativePath, buildInfoId: parsed.buildInfoId});
175
+ buildInfoFilepath = path.join(artifactsPath, 'build-info', `${parsed.buildInfoId}.json`);
176
+ }
177
+ }
178
+ // const backupBuildInfoFilepath = path.join(
179
+ // './generated',
180
+ // buildInfoFilepath.slice(buildInfoFilepath.indexOf('/', 1))
181
+ // );
182
+ let buildInfoFilepathToUse = buildInfoFilepath;
183
+ // if (!fs.existsSync(buildInfoFilepathToUse)) {
184
+ // buildInfoFilepathToUse = backupBuildInfoFilepath;
185
+ // }
186
+ let parsedBuildInfo;
187
+ if (!buildInfoCache.has(buildInfoFilepathToUse)) {
188
+ if (!fs.existsSync(buildInfoFilepathToUse))
189
+ continue;
190
+ const buildInfoContent = fs.readFileSync(buildInfoFilepathToUse, 'utf-8');
191
+ parsedBuildInfo = JSON.parse(buildInfoContent);
192
+ buildInfoCache.set(buildInfoFilepathToUse, parsedBuildInfo);
193
+ }
194
+ else {
195
+ parsedBuildInfo = buildInfoCache.get(buildInfoFilepathToUse);
196
+ }
197
+ const solidityOutput = parsedBuildInfo.output.contracts[parsed.inputSourceName][contractName];
198
+ const hardhatArtifactObject = { ...parsed, ...solidityOutput };
199
+ const { buildInfoId, _format, ...artifactObject } = hardhatArtifactObject;
200
+ const fullName = `${dirname}/${contractName}`;
201
+ allArtifacts[fullName] = artifactObject;
202
+ if (shortNameDict[contractName]) {
203
+ delete allArtifacts[contractName];
204
+ }
205
+ else {
206
+ allArtifacts[contractName] = artifactObject;
207
+ shortNameDict[contractName] = true;
208
+ }
209
+ }
210
+ }
211
+ for (const key of Object.keys(allArtifacts)) {
212
+ if (key.indexOf('/') >= 0) {
213
+ const split = key.split('/');
214
+ if (split.length > 1) {
215
+ const shortName = split[split.length - 1];
216
+ if (allArtifacts[shortName]) {
217
+ delete allArtifacts[key];
218
+ }
219
+ }
220
+ }
221
+ }
222
+ // for (const key of Object.keys(allArtifacts)) {
223
+ // const artifact = allArtifacts[key];
224
+ // writeFiles(key, artifact, config);
225
+ // }
226
+ // // const json = hre.config.generateTypedArtifacts.json || [];
227
+ // // json.push('./generated/_artifacts.json');
228
+ // // writeFiles(undefined, allArtifacts, {...hre.config.generateTypedArtifacts, json: json});
229
+ // writeFiles(undefined, allArtifacts, config);
230
+ for (const destination of config.destinations) {
231
+ const generatedFolder = destination.folder;
232
+ const mode = destination.mode;
233
+ for (const key of Object.keys(allArtifacts)) {
234
+ writeABIDefinitionToFile(generatedFolder, key, allArtifacts[key], mode);
235
+ writeArtifactToFile(generatedFolder, key, allArtifacts[key], mode);
236
+ }
237
+ writeArtifactIndexToFile(generatedFolder, allArtifacts, mode);
238
+ writeABIDefinitionIndexToFile(generatedFolder, allArtifacts, mode);
239
+ }
240
+ }
241
+ //# sourceMappingURL=generate-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-types.js","sourceRoot":"","sources":["../src/generate-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import { NetworkUserConfig, SensitiveString } from 'hardhat/types/config';
2
+ import { HardhatRuntimeEnvironment } from 'hardhat/types/hre';
3
+ import { NetworkConnection } from 'hardhat/types/network';
4
+ import type { Environment, UnresolvedUnknownNamedAccounts, UnresolvedNetworkSpecificData } from 'rocketh/types';
5
+ export declare function setupHardhatDeploy<Extensions extends Record<string, (env: Environment<any, any, any>) => any> = {}, NamedAccounts extends UnresolvedUnknownNamedAccounts = UnresolvedUnknownNamedAccounts, Data extends UnresolvedNetworkSpecificData = UnresolvedNetworkSpecificData>(extensions: Extensions): {
6
+ loadEnvironmentFromHardhat: (required: {
7
+ hre: HardhatRuntimeEnvironment;
8
+ connection?: NetworkConnection;
9
+ }) => Promise<import("rocketh/types").EnhancedEnvironment<UnresolvedUnknownNamedAccounts, UnresolvedNetworkSpecificData, import("rocketh/types").UnknownDeployments, Extensions, Record<string, unknown>>>;
10
+ };
11
+ export declare function generateForkConfig(params: {
12
+ hre: HardhatRuntimeEnvironment;
13
+ connection?: NetworkConnection;
14
+ }): Promise<{
15
+ provider: any;
16
+ environment: string | {
17
+ fork: string;
18
+ };
19
+ connection: NetworkConnection;
20
+ isFork: boolean;
21
+ }>;
22
+ export declare function loadEnvironmentFromHardhat<NamedAccounts extends UnresolvedUnknownNamedAccounts = UnresolvedUnknownNamedAccounts, Data extends UnresolvedNetworkSpecificData = UnresolvedNetworkSpecificData>(params: {
23
+ hre: HardhatRuntimeEnvironment;
24
+ connection?: NetworkConnection;
25
+ }): Promise<Environment<NamedAccounts, Data>>;
26
+ export declare function getRPC(networkName: string): string | SensitiveString | undefined;
27
+ export declare function getMnemonic(networkName?: string, doNotDefault?: boolean): string | SensitiveString | undefined;
28
+ export declare function getAccounts(networkName?: string, doNotDefault?: boolean): {
29
+ mnemonic: string | SensitiveString;
30
+ } | undefined;
31
+ export declare function addNetworksFromEnv(networks?: Record<string, NetworkUserConfig>): Record<string, NetworkUserConfig>;
32
+ export declare function addNetworksFromKnownList(networks?: Record<string, NetworkUserConfig>): Record<string, NetworkUserConfig>;
33
+ export declare function addForkConfiguration(networks: Record<string, NetworkUserConfig>): Record<string, NetworkUserConfig>;
34
+ //# sourceMappingURL=helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AACA,OAAO,EAIN,iBAAiB,EACjB,eAAe,EACf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAC,yBAAyB,EAAC,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAC,iBAAiB,EAAC,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAC,WAAW,EAAE,8BAA8B,EAAE,6BAA6B,EAAC,MAAM,eAAe,CAAC;AAI9G,wBAAgB,kBAAkB,CACjC,UAAU,SAAS,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,EAAE,EAChF,aAAa,SAAS,8BAA8B,GAAG,8BAA8B,EACrF,IAAI,SAAS,6BAA6B,GAAG,6BAA6B,EACzE,UAAU,EAAE,UAAU;2CAEZ;QAAC,GAAG,EAAE,yBAAyB,CAAC;QAAC,UAAU,CAAC,EAAE,iBAAiB,CAAA;KAAC;EAY3E;AAED,wBAAsB,kBAAkB,CACvC,MAAM,EAAE;IAAC,GAAG,EAAE,yBAAyB,CAAC;IAAC,UAAU,CAAC,EAAE,iBAAiB,CAAA;CAAC,GAItE,OAAO,CAAC;IAAC,QAAQ,EAAE,GAAG,CAAC;IAAC,WAAW,EAAE,MAAM,GAAG;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC,CAAC;IAAC,UAAU,EAAE,iBAAiB,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAC,CAAC,CAsEhH;AAED,wBAAsB,0BAA0B,CAC/C,aAAa,SAAS,8BAA8B,GAAG,8BAA8B,EACrF,IAAI,SAAS,6BAA6B,GAAG,6BAA6B,EAE1E,MAAM,EAAE;IAAC,GAAG,EAAE,yBAAyB,CAAC;IAAC,UAAU,CAAC,EAAE,iBAAiB,CAAA;CAAC,GAKtE,OAAO,CAAC,WAAW,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,CAW3C;AAkBD,wBAAgB,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,eAAe,GAAG,SAAS,CAuBhF;AAED,wBAAgB,WAAW,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,eAAe,GAAG,SAAS,CAiB9G;AAED,wBAAgB,WAAW,CAC1B,WAAW,CAAC,EAAE,MAAM,EACpB,YAAY,CAAC,EAAE,OAAO,GACpB;IAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,CAAA;CAAC,GAAG,SAAS,CAMlD;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAuBlH;AAGD,wBAAgB,wBAAwB,CACvC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,GAC1C,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAwBnC;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAoDnH"}
@@ -1,44 +1,53 @@
1
1
  import { configVariable } from 'hardhat/config';
2
- import { loadEnvironment } from 'rocketh';
3
- export async function loadEnvironmentFromHardhat({ hre, context }, options) {
4
- const connection = await hre.network.connect();
2
+ import { enhanceEnvIfNeeded, chainByCanonicalName } from 'rocketh';
3
+ import { loadEnvironmentFromFiles } from '@rocketh/node';
4
+ export function setupHardhatDeploy(extensions) {
5
+ async function loadEnvironmentFromHardhatWithExtensions(required) {
6
+ const env = await loadEnvironmentFromHardhat(required);
7
+ return enhanceEnvIfNeeded(env, extensions);
8
+ }
9
+ return {
10
+ loadEnvironmentFromHardhat: loadEnvironmentFromHardhatWithExtensions,
11
+ };
12
+ }
13
+ export async function generateForkConfig(params) {
14
+ const fork = process.env.HARDHAT_FORK;
15
+ const connection = params.connection || fork
16
+ ? await params.hre.network.connect({ network: 'fork' })
17
+ : await params.hre.network.connect();
5
18
  let provider = connection.provider;
6
- let network = connection.networkName;
19
+ let environment = connection.networkName;
7
20
  let forkChainId;
8
- const fork = process.env.HARDHAT_FORK;
9
21
  if (fork) {
10
- if (options?.useChainIdOfForkedNetwork) {
11
- const forkNetworkConfig = hre.config.networks[fork];
12
- if (forkNetworkConfig.type === 'edr') {
13
- forkChainId = forkNetworkConfig.chainId;
14
- }
15
- else if (forkNetworkConfig.chainId) {
16
- forkChainId = forkNetworkConfig.chainId;
17
- }
18
- else {
19
- if ('url' in forkNetworkConfig) {
20
- const url = await forkNetworkConfig.url.getUrl();
21
- const response = await fetch(url, {
22
- method: 'POST',
23
- headers: {
24
- 'Content-Type': 'application/json',
25
- },
26
- body: JSON.stringify({
27
- jsonrpc: '2.0',
28
- id: 1,
29
- method: 'eth_chainId',
30
- params: [],
31
- }),
32
- });
33
- const json = (await response.json());
34
- forkChainId = Number(json.result);
35
- }
36
- else {
37
- throw new Error(`cannot fetch chainId`);
38
- }
39
- }
40
- }
41
- network = {
22
+ // if (options?.useChainIdOfForkedNetwork) {
23
+ // const forkNetworkConfig = params.hre.config.networks[fork];
24
+ // if (forkNetworkConfig.type === 'edr-simulated') {
25
+ // forkChainId = forkNetworkConfig.chainId;
26
+ // } else if (forkNetworkConfig.chainId) {
27
+ // forkChainId = forkNetworkConfig.chainId;
28
+ // } else {
29
+ // if ('url' in forkNetworkConfig) {
30
+ // const url = await forkNetworkConfig.url.getUrl();
31
+ // const response = await fetch(url, {
32
+ // method: 'POST',
33
+ // headers: {
34
+ // 'Content-Type': 'application/json',
35
+ // },
36
+ // body: JSON.stringify({
37
+ // jsonrpc: '2.0',
38
+ // id: 1,
39
+ // method: 'eth_chainId',
40
+ // params: [],
41
+ // }),
42
+ // });
43
+ // const json = (await response.json()) as {result: string};
44
+ // forkChainId = Number(json.result);
45
+ // } else {
46
+ // throw new Error(`cannot fetch chainId`);
47
+ // }
48
+ // }
49
+ // }
50
+ environment = {
42
51
  fork,
43
52
  };
44
53
  }
@@ -62,19 +71,38 @@ export async function loadEnvironmentFromHardhat({ hre, context }, options) {
62
71
  },
63
72
  });
64
73
  }
65
- console.log(`loading environments...`);
66
- return loadEnvironment({
74
+ return { provider, environment, connection, isFork: !!fork };
75
+ }
76
+ export async function loadEnvironmentFromHardhat(params) {
77
+ const { connection, environment, provider, isFork } = await generateForkConfig(params);
78
+ // console.log(`loading environments...`);
79
+ return loadEnvironmentFromFiles({
67
80
  provider,
68
- network,
69
- }, context || { artifacts: {} } // TODO
70
- );
81
+ environment,
82
+ extra: {
83
+ connection,
84
+ },
85
+ saveDeployments: isFork ? false : undefined,
86
+ });
71
87
  }
72
- export function getRPC(networkName) {
73
- const variableName = 'ETH_NODE_URI_' + networkName;
88
+ function getVariable(prefix, name) {
89
+ // We transform dash into underscore as dash are not supported everywhere in env var names
90
+ const variableName = (prefix + name).replaceAll('-', '_');
74
91
  let uri = process.env[variableName];
75
92
  if (uri === 'SECRET') {
76
93
  return configVariable(`SECRET_${variableName}`);
77
94
  }
95
+ else if (uri?.startsWith('SECRET:')) {
96
+ const splitted = uri.split(':');
97
+ if (splitted.length !== 2) {
98
+ throw new Error(`invalid secret uri ${uri}`);
99
+ }
100
+ return configVariable(`SECRET_${prefix + splitted[1]}`);
101
+ }
102
+ return uri;
103
+ }
104
+ export function getRPC(networkName) {
105
+ let uri = getVariable('ETH_NODE_URI_', networkName);
78
106
  if (uri && uri !== '') {
79
107
  return uri;
80
108
  }
@@ -94,25 +122,28 @@ export function getRPC(networkName) {
94
122
  }
95
123
  return uri;
96
124
  }
97
- export function getMnemonic(networkName) {
125
+ export function getMnemonic(networkName, doNotDefault) {
98
126
  if (networkName) {
99
- const variableName = 'MNEMONIC_' + networkName;
100
- const mnemonic = process.env[variableName];
101
- if (mnemonic === 'SECRET') {
102
- return configVariable(`SECRET_${variableName}`);
103
- }
127
+ const mnemonic = getVariable('MNEMONIC_', networkName);
104
128
  if (mnemonic && mnemonic !== '') {
105
129
  return mnemonic;
106
130
  }
107
131
  }
108
132
  const mnemonic = process.env.MNEMONIC;
109
133
  if (!mnemonic || mnemonic === '') {
134
+ if (doNotDefault) {
135
+ return undefined;
136
+ }
110
137
  return 'test test test test test test test test test test test junk';
111
138
  }
112
139
  return mnemonic;
113
140
  }
114
- export function getAccounts(networkName) {
115
- return { mnemonic: getMnemonic(networkName) };
141
+ export function getAccounts(networkName, doNotDefault) {
142
+ const mnemonic = getMnemonic(networkName, doNotDefault);
143
+ if (!mnemonic) {
144
+ return undefined;
145
+ }
146
+ return { mnemonic };
116
147
  }
117
148
  export function addNetworksFromEnv(networks) {
118
149
  const newNetworks = networks ? { ...networks } : {};
@@ -140,29 +171,30 @@ export function addNetworksFromEnv(networks) {
140
171
  }
141
172
  return newNetworks;
142
173
  }
143
- export function populateNetworksFromEnv(networks) {
144
- const newNetworks = {};
145
- for (const networkName of Object.keys(networks)) {
146
- const network = networks[networkName];
147
- if (network.type === 'edr') {
148
- // we leave memory network alone
149
- newNetworks[networkName] = network;
150
- }
151
- else {
152
- const url = getRPC(networkName);
174
+ const listOfNetworkNamesWithTestAccountAllowed = ['hardhat', 'localhost', 'memory', 'test'];
175
+ export function addNetworksFromKnownList(networks) {
176
+ const newNetworks = networks ? { ...networks } : {};
177
+ const canonicalNames = Object.keys(chainByCanonicalName);
178
+ for (const canonicalName of canonicalNames) {
179
+ const chain = chainByCanonicalName[canonicalName];
180
+ const url = getRPC(canonicalName) || chain.rpcUrls.default.http[0];
181
+ if (!newNetworks[canonicalName]) {
153
182
  if (url) {
154
- newNetworks[networkName] = {
155
- ...network,
183
+ newNetworks[canonicalName] = {
184
+ type: 'http',
156
185
  url,
157
- accounts: getAccounts(networkName),
186
+ accounts: getAccounts(canonicalName, !listOfNetworkNamesWithTestAccountAllowed.includes(canonicalName)),
187
+ chainType: chain.chainType === 'op-stack' ? 'op' : undefined,
188
+ chainId: chain.id,
158
189
  };
159
190
  }
160
191
  else {
161
- if (!('url' in network) || !network.url) {
162
- console.error(`no url for network ${networkName}`);
163
- }
192
+ console.error(`no url for chain ${canonicalName}`);
164
193
  }
165
194
  }
195
+ else {
196
+ // console.error(`duplicated chain ${canonicalName}`);
197
+ }
166
198
  }
167
199
  return newNetworks;
168
200
  }
@@ -173,6 +205,7 @@ export function addForkConfiguration(networks) {
173
205
  if (currentNetworkName &&
174
206
  currentNetworkName !== 'hardhat' &&
175
207
  currentNetworkName !== 'edr' &&
208
+ currentNetworkName !== 'edr-simulated' &&
176
209
  currentNetworkName !== 'memory') {
177
210
  const currentNetwork = networks[currentNetworkName];
178
211
  if (currentNetwork) {
@@ -192,13 +225,13 @@ export function addForkConfiguration(networks) {
192
225
  }
193
226
  }
194
227
  }
195
- const existingHardhat = networks.hardhat && networks.hardhat.type === 'edr' ? networks.hardhat : { type: 'edr', chainType: 'l1' };
228
+ const existingForkConfiguration = networks.fork && networks.fork.type === 'edr-simulated' ? networks.fork : { type: 'edr-simulated', chainType: 'l1' };
196
229
  const newNetworks = {
197
- ...populateNetworksFromEnv(networks),
198
- hardhat: {
199
- ...existingHardhat,
230
+ ...networks,
231
+ fork: {
232
+ ...existingForkConfiguration,
200
233
  ...{
201
- accounts: hardhatAccounts || existingHardhat?.accounts,
234
+ accounts: hardhatAccounts || existingForkConfiguration?.accounts,
202
235
  forking: forkURL
203
236
  ? {
204
237
  url: forkURL,
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/hook-handlers/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,qBAAqB,CAAC;8BAqD5B,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AAAtD,wBA0BE"}
@@ -0,0 +1,68 @@
1
+ import { getConfig } from '../config/get-config.js';
2
+ import { validateTypechainUserConfig } from '../config/validation.js';
3
+ function addIfNotPresent(array, value) {
4
+ if (array.indexOf(value) === -1) {
5
+ array.push(value);
6
+ }
7
+ }
8
+ function setupExtraSolcSettings(settings) {
9
+ settings.metadata = settings.metadata || {};
10
+ settings.metadata.useLiteralContent = true;
11
+ if (settings.outputSelection === undefined) {
12
+ settings.outputSelection = {
13
+ '*': {
14
+ '*': [],
15
+ '': [],
16
+ },
17
+ };
18
+ }
19
+ if (settings.outputSelection['*'] === undefined) {
20
+ settings.outputSelection['*'] = {
21
+ '*': [],
22
+ '': [],
23
+ };
24
+ }
25
+ if (settings.outputSelection['*']['*'] === undefined) {
26
+ settings.outputSelection['*']['*'] = [];
27
+ }
28
+ if (settings.outputSelection['*'][''] === undefined) {
29
+ settings.outputSelection['*'][''] = [];
30
+ }
31
+ addIfNotPresent(settings.outputSelection['*']['*'], 'abi');
32
+ // addIfNotPresent(settings.outputSelection['*']['*'], 'evm.bytecode');
33
+ // addIfNotPresent(settings.outputSelection['*']['*'], 'evm.deployedBytecode');
34
+ addIfNotPresent(settings.outputSelection['*']['*'], 'metadata');
35
+ addIfNotPresent(settings.outputSelection['*']['*'], 'devdoc');
36
+ addIfNotPresent(settings.outputSelection['*']['*'], 'userdoc');
37
+ addIfNotPresent(settings.outputSelection['*']['*'], 'storageLayout');
38
+ // addIfNotPresent(settings.outputSelection['*']['*'], 'evm.methodIdentifiers');
39
+ addIfNotPresent(settings.outputSelection['*']['*'], 'evm.gasEstimates');
40
+ // addIfNotPresent(settings.outputSelection["*"][""], "ir");
41
+ // addIfNotPresent(settings.outputSelection["*"][""], "irOptimized");
42
+ // addIfNotPresent(settings.outputSelection["*"][""], "ast");
43
+ }
44
+ export default async () => {
45
+ const handlers = {
46
+ validateUserConfig: validateTypechainUserConfig,
47
+ resolveUserConfig: async (userConfig, resolveConfigurationVariable, next) => {
48
+ const resolvedConfig = await next(userConfig, resolveConfigurationVariable);
49
+ const solidity = structuredClone(resolvedConfig.solidity);
50
+ const profiles = solidity.profiles;
51
+ for (const profileName of Object.keys(profiles)) {
52
+ const profile = profiles[profileName];
53
+ const compilers = profile.compilers;
54
+ for (const compiler of compilers) {
55
+ const settings = compiler.settings;
56
+ setupExtraSolcSettings(settings);
57
+ }
58
+ }
59
+ return {
60
+ ...resolvedConfig,
61
+ solidity,
62
+ generateTypedArtifacts: getConfig(userConfig.generateTypedArtifacts),
63
+ };
64
+ },
65
+ };
66
+ return handlers;
67
+ };
68
+ //# sourceMappingURL=config.js.map