@prismicio/simulator 0.1.4 → 0.2.0-canary.a0bdcb9

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,6 +1,4 @@
1
- import statuses from "statuses";
2
-
3
- import {
1
+ import type {
4
2
  ErrorResponseMessage,
5
3
  RequestMessage,
6
4
  SuccessResponseMessage,
@@ -9,14 +7,21 @@ import {
9
7
  UnknownRequestMessage,
10
8
  UnknownResponseMessage,
11
9
  UnknownSuccessResponseMessage,
12
- } from "./types";
10
+ } from "./types"
11
+
12
+ // Adapted from https://github.com/jshttp/statuses/blob/770a97d931c1bb40ebbfefdbb77f0419601890b5/codes.json
13
+ const statuses = {
14
+ 200: "ok",
15
+ 201: "created",
13
16
 
14
- let requestID = 0;
17
+ 400: "bad request",
18
+ 500: "internal server error",
19
+ 501: "not implemented",
20
+ }
15
21
 
16
- export const createRequestMessage = <
17
- TType extends string = string,
18
- TData = undefined,
19
- >(
22
+ let requestID = 0
23
+
24
+ export const createRequestMessage = <TType extends string = string, TData = undefined>(
20
25
  type: TType,
21
26
  data: TData,
22
27
  prefix = "",
@@ -25,91 +30,85 @@ export const createRequestMessage = <
25
30
  requestID: `${prefix}${requestID++}`,
26
31
  type,
27
32
  data,
28
- };
29
- };
33
+ }
34
+ }
30
35
 
31
36
  export const createSuccessResponseMessage = <TData = undefined>(
32
37
  requestID: string,
33
38
  data: TData,
34
- status: keyof typeof statuses.message = 200,
39
+ status: keyof typeof statuses = 200,
35
40
  ): SuccessResponseMessage<TData> => {
36
41
  if (status >= 400) {
37
42
  throw new TypeError(
38
43
  `Invalid success status code, expected status to be within \`[100;400[\`, got \`${status}\``,
39
- );
44
+ )
40
45
  }
41
46
 
42
47
  return {
43
48
  requestID,
44
49
  status,
45
- msg: statuses.message[status]?.replace(/\.$/, "").toLowerCase() ?? "",
50
+ msg: statuses[status] ?? "",
46
51
  data,
47
- };
48
- };
52
+ }
53
+ }
49
54
 
50
55
  export const createErrorResponseMessage = <TError = undefined>(
51
56
  requestID: string,
52
57
  error: TError,
53
- status: keyof typeof statuses.message = 400,
58
+ status: keyof typeof statuses = 400,
54
59
  ): ErrorResponseMessage<TError> => {
55
60
  if (status < 400) {
56
61
  throw new TypeError(
57
- `Invalid error status code, expected status to be within \`[500;600[\`, got \`${status}\``,
58
- );
62
+ `Invalid error status code, expected status to be within \`[400;600[\`, got \`${status}\``,
63
+ )
59
64
  }
60
65
 
61
66
  return {
62
67
  requestID,
63
68
  status,
64
- msg: statuses.message[status]?.replace(/\.$/, "").toLowerCase() ?? "",
69
+ msg: statuses[status] ?? "",
65
70
  error,
66
- };
67
- };
71
+ }
72
+ }
68
73
 
69
74
  export const validateMessage = (message: unknown): UnknownMessage => {
70
75
  if (typeof message !== "object" || message === null) {
71
76
  throw new TypeError(
72
77
  `Invalid message received, expected message to be of type \`object\`, got \`${typeof message}\``,
73
- );
78
+ )
74
79
  } else if (
75
80
  !Object.keys(message).every((key) =>
76
81
  ["requestID", "type", "data", "status", "msg", "error"].includes(key),
77
82
  )
78
83
  ) {
79
- throw new TypeError(`Invalid message received: ${JSON.stringify(message)}`);
80
- } else if (
81
- typeof (message as Record<string, unknown>).requestID !== "string"
82
- ) {
84
+ throw new TypeError(`Invalid message received: ${JSON.stringify(message)}`)
85
+ } else if (typeof (message as Record<string, unknown>).requestID !== "string") {
83
86
  throw new TypeError(
84
87
  `Invalid message received, expected \`message.requestID\` to be of type \`string\`, got \`${typeof (
85
88
  message as Record<string, unknown>
86
89
  ).id}\``,
87
- );
90
+ )
88
91
  }
89
92
 
90
- return message as UnknownMessage;
91
- };
93
+ return message as UnknownMessage
94
+ }
92
95
 
