@prismicio/simulator 0.1.4 → 0.2.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.
Files changed (149) hide show
  1. package/README.md +7 -18
  2. package/dist/SimulatorAPI.cjs +38 -46
  3. package/dist/SimulatorAPI.cjs.map +1 -1
  4. package/dist/SimulatorAPI.d.cts +18 -0
  5. package/dist/SimulatorAPI.d.ts +16 -10
  6. package/dist/SimulatorAPI.js +37 -46
  7. package/dist/SimulatorAPI.js.map +1 -1
  8. package/dist/SimulatorClient.cjs +41 -51
  9. package/dist/SimulatorClient.cjs.map +1 -1
  10. package/dist/SimulatorClient.d.cts +16 -0
  11. package/dist/SimulatorClient.d.ts +15 -9
  12. package/dist/SimulatorClient.js +40 -51
  13. package/dist/SimulatorClient.js.map +1 -1
  14. package/dist/channel/ChannelEmitter.cjs +112 -143
  15. package/dist/channel/ChannelEmitter.cjs.map +1 -1
  16. package/dist/channel/ChannelEmitter.d.cts +38 -0
  17. package/dist/channel/ChannelEmitter.d.ts +36 -36
  18. package/dist/channel/ChannelEmitter.js +110 -141
  19. package/dist/channel/ChannelEmitter.js.map +1 -1
  20. package/dist/channel/ChannelNetwork.cjs +81 -109
  21. package/dist/channel/ChannelNetwork.cjs.map +1 -1
  22. package/dist/channel/ChannelNetwork.d.cts +28 -0
  23. package/dist/channel/ChannelNetwork.d.ts +25 -21
  24. package/dist/channel/ChannelNetwork.js +81 -109
  25. package/dist/channel/ChannelNetwork.js.map +1 -1
  26. package/dist/channel/ChannelReceiver.cjs +69 -92
  27. package/dist/channel/ChannelReceiver.cjs.map +1 -1
  28. package/dist/channel/ChannelReceiver.d.cts +20 -0
  29. package/dist/channel/ChannelReceiver.d.ts +18 -18
  30. package/dist/channel/ChannelReceiver.js +67 -90
  31. package/dist/channel/ChannelReceiver.js.map +1 -1
  32. package/dist/channel/errors.cjs +41 -46
  33. package/dist/channel/errors.cjs.map +1 -1
  34. package/dist/channel/errors.d.cts +28 -0
  35. package/dist/channel/errors.d.ts +22 -19
  36. package/dist/channel/errors.js +40 -52
  37. package/dist/channel/errors.js.map +1 -1
  38. package/dist/channel/messages.cjs +48 -43
  39. package/dist/channel/messages.cjs.map +1 -1
  40. package/dist/channel/messages.d.cts +12 -0
  41. package/dist/channel/messages.d.ts +12 -10
  42. package/dist/channel/messages.js +50 -53
  43. package/dist/channel/messages.js.map +1 -1
  44. package/dist/channel/types.cjs +15 -11
  45. package/dist/channel/types.cjs.map +1 -1
  46. package/dist/channel/types.d.cts +53 -0
  47. package/dist/channel/types.d.ts +42 -50
  48. package/dist/channel/types.js +13 -13
  49. package/dist/channel/types.js.map +1 -1
  50. package/dist/globalExtensions.d.cts +15 -0
  51. package/dist/globalExtensions.d.ts +13 -10
  52. package/dist/index.cjs +24 -33
  53. package/dist/index.d.cts +10 -0
  54. package/dist/index.d.ts +10 -8
  55. package/dist/index.js +5 -25
  56. package/dist/kit/SimulatorManager.cjs +106 -137
  57. package/dist/kit/SimulatorManager.cjs.map +1 -1
  58. package/dist/kit/SimulatorManager.d.cts +19 -0
  59. package/dist/kit/SimulatorManager.d.ts +16 -12
  60. package/dist/kit/SimulatorManager.js +103 -134
  61. package/dist/kit/SimulatorManager.js.map +1 -1
  62. package/dist/kit/State.cjs +82 -80
  63. package/dist/kit/State.cjs.map +1 -1
  64. package/dist/kit/State.d.cts +29 -0
  65. package/dist/kit/State.d.ts +26 -22
  66. package/dist/kit/State.js +80 -78
  67. package/dist/kit/State.js.map +1 -1
  68. package/dist/kit/domHelpers.cjs +25 -37
  69. package/dist/kit/domHelpers.cjs.map +1 -1
  70. package/dist/kit/domHelpers.d.cts +11 -0
  71. package/dist/kit/domHelpers.d.ts +10 -8
  72. package/dist/kit/domHelpers.js +25 -43
  73. package/dist/kit/domHelpers.js.map +1 -1
  74. package/dist/kit/eventHandlers.cjs +11 -9
  75. package/dist/kit/eventHandlers.cjs.map +1 -1
  76. package/dist/kit/eventHandlers.d.cts +8 -0
  77. package/dist/kit/eventHandlers.d.ts +7 -3
  78. package/dist/kit/eventHandlers.js +11 -11
  79. package/dist/kit/eventHandlers.js.map +1 -1
  80. package/dist/kit/getDefault.cjs +9 -7
  81. package/dist/kit/getDefault.cjs.map +1 -1
  82. package/dist/kit/getDefault.d.cts +10 -0
  83. package/dist/kit/getDefault.d.ts +10 -8
  84. package/dist/kit/getDefault.js +9 -10
  85. package/dist/kit/getDefault.js.map +1 -1
  86. package/dist/kit/messages.cjs +8 -22
  87. package/dist/kit/messages.cjs.map +1 -1
  88. package/dist/kit/messages.d.cts +5 -0
  89. package/dist/kit/messages.d.ts +5 -1
  90. package/dist/kit/messages.js +8 -23
  91. package/dist/kit/messages.js.map +1 -1
  92. package/dist/kit/types.cjs +12 -9
  93. package/dist/kit/types.cjs.map +1 -1
  94. package/dist/kit/types.d.cts +28 -0
  95. package/dist/kit/types.d.ts +24 -19
  96. package/dist/kit/types.js +11 -10
  97. package/dist/kit/types.js.map +1 -1
  98. package/dist/kit.cjs +21 -26
  99. package/dist/kit.d.cts +8 -0
  100. package/dist/kit.d.ts +8 -0
  101. package/dist/kit.js +7 -21
  102. package/dist/lib/EventEmitter.cjs +16 -25
  103. package/dist/lib/EventEmitter.cjs.map +1 -1
  104. package/dist/lib/EventEmitter.d.cts +12 -0
  105. package/dist/lib/EventEmitter.d.ts +11 -9
  106. package/dist/lib/EventEmitter.js +16 -26
  107. package/dist/lib/EventEmitter.js.map +1 -1
  108. package/dist/lib/throttle.cjs +21 -21
  109. package/dist/lib/throttle.cjs.map +1 -1
  110. package/dist/lib/throttle.js +21 -22
  111. package/dist/lib/throttle.js.map +1 -1
  112. package/dist/types.cjs +18 -14
  113. package/dist/types.cjs.map +1 -1
  114. package/dist/types.d.cts +39 -0
  115. package/dist/types.d.ts +32 -27
  116. package/dist/types.js +16 -16
  117. package/dist/types.js.map +1 -1
  118. package/package.json +27 -68
  119. package/src/SimulatorAPI.ts +24 -22
  120. package/src/SimulatorClient.ts +24 -25
  121. package/src/channel/ChannelEmitter.ts +71 -74
  122. package/src/channel/ChannelNetwork.ts +53 -55
  123. package/src/channel/ChannelReceiver.ts +46 -48
  124. package/src/channel/errors.ts +14 -14
  125. package/src/channel/index.ts +10 -10
  126. package/src/channel/messages.ts +39 -31
  127. package/src/channel/types.ts +40 -40
  128. package/src/globalExtensions.ts +6 -6
  129. package/src/index.ts +8 -8
  130. package/src/kit/SimulatorManager.ts +64 -63
  131. package/src/kit/State.ts +45 -44
  132. package/src/kit/domHelpers.ts +24 -24
  133. package/src/kit/eventHandlers.ts +6 -6
  134. package/src/kit/getDefault.ts +8 -8
  135. package/src/kit/index.ts +8 -8
  136. package/src/kit/messages.ts +5 -5
  137. package/src/kit/types.ts +13 -13
  138. package/src/lib/EventEmitter.ts +8 -8
  139. package/src/lib/__PRODUCTION__.ts +2 -2
  140. package/src/lib/throttle.ts +12 -12
  141. package/src/types.ts +20 -20
  142. package/dist/channel/index.d.ts +0 -10
  143. package/dist/index.cjs.map +0 -1
  144. package/dist/index.js.map +0 -1
  145. package/dist/kit/index.d.ts +0 -8
  146. package/dist/kit.cjs.map +0 -1
  147. package/dist/kit.js.map +0 -1
  148. package/dist/lib/__PRODUCTION__.d.ts +0 -7
  149. package/dist/lib/throttle.d.ts +0 -1
