@aws-amplify/api-graphql 4.4.3-local-stack.0aa9031.0 → 4.4.3-unstable.847fb51.0

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 (93) hide show
  1. package/dist/cjs/Providers/AWSAppSyncEventsProvider/index.js +98 -0
  2. package/dist/cjs/Providers/AWSAppSyncEventsProvider/index.js.map +1 -0
  3. package/dist/cjs/Providers/AWSAppSyncRealTimeProvider/index.js +34 -731
  4. package/dist/cjs/Providers/AWSAppSyncRealTimeProvider/index.js.map +1 -1
  5. package/dist/cjs/Providers/AWSWebSocketProvider/appsyncUrl.js +112 -0
  6. package/dist/cjs/Providers/AWSWebSocketProvider/appsyncUrl.js.map +1 -0
  7. package/dist/cjs/Providers/AWSWebSocketProvider/authHeaders.js +99 -0
  8. package/dist/cjs/Providers/AWSWebSocketProvider/authHeaders.js.map +1 -0
  9. package/dist/cjs/Providers/AWSWebSocketProvider/index.js +624 -0
  10. package/dist/cjs/Providers/AWSWebSocketProvider/index.js.map +1 -0
  11. package/dist/cjs/Providers/constants.js +32 -2
  12. package/dist/cjs/Providers/constants.js.map +1 -1
  13. package/dist/cjs/index.js +4 -1
  14. package/dist/cjs/index.js.map +1 -1
  15. package/dist/cjs/internals/InternalGraphQLAPI.js +8 -67
  16. package/dist/cjs/internals/InternalGraphQLAPI.js.map +1 -1
  17. package/dist/cjs/internals/events/appsyncRequest.js +97 -0
  18. package/dist/cjs/internals/events/appsyncRequest.js.map +1 -0
  19. package/dist/cjs/internals/events/index.js +73 -0
  20. package/dist/cjs/internals/events/index.js.map +1 -0
  21. package/dist/cjs/internals/events/types.js +6 -0
  22. package/dist/cjs/internals/events/types.js.map +1 -0
  23. package/dist/cjs/internals/events/utils.js +57 -0
  24. package/dist/cjs/internals/events/utils.js.map +1 -0
  25. package/dist/cjs/internals/graphqlAuth.js +64 -0
  26. package/dist/cjs/internals/graphqlAuth.js.map +1 -0
  27. package/dist/cjs/internals/graphqlRequest.js +20 -0
  28. package/dist/cjs/internals/graphqlRequest.js.map +1 -0
  29. package/dist/cjs/utils/ReconnectionMonitor.js +1 -1
  30. package/dist/cjs/utils/ReconnectionMonitor.js.map +1 -1
  31. package/dist/esm/Providers/AWSAppSyncEventsProvider/index.d.ts +43 -0
  32. package/dist/esm/Providers/AWSAppSyncEventsProvider/index.mjs +97 -0
  33. package/dist/esm/Providers/AWSAppSyncEventsProvider/index.mjs.map +1 -0
  34. package/dist/esm/Providers/AWSAppSyncRealTimeProvider/index.d.ts +24 -71
  35. package/dist/esm/Providers/AWSAppSyncRealTimeProvider/index.mjs +34 -731
  36. package/dist/esm/Providers/AWSAppSyncRealTimeProvider/index.mjs.map +1 -1
  37. package/dist/esm/Providers/AWSWebSocketProvider/appsyncUrl.d.ts +21 -0
  38. package/dist/esm/Providers/AWSWebSocketProvider/appsyncUrl.mjs +106 -0
  39. package/dist/esm/Providers/AWSWebSocketProvider/appsyncUrl.mjs.map +1 -0
  40. package/dist/esm/Providers/AWSWebSocketProvider/authHeaders.d.ts +8 -0
  41. package/dist/esm/Providers/AWSWebSocketProvider/authHeaders.mjs +97 -0
  42. package/dist/esm/Providers/AWSWebSocketProvider/authHeaders.mjs.map +1 -0
  43. package/dist/esm/Providers/AWSWebSocketProvider/index.d.ts +89 -0
  44. package/dist/esm/Providers/AWSWebSocketProvider/index.mjs +622 -0
  45. package/dist/esm/Providers/AWSWebSocketProvider/index.mjs.map +1 -0
  46. package/dist/esm/Providers/constants.d.ts +33 -3
  47. package/dist/esm/Providers/constants.mjs +32 -2
  48. package/dist/esm/Providers/constants.mjs.map +1 -1
  49. package/dist/esm/index.d.ts +3 -0
  50. package/dist/esm/index.mjs +2 -0
  51. package/dist/esm/index.mjs.map +1 -1
  52. package/dist/esm/internals/InternalGraphQLAPI.d.ts +0 -1
  53. package/dist/esm/internals/InternalGraphQLAPI.mjs +9 -68
  54. package/dist/esm/internals/InternalGraphQLAPI.mjs.map +1 -1
  55. package/dist/esm/internals/events/appsyncRequest.d.ts +14 -0
  56. package/dist/esm/internals/events/appsyncRequest.mjs +96 -0
  57. package/dist/esm/internals/events/appsyncRequest.mjs.map +1 -0
  58. package/dist/esm/internals/events/index.d.ts +17 -0
  59. package/dist/esm/internals/events/index.mjs +69 -0
  60. package/dist/esm/internals/events/index.mjs.map +1 -0
  61. package/dist/esm/internals/events/types.d.ts +23 -0
  62. package/dist/esm/internals/events/types.mjs +2 -0
  63. package/dist/esm/internals/events/types.mjs.map +1 -0
  64. package/dist/esm/internals/events/utils.d.ts +16 -0
  65. package/dist/esm/internals/events/utils.mjs +53 -0
  66. package/dist/esm/internals/events/utils.mjs.map +1 -0
  67. package/dist/esm/internals/graphqlAuth.d.ts +3 -0
  68. package/dist/esm/internals/graphqlAuth.mjs +64 -0
  69. package/dist/esm/internals/graphqlAuth.mjs.map +1 -0
  70. package/dist/esm/internals/graphqlRequest.d.ts +3 -0
  71. package/dist/esm/internals/graphqlRequest.mjs +18 -0
  72. package/dist/esm/internals/graphqlRequest.mjs.map +1 -0
  73. package/dist/esm/utils/ConnectionStateMonitor.d.ts +29 -1
  74. package/dist/esm/utils/ReconnectionMonitor.d.ts +1 -1
  75. package/dist/esm/utils/ReconnectionMonitor.mjs +1 -1
  76. package/dist/esm/utils/ReconnectionMonitor.mjs.map +1 -1
  77. package/package.json +4 -4
  78. package/src/Providers/AWSAppSyncEventsProvider/index.ts +192 -0
  79. package/src/Providers/AWSAppSyncRealTimeProvider/index.ts +56 -1049
  80. package/src/Providers/AWSWebSocketProvider/appsyncUrl.ts +151 -0
  81. package/src/Providers/AWSWebSocketProvider/authHeaders.ts +146 -0
  82. package/src/Providers/AWSWebSocketProvider/index.ts +932 -0
  83. package/src/Providers/constants.ts +32 -2
  84. package/src/index.ts +5 -0
  85. package/src/internals/InternalGraphQLAPI.ts +15 -102
  86. package/src/internals/events/appsyncRequest.ts +169 -0
  87. package/src/internals/events/index.ts +138 -0
  88. package/src/internals/events/types.ts +35 -0
  89. package/src/internals/events/utils.ts +77 -0
  90. package/src/internals/graphqlAuth.ts +87 -0
  91. package/src/internals/graphqlRequest.ts +30 -0
  92. package/src/utils/ConnectionStateMonitor.ts +2 -13
  93. package/src/utils/ReconnectionMonitor.ts +1 -1
