@prismicio/simulator 0.2.0 → 0.2.1

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 (144) hide show
  1. package/dist/SimulatorAPI.cjs +7 -9
  2. package/dist/SimulatorAPI.cjs.map +1 -1
  3. package/dist/SimulatorAPI.d.cts.map +1 -0
  4. package/dist/SimulatorAPI.d.ts.map +1 -0
  5. package/dist/SimulatorAPI.js +6 -8
  6. package/dist/SimulatorAPI.js.map +1 -1
  7. package/dist/SimulatorClient.cjs +7 -9
  8. package/dist/SimulatorClient.cjs.map +1 -1
  9. package/dist/SimulatorClient.d.cts.map +1 -0
  10. package/dist/SimulatorClient.d.ts.map +1 -0
  11. package/dist/SimulatorClient.js +6 -8
  12. package/dist/SimulatorClient.js.map +1 -1
  13. package/dist/channel/ChannelEmitter.cjs +10 -13
  14. package/dist/channel/ChannelEmitter.cjs.map +1 -1
  15. package/dist/channel/ChannelEmitter.d.cts +1 -3
  16. package/dist/channel/ChannelEmitter.d.cts.map +1 -0
  17. package/dist/channel/ChannelEmitter.d.ts +1 -3
  18. package/dist/channel/ChannelEmitter.d.ts.map +1 -0
  19. package/dist/channel/ChannelEmitter.js +6 -9
  20. package/dist/channel/ChannelEmitter.js.map +1 -1
  21. package/dist/channel/ChannelNetwork.cjs +5 -6
  22. package/dist/channel/ChannelNetwork.cjs.map +1 -1
  23. package/dist/channel/ChannelNetwork.d.cts.map +1 -0
  24. package/dist/channel/ChannelNetwork.d.ts.map +1 -0
  25. package/dist/channel/ChannelNetwork.js +3 -4
  26. package/dist/channel/ChannelNetwork.js.map +1 -1
  27. package/dist/channel/ChannelReceiver.cjs +9 -10
  28. package/dist/channel/ChannelReceiver.cjs.map +1 -1
  29. package/dist/channel/ChannelReceiver.d.cts.map +1 -0
  30. package/dist/channel/ChannelReceiver.d.ts.map +1 -0
  31. package/dist/channel/ChannelReceiver.js +5 -6
  32. package/dist/channel/ChannelReceiver.js.map +1 -1
  33. package/dist/channel/errors.cjs +1 -2
  34. package/dist/channel/errors.cjs.map +1 -1
  35. package/dist/channel/errors.d.cts.map +1 -0
  36. package/dist/channel/errors.d.ts.map +1 -0
  37. package/dist/channel/errors.js +1 -1
  38. package/dist/channel/errors.js.map +1 -1
  39. package/dist/channel/messages.cjs +5 -6
  40. package/dist/channel/messages.cjs.map +1 -1
  41. package/dist/channel/messages.d.cts +0 -1
  42. package/dist/channel/messages.d.cts.map +1 -0
  43. package/dist/channel/messages.d.ts +0 -1
  44. package/dist/channel/messages.d.ts.map +1 -0
  45. package/dist/channel/messages.js +5 -5
  46. package/dist/channel/messages.js.map +1 -1
  47. package/dist/channel/types.cjs +7 -8
  48. package/dist/channel/types.cjs.map +1 -1
  49. package/dist/channel/types.d.cts +1 -1
  50. package/dist/channel/types.d.cts.map +1 -0
  51. package/dist/channel/types.d.ts +1 -1
  52. package/dist/channel/types.d.ts.map +1 -0
  53. package/dist/channel/types.js +7 -7
  54. package/dist/channel/types.js.map +1 -1
  55. package/dist/globalExtensions.d.cts +1 -1
  56. package/dist/globalExtensions.d.cts.map +1 -0
  57. package/dist/globalExtensions.d.ts +1 -1
  58. package/dist/globalExtensions.d.ts.map +1 -0
  59. package/dist/index.cjs +7 -7
  60. package/dist/index.d.cts +0 -1
  61. package/dist/index.d.ts +0 -1
  62. package/dist/index.js +2 -3
  63. package/dist/kit/SimulatorManager.cjs +12 -15
  64. package/dist/kit/SimulatorManager.cjs.map +1 -1
  65. package/dist/kit/SimulatorManager.d.cts.map +1 -0
  66. package/dist/kit/SimulatorManager.d.ts.map +1 -0
  67. package/dist/kit/SimulatorManager.js +7 -10
  68. package/dist/kit/SimulatorManager.js.map +1 -1
  69. package/dist/kit/State.cjs +7 -8
  70. package/dist/kit/State.cjs.map +1 -1
  71. package/dist/kit/State.d.cts.map +1 -0
  72. package/dist/kit/State.d.ts.map +1 -0
  73. package/dist/kit/State.js +4 -5
  74. package/dist/kit/State.js.map +1 -1
  75. package/dist/kit/domHelpers.cjs +1 -2
  76. package/dist/kit/domHelpers.cjs.map +1 -1
  77. package/dist/kit/domHelpers.d.cts.map +1 -0
  78. package/dist/kit/domHelpers.d.ts.map +1 -0
  79. package/dist/kit/domHelpers.js +1 -1
  80. package/dist/kit/domHelpers.js.map +1 -1
  81. package/dist/kit/eventHandlers.cjs +1 -2
  82. package/dist/kit/eventHandlers.cjs.map +1 -1
  83. package/dist/kit/eventHandlers.d.cts.map +1 -0
  84. package/dist/kit/eventHandlers.d.ts.map +1 -0
  85. package/dist/kit/eventHandlers.js +1 -1
  86. package/dist/kit/eventHandlers.js.map +1 -1
  87. package/dist/kit/getDefault.cjs +1 -2
  88. package/dist/kit/getDefault.cjs.map +1 -1
  89. package/dist/kit/getDefault.d.cts.map +1 -0
  90. package/dist/kit/getDefault.d.ts.map +1 -0
  91. package/dist/kit/getDefault.js +1 -1
  92. package/dist/kit/messages.cjs +3 -6
  93. package/dist/kit/messages.cjs.map +1 -1
  94. package/dist/kit/messages.d.cts.map +1 -0
  95. package/dist/kit/messages.d.ts.map +1 -0
  96. package/dist/kit/messages.js +3 -5
  97. package/dist/kit/messages.js.map +1 -1
  98. package/dist/kit/types.cjs +6 -7
  99. package/dist/kit/types.cjs.map +1 -1
  100. package/dist/kit/types.d.cts +1 -1
  101. package/dist/kit/types.d.cts.map +1 -0
  102. package/dist/kit/types.d.ts +1 -1
  103. package/dist/kit/types.d.ts.map +1 -0
  104. package/dist/kit/types.js +6 -6
  105. package/dist/kit/types.js.map +1 -1
  106. package/dist/kit.cjs +9 -9
  107. package/dist/kit.js +3 -4
  108. package/dist/lib/EventEmitter.cjs +1 -2
  109. package/dist/lib/EventEmitter.cjs.map +1 -1
  110. package/dist/lib/EventEmitter.d.cts.map +1 -0
  111. package/dist/lib/EventEmitter.d.ts.map +1 -0
  112. package/dist/lib/EventEmitter.js +1 -1
  113. package/dist/lib/EventEmitter.js.map +1 -1
  114. package/dist/lib/throttle.cjs +1 -2
  115. package/dist/lib/throttle.cjs.map +1 -1
  116. package/dist/lib/throttle.js +1 -1
  117. package/dist/types.cjs +10 -11
  118. package/dist/types.cjs.map +1 -1
  119. package/dist/types.d.cts +2 -2
  120. package/dist/types.d.cts.map +1 -0
  121. package/dist/types.d.ts +2 -2
  122. package/dist/types.d.ts.map +1 -0
  123. package/dist/types.js +10 -10
  124. package/dist/types.js.map +1 -1
  125. package/package.json +33 -35
  126. package/src/SimulatorAPI.ts +14 -30
  127. package/src/SimulatorClient.ts +15 -32
  128. package/src/channel/ChannelEmitter.ts +25 -57
  129. package/src/channel/ChannelNetwork.ts +36 -61
  130. package/src/channel/ChannelReceiver.ts +20 -51
  131. package/src/channel/errors.ts +2 -7
  132. package/src/channel/index.ts +5 -20
  133. package/src/channel/messages.ts +4 -13
  134. package/src/channel/types.ts +15 -31
  135. package/src/index.ts +2 -10
  136. package/src/kit/SimulatorManager.ts +7 -20
  137. package/src/kit/State.ts +4 -9
  138. package/src/kit/domHelpers.ts +1 -3
  139. package/src/kit/eventHandlers.ts +2 -7
  140. package/src/kit/index.ts +1 -5
  141. package/src/kit/messages.ts +1 -2
  142. package/src/kit/types.ts +0 -1
  143. package/src/lib/EventEmitter.ts +3 -9
  144. package/src/lib/__PRODUCTION__.ts +1 -2