@@ -1,46 +1,48 @@
1
- import {
1
+ import type {
2
2
  ExtractSuccessResponseMessage,
3
- InternalEmitterRequestType,
4
3
  InternalEmitterTransactions,
5
- InternalReceiverRequestType,
6
4
  SuccessResponseMessage,
7
5
  TransactionsHandlers,
8
6
  UnknownRequestMessage,
9
7
  UnknownResponseMessage,
10
- UnknownTransaction,
11
- } from "./types";
8
+ UnknownTransaction} from "./types";
9
+ import {
10
+ InternalEmitterRequestType,
11
+ InternalReceiverRequestType
12
+ } from "./types"
12
13
 
13
14
  import {
14
15
  ChannelNotSetError,
15
16
  ConnectionTimeoutError,
16
17
  NotReadyError,
17
- } from "./errors";
18
+ } from "./errors"
18
19
 
19
- import {
20
- ChannelNetwork,
20
+ import type {
21
21
  ChannelNetworkOptions,
22
- PostRequestOptions,
23
- } from "./ChannelNetwork";
24
- import { AllChannelReceiverOptions } from "./ChannelReceiver";
22
+ PostRequestOptions} from "./ChannelNetwork";
23
+ import {
24
+ ChannelNetwork
25
+ } from "./ChannelNetwork"
26
+ import type { AllChannelReceiverOptions } from "./ChannelReceiver"
25
27
  import {
26
28
  createErrorResponseMessage,
27
29
  createSuccessResponseMessage,
28
30
  isRequestMessage,
29
31
  validateMessage,
30
- } from "./messages";
32
+ } from "./messages"
31
33
 
