rocketh 0.15.14 → 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 +17 -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 +42 -320
  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 +92 -404
  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,22 @@
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
+
14
+ ## 0.15.15
15
+
16
+ ### Patch Changes
17
+
18
+ - fix
19
+
3
20
  ## 0.15.14
4
21
 
5
22
  ### 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,20 +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();
17
- const tsImport = (path, opts) => import(path, opts);
6
+ import { createFSDeploymentStore } from '../environment/deployment-store.js';
18
7
  /**
19
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.
20
9
  *
@@ -42,19 +31,11 @@ const tsImport = (path, opts) => import(path, opts);
42
31
  * ```
43
32
  */
44
33
  export function setup(extensions) {
45
- function enhancedExecute(callback, options) {
46
- const scriptModule = (env, args) => {
47
- // Create the enhanced environment by combining the original environment with extensions
48
- const curriedFunctions = withEnvironment(env, extensions);
49
- const enhancedEnv = Object.assign(Object.create(Object.getPrototypeOf(env)), env, curriedFunctions);
50
- return callback(enhancedEnv, args);
51
- };
52
- scriptModule.tags = options.tags;
53
- scriptModule.dependencies = options.dependencies;
54
- scriptModule.id = options.id;
55
- scriptModule.runAtTheEnd = options.runAtTheEnd;
56
- return scriptModule;
57
- }
34
+ const { deployScript } = setupDeployScripts(extensions);
35
+ const { loadAndExecuteDeployments } = setupEnvironmentFromFiles(extensions);
36
+ return { deployScript, loadAndExecuteDeployments };
37
+ }
38
+ export function setupEnvironmentFromFiles(extensions) {
58
39
  async function loadAndExecuteDeploymentsWithExtensions(executionParams, args) {
59
40
  const env = await loadAndExecuteDeployments(executionParams, args);
60
41
  return enhanceEnvIfNeeded(env, extensions);
@@ -64,7 +45,6 @@ export function setup(extensions) {
64
45
  return enhanceEnvIfNeeded(env, extensions);
65
46
  }
66
47
  return {
67
- deployScript: enhancedExecute,
68
48
  loadAndExecuteDeployments: loadAndExecuteDeploymentsWithExtensions,
69
49
  loadEnvironment: loadEnvironmentWithExtensions,
70
50
  };
@@ -89,11 +69,26 @@ export async function readConfig() {
89
69
  let tsVersion;
90
70
  let jsVersion;
91
71
  if (typeof process !== 'undefined') {
92
- // TODO more sophisticated config file finding mechanism (look up parents, etc..)
93
- const tsFilePath = path.join(process.cwd(), 'rocketh.ts');
94
- const jsFilePath = path.join(process.cwd(), 'rocketh.js');
95
- tsVersion = fs.existsSync(tsFilePath) ? `file://${tsFilePath}` : undefined;
96
- 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
+ }
97
92
  }
98
93
  const existingConfigs = [tsVersion, jsVersion].filter(Boolean).length;
99
94
  // console.log({tsFilePath, tsVersionExists, existingConfigs});
@@ -102,7 +97,7 @@ export async function readConfig() {
102
97
  throw new Error('Multiple configuration files found. Please use only one of: rocketh.ts, rocketh.js');
103
98
  }
104
99
  if (tsVersion) {
105
- const moduleLoaded = await tsImport(tsVersion, import.meta.url);
100
+ const moduleLoaded = await import(tsVersion);
106
101
  configFile = moduleLoaded.config;
107
102
  // console.log({tsVersionExists: configFile});
108
103
  // if ((configFile as any).default) {
@@ -114,155 +109,25 @@ export async function readConfig() {
114
109
  // }
115
110
  }
116
111
  else if (jsVersion) {
117
- const moduleLoaded = await tsImport(jsVersion, import.meta.url);
112
+ const moduleLoaded = await import(jsVersion);
118
113
  configFile = moduleLoaded.config;
119
114
  }
120
115
  return configFile || {};
121
116
  }
122
- export function resolveConfig(configFile, overrides) {
123
- const config = {
124
- deployments: 'deployments',
125
- defaultPollingInterval: 1,
126
- ...configFile,
127
- scripts: configFile?.scripts
128
- ? typeof configFile.scripts === 'string'
129
- ? [configFile.scripts]
130
- : configFile.scripts.length == 0
131
- ? ['deploy']
132
- : configFile.scripts
133
- : ['deploy'],
134
- };
135
- if (overrides) {
136
- for (const key of Object.keys(overrides)) {
137
- if (overrides[key] !== undefined) {
138
- config[key] = overrides[key];
139
- }
140
- }
141
- }
142
- return config;
143
- }
144
117
  export async function readAndResolveConfig(overrides) {
145
118
  const configFile = await readConfig();
146
119
  return resolveConfig(configFile, overrides);
147
120
  }
148
- export async function getChainIdForEnvironment(config, environmentName, provider) {
149
- if (config?.environments?.[environmentName]?.chain) {
150
- const chainAsNumber = typeof config.environments[environmentName].chain === 'number'
151
- ? config.environments[environmentName].chain
152
- : parseInt(config.environments[environmentName].chain);
153
- if (!isNaN(chainAsNumber)) {
154
- return chainAsNumber;
155
- }
156
- const chainFound = getChainByName(config.environments[environmentName].chain);
157
- if (chainFound) {
158
- return chainFound.id;
159
- }
160
- else {
161
- throw new Error(`environment ${environmentName} chain id cannot be found, specify it in the rocketh config`);
162
- }
163
- }
164
- else {
165
- const chainFound = getChainByName(environmentName);
166
- if (chainFound) {
167
- return chainFound.id;
168
- }
169
- else {
170
- if (provider) {
171
- const chainIdAsHex = await provider.request({ method: 'eth_chainId' });
172
- return Number(chainIdAsHex);
173
- }
174
- else {
175
- throw new Error(`environment ${environmentName} chain id cannot be found, specify it in the rocketh config`);
176
- }
177
- }
178
- }
179
- }
180
- function getEnvironmentName(executionParams) {
181
- const environmentProvided = executionParams.environment || executionParams.network;
182
- let environmentName = 'memory';
183
- if (environmentProvided) {
184
- if (typeof environmentProvided === 'string') {
185
- environmentName = environmentProvided;
186
- }
187
- else if ('fork' in environmentProvided) {
188
- environmentName = environmentProvided.fork;
189
- }
190
- }
191
- const fork = typeof environmentProvided !== 'string';
192
- return { name: environmentName, fork };
193
- }
194
- export function resolveExecutionParams(config, executionParameters, chainId) {
195
- const { name: environmentName, fork } = getEnvironmentName(executionParameters);
196
- // TODO fork chainId resolution option to keep the network being used
197
- let chainConfig = getChainConfig(fork ? 31337 : chainId, config);
198
- let chainInfo = chainConfig.info;
199
- const environmentConfig = config?.environments?.[environmentName];
200
- const actualChainConfig = environmentConfig?.overrides
201
- ? {
202
- ...chainConfig,
203
- ...environmentConfig.overrides,
204
- properties: {
205
- ...chainConfig?.properties,
206
- ...environmentConfig.overrides.properties,
207
- },
208
- }
209
- : chainConfig;
210
- if (actualChainConfig?.properties) {
211
- chainInfo = { ...chainInfo, properties: actualChainConfig.properties };
212
- }
213
- // let environmentTags: string[] = actualChainConfig.tags.concat(environmentConfig?.tags); // TODO
214
- const environmentTags = actualChainConfig.tags;
215
- let scripts = ['deploy'];
216
- if (config.scripts) {
217
- if (typeof config.scripts === 'string') {
218
- scripts = [config.scripts];
219
- }
220
- else {
221
- scripts = [...config.scripts];
222
- }
223
- }
224
- if (environmentConfig?.scripts) {
225
- if (typeof environmentConfig.scripts === 'string') {
226
- scripts = [environmentConfig.scripts];
227
- }
228
- else {
229
- scripts = [...environmentConfig.scripts];
230
- }
231
- }
232
- const provider = executionParameters.provider || new JSONRPCHTTPProvider(actualChainConfig.rpcUrl);
233
- let saveDeployments = executionParameters.saveDeployments;
234
- if (saveDeployments === undefined) {
235
- if (!executionParameters.provider) {
236
- saveDeployments = true;
237
- }
238
- else {
239
- if (environmentName === 'memory' || environmentName === 'hardhat' || environmentName === 'default') {
240
- // networkTags['memory'] = true;
241
- saveDeployments = false;
242
- }
243
- else {
244
- saveDeployments = true;
245
- }
246
- }
247
- }
121
+ const deploymentStore = createFSDeploymentStore();
122
+ const promptExecutor = async (request) => {
123
+ const answer = await prompts(request);
248
124
  return {
249
- askBeforeProceeding: executionParameters.askBeforeProceeding || false,
250
- chain: chainInfo,
251
- logLevel: executionParameters.logLevel || 0, // TODO
252
- pollingInterval: actualChainConfig.pollingInterval,
253
- reportGasUse: executionParameters.reportGasUse || false,
254
- saveDeployments,
255
- tags: executionParameters.tags || [],
256
- environment: {
257
- name: environmentName,
258
- tags: environmentTags,
259
- fork,
260
- deterministicDeployment: actualChainConfig.deterministicDeployment,
261
- },
262
- extra: executionParameters.extra,
263
- provider,
264
- scripts,
125
+ proceed: answer.proceed,
265
126
  };
127
+ };
128
+ const executor = createExecutor(deploymentStore, promptExecutor);
129
+ export function loadDeploymentsFromFiles(deploymentsPath, networkName, onlyABIAndAddress, expectedChain) {
130
+ return loadDeployments(deploymentStore, deploymentsPath, networkName, onlyABIAndAddress, expectedChain);
266
131
  }
267
132
  export async function loadEnvironment(executionParams) {
268
133
  const userConfig = await readAndResolveConfig(executionParams.config);
@@ -270,7 +135,7 @@ export async function loadEnvironment(executionParams) {
270
135
  const chainId = await getChainIdForEnvironment(userConfig, environmentName, executionParams.provider);
271
136
  const resolvedExecutionParams = resolveExecutionParams(userConfig, executionParams, chainId);
272
137
  // console.log(JSON.stringify(resolvedConfig, null, 2));
273
- const { external, internal } = await createEnvironment(userConfig, resolvedExecutionParams);
138
+ const { external, internal } = await createEnvironment(userConfig, resolvedExecutionParams, deploymentStore);
274
139
  return external;
275
140
  }
276
141
  export async function loadAndExecuteDeployments(executionParams, args) {
@@ -291,7 +156,6 @@ export async function executeDeployScripts(userConfig, executionParams, args) {
291
156
  return _executeDeployScripts(resolveduserConfig, resolvedExecutionParams, args);
292
157
  }
293
158
  async function _executeDeployScripts(userConfig, resolvedExecutionParams, args) {
294
- setLogLevel(typeof resolvedExecutionParams.logLevel === 'undefined' ? 0 : resolvedExecutionParams.logLevel);
295
159
  let filepaths;
296
160
  filepaths = traverseMultipleDirectory(resolvedExecutionParams.scripts);
297
161
  filepaths = filepaths
@@ -305,14 +169,12 @@ async function _executeDeployScripts(userConfig, resolvedExecutionParams, args)
305
169
  }
306
170
  return 0;
307
171
  });
308
- const scriptModuleByFilePath = {};
309
- const scriptPathBags = {};
310
- const scriptFilePaths = [];
172
+ const moduleObjects = [];
311
173
  for (const filepath of filepaths) {
312
174
  const scriptFilePath = path.resolve(filepath);
313
175
  let scriptModule;
314
176
  try {
315
- scriptModule = await tsImport(`file://${scriptFilePath}`, import.meta.url);
177
+ scriptModule = await import(`file://${scriptFilePath}`);
316
178
  // console.log({
317
179
  // scriptFilePath,
318
180
  // scriptModule,
@@ -324,153 +186,13 @@ async function _executeDeployScripts(userConfig, resolvedExecutionParams, args)
324
186
  scriptModule = scriptModule.default;
325
187
  }
326
188
  }
327
- scriptModuleByFilePath[scriptFilePath] = scriptModule;
189
+ moduleObjects.push({ id: scriptFilePath, module: scriptModule });
328
190
  }
329
191
  catch (e) {
330
192
  logger.error(`could not import ${filepath}`);
331
193
  throw e;
332
194
  }
333
- let scriptTags = scriptModule.tags;
334
- if (scriptTags !== undefined) {
335
- if (typeof scriptTags === 'string') {
336
- scriptTags = [scriptTags];
337
- }
338
- for (const tag of scriptTags) {
339
- if (tag.indexOf(',') >= 0) {
340
- throw new Error('Tag cannot contains commas');
341
- }
342
- const bag = scriptPathBags[tag] || [];
343
- scriptPathBags[tag] = bag;
344
- bag.push(scriptFilePath);
345
- }
346
- }
347
- if (resolvedExecutionParams.tags !== undefined && resolvedExecutionParams.tags.length > 0) {
348
- let found = false;
349
- if (scriptTags !== undefined) {
350
- for (const tagToFind of resolvedExecutionParams.tags) {
351
- for (const tag of scriptTags) {
352
- if (tag === tagToFind) {
353
- scriptFilePaths.push(scriptFilePath);
354
- found = true;
355
- break;
356
- }
357
- }
358
- if (found) {
359
- break;
360
- }
361
- }
362
- }
363
- }
364
- else {
365
- scriptFilePaths.push(scriptFilePath);
366
- }
367
195
  }
368
- const { internal, external } = await createEnvironment(userConfig, resolvedExecutionParams);
369
- await internal.recoverTransactionsIfAny();
370
- const scriptsRegisteredToRun = {};
371
- const scriptsToRun = [];
372
- const scriptsToRunAtTheEnd = [];
373
- function recurseDependencies(scriptFilePath) {
374
- if (scriptsRegisteredToRun[scriptFilePath]) {
375
- return;
376
- }
377
- const scriptModule = scriptModuleByFilePath[scriptFilePath];
378
- if (scriptModule.dependencies) {
379
- for (const dependency of scriptModule.dependencies) {
380
- const scriptFilePathsToAdd = scriptPathBags[dependency];
381
- if (scriptFilePathsToAdd) {
382
- for (const scriptFilenameToAdd of scriptFilePathsToAdd) {
383
- recurseDependencies(scriptFilenameToAdd);
384
- }
385
- }
386
- }
387
- }
388
- if (!scriptsRegisteredToRun[scriptFilePath]) {
389
- if (scriptModule.runAtTheEnd) {
390
- scriptsToRunAtTheEnd.push({
391
- filePath: scriptFilePath,
392
- func: scriptModule,
393
- });
394
- }
395
- else {
396
- scriptsToRun.push({
397
- filePath: scriptFilePath,
398
- func: scriptModule,
399
- });
400
- }
401
- scriptsRegisteredToRun[scriptFilePath] = true;
402
- }
403
- }
404
- for (const scriptFilePath of scriptFilePaths) {
405
- recurseDependencies(scriptFilePath);
406
- }
407
- if (resolvedExecutionParams.askBeforeProceeding) {
408
- console.log(`Network: ${external.name} \n \t Chain: ${external.network.chain.name} \n \t Tags: ${Object.keys(external.tags).join(',')}`);
409
- const gasPriceEstimate = await getRoughGasPriceEstimate(external.network.provider);
410
- const prompt = await prompts({
411
- type: 'confirm',
412
- name: 'proceed',
413
- message: `gas price is currently in this range:
414
- slow: ${formatEther(gasPriceEstimate.slow.maxFeePerGas)} (priority: ${formatEther(gasPriceEstimate.slow.maxPriorityFeePerGas)})
415
- average: ${formatEther(gasPriceEstimate.average.maxFeePerGas)} (priority: ${formatEther(gasPriceEstimate.average.maxPriorityFeePerGas)})
416
- fast: ${formatEther(gasPriceEstimate.fast.maxFeePerGas)} (priority: ${formatEther(gasPriceEstimate.fast.maxPriorityFeePerGas)})
417
-
418
- Do you want to proceed (note that gas price can change for each tx)`,
419
- });
420
- if (!prompt.proceed) {
421
- process.exit();
422
- }
423
- }
424
- for (const deployScript of scriptsToRun.concat(scriptsToRunAtTheEnd)) {
425
- const filename = path.basename(deployScript.filePath);
426
- const relativeFilepath = path.relative('.', deployScript.filePath);
427
- if (deployScript.func.id && external.hasMigrationBeenDone(deployScript.func.id)) {
428
- logger.info(`skipping ${filename} as migrations already executed and complete`);
429
- continue;
430
- }
431
- let skip = false;
432
- const spinner = spin(`- Executing ${filename}`);
433
- // if (deployScript.func.skip) {
434
- // const spinner = spin(` - skip?()`);
435
- // try {
436
- // skip = await deployScript.func.skip(external, args);
437
- // spinner.succeed(skip ? `skipping ${filename}` : undefined);
438
- // } catch (e) {
439
- // spinner.fail();
440
- // throw e;
441
- // }
442
- // }
443
- if (!skip) {
444
- let result;
445
- try {
446
- result = await deployScript.func(external, args);
447
- spinner.succeed(`\n`);
448
- }
449
- catch (e) {
450
- spinner.fail();
451
- throw e;
452
- }
453
- if (result && typeof result === 'boolean') {
454
- if (!deployScript.func.id) {
455
- 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`);
456
- }
457
- internal.recordMigration(deployScript.func.id);
458
- }
459
- }
460
- }
461
- if (resolvedExecutionParams.reportGasUse) {
462
- const provider = external.network.provider;
463
- const transactionHashes = provider.transactionHashes;
464
- let totalGasUsed = 0;
465
- for (const hash of transactionHashes) {
466
- const transactionReceipt = await provider.request({ method: 'eth_getTransactionReceipt', params: [hash] });
467
- if (transactionReceipt) {
468
- const gasUsed = Number(transactionReceipt.gasUsed);
469
- totalGasUsed += gasUsed;
470
- }
471
- }
472
- console.log({ totalGasUsed });
473
- }
474
- return external;
196
+ return executor.executeDeployScriptModules(moduleObjects, userConfig, resolvedExecutionParams, args);
475
197
  }
476
198
  //# sourceMappingURL=index.js.map