@prismicio/simulator 0.1.4 → 0.2.0-pr.22.b846d30

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 (185) hide show
  1. package/README.md +7 -18
  2. package/dist/SimulatorAPI.cjs +36 -46
  3. package/dist/SimulatorAPI.cjs.map +1 -1
  4. package/dist/SimulatorAPI.d.cts +18 -0
  5. package/dist/SimulatorAPI.d.cts.map +1 -0
  6. package/dist/SimulatorAPI.d.ts +16 -10
  7. package/dist/SimulatorAPI.d.ts.map +1 -0
  8. package/dist/SimulatorAPI.js +35 -46
  9. package/dist/SimulatorAPI.js.map +1 -1
  10. package/dist/SimulatorClient.cjs +39 -51
  11. package/dist/SimulatorClient.cjs.map +1 -1
  12. package/dist/SimulatorClient.d.cts +16 -0
  13. package/dist/SimulatorClient.d.cts.map +1 -0
  14. package/dist/SimulatorClient.d.ts +15 -9
  15. package/dist/SimulatorClient.d.ts.map +1 -0
  16. package/dist/SimulatorClient.js +39 -52
  17. package/dist/SimulatorClient.js.map +1 -1
  18. package/dist/channel/ChannelEmitter.cjs +109 -143
  19. package/dist/channel/ChannelEmitter.cjs.map +1 -1
  20. package/dist/channel/ChannelEmitter.d.cts +36 -0
  21. package/dist/channel/ChannelEmitter.d.cts.map +1 -0
  22. package/dist/channel/ChannelEmitter.d.ts +34 -36
  23. package/dist/channel/ChannelEmitter.d.ts.map +1 -0
  24. package/dist/channel/ChannelEmitter.js +107 -141
  25. package/dist/channel/ChannelEmitter.js.map +1 -1
  26. package/dist/channel/ChannelNetwork.cjs +80 -109
  27. package/dist/channel/ChannelNetwork.cjs.map +1 -1
  28. package/dist/channel/ChannelNetwork.d.cts +28 -0
  29. package/dist/channel/ChannelNetwork.d.cts.map +1 -0
  30. package/dist/channel/ChannelNetwork.d.ts +25 -21
  31. package/dist/channel/ChannelNetwork.d.ts.map +1 -0
  32. package/dist/channel/ChannelNetwork.js +80 -109
  33. package/dist/channel/ChannelNetwork.js.map +1 -1
  34. package/dist/channel/ChannelReceiver.cjs +68 -92
  35. package/dist/channel/ChannelReceiver.cjs.map +1 -1
  36. package/dist/channel/ChannelReceiver.d.cts +20 -0
  37. package/dist/channel/ChannelReceiver.d.cts.map +1 -0
  38. package/dist/channel/ChannelReceiver.d.ts +18 -18
  39. package/dist/channel/ChannelReceiver.d.ts.map +1 -0
  40. package/dist/channel/ChannelReceiver.js +66 -90
  41. package/dist/channel/ChannelReceiver.js.map +1 -1
  42. package/dist/channel/errors.cjs +40 -46
  43. package/dist/channel/errors.cjs.map +1 -1
  44. package/dist/channel/errors.d.cts +28 -0
  45. package/dist/channel/errors.d.cts.map +1 -0
  46. package/dist/channel/errors.d.ts +22 -19
  47. package/dist/channel/errors.d.ts.map +1 -0
  48. package/dist/channel/errors.js +40 -52
  49. package/dist/channel/errors.js.map +1 -1
  50. package/dist/channel/messages.cjs +47 -43
  51. package/dist/channel/messages.cjs.map +1 -1
  52. package/dist/channel/messages.d.cts +11 -0
  53. package/dist/channel/messages.d.cts.map +1 -0
  54. package/dist/channel/messages.d.ts +11 -10
  55. package/dist/channel/messages.d.ts.map +1 -0
  56. package/dist/channel/messages.js +50 -53
  57. package/dist/channel/messages.js.map +1 -1
  58. package/dist/channel/types.cjs +14 -11
  59. package/dist/channel/types.cjs.map +1 -1
  60. package/dist/channel/types.d.cts +53 -0
  61. package/dist/channel/types.d.cts.map +1 -0
  62. package/dist/channel/types.d.ts +42 -50
  63. package/dist/channel/types.d.ts.map +1 -0
  64. package/dist/channel/types.js +13 -13
  65. package/dist/channel/types.js.map +1 -1
  66. package/dist/globalExtensions.d.cts +15 -0
  67. package/dist/globalExtensions.d.cts.map +1 -0
  68. package/dist/globalExtensions.d.ts +14 -11
  69. package/dist/globalExtensions.d.ts.map +1 -0
  70. package/dist/index.cjs +23 -32
  71. package/dist/index.d.cts +9 -0
  72. package/dist/index.d.ts +9 -8
  73. package/dist/index.js +3 -24
  74. package/dist/kit/SimulatorManager.cjs +103 -137
  75. package/dist/kit/SimulatorManager.cjs.map +1 -1
  76. package/dist/kit/SimulatorManager.d.cts +19 -0
  77. package/dist/kit/SimulatorManager.d.cts.map +1 -0
  78. package/dist/kit/SimulatorManager.d.ts +16 -12
  79. package/dist/kit/SimulatorManager.d.ts.map +1 -0
  80. package/dist/kit/SimulatorManager.js +101 -135
  81. package/dist/kit/SimulatorManager.js.map +1 -1
  82. package/dist/kit/State.cjs +81 -80
  83. package/dist/kit/State.cjs.map +1 -1
  84. package/dist/kit/State.d.cts +29 -0
  85. package/dist/kit/State.d.cts.map +1 -0
  86. package/dist/kit/State.d.ts +26 -22
  87. package/dist/kit/State.d.ts.map +1 -0
  88. package/dist/kit/State.js +80 -79
  89. package/dist/kit/State.js.map +1 -1
  90. package/dist/kit/domHelpers.cjs +24 -37
  91. package/dist/kit/domHelpers.cjs.map +1 -1
  92. package/dist/kit/domHelpers.d.cts +11 -0
  93. package/dist/kit/domHelpers.d.cts.map +1 -0
  94. package/dist/kit/domHelpers.d.ts +10 -8
  95. package/dist/kit/domHelpers.d.ts.map +1 -0
  96. package/dist/kit/domHelpers.js +25 -43
  97. package/dist/kit/domHelpers.js.map +1 -1
  98. package/dist/kit/eventHandlers.cjs +10 -9
  99. package/dist/kit/eventHandlers.cjs.map +1 -1
  100. package/dist/kit/eventHandlers.d.cts +8 -0
  101. package/dist/kit/eventHandlers.d.cts.map +1 -0
  102. package/dist/kit/eventHandlers.d.ts +7 -3
  103. package/dist/kit/eventHandlers.d.ts.map +1 -0
  104. package/dist/kit/eventHandlers.js +11 -11
  105. package/dist/kit/eventHandlers.js.map +1 -1
  106. package/dist/kit/getDefault.cjs +8 -7
  107. package/dist/kit/getDefault.cjs.map +1 -1
  108. package/dist/kit/getDefault.d.cts +10 -0
  109. package/dist/kit/getDefault.d.cts.map +1 -0
  110. package/dist/kit/getDefault.d.ts +10 -8
  111. package/dist/kit/getDefault.d.ts.map +1 -0
  112. package/dist/kit/getDefault.js +9 -10
  113. package/dist/kit/getDefault.js.map +1 -1
  114. package/dist/kit/messages.cjs +7 -24
  115. package/dist/kit/messages.cjs.map +1 -1
  116. package/dist/kit/messages.d.cts +5 -0
  117. package/dist/kit/messages.d.cts.map +1 -0
  118. package/dist/kit/messages.d.ts +5 -1
  119. package/dist/kit/messages.d.ts.map +1 -0
  120. package/dist/kit/messages.js +8 -25
  121. package/dist/kit/messages.js.map +1 -1
  122. package/dist/kit/types.cjs +11 -9
  123. package/dist/kit/types.cjs.map +1 -1
  124. package/dist/kit/types.d.cts +28 -0
  125. package/dist/kit/types.d.cts.map +1 -0
  126. package/dist/kit/types.d.ts +24 -19
  127. package/dist/kit/types.d.ts.map +1 -0
  128. package/dist/kit/types.js +11 -10
  129. package/dist/kit/types.js.map +1 -1
  130. package/dist/kit.cjs +20 -25
  131. package/dist/kit.d.cts +8 -0
  132. package/dist/kit.d.ts +8 -0
  133. package/dist/kit.js +5 -20
  134. package/dist/lib/EventEmitter.cjs +15 -25
  135. package/dist/lib/EventEmitter.cjs.map +1 -1
  136. package/dist/lib/EventEmitter.d.cts +12 -0
  137. package/dist/lib/EventEmitter.d.cts.map +1 -0
  138. package/dist/lib/EventEmitter.d.ts +11 -9
  139. package/dist/lib/EventEmitter.d.ts.map +1 -0
  140. package/dist/lib/EventEmitter.js +16 -26
  141. package/dist/lib/EventEmitter.js.map +1 -1
  142. package/dist/lib/throttle.cjs +20 -21
  143. package/dist/lib/throttle.cjs.map +1 -1
  144. package/dist/lib/throttle.js +21 -22
  145. package/dist/lib/throttle.js.map +1 -1
  146. package/dist/types.cjs +17 -14
  147. package/dist/types.cjs.map +1 -1
  148. package/dist/types.d.cts +39 -0
  149. package/dist/types.d.cts.map +1 -0
  150. package/dist/types.d.ts +32 -27
  151. package/dist/types.d.ts.map +1 -0
  152. package/dist/types.js +16 -16
  153. package/dist/types.js.map +1 -1
  154. package/package.json +44 -87
  155. package/src/SimulatorAPI.ts +26 -40
  156. package/src/SimulatorClient.ts +25 -43
  157. package/src/channel/ChannelEmitter.ts +75 -110
  158. package/src/channel/ChannelNetwork.ts +71 -98
  159. package/src/channel/ChannelReceiver.ts +45 -78
  160. package/src/channel/errors.ts +16 -21
  161. package/src/channel/index.ts +10 -25
  162. package/src/channel/messages.ts +43 -44
  163. package/src/channel/types.ts +51 -67
  164. package/src/globalExtensions.ts +6 -6
  165. package/src/index.ts +8 -16
  166. package/src/kit/SimulatorManager.ts +66 -78
  167. package/src/kit/State.ts +45 -49
  168. package/src/kit/domHelpers.ts +25 -27
  169. package/src/kit/eventHandlers.ts +8 -13
  170. package/src/kit/getDefault.ts +8 -8
  171. package/src/kit/index.ts +8 -12
  172. package/src/kit/messages.ts +5 -6
  173. package/src/kit/types.ts +13 -14
  174. package/src/lib/EventEmitter.ts +10 -16
  175. package/src/lib/__PRODUCTION__.ts +3 -4
  176. package/src/lib/throttle.ts +12 -12
  177. package/src/types.ts +20 -20
  178. package/dist/channel/index.d.ts +0 -10
  179. package/dist/index.cjs.map +0 -1
  180. package/dist/index.js.map +0 -1
  181. package/dist/kit/index.d.ts +0 -8
  182. package/dist/kit.cjs.map +0 -1
  183. package/dist/kit.js.map +0 -1
  184. package/dist/lib/__PRODUCTION__.d.ts +0 -7
  185. package/dist/lib/throttle.d.ts +0 -1