32
34
  export type ChannelEmitterOptions = {
33
- connectTimeout: number;
34
- };
35
+ connectTimeout: number
36
+ }
35
37
 
36
38
  export const channelEmitterDefaultOptions: ChannelEmitterOptions &
37
39
  Partial<ChannelNetworkOptions> = {
38
40
  connectTimeout: 20000,
39
41
  requestIDPrefix: "emitter-",
40
- };
42
+ }
41
43
 
42
44
  export type AllChannelEmitterOptions = ChannelEmitterOptions &
43
- ChannelNetworkOptions;
45
+ ChannelNetworkOptions
44
46
 
45
47
  export abstract class ChannelEmitter<
46
48
  TReceiverTransactions extends Record<string, UnknownTransaction> = Record<
@@ -53,30 +55,30 @@ export abstract class ChannelEmitter<
53
55
  TReceiverTransactions,
54
56
  ChannelEmitterOptions & TOptions
55
57
  > {
56
- private _target: HTMLIFrameElement;
57
- private _channel: MessageChannel | null = null;
58
+ private _target: HTMLIFrameElement
59
+ private _channel: MessageChannel | null = null
58
60
  protected get channel(): MessageChannel {
59
61
  if (!this._channel) {
60
- throw new ChannelNotSetError();
62
+ throw new ChannelNotSetError()
61
63
  }
62
64
 
63
- return this._channel;
65
+ return this._channel
64
66
  }
65
67
  protected set channel(channel: MessageChannel | null) {
66
- this._channel = channel;
68
+ this._channel = channel
67
69
 
68
70
  // Update port automatically
69
71
  if (this._channel) {
70
- this.port = this._channel.port1;
72
+ this.port = this._channel.port1
71
73
  } else {
72
- this.port = null;
74
+ this.port = null
73
75
  }
74
76
  }
75
- private _receiverReady = "";
76
- private _receiverReadyCallback: (() => Promise<void>) | null = null;
77
- private _connected = false;
77
+ private _receiverReady = ""
78
+ private _receiverReadyCallback: (() => Promise<void>) | null = null
79
+ private _connected = false
78
80
  public get connected(): boolean {
79
- return this._connected;
81
+ return this._connected
80
82
  }
81
83
 
82
84
  constructor(
@@ -84,13 +86,13 @@ export abstract class ChannelEmitter<
84
86
  requestHandlers: TransactionsHandlers<TReceiverTransactions>,
85
87
  options: Partial<AllChannelEmitterOptions> & TOptions,
86
88
  ) {
87
- super(requestHandlers, { ...channelEmitterDefaultOptions, ...options });
89
+ super(requestHandlers, { ...channelEmitterDefaultOptions, ...options })
88
90
 
89
- this._target = target;
91
+ this._target = target
90
92
 
91
93
  window.addEventListener("message", (event) => {
92
- this._onPublicMessage(event);
93
- });
94
+ this._onPublicMessage(event)
95
+ })
94
96
  }
