prool 0.0.3 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +15 -0
- package/_lib/exports/index.d.ts +1 -1
- package/_lib/exports/processes.d.ts +2 -0
- package/_lib/exports/processes.d.ts.map +1 -0
- package/_lib/exports/processes.js +2 -0
- package/_lib/exports/processes.js.map +1 -0
- package/_lib/instance.d.ts +9 -6
- package/_lib/instance.d.ts.map +1 -1
- package/_lib/instance.js +22 -3
- package/_lib/instance.js.map +1 -1
- package/_lib/instances/anvil.d.ts +1 -5
- package/_lib/instances/anvil.d.ts.map +1 -1
- package/_lib/instances/anvil.js +18 -44
- package/_lib/instances/anvil.js.map +1 -1
- package/_lib/instances/stackup.d.ts +86 -0
- package/_lib/instances/stackup.d.ts.map +1 -0
- package/_lib/instances/stackup.js +89 -0
- package/_lib/instances/stackup.js.map +1 -0
- package/_lib/pool.d.ts +7 -6
- package/_lib/pool.d.ts.map +1 -1
- package/_lib/pool.js +60 -53
- package/_lib/pool.js.map +1 -1
- package/_lib/processes/execa.d.ts +27 -0
- package/_lib/processes/execa.d.ts.map +1 -0
- package/_lib/processes/execa.js +63 -0
- package/_lib/processes/execa.js.map +1 -0
- package/_lib/server.d.ts +3 -3
- package/_lib/server.d.ts.map +1 -1
- package/_lib/server.js +42 -34
- package/_lib/server.js.map +1 -1
- package/_lib/utils.d.ts +4 -3
- package/_lib/utils.d.ts.map +1 -1
- package/_lib/utils.js +2 -2
- package/_lib/utils.js.map +1 -1
- package/exports/index.ts +2 -2
- package/exports/processes.test.ts +10 -0
- package/exports/processes.ts +8 -0
- package/instance.test.ts +34 -2
- package/instance.ts +46 -13
- package/instances/anvil.test.ts +5 -3
- package/instances/anvil.ts +21 -49
- package/instances/stackup.test.ts +106 -0
- package/instances/stackup.ts +162 -0
- package/package.json +6 -2
- package/pool.test.ts +203 -138
- package/pool.ts +83 -66
- package/processes/execa.test.ts +143 -0
- package/processes/execa.ts +100 -0
- package/server.test.ts +162 -85
- package/server.ts +46 -38
- package/tsconfig.build.tsbuildinfo +1 -1
- package/utils.ts +11 -9
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
# prool
|
|
2
2
|
|
|
3
|
+
## 0.0.5
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [`cb371f6`](https://github.com/wevm/prool/commit/cb371f64ddd50d3611aa959f618506f18688f46d) Thanks [@jxom](https://github.com/jxom)! - Added `stackup` instance.
|
|
8
|
+
|
|
9
|
+
- [`c7348a3`](https://github.com/wevm/prool/commit/c7348a3e6b54881b45e5ce0caf25198dacfb2a7c) Thanks [@jxom](https://github.com/jxom)! - Added support for a callback `instance`.
|
|
10
|
+
|
|
11
|
+
## 0.0.4
|
|
12
|
+
|
|
13
|
+
### Patch Changes
|
|
14
|
+
|
|
15
|
+
- [`c208423`](https://github.com/wevm/prool/commit/c2084231b277cecb840e4f9957cc4fc2e5b0b7a2) Thanks [@jxom](https://github.com/jxom)! - Added `/restart` endpoint to the Pool Server.
|
|
16
|
+
Added `restart` method to pool instances.
|
|
17
|
+
|
|
3
18
|
## 0.0.3
|
|
4
19
|
|
|
5
20
|
### Patch Changes
|
package/_lib/exports/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export { type DefineInstanceFn, type Instance, type InstanceOptions, type InstanceStartOptions, defineInstance, } from '../instance.js';
|
|
2
2
|
export { type DefinePoolParameters, type DefinePoolReturnType, type Pool, definePool, } from '../pool.js';
|
|
3
|
-
export { type
|
|
3
|
+
export { type CreateServerParameters, type CreateServerReturnType, createServer, } from '../server.js';
|
|
4
4
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"processes.d.ts","sourceRoot":"","sources":["../../exports/processes.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,GACN,MAAM,uBAAuB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"processes.js","sourceRoot":"","sources":["../../exports/processes.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,GACN,MAAM,uBAAuB,CAAA"}
|
package/_lib/instance.d.ts
CHANGED
|
@@ -7,11 +7,11 @@ type EventTypes = {
|
|
|
7
7
|
stderr: [message: string];
|
|
8
8
|
stdout: [message: string];
|
|
9
9
|
};
|
|
10
|
-
type InstanceStartOptions_internal = {
|
|
10
|
+
export type InstanceStartOptions_internal = {
|
|
11
11
|
emitter: EventEmitter<EventTypes>;
|
|
12
12
|
status: Instance['status'];
|
|
13
13
|
};
|
|
14
|
-
type InstanceStopOptions_internal = {
|
|
14
|
+
export type InstanceStopOptions_internal = {
|
|
15
15
|
emitter: EventEmitter<EventTypes>;
|
|
16
16
|
status: Instance['status'];
|
|
17
17
|
};
|
|
@@ -23,8 +23,8 @@ export type InstanceStartOptions = {
|
|
|
23
23
|
};
|
|
24
24
|
export type DefineInstanceFn<parameters, _internal extends object | undefined = object | undefined> = (parameters: parameters) => Pick<Instance, 'host' | 'name' | 'port'> & {
|
|
25
25
|
_internal?: _internal | undefined;
|
|
26
|
-
start(options: InstanceStartOptions
|
|
27
|
-
stop(
|
|
26
|
+
start(options: InstanceStartOptions, options_internal: InstanceStartOptions_internal): Promise<void>;
|
|
27
|
+
stop(options_internal: InstanceStopOptions_internal): Promise<void>;
|
|
28
28
|
};
|
|
29
29
|
export type Instance<_internal extends object | undefined = object | undefined> = Pick<EventEmitter<EventTypes>, 'addListener' | 'off' | 'on' | 'once' | 'removeAllListeners' | 'removeListener'> & {
|
|
30
30
|
_internal: _internal;
|
|
@@ -59,16 +59,19 @@ export type Instance<_internal extends object | undefined = object | undefined>
|
|
|
59
59
|
clear(): void;
|
|
60
60
|
get(): string[];
|
|
61
61
|
};
|
|
62
|
+
/**
|
|
63
|
+
* Retarts the instance.
|
|
64
|
+
*/
|
|
65
|
+
restart(): Promise<void>;
|
|
62
66
|
/**
|
|
63
67
|
* Status of the instance.
|
|
64
68
|
*
|
|
65
69
|
* @default "idle"
|
|
66
70
|
*/
|
|
67
|
-
status: 'idle' | 'stopped' | 'starting' | 'started' | 'stopping';
|
|
71
|
+
status: 'idle' | 'restarting' | 'stopped' | 'starting' | 'started' | 'stopping';
|
|
68
72
|
/**
|
|
69
73
|
* Starts the instance.
|
|
70
74
|
*
|
|
71
|
-
* @param options - Options for starting the instance.
|
|
72
75
|
* @returns A function to stop the instance.
|
|
73
76
|
*/
|
|
74
77
|
start(): Promise<() => void>;
|
package/_lib/instance.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instance.d.ts","sourceRoot":"","sources":["../instance.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAE5C,KAAK,UAAU,GAAG;IAChB,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,CAAA;IAC1D,SAAS,EAAE,EAAE,CAAA;IACb,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;IAC1B,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;IACzB,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;CAC1B,CAAA;AAED,
|
|
1
|
+
{"version":3,"file":"instance.d.ts","sourceRoot":"","sources":["../instance.ts"],"names":[],"mappings":"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"}
|
package/_lib/instance.js
CHANGED
|
@@ -30,12 +30,14 @@ export function defineInstance(fn) {
|
|
|
30
30
|
...fn(parameters),
|
|
31
31
|
...createParameters,
|
|
32
32
|
};
|
|
33
|
-
const { messageBuffer = 20, timeout
|
|
33
|
+
const { messageBuffer = 20, timeout } = options;
|
|
34
|
+
let restartResolver = Promise.withResolvers();
|
|
34
35
|
let startResolver = Promise.withResolvers();
|
|
35
36
|
let stopResolver = Promise.withResolvers();
|
|
36
37
|
const emitter = new EventEmitter();
|
|
37
38
|
let messages = [];
|
|
38
39
|
let status = 'idle';
|
|
40
|
+
let restarting = false;
|
|
39
41
|
function onExit() {
|
|
40
42
|
status = 'stopped';
|
|
41
43
|
}
|
|
@@ -61,6 +63,8 @@ export function defineInstance(fn) {
|
|
|
61
63
|
name,
|
|
62
64
|
port,
|
|
63
65
|
get status() {
|
|
66
|
+
if (restarting)
|
|
67
|
+
return 'restarting';
|
|
64
68
|
return status;
|
|
65
69
|
},
|
|
66
70
|
async start() {
|
|
@@ -79,14 +83,15 @@ export function defineInstance(fn) {
|
|
|
79
83
|
emitter.on('exit', onExit);
|
|
80
84
|
status = 'starting';
|
|
81
85
|
start({
|
|
82
|
-
emitter,
|
|
83
86
|
port,
|
|
87
|
+
}, {
|
|
88
|
+
emitter,
|
|
84
89
|
status: this.status,
|
|
85
90
|
})
|
|
86
91
|
.then(() => {
|
|
87
92
|
status = 'started';
|
|
88
93
|
stopResolver = Promise.withResolvers();
|
|
89
|
-
startResolver.resolve(this.stop);
|
|
94
|
+
startResolver.resolve(this.stop.bind(this));
|
|
90
95
|
})
|
|
91
96
|
.catch((error) => {
|
|
92
97
|
status = 'idle';
|
|
@@ -127,6 +132,20 @@ export function defineInstance(fn) {
|
|
|
127
132
|
});
|
|
128
133
|
return stopResolver.promise;
|
|
129
134
|
},
|
|
135
|
+
async restart() {
|
|
136
|
+
if (restarting)
|
|
137
|
+
return restartResolver.promise;
|
|
138
|
+
restarting = true;
|
|
139
|
+
this.stop()
|
|
140
|
+
.then(() => this.start.bind(this)())
|
|
141
|
+
.then(() => restartResolver.resolve())
|
|
142
|
+
.catch(restartResolver.reject)
|
|
143
|
+
.finally(() => {
|
|
144
|
+
restartResolver = Promise.withResolvers();
|
|
145
|
+
restarting = false;
|
|
146
|
+
});
|
|
147
|
+
return restartResolver.promise;
|
|
148
|
+
},
|
|
130
149
|
addListener: emitter.addListener.bind(emitter),
|
|
131
150
|
off: emitter.off.bind(emitter),
|
|
132
151
|
on: emitter.on.bind(emitter),
|
package/_lib/instance.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instance.js","sourceRoot":"","sources":["../instance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"instance.js","sourceRoot":"","sources":["../instance.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { type ResultPromise } from 'execa';
|
|
2
1
|
export type AnvilParameters = {
|
|
3
2
|
/**
|
|
4
3
|
* Number of dev accounts to generate and configure.
|
|
@@ -451,9 +450,6 @@ export declare const anvil: import("../instance.js").DefineInstanceReturnType<{
|
|
|
451
450
|
*/
|
|
452
451
|
transactionBlockKeeper?: number | undefined;
|
|
453
452
|
};
|
|
454
|
-
readonly process:
|
|
455
|
-
cleanup: true;
|
|
456
|
-
reject: false;
|
|
457
|
-
}>;
|
|
453
|
+
readonly process: import("../processes/execa.js").Process_internal;
|
|
458
454
|
}, AnvilParameters | undefined>;
|
|
459
455
|
//# sourceMappingURL=anvil.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anvil.d.ts","sourceRoot":"","sources":["../../instances/anvil.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"anvil.d.ts","sourceRoot":"","sources":["../../instances/anvil.ts"],"names":[],"mappings":"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"}
|
package/_lib/instances/anvil.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { execa } from 'execa';
|
|
2
1
|
import { defineInstance } from '../instance.js';
|
|
3
|
-
import {
|
|
2
|
+
import { execa } from '../processes/execa.js';
|
|
4
3
|
import { toArgs } from '../utils.js';
|
|
5
4
|
/**
|
|
6
5
|
* Defines an Anvil instance.
|
|
@@ -15,59 +14,34 @@ import { toArgs } from '../utils.js';
|
|
|
15
14
|
*/
|
|
16
15
|
export const anvil = defineInstance((parameters) => {
|
|
17
16
|
const { binary = 'anvil', ...args } = parameters || {};
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
const killed = process.kill();
|
|
21
|
-
if (!killed)
|
|
22
|
-
throw new Error('Failed to stop anvil');
|
|
23
|
-
return new Promise((resolve) => process.on('close', resolve));
|
|
24
|
-
}
|
|
17
|
+
const name = 'anvil';
|
|
18
|
+
const process = execa({ name });
|
|
25
19
|
return {
|
|
26
20
|
_internal: {
|
|
27
21
|
args,
|
|
28
22
|
get process() {
|
|
29
|
-
return process;
|
|
23
|
+
return process._internal.process;
|
|
30
24
|
},
|
|
31
25
|
},
|
|
32
26
|
host: args.host ?? 'localhost',
|
|
33
|
-
name
|
|
27
|
+
name,
|
|
34
28
|
port: args.port ?? 8545,
|
|
35
|
-
async start({
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
reject
|
|
29
|
+
async start({ port = args.port }, options) {
|
|
30
|
+
return await process.start(($) => $ `${binary} ${toArgs({ ...args, port })}`, {
|
|
31
|
+
...options,
|
|
32
|
+
// Resolve when the process is listening via a "Listening on" message.
|
|
33
|
+
resolver({ process, reject, resolve }) {
|
|
34
|
+
process.stdout.on('data', (data) => {
|
|
35
|
+
const message = data.toString();
|
|
36
|
+
if (message.includes('Listening on'))
|
|
37
|
+
resolve();
|
|
38
|
+
});
|
|
39
|
+
process.stderr.on('data', reject);
|
|
40
|
+
},
|
|
40
41
|
});
|
|
41
|
-
process.stdout.on('data', (data) => {
|
|
42
|
-
const message = stripColors(data.toString());
|
|
43
|
-
emitter.emit('message', message);
|
|
44
|
-
emitter.emit('stdout', message);
|
|
45
|
-
if (message.includes('Listening on')) {
|
|
46
|
-
emitter.emit('listening');
|
|
47
|
-
resolve();
|
|
48
|
-
}
|
|
49
|
-
});
|
|
50
|
-
process.stderr.on('data', async (data) => {
|
|
51
|
-
const message = stripColors(data.toString());
|
|
52
|
-
emitter.emit('message', message);
|
|
53
|
-
emitter.emit('stderr', message);
|
|
54
|
-
await stop();
|
|
55
|
-
reject(new Error(`Failed to start anvil: ${data.toString()}`));
|
|
56
|
-
});
|
|
57
|
-
process.on('close', () => process.removeAllListeners());
|
|
58
|
-
process.on('exit', (code, signal) => {
|
|
59
|
-
emitter.emit('exit', code, signal);
|
|
60
|
-
if (!code) {
|
|
61
|
-
process.removeAllListeners();
|
|
62
|
-
if (status === 'starting')
|
|
63
|
-
reject(new Error('Failed to start anvil: exited.'));
|
|
64
|
-
}
|
|
65
|
-
});
|
|
66
|
-
return promise;
|
|
67
42
|
},
|
|
68
43
|
async stop() {
|
|
69
|
-
process.
|
|
70
|
-
await stop();
|
|
44
|
+
await process.stop();
|
|
71
45
|
},
|
|
72
46
|
};
|
|
73
47
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anvil.js","sourceRoot":"","sources":["../../instances/anvil.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"anvil.js","sourceRoot":"","sources":["../../instances/anvil.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAA;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAoPpC;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,cAAc,CAAC,CAAC,UAA4B,EAAE,EAAE;IACnE,MAAM,EAAE,MAAM,GAAG,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,UAAU,IAAI,EAAE,CAAA;IAEtD,MAAM,IAAI,GAAG,OAAO,CAAA;IACpB,MAAM,OAAO,GAAG,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,CAAA;IAE/B,OAAO;QACL,SAAS,EAAE;YACT,IAAI;YACJ,IAAI,OAAO;gBACT,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAA;YAClC,CAAC;SACF;QACD,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,WAAW;QAC9B,IAAI;QACJ,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI;QACvB,KAAK,CAAC,KAAK,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,EAAE,OAAO;YACvC,OAAO,MAAM,OAAO,CAAC,KAAK,CACxB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA,GAAG,MAAM,IAAI,MAAM,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,EAChD;gBACE,GAAG,OAAO;gBACV,sEAAsE;gBACtE,QAAQ,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE;oBACnC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;wBACjC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAA;wBAC/B,IAAI,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;4BAAE,OAAO,EAAE,CAAA;oBACjD,CAAC,CAAC,CAAA;oBACF,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;gBACnC,CAAC;aACF,CACF,CAAA;QACH,CAAC;QACD,KAAK,CAAC,IAAI;YACR,MAAM,OAAO,CAAC,IAAI,EAAE,CAAA;QACtB,CAAC;KACF,CAAA;AACH,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
export type StackupParameters = {
|
|
2
|
+
/**
|
|
3
|
+
* The name of the native tracer to use during validation. This will be "bundlerCollectorTracer" if using builds from ERC-4337 execution client repo.
|
|
4
|
+
* Defaults to address of `privateKey`.
|
|
5
|
+
*/
|
|
6
|
+
beneficiary?: string | undefined;
|
|
7
|
+
/**
|
|
8
|
+
* Directory to store the embedded database.
|
|
9
|
+
* @default /tmp/stackup_bundler
|
|
10
|
+
*/
|
|
11
|
+
dataDirectory?: string | undefined;
|
|
12
|
+
/**
|
|
13
|
+
* RPC url to the execution client.
|
|
14
|
+
*/
|
|
15
|
+
ethClientUrl: string;
|
|
16
|
+
/**
|
|
17
|
+
* A boolean value for bundlers on an Arbitrum stack network to properly account for the L1 callData cost.
|
|
18
|
+
* @default false
|
|
19
|
+
*/
|
|
20
|
+
isArbStackNetwork?: boolean | undefined;
|
|
21
|
+
/**
|
|
22
|
+
* A boolean value for bundlers on an OP stack network to properly account for the L1 callData cost.
|
|
23
|
+
* @default false
|
|
24
|
+
*/
|
|
25
|
+
isOpStackNetwork?: boolean | undefined;
|
|
26
|
+
/**
|
|
27
|
+
* A boolean value for bundlers on a network that supports RIP-7212 precompile for secp256r1 signature verification.
|
|
28
|
+
* @default false
|
|
29
|
+
*/
|
|
30
|
+
isRip7212Supported?: boolean | undefined;
|
|
31
|
+
/**
|
|
32
|
+
* The maximum gas limit that can be submitted per UserOperation batch.
|
|
33
|
+
* @default 18_000_000
|
|
34
|
+
*/
|
|
35
|
+
maxBatchGasLimit?: number | undefined;
|
|
36
|
+
/**
|
|
37
|
+
* The maximum duration that a userOp can stay in the mempool before getting dropped.
|
|
38
|
+
* @default 180
|
|
39
|
+
*/
|
|
40
|
+
maxOpTtlSeconds?: number | undefined;
|
|
41
|
+
/**
|
|
42
|
+
* The maximum verificationGasLimit on a received UserOperation.
|
|
43
|
+
* @default 6_000_000
|
|
44
|
+
*/
|
|
45
|
+
maxVerificationGas?: number | undefined;
|
|
46
|
+
/**
|
|
47
|
+
* The maximum block range when looking up a User Operation with eth_getUserOperationReceipt or eth_getUserOperationByHash.
|
|
48
|
+
*
|
|
49
|
+
* Higher limits allow for fetching older User Operations but will result in higher request latency due to additional compute on the underlying node.
|
|
50
|
+
*
|
|
51
|
+
* @default 2_000
|
|
52
|
+
*/
|
|
53
|
+
opLookupLimit?: number | undefined;
|
|
54
|
+
/**
|
|
55
|
+
* Port to start the instance on.
|
|
56
|
+
*/
|
|
57
|
+
port?: number | undefined;
|
|
58
|
+
/**
|
|
59
|
+
* The private key for the EOA used to relay User Operation bundles to the EntryPoint.
|
|
60
|
+
*/
|
|
61
|
+
privateKey: string;
|
|
62
|
+
/**
|
|
63
|
+
* EntryPoint addresses to support. The first address is the preferred EntryPoint.
|
|
64
|
+
*/
|
|
65
|
+
supportedEntryPoints?: string[];
|
|
66
|
+
};
|
|
67
|
+
/**
|
|
68
|
+
* Defines an Anvil instance.
|
|
69
|
+
*
|
|
70
|
+
* @example
|
|
71
|
+
* ```ts
|
|
72
|
+
* const instance = stackup({
|
|
73
|
+
* ethClientUrl: 'http://localhost:8545',
|
|
74
|
+
* port: 4337,
|
|
75
|
+
* privateKey: '0x...'
|
|
76
|
+
* })
|
|
77
|
+
* await instance.start()
|
|
78
|
+
* // ...
|
|
79
|
+
* await instance.stop()
|
|
80
|
+
* ```
|
|
81
|
+
*/
|
|
82
|
+
export declare const stackup: import("../instance.js").DefineInstanceReturnType<{
|
|
83
|
+
args: StackupParameters;
|
|
84
|
+
readonly process: import("../processes/execa.js").Process_internal;
|
|
85
|
+
}, StackupParameters | undefined>;
|
|
86
|
+
//# sourceMappingURL=stackup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stackup.d.ts","sourceRoot":"","sources":["../../instances/stackup.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,iBAAiB,GAAG;IAC9B;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAChC;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAClC;;OAEG;IACH,YAAY,EAAE,MAAM,CAAA;IACpB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IACvC;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IACtC;;;OAGG;IACH,kBAAkB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IACxC;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACrC;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACpC;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACvC;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAClC;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACzB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAA;IAClB;;OAEG;IACH,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAA;CAChC,CAAA;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,OAAO;;;iCA4ElB,CAAA"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { defineInstance } from '../instance.js';
|
|
2
|
+
import { execa } from '../processes/execa.js';
|
|
3
|
+
/**
|
|
4
|
+
* Defines an Anvil instance.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```ts
|
|
8
|
+
* const instance = stackup({
|
|
9
|
+
* ethClientUrl: 'http://localhost:8545',
|
|
10
|
+
* port: 4337,
|
|
11
|
+
* privateKey: '0x...'
|
|
12
|
+
* })
|
|
13
|
+
* await instance.start()
|
|
14
|
+
* // ...
|
|
15
|
+
* await instance.stop()
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
export const stackup = defineInstance((parameters) => {
|
|
19
|
+
const args = (parameters || {});
|
|
20
|
+
const host = 'localhost';
|
|
21
|
+
const name = 'stackup';
|
|
22
|
+
const process = execa({ name });
|
|
23
|
+
return {
|
|
24
|
+
_internal: {
|
|
25
|
+
args,
|
|
26
|
+
get process() {
|
|
27
|
+
return process._internal.process;
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
host,
|
|
31
|
+
name,
|
|
32
|
+
port: args.port ?? 4337,
|
|
33
|
+
async start({ port = args.port }, options) {
|
|
34
|
+
const args_ = [
|
|
35
|
+
'--net',
|
|
36
|
+
'host',
|
|
37
|
+
'--add-host',
|
|
38
|
+
'host.docker.internal:host-gateway',
|
|
39
|
+
'--add-host',
|
|
40
|
+
'localhost:host-gateway',
|
|
41
|
+
'-p',
|
|
42
|
+
`${port}:${port}`,
|
|
43
|
+
'-e',
|
|
44
|
+
`ERC4337_BUNDLER_PORT=${port}`,
|
|
45
|
+
...Object.entries(args).flatMap(([key, value]) => {
|
|
46
|
+
if (key === 'port')
|
|
47
|
+
return [];
|
|
48
|
+
if (value === undefined)
|
|
49
|
+
return [];
|
|
50
|
+
if (key === 'ethClientUrl')
|
|
51
|
+
value = value.replaceAll(/127\.0\.0\.1|0\.0\.0\.0/g, 'host.docker.internal');
|
|
52
|
+
if (key === 'privateKey')
|
|
53
|
+
value = value.replace('0x', '');
|
|
54
|
+
return [
|
|
55
|
+
'-e',
|
|
56
|
+
`ERC4337_BUNDLER_${key
|
|
57
|
+
.replace(/([a-z])([A-Z])/g, '$1_$2')
|
|
58
|
+
.toUpperCase()}=${value}`,
|
|
59
|
+
];
|
|
60
|
+
}),
|
|
61
|
+
'stackupwallet/stackup-bundler:latest',
|
|
62
|
+
'/app/stackup-bundler',
|
|
63
|
+
'start',
|
|
64
|
+
'--mode',
|
|
65
|
+
'private',
|
|
66
|
+
];
|
|
67
|
+
return await process.start(($) => $ `docker run ${args_}`, {
|
|
68
|
+
...options,
|
|
69
|
+
resolver({ process, resolve, reject }) {
|
|
70
|
+
process.stderr.on('data', async (data) => {
|
|
71
|
+
const message = data.toString();
|
|
72
|
+
// For some reason, `stackup-bundler` logs to stderr. So we have to try
|
|
73
|
+
// and dissect what is an error, and what is not. 😅
|
|
74
|
+
if (message.includes('Set nextTxnTs to'))
|
|
75
|
+
setTimeout(() => resolve(), 100);
|
|
76
|
+
else if (message
|
|
77
|
+
.toLowerCase()
|
|
78
|
+
.match(/panic|error|connection refused|address already in use/))
|
|
79
|
+
reject(data);
|
|
80
|
+
});
|
|
81
|
+
},
|
|
82
|
+
});
|
|
83
|
+
},
|
|
84
|
+
async stop() {
|
|
85
|
+
await process.stop();
|
|
86
|
+
},
|
|
87
|
+
};
|
|
88
|
+
});
|
|
89
|
+
//# sourceMappingURL=stackup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stackup.js","sourceRoot":"","sources":["../../instances/stackup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAA;AAqE7C;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,cAAc,CAAC,CAAC,UAA8B,EAAE,EAAE;IACvE,MAAM,IAAI,GAAG,CAAC,UAAU,IAAI,EAAE,CAAsB,CAAA;IAEpD,MAAM,IAAI,GAAG,WAAW,CAAA;IACxB,MAAM,IAAI,GAAG,SAAS,CAAA;IACtB,MAAM,OAAO,GAAG,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,CAAA;IAE/B,OAAO;QACL,SAAS,EAAE;YACT,IAAI;YACJ,IAAI,OAAO;gBACT,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAA;YAClC,CAAC;SACF;QACD,IAAI;QACJ,IAAI;QACJ,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI;QACvB,KAAK,CAAC,KAAK,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,EAAE,OAAO;YACvC,MAAM,KAAK,GAAG;gBACZ,OAAO;gBACP,MAAM;gBACN,YAAY;gBACZ,mCAAmC;gBACnC,YAAY;gBACZ,wBAAwB;gBACxB,IAAI;gBACJ,GAAG,IAAI,IAAI,IAAI,EAAE;gBACjB,IAAI;gBACJ,wBAAwB,IAAI,EAAE;gBAC9B,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;oBAC/C,IAAI,GAAG,KAAK,MAAM;wBAAE,OAAO,EAAE,CAAA;oBAC7B,IAAI,KAAK,KAAK,SAAS;wBAAE,OAAO,EAAE,CAAA;oBAElC,IAAI,GAAG,KAAK,cAAc;wBACxB,KAAK,GAAI,KAAgB,CAAC,UAAU,CAClC,0BAA0B,EAC1B,sBAAsB,CACvB,CAAA;oBACH,IAAI,GAAG,KAAK,YAAY;wBAAE,KAAK,GAAI,KAAgB,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;oBAErE,OAAO;wBACL,IAAI;wBACJ,mBAAmB,GAAG;6BACnB,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC;6BACnC,WAAW,EAAE,IAAI,KAAK,EAAE;qBAC5B,CAAA;gBACH,CAAC,CAAC;gBACF,sCAAsC;gBACtC,sBAAsB;gBACtB,OAAO;gBACP,QAAQ;gBACR,SAAS;aACV,CAAA;YACD,OAAO,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA,cAAc,KAAK,EAAE,EAAE;gBACxD,GAAG,OAAO;gBACV,QAAQ,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE;oBACnC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;wBACvC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAA;wBAC/B,uEAAuE;wBACvE,oDAAoD;wBACpD,IAAI,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC;4BACtC,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,CAAA;6BAC7B,IACH,OAAO;6BACJ,WAAW,EAAE;6BACb,KAAK,CAAC,uDAAuD,CAAC;4BAEjE,MAAM,CAAC,IAAI,CAAC,CAAA;oBAChB,CAAC,CAAC,CAAA;gBACJ,CAAC;aACF,CAAC,CAAA;QACJ,CAAC;QACD,KAAK,CAAC,IAAI;YACR,MAAM,OAAO,CAAC,IAAI,EAAE,CAAA;QACtB,CAAC;KACF,CAAA;AACH,CAAC,CAAC,CAAA"}
|
package/_lib/pool.d.ts
CHANGED
|
@@ -1,24 +1,25 @@
|
|
|
1
1
|
import type { Instance } from './instance.js';
|
|
2
2
|
type Instance_ = Omit<Instance, 'create'>;
|
|
3
|
-
export type Pool<key = number> = Pick<Map<key, Instance_>, 'entries' | 'keys' | 'forEach' | 'get' | 'has' | 'size' | 'values'> & {
|
|
3
|
+
export type Pool<key extends number | string = number | string> = Pick<Map<key, Instance_>, 'entries' | 'keys' | 'forEach' | 'get' | 'has' | 'size' | 'values'> & {
|
|
4
4
|
_internal: {
|
|
5
|
-
instance: Instance_;
|
|
5
|
+
instance: Instance_ | ((key: key) => Instance_);
|
|
6
6
|
};
|
|
7
7
|
destroy(key: key): Promise<void>;
|
|
8
8
|
destroyAll(): Promise<void>;
|
|
9
|
+
restart(key: key): Promise<void>;
|
|
9
10
|
start(key: key, options?: {
|
|
10
11
|
port?: number;
|
|
11
12
|
}): Promise<Instance_>;
|
|
12
13
|
stop(key: key): Promise<void>;
|
|
13
14
|
stopAll(): Promise<void>;
|
|
14
15
|
};
|
|
15
|
-
export type DefinePoolParameters = {
|
|
16
|
+
export type DefinePoolParameters<key extends number | string = number | string> = {
|
|
16
17
|
/** Instance for the pool. */
|
|
17
|
-
instance: Instance;
|
|
18
|
+
instance: Instance | ((key: key) => Instance);
|
|
18
19
|
/** The maximum number of instances that can be started. */
|
|
19
20
|
limit?: number | number;
|
|
20
21
|
};
|
|
21
|
-
export type DefinePoolReturnType<key = number> = Pool<key>;
|
|
22
|
+
export type DefinePoolReturnType<key extends number | string = number | string> = Pool<key>;
|
|
22
23
|
/**
|
|
23
24
|
* Defines an instance pool. Instances can be started, cached, and stopped against an identifier.
|
|
24
25
|
*
|
|
@@ -33,6 +34,6 @@ export type DefinePoolReturnType<key = number> = Pool<key>;
|
|
|
33
34
|
* const instance_3 = await pool.start(3)
|
|
34
35
|
* ```
|
|
35
36
|
*/
|
|
36
|
-
export declare function definePool<key = number>(parameters: DefinePoolParameters): DefinePoolReturnType<key>;
|
|
37
|
+
export declare function definePool<key extends number | string = number>(parameters: DefinePoolParameters<key>): DefinePoolReturnType<key>;
|
|
37
38
|
export {};
|
|
38
39
|
//# sourceMappingURL=pool.d.ts.map
|
package/_lib/pool.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pool.d.ts","sourceRoot":"","sources":["../pool.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAE7C,KAAK,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;AAEzC,MAAM,MAAM,IAAI,CAAC,GAAG,GAAG,MAAM,IAAI,IAAI,
|
|
1
|
+
{"version":3,"file":"pool.d.ts","sourceRoot":"","sources":["../pool.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAE7C,KAAK,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;AAEzC,MAAM,MAAM,IAAI,CAAC,GAAG,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,IAAI,IAAI,CACpE,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,EACnB,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,QAAQ,CACnE,GAAG;IACF,SAAS,EAAE;QACT,QAAQ,EAAE,SAAS,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,SAAS,CAAC,CAAA;KAChD,CAAA;IACD,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAChC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IAC3B,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAChC,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,SAAS,CAAC,CAAA;IAChE,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC7B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACzB,CAAA;AAED,MAAM,MAAM,oBAAoB,CAC9B,GAAG,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,IAC3C;IACF,6BAA6B;IAC7B,QAAQ,EAAE,QAAQ,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,QAAQ,CAAC,CAAA;IAC7C,2DAA2D;IAC3D,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CACxB,CAAA;AAED,MAAM,MAAM,oBAAoB,CAC9B,GAAG,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,IAC3C,IAAI,CAAC,GAAG,CAAC,CAAA;AAEb;;;;;;;;;;;;;GAaG;AACH,wBAAgB,UAAU,CAAC,GAAG,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM,EAC7D,UAAU,EAAE,oBAAoB,CAAC,GAAG,CAAC,GACpC,oBAAoB,CAAC,GAAG,CAAC,CAqJ3B"}
|