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.
Files changed (52) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/_lib/exports/index.d.ts +1 -1
  3. package/_lib/exports/processes.d.ts +2 -0
  4. package/_lib/exports/processes.d.ts.map +1 -0
  5. package/_lib/exports/processes.js +2 -0
  6. package/_lib/exports/processes.js.map +1 -0
  7. package/_lib/instance.d.ts +9 -6
  8. package/_lib/instance.d.ts.map +1 -1
  9. package/_lib/instance.js +22 -3
  10. package/_lib/instance.js.map +1 -1
  11. package/_lib/instances/anvil.d.ts +1 -5
  12. package/_lib/instances/anvil.d.ts.map +1 -1
  13. package/_lib/instances/anvil.js +18 -44
  14. package/_lib/instances/anvil.js.map +1 -1
  15. package/_lib/instances/stackup.d.ts +86 -0
  16. package/_lib/instances/stackup.d.ts.map +1 -0
  17. package/_lib/instances/stackup.js +89 -0
  18. package/_lib/instances/stackup.js.map +1 -0
  19. package/_lib/pool.d.ts +7 -6
  20. package/_lib/pool.d.ts.map +1 -1
  21. package/_lib/pool.js +60 -53
  22. package/_lib/pool.js.map +1 -1
  23. package/_lib/processes/execa.d.ts +27 -0
  24. package/_lib/processes/execa.d.ts.map +1 -0
  25. package/_lib/processes/execa.js +63 -0
  26. package/_lib/processes/execa.js.map +1 -0
  27. package/_lib/server.d.ts +3 -3
  28. package/_lib/server.d.ts.map +1 -1
  29. package/_lib/server.js +42 -34
  30. package/_lib/server.js.map +1 -1
  31. package/_lib/utils.d.ts +4 -3
  32. package/_lib/utils.d.ts.map +1 -1
  33. package/_lib/utils.js +2 -2
  34. package/_lib/utils.js.map +1 -1
  35. package/exports/index.ts +2 -2
  36. package/exports/processes.test.ts +10 -0
  37. package/exports/processes.ts +8 -0
  38. package/instance.test.ts +34 -2
  39. package/instance.ts +46 -13
  40. package/instances/anvil.test.ts +5 -3
  41. package/instances/anvil.ts +21 -49
  42. package/instances/stackup.test.ts +106 -0
  43. package/instances/stackup.ts +162 -0
  44. package/package.json +6 -2
  45. package/pool.test.ts +203 -138
  46. package/pool.ts +83 -66
  47. package/processes/execa.test.ts +143 -0
  48. package/processes/execa.ts +100 -0
  49. package/server.test.ts +162 -85
  50. package/server.ts +46 -38
  51. package/tsconfig.build.tsbuildinfo +1 -1
  52. package/utils.ts +11 -9