@@ -1,32 +1,20 @@
1
- import type {
2
- APITransactions,
3
- ClientTransactions} from "./types";
4
- import {
5
- APIRequestType,
6
- ClientRequestType
7
- } from "./types"
8
-
9
- import type { SimulatorAPIOptions } from "./SimulatorAPI"
10
1
  import type {
11
2
  AllChannelEmitterOptions,
12
3
  TransactionMethod,
13
4
  TransactionsHandlers,
14
- TransactionsMethods} from "./channel";
15
- import {
16
- ChannelEmitter
5
+ TransactionsMethods,
17
6
  } from "./channel"
7
+ import { ChannelEmitter } from "./channel"
8
+ import type { SimulatorAPIOptions } from "./SimulatorAPI"
9
+ import type { APITransactions, ClientTransactions } from "./types"
10
+ import { APIRequestType, ClientRequestType } from "./types"
18
11
 
19
- export const simulatorClientDefaultOptions: Partial<AllChannelEmitterOptions> =
20
- {
21
- requestIDPrefix: "client-",
22
- }
12
+ export const simulatorClientDefaultOptions: Partial<AllChannelEmitterOptions> = {
13
+ requestIDPrefix: "client-",
14
+ }
23
15
 
24
16
  export class SimulatorClient
25
- extends ChannelEmitter<
26
- APITransactions,
27
- Partial<AllChannelEmitterOptions>,
28
- SimulatorAPIOptions
29
- >
17
+ extends ChannelEmitter<APITransactions, Partial<AllChannelEmitterOptions>, SimulatorAPIOptions>
30
18
  implements TransactionsMethods<ClientTransactions>
