rocketh 0.15.15 → 0.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/cli.js +1 -1
  3. package/dist/cli.js.map +1 -1
  4. package/dist/environment/deployment-store.d.ts +3 -0
  5. package/dist/environment/deployment-store.d.ts.map +1 -0
  6. package/dist/environment/deployment-store.js +49 -0
  7. package/dist/environment/deployment-store.js.map +1 -0
  8. package/dist/environment/utils/artifacts.d.ts +4 -4
  9. package/dist/executor/index.d.ts +15 -6
  10. package/dist/executor/index.d.ts.map +1 -1
  11. package/dist/executor/index.js +39 -316
  12. package/dist/executor/index.js.map +1 -1
  13. package/dist/index.d.ts +9 -7
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +8 -7
  16. package/dist/index.js.map +1 -1
  17. package/dist/internal/logging.d.ts +1 -1
  18. package/dist/internal/logging.d.ts.map +1 -1
  19. package/package.json +9 -12
  20. package/src/cli.ts +2 -1
  21. package/src/environment/deployment-store.ts +72 -0
  22. package/src/executor/index.ts +89 -398
  23. package/src/index.ts +10 -11
  24. package/src/environment/deployments.ts +0 -135
  25. package/src/environment/index.ts +0 -696
  26. package/src/environment/providers/BaseProvider.ts +0 -13
  27. package/src/environment/providers/TransactionHashTracker.ts +0 -22
  28. package/src/environment/utils/artifacts.ts +0 -176
  29. package/src/environment/utils/chains.ts +0 -192
  30. package/src/executor/setup.test.ts +0 -151
  31. package/src/internal/logging.ts +0 -80
  32. package/src/internal/types.ts +0 -5
  33. package/src/types.ts +0 -601
  34. package/src/utils/eth.ts +0 -96
  35. package/src/utils/extensions.test.ts +0 -53
  36. package/src/utils/extensions.ts +0 -72
  37. package/src/utils/json.ts +0 -33
package/CHANGELOG.md CHANGED
@@ -1,5 +1,16 @@
1
1
  # rocketh
2
2
 
3
+ ## 0.16.0
4
+
5
+ ### Minor Changes
6
+
7
+ - add @roceth/core
8
+
9
+ ### Patch Changes
10
+
11
+ - Updated dependencies
12
+ - @rocketh/core@0.16.0
13
+
3
14
  ## 0.15.15
4
15
 
5
16
  ### Patch Changes
package/dist/cli.js CHANGED
@@ -1,8 +1,8 @@
1
1
  #! /usr/bin/env node
2
2
  import { loadEnv } from 'ldenv';
3
- import { loadAndExecuteDeployments } from './index.js';
4
3
  import { Command } from 'commander';
5
4
  import pkg from '../package.json' with { type: 'json' };
5
+ import { loadAndExecuteDeployments } from './executor/index.js';
6
6
  loadEnv();
7
7
  const commandName = "rocketh";