package/_lib/pool.js CHANGED
@@ -14,7 +14,7 @@ import getPort from 'get-port';
14
14
  * ```
15
15
  */
16
16
  export function definePool(parameters) {
17
- const { instance, limit } = parameters;
17
+ const { limit } = parameters;
18
18
  const instances = new Map();
19
19
  // Define promise instances for mutators to avoid race conditions, and return
20
20
  // identical instances of the promises (instead of duplicating them).
@@ -23,102 +23,109 @@ export function definePool(parameters) {
23
23
  const promises = {
24
24
  destroy: new Map(),
25
25
  destroyAll: undefined,
26
+ restart: new Map(),
26
27
  start: new Map(),
27
28
  stop: new Map(),
28
29
  stopAll: undefined,
29
30
  };
30
31
  return {
31
32
  _internal: {
32
- instance,
33
+ instance: parameters.instance,
33
34
  },
34
35
  async destroy(key) {
35
36
  const destroyPromise = promises.destroy.get(key);
36
37
  if (destroyPromise)
37
38
  return destroyPromise;
38
39
  const resolver = Promise.withResolvers();
39
- try {
40
- promises.destroy.set(key, resolver.promise);
41
- await this.stop(key);
40
+ promises.destroy.set(key, resolver.promise);
41
+ this.stop(key)
42
+ .then(() => {
42
43
  instances.delete(key);
43
44
  resolver.resolve();
44
- }
45
- catch (error) {
46
- resolver.reject(error);
47
- }
45
+ })
46
+ .catch(resolver.reject);
48
47
  return resolver.promise;
49
48
  },
50
49
  async destroyAll() {
51
50
  if (promises.destroyAll)
52
51
  return promises.destroyAll;
53
52
  const resolver = Promise.withResolvers();
54
- try {
55
- promises.destroyAll = resolver.promise;
56
- await Promise.all([...instances.keys()].map((key) => this.destroy(key)));
53
+ promises.destroyAll = resolver.promise;
54
+ Promise.all([...instances.keys()].map((key) => this.destroy(key)))
55
+ .then(() => {
57
56
  promises.destroyAll = undefined;
58
57
  resolver.resolve();
59
- }
60
- catch (error) {
61
- resolver.reject(error);
62
- }
58
+ })
59
+ .catch(resolver.reject);
60
+ return resolver.promise;
61
+ },
62
+ async restart(key) {
63
+ const restartPromise = promises.restart.get(key);
64
+ if (restartPromise)
65
+ return restartPromise;
66
+ const resolver = Promise.withResolvers();
67
+ const instance_ = instances.get(key);
68
+ if (!instance_)
69
+ return;
70
+ promises.restart.set(key, resolver.promise);
71
+ instance_
72
+ .restart()
73
+ .then(resolver.resolve)
74
+ .catch(resolver.reject)
75
+ .finally(() => promises.restart.delete(key));
76
+ return resolver.promise;
63
77
  },
64
78
  async start(key, options = {}) {
65
79
  const startPromise = promises.start.get(key);
66
80
  if (startPromise)
67
81
  return startPromise;
68
82
  const resolver = Promise.withResolvers();
69
- try {
70
- promises.start.set(key, resolver.promise);
71
- if (limit && instances.size >= limit)
72
- throw new Error(`Instance limit of ${limit} reached.`);
73
- const { port = await getPort() } = options;
74
- const instance_ = instances.get(key) || instance.create({ port });
75
- await instance_.start();
83
+ if (limit && instances.size >= limit)
84
+ throw new Error(`Instance limit of ${limit} reached.`);
85
+ promises.start.set(key, resolver.promise);
86
+ const instance = typeof parameters.instance === 'function'
87
+ ? parameters.instance(key)
88
+ : parameters.instance;
89
+ const { port = await getPort() } = options;
90
+ const instance_ = instances.get(key) || instance.create({ port });
91
+ instance_
92
+ .start()
93
+ .then(() => {
76
94
  instances.set(key, instance_);
77
95
  resolver.resolve(instance_);
78
- }
79
- catch (error) {
80
- resolver.reject(error);
81
- }
82
- finally {
83
- promises.start.delete(key);
84
- }
96
+ })
97
+ .catch(resolver.reject)
98
+ .finally(() => promises.start.delete(key));
85
99
  return resolver.promise;
86
100
  },
87
101
  async stop(key) {
88
102
  const stopPromise = promises.stop.get(key);
89
103
  if (stopPromise)
90
104
  return stopPromise;
105
+ const instance_ = instances.get(key);
106
+ if (!instance_)
107
+ return;
91
108
  const resolver = Promise.withResolvers();
92
- try {
93
- promises.stop.set(key, resolver.promise);
94
- const instance_ = instances.get(key);
95
- if (!instance_) {
96
- resolver.resolve();
97
- return;
98
- }
99
- await instance_.stop();
100
- resolver.resolve();
101
- }
102
- catch (error) {
103
- resolver.reject(error);
104
- }
105
- finally {
106
- promises.stop.delete(key);
107
- }
109
+ promises.stop.set(key, resolver.promise);
110
+ instance_
111
+ .stop()
112
+ .then(resolver.resolve)
113
+ .catch(resolver.reject)
114
+ .finally(() => promises.stop.delete(key));
115
+ return resolver.promise;
108
116
  },
109
117
  async stopAll() {
110
118
  if (promises.stopAll)
111
119
  return promises.stopAll;
112
120
  const resolver = Promise.withResolvers();
113
- try {
114
- promises.stopAll = resolver.promise;
115
- await Promise.all([...instances.keys()].map((key) => this.stop(key)));
121
+ promises.stopAll = resolver.promise;
122
+ Promise.all([...instances.keys()].map((key) => this.stop(key)))
123
+ .then(() => {
116
124
  promises.stopAll = undefined;
117
125
  resolver.resolve();
118
- }
119
- catch (error) {
120
- resolver.reject(error);
121
- }
126
+ })
127
+ .catch(resolver.reject);
128
+ return resolver.promise;
122
129
  },
123
130
  get size() {
124
131
  return instances.size;
package/_lib/pool.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"pool.js","sourceRoot":"","sources":["../pool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pool.js","sourceRoot":"","sources":["../pool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import { type ResultPromise, execa as exec } from 'execa';
2
+ import type { InstanceStartOptions_internal } from '../instance.js';
3
+ export type Process_internal = ResultPromise<{
4
+ cleanup: true;
5
+ reject: false;
6
+ }>;
7
+ export type ExecaStartOptions = InstanceStartOptions_internal & {
8
+ resolver(options: {
9
+ process: Process_internal;
10
+ reject(data: string): Promise<void>;
11
+ resolve(): void;
12
+ }): void;
13
+ };
14
+ export type ExecaParameters = {
15
+ name: string;
16
+ };
17
+ export type ExecaProcess = {
18
+ _internal: {
19
+ process: Process_internal;
20
+ };
21
+ name: string;
22
+ start(command: (x: typeof exec) => void, options: ExecaStartOptions): Promise<void>;
23
+ stop(): Promise<void>;
24
+ };
25
+ export type ExecaReturnType = ExecaProcess;
26
+ export declare function execa(parameters: ExecaParameters): ExecaReturnType;
27
+ //# sourceMappingURL=execa.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execa.d.ts","sourceRoot":"","sources":["../../processes/execa.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,IAAI,IAAI,EAAE,MAAM,OAAO,CAAA;AACzD,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,gBAAgB,CAAA;AAGnE,MAAM,MAAM,gBAAgB,GAAG,aAAa,CAAC;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,KAAK,CAAA;CAAE,CAAC,CAAA;AAE9E,MAAM,MAAM,iBAAiB,GAAG,6BAA6B,GAAG;IAC9D,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;AAED,MAAM,MAAM,eAAe,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAA;AAE9C,MAAM,MAAM,YAAY,GAAG;IACzB,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,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACtB,CAAA;AACD,MAAM,MAAM,eAAe,GAAG,YAAY,CAAA;AAE1C,wBAAgB,KAAK,CAAC,UAAU,EAAE,eAAe,GAAG,eAAe,CAsElE"}
@@ -0,0 +1,63 @@
1
+ import { execa as exec } from 'execa';
2
+ import { stripColors } from '../utils.js';
3
+ export function execa(parameters) {
4
+ const { name } = parameters;
5
+ let process;
6
+ async function stop() {
7
+ const killed = process.kill();
8
+ if (!killed)
9
+ return;
10
+ return new Promise((resolve) => process.on('close', resolve));
11
+ }
12
+ return {
13
+ _internal: {
14
+ get process() {
15
+ return process;
16
+ },
17
+ },
18
+ name,
19
+ start(command, { emitter, resolver, status }) {
20
+ const { promise, resolve, reject } = Promise.withResolvers();
21
+ process = command(exec({
22
+ cleanup: true,
23
+ reject: false,
24
+ }));
25
+ resolver({
26
+ process,
27
+ async reject(data) {
28
+ await stop();
29
+ reject(new Error(`Failed to start process "${name}": ${data.toString()}`));
30
+ },
31
+ resolve() {
32
+ emitter.emit('listening');
33
+ return resolve();
34
+ },
35
+ });
36
+ process.stdout.on('data', (data) => {
37
+ const message = stripColors(data.toString());
38
+ emitter.emit('message', message);
39
+ emitter.emit('stdout', message);
40
+ });
41
+ process.stderr.on('data', async (data) => {
42
+ const message = stripColors(data.toString());
43
+ emitter.emit('message', message);
44
+ emitter.emit('stderr', message);
45
+ });
46
+ process.on('close', () => process.removeAllListeners());
47
+ process.on('exit', (code, signal) => {
48
+ emitter.emit('exit', code, signal);
49
+ if (!code) {
50
+ process.removeAllListeners();
51
+ if (status === 'starting')
52
+ reject(new Error(`Failed to start process "${name}": exited.`));
53
+ }
54
+ });
55
+ return promise;
56
+ },
57
+ async stop() {
58
+ process.removeAllListeners();
59
+ await stop();
60
+ },
61
+ };
62
+ }
63
+ //# sourceMappingURL=execa.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execa.js","sourceRoot":"","sources":["../../processes/execa.ts"],"names":[],"mappings":"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"}
package/_lib/server.d.ts CHANGED
@@ -3,7 +3,7 @@
3
3
  import { type IncomingMessage, type Server, type ServerResponse } from 'node:http';
4
4
  import type { AddressInfo } from 'node:net';
5
5
  import { type DefinePoolParameters } from './pool.js';
6
- export type createServerParameters = DefinePoolParameters & ({
6
+ export type CreateServerParameters = DefinePoolParameters<number> & ({
7
7
  /** Host to run the server on. */
8
8
  host?: string | undefined;
9
9
  /** Port to run the server on. */
@@ -12,10 +12,10 @@ export type createServerParameters = DefinePoolParameters & ({
12
12
  host?: undefined;
13
13
  port?: undefined;
14
14
  });
15
- export type createServerReturnType = Omit<Server<typeof IncomingMessage, typeof ServerResponse>, 'address'> & {
15
+ export type CreateServerReturnType = Omit<Server<typeof IncomingMessage, typeof ServerResponse>, 'address'> & {
16
16
  address(): AddressInfo | null;
17
17
  start(): Promise<() => Promise<void>>;
18
18
  stop(): Promise<void>;
19
19
  };
20
- export declare function createServer(parameters: createServerParameters): createServerReturnType;
20
+ export declare function createServer(parameters: CreateServerParameters): CreateServerReturnType;
21
21
  //# sourceMappingURL=server.d.ts.map
@@ -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,GACvD,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,CAiGxB"}
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"}
package/_lib/server.js CHANGED
@@ -18,43 +18,46 @@ export function createServer(parameters) {
18
18
  return;
19
19
  }
20
20
  const { id, path } = extractPath(url);
21
- if (typeof id === 'number' && path === '/') {
22
- const { host, port } = pool.get(id) || (await pool.start(id));
23
- return proxy.web(request, response, {
24
- target: `http://${host}:${port}`,
25
- });
21
+ if (typeof id === 'number') {
22
+ if (path === '/') {
23
+ const { host, port } = pool.get(id) || (await pool.start(id));
24
+ return proxy.web(request, response, {
25
+ target: `http://${host}:${port}`,
26
+ });
27
+ }
28
+ if (path === '/start') {
29
+ const { host, port } = await pool.start(id);
30
+ return done(response, 200, { host, port });
31
+ }
32
+ if (path === '/stop') {
33
+ await pool.stop(id);
34
+ return done(response, 200);
35
+ }
36
+ if (path === '/restart') {
37
+ await pool.restart(id);
38
+ return done(response, 200);
39
+ }
40
+ if (path === '/messages') {
41
+ const messages = pool.get(id)?.messages.get() || [];
42
+ return done(response, 200, messages);
43
+ }
26
44
  }