93
- export const isRequestMessage = (
94
- message: UnknownMessage,
95
- ): message is UnknownRequestMessage => {
96
- return "type" in message;
97
- };
96
+ export const isRequestMessage = (message: UnknownMessage): message is UnknownRequestMessage => {
97
+ return "type" in message
98
+ }
98
99
 
99
- export const isResponseMessage = (
100
- message: UnknownMessage,
101
- ): message is UnknownResponseMessage => {
102
- return !("type" in message);
103
- };
100
+ export const isResponseMessage = (message: UnknownMessage): message is UnknownResponseMessage => {
101
+ return !("type" in message)
102
+ }
104
103
 
105
104
  export const isSuccessResponseMessage = (
106
105
  message: UnknownMessage,
107
106
  ): message is UnknownSuccessResponseMessage => {
108
- return isResponseMessage(message) && !("error" in message);
109
- };
107
+ return isResponseMessage(message) && !("error" in message)
108
+ }
110
109
 
111
110
  export const isErrorResponseMessage = (
112
111
  message: UnknownMessage,
113
112
  ): message is UnknownErrorResponseMessage => {
114
- return isResponseMessage(message) && !("data" in message);
115
- };
113
+ return isResponseMessage(message) && !("data" in message)
114
+ }
@@ -1,111 +1,98 @@
1
1
  // Messages
2
2
  export type MessageBase = {
3
- requestID: string;
4
- };
3
+ requestID: string
4
+ }
5
5
 
6
6
  export type RequestMessage<TType extends string = string, TData = void> = {
7
- type: TType;
8
- data: TData;
9
- } & MessageBase;
7
+ type: TType
8
+ data: TData
9
+ } & MessageBase
10
10
 
11
11
  export type ResponseMessageBase = {
12
- status: number;
13
- msg: string;
14
- } & MessageBase;
12
+ status: number
13
+ msg: string
14
+ } & MessageBase
15
15
 
16
16
  export type SuccessResponseMessage<TData = void> = {
17
- data: TData;
18
- error?: never;
19
- } & ResponseMessageBase;
17
+ data: TData
18
+ error?: never
19
+ } & ResponseMessageBase
20
20
 
21
21
  export type ErrorResponseMessage<TError = unknown> = {
22
- data?: never;
23
- error: unknown | TError;
24
- } & ResponseMessageBase;
22
+ data?: never
23
+ error: unknown | TError
24
+ } & ResponseMessageBase
25
25
 
26
26
  export type ResponseMessage<TData = void, TError = unknown> =
27
27
  | SuccessResponseMessage<TData>
28
- | ErrorResponseMessage<TError>;
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
- export type UnknownRequestMessage = RequestMessage<string, unknown>;
41
+ export type UnknownRequestMessage = RequestMessage<string, unknown>
40
42
 
41
- export type UnknownSuccessResponseMessage = SuccessResponseMessage<unknown>;
43
+ export type UnknownSuccessResponseMessage = SuccessResponseMessage<unknown>
42
44
 
43
- export type UnknownErrorResponseMessage = ErrorResponseMessage<unknown>;
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
- export type UnknownMessage = UnknownRequestMessage | UnknownResponseMessage;
49
+ export type UnknownMessage = UnknownRequestMessage | UnknownResponseMessage
50
50
 
51
51
  // Transactions
52
52
  export type Transaction<
53
53
  TRequest extends UnknownRequestMessage,
54
54
  TResponse extends UnknownResponseMessage = ResponseMessage<void>,
55
55
  > = {
56
- request: TRequest;
57
- response: TResponse;
58
- };
56
+ request: TRequest
57
+ response: TResponse
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
- ) => Promise<ExtractSuccessResponseMessage<TTransaction["response"]>>;
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: {
77
71
  success: (
78
72
  data: ExtractSuccessResponseMessage<TTransaction["response"]>["data"],
79
73
  status?: number,
80
- ) => ExtractSuccessResponseMessage<TTransaction["response"]>;
74
+ ) => ExtractSuccessResponseMessage<TTransaction["response"]>
81
75
  error: (
82
76
  error: ExtractErrorResponseMessage<TTransaction["response"]>["error"],
83
77
  status?: number,
84
- ) => ExtractErrorResponseMessage<TTransaction["response"]>;
78
+ ) => ExtractErrorResponseMessage<TTransaction["response"]>
85
79
  },
86
- ) => Promise<TTransaction["response"]> | TTransaction["response"];
80
+ ) => Promise<TTransaction["response"]> | TTransaction["response"]
87
81
 