8
8
  const program = new Command();
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAC,OAAO,EAAC,MAAM,OAAO,CAAC;AAC9B,OAAO,EAAkB,yBAAyB,EAAC,MAAM,YAAY,CAAC;AACtE,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAC;AAClC,OAAO,GAAG,MAAM,iBAAiB,CAAC,OAAM,IAAI,EAAE,MAAM,EAAC,CAAC;AAEtD,OAAO,EAAE,CAAC;AAEV,MAAM,WAAW,GAAG,SAAS,CAAC;AAC9B,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAC9B,OAAO;KACL,IAAI,CAAC,WAAW,CAAC;KACjB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;KACpB,KAAK,CAAC,GAAG,WAAW,EAAE,CAAC;KACvB,WAAW,CAAC,kDAAkD,CAAC;KAC/D,MAAM,CAAC,uBAAuB,EAAE,0DAA0D,CAAC;KAC3F,MAAM,CAAC,oBAAoB,EAAE,yCAAyC,CAAC;KACvE,MAAM,CAAC,2BAA2B,EAAE,oCAAoC,CAAC;KACzE,MAAM,CAAC,mBAAmB,EAAE,wBAAwB,CAAC;KACrD,MAAM,CAAC,gBAAgB,EAAE,yBAAyB,CAAC;KACnD,MAAM,CAAC,oBAAoB,EAAE,0BAA0B,CAAC;KACxD,cAAc,CAAC,2BAA2B,EAAE,oBAAoB,CAAC;KACjE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAEtB,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;AAG/B,yBAAyB,CAAC;IACzB,GAAI,OAA2B;IAC/B,QAAQ,EAAE,CAAC;IACX,mBAAmB,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;IACvD,YAAY,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;IAClD,eAAe,EAAE,OAAO,CAAC,eAAe;CACxC,CAAC,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAC,OAAO,EAAC,MAAM,OAAO,CAAC;AAC9B,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAC;AAClC,OAAO,GAAG,MAAM,iBAAiB,CAAC,OAAM,IAAI,EAAE,MAAM,EAAC,CAAC;AACtD,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAGhE,OAAO,EAAE,CAAC;AAEV,MAAM,WAAW,GAAG,SAAS,CAAC;AAC9B,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAC9B,OAAO;KACL,IAAI,CAAC,WAAW,CAAC;KACjB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;KACpB,KAAK,CAAC,GAAG,WAAW,EAAE,CAAC;KACvB,WAAW,CAAC,kDAAkD,CAAC;KAC/D,MAAM,CAAC,uBAAuB,EAAE,0DAA0D,CAAC;KAC3F,MAAM,CAAC,oBAAoB,EAAE,yCAAyC,CAAC;KACvE,MAAM,CAAC,2BAA2B,EAAE,oCAAoC,CAAC;KACzE,MAAM,CAAC,mBAAmB,EAAE,wBAAwB,CAAC;KACrD,MAAM,CAAC,gBAAgB,EAAE,yBAAyB,CAAC;KACnD,MAAM,CAAC,oBAAoB,EAAE,0BAA0B,CAAC;KACxD,cAAc,CAAC,2BAA2B,EAAE,oBAAoB,CAAC;KACjE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAEtB,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;AAG/B,yBAAyB,CAAC;IACzB,GAAI,OAA2B;IAC/B,QAAQ,EAAE,CAAC;IACX,mBAAmB,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;IACvD,YAAY,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;IAClD,eAAe,EAAE,OAAO,CAAC,eAAe;CACxC,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { DeploymentStore } from '@rocketh/core/types';
2
+ export declare function createFSDeploymentStore(): DeploymentStore;
3
+ //# sourceMappingURL=deployment-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deployment-store.d.ts","sourceRoot":"","sources":["../../src/environment/deployment-store.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,qBAAqB,CAAC;AAEzD,wBAAgB,uBAAuB,IAAI,eAAe,CAmEzD"}
@@ -0,0 +1,49 @@
1
+ import path from 'node:path';
2
+ import fs from 'node:fs';
3
+ export function createFSDeploymentStore() {
4
+ function getFolder(deploymentsFolder, environmentName) {
5
+ return path.join(deploymentsFolder, environmentName);
6
+ }
7
+ function getFile(deploymentsFolder, environmentName, name) {
8
+ return path.join(deploymentsFolder, environmentName, name);
9
+ }
10
+ async function ensureChainInfoRecorded(deploymentsFolder, environmentName, chainId, genesisHash) {
11
+ if (!(await hasFile(deploymentsFolder, environmentName, '.chain'))) {
12
+ await writeFile(deploymentsFolder, environmentName, '.chain', JSON.stringify({ chainId, genesisHash }));
13
+ }
14
+ }
15
+ async function writeFileWithChainInfo(chaininfo, deploymentsFolder, environmentName, name, content) {
16
+ await ensureChainInfoRecorded(deploymentsFolder, environmentName, chaininfo.chainId, chaininfo.genesisHash);
17
+ fs.mkdirSync(getFolder(deploymentsFolder, environmentName), { recursive: true });
18
+ fs.writeFileSync(getFile(deploymentsFolder, environmentName, name), content);
19
+ }
20
+ async function writeFile(deploymentsFolder, environmentName, name, content) {
21
+ fs.mkdirSync(getFolder(deploymentsFolder, environmentName), { recursive: true });
22
+ fs.writeFileSync(getFile(deploymentsFolder, environmentName, name), content);
23
+ }
24
+ async function readFile(deploymentsFolder, environmentName, name) {
25
+ return fs.readFileSync(getFile(deploymentsFolder, environmentName, name), 'utf-8');
26
+ }
27
+ async function deleteFile(deploymentsFolder, environmentName, name) {
28
+ fs.unlinkSync(getFile(deploymentsFolder, environmentName, name));
29
+ }
30
+ async function listFiles(deploymentsFolder, environmentName) {
31
+ return fs.readdirSync(getFolder(deploymentsFolder, environmentName));
32
+ }
33
+ async function hasFile(deploymentsFolder, environmentName, name) {
34
+ return fs.existsSync(getFile(deploymentsFolder, environmentName, name));
35
+ }
36
+ async function deleteAll(deploymentsFolder, environmentName) {
37
+ fs.rmSync(getFolder(deploymentsFolder, environmentName), { recursive: true, force: true });
38
+ }
39
+ return {
40
+ writeFileWithChainInfo,
41
+ listFiles,
42
+ hasFile,
43
+ deleteAll,
44
+ readFile,
45
+ writeFile,
46
+ deleteFile,
47
+ };
48
+ }
49
+ //# sourceMappingURL=deployment-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deployment-store.js","sourceRoot":"","sources":["../../src/environment/deployment-store.ts"],"names":[],"mappings":"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"}
@@ -9,8 +9,8 @@ export declare function mergeABIs(list: {
9
9
  }[], options?: {
10
10
  doNotCheckForConflicts?: boolean;
11
11
  }): {
12
- mergedABI: (import("abitype").AbiConstructor | import("abitype").AbiError | import("abitype").AbiEvent | import("abitype").AbiFallback | import("abitype").AbiFunction | import("abitype").AbiReceive)[];
13
- added: Map<string, import("abitype").AbiConstructor | import("abitype").AbiError | import("abitype").AbiEvent | import("abitype").AbiFallback | import("abitype").AbiFunction | import("abitype").AbiReceive>;
12
+ mergedABI: Abi;
13
+ added: Map<string, unknown>;
14
14
  sigJSMap: Map<`0x${string}`, {
15
15
  index: number;
16
16
  routeName: string;
@@ -25,8 +25,8 @@ export declare function mergeArtifacts(list: {
25
25
  }[], options?: {
26
26
  doNotCheckForConflicts?: boolean;
27
27
  }): {
28
- mergedABI: (import("abitype").AbiConstructor | import("abitype").AbiError | import("abitype").AbiEvent | import("abitype").AbiFallback | import("abitype").AbiFunction | import("abitype").AbiReceive)[];
29
- added: Map<string, import("abitype").AbiConstructor | import("abitype").AbiError | import("abitype").AbiEvent | import("abitype").AbiFallback | import("abitype").AbiFunction | import("abitype").AbiReceive>;
28
+ mergedABI: Abi;
29
+ added: Map<string, unknown>;
30
30
  mergedDevDocs: CreateMutable<DevDoc>;
31
31
  mergedUserDocs: CreateMutable<UserDoc>;
32
32
  sigJSMap: Map<`0x${string}`, {
@@ -1,5 +1,4 @@
1
- import { EIP1193ProviderWithoutEvents } from 'eip-1193';
2
- import type { Environment, ExecutionParams, ResolvedExecutionParams, UnknownDeployments, UnresolvedNetworkSpecificData, UnresolvedUnknownNamedAccounts, DeployScriptModule, EnhancedDeployScriptFunction, EnhancedEnvironment, ResolvedUserConfig, ConfigOverrides, UserConfig } from '../types.js';
1
+ import { type Environment, type ExecutionParams, type UnknownDeployments, type UnresolvedNetworkSpecificData, type UnresolvedUnknownNamedAccounts, type DeployScriptModule, type EnhancedEnvironment, type ResolvedUserConfig, type ConfigOverrides, type UserConfig } from '@rocketh/core/types';
3
2
  /**
4
3
  * Setup function that creates the execute function for deploy scripts. It allow to specify a set of functions that will be available in the environment.
5
4
  *
@@ -27,21 +26,31 @@ import type { Environment, ExecutionParams, ResolvedExecutionParams, UnknownDepl
27
26
  * ```
28
27
  */
29
28
  export declare function setup<Extensions extends Record<string, (env: Environment<any, any, any>) => any> = {}, NamedAccounts extends UnresolvedUnknownNamedAccounts = UnresolvedUnknownNamedAccounts, Data extends UnresolvedNetworkSpecificData = UnresolvedNetworkSpecificData, Deployments extends UnknownDeployments = UnknownDeployments, Extra extends Record<string, unknown> = Record<string, unknown>>(extensions: Extensions): {
30
- deployScript: <ArgumentsType = undefined>(callback: EnhancedDeployScriptFunction<NamedAccounts, Data, ArgumentsType, Deployments, Extensions>, options: {
29
+ deployScript: <ArgumentsType = undefined>(callback: import("@rocketh/core/types").EnhancedDeployScriptFunction<NamedAccounts, Data, ArgumentsType, Deployments, Extensions>, options: {
31
30
  tags?: string[];
32
31
  dependencies?: string[];
33
32
  id?: string;
34
33
  runAtTheEnd?: boolean;
35
34
  }) => DeployScriptModule<NamedAccounts, Data, ArgumentsType, Deployments, Extra>;
35
+ loadAndExecuteDeployments: <Extra_1 extends Record<string, unknown> = Record<string, unknown>, ArgumentsType = undefined>(executionParams: ExecutionParams<Extra_1>, args?: ArgumentsType | undefined) => Promise<EnhancedEnvironment<NamedAccounts, Data, UnknownDeployments, Extensions>>;
36
+ };
37
+ export declare function setupEnvironmentFromFiles<Extensions extends Record<string, (env: Environment<any, any, any>) => any> = {}, NamedAccounts extends UnresolvedUnknownNamedAccounts = UnresolvedUnknownNamedAccounts, Data extends UnresolvedNetworkSpecificData = UnresolvedNetworkSpecificData, Deployments extends UnknownDeployments = UnknownDeployments, Extra extends Record<string, unknown> = Record<string, unknown>>(extensions: Extensions): {
36
38
  loadAndExecuteDeployments: <Extra_1 extends Record<string, unknown> = Record<string, unknown>, ArgumentsType = undefined>(executionParams: ExecutionParams<Extra_1>, args?: ArgumentsType) => Promise<EnhancedEnvironment<NamedAccounts, Data, UnknownDeployments, Extensions>>;
37
39
  loadEnvironment: (executionParams: ExecutionParams<Extra>) => Promise<EnhancedEnvironment<NamedAccounts, Data, UnknownDeployments, Extensions>>;
38
40
  };
39
41
  export declare function enhanceEnvIfNeeded<Extensions extends Record<string, (env: Environment<any, any, any>) => any> = {}, NamedAccounts extends UnresolvedUnknownNamedAccounts = UnresolvedUnknownNamedAccounts, Data extends UnresolvedNetworkSpecificData = UnresolvedNetworkSpecificData, Extra extends Record<string, unknown> = Record<string, unknown>>(env: Environment, extensions: Extensions): EnhancedEnvironment<NamedAccounts, Data, UnknownDeployments, Extensions, Extra>;
40
42
  export declare function readConfig<NamedAccounts extends UnresolvedUnknownNamedAccounts = UnresolvedUnknownNamedAccounts, Data extends UnresolvedNetworkSpecificData = UnresolvedNetworkSpecificData>(): Promise<UserConfig>;
41
- export declare function resolveConfig<NamedAccounts extends UnresolvedUnknownNamedAccounts = UnresolvedUnknownNamedAccounts, Data extends UnresolvedNetworkSpecificData = UnresolvedNetworkSpecificData>(configFile: UserConfig, overrides?: ConfigOverrides): ResolvedUserConfig<NamedAccounts, Data>;
42
43
  export declare function readAndResolveConfig<NamedAccounts extends UnresolvedUnknownNamedAccounts = UnresolvedUnknownNamedAccounts, Data extends UnresolvedNetworkSpecificData = UnresolvedNetworkSpecificData>(overrides?: ConfigOverrides): Promise<ResolvedUserConfig<NamedAccounts, Data>>;
43
- export declare function getChainIdForEnvironment(config: ResolvedUserConfig, environmentName: string, provider?: EIP1193ProviderWithoutEvents): Promise<number>;
44
- export declare function resolveExecutionParams<Extra extends Record<string, unknown> = Record<string, unknown>>(config: ResolvedUserConfig, executionParameters: ExecutionParams<Extra>, chainId: number): ResolvedExecutionParams<Extra>;
44
+ export declare function loadDeploymentsFromFiles(deploymentsPath: string, networkName: string, onlyABIAndAddress?: boolean, expectedChain?: {
45
+ chainId: string;
46
+ genesisHash?: `0x${string}`;
47
+ deleteDeploymentsIfDifferentGenesisHash?: boolean;
48
+ }): Promise<{
49
+ deployments: UnknownDeployments;
50
+ migrations: Record<string, number>;
51
+ chainId?: string;
52
+ genesisHash?: `0x${string}`;
53
+ }>;
45
54
  export declare function loadEnvironment<NamedAccounts extends UnresolvedUnknownNamedAccounts = UnresolvedUnknownNamedAccounts, Data extends UnresolvedNetworkSpecificData = UnresolvedNetworkSpecificData, Extra extends Record<string, unknown> = Record<string, unknown>>(executionParams: ExecutionParams<Extra>): Promise<Environment<NamedAccounts, Data, UnknownDeployments>>;
46
55
  export declare function loadAndExecuteDeployments<NamedAccounts extends UnresolvedUnknownNamedAccounts = UnresolvedUnknownNamedAccounts, Data extends UnresolvedNetworkSpecificData = UnresolvedNetworkSpecificData, ArgumentsType = undefined, Extra extends Record<string, unknown> = Record<string, unknown>>(executionParams: ExecutionParams<Extra>, args?: ArgumentsType): Promise<Environment<NamedAccounts, Data, UnknownDeployments>>;
47
56
  export declare function executeDeployScripts<NamedAccounts extends UnresolvedUnknownNamedAccounts = UnresolvedUnknownNamedAccounts, Data extends UnresolvedNetworkSpecificData = UnresolvedNetworkSpecificData, ArgumentsType = undefined, Extra extends Record<string, unknown> = Record<string, unknown>>(userConfig: UserConfig, executionParams?: ExecutionParams<Extra>, args?: ArgumentsType): Promise<Environment<NamedAccounts, Data, UnknownDeployments>>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/executor/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/executor/index.ts"],"names":[],"mappings":"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"}
@@ -1,19 +1,9 @@
1
1
  import fs from 'node:fs';
2
2
  import path from 'node:path';
3
3
  import prompts from 'prompts';
4
- // import {tsImport as tsImport_} from 'tsx/esm/api';
5
- import { register } from 'tsx/esm/api';
6
- import { formatEther } from 'viem';
7
- import { withEnvironment } from '../utils/extensions.js';
8
- import { logger, setLogLevel, spin } from '../internal/logging.js';
9
- import { getRoughGasPriceEstimate } from '../utils/eth.js';
4
+ import { withEnvironment, resolveConfig, resolveExecutionParams, createEnvironment, logger, getEnvironmentName, getChainIdForEnvironment, createExecutor, setupDeployScripts, loadDeployments, } from '@rocketh/core';
10
5
  import { traverseMultipleDirectory } from '../utils/fs.js';
11
- import { getChainByName, getChainConfig } from '../environment/utils/chains.js';
12
- import { JSONRPCHTTPProvider } from 'eip-1193-jsonrpc-provider';
13
- import { createEnvironment } from '../environment/index.js';
14
- // @ts-ignore
15
- // const tsImport = (path: string, opts: any) => (typeof Bun !== 'undefined' ? import(path) : tsImport_(path, opts));
16
- const unregister = register();
6
+ import { createFSDeploymentStore } from '../environment/deployment-store.js';
17
7
  /**
18
8
  * Setup function that creates the execute function for deploy scripts. It allow to specify a set of functions that will be available in the environment.
19
9
  *
@@ -41,19 +31,11 @@ const unregister = register();
41
31
  * ```
42
32
  */
43
33
  export function setup(extensions) {
44
- function enhancedExecute(callback, options) {
45
- const scriptModule = (env, args) => {
46
- // Create the enhanced environment by combining the original environment with extensions
47
- const curriedFunctions = withEnvironment(env, extensions);
48
- const enhancedEnv = Object.assign(Object.create(Object.getPrototypeOf(env)), env, curriedFunctions);
49
- return callback(enhancedEnv, args);
50
- };
51
- scriptModule.tags = options.tags;
52
- scriptModule.dependencies = options.dependencies;
53
- scriptModule.id = options.id;
54
- scriptModule.runAtTheEnd = options.runAtTheEnd;
55
- return scriptModule;
56
- }
34
+ const { deployScript } = setupDeployScripts(extensions);
35
+ const { loadAndExecuteDeployments } = setupEnvironmentFromFiles(extensions);
36
+ return { deployScript, loadAndExecuteDeployments };
37
+ }
38
+ export function setupEnvironmentFromFiles(extensions) {
57
39
  async function loadAndExecuteDeploymentsWithExtensions(executionParams, args) {
58
40
  const env = await loadAndExecuteDeployments(executionParams, args);
59
41
  return enhanceEnvIfNeeded(env, extensions);
@@ -63,7 +45,6 @@ export function setup(extensions) {
63
45
  return enhanceEnvIfNeeded(env, extensions);
64
46
  }
65
47
  return {
66
- deployScript: enhancedExecute,
67
48
  loadAndExecuteDeployments: loadAndExecuteDeploymentsWithExtensions,
68
49
  loadEnvironment: loadEnvironmentWithExtensions,
69
50
  };
@@ -88,11 +69,26 @@ export async function readConfig() {
88
69
  let tsVersion;
89
70
  let jsVersion;
90
71
  if (typeof process !== 'undefined') {
91
- // TODO more sophisticated config file finding mechanism (look up parents, etc..)
92
- const tsFilePath = path.join(process.cwd(), 'rocketh.ts');
93
- const jsFilePath = path.join(process.cwd(), 'rocketh.js');
94
- tsVersion = fs.existsSync(tsFilePath) ? `file://${tsFilePath}` : undefined;
95
- jsVersion = fs.existsSync(jsFilePath) ? `file://${jsFilePath}` : undefined;
72
+ const listOfFileToTryForTS = [
73
+ path.join(process.cwd(), 'rocketh.ts'),
74
+ path.join(process.cwd(), 'rocketh', 'config.ts'),
75
+ ];
76
+ for (const filepath of listOfFileToTryForTS) {
77
+ if (fs.existsSync(filepath)) {
78
+ tsVersion = `file://${filepath}`;
79
+ break;
80
+ }
81
+ }
82
+ const listOfFileToTryForJS = [
83
+ path.join(process.cwd(), 'rocketh.js'),
84
+ path.join(process.cwd(), 'rocketh', 'config.s'),
85
+ ];
86
+ for (const filepath of listOfFileToTryForJS) {
87
+ if (fs.existsSync(filepath)) {
88
+ jsVersion = `file://${filepath}`;
89
+ break;
90
+ }
91
+ }
96
92
  }
97
93
  const existingConfigs = [tsVersion, jsVersion].filter(Boolean).length;
98
94
  // console.log({tsFilePath, tsVersionExists, existingConfigs});
@@ -118,150 +114,20 @@ export async function readConfig() {
118
114
  }
119
115
  return configFile || {};
120
116
  }
121
- export function resolveConfig(configFile, overrides) {
122
- const config = {
123
- deployments: 'deployments',
124
- defaultPollingInterval: 1,
125
- ...configFile,
126
- scripts: configFile?.scripts
127
- ? typeof configFile.scripts === 'string'
128
- ? [configFile.scripts]
129
- : configFile.scripts.length == 0
130
- ? ['deploy']
131
- : configFile.scripts
132
- : ['deploy'],
133
- };
134
- if (overrides) {
135
- for (const key of Object.keys(overrides)) {
136
- if (overrides[key] !== undefined) {
137
- config[key] = overrides[key];
138
- }
139
- }
140
- }
141
- return config;
142
- }
143
117
  export async function readAndResolveConfig(overrides) {
144
118
  const configFile = await readConfig();
145
119
  return resolveConfig(configFile, overrides);
146
120
  }
147
- export async function getChainIdForEnvironment(config, environmentName, provider) {
148
- if (config?.environments?.[environmentName]?.chain) {
149
- const chainAsNumber = typeof config.environments[environmentName].chain === 'number'
150
- ? config.environments[environmentName].chain
151
- : parseInt(config.environments[environmentName].chain);
152
- if (!isNaN(chainAsNumber)) {
153
- return chainAsNumber;
154
- }
155
- const chainFound = getChainByName(config.environments[environmentName].chain);
156
- if (chainFound) {
157
- return chainFound.id;
158
- }
159
- else {
160
- throw new Error(`environment ${environmentName} chain id cannot be found, specify it in the rocketh config`);
161
- }
162
- }
163
- else {
164
- const chainFound = getChainByName(environmentName);
165
- if (chainFound) {
166
- return chainFound.id;
167
- }
168
- else {
169
- if (provider) {
170
- const chainIdAsHex = await provider.request({ method: 'eth_chainId' });
171
- return Number(chainIdAsHex);
172
- }
173
- else {
174
- throw new Error(`environment ${environmentName} chain id cannot be found, specify it in the rocketh config`);
175
- }
176
- }
177
- }
178
- }
179
- function getEnvironmentName(executionParams) {
180
- const environmentProvided = executionParams.environment || executionParams.network;
181
- let environmentName = 'memory';
182
- if (environmentProvided) {
183
- if (typeof environmentProvided === 'string') {
184
- environmentName = environmentProvided;
185
- }
186
- else if ('fork' in environmentProvided) {
187
- environmentName = environmentProvided.fork;
188
- }
189
- }
190
- const fork = typeof environmentProvided !== 'string';
191
- return { name: environmentName, fork };
192
- }
193
- export function resolveExecutionParams(config, executionParameters, chainId) {
194
- const { name: environmentName, fork } = getEnvironmentName(executionParameters);
195
- // TODO fork chainId resolution option to keep the network being used
196
- let chainConfig = getChainConfig(fork ? 31337 : chainId, config);
197
- let chainInfo = chainConfig.info;
198
- const environmentConfig = config?.environments?.[environmentName];
199
- const actualChainConfig = environmentConfig?.overrides
200
- ? {
201
- ...chainConfig,
202
- ...environmentConfig.overrides,
203
- properties: {
204
- ...chainConfig?.properties,
205
- ...environmentConfig.overrides.properties,
206
- },
207
- }
208
- : chainConfig;
209
- if (actualChainConfig?.properties) {
210
- chainInfo = { ...chainInfo, properties: actualChainConfig.properties };
211
- }
212
- // let environmentTags: string[] = actualChainConfig.tags.concat(environmentConfig?.tags); // TODO
213
- const environmentTags = actualChainConfig.tags;
214
- let scripts = ['deploy'];
215
- if (config.scripts) {
216
- if (typeof config.scripts === 'string') {
217
- scripts = [config.scripts];
218
- }
219
- else {
220
- scripts = [...config.scripts];
221
- }
222
- }
223
- if (environmentConfig?.scripts) {
224
- if (typeof environmentConfig.scripts === 'string') {
225
- scripts = [environmentConfig.scripts];
226
- }
227
- else {
228
- scripts = [...environmentConfig.scripts];
229
- }
230
- }
231
- const provider = executionParameters.provider || new JSONRPCHTTPProvider(actualChainConfig.rpcUrl);
232
- let saveDeployments = executionParameters.saveDeployments;
233
- if (saveDeployments === undefined) {
234
- if (!executionParameters.provider) {
235
- saveDeployments = true;
236
- }
237
- else {
238
- if (environmentName === 'memory' || environmentName === 'hardhat' || environmentName === 'default') {
239
- // networkTags['memory'] = true;
240
- saveDeployments = false;
241
- }
242
- else {
243
- saveDeployments = true;
244
- }
245
- }
246
- }
121
+ const deploymentStore = createFSDeploymentStore();
122
+ const promptExecutor = async (request) => {
123
+ const answer = await prompts(request);
247
124
  return {
248
- askBeforeProceeding: executionParameters.askBeforeProceeding || false,
249
- chain: chainInfo,
250
- logLevel: executionParameters.logLevel || 0, // TODO
251
- pollingInterval: actualChainConfig.pollingInterval,
252
- reportGasUse: executionParameters.reportGasUse || false,
253
- saveDeployments,
254
- tags: executionParameters.tags || [],
255
- environment: {
256
- name: environmentName,
257
- tags: environmentTags,
258
- fork,
259
- deterministicDeployment: actualChainConfig.deterministicDeployment,
260
- },
261
- extra: executionParameters.extra,
262
- provider,
263
- scripts,
125
+ proceed: answer.proceed,
264
126
  };
127
+ };
128
+ const executor = createExecutor(deploymentStore, promptExecutor);
129
+ export function loadDeploymentsFromFiles(deploymentsPath, networkName, onlyABIAndAddress, expectedChain) {
130
+ return loadDeployments(deploymentStore, deploymentsPath, networkName, onlyABIAndAddress, expectedChain);
265
131
  }
266
132
  export async function loadEnvironment(executionParams) {
267
133
  const userConfig = await readAndResolveConfig(executionParams.config);
@@ -269,7 +135,7 @@ export async function loadEnvironment(executionParams) {
269
135
  const chainId = await getChainIdForEnvironment(userConfig, environmentName, executionParams.provider);
270
136
  const resolvedExecutionParams = resolveExecutionParams(userConfig, executionParams, chainId);
271
137
  // console.log(JSON.stringify(resolvedConfig, null, 2));
272
- const { external, internal } = await createEnvironment(userConfig, resolvedExecutionParams);
138
+ const { external, internal } = await createEnvironment(userConfig, resolvedExecutionParams, deploymentStore);
273
139
  return external;
274
140
  }
275
141
  export async function loadAndExecuteDeployments(executionParams, args) {
@@ -290,7 +156,6 @@ export async function executeDeployScripts(userConfig, executionParams, args) {
290
156
  return _executeDeployScripts(resolveduserConfig, resolvedExecutionParams, args);
291
157
  }
292
158
  async function _executeDeployScripts(userConfig, resolvedExecutionParams, args) {
293
- setLogLevel(typeof resolvedExecutionParams.logLevel === 'undefined' ? 0 : resolvedExecutionParams.logLevel);
294
159
  let filepaths;
295
160
  filepaths = traverseMultipleDirectory(resolvedExecutionParams.scripts);
296
161
  filepaths = filepaths
@@ -304,9 +169,7 @@ async function _executeDeployScripts(userConfig, resolvedExecutionParams, args)
304
169
  }
305
170
  return 0;
306
171
  });
307
- const scriptModuleByFilePath = {};
308
- const scriptPathBags = {};
309
- const scriptFilePaths = [];
172
+ const moduleObjects = [];
310
173
  for (const filepath of filepaths) {
311
174
  const scriptFilePath = path.resolve(filepath);
312
175
  let scriptModule;
@@ -323,153 +186,13 @@ async function _executeDeployScripts(userConfig, resolvedExecutionParams, args)
323
186
  scriptModule = scriptModule.default;
324
187
  }
325
188
  }
326
- scriptModuleByFilePath[scriptFilePath] = scriptModule;
189
+ moduleObjects.push({ id: scriptFilePath, module: scriptModule });
327
190
  }
328
191
  catch (e) {
329
192
  logger.error(`could not import ${filepath}`);
330
193
  throw e;
331
194
  }
332
- let scriptTags = scriptModule.tags;
333
- if (scriptTags !== undefined) {
334
- if (typeof scriptTags === 'string') {
335
- scriptTags = [scriptTags];
336
- }
337
- for (const tag of scriptTags) {
338
- if (tag.indexOf(',') >= 0) {
339
- throw new Error('Tag cannot contains commas');
340
- }
341
- const bag = scriptPathBags[tag] || [];
342
- scriptPathBags[tag] = bag;
343
- bag.push(scriptFilePath);
344
- }
345
- }
346
- if (resolvedExecutionParams.tags !== undefined && resolvedExecutionParams.tags.length > 0) {
347
- let found = false;
348
- if (scriptTags !== undefined) {
349
- for (const tagToFind of resolvedExecutionParams.tags) {
350
- for (const tag of scriptTags) {
351
- if (tag === tagToFind) {
352
- scriptFilePaths.push(scriptFilePath);
353
- found = true;
354
- break;
355
- }
356
- }
357
- if (found) {
358
- break;
359
- }
360
- }
361
- }
362
- }
363
- else {
364
- scriptFilePaths.push(scriptFilePath);
365
- }
366
195
  }
367
- const { internal, external } = await createEnvironment(userConfig, resolvedExecutionParams);
368
- await internal.recoverTransactionsIfAny();
369
- const scriptsRegisteredToRun = {};
370
- const scriptsToRun = [];
371
- const scriptsToRunAtTheEnd = [];
372
- function recurseDependencies(scriptFilePath) {
373
- if (scriptsRegisteredToRun[scriptFilePath]) {
374
- return;
375
- }
376
- const scriptModule = scriptModuleByFilePath[scriptFilePath];
377
- if (scriptModule.dependencies) {
378
- for (const dependency of scriptModule.dependencies) {
379
- const scriptFilePathsToAdd = scriptPathBags[dependency];
380
- if (scriptFilePathsToAdd) {
381
- for (const scriptFilenameToAdd of scriptFilePathsToAdd) {
382
- recurseDependencies(scriptFilenameToAdd);
383
- }
384
- }
385
- }
386
- }
387
- if (!scriptsRegisteredToRun[scriptFilePath]) {
388
- if (scriptModule.runAtTheEnd) {
389
- scriptsToRunAtTheEnd.push({
390
- filePath: scriptFilePath,
391
- func: scriptModule,
392
- });
393
- }
394
- else {
395
- scriptsToRun.push({
396
- filePath: scriptFilePath,
397
- func: scriptModule,
398
- });
399
- }
400
- scriptsRegisteredToRun[scriptFilePath] = true;
401
- }
402
- }
403
- for (const scriptFilePath of scriptFilePaths) {
404
- recurseDependencies(scriptFilePath);
405
- }
406
- if (resolvedExecutionParams.askBeforeProceeding) {
407
- console.log(`Network: ${external.name} \n \t Chain: ${external.network.chain.name} \n \t Tags: ${Object.keys(external.tags).join(',')}`);
408
- const gasPriceEstimate = await getRoughGasPriceEstimate(external.network.provider);
409
- const prompt = await prompts({
410
- type: 'confirm',
411
- name: 'proceed',
412
- message: `gas price is currently in this range:
413
- slow: ${formatEther(gasPriceEstimate.slow.maxFeePerGas)} (priority: ${formatEther(gasPriceEstimate.slow.maxPriorityFeePerGas)})
414
- average: ${formatEther(gasPriceEstimate.average.maxFeePerGas)} (priority: ${formatEther(gasPriceEstimate.average.maxPriorityFeePerGas)})
415
- fast: ${formatEther(gasPriceEstimate.fast.maxFeePerGas)} (priority: ${formatEther(gasPriceEstimate.fast.maxPriorityFeePerGas)})
416
-
417
- Do you want to proceed (note that gas price can change for each tx)`,
418
- });
419
- if (!prompt.proceed) {
420
- process.exit();
421
- }
422
- }
423
- for (const deployScript of scriptsToRun.concat(scriptsToRunAtTheEnd)) {
424
- const filename = path.basename(deployScript.filePath);
425
- const relativeFilepath = path.relative('.', deployScript.filePath);
426
- if (deployScript.func.id && external.hasMigrationBeenDone(deployScript.func.id)) {
427
- logger.info(`skipping ${filename} as migrations already executed and complete`);
428
- continue;
429
- }
430
- let skip = false;
431
- const spinner = spin(`- Executing ${filename}`);
432
- // if (deployScript.func.skip) {
433
- // const spinner = spin(` - skip?()`);
434
- // try {
435
- // skip = await deployScript.func.skip(external, args);
436
- // spinner.succeed(skip ? `skipping ${filename}` : undefined);
437
- // } catch (e) {
438
- // spinner.fail();
439
- // throw e;
440
- // }
441
- // }
442
- if (!skip) {
443
- let result;
444
- try {
445
- result = await deployScript.func(external, args);
446
- spinner.succeed(`\n`);
447
- }
448
- catch (e) {
449
- spinner.fail();
450
- throw e;
451
- }
452
- if (result && typeof result === 'boolean') {
453
- if (!deployScript.func.id) {
454
- throw new Error(`${deployScript.filePath} return true to not be executed again, but does not provide an id. the script function needs to have the field "id" to be set`);
455
- }
456
- internal.recordMigration(deployScript.func.id);
457
- }
458
- }
459
- }
460
- if (resolvedExecutionParams.reportGasUse) {
461
- const provider = external.network.provider;
462
- const transactionHashes = provider.transactionHashes;
463
- let totalGasUsed = 0;
464
- for (const hash of transactionHashes) {
465
- const transactionReceipt = await provider.request({ method: 'eth_getTransactionReceipt', params: [hash] });
466
- if (transactionReceipt) {
467
- const gasUsed = Number(transactionReceipt.gasUsed);
468
- totalGasUsed += gasUsed;
469
- }
470
- }
471
- console.log({ totalGasUsed });
472
- }
473
- return external;
196
+ return executor.executeDeployScriptModules(moduleObjects, userConfig, resolvedExecutionParams, args);
474
197
  }
475
198
  //# sourceMappingURL=index.js.map