31
19
  {
32
20
  constructor(
@@ -36,8 +24,7 @@ export class SimulatorClient
36
24
  ) {
37
25
  // True if `options.debug` is true or `debug=true` is among query parameters
38
26
  const debug =
39
- options?.debug ||
40
- /[?&]debug=true/i.test(decodeURIComponent(window.location.search))
27
+ options?.debug || /[?&]debug=true/i.test(decodeURIComponent(window.location.search))
41
28
 
42
29
  super(
43
30
  target,
@@ -66,11 +53,10 @@ export class SimulatorClient
66
53
  }
67
54
  }
68
55
 
69
- [ClientRequestType.Ping]: TransactionMethod<
70
- ClientTransactions[ClientRequestType.Ping]
71
- > = async () => {
72
- return await this.postFormattedRequest(ClientRequestType.Ping)
73
- };
56
+ [ClientRequestType.Ping]: TransactionMethod<ClientTransactions[ClientRequestType.Ping]> =
57
+ async () => {
58
+ return await this.postFormattedRequest(ClientRequestType.Ping)
59
+ };
74
60
 
75
61
  [ClientRequestType.SetSliceZone]: TransactionMethod<
76
62
  ClientTransactions[ClientRequestType.SetSliceZone]
@@ -81,9 +67,6 @@ export class SimulatorClient
81
67
  [ClientRequestType.ScrollToSlice]: TransactionMethod<
82
68
  ClientTransactions[ClientRequestType.ScrollToSlice]
83
69
  > = async (data) => {
84
- return await this.postFormattedRequest(
85
- ClientRequestType.ScrollToSlice,
86
- data,
87
- )
70
+ return await this.postFormattedRequest(ClientRequestType.ScrollToSlice, data)
88
71
  }
89
72
  }