88
- export type TransactionsMethods<
89
- TTransactions extends Record<string, UnknownTransaction>,
90
- > = {
91
- [Key in keyof TTransactions]: TransactionMethod<TTransactions[Key]>;
92
- };
82
+ export type TransactionsMethods<TTransactions extends Record<string, UnknownTransaction>> = {
83
+ [Key in keyof TTransactions]: TransactionMethod<TTransactions[Key]>
84
+ }
93
85
 
94
- export type TransactionsHandlers<
95
- TTransactions extends Record<string, UnknownTransaction>,
96
- > = {
97
- [Key in keyof TTransactions]: TransactionHandler<TTransactions[Key]>;
98
- };
86
+ export type TransactionsHandlers<TTransactions extends Record<string, UnknownTransaction>> = {
87
+ [Key in keyof TTransactions]: TransactionHandler<TTransactions[Key]>
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
- export type UnknownTransactionMethod = TransactionMethod<UnknownTransaction>;
93
+ export type UnknownTransactionMethod = TransactionMethod<UnknownTransaction>
107
94
 
108
- export type UnknownTransactionHandler = TransactionHandler<UnknownTransaction>;
95
+ export type UnknownTransactionHandler = TransactionHandler<UnknownTransaction>
109
96
 
110
97
  // Emitter
111
98
  export enum InternalEmitterRequestType {
@@ -118,13 +105,10 @@ 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
- >;
127
- };
110
+ >
111
+ }
128
112
 
129
113
  // Receiver
130
114
  export enum InternalReceiverRequestType {
@@ -134,5 +118,5 @@ export enum InternalReceiverRequestType {
134
118
  export type InternalReceiverTransactions = {
135
119
  [InternalReceiverRequestType.Ready]: Transaction<
136
120
  RequestMessage<InternalReceiverRequestType.Ready>
137
- >;
138
- };
121
+ >
122
+ }
@@ -1,13 +1,13 @@
1
- import { SimulatorAPI } from "./SimulatorAPI";
2
- import { SimulatorClient } from "./SimulatorClient";
1
+ import type { SimulatorAPI } from "./SimulatorAPI"
2
+ import type { SimulatorClient } from "./SimulatorClient"
3
3
 
4
4
  declare global {
5
5
  interface Window {
6
6
  prismic?: {
7
7
  sliceSimulator?: {
8
- api?: SimulatorAPI[];
9
- client?: SimulatorClient[];
10
- };
11
- };
8
+ api?: SimulatorAPI[]
9
+ client?: SimulatorClient[]
10
+ }
11
+ }
12
12
  }
13
13
  }
package/src/index.ts CHANGED
@@ -1,10 +1,7 @@
1
- export {
2
- SimulatorClient,
3
- simulatorClientDefaultOptions,
4
- } from "./SimulatorClient";
1
+ export { SimulatorClient, simulatorClientDefaultOptions } from "./SimulatorClient"
5
2
 
6
- export { SimulatorAPI, simulatorAPIDefaultOptions } from "./SimulatorAPI";
7
- export type { SimulatorAPIOptions } from "./SimulatorAPI";
3
+ export { SimulatorAPI, simulatorAPIDefaultOptions } from "./SimulatorAPI"
4
+ export type { SimulatorAPIOptions } from "./SimulatorAPI"
8
5
 
9
6
  export {
10
7
  // Validators
@@ -21,7 +18,7 @@ export {
21
18
  NotReadyError,
22
19
  PortNotSetError,
23
20
  ChannelNotSetError,
24
- } from "./channel";
21
+ } from "./channel"
25
22
  export type {
26
23
  RequestMessage,
27
24
  ResponseMessage,
@@ -29,14 +26,9 @@ export type {
29
26
  SuccessResponseMessage,
30
27
  AllChannelEmitterOptions,
31
28
  AllChannelReceiverOptions,
32
- } from "./channel";
29
+ } from "./channel"
33
30
 
34
- export { APIRequestType, ClientRequestType } from "./types";
35
- export type {
36
- ActiveSlice,
37
- SliceZoneSize,
38
- APITransactions,
39
- ClientTransactions,
40
- } from "./types";
31
+ export { APIRequestType, ClientRequestType } from "./types"
32
+ export type { ActiveSlice, SliceZoneSize, APITransactions, ClientTransactions } from "./types"
41
33
 
42
- export * from "./globalExtensions";
34
+ export * from "./globalExtensions"
@@ -1,49 +1,42 @@
1
- import type { SliceZone } from "@prismicio/client";
1
+ import type { SliceZone } from "@prismicio/client"
2
2
 