27
- if (typeof id === 'number' && path === '/start') {
28
- const { host, port } = await pool.start(id);
29
- response
30
- .writeHead(200, { 'Content-Type': 'application/json' })
31
- .end(JSON.stringify({ host, port }));
32
- return;
33
- }
34
- if (typeof id === 'number' && path === '/stop') {
35
- await pool.stop(id);
36
- response.writeHead(200, { 'Content-Type': 'application/json' }).end();
37
- return;
38
- }
39
- if (typeof id === 'number' && path === '/messages') {
40
- const messages = pool.get(id)?.messages.get() || [];
41
- response
42
- .writeHead(200, { 'Content-Type': 'application/json' })
43
- .end(JSON.stringify(messages));
44
- return;
45
- }
46
- if (path === '/healthcheck') {
47
- response.writeHead(200, { 'Content-Type': 'application/json' }).end();
48
- return;
49
- }
50
- response.writeHead(404, { 'Content-Type': 'application/json' }).end();
51
- return;
45
+ if (path === '/healthcheck')
46
+ return done(response, 200);
47
+ return done(response, 404);
52
48
  }
53
49
  catch (error) {
54
- response
55
- .writeHead(400, { 'Content-Type': 'application/json' })
56
- .end(JSON.stringify({ message: error.message }));
57
- return;
50
+ return done(response, 400, { message: error.message });
51
+ }
52
+ });
53
+ proxy.on('proxyReq', (proxyReq, req) => {
54
+ ;
55
+ req._proxyReq = proxyReq;
56
+ });
57
+ proxy.on('error', (err, req) => {
58
+ if (req.socket.destroyed && err.code === 'ECONNRESET') {
59
+ ;
60
+ req._proxyReq.abort();
58
61
  }
59
62
  });