@@ -1,20 +1,9 @@
1
- import {
2
- ExtractErrorResponseMessage,
3
- ExtractSuccessResponseMessage,
4
- RequestMessage,
5
- TransactionsHandlers,
6
- UnknownRequestMessage,
7
- UnknownResponseMessage,
8
- UnknownTransaction,
9
- } from "./types";
10
-
11
1
  import {
12
2
  PortNotSetError,
13
3
  RequestTimeoutError,
14
4
  ResponseError,
15
5
  TooManyConcurrentRequestsError,
16
- } from "./errors";
17
-
6
+ } from "./errors"
18
7
  import {
19
8
  createErrorResponseMessage,
20
9
  createRequestMessage,
@@ -22,133 +11,125 @@ import {
22
11
  isRequestMessage,
23
12
  isSuccessResponseMessage,
24
13
  validateMessage,
25
- } from "./messages";
14
+ } from "./messages"
15
+ import type {
16
+ ExtractErrorResponseMessage,
17
+ ExtractSuccessResponseMessage,
18
+ RequestMessage,
19
+ TransactionsHandlers,
20
+ UnknownRequestMessage,
21
+ UnknownResponseMessage,
22
+ UnknownTransaction,
23
+ } from "./types"
26
24
 
27
25
  export type PostRequestOptions = {
28
- timeout?: number;
29
- };
26
+ timeout?: number
27
+ }
30
28
 
