From 486c9037372504775f435d2d77968f0d65eefdd4 Mon Sep 17 00:00:00 2001 From: ykethan Date: Fri, 25 Oct 2024 13:49:21 -0400 Subject: [PATCH 1/3] dedupe environment variables in amplify env type generator --- .changeset/silver-rocks-return.md | 5 +++ .../src/function_env_type_generator.test.ts | 32 +++++++++++++++++++ .../src/function_env_type_generator.ts | 6 +++- 3 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 .changeset/silver-rocks-return.md diff --git a/.changeset/silver-rocks-return.md b/.changeset/silver-rocks-return.md new file mode 100644 index 00000000000..ecaf6cb089d --- /dev/null +++ b/.changeset/silver-rocks-return.md @@ -0,0 +1,5 @@ +--- +'@aws-amplify/backend-function': minor +--- + +dedupe environment variables in amplify env type generator diff --git a/packages/backend-function/src/function_env_type_generator.test.ts b/packages/backend-function/src/function_env_type_generator.test.ts index d988e06fec4..15a913479c3 100644 --- a/packages/backend-function/src/function_env_type_generator.test.ts +++ b/packages/backend-function/src/function_env_type_generator.test.ts @@ -69,4 +69,36 @@ void describe('FunctionEnvironmentTypeGenerator', () => { await fsp.rm(targetDirectory, { recursive: true, force: true }); }); + + void it('does not generate duplicate environment variables', () => { + const fsOpenSyncMock = mock.method(fs, 'openSync'); + const fsWriteFileSyncMock = mock.method(fs, 'writeFileSync', () => null); + fsOpenSyncMock.mock.mockImplementation(() => 0); + const functionEnvironmentTypeGenerator = + new FunctionEnvironmentTypeGenerator('testFunction'); + + functionEnvironmentTypeGenerator.generateTypedProcessEnvShim([ + 'TEST_ENV', + 'TEST_ENV', + 'ANOTHER_ENV', + ]); + + const generatedContent = + fsWriteFileSyncMock.mock.calls[0].arguments[1]?.toString() ?? ''; + + // Check TEST_ENV appears only once + assert.equal( + (generatedContent.match(/TEST_ENV: string;/g) || []).length, + 1, + 'TEST_ENV should appear only once' + ); + + // Check ANOTHER_ENV also appears + assert.ok( + generatedContent.includes('ANOTHER_ENV: string;'), + 'ANOTHER_ENV should be included' + ); + + mock.restoreAll(); + }); }); diff --git a/packages/backend-function/src/function_env_type_generator.ts b/packages/backend-function/src/function_env_type_generator.ts index ea650e26c9b..d01a701a190 100644 --- a/packages/backend-function/src/function_env_type_generator.ts +++ b/packages/backend-function/src/function_env_type_generator.ts @@ -57,7 +57,11 @@ export class FunctionEnvironmentTypeGenerator { `/** Amplify backend environment variables available at runtime, this includes environment variables defined in \`defineFunction\` and by cross resource mechanisms */` ); declarations.push(`type ${amplifyBackendEnvVarTypeName} = {`); - amplifyBackendEnvVars.forEach((envName) => { + + // Use a Set to remove duplicates + const uniqueEnvVars = new Set(amplifyBackendEnvVars); + + uniqueEnvVars.forEach((envName) => { const declaration = `${this.indentation}${envName}: string;`; declarations.push(declaration); From f94851fe99f455509e04952ce26954913cd2936b Mon Sep 17 00:00:00 2001 From: Kethan sai Date: Fri, 25 Oct 2024 14:03:02 -0400 Subject: [PATCH 2/3] Update .changeset/silver-rocks-return.md Co-authored-by: Kamil Sobol --- .changeset/silver-rocks-return.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/silver-rocks-return.md b/.changeset/silver-rocks-return.md index ecaf6cb089d..ee96628f3eb 100644 --- a/.changeset/silver-rocks-return.md +++ b/.changeset/silver-rocks-return.md @@ -1,5 +1,5 @@ --- -'@aws-amplify/backend-function': minor +'@aws-amplify/backend-function': patch --- dedupe environment variables in amplify env type generator From 9ff00cb5f30d71819c2b7ca676309be0702d086d Mon Sep 17 00:00:00 2001 From: Kethan sai Date: Fri, 25 Oct 2024 15:05:02 -0400 Subject: [PATCH 3/3] Update .changeset/silver-rocks-return.md Co-authored-by: Kamil Sobol --- .changeset/silver-rocks-return.md | 1 + 1 file changed, 1 insertion(+) diff --git a/.changeset/silver-rocks-return.md b/.changeset/silver-rocks-return.md index ee96628f3eb..14f217d3723 100644 --- a/.changeset/silver-rocks-return.md +++ b/.changeset/silver-rocks-return.md @@ -1,5 +1,6 @@ --- '@aws-amplify/backend-function': patch +'@aws-amplify/backend': patch --- dedupe environment variables in amplify env type generator