@ez4/aws-function 0.41.0 → 0.43.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/README.md CHANGED
@@ -35,6 +35,17 @@ Ensure the user performing deployments has the permissions below:
35
35
  "lambda:UntagResource"
36
36
  ],
37
37
  "Resource": ["arn:aws:lambda:*:{account-id}:function:{prefix}-*"]
38
+ },
39
+ {
40
+ "Sid": "AuthorizeLambdaServices",
41
+ "Effect": "Allow",
42
+ "Action": ["iam:PassRole"],
43
+ "Resource": ["arn:aws:iam::{account-id}:role/{prefix}-*"],
44
+ "Condition": {
45
+ "StringLike": {
46
+ "iam:PassedToService": ["lambda.amazonaws.com"]
47
+ }
48
+ }
38
49
  }
39
50
  ]
40
51
  }
@@ -1,20 +1,22 @@
1
1
  import type { Arn, OperationLogLine, ResourceTags } from '@ez4/aws-common';
2
- import type { ArchitectureType, RuntimeType } from '@ez4/project';
2
+ import type { ArchitectureType, LogLevel, RuntimeType } from '@ez4/project';
3
3
  import type { LinkedVariables } from '@ez4/project/library';
4
4
  export type CreateRequest = {
5
5
  roleArn: Arn;
6
+ files?: string[];
6
7
  sourceFile: string;
7
8
  functionName: string;
8
9
  handlerName: string;
9
10
  description?: string;
10
11
  logGroup?: string;
12
+ logLevel?: LogLevel;
11
13
  variables?: LinkedVariables;
12
14
  architecture: ArchitectureType;
13
15
  runtime: RuntimeType;
14
16
  timeout?: number;
15
17
  memory?: number;
16
18
  publish?: boolean;
17
- debug?: boolean;
19
+ vpc?: boolean;
18
20
  tags?: ResourceTags;
19
21
  };
