prool 0.0.25 → 0.1.1

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 (114) hide show
  1. package/{LICENSE → LICENSE.md} +1 -1
  2. package/README.md +46 -163
  3. package/{_lib/instance.d.ts → dist/Instance.d.ts} +28 -25
  4. package/dist/Instance.d.ts.map +1 -0
  5. package/{_lib/instance.js → dist/Instance.js} +9 -4
  6. package/dist/Instance.js.map +1 -0
  7. package/{_lib/pool.d.ts → dist/Pool.d.ts} +15 -13
  8. package/dist/Pool.d.ts.map +1 -0
  9. package/{_lib/pool.js → dist/Pool.js} +3 -3
  10. package/dist/Pool.js.map +1 -0
  11. package/{_lib/server.d.ts → dist/Server.d.ts} +7 -10
  12. package/dist/Server.d.ts.map +1 -0
  13. package/{_lib/server.js → dist/Server.js} +8 -9
  14. package/dist/Server.js.map +1 -0
  15. package/dist/index.d.ts +4 -0
  16. package/dist/index.d.ts.map +1 -0
  17. package/dist/index.js +4 -0
  18. package/dist/index.js.map +1 -0
  19. package/dist/instances/alto.d.ts +452 -0
  20. package/dist/instances/alto.d.ts.map +1 -0
  21. package/{_lib → dist}/instances/alto.js +4 -4
  22. package/dist/instances/alto.js.map +1 -0
  23. package/dist/instances/anvil.d.ts +458 -0
  24. package/dist/instances/anvil.d.ts.map +1 -0
  25. package/{_lib → dist}/instances/anvil.js +4 -4
  26. package/dist/instances/anvil.js.map +1 -0
  27. package/dist/instances/tempo.d.ts +189 -0
  28. package/dist/instances/tempo.d.ts.map +1 -0
  29. package/dist/instances/tempo.js +200 -0
  30. package/dist/instances/tempo.js.map +1 -0
  31. package/{_lib → dist/internal}/utils.d.ts +5 -5
  32. package/dist/internal/utils.d.ts.map +1 -0
  33. package/{_lib → dist/internal}/utils.js +37 -7
  34. package/dist/internal/utils.js.map +1 -0
  35. package/{_lib → dist}/processes/execa.d.ts +11 -10
  36. package/dist/processes/execa.d.ts.map +1 -0
  37. package/{_lib → dist}/processes/execa.js +1 -1
  38. package/dist/processes/execa.js.map +1 -0
  39. package/package.json +17 -16
  40. package/{instance.test.ts → src/Instance.test.ts} +12 -12
  41. package/{instance.ts → src/Instance.ts} +51 -42
  42. package/{pool.test.ts → src/Pool.test.ts} +41 -55
  43. package/{pool.ts → src/Pool.ts} +21 -19
  44. package/{server.test.ts → src/Server.test.ts} +26 -149
  45. package/{server.ts → src/Server.ts} +9 -11
  46. package/src/index.ts +3 -0
  47. package/{instances → src/instances}/alto.test.ts +8 -11
  48. package/src/instances/alto.ts +289 -0
  49. package/{instances → src/instances}/anvil.test.ts +5 -6
  50. package/src/instances/anvil.ts +306 -0
  51. package/{instances/silius.test.ts → src/instances/tempo.test.ts} +20 -44
  52. package/src/instances/tempo.ts +322 -0
  53. package/{utils.test.ts → src/internal/utils.test.ts} +20 -6
  54. package/{utils.ts → src/internal/utils.ts} +47 -17
  55. package/{processes → src/processes}/execa.test.ts +6 -11
  56. package/{processes → src/processes}/execa.ts +19 -15
  57. package/src/processes/index.ts +1 -0
  58. package/CHANGELOG.md +0 -154
  59. package/_lib/exports/index.d.ts +0 -5
  60. package/_lib/exports/index.d.ts.map +0 -1
  61. package/_lib/exports/index.js +0 -5
  62. package/_lib/exports/index.js.map +0 -1
  63. package/_lib/exports/instances.d.ts +0 -7
  64. package/_lib/exports/instances.d.ts.map +0 -1
  65. package/_lib/exports/instances.js +0 -7
  66. package/_lib/exports/instances.js.map +0 -1
  67. package/_lib/exports/processes.d.ts +0 -2
  68. package/_lib/exports/processes.d.ts.map +0 -1
  69. package/_lib/exports/processes.js +0 -2
  70. package/_lib/exports/processes.js.map +0 -1
  71. package/_lib/instance.d.ts.map +0 -1
  72. package/_lib/instance.js.map +0 -1
  73. package/_lib/instances/alto.d.ts +0 -449
  74. package/_lib/instances/alto.d.ts.map +0 -1
  75. package/_lib/instances/alto.js.map +0 -1
  76. package/_lib/instances/anvil.d.ts +0 -455
  77. package/_lib/instances/anvil.d.ts.map +0 -1
  78. package/_lib/instances/anvil.js.map +0 -1
  79. package/_lib/instances/rundler.d.ts +0 -604
  80. package/_lib/instances/rundler.d.ts.map +0 -1
  81. package/_lib/instances/rundler.js +0 -86
  82. package/_lib/instances/rundler.js.map +0 -1
  83. package/_lib/instances/silius.d.ts +0 -224
  84. package/_lib/instances/silius.d.ts.map +0 -1
  85. package/_lib/instances/silius.js +0 -117
  86. package/_lib/instances/silius.js.map +0 -1
  87. package/_lib/instances/stackup.d.ts +0 -86
  88. package/_lib/instances/stackup.d.ts.map +0 -1
  89. package/_lib/instances/stackup.js +0 -89
  90. package/_lib/instances/stackup.js.map +0 -1
  91. package/_lib/pool.d.ts.map +0 -1
  92. package/_lib/pool.js.map +0 -1
  93. package/_lib/processes/execa.d.ts.map +0 -1
  94. package/_lib/processes/execa.js.map +0 -1
  95. package/_lib/server.d.ts.map +0 -1
  96. package/_lib/server.js.map +0 -1
  97. package/_lib/utils.d.ts.map +0 -1
  98. package/_lib/utils.js.map +0 -1
  99. package/exports/index.test.ts +0 -16
  100. package/exports/index.ts +0 -29
  101. package/exports/instances.test.ts +0 -15
  102. package/exports/instances.ts +0 -13
  103. package/exports/processes.test.ts +0 -10
  104. package/exports/processes.ts +0 -8
  105. package/instances/alto.ts +0 -280
  106. package/instances/anvil.ts +0 -304
  107. package/instances/package.json +0 -5
  108. package/instances/rundler.test.ts +0 -111
  109. package/instances/rundler.ts +0 -451
  110. package/instances/silius.ts +0 -347
  111. package/instances/stackup.test.ts +0 -106
  112. package/instances/stackup.ts +0 -162
  113. package/processes/package.json +0 -5
  114. package/tsconfig.build.tsbuildinfo +0 -1