95
97
 
96
98
  /**
@@ -109,10 +111,10 @@ export abstract class ChannelEmitter<
109
111
  newOrigin = false,
110
112
  ): Promise<SuccessResponseMessage> {
111
113
  // Disconnect first
112
- this.disconnect();
114
+ this.disconnect()
113
115
  // If changing origin we'll need to wait for receiver to be ready again
114
116
  if (newOrigin) {
115
- this._receiverReady = "";
117
+ this._receiverReady = ""
116
118
  }
117
119
 
118
120
  // Handshake promise
@@ -123,28 +125,28 @@ export abstract class ChannelEmitter<
123
125
  () => {
124
126
  // Throw if target doesn't allow access to content window
125
127
  if (!this._target.contentWindow) {
126
- return reject(new Error("Target window is not available"));
128
+ return reject(new Error("Target window is not available"))
127
129
  }
128
130
 
129
131
  const receiverReadyTimeout = setTimeout(() => {
130
- reject(new ConnectionTimeoutError());
131
- }, this.options.connectTimeout);
132
+ reject(new ConnectionTimeoutError())
133
+ }, this.options.connectTimeout)
132
134
 
133
135
  // Connect to target once ready
134
136
  const receiverReadyCallback = async (): Promise<void> => {
135
137
  // Clear receiver ready timeout
136
- clearTimeout(receiverReadyTimeout);
138
+ clearTimeout(receiverReadyTimeout)
137
139
 
138
140
  // Create new message channel (set up port automatically)
139
141
  // This is done here to prevent transferable objects neutering
140
142
  // when calling `connect()` multiple times
141
- this.channel = new MessageChannel();
143
+ this.channel = new MessageChannel()
142
144
 
143
145
  // Conclude handshake by sending message channel port to target
144
146
  const request = this.createRequestMessage(
145
147
  InternalEmitterRequestType.Connect,
146
148
  receiverOptions,
147
- );
149
+ )
148
150
  const response = await this.postRequest<
149
151
  InternalEmitterTransactions<
150
152
  AllChannelReceiverOptions & TReceiverOptions
@@ -157,8 +159,8 @@ export abstract class ChannelEmitter<
157
159
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
158
160
  this._target.contentWindow!.postMessage(request, "*", [
159
161
  this.channel.port2,
160
- ]);
161
- });
162
+ ])
163
+ })
162
164
 
163
165
  // Finish by aknowledging ready
164
166
  this.postResponse(
@@ -166,82 +168,77 @@ export abstract class ChannelEmitter<
166
168
  (response) => {
167
169
  // Target content window is checked in previous statement
168
170
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
169
- this._target.contentWindow!.postMessage(response, "*");
171
+ this._target.contentWindow!.postMessage(response, "*")
170
172
  },
171
- );
173
+ )
172
174
 
173
175
  // If post request succeed, we're connected
174
- this._connected = true;
176
+ this._connected = true
175
177
 
176
- resolve(response);
177
- };
178
+ resolve(response)
179
+ }
178
180
 
179
181
  if (this._receiverReady) {
180
182
  // If receiver is already ready, send port immediately
181
- receiverReadyCallback();
183
+ receiverReadyCallback()
182
184
  } else {
183
185
  // Else wait for receiver to be ready
184
- this._receiverReadyCallback = receiverReadyCallback;
186
+ this._receiverReadyCallback = receiverReadyCallback
185
187
  }
186
188
  },
187
189
  { once: true },
188
- );
189
- });
190
+ )
191
+ })
190
192
  }
191
193
 
192
- /**
193
- * Destroys current connection to receiver if any
194
- */
194
+ /** Destroys current connection to receiver if any */
195
195
  disconnect(): void {
196
- this._connected = false;
197
- this.channel = null;
196
+ this._connected = false
197
+ this.channel = null
198
198
  }