31
29
  export type ChannelNetworkOptions = {
32
- debug: boolean;
33
- maximumRequestConcurrency: number;
34
- defaultTimeout: number;
35
- requestIDPrefix: string;
36
- };
30
+ debug: boolean
31
+ maximumRequestConcurrency: number
32
+ defaultTimeout: number
33
+ requestIDPrefix: string
34
+ }
37
35
 
38
36
  export const channelNetworkDefaultOptions: ChannelNetworkOptions = {
39
37
  debug: false,
40
38
  maximumRequestConcurrency: 20,
41
39
  defaultTimeout: 5000,
42
40
  requestIDPrefix: "channel-",
43
- };
41
+ }
44
42
 
45
43
  export abstract class ChannelNetwork<
46
- TPartnerTransactions extends Record<string, UnknownTransaction> = Record<
47
- string,
48
- never
49
- >,
44
+ TPartnerTransactions extends Record<string, UnknownTransaction> = Record<string, never>,
50
45
  TOptions extends Record<string, unknown> = Record<string, unknown>,
51
46
  > {
52
- public requestHandlers: TransactionsHandlers<TPartnerTransactions>;
53
- public options: ChannelNetworkOptions & TOptions;
47
+ public requestHandlers: TransactionsHandlers<TPartnerTransactions>
48
+ public options: ChannelNetworkOptions & TOptions
54
49
 
55
- private _port: MessagePort | null = null;
50
+ private _port: MessagePort | null = null
56
51
  protected get port(): MessagePort {
57
52
  if (!this._port) {
58
- throw new PortNotSetError();
53
+ throw new PortNotSetError()
59
54
  }
60
55
 
61
- return this._port;
56
+ return this._port
62
57
  }
63
58
  protected set port(port: MessagePort | null) {
64
59
  // Destroy old port
65
60
  if (this._port) {
66
- this._port.onmessage = null;
61
+ this._port.onmessage = null
67
62
  }
68
63
 
69
- this._port = port;
64
+ this._port = port
70
65
  if (this._port) {
71
- this._port.onmessage = this.onMessage.bind(this);
66
+ this._port.onmessage = this.onMessage.bind(this)
72
67
  }
73
68
  }
74
69
 
75
70
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
76
- private _pendingRequests: Map<string, (response: any) => void> = new Map();
71
+ private _pendingRequests: Map<string, (response: any) => void> = new Map()
77
72
 
78
73
  constructor(
79
74
  requestHandlers: TransactionsHandlers<TPartnerTransactions>,
80
75
  options: Partial<ChannelNetworkOptions> & TOptions,
81
76
  ) {
82
- this.requestHandlers = requestHandlers;
83
- this.options = { ...channelNetworkDefaultOptions, ...options };
77
+ this.requestHandlers = requestHandlers
78
+ this.options = { ...channelNetworkDefaultOptions, ...options }
84
79
  }
85
80
 
86
81
  public createRequestMessage<TType extends string = string, TData = undefined>(
87
82
  type: TType,
88
83
  data: TData,
89
84
  ): RequestMessage<TType, TData> {
90
- return createRequestMessage(type, data, this.options.requestIDPrefix);
85
+ return createRequestMessage(type, data, this.options.requestIDPrefix)
91
86
  }
92
87
 
93
88
  protected async onMessage(event: MessageEvent<unknown>): Promise<void> {
94
89
  if (this.options.debug) {
95
90
  // eslint-disable-next-line no-console
96
- console.debug(event.data);
91
+ console.debug(event.data)
97
92
  }
98
93
 
99
94
  try {
100
- const message = validateMessage(event.data);
95
+ const message = validateMessage(event.data)
101
96
 
102
97
  if (isRequestMessage(message)) {
103
98
  if (!this.requestHandlers[message.type]) {
104
- this.postResponse(
105
- createErrorResponseMessage(message.requestID, undefined, 501),
106
- );
99
+ this.postResponse(createErrorResponseMessage(message.requestID, undefined, 501))
107
100
  } else {
108
101
  try {
109
102
  // TODO: Figure out why type cannot be inferred on its own anymore
110
103
  const response = await this.requestHandlers[message.type](message, {
111
- success: createSuccessResponseMessage.bind(
112
- this,
113
- message.requestID,
114
- ) as Parameters<
104
+ success: createSuccessResponseMessage.bind(this, message.requestID) as Parameters<
115
105
  (typeof this.requestHandlers)[string]
116
106
  >[1]["success"],
117
- error: createErrorResponseMessage.bind(
118
- this,
119
- message.requestID,
120
- ) as Parameters<
107
+ error: createErrorResponseMessage.bind(this, message.requestID) as Parameters<
121
108
  (typeof this.requestHandlers)[string]
122
109
  >[1]["error"],
123
- });
110
+ })
124
111
 
125
- this.postResponse(response);
112
+ this.postResponse(response)
126
113
  } catch (error) {
127
- this.postResponse(
128
- createErrorResponseMessage(message.requestID, error, 500),
129
- );
114
+ this.postResponse(createErrorResponseMessage(message.requestID, error, 500))
130
115
  }
131
116
  }
132
117
  } else {
133
118
  if (!this._pendingRequests.has(message.requestID)) {
134
- console.error(
135
- `Unknown request ID received in response: ${JSON.stringify(
136
- message,
137
- )}`,
138
- );
119
+ console.error(`Unknown request ID received in response: ${JSON.stringify(message)}`)
139
120
  } else {
140
121
  // Pending requests are checked in previous statement
141
122
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
142
- this._pendingRequests.get(message.requestID)!(message);
143
- this._pendingRequests.delete(message.requestID);
123
+ this._pendingRequests.get(message.requestID)!(message)
124
+ this._pendingRequests.delete(message.requestID)
144
125
  }
145
126
  }
146
127
  } catch (error) {
147
128
  if (error instanceof TypeError) {
148
- console.warn(error.message);
129
+ console.warn(error.message)
149
130
  } else {
150
131
  // Should not be possible, but who knows :shrug:
151
- throw error;
132
+ throw error
152
133
  }
153
134
  }