@@ -0,0 +1,200 @@
1
+ import * as os from 'node:os';
2
+ import * as path from 'node:path';
3
+ import { GenericContainer, Wait, } from 'testcontainers';
4
+ import * as Instance from '../Instance.js';
5
+ import { deepAssign, toArgs } from '../internal/utils.js';
6
+ import { execa } from '../processes/execa.js';
7
+ export function command(parameters) {
8
+ const { blockMaxTransactions, blockTime, mnemonic, port, ...rest } = parameters;
9
+ const datadir = path.join(os.tmpdir(), '.prool', `tempo.${port}`);
10
+ const defaultParameters = {
11
+ authrpc: {
12
+ port: port + 30,
13
+ },
14
+ datadir,
15
+ dev: [
16
+ true,
17
+ {
18
+ blockTime: blockTime ?? '50ms',
19
+ ...(blockMaxTransactions ? { blockMaxTransactions } : {}),
20
+ ...(mnemonic ? { mnemonic } : {}),
21
+ },
22
+ ],
23
+ engine: {
24
+ disablePrecompileCache: true,
25
+ legacyStateRoot: true,
26
+ },
27
+ faucet: {
28
+ address: [
29
+ '0x20c0000000000000000000000000000000000000',
30
+ '0x20c0000000000000000000000000000000000001',
31
+ '0x20c0000000000000000000000000000000000002',
32
+ '0x20c0000000000000000000000000000000000003',
33
+ ],
34
+ amount: '1000000000000',
35
+ enabled: true,
36
+ privateKey: '0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80',
37
+ },
38
+ http: {
39
+ addr: '0.0.0.0',
40
+ api: 'all',
41
+ corsdomain: '*',
42
+ port: port,
43
+ },
44
+ port: port + 10,
45
+ ws: {
46
+ port: port + 20,
47
+ },
48
+ };
49
+ return [
50
+ 'node',
51
+ ...toArgs(deepAssign(defaultParameters, rest), {
52
+ arraySeparator: null,
53
+ }),
54
+ ];
55
+ }
56
+ /**
57
+ * Defines a Tempo instance.
58
+ *
59
+ * @example
60
+ * ```ts
61
+ * const instance = Instance.tempo({ port: 8545 })
62
+ * await instance.start()
63
+ * // ...
64
+ * await instance.stop()
65
+ * ```
66
+ */
67
+ export const tempo = Instance.define((parameters) => {
68
+ const { binary = 'tempo', log: log_, ...args } = parameters || {};
69
+ const log = (() => {
70
+ try {
71
+ return JSON.parse(log_);
72
+ }
73
+ catch {
74
+ return log_;
75
+ }
76
+ })();
77
+ const RUST_LOG = log && typeof log !== 'boolean' ? log : '';
78
+ const name = 'tempo';
79
+ const process = execa({ name });
80
+ return {
81
+ _internal: {
82
+ args,
83
+ get process() {
84
+ return process._internal.process;
85
+ },
86
+ },
87
+ host: args.host ?? 'localhost',
88
+ name,
89
+ port: args.port ?? 8545,
90
+ async start({ port = args.port }, options) {
91
+ return await process.start(($) => $({
92
+ env: {
93
+ RUST_LOG,
94
+ },
95
+ }) `${[binary, ...command({ ...args, port })]}`, {
96
+ ...options,
97
+ // Resolve when the process is listening via "RPC HTTP server started" message.
98
+ resolver({ process, reject, resolve }) {
99
+ process.stdout.on('data', (data) => {
100
+ const message = data.toString();
101
+ if (log)
102
+ console.log(message);
103
+ if (message.includes('RPC HTTP server started'))
104
+ resolve();
105
+ if (message.includes('shutting down'))
106
+ reject('shutting down');
107
+ });
108
+ process.stderr.on('data', (data) => {
109
+ const message = data.toString();
110
+ if (log)
111
+ console.error(message);
112
+ });
113
+ },
114
+ });
115
+ },
116
+ async stop() {
117
+ await process.stop();
118
+ },
119
+ };
120
+ });
121
+ /**
122
+ * Defines a Tempo instance.
123
+ *
124
+ * @example
125
+ * ```ts
126
+ * const instance = Instance.tempoDocker({ port: 8545 })
127
+ * await instance.start()
128
+ * // ...
129
+ * await instance.stop()
130
+ * ```
131
+ */
132
+ export const tempoDocker = Instance.define((parameters) => {
133
+ const { containerName = `tempo.${crypto.randomUUID()}`, image = 'ghcr.io/tempoxyz/tempo:latest', log: log_, ...args } = parameters || {};
134
+ const log = (() => {
135
+ try {
136
+ return JSON.parse(log_);
137
+ }
138
+ catch {
139
+ return log_;
140
+ }
141
+ })();
142
+ const RUST_LOG = log && typeof log !== 'boolean' ? log : '';
143
+ const name = 'tempo';
144
+ let container;
145
+ return {
146
+ _internal: {
147
+ args,
148
+ },
149
+ host: args.host ?? 'localhost',
150
+ name,
151
+ port: args.port ?? 8545,
152
+ async start({ port = args.port }, { emitter }) {
153
+ const promise = Promise.withResolvers();
154
+ const c = new GenericContainer(image)
155
+ .withPlatform('linux/x86_64')
156
+ .withNetworkMode('host')
157
+ .withExtraHosts([
158
+ { host: 'host.docker.internal', ipAddress: 'host-gateway' },
159
+ { host: 'localhost', ipAddress: 'host-gateway' },
160
+ ])
161
+ .withName(containerName)
162
+ .withEnvironment({ RUST_LOG })
163
+ .withCommand(command({ ...args, port }))
164
+ .withWaitStrategy(Wait.forLogMessage(/RPC HTTP server started/))
165
+ .withLogConsumer((stream) => {
166
+ stream.on('data', (data) => {
167
+ const message = data.toString();
168
+ emitter.emit('message', message);
169
+ emitter.emit('stdout', message);
170
+ if (log)
171
+ console.log(message);
172
+ if (message.includes('shutting down'))
173
+ promise.reject(new Error(`Failed to start: ${message}`));
174
+ });
175
+ stream.on('error', (error) => {
176
+ if (log)
177
+ console.error(error.message);
178
+ emitter.emit('message', error.message);
179
+ emitter.emit('stderr', error.message);
180
+ promise.reject(new Error(`Failed to start: ${error.message}`));
181
+ });
182
+ })
183
+ .withStartupTimeout(10_000);
184
+ c.start()
185
+ .then((c) => {
186
+ container = c;
187
+ promise.resolve();
188
+ })
189
+ .catch(promise.reject);
190
+ return promise.promise;
191
+ },
192
+ async stop() {
193
+ if (!container)
194
+ return;
195
+ await container.stop();
196
+ container = undefined;
197
+ },
198
+ };
199
+ });
200
+ //# sourceMappingURL=tempo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tempo.js","sourceRoot":"","sources":["../../src/instances/tempo.ts"],"names":[],"mappings":"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"}
@@ -22,11 +22,11 @@ export declare function stripColors(message: string): string;
22
22
  * @param options The options object.
