@aws-amplify/api-graphql 4.3.4-unstable.ffa8a24.0 → 4.4.1-events.619318.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.
- package/dist/cjs/Providers/AWSAppSyncEventsProvider/index.js +94 -0
- package/dist/cjs/Providers/AWSAppSyncEventsProvider/index.js.map +1 -0
- package/dist/cjs/Providers/AWSAppSyncRealTimeProvider/index.js +35 -732
- package/dist/cjs/Providers/AWSAppSyncRealTimeProvider/index.js.map +1 -1
- package/dist/cjs/Providers/AWSWebSocketProvider/appsyncUrl.js +112 -0
- package/dist/cjs/Providers/AWSWebSocketProvider/appsyncUrl.js.map +1 -0
- package/dist/cjs/Providers/AWSWebSocketProvider/authHeaders.js +99 -0
- package/dist/cjs/Providers/AWSWebSocketProvider/authHeaders.js.map +1 -0
- package/dist/cjs/Providers/AWSWebSocketProvider/index.js +623 -0
- package/dist/cjs/Providers/AWSWebSocketProvider/index.js.map +1 -0
- package/dist/cjs/Providers/constants.js +32 -2
- package/dist/cjs/Providers/constants.js.map +1 -1
- package/dist/cjs/index.js +4 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/internals/InternalGraphQLAPI.js +8 -67
- package/dist/cjs/internals/InternalGraphQLAPI.js.map +1 -1
- package/dist/cjs/internals/events/appsyncRequest.js +97 -0
- package/dist/cjs/internals/events/appsyncRequest.js.map +1 -0
- package/dist/cjs/internals/events/index.js +73 -0
- package/dist/cjs/internals/events/index.js.map +1 -0
- package/dist/cjs/internals/events/types.js +6 -0
- package/dist/cjs/internals/events/types.js.map +1 -0
- package/dist/cjs/internals/events/utils.js +57 -0
- package/dist/cjs/internals/events/utils.js.map +1 -0
- package/dist/cjs/internals/graphqlAuth.js +64 -0
- package/dist/cjs/internals/graphqlAuth.js.map +1 -0
- package/dist/cjs/internals/graphqlRequest.js +20 -0
- package/dist/cjs/internals/graphqlRequest.js.map +1 -0
- package/dist/cjs/utils/ReconnectionMonitor.js +1 -1
- package/dist/cjs/utils/ReconnectionMonitor.js.map +1 -1
- package/dist/cjs/utils/resolveConfig.js +19 -0
- package/dist/cjs/utils/resolveConfig.js.map +1 -1
- package/dist/esm/Providers/AWSAppSyncEventsProvider/index.d.ts +42 -0
- package/dist/esm/Providers/AWSAppSyncEventsProvider/index.mjs +93 -0
- package/dist/esm/Providers/AWSAppSyncEventsProvider/index.mjs.map +1 -0
- package/dist/esm/Providers/AWSAppSyncRealTimeProvider/index.d.ts +24 -71
- package/dist/esm/Providers/AWSAppSyncRealTimeProvider/index.mjs +35 -732
- package/dist/esm/Providers/AWSAppSyncRealTimeProvider/index.mjs.map +1 -1
- package/dist/esm/Providers/AWSWebSocketProvider/appsyncUrl.d.ts +21 -0
- package/dist/esm/Providers/AWSWebSocketProvider/appsyncUrl.mjs +106 -0
- package/dist/esm/Providers/AWSWebSocketProvider/appsyncUrl.mjs.map +1 -0
- package/dist/esm/Providers/AWSWebSocketProvider/authHeaders.d.ts +8 -0
- package/dist/esm/Providers/AWSWebSocketProvider/authHeaders.mjs +97 -0
- package/dist/esm/Providers/AWSWebSocketProvider/authHeaders.mjs.map +1 -0
- package/dist/esm/Providers/AWSWebSocketProvider/index.d.ts +83 -0
- package/dist/esm/Providers/AWSWebSocketProvider/index.mjs +621 -0
- package/dist/esm/Providers/AWSWebSocketProvider/index.mjs.map +1 -0
- package/dist/esm/Providers/constants.d.ts +33 -3
- package/dist/esm/Providers/constants.mjs +32 -2
- package/dist/esm/Providers/constants.mjs.map +1 -1
- package/dist/esm/index.d.ts +3 -0
- package/dist/esm/index.mjs +2 -0
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/internals/InternalGraphQLAPI.d.ts +0 -1
- package/dist/esm/internals/InternalGraphQLAPI.mjs +9 -68
- package/dist/esm/internals/InternalGraphQLAPI.mjs.map +1 -1
- package/dist/esm/internals/events/appsyncRequest.d.ts +14 -0
- package/dist/esm/internals/events/appsyncRequest.mjs +96 -0
- package/dist/esm/internals/events/appsyncRequest.mjs.map +1 -0
- package/dist/esm/internals/events/index.d.ts +17 -0
- package/dist/esm/internals/events/index.mjs +69 -0
- package/dist/esm/internals/events/index.mjs.map +1 -0
- package/dist/esm/internals/events/types.d.ts +23 -0
- package/dist/esm/internals/events/types.mjs +2 -0
- package/dist/esm/internals/events/types.mjs.map +1 -0
- package/dist/esm/internals/events/utils.d.ts +16 -0
- package/dist/esm/internals/events/utils.mjs +53 -0
- package/dist/esm/internals/events/utils.mjs.map +1 -0
- package/dist/esm/internals/graphqlAuth.d.ts +3 -0
- package/dist/esm/internals/graphqlAuth.mjs +64 -0
- package/dist/esm/internals/graphqlAuth.mjs.map +1 -0
- package/dist/esm/internals/graphqlRequest.d.ts +3 -0
- package/dist/esm/internals/graphqlRequest.mjs +18 -0
- package/dist/esm/internals/graphqlRequest.mjs.map +1 -0
- package/dist/esm/utils/ConnectionStateMonitor.d.ts +29 -1
- package/dist/esm/utils/ReconnectionMonitor.d.ts +1 -1
- package/dist/esm/utils/ReconnectionMonitor.mjs +1 -1
- package/dist/esm/utils/ReconnectionMonitor.mjs.map +1 -1
- package/dist/esm/utils/resolveConfig.mjs +19 -0
- package/dist/esm/utils/resolveConfig.mjs.map +1 -1
- package/package.json +4 -4
- package/src/Providers/AWSAppSyncEventsProvider/index.ts +187 -0
- package/src/Providers/AWSAppSyncRealTimeProvider/index.ts +58 -1051
- package/src/Providers/AWSWebSocketProvider/appsyncUrl.ts +151 -0
- package/src/Providers/AWSWebSocketProvider/authHeaders.ts +146 -0
- package/src/Providers/AWSWebSocketProvider/index.ts +925 -0
- package/src/Providers/constants.ts +32 -2
- package/src/index.ts +5 -0
- package/src/internals/InternalGraphQLAPI.ts +15 -102
- package/src/internals/events/appsyncRequest.ts +169 -0
- package/src/internals/events/index.ts +138 -0
- package/src/internals/events/types.ts +35 -0
- package/src/internals/events/utils.ts +77 -0
- package/src/internals/graphqlAuth.ts +87 -0
- package/src/internals/graphqlRequest.ts +30 -0
- package/src/utils/ConnectionStateMonitor.ts +2 -13
- package/src/utils/ReconnectionMonitor.ts +1 -1
- package/src/utils/resolveConfig.ts +23 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"appsyncRequest.mjs","sources":["../../../../src/internals/events/appsyncRequest.ts"],"sourcesContent":["import { AmplifyUrl, getAmplifyUserAgent, } from '@aws-amplify/core/internals/utils';\nimport { post } from '@aws-amplify/api-rest/internals';\nimport { resolveLibraryOptions } from '../../utils';\nimport { repackageUnauthorizedError } from '../../utils/errors/repackageAuthError';\nimport { headerBasedAuth } from '../graphqlAuth';\nimport { isGraphQLResponseWithErrors } from '../utils/runtimeTypeGuards/isGraphQLResponseWithErrors';\nconst USER_AGENT_HEADER = 'x-amz-user-agent';\n// This is effectively a copy of InternalGraphQLAPI.ts._graphql(...)\n// Our existing unit tests are tightly coupled to the implementation, so i was unable to refactor\n// and extend _graphql() without having to change a bunch of tests as well... which in turn reduces confidence\n// that this feature will _not affect_ GQL behavior.\nexport async function appsyncRequest(amplify, options, additionalHeaders = {}, abortController, customUserAgentDetails) {\n const { region, appSyncGraphqlEndpoint: endpoint, authenticationType: authMode, query, variables, } = options;\n if (!endpoint) {\n throw new Error('No endpoint');\n }\n const { withCredentials } = resolveLibraryOptions(amplify);\n const headers = await requestHeaders(amplify, options, additionalHeaders, customUserAgentDetails);\n const body = {\n channel: query,\n events: variables,\n };\n const signingServiceInfo = ['apiKey', 'none'].includes(authMode)\n ? undefined\n : {\n service: 'appsync',\n region,\n };\n const { body: responseBody } = await post(amplify, {\n url: new AmplifyUrl(endpoint),\n options: {\n headers,\n body,\n signingServiceInfo,\n withCredentials,\n },\n abortController,\n });\n const response = await responseBody.json();\n if (isGraphQLResponseWithErrors(response)) {\n throw repackageUnauthorizedError(response);\n }\n return response;\n}\n/**\n * Computes all the necessary HTTP headers for the request based on:\n * 1. Operation-level header options\n * 2. Amplify.configure custom headers\n * 3. AuthZ headers for explicit auth mode specified for operation ?? default auth mode in config\n *\n * @returns HTTP request headers key/value\n */\nasync function requestHeaders(amplify, options, additionalHeaders, customUserAgentDetails) {\n const { apiKey, appSyncGraphqlEndpoint: endpoint, authenticationType: authMode, query, variables, authToken, } = options;\n const { headers: customHeadersFn } = resolveLibraryOptions(amplify);\n let additionalCustomHeaders;\n if (typeof additionalHeaders === 'function') {\n const requestOptions = {\n method: 'POST',\n url: new AmplifyUrl(endpoint).toString(),\n queryString: query,\n };\n additionalCustomHeaders = await additionalHeaders(requestOptions);\n }\n else {\n additionalCustomHeaders = additionalHeaders;\n }\n // if an authorization header is set, have the operation-level authToken take precedence\n if (authToken) {\n additionalCustomHeaders = {\n ...additionalCustomHeaders,\n Authorization: authToken,\n };\n }\n const authHeaders = await headerBasedAuth(amplify, authMode, apiKey, additionalCustomHeaders);\n const customHeaders = customHeadersFn &&\n (await customHeadersFn({\n query,\n variables: variables,\n }));\n const headers = {\n ...authHeaders,\n // Custom headers included in Amplify configuration options:\n ...customHeaders,\n // Custom headers from individual requests or API client configuration:\n ...additionalCustomHeaders,\n // User agent headers:\n [USER_AGENT_HEADER]: getAmplifyUserAgent(customUserAgentDetails),\n };\n return headers;\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { DocumentType } from '@aws-amplify/core/internals/utils';
|
|
2
|
+
import type { EventsChannel, EventsOptions, PublishedEvent } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* Establish a WebSocket connection to an Events channel
|
|
5
|
+
*
|
|
6
|
+
*/
|
|
7
|
+
declare function connect(channelName: string, options?: EventsOptions): Promise<EventsChannel>;
|
|
8
|
+
/**
|
|
9
|
+
* Publish events to a channel via REST request
|
|
10
|
+
*
|
|
11
|
+
* @param channelName - publish destination
|
|
12
|
+
* @param event - JSON-serializable value or an array of values
|
|
13
|
+
* @param options
|
|
14
|
+
*/
|
|
15
|
+
declare function post(channelName: string, event: DocumentType | DocumentType[], options?: EventsOptions): Promise<void | PublishedEvent[]>;
|
|
16
|
+
declare function closeAll(): void;
|
|
17
|
+
export { connect, post, closeAll };
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { Amplify } from '@aws-amplify/core';
|
|
2
|
+
import { AppSyncEventProvider } from '../../Providers/AWSAppSyncEventsProvider/index.mjs';
|
|
3
|
+
import { appsyncRequest } from './appsyncRequest.mjs';
|
|
4
|
+
import { configure, normalizeAuth, serializeEvents } from './utils.mjs';
|
|
5
|
+
|
|
6
|
+
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
7
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
8
|
+
/**
|
|
9
|
+
* Establish a WebSocket connection to an Events channel
|
|
10
|
+
*
|
|
11
|
+
*/
|
|
12
|
+
async function connect(channelName, options) {
|
|
13
|
+
const providerOptions = configure();
|
|
14
|
+
providerOptions.authenticationType = normalizeAuth(options?.authMode, providerOptions.authenticationType);
|
|
15
|
+
await AppSyncEventProvider.connect(providerOptions);
|
|
16
|
+
let _subscription;
|
|
17
|
+
const sub = (observer, subOptions) => {
|
|
18
|
+
const subscribeOptions = { ...providerOptions, query: channelName };
|
|
19
|
+
subscribeOptions.authenticationType = normalizeAuth(subOptions?.authMode, subscribeOptions.authenticationType);
|
|
20
|
+
_subscription = AppSyncEventProvider
|
|
21
|
+
.subscribe(subscribeOptions)
|
|
22
|
+
.subscribe(observer);
|
|
23
|
+
return _subscription;
|
|
24
|
+
};
|
|
25
|
+
const close = () => {
|
|
26
|
+
_subscription && _subscription.unsubscribe();
|
|
27
|
+
};
|
|
28
|
+
return {
|
|
29
|
+
/**
|
|
30
|
+
* Subscribe to incoming events
|
|
31
|
+
*/
|
|
32
|
+
subscribe: sub,
|
|
33
|
+
/**
|
|
34
|
+
* Close channel and any active subscriptions
|
|
35
|
+
*/
|
|
36
|
+
close,
|
|
37
|
+
// publish: pub,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Publish events to a channel via REST request
|
|
42
|
+
*
|
|
43
|
+
* @param channelName - publish destination
|
|
44
|
+
* @param event - JSON-serializable value or an array of values
|
|
45
|
+
* @param options
|
|
46
|
+
*/
|
|
47
|
+
async function post(channelName, event, options) {
|
|
48
|
+
const providerOptions = configure();
|
|
49
|
+
providerOptions.authenticationType = normalizeAuth(options?.authMode, providerOptions.authenticationType);
|
|
50
|
+
// trailing slash required in publish
|
|
51
|
+
const normalizedChannelName = channelName[0] === '/' ? channelName : `/${channelName}`;
|
|
52
|
+
const publishOptions = {
|
|
53
|
+
...providerOptions,
|
|
54
|
+
query: normalizedChannelName,
|
|
55
|
+
variables: serializeEvents(event),
|
|
56
|
+
authToken: options?.authToken,
|
|
57
|
+
};
|
|
58
|
+
const abortController = new AbortController();
|
|
59
|
+
const res = await appsyncRequest(Amplify, publishOptions, {}, abortController);
|
|
60
|
+
if (res.failed?.length > 0) {
|
|
61
|
+
return res.failed;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
function closeAll() {
|
|
65
|
+
AppSyncEventProvider.close();
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
export { closeAll, connect, post };
|
|
69
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../../src/internals/events/index.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Amplify } from '@aws-amplify/core';\nimport { AppSyncEventProvider as eventProvider } from '../../Providers/AWSAppSyncEventsProvider';\nimport { appsyncRequest } from './appsyncRequest';\nimport { configure, normalizeAuth, serializeEvents } from './utils';\n/**\n * Establish a WebSocket connection to an Events channel\n *\n */\nasync function connect(channelName, options) {\n const providerOptions = configure();\n providerOptions.authenticationType = normalizeAuth(options?.authMode, providerOptions.authenticationType);\n await eventProvider.connect(providerOptions);\n let _subscription;\n const sub = (observer, subOptions) => {\n const subscribeOptions = { ...providerOptions, query: channelName };\n subscribeOptions.authenticationType = normalizeAuth(subOptions?.authMode, subscribeOptions.authenticationType);\n _subscription = eventProvider\n .subscribe(subscribeOptions)\n .subscribe(observer);\n return _subscription;\n };\n // WS publish is not enabled in the service yet. It will be a follow up feature\n const _pub = async (event, pubOptions) => {\n const publishOptions = {\n ...providerOptions,\n query: channelName,\n variables: event,\n };\n publishOptions.authenticationType = normalizeAuth(pubOptions?.authMode, publishOptions.authenticationType);\n return eventProvider.publish(publishOptions);\n };\n const close = () => {\n _subscription && _subscription.unsubscribe();\n };\n return {\n /**\n * Subscribe to incoming events\n */\n subscribe: sub,\n /**\n * Close channel and any active subscriptions\n */\n close,\n // publish: pub,\n };\n}\n/**\n * Publish events to a channel via REST request\n *\n * @param channelName - publish destination\n * @param event - JSON-serializable value or an array of values\n * @param options\n */\nasync function post(channelName, event, options) {\n const providerOptions = configure();\n providerOptions.authenticationType = normalizeAuth(options?.authMode, providerOptions.authenticationType);\n // trailing slash required in publish\n const normalizedChannelName = channelName[0] === '/' ? channelName : `/${channelName}`;\n const publishOptions = {\n ...providerOptions,\n query: normalizedChannelName,\n variables: serializeEvents(event),\n authToken: options?.authToken,\n };\n const abortController = new AbortController();\n const res = await appsyncRequest(Amplify, publishOptions, {}, abortController);\n if (res.failed?.length > 0) {\n return res.failed;\n }\n}\nfunction closeAll() {\n eventProvider.close();\n}\nexport { connect, post, closeAll };\n"],"names":["eventProvider"],"mappings":";;;;;AAAA;AACA;AAKA;AACA;AACA;AACA;AACA,eAAe,OAAO,CAAC,WAAW,EAAE,OAAO,EAAE;AAC7C,IAAI,MAAM,eAAe,GAAG,SAAS,EAAE,CAAC;AACxC,IAAI,eAAe,CAAC,kBAAkB,GAAG,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,eAAe,CAAC,kBAAkB,CAAC,CAAC;AAC9G,IAAI,MAAMA,oBAAa,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;AACjD,IAAI,IAAI,aAAa,CAAC;AACtB,IAAI,MAAM,GAAG,GAAG,CAAC,QAAQ,EAAE,UAAU,KAAK;AAC1C,QAAQ,MAAM,gBAAgB,GAAG,EAAE,GAAG,eAAe,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;AAC5E,QAAQ,gBAAgB,CAAC,kBAAkB,GAAG,aAAa,CAAC,UAAU,EAAE,QAAQ,EAAE,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;AACvH,QAAQ,aAAa,GAAGA,oBAAa;AACrC,aAAa,SAAS,CAAC,gBAAgB,CAAC;AACxC,aAAa,SAAS,CAAC,QAAQ,CAAC,CAAC;AACjC,QAAQ,OAAO,aAAa,CAAC;AAC7B,KAAK,CAAC;AAWN,IAAI,MAAM,KAAK,GAAG,MAAM;AACxB,QAAQ,aAAa,IAAI,aAAa,CAAC,WAAW,EAAE,CAAC;AACrD,KAAK,CAAC;AACN,IAAI,OAAO;AACX;AACA;AACA;AACA,QAAQ,SAAS,EAAE,GAAG;AACtB;AACA;AACA;AACA,QAAQ,KAAK;AACb;AACA,KAAK,CAAC;AACN,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE;AACjD,IAAI,MAAM,eAAe,GAAG,SAAS,EAAE,CAAC;AACxC,IAAI,eAAe,CAAC,kBAAkB,GAAG,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,eAAe,CAAC,kBAAkB,CAAC,CAAC;AAC9G;AACA,IAAI,MAAM,qBAAqB,GAAG,WAAW,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,WAAW,GAAG,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC;AAC3F,IAAI,MAAM,cAAc,GAAG;AAC3B,QAAQ,GAAG,eAAe;AAC1B,QAAQ,KAAK,EAAE,qBAAqB;AACpC,QAAQ,SAAS,EAAE,eAAe,CAAC,KAAK,CAAC;AACzC,QAAQ,SAAS,EAAE,OAAO,EAAE,SAAS;AACrC,KAAK,CAAC;AACN,IAAI,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;AAClD,IAAI,MAAM,GAAG,GAAG,MAAM,cAAc,CAAC,OAAO,EAAE,cAAc,EAAE,EAAE,EAAE,eAAe,CAAC,CAAC;AACnF,IAAI,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,EAAE;AAChC,QAAQ,OAAO,GAAG,CAAC,MAAM,CAAC;AAC1B,KAAK;AACL,CAAC;AACD,SAAS,QAAQ,GAAG;AACpB,IAAIA,oBAAa,CAAC,KAAK,EAAE,CAAC;AAC1B;;;;"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Subscription } from 'rxjs';
|
|
2
|
+
import type { GraphQLAuthMode } from '@aws-amplify/core/internals/utils';
|
|
3
|
+
export interface SubscriptionObserver<T> {
|
|
4
|
+
next(value: T): void;
|
|
5
|
+
error(errorValue: any): void;
|
|
6
|
+
}
|
|
7
|
+
export interface EventsChannel {
|
|
8
|
+
subscribe(observer: SubscriptionObserver<any>, subOptions?: EventsOptions): Subscription;
|
|
9
|
+
close(): void;
|
|
10
|
+
}
|
|
11
|
+
export type ResolvedGraphQLAuthModes = Exclude<GraphQLAuthMode, 'identityPool'>;
|
|
12
|
+
export interface EventsOptions {
|
|
13
|
+
authMode?: GraphQLAuthMode;
|
|
14
|
+
authToken?: string;
|
|
15
|
+
}
|
|
16
|
+
export interface PublishedEvent {
|
|
17
|
+
identifier: string;
|
|
18
|
+
index: number;
|
|
19
|
+
}
|
|
20
|
+
export interface PublishResponse {
|
|
21
|
+
failed: PublishedEvent[];
|
|
22
|
+
successful: PublishedEvent[];
|
|
23
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { DocumentType, GraphQLAuthMode } from '@aws-amplify/core/internals/utils';
|
|
2
|
+
import type { ResolvedGraphQLAuthModes } from './types';
|
|
3
|
+
export declare const normalizeAuth: (explicitAuthMode: GraphQLAuthMode | undefined, defaultAuthMode: ResolvedGraphQLAuthModes) => ResolvedGraphQLAuthModes;
|
|
4
|
+
export declare const configure: () => {
|
|
5
|
+
appSyncGraphqlEndpoint: string;
|
|
6
|
+
region: string | undefined;
|
|
7
|
+
authenticationType: ResolvedGraphQLAuthModes;
|
|
8
|
+
apiKey: string | undefined;
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Event API expects and array of JSON strings
|
|
12
|
+
*
|
|
13
|
+
* @param events - JSON-serializable value or an array of values
|
|
14
|
+
* @returns array of JSON strings
|
|
15
|
+
*/
|
|
16
|
+
export declare const serializeEvents: (events: DocumentType | DocumentType[]) => string[];
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { Amplify } from '@aws-amplify/core';
|
|
2
|
+
|
|
3
|
+
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
4
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
const normalizeAuth = (explicitAuthMode, defaultAuthMode) => {
|
|
6
|
+
if (!explicitAuthMode) {
|
|
7
|
+
return defaultAuthMode;
|
|
8
|
+
}
|
|
9
|
+
if (explicitAuthMode === 'identityPool') {
|
|
10
|
+
return 'iam';
|
|
11
|
+
}
|
|
12
|
+
return explicitAuthMode;
|
|
13
|
+
};
|
|
14
|
+
const configure = () => {
|
|
15
|
+
const config = Amplify.getConfig();
|
|
16
|
+
const eventsConfig = config.API?.Events;
|
|
17
|
+
if (!eventsConfig) {
|
|
18
|
+
throw new Error('Amplify configuration is missing. Have you called Amplify.configure()?');
|
|
19
|
+
}
|
|
20
|
+
const configAuthMode = normalizeAuth(eventsConfig.defaultAuthMode, 'apiKey');
|
|
21
|
+
const options = {
|
|
22
|
+
appSyncGraphqlEndpoint: eventsConfig.endpoint,
|
|
23
|
+
region: eventsConfig.region,
|
|
24
|
+
authenticationType: configAuthMode,
|
|
25
|
+
apiKey: eventsConfig.apiKey,
|
|
26
|
+
};
|
|
27
|
+
return options;
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Event API expects and array of JSON strings
|
|
31
|
+
*
|
|
32
|
+
* @param events - JSON-serializable value or an array of values
|
|
33
|
+
* @returns array of JSON strings
|
|
34
|
+
*/
|
|
35
|
+
const serializeEvents = (events) => {
|
|
36
|
+
if (Array.isArray(events)) {
|
|
37
|
+
return events.map((ev, idx) => {
|
|
38
|
+
const eventJson = JSON.stringify(ev);
|
|
39
|
+
if (eventJson === undefined) {
|
|
40
|
+
throw new Error(`Event must be a valid JSON value. Received ${ev} at index ${idx}`);
|
|
41
|
+
}
|
|
42
|
+
return eventJson;
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
const eventJson = JSON.stringify(events);
|
|
46
|
+
if (eventJson === undefined) {
|
|
47
|
+
throw new Error(`Event must be a valid JSON value. Received ${events}`);
|
|
48
|
+
}
|
|
49
|
+
return [eventJson];
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
export { configure, normalizeAuth, serializeEvents };
|
|
53
|
+
//# sourceMappingURL=utils.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.mjs","sources":["../../../../src/internals/events/utils.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Amplify } from '@aws-amplify/core';\nexport const normalizeAuth = (explicitAuthMode, defaultAuthMode) => {\n if (!explicitAuthMode) {\n return defaultAuthMode;\n }\n if (explicitAuthMode === 'identityPool') {\n return 'iam';\n }\n return explicitAuthMode;\n};\nexport const configure = () => {\n const config = Amplify.getConfig();\n const eventsConfig = config.API?.Events;\n if (!eventsConfig) {\n throw new Error('Amplify configuration is missing. Have you called Amplify.configure()?');\n }\n const configAuthMode = normalizeAuth(eventsConfig.defaultAuthMode, 'apiKey');\n const options = {\n appSyncGraphqlEndpoint: eventsConfig.endpoint,\n region: eventsConfig.region,\n authenticationType: configAuthMode,\n apiKey: eventsConfig.apiKey,\n };\n return options;\n};\n/**\n * Event API expects and array of JSON strings\n *\n * @param events - JSON-serializable value or an array of values\n * @returns array of JSON strings\n */\nexport const serializeEvents = (events) => {\n if (Array.isArray(events)) {\n return events.map((ev, idx) => {\n const eventJson = JSON.stringify(ev);\n if (eventJson === undefined) {\n throw new Error(`Event must be a valid JSON value. Received ${ev} at index ${idx}`);\n }\n return eventJson;\n });\n }\n const eventJson = JSON.stringify(events);\n if (eventJson === undefined) {\n throw new Error(`Event must be a valid JSON value. Received ${events}`);\n }\n return [eventJson];\n};\n"],"names":[],"mappings":";;AAAA;AACA;AAEY,MAAC,aAAa,GAAG,CAAC,gBAAgB,EAAE,eAAe,KAAK;AACpE,IAAI,IAAI,CAAC,gBAAgB,EAAE;AAC3B,QAAQ,OAAO,eAAe,CAAC;AAC/B,KAAK;AACL,IAAI,IAAI,gBAAgB,KAAK,cAAc,EAAE;AAC7C,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,OAAO,gBAAgB,CAAC;AAC5B,EAAE;AACU,MAAC,SAAS,GAAG,MAAM;AAC/B,IAAI,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;AACvC,IAAI,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC;AAC5C,IAAI,IAAI,CAAC,YAAY,EAAE;AACvB,QAAQ,MAAM,IAAI,KAAK,CAAC,wEAAwE,CAAC,CAAC;AAClG,KAAK;AACL,IAAI,MAAM,cAAc,GAAG,aAAa,CAAC,YAAY,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;AACjF,IAAI,MAAM,OAAO,GAAG;AACpB,QAAQ,sBAAsB,EAAE,YAAY,CAAC,QAAQ;AACrD,QAAQ,MAAM,EAAE,YAAY,CAAC,MAAM;AACnC,QAAQ,kBAAkB,EAAE,cAAc;AAC1C,QAAQ,MAAM,EAAE,YAAY,CAAC,MAAM;AACnC,KAAK,CAAC;AACN,IAAI,OAAO,OAAO,CAAC;AACnB,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,eAAe,GAAG,CAAC,MAAM,KAAK;AAC3C,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AAC/B,QAAQ,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,KAAK;AACvC,YAAY,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;AACjD,YAAY,IAAI,SAAS,KAAK,SAAS,EAAE;AACzC,gBAAgB,MAAM,IAAI,KAAK,CAAC,CAAC,2CAA2C,EAAE,EAAE,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AACpG,aAAa;AACb,YAAY,OAAO,SAAS,CAAC;AAC7B,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAC7C,IAAI,IAAI,SAAS,KAAK,SAAS,EAAE;AACjC,QAAQ,MAAM,IAAI,KAAK,CAAC,CAAC,2CAA2C,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;AAChF,KAAK;AACL,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC;AACvB;;;;"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { GraphQLAuthMode } from '@aws-amplify/core/internals/utils';
|
|
2
|
+
import { AmplifyClassV6 } from '@aws-amplify/core';
|
|
3
|
+
export declare function headerBasedAuth(amplify: AmplifyClassV6, authMode: GraphQLAuthMode, apiKey: string | undefined, additionalHeaders?: Record<string, string>): Promise<{}>;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { GraphQLApiError } from '../utils/errors/GraphQLApiError.mjs';
|
|
2
|
+
import '../utils/errors/validation.mjs';
|
|
3
|
+
import 'graphql';
|
|
4
|
+
import { NO_AUTH_TOKEN_HEADER, NO_SIGNED_IN_USER, NO_VALID_AUTH_TOKEN, NO_VALID_CREDENTIALS, NO_API_KEY } from '../utils/errors/constants.mjs';
|
|
5
|
+
|
|
6
|
+
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
7
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
8
|
+
async function headerBasedAuth(amplify, authMode, apiKey, additionalHeaders = {}) {
|
|
9
|
+
let headers = {};
|
|
10
|
+
switch (authMode) {
|
|
11
|
+
case 'apiKey':
|
|
12
|
+
if (!apiKey) {
|
|
13
|
+
throw new GraphQLApiError(NO_API_KEY);
|
|
14
|
+
}
|
|
15
|
+
headers = {
|
|
16
|
+
'X-Api-Key': apiKey,
|
|
17
|
+
};
|
|
18
|
+
break;
|
|
19
|
+
case 'iam': {
|
|
20
|
+
const session = await amplify.Auth.fetchAuthSession();
|
|
21
|
+
if (session.credentials === undefined) {
|
|
22
|
+
throw new GraphQLApiError(NO_VALID_CREDENTIALS);
|
|
23
|
+
}
|
|
24
|
+
break;
|
|
25
|
+
}
|
|
26
|
+
case 'oidc':
|
|
27
|
+
case 'userPool': {
|
|
28
|
+
let token;
|
|
29
|
+
try {
|
|
30
|
+
token = (await amplify.Auth.fetchAuthSession()).tokens?.accessToken.toString();
|
|
31
|
+
}
|
|
32
|
+
catch (e) {
|
|
33
|
+
// fetchAuthSession failed
|
|
34
|
+
throw new GraphQLApiError({
|
|
35
|
+
...NO_SIGNED_IN_USER,
|
|
36
|
+
underlyingError: e,
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
// `fetchAuthSession()` succeeded but didn't return `tokens`.
|
|
40
|
+
// This may happen when unauthenticated access is enabled and there is
|
|
41
|
+
// no user signed in.
|
|
42
|
+
if (!token) {
|
|
43
|
+
throw new GraphQLApiError(NO_VALID_AUTH_TOKEN);
|
|
44
|
+
}
|
|
45
|
+
headers = {
|
|
46
|
+
Authorization: token,
|
|
47
|
+
};
|
|
48
|
+
break;
|
|
49
|
+
}
|
|
50
|
+
case 'lambda':
|
|
51
|
+
if (typeof additionalHeaders === 'object' &&
|
|
52
|
+
!additionalHeaders.Authorization) {
|
|
53
|
+
throw new GraphQLApiError(NO_AUTH_TOKEN_HEADER);
|
|
54
|
+
}
|
|
55
|
+
headers = {
|
|
56
|
+
Authorization: additionalHeaders.Authorization,
|
|
57
|
+
};
|
|
58
|
+
break;
|
|
59
|
+
}
|
|
60
|
+
return headers;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export { headerBasedAuth };
|
|
64
|
+
//# sourceMappingURL=graphqlAuth.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graphqlAuth.mjs","sources":["../../../src/internals/graphqlAuth.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { GraphQLApiError } from '../utils/errors';\nimport { NO_API_KEY, NO_AUTH_TOKEN_HEADER, NO_SIGNED_IN_USER, NO_VALID_AUTH_TOKEN, NO_VALID_CREDENTIALS, } from '../utils/errors/constants';\nexport async function headerBasedAuth(amplify, authMode, apiKey, additionalHeaders = {}) {\n let headers = {};\n switch (authMode) {\n case 'apiKey':\n if (!apiKey) {\n throw new GraphQLApiError(NO_API_KEY);\n }\n headers = {\n 'X-Api-Key': apiKey,\n };\n break;\n case 'iam': {\n const session = await amplify.Auth.fetchAuthSession();\n if (session.credentials === undefined) {\n throw new GraphQLApiError(NO_VALID_CREDENTIALS);\n }\n break;\n }\n case 'oidc':\n case 'userPool': {\n let token;\n try {\n token = (await amplify.Auth.fetchAuthSession()).tokens?.accessToken.toString();\n }\n catch (e) {\n // fetchAuthSession failed\n throw new GraphQLApiError({\n ...NO_SIGNED_IN_USER,\n underlyingError: e,\n });\n }\n // `fetchAuthSession()` succeeded but didn't return `tokens`.\n // This may happen when unauthenticated access is enabled and there is\n // no user signed in.\n if (!token) {\n throw new GraphQLApiError(NO_VALID_AUTH_TOKEN);\n }\n headers = {\n Authorization: token,\n };\n break;\n }\n case 'lambda':\n if (typeof additionalHeaders === 'object' &&\n !additionalHeaders.Authorization) {\n throw new GraphQLApiError(NO_AUTH_TOKEN_HEADER);\n }\n headers = {\n Authorization: additionalHeaders.Authorization,\n };\n break;\n case 'none':\n break;\n default:\n break;\n }\n return headers;\n}\n"],"names":[],"mappings":";;;;;AAAA;AACA;AAGO,eAAe,eAAe,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,iBAAiB,GAAG,EAAE,EAAE;AACzF,IAAI,IAAI,OAAO,GAAG,EAAE,CAAC;AACrB,IAAI,QAAQ,QAAQ;AACpB,QAAQ,KAAK,QAAQ;AACrB,YAAY,IAAI,CAAC,MAAM,EAAE;AACzB,gBAAgB,MAAM,IAAI,eAAe,CAAC,UAAU,CAAC,CAAC;AACtD,aAAa;AACb,YAAY,OAAO,GAAG;AACtB,gBAAgB,WAAW,EAAE,MAAM;AACnC,aAAa,CAAC;AACd,YAAY,MAAM;AAClB,QAAQ,KAAK,KAAK,EAAE;AACpB,YAAY,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAClE,YAAY,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,EAAE;AACnD,gBAAgB,MAAM,IAAI,eAAe,CAAC,oBAAoB,CAAC,CAAC;AAChE,aAAa;AACb,YAAY,MAAM;AAClB,SAAS;AACT,QAAQ,KAAK,MAAM,CAAC;AACpB,QAAQ,KAAK,UAAU,EAAE;AACzB,YAAY,IAAI,KAAK,CAAC;AACtB,YAAY,IAAI;AAChB,gBAAgB,KAAK,GAAG,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,QAAQ,EAAE,CAAC;AAC/F,aAAa;AACb,YAAY,OAAO,CAAC,EAAE;AACtB;AACA,gBAAgB,MAAM,IAAI,eAAe,CAAC;AAC1C,oBAAoB,GAAG,iBAAiB;AACxC,oBAAoB,eAAe,EAAE,CAAC;AACtC,iBAAiB,CAAC,CAAC;AACnB,aAAa;AACb;AACA;AACA;AACA,YAAY,IAAI,CAAC,KAAK,EAAE;AACxB,gBAAgB,MAAM,IAAI,eAAe,CAAC,mBAAmB,CAAC,CAAC;AAC/D,aAAa;AACb,YAAY,OAAO,GAAG;AACtB,gBAAgB,aAAa,EAAE,KAAK;AACpC,aAAa,CAAC;AACd,YAAY,MAAM;AAClB,SAAS;AACT,QAAQ,KAAK,QAAQ;AACrB,YAAY,IAAI,OAAO,iBAAiB,KAAK,QAAQ;AACrD,gBAAgB,CAAC,iBAAiB,CAAC,aAAa,EAAE;AAClD,gBAAgB,MAAM,IAAI,eAAe,CAAC,oBAAoB,CAAC,CAAC;AAChE,aAAa;AACb,YAAY,OAAO,GAAG;AACtB,gBAAgB,aAAa,EAAE,iBAAiB,CAAC,aAAa;AAC9D,aAAa,CAAC;AACd,YAAY,MAAM;AAKlB,KAAK;AACL,IAAI,OAAO,OAAO,CAAC;AACnB;;;;"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { AmplifyClassV6 } from '@aws-amplify/core';
|
|
2
|
+
import { post } from '@aws-amplify/api-rest/internals';
|
|
3
|
+
export declare function graphqlRequest(amplify: AmplifyClassV6, url: string, options: any, abortController: AbortController, _post?: typeof post): Promise<import("@aws-amplify/core/internals/utils").DocumentType>;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { AmplifyUrl } from '@aws-amplify/core/internals/utils';
|
|
2
|
+
import { post } from '@aws-amplify/api-rest/internals';
|
|
3
|
+
|
|
4
|
+
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
5
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
6
|
+
async function graphqlRequest(amplify, url, options, abortController, _post) {
|
|
7
|
+
const p = _post ?? post;
|
|
8
|
+
const { body: responseBody } = await p(amplify, {
|
|
9
|
+
url: new AmplifyUrl(url),
|
|
10
|
+
options,
|
|
11
|
+
abortController,
|
|
12
|
+
});
|
|
13
|
+
const response = await responseBody.json();
|
|
14
|
+
return response;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export { graphqlRequest };
|
|
18
|
+
//# sourceMappingURL=graphqlRequest.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graphqlRequest.mjs","sources":["../../../src/internals/graphqlRequest.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { AmplifyUrl } from '@aws-amplify/core/internals/utils';\nimport { \n// cancel as cancelREST,\npost,\n// updateRequestToBeCancellable,\n } from '@aws-amplify/api-rest/internals';\nexport async function graphqlRequest(amplify, url, options, abortController, _post) {\n const p = _post ?? post;\n const { body: responseBody } = await p(amplify, {\n url: new AmplifyUrl(url),\n options,\n abortController,\n });\n const response = await responseBody.json();\n return response;\n}\n"],"names":[],"mappings":";;;AAAA;AACA;AAOO,eAAe,cAAc,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE;AACpF,IAAI,MAAM,CAAC,GAAG,KAAK,IAAI,IAAI,CAAC;AAC5B,IAAI,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC,CAAC,OAAO,EAAE;AACpD,QAAQ,GAAG,EAAE,IAAI,UAAU,CAAC,GAAG,CAAC;AAChC,QAAQ,OAAO;AACf,QAAQ,eAAe;AACvB,KAAK,CAAC,CAAC;AACP,IAAI,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,CAAC;AAC/C,IAAI,OAAO,QAAQ,CAAC;AACpB;;;;"}
|
|
@@ -9,7 +9,35 @@ interface LinkedConnectionStates {
|
|
|
9
9
|
keepAliveState: LinkedHealthState;
|
|
10
10
|
}
|
|
11
11
|
export declare const CONNECTION_CHANGE: {
|
|
12
|
-
|
|
12
|
+
readonly KEEP_ALIVE_MISSED: {
|
|
13
|
+
readonly keepAliveState: "unhealthy";
|
|
14
|
+
};
|
|
15
|
+
readonly KEEP_ALIVE: {
|
|
16
|
+
readonly keepAliveState: "healthy";
|
|
17
|
+
};
|
|
18
|
+
readonly CONNECTION_ESTABLISHED: {
|
|
19
|
+
readonly connectionState: "connected";
|
|
20
|
+
};
|
|
21
|
+
readonly CONNECTION_FAILED: {
|
|
22
|
+
readonly intendedConnectionState: "disconnected";
|
|
23
|
+
readonly connectionState: "disconnected";
|
|
24
|
+
};
|
|
25
|
+
readonly CLOSING_CONNECTION: {
|
|
26
|
+
readonly intendedConnectionState: "disconnected";
|
|
27
|
+
};
|
|
28
|
+
readonly OPENING_CONNECTION: {
|
|
29
|
+
readonly intendedConnectionState: "connected";
|
|
30
|
+
readonly connectionState: "connecting";
|
|
31
|
+
};
|
|
32
|
+
readonly CLOSED: {
|
|
33
|
+
readonly connectionState: "disconnected";
|
|
34
|
+
};
|
|
35
|
+
readonly ONLINE: {
|
|
36
|
+
readonly networkState: "connected";
|
|
37
|
+
};
|
|
38
|
+
readonly OFFLINE: {
|
|
39
|
+
readonly networkState: "disconnected";
|
|
40
|
+
};
|
|
13
41
|
};
|
|
14
42
|
export declare class ConnectionStateMonitor {
|
|
15
43
|
/**
|
|
@@ -5,7 +5,7 @@ export declare enum ReconnectEvent {
|
|
|
5
5
|
}
|
|
6
6
|
/**
|
|
7
7
|
* Captures the reconnect event logic used to determine when to reconnect to PubSub providers.
|
|
8
|
-
*
|
|
8
|
+
* Reconnect attempts are delayed by 5 seconds to let the interface settle.
|
|
9
9
|
* Attempting to reconnect only once creates unrecoverable states when the network state isn't
|
|
10
10
|
* supported by the browser, so this keeps retrying every minute until halted.
|
|
11
11
|
*/
|
|
@@ -7,7 +7,7 @@ var ReconnectEvent;
|
|
|
7
7
|
})(ReconnectEvent || (ReconnectEvent = {}));
|
|
8
8
|
/**
|
|
9
9
|
* Captures the reconnect event logic used to determine when to reconnect to PubSub providers.
|
|
10
|
-
*
|
|
10
|
+
* Reconnect attempts are delayed by 5 seconds to let the interface settle.
|
|
11
11
|
* Attempting to reconnect only once creates unrecoverable states when the network state isn't
|
|
12
12
|
* supported by the browser, so this keeps retrying every minute until halted.
|
|
13
13
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReconnectionMonitor.mjs","sources":["../../../src/utils/ReconnectionMonitor.ts"],"sourcesContent":["import { RECONNECT_DELAY, RECONNECT_INTERVAL } from '../Providers/constants';\nexport var ReconnectEvent;\n(function (ReconnectEvent) {\n ReconnectEvent[\"START_RECONNECT\"] = \"START_RECONNECT\";\n ReconnectEvent[\"HALT_RECONNECT\"] = \"HALT_RECONNECT\";\n})(ReconnectEvent || (ReconnectEvent = {}));\n/**\n * Captures the reconnect event logic used to determine when to reconnect to PubSub providers.\n *
|
|
1
|
+
{"version":3,"file":"ReconnectionMonitor.mjs","sources":["../../../src/utils/ReconnectionMonitor.ts"],"sourcesContent":["import { RECONNECT_DELAY, RECONNECT_INTERVAL } from '../Providers/constants';\nexport var ReconnectEvent;\n(function (ReconnectEvent) {\n ReconnectEvent[\"START_RECONNECT\"] = \"START_RECONNECT\";\n ReconnectEvent[\"HALT_RECONNECT\"] = \"HALT_RECONNECT\";\n})(ReconnectEvent || (ReconnectEvent = {}));\n/**\n * Captures the reconnect event logic used to determine when to reconnect to PubSub providers.\n * Reconnect attempts are delayed by 5 seconds to let the interface settle.\n * Attempting to reconnect only once creates unrecoverable states when the network state isn't\n * supported by the browser, so this keeps retrying every minute until halted.\n */\nexport class ReconnectionMonitor {\n constructor() {\n this.reconnectObservers = [];\n }\n /**\n * Add reconnect observer to the list of observers to alert on reconnect\n */\n addObserver(reconnectObserver) {\n this.reconnectObservers.push(reconnectObserver);\n }\n /**\n * Given a reconnect event, start the appropriate behavior\n */\n record(event) {\n if (event === ReconnectEvent.START_RECONNECT) {\n // If the reconnection hasn't been started\n if (this.reconnectSetTimeoutId === undefined &&\n this.reconnectIntervalId === undefined) {\n this.reconnectSetTimeoutId = setTimeout(() => {\n // Reconnect now\n this._triggerReconnect();\n // Retry reconnect every periodically until it works\n this.reconnectIntervalId = setInterval(() => {\n this._triggerReconnect();\n }, RECONNECT_INTERVAL);\n }, RECONNECT_DELAY);\n }\n }\n if (event === ReconnectEvent.HALT_RECONNECT) {\n if (this.reconnectIntervalId) {\n clearInterval(this.reconnectIntervalId);\n this.reconnectIntervalId = undefined;\n }\n if (this.reconnectSetTimeoutId) {\n clearTimeout(this.reconnectSetTimeoutId);\n this.reconnectSetTimeoutId = undefined;\n }\n }\n }\n /**\n * Complete all reconnect observers\n */\n close() {\n this.reconnectObservers.forEach(reconnectObserver => {\n reconnectObserver.complete?.();\n });\n }\n _triggerReconnect() {\n this.reconnectObservers.forEach(reconnectObserver => {\n reconnectObserver.next?.();\n });\n }\n}\n"],"names":[],"mappings":";;AACU,IAAC,eAAe;AAC1B,CAAC,UAAU,cAAc,EAAE;AAC3B,IAAI,cAAc,CAAC,iBAAiB,CAAC,GAAG,iBAAiB,CAAC;AAC1D,IAAI,cAAc,CAAC,gBAAgB,CAAC,GAAG,gBAAgB,CAAC;AACxD,CAAC,EAAE,cAAc,KAAK,cAAc,GAAG,EAAE,CAAC,CAAC,CAAC;AAC5C;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,mBAAmB,CAAC;AACjC,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC;AACrC,KAAK;AACL;AACA;AACA;AACA,IAAI,WAAW,CAAC,iBAAiB,EAAE;AACnC,QAAQ,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AACxD,KAAK;AACL;AACA;AACA;AACA,IAAI,MAAM,CAAC,KAAK,EAAE;AAClB,QAAQ,IAAI,KAAK,KAAK,cAAc,CAAC,eAAe,EAAE;AACtD;AACA,YAAY,IAAI,IAAI,CAAC,qBAAqB,KAAK,SAAS;AACxD,gBAAgB,IAAI,CAAC,mBAAmB,KAAK,SAAS,EAAE;AACxD,gBAAgB,IAAI,CAAC,qBAAqB,GAAG,UAAU,CAAC,MAAM;AAC9D;AACA,oBAAoB,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC7C;AACA,oBAAoB,IAAI,CAAC,mBAAmB,GAAG,WAAW,CAAC,MAAM;AACjE,wBAAwB,IAAI,CAAC,iBAAiB,EAAE,CAAC;AACjD,qBAAqB,EAAE,kBAAkB,CAAC,CAAC;AAC3C,iBAAiB,EAAE,eAAe,CAAC,CAAC;AACpC,aAAa;AACb,SAAS;AACT,QAAQ,IAAI,KAAK,KAAK,cAAc,CAAC,cAAc,EAAE;AACrD,YAAY,IAAI,IAAI,CAAC,mBAAmB,EAAE;AAC1C,gBAAgB,aAAa,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;AACxD,gBAAgB,IAAI,CAAC,mBAAmB,GAAG,SAAS,CAAC;AACrD,aAAa;AACb,YAAY,IAAI,IAAI,CAAC,qBAAqB,EAAE;AAC5C,gBAAgB,YAAY,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;AACzD,gBAAgB,IAAI,CAAC,qBAAqB,GAAG,SAAS,CAAC;AACvD,aAAa;AACb,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA,IAAI,KAAK,GAAG;AACZ,QAAQ,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,iBAAiB,IAAI;AAC7D,YAAY,iBAAiB,CAAC,QAAQ,IAAI,CAAC;AAC3C,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,iBAAiB,GAAG;AACxB,QAAQ,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,iBAAiB,IAAI;AAC7D,YAAY,iBAAiB,CAAC,IAAI,IAAI,CAAC;AACvC,SAAS,CAAC,CAAC;AACX,KAAK;AACL;;;;"}
|
|
@@ -28,6 +28,25 @@ const resolveConfig = (amplify) => {
|
|
|
28
28
|
region,
|
|
29
29
|
};
|
|
30
30
|
};
|
|
31
|
+
// /**
|
|
32
|
+
// * @internal
|
|
33
|
+
// */
|
|
34
|
+
// export const resolveEventsConfig = (amplify: AmplifyClassV6) => {
|
|
35
|
+
// const config = amplify.getConfig();
|
|
36
|
+
// if (!config.API?.Events) {
|
|
37
|
+
// logger.warn(
|
|
38
|
+
// 'The Events configuration is missing. This is likely due to Amplify.configure() not being called prior to using events.connect() or events.post().',
|
|
39
|
+
// );
|
|
40
|
+
// }
|
|
41
|
+
// const { apiKey, endpoint, defaultAuthMode, region } =
|
|
42
|
+
// config.API?.Events ?? {};
|
|
43
|
+
// return {
|
|
44
|
+
// apiKey,
|
|
45
|
+
// defaultAuthMode,
|
|
46
|
+
// appSyncGraphqlEndpoint: endpoint,
|
|
47
|
+
// region,
|
|
48
|
+
// };
|
|
49
|
+
// };
|
|
31
50
|
|
|
32
51
|
export { resolveConfig };
|
|
33
52
|
//# sourceMappingURL=resolveConfig.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolveConfig.mjs","sources":["../../../src/utils/resolveConfig.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { ConsoleLogger } from '@aws-amplify/core';\nimport { APIValidationErrorCode, assertValidationError } from './errors';\nconst logger = new ConsoleLogger('GraphQLAPI resolveConfig');\n/**\n * @internal\n */\nexport const resolveConfig = (amplify) => {\n const config = amplify.getConfig();\n if (!config.API?.GraphQL) {\n logger.warn('The API configuration is missing. This is likely due to Amplify.configure() not being called prior to generateClient().');\n }\n const { apiKey, customEndpoint, customEndpointRegion, defaultAuthMode, endpoint, region, } = config.API?.GraphQL ?? {};\n // TODO: re-enable when working in all test environments:\n // assertValidationError(!!endpoint, APIValidationErrorCode.NoEndpoint);\n assertValidationError(!(!customEndpoint && customEndpointRegion), APIValidationErrorCode.NoCustomEndpoint);\n return {\n apiKey,\n customEndpoint,\n customEndpointRegion,\n defaultAuthMode,\n endpoint,\n region,\n };\n};\n"],"names":[],"mappings":";;;;;;AAAA;AACA;AAGA,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,0BAA0B,CAAC,CAAC;AAC7D;AACA;AACA;AACY,MAAC,aAAa,GAAG,CAAC,OAAO,KAAK;AAC1C,IAAI,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;AACvC,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE;AAC9B,QAAQ,MAAM,CAAC,IAAI,CAAC,yHAAyH,CAAC,CAAC;AAC/I,KAAK;AACL,IAAI,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,oBAAoB,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,EAAE,OAAO,IAAI,EAAE,CAAC;AAC3H;AACA;AACA,IAAI,qBAAqB,CAAC,EAAE,CAAC,cAAc,IAAI,oBAAoB,CAAC,EAAE,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;AAC/G,IAAI,OAAO;AACX,QAAQ,MAAM;AACd,QAAQ,cAAc;AACtB,QAAQ,oBAAoB;AAC5B,QAAQ,eAAe;AACvB,QAAQ,QAAQ;AAChB,QAAQ,MAAM;AACd,KAAK,CAAC;AACN;;;;"}
|
|
1
|
+
{"version":3,"file":"resolveConfig.mjs","sources":["../../../src/utils/resolveConfig.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { ConsoleLogger } from '@aws-amplify/core';\nimport { APIValidationErrorCode, assertValidationError } from './errors';\nconst logger = new ConsoleLogger('GraphQLAPI resolveConfig');\n/**\n * @internal\n */\nexport const resolveConfig = (amplify) => {\n const config = amplify.getConfig();\n if (!config.API?.GraphQL) {\n logger.warn('The API configuration is missing. This is likely due to Amplify.configure() not being called prior to generateClient().');\n }\n const { apiKey, customEndpoint, customEndpointRegion, defaultAuthMode, endpoint, region, } = config.API?.GraphQL ?? {};\n // TODO: re-enable when working in all test environments:\n // assertValidationError(!!endpoint, APIValidationErrorCode.NoEndpoint);\n assertValidationError(!(!customEndpoint && customEndpointRegion), APIValidationErrorCode.NoCustomEndpoint);\n return {\n apiKey,\n customEndpoint,\n customEndpointRegion,\n defaultAuthMode,\n endpoint,\n region,\n };\n};\n// /**\n// * @internal\n// */\n// export const resolveEventsConfig = (amplify: AmplifyClassV6) => {\n// \tconst config = amplify.getConfig();\n// \tif (!config.API?.Events) {\n// \t\tlogger.warn(\n// \t\t\t'The Events configuration is missing. This is likely due to Amplify.configure() not being called prior to using events.connect() or events.post().',\n// \t\t);\n// \t}\n// \tconst { apiKey, endpoint, defaultAuthMode, region } =\n// \t\tconfig.API?.Events ?? {};\n// \treturn {\n// \t\tapiKey,\n// \t\tdefaultAuthMode,\n// \t\tappSyncGraphqlEndpoint: endpoint,\n// \t\tregion,\n// \t};\n// };\n"],"names":[],"mappings":";;;;;;AAAA;AACA;AAGA,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,0BAA0B,CAAC,CAAC;AAC7D;AACA;AACA;AACY,MAAC,aAAa,GAAG,CAAC,OAAO,KAAK;AAC1C,IAAI,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;AACvC,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE;AAC9B,QAAQ,MAAM,CAAC,IAAI,CAAC,yHAAyH,CAAC,CAAC;AAC/I,KAAK;AACL,IAAI,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,oBAAoB,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,EAAE,OAAO,IAAI,EAAE,CAAC;AAC3H;AACA;AACA,IAAI,qBAAqB,CAAC,EAAE,CAAC,cAAc,IAAI,oBAAoB,CAAC,EAAE,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;AAC/G,IAAI,OAAO;AACX,QAAQ,MAAM;AACd,QAAQ,cAAc;AACtB,QAAQ,oBAAoB;AAC5B,QAAQ,eAAe;AACvB,QAAQ,QAAQ;AAChB,QAAQ,MAAM;AACd,KAAK,CAAC;AACN,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aws-amplify/api-graphql",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.4.1-events.0619318.0+0619318",
|
|
4
4
|
"description": "Api-graphql category of aws-amplify",
|
|
5
5
|
"main": "./dist/cjs/index.js",
|
|
6
6
|
"module": "./dist/esm/index.mjs",
|
|
@@ -84,8 +84,8 @@
|
|
|
84
84
|
"server"
|
|
85
85
|
],
|
|
86
86
|
"dependencies": {
|
|
87
|
-
"@aws-amplify/api-rest": "4.0.
|
|
88
|
-
"@aws-amplify/core": "6.4.
|
|
87
|
+
"@aws-amplify/api-rest": "4.0.52-events.0619318.0+0619318",
|
|
88
|
+
"@aws-amplify/core": "6.4.5-events.0619318.0+0619318",
|
|
89
89
|
"@aws-amplify/data-schema": "^1.7.0",
|
|
90
90
|
"@aws-sdk/types": "3.387.0",
|
|
91
91
|
"graphql": "15.8.0",
|
|
@@ -101,5 +101,5 @@
|
|
|
101
101
|
"limit": "91.7 kB"
|
|
102
102
|
}
|
|
103
103
|
],
|
|
104
|
-
"gitHead": "
|
|
104
|
+
"gitHead": "06193189d7eb5d64880eb70d94c0a82748cc2097"
|
|
105
105
|
}
|