@@ -1,3 +1,13 @@
1
+ import type { ChannelNetworkOptions, PostRequestOptions } from "./ChannelNetwork"
2
+ import { ChannelNetwork } from "./ChannelNetwork"
3
+ import type { AllChannelReceiverOptions } from "./ChannelReceiver"
4
+ import { ChannelNotSetError, ConnectionTimeoutError, NotReadyError } from "./errors"
5
+ import {
6
+ createErrorResponseMessage,
7
+ createSuccessResponseMessage,
8
+ isRequestMessage,
9
+ validateMessage,
10
+ } from "./messages"
1
11
  import type {
2
12
  ExtractSuccessResponseMessage,
3
13
  InternalEmitterTransactions,
@@ -5,56 +15,27 @@ import type {
5
15
  TransactionsHandlers,
6
16
  UnknownRequestMessage,
7
17
  UnknownResponseMessage,
8
- UnknownTransaction} from "./types";
9
- import {
10
- InternalEmitterRequestType,
11
- InternalReceiverRequestType
18
+ UnknownTransaction,
12
19
  } from "./types"
13
-
14
- import {
15
- ChannelNotSetError,
16
- ConnectionTimeoutError,
17
- NotReadyError,
18
- } from "./errors"
19
-
20
- import type {
21
- ChannelNetworkOptions,
22
- PostRequestOptions} from "./ChannelNetwork";
23
- import {
24
- ChannelNetwork
25
- } from "./ChannelNetwork"
26
- import type { AllChannelReceiverOptions } from "./ChannelReceiver"
27
- import {
28
- createErrorResponseMessage,
29
- createSuccessResponseMessage,
30
- isRequestMessage,
31
- validateMessage,
32
- } from "./messages"
20
+ import { InternalEmitterRequestType, InternalReceiverRequestType } from "./types"
33
21
 
34
22
  export type ChannelEmitterOptions = {
35
23
  connectTimeout: number
36
24
  }
37
25
 
38
- export const channelEmitterDefaultOptions: ChannelEmitterOptions &
39
- Partial<ChannelNetworkOptions> = {
40
- connectTimeout: 20000,
41
- requestIDPrefix: "emitter-",
42
- }
26
+ export const channelEmitterDefaultOptions: ChannelEmitterOptions & Partial<ChannelNetworkOptions> =
27
+ {
28
+ connectTimeout: 20000,
29
+ requestIDPrefix: "emitter-",
30
+ }
43
31
 
44
- export type AllChannelEmitterOptions = ChannelEmitterOptions &
45
- ChannelNetworkOptions
32
+ export type AllChannelEmitterOptions = ChannelEmitterOptions & ChannelNetworkOptions
46
33
 
47
34
  export abstract class ChannelEmitter<
48
- TReceiverTransactions extends Record<string, UnknownTransaction> = Record<
49
- string,
50
- never
51
- >,
35
+ TReceiverTransactions extends Record<string, UnknownTransaction> = Record<string, never>,
52
36
  TOptions extends Record<string, unknown> = Record<string, unknown>,
53
37
  TReceiverOptions extends Record<string, unknown> = Record<string, unknown>,
54
- > extends ChannelNetwork<
55
- TReceiverTransactions,
56
- ChannelEmitterOptions & TOptions
57
- > {
38
+ > extends ChannelNetwork<TReceiverTransactions, ChannelEmitterOptions & TOptions> {
58
39
  private _target: HTMLIFrameElement
59
40
  private _channel: MessageChannel | null = null
60
41
  protected get channel(): MessageChannel {
@@ -99,9 +80,7 @@ export abstract class ChannelEmitter<
99
80
  * Initiates connection to receiver
100
81
  *
101
82
  * @param receiverOptions - Options to configure the receiver with
102
- * @param newOrigin - Indicates to the emitter that we're connecting to a new
103
- * origin
104
- *
83
+ * @param newOrigin - Indicates to the emitter that we're connecting to a new origin
105
84
  * @returns Success connect message
106
85
  */
107
86
  connect(
@@ -157,9 +136,7 @@ export abstract class ChannelEmitter<
157
136
  >(request, (request) => {
158
137
  // Target content window is checked in previous statement
159
138
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
160
- this._target.contentWindow!.postMessage(request, "*", [
161
- this.channel.port2,
162
- ])
139
+ this._target.contentWindow!.postMessage(request, "*", [this.channel.port2])
163
140
  })
164
141
 
165
142
  // Finish by aknowledging ready
@@ -232,10 +209,7 @@ export abstract class ChannelEmitter<
232
209
  this.postResponse(
233
210
  createErrorResponseMessage(message.requestID, undefined),
234
211
  (response) => {
235
- ;(event.source as WindowProxy).postMessage(
236
- response,
237
- event.origin,
238
- )
212
+ ;(event.source as WindowProxy).postMessage(response, event.origin)
239
213
  },
240
214
  )
241
215
  break
@@ -261,15 +235,9 @@ export abstract class ChannelEmitter<
261
235
  options: PostRequestOptions = {},
262
236
  ): Promise<ExtractSuccessResponseMessage<TResponse>> {
263
237
  if (!this._connected) {
264
- throw new NotReadyError(
265
- "Emitter is not connected, use `ChannelEmitter.connect()` first",
266
- )
238
+ throw new NotReadyError("Emitter is not connected, use `ChannelEmitter.connect()` first")
267
239
  }
268
240
 
269
- return this.postRequest(
270
- this.createRequestMessage(type, data),
271
- undefined,
272
- options,
273
- )
241
+ return this.postRequest(this.createRequestMessage(type, data), undefined, options)
274
242
  }
275
243
  }
@@ -1,20 +1,9 @@
1
- import type {
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
6
  } from "./errors"
17
-
18
7
  import {
19
8
  createErrorResponseMessage,
20
9
  createRequestMessage,
@@ -23,6 +12,15 @@ import {
23
12
  isSuccessResponseMessage,
24
13
  validateMessage,
25
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
26
  timeout?: number
@@ -43,10 +41,7 @@ export const channelNetworkDefaultOptions: ChannelNetworkOptions = {
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
47
  public requestHandlers: TransactionsHandlers<TPartnerTransactions>
@@ -101,41 +96,27 @@ export abstract class ChannelNetwork<
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
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
@@ -170,37 +151,31 @@ export abstract class ChannelNetwork<
170
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
- if (isSuccessResponseMessage(response)) {
188
- resolve(response as ExtractSuccessResponseMessage<TResponse>)
189
- } else {
190
- reject(new ResponseError(response as ExtractErrorResponseMessage<TResponse>))
191
- }
192
- },
193
- )
194
-
195
- postMessage(request)
196
- },
197
- )
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
+ })
198
174
  }
