@aws-amplify/api-graphql 4.0.22-unstable.f6055cb.0 → 4.0.22
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.
- package/dist/cjs/Providers/AWSAppSyncRealTimeProvider/index.js +31 -40
- package/dist/cjs/Providers/AWSAppSyncRealTimeProvider/index.js.map +1 -1
- package/dist/cjs/internals/APIClient.js +19 -34
- package/dist/cjs/internals/APIClient.js.map +1 -1
- package/dist/cjs/internals/InternalGraphQLAPI.js +9 -10
- package/dist/cjs/internals/InternalGraphQLAPI.js.map +1 -1
- package/dist/cjs/internals/generateClient.js +1 -1
- package/dist/cjs/internals/generateClient.js.map +1 -1
- package/dist/cjs/internals/operations/custom.js +2 -2
- package/dist/cjs/internals/operations/custom.js.map +1 -1
- package/dist/cjs/internals/operations/list.js +1 -1
- package/dist/cjs/internals/operations/list.js.map +1 -1
- package/dist/cjs/internals/server/generateClientWithAmplifyInstance.js +1 -1
- package/dist/cjs/internals/server/generateClientWithAmplifyInstance.js.map +1 -1
- package/dist/cjs/internals/server/generateModelsProperty.js +1 -1
- package/dist/cjs/internals/server/generateModelsProperty.js.map +1 -1
- package/dist/cjs/internals/v6.js +2 -0
- package/dist/cjs/internals/v6.js.map +1 -1
- package/dist/cjs/utils/errors/repackageAuthError.js +1 -1
- package/dist/cjs/utils/errors/repackageAuthError.js.map +1 -1
- package/dist/esm/GraphQLAPI.d.ts +2 -2
- package/dist/esm/GraphQLAPI.mjs.map +1 -1
- package/dist/esm/Providers/AWSAppSyncRealTimeProvider/index.d.ts +8 -8
- package/dist/esm/Providers/AWSAppSyncRealTimeProvider/index.mjs +31 -40
- package/dist/esm/Providers/AWSAppSyncRealTimeProvider/index.mjs.map +1 -1
- package/dist/esm/internals/APIClient.d.ts +6 -5
- package/dist/esm/internals/APIClient.mjs +19 -34
- package/dist/esm/internals/APIClient.mjs.map +1 -1
- package/dist/esm/internals/InternalGraphQLAPI.d.ts +1 -1
- package/dist/esm/internals/InternalGraphQLAPI.mjs +9 -10
- package/dist/esm/internals/InternalGraphQLAPI.mjs.map +1 -1
- package/dist/esm/internals/generateClient.mjs +1 -1
- package/dist/esm/internals/generateClient.mjs.map +1 -1
- package/dist/esm/internals/generateCustomOperationsProperty.d.ts +2 -2
- package/dist/esm/internals/operations/custom.d.ts +1 -1
- package/dist/esm/internals/operations/custom.mjs +2 -2
- package/dist/esm/internals/operations/custom.mjs.map +1 -1
- package/dist/esm/internals/operations/get.d.ts +1 -1
- package/dist/esm/internals/operations/get.mjs.map +1 -1
- package/dist/esm/internals/operations/indexQuery.d.ts +3 -3
- package/dist/esm/internals/operations/indexQuery.mjs.map +1 -1
- package/dist/esm/internals/operations/list.d.ts +1 -1
- package/dist/esm/internals/operations/list.mjs +1 -1
- package/dist/esm/internals/operations/list.mjs.map +1 -1
- package/dist/esm/internals/operations/subscription.d.ts +1 -1
- package/dist/esm/internals/operations/subscription.mjs.map +1 -1
- package/dist/esm/internals/server/generateClientWithAmplifyInstance.d.ts +1 -1
- package/dist/esm/internals/server/generateClientWithAmplifyInstance.mjs +1 -1
- package/dist/esm/internals/server/generateClientWithAmplifyInstance.mjs.map +1 -1
- package/dist/esm/internals/server/generateModelsProperty.d.ts +2 -1
- package/dist/esm/internals/server/generateModelsProperty.mjs +1 -1
- package/dist/esm/internals/server/generateModelsProperty.mjs.map +1 -1
- package/dist/esm/internals/types.d.ts +2 -2
- package/dist/esm/internals/utils/clientProperties/generateModelsProperty.d.ts +1 -1
- package/dist/esm/internals/v6.d.ts +1 -1
- package/dist/esm/internals/v6.mjs +2 -0
- package/dist/esm/internals/v6.mjs.map +1 -1
- package/dist/esm/types/index.d.ts +35 -33
- package/dist/esm/utils/ConnectionStateMonitor.d.ts +2 -2
- package/dist/esm/utils/ConnectionStateMonitor.mjs.map +1 -1
- package/dist/esm/utils/ReachabilityMonitor/index.native.mjs.map +1 -1
- package/dist/esm/utils/errors/repackageAuthError.d.ts +2 -2
- package/dist/esm/utils/errors/repackageAuthError.mjs +1 -1
- package/dist/esm/utils/errors/repackageAuthError.mjs.map +1 -1
- package/dist/esm/utils/findIndexByFields.d.ts +1 -1
- package/package.json +5 -6
- package/src/GraphQLAPI.ts +3 -4
- package/src/Providers/AWSAppSyncRealTimeProvider/index.ts +64 -84
- package/src/internals/APIClient.ts +27 -59
- package/src/internals/InternalGraphQLAPI.ts +30 -26
- package/src/internals/clientUtils.ts +1 -1
- package/src/internals/generateClient.ts +10 -12
- package/src/internals/generateCustomOperationsProperty.ts +6 -7
- package/src/internals/operations/custom.ts +13 -16
- package/src/internals/operations/get.ts +8 -9
- package/src/internals/operations/indexQuery.ts +11 -12
- package/src/internals/operations/list.ts +15 -11
- package/src/internals/operations/observeQuery.ts +1 -3
- package/src/internals/operations/subscription.ts +10 -12
- package/src/internals/server/generateClientWithAmplifyInstance.ts +7 -7
- package/src/internals/server/generateModelsProperty.ts +4 -7
- package/src/internals/types.ts +2 -2
- package/src/internals/utils/clientProperties/generateEnumsProperty.ts +6 -7
- package/src/internals/utils/clientProperties/generateModelsProperty.ts +6 -7
- package/src/internals/v6.ts +4 -6
- package/src/server/generateClient.ts +1 -4
- package/src/types/PubSub.ts +0 -1
- package/src/types/index.ts +47 -49
- package/src/utils/ConnectionStateMonitor.ts +3 -8
- package/src/utils/ReachabilityMonitor/index.native.ts +1 -1
- package/src/utils/ReachabilityMonitor/index.ts +0 -1
- package/src/utils/ReconnectionMonitor.ts +0 -1
- package/src/utils/errors/repackageAuthError.ts +7 -6
- package/src/utils/findIndexByFields.ts +1 -1
- package/src/utils/resolveConfig.ts +0 -1
- package/src/utils/resolveLibraryOptions.ts +0 -1
- package/src/utils/resolveOwnerFields.ts +5 -7
- package/src/utils/resolvePKFields.ts +0 -1
|
@@ -3,26 +3,25 @@
|
|
|
3
3
|
import { Observable, SubscriptionLike } from 'rxjs';
|
|
4
4
|
import { GraphQLError } from 'graphql';
|
|
5
5
|
import {
|
|
6
|
-
ConsoleLogger,
|
|
7
6
|
Hub,
|
|
8
|
-
HubPayload,
|
|
9
7
|
fetchAuthSession,
|
|
8
|
+
ConsoleLogger,
|
|
9
|
+
HubPayload,
|
|
10
10
|
} from '@aws-amplify/core';
|
|
11
11
|
import { signRequest } from '@aws-amplify/core/internals/aws-client-utils';
|
|
12
12
|
import {
|
|
13
|
-
|
|
14
|
-
CustomUserAgentDetails,
|
|
15
|
-
DocumentType,
|
|
13
|
+
base64Encoder,
|
|
16
14
|
GraphQLAuthMode,
|
|
15
|
+
CustomUserAgentDetails,
|
|
17
16
|
NonRetryableError,
|
|
18
17
|
USER_AGENT_HEADER,
|
|
19
|
-
amplifyUuid,
|
|
20
|
-
base64Encoder,
|
|
21
18
|
getAmplifyUserAgent,
|
|
22
19
|
isNonRetryableError,
|
|
23
20
|
jitteredExponentialRetry,
|
|
21
|
+
DocumentType,
|
|
22
|
+
amplifyUuid,
|
|
23
|
+
AmplifyUrl,
|
|
24
24
|
} from '@aws-amplify/core/internals/utils';
|
|
25
|
-
import { CustomHeaders, RequestOptions } from '@aws-amplify/data-schema-types';
|
|
26
25
|
|
|
27
26
|
import {
|
|
28
27
|
CONTROL_MSG,
|
|
@@ -33,24 +32,25 @@ import {
|
|
|
33
32
|
AMPLIFY_SYMBOL,
|
|
34
33
|
AWS_APPSYNC_REALTIME_HEADERS,
|
|
35
34
|
CONNECTION_INIT_TIMEOUT,
|
|
36
|
-
CONNECTION_STATE_CHANGE,
|
|
37
|
-
DEFAULT_KEEP_ALIVE_ALERT_TIMEOUT,
|
|
38
35
|
DEFAULT_KEEP_ALIVE_TIMEOUT,
|
|
36
|
+
DEFAULT_KEEP_ALIVE_ALERT_TIMEOUT,
|
|
39
37
|
MAX_DELAY_MS,
|
|
40
38
|
MESSAGE_TYPES,
|
|
41
39
|
NON_RETRYABLE_CODES,
|
|
42
40
|
SOCKET_STATUS,
|
|
43
41
|
START_ACK_TIMEOUT,
|
|
44
42
|
SUBSCRIPTION_STATUS,
|
|
43
|
+
CONNECTION_STATE_CHANGE,
|
|
45
44
|
} from '../constants';
|
|
46
45
|
import {
|
|
47
|
-
CONNECTION_CHANGE,
|
|
48
46
|
ConnectionStateMonitor,
|
|
47
|
+
CONNECTION_CHANGE,
|
|
49
48
|
} from '../../utils/ConnectionStateMonitor';
|
|
50
49
|
import {
|
|
51
50
|
ReconnectEvent,
|
|
52
51
|
ReconnectionMonitor,
|
|
53
52
|
} from '../../utils/ReconnectionMonitor';
|
|
53
|
+
import { CustomHeaders, RequestOptions } from '@aws-amplify/data-schema-types';
|
|
54
54
|
|
|
55
55
|
const logger = new ConsoleLogger('AWSAppSyncRealTimeProvider');
|
|
56
56
|
|
|
@@ -58,38 +58,38 @@ const dispatchApiEvent = (payload: HubPayload) => {
|
|
|
58
58
|
Hub.dispatch('api', payload, 'PubSub', AMPLIFY_SYMBOL);
|
|
59
59
|
};
|
|
60
60
|
|
|
61
|
-
export
|
|
61
|
+
export type ObserverQuery = {
|
|
62
62
|
observer: PubSubContentObserver;
|
|
63
63
|
query: string;
|
|
64
64
|
variables: Record<string, DocumentType>;
|
|
65
65
|
subscriptionState: SUBSCRIPTION_STATUS;
|
|
66
|
-
subscriptionReadyCallback
|
|
67
|
-
subscriptionFailedCallback
|
|
66
|
+
subscriptionReadyCallback?: Function;
|
|
67
|
+
subscriptionFailedCallback?: Function;
|
|
68
68
|
startAckTimeoutId?: ReturnType<typeof setTimeout>;
|
|
69
|
-
}
|
|
69
|
+
};
|
|
70
70
|
|
|
71
71
|
const standardDomainPattern =
|
|
72
|
-
/^https:\/\/\w{26}\.appsync
|
|
72
|
+
/^https:\/\/\w{26}\.appsync\-api\.\w{2}(?:(?:\-\w{2,})+)\-\d\.amazonaws.com(?:\.cn)?\/graphql$/i;
|
|
73
73
|
|
|
74
74
|
const customDomainPath = '/realtime';
|
|
75
75
|
|
|
76
|
-
|
|
76
|
+
type DataObject = {
|
|
77
77
|
data: Record<string, unknown>;
|
|
78
|
-
}
|
|
78
|
+
};
|
|
79
79
|
|
|
80
|
-
|
|
80
|
+
type DataPayload = {
|
|
81
81
|
id: string;
|
|
82
82
|
payload: DataObject;
|
|
83
83
|
type: string;
|
|
84
|
-
}
|
|
84
|
+
};
|
|
85
85
|
|
|
86
|
-
|
|
86
|
+
type ParsedMessagePayload = {
|
|
87
87
|
type: string;
|
|
88
88
|
payload: {
|
|
89
89
|
connectionTimeoutMs: number;
|
|
90
90
|
errors?: [{ errorType: string; errorCode: number }];
|
|
91
91
|
};
|
|
92
|
-
}
|
|
92
|
+
};
|
|
93
93
|
|
|
94
94
|
export interface AWSAppSyncRealTimeProviderOptions {
|
|
95
95
|
appSyncGraphqlEndpoint?: string;
|
|
@@ -98,7 +98,7 @@ export interface AWSAppSyncRealTimeProviderOptions {
|
|
|
98
98
|
variables?: Record<string, DocumentType>;
|
|
99
99
|
apiKey?: string;
|
|
100
100
|
region?: string;
|
|
101
|
-
libraryConfigHeaders
|
|
101
|
+
libraryConfigHeaders?: () => {} | (() => Promise<{}>);
|
|
102
102
|
additionalHeaders?: CustomHeaders;
|
|
103
103
|
additionalCustomHeaders?: Record<string, string>;
|
|
104
104
|
authToken?: string;
|
|
@@ -117,14 +117,14 @@ export class AWSAppSyncRealTimeProvider {
|
|
|
117
117
|
private keepAliveTimeoutId?: ReturnType<typeof setTimeout>;
|
|
118
118
|
private keepAliveTimeout = DEFAULT_KEEP_ALIVE_TIMEOUT;
|
|
119
119
|
private keepAliveAlertTimeoutId?: ReturnType<typeof setTimeout>;
|
|
120
|
-
private subscriptionObserverMap
|
|
121
|
-
private promiseArray: { res
|
|
120
|
+
private subscriptionObserverMap: Map<string, ObserverQuery> = new Map();
|
|
121
|
+
private promiseArray: Array<{ res: Function; rej: Function }> = [];
|
|
122
122
|
private connectionState: ConnectionState | undefined;
|
|
123
123
|
private readonly connectionStateMonitor = new ConnectionStateMonitor();
|
|
124
124
|
private readonly reconnectionMonitor = new ReconnectionMonitor();
|
|
125
125
|
private connectionStateMonitorSubscription: SubscriptionLike;
|
|
126
126
|
|
|
127
|
-
constructor() {
|
|
127
|
+
constructor(options: AWSAppSyncRealTimeProviderOptions = {}) {
|
|
128
128
|
// Monitor the connection state and pass changes along to Hub
|
|
129
129
|
this.connectionStateMonitorSubscription =
|
|
130
130
|
this.connectionStateMonitor.connectionStateObservable.subscribe(
|
|
@@ -253,12 +253,12 @@ export class AWSAppSyncRealTimeProvider {
|
|
|
253
253
|
}
|
|
254
254
|
};
|
|
255
255
|
|
|
256
|
+
let reconnectSubscription: SubscriptionLike;
|
|
257
|
+
|
|
256
258
|
// Add an observable to the reconnection list to manage reconnection for this subscription
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
},
|
|
261
|
-
).subscribe(() => {
|
|
259
|
+
reconnectSubscription = new Observable(observer => {
|
|
260
|
+
this.reconnectionMonitor.addObserver(observer);
|
|
261
|
+
}).subscribe(() => {
|
|
262
262
|
startSubscription();
|
|
263
263
|
});
|
|
264
264
|
|
|
@@ -397,7 +397,6 @@ export class AWSAppSyncRealTimeProvider {
|
|
|
397
397
|
});
|
|
398
398
|
} catch (err: any) {
|
|
399
399
|
this._logStartSubscriptionError(subscriptionId, observer, err);
|
|
400
|
-
|
|
401
400
|
return;
|
|
402
401
|
}
|
|
403
402
|
|
|
@@ -417,7 +416,7 @@ export class AWSAppSyncRealTimeProvider {
|
|
|
417
416
|
subscriptionReadyCallback,
|
|
418
417
|
subscriptionFailedCallback,
|
|
419
418
|
startAckTimeoutId: setTimeout(() => {
|
|
420
|
-
this._timeoutStartSubscriptionAck(subscriptionId);
|
|
419
|
+
this._timeoutStartSubscriptionAck.call(this, subscriptionId);
|
|
421
420
|
}, START_ACK_TIMEOUT),
|
|
422
421
|
});
|
|
423
422
|
if (this.awsRealTimeSocket) {
|
|
@@ -434,7 +433,9 @@ export class AWSAppSyncRealTimeProvider {
|
|
|
434
433
|
logger.debug({ err });
|
|
435
434
|
const message = String(err.message ?? '');
|
|
436
435
|
// Resolving to give the state observer time to propogate the update
|
|
437
|
-
|
|
436
|
+
Promise.resolve(
|
|
437
|
+
this.connectionStateMonitor.record(CONNECTION_CHANGE.CLOSED),
|
|
438
|
+
);
|
|
438
439
|
|
|
439
440
|
// Capture the error only when the network didn't cause disruption
|
|
440
441
|
if (
|
|
@@ -473,20 +474,16 @@ export class AWSAppSyncRealTimeProvider {
|
|
|
473
474
|
const { subscriptionState } = subscriptionObserver;
|
|
474
475
|
// This in case unsubscribe is invoked before sending start subscription message
|
|
475
476
|
if (subscriptionState === SUBSCRIPTION_STATUS.PENDING) {
|
|
476
|
-
return new Promise
|
|
477
|
-
const {
|
|
478
|
-
|
|
479
|
-
subscriptionState: observedSubscriptionState,
|
|
480
|
-
variables,
|
|
481
|
-
query,
|
|
482
|
-
} = subscriptionObserver;
|
|
477
|
+
return new Promise((res, rej) => {
|
|
478
|
+
const { observer, subscriptionState, variables, query } =
|
|
479
|
+
subscriptionObserver;
|
|
483
480
|
this.subscriptionObserverMap.set(subscriptionId, {
|
|
484
481
|
observer,
|
|
485
|
-
subscriptionState
|
|
482
|
+
subscriptionState,
|
|
486
483
|
variables,
|
|
487
484
|
query,
|
|
488
|
-
subscriptionReadyCallback:
|
|
489
|
-
subscriptionFailedCallback:
|
|
485
|
+
subscriptionReadyCallback: res,
|
|
486
|
+
subscriptionFailedCallback: rej,
|
|
490
487
|
});
|
|
491
488
|
});
|
|
492
489
|
}
|
|
@@ -529,7 +526,6 @@ export class AWSAppSyncRealTimeProvider {
|
|
|
529
526
|
|
|
530
527
|
if (!this.awsRealTimeSocket) {
|
|
531
528
|
this.socketStatus = SOCKET_STATUS.CLOSED;
|
|
532
|
-
|
|
533
529
|
return;
|
|
534
530
|
}
|
|
535
531
|
|
|
@@ -586,7 +582,6 @@ export class AWSAppSyncRealTimeProvider {
|
|
|
586
582
|
} else {
|
|
587
583
|
logger.debug(`observer not found for id: ${id}`);
|
|
588
584
|
}
|
|
589
|
-
|
|
590
585
|
return;
|
|
591
586
|
}
|
|
592
587
|
|
|
@@ -626,14 +621,14 @@ export class AWSAppSyncRealTimeProvider {
|
|
|
626
621
|
if (this.keepAliveTimeoutId) clearTimeout(this.keepAliveTimeoutId);
|
|
627
622
|
if (this.keepAliveAlertTimeoutId)
|
|
628
623
|
clearTimeout(this.keepAliveAlertTimeoutId);
|
|
629
|
-
this.keepAliveTimeoutId = setTimeout(
|
|
630
|
-
this._errorDisconnect(CONTROL_MSG.TIMEOUT_DISCONNECT)
|
|
631
|
-
|
|
624
|
+
this.keepAliveTimeoutId = setTimeout(
|
|
625
|
+
() => this._errorDisconnect(CONTROL_MSG.TIMEOUT_DISCONNECT),
|
|
626
|
+
this.keepAliveTimeout,
|
|
627
|
+
);
|
|
632
628
|
this.keepAliveAlertTimeoutId = setTimeout(() => {
|
|
633
629
|
this.connectionStateMonitor.record(CONNECTION_CHANGE.KEEP_ALIVE_MISSED);
|
|
634
630
|
}, DEFAULT_KEEP_ALIVE_ALERT_TIMEOUT);
|
|
635
631
|
this.connectionStateMonitor.record(CONNECTION_CHANGE.KEEP_ALIVE);
|
|
636
|
-
|
|
637
632
|
return;
|
|
638
633
|
}
|
|
639
634
|
|
|
@@ -717,11 +712,8 @@ export class AWSAppSyncRealTimeProvider {
|
|
|
717
712
|
if (this.socketStatus === SOCKET_STATUS.READY) {
|
|
718
713
|
return;
|
|
719
714
|
}
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
// eslint-disable-next-line no-async-promise-executor
|
|
723
|
-
return new Promise<void>(async (resolve, reject) => {
|
|
724
|
-
this.promiseArray.push({ res: resolve, rej: reject });
|
|
715
|
+
return new Promise(async (res, rej) => {
|
|
716
|
+
this.promiseArray.push({ res, rej });
|
|
725
717
|
|
|
726
718
|
if (this.socketStatus === SOCKET_STATUS.CLOSED) {
|
|
727
719
|
try {
|
|
@@ -773,9 +765,7 @@ export class AWSAppSyncRealTimeProvider {
|
|
|
773
765
|
this.promiseArray = [];
|
|
774
766
|
} catch (err) {
|
|
775
767
|
logger.debug('Connection exited with', err);
|
|
776
|
-
this.promiseArray.forEach(({ rej }) =>
|
|
777
|
-
rej(err);
|
|
778
|
-
});
|
|
768
|
+
this.promiseArray.forEach(({ rej }) => rej(err));
|
|
779
769
|
this.promiseArray = [];
|
|
780
770
|
if (
|
|
781
771
|
this.awsRealTimeSocket &&
|
|
@@ -805,24 +795,23 @@ export class AWSAppSyncRealTimeProvider {
|
|
|
805
795
|
// Step 1: connect websocket
|
|
806
796
|
try {
|
|
807
797
|
await (() => {
|
|
808
|
-
return new Promise<void>((
|
|
798
|
+
return new Promise<void>((res, rej) => {
|
|
809
799
|
const newSocket = this.getNewWebSocket(awsRealTimeUrl, 'graphql-ws');
|
|
810
800
|
newSocket.onerror = () => {
|
|
811
801
|
logger.debug(`WebSocket connection error`);
|
|
812
802
|
};
|
|
813
803
|
newSocket.onclose = () => {
|
|
814
|
-
|
|
804
|
+
rej(new Error('Connection handshake error'));
|
|
815
805
|
};
|
|
816
806
|
newSocket.onopen = () => {
|
|
817
807
|
this.awsRealTimeSocket = newSocket;
|
|
818
|
-
|
|
819
|
-
resolve();
|
|
808
|
+
return res();
|
|
820
809
|
};
|
|
821
810
|
});
|
|
822
811
|
})();
|
|
823
812
|
// Step 2: wait for ack from AWS AppSyncReaTime after sending init
|
|
824
813
|
await (() => {
|
|
825
|
-
return new Promise((
|
|
814
|
+
return new Promise((res, rej) => {
|
|
826
815
|
if (this.awsRealTimeSocket) {
|
|
827
816
|
let ackOk = false;
|
|
828
817
|
this.awsRealTimeSocket.onerror = error => {
|
|
@@ -830,7 +819,7 @@ export class AWSAppSyncRealTimeProvider {
|
|
|
830
819
|
};
|
|
831
820
|
this.awsRealTimeSocket.onclose = event => {
|
|
832
821
|
logger.debug(`WebSocket closed ${event.reason}`);
|
|
833
|
-
|
|
822
|
+
rej(new Error(JSON.stringify(event)));
|
|
834
823
|
};
|
|
835
824
|
|
|
836
825
|
this.awsRealTimeSocket.onmessage = (message: MessageEvent) => {
|
|
@@ -862,8 +851,7 @@ export class AWSAppSyncRealTimeProvider {
|
|
|
862
851
|
this._errorDisconnect(CONTROL_MSG.CONNECTION_CLOSED);
|
|
863
852
|
};
|
|
864
853
|
}
|
|
865
|
-
|
|
866
|
-
|
|
854
|
+
res('Cool, connected to AWS AppSyncRealTime');
|
|
867
855
|
return;
|
|
868
856
|
}
|
|
869
857
|
|
|
@@ -874,9 +862,7 @@ export class AWSAppSyncRealTimeProvider {
|
|
|
874
862
|
} = {},
|
|
875
863
|
} = data;
|
|
876
864
|
|
|
877
|
-
|
|
878
|
-
// eslint-disable-next-line prefer-promise-reject-errors
|
|
879
|
-
reject({ errorType, errorCode });
|
|
865
|
+
rej({ errorType, errorCode });
|
|
880
866
|
}
|
|
881
867
|
};
|
|
882
868
|
|
|
@@ -885,12 +871,12 @@ export class AWSAppSyncRealTimeProvider {
|
|
|
885
871
|
};
|
|
886
872
|
this.awsRealTimeSocket.send(JSON.stringify(gqlInit));
|
|
887
873
|
|
|
888
|
-
const checkAckOk = (
|
|
889
|
-
if (!
|
|
874
|
+
const checkAckOk = (ackOk: boolean) => {
|
|
875
|
+
if (!ackOk) {
|
|
890
876
|
this.connectionStateMonitor.record(
|
|
891
877
|
CONNECTION_CHANGE.CONNECTION_FAILED,
|
|
892
878
|
);
|
|
893
|
-
|
|
879
|
+
rej(
|
|
894
880
|
new Error(
|
|
895
881
|
`Connection timeout: ack from AWSAppSyncRealTime was not received after ${CONNECTION_INIT_TIMEOUT} ms`,
|
|
896
882
|
),
|
|
@@ -898,9 +884,7 @@ export class AWSAppSyncRealTimeProvider {
|
|
|
898
884
|
}
|
|
899
885
|
};
|
|
900
886
|
|
|
901
|
-
setTimeout(() =>
|
|
902
|
-
checkAckOk(ackOk);
|
|
903
|
-
}, CONNECTION_INIT_TIMEOUT);
|
|
887
|
+
setTimeout(() => checkAckOk(ackOk), CONNECTION_INIT_TIMEOUT);
|
|
904
888
|
}
|
|
905
889
|
});
|
|
906
890
|
})();
|
|
@@ -932,9 +916,7 @@ export class AWSAppSyncRealTimeProvider {
|
|
|
932
916
|
Record<string, unknown> | undefined
|
|
933
917
|
> {
|
|
934
918
|
const headerHandler: {
|
|
935
|
-
[key in GraphQLAuthMode]: (
|
|
936
|
-
arg0: AWSAppSyncRealTimeAuthInput,
|
|
937
|
-
) => Promise<Record<string, unknown>> | Record<string, unknown>;
|
|
919
|
+
[key in GraphQLAuthMode]: (arg0: AWSAppSyncRealTimeAuthInput) => {};
|
|
938
920
|
} = {
|
|
939
921
|
apiKey: this._awsRealTimeApiKeyHeader.bind(this),
|
|
940
922
|
iam: this._awsRealTimeIAMHeader.bind(this),
|
|
@@ -946,7 +928,6 @@ export class AWSAppSyncRealTimeProvider {
|
|
|
946
928
|
|
|
947
929
|
if (!authenticationType || !headerHandler[authenticationType]) {
|
|
948
930
|
logger.debug(`Authentication type ${authenticationType} not supported`);
|
|
949
|
-
|
|
950
931
|
return undefined;
|
|
951
932
|
} else {
|
|
952
933
|
const handler = headerHandler[authenticationType];
|
|
@@ -988,7 +969,7 @@ export class AWSAppSyncRealTimeProvider {
|
|
|
988
969
|
host,
|
|
989
970
|
}: AWSAppSyncRealTimeAuthInput) {
|
|
990
971
|
const dt = new Date();
|
|
991
|
-
const dtStr = dt.toISOString().replace(/[
|
|
972
|
+
const dtStr = dt.toISOString().replace(/[:\-]|\.\d{3}/g, '');
|
|
992
973
|
|
|
993
974
|
return {
|
|
994
975
|
host,
|
|
@@ -1017,7 +998,7 @@ export class AWSAppSyncRealTimeProvider {
|
|
|
1017
998
|
headers: { ...AWS_APPSYNC_REALTIME_HEADERS },
|
|
1018
999
|
};
|
|
1019
1000
|
|
|
1020
|
-
const
|
|
1001
|
+
const signed_params = signRequest(
|
|
1021
1002
|
{
|
|
1022
1003
|
headers: request.headers,
|
|
1023
1004
|
method: request.method,
|
|
@@ -1031,8 +1012,7 @@ export class AWSAppSyncRealTimeProvider {
|
|
|
1031
1012
|
signingService: endpointInfo.service,
|
|
1032
1013
|
},
|
|
1033
1014
|
);
|
|
1034
|
-
|
|
1035
|
-
return signedParams.headers;
|
|
1015
|
+
return signed_params.headers;
|
|
1036
1016
|
}
|
|
1037
1017
|
|
|
1038
1018
|
private _customAuthHeader({
|
|
@@ -1044,7 +1024,7 @@ export class AWSAppSyncRealTimeProvider {
|
|
|
1044
1024
|
* the headers that are returned by that function will already have been
|
|
1045
1025
|
* provided before this function is called.
|
|
1046
1026
|
*/
|
|
1047
|
-
if (!additionalCustomHeaders?.Authorization) {
|
|
1027
|
+
if (!additionalCustomHeaders?.['Authorization']) {
|
|
1048
1028
|
throw new Error('No auth token specified');
|
|
1049
1029
|
}
|
|
1050
1030
|
|