3
- import { throttle } from "../lib/throttle";
4
-
5
- import { ClientRequestType } from "../types";
6
- import { StateEventType } from "./types";
7
-
8
- import { SimulatorAPI } from "../SimulatorAPI";
9
- import { ResponseError } from "../channel";
10
-
11
- import { State } from "./State";
12
- import {
13
- getSimulatorDOM,
14
- getSimulatorRootDOM,
15
- getSliceZoneDOM,
16
- } from "./domHelpers";
17
- import { sliceSimulatorAccessedDirectly } from "./messages";
3
+ import { ResponseError } from "../channel"
4
+ import { throttle } from "../lib/throttle"
5
+ import { SimulatorAPI } from "../SimulatorAPI"
6
+ import { ClientRequestType } from "../types"
7
+ import { getSimulatorDOM, getSimulatorRootDOM, getSliceZoneDOM } from "./domHelpers"
8
+ import { sliceSimulatorAccessedDirectly } from "./messages"
9
+ import { State } from "./State"
10
+ import { StateEventType } from "./types"
18
11
 
19
12
  type ManagerConstructorArgs = {
20
- slices?: SliceZone;
21
- };
13
+ slices?: SliceZone
14
+ }
22
15
 
23
16
  export class SimulatorManager {
24
- public state: State;
25
- private _api: SimulatorAPI | null;
26
- private _initialized: boolean;
17
+ public state: State
18
+ private _api: SimulatorAPI | null
19
+ private _initialized: boolean
27
20
 
28
21
  constructor(args?: ManagerConstructorArgs) {
29
- this.state = new State(args);
30
- this._api = null;
31
- this._initialized = false;
22
+ this.state = new State(args)
23
+ this._api = null
24
+ this._initialized = false
32
25
  }
33
26
 
34
27
  async init(): Promise<void> {
35
28
  if (this._initialized) {
36
- return;
29
+ return
37
30
  } else {
38
- this._initialized = true;
31
+ this._initialized = true
39
32
  }
40
33
 
41
34
  // Init state manager
42
- await this.state.init();
35
+ await this.state.init()
43
36
 
44
37
  // Init API
45
38
  try {
46
- await this._initAPI();
39
+ await this._initAPI()
47
40
  } catch (error) {
48
41
  if (
49
42
  error instanceof Error &&
@@ -51,50 +44,50 @@ export class SimulatorManager {
51
44
  !this.state.slices.length
52
45
  ) {
53
46
  // Catch not embedded error and display message
54
- this.state.message = sliceSimulatorAccessedDirectly;
47
+ this.state.message = sliceSimulatorAccessedDirectly
55
48
  }
56
- console.error(error);
49
+ console.error(error)
57
50
 
58
- return;
51
+ return
59
52
  }
60
53
 
61
54
  // Init listeners
62
- this._initListeners();
55
+ this._initListeners()
63
56
  }
64
57
 
65
58
  private async _initAPI(): Promise<void> {
66
59
  // Register SimulatorAPI request handlers
67
60
  this._api = new SimulatorAPI({
68
61
  [ClientRequestType.SetSliceZone]: (req, res) => {
69
- this.state.setSliceZone(req.data);
62
+ this.state.setSliceZone(req.data)
70
63
 
71
- return res.success();
64
+ return res.success()
72
65
  },
73
66
  [ClientRequestType.ScrollToSlice]: (req, res) => {
74
67
  // Error if `sliceIndex` is invalid
75
68
  if (req.data.sliceIndex < 0) {
76
- return res.error("`sliceIndex` must be > 0", 400);
69
+ return res.error("`sliceIndex` must be > 0", 400)
77
70
  } else if (req.data.sliceIndex >= this.state.slices.length) {
78
71
  return res.error(
79
72
  `\`sliceIndex\` must be < ${this.state.slices.length} (\`<SliceZone />\` current length)`,
80
73
  400,
81
- );
74
+ )
82
75
  }
83
76
 
84
- const $sliceZone = getSliceZoneDOM(this.state.slices.length);
77
+ const $sliceZone = getSliceZoneDOM(this.state.slices.length)
85
78
  if (!$sliceZone) {
86
- return res.error("Failed to find `<SliceZone />`", 500);
79
+ return res.error("Failed to find `<SliceZone />`", 500)
87
80
  }
88
81
 
89
82
  // Destroy existing active slice as we're about to scroll
90
- this.state.activeSlice = null;
83
+ this.state.activeSlice = null
91
84
 
92
- const $slice = $sliceZone.children[req.data.sliceIndex];
85
+ const $slice = $sliceZone.children[req.data.sliceIndex]
93
86
  if (!$slice) {
94
87
  return res.error(
95
88
  `Failed fo find slice at index $\`{req.data.sliceIndex}\` in \`<SliceZone />\``,
96
89
  500,
97
- );
90
+ )
98
91
  }
99
92
 
100
93
  // Scroll to Slice
@@ -102,97 +95,92 @@ export class SimulatorManager {
102
95
  behavior: req.data.behavior,
103
96
  block: req.data.block,
104
97
  inline: req.data.inline,
105
- });
98
+ })
106
99
 
107
100
  // Update active slice after scrolling
108
- this._api?.options.activeSliceAPI &&
109
- setTimeout(this.state.setActiveSlice, 750);
101
+ if (this._api?.options.activeSliceAPI) {
102
+ setTimeout(this.state.setActiveSlice, 750)
103
+ }
110
104
 
111
- return res.success();
105
+ return res.success()
112
106
  },
