forked from aws-amplify/amplify-cli
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathfunction_render_adapter.ts
More file actions
41 lines (35 loc) · 1.44 KB
/
function_render_adapter.ts
File metadata and controls
41 lines (35 loc) · 1.44 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import { FunctionDefinition } from '@aws-amplify/amplify-gen2-codegen';
import { FunctionConfiguration } from '@aws-sdk/client-lambda';
import assert from 'node:assert';
export type AmplifyMetaFunction = {
service: string;
providerPlugin: 'awscloudformation';
output: Record<string, string>;
};
export type AmplifyMetaWithFunction = {
function: Record<string, AmplifyMetaFunction>;
};
export const getFunctionDefinition = (
functionConfigurations: FunctionConfiguration[],
functionCategoryMap: Map<string, string>,
meta: AmplifyMetaWithFunction,
): FunctionDefinition[] => {
const funcDefList: FunctionDefinition[] = [];
for (const configuration of functionConfigurations) {
const funcDef: FunctionDefinition = {};
funcDef.entry = configuration?.Handler;
funcDef.name = configuration?.FunctionName;
funcDef.timeoutSeconds = configuration?.Timeout;
funcDef.memoryMB = configuration?.MemorySize;
funcDef.environment = configuration?.Environment;
funcDef.runtime = configuration?.Runtime;
const functionName = configuration?.FunctionName;
assert(functionName);
const functionRecordInMeta = Object.entries(meta.function).find(([, value]) => value.output.Name === functionName);
assert(functionRecordInMeta);
funcDef.category = functionCategoryMap.get(functionRecordInMeta[0]) ?? 'function';
funcDef.resourceName = functionRecordInMeta[0];
funcDefList.push(funcDef);
}
return funcDefList;
};