154
135
  }
@@ -163,54 +144,46 @@ export abstract class ChannelNetwork<
163
144
  ): Promise<ExtractSuccessResponseMessage<TResponse>> {
164
145
  if (this.options.debug) {
165
146
  // eslint-disable-next-line no-console
166
- console.debug(request);
147
+ console.debug(request)
167
148
  }
168
149
 
169
150
  if (this._pendingRequests.size >= this.options.maximumRequestConcurrency) {
170
- throw new TooManyConcurrentRequestsError(request);
151
+ throw new TooManyConcurrentRequestsError(request)
171
152
  }
172
153
 
173
- return new Promise<ExtractSuccessResponseMessage<TResponse>>(
174
- (resolve, reject) => {
175
- const requestTimeout = setTimeout(() => {
176
- if (this._pendingRequests.has(request.requestID)) {
177
- this._pendingRequests.delete(request.requestID);
178
- }
179
- reject(new RequestTimeoutError(request));
180
- }, options.timeout || this.options.defaultTimeout);
181
-
182
- this._pendingRequests.set(
183
- request.requestID,
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
- );
194
- },
195
- );
196
-
197
- postMessage(request);
198
- },
199
- );
154
+ return new Promise<ExtractSuccessResponseMessage<TResponse>>((resolve, reject) => {
155
+ const requestTimeout = setTimeout(() => {
156
+ if (this._pendingRequests.has(request.requestID)) {
157
+ this._pendingRequests.delete(request.requestID)
158
+ }
159
+ reject(new RequestTimeoutError(request))
160
+ }, options.timeout || this.options.defaultTimeout)
161
+
162
+ this._pendingRequests.set(request.requestID, (response: TResponse): void => {
163
+ clearTimeout(requestTimeout)
164
+
165
+ if (isSuccessResponseMessage(response)) {
166
+ resolve(response as ExtractSuccessResponseMessage<TResponse>)
167
+ } else {
168
+ reject(new ResponseError(response as ExtractErrorResponseMessage<TResponse>))
169
+ }
170
+ })
171
+
172
+ postMessage(request)
173
+ })
200
174
  }