60
63
  server.on('upgrade', async (request, socket, head) => {
@@ -91,4 +94,9 @@ export function createServer(parameters) {
91
94
  },
92
95
  });
93
96
  }
97
+ function done(res, statusCode, json) {
98
+ return res
99
+ .writeHead(statusCode, { 'Content-Type': 'application/json' })
100
+ .end(json ? JSON.stringify(json) : undefined);
101
+ }
94
102
  //# sourceMappingURL=server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../server.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,YAAY,IAAI,aAAa,GAC9B,MAAM,WAAW,CAAA;AAElB,OAAO,SAAS,MAAM,YAAY,CAAA;AAElC,OAAO,EAA6B,UAAU,EAAE,MAAM,WAAW,CAAA;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAExC,MAAM,EAAE,iBAAiB,EAAE,GAAG,SAAS,CAAA;AAyBvC,MAAM,UAAU,YAAY,CAC1B,UAAkC;IAElC,MAAM,EAAE,IAAI,GAAG,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,UAAU,CAAA;IAEzD,MAAM,IAAI,GAAG,UAAU,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAA;IAC5C,MAAM,KAAK,GAAG,iBAAiB,CAAC;QAC9B,UAAU,EAAE,IAAI;QAChB,EAAE,EAAE,IAAI;KACT,CAAC,CAAA;IAEF,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE;QACvD,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAA;YACvB,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,QAAQ,CAAC,GAAG,EAAE,CAAA;gBACd,OAAM;YACR,CAAC;YAED,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,WAAW,CAAC,GAAG,CAAC,CAAA;YAErC,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;gBAC3C,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAA;gBAC7D,OAAO,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE;oBAClC,MAAM,EAAE,UAAU,IAAI,IAAI,IAAI,EAAE;iBACjC,CAAC,CAAA;YACJ,CAAC;YACD,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAChD,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;gBAC3C,QAAQ;qBACL,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC;qBACtD,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;gBACtC,OAAM;YACR,CAAC;YACD,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;gBAC/C,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;gBACnB,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC,GAAG,EAAE,CAAA;gBACrE,OAAM;YACR,CAAC;YACD,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;gBACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,CAAA;gBACnD,QAAQ;qBACL,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC;qBACtD,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAA;gBAChC,OAAM;YACR,CAAC;YAED,IAAI,IAAI,KAAK,cAAc,EAAE,CAAC;gBAC5B,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC,GAAG,EAAE,CAAA;gBACrE,OAAM;YACR,CAAC;YAED,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC,GAAG,EAAE,CAAA;YACrE,OAAM;QACR,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,QAAQ;iBACL,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC;iBACtD,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;YAC7D,OAAM;QACR,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;QACnD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAA;QACvB,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAA;YAChD,OAAM;QACR,CAAC;QAED,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,WAAW,CAAC,GAAG,CAAC,CAAA;QAErC,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YAC3C,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAA;YAC7D,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;gBAC9B,MAAM,EAAE,QAAQ,IAAI,IAAI,IAAI,EAAE;aAC/B,CAAC,CAAA;YACF,OAAM;QACR,CAAC;QAED,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAA;QAChD,OAAM;IACR,CAAC,CAAC,CAAA;IAEF,OAAO,MAAM,CAAC,MAAM,CAAC,MAAa,EAAE;QAClC,KAAK;YACH,OAAO,IAAI,OAAO,CAAsB,CAAC,OAAO,EAAE,EAAE;gBAClD,IAAI,IAAI;oBAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;;oBACxD,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;YAC9C,CAAC,CAAC,CAAA;QACJ,CAAC;QACD,KAAK,CAAC,IAAI;YACR,MAAM,OAAO,CAAC,UAAU,CAAC;gBACvB,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CACpC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAC7D;gBACD,IAAI,CAAC,UAAU,EAAE;aAClB,CAAC,CAAA;QACJ,CAAC;KACF,CAAC,CAAA;AACJ,CAAC"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../server.ts"],"names":[],"mappings":"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"}