23
23
  * @returns The command line arguments.
24
24
  */
25
- export declare function toArgs(obj: {
26
- [key: string]: Record<string, any> | string | readonly string[] | boolean | number | bigint | undefined;
27
- }, options?: {
28
- casing: 'kebab' | 'snake';
29
- }): any[];
25
+ export declare function toArgs(obj: Record<string, unknown>, options?: {
26
+ arraySeparator?: string | null | undefined;
27
+ casing?: 'kebab' | 'snake' | undefined;
28
+ }): string[];
30
29
  /** Converts to a --flag-case string. */
31
30
  export declare function toFlagCase(str: string, separator?: string): string;
31
+ export declare function deepAssign(target: Record<string, unknown>, ...sources: Record<string, unknown>[]): Record<string, unknown>;
32
32
  //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/internal/utils.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,qBAAqB,GAAG;IAClC,EAAE,EAAE,MAAM,GAAG,SAAS,CAAA;IACtB,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,qBAAqB,CAkBlE;AAMD;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,UAE1C;AAED;;;;;GAKG;AACH,wBAAgB,MAAM,CACpB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,OAAO,GAAE;IACP,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;IAC1C,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,CAAA;CAClC,GACL,MAAM,EAAE,CAqCV;AAED,wCAAwC;AACxC,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,SAAM,UAatD;AAMD,wBAAgB,UAAU,CACxB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,GAAG,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GACpC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAkBzB"}