199
175
 
200
176
  protected postResponse<TResponse extends UnknownResponseMessage>(
201
177
  response: TResponse,
202
- postMessage = (response: TResponse): void =>
203
- this.port.postMessage(response),
178
+ postMessage = (response: TResponse): void => this.port.postMessage(response),
204
179
  ): TResponse {
205
180
  if (this.options.debug) {
206
181
  // eslint-disable-next-line no-console
@@ -1,3 +1,12 @@
1
+ import type { ChannelNetworkOptions, PostRequestOptions } from "./ChannelNetwork"
2
+ import { ChannelNetwork } from "./ChannelNetwork"
3
+ import { NotReadyError } from "./errors"
4
+ import {
5
+ createErrorResponseMessage,
6
+ createSuccessResponseMessage,
7
+ isRequestMessage,
8
+ validateMessage,
9
+ } from "./messages"
1
10
  import type {
2
11
  ExtractSuccessResponseMessage,
3
12
  InternalEmitterTransactions,
@@ -7,26 +16,9 @@ import type {
7
16
  TransactionsHandlers,
8
17
  UnknownRequestMessage,
9
18
  UnknownResponseMessage,
10
- UnknownTransaction} from "./types";
11
- import {
12
- InternalEmitterRequestType,
13
- InternalReceiverRequestType
19
+ UnknownTransaction,
14
20
  } from "./types"
15
-
16
- import { NotReadyError } from "./errors"
17
-
18
- import type {
19
- ChannelNetworkOptions,
20
- PostRequestOptions} from "./ChannelNetwork";
21
- import {
22
- ChannelNetwork
23
- } from "./ChannelNetwork"
24
- import {
25
- createErrorResponseMessage,
26
- createSuccessResponseMessage,
27
- isRequestMessage,
28
- validateMessage,
29
- } from "./messages"
21
+ import { InternalEmitterRequestType, InternalReceiverRequestType } from "./types"
30
22
 
31
23
  export type ChannelReceiverOptions = {
32
24
  readyTimeout: number
@@ -38,19 +30,12 @@ export const channelReceiverDefaultOptions: ChannelReceiverOptions &
38
30
  requestIDPrefix: "receiver-",
39
31
  }
40
32
 
41
- export type AllChannelReceiverOptions = ChannelReceiverOptions &
42
- ChannelNetworkOptions
33
+ export type AllChannelReceiverOptions = ChannelReceiverOptions & ChannelNetworkOptions
43
34
 
44
35
  export abstract class ChannelReceiver<
45
- TEmitterTransactions extends Record<string, UnknownTransaction> = Record<
46
- string,
47
- never
48
- >,
36
+ TEmitterTransactions extends Record<string, UnknownTransaction> = Record<string, never>,
49
37
  TOptions extends Record<string, unknown> = Record<string, unknown>,
50
- > extends ChannelNetwork<
51
- TEmitterTransactions,
52
- ChannelReceiverOptions & TOptions
53
- > {
38
+ > extends ChannelNetwork<TEmitterTransactions, ChannelReceiverOptions & TOptions> {
54
39
  private _ready = false
55
40
 
56
41
  constructor(
@@ -72,10 +57,7 @@ export abstract class ChannelReceiver<
72
57
 
73
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>,
@@ -112,8 +94,7 @@ export abstract class ChannelReceiver<
112
94
  this.port = event.ports[0]
113
95
 
114
96
  // Update options
115
- const { data } =
116
- message as InternalEmitterTransactions["connect"]["request"]
97
+ const { data } = message as InternalEmitterTransactions["connect"]["request"]
117
98
  this.options = {
118
99
  ...this.options,
119
100
  ...data,
@@ -123,10 +104,7 @@ export abstract class ChannelReceiver<
123
104
  readyTimeout: this.options.readyTimeout,
124
105
  }
125
106
 
126
- const response = createSuccessResponseMessage(
127
- message.requestID,
128
- undefined,
129
- )
107
+ const response = createSuccessResponseMessage(message.requestID, undefined)
130
108
 
131
109
  this.postResponse(response)
132
110
  break
@@ -135,10 +113,7 @@ export abstract class ChannelReceiver<
135
113
  this.postResponse(
136
114
  createErrorResponseMessage(message.requestID, undefined),
137
115
  (response) => {
138
- ;(event.source as WindowProxy).postMessage(
139
- response,
140
- event.origin,
141
- )
116
+ ;(event.source as WindowProxy).postMessage(response, event.origin)
142
117
  },
143
118
  )
144
119
  break
@@ -168,15 +143,9 @@ export abstract class ChannelReceiver<
168
143
  options: PostRequestOptions = {},
169
144
  ): Promise<ExtractSuccessResponseMessage<TResponse>> {
170
145
  if (!this._ready) {
171
- throw new NotReadyError(
172
- "Receiver is not ready, use `ChannelReceiver.ready()` first",
173
- )
146
+ throw new NotReadyError("Receiver is not ready, use `ChannelReceiver.ready()` first")
174
147
  }
175
148
 
176
- return this.postRequest(
177
- this.createRequestMessage(type, data),
178
- undefined,
179
- options,
180
- )
149
+ return this.postRequest(this.createRequestMessage(type, data), undefined, options)
181
150
  }
182
151
  }
@@ -1,10 +1,7 @@
1
1
  import type { UnknownErrorResponseMessage } from "."
2
-
3
2
  import type { UnknownRequestMessage } from "./types"
4
3
 
5
- export class ResponseError<
6
- TErrorResponse extends UnknownErrorResponseMessage,
7
- > extends Error {
4
+ export class ResponseError<TErrorResponse extends UnknownErrorResponseMessage> extends Error {
8
5
  public response: TErrorResponse
9
6
 
10
7
  constructor(errorResponse: TErrorResponse) {
@@ -28,9 +25,7 @@ export class TooManyConcurrentRequestsError extends Error {
28
25
  this.request = request
29
26
  }
30
27
  }
31
- export class RequestTimeoutError<
32
- TRequest extends UnknownRequestMessage,
33
- > extends Error {
28
+ export class RequestTimeoutError<TRequest extends UnknownRequestMessage> extends Error {
34
29
  public request: UnknownRequestMessage
35
30
 
36
31
  constructor(request: TRequest) {
@@ -1,23 +1,11 @@
1
1
  export { ChannelNetwork, channelNetworkDefaultOptions } from "./ChannelNetwork"
2
- export type {
3
- PostRequestOptions,
4
- ChannelNetworkOptions,
5
- } from "./ChannelNetwork"
2
+ export type { PostRequestOptions, ChannelNetworkOptions } from "./ChannelNetwork"
6
3
 
7
4
  export { ChannelEmitter, channelEmitterDefaultOptions } from "./ChannelEmitter"
8
- export type {
9
- ChannelEmitterOptions,
10
- AllChannelEmitterOptions,
11
- } 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,
@@ -40,10 +28,7 @@ export {
40
28
  ChannelNotSetError,
41
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,
@@ -21,10 +21,7 @@ const statuses = {
21
21
 
22
22
  let requestID = 0
23
23
 
24
- export const createRequestMessage = <
25
- TType extends string = string,
26
- TData = undefined,
27
- >(
24
+ export const createRequestMessage = <TType extends string = string, TData = undefined>(
28
25
  type: TType,
29
26
  data: TData,
30
27
  prefix = "",
@@ -85,9 +82,7 @@ export const validateMessage = (message: unknown): UnknownMessage => {
85
82
  )
86
83
  ) {
87
84
  throw new TypeError(`Invalid message received: ${JSON.stringify(message)}`)
88
- } else if (
89
- typeof (message as Record<string, unknown>).requestID !== "string"
90
- ) {
85
+ } else if (typeof (message as Record<string, unknown>).requestID !== "string") {
91
86
  throw new TypeError(
92
87
  `Invalid message received, expected \`message.requestID\` to be of type \`string\`, got \`${typeof (
93
88
  message as Record<string, unknown>
@@ -98,15 +93,11 @@ export const validateMessage = (message: unknown): UnknownMessage => {
98
93
  return message as UnknownMessage
99
94
  }
100
95
 
101
- export const isRequestMessage = (
102
- message: UnknownMessage,
103
- ): message is UnknownRequestMessage => {
96
+ export const isRequestMessage = (message: UnknownMessage): message is UnknownRequestMessage => {
104
97
  return "type" in message
105
98
  }
106
99
 
107
- export const isResponseMessage = (
108
- message: UnknownMessage,
109
- ): message is UnknownResponseMessage => {
100
+ export const isResponseMessage = (message: UnknownMessage): message is UnknownResponseMessage => {
110
101
  return !("type" in message)
111
102
  }
112
103
 
@@ -27,13 +27,15 @@ export type ResponseMessage<TData = void, TError = unknown> =
27
27
  | SuccessResponseMessage<TData>
28
28
  | ErrorResponseMessage<TError>
29
29
 
30
- export type ExtractSuccessResponseMessage<
31
- TResponse extends UnknownResponseMessage,
32
- > = Extract<TResponse, { error?: never }>
30
+ export type ExtractSuccessResponseMessage<TResponse extends UnknownResponseMessage> = Extract<
31
+ TResponse,
32
+ { error?: never }
33
+ >
33
34
 
34
- export type ExtractErrorResponseMessage<
35
- TResponse extends UnknownResponseMessage,
36
- > = Extract<TResponse, { data?: never }>
35
+ export type ExtractErrorResponseMessage<TResponse extends UnknownResponseMessage> = Extract<
36
+ TResponse,
37
+ { data?: never }
38
+ >
37
39
 
38
40
  // Unknown messages
39
41
  export type UnknownRequestMessage = RequestMessage<string, unknown>
@@ -42,9 +44,7 @@ export type UnknownSuccessResponseMessage = SuccessResponseMessage<unknown>
42
44
 
43
45
  export type UnknownErrorResponseMessage = ErrorResponseMessage<unknown>
44
46
 
45
- export type UnknownResponseMessage =
46
- | UnknownSuccessResponseMessage
47
- | UnknownErrorResponseMessage
47
+ export type UnknownResponseMessage = UnknownSuccessResponseMessage | UnknownErrorResponseMessage
48
48
 
49
49
  export type UnknownMessage = UnknownRequestMessage | UnknownResponseMessage
50
50
 
@@ -58,19 +58,13 @@ export type Transaction<
58
58
  }
59
59
 
60
60
  export type TransactionMethod<
61
- TTransaction extends Transaction<
62
- UnknownRequestMessage,
63
- UnknownResponseMessage
64
- >,
61
+ TTransaction extends Transaction<UnknownRequestMessage, UnknownResponseMessage>,
65
62
  > = (
66
63
  data: TTransaction["request"]["data"],
67
64
  ) => Promise<ExtractSuccessResponseMessage<TTransaction["response"]>>
68
65
 
69
66
  export type TransactionHandler<
70
- TTransaction extends Transaction<
71
- UnknownRequestMessage,
72
- UnknownResponseMessage
73
- >,
67
+ TTransaction extends Transaction<UnknownRequestMessage, UnknownResponseMessage>,
74
68
  > = (
75
69
  request: TTransaction["request"],
76
70
  response: {
@@ -85,23 +79,16 @@ export type TransactionHandler<
85
79
  },
86
80
  ) => Promise<TTransaction["response"]> | TTransaction["response"]
87
81
 
88
- export type TransactionsMethods<
89
- TTransactions extends Record<string, UnknownTransaction>,
90
- > = {
82
+ export type TransactionsMethods<TTransactions extends Record<string, UnknownTransaction>> = {
91
83
  [Key in keyof TTransactions]: TransactionMethod<TTransactions[Key]>
92
84
  }
93
85
 
94
- export type TransactionsHandlers<
95
- TTransactions extends Record<string, UnknownTransaction>,
96
- > = {
86
+ export type TransactionsHandlers<TTransactions extends Record<string, UnknownTransaction>> = {
97
87
  [Key in keyof TTransactions]: TransactionHandler<TTransactions[Key]>
98
88
  }
99
89
 
100
90
  // Unknown transactions
101
- export type UnknownTransaction = Transaction<
102
- UnknownRequestMessage,
103
- UnknownResponseMessage
104
- >
91
+ export type UnknownTransaction = Transaction<UnknownRequestMessage, UnknownResponseMessage>
105
92
 
106
93
  export type UnknownTransactionMethod = TransactionMethod<UnknownTransaction>
107
94
 
@@ -118,10 +105,7 @@ export type InternalEmitterTransactions<
118
105
  [InternalEmitterRequestType.Connect]: Transaction<
119
106
  RequestMessage<
120
107
  InternalEmitterRequestType.Connect,
121
- | Partial<
122
- Omit<TReceiverOptions, "debug" | "requestIDPrefix" | "readyTimeout">
123
- >
124
- | undefined
108
+ Partial<Omit<TReceiverOptions, "debug" | "requestIDPrefix" | "readyTimeout">> | undefined
125
109
  >
126
110
  >
127
111
  }