20
22
  export type ImportOrCreateResponse = {
@@ -26,15 +28,17 @@ export type UpdateConfigurationRequest = {
26
28
  handlerName?: string;
27
29
  description?: string;
28
30
  logGroup?: string;
31
+ logLevel?: LogLevel;
29
32
  variables?: LinkedVariables;
30
33
  runtime?: RuntimeType;
31
34
  timeout?: number;
32
35
  memory?: number;
33
- debug?: boolean;
36
+ vpc?: boolean;
34
37
  };
35
38
  export type UpdateSourceCodeRequest = {
36
- architecture?: ArchitectureType;
39
+ files?: string[];
37
40
  sourceFile: string;
41
+ architecture?: ArchitectureType;
38
42
  publish?: boolean;
39
43
  };
40
44
  export declare const importFunction: (logger: OperationLogLine, functionName: string, version?: string) => Promise<ImportOrCreateResponse | undefined>;
@@ -1,3 +1,6 @@
1
1
  export declare class FunctionNotFoundError extends Error {
2
2
  constructor(bucketName: string);
3
3
  }
4
+ export declare class DefaultVpcDetailsError extends Error {
5
+ constructor();
6
+ }
@@ -0,0 +1,2 @@
1
+ import { LogLevel } from '@ez4/project';
2
+ export declare const getLogLevel: (logLevel: LogLevel) => "ERROR" | "DEBUG" | "INFO" | "WARN";
@@ -1 +1 @@
1
- export declare const getZipBuffer: (filePath: string, entryName: string) => Promise<Buffer<ArrayBufferLike>>;
1
+ export declare const getZipBuffer: (filePath: string, entryName: string, additionalFiles?: string[]) => Promise<Buffer<ArrayBufferLike>>;
@@ -25,6 +25,7 @@ export type FunctionResult = ImportOrCreateResponse & {
25
25
  valuesHash?: string;
26
26
  sourceHash: string;
27
27
  bundleHash: string;
28
+ filesHash?: string;
28
29
  logGroup?: string;
29
30
  roleArn: Arn;
30
31
  };
@@ -7,3 +7,7 @@ export declare const getFunctionState: (context: EventContext, functionName: str
7
7
  export declare const getFunctionName: (serviceName: string, resourceId: string, context: StepContext) => string;
8
8
  export declare const tryGetFunctionArn: (context: StepContext) => `arn:aws:${string}:${string}:${string}:${string}` | undefined;
9
9
  export declare const getFunctionArn: (serviceName: string, resourceId: string, context: StepContext) => `arn:aws:${string}:${string}:${string}:${string}`;
10
+ export declare const getDefaultVpcConfig: () => Promise<{
11
+ subnetIds: string[];
12
+ securityGroupId: string;
13
+ }>;
package/dist/main.cjs CHANGED
@@ -1,180 +1,196 @@
1
- "use strict";var it=Object.create;var M=Object.defineProperty;var at=Object.getOwnPropertyDescriptor;var st=Object.getOwnPropertyNames;var pt=Object.getPrototypeOf,ct=Object.prototype.hasOwnProperty;var o=(t,e)=>M(t,"name",{value:e,configurable:!0});var ut=(t,e)=>{for(var n in e)M(t,n,{get:e[n],enumerable:!0})},ae=(t,e,n,r)=>{if(e&&
2
- typeof e=="object"||typeof e=="function")for(let i of st(e))!ct.call(t,i)&&i!==n&&
3
- M(t,i,{get:()=>e[i],enumerable:!(r=at(e,i))||r.enumerable});return t};var mt=(t,e,n)=>(n=t!=null?it(pt(t)):{},ae(e||!t||!t.__esModule?M(n,"default",{value:t,
4
- enumerable:!0}):n,t)),lt=t=>ae(M({},"__esModule",{value:!0}),t);var Zt={};ut(Zt,{FunctionArchitecture:()=>ce,FunctionDefaults:()=>rt,FunctionRuntime:()=>pe,
5
- FunctionServiceName:()=>F,FunctionServiceType:()=>x,MappingService:()=>Me,MappingServiceName:()=>R,
6
- MappingServiceType:()=>v,PermissionServiceName:()=>E,PermissionServiceType:()=>w,
7
- buildFunctionArn:()=>jt,createFunction:()=>qt,createMapping:()=>Wt,createPermission:()=>kt,
8
- getFunctionArchitecture:()=>G,getFunctionArn:()=>At,getFunctionName:()=>L,getFunctionRuntime:()=>z,
9
- getFunctionState:()=>Ct,getPermission:()=>Bt,isFunctionState:()=>te,isMappingState:()=>$t,
10
- registerTriggers:()=>Dt,tryGetFunctionArn:()=>Pe,tryGetFunctionState:()=>Pt});module.
11
- exports=lt(Zt);var Qe=require("@ez4/aws-common"),_e=require("@ez4/aws-identity"),Je=require("@ez4/aws-logs"),
12
- Ke=require("@ez4/project/library");var be=require("@ez4/aws-common");var S=require("@ez4/aws-common"),P=require("@ez4/utils"),X=require("@ez4/aws-logs"),
13
- Y=require("@ez4/aws-identity");var s=require("@aws-sdk/client-lambda"),D=require("@ez4/aws-common");var O=require("@ez4/aws-common"),se=require("@aws-sdk/client-lambda");var d=o(()=>new se.LambdaClient((0,O.getAwsClientOptions)()),"getLambdaClient"),
14
- U=o(t=>({...(0,O.getAwsClientWaiter)(),client:t}),"getLambdaWaiter");var j=require("@ez4/project");var pe=(n=>(n.Node22="nodejs22.x",n.Node24="nodejs24.x",n))(pe||{});var gt={[j.RuntimeType.Node22]:"nodejs22.x",[j.RuntimeType.Node24]:"nodejs24.x"},
15
- z=o(t=>gt[t],"getFunctionRuntime");var Z=require("@ez4/project");var ce=(n=>(n.Arm="arm64",n.x86="x86_64",n))(ce||{});var dt={[Z.ArchitectureType.Arm]:"arm64",[Z.ArchitectureType.x86]:"x86_64"},G=o(
16
- t=>dt[t],"getFunctionArchitecture");var ue=require("@ez4/aws-common"),me=require("@ez4/utils");var F="AWS:Lambda/Function",x="aws:lambda.function";var ft=/[a-z][\w]+/i,yt=o(t=>ft.test(t),"isValidName"),Q=o(t=>{for(let e in t)if(!yt(
17
- e))throw new ue.InvalidParameterError(F,`${e} is an invalid variable name .`)},"\
18
- assertVariables"),A=o(t=>{let e={};for(let n in t)e[n]=(0,me.hashData)(t[n]);return e},
19
- "protectVariables");var le=mt(require("adm-zip"),1),ge=require("node:fs/promises");var de=o(async(t,e)=>{let n=new le.default,r=await(0,ge.readFile)(t);return n.addFile(
20
- e,r),n.toBufferPromise()},"getZipBuffer");var fe=o(async(t,e,n)=>{t.update("Importing function");try{let r=await d().send(
21
- new s.GetFunctionCommand({FunctionName:e,Qualifier:n})),i=r.Configuration.Version,
1
+ "use strict";var gt=Object.create;var V=Object.defineProperty;var dt=Object.getOwnPropertyDescriptor;var ft=Object.getOwnPropertyNames;var yt=Object.getPrototypeOf,St=Object.prototype.hasOwnProperty;var o=(t,e)=>V(t,"name",{value:e,configurable:!0});var wt=(t,e)=>{for(var n in e)V(t,n,{get:e[n],enumerable:!0})},ye=(t,e,n,r)=>{if(e&&
2
+ typeof e=="object"||typeof e=="function")for(let i of ft(e))!St.call(t,i)&&i!==n&&
3
+ V(t,i,{get:()=>e[i],enumerable:!(r=dt(e,i))||r.enumerable});return t};var Ft=(t,e,n)=>(n=t!=null?gt(yt(t)):{},ye(e||!t||!t.__esModule?V(n,"default",{value:t,
4
+ enumerable:!0}):n,t)),xt=t=>ye(V({},"__esModule",{value:!0}),t);var tn={};wt(tn,{FunctionArchitecture:()=>we,FunctionDefaults:()=>O,FunctionRuntime:()=>Fe,
5
+ FunctionServiceName:()=>F,FunctionServiceType:()=>x,MappingService:()=>qe,MappingServiceName:()=>b,
6
+ MappingServiceType:()=>R,PermissionServiceName:()=>T,PermissionServiceType:()=>h,
7
+ buildFunctionArn:()=>en,createFunction:()=>_t,createMapping:()=>Xt,createPermission:()=>Jt,
8
+ getDefaultVpcConfig:()=>Q,getFunctionArchitecture:()=>W,getFunctionArn:()=>Pt,getFunctionName:()=>E,
9
+ getFunctionRuntime:()=>j,getFunctionState:()=>Ct,getPermission:()=>Kt,isFunctionState:()=>oe,
10
+ isMappingState:()=>Yt,registerTriggers:()=>Qt,tryGetFunctionArn:()=>Re,tryGetFunctionState:()=>Lt});
11
+ module.exports=xt(tn);var rt=require("@ez4/aws-common"),ot=require("@ez4/aws-identity"),it=require("@ez4/aws-logs"),
12
+ at=require("@ez4/project/library");var Te=require("@ez4/aws-common");var d=require("@ez4/aws-common"),C=require("@ez4/utils"),pe=require("@ez4/aws-logs"),
13
+ ce=require("@ez4/aws-identity");var p=require("@aws-sdk/client-lambda"),_=require("@ez4/aws-common");var q=require("@ez4/aws-common"),Se=require("@aws-sdk/client-lambda");var f=o(()=>new Se.LambdaClient((0,q.getAwsClientOptions)()),"getLambdaClient"),
14
+ B=o(t=>({...(0,q.getAwsClientWaiter)(),client:t}),"getLambdaWaiter");var Y=require("@ez4/project");var we=(n=>(n.Arm="arm64",n.x86="x86_64",n))(we||{});var vt={[Y.ArchitectureType.Arm]:"arm64",[Y.ArchitectureType.x86]:"x86_64"},W=o(
15
+ t=>vt[t],"getFunctionArchitecture");var ee=require("@ez4/project");var Fe=(n=>(n.Node22="nodejs22.x",n.Node24="nodejs24.x",n))(Fe||{});var ht={[ee.RuntimeType.Node22]:"nodejs22.x",[ee.RuntimeType.Node24]:"nodejs24.x"},
16
+ j=o(t=>ht[t],"getFunctionRuntime");var A=require("@ez4/project"),O;(s=>(s.LogRetention=90,s.LogLevel=A.LogLevel.Warning,
17
+ s.Architecture=A.ArchitectureType.x86,s.Runtime=A.RuntimeType.Node24,s.Timeout=90,
18
+ s.Memory=192))(O||={});var xe=require("@ez4/aws-common"),ve=require("@ez4/utils");var F="AWS:Lambda/Function",x="aws:lambda.function";var bt=/[a-z][\w]+/i,Rt=o(t=>bt.test(t),"isValidName"),te=o(t=>{for(let e in t)if(!Rt(
19
+ e))throw new xe.InvalidParameterError(F,`${e} is an invalid variable name .`)},"\
20
+ assertVariables"),N=o(t=>{let e={};for(let n in t)e[n]=(0,ve.hashData)(t[n]);return e},
21
+ "protectVariables");var U=require("@aws-sdk/client-lambda"),z=require("@ez4/project");var ne=o(t=>{switch(t){case z.LogLevel.Information:return U.ApplicationLogLevel.
22
+ Info;case z.LogLevel.Debug:return U.ApplicationLogLevel.Debug;case z.LogLevel.Error:
23
+ return U.ApplicationLogLevel.Error;default:case z.LogLevel.Warning:return U.ApplicationLogLevel.
24
+ Warn}},"getLogLevel");var $=require("node:path"),he=Ft(require("adm-zip"),1);var be=o(async(t,e,n)=>{let r=new he.default;return n?.forEach(i=>{r.addLocalFile(
25
+ i,(0,$.dirname)((0,$.normalize)(i)))}),r.addLocalFile(t,void 0,e),r.toBufferPromise()},
26
+ "getZipBuffer");var I=require("@ez4/aws-vpc"),re=require("@ez4/aws-common");var Z=class extends Error{static{o(this,"FunctionNotFoundError")}constructor(e){
27
+ super(`Function ${e} wasn't found.`)}},G=class extends Error{static{o(this,"Defa\
28
+ ultVpcDetailsError")}constructor(){super("Unable to get the default VPC details.")}};var oe=o(t=>t.type===x,"isFunctionState"),Lt=o((t,e,n)=>{try{let r=t.getServiceState(
29
+ e,n);if(oe(r))return r}catch{}},"tryGetFunctionState"),Ct=o((t,e,n)=>{let r=t.getServiceState(
30
+ e,n);if(!oe(r))throw new Z(e);return r},"getFunctionState"),E=o((t,e,n)=>{let r=n.
31
+ getDependencies(x).at(0)?.parameters;if(!r?.functionName)throw new re.IncompleteResourceError(
32
+ t,e,"functionName");return r.functionName},"getFunctionName"),Re=o(t=>t.getDependencies(
33
+ x)[0]?.result?.functionArn,"tryGetFunctionArn"),Pt=o((t,e,n)=>{let r=Re(n);if(!r)
34
+ throw new re.IncompleteResourceError(t,e,"functionArn");return r},"getFunctionAr\
35
+ n"),Q=o(async()=>{let t=await(0,I.getDefaultVpcId)();if(!t)throw new G;let[e,n]=await Promise.
36
+ all([(0,I.getDefaultSubnetIds)(t),(0,I.getDefaultSecurityGroupId)(t)]);if(!e?.length||
37
+ !n)throw new G;return{subnetIds:e.slice(0,2),securityGroupId:n}},"getDefaultVpcC\
38
+ onfig");var Le=o(async(t,e,n)=>{t.update("Importing function");try{let r=await f().send(
39
+ new p.GetFunctionCommand({FunctionName:e,Qualifier:n})),i=r.Configuration.Version,
22
40
  a=r.Configuration.FunctionArn;return{functionVersion:i,functionArn:a}}catch(r){if(!(r instanceof
23
- s.ResourceNotFoundException))throw r;return}},"importFunction"),ye=o(async(t,e)=>{
24
- t.update("Creating function");let{functionName:n,variables:r}=e;r&&Q(r);let i=we(
25
- e.handlerName),a=await xe(e.sourceFile),{description:p,memory:c,timeout:m,publish:u,
26
- architecture:l,runtime:g,debug:y,roleArn:h,logGroup:C}=e,V=d(),H=await(0,D.waitCreation)(
27
- ()=>V.send(new s.CreateFunctionCommand({FunctionName:n,Description:p,MemorySize:c,
28
- Timeout:m,Role:h,Publish:u,Handler:i,Architectures:[G(l)],Runtime:z(g),PackageType:"\
29
- Zip",LoggingConfig:{LogGroup:C,ApplicationLogLevel:y?s.ApplicationLogLevel.Debug:
30
- s.ApplicationLogLevel.Warn,SystemLogLevel:s.SystemLogLevel.Warn,LogFormat:s.LogFormat.
31
- Json},Code:{ZipFile:a},Environment:{Variables:r},Tags:{...e.tags,ManagedBy:"EZ4"}}))),
32
- ot=H.FunctionArn,oe=H.Version,ie=U(V);return await(0,s.waitUntilFunctionActive)(
33
- ie,{FunctionName:n}),u&&await(0,s.waitUntilPublishedVersionActive)(ie,{FunctionName:n,
34
- Qualifier:oe}),{functionArn:ot,...u&&{functionVersion:oe}}},"createFunction"),_=o(
35
- async(t,e,n)=>{t.update("Updating source code");let r=await xe(n.sourceFile),{publish:i,
36
- architecture:a}=n,p=d(),c=await p.send(new s.UpdateFunctionCodeCommand({Architectures:a&&
37
- [G(a)],FunctionName:e,ZipFile:r,Publish:i})),m=c.FunctionArn,u=c.Version,l=U(p);
38
- return await(0,s.waitUntilFunctionUpdated)(l,{FunctionName:e}),i&&await(0,s.waitUntilPublishedVersionActive)(
39
- l,{FunctionName:e,Qualifier:u}),{functionArn:m,...i&&{functionVersion:u}}},"upda\
40
- teSourceCode"),J=o(async(t,e,n)=>{t.update("Updating configuration");let{handlerName:r,
41
- variables:i}=n;i&&Q(i);let{description:a,memory:p,timeout:c,runtime:m,debug:u,roleArn:l,
42
- logGroup:g}=n,y=d();await y.send(new s.UpdateFunctionConfigurationCommand({Runtime:m&&
43
- z(m),FunctionName:e,Description:a,MemorySize:p,Timeout:c,Role:l,...r&&{Handler:we(
44
- r)},LoggingConfig:{LogGroup:g,ApplicationLogLevel:u?s.ApplicationLogLevel.Debug:
45
- s.ApplicationLogLevel.Warn,SystemLogLevel:s.SystemLogLevel.Warn,LogFormat:s.LogFormat.
46
- Json},Environment:{Variables:i}})),await(0,s.waitUntilFunctionUpdated)(U(y),{FunctionName:e})},
47
- "updateConfiguration"),Se=o(async(t,e)=>{e.update("Deleting function");let n=d();
48
- await(0,D.waitDeletion)(async()=>{try{await n.send(new s.DeleteFunctionCommand({
49
- FunctionName:t}))}catch(r){if(!(r instanceof s.ResourceNotFoundException))throw r}})},
50
- "deleteFunction");var K=o(async(t,e,n)=>{t.update("Tag function"),await d().send(new s.TagResourceCommand(
51
- {Resource:e,Tags:{...n,ManagedBy:"EZ4"}}))},"tagFunction"),Fe=o(async(t,e,n)=>{t.
52
- update("Untag function"),await d().send(new s.UntagResourceCommand({Resource:e,TagKeys:n}))},
53
- "untagFunction"),xe=o(t=>de(t,"main.mjs"),"getSourceZipFile"),we=o(t=>`main.${t}`,
54
- "getSourceHandlerName");var Re=o(()=>({equals:St,create:ve,replace:xt,preview:Ft,update:wt,delete:Rt}),"\
55
- getFunctionHandler"),St=o((t,e)=>!!t.result&&t.result.functionArn===e.result?.functionArn,
56
- "equalsResource"),Ft=o(async(t,e)=>{let n=t.parameters,r=e.parameters,i=(0,P.deepCompare)(
57
- {...n,connections:t.connections,dependencies:t.dependencies,variables:A(await n.
58
- getFunctionVariables()),sourceHash:await(0,S.getBundleHash)(...n.getFunctionFiles()),
59
- valuesHash:n.getFunctionHash()},{...r,connections:e.connections,dependencies:e.dependencies,
60
- variables:e.result?.variables,sourceHash:e.result?.sourceHash,valuesHash:e.result?.
61
- valuesHash},{exclude:{release:!0}});if(i.counts)return{...i,name:n.functionName}},
62
- "previewResource"),xt=o(async(t,e,n)=>{if(e.result)throw new S.ReplaceResourceError(
63
- F,t.entryId,e.entryId);return ve(t,n)},"replaceResource"),ve=o((t,e)=>{let{functionName:n,
64
- release:r,...i}=t.parameters;return S.OperationLogger.logExecution(F,n,"creation",
65
- async a=>{let p=(0,X.getLogGroupName)(F,n,e),c=(0,Y.getRoleArn)(F,n,e),[m,u,l,g]=await Promise.
66
- all([(0,S.getBundleHash)(...i.getFunctionFiles()),i.getFunctionBundle(e),i.getFunctionHash(),
67
- i.getFunctionVariables()]),y=await fe(a,n),h=await(0,P.hashFile)(u);if(y)return await _(
68
- a,n,{architecture:i.architecture,publish:!1,sourceFile:u}),await J(a,n,{...i,logGroup:p,
69
- roleArn:c,variables:{...g,...r?.variableName&&{[r.variableName]:r.version}}}),await K(
41
+ p.ResourceNotFoundException))throw r;return}},"importFunction"),Ce=o(async(t,e)=>{
42
+ t.update("Creating function");let{functionName:n,variables:r}=e;r&&te(r);let i=e.
43
+ vpc?await Q():void 0,a=await Ne(e.sourceFile,e.files),s=Ie(e.handlerName),{description:c,
44
+ memory:l,timeout:m,publish:u,architecture:g,runtime:w,roleArn:y,logGroup:v,logLevel:P}=e,
45
+ k=f(),ge=await(0,_.waitCreation)(()=>k.send(new p.CreateFunctionCommand({FunctionName:n,
46
+ Description:c,MemorySize:l,Timeout:m,Role:y,Publish:u,Handler:s,Architectures:[W(
47
+ g)],Runtime:j(w),PackageType:"Zip",VpcConfig:{SecurityGroupIds:i?[i.securityGroupId]:
48
+ [],SubnetIds:i?i.subnetIds:[]},LoggingConfig:{LogGroup:v,ApplicationLogLevel:ne(
49
+ P??O.LogLevel),SystemLogLevel:p.SystemLogLevel.Warn,LogFormat:p.LogFormat.Json},
50
+ Code:{ZipFile:a},Environment:{Variables:r},Tags:{...e.tags,ManagedBy:"EZ4"}}))),
51
+ lt=ge.FunctionArn,de=ge.Version,fe=B(k);return await(0,p.waitUntilFunctionActive)(
52
+ fe,{FunctionName:n}),u&&await(0,p.waitUntilPublishedVersionActive)(fe,{FunctionName:n,
53
+ Qualifier:de}),{functionArn:lt,...u&&{functionVersion:de}}},"createFunction"),ie=o(
54
+ async(t,e,n)=>{t.update("Updating source code");let r=await Ne(n.sourceFile,n.files),
55
+ {publish:i,architecture:a}=n,s=f(),c=await s.send(new p.UpdateFunctionCodeCommand(
56
+ {Architectures:a&&[W(a)],FunctionName:e,ZipFile:r,Publish:i})),l=c.FunctionArn,m=c.
57
+ Version,u=B(s);return await(0,p.waitUntilFunctionUpdated)(u,{FunctionName:e}),i&&
58
+ await(0,p.waitUntilPublishedVersionActive)(u,{FunctionName:e,Qualifier:m}),{functionArn:l,
59
+ ...i&&{functionVersion:m}}},"updateSourceCode"),ae=o(async(t,e,n)=>{t.update("Up\
60
+ dating configuration");let{handlerName:r,variables:i}=n;i&&te(i);let a=n.vpc?await Q():
61
+ void 0,{description:s,memory:c,timeout:l,runtime:m,roleArn:u,logGroup:g,logLevel:w}=n,
62
+ y=f();await y.send(new p.UpdateFunctionConfigurationCommand({Runtime:m&&j(m),FunctionName:e,
63
+ Description:s,MemorySize:c,Timeout:l,Role:u,...r&&{Handler:Ie(r)},VpcConfig:{SecurityGroupIds:a?
64
+ [a.securityGroupId]:[],SubnetIds:a?a.subnetIds:[]},LoggingConfig:{LogGroup:g,ApplicationLogLevel:ne(
65
+ w??O.LogLevel),SystemLogLevel:p.SystemLogLevel.Warn,LogFormat:p.LogFormat.Json},
66
+ Environment:{Variables:i}})),await(0,p.waitUntilFunctionUpdated)(B(y),{FunctionName:e})},
67
+ "updateConfiguration"),Pe=o(async(t,e)=>{e.update("Deleting function");let n=f();
68
+ await(0,_.waitDeletion)(async()=>{try{await n.send(new p.DeleteFunctionCommand({
69
+ FunctionName:t}))}catch(r){if(!(r instanceof p.ResourceNotFoundException))throw r}})},
70
+ "deleteFunction");var se=o(async(t,e,n)=>{t.update("Tag function"),await f().send(new p.TagResourceCommand(
71
+ {Resource:e,Tags:{...n,ManagedBy:"EZ4"}}))},"tagFunction"),Ae=o(async(t,e,n)=>{t.
72
+ update("Untag function"),await f().send(new p.UntagResourceCommand({Resource:e,TagKeys:n}))},
73
+ "untagFunction"),Ne=o((t,e)=>be(t,"main.mjs",e),"getSourceZipFile"),Ie=o(t=>`mai\
74
+ n.${t}`,"getSourceHandlerName");var Ee=o(()=>({equals:At,create:Me,replace:It,preview:Nt,update:Et,delete:Mt}),"\
75
+ getFunctionHandler"),At=o((t,e)=>!!t.result&&t.result.functionArn===e.result?.functionArn,
76
+ "equalsResource"),Nt=o(async(t,e)=>{let n=t.parameters,r=e.parameters,i=(0,C.deepCompare)(
77
+ {...n,connections:t.connections,dependencies:t.dependencies,variables:N(await n.
78
+ getFunctionVariables()),filesHash:n.files&&await(0,d.getBundleHash)(n.functionName,
79
+ n.files),sourceHash:await(0,d.getBundleHash)(...n.getFunctionFiles()),valuesHash:n.
80
+ getFunctionHash()},{...r,connections:e.connections,dependencies:e.dependencies,variables:e.
81
+ result?.variables,sourceHash:e.result?.sourceHash,valuesHash:e.result?.valuesHash,
82
+ filesHash:e.result?.filesHash},{exclude:{release:!0}});if(i.counts)return{...i,name:n.
83
+ functionName}},"previewResource"),It=o(async(t,e,n)=>{if(e.result)throw new d.ReplaceResourceError(
84
+ F,t.entryId,e.entryId);return Me(t,n)},"replaceResource"),Me=o((t,e)=>{let{functionName:n,
85
+ release:r,...i}=t.parameters;return d.OperationLogger.logExecution(F,n,"creation",
86
+ async a=>{let s=(0,pe.getLogGroupName)(F,n,e),c=(0,ce.getRoleArn)(F,n,e),[l,m,u,
87
+ g,w]=await Promise.all([(0,d.getBundleHash)(...i.getFunctionFiles()),i.files&&(0,d.getBundleHash)(
88
+ n,i.files),i.getFunctionBundle(e),i.getFunctionHash(),i.getFunctionVariables()]),
89
+ y=await Le(a,n),v=await(0,C.hashFile)(u);if(y)return await ie(a,n,{architecture:i.
90
+ architecture,files:i.files,publish:!1,sourceFile:u}),await ae(a,n,{...i,logGroup:s,
91
+ roleArn:c,variables:{...w,...r?.variableName&&{[r.variableName]:r.version}}}),await se(
70
92
  a,y.functionArn,{...i.tags,...r?.tagName&&{[r.tagName]:r.version}}),{functionArn:y.
71
- functionArn,functionVersion:y.functionVersion,variables:A(g),valuesHash:l,sourceHash:m,
72
- bundleHash:h,logGroup:p,roleArn:c};let C=await ye(a,{...i,publish:!0,functionName:n,
73
- sourceFile:u,logGroup:p,roleArn:c,variables:{...g,...r?.variableName&&{[r.variableName]:r.
74
- version}},tags:{...i.tags,...r?.tagName&&{[r.tagName]:r.version}}});return{functionArn:C.
75
- functionArn,functionVersion:C.functionVersion,variables:A(g),valuesHash:l,sourceHash:m,
76
- bundleHash:h,logGroup:p,roleArn:c}})},"createResource"),wt=o((t,e,n)=>{let{parameters:r,
77
- result:i}=t,{functionName:a}=r;if(!i)throw new S.CorruptedResourceError(F,a);return S.OperationLogger.
78
- logExecution(F,a,"updates",async p=>{let c=await r.getFunctionVariables(),m=e.result?.
79
- variables??c,u=(0,Y.getRoleArn)(F,a,n),l=e.result?.roleArn??u,g=(0,X.getLogGroupName)(
80
- F,a,n),y=e.result?.logGroup??g,{isUpdated:h,...C}=await ht(p,a,r,e.result,n),V={
81
- ...r,variables:c,roleArn:u,logGroup:g},H={...e.parameters,variables:m,roleArn:l,
82
- logGroup:y};return await vt(p,a,V,H,h,n),await bt(p,i.functionArn,r,e.parameters,
83
- h),{...i,...C,variables:A(c),logGroup:g,roleArn:u}})},"updateResource"),Rt=o(async t=>{
84
- let{result:e,parameters:n}=t;if(!e)return;let{functionName:r}=n;await S.OperationLogger.
85
- logExecution(F,r,"deletion",async i=>{await Se(r,i)})},"deleteResource"),vt=o(async(t,e,n,r,i,a)=>{
86
- let{variables:p,...c}=n,m={variables:A(p),...c},u=!(0,P.deepEqual)(m,r,{exclude:{
87
- sourceFile:!0,functionName:!0,architecture:!0,release:!0,tags:!0}}),l=i?n.release:
88
- r.release,g=i&&l?.variableName;(u||g||a.force)&&await J(t,e,{...n,variables:{...n.
89
- variables,...l?.variableName&&{[l.variableName]:l.version}}})},"checkConfigurati\
90
- onUpdates"),bt=o(async(t,e,n,r,i)=>{let p=i&&n.release?.version!==r.release?.version?
91
- n.release:void 0,c={...n.tags,...p?.tagName&&{[p.tagName]:p.version}};await(0,S.applyTagUpdates)(
92
- c,r.tags,m=>K(t,e,m),m=>Fe(t,e,m))},"checkTagUpdates"),ht=o(async(t,e,n,r,i)=>{let[
93
- a,p]=await Promise.all([(0,S.getBundleHash)(...n.getFunctionFiles()),n.getFunctionHash()]),
94
- c=r?.sourceHash,m=r?.valuesHash;if(a!==c||p!==m||i.force){let u=await n.getFunctionBundle(
95
- i),l=await(0,P.hashFile)(u),g=r?.bundleHash;if(l===g&&p===m)return t.update("Ski\
96
- pping source code update"),{isUpdated:!1,valuesHash:p,sourceHash:a};let{functionVersion:y}=await _(
97
- t,e,{architecture:n.architecture,publish:!r?.functionVersion,sourceFile:u});return{
98
- isUpdated:!0,valuesHash:p,sourceHash:a,bundleHash:l,...y&&{functionVersion:y}}}return{
99
- isUpdated:!1}},"checkSourceCodeUpdates");var he=o(()=>{(0,be.tryRegisterProvider)(x,Re())},"registerFunctionProvider");var Ee=require("@ez4/aws-common");var T=require("@ez4/aws-common");var ee=require("@ez4/aws-common");var q=class extends Error{static{o(this,"FunctionNotFoundError")}constructor(e){
100
- super(`Function ${e} wasn't found.`)}};var te=o(t=>t.type===x,"isFunctionState"),Pt=o((t,e,n)=>{try{let r=t.getServiceState(
101
- e,n);if(te(r))return r}catch{}},"tryGetFunctionState"),Ct=o((t,e,n)=>{let r=t.getServiceState(
102
- e,n);if(!te(r))throw new q(e);return r},"getFunctionState"),L=o((t,e,n)=>{let r=n.
103
- getDependencies(x).at(0)?.parameters;if(!r?.functionName)throw new ee.IncompleteResourceError(
104
- t,e,"functionName");return r.functionName},"getFunctionName"),Pe=o(t=>t.getDependencies(
105
- x)[0]?.result?.functionArn,"tryGetFunctionArn"),At=o((t,e,n)=>{let r=Pe(n);if(!r)
106
- throw new ee.IncompleteResourceError(t,e,"functionArn");return r},"getFunctionAr\
107
- n");var N=require("@aws-sdk/client-lambda");var Ce=o(async(t,e)=>{t.update("Creating permission");let n=e.statementId??`ID${Date.
108
- now()}`;return await d().send(new N.AddPermissionCommand({StatementId:n,FunctionName:e.
93
+ functionArn,functionVersion:y.functionVersion,variables:N(w),sourceHash:l,valuesHash:g,
94
+ bundleHash:v,filesHash:m,logGroup:s,roleArn:c};let P=await Ce(a,{...i,publish:!0,
95
+ functionName:n,sourceFile:u,logGroup:s,roleArn:c,variables:{...w,...r?.variableName&&
96
+ {[r.variableName]:r.version}},tags:{...i.tags,...r?.tagName&&{[r.tagName]:r.version}}});
97
+ return{functionArn:P.functionArn,functionVersion:P.functionVersion,variables:N(w),
98
+ sourceHash:l,valuesHash:g,bundleHash:v,filesHash:m,logGroup:s,roleArn:c}})},"cre\
99
+ ateResource"),Et=o((t,e,n)=>{let{parameters:r,result:i}=t,{functionName:a}=r;if(!i)
100
+ throw new d.CorruptedResourceError(F,a);return d.OperationLogger.logExecution(F,
101
+ a,"updates",async s=>{let c=await r.getFunctionVariables(),l=e.result?.variables??
102
+ c,m=(0,ce.getRoleArn)(F,a,n),u=e.result?.roleArn??m,g=(0,pe.getLogGroupName)(F,a,
103
+ n),w=e.result?.logGroup??g,{isUpdated:y,...v}=await Vt(s,a,r,e.result,n),P={...r,
104
+ variables:c,roleArn:m,logGroup:g},k={...e.parameters,variables:l,roleArn:u,logGroup:w};
105
+ return await Tt(s,a,P,k,y,n),await Ht(s,i.functionArn,r,e.parameters,y),{...i,...v,
106
+ variables:N(c),logGroup:g,roleArn:m}})},"updateResource"),Mt=o(async t=>{let{result:e,
107
+ parameters:n}=t;if(!e)return;let{functionName:r}=n;await d.OperationLogger.logExecution(
108
+ F,r,"deletion",async i=>{await Pe(r,i)})},"deleteResource"),Tt=o(async(t,e,n,r,i,a)=>{
109
+ let{variables:s,...c}=n,l={variables:N(s),...c},m=!(0,C.deepEqual)(l,r,{exclude:{
110
+ sourceFile:!0,functionName:!0,architecture:!0,release:!0,tags:!0}}),u=i?n.release:
111
+ r.release,g=i&&u?.variableName;(m||g||a.force)&&await ae(t,e,{...n,variables:{...n.
112
+ variables,...u?.variableName&&{[u.variableName]:u.version}}})},"checkConfigurati\
113
+ onUpdates"),Ht=o(async(t,e,n,r,i)=>{let s=i&&n.release?.version!==r.release?.version?
114
+ n.release:void 0,c={...n.tags,...s?.tagName&&{[s.tagName]:s.version}};await(0,d.applyTagUpdates)(
115
+ c,r.tags,l=>se(t,e,l),l=>Ae(t,e,l))},"checkTagUpdates"),Vt=o(async(t,e,n,r,i)=>{
116
+ let[a,s,c]=await Promise.all([(0,d.getBundleHash)(...n.getFunctionFiles()),n.files&&
117
+ (0,d.getBundleHash)(e,n.files),n.getFunctionHash()]),l=r?.sourceHash,m=r?.valuesHash,
118
+ u=r?.filesHash;if(a!==l||c!==m||s!==u||i.force){let g=await n.getFunctionBundle(
119
+ i),w=await(0,C.hashFile)(g),y=r?.bundleHash;if(w===y&&s===u&&c===m)return t.update(
120
+ "Skipping source code update"),{isUpdated:!1,sourceHash:a};let{functionVersion:v}=await ie(
121
+ t,e,{architecture:n.architecture,publish:!r?.functionVersion,sourceFile:g,files:n.
122
+ files});return{isUpdated:!0,valuesHash:c,sourceHash:a,bundleHash:w,filesHash:s,...v&&
123
+ {functionVersion:v}}}return{isUpdated:!1}},"checkSourceCodeUpdates");var He=o(()=>{(0,Te.tryRegisterProvider)(x,Ee())},"registerFunctionProvider");var Ge=require("@ez4/aws-common");var D=require("@ez4/aws-common");var M=require("@aws-sdk/client-lambda");var Ve=o(async(t,e)=>{t.update("Creating permission");let n=e.statementId??`ID${Date.
124
+ now()}`;return await f().send(new M.AddPermissionCommand({StatementId:n,FunctionName:e.
109
125
  functionName,SourceArn:e.sourceArn,Principal:e.principal,Action:e.action})),{statementId:n}},
110
- "createPermission"),Ae=o(async(t,e,n)=>{t.update("Deleting permission");try{return await d().
111
- send(new N.RemovePermissionCommand({FunctionName:e,StatementId:n})),!0}catch(r){
112
- if(!(r instanceof N.ResourceNotFoundException))throw r;return!1}},"deletePermiss\
113
- ion");var E="AWS:Lambda/Permission",w="aws:lambda.permission";var Le=o(()=>({equals:Lt,create:Ne,replace:Et,preview:Nt,update:It,delete:Mt}),"\
114
- getPermissionHandler"),Lt=o((t,e)=>!!t.result&&t.result.functionName===e.result?.
115
- functionName,"equalsResource"),Nt=o((t,e)=>{},"previewResource"),Et=o(async(t,e,n)=>{
116
- if(e.result)throw new T.ReplaceResourceError(E,t.entryId,e.entryId);return Ne(t,
117
- n)},"replaceResource"),Ne=o((t,e)=>{let n=t.parameters,r=L(E,"permission",e);return T.OperationLogger.
118
- logExecution(E,r,"creation",async i=>{let a=await n.getPermission(e);return{statementId:(await Ce(
126
+ "createPermission"),Oe=o(async(t,e,n)=>{t.update("Deleting permission");try{return await f().
127
+ send(new M.RemovePermissionCommand({FunctionName:e,StatementId:n})),!0}catch(r){
128
+ if(!(r instanceof M.ResourceNotFoundException))throw r;return!1}},"deletePermiss\
129
+ ion");var T="AWS:Lambda/Permission",h="aws:lambda.permission";var Ue=o(()=>({equals:Ot,create:ze,replace:zt,preview:Ut,update:Gt,delete:Dt}),"\
130
+ getPermissionHandler"),Ot=o((t,e)=>!!t.result&&t.result.functionName===e.result?.
131
+ functionName,"equalsResource"),Ut=o((t,e)=>{},"previewResource"),zt=o(async(t,e,n)=>{
132
+ if(e.result)throw new D.ReplaceResourceError(T,t.entryId,e.entryId);return ze(t,
133
+ n)},"replaceResource"),ze=o((t,e)=>{let n=t.parameters,r=E(T,"permission",e);return D.OperationLogger.
134
+ logExecution(T,r,"creation",async i=>{let a=await n.getPermission(e);return{statementId:(await Ve(
119
135
  i,{action:"lambda:InvokeFunction",sourceArn:a.sourceArn,principal:a.principal,functionName:r})).
120
- statementId,functionName:r}})},"createResource"),It=o(async()=>{},"updateResourc\
121
- e"),Mt=o(async t=>{let e=t.result;if(!e)return;let{functionName:n,statementId:r}=e;
122
- await T.OperationLogger.logExecution(E,n,"deletion",async i=>{await Ae(i,n,r)})},
123
- "deleteResource");var Ie=o(()=>{(0,Ee.tryRegisterProvider)(w,Le())},"registerPermissionProvider");var ke=require("@ez4/aws-common");var b=require("@ez4/aws-common"),k=require("@ez4/utils");var f=require("@aws-sdk/client-lambda"),Te=require("@ez4/aws-common"),ne=require("@ez4/utils");var R="AWS:Lambda/Mapping",v="aws:lambda.mapping",Me=(n=>(n.DynamoDB="dynamodb",
124
- n.Queue="sqs",n))(Me||{});var Ve=o(async(t,e,n)=>{t.update("Importing mapping");let r=await d().send(new f.ListEventSourceMappingsCommand(
136
+ statementId,functionName:r}})},"createResource"),Gt=o(async()=>{},"updateResourc\
137
+ e"),Dt=o(async t=>{let e=t.result;if(!e)return;let{functionName:n,statementId:r}=e;
138
+ await D.OperationLogger.logExecution(T,n,"deletion",async i=>{await Oe(i,n,r)})},
139
+ "deleteResource");var De=o(()=>{(0,Ge.tryRegisterProvider)(h,Ue())},"registerPermissionProvider");var Ke=require("@ez4/aws-common");var L=require("@ez4/aws-common"),J=require("@ez4/utils");var S=require("@aws-sdk/client-lambda"),Be=require("@ez4/aws-common");var ke=require("@aws-sdk/client-lambda"),ue=require("@ez4/utils");var me=o(async(t,e)=>{let n=new Set(["Enabled","Disabled"]);await ue.Wait.until(
140
+ async()=>{let r=await kt(t,e);return n.has(r)?!0:ue.Wait.RetryAttempt})},"waitFo\
141
+ rReadyState"),kt=o(async(t,e)=>(await t.send(new ke.GetEventSourceMappingCommand(
142
+ {UUID:e}))).State,"getMappingState");var b="AWS:Lambda/Mapping",R="aws:lambda.mapping",qe=(n=>(n.DynamoDB="dynamodb",
143
+ n.Queue="sqs",n))(qe||{});var We=o(async(t,e,n)=>{t.update("Importing mapping");let r=await f().send(new S.ListEventSourceMappingsCommand(
125
144
  {FunctionName:e,EventSourceArn:n})),[i]=r.EventSourceMappings;return i?{eventId:i.
126
- UUID}:void 0},"importMapping"),He=o(async(t,e)=>{t.update("Creating mapping");let{
127
- sourceArn:n,functionName:r}=e,a=(await d().send(new f.CreateEventSourceMappingCommand(
128
- {FunctionName:r,EventSourceArn:n,...Ge(e)}))).UUID;return await ze(a),{eventId:a}},
129
- "createMapping"),Oe=o(async(t,e,n)=>{t.update("Updating mapping");let{functionName:r}=n;
130
- await d().send(new f.UpdateEventSourceMappingCommand({UUID:e,FunctionName:r,...Ge(
131
- n)})),await ze(e)},"updateMapping"),Ue=o(async(t,e)=>{t.update("Deleting mapping");
132
- try{return await d().send(new f.DeleteEventSourceMappingCommand({UUID:e})),!0}catch(n){
133
- if(!(n instanceof f.ResourceNotFoundException))throw n;return!1}},"deleteMapping"),
134
- Tt=o(async t=>(await d().send(new f.GetEventSourceMappingCommand({UUID:t}))).State,
135
- "getMappingState"),ze=o(async t=>{let e=new Set(["Enabled","Disabled"]);await ne.Wait.
136
- until(async()=>{let n=await Tt(t);return e.has(n)?!0:ne.Wait.RetryAttempt})},"wa\
137
- itForReadyState"),Ge=o(t=>{let{sourceArn:e,enabled:n,concurrency:r,batch:i}=t,{service:a}=(0,Te.parseArn)(
138
- e);return{Enabled:n,FunctionResponseTypes:[f.FunctionResponseType.ReportBatchItemFailures],
145
+ UUID}:void 0},"importMapping"),je=o(async(t,e)=>{t.update("Creating mapping");let{
146
+ sourceArn:n,functionName:r}=e,i=f(),s=(await i.send(new S.CreateEventSourceMappingCommand(
147
+ {FunctionName:r,EventSourceArn:n,...Qe(e)}))).UUID;return await me(i,s),{eventId:s}},
148
+ "createMapping"),$e=o(async(t,e,n)=>{t.update("Updating mapping");let{functionName:r}=n,
149
+ i=f();await i.send(new S.UpdateEventSourceMappingCommand({UUID:e,FunctionName:r,
150
+ ...Qe(n)})),await me(i,e)},"updateMapping"),Ze=o(async(t,e)=>{t.update("Deleting\
151
+ mapping");try{return await f().send(new S.DeleteEventSourceMappingCommand({UUID:e})),
152
+ !0}catch(n){if(!(n instanceof S.ResourceNotFoundException))throw n;return!1}},"d\
153
+ eleteMapping"),Qe=o(t=>{let{sourceArn:e,enabled:n,concurrency:r,batch:i}=t,{service:a}=(0,Be.parseArn)(
154
+ e);return{Enabled:n,FunctionResponseTypes:[S.FunctionResponseType.ReportBatchItemFailures],
139
155
  MaximumBatchingWindowInSeconds:i?.maxWait,BatchSize:i?.size,...a==="dynamodb"&&{
140
- StartingPosition:f.EventSourcePosition.LATEST},...a==="sqs"&&{ScalingConfig:{MaximumConcurrency:r}}}},
141
- "upsertMappingRequest");var De=o(()=>({equals:Vt,create:qe,replace:Ot,preview:Ht,update:Ut,delete:zt}),"\
142
- getMappingHandler"),Vt=o((t,e)=>!!t.result&&t.result.eventId===e.result?.eventId,
143
- "equalsResource"),Ht=o((t,e)=>{let n={...t.parameters,dependencies:t.dependencies},
144
- r={...e.parameters,dependencies:e.dependencies},i=(0,k.deepCompare)(n,r,{exclude:{
156
+ StartingPosition:S.EventSourcePosition.LATEST},...a==="sqs"&&{ScalingConfig:{MaximumConcurrency:r}}}},
157
+ "upsertMappingRequest");var _e=o(()=>({equals:qt,create:Je,replace:Wt,preview:Bt,update:jt,delete:$t}),"\
158
+ getMappingHandler"),qt=o((t,e)=>!!t.result&&t.result.eventId===e.result?.eventId,
159
+ "equalsResource"),Bt=o((t,e)=>{let n={...t.parameters,dependencies:t.dependencies},
160
+ r={...e.parameters,dependencies:e.dependencies},i=(0,J.deepCompare)(n,r,{exclude:{
145
161
  getSourceArn:!0}});if(i.counts)return{...i,name:n.fromService}},"previewResource"),
146
- Ot=o(async(t,e,n)=>{if(e.result)throw new b.ReplaceResourceError(R,t.entryId,e.entryId);
147
- return qe(t,n)},"replaceResource"),qe=o((t,e)=>{let n=t.parameters,r=L(R,"mappin\
148
- g",e);return b.OperationLogger.logExecution(R,r,"creation",async i=>{let a=await n.
149
- getSourceArn(e);return{eventId:(await Ve(i,r,a)??await He(i,{...t.parameters,functionName:r,
150
- sourceArn:a})).eventId,functionName:r,sourceArn:a}})},"createResource"),Ut=o((t,e,n)=>{
151
- let{result:r,parameters:i}=t,{fromService:a}=i;if(!r)throw new b.CorruptedResourceError(
152
- R,"mapping");return b.OperationLogger.logExecution(R,a,"updates",async p=>{let c=L(
153
- R,"mapping",n),m=e.result?.functionName??r.functionName,u=r.sourceArn,l={...t.parameters,
154
- functionName:c,sourceArn:u},g={...e.parameters,functionName:m,sourceArn:u};return await Gt(
155
- p,r.eventId,l,g),{...r,functionName:c}})},"updateResource"),zt=o(async t=>{let e=t.
156
- result;if(!e)return;let{functionName:n}=e;await b.OperationLogger.logExecution(R,
157
- n,"deletion",async r=>{await Ue(r,e.eventId)})},"deleteResource"),Gt=o(async(t,e,n,r)=>{
158
- !(0,k.deepEqual)(n,r,{exclude:{getSourceArn:!0,fromService:!0}})&&await Oe(t,e,n)},
159
- "checkGeneralUpdates");var Be=o(()=>{(0,ke.tryRegisterProvider)(v,De())},"registerMappingProvider");var We=o(()=>[{account:"lambda.amazonaws.com"}],"prepareIdentityAccount");var B=require("@ez4/aws-identity"),je=require("@ez4/project/library");var I=require("@ez4/aws-identity");var $e=o(async t=>{let[e,n]=await Promise.all([(0,I.getRegion)(),(0,I.getAccountId)()]);
160
- return(0,I.createPolicyDocument)([{permissions:["logs:CreateLogStream","logs:Put\
161
- LogEvents"],resourceIds:[`arn:aws:logs:${e}:${n}:log-group:${t}-*:*`]}])},"getPo\
162
- licyDocument");var Ze=o(async t=>{let{state:e,options:n}=t,r=(0,je.getServiceName)("",n),i=`${r}\
163
- -lambda-policy`;return(0,B.tryGetPolicy)(e,i)??(0,B.createPolicy)(e,{tags:n.tags,
164
- policyDocument:await $e(r),policyName:i})},"prepareExecutionPolicy");var Dt=o(()=>{(0,Qe.registerTriggers)(),(0,_e.registerTriggers)(),(0,Je.registerTriggers)(),
165
- (0,Ke.tryCreateTrigger)("@ez4/aws-function",{"deploy:prepareIdentityAccount":We,
166
- "deploy:prepareExecutionPolicy":Ze}),he(),Ie(),Be()},"registerTriggers");var W=require("@ez4/utils"),Xe=require("@ez4/stateful");var qt=o((t,e,n,r)=>{let i=(0,W.toKebabCase)(r.functionName),a=(0,W.hashData)(x,
167
- e.entryId,i),p=[e.entryId];return n&&p.push(n.entryId),(0,Xe.attachEntry)(t,{type:x,
168
- entryId:a,dependencies:p,parameters:{...r,functionName:i}})},"createFunction");var et=require("@ez4/stateful"),re=require("@ez4/utils");var Ye=o(t=>t.type===w,"isPermissionState");var kt=o((t,e,n,r)=>{let i=(0,re.hashData)(w,e.entryId,n.entryId);return(0,et.attachEntry)(
169
- t,{type:w,entryId:i,dependencies:[e.entryId,n.entryId],parameters:r})},"createPe\
170
- rmission"),Bt=o((t,e,n)=>{let r=(0,re.hashData)(w,e.entryId,n.entryId),i=t[r];return i&&
171
- Ye(i)?i:null},"getPermission");var tt=require("@ez4/utils"),nt=require("@ez4/stateful");var Wt=o((t,e,n,r)=>{let i=(0,tt.hashData)(v,e.entryId,n.entryId);return(0,nt.attachEntry)(
172
- t,{type:v,entryId:i,dependencies:[e.entryId,n.entryId],parameters:r})},"createMa\
173
- pping");var $t=o(t=>t.type===v,"isMappingState");var jt=o((t,e,n)=>`arn:aws:lambda:${t}:${e}:function:${n}`,"buildFunctionArn");var $=require("@ez4/project"),rt;(a=>(a.LogRetention=90,a.Architecture=$.ArchitectureType.
174
- x86,a.Runtime=$.RuntimeType.Node24,a.Timeout=90,a.Memory=192))(rt||={});0&&(module.exports={FunctionArchitecture,FunctionDefaults,FunctionRuntime,FunctionServiceName,
162
+ Wt=o(async(t,e,n)=>{if(e.result)throw new L.ReplaceResourceError(b,t.entryId,e.entryId);
163
+ return Je(t,n)},"replaceResource"),Je=o((t,e)=>{let n=t.parameters,r=E(b,"mappin\
164
+ g",e);return L.OperationLogger.logExecution(b,r,"creation",async i=>{let a=await n.
165
+ getSourceArn(e);return{eventId:(await We(i,r,a)??await je(i,{...t.parameters,functionName:r,
166
+ sourceArn:a})).eventId,functionName:r,sourceArn:a}})},"createResource"),jt=o((t,e,n)=>{
167
+ let{result:r,parameters:i}=t,{fromService:a}=i;if(!r)throw new L.CorruptedResourceError(
168
+ b,"mapping");return L.OperationLogger.logExecution(b,a,"updates",async s=>{let c=E(
169
+ b,"mapping",n),l=e.result?.functionName??r.functionName,m=r.sourceArn,u={...t.parameters,
170
+ functionName:c,sourceArn:m},g={...e.parameters,functionName:l,sourceArn:m};return await Zt(
171
+ s,r.eventId,u,g),{...r,functionName:c}})},"updateResource"),$t=o(async t=>{let e=t.
172
+ result;if(!e)return;let{functionName:n}=e;await L.OperationLogger.logExecution(b,
173
+ n,"deletion",async r=>{await Ze(r,e.eventId)})},"deleteResource"),Zt=o(async(t,e,n,r)=>{
174
+ !(0,J.deepEqual)(n,r,{exclude:{getSourceArn:!0,fromService:!0}})&&await $e(t,e,n)},
175
+ "checkGeneralUpdates");var Xe=o(()=>{(0,Ke.tryRegisterProvider)(R,_e())},"registerMappingProvider");var Ye=o(()=>[{account:"lambda.amazonaws.com"}],"prepareIdentityAccount");var K=require("@ez4/aws-identity"),tt=require("@ez4/project/library");var H=require("@ez4/aws-identity");var et=o(async t=>{let[e,n]=await Promise.all([(0,H.getRegion)(),(0,H.getAccountId)()]);
176
+ return(0,H.createPolicyDocument)([{permissions:["logs:CreateLogStream","logs:Put\
177
+ LogEvents"],resourceIds:[`arn:aws:logs:${e}:${n}:log-group:${t}-*:*`]},{permissions:[
178
+ "ec2:CreateNetworkInterface","ec2:DescribeNetworkInterfaces","ec2:DeleteNetworkI\
179
+ nterface"],resourceIds:["*"]}])},"getPolicyDocument");var nt=o(async t=>{let{state:e,options:n}=t,r=(0,tt.getServiceName)("",n),i=`${r}\
180
+ -lambda-policy`;return(0,K.tryGetPolicy)(e,i)??(0,K.createPolicy)(e,{tags:n.tags,
181
+ policyDocument:await et(r),policyName:i})},"prepareExecutionPolicy");var Qt=o(()=>{(0,rt.registerTriggers)(),(0,ot.registerTriggers)(),(0,it.registerTriggers)(),
182
+ (0,at.tryCreateTrigger)("@ez4/aws-function",{"deploy:prepareIdentityAccount":Ye,
183
+ "deploy:prepareExecutionPolicy":nt}),He(),De(),Xe()},"registerTriggers");var X=require("@ez4/utils"),st=require("@ez4/stateful");var _t=o((t,e,n,r)=>{let i=(0,X.toKebabCase)(r.functionName),a=(0,X.hashData)(x,
184
+ e.entryId,i),s=[e.entryId];return n&&s.push(n.entryId),(0,st.attachEntry)(t,{type:x,
185
+ entryId:a,dependencies:s,parameters:{...r,functionName:i}})},"createFunction");var ct=require("@ez4/stateful"),le=require("@ez4/utils");var pt=o(t=>t.type===h,"isPermissionState");var Jt=o((t,e,n,r)=>{let i=(0,le.hashData)(h,e.entryId,n.entryId);return(0,ct.attachEntry)(
186
+ t,{type:h,entryId:i,dependencies:[e.entryId,n.entryId],parameters:r})},"createPe\
187
+ rmission"),Kt=o((t,e,n)=>{let r=(0,le.hashData)(h,e.entryId,n.entryId),i=t[r];return i&&
188
+ pt(i)?i:null},"getPermission");var ut=require("@ez4/utils"),mt=require("@ez4/stateful");var Xt=o((t,e,n,r)=>{let i=(0,ut.hashData)(R,e.entryId,n.entryId);return(0,mt.attachEntry)(
189
+ t,{type:R,entryId:i,dependencies:[e.entryId,n.entryId],parameters:r})},"createMa\
190
+ pping");var Yt=o(t=>t.type===R,"isMappingState");var en=o((t,e,n)=>`arn:aws:lambda:${t}:${e}:function:${n}`,"buildFunctionArn");0&&(module.exports={FunctionArchitecture,FunctionDefaults,FunctionRuntime,FunctionServiceName,
175
191
  FunctionServiceType,MappingService,MappingServiceName,MappingServiceType,PermissionServiceName,
176
192
  PermissionServiceType,buildFunctionArn,createFunction,createMapping,createPermission,
177
- getFunctionArchitecture,getFunctionArn,getFunctionName,getFunctionRuntime,getFunctionState,
178
- getPermission,isFunctionState,isMappingState,registerTriggers,tryGetFunctionArn,
193
+ getDefaultVpcConfig,getFunctionArchitecture,getFunctionArn,getFunctionName,getFunctionRuntime,
194
+ getFunctionState,getPermission,isFunctionState,isMappingState,registerTriggers,tryGetFunctionArn,
179
195
  tryGetFunctionState});
180
196
  //# sourceMappingURL=main.cjs.map
package/dist/main.mjs CHANGED
@@ -1,162 +1,175 @@
1
- var Ie=Object.defineProperty;var o=(t,e)=>Ie(t,"name",{value:e,configurable:!0});import{registerTriggers as en}from"@ez4/aws-common";import{registerTriggers as tn}from"@ez4/aws-identity";
2
- import{registerTriggers as nn}from"@ez4/aws-logs";import{tryCreateTrigger as rn}from"@ez4/project/library";import{tryRegisterProvider as dt}from"@ez4/aws-common";import{applyTagUpdates as tt,CorruptedResourceError as nt,getBundleHash as O,OperationLogger as U,
3
- ReplaceResourceError as rt}from"@ez4/aws-common";import{deepCompare as ot,deepEqual as it,
4
- hashFile as te}from"@ez4/utils";import{getLogGroupName as ne}from"@ez4/aws-logs";
5
- import{getRoleArn as re}from"@ez4/aws-identity";import{GetFunctionCommand as $e,CreateFunctionCommand as je,DeleteFunctionCommand as Ze,
6
- UpdateFunctionCodeCommand as Qe,UpdateFunctionConfigurationCommand as _e,PublishVersionCommand as zn,
7
- TagResourceCommand as Je,UntagResourceCommand as Ke,waitUntilFunctionActive as Xe,
8
- waitUntilFunctionUpdated as W,waitUntilPublishedVersionActive as $,ResourceNotFoundException as j,
9
- ApplicationLogLevel as L,SystemLogLevel as Z,LogFormat as Q}from"@aws-sdk/client-lambda";
10
- import{waitCreation as Ye,waitDeletion as et}from"@ez4/aws-common";import{getAwsClientOptions as Me,getAwsClientWaiter as Te}from"@ez4/aws-common";
11
- import{LambdaClient as Ve}from"@aws-sdk/client-lambda";var g=o(()=>new Ve(Me()),"getLambdaClient"),A=o(t=>({...Te(),client:t}),"getLamb\
12
- daWaiter");import{RuntimeType as q}from"@ez4/project";var He=(n=>(n.Node22="nodejs22.x",n.Node24="nodejs24.x",n))(He||{});var Oe={[q.Node22]:"nodejs22.x",[q.Node24]:"nodejs24.x"},E=o(t=>Oe[t],"getFuncti\
13
- onRuntime");import{ArchitectureType as k}from"@ez4/project";var Ue=(n=>(n.Arm="arm64",n.x86="x86_64",n))(Ue||{});var ze={[k.Arm]:"arm64",[k.x86]:"x86_64"},I=o(t=>ze[t],"getFunctionArchitecture");import{InvalidParameterError as Ge}from"@ez4/aws-common";import{hashData as De}from"@ez4/utils";var f="AWS:Lambda/Function",y="aws:lambda.function";var qe=/[a-z][\w]+/i,ke=o(t=>qe.test(t),"isValidName"),M=o(t=>{for(let e in t)if(!ke(
14
- e))throw new Ge(f,`${e} is an invalid variable name .`)},"assertVariables"),v=o(
15
- t=>{let e={};for(let n in t)e[n]=De(t[n]);return e},"protectVariables");import Be from"adm-zip";import{readFile as We}from"node:fs/promises";var B=o(async(t,e)=>{let n=new Be,r=await We(t);return n.addFile(e,r),n.toBufferPromise()},
16
- "getZipBuffer");var _=o(async(t,e,n)=>{t.update("Importing function");try{let r=await g().send(new $e(
17
- {FunctionName:e,Qualifier:n})),i=r.Configuration.Version,a=r.Configuration.FunctionArn;
18
- return{functionVersion:i,functionArn:a}}catch(r){if(!(r instanceof j))throw r;return}},
19
- "importFunction"),J=o(async(t,e)=>{t.update("Creating function");let{functionName:n,
20
- variables:r}=e;r&&M(r);let i=ee(e.handlerName),a=await Y(e.sourceFile),{description:s,
21
- memory:p,timeout:u,publish:c,architecture:m,runtime:l,debug:d,roleArn:x,logGroup:R}=e,
22
- P=g(),C=await Ye(()=>P.send(new je({FunctionName:n,Description:s,MemorySize:p,Timeout:u,
23
- Role:x,Publish:c,Handler:i,Architectures:[I(m)],Runtime:E(l),PackageType:"Zip",LoggingConfig:{
24
- LogGroup:R,ApplicationLogLevel:d?L.Debug:L.Warn,SystemLogLevel:Z.Warn,LogFormat:Q.
25
- Json},Code:{ZipFile:a},Environment:{Variables:r},Tags:{...e.tags,ManagedBy:"EZ4"}}))),
26
- Ee=C.FunctionArn,G=C.Version,D=A(P);return await Xe(D,{FunctionName:n}),c&&await $(
27
- D,{FunctionName:n,Qualifier:G}),{functionArn:Ee,...c&&{functionVersion:G}}},"cre\
28
- ateFunction"),T=o(async(t,e,n)=>{t.update("Updating source code");let r=await Y(
29
- n.sourceFile),{publish:i,architecture:a}=n,s=g(),p=await s.send(new Qe({Architectures:a&&
30
- [I(a)],FunctionName:e,ZipFile:r,Publish:i})),u=p.FunctionArn,c=p.Version,m=A(s);
31
- return await W(m,{FunctionName:e}),i&&await $(m,{FunctionName:e,Qualifier:c}),{functionArn:u,
32
- ...i&&{functionVersion:c}}},"updateSourceCode"),V=o(async(t,e,n)=>{t.update("Upd\
33
- ating configuration");let{handlerName:r,variables:i}=n;i&&M(i);let{description:a,
34
- memory:s,timeout:p,runtime:u,debug:c,roleArn:m,logGroup:l}=n,d=g();await d.send(
35
- new _e({Runtime:u&&E(u),FunctionName:e,Description:a,MemorySize:s,Timeout:p,Role:m,
36
- ...r&&{Handler:ee(r)},LoggingConfig:{LogGroup:l,ApplicationLogLevel:c?L.Debug:L.
37
- Warn,SystemLogLevel:Z.Warn,LogFormat:Q.Json},Environment:{Variables:i}})),await W(
38
- A(d),{FunctionName:e})},"updateConfiguration"),K=o(async(t,e)=>{e.update("Deleti\
39
- ng function");let n=g();await et(async()=>{try{await n.send(new Ze({FunctionName:t}))}catch(r){
40
- if(!(r instanceof j))throw r}})},"deleteFunction");var H=o(async(t,e,n)=>{t.update("Tag function"),await g().send(new Je({Resource:e,
41
- Tags:{...n,ManagedBy:"EZ4"}}))},"tagFunction"),X=o(async(t,e,n)=>{t.update("Unta\
42
- g function"),await g().send(new Ke({Resource:e,TagKeys:n}))},"untagFunction"),Y=o(
43
- t=>B(t,"main.mjs"),"getSourceZipFile"),ee=o(t=>`main.${t}`,"getSourceHandlerName");var oe=o(()=>({equals:at,create:ie,replace:pt,preview:st,update:ct,delete:ut}),"\
44
- getFunctionHandler"),at=o((t,e)=>!!t.result&&t.result.functionArn===e.result?.functionArn,
45
- "equalsResource"),st=o(async(t,e)=>{let n=t.parameters,r=e.parameters,i=ot({...n,
46
- connections:t.connections,dependencies:t.dependencies,variables:v(await n.getFunctionVariables()),
47
- sourceHash:await O(...n.getFunctionFiles()),valuesHash:n.getFunctionHash()},{...r,
48
- connections:e.connections,dependencies:e.dependencies,variables:e.result?.variables,
49
- sourceHash:e.result?.sourceHash,valuesHash:e.result?.valuesHash},{exclude:{release:!0}});
50
- if(i.counts)return{...i,name:n.functionName}},"previewResource"),pt=o(async(t,e,n)=>{
51
- if(e.result)throw new rt(f,t.entryId,e.entryId);return ie(t,n)},"replaceResource"),
52
- ie=o((t,e)=>{let{functionName:n,release:r,...i}=t.parameters;return U.logExecution(
53
- f,n,"creation",async a=>{let s=ne(f,n,e),p=re(f,n,e),[u,c,m,l]=await Promise.all(
54
- [O(...i.getFunctionFiles()),i.getFunctionBundle(e),i.getFunctionHash(),i.getFunctionVariables()]),
55
- d=await _(a,n),x=await te(c);if(d)return await T(a,n,{architecture:i.architecture,
56
- publish:!1,sourceFile:c}),await V(a,n,{...i,logGroup:s,roleArn:p,variables:{...l,
57
- ...r?.variableName&&{[r.variableName]:r.version}}}),await H(a,d.functionArn,{...i.
58
- tags,...r?.tagName&&{[r.tagName]:r.version}}),{functionArn:d.functionArn,functionVersion:d.
59
- functionVersion,variables:v(l),valuesHash:m,sourceHash:u,bundleHash:x,logGroup:s,
60
- roleArn:p};let R=await J(a,{...i,publish:!0,functionName:n,sourceFile:c,logGroup:s,
61
- roleArn:p,variables:{...l,...r?.variableName&&{[r.variableName]:r.version}},tags:{
62
- ...i.tags,...r?.tagName&&{[r.tagName]:r.version}}});return{functionArn:R.functionArn,
63
- functionVersion:R.functionVersion,variables:v(l),valuesHash:m,sourceHash:u,bundleHash:x,
64
- logGroup:s,roleArn:p}})},"createResource"),ct=o((t,e,n)=>{let{parameters:r,result:i}=t,
65
- {functionName:a}=r;if(!i)throw new nt(f,a);return U.logExecution(f,a,"updates",async s=>{
66
- let p=await r.getFunctionVariables(),u=e.result?.variables??p,c=re(f,a,n),m=e.result?.
67
- roleArn??c,l=ne(f,a,n),d=e.result?.logGroup??l,{isUpdated:x,...R}=await gt(s,a,r,
68
- e.result,n),P={...r,variables:p,roleArn:c,logGroup:l},C={...e.parameters,variables:u,
69
- roleArn:m,logGroup:d};return await mt(s,a,P,C,x,n),await lt(s,i.functionArn,r,e.
70
- parameters,x),{...i,...R,variables:v(p),logGroup:l,roleArn:c}})},"updateResource"),
71
- ut=o(async t=>{let{result:e,parameters:n}=t;if(!e)return;let{functionName:r}=n;await U.
72
- logExecution(f,r,"deletion",async i=>{await K(r,i)})},"deleteResource"),mt=o(async(t,e,n,r,i,a)=>{
73
- let{variables:s,...p}=n,u={variables:v(s),...p},c=!it(u,r,{exclude:{sourceFile:!0,
74
- functionName:!0,architecture:!0,release:!0,tags:!0}}),m=i?n.release:r.release,l=i&&
75
- m?.variableName;(c||l||a.force)&&await V(t,e,{...n,variables:{...n.variables,...m?.
76
- variableName&&{[m.variableName]:m.version}}})},"checkConfigurationUpdates"),lt=o(
77
- async(t,e,n,r,i)=>{let s=i&&n.release?.version!==r.release?.version?n.release:void 0,
78
- p={...n.tags,...s?.tagName&&{[s.tagName]:s.version}};await tt(p,r.tags,u=>H(t,e,
79
- u),u=>X(t,e,u))},"checkTagUpdates"),gt=o(async(t,e,n,r,i)=>{let[a,s]=await Promise.
80
- all([O(...n.getFunctionFiles()),n.getFunctionHash()]),p=r?.sourceHash,u=r?.valuesHash;
81
- if(a!==p||s!==u||i.force){let c=await n.getFunctionBundle(i),m=await te(c),l=r?.
82
- bundleHash;if(m===l&&s===u)return t.update("Skipping source code update"),{isUpdated:!1,
83
- valuesHash:s,sourceHash:a};let{functionVersion:d}=await T(t,e,{architecture:n.architecture,
84
- publish:!r?.functionVersion,sourceFile:c});return{isUpdated:!0,valuesHash:s,sourceHash:a,
85
- bundleHash:m,...d&&{functionVersion:d}}}return{isUpdated:!1}},"checkSourceCodeUp\
86
- dates");var ae=o(()=>{dt(y,oe())},"registerFunctionProvider");import{tryRegisterProvider as Pt}from"@ez4/aws-common";import{OperationLogger as me,ReplaceResourceError as xt}from"@ez4/aws-common";import{IncompleteResourceError as se}from"@ez4/aws-common";var N=class extends Error{static{o(this,"FunctionNotFoundError")}constructor(e){
87
- super(`Function ${e} wasn't found.`)}};var pe=o(t=>t.type===y,"isFunctionState"),lr=o((t,e,n)=>{try{let r=t.getServiceState(
88
- e,n);if(pe(r))return r}catch{}},"tryGetFunctionState"),gr=o((t,e,n)=>{let r=t.getServiceState(
89
- e,n);if(!pe(r))throw new N(e);return r},"getFunctionState"),b=o((t,e,n)=>{let r=n.
90
- getDependencies(y).at(0)?.parameters;if(!r?.functionName)throw new se(t,e,"funct\
91
- ionName");return r.functionName},"getFunctionName"),ft=o(t=>t.getDependencies(y)[0]?.
92
- result?.functionArn,"tryGetFunctionArn"),dr=o((t,e,n)=>{let r=ft(n);if(!r)throw new se(
93
- t,e,"functionArn");return r},"getFunctionArn");import{AddPermissionCommand as yt,RemovePermissionCommand as St,ResourceNotFoundException as Ft}from"@aws-sdk/client-lambda";var ce=o(async(t,e)=>{t.update("Creating permission");let n=e.statementId??`ID${Date.
94
- now()}`;return await g().send(new yt({StatementId:n,FunctionName:e.functionName,
95
- SourceArn:e.sourceArn,Principal:e.principal,Action:e.action})),{statementId:n}},
96
- "createPermission"),ue=o(async(t,e,n)=>{t.update("Deleting permission");try{return await g().
97
- send(new St({FunctionName:e,StatementId:n})),!0}catch(r){if(!(r instanceof Ft))throw r;
98
- return!1}},"deletePermission");var h="AWS:Lambda/Permission",S="aws:lambda.permission";var le=o(()=>({equals:wt,create:ge,replace:vt,preview:Rt,update:bt,delete:ht}),"\
99
- getPermissionHandler"),wt=o((t,e)=>!!t.result&&t.result.functionName===e.result?.
100
- functionName,"equalsResource"),Rt=o((t,e)=>{},"previewResource"),vt=o(async(t,e,n)=>{
101
- if(e.result)throw new xt(h,t.entryId,e.entryId);return ge(t,n)},"replaceResource"),
102
- ge=o((t,e)=>{let n=t.parameters,r=b(h,"permission",e);return me.logExecution(h,r,
103
- "creation",async i=>{let a=await n.getPermission(e);return{statementId:(await ce(
1
+ var Ue=Object.defineProperty;var o=(n,e)=>Ue(n,"name",{value:e,configurable:!0});import{registerTriggers as dn}from"@ez4/aws-common";import{registerTriggers as fn}from"@ez4/aws-identity";
2
+ import{registerTriggers as yn}from"@ez4/aws-logs";import{tryCreateTrigger as Sn}from"@ez4/project/library";import{tryRegisterProvider as At}from"@ez4/aws-common";import{applyTagUpdates as ft,CorruptedResourceError as yt,getBundleHash as R,OperationLogger as q,
3
+ ReplaceResourceError as St}from"@ez4/aws-common";import{deepCompare as wt,deepEqual as Ft,
4
+ hashFile as ue}from"@ez4/utils";import{getLogGroupName as me}from"@ez4/aws-logs";
5
+ import{getRoleArn as le}from"@ez4/aws-identity";import{GetFunctionCommand as it,CreateFunctionCommand as at,DeleteFunctionCommand as st,
6
+ UpdateFunctionCodeCommand as pt,UpdateFunctionConfigurationCommand as ct,PublishVersionCommand as mr,
7
+ TagResourceCommand as ut,UntagResourceCommand as mt,waitUntilFunctionActive as lt,
8
+ waitUntilFunctionUpdated as Y,waitUntilPublishedVersionActive as ee,ResourceNotFoundException as te,
9
+ SystemLogLevel as ne,LogFormat as re}from"@aws-sdk/client-lambda";import{waitCreation as gt,
10
+ waitDeletion as dt}from"@ez4/aws-common";import{getAwsClientOptions as ze,getAwsClientWaiter as Ge}from"@ez4/aws-common";
11
+ import{LambdaClient as De}from"@aws-sdk/client-lambda";var g=o(()=>new De(ze()),"getLambdaClient"),N=o(n=>({...Ge(),client:n}),"getLamb\
12
+ daWaiter");import{ArchitectureType as Q}from"@ez4/project";var ke=(t=>(t.Arm="arm64",t.x86="x86_64",t))(ke||{});var qe={[Q.Arm]:"arm64",[Q.x86]:"x86_64"},H=o(n=>qe[n],"getFunctionArchitecture");import{RuntimeType as _}from"@ez4/project";var Be=(t=>(t.Node22="nodejs22.x",t.Node24="nodejs24.x",t))(Be||{});var We={[_.Node22]:"nodejs22.x",[_.Node24]:"nodejs24.x"},V=o(n=>We[n],"getFuncti\
13
+ onRuntime");import{ArchitectureType as je,RuntimeType as $e,LogLevel as Ze}from"@ez4/project";
14
+ var I;(s=>(s.LogRetention=90,s.LogLevel=Ze.Warning,s.Architecture=je.x86,s.Runtime=
15
+ $e.Node24,s.Timeout=90,s.Memory=192))(I||={});import{InvalidParameterError as Qe}from"@ez4/aws-common";import{hashData as _e}from"@ez4/utils";var y="AWS:Lambda/Function",w="aws:lambda.function";var Je=/[a-z][\w]+/i,Ke=o(n=>Je.test(n),"isValidName"),O=o(n=>{for(let e in n)if(!Ke(
16
+ e))throw new Qe(y,`${e} is an invalid variable name .`)},"assertVariables"),b=o(
17
+ n=>{let e={};for(let t in n)e[t]=_e(n[t]);return e},"protectVariables");import{ApplicationLogLevel as E}from"@aws-sdk/client-lambda";import{LogLevel as M}from"@ez4/project";var U=o(n=>{switch(n){case M.Information:return E.Info;case M.Debug:return E.Debug;case M.
18
+ Error:return E.Error;default:case M.Warning:return E.Warn}},"getLogLevel");import{dirname as Xe,normalize as Ye}from"node:path";import et from"adm-zip";var J=o(async(n,e,t)=>{let r=new et;return t?.forEach(i=>{r.addLocalFile(i,Xe(Ye(
19
+ i)))}),r.addLocalFile(n,void 0,e),r.toBufferPromise()},"getZipBuffer");import{getDefaultSecurityGroupId as tt,getDefaultSubnetIds as nt,getDefaultVpcId as rt}from"@ez4/aws-vpc";
20
+ import{IncompleteResourceError as K}from"@ez4/aws-common";var T=class extends Error{static{o(this,"FunctionNotFoundError")}constructor(e){
21
+ super(`Function ${e} wasn't found.`)}},L=class extends Error{static{o(this,"Defa\
22
+ ultVpcDetailsError")}constructor(){super("Unable to get the default VPC details.")}};var X=o(n=>n.type===w,"isFunctionState"),ir=o((n,e,t)=>{try{let r=n.getServiceState(
23
+ e,t);if(X(r))return r}catch{}},"tryGetFunctionState"),ar=o((n,e,t)=>{let r=n.getServiceState(
24
+ e,t);if(!X(r))throw new T(e);return r},"getFunctionState"),C=o((n,e,t)=>{let r=t.
25
+ getDependencies(w).at(0)?.parameters;if(!r?.functionName)throw new K(n,e,"functi\
26
+ onName");return r.functionName},"getFunctionName"),ot=o(n=>n.getDependencies(w)[0]?.
27
+ result?.functionArn,"tryGetFunctionArn"),sr=o((n,e,t)=>{let r=ot(t);if(!r)throw new K(
28
+ n,e,"functionArn");return r},"getFunctionArn"),z=o(async()=>{let n=await rt();if(!n)
29
+ throw new L;let[e,t]=await Promise.all([nt(n),tt(n)]);if(!e?.length||!t)throw new L;
30
+ return{subnetIds:e.slice(0,2),securityGroupId:t}},"getDefaultVpcConfig");var oe=o(async(n,e,t)=>{n.update("Importing function");try{let r=await g().send(
31
+ new it({FunctionName:e,Qualifier:t})),i=r.Configuration.Version,a=r.Configuration.
32
+ FunctionArn;return{functionVersion:i,functionArn:a}}catch(r){if(!(r instanceof te))
33
+ throw r;return}},"importFunction"),ie=o(async(n,e)=>{n.update("Creating function");
34
+ let{functionName:t,variables:r}=e;r&&O(r);let i=e.vpc?await z():void 0,a=await pe(
35
+ e.sourceFile,e.files),s=ce(e.handlerName),{description:p,memory:m,timeout:u,publish:c,
36
+ architecture:l,runtime:f,roleArn:d,logGroup:S,logLevel:h}=e,A=g(),j=await gt(()=>A.
37
+ send(new at({FunctionName:t,Description:p,MemorySize:m,Timeout:u,Role:d,Publish:c,
38
+ Handler:s,Architectures:[H(l)],Runtime:V(f),PackageType:"Zip",VpcConfig:{SecurityGroupIds:i?
39
+ [i.securityGroupId]:[],SubnetIds:i?i.subnetIds:[]},LoggingConfig:{LogGroup:S,ApplicationLogLevel:U(
40
+ h??I.LogLevel),SystemLogLevel:ne.Warn,LogFormat:re.Json},Code:{ZipFile:a},Environment:{
41
+ Variables:r},Tags:{...e.tags,ManagedBy:"EZ4"}}))),Oe=j.FunctionArn,$=j.Version,Z=N(
42
+ A);return await lt(Z,{FunctionName:t}),c&&await ee(Z,{FunctionName:t,Qualifier:$}),
43
+ {functionArn:Oe,...c&&{functionVersion:$}}},"createFunction"),G=o(async(n,e,t)=>{
44
+ n.update("Updating source code");let r=await pe(t.sourceFile,t.files),{publish:i,
45
+ architecture:a}=t,s=g(),p=await s.send(new pt({Architectures:a&&[H(a)],FunctionName:e,
46
+ ZipFile:r,Publish:i})),m=p.FunctionArn,u=p.Version,c=N(s);return await Y(c,{FunctionName:e}),
47
+ i&&await ee(c,{FunctionName:e,Qualifier:u}),{functionArn:m,...i&&{functionVersion:u}}},
48
+ "updateSourceCode"),D=o(async(n,e,t)=>{n.update("Updating configuration");let{handlerName:r,
49
+ variables:i}=t;i&&O(i);let a=t.vpc?await z():void 0,{description:s,memory:p,timeout:m,
50
+ runtime:u,roleArn:c,logGroup:l,logLevel:f}=t,d=g();await d.send(new ct({Runtime:u&&
51
+ V(u),FunctionName:e,Description:s,MemorySize:p,Timeout:m,Role:c,...r&&{Handler:ce(
52
+ r)},VpcConfig:{SecurityGroupIds:a?[a.securityGroupId]:[],SubnetIds:a?a.subnetIds:
53
+ []},LoggingConfig:{LogGroup:l,ApplicationLogLevel:U(f??I.LogLevel),SystemLogLevel:ne.
54
+ Warn,LogFormat:re.Json},Environment:{Variables:i}})),await Y(N(d),{FunctionName:e})},
55
+ "updateConfiguration"),ae=o(async(n,e)=>{e.update("Deleting function");let t=g();
56
+ await dt(async()=>{try{await t.send(new st({FunctionName:n}))}catch(r){if(!(r instanceof
57
+ te))throw r}})},"deleteFunction");var k=o(async(n,e,t)=>{n.update("Tag function"),await g().send(new ut({Resource:e,
58
+ Tags:{...t,ManagedBy:"EZ4"}}))},"tagFunction"),se=o(async(n,e,t)=>{n.update("Unt\
59
+ ag function"),await g().send(new mt({Resource:e,TagKeys:t}))},"untagFunction"),pe=o(
60
+ (n,e)=>J(n,"main.mjs",e),"getSourceZipFile"),ce=o(n=>`main.${n}`,"getSourceHandl\
61
+ erName");var ge=o(()=>({equals:xt,create:de,replace:ht,preview:vt,update:bt,delete:Rt}),"\
62
+ getFunctionHandler"),xt=o((n,e)=>!!n.result&&n.result.functionArn===e.result?.functionArn,
63
+ "equalsResource"),vt=o(async(n,e)=>{let t=n.parameters,r=e.parameters,i=wt({...t,
64
+ connections:n.connections,dependencies:n.dependencies,variables:b(await t.getFunctionVariables()),
65
+ filesHash:t.files&&await R(t.functionName,t.files),sourceHash:await R(...t.getFunctionFiles()),
66
+ valuesHash:t.getFunctionHash()},{...r,connections:e.connections,dependencies:e.dependencies,
67
+ variables:e.result?.variables,sourceHash:e.result?.sourceHash,valuesHash:e.result?.
68
+ valuesHash,filesHash:e.result?.filesHash},{exclude:{release:!0}});if(i.counts)return{
69
+ ...i,name:t.functionName}},"previewResource"),ht=o(async(n,e,t)=>{if(e.result)throw new St(
70
+ y,n.entryId,e.entryId);return de(n,t)},"replaceResource"),de=o((n,e)=>{let{functionName:t,
71
+ release:r,...i}=n.parameters;return q.logExecution(y,t,"creation",async a=>{let s=me(
72
+ y,t,e),p=le(y,t,e),[m,u,c,l,f]=await Promise.all([R(...i.getFunctionFiles()),i.files&&
73
+ R(t,i.files),i.getFunctionBundle(e),i.getFunctionHash(),i.getFunctionVariables()]),
74
+ d=await oe(a,t),S=await ue(c);if(d)return await G(a,t,{architecture:i.architecture,
75
+ files:i.files,publish:!1,sourceFile:c}),await D(a,t,{...i,logGroup:s,roleArn:p,variables:{
76
+ ...f,...r?.variableName&&{[r.variableName]:r.version}}}),await k(a,d.functionArn,
77
+ {...i.tags,...r?.tagName&&{[r.tagName]:r.version}}),{functionArn:d.functionArn,functionVersion:d.
78
+ functionVersion,variables:b(f),sourceHash:m,valuesHash:l,bundleHash:S,filesHash:u,
79
+ logGroup:s,roleArn:p};let h=await ie(a,{...i,publish:!0,functionName:t,sourceFile:c,
80
+ logGroup:s,roleArn:p,variables:{...f,...r?.variableName&&{[r.variableName]:r.version}},
81
+ tags:{...i.tags,...r?.tagName&&{[r.tagName]:r.version}}});return{functionArn:h.functionArn,
82
+ functionVersion:h.functionVersion,variables:b(f),sourceHash:m,valuesHash:l,bundleHash:S,
83
+ filesHash:u,logGroup:s,roleArn:p}})},"createResource"),bt=o((n,e,t)=>{let{parameters:r,
84
+ result:i}=n,{functionName:a}=r;if(!i)throw new yt(y,a);return q.logExecution(y,a,
85
+ "updates",async s=>{let p=await r.getFunctionVariables(),m=e.result?.variables??
86
+ p,u=le(y,a,t),c=e.result?.roleArn??u,l=me(y,a,t),f=e.result?.logGroup??l,{isUpdated:d,
87
+ ...S}=await Pt(s,a,r,e.result,t),h={...r,variables:p,roleArn:u,logGroup:l},A={...e.
88
+ parameters,variables:m,roleArn:c,logGroup:f};return await Lt(s,a,h,A,d,t),await Ct(
89
+ s,i.functionArn,r,e.parameters,d),{...i,...S,variables:b(p),logGroup:l,roleArn:u}})},
90
+ "updateResource"),Rt=o(async n=>{let{result:e,parameters:t}=n;if(!e)return;let{functionName:r}=t;
91
+ await q.logExecution(y,r,"deletion",async i=>{await ae(r,i)})},"deleteResource"),
92
+ Lt=o(async(n,e,t,r,i,a)=>{let{variables:s,...p}=t,m={variables:b(s),...p},u=!Ft(
93
+ m,r,{exclude:{sourceFile:!0,functionName:!0,architecture:!0,release:!0,tags:!0}}),
94
+ c=i?t.release:r.release,l=i&&c?.variableName;(u||l||a.force)&&await D(n,e,{...t,
95
+ variables:{...t.variables,...c?.variableName&&{[c.variableName]:c.version}}})},"\
96
+ checkConfigurationUpdates"),Ct=o(async(n,e,t,r,i)=>{let s=i&&t.release?.version!==
97
+ r.release?.version?t.release:void 0,p={...t.tags,...s?.tagName&&{[s.tagName]:s.version}};
98
+ await ft(p,r.tags,m=>k(n,e,m),m=>se(n,e,m))},"checkTagUpdates"),Pt=o(async(n,e,t,r,i)=>{
99
+ let[a,s,p]=await Promise.all([R(...t.getFunctionFiles()),t.files&&R(e,t.files),t.
100
+ getFunctionHash()]),m=r?.sourceHash,u=r?.valuesHash,c=r?.filesHash;if(a!==m||p!==
101
+ u||s!==c||i.force){let l=await t.getFunctionBundle(i),f=await ue(l),d=r?.bundleHash;
102
+ if(f===d&&s===c&&p===u)return n.update("Skipping source code update"),{isUpdated:!1,
103
+ sourceHash:a};let{functionVersion:S}=await G(n,e,{architecture:t.architecture,publish:!r?.
104
+ functionVersion,sourceFile:l,files:t.files});return{isUpdated:!0,valuesHash:p,sourceHash:a,
105
+ bundleHash:f,filesHash:s,...S&&{functionVersion:S}}}return{isUpdated:!1}},"check\
106
+ SourceCodeUpdates");var fe=o(()=>{At(w,ge())},"registerFunctionProvider");import{tryRegisterProvider as zt}from"@ez4/aws-common";import{OperationLogger as we,ReplaceResourceError as Mt}from"@ez4/aws-common";import{AddPermissionCommand as Nt,RemovePermissionCommand as It,ResourceNotFoundException as Et}from"@aws-sdk/client-lambda";var ye=o(async(n,e)=>{n.update("Creating permission");let t=e.statementId??`ID${Date.
107
+ now()}`;return await g().send(new Nt({StatementId:t,FunctionName:e.functionName,
108
+ SourceArn:e.sourceArn,Principal:e.principal,Action:e.action})),{statementId:t}},
109
+ "createPermission"),Se=o(async(n,e,t)=>{n.update("Deleting permission");try{return await g().
110
+ send(new It({FunctionName:e,StatementId:t})),!0}catch(r){if(!(r instanceof Et))throw r;
111
+ return!1}},"deletePermission");var P="AWS:Lambda/Permission",F="aws:lambda.permission";var Fe=o(()=>({equals:Tt,create:xe,replace:Vt,preview:Ht,update:Ot,delete:Ut}),"\
112
+ getPermissionHandler"),Tt=o((n,e)=>!!n.result&&n.result.functionName===e.result?.
113
+ functionName,"equalsResource"),Ht=o((n,e)=>{},"previewResource"),Vt=o(async(n,e,t)=>{
114
+ if(e.result)throw new Mt(P,n.entryId,e.entryId);return xe(n,t)},"replaceResource"),
115
+ xe=o((n,e)=>{let t=n.parameters,r=C(P,"permission",e);return we.logExecution(P,r,
116
+ "creation",async i=>{let a=await t.getPermission(e);return{statementId:(await ye(
104
117
  i,{action:"lambda:InvokeFunction",sourceArn:a.sourceArn,principal:a.principal,functionName:r})).
105
- statementId,functionName:r}})},"createResource"),bt=o(async()=>{},"updateResourc\
106
- e"),ht=o(async t=>{let e=t.result;if(!e)return;let{functionName:n,statementId:r}=e;
107
- await me.logExecution(h,n,"deletion",async i=>{await ue(i,n,r)})},"deleteResourc\
108
- e");var de=o(()=>{Pt(S,le())},"registerPermissionProvider");import{tryRegisterProvider as Zt}from"@ez4/aws-common";import{CorruptedResourceError as Ut,OperationLogger as z,ReplaceResourceError as zt}from"@ez4/aws-common";
109
- import{deepCompare as Gt,deepEqual as Dt}from"@ez4/utils";import{GetEventSourceMappingCommand as At,CreateEventSourceMappingCommand as Lt,
110
- UpdateEventSourceMappingCommand as Nt,DeleteEventSourceMappingCommand as Et,ListEventSourceMappingsCommand as It,
111
- FunctionResponseType as Mt,EventSourcePosition as Tt,ResourceNotFoundException as Vt}from"@aws-sdk/client-lambda";
112
- import{parseArn as Ht}from"@ez4/aws-common";import{Wait as fe}from"@ez4/utils";var F="AWS:Lambda/Mapping",w="aws:lambda.mapping",Ct=(n=>(n.DynamoDB="dynamodb",
113
- n.Queue="sqs",n))(Ct||{});var ye=o(async(t,e,n)=>{t.update("Importing mapping");let r=await g().send(new It(
114
- {FunctionName:e,EventSourceArn:n})),[i]=r.EventSourceMappings;return i?{eventId:i.
115
- UUID}:void 0},"importMapping"),Se=o(async(t,e)=>{t.update("Creating mapping");let{
116
- sourceArn:n,functionName:r}=e,a=(await g().send(new Lt({FunctionName:r,EventSourceArn:n,
117
- ...Re(e)}))).UUID;return await we(a),{eventId:a}},"createMapping"),Fe=o(async(t,e,n)=>{
118
- t.update("Updating mapping");let{functionName:r}=n;await g().send(new Nt({UUID:e,
119
- FunctionName:r,...Re(n)})),await we(e)},"updateMapping"),xe=o(async(t,e)=>{t.update(
120
- "Deleting mapping");try{return await g().send(new Et({UUID:e})),!0}catch(n){if(!(n instanceof
121
- Vt))throw n;return!1}},"deleteMapping"),Ot=o(async t=>(await g().send(new At({UUID:t}))).
122
- State,"getMappingState"),we=o(async t=>{let e=new Set(["Enabled","Disabled"]);await fe.
123
- until(async()=>{let n=await Ot(t);return e.has(n)?!0:fe.RetryAttempt})},"waitFor\
124
- ReadyState"),Re=o(t=>{let{sourceArn:e,enabled:n,concurrency:r,batch:i}=t,{service:a}=Ht(
125
- e);return{Enabled:n,FunctionResponseTypes:[Mt.ReportBatchItemFailures],MaximumBatchingWindowInSeconds:i?.
126
- maxWait,BatchSize:i?.size,...a==="dynamodb"&&{StartingPosition:Tt.LATEST},...a===
127
- "sqs"&&{ScalingConfig:{MaximumConcurrency:r}}}},"upsertMappingRequest");var ve=o(()=>({equals:qt,create:be,replace:Bt,preview:kt,update:Wt,delete:$t}),"\
128
- getMappingHandler"),qt=o((t,e)=>!!t.result&&t.result.eventId===e.result?.eventId,
129
- "equalsResource"),kt=o((t,e)=>{let n={...t.parameters,dependencies:t.dependencies},
130
- r={...e.parameters,dependencies:e.dependencies},i=Gt(n,r,{exclude:{getSourceArn:!0}});
131
- if(i.counts)return{...i,name:n.fromService}},"previewResource"),Bt=o(async(t,e,n)=>{
132
- if(e.result)throw new zt(F,t.entryId,e.entryId);return be(t,n)},"replaceResource"),
133
- be=o((t,e)=>{let n=t.parameters,r=b(F,"mapping",e);return z.logExecution(F,r,"cr\
134
- eation",async i=>{let a=await n.getSourceArn(e);return{eventId:(await ye(i,r,a)??
135
- await Se(i,{...t.parameters,functionName:r,sourceArn:a})).eventId,functionName:r,
136
- sourceArn:a}})},"createResource"),Wt=o((t,e,n)=>{let{result:r,parameters:i}=t,{fromService:a}=i;
137
- if(!r)throw new Ut(F,"mapping");return z.logExecution(F,a,"updates",async s=>{let p=b(
138
- F,"mapping",n),u=e.result?.functionName??r.functionName,c=r.sourceArn,m={...t.parameters,
139
- functionName:p,sourceArn:c},l={...e.parameters,functionName:u,sourceArn:c};return await jt(
140
- s,r.eventId,m,l),{...r,functionName:p}})},"updateResource"),$t=o(async t=>{let e=t.
141
- result;if(!e)return;let{functionName:n}=e;await z.logExecution(F,n,"deletion",async r=>{
142
- await xe(r,e.eventId)})},"deleteResource"),jt=o(async(t,e,n,r)=>{!Dt(n,r,{exclude:{
143
- getSourceArn:!0,fromService:!0}})&&await Fe(t,e,n)},"checkGeneralUpdates");var he=o(()=>{Zt(w,ve())},"registerMappingProvider");var Pe=o(()=>[{account:"lambda.amazonaws.com"}],"prepareIdentityAccount");import{createPolicy as Kt,tryGetPolicy as Xt}from"@ez4/aws-identity";import{getServiceName as Yt}from"@ez4/project/library";import{getAccountId as Qt,getRegion as _t,createPolicyDocument as Jt}from"@ez4/aws-identity";var Ce=o(async t=>{let[e,n]=await Promise.all([_t(),Qt()]);return Jt([{permissions:[
144
- "logs:CreateLogStream","logs:PutLogEvents"],resourceIds:[`arn:aws:logs:${e}:${n}\
145
- :log-group:${t}-*:*`]}])},"getPolicyDocument");var Ae=o(async t=>{let{state:e,options:n}=t,r=Yt("",n),i=`${r}-lambda-policy`;return Xt(
146
- e,i)??Kt(e,{tags:n.tags,policyDocument:await Ce(r),policyName:i})},"prepareExecu\
147
- tionPolicy");var Fo=o(()=>{en(),tn(),nn(),rn("@ez4/aws-function",{"deploy:prepareIdentityAcco\
148
- unt":Pe,"deploy:prepareExecutionPolicy":Ae}),ae(),de(),he()},"registerTriggers");import{toKebabCase as on,hashData as an}from"@ez4/utils";import{attachEntry as sn}from"@ez4/stateful";var ho=o((t,e,n,r)=>{let i=on(r.functionName),a=an(y,e.entryId,i),s=[e.entryId];
149
- return n&&s.push(n.entryId),sn(t,{type:y,entryId:a,dependencies:s,parameters:{...r,
150
- functionName:i}})},"createFunction");import{attachEntry as pn}from"@ez4/stateful";import{hashData as Ne}from"@ez4/utils";var Le=o(t=>t.type===S,"isPermissionState");var Vo=o((t,e,n,r)=>{let i=Ne(S,e.entryId,n.entryId);return pn(t,{type:S,entryId:i,
151
- dependencies:[e.entryId,n.entryId],parameters:r})},"createPermission"),Ho=o((t,e,n)=>{
152
- let r=Ne(S,e.entryId,n.entryId),i=t[r];return i&&Le(i)?i:null},"getPermission");import{hashData as cn}from"@ez4/utils";import{attachEntry as un}from"@ez4/stateful";var qo=o((t,e,n,r)=>{let i=cn(w,e.entryId,n.entryId);return un(t,{type:w,entryId:i,
153
- dependencies:[e.entryId,n.entryId],parameters:r})},"createMapping");var $o=o(t=>t.type===w,"isMappingState");var Qo=o((t,e,n)=>`arn:aws:lambda:${t}:${e}:function:${n}`,"buildFunctionArn");import{ArchitectureType as mn,RuntimeType as ln}from"@ez4/project";var gn;(a=>(a.
154
- LogRetention=90,a.Architecture=mn.x86,a.Runtime=ln.Node24,a.Timeout=90,a.Memory=
155
- 192))(gn||={});export{Ue as FunctionArchitecture,gn as FunctionDefaults,He as FunctionRuntime,f as FunctionServiceName,
156
- y as FunctionServiceType,Ct as MappingService,F as MappingServiceName,w as MappingServiceType,
157
- h as PermissionServiceName,S as PermissionServiceType,Qo as buildFunctionArn,ho as createFunction,
158
- qo as createMapping,Vo as createPermission,I as getFunctionArchitecture,dr as getFunctionArn,
159
- b as getFunctionName,E as getFunctionRuntime,gr as getFunctionState,Ho as getPermission,
160
- pe as isFunctionState,$o as isMappingState,Fo as registerTriggers,ft as tryGetFunctionArn,
161
- lr as tryGetFunctionState};
118
+ statementId,functionName:r}})},"createResource"),Ot=o(async()=>{},"updateResourc\
119
+ e"),Ut=o(async n=>{let e=n.result;if(!e)return;let{functionName:t,statementId:r}=e;
120
+ await we.logExecution(P,t,"deletion",async i=>{await Se(i,t,r)})},"deleteResourc\
121
+ e");var ve=o(()=>{zt(F,Fe())},"registerPermissionProvider");import{tryRegisterProvider as sn}from"@ez4/aws-common";import{CorruptedResourceError as Jt,OperationLogger as W,ReplaceResourceError as Kt}from"@ez4/aws-common";
122
+ import{deepCompare as Xt,deepEqual as Yt}from"@ez4/utils";import{CreateEventSourceMappingCommand as qt,UpdateEventSourceMappingCommand as Bt,
123
+ DeleteEventSourceMappingCommand as Wt,ListEventSourceMappingsCommand as jt,FunctionResponseType as $t,
124
+ EventSourcePosition as Zt,ResourceNotFoundException as Qt}from"@aws-sdk/client-lambda";
125
+ import{parseArn as _t}from"@ez4/aws-common";import{GetEventSourceMappingCommand as Gt}from"@aws-sdk/client-lambda";import{Wait as he}from"@ez4/utils";var B=o(async(n,e)=>{let t=new Set(["Enabled","Disabled"]);await he.until(async()=>{
126
+ let r=await Dt(n,e);return t.has(r)?!0:he.RetryAttempt})},"waitForReadyState"),Dt=o(
127
+ async(n,e)=>(await n.send(new Gt({UUID:e}))).State,"getMappingState");var x="AWS:Lambda/Mapping",v="aws:lambda.mapping",kt=(t=>(t.DynamoDB="dynamodb",
128
+ t.Queue="sqs",t))(kt||{});var be=o(async(n,e,t)=>{n.update("Importing mapping");let r=await g().send(new jt(
129
+ {FunctionName:e,EventSourceArn:t})),[i]=r.EventSourceMappings;return i?{eventId:i.
130
+ UUID}:void 0},"importMapping"),Re=o(async(n,e)=>{n.update("Creating mapping");let{
131
+ sourceArn:t,functionName:r}=e,i=g(),s=(await i.send(new qt({FunctionName:r,EventSourceArn:t,
132
+ ...Pe(e)}))).UUID;return await B(i,s),{eventId:s}},"createMapping"),Le=o(async(n,e,t)=>{
133
+ n.update("Updating mapping");let{functionName:r}=t,i=g();await i.send(new Bt({UUID:e,
134
+ FunctionName:r,...Pe(t)})),await B(i,e)},"updateMapping"),Ce=o(async(n,e)=>{n.update(
135
+ "Deleting mapping");try{return await g().send(new Wt({UUID:e})),!0}catch(t){if(!(t instanceof
136
+ Qt))throw t;return!1}},"deleteMapping"),Pe=o(n=>{let{sourceArn:e,enabled:t,concurrency:r,
137
+ batch:i}=n,{service:a}=_t(e);return{Enabled:t,FunctionResponseTypes:[$t.ReportBatchItemFailures],
138
+ MaximumBatchingWindowInSeconds:i?.maxWait,BatchSize:i?.size,...a==="dynamodb"&&{
139
+ StartingPosition:Zt.LATEST},...a==="sqs"&&{ScalingConfig:{MaximumConcurrency:r}}}},
140
+ "upsertMappingRequest");var Ae=o(()=>({equals:en,create:Ne,replace:nn,preview:tn,update:rn,delete:on}),"\
141
+ getMappingHandler"),en=o((n,e)=>!!n.result&&n.result.eventId===e.result?.eventId,
142
+ "equalsResource"),tn=o((n,e)=>{let t={...n.parameters,dependencies:n.dependencies},
143
+ r={...e.parameters,dependencies:e.dependencies},i=Xt(t,r,{exclude:{getSourceArn:!0}});
144
+ if(i.counts)return{...i,name:t.fromService}},"previewResource"),nn=o(async(n,e,t)=>{
145
+ if(e.result)throw new Kt(x,n.entryId,e.entryId);return Ne(n,t)},"replaceResource"),
146
+ Ne=o((n,e)=>{let t=n.parameters,r=C(x,"mapping",e);return W.logExecution(x,r,"cr\
147
+ eation",async i=>{let a=await t.getSourceArn(e);return{eventId:(await be(i,r,a)??
148
+ await Re(i,{...n.parameters,functionName:r,sourceArn:a})).eventId,functionName:r,
149
+ sourceArn:a}})},"createResource"),rn=o((n,e,t)=>{let{result:r,parameters:i}=n,{fromService:a}=i;
150
+ if(!r)throw new Jt(x,"mapping");return W.logExecution(x,a,"updates",async s=>{let p=C(
151
+ x,"mapping",t),m=e.result?.functionName??r.functionName,u=r.sourceArn,c={...n.parameters,
152
+ functionName:p,sourceArn:u},l={...e.parameters,functionName:m,sourceArn:u};return await an(
153
+ s,r.eventId,c,l),{...r,functionName:p}})},"updateResource"),on=o(async n=>{let e=n.
154
+ result;if(!e)return;let{functionName:t}=e;await W.logExecution(x,t,"deletion",async r=>{
155
+ await Ce(r,e.eventId)})},"deleteResource"),an=o(async(n,e,t,r)=>{!Yt(t,r,{exclude:{
156
+ getSourceArn:!0,fromService:!0}})&&await Le(n,e,t)},"checkGeneralUpdates");var Ie=o(()=>{sn(v,Ae())},"registerMappingProvider");var Ee=o(()=>[{account:"lambda.amazonaws.com"}],"prepareIdentityAccount");import{createPolicy as mn,tryGetPolicy as ln}from"@ez4/aws-identity";import{getServiceName as gn}from"@ez4/project/library";import{getAccountId as pn,getRegion as cn,createPolicyDocument as un}from"@ez4/aws-identity";var Me=o(async n=>{let[e,t]=await Promise.all([cn(),pn()]);return un([{permissions:[
157
+ "logs:CreateLogStream","logs:PutLogEvents"],resourceIds:[`arn:aws:logs:${e}:${t}\
158
+ :log-group:${n}-*:*`]},{permissions:["ec2:CreateNetworkInterface","ec2:DescribeN\
159
+ etworkInterfaces","ec2:DeleteNetworkInterface"],resourceIds:["*"]}])},"getPolicy\
160
+ Document");var Te=o(async n=>{let{state:e,options:t}=n,r=gn("",t),i=`${r}-lambda-policy`;return ln(
161
+ e,i)??mn(e,{tags:t.tags,policyDocument:await Me(r),policyName:i})},"prepareExecu\
162
+ tionPolicy");var qo=o(()=>{dn(),fn(),yn(),Sn("@ez4/aws-function",{"deploy:prepareIdentityAcco\
163
+ unt":Ee,"deploy:prepareExecutionPolicy":Te}),fe(),ve(),Ie()},"registerTriggers");import{toKebabCase as wn,hashData as Fn}from"@ez4/utils";import{attachEntry as xn}from"@ez4/stateful";var Qo=o((n,e,t,r)=>{let i=wn(r.functionName),a=Fn(w,e.entryId,i),s=[e.entryId];
164
+ return t&&s.push(t.entryId),xn(n,{type:w,entryId:a,dependencies:s,parameters:{...r,
165
+ functionName:i}})},"createFunction");import{attachEntry as vn}from"@ez4/stateful";import{hashData as Ve}from"@ez4/utils";var He=o(n=>n.type===F,"isPermissionState");var oi=o((n,e,t,r)=>{let i=Ve(F,e.entryId,t.entryId);return vn(n,{type:F,entryId:i,
166
+ dependencies:[e.entryId,t.entryId],parameters:r})},"createPermission"),ii=o((n,e,t)=>{
167
+ let r=Ve(F,e.entryId,t.entryId),i=n[r];return i&&He(i)?i:null},"getPermission");import{hashData as hn}from"@ez4/utils";import{attachEntry as bn}from"@ez4/stateful";var mi=o((n,e,t,r)=>{let i=hn(v,e.entryId,t.entryId);return bn(n,{type:v,entryId:i,
168
+ dependencies:[e.entryId,t.entryId],parameters:r})},"createMapping");var fi=o(n=>n.type===v,"isMappingState");var wi=o((n,e,t)=>`arn:aws:lambda:${n}:${e}:function:${t}`,"buildFunctionArn");export{ke as FunctionArchitecture,I as FunctionDefaults,Be as FunctionRuntime,y as FunctionServiceName,
169
+ w as FunctionServiceType,kt as MappingService,x as MappingServiceName,v as MappingServiceType,
170
+ P as PermissionServiceName,F as PermissionServiceType,wi as buildFunctionArn,Qo as createFunction,
171
+ mi as createMapping,oi as createPermission,z as getDefaultVpcConfig,H as getFunctionArchitecture,
172
+ sr as getFunctionArn,C as getFunctionName,V as getFunctionRuntime,ar as getFunctionState,
173
+ ii as getPermission,X as isFunctionState,fi as isMappingState,qo as registerTriggers,
174
+ ot as tryGetFunctionArn,ir as tryGetFunctionState};
162
175
  //# sourceMappingURL=main.mjs.map
@@ -0,0 +1,2 @@
1
+ import type { LambdaClient } from '@aws-sdk/client-lambda';
2
+ export declare const waitForReadyState: (client: LambdaClient, eventId: string) => Promise<void>;
@@ -1,9 +1,13 @@
1
- import { ArchitectureType, RuntimeType } from '@ez4/project';
1
+ import { ArchitectureType, RuntimeType, LogLevel as ProjectLogLevel } from '@ez4/project';
2
2
  export declare namespace FunctionDefaults {
3
3
  /**
4
4
  * Default log retention in days.
5
5
  */
6
6
  const LogRetention = 90;
7
+ /**
8
+ * Default function log level.
9
+ */
10
+ const LogLevel = ProjectLogLevel.Warning;
7
11
  /**
8
12
  * Default function architecture.
9
13
  */
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ez4/aws-function",
3
3
  "description": "EZ4: Self-managed AWS lambda function provider",
4
- "version": "0.41.0",
4
+ "version": "0.43.0",
5
5
  "author": "Silas B.",
6
6
  "license": "MIT",
7
7
  "type": "module",
@@ -42,14 +42,15 @@
42
42
  "live:publish": "npm run build && npm publish --access public"
43
43
  },
44
44
  "dependencies": {
45
- "@aws-sdk/client-lambda": "^3.958.0",
46
- "@ez4/aws-common": "^0.41.0",
47
- "@ez4/aws-identity": "^0.41.0",
48
- "@ez4/aws-logs": "^0.41.0",
49
- "@ez4/project": "^0.41.0",
50
- "@ez4/common": "^0.41.0",
51
- "@ez4/stateful": "^0.41.0",
52
- "@ez4/utils": "^0.41.0",
45
+ "@aws-sdk/client-lambda": "^3.996.0",
46
+ "@ez4/aws-common": "^0.43.0",
47
+ "@ez4/aws-identity": "^0.43.0",
48
+ "@ez4/aws-logs": "^0.43.0",
49
+ "@ez4/aws-vpc": "^0.43.0",
50
+ "@ez4/project": "^0.43.0",
51
+ "@ez4/common": "^0.43.0",
52
+ "@ez4/stateful": "^0.43.0",
53
+ "@ez4/utils": "^0.43.0",
53
54
  "@types/adm-zip": "^0.5.5",
54
55
  "adm-zip": "^0.5.14"
55
56
  }