Skip to content

Commit 8b42723

Browse files
release(required): Amplify JS release (#14447)
2 parents cfcfc5f + 88113b6 commit 8b42723

File tree

10 files changed

+180
-104
lines changed

10 files changed

+180
-104
lines changed

.github/CODEOWNERS

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -15,24 +15,24 @@
1515

1616
# The following paths involve server-side use cases, token/user session management.
1717
# Changes made to these paths requires additional reviews and approvals.
18-
/packages/auth @cshfang @HuiSF @ashika112 @maxbeck-amzn @calebpollman
19-
/packages/aws-amplify/src/adapter-core @cshfang @HuiSF @ashika112 @maxbeck-amzn @calebpollman
20-
/packages/core/src/adapterCore @cshfang @HuiSF @ashika112 @maxbeck-amzn @calebpollman
21-
/packages/core/src/singleton @cshfang @HuiSF @ashika112 @maxbeck-amzn @calebpollman
22-
/packages/core/src/utils/convert @cshfang @HuiSF @ashika112 @maxbeck-amzn @calebpollman
23-
/packages/core/src/utils/WordArray.ts @cshfang @HuiSF @ashika112 @maxbeck-amzn @calebpollman
24-
/packages/core/src/storage @cshfang @HuiSF @ashika112 @maxbeck-amzn @calebpollman
25-
/packages/core/src/utils/generateRandomString.ts @cshfang @HuiSF @ashika112 @maxbeck-amzn @calebpollman
26-
/packages/core/src/utils/globalHelpers @cshfang @HuiSF @ashika112 @maxbeck-amzn @calebpollman
27-
/packages/core/src/utils/urlSafeDecode.ts @cshfang @HuiSF @ashika112 @maxbeck-amzn @calebpollman
28-
/packages/core/src/awsClients/cognitoIdentity @cshfang @HuiSF @ashika112 @maxbeck-amzn @calebpollman
29-
/packages/core/src/clients/internal @cshfang @HuiSF @ashika112 @maxbeck-amzn @calebpollman
30-
/packages/core/src/Hub @cshfang @HuiSF @ashika112 @maxbeck-amzn @calebpollman
31-
/packages/adapter-nextjs @cshfang @HuiSF @ashika112 @maxbeck-amzn @calebpollman
32-
/packages/rtn-web-browser @cshfang @HuiSF @ashika112 @maxbeck-amzn @calebpollman
33-
/packages/storage/src/providers/s3/apis/internal @cshfang @HuiSF @ashika112 @maxbeck-amzn @calebpollman
34-
/packages/storage/src/providers/s3/apis/server @cshfang @HuiSF @ashika112 @maxbeck-amzn @calebpollman
35-
/packages/api-rest/src/apis/server.ts @cshfang @HuiSF @ashika112 @maxbeck-amzn @calebpollman
36-
/packages/api-rest/src/apis/common/internalPost.ts @cshfang @HuiSF @ashika112 @maxbeck-amzn @calebpollman
37-
/packages/api-graphql/src/server @cshfang @HuiSF @ashika112 @maxbeck-amzn @calebpollman
38-
/packages/api-graphql/src/internals/server @cshfang @HuiSF @ashika112 @maxbeck-amzn @calebpollman
18+
/packages/auth @pranavosu @sobolk @Amplifiyer @avi-karthik
19+
/packages/aws-amplify/src/adapter-core @pranavosu @sobolk @Amplifiyer @avi-karthik
20+
/packages/core/src/adapterCore @pranavosu @sobolk @Amplifiyer @avi-karthik
21+
/packages/core/src/singleton @pranavosu @sobolk @Amplifiyer @avi-karthik
22+
/packages/core/src/utils/convert @pranavosu @sobolk @Amplifiyer @avi-karthik
23+
/packages/core/src/utils/WordArray.ts @pranavosu @sobolk @Amplifiyer @avi-karthik
24+
/packages/core/src/storage @pranavosu @sobolk @Amplifiyer @avi-karthik
25+
/packages/core/src/utils/generateRandomString.ts @pranavosu @sobolk @Amplifiyer @avi-karthik
26+
/packages/core/src/utils/globalHelpers @pranavosu @sobolk @Amplifiyer @avi-karthik
27+
/packages/core/src/utils/urlSafeDecode.ts @pranavosu @sobolk @Amplifiyer @avi-karthik
28+
/packages/core/src/awsClients/cognitoIdentity @pranavosu @sobolk @Amplifiyer @avi-karthik
29+
/packages/core/src/clients/internal @pranavosu @sobolk @Amplifiyer @avi-karthik
30+
/packages/core/src/Hub @pranavosu @sobolk @Amplifiyer @avi-karthik
31+
/packages/adapter-nextjs @pranavosu @sobolk @Amplifiyer @avi-karthik
32+
/packages/rtn-web-browser @pranavosu @sobolk @Amplifiyer @avi-karthik
33+
/packages/storage/src/providers/s3/apis/internal @pranavosu @sobolk @Amplifiyer @avi-karthik
34+
/packages/storage/src/providers/s3/apis/server @pranavosu @sobolk @Amplifiyer @avi-karthik
35+
/packages/api-rest/src/apis/server.ts @pranavosu @sobolk @Amplifiyer @avi-karthik
36+
/packages/api-rest/src/apis/common/internalPost.ts @pranavosu @sobolk @Amplifiyer @avi-karthik
37+
/packages/api-graphql/src/server @pranavosu @sobolk @Amplifiyer @avi-karthik
38+
/packages/api-graphql/src/internals/server @pranavosu @sobolk @Amplifiyer @avi-karthik

packages/api-graphql/__tests__/AWSAppSyncEventProvider.test.ts

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,64 @@ jest.mock('@aws-amplify/core', () => {
6060
});
6161

6262
describe('AppSyncEventProvider', () => {
63+
describe('connect', () => {
64+
let fakeWebSocketInterface: FakeWebSocketInterface;
65+
const loggerSpy: jest.SpyInstance = jest.spyOn(
66+
ConsoleLogger.prototype,
67+
'_log',
68+
);
69+
let provider: AWSAppSyncEventProvider;
70+
beforeEach(async () => {
71+
fakeWebSocketInterface = new FakeWebSocketInterface();
72+
provider = new AWSAppSyncEventProvider();
73+
74+
Object.defineProperty(provider, 'socketStatus', {
75+
value: constants.SOCKET_STATUS.CLOSED,
76+
});
77+
78+
jest.spyOn(provider as any, '_getNewWebSocket').mockImplementation(() => {
79+
fakeWebSocketInterface.newWebSocket();
80+
return fakeWebSocketInterface.webSocket as WebSocket;
81+
});
82+
})
83+
84+
afterEach(async () => {
85+
provider?.close();
86+
await fakeWebSocketInterface?.closeInterface();
87+
fakeWebSocketInterface?.teardown();
88+
loggerSpy.mockClear();
89+
});
90+
91+
test('socket status should be READY', async () => {
92+
93+
// Connect to the provider
94+
const connectPromise = provider.connect({
95+
appSyncGraphqlEndpoint: 'ws://localhost:8080',
96+
authenticationType: 'apiKey',
97+
apiKey: 'test-api-key',
98+
region: 'us-east-1'
99+
});
100+
101+
// Verify the socket status to be CONNECTING
102+
await new Promise(resolve => setTimeout(resolve, 1));
103+
expect((provider as any).socketStatus).toBe(constants.SOCKET_STATUS.CONNECTING);
104+
105+
// Trigger the websocket open event
106+
await fakeWebSocketInterface.readyForUse;
107+
await fakeWebSocketInterface.triggerOpen();
108+
109+
// Initiate handshake
110+
await fakeWebSocketInterface.sendDataMessage({
111+
type: MESSAGE_TYPES.GQL_CONNECTION_ACK
112+
});
113+
114+
// Wait for connection to complete
115+
await connectPromise;
116+
117+
// Verify the socket status
118+
expect((provider as any).socketStatus).toBe(constants.SOCKET_STATUS.READY);
119+
});
120+
});
63121
describe('subscribe()', () => {
64122
describe('returned observer', () => {
65123
describe('connection logic with mocked websocket', () => {

packages/api-graphql/src/Providers/AWSAppSyncEventsProvider/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ export class AWSAppSyncEventProvider extends AWSWebSocketProvider {
6161
}
6262

6363
public async connect(options: AWSAppSyncEventProviderOptions) {
64-
super.connect(options);
64+
return super.connect(options);
6565
}
6666

6767
public subscribe(

packages/auth/src/foundation/factories/serviceClients/cognitoIdentityProvider/constants.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ export const DEFAULT_SERVICE_CLIENT_API_CONFIG = {
1414
service: COGNITO_IDP_SERVICE_NAME,
1515
retryDecider: getRetryDecider(parseJsonError),
1616
computeDelay: jitteredBackoff,
17-
userAgentValue: getAmplifyUserAgent(),
17+
get userAgentValue() {
18+
return getAmplifyUserAgent();
19+
},
1820
cache: 'no-store',
1921
};

packages/aws-amplify/package.json

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -307,7 +307,7 @@
307307
"name": "[Analytics] record (Pinpoint)",
308308
"path": "./dist/esm/analytics/index.mjs",
309309
"import": "{ record }",
310-
"limit": "17.92 kB"
310+
"limit": "17.98 kB"
311311
},
312312
{
313313
"name": "[Analytics] record (Kinesis)",
@@ -331,7 +331,7 @@
331331
"name": "[Analytics] identifyUser (Pinpoint)",
332332
"path": "./dist/esm/analytics/index.mjs",
333333
"import": "{ identifyUser }",
334-
"limit": "16.40 kB"
334+
"limit": "16.42 kB"
335335
},
336336
{
337337
"name": "[Analytics] enable",
@@ -367,13 +367,13 @@
367367
"name": "[Auth] resetPassword (Cognito)",
368368
"path": "./dist/esm/auth/index.mjs",
369369
"import": "{ resetPassword }",
370-
"limit": "13.31 kB"
370+
"limit": "13.32 kB"
371371
},
372372
{
373373
"name": "[Auth] confirmResetPassword (Cognito)",
374374
"path": "./dist/esm/auth/index.mjs",
375375
"import": "{ confirmResetPassword }",
376-
"limit": "13.25 kB"
376+
"limit": "13.26 kB"
377377
},
378378
{
379379
"name": "[Auth] signIn (Cognito)",
@@ -421,13 +421,13 @@
421421
"name": "[Auth] updatePassword (Cognito)",
422422
"path": "./dist/esm/auth/index.mjs",
423423
"import": "{ updatePassword }",
424-
"limit": "13.61 kB"
424+
"limit": "13.62 kB"
425425
},
426426
{
427427
"name": "[Auth] setUpTOTP (Cognito)",
428428
"path": "./dist/esm/auth/index.mjs",
429429
"import": "{ setUpTOTP }",
430-
"limit": "13.89 kB"
430+
"limit": "13.91 kB"
431431
},
432432
{
433433
"name": "[Auth] updateUserAttributes (Cognito)",
@@ -451,7 +451,7 @@
451451
"name": "[Auth] signInWithRedirect (Cognito)",
452452
"path": "./dist/esm/auth/index.mjs",
453453
"import": "{ signInWithRedirect }",
454-
"limit": "19.35 kB"
454+
"limit": "19.37 kB"
455455
},
456456
{
457457
"name": "[Auth] fetchUserAttributes (Cognito)",
@@ -469,7 +469,7 @@
469469
"name": "[Auth] OAuth Auth Flow (Cognito)",
470470
"path": "./dist/esm/auth/index.mjs",
471471
"import": "{ signInWithRedirect, signOut, fetchAuthSession }",
472-
"limit": "19.92 kB"
472+
"limit": "19.93 kB"
473473
},
474474
{
475475
"name": "[Auth] Associate WebAuthN Credential (Cognito)",
@@ -493,25 +493,25 @@
493493
"name": "[Storage] copy (S3)",
494494
"path": "./dist/esm/storage/index.mjs",
495495
"import": "{ copy }",
496-
"limit": "16.90 kB"
496+
"limit": "16.93 kB"
497497
},
498498
{
499499
"name": "[Storage] downloadData (S3)",
500500
"path": "./dist/esm/storage/index.mjs",
501501
"import": "{ downloadData }",
502-
"limit": "17.26 kB"
502+
"limit": "17.29 kB"
503503
},
504504
{
505505
"name": "[Storage] getProperties (S3)",
506506
"path": "./dist/esm/storage/index.mjs",
507507
"import": "{ getProperties }",
508-
"limit": "16.50 kB"
508+
"limit": "16.51 kB"
509509
},
510510
{
511511
"name": "[Storage] getUrl (S3)",
512512
"path": "./dist/esm/storage/index.mjs",
513513
"import": "{ getUrl }",
514-
"limit": "17.75 kB"
514+
"limit": "17.77 kB"
515515
},
516516
{
517517
"name": "[Storage] list (S3)",
@@ -523,7 +523,7 @@
523523
"name": "[Storage] remove (S3)",
524524
"path": "./dist/esm/storage/index.mjs",
525525
"import": "{ remove }",
526-
"limit": "16.40 kB"
526+
"limit": "16.41 kB"
527527
},
528528
{
529529
"name": "[Storage] uploadData (S3)",

packages/core/src/awsClients/pinpoint/base.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,9 @@ export const defaultConfig = {
3131
endpointResolver,
3232
retryDecider: getRetryDecider(parseJsonError),
3333
computeDelay: jitteredBackoff,
34-
userAgentValue: getAmplifyUserAgent(),
34+
get userAgentValue() {
35+
return getAmplifyUserAgent();
36+
},
3537
};
3638

3739
/**

packages/core/src/singleton/Amplify.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ export class AmplifyClass {
1919
| ((authConfig: AuthConfig['Cognito']) => void)
2020
| undefined = undefined;
2121

22+
private isConfigured = false;
23+
2224
resourcesConfig: ResourcesConfig;
2325
libraryOptions: LibraryOptions;
2426

@@ -76,6 +78,7 @@ export class AmplifyClass {
7678
);
7779

7880
this.notifyOAuthListener();
81+
this.isConfigured = true;
7982
}
8083

8184
/**
@@ -84,6 +87,13 @@ export class AmplifyClass {
8487
* @returns Returns the immutable back-end resource configuration.
8588
*/
8689
getConfig(): Readonly<ResourcesConfig> {
90+
if (!this.isConfigured) {
91+
// eslint-disable-next-line no-console
92+
console.warn(
93+
`Amplify has not been configured. Please call Amplify.configure() before using this service.`,
94+
);
95+
}
96+
8797
return this.resourcesConfig;
8898
}
8999

packages/storage/src/providers/s3/utils/client/s3control/base.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,8 @@ export const defaultConfig = {
107107
endpointResolver,
108108
retryDecider,
109109
computeDelay: jitteredBackoff,
110-
userAgentValue: getAmplifyUserAgent(),
110+
get userAgentValue() {
111+
return getAmplifyUserAgent();
112+
},
111113
uriEscapePath: false, // Required by S3. See https://github.com/aws/aws-sdk-js-v3/blob/9ba012dfa3a3429aa2db0f90b3b0b3a7a31f9bc3/packages/signature-v4/src/SignatureV4.ts#L76-L83
112114
};

packages/storage/src/providers/s3/utils/client/s3data/base.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,9 @@ export const defaultConfig = {
153153
endpointResolver,
154154
retryDecider,
155155
computeDelay: jitteredBackoff,
156-
userAgentValue: getAmplifyUserAgent(),
156+
get userAgentValue() {
157+
return getAmplifyUserAgent();
158+
},
157159
useAccelerateEndpoint: false,
158160
uriEscapePath: false, // Required by S3. See https://github.com/aws/aws-sdk-js-v3/blob/9ba012dfa3a3429aa2db0f90b3b0b3a7a31f9bc3/packages/signature-v4/src/SignatureV4.ts#L76-L83
159161
};

0 commit comments

Comments
 (0)