@delight-rpc/child-process 0.7.1 → 0.7.2

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/lib/client.js CHANGED
@@ -5,7 +5,8 @@ import { raceAbortSignals, timeoutSignal, withAbortSignal } from 'extra-abort';
5
5
  import { isntUndefined } from '@blackglory/prelude';
6
6
  export function createClient(process, { parameterValidators, expectedVersion, channel, timeout } = {}) {
7
7
  const pendings = new Map();
8
- process.on('message', handler);
8
+ process.on('message', handleMessage);
9
+ process.on('disconnect', abortAllPendings);
9
10
  const client = DelightRPC.createClient(async function send(request, signal) {
10
11
  const res = new Deferred();
11
12
  pendings.set(request.id, res);
@@ -31,13 +32,17 @@ export function createClient(process, { parameterValidators, expectedVersion, ch
31
32
  });
32
33
  return [client, close];
33
34
  function close() {
34
- process.off('message', handler);
35
- for (const [key, deferred] of pendings.entries()) {
35
+ process.off('message', handleMessage);
36
+ process.off('disconnect', abortAllPendings);
37
+ abortAllPendings();
38
+ }
39
+ function abortAllPendings() {
40
+ for (const deferred of pendings.values()) {
36
41
  deferred.reject(new ClientClosed());
37
- pendings.delete(key);
38
42
  }
43
+ pendings.clear();
39
44
  }
40
- function handler(res) {
45
+ function handleMessage(res) {
41
46
  var _a;
42
47
  if (DelightRPC.isResult(res) || DelightRPC.isError(res)) {
43
48
  (_a = pendings.get(res.id)) === null || _a === void 0 ? void 0 : _a.resolve(res);
@@ -46,7 +51,8 @@ export function createClient(process, { parameterValidators, expectedVersion, ch
46
51
  }
47
52
  export function createBatchClient(process, { expectedVersion, channel, timeout } = {}) {
48
53
  const pendings = new Map();
49
- process.on('message', handler);
54
+ process.on('message', handleMessage);
55
+ process.on('disconnect', abortAllPendings);
50
56
  const client = new DelightRPC.BatchClient(async function send(request) {
51
57
  const res = new Deferred();
52
58
  pendings.set(request.id, res);
@@ -70,13 +76,17 @@ export function createBatchClient(process, { expectedVersion, channel, timeout }
70
76
  });
71
77
  return [client, close];
72
78
  function close() {
73
- process.off('message', handler);
74
- for (const [key, deferred] of pendings.entries()) {
79
+ process.off('message', handleMessage);
80
+ process.off('disconnect', abortAllPendings);
81
+ abortAllPendings();
82
+ }
83
+ function abortAllPendings() {
84
+ for (const deferred of pendings.values()) {
75
85
  deferred.reject(new ClientClosed());
76
- pendings.delete(key);
77
86
  }
87
+ pendings.clear();
78
88
  }
79
- function handler(res) {
89
+ function handleMessage(res) {
80
90
  var _a;
81
91
  if (DelightRPC.isError(res) || DelightRPC.isBatchResponse(res)) {
82
92
  (_a = pendings.get(res.id)) === null || _a === void 0 ? void 0 : _a.resolve(res);
package/lib/client.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@delight-rpc/child-process",
3
- "version": "0.7.1",
3
+ "version": "0.7.2",
4
4
  "description": "",
5
5
  "keywords": [],
6
6
  "files": [
package/src/client.ts CHANGED
@@ -17,7 +17,8 @@ export function createClient<IAPI extends object>(
17
17
  ): [client: DelightRPC.ClientProxy<IAPI>, close: () => void] {
18
18
  const pendings: Map<string, Deferred<IResponse<unknown>>> = new Map()
19
19
 
20
- process.on('message', handler)
20
+ process.on('message', handleMessage)
21
+ process.on('disconnect', abortAllPendings)
21
22
 
22
23
  const client = DelightRPC.createClient<IAPI>(
23
24
  async function send(request, signal) {
@@ -49,16 +50,21 @@ export function createClient<IAPI extends object>(
49
50
 
50
51
  return [client, close]
51
52
 
52
- function close() {
53
- process.off('message', handler)
53
+ function close(): void {
54
+ process.off('message', handleMessage)
55
+ process.off('disconnect', abortAllPendings)
56
+ abortAllPendings()
57
+ }
54
58
 
55
- for (const [key, deferred] of pendings.entries()) {
59
+ function abortAllPendings(): void {
60
+ for (const deferred of pendings.values()) {
56
61
  deferred.reject(new ClientClosed())
57
- pendings.delete(key)
58
62
  }
63
+
64
+ pendings.clear()
59
65
  }
60
66
 
61
- function handler(res: unknown): void {
67
+ function handleMessage(res: unknown): void {
62
68
  if (DelightRPC.isResult(res) || DelightRPC.isError(res)) {
63
69
  pendings.get(res.id)?.resolve(res)
64
70
  }
@@ -78,7 +84,8 @@ export function createBatchClient<DataType>(
78
84
  , Deferred<IError | IBatchResponse<unknown>>
79
85
  > = new Map()
80
86
 
81
- process.on('message', handler)
87
+ process.on('message', handleMessage)
88
+ process.on('disconnect', abortAllPendings)
82
89
 
83
90
  const client = new DelightRPC.BatchClient(
84
91
  async function send(request: IBatchRequest<unknown>) {
@@ -111,16 +118,21 @@ export function createBatchClient<DataType>(
111
118
 
112
119
  return [client, close]
113
120
 
114
- function close() {
115
- process.off('message', handler)
121
+ function close(): void {
122
+ process.off('message', handleMessage)
123
+ process.off('disconnect', abortAllPendings)
124
+ abortAllPendings()
125
+ }
116
126
 
117
- for (const [key, deferred] of pendings.entries()) {
127
+ function abortAllPendings(): void {
128
+ for (const deferred of pendings.values()) {
118
129
  deferred.reject(new ClientClosed())
119
- pendings.delete(key)
120
130
  }
131
+
132
+ pendings.clear()
121
133
  }
122
134
 
123
- function handler(res: unknown): void {
135
+ function handleMessage(res: unknown): void {
124
136
  if (DelightRPC.isError(res) || DelightRPC.isBatchResponse(res)) {
125
137
  pendings.get(res.id)?.resolve(res)
126
138
  }