201
175
 
202
176
  protected postResponse<TResponse extends UnknownResponseMessage>(
203
177
  response: TResponse,
204
- postMessage = (response: TResponse): void =>
205
- this.port.postMessage(response),
178
+ postMessage = (response: TResponse): void => this.port.postMessage(response),
206
179
  ): TResponse {
207
180
  if (this.options.debug) {
208
181
  // eslint-disable-next-line no-console
209
- console.debug(response);
182
+ console.debug(response)
210
183
  }
211
184
 
212
- postMessage(response);
185
+ postMessage(response)
213
186
 
214
- return response;
187
+ return response
215
188
  }
216
189
  }
@@ -1,8 +1,15 @@
1
+ import type { ChannelNetworkOptions, PostRequestOptions } from "./ChannelNetwork"
2
+ import { ChannelNetwork } from "./ChannelNetwork"
3
+ import { NotReadyError } from "./errors"
1
4
  import {
5
+ createErrorResponseMessage,
6
+ createSuccessResponseMessage,
7
+ isRequestMessage,
8
+ validateMessage,
9
+ } from "./messages"
10
+ import type {
2
11
  ExtractSuccessResponseMessage,
3
- InternalEmitterRequestType,
4
12
  InternalEmitterTransactions,
5
- InternalReceiverRequestType,
6
13
  RequestMessage,
7
14
  ResponseMessage,
8
15
  SuccessResponseMessage,
@@ -10,72 +17,47 @@ import {
10
17
  UnknownRequestMessage,
11
18
  UnknownResponseMessage,
12
19
  UnknownTransaction,
13
- } from "./types";
14
-
15
- import { NotReadyError } from "./errors";
16
-
17
- import {
18
- ChannelNetwork,
19
- ChannelNetworkOptions,
20
- PostRequestOptions,
21
- } from "./ChannelNetwork";
22
- import {
23
- createErrorResponseMessage,
24
- createSuccessResponseMessage,
25
- isRequestMessage,
26
- validateMessage,
27
- } from "./messages";
20
+ } from "./types"
21
+ import { InternalEmitterRequestType, InternalReceiverRequestType } from "./types"
28
22
 
