prool 0.0.11 → 0.0.13
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 +12 -0
- package/README.md +341 -0
- package/_lib/exports/instances.d.ts +4 -3
- package/_lib/exports/instances.d.ts.map +1 -1
- package/_lib/exports/instances.js +1 -0
- package/_lib/exports/instances.js.map +1 -1
- package/_lib/instances/alto.d.ts.map +1 -1
- package/_lib/instances/alto.js +0 -6
- package/_lib/instances/alto.js.map +1 -1
- package/_lib/instances/rundler.d.ts +604 -0
- package/_lib/instances/rundler.d.ts.map +1 -0
- package/_lib/instances/rundler.js +86 -0
- package/_lib/instances/rundler.js.map +1 -0
- package/_lib/server.d.ts +24 -0
- package/_lib/server.d.ts.map +1 -1
- package/_lib/server.js +24 -0
- package/_lib/server.js.map +1 -1
- package/_lib/utils.d.ts +7 -11
- package/_lib/utils.d.ts.map +1 -1
- package/_lib/utils.js +21 -15
- package/_lib/utils.js.map +1 -1
- package/exports/instances.test.ts +1 -0
- package/exports/instances.ts +4 -3
- package/instances/alto.ts +0 -13
- package/instances/package.json +5 -0
- package/instances/rundler.test.ts +115 -0
- package/instances/rundler.ts +451 -0
- package/package.json +4 -2
- package/pool.test.ts +5 -1
- package/processes/package.json +5 -0
- package/server.test.ts +40 -1
- package/server.ts +24 -0
- package/tsconfig.build.tsbuildinfo +1 -1
- package/utils.test.ts +29 -14
- package/utils.ts +37 -26
package/_lib/server.d.ts
CHANGED
|
@@ -17,5 +17,29 @@ export type CreateServerReturnType = Omit<Server<typeof IncomingMessage, typeof
|
|
|
17
17
|
start(): Promise<() => Promise<void>>;
|
|
18
18
|
stop(): Promise<void>;
|
|
19
19
|
};
|
|
20
|
+
/**
|
|
21
|
+
* Creates a server that manages a pool of instances via a proxy.
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```
|
|
25
|
+
* import { createServer } from 'prool'
|
|
26
|
+
* import { anvil } from 'prool/instances'
|
|
27
|
+
*
|
|
28
|
+
* const server = createServer({
|
|
29
|
+
* instance: anvil(),
|
|
30
|
+
* })
|
|
31
|
+
*
|
|
32
|
+
* const server = await server.start()
|
|
33
|
+
* // Instances accessible at:
|
|
34
|
+
* // "http://localhost:8545/1"
|
|
35
|
+
* // "http://localhost:8545/2"
|
|
36
|
+
* // "http://localhost:8545/3"
|
|
37
|
+
* // "http://localhost:8545/n"
|
|
38
|
+
* // "http://localhost:8545/n/start"
|
|
39
|
+
* // "http://localhost:8545/n/stop"
|
|
40
|
+
* // "http://localhost:8545/n/restart"
|
|
41
|
+
* // "http://localhost:8545/healthcheck"
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
20
44
|
export declare function createServer(parameters: CreateServerParameters): CreateServerReturnType;
|
|
21
45
|
//# sourceMappingURL=server.d.ts.map
|
package/_lib/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../server.ts"],"names":[],"mappings":";;AAAA,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,MAAM,EACX,KAAK,cAAc,EAEpB,MAAM,WAAW,CAAA;AAClB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAG3C,OAAO,EAAE,KAAK,oBAAoB,EAAc,MAAM,WAAW,CAAA;AAKjE,MAAM,MAAM,sBAAsB,GAAG,oBAAoB,CAAC,MAAM,CAAC,GAC/D,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,wBAAgB,YAAY,CAC1B,UAAU,EAAE,sBAAsB,GACjC,sBAAsB,CAmGxB"}
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../server.ts"],"names":[],"mappings":";;AAAA,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,MAAM,EACX,KAAK,cAAc,EAEpB,MAAM,WAAW,CAAA;AAClB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAG3C,OAAO,EAAE,KAAK,oBAAoB,EAAc,MAAM,WAAW,CAAA;AAKjE,MAAM,MAAM,sBAAsB,GAAG,oBAAoB,CAAC,MAAM,CAAC,GAC/D,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;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,YAAY,CAC1B,UAAU,EAAE,sBAAsB,GACjC,sBAAsB,CAmGxB"}
|
package/_lib/server.js
CHANGED
|
@@ -3,6 +3,30 @@ import httpProxy from 'http-proxy';
|
|
|
3
3
|
import { definePool } from './pool.js';
|
|
4
4
|
import { extractPath } from './utils.js';
|
|
5
5
|
const { createProxyServer } = httpProxy;
|
|
6
|
+
/**
|
|
7
|
+
* Creates a server that manages a pool of instances via a proxy.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```
|
|
11
|
+
* import { createServer } from 'prool'
|
|
12
|
+
* import { anvil } from 'prool/instances'
|
|
13
|
+
*
|
|
14
|
+
* const server = createServer({
|
|
15
|
+
* instance: anvil(),
|
|
16
|
+
* })
|
|
17
|
+
*
|
|
18
|
+
* const server = await server.start()
|
|
19
|
+
* // Instances accessible at:
|
|
20
|
+
* // "http://localhost:8545/1"
|
|
21
|
+
* // "http://localhost:8545/2"
|
|
22
|
+
* // "http://localhost:8545/3"
|
|
23
|
+
* // "http://localhost:8545/n"
|
|
24
|
+
* // "http://localhost:8545/n/start"
|
|
25
|
+
* // "http://localhost:8545/n/stop"
|
|
26
|
+
* // "http://localhost:8545/n/restart"
|
|
27
|
+
* // "http://localhost:8545/healthcheck"
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
6
30
|
export function createServer(parameters) {
|
|
7
31
|
const { host = '::', instance, limit, port } = parameters;
|
|
8
32
|
const pool = definePool({ instance, limit });
|
package/_lib/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../server.ts"],"names":[],"mappings":"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"}
|
package/_lib/utils.d.ts
CHANGED
|
@@ -16,21 +16,17 @@ export declare function extractPath(request: string): ExtractPathReturnType;
|
|
|
16
16
|
* @returns The stripped string.
|
|
17
17
|
*/
|
|
18
18
|
export declare function stripColors(message: string): string;
|
|
19
|
-
export type ToArgsParameters = {
|
|
20
|
-
[key: string]: Record<string, string> | string | readonly string[] | boolean | number | bigint | undefined;
|
|
21
|
-
};
|
|
22
19
|
/**
|
|
23
20
|
* Converts an object of options to an array of command line arguments.
|
|
24
21
|
*
|
|
25
22
|
* @param options The options object.
|
|
26
23
|
* @returns The command line arguments.
|
|
27
24
|
*/
|
|
28
|
-
export declare function toArgs(
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
export declare function toFlagCase(key: string): string;
|
|
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[];
|
|
30
|
+
/** Converts to a --flag-case string. */
|
|
31
|
+
export declare function toFlagCase(str: string, separator?: string): string;
|
|
36
32
|
//# sourceMappingURL=utils.d.ts.map
|
package/_lib/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../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,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../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;IACH,CAAC,GAAG,EAAE,MAAM,GACR,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GACnB,MAAM,GACN,SAAS,MAAM,EAAE,GACjB,OAAO,GACP,MAAM,GACN,MAAM,GACN,SAAS,CAAA;CACd,EACD,OAAO,GAAE;IAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAAA;CAAwB,SA6B7D;AAED,wCAAwC;AACxC,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,SAAM,UAatD"}
|
package/_lib/utils.js
CHANGED
|
@@ -36,21 +36,22 @@ export function stripColors(message) {
|
|
|
36
36
|
* @param options The options object.
|
|
37
37
|
* @returns The command line arguments.
|
|
38
38
|
*/
|
|
39
|
-
export function toArgs(
|
|
40
|
-
|
|
39
|
+
export function toArgs(obj, options = { casing: 'kebab' }) {
|
|
40
|
+
const { casing } = options;
|
|
41
|
+
return Object.entries(obj).flatMap(([key, value]) => {
|
|
41
42
|
if (value === undefined)
|
|
42
43
|
return [];
|
|
43
44
|
if (Array.isArray(value))
|
|
44
45
|
return [toFlagCase(key), value.join(',')];
|
|
45
|
-
if (typeof value === 'object' && value !== null)
|
|
46
|
+
if (typeof value === 'object' && value !== null) {
|
|
46
47
|
return Object.entries(value).flatMap(([subKey, subValue]) => {
|
|
47
48
|
if (subValue === undefined)
|
|
48
49
|
return [];
|
|
49
|
-
const flag = toFlagCase(key);
|
|
50
|
-
|
|
51
|
-
return [flag, value];
|
|
50
|
+
const flag = toFlagCase(`${key}.${subKey}`, casing === 'kebab' ? '-' : '_');
|
|
51
|
+
return [flag, subValue];
|
|
52
52
|
});
|
|
53
|
-
|
|
53
|
+
}
|
|
54
|
+
const flag = toFlagCase(key, casing === 'kebab' ? '-' : '_');
|
|
54
55
|
if (value === false)
|
|
55
56
|
return [flag, 'false'];
|
|
56
57
|
if (value === true)
|
|
@@ -61,13 +62,18 @@ export function toArgs(parameters) {
|
|
|
61
62
|
return [flag, stringified];
|
|
62
63
|
});
|
|
63
64
|
}
|
|
64
|
-
/**
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
65
|
+
/** Converts to a --flag-case string. */
|
|
66
|
+
export function toFlagCase(str, separator = '-') {
|
|
67
|
+
const keys = [];
|
|
68
|
+
for (let i = 0; i < str.split('.').length; i++) {
|
|
69
|
+
const key = str.split('.')[i];
|
|
70
|
+
if (!key)
|
|
71
|
+
continue;
|
|
72
|
+
keys.push(key
|
|
73
|
+
.replace(/\s+/g, separator)
|
|
74
|
+
.replace(/([a-z])([A-Z])/g, `$1${separator}$2`)
|
|
75
|
+
.toLowerCase());
|
|
76
|
+
}
|
|
77
|
+
return `--${keys.join('.')}`;
|
|
72
78
|
}
|
|
73
79
|
//# sourceMappingURL=utils.js.map
|
package/_lib/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../utils.ts"],"names":[],"mappings":"AAKA;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,OAAe;IACzC,MAAM,IAAI,GAAG,kBAAkB,CAAA,CAAC,kCAAkC;IAClE,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,OAAO,IAAI,GAAG,EAAE,CAAC,CAAA;IAC/C,MAAM,CAAC,QAAQ,EAAE,GAAG,QAAQ,CAAC,GAAG,GAAG,CAAC,QAAQ;SACzC,KAAK,CAAC,GAAG,CAAC;SACV,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,CAAA;IAEhC,MAAM,EAAE,GACN,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC;QACrD,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;QAClB,CAAC,CAAC,SAAS,CAAA;IACf,MAAM,IAAI,GAAG,IACX,OAAO,EAAE,KAAK,QAAQ;QACpB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;QACpB,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CACtC,EAAE,CAAA;IAEF,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAA;AACrB,CAAC;AAED,MAAM,cAAc;AAClB,yEAAyE;AACzE,6EAA6E,CAAA;AAE/E;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,OAAe;IACzC,OAAO,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAA;AAC5C,CAAC;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../utils.ts"],"names":[],"mappings":"AAKA;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,OAAe;IACzC,MAAM,IAAI,GAAG,kBAAkB,CAAA,CAAC,kCAAkC;IAClE,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,OAAO,IAAI,GAAG,EAAE,CAAC,CAAA;IAC/C,MAAM,CAAC,QAAQ,EAAE,GAAG,QAAQ,CAAC,GAAG,GAAG,CAAC,QAAQ;SACzC,KAAK,CAAC,GAAG,CAAC;SACV,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,CAAA;IAEhC,MAAM,EAAE,GACN,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC;QACrD,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;QAClB,CAAC,CAAC,SAAS,CAAA;IACf,MAAM,IAAI,GAAG,IACX,OAAO,EAAE,KAAK,QAAQ;QACpB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;QACpB,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CACtC,EAAE,CAAA;IAEF,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAA;AACrB,CAAC;AAED,MAAM,cAAc;AAClB,yEAAyE;AACzE,6EAA6E,CAAA;AAE/E;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,OAAe;IACzC,OAAO,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAA;AAC5C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,MAAM,CACpB,GASC,EACD,UAAyC,EAAE,MAAM,EAAE,OAAO,EAAE;IAE5D,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;IAC1B,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QAClD,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,EAAE,CAAA;QAElC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;QAEnE,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YAChD,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,EAAE;gBAC1D,IAAI,QAAQ,KAAK,SAAS;oBAAE,OAAO,EAAE,CAAA;gBACrC,MAAM,IAAI,GAAG,UAAU,CACrB,GAAG,GAAG,IAAI,MAAM,EAAE,EAClB,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAC/B,CAAA;gBACD,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;YACzB,CAAC,CAAC,CAAA;QACJ,CAAC;QAED,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;QAE5D,IAAI,KAAK,KAAK,KAAK;YAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QAC3C,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO,CAAC,IAAI,CAAC,CAAA;QAEjC,MAAM,WAAW,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAA;QACpC,IAAI,WAAW,KAAK,EAAE;YAAE,OAAO,CAAC,IAAI,CAAC,CAAA;QAErC,OAAO,CAAC,IAAI,EAAE,WAAW,CAAC,CAAA;IAC5B,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,wCAAwC;AACxC,MAAM,UAAU,UAAU,CAAC,GAAW,EAAE,SAAS,GAAG,GAAG;IACrD,MAAM,IAAI,GAAG,EAAE,CAAA;IACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/C,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;QAC7B,IAAI,CAAC,GAAG;YAAE,SAAQ;QAClB,IAAI,CAAC,IAAI,CACP,GAAG;aACA,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC;aAC1B,OAAO,CAAC,iBAAiB,EAAE,KAAK,SAAS,IAAI,CAAC;aAC9C,WAAW,EAAE,CACjB,CAAA;IACH,CAAC;IACD,OAAO,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAA;AAC9B,CAAC"}
|
package/exports/instances.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
export { type AltoParameters
|
|
2
|
-
export { type AnvilParameters
|
|
3
|
-
export { type
|
|
1
|
+
export { alto, type AltoParameters } from '../instances/alto.js'
|
|
2
|
+
export { anvil, type AnvilParameters } from '../instances/anvil.js'
|
|
3
|
+
export { rundler, type RundlerParameters } from '../instances/rundler.js'
|
|
4
|
+
export { stackup, type StackupParameters } from '../instances/stackup.js'
|
package/instances/alto.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { readFileSync, writeFileSync } from 'node:fs'
|
|
2
1
|
import { resolve } from 'node:path'
|
|
3
2
|
import { defineInstance } from '../instance.js'
|
|
4
3
|
import { execa } from '../processes/execa.js'
|
|
@@ -259,18 +258,6 @@ export const alto = defineInstance((parameters?: AltoParameters) => {
|
|
|
259
258
|
? import.meta.resolve('@pimlico/alto').split('file:')[1]
|
|
260
259
|
: require.resolve('@pimlico/alto')
|
|
261
260
|
)!
|
|
262
|
-
|
|
263
|
-
// Remove the `type` field from the package.json file.
|
|
264
|
-
// `@pimlico/alto`'s CLI is packaged as a CJS module.
|
|
265
|
-
// TODO: Fix upstream in `@pimlico/alto`.
|
|
266
|
-
const { type: _, ...packageJson } = JSON.parse(
|
|
267
|
-
readFileSync(resolve(libPath, '../../package.json'), 'utf-8'),
|
|
268
|
-
)
|
|
269
|
-
writeFileSync(
|
|
270
|
-
resolve(libPath, '../../package.json'),
|
|
271
|
-
JSON.stringify(packageJson),
|
|
272
|
-
)
|
|
273
|
-
|
|
274
261
|
return ['node', resolve(libPath, '../cli/alto.js')]
|
|
275
262
|
})()
|
|
276
263
|
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { afterEach, expect, test } from 'vitest'
|
|
2
|
+
import type { Instance } from '../instance.js'
|
|
3
|
+
import { type RundlerParameters, rundler } from './rundler.js'
|
|
4
|
+
|
|
5
|
+
const instances: Instance[] = []
|
|
6
|
+
|
|
7
|
+
const defineInstance = (parameters: RundlerParameters = {}) => {
|
|
8
|
+
const instance = rundler(parameters)
|
|
9
|
+
instances.push(instance)
|
|
10
|
+
return instance
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
afterEach(async () => {
|
|
14
|
+
for (const instance of instances) await instance.stop()
|
|
15
|
+
})
|
|
16
|
+
|
|
17
|
+
test('default', async () => {
|
|
18
|
+
const messages: string[] = []
|
|
19
|
+
const stdouts: string[] = []
|
|
20
|
+
|
|
21
|
+
const instance = defineInstance()
|
|
22
|
+
|
|
23
|
+
instance.on('message', (m) => messages.push(m))
|
|
24
|
+
instance.on('stdout', (m) => stdouts.push(m))
|
|
25
|
+
|
|
26
|
+
expect(instance.messages.get()).toMatchInlineSnapshot('[]')
|
|
27
|
+
|
|
28
|
+
await instance.start()
|
|
29
|
+
expect(instance.status).toEqual('started')
|
|
30
|
+
|
|
31
|
+
expect(messages.join('')).toBeDefined()
|
|
32
|
+
expect(stdouts.join('')).toBeDefined()
|
|
33
|
+
expect(instance.messages.get().join('')).toBeDefined()
|
|
34
|
+
|
|
35
|
+
await instance.stop()
|
|
36
|
+
expect(instance.status).toEqual('stopped')
|
|
37
|
+
|
|
38
|
+
expect(messages.join('')).toBeDefined()
|
|
39
|
+
expect(stdouts.join('')).toBeDefined()
|
|
40
|
+
expect(instance.messages.get()).toMatchInlineSnapshot('[]')
|
|
41
|
+
})
|
|
42
|
+
|
|
43
|
+
test('behavior: instance errored (duplicate ports)', async () => {
|
|
44
|
+
const instance_1 = defineInstance({
|
|
45
|
+
rpc: {
|
|
46
|
+
port: 1337,
|
|
47
|
+
},
|
|
48
|
+
})
|
|
49
|
+
const instance_2 = defineInstance({
|
|
50
|
+
rpc: {
|
|
51
|
+
port: 1337,
|
|
52
|
+
},
|
|
53
|
+
})
|
|
54
|
+
|
|
55
|
+
await instance_1.start()
|
|
56
|
+
await expect(() =>
|
|
57
|
+
instance_2.start(),
|
|
58
|
+
).rejects.toThrowErrorMatchingInlineSnapshot(
|
|
59
|
+
`[Error: Failed to start process "rundler": exited]`,
|
|
60
|
+
)
|
|
61
|
+
})
|
|
62
|
+
|
|
63
|
+
test('behavior: start and stop multiple times', async () => {
|
|
64
|
+
const instance = defineInstance()
|
|
65
|
+
|
|
66
|
+
await instance.start()
|
|
67
|
+
await instance.stop()
|
|
68
|
+
await instance.start()
|
|
69
|
+
await instance.stop()
|
|
70
|
+
await instance.start()
|
|
71
|
+
await instance.stop()
|
|
72
|
+
await instance.start()
|
|
73
|
+
await instance.stop()
|
|
74
|
+
})
|
|
75
|
+
|
|
76
|
+
test('behavior: can subscribe to stderr', async () => {
|
|
77
|
+
const messages: string[] = []
|
|
78
|
+
|
|
79
|
+
const instance_1 = defineInstance({
|
|
80
|
+
rpc: {
|
|
81
|
+
port: 1338,
|
|
82
|
+
},
|
|
83
|
+
})
|
|
84
|
+
const instance_2 = defineInstance({
|
|
85
|
+
rpc: {
|
|
86
|
+
port: 1338,
|
|
87
|
+
},
|
|
88
|
+
})
|
|
89
|
+
|
|
90
|
+
await instance_1.start()
|
|
91
|
+
instance_2.on('stderr', (message) => messages.push(message))
|
|
92
|
+
await expect(() =>
|
|
93
|
+
instance_2.start(),
|
|
94
|
+
).rejects.toThrowErrorMatchingInlineSnapshot(
|
|
95
|
+
`[Error: Failed to start process "rundler": exited]`,
|
|
96
|
+
)
|
|
97
|
+
})
|
|
98
|
+
|
|
99
|
+
test('behavior: exit', async () => {
|
|
100
|
+
const instance = defineInstance()
|
|
101
|
+
|
|
102
|
+
let exitCode: number | null | undefined = undefined
|
|
103
|
+
instance.on('exit', (code) => {
|
|
104
|
+
exitCode = code
|
|
105
|
+
})
|
|
106
|
+
|
|
107
|
+
await instance.start()
|
|
108
|
+
expect(instance.status).toEqual('started')
|
|
109
|
+
|
|
110
|
+
instance._internal.process.kill()
|
|
111
|
+
|
|
112
|
+
await new Promise<void>((res) => setTimeout(res, 100))
|
|
113
|
+
expect(instance.status).toEqual('stopped')
|
|
114
|
+
expect(typeof exitCode !== 'undefined').toBeTruthy()
|
|
115
|
+
})
|