113
- });
107
+ })
114
108
 
115
109
  // Mark API as ready
116
- await this._api.ready();
110
+ await this._api.ready()
117
111
  }
118
112
 
119
113
  private _initListeners(): void {
120
114
  if (this._api?.options.activeSliceAPI) {
121
115
  // Update active slice on mouse move
122
116
  window.addEventListener("mousemove", () => {
123
- this.state.setActiveSlice();
124
- });
117
+ this.state.setActiveSlice()
118
+ })
125
119
  // Update active slice on events impacting slices rendering
126
120
  window.addEventListener("resize", () => {
127
- this.state.setActiveSlice();
128
- });
121
+ this.state.setActiveSlice()
122
+ })
129
123
  window.addEventListener("mousewheel", () => {
130
- setTimeout(this.state.setActiveSlice, 200);
131
- });
124
+ setTimeout(this.state.setActiveSlice, 200)
125
+ })
132
126
 
133
127
  // Update active slice when slices are set
134
128
  this.state.on(StateEventType.Slices, () => {
135
- this.state.setActiveSlice();
136
- });
129
+ this.state.setActiveSlice()
130
+ })
137
131
  // Send active slices to renderer
138
132
  this.state.on(StateEventType.ActiveSlice, async (activeSlice) => {
139
133
  if (this._api) {
140
134
  try {
141
- await this._api.setActiveSlice(activeSlice);
135
+ await this._api.setActiveSlice(activeSlice)
142
136
  } catch (error) {
143
137
  // Just log bad requests, throw everything else
144
- if (
145
- error instanceof ResponseError &&
146
- error.response.status === 400
147
- ) {
148
- console.error(error.response);
138
+ if (error instanceof ResponseError && error.response.status === 400) {
139
+ console.error(error.response)
149
140
  } else {
150
- throw error;
141
+ throw error
151
142
  }
152
143
  }
153
144
  }
154
- });
145
+ })
155
146
  }
156
147
 
157
148
  if (this._api?.options.sliceZoneSizeAPI) {
158
149
  // Monitor Simulator root node size
159
150
  const resizeObserver = new ResizeObserver(
160
151
  throttle(async (entries) => {
161
- const [entry] = entries;
152
+ const [entry] = entries
162
153
 
163
154
  if (this._api && entry) {
164
155
  try {
165
- await this._api.setSliceZoneSize({ rect: entry.contentRect });
156
+ await this._api.setSliceZoneSize({ rect: entry.contentRect })
166
157
  } catch (error) {
167
158
  // Just log bad requests, throw everything else
168
- if (
169
- error instanceof ResponseError &&
170
- error.response.status === 400
171
- ) {
172
- console.error(error.response);
159
+ if (error instanceof ResponseError && error.response.status === 400) {
160
+ console.error(error.response)
173
161
  } else {
174
- throw error;
162
+ throw error
175
163
  }
176
164
  }
177
165
  }
178
166
  }, 16),
179
- );
167
+ )
180
168
  const observeSimulatorRoot = () => {
181
- const simulatorRootDOM = getSimulatorRootDOM();
182
- resizeObserver.disconnect();
169
+ const simulatorRootDOM = getSimulatorRootDOM()
170
+ resizeObserver.disconnect()
183
171
  if (simulatorRootDOM) {
184
- resizeObserver.observe(simulatorRootDOM);
172
+ resizeObserver.observe(simulatorRootDOM)
185
173
  }
186
- };
174
+ }
187
175
 
188
176
  // Monitor Simulator root node in DOM
189
- const mutationObserver = new MutationObserver(observeSimulatorRoot);
177
+ const mutationObserver = new MutationObserver(observeSimulatorRoot)
190
178
  // We want it to fail if not found
191
179
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
192
180
  mutationObserver.observe(getSimulatorDOM()!, {
193
181
  subtree: false,
194
182
  childList: true,
195
- });
183
+ })
196
184
  }
197
185
  }
198
186
  }