29
23
  export type ChannelReceiverOptions = {
30
- readyTimeout: number;
31
- };
24
+ readyTimeout: number
25
+ }
32
26
 
33
27
  export const channelReceiverDefaultOptions: ChannelReceiverOptions &
34
28
  Partial<ChannelNetworkOptions> = {
35
29
  readyTimeout: 20000,
36
30
  requestIDPrefix: "receiver-",
37
- };
31
+ }
38
32
 
39
- export type AllChannelReceiverOptions = ChannelReceiverOptions &
40
- ChannelNetworkOptions;
33
+ export type AllChannelReceiverOptions = ChannelReceiverOptions & ChannelNetworkOptions
41
34
 
42
35
  export abstract class ChannelReceiver<
43
- TEmitterTransactions extends Record<string, UnknownTransaction> = Record<
44
- string,
45
- never
46
- >,
36
+ TEmitterTransactions extends Record<string, UnknownTransaction> = Record<string, never>,
47
37
  TOptions extends Record<string, unknown> = Record<string, unknown>,
48
- > extends ChannelNetwork<
49
- TEmitterTransactions,
50
- ChannelReceiverOptions & TOptions
51
- > {
52
- private _ready = false;
38
+ > extends ChannelNetwork<TEmitterTransactions, ChannelReceiverOptions & TOptions> {
39
+ private _ready = false
53
40
 
54
41
  constructor(
55
42
  requestHandlers: TransactionsHandlers<TEmitterTransactions>,
56
43
  options: Partial<AllChannelReceiverOptions> & TOptions,
57
44
  ) {
58
- super(requestHandlers, { ...channelReceiverDefaultOptions, ...options });
45
+ super(requestHandlers, { ...channelReceiverDefaultOptions, ...options })
59
46
 
60
47
  window.addEventListener("message", (event) => {
61
- this._onPublicMessage(event);
62
- });
48
+ this._onPublicMessage(event)
49
+ })
63
50
  }
64
51
 
65
- /**
66
- * Tells the emitter that receiver is ready
67
- */
52
+ /** Tells the emitter that receiver is ready */
68
53
  public async ready(): Promise<SuccessResponseMessage> {
69
54
  if (window.parent === window) {
70
- throw new Error("Receiver is currently not embedded as an iframe");
55
+ throw new Error("Receiver is currently not embedded as an iframe")
71
56
  }
72
57
 
73
- this._ready = false;
58
+ this._ready = false
74
59
 
75
- const request = this.createRequestMessage(
76
- InternalReceiverRequestType.Ready,
77
- undefined,
78
- );
60
+ const request = this.createRequestMessage(InternalReceiverRequestType.Ready, undefined)
79
61
 
80
62
  const response = await this.postRequest<
81
63
  RequestMessage<InternalReceiverRequestType.Ready>,
@@ -83,39 +65,36 @@ export abstract class ChannelReceiver<
83
65
  >(
84
66
  request,
85
67
  (request) => {
86
- window.parent.postMessage(request, "*");
68
+ window.parent.postMessage(request, "*")
87
69
  },
88
70
  {
89
71
  timeout: this.options.readyTimeout,
90
72
  },
91
- );
73
+ )
92
74
 