package/_lib/utils.d.ts CHANGED
@@ -16,15 +16,16 @@ 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 | boolean | number | bigint | undefined;
21
+ };
19
22
  /**
20
23
  * Converts an object of options to an array of command line arguments.
21
24
  *
22
25
  * @param options The options object.
23
26
  * @returns The command line arguments.
24
27
  */
25
- export declare function toArgs(options: {
26
- [key: string]: Record<string, string> | string | boolean | number | bigint | undefined;
27
- }): string[];
28
+ export declare function toArgs(parameters: ToArgsParameters): string[];
28
29
  /**
29
30
  * Converts a camelCase string to a flag case string.
30
31
  *
@@ -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;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE;IAC9B,CAAC,GAAG,EAAE,MAAM,GACR,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACtB,MAAM,GACN,OAAO,GACP,MAAM,GACN,MAAM,GACN,SAAS,CAAA;CACd,YAsBA;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,UAErC"}
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,MAAM,MAAM,gBAAgB,GAAG;IAC7B,CAAC,GAAG,EAAE,MAAM,GACR,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACtB,MAAM,GACN,OAAO,GACP,MAAM,GACN,MAAM,GACN,SAAS,CAAA;CACd,CAAA;AAED;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,UAAU,EAAE,gBAAgB,YAsBlD;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,UAErC"}
package/_lib/utils.js CHANGED
@@ -36,8 +36,8 @@ export function stripColors(message) {
36
36
  * @param options The options object.
37
37
  * @returns The command line arguments.
38
38
  */
