prool 0.0.25 → 0.1.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.
- package/{LICENSE → LICENSE.md} +1 -1
- package/README.md +46 -163
- package/{_lib/instance.d.ts → dist/Instance.d.ts} +28 -25
- package/dist/Instance.d.ts.map +1 -0
- package/{_lib/instance.js → dist/Instance.js} +9 -4
- package/dist/Instance.js.map +1 -0
- package/{_lib/pool.d.ts → dist/Pool.d.ts} +15 -13
- package/dist/Pool.d.ts.map +1 -0
- package/{_lib/pool.js → dist/Pool.js} +3 -3
- package/dist/Pool.js.map +1 -0
- package/{_lib/server.d.ts → dist/Server.d.ts} +7 -10
- package/dist/Server.d.ts.map +1 -0
- package/{_lib/server.js → dist/Server.js} +8 -9
- package/dist/Server.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/dist/instances/alto.d.ts +452 -0
- package/dist/instances/alto.d.ts.map +1 -0
- package/{_lib → dist}/instances/alto.js +4 -4
- package/dist/instances/alto.js.map +1 -0
- package/dist/instances/anvil.d.ts +458 -0
- package/dist/instances/anvil.d.ts.map +1 -0
- package/{_lib → dist}/instances/anvil.js +4 -4
- package/dist/instances/anvil.js.map +1 -0
- package/dist/instances/tempo.d.ts +157 -0
- package/dist/instances/tempo.d.ts.map +1 -0
- package/dist/instances/tempo.js +187 -0
- package/dist/instances/tempo.js.map +1 -0
- package/dist/internal/utils.d.ts.map +1 -0
- package/{_lib → dist/internal}/utils.js +1 -1
- package/dist/internal/utils.js.map +1 -0
- package/{_lib → dist}/processes/execa.d.ts +11 -10
- package/dist/processes/execa.d.ts.map +1 -0
- package/{_lib → dist}/processes/execa.js +1 -1
- package/dist/processes/execa.js.map +1 -0
- package/package.json +17 -16
- package/{instance.test.ts → src/Instance.test.ts} +12 -12
- package/{instance.ts → src/Instance.ts} +51 -42
- package/{pool.test.ts → src/Pool.test.ts} +41 -55
- package/{pool.ts → src/Pool.ts} +21 -19
- package/{server.test.ts → src/Server.test.ts} +26 -149
- package/{server.ts → src/Server.ts} +9 -11
- package/src/index.ts +3 -0
- package/{instances → src/instances}/alto.test.ts +8 -11
- package/src/instances/alto.ts +289 -0
- package/{instances → src/instances}/anvil.test.ts +5 -6
- package/src/instances/anvil.ts +306 -0
- package/{instances/silius.test.ts → src/instances/tempo.test.ts} +20 -44
- package/src/instances/tempo.ts +278 -0
- package/{utils.test.ts → src/internal/utils.test.ts} +6 -6
- package/{utils.ts → src/internal/utils.ts} +1 -1
- package/{processes → src/processes}/execa.test.ts +6 -11
- package/{processes → src/processes}/execa.ts +19 -15
- package/src/processes/index.ts +1 -0
- package/CHANGELOG.md +0 -154
- package/_lib/exports/index.d.ts +0 -5
- package/_lib/exports/index.d.ts.map +0 -1
- package/_lib/exports/index.js +0 -5
- package/_lib/exports/index.js.map +0 -1
- package/_lib/exports/instances.d.ts +0 -7
- package/_lib/exports/instances.d.ts.map +0 -1
- package/_lib/exports/instances.js +0 -7
- package/_lib/exports/instances.js.map +0 -1
- package/_lib/exports/processes.d.ts +0 -2
- package/_lib/exports/processes.d.ts.map +0 -1
- package/_lib/exports/processes.js +0 -2
- package/_lib/exports/processes.js.map +0 -1
- package/_lib/instance.d.ts.map +0 -1
- package/_lib/instance.js.map +0 -1
- package/_lib/instances/alto.d.ts +0 -449
- package/_lib/instances/alto.d.ts.map +0 -1
- package/_lib/instances/alto.js.map +0 -1
- package/_lib/instances/anvil.d.ts +0 -455
- package/_lib/instances/anvil.d.ts.map +0 -1
- package/_lib/instances/anvil.js.map +0 -1
- package/_lib/instances/rundler.d.ts +0 -604
- package/_lib/instances/rundler.d.ts.map +0 -1
- package/_lib/instances/rundler.js +0 -86
- package/_lib/instances/rundler.js.map +0 -1
- package/_lib/instances/silius.d.ts +0 -224
- package/_lib/instances/silius.d.ts.map +0 -1
- package/_lib/instances/silius.js +0 -117
- package/_lib/instances/silius.js.map +0 -1
- package/_lib/instances/stackup.d.ts +0 -86
- package/_lib/instances/stackup.d.ts.map +0 -1
- package/_lib/instances/stackup.js +0 -89
- package/_lib/instances/stackup.js.map +0 -1
- package/_lib/pool.d.ts.map +0 -1
- package/_lib/pool.js.map +0 -1
- package/_lib/processes/execa.d.ts.map +0 -1
- package/_lib/processes/execa.js.map +0 -1
- package/_lib/server.d.ts.map +0 -1
- package/_lib/server.js.map +0 -1
- package/_lib/utils.d.ts.map +0 -1
- package/_lib/utils.js.map +0 -1
- package/exports/index.test.ts +0 -16
- package/exports/index.ts +0 -29
- package/exports/instances.test.ts +0 -15
- package/exports/instances.ts +0 -13
- package/exports/processes.test.ts +0 -10
- package/exports/processes.ts +0 -8
- package/instances/alto.ts +0 -280
- package/instances/anvil.ts +0 -304
- package/instances/package.json +0 -5
- package/instances/rundler.test.ts +0 -111
- package/instances/rundler.ts +0 -451
- package/instances/silius.ts +0 -347
- package/instances/stackup.test.ts +0 -106
- package/instances/stackup.ts +0 -162
- package/processes/package.json +0 -5
- package/tsconfig.build.tsbuildinfo +0 -1
- /package/{_lib → dist/internal}/utils.d.ts +0 -0
package/{LICENSE → LICENSE.md}
RENAMED
|
@@ -18,4 +18,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
|
18
18
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
19
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
20
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -38,27 +38,21 @@ Prool is a library that provides programmatic HTTP testing instances for Ethereu
|
|
|
38
38
|
|
|
39
39
|
Prool contains a set of pre-configured instances that can be used to simulate Ethereum server environments, being:
|
|
40
40
|
|
|
41
|
-
- **Local Execution Nodes:** [`anvil`](#anvil-execution-node)
|
|
42
|
-
- **Bundler Nodes:** [`alto`](#alto-bundler-node)
|
|
43
|
-
- **Indexer Nodes:** `ponder`⚠️
|
|
41
|
+
- **Local Execution Nodes:** [`anvil`](#anvil-execution-node), [`tempo`](#tempo-execution-node)
|
|
42
|
+
- **ERC-4337 Bundler Nodes:** [`alto`](#alto-bundler-node)
|
|
44
43
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
You can also create your own custom instances by using the [`defineInstance` function](#defineinstance).
|
|
44
|
+
You can also create your own custom instances by using the [`Instance.define` function](#instancedefine).
|
|
48
45
|
|
|
49
46
|
## Table of Contents
|
|
50
47
|
|
|
51
48
|
- [Install](#install)
|
|
52
49
|
- [Getting Started](#getting-started)
|
|
53
50
|
- [Anvil (Execution Node)](#anvil-execution-node)
|
|
54
|
-
- [Alto (Bundler Node)](#alto-bundler-node)
|
|
55
|
-
- [Rundler (Bundler Node)](#rundler-bundler-node)
|
|
56
|
-
- [Silius (Bundler Node)](#silius-bundler-node)
|
|
57
|
-
- [Stackup (Bundler Node)](#stackup-bundler-node)
|
|
51
|
+
- [Alto (ERC-4337 Bundler Node)](#alto-bundler-node)
|
|
58
52
|
- [Reference](#reference)
|
|
59
|
-
- [`
|
|
60
|
-
- [`
|
|
61
|
-
- [`
|
|
53
|
+
- [`Server.create`](#servercreate)
|
|
54
|
+
- [`Instance.define`](#instancedefine)
|
|
55
|
+
- [`Pool.define`](#pooldefine)
|
|
62
56
|
|
|
63
57
|
|
|
64
58
|
## Install
|
|
@@ -81,17 +75,17 @@ bun i prool
|
|
|
81
75
|
|
|
82
76
|
#### Requirements
|
|
83
77
|
|
|
84
|
-
|
|
85
|
-
|
|
78
|
+
```bash
|
|
79
|
+
curl -L https://foundry.paradigm.xyz | bash # Install Foundry
|
|
80
|
+
```
|
|
86
81
|
|
|
87
82
|
#### Usage
|
|
88
83
|
|
|
89
84
|
```ts
|
|
90
|
-
import {
|
|
91
|
-
import { anvil } from 'prool/instances'
|
|
85
|
+
import { Instance, Server } from 'prool'
|
|
92
86
|
|
|
93
|
-
const server =
|
|
94
|
-
instance: anvil(),
|
|
87
|
+
const server = Server.create({
|
|
88
|
+
instance: Instance.anvil(),
|
|
95
89
|
})
|
|
96
90
|
|
|
97
91
|
await server.start()
|
|
@@ -102,67 +96,44 @@ await server.start()
|
|
|
102
96
|
// "http://localhost:8545/n"
|
|
103
97
|
```
|
|
104
98
|
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
See [`AnvilParameters`](https://github.com/wevm/prool/blob/801ede06ded8b2cb2d59c95294aae795e548897c/src/instances/anvil.ts#L5).
|
|
108
|
-
|
|
109
|
-
### Alto (Bundler Node)
|
|
99
|
+
### Tempo (Execution Node)
|
|
110
100
|
|
|
111
101
|
#### Requirements
|
|
112
102
|
|
|
113
|
-
|
|
103
|
+
```bash
|
|
104
|
+
curl -L https://tempo.xyz/install | bash # Install Tempo
|
|
105
|
+
```
|
|
114
106
|
|
|
115
107
|
#### Usage
|
|
116
108
|
|
|
117
109
|
```ts
|
|
118
|
-
import {
|
|
119
|
-
import { anvil, alto } from 'prool/instances'
|
|
110
|
+
import { Instance, Server } from 'prool'
|
|
120
111
|
|
|
121
|
-
const
|
|
122
|
-
instance:
|
|
123
|
-
port: 8545
|
|
112
|
+
const server = Server.create({
|
|
113
|
+
instance: Instance.tempo(),
|
|
124
114
|
})
|
|
125
|
-
|
|
115
|
+
|
|
116
|
+
await server.start()
|
|
126
117
|
// Instances accessible at:
|
|
127
118
|
// "http://localhost:8545/1"
|
|
128
119
|
// "http://localhost:8545/2"
|
|
129
120
|
// "http://localhost:8545/3"
|
|
130
121
|
// "http://localhost:8545/n"
|
|
131
|
-
|
|
132
|
-
const bundlerServer = createServer({
|
|
133
|
-
instance: (key) => alto({
|
|
134
|
-
entrypoints: ['0x0000000071727De22E5E9d8BAf0edAc6f37da032'],
|
|
135
|
-
rpcUrl: `http://localhost:8545/${key}`,
|
|
136
|
-
executorPrivateKeys: ['0x...'],
|
|
137
|
-
})
|
|
138
|
-
})
|
|
139
|
-
await bundlerServer.start()
|
|
140
|
-
// Instances accessible at:
|
|
141
|
-
// "http://localhost:3000/1" (→ http://localhost:8545/1)
|
|
142
|
-
// "http://localhost:3000/2" (→ http://localhost:8545/2)
|
|
143
|
-
// "http://localhost:3000/3" (→ http://localhost:8545/3)
|
|
144
|
-
// "http://localhost:3000/n" (→ http://localhost:8545/n)
|
|
145
122
|
```
|
|
146
123
|
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
See [`AltoParameters`](https://github.com/wevm/prool/blob/801ede06ded8b2cb2d59c95294aae795e548897c/src/instances/alto.ts#L7).
|
|
150
|
-
|
|
151
|
-
### Rundler (Bundler Node)
|
|
124
|
+
### Alto (Bundler Node)
|
|
152
125
|
|
|
153
126
|
#### Requirements
|
|
154
127
|
|
|
155
|
-
- [
|
|
156
|
-
- [Download](https://github.com/alchemyplatform/rundler/releases)
|
|
128
|
+
- [`@pimlico/alto`](npm.im/@pimlico/alto): `npm i @pimlico/alto`
|
|
157
129
|
|
|
158
130
|
#### Usage
|
|
159
131
|
|
|
160
132
|
```ts
|
|
161
|
-
import {
|
|
162
|
-
import { anvil, rundler } from 'prool/instances'
|
|
133
|
+
import { Instance, Server } from 'prool'
|
|
163
134
|
|
|
164
|
-
const executionServer =
|
|
165
|
-
instance: anvil(),
|
|
135
|
+
const executionServer = Server.create({
|
|
136
|
+
instance: Instance.anvil(),
|
|
166
137
|
port: 8545
|
|
167
138
|
})
|
|
168
139
|
await executionServer.start()
|
|
@@ -172,9 +143,11 @@ await executionServer.start()
|
|
|
172
143
|
// "http://localhost:8545/3"
|
|
173
144
|
// "http://localhost:8545/n"
|
|
174
145
|
|
|
175
|
-
const bundlerServer =
|
|
176
|
-
instance: (key) =>
|
|
177
|
-
|
|
146
|
+
const bundlerServer = Server.create({
|
|
147
|
+
instance: (key) => Instance.alto({
|
|
148
|
+
entrypoints: ['0x0000000071727De22E5E9d8BAf0edAc6f37da032'],
|
|
149
|
+
rpcUrl: `http://localhost:8545/${key}`,
|
|
150
|
+
executorPrivateKeys: ['0x...'],
|
|
178
151
|
})
|
|
179
152
|
})
|
|
180
153
|
await bundlerServer.start()
|
|
@@ -185,108 +158,19 @@ await bundlerServer.start()
|
|
|
185
158
|
// "http://localhost:3000/n" (→ http://localhost:8545/n)
|
|
186
159
|
```
|
|
187
160
|
|
|
188
|
-
#### Parameters
|
|
189
|
-
|
|
190
|
-
See [RundlerParameters]().
|
|
191
|
-
|
|
192
|
-
### Silius (Bundler Node)
|
|
193
|
-
|
|
194
|
-
#### Requirements
|
|
195
|
-
|
|
196
|
-
- [Docker](https://docs.docker.com/get-docker/)
|
|
197
|
-
- Silius Docker Image: `docker pull silius-rs/silius`
|
|
198
|
-
|
|
199
|
-
#### Usage
|
|
200
|
-
|
|
201
|
-
```ts
|
|
202
|
-
import { createServer } from 'prool'
|
|
203
|
-
import { anvil, silius } from 'prool/instances'
|
|
204
|
-
|
|
205
|
-
const executionServer = createServer({
|
|
206
|
-
instance: anvil(),
|
|
207
|
-
port: 8545
|
|
208
|
-
})
|
|
209
|
-
await executionServer.start()
|
|
210
|
-
// Instances accessible at:
|
|
211
|
-
// "http://localhost:8545/1"
|
|
212
|
-
// "http://localhost:8545/2"
|
|
213
|
-
// "http://localhost:8545/3"
|
|
214
|
-
// "http://localhost:8545/n"
|
|
215
|
-
|
|
216
|
-
const bundlerServer = createServer({
|
|
217
|
-
instance: (key) => silius({
|
|
218
|
-
ethClientAddress: `http://localhost:8545/${key}`,
|
|
219
|
-
mnemonicPath: './keys/0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266',
|
|
220
|
-
})
|
|
221
|
-
})
|
|
222
|
-
await bundlerServer.start()
|
|
223
|
-
// Instances accessible at:
|
|
224
|
-
// "http://localhost:4000/1" (→ http://localhost:8545/1)
|
|
225
|
-
// "http://localhost:4000/2" (→ http://localhost:8545/2)
|
|
226
|
-
// "http://localhost:4000/3" (→ http://localhost:8545/3)
|
|
227
|
-
// "http://localhost:4000/n" (→ http://localhost:8545/n)
|
|
228
|
-
```
|
|
229
|
-
|
|
230
|
-
#### Parameters
|
|
231
|
-
|
|
232
|
-
See [`SiliusParameters`]().
|
|
233
|
-
|
|
234
|
-
### Stackup (Bundler Node)
|
|
235
|
-
|
|
236
|
-
#### Requirements
|
|
237
|
-
|
|
238
|
-
- [Docker](https://docs.docker.com/get-docker/)
|
|
239
|
-
- Stackup Docker Image: `docker pull stackupwallet/stackup-bundler:latest`
|
|
240
|
-
|
|
241
|
-
#### Usage
|
|
242
|
-
|
|
243
|
-
```ts
|
|
244
|
-
import { createServer } from 'prool'
|
|
245
|
-
import { anvil, stackup } from 'prool/instances'
|
|
246
|
-
|
|
247
|
-
const executionServer = createServer({
|
|
248
|
-
instance: anvil(),
|
|
249
|
-
port: 8545
|
|
250
|
-
})
|
|
251
|
-
await executionServer.start()
|
|
252
|
-
// Instances accessible at:
|
|
253
|
-
// "http://localhost:8545/1"
|
|
254
|
-
// "http://localhost:8545/2"
|
|
255
|
-
// "http://localhost:8545/3"
|
|
256
|
-
// "http://localhost:8545/n"
|
|
257
|
-
|
|
258
|
-
const bundlerServer = createServer({
|
|
259
|
-
instance: (key) => stackup({
|
|
260
|
-
ethClientUrl: `http://localhost:8545/${key}`,
|
|
261
|
-
privateKey: '0x...',
|
|
262
|
-
})
|
|
263
|
-
})
|
|
264
|
-
await bundlerServer.start()
|
|
265
|
-
// Instances accessible at:
|
|
266
|
-
// "http://localhost:4337/1" (→ http://localhost:8545/1)
|
|
267
|
-
// "http://localhost:4337/2" (→ http://localhost:8545/2)
|
|
268
|
-
// "http://localhost:4337/3" (→ http://localhost:8545/3)
|
|
269
|
-
// "http://localhost:4337/n" (→ http://localhost:8545/n)
|
|
270
|
-
```
|
|
271
|
-
|
|
272
|
-
#### Parameters
|
|
273
|
-
|
|
274
|
-
See [`StackupParameters`](https://github.com/wevm/prool/blob/801ede06ded8b2cb2d59c95294aae795e548897c/src/instances/stackup.ts#L5).
|
|
275
|
-
|
|
276
161
|
## Reference
|
|
277
162
|
|
|
278
|
-
### `
|
|
163
|
+
### `Server.create`
|
|
279
164
|
|
|
280
165
|
Creates a server that manages a pool of instances via a proxy.
|
|
281
166
|
|
|
282
167
|
#### Usage
|
|
283
168
|
|
|
284
169
|
```ts
|
|
285
|
-
import {
|
|
286
|
-
import { anvil } from 'prool/instances'
|
|
170
|
+
import { Instance, Server } from 'prool'
|
|
287
171
|
|
|
288
|
-
const executionServer =
|
|
289
|
-
instance: anvil(),
|
|
172
|
+
const executionServer = Server.create({
|
|
173
|
+
instance: Instance.anvil(),
|
|
290
174
|
})
|
|
291
175
|
await executionServer.start()
|
|
292
176
|
// Instances accessible at:
|
|
@@ -315,18 +199,18 @@ await executionServer.start()
|
|
|
315
199
|
| `limit` | Number of instances that can be instantiated in the pool | `number` |
|
|
316
200
|
| `host` | Host for the server. | `string` |
|
|
317
201
|
| `port` | Port for the server. | `number` |
|
|
318
|
-
| returns | Server | `
|
|
202
|
+
| returns | Server | `Server.Server` |
|
|
319
203
|
|
|
320
|
-
### `
|
|
204
|
+
### `Instance.define`
|
|
321
205
|
|
|
322
|
-
Creates an instance definition, that can be used with [`
|
|
206
|
+
Creates an instance definition, that can be used with [`Server.create`](#servercreate) or [`Pool.define`](#pooldefine).
|
|
323
207
|
|
|
324
208
|
#### Usage
|
|
325
209
|
|
|
326
210
|
```ts
|
|
327
|
-
import {
|
|
211
|
+
import { Instance } from 'prool'
|
|
328
212
|
|
|
329
|
-
const foo =
|
|
213
|
+
const foo = Instance.define((parameters: FooParameters) => {
|
|
330
214
|
return {
|
|
331
215
|
name: 'foo',
|
|
332
216
|
host: 'localhost',
|
|
@@ -348,18 +232,17 @@ const foo = defineInstance((parameters: FooParameters) => {
|
|
|
348
232
|
| `fn` | Instance definition. | `DefineInstanceFn` |
|
|
349
233
|
| returns | Instance. | `Instance` |
|
|
350
234
|
|
|
351
|
-
### `
|
|
235
|
+
### `Pool.define`
|
|
352
236
|
|
|
353
237
|
Defines a pool of instances. Instances can be started, cached, and stopped against an identifier.
|
|
354
238
|
|
|
355
239
|
#### Usage
|
|
356
240
|
|
|
357
241
|
```ts
|
|
358
|
-
import {
|
|
359
|
-
import { anvil } from 'prool/instances'
|
|
242
|
+
import { Instance, Pool } from 'prool'
|
|
360
243
|
|
|
361
|
-
const pool =
|
|
362
|
-
instance: anvil(),
|
|
244
|
+
const pool = Pool.define({
|
|
245
|
+
instance: Instance.anvil(),
|
|
363
246
|
})
|
|
364
247
|
const instance_1 = await pool.start(1)
|
|
365
248
|
const instance_2 = await pool.start(2)
|
|
@@ -381,4 +264,4 @@ const instance_3 = await pool.start(3)
|
|
|
381
264
|
|
|
382
265
|
## License
|
|
383
266
|
|
|
384
|
-
[MIT](/LICENSE) License
|
|
267
|
+
[MIT](/LICENSE) License
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
/// <reference types="node" resolution-mode="require"/>
|
|
2
1
|
import { EventEmitter } from 'eventemitter3';
|
|
2
|
+
export { alto } from './instances/alto.js';
|
|
3
|
+
export { anvil } from './instances/anvil.js';
|
|
4
|
+
export { tempo, tempoDocker } from './instances/tempo.js';
|
|
3
5
|
type EventTypes = {
|
|
4
6
|
exit: [code: number | null, signal: NodeJS.Signals | null];
|
|
5
7
|
listening: [];
|
|
@@ -7,25 +9,6 @@ type EventTypes = {
|
|
|
7
9
|
stderr: [message: string];
|
|
8
10
|
stdout: [message: string];
|
|
9
11
|
};
|
|
10
|
-
export type InstanceStartOptions_internal = {
|
|
11
|
-
emitter: EventEmitter<EventTypes>;
|
|
12
|
-
status: Instance['status'];
|
|
13
|
-
};
|
|
14
|
-
export type InstanceStopOptions_internal = {
|
|
15
|
-
emitter: EventEmitter<EventTypes>;
|
|
16
|
-
status: Instance['status'];
|
|
17
|
-
};
|
|
18
|
-
export type InstanceStartOptions = {
|
|
19
|
-
/**
|
|
20
|
-
* Port to start the instance on.
|
|
21
|
-
*/
|
|
22
|
-
port?: number | undefined;
|
|
23
|
-
};
|
|
24
|
-
export type DefineInstanceFn<parameters, _internal extends object | undefined = object | undefined> = (parameters: parameters) => Pick<Instance, 'host' | 'name' | 'port'> & {
|
|
25
|
-
_internal?: _internal | undefined;
|
|
26
|
-
start(options: InstanceStartOptions, options_internal: InstanceStartOptions_internal): Promise<void>;
|
|
27
|
-
stop(options_internal: InstanceStopOptions_internal): Promise<void>;
|
|
28
|
-
};
|
|
29
12
|
export type Instance<_internal extends object | undefined = object | undefined> = Pick<EventEmitter<EventTypes>, 'addListener' | 'off' | 'on' | 'once' | 'removeAllListeners' | 'removeListener'> & {
|
|
30
13
|
_internal: _internal;
|
|
31
14
|
/**
|
|
@@ -86,7 +69,6 @@ export type InstanceOptions = {
|
|
|
86
69
|
/** Timeout (in milliseconds) for starting and stopping the instance. @default 10_000 */
|
|
87
70
|
timeout?: number;
|
|
88
71
|
};
|
|
89
|
-
export type DefineInstanceReturnType<_internal extends object | undefined = object | undefined, parameters = undefined> = (...parameters: parameters extends undefined ? [options?: InstanceOptions] : [parameters: parameters, options?: InstanceOptions]) => Instance<_internal>;
|
|
90
72
|
/**
|
|
91
73
|
* Creates an instance definition.
|
|
92
74
|
*
|
|
@@ -94,7 +76,7 @@ export type DefineInstanceReturnType<_internal extends object | undefined = obje
|
|
|
94
76
|
*
|
|
95
77
|
* @example
|
|
96
78
|
* ```ts
|
|
97
|
-
* const foo =
|
|
79
|
+
* const foo = Instance.define((parameters: FooParameters) => {
|
|
98
80
|
* return {
|
|
99
81
|
* name: 'foo',
|
|
100
82
|
* host: 'localhost',
|
|
@@ -109,6 +91,27 @@ export type DefineInstanceReturnType<_internal extends object | undefined = obje
|
|
|
109
91
|
* })
|
|
110
92
|
* ```
|
|
111
93
|
*/
|
|
112
|
-
export declare function
|
|
113
|
-
export {
|
|
114
|
-
|
|
94
|
+
export declare function define<_internal extends object | undefined, parameters = undefined>(fn: define.DefineFn<parameters, _internal>): define.ReturnType<_internal, parameters>;
|
|
95
|
+
export declare namespace define {
|
|
96
|
+
type DefineFn<parameters, _internal extends object | undefined = object | undefined> = (parameters: parameters) => Pick<Instance, 'host' | 'name' | 'port'> & {
|
|
97
|
+
_internal?: _internal | undefined;
|
|
98
|
+
start(options: InstanceStartOptions, options_internal: InstanceStartOptions_internal): Promise<void>;
|
|
99
|
+
stop(options_internal: InstanceStopOptions_internal): Promise<void>;
|
|
100
|
+
};
|
|
101
|
+
type ReturnType<_internal extends object | undefined = object | undefined, parameters = undefined> = (...parameters: parameters extends undefined ? [options?: InstanceOptions] : [parameters: parameters, options?: InstanceOptions]) => Instance<_internal>;
|
|
102
|
+
type InstanceStartOptions_internal = {
|
|
103
|
+
emitter: EventEmitter<EventTypes>;
|
|
104
|
+
status: Instance['status'];
|
|
105
|
+
};
|
|
106
|
+
type InstanceStopOptions_internal = {
|
|
107
|
+
emitter: EventEmitter<EventTypes>;
|
|
108
|
+
status: Instance['status'];
|
|
109
|
+
};
|
|
110
|
+
type InstanceStartOptions = {
|
|
111
|
+
/**
|
|
112
|
+
* Port to start the instance on.
|
|
113
|
+
*/
|
|
114
|
+
port?: number | undefined;
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=Instance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Instance.d.ts","sourceRoot":"","sources":["../src/Instance.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import { EventEmitter } from 'eventemitter3';
|
|
2
|
+
export { alto } from './instances/alto.js';
|
|
3
|
+
export { anvil } from './instances/anvil.js';
|
|
4
|
+
export { tempo, tempoDocker } from './instances/tempo.js';
|
|
2
5
|
/**
|
|
3
6
|
* Creates an instance definition.
|
|
4
7
|
*
|
|
@@ -6,7 +9,7 @@ import { EventEmitter } from 'eventemitter3';
|
|
|
6
9
|
*
|
|
7
10
|
* @example
|
|
8
11
|
* ```ts
|
|
9
|
-
* const foo =
|
|
12
|
+
* const foo = Instance.define((parameters: FooParameters) => {
|
|
10
13
|
* return {
|
|
11
14
|
* name: 'foo',
|
|
12
15
|
* host: 'localhost',
|
|
@@ -21,14 +24,16 @@ import { EventEmitter } from 'eventemitter3';
|
|
|
21
24
|
* })
|
|
22
25
|
* ```
|
|
23
26
|
*/
|
|
24
|
-
export function
|
|
27
|
+
export function define(fn) {
|
|
25
28
|
return (...[parametersOrOptions, options_]) => {
|
|
26
29
|
function create(createParameters = {}) {
|
|
27
30
|
const parameters = parametersOrOptions;
|
|
28
31
|
const options = options_ || parametersOrOptions || {};
|
|
32
|
+
const instance = fn(parameters);
|
|
29
33
|
const { _internal, host, name, port, start, stop } = {
|
|
30
|
-
...
|
|
34
|
+
...instance,
|
|
31
35
|
...createParameters,
|
|
36
|
+
port: createParameters.port ?? instance.port,
|
|
32
37
|
};
|
|
33
38
|
const { messageBuffer = 20, timeout } = options;
|
|
34
39
|
let restartResolver = Promise.withResolvers();
|
|
@@ -157,4 +162,4 @@ export function defineInstance(fn) {
|
|
|
157
162
|
return Object.assign(create(), { create });
|
|
158
163
|
};
|
|
159
164
|
}
|
|
160
|
-
//# sourceMappingURL=
|
|
165
|
+
//# sourceMappingURL=Instance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Instance.js","sourceRoot":"","sources":["../src/Instance.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Instance } from './
|
|
1
|
+
import type { Instance } from './Instance.js';
|
|
2
2
|
type Instance_ = Omit<Instance, 'create'>;
|
|
3
3
|
export type Pool<key extends number | string = number | string> = Pick<Map<key, Instance_>, 'entries' | 'keys' | 'forEach' | 'get' | 'has' | 'size' | 'values'> & {
|
|
4
4
|
_internal: {
|
|
@@ -8,24 +8,17 @@ export type Pool<key extends number | string = number | string> = Pick<Map<key,
|
|
|
8
8
|
destroyAll(): Promise<void>;
|
|
9
9
|
restart(key: key): Promise<void>;
|
|
10
10
|
start(key: key, options?: {
|
|
11
|
-
port?: number;
|
|
12
|
-
}): Promise<Instance_>;
|
|
11
|
+
port?: number | undefined;
|
|
12
|
+
} | undefined): Promise<Instance_>;
|
|
13
13
|
stop(key: key): Promise<void>;
|
|
14
14
|
stopAll(): Promise<void>;
|
|
15
15
|
};
|
|
16
|
-
export type DefinePoolParameters<key extends number | string = number | string> = {
|
|
17
|
-
/** Instance for the pool. */
|
|
18
|
-
instance: Instance | ((key: key) => Instance);
|
|
19
|
-
/** The maximum number of instances that can be started. */
|
|
20
|
-
limit?: number | number;
|
|
21
|
-
};
|
|
22
|
-
export type DefinePoolReturnType<key extends number | string = number | string> = Pool<key>;
|
|
23
16
|
/**
|
|
24
17
|
* Defines an instance pool. Instances can be started, cached, and stopped against an identifier.
|
|
25
18
|
*
|
|
26
19
|
* @example
|
|
27
20
|
* ```
|
|
28
|
-
* const pool =
|
|
21
|
+
* const pool = Pool.define({
|
|
29
22
|
* instance: anvil(),
|
|
30
23
|
* })
|
|
31
24
|
*
|
|
@@ -34,6 +27,15 @@ export type DefinePoolReturnType<key extends number | string = number | string>
|
|
|
34
27
|
* const instance_3 = await pool.start(3)
|
|
35
28
|
* ```
|
|
36
29
|
*/
|
|
37
|
-
export declare function
|
|
30
|
+
export declare function define<key extends number | string = number>(parameters: define.Parameters<key>): define.ReturnType<key>;
|
|
31
|
+
export declare namespace define {
|
|
32
|
+
type Parameters<key extends number | string = number | string> = {
|
|
33
|
+
/** Instance for the pool. */
|
|
34
|
+
instance: Instance | ((key: key) => Instance);
|
|
35
|
+
/** The maximum number of instances that can be started. */
|
|
36
|
+
limit?: number | undefined;
|
|
37
|
+
};
|
|
38
|
+
type ReturnType<key extends number | string = number | string> = Pool<key>;
|
|
39
|
+
}
|
|
38
40
|
export {};
|
|
39
|
-
//# sourceMappingURL=
|
|
41
|
+
//# sourceMappingURL=Pool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Pool.d.ts","sourceRoot":"","sources":["../src/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,CACH,GAAG,EAAE,GAAG,EACR,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,GAAG,SAAS,GAClD,OAAO,CAAC,SAAS,CAAC,CAAA;IACrB,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC7B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACzB,CAAA;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,MAAM,CAAC,GAAG,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM,EACzD,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,GACjC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAqJxB;AAED,MAAM,CAAC,OAAO,WAAW,MAAM,CAAC;IAC9B,KAAY,UAAU,CAAC,GAAG,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,IAAI;QACtE,6BAA6B;QAC7B,QAAQ,EAAE,QAAQ,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,QAAQ,CAAC,CAAA;QAC7C,2DAA2D;QAC3D,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KAC3B,CAAA;IAED,KAAY,UAAU,CAAC,GAAG,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,IAClE,IAAI,CAAC,GAAG,CAAC,CAAA;CACZ"}
|
|
@@ -4,7 +4,7 @@ import getPort from 'get-port';
|
|
|
4
4
|
*
|
|
5
5
|
* @example
|
|
6
6
|
* ```
|
|
7
|
-
* const pool =
|
|
7
|
+
* const pool = Pool.define({
|
|
8
8
|
* instance: anvil(),
|
|
9
9
|
* })
|
|
10
10
|
*
|
|
@@ -13,7 +13,7 @@ import getPort from 'get-port';
|
|
|
13
13
|
* const instance_3 = await pool.start(3)
|
|
14
14
|
* ```
|
|
15
15
|
*/
|
|
16
|
-
export function
|
|
16
|
+
export function define(parameters) {
|
|
17
17
|
const { limit } = parameters;
|
|
18
18
|
const instances = new Map();
|
|
19
19
|
// Define promise instances for mutators to avoid race conditions, and return
|
|
@@ -138,4 +138,4 @@ export function definePool(parameters) {
|
|
|
138
138
|
values: instances.values.bind(instances),
|
|
139
139
|
};
|
|
140
140
|
}
|
|
141
|
-
//# sourceMappingURL=
|
|
141
|
+
//# sourceMappingURL=Pool.js.map
|
package/dist/Pool.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Pool.js","sourceRoot":"","sources":["../src/Pool.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,UAAU,CAAA;AAwB9B;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,MAAM,CACpB,UAAkC;IAElC,MAAM,EAAE,KAAK,EAAE,GAAG,UAAU,CAAA;IAG5B,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAA;IAE3C,6EAA6E;IAC7E,qEAAqE;IACrE,wFAAwF;IACxF,2GAA2G;IAC3G,MAAM,QAAQ,GAAG;QACf,OAAO,EAAE,IAAI,GAAG,EAAsB;QACtC,UAAU,EAAE,SAAsC;QAClD,OAAO,EAAE,IAAI,GAAG,EAAsB;QACtC,KAAK,EAAE,IAAI,GAAG,EAA2B;QACzC,IAAI,EAAE,IAAI,GAAG,EAAsB;QACnC,OAAO,EAAE,SAAsC;KAChD,CAAA;IAED,OAAO;QACL,SAAS,EAAE;YACT,QAAQ,EAAE,UAAU,CAAC,QAAQ;SAC9B;QACD,KAAK,CAAC,OAAO,CAAC,GAAG;YACf,MAAM,cAAc,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YAChD,IAAI,cAAc;gBAAE,OAAO,cAAc,CAAA;YAEzC,MAAM,QAAQ,GAAG,OAAO,CAAC,aAAa,EAAQ,CAAA;YAE9C,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAA;YAE3C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;iBACX,IAAI,CAAC,GAAG,EAAE;gBACT,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;gBACrB,QAAQ,CAAC,OAAO,EAAE,CAAA;YACpB,CAAC,CAAC;iBACD,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;YAEzB,OAAO,QAAQ,CAAC,OAAO,CAAA;QACzB,CAAC;QACD,KAAK,CAAC,UAAU;YACd,IAAI,QAAQ,CAAC,UAAU;gBAAE,OAAO,QAAQ,CAAC,UAAU,CAAA;YAEnD,MAAM,QAAQ,GAAG,OAAO,CAAC,aAAa,EAAQ,CAAA;YAE9C,QAAQ,CAAC,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAA;YAEtC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;iBAC/D,IAAI,CAAC,GAAG,EAAE;gBACT,QAAQ,CAAC,UAAU,GAAG,SAAS,CAAA;gBAC/B,QAAQ,CAAC,OAAO,EAAE,CAAA;YACpB,CAAC,CAAC;iBACD,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;YAEzB,OAAO,QAAQ,CAAC,OAAO,CAAA;QACzB,CAAC;QACD,KAAK,CAAC,OAAO,CAAC,GAAG;YACf,MAAM,cAAc,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YAChD,IAAI,cAAc;gBAAE,OAAO,cAAc,CAAA;YAEzC,MAAM,QAAQ,GAAG,OAAO,CAAC,aAAa,EAAQ,CAAA;YAE9C,MAAM,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YACpC,IAAI,CAAC,SAAS;gBAAE,OAAM;YAEtB,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAA;YAE3C,SAAS;iBACN,OAAO,EAAE;iBACT,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;iBACtB,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;iBACtB,OAAO,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;YAE9C,OAAO,QAAQ,CAAC,OAAO,CAAA;QACzB,CAAC;QACD,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,GAAG,EAAE;YAC3B,MAAM,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YAC5C,IAAI,YAAY;gBAAE,OAAO,YAAY,CAAA;YAErC,MAAM,QAAQ,GAAG,OAAO,CAAC,aAAa,EAAa,CAAA;YAEnD,IAAI,KAAK,IAAI,SAAS,CAAC,IAAI,IAAI,KAAK;gBAClC,MAAM,IAAI,KAAK,CAAC,qBAAqB,KAAK,WAAW,CAAC,CAAA;YAExD,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAA;YAEzC,MAAM,QAAQ,GACZ,OAAO,UAAU,CAAC,QAAQ,KAAK,UAAU;gBACvC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC;gBAC1B,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAA;YACzB,MAAM,EAAE,IAAI,GAAG,MAAM,OAAO,EAAE,EAAE,GAAG,OAAO,CAAA;YAE1C,MAAM,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAA;YACjE,SAAS;iBACN,KAAK,EAAE;iBACP,IAAI,CAAC,GAAG,EAAE;gBACT,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,CAAA;gBAC7B,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;YAC7B,CAAC,CAAC;iBACD,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;iBACtB,OAAO,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;YAE5C,OAAO,QAAQ,CAAC,OAAO,CAAA;QACzB,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,GAAG;YACZ,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YAC1C,IAAI,WAAW;gBAAE,OAAO,WAAW,CAAA;YAEnC,MAAM,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YACpC,IAAI,CAAC,SAAS;gBAAE,OAAM;YAEtB,MAAM,QAAQ,GAAG,OAAO,CAAC,aAAa,EAAQ,CAAA;YAE9C,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAA;YACxC,SAAS;iBACN,IAAI,EAAE;iBACN,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;iBACtB,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;iBACtB,OAAO,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;YAE3C,OAAO,QAAQ,CAAC,OAAO,CAAA;QACzB,CAAC;QACD,KAAK,CAAC,OAAO;YACX,IAAI,QAAQ,CAAC,OAAO;gBAAE,OAAO,QAAQ,CAAC,OAAO,CAAA;YAE7C,MAAM,QAAQ,GAAG,OAAO,CAAC,aAAa,EAAQ,CAAA;YAE9C,QAAQ,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAA;YAEnC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;iBAC5D,IAAI,CAAC,GAAG,EAAE;gBACT,QAAQ,CAAC,OAAO,GAAG,SAAS,CAAA;gBAC5B,QAAQ,CAAC,OAAO,EAAE,CAAA;YACpB,CAAC,CAAC;iBACD,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;YAEzB,OAAO,QAAQ,CAAC,OAAO,CAAA;QACzB,CAAC;QAED,IAAI,IAAI;YACN,OAAO,SAAS,CAAC,IAAI,CAAA;QACvB,CAAC;QACD,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;QAC1C,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;QACpC,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;QAC1C,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;QAClD,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;QAClC,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;KACzC,CAAA;AACH,CAAC"}
|
|
@@ -1,9 +1,7 @@
|
|
|
1
|
-
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
-
/// <reference types="node" resolution-mode="require"/>
|
|
3
1
|
import { type IncomingMessage, type Server, type ServerResponse } from 'node:http';
|
|
4
2
|
import type { AddressInfo } from 'node:net';
|
|
5
|
-
import
|
|
6
|
-
export type CreateServerParameters =
|
|
3
|
+
import * as Pool from './Pool.js';
|
|
4
|
+
export type CreateServerParameters = Pool.define.Parameters<number> & ({
|
|
7
5
|
/** Host to run the server on. */
|
|
8
6
|
host?: string | undefined;
|
|
9
7
|
/** Port to run the server on. */
|
|
@@ -22,11 +20,10 @@ export type CreateServerReturnType = Omit<Server<typeof IncomingMessage, typeof
|
|
|
22
20
|
*
|
|
23
21
|
* @example
|
|
24
22
|
* ```
|
|
25
|
-
* import {
|
|
26
|
-
* import { anvil } from 'prool/instances'
|
|
23
|
+
* import { Instance, Server } from 'prool'
|
|
27
24
|
*
|
|
28
|
-
* const server =
|
|
29
|
-
* instance: anvil(),
|
|
25
|
+
* const server = Server.create({
|
|
26
|
+
* instance: Instance.anvil(),
|
|
30
27
|
* })
|
|
31
28
|
*
|
|
32
29
|
* const server = await server.start()
|
|
@@ -41,5 +38,5 @@ export type CreateServerReturnType = Omit<Server<typeof IncomingMessage, typeof
|
|
|
41
38
|
* // "http://localhost:8545/healthcheck"
|
|
42
39
|
* ```
|
|
43
40
|
*/
|
|
44
|
-
export declare function
|
|
45
|
-
//# sourceMappingURL=
|
|
41
|
+
export declare function create(parameters: CreateServerParameters): CreateServerReturnType;
|
|
42
|
+
//# sourceMappingURL=Server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Server.d.ts","sourceRoot":"","sources":["../src/Server.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,MAAM,EACX,KAAK,cAAc,EACpB,MAAM,WAAW,CAAA;AAClB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAG3C,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AAIjC,MAAM,MAAM,sBAAsB,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,GACjE,CACI;IACE,iCAAiC;IACjC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACzB,iCAAiC;IACjC,IAAI,EAAE,MAAM,CAAA;CACb,GACD;IACE,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,IAAI,CAAC,EAAE,SAAS,CAAA;CACjB,CACJ,CAAA;AAEH,MAAM,MAAM,sBAAsB,GAAG,IAAI,CACvC,MAAM,CAAC,OAAO,eAAe,EAAE,OAAO,cAAc,CAAC,EACrD,SAAS,CACV,GAAG;IACF,OAAO,IAAI,WAAW,GAAG,IAAI,CAAA;IAC7B,KAAK,IAAI,OAAO,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;IACrC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACtB,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,MAAM,CACpB,UAAU,EAAE,sBAAsB,GACjC,sBAAsB,CA0HxB"}
|
|
@@ -1,18 +1,17 @@
|
|
|
1
1
|
import { createServer as createServer_, } from 'node:http';
|
|
2
2
|
import httpProxy from 'http-proxy';
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
3
|
+
import { extractPath } from './internal/utils.js';
|
|
4
|
+
import * as Pool from './Pool.js';
|
|
5
5
|
const { createProxyServer } = httpProxy;
|
|
6
6
|
/**
|
|
7
7
|
* Creates a server that manages a pool of instances via a proxy.
|
|
8
8
|
*
|
|
9
9
|
* @example
|
|
10
10
|
* ```
|
|
11
|
-
* import {
|
|
12
|
-
* import { anvil } from 'prool/instances'
|
|
11
|
+
* import { Instance, Server } from 'prool'
|
|
13
12
|
*
|
|
14
|
-
* const server =
|
|
15
|
-
* instance: anvil(),
|
|
13
|
+
* const server = Server.create({
|
|
14
|
+
* instance: Instance.anvil(),
|
|
16
15
|
* })
|
|
17
16
|
*
|
|
18
17
|
* const server = await server.start()
|
|
@@ -27,9 +26,9 @@ const { createProxyServer } = httpProxy;
|
|
|
27
26
|
* // "http://localhost:8545/healthcheck"
|
|
28
27
|
* ```
|
|
29
28
|
*/
|
|
30
|
-
export function
|
|
29
|
+
export function create(parameters) {
|
|
31
30
|
const { host = '::', instance, limit, port } = parameters;
|
|
32
|
-
const pool =
|
|
31
|
+
const pool = Pool.define({ instance, limit });
|
|
33
32
|
const proxy = createProxyServer({
|
|
34
33
|
ignorePath: true,
|
|
35
34
|
ws: true,
|
|
@@ -149,4 +148,4 @@ function done(res, statusCode, json) {
|
|
|
149
148
|
})
|
|
150
149
|
.end(json ? JSON.stringify(json) : undefined);
|
|
151
150
|
}
|
|
152
|
-
//# sourceMappingURL=
|
|
151
|
+
//# sourceMappingURL=Server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Server.js","sourceRoot":"","sources":["../src/Server.ts"],"names":[],"mappings":"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"}
|