93
- this._ready = true;
75
+ this._ready = true
94
76
 
95
- return response;
77
+ return response
96
78
  }
97
79
 
98
- /**
99
- * Handles public messages
100
- */
80
+ /** Handles public messages */
101
81
  private _onPublicMessage(event: MessageEvent<unknown>): void {
102
82
  try {
103
- const message = validateMessage(event.data);
83
+ const message = validateMessage(event.data)
104
84
 
105
85
  if (isRequestMessage(message)) {
106
86
  if (this.options.debug) {
107
87
  // eslint-disable-next-line no-console
108
- console.debug(event.data);
88
+ console.debug(event.data)
109
89
  }
110
90
 
111
91
  switch (message.type) {
112
92
  case InternalEmitterRequestType.Connect:
113
93
  // Set port
114
- this.port = event.ports[0];
94
+ this.port = event.ports[0]
115
95
 
116
96
  // Update options
117
- const { data } =
118
- message as InternalEmitterTransactions["connect"]["request"];
97
+ const { data } = message as InternalEmitterTransactions["connect"]["request"]
119
98
  this.options = {
120
99
  ...this.options,
121
100
  ...data,
@@ -123,32 +102,26 @@ export abstract class ChannelReceiver<
123
102
  debug: this.options.debug,
124
103
  requestIDPrefix: this.options.requestIDPrefix,
125
104
  readyTimeout: this.options.readyTimeout,
126
- };
105
+ }
127
106
 
128
- const response = createSuccessResponseMessage(
129
- message.requestID,
130
- undefined,
131
- );
107
+ const response = createSuccessResponseMessage(message.requestID, undefined)
132
108
 
133
- this.postResponse(response);
134
- break;
109
+ this.postResponse(response)
110
+ break
135
111
 
136
112
  default:
137
113
  this.postResponse(
138
114
  createErrorResponseMessage(message.requestID, undefined),
139
115
  (response) => {
140
- (event.source as WindowProxy).postMessage(
141
- response,
142
- event.origin,
143
- );
116
+ ;(event.source as WindowProxy).postMessage(response, event.origin)
144
117
  },
145
- );
146
- break;
118
+ )
119
+ break
147
120
  }
148
121
  } else {
149
122
  // Forward response messages to default message handler if necessary
150
123
  if (!this._ready) {
151
- this.onMessage(event);
124
+ this.onMessage(event)
152
125
  }
153
126
  }
154
127
  } catch (error) {
@@ -156,7 +129,7 @@ export abstract class ChannelReceiver<
156
129
  // Ignore unknown messages
157
130
  } else {
158
131
  // Should not be possible, but who knows :shrug:
159
- throw error;
132
+ throw error
160
133
  }
161
134
  }
162
135
  }
@@ -170,15 +143,9 @@ export abstract class ChannelReceiver<
170
143
  options: PostRequestOptions = {},
171
144
  ): Promise<ExtractSuccessResponseMessage<TResponse>> {
172
145
  if (!this._ready) {
173
- throw new NotReadyError(
174
- "Receiver is not ready, use `ChannelReceiver.ready()` first",
175
- );
146
+ throw new NotReadyError("Receiver is not ready, use `ChannelReceiver.ready()` first")
176
147
  }
177
148
 
178
- return this.postRequest(
179
- this.createRequestMessage(type, data),
180
- undefined,
181
- options,
182
- );
149
+ return this.postRequest(this.createRequestMessage(type, data), undefined, options)
183
150
  }
184
151
  }
@@ -1,53 +1,48 @@
1
- import { UnknownErrorResponseMessage } from ".";
1
+ import type { UnknownErrorResponseMessage } from "."
2
+ import type { UnknownRequestMessage } from "./types"
2
3
 