39
- export function toArgs(options) {
40
- return Object.entries(options).flatMap(([key, value]) => {
39
+ export function toArgs(parameters) {
40
+ return Object.entries(parameters).flatMap(([key, value]) => {
41
41
  if (value === undefined)
42
42
  return [];
43
43
  if (typeof value === 'object' && value !== null)
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;AAED;;;;;GAKG;AACH,MAAM,UAAU,MAAM,CAAC,OAQtB;IACC,OAAO,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QACtD,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,EAAE,CAAA;QAElC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;YAC7C,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,CAAC,GAAG,CAAC,CAAA;gBAC5B,MAAM,KAAK,GAAG,GAAG,MAAM,KAAK,QAAQ,EAAE,CAAA;gBACtC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;YACtB,CAAC,CAAC,CAAA;QAEJ,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,CAAA;QAE5B,IAAI,KAAK,KAAK,KAAK;YAAE,OAAO,EAAE,CAAA;QAC9B,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;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,GAAW;IACpC,OAAO,KAAK,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE,CAAA;AAC3E,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;AAYD;;;;;GAKG;AACH,MAAM,UAAU,MAAM,CAAC,UAA4B;IACjD,OAAO,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QACzD,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,EAAE,CAAA;QAElC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;YAC7C,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,CAAC,GAAG,CAAC,CAAA;gBAC5B,MAAM,KAAK,GAAG,GAAG,MAAM,KAAK,QAAQ,EAAE,CAAA;gBACtC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;YACtB,CAAC,CAAC,CAAA;QAEJ,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,CAAA;QAE5B,IAAI,KAAK,KAAK,KAAK;YAAE,OAAO,EAAE,CAAA;QAC9B,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;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,GAAW;IACpC,OAAO,KAAK,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE,CAAA;AAC3E,CAAC"}
package/exports/index.ts CHANGED
@@ -14,7 +14,7 @@ export {
14
14
  } from '../pool.js'
15
15
 
16
16
  export {
17
- type createServerParameters,
18
- type createServerReturnType,
17
+ type CreateServerParameters,
18
+ type CreateServerReturnType,
19
19
  createServer,
20
20
  } from '../server.js'
@@ -0,0 +1,10 @@
1
+ import { expect, test } from 'vitest'
2
+ import * as exports from './processes.js'
3
+
4
+ test('exports', () => {
5
+ expect(Object.keys(exports)).toMatchInlineSnapshot(`
6
+ [
7
+ "execa",
8
+ ]
9
+ `)
10
+ })
@@ -0,0 +1,8 @@
1
+ export {
2
+ type ExecaParameters,
3
+ type ExecaProcess,
4
+ type ExecaReturnType,
5
+ type ExecaStartOptions,
6
+ type Process_internal,
7
+ execa,
8
+ } from '../processes/execa.js'
package/instance.test.ts CHANGED
@@ -173,6 +173,38 @@ test('behavior: stop (error)', async () => {
173
173
  expect(instance.status).toEqual('started')
174
174
  })
175
175
 
176
+ test('behavior: restart', async () => {
177
+ let count = 0
178
+ const foo = defineInstance(() => {
179
+ return {
180
+ name: 'foo',
181
+ host: 'localhost',
182
+ port: 3000,
183
+ async start() {
184
+ count++
185
+ },
186
+ async stop() {},
187
+ }
188
+ })
189
+
190
+ const instance = foo()
191
+ await instance.start()
192
+
193
+ expect(instance.status).toEqual('started')
194
+ const promise_1 = instance.restart()
195
+ expect(instance.status).toEqual('restarting')
196
+ const promise_2 = instance.restart()
197
+ expect(instance.status).toEqual('restarting')
198
+
199
+ expect(promise_1).toStrictEqual(promise_2)
200
+
201
+ await promise_1
202
+ await promise_2
203
+
204
+ expect(instance.status).toEqual('started')
205
+ expect(count).toEqual(2)
206
+ })
207
+
176
208
  test('behavior: events', async () => {
177
209
  const foo = defineInstance(() => {
178
210
  let count = 0
@@ -180,7 +212,7 @@ test('behavior: events', async () => {
180
212
  name: 'foo',
181
213
  host: 'localhost',
182
214
  port: 3000,
183
- async start({ emitter }) {
215
+ async start(_, { emitter }) {
184
216
  emitter.emit('message', count.toString())
185
217
  emitter.emit('listening')
186
218
  if (count > 0) emitter.emit('stderr', 'stderr')
@@ -236,7 +268,7 @@ test('behavior: messages', async () => {
236
268
  name: 'foo',
237
269
  host: 'localhost',
238
270
  port: 3000,
239
- async start({ emitter }) {
271
+ async start(_, { emitter }) {
240
272
  for (let i = 0; i < 50; i++) emitter.emit('message', i.toString())
241
273
  },
242
274
  async stop() {},