From ebb6d7223ff59c35b49c5f545e6fdac9da9ccbe2 Mon Sep 17 00:00:00 2001 From: ShrutiPundir17 Date: Thu, 14 May 2026 16:29:37 +0530 Subject: [PATCH 1/3] fix(aws-amplify): preserve library options on partial configure Merge existing Amplify.libraryOptions when DefaultAmplify.configure is called with partial libraryOptions after Auth was already set up, so keys like Storage are not dropped. Pin Auth last so default Cognito providers stay intact. Add regression test for Storage + subsequent partial reconfigure (e.g. ssr: true). Use rimraf --glob for clean:size patterns (dual-publish-tmp, tmp*) so clean works on Windows with rimraf v6. Co-authored-by: Cursor --- packages/adapter-nextjs/package.json | 2 +- packages/analytics/package.json | 2 +- packages/api-graphql/package.json | 2 +- packages/api-rest/package.json | 2 +- packages/api/package.json | 2 +- packages/auth/package.json | 2 +- .../__tests__/initSingleton.test.ts | 34 +++++++++++++++++-- packages/aws-amplify/src/initSingleton.ts | 3 +- packages/core/package.json | 2 +- packages/datastore/package.json | 2 +- packages/geo/package.json | 2 +- packages/interactions/package.json | 2 +- packages/notifications/package.json | 2 +- packages/predictions/package.json | 2 +- packages/pubsub/package.json | 2 +- packages/storage/package.json | 2 +- 16 files changed, 47 insertions(+), 18 deletions(-) diff --git a/packages/adapter-nextjs/package.json b/packages/adapter-nextjs/package.json index bc0fe7d3c60..6453a8f92fa 100644 --- a/packages/adapter-nextjs/package.json +++ b/packages/adapter-nextjs/package.json @@ -61,7 +61,7 @@ "build:esm-cjs": "rollup --forceExit -c rollup.config.mjs", "build:watch": "npm run build:esm-cjs -- --watch", "clean": "npm run clean:size && rimraf dist", - "clean:size": "rimraf dual-publish-tmp tmp*", + "clean:size": "rimraf --glob dual-publish-tmp tmp*", "format": "echo \"Not implemented\"", "lint": "eslint '**/*.{ts,tsx}' && npm run ts-coverage", "lint:fix": "eslint '**/*.{ts,tsx}' --fix", diff --git a/packages/analytics/package.json b/packages/analytics/package.json index 7d5de04ee81..623fd6dada1 100644 --- a/packages/analytics/package.json +++ b/packages/analytics/package.json @@ -18,7 +18,7 @@ "build:watch": "npm run build:esm-cjs -- --watch", "build": "npm run clean && npm run build:esm-cjs && npm run build:umd", "clean": "npm run clean:size && rimraf dist lib lib-esm", - "clean:size": "rimraf dual-publish-tmp tmp*", + "clean:size": "rimraf --glob dual-publish-tmp tmp*", "format": "echo \"Not implemented\"", "lint": "eslint '**/*.{ts,tsx}' && npm run ts-coverage", "lint:fix": "eslint '**/*.{ts,tsx}' --fix", diff --git a/packages/api-graphql/package.json b/packages/api-graphql/package.json index c396b91a253..c8208fe5900 100644 --- a/packages/api-graphql/package.json +++ b/packages/api-graphql/package.json @@ -22,7 +22,7 @@ "build:watch": "npm run build:esm-cjs -- --watch", "build": "npm run clean && npm run build:esm-cjs && npm run build:umd", "clean": "npm run clean:size && rimraf dist lib lib-esm", - "clean:size": "rimraf dual-publish-tmp tmp*", + "clean:size": "rimraf --glob dual-publish-tmp tmp*", "format": "echo \"Not implemented\"", "lint": "eslint '**/*.{ts,tsx}' && npm run ts-coverage", "lint:fix": "eslint '**/*.{ts,tsx}' --fix", diff --git a/packages/api-rest/package.json b/packages/api-rest/package.json index 2740d80c7db..196a990ca7e 100644 --- a/packages/api-rest/package.json +++ b/packages/api-rest/package.json @@ -19,7 +19,7 @@ "build:watch": "npm run build:esm-cjs -- --watch", "build": "npm run clean && npm run build:esm-cjs && npm run build:umd", "clean": "npm run clean:size && rimraf dist lib lib-esm", - "clean:size": "rimraf dual-publish-tmp tmp*", + "clean:size": "rimraf --glob dual-publish-tmp tmp*", "format": "echo \"Not implemented\"", "lint": "eslint '**/*.{ts,tsx}' && npm run ts-coverage", "lint:fix": "eslint '**/*.{ts,tsx}' --fix", diff --git a/packages/api/package.json b/packages/api/package.json index 107df88f461..724cf9cf2b6 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -21,7 +21,7 @@ "build:watch": "npm run build:esm-cjs -- --watch", "build": "npm run clean && npm run build:esm-cjs && npm run build:umd", "clean": "npm run clean:size && rimraf dist lib lib-esm", - "clean:size": "rimraf dual-publish-tmp tmp*", + "clean:size": "rimraf --glob dual-publish-tmp tmp*", "format": "echo \"Not implemented\"", "lint": "eslint '**/*.{ts,tsx}' && npm run ts-coverage", "lint:fix": "eslint '**/*.{ts,tsx}' --fix", diff --git a/packages/auth/package.json b/packages/auth/package.json index 00bf5a651a9..acdf815b74e 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -23,7 +23,7 @@ "build:watch": "npm run build:esm-cjs -- --watch", "build": "npm run clean && npm run build:esm-cjs && npm run build:umd", "clean": "npm run clean:size && rimraf lib-esm lib dist", - "clean:size": "rimraf dual-publish-tmp tmp*", + "clean:size": "rimraf --glob dual-publish-tmp tmp*", "format": "echo \"Not implemented\"", "lint": "eslint '**/*.{ts,tsx}' && npm run ts-coverage", "lint:fix": "eslint '**/*.{ts,tsx}' --fix", diff --git a/packages/aws-amplify/__tests__/initSingleton.test.ts b/packages/aws-amplify/__tests__/initSingleton.test.ts index 5d021b36743..0e8c439b673 100644 --- a/packages/aws-amplify/__tests__/initSingleton.test.ts +++ b/packages/aws-amplify/__tests__/initSingleton.test.ts @@ -324,6 +324,7 @@ describe('initSingleton (DefaultAmplify)', () => { it('should preserve current auth providers (default or otherwise) and configure provider with a new CookieStorage instance', () => { const libraryOptions = { ssr: true }; + const authLibraryOptions = AmplifySingleton.libraryOptions.Auth; Amplify.configure(mockResourceConfig, libraryOptions); expect( @@ -336,7 +337,7 @@ describe('initSingleton (DefaultAmplify)', () => { expect(mockAmplifySingletonConfigure).toHaveBeenCalledWith( mockResourceConfig, { - Auth: AmplifySingleton.libraryOptions.Auth, + Auth: authLibraryOptions, ...libraryOptions, }, ); @@ -344,6 +345,7 @@ describe('initSingleton (DefaultAmplify)', () => { it('should preserve current auth providers (default or otherwise) and configure provider with defaultStorage', () => { const libraryOptions = { ssr: false }; + const authLibraryOptions = AmplifySingleton.libraryOptions.Auth; Amplify.configure(mockResourceConfig, libraryOptions); expect( @@ -355,7 +357,7 @@ describe('initSingleton (DefaultAmplify)', () => { expect(mockAmplifySingletonConfigure).toHaveBeenCalledWith( mockResourceConfig, { - Auth: AmplifySingleton.libraryOptions.Auth, + Auth: authLibraryOptions, ...libraryOptions, }, ); @@ -365,6 +367,7 @@ describe('initSingleton (DefaultAmplify)', () => { const libraryOptions = { Storage: { S3: { isObjectLockEnabled: true } }, }; + const authLibraryOptions = AmplifySingleton.libraryOptions.Auth; Amplify.configure(mockResourceConfig, libraryOptions); expect( @@ -376,12 +379,37 @@ describe('initSingleton (DefaultAmplify)', () => { expect(mockAmplifySingletonConfigure).toHaveBeenCalledWith( mockResourceConfig, { - Auth: AmplifySingleton.libraryOptions.Auth, + Auth: authLibraryOptions, ...libraryOptions, }, ); }); + it('should preserve non-Auth library options when reconfiguring with partial libraryOptions', () => { + const storageLibraryOptions = { + S3: { defaultAccessLevel: 'private' as const }, + }; + AmplifySingleton.libraryOptions = { + Auth: { + tokenProvider: cognitoUserPoolsTokenProvider, + credentialsProvider: cognitoCredentialsProvider, + }, + Storage: storageLibraryOptions, + }; + const authLibraryOptions = AmplifySingleton.libraryOptions.Auth; + + Amplify.configure(mockResourceConfig, { ssr: true }); + + expect(mockAmplifySingletonConfigure).toHaveBeenCalledWith( + mockResourceConfig, + { + Auth: authLibraryOptions, + Storage: storageLibraryOptions, + ssr: true, + }, + ); + }); + it('should just configure without touching libraryOptions', () => { Amplify.configure(mockResourceConfig); diff --git a/packages/aws-amplify/src/initSingleton.ts b/packages/aws-amplify/src/initSingleton.ts index 6168cc25b51..596a8c7859a 100644 --- a/packages/aws-amplify/src/initSingleton.ts +++ b/packages/aws-amplify/src/initSingleton.ts @@ -98,8 +98,9 @@ export const DefaultAmplify = { } Amplify.configure(resolvedResourceConfig, { - Auth: authLibraryOptions, + ...Amplify.libraryOptions, ...libraryOptions, + Auth: authLibraryOptions, }); return; diff --git a/packages/core/package.json b/packages/core/package.json index af4a87a7cfa..1dd062767f9 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -25,7 +25,7 @@ "build": "npm run clean && npm run generate-version && npm run build:esm-cjs && npm run build:umd", "generate-version": "genversion src/Platform/version.ts --es6 --semi --source ../aws-amplify", "clean": "npm run clean:size && rimraf dist lib lib-esm", - "clean:size": "rimraf dual-publish-tmp tmp*", + "clean:size": "rimraf --glob dual-publish-tmp tmp*", "format": "echo \"Not implemented\"", "lint": "eslint '**/*.{ts,tsx}' && npm run ts-coverage", "lint:fix": "eslint '**/*.{ts,tsx}' --fix", diff --git a/packages/datastore/package.json b/packages/datastore/package.json index 0a4c6cce328..2cf8e3e532b 100644 --- a/packages/datastore/package.json +++ b/packages/datastore/package.json @@ -22,7 +22,7 @@ "build:watch": "npm run build:esm-cjs -- --watch", "build": "npm run clean && npm run build:esm-cjs && npm run build:umd", "clean": "npm run clean:size && rimraf dist lib lib-esm", - "clean:size": "rimraf dual-publish-tmp tmp*", + "clean:size": "rimraf --glob dual-publish-tmp tmp*", "format": "echo \"Not implemented\" && npm run ts-coverage", "lint": "eslint '**/*.{ts,tsx}' && npm run ts-coverage", "lint:fix": "eslint '**/*.{ts,tsx}' --fix", diff --git a/packages/geo/package.json b/packages/geo/package.json index 3611de23614..32cf1b59fec 100644 --- a/packages/geo/package.json +++ b/packages/geo/package.json @@ -22,7 +22,7 @@ "build:watch": "npm run build:esm-cjs -- --watch", "build": "npm run clean && npm run build:esm-cjs && npm run build:umd", "clean": "npm run clean:size && rimraf dist lib lib-esm", - "clean:size": "rimraf dual-publish-tmp tmp*", + "clean:size": "rimraf --glob dual-publish-tmp tmp*", "format": "echo \"Not implemented\"", "lint": "eslint '**/*.{ts,tsx}' && npm run ts-coverage", "lint:fix": "eslint '**/*.{ts,tsx}' --fix", diff --git a/packages/interactions/package.json b/packages/interactions/package.json index 834caa06552..6fe36c80989 100644 --- a/packages/interactions/package.json +++ b/packages/interactions/package.json @@ -19,7 +19,7 @@ "build:watch": "npm run build:esm-cjs -- --watch", "build": "npm run clean && npm run build:esm-cjs && npm run build:umd", "clean": "npm run clean:size && rimraf dist lib lib-esm", - "clean:size": "rimraf dual-publish-tmp tmp*", + "clean:size": "rimraf --glob dual-publish-tmp tmp*", "format": "echo \"Not implemented\"", "lint": "eslint '**/*.{ts,tsx}' && npm run ts-coverage", "lint:fix": "eslint '**/*.{ts,tsx}' --fix", diff --git a/packages/notifications/package.json b/packages/notifications/package.json index 49325533bc5..f93bd78056d 100644 --- a/packages/notifications/package.json +++ b/packages/notifications/package.json @@ -19,7 +19,7 @@ "build:watch": "npm run build:esm-cjs -- --watch", "build": "npm run clean && npm run build:esm-cjs && npm run build:umd", "clean": "npm run clean:size && rimraf dist lib lib-esm", - "clean:size": "rimraf dual-publish-tmp tmp*", + "clean:size": "rimraf --glob dual-publish-tmp tmp*", "format": "echo \"Not implemented\"", "lint": "eslint '**/*.{ts,tsx}' && npm run ts-coverage", "lint:fix": "eslint '**/*.{ts,tsx}' --fix", diff --git a/packages/predictions/package.json b/packages/predictions/package.json index 1967b01032c..4d2a714c754 100644 --- a/packages/predictions/package.json +++ b/packages/predictions/package.json @@ -19,7 +19,7 @@ "build:watch": "npm run build:esm-cjs -- --watch", "build": "npm run clean && npm run build:esm-cjs && npm run build:umd", "clean": "npm run clean:size && rimraf dist lib lib-esm", - "clean:size": "rimraf dual-publish-tmp tmp*", + "clean:size": "rimraf --glob dual-publish-tmp tmp*", "format": "echo \"Not implemented\"", "lint": "eslint '**/*.{ts,tsx}' && npm run ts-coverage", "lint:fix": "eslint '**/*.{ts,tsx}' --fix", diff --git a/packages/pubsub/package.json b/packages/pubsub/package.json index 051a853639c..b88a3d4f9c5 100644 --- a/packages/pubsub/package.json +++ b/packages/pubsub/package.json @@ -19,7 +19,7 @@ "build:watch": "mkdirp dist/esm/vendor && mkdirp dist/cjs/vendor && cp -R src/vendor dist/cjs/vendor && rollup --forceExit -c rollup.config.mjs --watch", "build": "npm run clean && npm run build:esm-cjs && npm run build:umd", "clean": "npm run clean:size && rimraf dist lib lib-esm", - "clean:size": "rimraf dual-publish-tmp tmp*", + "clean:size": "rimraf --glob dual-publish-tmp tmp*", "format": "echo \"Not implemented\"", "lint": "eslint '**/*.{ts,tsx}' && npm run ts-coverage", "lint:fix": "eslint '**/*.{ts,tsx}' --fix", diff --git a/packages/storage/package.json b/packages/storage/package.json index a4a2ba9fdf7..b11a08add3f 100644 --- a/packages/storage/package.json +++ b/packages/storage/package.json @@ -29,7 +29,7 @@ "build:watch": "npm run build:esm-cjs -- --watch", "build": "npm run clean && npm run build:esm-cjs && npm run build:umd", "clean": "npm run clean:size && rimraf lib-esm lib dist", - "clean:size": "rimraf dual-publish-tmp tmp*", + "clean:size": "rimraf --glob dual-publish-tmp tmp*", "format": "echo \"Not implemented\"", "lint": "eslint '**/*.{ts,tsx}' && npm run ts-coverage", "lint:fix": "eslint '**/*.{ts,tsx}' --fix", From 732e58e3588425e84d85c8b89bb86c84d1388046 Mon Sep 17 00:00:00 2001 From: ShrutiPundir17 Date: Thu, 14 May 2026 17:47:31 +0530 Subject: [PATCH 2/3] chore: add changeset for library options fix and rimraf clean Co-authored-by: Cursor --- ...x-preserve-library-options-rimraf-clean.md | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 .changeset/fix-preserve-library-options-rimraf-clean.md diff --git a/.changeset/fix-preserve-library-options-rimraf-clean.md b/.changeset/fix-preserve-library-options-rimraf-clean.md new file mode 100644 index 00000000000..8ac8ec90fc2 --- /dev/null +++ b/.changeset/fix-preserve-library-options-rimraf-clean.md @@ -0,0 +1,21 @@ +--- +'aws-amplify': patch +'@aws-amplify/adapter-nextjs': patch +'@aws-amplify/analytics': patch +'@aws-amplify/api': patch +'@aws-amplify/api-graphql': patch +'@aws-amplify/api-rest': patch +'@aws-amplify/auth': patch +'@aws-amplify/core': patch +'@aws-amplify/datastore': patch +'@aws-amplify/geo': patch +'@aws-amplify/interactions': patch +'@aws-amplify/notifications': patch +'@aws-amplify/predictions': patch +'@aws-amplify/pubsub': patch +'@aws-amplify/storage': patch +--- + +fix(aws-amplify): preserve library options on partial configure after Auth is set up. + +Also fix Windows `clean:size` scripts to use `rimraf --glob` for `tmp*` with rimraf v6. From ca62b967c7c3af7d6070cbfa37fdf1d5fc6e481a Mon Sep 17 00:00:00 2001 From: Shruti Pundir <111945742+ShrutiPundir17@users.noreply.github.com> Date: Fri, 15 May 2026 19:45:55 +0530 Subject: [PATCH 3/3] Delete .changeset/fix-preserve-library-options-rimraf-clean.md --- ...x-preserve-library-options-rimraf-clean.md | 21 ------------------- 1 file changed, 21 deletions(-) delete mode 100644 .changeset/fix-preserve-library-options-rimraf-clean.md diff --git a/.changeset/fix-preserve-library-options-rimraf-clean.md b/.changeset/fix-preserve-library-options-rimraf-clean.md deleted file mode 100644 index 8ac8ec90fc2..00000000000 --- a/.changeset/fix-preserve-library-options-rimraf-clean.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -'aws-amplify': patch -'@aws-amplify/adapter-nextjs': patch -'@aws-amplify/analytics': patch -'@aws-amplify/api': patch -'@aws-amplify/api-graphql': patch -'@aws-amplify/api-rest': patch -'@aws-amplify/auth': patch -'@aws-amplify/core': patch -'@aws-amplify/datastore': patch -'@aws-amplify/geo': patch -'@aws-amplify/interactions': patch -'@aws-amplify/notifications': patch -'@aws-amplify/predictions': patch -'@aws-amplify/pubsub': patch -'@aws-amplify/storage': patch ---- - -fix(aws-amplify): preserve library options on partial configure after Auth is set up. - -Also fix Windows `clean:size` scripts to use `rimraf --glob` for `tmp*` with rimraf v6.