199
199
 
200
- /**
201
- * Handles public messages
202
- */
200
+ /** Handles public messages */
203
201
  private async _onPublicMessage(event: MessageEvent<unknown>): Promise<void> {
204
202
  // Return is event is not from target
205
203
  if (event.source !== this._target.contentWindow) {
206
- return;
204
+ return
207
205
  }
208
206
 
209
207
  try {
210
- const message = validateMessage(event.data);
208
+ const message = validateMessage(event.data)
211
209
 
212
210
  if (isRequestMessage(message)) {
213
211
  if (this.options.debug) {
214
212
  // eslint-disable-next-line no-console
215
- console.debug(event.data);
213
+ console.debug(event.data)
216
214
  }
217
215
 
218
216
  switch (message.type) {
219
217
  case InternalReceiverRequestType.Ready:
220
- this._receiverReady = message.requestID;
218
+ this._receiverReady = message.requestID
221
219
 
222
220
  // If emitter is waiting for receiver to be ready
223
221
  if (this._receiverReadyCallback) {
224
222
  // We don't await the promise directly as we need to clear the callback first
225
- const receiverReadyCallbackPromise =
226
- this._receiverReadyCallback();
223
+ const receiverReadyCallbackPromise = this._receiverReadyCallback()
227
224
 
228
- this._receiverReadyCallback = null;
225
+ this._receiverReadyCallback = null
229
226
 
230
- await receiverReadyCallbackPromise;
227
+ await receiverReadyCallbackPromise
231
228
  }
232
- break;
229
+ break
233
230
 
234
231
  default:
235
232
  this.postResponse(
236
233
  createErrorResponseMessage(message.requestID, undefined),
237
234
  (response) => {
238
- (event.source as WindowProxy).postMessage(
235
+ ;(event.source as WindowProxy).postMessage(
239
236
  response,
240
237
  event.origin,
241
- );
238
+ )
242
239
  },
243
- );
244
- break;
240
+ )
241
+ break
245
242
  }
246
243
  } else {
247
244
  // No response messages are expected on public channel
@@ -250,7 +247,7 @@ export abstract class ChannelEmitter<
250
247
  if (error instanceof TypeError) {
251
248
  // Ignore unknown messages
252
249
  } else {
253
- throw error;
250
+ throw error
254
251
  }
255
252
  }
256
253
  }
@@ -266,13 +263,13 @@ export abstract class ChannelEmitter<
266
263
  if (!this._connected) {
267
264
  throw new NotReadyError(
268
265
  "Emitter is not connected, use `ChannelEmitter.connect()` first",
269
- );
266
+ )
270
267
  }
271
268
 
272
269
  return this.postRequest(
273
270
  this.createRequestMessage(type, data),
274
271
  undefined,
275
272
  options,
276
- );
273
+ )
277
274
  }
278
275
  }
@@ -1,4 +1,4 @@
1
- import {
1
+ import type {
2
2
  ExtractErrorResponseMessage,
3
3
  ExtractSuccessResponseMessage,
4
4
  RequestMessage,
@@ -6,14 +6,14 @@ import {
6
6
  UnknownRequestMessage,
7
7
  UnknownResponseMessage,
8
8
  UnknownTransaction,
9
- } from "./types";
9
+ } from "./types"
10
10
 
11
11
  import {
12
12
  PortNotSetError,
13
13
  RequestTimeoutError,
14
14
  ResponseError,
15
15
  TooManyConcurrentRequestsError,
16
- } from "./errors";
16
+ } from "./errors"
17
17
 