@@ -19,7 +19,7 @@ export function extractPath(request) {
19
19
  return { id, path };
20
20
  }
21
21
  const ansiColorRegex =
22
- // biome-ignore lint/suspicious/noControlCharactersInRegex: <explanation>
22
+ // biome-ignore lint/suspicious/noControlCharactersInRegex: _
23
23
  /[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g;
24
24
  /**
25
25
  * Strips ANSI color codes from a string.
@@ -36,19 +36,27 @@ export function stripColors(message) {
36
36
  * @param options The options object.
37
37
  * @returns The command line arguments.
38
38
  */
39
- export function toArgs(obj, options = { casing: 'kebab' }) {
40
- const { casing } = options;
39
+ export function toArgs(obj, options = {}) {
40
+ const { arraySeparator = ',', casing = 'kebab' } = options;
41
41
  return Object.entries(obj).flatMap(([key, value]) => {
42
42
  if (value === undefined)
43
43
  return [];
44
- if (Array.isArray(value))
45
- return [toFlagCase(key), value.join(',')];
44
+ if (Array.isArray(value)) {
45
+ if (value[0] === true)
46
+ return [toFlagCase(key), ...toArgs({ [key]: value[1] }, options)];
47
+ const arrayValue = (() => {
48
+ if (arraySeparator === null)
49
+ return value;
50
+ return value.join(arraySeparator);
51
+ })();
52
+ return [toFlagCase(key), arrayValue].flat();
53
+ }
46
54
  if (typeof value === 'object' && value !== null) {
47
55
  return Object.entries(value).flatMap(([subKey, subValue]) => {
48
56
  if (subValue === undefined)
49
57
  return [];
50
58
  const flag = toFlagCase(`${key}.${subKey}`, casing === 'kebab' ? '-' : '_');
51
- return [flag, Array.isArray(subValue) ? subValue.join(',') : subValue];
59
+ return toArgs({ [flag.slice(2)]: subValue }, options);
52
60
  });
53
61
  }
54
62
  const flag = toFlagCase(key, casing === 'kebab' ? '-' : '_');
@@ -56,7 +64,7 @@ export function toArgs(obj, options = { casing: 'kebab' }) {
56
64
  return [flag, 'false'];
57
65
  if (value === true)
58
66
  return [flag];
59
- const stringified = value.toString();
67
+ const stringified = value?.toString() ?? '';
60
68
  if (stringified === '')
61
69
  return [flag];
62
70
  return [flag, stringified];
@@ -76,4 +84,26 @@ export function toFlagCase(str, separator = '-') {
76
84
  }
77
85
  return `--${keys.join('.')}`;
78
86
  }
87
+ function isPlainObject(value) {
88
+ return Object.prototype.toString.call(value) === '[object Object]';
89
+ }
90
+ export function deepAssign(target, ...sources) {
91
+ for (const source of sources) {
92
+ if (!isPlainObject(source))
93
+ continue;
94
+ for (const key of Reflect.ownKeys(source)) {
95
+ const srcVal = source[key];
96
+ const tgtVal = target[key];
97
+ // If both are plain objects, merge recursively
98
+ if (isPlainObject(srcVal) && isPlainObject(tgtVal)) {
99
+ deepAssign(tgtVal, srcVal);
100
+ continue;
101
+ }
102
+ // Otherwise, assign a deep clone of the source value
103
+ ;
104
+ target[key] = structuredClone(srcVal);
105
+ }
106
+ }
107
+ return target;
108
+ }
79
109
  //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/internal/utils.ts"],"names":[],"mappings":"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"}
@@ -1,22 +1,18 @@
1
- /// <reference types="node" resolution-mode="require"/>
2
1
  import type { SignalConstants } from 'node:os';
3
- import { type ResultPromise, execa as exec } from 'execa';
4
- import type { InstanceStartOptions_internal } from '../instance.js';
2
+ import { execa as exec, type ResultPromise } from 'execa';
3
+ import type * as Instance from '../Instance.js';
5
4
  export type Process_internal = ResultPromise<{
6
5
  cleanup: true;
7
6
  reject: false;
8
7
  }>;
9
- export type ExecaStartOptions = InstanceStartOptions_internal & {
8
+ export type ExecaStartOptions = Instance.define.InstanceStartOptions_internal & {
10
9
  resolver(options: {
11
10
  process: Process_internal;
12
11
  reject(data: string): Promise<void>;
13
12
  resolve(): void;
14
13
  }): void;
15
14
  };
16
- export type ExecaParameters = {
17
- name: string;
18
- };
19
- export type ExecaProcess = {
15
+ export type Process = {
20
16
  _internal: {
21
17
  process: Process_internal;
22
18
  };
@@ -24,6 +20,11 @@ export type ExecaProcess = {
24
20
  start(command: (x: typeof exec) => void, options: ExecaStartOptions): Promise<void>;
25
21
  stop(signal?: keyof SignalConstants | number): Promise<void>;
26
22
  };
27
- export type ExecaReturnType = ExecaProcess;
28
- export declare function execa(parameters: ExecaParameters): ExecaReturnType;
23
+ export declare function execa(parameters: execa.Parameters): execa.ReturnType;
24
+ export declare namespace execa {
25
+ type Parameters = {
26
+ name: string;
27
+ };
28
+ type ReturnType = Process;
29
+ }
29
30
  //# sourceMappingURL=execa.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execa.d.ts","sourceRoot":"","sources":["../../src/processes/execa.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAC9C,OAAO,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,aAAa,EAAE,MAAM,OAAO,CAAA;AACzD,OAAO,KAAK,KAAK,QAAQ,MAAM,gBAAgB,CAAA;AAG/C,MAAM,MAAM,gBAAgB,GAAG,aAAa,CAAC;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,KAAK,CAAA;CAAE,CAAC,CAAA;AAE9E,MAAM,MAAM,iBAAiB,GAC3B,QAAQ,CAAC,MAAM,CAAC,6BAA6B,GAAG;IAC9C,QAAQ,CAAC,OAAO,EAAE;QAChB,OAAO,EAAE,gBAAgB,CAAA;QACzB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;QACnC,OAAO,IAAI,IAAI,CAAA;KAChB,GAAG,IAAI,CAAA;CACT,CAAA;AAEH,MAAM,MAAM,OAAO,GAAG;IACpB,SAAS,EAAE;QACT,OAAO,EAAE,gBAAgB,CAAA;KAC1B,CAAA;IACD,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CACH,OAAO,EAAE,CAAC,CAAC,EAAE,OAAO,IAAI,KAAK,IAAI,EACjC,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,IAAI,CAAC,CAAA;IAChB,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,eAAe,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAC7D,CAAA;AAED,wBAAgB,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAmFpE;AAED,MAAM,CAAC,OAAO,WAAW,KAAK,CAAC;IAC7B,KAAY,UAAU,GAAG;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;IAEzC,KAAY,UAAU,GAAG,OAAO,CAAA;CACjC"}
@@ -1,5 +1,5 @@
1
1
  import { execa as exec } from 'execa';
2
- import { stripColors } from '../utils.js';
2
+ import { stripColors } from '../internal/utils.js';
3
3
  export function execa(parameters) {
4
4
  const { name } = parameters;
5
5
  const errorMessages = [];
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execa.js","sourceRoot":"","sources":["../../src/processes/execa.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,27 +1,21 @@
1
1
  {
2
2
  "name": "prool",
3
3
  "description": "HTTP testing instances for Ethereum",
4
- "version": "0.0.25",
4
+ "version": "0.1.1",
5
5
  "type": "module",
6
- "module": "_lib/exports/index.mjs",
7
- "types": "_lib/exports/index.d.ts",
8
- "typings": "_lib/exports/index.d.ts",
9
6
  "sideEffects": false,
7
+ "files": [
8
+ "src",
9
+ "dist"
10
+ ],
10
11
  "engines": {
11
12
  "node": ">=22"
12
13
  },
13
14
  "exports": {
14
15
  ".": {
15
- "types": "./_lib/exports/index.d.ts",
16
- "default": "./_lib/exports/index.js"
17
- },
18
- "./processes": {
19
- "types": "./_lib/exports/processes.d.ts",
20
- "default": "./_lib/exports/processes.js"
21
- },
22
- "./instances": {
23
- "types": "./_lib/exports/instances.d.ts",
24
- "default": "./_lib/exports/instances.js"
16
+ "src": "./src/index.ts",
17
+ "types": "./dist/index.d.ts",
18
+ "default": "./dist/index.js"
25
19
  }
26
20
  },
27
21
  "dependencies": {
@@ -33,11 +27,15 @@
33
27
  "tar": "7.2.0"
34
28
  },
35
29
  "peerDependencies": {
36
- "@pimlico/alto": "*"
30
+ "@pimlico/alto": "*",
31
+ "testcontainers": ">=11.10.0"
37
32
  },
38
33
  "peerDependenciesMeta": {
39
34
  "@pimlico/alto": {
40
35
  "optional": true
36
+ },
37
+ "testcontainers": {
38
+ "optional": true
41
39
  }
42
40
  },
43
41
  "license": "MIT",
@@ -53,5 +51,8 @@
53
51
  "url": "https://github.com/sponsors/wevm"
54
52
  }
55
53
  ],
56
- "keywords": []
54
+ "keywords": [],
55
+ "main": "./dist/index.js",
56
+ "module": "./dist/index.js",
57
+ "types": "./dist/index.d.ts"
57
58
  }
@@ -1,9 +1,9 @@
1
+ import { Instance } from 'prool'
1
2
  import { expect, test } from 'vitest'
2
- import { defineInstance } from './instance.js'
3
3
 
4
4
  test('default', async () => {
5
5
  let started = false
6
- const foo = defineInstance(() => {
6
+ const foo = Instance.define(() => {
7
7
  return {
8
8
  name: 'foo',
9
9
  host: 'localhost',
@@ -28,7 +28,7 @@ test('default', async () => {
28
28
 
29
29
  test('behavior: parameters', async () => {
30
30
  let started = [false, {}]
31
- const foo = defineInstance((parameters: { bar: string }) => {
31
+ const foo = Instance.define((parameters: { bar: string }) => {
32
32
  return {
33
33
  name: 'foo',
34
34
  host: 'localhost',
@@ -53,7 +53,7 @@ test('behavior: parameters', async () => {
53
53
 
54
54
  test('behavior: start', async () => {
55
55
  let count = 0
56
- const foo = defineInstance(() => {
56
+ const foo = Instance.define(() => {
57
57
  return {
58
58
  name: 'foo',
59
59
  host: 'localhost',
@@ -91,7 +91,7 @@ test('behavior: start', async () => {
91
91
  })
92
92
 
93
93
  test('behavior: start (error)', async () => {
94
- const foo = defineInstance(() => {
94
+ const foo = Instance.define(() => {
95
95
  return {
96
96
  name: 'foo',
97
97
  host: 'localhost',
@@ -114,7 +114,7 @@ test('behavior: start (error)', async () => {
114
114
 
115
115
  test('behavior: stop', async () => {
116
116
  let count = 0
117
- const foo = defineInstance(() => {
117
+ const foo = Instance.define(() => {
118
118
  return {
119
119
  name: 'foo',
120
120
  host: 'localhost',
@@ -150,7 +150,7 @@ test('behavior: stop', async () => {
150
150
  })
151
151
 
152
152
  test('behavior: stop (error)', async () => {
153
- const foo = defineInstance(() => {
153
+ const foo = Instance.define(() => {
154
154
  return {
155
155
  name: 'foo',
156
156
  host: 'localhost',
@@ -175,7 +175,7 @@ test('behavior: stop (error)', async () => {
175
175
 
176
176
  test('behavior: restart', async () => {
177
177
  let count = 0
178
- const foo = defineInstance(() => {
178
+ const foo = Instance.define(() => {
179
179
  return {
180
180
  name: 'foo',
181
181
  host: 'localhost',
@@ -206,7 +206,7 @@ test('behavior: restart', async () => {
206
206
  })
207
207
 
208
208
  test('behavior: events', async () => {
209
- const foo = defineInstance(() => {
209
+ const foo = Instance.define(() => {
210
210
  let count = 0
211
211
  return {
212
212
  name: 'foo',
@@ -263,7 +263,7 @@ test('behavior: events', async () => {
263
263
  })
264
264
 
265
265
  test('behavior: messages', async () => {
266
- const foo = defineInstance(() => {
266
+ const foo = Instance.define(() => {
267
267
  return {
268
268
  name: 'foo',
269
269
  host: 'localhost',
@@ -306,7 +306,7 @@ test('behavior: messages', async () => {
306
306
  })
307
307
 
308
308
  test('options: timeout', async () => {
309
- const foo = defineInstance(() => {
309
+ const foo = Instance.define(() => {
310
310
  return {
311
311
  name: 'foo',
312
312
  host: 'localhost',
@@ -323,7 +323,7 @@ test('options: timeout', async () => {
323
323
  'Instance "foo" failed to start in time',
324
324
  )
325
325
 
326
- const bar = defineInstance(() => {
326
+ const bar = Instance.define(() => {
327
327
  return {
328
328
  name: 'bar',
329
329
  host: 'localhost',