@@ -0,0 +1,87 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ import { GraphQLAuthMode } from '@aws-amplify/core/internals/utils';
5
+ import { AmplifyClassV6 } from '@aws-amplify/core';
6
+
7
+ import { GraphQLApiError } from '../utils/errors';
8
+ import {
9
+ NO_API_KEY,
10
+ NO_AUTH_TOKEN_HEADER,
11
+ NO_SIGNED_IN_USER,
12
+ NO_VALID_AUTH_TOKEN,
13
+ NO_VALID_CREDENTIALS,
14
+ } from '../utils/errors/constants';
15
+
16
+ export async function headerBasedAuth(
17
+ amplify: AmplifyClassV6,
18
+ authMode: GraphQLAuthMode,
19
+ apiKey: string | undefined,
20
+ additionalHeaders: Record<string, string> = {},
21
+ ) {
22
+ let headers = {};
23
+
24
+ switch (authMode) {
25
+ case 'apiKey':
26
+ if (!apiKey) {
27
+ throw new GraphQLApiError(NO_API_KEY);
28
+ }
29
+ headers = {
30
+ 'X-Api-Key': apiKey,
31
+ };
32
+ break;
33
+ case 'iam': {
34
+ const session = await amplify.Auth.fetchAuthSession();
35
+ if (session.credentials === undefined) {
36
+ throw new GraphQLApiError(NO_VALID_CREDENTIALS);
37
+ }
38
+ break;
39
+ }
40
+ case 'oidc':
41
+ case 'userPool': {
42
+ let token: string | undefined;
43
+
44
+ try {
45
+ token = (
46
+ await amplify.Auth.fetchAuthSession()
47
+ ).tokens?.accessToken.toString();
48
+ } catch (e) {
49
+ // fetchAuthSession failed
50
+ throw new GraphQLApiError({
51
+ ...NO_SIGNED_IN_USER,
52
+ underlyingError: e,
53
+ });
54
+ }
55
+
56
+ // `fetchAuthSession()` succeeded but didn't return `tokens`.
57
+ // This may happen when unauthenticated access is enabled and there is
58
+ // no user signed in.
59
+ if (!token) {
60
+ throw new GraphQLApiError(NO_VALID_AUTH_TOKEN);
61
+ }
62
+
63
+ headers = {
64
+ Authorization: token,
65
+ };
66
+ break;
67
+ }
68
+ case 'lambda':
69
+ if (
70
+ typeof additionalHeaders === 'object' &&
71
+ !additionalHeaders.Authorization
72
+ ) {
73
+ throw new GraphQLApiError(NO_AUTH_TOKEN_HEADER);
74
+ }
75
+
76
+ headers = {
77
+ Authorization: additionalHeaders.Authorization,
78
+ };
79
+ break;
80
+ case 'none':
81
+ break;
82
+ default:
83
+ break;
84
+ }
85
+
86
+ return headers;
87
+ }
@@ -0,0 +1,30 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ import { AmplifyUrl } from '@aws-amplify/core/internals/utils';
5
+ import { AmplifyClassV6 } from '@aws-amplify/core';
6
+ import {
7
+ // cancel as cancelREST,
8
+ post,
9
+ // updateRequestToBeCancellable,
10
+ } from '@aws-amplify/api-rest/internals';
11
+
12
+ export async function graphqlRequest(
13
+ amplify: AmplifyClassV6,
14
+ url: string,
15
+ options: any,
16
+ abortController: AbortController,
17
+ _post?: typeof post,
18
+ ) {
19
+ const p = _post ?? post;
20
+
21
+ const { body: responseBody } = await p(amplify, {
22
+ url: new AmplifyUrl(url),
23
+ options,
24
+ abortController,
25
+ });
26
+
27
+ const response = await responseBody.json();
28
+
29
+ return response;
30
+ }
@@ -17,18 +17,7 @@ interface LinkedConnectionStates {
17
17
  keepAliveState: LinkedHealthState;
18
18
  }