18
18
  import {
19
19
  createErrorResponseMessage,
@@ -22,25 +22,25 @@ import {
22
22
  isRequestMessage,
23
23
  isSuccessResponseMessage,
24
24
  validateMessage,
25
- } from "./messages";
25
+ } from "./messages"
26
26
 
27
27
  export type PostRequestOptions = {
28
- timeout?: number;
29
- };
28
+ timeout?: number
29
+ }
30
30
 
31
31
  export type ChannelNetworkOptions = {
32
- debug: boolean;
33
- maximumRequestConcurrency: number;
34
- defaultTimeout: number;
35
- requestIDPrefix: string;
36
- };
32
+ debug: boolean
33
+ maximumRequestConcurrency: number
34
+ defaultTimeout: number
35
+ requestIDPrefix: string
36
+ }
37
37
 
38
38
  export const channelNetworkDefaultOptions: ChannelNetworkOptions = {
39
39
  debug: false,
40
40
  maximumRequestConcurrency: 20,
41
41
  defaultTimeout: 5000,
42
42
  requestIDPrefix: "channel-",
43
- };
43
+ }
44
44
 
45
45
  export abstract class ChannelNetwork<
46
46
  TPartnerTransactions extends Record<string, UnknownTransaction> = Record<
@@ -49,61 +49,61 @@ export abstract class ChannelNetwork<
49
49
  >,
50
50
  TOptions extends Record<string, unknown> = Record<string, unknown>,
51
51
  > {
52
- public requestHandlers: TransactionsHandlers<TPartnerTransactions>;
53
- public options: ChannelNetworkOptions & TOptions;
52
+ public requestHandlers: TransactionsHandlers<TPartnerTransactions>
53
+ public options: ChannelNetworkOptions & TOptions
54
54
 
55
- private _port: MessagePort | null = null;
55
+ private _port: MessagePort | null = null
56
56
  protected get port(): MessagePort {
57
57
  if (!this._port) {
58
- throw new PortNotSetError();
58
+ throw new PortNotSetError()
59
59
  }
60
60
 
61
- return this._port;
61
+ return this._port
62
62
  }
63
63
  protected set port(port: MessagePort | null) {
64
64
  // Destroy old port
65
65
  if (this._port) {
66
- this._port.onmessage = null;
66
+ this._port.onmessage = null
67
67
  }
68
68
 
69
- this._port = port;
69
+ this._port = port
70
70
  if (this._port) {
71
- this._port.onmessage = this.onMessage.bind(this);
71
+ this._port.onmessage = this.onMessage.bind(this)
72
72
  }
73
73
  }
74
74
 
75
75
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
76
- private _pendingRequests: Map<string, (response: any) => void> = new Map();
76
+ private _pendingRequests: Map<string, (response: any) => void> = new Map()
77
77
 
78
78
  constructor(
79
79
  requestHandlers: TransactionsHandlers<TPartnerTransactions>,
80
80
  options: Partial<ChannelNetworkOptions> & TOptions,
81
81
  ) {
82
- this.requestHandlers = requestHandlers;
83
- this.options = { ...channelNetworkDefaultOptions, ...options };
82
+ this.requestHandlers = requestHandlers
83
+ this.options = { ...channelNetworkDefaultOptions, ...options }
84
84
  }
85
85
 
86
86
  public createRequestMessage<TType extends string = string, TData = undefined>(
87
87
  type: TType,
88
88
  data: TData,
89
89
  ): RequestMessage<TType, TData> {
90
- return createRequestMessage(type, data, this.options.requestIDPrefix);
90
+ return createRequestMessage(type, data, this.options.requestIDPrefix)
91
91
  }
92
92
 
93
93
  protected async onMessage(event: MessageEvent<unknown>): Promise<void> {
94
94
  if (this.options.debug) {
95
95
  // eslint-disable-next-line no-console
96
- console.debug(event.data);
96
+ console.debug(event.data)
97
97
  }
98
98
 
99
99
  try {
100
- const message = validateMessage(event.data);
100
+ const message = validateMessage(event.data)
101
101
 
102
102
  if (isRequestMessage(message)) {
103
103
  if (!this.requestHandlers[message.type]) {
104
104
  this.postResponse(
105
105
  createErrorResponseMessage(message.requestID, undefined, 501),
106
- );
106
+ )
107
107
  } else {
108
108
  try {
109
109
  // TODO: Figure out why type cannot be inferred on its own anymore
@@ -120,13 +120,13 @@ export abstract class ChannelNetwork<
120
120
  ) as Parameters<
121
121
  (typeof this.requestHandlers)[string]
122
122
  >[1]["error"],
123
- });
123
+ })
124
124
 