3
- import { UnknownRequestMessage } from "./types";
4
-
5
- export class ResponseError<
6
- TErrorResponse extends UnknownErrorResponseMessage,
7
- > extends Error {
8
- public response: TErrorResponse;
4
+ export class ResponseError<TErrorResponse extends UnknownErrorResponseMessage> extends Error {
5
+ public response: TErrorResponse
9
6
 
10
7
  constructor(errorResponse: TErrorResponse) {
11
- super(errorResponse.msg);
8
+ super(errorResponse.msg)
12
9
 
13
- this.response = errorResponse;
10
+ this.response = errorResponse
14
11
  }
15
12
  }
16
13
 
17
14
  export class ConnectionTimeoutError extends Error {
18
15
  constructor() {
19
- super("Connection timed out");
16
+ super("Connection timed out")
20
17
  }
21
18
  }
22
19
  export class TooManyConcurrentRequestsError extends Error {
23
- public request: UnknownRequestMessage;
20
+ public request: UnknownRequestMessage
24
21
 
25
22
  constructor(request: UnknownRequestMessage) {
26
- super(`Too many concurrent requests`);
23
+ super(`Too many concurrent requests`)
27
24
 
28
- this.request = request;
25
+ this.request = request
29
26
  }
30
27
  }
31
- export class RequestTimeoutError<
32
- TRequest extends UnknownRequestMessage,
33
- > extends Error {
34
- public request: UnknownRequestMessage;
28
+ export class RequestTimeoutError<TRequest extends UnknownRequestMessage> extends Error {
29
+ public request: UnknownRequestMessage
35
30
 
36
31
  constructor(request: TRequest) {
37
- super(`Request \`${request.requestID}\` timed out`);
32
+ super(`Request \`${request.requestID}\` timed out`)
38
33
 
39
- this.request = request;
34
+ this.request = request
40
35
  }
41
36
  }
42
37
 
43
38
  export class NotReadyError extends Error {}
44
39
  export class PortNotSetError extends Error {
45
40
  constructor() {
46
- super("Port is not set");
41
+ super("Port is not set")
47
42
  }
48
43
  }
49
44
  export class ChannelNotSetError extends Error {
50
45
  constructor() {
51
- super("Channel is not set");
46
+ super("Channel is not set")
52
47
  }
53
48
  }
@@ -1,23 +1,11 @@
1
- export { ChannelNetwork, channelNetworkDefaultOptions } from "./ChannelNetwork";
2
- export type {
3
- PostRequestOptions,
4
- ChannelNetworkOptions,
5
- } from "./ChannelNetwork";
1
+ export { ChannelNetwork, channelNetworkDefaultOptions } from "./ChannelNetwork"
2
+ export type { PostRequestOptions, ChannelNetworkOptions } from "./ChannelNetwork"
6
3
 
7
- export { ChannelEmitter, channelEmitterDefaultOptions } from "./ChannelEmitter";
8
- export type {
9
- ChannelEmitterOptions,
10
- AllChannelEmitterOptions,
11
- } from "./ChannelEmitter";
4
+ export { ChannelEmitter, channelEmitterDefaultOptions } from "./ChannelEmitter"
5
+ export type { ChannelEmitterOptions, AllChannelEmitterOptions } from "./ChannelEmitter"
12
6
 
13
- export {
14
- ChannelReceiver,
15
- channelReceiverDefaultOptions,
16
- } from "./ChannelReceiver";
17
- export type {
18
- ChannelReceiverOptions,
19
- AllChannelReceiverOptions,
20
- } from "./ChannelReceiver";
7
+ export { ChannelReceiver, channelReceiverDefaultOptions } from "./ChannelReceiver"
8
+ export type { ChannelReceiverOptions, AllChannelReceiverOptions } from "./ChannelReceiver"
21
9
 
22
10
  export {
23
11
  createRequestMessage,
@@ -28,7 +16,7 @@ export {
28
16
  isResponseMessage,
29
17
  isSuccessResponseMessage,
30
18
  isErrorResponseMessage,
31
- } from "./messages";
19
+ } from "./messages"
32
20
 
33
21
  export {
34
22
  ResponseError,
@@ -38,12 +26,9 @@ export {
38
26
  NotReadyError,
39
27
  PortNotSetError,
40
28
  ChannelNotSetError,
41
- } from "./errors";
29
+ } from "./errors"
42
30
 
43
- export {
44
- InternalEmitterRequestType,
45
- InternalReceiverRequestType,
46
- } from "./types";
31
+ export { InternalEmitterRequestType, InternalReceiverRequestType } from "./types"
47
32
  export type {
48
33
  // Messages
49
34
  RequestMessage,
@@ -72,4 +57,4 @@ export type {
72
57
  InternalEmitterTransactions,
73
58
  // Receiver
74
59
  InternalReceiverTransactions,
75
- } from "./types";
60
+ } from "./types"