19
19
 
20
- export const CONNECTION_CHANGE: {
21
- [key in
22
- | 'KEEP_ALIVE_MISSED'
23
- | 'KEEP_ALIVE'
24
- | 'CONNECTION_ESTABLISHED'
25
- | 'CONNECTION_FAILED'
26
- | 'CLOSING_CONNECTION'
27
- | 'OPENING_CONNECTION'
28
- | 'CLOSED'
29
- | 'ONLINE'
30
- | 'OFFLINE']: Partial<LinkedConnectionStates>;
31
- } = {
20
+ export const CONNECTION_CHANGE = {
32
21
  KEEP_ALIVE_MISSED: { keepAliveState: 'unhealthy' },
33
22
  KEEP_ALIVE: { keepAliveState: 'healthy' },
34
23
  CONNECTION_ESTABLISHED: { connectionState: 'connected' },
@@ -44,7 +33,7 @@ export const CONNECTION_CHANGE: {
44
33
  CLOSED: { connectionState: 'disconnected' },
45
34
  ONLINE: { networkState: 'connected' },
46
35
  OFFLINE: { networkState: 'disconnected' },
47
- };
36
+ } as const;
48
37
 
49
38
  export class ConnectionStateMonitor {
50
39
  /**
@@ -11,7 +11,7 @@ export enum ReconnectEvent {
11
11
 
12
12
  /**
13
13
  * Captures the reconnect event logic used to determine when to reconnect to PubSub providers.
14
- * Reconnnect attempts are delayed by 5 seconds to let the interface settle.
14
+ * Reconnect attempts are delayed by 5 seconds to let the interface settle.
15
15
  * Attempting to reconnect only once creates unrecoverable states when the network state isn't
16
16
  * supported by the browser, so this keeps retrying every minute until halted.
17
17
  */