125
- this.postResponse(response);
125
+ this.postResponse(response)
126
126
  } catch (error) {
127
127
  this.postResponse(
128
128
  createErrorResponseMessage(message.requestID, error, 500),
129
- );
129
+ )
130
130
  }
131
131
  }
132
132
  } else {
@@ -135,20 +135,20 @@ export abstract class ChannelNetwork<
135
135
  `Unknown request ID received in response: ${JSON.stringify(
136
136
  message,
137
137
  )}`,
138
- );
138
+ )
139
139
  } else {
140
140
  // Pending requests are checked in previous statement
141
141
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
142
- this._pendingRequests.get(message.requestID)!(message);
143
- this._pendingRequests.delete(message.requestID);
142
+ this._pendingRequests.get(message.requestID)!(message)
143
+ this._pendingRequests.delete(message.requestID)
144
144
  }
145
145
  }
146
146
  } catch (error) {
147
147
  if (error instanceof TypeError) {
148
- console.warn(error.message);
148
+ console.warn(error.message)
149
149
  } else {
150
150
  // Should not be possible, but who knows :shrug:
151
- throw error;
151
+ throw error
152
152
  }
153
153
  }
154
154
  }
@@ -163,40 +163,38 @@ export abstract class ChannelNetwork<
163
163
  ): Promise<ExtractSuccessResponseMessage<TResponse>> {
164
164
  if (this.options.debug) {
165
165
  // eslint-disable-next-line no-console
166
- console.debug(request);
166
+ console.debug(request)
167
167
  }
168
168
 
169
169
  if (this._pendingRequests.size >= this.options.maximumRequestConcurrency) {
170
- throw new TooManyConcurrentRequestsError(request);
170
+ throw new TooManyConcurrentRequestsError(request)
171
171
  }
172
172
 
173
173
  return new Promise<ExtractSuccessResponseMessage<TResponse>>(
174
174
  (resolve, reject) => {
175
175
  const requestTimeout = setTimeout(() => {
176
176
  if (this._pendingRequests.has(request.requestID)) {
177
- this._pendingRequests.delete(request.requestID);
177
+ this._pendingRequests.delete(request.requestID)
178
178
  }
179
- reject(new RequestTimeoutError(request));
180
- }, options.timeout || this.options.defaultTimeout);
179
+ reject(new RequestTimeoutError(request))
180
+ }, options.timeout || this.options.defaultTimeout)
181
181
 
182
182
  this._pendingRequests.set(
183
183
  request.requestID,
184
184
  (response: TResponse): void => {
185
- clearTimeout(requestTimeout);
186
-
187
- isSuccessResponseMessage(response)
188
- ? resolve(response as ExtractSuccessResponseMessage<TResponse>)
189
- : reject(
190
- new ResponseError(
191
- response as ExtractErrorResponseMessage<TResponse>,
192
- ),
193
- );
185
+ clearTimeout(requestTimeout)
186
+
187
+ if (isSuccessResponseMessage(response)) {
188
+ resolve(response as ExtractSuccessResponseMessage<TResponse>)
189
+ } else {
190
+ reject(new ResponseError(response as ExtractErrorResponseMessage<TResponse>))
191
+ }
194
192
  },
195
- );
193
+ )
196
194
 
197
- postMessage(request);
195
+ postMessage(request)
198
196
  },
199
- );
197
+ )
200
198
  }
201
199
 
202
200
  protected postResponse<TResponse extends UnknownResponseMessage>(
@@ -206,11 +204,11 @@ export abstract class ChannelNetwork<
206
204
  ): TResponse {
207
205
  if (this.options.debug) {
208
206
  // eslint-disable-next-line no-console
209
- console.debug(response);
207
+ console.debug(response)
210
208
  }
211
209
 
212
- postMessage(response);
210
+ postMessage(response)
213
211
 
214
- return response;
212
+ return response
215
213
  }
216
214
  }