@sprucelabs/mercury-client 42.0.557 → 42.0.559

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 (141) hide show
  1. package/build/esm/.spruce/errors/errors.types.d.ts +324 -0
  2. package/build/esm/.spruce/errors/errors.types.js +1 -0
  3. package/build/esm/.spruce/errors/options.types.d.ts +40 -0
  4. package/build/esm/.spruce/errors/options.types.js +1 -0
  5. package/build/esm/clients/MercuryClientFactory.d.ts +26 -0
  6. package/build/esm/clients/MercuryClientFactory.js +96 -0
  7. package/build/esm/clients/MercurySocketIoClient.d.ts +89 -0
  8. package/build/esm/clients/MercurySocketIoClient.js +605 -0
  9. package/build/esm/clients/MercuryTestClient.d.ts +57 -0
  10. package/build/esm/clients/MercuryTestClient.js +389 -0
  11. package/build/esm/clients/MutableContractClient.d.ts +10 -0
  12. package/build/esm/clients/MutableContractClient.js +43 -0
  13. package/build/esm/clients/statusChangePayloadSchema.d.ts +103 -0
  14. package/build/esm/clients/statusChangePayloadSchema.js +45 -0
  15. package/build/esm/constants.d.ts +1 -0
  16. package/build/esm/constants.js +1 -0
  17. package/build/esm/errors/SpruceError.d.ts +5 -0
  18. package/build/esm/errors/SpruceError.js +66 -0
  19. package/build/esm/errors/connectionFailed.builder.d.ts +16 -0
  20. package/build/esm/errors/connectionFailed.builder.js +16 -0
  21. package/build/esm/errors/invalidEventSignature.builder.d.ts +15 -0
  22. package/build/esm/errors/invalidEventSignature.builder.js +15 -0
  23. package/build/esm/errors/invalidPayload.builder.d.ts +12 -0
  24. package/build/esm/errors/invalidPayload.builder.js +12 -0
  25. package/build/esm/errors/invalidProtocol.builder.d.ts +12 -0
  26. package/build/esm/errors/invalidProtocol.builder.js +12 -0
  27. package/build/esm/errors/missingTestCacheDir.builder.d.ts +7 -0
  28. package/build/esm/errors/missingTestCacheDir.builder.js +7 -0
  29. package/build/esm/errors/mustCreateEvent.builder.d.ts +11 -0
  30. package/build/esm/errors/mustCreateEvent.builder.js +11 -0
  31. package/build/esm/errors/mustHandleLocally.builder.d.ts +11 -0
  32. package/build/esm/errors/mustHandleLocally.builder.js +11 -0
  33. package/build/esm/errors/notConnected.builder.d.ts +16 -0
  34. package/build/esm/errors/notConnected.builder.js +16 -0
  35. package/build/esm/errors/timeout.builder.d.ts +22 -0
  36. package/build/esm/errors/timeout.builder.js +22 -0
  37. package/build/esm/errors/unauthorizedAccess.builder.d.ts +57 -0
  38. package/build/esm/errors/unauthorizedAccess.builder.js +39 -0
  39. package/build/esm/errors/unexpectedPayload.builder.d.ts +12 -0
  40. package/build/esm/errors/unexpectedPayload.builder.js +12 -0
  41. package/build/esm/errors/unknownError.builder.d.ts +6 -0
  42. package/build/esm/errors/unknownError.builder.js +6 -0
  43. package/build/esm/index.d.ts +6 -0
  44. package/build/esm/index.js +6 -0
  45. package/build/esm/tests/AbstractClientTest.d.ts +31 -0
  46. package/build/esm/tests/AbstractClientTest.js +212 -0
  47. package/build/esm/tests/constants.d.ts +9 -0
  48. package/build/esm/tests/constants.js +11 -0
  49. package/build/esm/types/client.types.d.ts +30 -0
  50. package/build/esm/types/client.types.js +1 -0
  51. package/build/esm/utilities/socketIoEventUtil.utility.d.ts +5 -0
  52. package/build/esm/utilities/socketIoEventUtil.utility.js +9 -0
  53. package/package.json +17 -16
  54. package/build/.spruce/errors/errors.types.js.map +0 -1
  55. package/build/.spruce/errors/mercuryClient/connectionFailed.schema.js.map +0 -1
  56. package/build/.spruce/errors/mercuryClient/invalidEventSignature.schema.js.map +0 -1
  57. package/build/.spruce/errors/mercuryClient/invalidPayload.schema.js.map +0 -1
  58. package/build/.spruce/errors/mercuryClient/invalidProtocol.schema.js.map +0 -1
  59. package/build/.spruce/errors/mercuryClient/missingTestCacheDir.schema.js.map +0 -1
  60. package/build/.spruce/errors/mercuryClient/mustCreateEvent.schema.js.map +0 -1
  61. package/build/.spruce/errors/mercuryClient/mustHandleLocally.schema.js.map +0 -1
  62. package/build/.spruce/errors/mercuryClient/notConnected.schema.js.map +0 -1
  63. package/build/.spruce/errors/mercuryClient/timeout.schema.js.map +0 -1
  64. package/build/.spruce/errors/mercuryClient/unauthorizedAccess.schema.js.map +0 -1
  65. package/build/.spruce/errors/mercuryClient/unauthorizedTarget.schema.js.map +0 -1
  66. package/build/.spruce/errors/mercuryClient/unexpectedPayload.schema.js.map +0 -1
  67. package/build/.spruce/errors/mercuryClient/unknownError.schema.js.map +0 -1
  68. package/build/.spruce/errors/options.types.js.map +0 -1
  69. package/build/.spruce/event-cache.json +0 -1
  70. package/build/.spruce/schemas/fields/fieldClassMap.js.map +0 -1
  71. package/build/.spruce/schemas/fields/fields.types.js.map +0 -1
  72. package/build/.spruce/schemas/schemas.types.js.map +0 -1
  73. package/build/__tests__/behavioral/AuthenticatingAndReauthenticating.test.d.ts +0 -21
  74. package/build/__tests__/behavioral/AuthenticatingAndReauthenticating.test.js +0 -287
  75. package/build/__tests__/behavioral/AuthenticatingAndReauthenticating.test.js.map +0 -1
  76. package/build/__tests__/behavioral/DisablingPermissionChecksWhenEmittingLocally.test.d.ts +0 -7
  77. package/build/__tests__/behavioral/DisablingPermissionChecksWhenEmittingLocally.test.js +0 -49
  78. package/build/__tests__/behavioral/DisablingPermissionChecksWhenEmittingLocally.test.js.map +0 -1
  79. package/build/__tests__/behavioral/EmittingAndFlatteningResponses.test.d.ts +0 -52
  80. package/build/__tests__/behavioral/EmittingAndFlatteningResponses.test.js +0 -123
  81. package/build/__tests__/behavioral/EmittingAndFlatteningResponses.test.js.map +0 -1
  82. package/build/__tests__/behavioral/EmittingConnectionChangeInTests.test.d.ts +0 -9
  83. package/build/__tests__/behavioral/EmittingConnectionChangeInTests.test.js +0 -103
  84. package/build/__tests__/behavioral/EmittingConnectionChangeInTests.test.js.map +0 -1
  85. package/build/__tests__/behavioral/LocallyHandlingAuthenticateDelaysConnect.test.d.ts +0 -7
  86. package/build/__tests__/behavioral/LocallyHandlingAuthenticateDelaysConnect.test.js +0 -91
  87. package/build/__tests__/behavioral/LocallyHandlingAuthenticateDelaysConnect.test.js.map +0 -1
  88. package/build/__tests__/behavioral/MercuryClientFactory.test.d.ts +0 -7
  89. package/build/__tests__/behavioral/MercuryClientFactory.test.js +0 -85
  90. package/build/__tests__/behavioral/MercuryClientFactory.test.js.map +0 -1
  91. package/build/__tests__/behavioral/ProxyingEvents.test.d.ts +0 -11
  92. package/build/__tests__/behavioral/ProxyingEvents.test.js +0 -99
  93. package/build/__tests__/behavioral/ProxyingEvents.test.js.map +0 -1
  94. package/build/__tests__/behavioral/ReconnectingAutomatically.test.d.ts +0 -33
  95. package/build/__tests__/behavioral/ReconnectingAutomatically.test.js +0 -390
  96. package/build/__tests__/behavioral/ReconnectingAutomatically.test.js.map +0 -1
  97. package/build/__tests__/behavioral/RequiringLocalListeners.test.d.ts +0 -7
  98. package/build/__tests__/behavioral/RequiringLocalListeners.test.js +0 -65
  99. package/build/__tests__/behavioral/RequiringLocalListeners.test.js.map +0 -1
  100. package/build/__tests__/behavioral/SettingNamespacesThatMustBeHandledLocally.test.d.ts +0 -9
  101. package/build/__tests__/behavioral/SettingNamespacesThatMustBeHandledLocally.test.js +0 -66
  102. package/build/__tests__/behavioral/SettingNamespacesThatMustBeHandledLocally.test.js.map +0 -1
  103. package/build/__tests__/behavioral/SimulatingEventsForTesting.test.d.ts +0 -51
  104. package/build/__tests__/behavioral/SimulatingEventsForTesting.test.js +0 -821
  105. package/build/__tests__/behavioral/SimulatingEventsForTesting.test.js.map +0 -1
  106. package/build/__tests__/behavioral/TestClientSpeedTests.test.d.ts +0 -7
  107. package/build/__tests__/behavioral/TestClientSpeedTests.test.js +0 -44
  108. package/build/__tests__/behavioral/TestClientSpeedTests.test.js.map +0 -1
  109. package/build/__tests__/behavioral/TestingWithDefaultContracts.test.d.ts +0 -7
  110. package/build/__tests__/behavioral/TestingWithDefaultContracts.test.js +0 -56
  111. package/build/__tests__/behavioral/TestingWithDefaultContracts.test.js.map +0 -1
  112. package/build/__tests__/behavioral/TurningOffAListener.test.d.ts +0 -16
  113. package/build/__tests__/behavioral/TurningOffAListener.test.js +0 -126
  114. package/build/__tests__/behavioral/TurningOffAListener.test.js.map +0 -1
  115. package/build/__tests__/behavioral/UsingMercuryClient.test.d.ts +0 -45
  116. package/build/__tests__/behavioral/UsingMercuryClient.test.js +0 -662
  117. package/build/__tests__/behavioral/UsingMercuryClient.test.js.map +0 -1
  118. package/build/clients/MercuryClientFactory.js.map +0 -1
  119. package/build/clients/MercurySocketIoClient.js.map +0 -1
  120. package/build/clients/MercuryTestClient.js.map +0 -1
  121. package/build/clients/MutableContractClient.js.map +0 -1
  122. package/build/clients/statusChangePayloadSchema.js.map +0 -1
  123. package/build/constants.js.map +0 -1
  124. package/build/errors/SpruceError.js.map +0 -1
  125. package/build/errors/connectionFailed.builder.js.map +0 -1
  126. package/build/errors/invalidEventSignature.builder.js.map +0 -1
  127. package/build/errors/invalidPayload.builder.js.map +0 -1
  128. package/build/errors/invalidProtocol.builder.js.map +0 -1
  129. package/build/errors/missingTestCacheDir.builder.js.map +0 -1
  130. package/build/errors/mustCreateEvent.builder.js.map +0 -1
  131. package/build/errors/mustHandleLocally.builder.js.map +0 -1
  132. package/build/errors/notConnected.builder.js.map +0 -1
  133. package/build/errors/timeout.builder.js.map +0 -1
  134. package/build/errors/unauthorizedAccess.builder.js.map +0 -1
  135. package/build/errors/unexpectedPayload.builder.js.map +0 -1
  136. package/build/errors/unknownError.builder.js.map +0 -1
  137. package/build/index.js.map +0 -1
  138. package/build/tests/AbstractClientTest.js.map +0 -1
  139. package/build/tests/constants.js.map +0 -1
  140. package/build/types/client.types.js.map +0 -1
  141. package/build/utilities/socketIoEventUtil.utility.js.map +0 -1
@@ -0,0 +1,324 @@
1
+ import { default as SchemaEntity } from '@sprucelabs/schema';
2
+ import * as SpruceSchema from '@sprucelabs/schema';
3
+ export declare namespace SpruceErrors.MercuryClient {
4
+ interface UnknownError {
5
+ }
6
+ interface UnknownErrorSchema extends SpruceSchema.Schema {
7
+ id: 'unknownError';
8
+ namespace: 'MercuryClient';
9
+ name: 'Unknown error';
10
+ fields: {};
11
+ }
12
+ type UnknownErrorEntity = SchemaEntity<SpruceErrors.MercuryClient.UnknownErrorSchema>;
13
+ }
14
+ export declare namespace SpruceErrors.MercuryClient {
15
+ interface UnexpectedPayload {
16
+ 'eventName': string;
17
+ }
18
+ interface UnexpectedPayloadSchema extends SpruceSchema.Schema {
19
+ id: 'unexpectedPayload';
20
+ namespace: 'MercuryClient';
21
+ name: 'Unexpected payload';
22
+ fields: {
23
+ /** . */
24
+ 'eventName': {
25
+ type: 'text';
26
+ isRequired: true;
27
+ options: undefined;
28
+ };
29
+ };
30
+ }
31
+ type UnexpectedPayloadEntity = SchemaEntity<SpruceErrors.MercuryClient.UnexpectedPayloadSchema>;
32
+ }
33
+ export declare namespace SpruceErrors.MercuryClient {
34
+ interface UnauthorizedTarget {
35
+ 'locationId'?: string | undefined | null;
36
+ 'personId'?: string | undefined | null;
37
+ 'organizationId'?: string | undefined | null;
38
+ 'skillId'?: string | undefined | null;
39
+ 'roleId'?: string | undefined | null;
40
+ }
41
+ interface UnauthorizedTargetSchema extends SpruceSchema.Schema {
42
+ id: 'unauthorizedTarget';
43
+ namespace: 'MercuryClient';
44
+ name: '';
45
+ fields: {
46
+ /** . */
47
+ 'locationId': {
48
+ type: 'id';
49
+ options: undefined;
50
+ };
51
+ /** . */
52
+ 'personId': {
53
+ type: 'id';
54
+ options: undefined;
55
+ };
56
+ /** . */
57
+ 'organizationId': {
58
+ type: 'id';
59
+ options: undefined;
60
+ };
61
+ /** . */
62
+ 'skillId': {
63
+ type: 'id';
64
+ options: undefined;
65
+ };
66
+ /** . */
67
+ 'roleId': {
68
+ type: 'id';
69
+ options: undefined;
70
+ };
71
+ };
72
+ }
73
+ type UnauthorizedTargetEntity = SchemaEntity<SpruceErrors.MercuryClient.UnauthorizedTargetSchema>;
74
+ }
75
+ export declare namespace SpruceErrors.MercuryClient {
76
+ interface UnauthorizedAccess {
77
+ 'fqen': string;
78
+ 'action': ("emit");
79
+ 'target': SpruceErrors.MercuryClient.UnauthorizedTarget;
80
+ 'permissionContractId': string;
81
+ }
82
+ interface UnauthorizedAccessSchema extends SpruceSchema.Schema {
83
+ id: 'unauthorizedAccess';
84
+ namespace: 'MercuryClient';
85
+ name: 'Unauthorized Access';
86
+ fields: {
87
+ /** . */
88
+ 'fqen': {
89
+ type: 'text';
90
+ isRequired: true;
91
+ options: undefined;
92
+ };
93
+ /** . */
94
+ 'action': {
95
+ type: 'select';
96
+ isRequired: true;
97
+ options: {
98
+ choices: [{
99
+ "value": "emit";
100
+ "label": "emit";
101
+ }];
102
+ };
103
+ };
104
+ /** . */
105
+ 'target': {
106
+ type: 'schema';
107
+ isRequired: true;
108
+ options: {
109
+ schema: SpruceErrors.MercuryClient.UnauthorizedTargetSchema;
110
+ };
111
+ };
112
+ /** . */
113
+ 'permissionContractId': {
114
+ type: 'id';
115
+ isRequired: true;
116
+ options: undefined;
117
+ };
118
+ };
119
+ }
120
+ type UnauthorizedAccessEntity = SchemaEntity<SpruceErrors.MercuryClient.UnauthorizedAccessSchema>;
121
+ }
122
+ export declare namespace SpruceErrors.MercuryClient {
123
+ interface Timeout {
124
+ 'eventName': string;
125
+ 'timeoutMs': number;
126
+ 'isConnected'?: boolean | undefined | null;
127
+ 'totalRetries'?: number | undefined | null;
128
+ }
129
+ interface TimeoutSchema extends SpruceSchema.Schema {
130
+ id: 'timeout';
131
+ namespace: 'MercuryClient';
132
+ name: 'Timeout';
133
+ fields: {
134
+ /** . */
135
+ 'eventName': {
136
+ type: 'text';
137
+ isRequired: true;
138
+ options: undefined;
139
+ };
140
+ /** . */
141
+ 'timeoutMs': {
142
+ type: 'number';
143
+ isRequired: true;
144
+ options: undefined;
145
+ };
146
+ /** . */
147
+ 'isConnected': {
148
+ type: 'boolean';
149
+ options: undefined;
150
+ };
151
+ /** . */
152
+ 'totalRetries': {
153
+ type: 'number';
154
+ options: undefined;
155
+ };
156
+ };
157
+ }
158
+ type TimeoutEntity = SchemaEntity<SpruceErrors.MercuryClient.TimeoutSchema>;
159
+ }
160
+ export declare namespace SpruceErrors.MercuryClient {
161
+ interface NotConnected {
162
+ 'action': string;
163
+ 'fqen': string;
164
+ }
165
+ interface NotConnectedSchema extends SpruceSchema.Schema {
166
+ id: 'notConnected';
167
+ namespace: 'MercuryClient';
168
+ name: 'Not connected';
169
+ fields: {
170
+ /** . */
171
+ 'action': {
172
+ type: 'text';
173
+ isRequired: true;
174
+ options: undefined;
175
+ };
176
+ /** . */
177
+ 'fqen': {
178
+ type: 'id';
179
+ isRequired: true;
180
+ options: undefined;
181
+ };
182
+ };
183
+ }
184
+ type NotConnectedEntity = SchemaEntity<SpruceErrors.MercuryClient.NotConnectedSchema>;
185
+ }
186
+ export declare namespace SpruceErrors.MercuryClient {
187
+ interface MustHandleLocally {
188
+ 'fqen': string;
189
+ }
190
+ interface MustHandleLocallySchema extends SpruceSchema.Schema {
191
+ id: 'mustHandleLocally';
192
+ namespace: 'MercuryClient';
193
+ name: 'Must handle locally';
194
+ fields: {
195
+ /** . */
196
+ 'fqen': {
197
+ type: 'text';
198
+ isRequired: true;
199
+ options: undefined;
200
+ };
201
+ };
202
+ }
203
+ type MustHandleLocallyEntity = SchemaEntity<SpruceErrors.MercuryClient.MustHandleLocallySchema>;
204
+ }
205
+ export declare namespace SpruceErrors.MercuryClient {
206
+ interface MustCreateEvent {
207
+ 'fqen': string;
208
+ }
209
+ interface MustCreateEventSchema extends SpruceSchema.Schema {
210
+ id: 'mustCreateEvent';
211
+ namespace: 'MercuryClient';
212
+ name: 'must create event';
213
+ fields: {
214
+ /** . */
215
+ 'fqen': {
216
+ type: 'text';
217
+ isRequired: true;
218
+ options: undefined;
219
+ };
220
+ };
221
+ }
222
+ type MustCreateEventEntity = SchemaEntity<SpruceErrors.MercuryClient.MustCreateEventSchema>;
223
+ }
224
+ export declare namespace SpruceErrors.MercuryClient {
225
+ interface MissingTestCacheDir {
226
+ }
227
+ interface MissingTestCacheDirSchema extends SpruceSchema.Schema {
228
+ id: 'missingTestCacheDir';
229
+ namespace: 'MercuryClient';
230
+ name: 'Missing test cache dir';
231
+ fields: {};
232
+ }
233
+ type MissingTestCacheDirEntity = SchemaEntity<SpruceErrors.MercuryClient.MissingTestCacheDirSchema>;
234
+ }
235
+ export declare namespace SpruceErrors.MercuryClient {
236
+ interface InvalidProtocol {
237
+ 'uri': string;
238
+ }
239
+ interface InvalidProtocolSchema extends SpruceSchema.Schema {
240
+ id: 'invalidProtocol';
241
+ namespace: 'MercuryClient';
242
+ name: 'Invalid protocol';
243
+ fields: {
244
+ /** . */
245
+ 'uri': {
246
+ type: 'text';
247
+ isRequired: true;
248
+ options: undefined;
249
+ };
250
+ };
251
+ }
252
+ type InvalidProtocolEntity = SchemaEntity<SpruceErrors.MercuryClient.InvalidProtocolSchema>;
253
+ }
254
+ export declare namespace SpruceErrors.MercuryClient {
255
+ interface InvalidPayload {
256
+ 'eventName': string;
257
+ }
258
+ interface InvalidPayloadSchema extends SpruceSchema.Schema {
259
+ id: 'invalidPayload';
260
+ namespace: 'MercuryClient';
261
+ name: 'Invalid payload';
262
+ fields: {
263
+ /** . */
264
+ 'eventName': {
265
+ type: 'text';
266
+ isRequired: true;
267
+ options: undefined;
268
+ };
269
+ };
270
+ }
271
+ type InvalidPayloadEntity = SchemaEntity<SpruceErrors.MercuryClient.InvalidPayloadSchema>;
272
+ }
273
+ export declare namespace SpruceErrors.MercuryClient {
274
+ interface InvalidEventSignature {
275
+ 'fqen': string;
276
+ 'instructions': string;
277
+ }
278
+ interface InvalidEventSignatureSchema extends SpruceSchema.Schema {
279
+ id: 'invalidEventSignature';
280
+ namespace: 'MercuryClient';
281
+ name: 'Invalid event contract';
282
+ fields: {
283
+ /** . */
284
+ 'fqen': {
285
+ type: 'text';
286
+ isRequired: true;
287
+ options: undefined;
288
+ };
289
+ /** . */
290
+ 'instructions': {
291
+ type: 'text';
292
+ isRequired: true;
293
+ options: undefined;
294
+ };
295
+ };
296
+ }
297
+ type InvalidEventSignatureEntity = SchemaEntity<SpruceErrors.MercuryClient.InvalidEventSignatureSchema>;
298
+ }
299
+ export declare namespace SpruceErrors.MercuryClient {
300
+ interface ConnectionFailed {
301
+ 'host': string;
302
+ 'statusCode': number;
303
+ }
304
+ interface ConnectionFailedSchema extends SpruceSchema.Schema {
305
+ id: 'connectionFailed';
306
+ namespace: 'MercuryClient';
307
+ name: 'Connection failed';
308
+ fields: {
309
+ /** . */
310
+ 'host': {
311
+ type: 'text';
312
+ isRequired: true;
313
+ options: undefined;
314
+ };
315
+ /** . */
316
+ 'statusCode': {
317
+ type: 'number';
318
+ isRequired: true;
319
+ options: undefined;
320
+ };
321
+ };
322
+ }
323
+ type ConnectionFailedEntity = SchemaEntity<SpruceErrors.MercuryClient.ConnectionFailedSchema>;
324
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,40 @@
1
+ import { SpruceErrors } from "./errors.types";
2
+ import { ErrorOptions as ISpruceErrorOptions } from "@sprucelabs/error";
3
+ export interface UnknownErrorErrorOptions extends SpruceErrors.MercuryClient.UnknownError, ISpruceErrorOptions {
4
+ code: 'UNKNOWN_ERROR';
5
+ }
6
+ export interface UnexpectedPayloadErrorOptions extends SpruceErrors.MercuryClient.UnexpectedPayload, ISpruceErrorOptions {
7
+ code: 'UNEXPECTED_PAYLOAD';
8
+ }
9
+ export interface UnauthorizedAccessErrorOptions extends SpruceErrors.MercuryClient.UnauthorizedAccess, ISpruceErrorOptions {
10
+ code: 'UNAUTHORIZED_ACCESS';
11
+ }
12
+ export interface TimeoutErrorOptions extends SpruceErrors.MercuryClient.Timeout, ISpruceErrorOptions {
13
+ code: 'TIMEOUT';
14
+ }
15
+ export interface NotConnectedErrorOptions extends SpruceErrors.MercuryClient.NotConnected, ISpruceErrorOptions {
16
+ code: 'NOT_CONNECTED';
17
+ }
18
+ export interface MustHandleLocallyErrorOptions extends SpruceErrors.MercuryClient.MustHandleLocally, ISpruceErrorOptions {
19
+ code: 'MUST_HANDLE_LOCALLY';
20
+ }
21
+ export interface MustCreateEventErrorOptions extends SpruceErrors.MercuryClient.MustCreateEvent, ISpruceErrorOptions {
22
+ code: 'MUST_CREATE_EVENT';
23
+ }
24
+ export interface MissingTestCacheDirErrorOptions extends SpruceErrors.MercuryClient.MissingTestCacheDir, ISpruceErrorOptions {
25
+ code: 'MISSING_TEST_CACHE_DIR';
26
+ }
27
+ export interface InvalidProtocolErrorOptions extends SpruceErrors.MercuryClient.InvalidProtocol, ISpruceErrorOptions {
28
+ code: 'INVALID_PROTOCOL';
29
+ }
30
+ export interface InvalidPayloadErrorOptions extends SpruceErrors.MercuryClient.InvalidPayload, ISpruceErrorOptions {
31
+ code: 'INVALID_PAYLOAD';
32
+ }
33
+ export interface InvalidEventSignatureErrorOptions extends SpruceErrors.MercuryClient.InvalidEventSignature, ISpruceErrorOptions {
34
+ code: 'INVALID_EVENT_SIGNATURE';
35
+ }
36
+ export interface ConnectionFailedErrorOptions extends SpruceErrors.MercuryClient.ConnectionFailed, ISpruceErrorOptions {
37
+ code: 'CONNECTION_FAILED';
38
+ }
39
+ type ErrorOptions = UnknownErrorErrorOptions | UnexpectedPayloadErrorOptions | UnauthorizedAccessErrorOptions | TimeoutErrorOptions | NotConnectedErrorOptions | MustHandleLocallyErrorOptions | MustCreateEventErrorOptions | MissingTestCacheDirErrorOptions | InvalidProtocolErrorOptions | InvalidPayloadErrorOptions | InvalidEventSignatureErrorOptions | ConnectionFailedErrorOptions;
40
+ export default ErrorOptions;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,26 @@
1
+ import { EventContract, SkillEventContract } from '@sprucelabs/mercury-types';
2
+ import { ConnectionOptions, MercuryClient } from '../types/client.types';
3
+ import MutableContractClient from './MutableContractClient';
4
+ export default class MercuryClientFactory {
5
+ private static isTestMode;
6
+ private static defaultContract;
7
+ private static timeoutMs;
8
+ private static totalClients;
9
+ private static clients;
10
+ static ClientClass: new (...args: any[]) => MutableContractClient<EventContract>;
11
+ static Client<Contract extends SkillEventContract = SkillEventContract>(connectionOptions?: ConnectionOptions): Promise<Client<Contract>>;
12
+ static isInTestMode(): boolean;
13
+ static setIsTestMode(isTestMode: boolean): void;
14
+ static setDefaultContract(contract: EventContract): void;
15
+ static hasDefaultContract(): boolean;
16
+ static clearDefaultContract(): void;
17
+ private static resetTestClient;
18
+ static setDefaultTimeoutMs(ms: number): void;
19
+ static getTotalClients(): number;
20
+ static reset(): void;
21
+ static getClients(): Client<import("@sprucelabs/mercury-types").SpruceSchemas.Mercury.v2020_12_25.EventContract>[];
22
+ }
23
+ export type Client<Contract extends EventContract> = MercuryClient<Contract> & {
24
+ doesHandleEvent(eventName: string): boolean;
25
+ mixinContract(eventContract: EventContract): void;
26
+ };
@@ -0,0 +1,96 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { SchemaError } from '@sprucelabs/schema';
11
+ import { eventContractUtil } from '@sprucelabs/spruce-event-utils';
12
+ import { DEFAULT_HOST } from '../constants.js';
13
+ import SpruceError from '../errors/SpruceError.js';
14
+ import MutableContractClient from './MutableContractClient.js';
15
+ class MercuryClientFactory {
16
+ static Client(connectionOptions) {
17
+ return __awaiter(this, void 0, void 0, function* () {
18
+ var _a;
19
+ const { host: hostOption, contracts, reconnectDelayMs, allowSelfSignedCrt, emitTimeoutMs = this.timeoutMs, shouldReconnect, maxEmitRetries, connectionRetries, } = connectionOptions || {};
20
+ const host = hostOption !== null && hostOption !== void 0 ? hostOption : DEFAULT_HOST;
21
+ if (host.substr(0, 4) !== 'http') {
22
+ throw new SpruceError({ code: 'INVALID_PROTOCOL', uri: host });
23
+ }
24
+ if (contracts && !Array.isArray(contracts)) {
25
+ throw new SchemaError({
26
+ code: 'INVALID_PARAMETERS',
27
+ parameters: ['contracts'],
28
+ });
29
+ }
30
+ const eventContract = !contracts && this.defaultContract
31
+ ? this.defaultContract
32
+ : //@ts-ignore
33
+ eventContractUtil.unifyContracts(contracts !== null && contracts !== void 0 ? contracts : []);
34
+ let Client = MutableContractClient;
35
+ if (this.isTestMode) {
36
+ //TODO, make this something fitxures sets to make the test client available
37
+ Client = require('../clients/MercuryTestClient.js').default;
38
+ }
39
+ const client = new ((_a = MercuryClientFactory.ClientClass) !== null && _a !== void 0 ? _a :
40
+ //@ts-ignore
41
+ Client)({
42
+ host,
43
+ reconnection: false,
44
+ reconnectDelayMs,
45
+ rejectUnauthorized: !allowSelfSignedCrt,
46
+ eventContract,
47
+ emitTimeoutMs,
48
+ shouldReconnect,
49
+ maxEmitRetries,
50
+ connectionRetries,
51
+ });
52
+ yield client.connect();
53
+ this.totalClients++;
54
+ this.clients.push(client);
55
+ return client;
56
+ });
57
+ }
58
+ static isInTestMode() {
59
+ return this.isTestMode;
60
+ }
61
+ static setIsTestMode(isTestMode) {
62
+ this.isTestMode = isTestMode;
63
+ }
64
+ static setDefaultContract(contract) {
65
+ this.defaultContract = contract;
66
+ }
67
+ static hasDefaultContract() {
68
+ return !!this.defaultContract;
69
+ }
70
+ static clearDefaultContract() {
71
+ this.defaultContract = undefined;
72
+ }
73
+ static resetTestClient() {
74
+ const Client = require('../clients/MercuryTestClient.js').default;
75
+ Client.reset();
76
+ }
77
+ static setDefaultTimeoutMs(ms) {
78
+ this.timeoutMs = ms;
79
+ }
80
+ static getTotalClients() {
81
+ return this.totalClients;
82
+ }
83
+ static reset() {
84
+ this.totalClients = 0;
85
+ this.clients = [];
86
+ this.resetTestClient();
87
+ }
88
+ static getClients() {
89
+ return this.clients;
90
+ }
91
+ }
92
+ MercuryClientFactory.isTestMode = false;
93
+ MercuryClientFactory.timeoutMs = 30000;
94
+ MercuryClientFactory.totalClients = 0;
95
+ MercuryClientFactory.clients = [];
96
+ export default MercuryClientFactory;
@@ -0,0 +1,89 @@
1
+ import { EmitCallback, EventContract, EventName, EventSignature, MercuryAggregateResponse, SpruceSchemas } from '@sprucelabs/mercury-types';
2
+ import { Schema, SchemaValues } from '@sprucelabs/schema';
3
+ import { io, SocketOptions, ManagerOptions } from 'socket.io-client';
4
+ import { ConnectionOptions, MercuryClient } from '../types/client.types';
5
+ export default class MercurySocketIoClient<Contract extends EventContract> implements MercuryClient<Contract> {
6
+ protected _eventContract?: Contract;
7
+ protected get eventContract(): Contract;
8
+ protected set eventContract(contract: Contract);
9
+ static io: typeof io;
10
+ private log;
11
+ private host;
12
+ private ioOptions;
13
+ private socket?;
14
+ private proxyToken;
15
+ private emitTimeoutMs;
16
+ private reconnectDelayMs;
17
+ private listenerMap;
18
+ private isReAuthing;
19
+ private reconnectPromise;
20
+ protected lastAuthOptions?: {
21
+ skillId?: string | undefined;
22
+ apiKey?: string | undefined;
23
+ token?: string | undefined;
24
+ };
25
+ private shouldReconnect;
26
+ private connectionRetriesRemaining;
27
+ private connectionRetries;
28
+ private registeredListeners;
29
+ private allowNextEventToBeAuthenticate;
30
+ protected auth?: {
31
+ skill?: SpruceSchemas.Spruce.v2020_07_22.Skill;
32
+ person?: SpruceSchemas.Spruce.v2020_07_22.Person;
33
+ };
34
+ private shouldAutoRegisterListeners;
35
+ private isManuallyDisconnected;
36
+ private isReconnecting;
37
+ private id;
38
+ private skipWaitIfReconnecting;
39
+ private maxEmitRetries;
40
+ private authRawResults?;
41
+ protected authPromise?: any;
42
+ protected shouldRegisterProxyOnReconnect: boolean;
43
+ private reconnectKey?;
44
+ constructor(options: {
45
+ host: string;
46
+ eventContract?: Contract;
47
+ } & IoOptions);
48
+ connect(): Promise<void>;
49
+ private emitStatusChange;
50
+ private attachConnectError;
51
+ private attemptReconnectAfterDelay;
52
+ protected reconnect(resolve: any, reject: any, retriesLeft: number): Promise<void>;
53
+ protected waitIfReconnecting(): Promise<void>;
54
+ private reRegisterAllListeners;
55
+ private mapSocketErrorToSpruceError;
56
+ emit<Name extends EventName<Contract>, IEventSignature extends EventSignature = Contract['eventSignatures'][EventName], EmitSchema extends Schema = IEventSignature['emitPayloadSchema'] extends Schema ? IEventSignature['emitPayloadSchema'] : never, ResponseSchema extends Schema = IEventSignature['responsePayloadSchema'] extends Schema ? IEventSignature['responsePayloadSchema'] : never, ResponsePayload = ResponseSchema extends Schema ? SchemaValues<ResponseSchema> : never>(eventName: Name, targetAndPayload?: (EmitSchema extends Schema ? SchemaValues<EmitSchema> : never) | EmitCallback<Contract, Name>, cb?: EmitCallback<Contract, Name>): Promise<MercuryAggregateResponse<ResponsePayload>>;
57
+ private handleLocalEmit;
58
+ emitAndFlattenResponses<Name extends EventName<Contract>, IEventSignature extends EventSignature = Contract['eventSignatures'][EventName], EmitSchema extends Schema = IEventSignature['emitPayloadSchema'] extends Schema ? IEventSignature['emitPayloadSchema'] : never, ResponseSchema extends Schema = IEventSignature['responsePayloadSchema'] extends Schema ? IEventSignature['responsePayloadSchema'] : never, ResponsePayload = ResponseSchema extends Schema ? SchemaValues<ResponseSchema> : never>(eventName: Name, payload?: (EmitSchema extends Schema ? SchemaValues<EmitSchema> : never) | EmitCallback<Contract, Name>, cb?: EmitCallback<Contract, Name>): Promise<ResponsePayload[]>;
59
+ private _emit;
60
+ protected assertValidEmitTargetAndPayload<Name extends EventName<Contract>>(eventName: Name, payload: any): void;
61
+ private handleConfirmPinResponse;
62
+ protected getEventSignatureByName<Name extends EventName<Contract>>(eventName: Name): SpruceSchemas.Mercury.v2020_12_25.EventSignature;
63
+ setShouldAutoRegisterListeners(should: boolean): void;
64
+ on<Name extends EventName<Contract>, IEventSignature extends EventSignature = Contract['eventSignatures'][EventName], EmitSchema extends Schema = IEventSignature['emitPayloadSchema'] extends Schema ? IEventSignature['emitPayloadSchema'] : never>(eventName: Name, cb: (payload: EmitSchema extends Schema ? SchemaValues<EmitSchema> : never) => IEventSignature['responsePayloadSchema'] extends Schema ? Promise<SchemaValues<IEventSignature['responsePayloadSchema']>> | SchemaValues<IEventSignature['responsePayloadSchema']> : Promise<void> | void): Promise<void>;
65
+ private isEventLocal;
66
+ off(eventName: EventName<Contract>, cb?: () => void): Promise<number>;
67
+ private removeLocalListener;
68
+ getId(): string;
69
+ disconnect(): Promise<void>;
70
+ authenticate(options: AuthenticateOptions): Promise<{
71
+ skill: any;
72
+ person: any;
73
+ }>;
74
+ isAuthenticated(): boolean;
75
+ isConnected(): boolean;
76
+ private isSocketConnected;
77
+ getProxyToken(): string | null;
78
+ setProxyToken(token: string): void;
79
+ registerProxyToken(): Promise<any>;
80
+ getIsTestClient(): boolean;
81
+ }
82
+ type IoOptions = Partial<ManagerOptions & SocketOptions & ConnectionOptions>;
83
+ export declare const authenticateFqen = "authenticate::v2020_12_25";
84
+ export interface AuthenticateOptions {
85
+ skillId?: string;
86
+ apiKey?: string;
87
+ token?: string;
88
+ }
89
+ export {};