@ez4/aws-function 0.38.0 → 0.39.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.
@@ -8,11 +8,17 @@ export type GetFunctionFiles = () => [string, string[]];
8
8
  export type GetFunctionVariables = () => Promise<LinkedVariables> | LinkedVariables;
9
9
  export type GetFunctionBundle = (context: StepContext) => Promise<string> | string;
10
10
  export type GetFunctionHash = () => Promise<string | undefined> | string | undefined;
11
+ export type FunctionRelease = {
12
+ tagName?: string;
13
+ variableName?: string;
14
+ version: string;
15
+ };
11
16
  export type FunctionParameters = Omit<CreateRequest, 'roleArn' | 'publish' | 'variables'> & {
12
17
  getFunctionFiles: GetFunctionFiles;
13
18
  getFunctionVariables: GetFunctionVariables;
14
19
  getFunctionBundle: GetFunctionBundle;
15
20
  getFunctionHash: GetFunctionHash;
21
+ release?: FunctionRelease;
16
22
  };
17
23
  export type FunctionResult = ImportOrCreateResponse & {
18
24
  variables: LinkedVariables;
package/dist/main.cjs CHANGED
@@ -1,162 +1,169 @@
1
- "use strict";var rt=Object.create;var M=Object.defineProperty;var nt=Object.getOwnPropertyDescriptor;var ot=Object.getOwnPropertyNames;var it=Object.getPrototypeOf,st=Object.prototype.hasOwnProperty;var n=(e,t)=>M(e,"name",{value:t,configurable:!0});var at=(e,t)=>{for(var r in t)M(e,r,{get:t[r],enumerable:!0})},ne=(e,t,r,o)=>{if(t&&
2
- typeof t=="object"||typeof t=="function")for(let i of ot(t))!st.call(e,i)&&i!==r&&
3
- M(e,i,{get:()=>t[i],enumerable:!(o=nt(t,i))||o.enumerable});return e};var pt=(e,t,r)=>(r=e!=null?rt(it(e)):{},ne(t||!e||!e.__esModule?M(r,"default",{value:e,
4
- enumerable:!0}):r,e)),ct=e=>ne(M({},"__esModule",{value:!0}),e);var Wt={};at(Wt,{FunctionArchitecture:()=>ie,FunctionDefaults:()=>tt,FunctionRuntime:()=>oe,
5
- FunctionServiceName:()=>p,FunctionServiceType:()=>f,MappingService:()=>ee,MappingServiceName:()=>F,
6
- MappingServiceType:()=>P,PermissionServiceName:()=>v,PermissionServiceType:()=>R,
7
- buildFunctionArn:()=>Bt,createFunction:()=>Gt,createMapping:()=>kt,createPermission:()=>Dt,
8
- getFunctionArchitecture:()=>H,getFunctionArn:()=>bt,getFunctionName:()=>N,getFunctionRuntime:()=>V,
9
- getFunctionState:()=>Pt,getPermission:()=>qt,isFunctionState:()=>X,isMappingState:()=>Ot,
10
- registerTriggers:()=>zt,tryGetFunctionArn:()=>he,tryGetFunctionState:()=>ht});module.
11
- exports=ct(Wt);var je=require("@ez4/aws-common"),Ze=require("@ez4/aws-identity"),Qe=require("@ez4/aws-logs"),
12
- _e=require("@ez4/project/library");var we=require("@ez4/aws-common");var S=require("@ez4/aws-common"),b=require("@ez4/utils"),_=require("@ez4/aws-logs"),
13
- J=require("@ez4/aws-identity");var s=require("@aws-sdk/client-lambda"),m=require("@ez4/aws-common");var B=require("@ez4/project");var oe=(r=>(r.Node22="nodejs22.x",r.Node24="nodejs24.x",r))(oe||{});var mt={[B.RuntimeType.Node22]:"nodejs22.x",[B.RuntimeType.Node24]:"nodejs24.x"},
14
- V=n(e=>mt[e],"getFunctionRuntime");var W=require("@ez4/project");var ie=(r=>(r.Arm="arm64",r.x86="x86_64",r))(ie||{});var ut={[W.ArchitectureType.Arm]:"arm64",[W.ArchitectureType.x86]:"x86_64"},H=n(
15
- e=>ut[e],"getFunctionArchitecture");var se=require("@ez4/aws-common"),ae=require("@ez4/utils");var p="AWS:Lambda/Function",f="aws:lambda.function";var lt=/[a-z][\w]+/i,gt=n(e=>lt.test(e),"isValidName"),$=n(e=>{for(let t in e)if(!gt(
16
- t))throw new se.InvalidParameterError(p,`${t} is an invalid variable name .`)},"\
17
- assertVariables"),E=n(e=>{let t={};for(let r in e)t[r]=(0,ae.hashData)(e[r]);return t},
18
- "protectVariables");var pe=pt(require("adm-zip"),1),ce=require("node:fs/promises");var me=n(async(e,t)=>{let r=new pe.default,o=await(0,ce.readFile)(e);return r.addFile(
19
- t,o),r.toBufferPromise()},"getZipBuffer");var w=new s.LambdaClient({}),U={minDelay:15,maxWaitTime:1800,maxDelay:60,client:w},
20
- ue=n(async(e,t)=>{m.Logger.logImport(p,e);try{let r=await w.send(new s.GetFunctionCommand(
1
+ "use strict";var nt=Object.create;var T=Object.defineProperty;var ot=Object.getOwnPropertyDescriptor;var it=Object.getOwnPropertyNames;var at=Object.getPrototypeOf,st=Object.prototype.hasOwnProperty;var n=(e,t)=>T(e,"name",{value:t,configurable:!0});var pt=(e,t)=>{for(var r in t)T(e,r,{get:t[r],enumerable:!0})},oe=(e,t,r,o)=>{if(t&&
2
+ typeof t=="object"||typeof t=="function")for(let i of it(t))!st.call(e,i)&&i!==r&&
3
+ T(e,i,{get:()=>t[i],enumerable:!(o=ot(t,i))||o.enumerable});return e};var ct=(e,t,r)=>(r=e!=null?nt(at(e)):{},oe(t||!e||!e.__esModule?T(r,"default",{value:e,
4
+ enumerable:!0}):r,e)),mt=e=>oe(T({},"__esModule",{value:!0}),e);var $t={};pt($t,{FunctionArchitecture:()=>ae,FunctionDefaults:()=>rt,FunctionRuntime:()=>ie,
5
+ FunctionServiceName:()=>c,FunctionServiceType:()=>S,MappingService:()=>ee,MappingServiceName:()=>x,
6
+ MappingServiceType:()=>h,PermissionServiceName:()=>C,PermissionServiceType:()=>v,
7
+ buildFunctionArn:()=>Wt,createFunction:()=>Dt,createMapping:()=>Ot,createPermission:()=>qt,
8
+ getFunctionArchitecture:()=>U,getFunctionArn:()=>Pt,getFunctionName:()=>I,getFunctionRuntime:()=>H,
9
+ getFunctionState:()=>bt,getPermission:()=>kt,isFunctionState:()=>X,isMappingState:()=>Bt,
10
+ registerTriggers:()=>Gt,tryGetFunctionArn:()=>he,tryGetFunctionState:()=>ht});module.
11
+ exports=mt($t);var Ze=require("@ez4/aws-common"),Qe=require("@ez4/aws-identity"),_e=require("@ez4/aws-logs"),
12
+ Je=require("@ez4/project/library");var ve=require("@ez4/aws-common");var F=require("@ez4/aws-common"),P=require("@ez4/utils"),_=require("@ez4/aws-logs"),
13
+ J=require("@ez4/aws-identity");var s=require("@aws-sdk/client-lambda"),u=require("@ez4/aws-common");var B=require("@ez4/project");var ie=(r=>(r.Node22="nodejs22.x",r.Node24="nodejs24.x",r))(ie||{});var ut={[B.RuntimeType.Node22]:"nodejs22.x",[B.RuntimeType.Node24]:"nodejs24.x"},
14
+ H=n(e=>ut[e],"getFunctionRuntime");var W=require("@ez4/project");var ae=(r=>(r.Arm="arm64",r.x86="x86_64",r))(ae||{});var lt={[W.ArchitectureType.Arm]:"arm64",[W.ArchitectureType.x86]:"x86_64"},U=n(
15
+ e=>lt[e],"getFunctionArchitecture");var se=require("@ez4/aws-common"),pe=require("@ez4/utils");var c="AWS:Lambda/Function",S="aws:lambda.function";var gt=/[a-z][\w]+/i,dt=n(e=>gt.test(e),"isValidName"),$=n(e=>{for(let t in e)if(!dt(
16
+ t))throw new se.InvalidParameterError(c,`${t} is an invalid variable name .`)},"\
17
+ assertVariables"),E=n(e=>{let t={};for(let r in e)t[r]=(0,pe.hashData)(e[r]);return t},
18
+ "protectVariables");var ce=ct(require("adm-zip"),1),me=require("node:fs/promises");var ue=n(async(e,t)=>{let r=new ce.default,o=await(0,me.readFile)(e);return r.addFile(
19
+ t,o),r.toBufferPromise()},"getZipBuffer");var w=new s.LambdaClient({}),z={minDelay:15,maxWaitTime:1800,maxDelay:60,client:w},
20
+ le=n(async(e,t)=>{u.Logger.logImport(c,e);try{let r=await w.send(new s.GetFunctionCommand(
21
21
  {FunctionName:e,Qualifier:t})),o=r.Configuration.Version,i=r.Configuration.FunctionArn;
22
22
  return{functionVersion:o,functionArn:i}}catch(r){if(!(r instanceof s.ResourceNotFoundException))
23
- throw r;return}},"importFunction"),le=n(async e=>{let{functionName:t,variables:r}=e;
24
- m.Logger.logCreate(p,t),r&&$(r);let o=Se(e.handlerName),i=await fe(e.sourceFile),
25
- {description:a,memory:c,timeout:l,architecture:g,runtime:y,debug:d,roleArn:x,logGroup:C}=e,
26
- O=await(0,m.waitCreation)(()=>w.send(new s.CreateFunctionCommand({FunctionName:t,
27
- Description:a,MemorySize:c,Timeout:l,Role:x,Handler:o,Architectures:[H(g)],Runtime:V(
28
- y),PackageType:"Zip",LoggingConfig:{LogGroup:C,ApplicationLogLevel:d?s.ApplicationLogLevel.
23
+ throw r;return}},"importFunction"),ge=n(async e=>{let{functionName:t,variables:r}=e;
24
+ u.Logger.logCreate(c,t),r&&$(r);let o=Fe(e.handlerName),i=await Se(e.sourceFile),
25
+ {description:a,memory:p,timeout:m,architecture:l,runtime:d,debug:y,roleArn:f,logGroup:b}=e,
26
+ N=await(0,u.waitCreation)(()=>w.send(new s.CreateFunctionCommand({FunctionName:t,
27
+ Description:a,MemorySize:p,Timeout:m,Role:f,Handler:o,Architectures:[U(l)],Runtime:H(
28
+ d),PackageType:"Zip",LoggingConfig:{LogGroup:b,ApplicationLogLevel:y?s.ApplicationLogLevel.
29
29
  Debug:s.ApplicationLogLevel.Warn,SystemLogLevel:s.SystemLogLevel.Warn,LogFormat:s.LogFormat.
30
30
  Json},Code:{ZipFile:i},Environment:{Variables:r},Tags:{...e.tags,ManagedBy:"EZ4"}})));
31
- m.Logger.logWait(p,t),await(0,s.waitUntilFunctionActive)(U,{FunctionName:t});let L=O.
32
- FunctionArn;return e.publish?{functionVersion:await de(t),functionArn:L}:{functionArn:L}},
33
- "createFunction"),j=n(async(e,t)=>{m.Logger.logUpdate(p,`${e} source code`);let r=await fe(
31
+ u.Logger.logWait(c,t),await(0,s.waitUntilFunctionActive)(z,{FunctionName:t});let V=N.
32
+ FunctionArn;return e.publish?{functionVersion:await ye(t),functionArn:V}:{functionArn:V}},
33
+ "createFunction"),j=n(async(e,t)=>{u.Logger.logUpdate(c,`${e} source code`);let r=await Se(
34
34
  t.sourceFile),{publish:o,architecture:i}=t,a=await w.send(new s.UpdateFunctionCodeCommand(
35
- {Architectures:i&&[H(i)],FunctionName:e,ZipFile:r,Publish:o}));m.Logger.logWait(
36
- p,e),await(0,s.waitUntilFunctionUpdated)(U,{FunctionName:e});let c=a.FunctionArn;
37
- return t.publish?{functionVersion:await de(e),functionArn:c}:{functionArn:c}},"u\
38
- pdateSourceCode"),Z=n(async(e,t)=>{let{handlerName:r,variables:o}=t;m.Logger.logUpdate(
39
- p,`${e} configuration`),o&&$(o);let{description:i,memory:a,timeout:c,runtime:l,debug:g,
40
- roleArn:y,logGroup:d}=t;await w.send(new s.UpdateFunctionConfigurationCommand({Runtime:l&&
41
- V(l),FunctionName:e,Description:i,MemorySize:a,Timeout:c,Role:y,...r&&{Handler:Se(
42
- r)},LoggingConfig:{LogGroup:d,ApplicationLogLevel:g?s.ApplicationLogLevel.Debug:
35
+ {Architectures:i&&[U(i)],FunctionName:e,ZipFile:r,Publish:o}));u.Logger.logWait(
36
+ c,e),await(0,s.waitUntilFunctionUpdated)(z,{FunctionName:e});let p=a.FunctionArn;
37
+ return t.publish?{functionVersion:await ye(e),functionArn:p}:{functionArn:p}},"u\
38
+ pdateSourceCode"),Z=n(async(e,t)=>{let{handlerName:r,variables:o}=t;u.Logger.logUpdate(
39
+ c,`${e} configuration`),o&&$(o);let{description:i,memory:a,timeout:p,runtime:m,debug:l,
40
+ roleArn:d,logGroup:y}=t;await w.send(new s.UpdateFunctionConfigurationCommand({Runtime:m&&
41
+ H(m),FunctionName:e,Description:i,MemorySize:a,Timeout:p,Role:d,...r&&{Handler:Fe(
42
+ r)},LoggingConfig:{LogGroup:y,ApplicationLogLevel:l?s.ApplicationLogLevel.Debug:
43
43
  s.ApplicationLogLevel.Warn,SystemLogLevel:s.SystemLogLevel.Warn,LogFormat:s.LogFormat.
44
- Json},Environment:{Variables:o}})),m.Logger.logWait(p,e),await(0,s.waitUntilFunctionUpdated)(
45
- U,{FunctionName:e})},"updateConfiguration"),ge=n(async e=>{m.Logger.logDelete(p,
46
- e),await(0,m.waitDeletion)(async()=>{try{await w.send(new s.DeleteFunctionCommand(
44
+ Json},Environment:{Variables:o}})),u.Logger.logWait(c,e),await(0,s.waitUntilFunctionUpdated)(
45
+ z,{FunctionName:e})},"updateConfiguration"),de=n(async e=>{u.Logger.logDelete(c,
46
+ e),await(0,u.waitDeletion)(async()=>{try{await w.send(new s.DeleteFunctionCommand(
47
47
  {FunctionName:e}))}catch(t){if(!(t instanceof s.ResourceNotFoundException))throw t}})},
48
- "deleteFunction"),de=n(async e=>{m.Logger.logPublish(p,e);let t=await w.send(new s.PublishVersionCommand(
49
- {FunctionName:e}));m.Logger.logWait(p,e);let r=t.Version;return await(0,s.waitUntilPublishedVersionActive)(
50
- U,{FunctionName:e,Qualifier:r}),r},"publishFunction"),Q=n(async(e,t)=>{let r=(0,m.tryParseArn)(
51
- e)?.resourceName??e;m.Logger.logTag(p,r),await w.send(new s.TagResourceCommand({
52
- Resource:e,Tags:{...t,ManagedBy:"EZ4"}}))},"tagFunction"),ye=n(async(e,t)=>{let r=(0,m.tryParseArn)(
53
- e)?.resourceName??e;m.Logger.logUntag(p,r),await w.send(new s.UntagResourceCommand(
54
- {Resource:e,TagKeys:t}))},"untagFunction"),fe=n(e=>me(e,"main.mjs"),"getSourceZi\
55
- pFile"),Se=n(e=>`main.${e}`,"getSourceHandlerName");var Fe=n(()=>({equals:dt,create:xe,replace:ft,preview:yt,update:St,delete:Ft}),"\
56
- getFunctionHandler"),dt=n((e,t)=>!!e.result&&e.result.functionArn===t.result?.functionArn,
57
- "equalsResource"),yt=n(async(e,t)=>{let r=e.parameters,o=t.parameters,i=(0,b.deepCompare)(
48
+ "deleteFunction"),ye=n(async e=>{u.Logger.logPublish(c,e);let t=await w.send(new s.PublishVersionCommand(
49
+ {FunctionName:e}));u.Logger.logWait(c,e);let r=t.Version;return await(0,s.waitUntilPublishedVersionActive)(
50
+ z,{FunctionName:e,Qualifier:r}),r},"publishFunction"),Q=n(async(e,t)=>{let r=(0,u.tryParseArn)(
51
+ e)?.resourceName??e;u.Logger.logTag(c,r),await w.send(new s.TagResourceCommand({
52
+ Resource:e,Tags:{...t,ManagedBy:"EZ4"}}))},"tagFunction"),fe=n(async(e,t)=>{let r=(0,u.tryParseArn)(
53
+ e)?.resourceName??e;u.Logger.logUntag(c,r),await w.send(new s.UntagResourceCommand(
54
+ {Resource:e,TagKeys:t}))},"untagFunction"),Se=n(e=>ue(e,"main.mjs"),"getSourceZi\
55
+ pFile"),Fe=n(e=>`main.${e}`,"getSourceHandlerName");var xe=n(()=>({equals:yt,create:we,replace:St,preview:ft,update:Ft,delete:xt}),"\
56
+ getFunctionHandler"),yt=n((e,t)=>!!e.result&&e.result.functionArn===t.result?.functionArn,
57
+ "equalsResource"),ft=n(async(e,t)=>{let r=e.parameters,o=t.parameters,i=(0,P.deepCompare)(
58
58
  {...r,connections:e.connections,dependencies:e.dependencies,variables:E(await r.
59
- getFunctionVariables()),sourceHash:await(0,S.getBundleHash)(...r.getFunctionFiles()),
59
+ getFunctionVariables()),sourceHash:await(0,F.getBundleHash)(...r.getFunctionFiles()),
60
60
  valuesHash:r.getFunctionHash()},{...o,connections:t.connections,dependencies:t.dependencies,
61
61
  variables:t.result?.variables,sourceHash:t.result?.sourceHash,valuesHash:t.result?.
62
- valuesHash});if(i.counts)return{...i,name:r.functionName}},"previewResource"),ft=n(
63
- async(e,t,r)=>{if(t.result)throw new S.ReplaceResourceError(p,e.entryId,t.entryId);
64
- return xe(e,r)},"replaceResource"),xe=n(async(e,t)=>{let{functionName:r,...o}=e.
65
- parameters,i=(0,_.getLogGroupName)(p,r,t),a=(0,J.getRoleArn)(p,r,t),[c,l,g,y]=await Promise.
66
- all([(0,S.getBundleHash)(...o.getFunctionFiles()),o.getFunctionBundle(t),o.getFunctionHash(),
67
- o.getFunctionVariables()]),d=await ue(r),x=await(0,b.hashFile)(l);if(d)return await Z(
68
- r,{...o,variables:y,logGroup:i,roleArn:a}),await j(r,{architecture:o.architecture,
69
- publish:!1,sourceFile:l}),await Q(d.functionArn,{...o.tags}),{functionArn:d.functionArn,
70
- functionVersion:d.functionVersion,variables:E(y),valuesHash:g,sourceHash:c,bundleHash:x,
71
- logGroup:i,roleArn:a};let C=await le({...o,publish:!0,functionName:r,sourceFile:l,
72
- variables:y,logGroup:i,roleArn:a});return{functionArn:C.functionArn,functionVersion:C.
73
- functionVersion,variables:E(y),valuesHash:g,sourceHash:c,bundleHash:x,logGroup:i,
74
- roleArn:a}},"createResource"),St=n(async(e,t,r)=>{let{parameters:o,result:i}=e;if(!i)
75
- return;let a=o.functionName,c=await o.getFunctionVariables(),l=t.result?.variables??
76
- c,g=(0,J.getRoleArn)(p,a,r),y=t.result?.roleArn??g,d=(0,_.getLogGroupName)(p,a,r),
77
- x=t.result?.logGroup??d,C={...o,variables:c,roleArn:g,logGroup:d},O={...t.parameters,
78
- variables:l,roleArn:y,logGroup:x};await xt(a,C,O,r),await wt(i.functionArn,o,t.parameters);
79
- let L=await Rt(a,o,t.result,r);return{...i,...L,variables:E(c),logGroup:d,roleArn:g}},
80
- "updateResource"),Ft=n(async e=>{let{result:t,parameters:r}=e;t&&await ge(r.functionName)},
81
- "deleteResource"),xt=n(async(e,t,r,o)=>{let{variables:i,...a}=t,c={variables:E(i),
82
- ...a};(!(0,b.deepEqual)(c,r,{exclude:{sourceFile:!0,functionName:!0,architecture:!0,
83
- tags:!0}})||o.force)&&await Z(e,t)},"checkConfigurationUpdates"),wt=n(async(e,t,r)=>{
84
- await(0,S.applyTagUpdates)(t.tags,r.tags,o=>Q(e,o),o=>ye(e,o))},"checkTagUpdates"),
85
- Rt=n(async(e,t,r,o)=>{let[i,a]=await Promise.all([(0,S.getBundleHash)(...t.getFunctionFiles()),
86
- t.getFunctionHash()]),c=r?.sourceHash,l=r?.valuesHash;if(i!==c||a!==l||o.force){
87
- let g=await t.getFunctionBundle(o),y=await(0,b.hashFile)(g),d=r?.bundleHash;if(y===
88
- d&&a===l)return S.Logger.logSkip(p,`${e} source code`),{valuesHash:a,sourceHash:i};
89
- let{functionVersion:x}=await j(e,{architecture:t.architecture,publish:!r?.functionVersion,
90
- sourceFile:g});return{valuesHash:a,sourceHash:i,bundleHash:y,...x&&{functionVersion:x}}}},
91
- "checkSourceCodeUpdates");var Re=n(()=>{(0,we.tryRegisterProvider)(f,Fe())},"registerFunctionProvider");var Ne=require("@ez4/aws-common");var Ae=require("@ez4/aws-common");var K=require("@ez4/aws-common");var z=class extends Error{static{n(this,"FunctionNotFoundError")}constructor(t){
92
- super(`Function ${t} wasn't found.`)}};var X=n(e=>e.type===f,"isFunctionState"),ht=n((e,t,r)=>{try{let o=e.getServiceState(
93
- t,r);if(X(o))return o}catch{}},"tryGetFunctionState"),Pt=n((e,t,r)=>{let o=e.getServiceState(
94
- t,r);if(!X(o))throw new z(t);return o},"getFunctionState"),N=n((e,t,r)=>{let o=r.
95
- getDependencies(f).at(0)?.parameters;if(!o?.functionName)throw new K.IncompleteResourceError(
62
+ valuesHash},{exclude:{release:!0}});if(i.counts)return{...i,name:r.functionName}},
63
+ "previewResource"),St=n(async(e,t,r)=>{if(t.result)throw new F.ReplaceResourceError(
64
+ c,e.entryId,t.entryId);return we(e,r)},"replaceResource"),we=n(async(e,t)=>{let{
65
+ functionName:r,release:o,...i}=e.parameters,a=(0,_.getLogGroupName)(c,r,t),p=(0,J.getRoleArn)(
66
+ c,r,t),[m,l,d,y]=await Promise.all([(0,F.getBundleHash)(...i.getFunctionFiles()),
67
+ i.getFunctionBundle(t),i.getFunctionHash(),i.getFunctionVariables()]),f=await le(
68
+ r),b=await(0,P.hashFile)(l);if(f)return await j(r,{architecture:i.architecture,publish:!1,
69
+ sourceFile:l}),await Z(r,{...i,logGroup:a,roleArn:p,variables:{...y,...o?.variableName&&
70
+ {[o.variableName]:o.version}}}),await Q(f.functionArn,{...i.tags,...o?.tagName&&
71
+ {[o.tagName]:o.version}}),{functionArn:f.functionArn,functionVersion:f.functionVersion,
72
+ variables:E(y),valuesHash:d,sourceHash:m,bundleHash:b,logGroup:a,roleArn:p};let N=await ge(
73
+ {...i,publish:!0,functionName:r,sourceFile:l,logGroup:a,roleArn:p,variables:{...y,
74
+ ...o?.variableName&&{[o.variableName]:o.version}},tags:{...i.tags,...o?.tagName&&
75
+ {[o.tagName]:o.version}}});return{functionArn:N.functionArn,functionVersion:N.functionVersion,
76
+ variables:E(y),valuesHash:d,sourceHash:m,bundleHash:b,logGroup:a,roleArn:p}},"cr\
77
+ eateResource"),Ft=n(async(e,t,r)=>{let{parameters:o,result:i}=e;if(!i)return;let{
78
+ functionName:a}=o,p=await o.getFunctionVariables(),m=t.result?.variables??p,l=(0,J.getRoleArn)(
79
+ c,a,r),d=t.result?.roleArn??l,y=(0,_.getLogGroupName)(c,a,r),f=t.result?.logGroup??
80
+ y,{isUpdated:b,...N}=await Rt(a,o,t.result,r),V={...o,variables:p,roleArn:l,logGroup:y},
81
+ ne={...t.parameters,variables:m,roleArn:d,logGroup:f};return await wt(a,V,ne,b,r),
82
+ await vt(i.functionArn,o,t.parameters,b),{...i,...N,variables:E(p),logGroup:y,roleArn:l}},
83
+ "updateResource"),xt=n(async e=>{let{result:t,parameters:r}=e;t&&await de(r.functionName)},
84
+ "deleteResource"),wt=n(async(e,t,r,o,i)=>{let{variables:a,...p}=t,m={variables:E(
85
+ a),...p},l=!(0,P.deepEqual)(m,r,{exclude:{sourceFile:!0,functionName:!0,architecture:!0,
86
+ release:!0,tags:!0}}),d=o?t.release:r.release,y=o&&d?.variableName;(l||y||i.force)&&
87
+ await Z(e,{...t,variables:{...t.variables,...d?.variableName&&{[d.variableName]:d.
88
+ version}}})},"checkConfigurationUpdates"),vt=n(async(e,t,r,o)=>{let a=o&&t.release?.
89
+ version!==r.release?.version?t.release:void 0,p={...t.tags,...a?.tagName&&{[a.tagName]:a.
90
+ version}};await(0,F.applyTagUpdates)(p,r.tags,m=>Q(e,m),m=>fe(e,m))},"checkTagUp\
91
+ dates"),Rt=n(async(e,t,r,o)=>{let[i,a]=await Promise.all([(0,F.getBundleHash)(...t.
92
+ getFunctionFiles()),t.getFunctionHash()]),p=r?.sourceHash,m=r?.valuesHash;if(i!==
93
+ p||a!==m||o.force){let l=await t.getFunctionBundle(o),d=await(0,P.hashFile)(l),y=r?.
94
+ bundleHash;if(d===y&&a===m)return F.Logger.logSkip(c,`${e} source code`),{isUpdated:!1,
95
+ valuesHash:a,sourceHash:i};let{functionVersion:f}=await j(e,{architecture:t.architecture,
96
+ publish:!r?.functionVersion,sourceFile:l});return{isUpdated:!0,valuesHash:a,sourceHash:i,
97
+ bundleHash:d,...f&&{functionVersion:f}}}return{isUpdated:!1}},"checkSourceCodeUp\
98
+ dates");var Re=n(()=>{(0,ve.tryRegisterProvider)(S,xe())},"registerFunctionProvider");var Ie=require("@ez4/aws-common");var Ae=require("@ez4/aws-common");var K=require("@ez4/aws-common");var G=class extends Error{static{n(this,"FunctionNotFoundError")}constructor(t){
99
+ super(`Function ${t} wasn't found.`)}};var X=n(e=>e.type===S,"isFunctionState"),ht=n((e,t,r)=>{try{let o=e.getServiceState(
100
+ t,r);if(X(o))return o}catch{}},"tryGetFunctionState"),bt=n((e,t,r)=>{let o=e.getServiceState(
101
+ t,r);if(!X(o))throw new G(t);return o},"getFunctionState"),I=n((e,t,r)=>{let o=r.
102
+ getDependencies(S).at(0)?.parameters;if(!o?.functionName)throw new K.IncompleteResourceError(
96
103
  e,t,"functionName");return o.functionName},"getFunctionName"),he=n(e=>e.getDependencies(
97
- f)[0]?.result?.functionArn,"tryGetFunctionArn"),bt=n((e,t,r)=>{let o=he(r);if(!o)
98
- throw new K.IncompleteResourceError(e,t,"functionArn");return o},"getFunctionArn");var h=require("@aws-sdk/client-lambda"),Y=require("@ez4/aws-common");var v="AWS:Lambda/Permission",R="aws:lambda.permission";var Pe=new h.LambdaClient({}),be=n(async e=>{Y.Logger.logCreate(v,e.functionName);
99
- let t=e.statementId??`ID${Date.now()}`;return await Pe.send(new h.AddPermissionCommand(
104
+ S)[0]?.result?.functionArn,"tryGetFunctionArn"),Pt=n((e,t,r)=>{let o=he(r);if(!o)
105
+ throw new K.IncompleteResourceError(e,t,"functionArn");return o},"getFunctionArn");var R=require("@aws-sdk/client-lambda"),Y=require("@ez4/aws-common");var C="AWS:Lambda/Permission",v="aws:lambda.permission";var be=new R.LambdaClient({}),Pe=n(async e=>{Y.Logger.logCreate(C,e.functionName);
106
+ let t=e.statementId??`ID${Date.now()}`;return await be.send(new R.AddPermissionCommand(
100
107
  {StatementId:t,FunctionName:e.functionName,SourceArn:e.sourceArn,Principal:e.principal,
101
- Action:e.action})),{statementId:t}},"createPermission"),ve=n(async(e,t)=>{Y.Logger.
102
- logDelete(v,e);try{return await Pe.send(new h.RemovePermissionCommand({FunctionName:e,
103
- StatementId:t})),!0}catch(r){if(!(r instanceof h.ResourceNotFoundException))throw r;
104
- return!1}},"deletePermission");var Ce=n(()=>({equals:vt,create:Ee,replace:Ct,preview:At,update:Et,delete:Nt}),"\
105
- getPermissionHandler"),vt=n((e,t)=>!!e.result&&e.result.functionName===t.result?.
106
- functionName,"equalsResource"),At=n((e,t)=>{},"previewResource"),Ct=n(async(e,t,r)=>{
107
- if(t.result)throw new Ae.ReplaceResourceError(v,e.entryId,t.entryId);return Ee(e,
108
- r)},"replaceResource"),Ee=n(async(e,t)=>{let r=e.parameters,o=N(v,"permission",t),
109
- i=await r.getPermission(t);return{statementId:(await be({action:"lambda:InvokeFu\
108
+ Action:e.action})),{statementId:t}},"createPermission"),Ce=n(async(e,t)=>{Y.Logger.
109
+ logDelete(C,e);try{return await be.send(new R.RemovePermissionCommand({FunctionName:e,
110
+ StatementId:t})),!0}catch(r){if(!(r instanceof R.ResourceNotFoundException))throw r;
111
+ return!1}},"deletePermission");var Ne=n(()=>({equals:Ct,create:Ee,replace:Nt,preview:At,update:Et,delete:It}),"\
112
+ getPermissionHandler"),Ct=n((e,t)=>!!e.result&&e.result.functionName===t.result?.
113
+ functionName,"equalsResource"),At=n((e,t)=>{},"previewResource"),Nt=n(async(e,t,r)=>{
114
+ if(t.result)throw new Ae.ReplaceResourceError(C,e.entryId,t.entryId);return Ee(e,
115
+ r)},"replaceResource"),Ee=n(async(e,t)=>{let r=e.parameters,o=I(C,"permission",t),
116
+ i=await r.getPermission(t);return{statementId:(await Pe({action:"lambda:InvokeFu\
110
117
  nction",sourceArn:i.sourceArn,principal:i.principal,functionName:o})).statementId,
111
- functionName:o}},"createResource"),Et=n(async()=>{},"updateResource"),Nt=n(async e=>{
112
- let t=e.result;t&&await ve(t.functionName,t.statementId)},"deleteResource");var Ie=n(()=>{(0,Ne.tryRegisterProvider)(R,Ce())},"registerPermissionProvider");var qe=require("@ez4/aws-common");var ze=require("@ez4/aws-common"),G=require("@ez4/utils");var u=require("@aws-sdk/client-lambda"),A=require("@ez4/aws-common"),te=require("@ez4/utils");var F="AWS:Lambda/Mapping",P="aws:lambda.mapping",ee=(r=>(r.DynamoDB="dynamodb",
113
- r.Queue="sqs",r))(ee||{});var T=new u.LambdaClient({}),Me=n(async(e,t)=>{A.Logger.logImport(F,e);let r=await T.
114
- send(new u.ListEventSourceMappingsCommand({FunctionName:e,EventSourceArn:t})),[o]=r.
115
- EventSourceMappings;return o?{eventId:o.UUID}:void 0},"importMapping"),Te=n(async e=>{
116
- let{sourceArn:t,functionName:r}=e;A.Logger.logCreate(F,r);let i=(await T.send(new u.CreateEventSourceMappingCommand(
117
- {FunctionName:r,EventSourceArn:t,...Ue(e)}))).UUID;return await He(i),{eventId:i}},
118
- "createMapping"),Le=n(async(e,t)=>{let{functionName:r}=t;A.Logger.logUpdate(F,`${r}\
119
- (${e})`),await T.send(new u.UpdateEventSourceMappingCommand({UUID:e,FunctionName:r,
120
- ...Ue(t)})),await He(e)},"updateMapping"),Ve=n(async e=>{A.Logger.logDelete(F,e);
121
- try{return await T.send(new u.DeleteEventSourceMappingCommand({UUID:e})),!0}catch(t){
122
- if(!(t instanceof u.ResourceNotFoundException))throw t;return!1}},"deleteMapping"),
123
- It=n(async e=>(await T.send(new u.GetEventSourceMappingCommand({UUID:e}))).State,
124
- "getMappingState"),He=n(async e=>{let t=new Set(["Enabled","Disabled"]);await te.Wait.
125
- until(async()=>{let r=await It(e);return t.has(r)?!0:te.Wait.RetryAttempt})},"wa\
126
- itForReadyState"),Ue=n(e=>{let{sourceArn:t,enabled:r,concurrency:o,batch:i}=e,{service:a}=(0,A.parseArn)(
127
- t);return{Enabled:r,FunctionResponseTypes:[u.FunctionResponseType.ReportBatchItemFailures],
118
+ functionName:o}},"createResource"),Et=n(async()=>{},"updateResource"),It=n(async e=>{
119
+ let t=e.result;t&&await Ce(t.functionName,t.statementId)},"deleteResource");var Me=n(()=>{(0,Ie.tryRegisterProvider)(v,Ne())},"registerPermissionProvider");var ke=require("@ez4/aws-common");var Ge=require("@ez4/aws-common"),D=require("@ez4/utils");var g=require("@aws-sdk/client-lambda"),A=require("@ez4/aws-common"),te=require("@ez4/utils");var x="AWS:Lambda/Mapping",h="aws:lambda.mapping",ee=(r=>(r.DynamoDB="dynamodb",
120
+ r.Queue="sqs",r))(ee||{});var L=new g.LambdaClient({}),Te=n(async(e,t)=>{A.Logger.logImport(x,e);let r=await L.
121
+ send(new g.ListEventSourceMappingsCommand({FunctionName:e,EventSourceArn:t})),[o]=r.
122
+ EventSourceMappings;return o?{eventId:o.UUID}:void 0},"importMapping"),Le=n(async e=>{
123
+ let{sourceArn:t,functionName:r}=e;A.Logger.logCreate(x,r);let i=(await L.send(new g.CreateEventSourceMappingCommand(
124
+ {FunctionName:r,EventSourceArn:t,...ze(e)}))).UUID;return await Ue(i),{eventId:i}},
125
+ "createMapping"),Ve=n(async(e,t)=>{let{functionName:r}=t;A.Logger.logUpdate(x,`${r}\
126
+ (${e})`),await L.send(new g.UpdateEventSourceMappingCommand({UUID:e,FunctionName:r,
127
+ ...ze(t)})),await Ue(e)},"updateMapping"),He=n(async e=>{A.Logger.logDelete(x,e);
128
+ try{return await L.send(new g.DeleteEventSourceMappingCommand({UUID:e})),!0}catch(t){
129
+ if(!(t instanceof g.ResourceNotFoundException))throw t;return!1}},"deleteMapping"),
130
+ Mt=n(async e=>(await L.send(new g.GetEventSourceMappingCommand({UUID:e}))).State,
131
+ "getMappingState"),Ue=n(async e=>{let t=new Set(["Enabled","Disabled"]);await te.Wait.
132
+ until(async()=>{let r=await Mt(e);return t.has(r)?!0:te.Wait.RetryAttempt})},"wa\
133
+ itForReadyState"),ze=n(e=>{let{sourceArn:t,enabled:r,concurrency:o,batch:i}=e,{service:a}=(0,A.parseArn)(
134
+ t);return{Enabled:r,FunctionResponseTypes:[g.FunctionResponseType.ReportBatchItemFailures],
128
135
  MaximumBatchingWindowInSeconds:i?.maxWait,BatchSize:i?.size,...a==="dynamodb"&&{
129
- StartingPosition:u.EventSourcePosition.LATEST},...a==="sqs"&&{ScalingConfig:{MaximumConcurrency:o}}}},
130
- "upsertMappingRequest");var Ge=n(()=>({equals:Mt,create:De,replace:Lt,preview:Tt,update:Vt,delete:Ht}),"\
131
- getMappingHandler"),Mt=n((e,t)=>!!e.result&&e.result.eventId===t.result?.eventId,
132
- "equalsResource"),Tt=n((e,t)=>{let r={...e.parameters,dependencies:e.dependencies},
133
- o={...t.parameters,dependencies:t.dependencies},i=(0,G.deepCompare)(r,o,{exclude:{
136
+ StartingPosition:g.EventSourcePosition.LATEST},...a==="sqs"&&{ScalingConfig:{MaximumConcurrency:o}}}},
137
+ "upsertMappingRequest");var De=n(()=>({equals:Tt,create:qe,replace:Vt,preview:Lt,update:Ht,delete:Ut}),"\
138
+ getMappingHandler"),Tt=n((e,t)=>!!e.result&&e.result.eventId===t.result?.eventId,
139
+ "equalsResource"),Lt=n((e,t)=>{let r={...e.parameters,dependencies:e.dependencies},
140
+ o={...t.parameters,dependencies:t.dependencies},i=(0,D.deepCompare)(r,o,{exclude:{
134
141
  getSourceArn:!0}});if(i.counts)return{...i,name:r.fromService}},"previewResource"),
135
- Lt=n(async(e,t,r)=>{if(t.result)throw new ze.ReplaceResourceError(F,e.entryId,t.
136
- entryId);return De(e,r)},"replaceResource"),De=n(async(e,t)=>{let r=e.parameters,
137
- o=N(F,"mapping",t),i=await r.getSourceArn(t);return{eventId:(await Me(o,i)??await Te(
142
+ Vt=n(async(e,t,r)=>{if(t.result)throw new Ge.ReplaceResourceError(x,e.entryId,t.
143
+ entryId);return qe(e,r)},"replaceResource"),qe=n(async(e,t)=>{let r=e.parameters,
144
+ o=I(x,"mapping",t),i=await r.getSourceArn(t);return{eventId:(await Te(o,i)??await Le(
138
145
  {...e.parameters,functionName:o,sourceArn:i})).eventId,functionName:o,sourceArn:i}},
139
- "createResource"),Vt=n(async(e,t,r)=>{let o=e.result;if(!o)return;let i=o.sourceArn,
140
- a=N(F,"mapping",r),c=t.result?.functionName??o.functionName,l={...e.parameters,functionName:a,
141
- sourceArn:i},g={...t.parameters,functionName:c,sourceArn:i};return await Ut(o.eventId,
142
- l,g),{...o,functionName:a}},"updateResource"),Ht=n(async e=>{let t=e.result;t&&await Ve(
143
- t.eventId)},"deleteResource"),Ut=n(async(e,t,r)=>{!(0,G.deepEqual)(t,r,{exclude:{
144
- getSourceArn:!0,fromService:!0}})&&await Le(e,t)},"checkGeneralUpdates");var ke=n(()=>{(0,qe.tryRegisterProvider)(P,Ge())},"registerMappingProvider");var Oe=n(()=>[{account:"lambda.amazonaws.com"}],"prepareIdentityAccount");var D=require("@ez4/aws-identity"),We=require("@ez4/project/library");var I=require("@ez4/aws-identity");var Be=n(async e=>{let[t,r]=await Promise.all([(0,I.getRegion)(),(0,I.getAccountId)()]);
145
- return(0,I.createPolicyDocument)([{permissions:["logs:CreateLogStream","logs:Put\
146
+ "createResource"),Ht=n(async(e,t,r)=>{let o=e.result;if(!o)return;let i=o.sourceArn,
147
+ a=I(x,"mapping",r),p=t.result?.functionName??o.functionName,m={...e.parameters,functionName:a,
148
+ sourceArn:i},l={...t.parameters,functionName:p,sourceArn:i};return await zt(o.eventId,
149
+ m,l),{...o,functionName:a}},"updateResource"),Ut=n(async e=>{let t=e.result;t&&await He(
150
+ t.eventId)},"deleteResource"),zt=n(async(e,t,r)=>{!(0,D.deepEqual)(t,r,{exclude:{
151
+ getSourceArn:!0,fromService:!0}})&&await Ve(e,t)},"checkGeneralUpdates");var Oe=n(()=>{(0,ke.tryRegisterProvider)(h,De())},"registerMappingProvider");var Be=n(()=>[{account:"lambda.amazonaws.com"}],"prepareIdentityAccount");var q=require("@ez4/aws-identity"),$e=require("@ez4/project/library");var M=require("@ez4/aws-identity");var We=n(async e=>{let[t,r]=await Promise.all([(0,M.getRegion)(),(0,M.getAccountId)()]);
152
+ return(0,M.createPolicyDocument)([{permissions:["logs:CreateLogStream","logs:Put\
146
153
  LogEvents"],resourceIds:[`arn:aws:logs:${t}:${r}:log-group:${e}-*:*`]}])},"getPo\
147
- licyDocument");var $e=n(async e=>{let{state:t,options:r}=e,o=(0,We.getServiceName)("",r),i=`${o}\
148
- -lambda-policy`;return(0,D.tryGetPolicy)(t,i)??(0,D.createPolicy)(t,{tags:r.tags,
149
- policyDocument:await Be(o),policyName:i})},"prepareExecutionPolicy");var zt=n(()=>{(0,je.registerTriggers)(),(0,Ze.registerTriggers)(),(0,Qe.registerTriggers)(),
150
- (0,_e.tryCreateTrigger)("@ez4/aws-function",{"deploy:prepareIdentityAccount":Oe,
151
- "deploy:prepareExecutionPolicy":$e}),Re(),Ie(),ke()},"registerTriggers");var q=require("@ez4/utils"),Je=require("@ez4/stateful");var Gt=n((e,t,r,o)=>{let i=(0,q.toKebabCase)(o.functionName),a=(0,q.hashData)(f,
152
- t.entryId,i),c=[t.entryId];return r&&c.push(r.entryId),(0,Je.attachEntry)(e,{type:f,
153
- entryId:a,dependencies:c,parameters:{...o,functionName:i}})},"createFunction");var Xe=require("@ez4/stateful"),re=require("@ez4/utils");var Ke=n(e=>e.type===R,"isPermissionState");var Dt=n((e,t,r,o)=>{let i=(0,re.hashData)(R,t.entryId,r.entryId);return(0,Xe.attachEntry)(
154
- e,{type:R,entryId:i,dependencies:[t.entryId,r.entryId],parameters:o})},"createPe\
155
- rmission"),qt=n((e,t,r)=>{let o=(0,re.hashData)(R,t.entryId,r.entryId),i=e[o];return i&&
156
- Ke(i)?i:null},"getPermission");var Ye=require("@ez4/utils"),et=require("@ez4/stateful");var kt=n((e,t,r,o)=>{let i=(0,Ye.hashData)(P,t.entryId,r.entryId);return(0,et.attachEntry)(
157
- e,{type:P,entryId:i,dependencies:[t.entryId,r.entryId],parameters:o})},"createMa\
158
- pping");var Ot=n(e=>e.type===P,"isMappingState");var Bt=n((e,t,r)=>`arn:aws:lambda:${e}:${t}:function:${r}`,"buildFunctionArn");var k=require("@ez4/project"),tt;(a=>(a.LogRetention=90,a.Architecture=k.ArchitectureType.
159
- x86,a.Runtime=k.RuntimeType.Node24,a.Timeout=90,a.Memory=192))(tt||={});0&&(module.exports={FunctionArchitecture,FunctionDefaults,FunctionRuntime,FunctionServiceName,
154
+ licyDocument");var je=n(async e=>{let{state:t,options:r}=e,o=(0,$e.getServiceName)("",r),i=`${o}\
155
+ -lambda-policy`;return(0,q.tryGetPolicy)(t,i)??(0,q.createPolicy)(t,{tags:r.tags,
156
+ policyDocument:await We(o),policyName:i})},"prepareExecutionPolicy");var Gt=n(()=>{(0,Ze.registerTriggers)(),(0,Qe.registerTriggers)(),(0,_e.registerTriggers)(),
157
+ (0,Je.tryCreateTrigger)("@ez4/aws-function",{"deploy:prepareIdentityAccount":Be,
158
+ "deploy:prepareExecutionPolicy":je}),Re(),Me(),Oe()},"registerTriggers");var k=require("@ez4/utils"),Ke=require("@ez4/stateful");var Dt=n((e,t,r,o)=>{let i=(0,k.toKebabCase)(o.functionName),a=(0,k.hashData)(S,
159
+ t.entryId,i),p=[t.entryId];return r&&p.push(r.entryId),(0,Ke.attachEntry)(e,{type:S,
160
+ entryId:a,dependencies:p,parameters:{...o,functionName:i}})},"createFunction");var Ye=require("@ez4/stateful"),re=require("@ez4/utils");var Xe=n(e=>e.type===v,"isPermissionState");var qt=n((e,t,r,o)=>{let i=(0,re.hashData)(v,t.entryId,r.entryId);return(0,Ye.attachEntry)(
161
+ e,{type:v,entryId:i,dependencies:[t.entryId,r.entryId],parameters:o})},"createPe\
162
+ rmission"),kt=n((e,t,r)=>{let o=(0,re.hashData)(v,t.entryId,r.entryId),i=e[o];return i&&
163
+ Xe(i)?i:null},"getPermission");var et=require("@ez4/utils"),tt=require("@ez4/stateful");var Ot=n((e,t,r,o)=>{let i=(0,et.hashData)(h,t.entryId,r.entryId);return(0,tt.attachEntry)(
164
+ e,{type:h,entryId:i,dependencies:[t.entryId,r.entryId],parameters:o})},"createMa\
165
+ pping");var Bt=n(e=>e.type===h,"isMappingState");var Wt=n((e,t,r)=>`arn:aws:lambda:${e}:${t}:function:${r}`,"buildFunctionArn");var O=require("@ez4/project"),rt;(a=>(a.LogRetention=90,a.Architecture=O.ArchitectureType.
166
+ x86,a.Runtime=O.RuntimeType.Node24,a.Timeout=90,a.Memory=192))(rt||={});0&&(module.exports={FunctionArchitecture,FunctionDefaults,FunctionRuntime,FunctionServiceName,
160
167
  FunctionServiceType,MappingService,MappingServiceName,MappingServiceType,PermissionServiceName,
161
168
  PermissionServiceType,buildFunctionArn,createFunction,createMapping,createPermission,
162
169
  getFunctionArchitecture,getFunctionArn,getFunctionName,getFunctionRuntime,getFunctionState,
package/dist/main.mjs CHANGED
@@ -1,148 +1,155 @@
1
- var Ie=Object.defineProperty;var n=(e,t)=>Ie(e,"name",{value:t,configurable:!0});import{registerTriggers as Yt}from"@ez4/aws-common";import{registerTriggers as er}from"@ez4/aws-identity";
2
- import{registerTriggers as tr}from"@ez4/aws-logs";import{tryCreateTrigger as rr}from"@ez4/project/library";import{tryRegisterProvider as gt}from"@ez4/aws-common";import{applyTagUpdates as et,getBundleHash as z,Logger as tt,ReplaceResourceError as rt}from"@ez4/aws-common";
3
- import{deepCompare as nt,deepEqual as ot,hashFile as Y}from"@ez4/utils";import{getLogGroupName as ee}from"@ez4/aws-logs";
4
- import{getRoleArn as te}from"@ez4/aws-identity";import{LambdaClient as ke,GetFunctionCommand as Oe,CreateFunctionCommand as Be,DeleteFunctionCommand as We,
5
- UpdateFunctionCodeCommand as $e,UpdateFunctionConfigurationCommand as je,PublishVersionCommand as Ze,
6
- TagResourceCommand as Qe,UntagResourceCommand as _e,waitUntilFunctionActive as Je,
7
- waitUntilFunctionUpdated as k,waitUntilPublishedVersionActive as Ke,ResourceNotFoundException as O,
8
- ApplicationLogLevel as A,SystemLogLevel as B,LogFormat as W}from"@aws-sdk/client-lambda";
9
- import{Logger as g,tryParseArn as $,waitCreation as Xe,waitDeletion as Ye}from"@ez4/aws-common";import{RuntimeType as G}from"@ez4/project";var Me=(r=>(r.Node22="nodejs22.x",r.Node24="nodejs24.x",r))(Me||{});var Te={[G.Node22]:"nodejs22.x",[G.Node24]:"nodejs24.x"},M=n(e=>Te[e],"getFuncti\
10
- onRuntime");import{ArchitectureType as D}from"@ez4/project";var Le=(r=>(r.Arm="arm64",r.x86="x86_64",r))(Le||{});var Ve={[D.Arm]:"arm64",[D.x86]:"x86_64"},T=n(e=>Ve[e],"getFunctionArchitecture");import{InvalidParameterError as He}from"@ez4/aws-common";import{hashData as Ue}from"@ez4/utils";var p="AWS:Lambda/Function",y="aws:lambda.function";var ze=/[a-z][\w]+/i,Ge=n(e=>ze.test(e),"isValidName"),L=n(e=>{for(let t in e)if(!Ge(
11
- t))throw new He(p,`${t} is an invalid variable name .`)},"assertVariables"),R=n(
12
- e=>{let t={};for(let r in e)t[r]=Ue(e[r]);return t},"protectVariables");import De from"adm-zip";import{readFile as qe}from"node:fs/promises";var q=n(async(e,t)=>{let r=new De,o=await qe(e);return r.addFile(t,o),r.toBufferPromise()},
13
- "getZipBuffer");var f=new ke({}),C={minDelay:15,maxWaitTime:1800,maxDelay:60,client:f},j=n(async(e,t)=>{
14
- g.logImport(p,e);try{let r=await f.send(new Oe({FunctionName:e,Qualifier:t})),o=r.
1
+ var Me=Object.defineProperty;var n=(e,t)=>Me(e,"name",{value:t,configurable:!0});import{registerTriggers as er}from"@ez4/aws-common";import{registerTriggers as tr}from"@ez4/aws-identity";
2
+ import{registerTriggers as rr}from"@ez4/aws-logs";import{tryCreateTrigger as nr}from"@ez4/project/library";import{tryRegisterProvider as dt}from"@ez4/aws-common";import{applyTagUpdates as tt,getBundleHash as z,Logger as rt,ReplaceResourceError as nt}from"@ez4/aws-common";
3
+ import{deepCompare as ot,deepEqual as it,hashFile as ee}from"@ez4/utils";import{
4
+ getLogGroupName as te}from"@ez4/aws-logs";import{getRoleArn as re}from"@ez4/aws-identity";import{LambdaClient as Oe,GetFunctionCommand as Be,CreateFunctionCommand as We,DeleteFunctionCommand as $e,
5
+ UpdateFunctionCodeCommand as je,UpdateFunctionConfigurationCommand as Ze,PublishVersionCommand as Qe,
6
+ TagResourceCommand as _e,UntagResourceCommand as Je,waitUntilFunctionActive as Ke,
7
+ waitUntilFunctionUpdated as O,waitUntilPublishedVersionActive as Xe,ResourceNotFoundException as B,
8
+ ApplicationLogLevel as A,SystemLogLevel as W,LogFormat as $}from"@aws-sdk/client-lambda";
9
+ import{Logger as g,tryParseArn as j,waitCreation as Ye,waitDeletion as et}from"@ez4/aws-common";import{RuntimeType as D}from"@ez4/project";var Te=(r=>(r.Node22="nodejs22.x",r.Node24="nodejs24.x",r))(Te||{});var Le={[D.Node22]:"nodejs22.x",[D.Node24]:"nodejs24.x"},M=n(e=>Le[e],"getFuncti\
10
+ onRuntime");import{ArchitectureType as q}from"@ez4/project";var Ve=(r=>(r.Arm="arm64",r.x86="x86_64",r))(Ve||{});var He={[q.Arm]:"arm64",[q.x86]:"x86_64"},T=n(e=>He[e],"getFunctionArchitecture");import{InvalidParameterError as Ue}from"@ez4/aws-common";import{hashData as ze}from"@ez4/utils";var p="AWS:Lambda/Function",y="aws:lambda.function";var Ge=/[a-z][\w]+/i,De=n(e=>Ge.test(e),"isValidName"),L=n(e=>{for(let t in e)if(!De(
11
+ t))throw new Ue(p,`${t} is an invalid variable name .`)},"assertVariables"),R=n(
12
+ e=>{let t={};for(let r in e)t[r]=ze(e[r]);return t},"protectVariables");import qe from"adm-zip";import{readFile as ke}from"node:fs/promises";var k=n(async(e,t)=>{let r=new qe,o=await ke(e);return r.addFile(t,o),r.toBufferPromise()},
13
+ "getZipBuffer");var f=new Oe({}),N={minDelay:15,maxWaitTime:1800,maxDelay:60,client:f},Z=n(async(e,t)=>{
14
+ g.logImport(p,e);try{let r=await f.send(new Be({FunctionName:e,Qualifier:t})),o=r.
15
15
  Configuration.Version,i=r.Configuration.FunctionArn;return{functionVersion:o,functionArn:i}}catch(r){
16
- if(!(r instanceof O))throw r;return}},"importFunction"),Z=n(async e=>{let{functionName:t,
17
- variables:r}=e;g.logCreate(p,t),r&&L(r);let o=X(e.handlerName),i=await K(e.sourceFile),
18
- {description:s,memory:a,timeout:c,architecture:m,runtime:l,debug:u,roleArn:d,logGroup:w}=e,
19
- I=await Xe(()=>f.send(new Be({FunctionName:t,Description:s,MemorySize:a,Timeout:c,
20
- Role:d,Handler:o,Architectures:[T(m)],Runtime:M(l),PackageType:"Zip",LoggingConfig:{
21
- LogGroup:w,ApplicationLogLevel:u?A.Debug:A.Warn,SystemLogLevel:B.Warn,LogFormat:W.
16
+ if(!(r instanceof B))throw r;return}},"importFunction"),Q=n(async e=>{let{functionName:t,
17
+ variables:r}=e;g.logCreate(p,t),r&&L(r);let o=Y(e.handlerName),i=await X(e.sourceFile),
18
+ {description:a,memory:s,timeout:c,architecture:m,runtime:u,debug:l,roleArn:d,logGroup:x}=e,
19
+ v=await Ye(()=>f.send(new We({FunctionName:t,Description:a,MemorySize:s,Timeout:c,
20
+ Role:d,Handler:o,Architectures:[T(m)],Runtime:M(u),PackageType:"Zip",LoggingConfig:{
21
+ LogGroup:x,ApplicationLogLevel:l?A.Debug:A.Warn,SystemLogLevel:W.Warn,LogFormat:$.
22
22
  Json},Code:{ZipFile:i},Environment:{Variables:r},Tags:{...e.tags,ManagedBy:"EZ4"}})));
23
- g.logWait(p,t),await Je(C,{FunctionName:t});let v=I.FunctionArn;return e.publish?
24
- {functionVersion:await _(t),functionArn:v}:{functionArn:v}},"createFunction"),V=n(
25
- async(e,t)=>{g.logUpdate(p,`${e} source code`);let r=await K(t.sourceFile),{publish:o,
26
- architecture:i}=t,s=await f.send(new $e({Architectures:i&&[T(i)],FunctionName:e,
27
- ZipFile:r,Publish:o}));g.logWait(p,e),await k(C,{FunctionName:e});let a=s.FunctionArn;
28
- return t.publish?{functionVersion:await _(e),functionArn:a}:{functionArn:a}},"up\
23
+ g.logWait(p,t),await Ke(N,{FunctionName:t});let C=v.FunctionArn;return e.publish?
24
+ {functionVersion:await J(t),functionArn:C}:{functionArn:C}},"createFunction"),V=n(
25
+ async(e,t)=>{g.logUpdate(p,`${e} source code`);let r=await X(t.sourceFile),{publish:o,
26
+ architecture:i}=t,a=await f.send(new je({Architectures:i&&[T(i)],FunctionName:e,
27
+ ZipFile:r,Publish:o}));g.logWait(p,e),await O(N,{FunctionName:e});let s=a.FunctionArn;
28
+ return t.publish?{functionVersion:await J(e),functionArn:s}:{functionArn:s}},"up\
29
29
  dateSourceCode"),H=n(async(e,t)=>{let{handlerName:r,variables:o}=t;g.logUpdate(p,
30
- `${e} configuration`),o&&L(o);let{description:i,memory:s,timeout:a,runtime:c,debug:m,
31
- roleArn:l,logGroup:u}=t;await f.send(new je({Runtime:c&&M(c),FunctionName:e,Description:i,
32
- MemorySize:s,Timeout:a,Role:l,...r&&{Handler:X(r)},LoggingConfig:{LogGroup:u,ApplicationLogLevel:m?
33
- A.Debug:A.Warn,SystemLogLevel:B.Warn,LogFormat:W.Json},Environment:{Variables:o}})),
34
- g.logWait(p,e),await k(C,{FunctionName:e})},"updateConfiguration"),Q=n(async e=>{
35
- g.logDelete(p,e),await Ye(async()=>{try{await f.send(new We({FunctionName:e}))}catch(t){
36
- if(!(t instanceof O))throw t}})},"deleteFunction"),_=n(async e=>{g.logPublish(p,
37
- e);let t=await f.send(new Ze({FunctionName:e}));g.logWait(p,e);let r=t.Version;return await Ke(
38
- C,{FunctionName:e,Qualifier:r}),r},"publishFunction"),U=n(async(e,t)=>{let r=$(e)?.
39
- resourceName??e;g.logTag(p,r),await f.send(new Qe({Resource:e,Tags:{...t,ManagedBy:"\
40
- EZ4"}}))},"tagFunction"),J=n(async(e,t)=>{let r=$(e)?.resourceName??e;g.logUntag(
41
- p,r),await f.send(new _e({Resource:e,TagKeys:t}))},"untagFunction"),K=n(e=>q(e,"\
42
- main.mjs"),"getSourceZipFile"),X=n(e=>`main.${e}`,"getSourceHandlerName");var re=n(()=>({equals:it,create:ne,replace:at,preview:st,update:pt,delete:ct}),"\
43
- getFunctionHandler"),it=n((e,t)=>!!e.result&&e.result.functionArn===t.result?.functionArn,
44
- "equalsResource"),st=n(async(e,t)=>{let r=e.parameters,o=t.parameters,i=nt({...r,
30
+ `${e} configuration`),o&&L(o);let{description:i,memory:a,timeout:s,runtime:c,debug:m,
31
+ roleArn:u,logGroup:l}=t;await f.send(new Ze({Runtime:c&&M(c),FunctionName:e,Description:i,
32
+ MemorySize:a,Timeout:s,Role:u,...r&&{Handler:Y(r)},LoggingConfig:{LogGroup:l,ApplicationLogLevel:m?
33
+ A.Debug:A.Warn,SystemLogLevel:W.Warn,LogFormat:$.Json},Environment:{Variables:o}})),
34
+ g.logWait(p,e),await O(N,{FunctionName:e})},"updateConfiguration"),_=n(async e=>{
35
+ g.logDelete(p,e),await et(async()=>{try{await f.send(new $e({FunctionName:e}))}catch(t){
36
+ if(!(t instanceof B))throw t}})},"deleteFunction"),J=n(async e=>{g.logPublish(p,
37
+ e);let t=await f.send(new Qe({FunctionName:e}));g.logWait(p,e);let r=t.Version;return await Xe(
38
+ N,{FunctionName:e,Qualifier:r}),r},"publishFunction"),U=n(async(e,t)=>{let r=j(e)?.
39
+ resourceName??e;g.logTag(p,r),await f.send(new _e({Resource:e,Tags:{...t,ManagedBy:"\
40
+ EZ4"}}))},"tagFunction"),K=n(async(e,t)=>{let r=j(e)?.resourceName??e;g.logUntag(
41
+ p,r),await f.send(new Je({Resource:e,TagKeys:t}))},"untagFunction"),X=n(e=>k(e,"\
42
+ main.mjs"),"getSourceZipFile"),Y=n(e=>`main.${e}`,"getSourceHandlerName");var ne=n(()=>({equals:at,create:oe,replace:pt,preview:st,update:ct,delete:mt}),"\
43
+ getFunctionHandler"),at=n((e,t)=>!!e.result&&e.result.functionArn===t.result?.functionArn,
44
+ "equalsResource"),st=n(async(e,t)=>{let r=e.parameters,o=t.parameters,i=ot({...r,
45
45
  connections:e.connections,dependencies:e.dependencies,variables:R(await r.getFunctionVariables()),
46
46
  sourceHash:await z(...r.getFunctionFiles()),valuesHash:r.getFunctionHash()},{...o,
47
47
  connections:t.connections,dependencies:t.dependencies,variables:t.result?.variables,
48
- sourceHash:t.result?.sourceHash,valuesHash:t.result?.valuesHash});if(i.counts)return{
49
- ...i,name:r.functionName}},"previewResource"),at=n(async(e,t,r)=>{if(t.result)throw new rt(
50
- p,e.entryId,t.entryId);return ne(e,r)},"replaceResource"),ne=n(async(e,t)=>{let{
51
- functionName:r,...o}=e.parameters,i=ee(p,r,t),s=te(p,r,t),[a,c,m,l]=await Promise.
52
- all([z(...o.getFunctionFiles()),o.getFunctionBundle(t),o.getFunctionHash(),o.getFunctionVariables()]),
53
- u=await j(r),d=await Y(c);if(u)return await H(r,{...o,variables:l,logGroup:i,roleArn:s}),
54
- await V(r,{architecture:o.architecture,publish:!1,sourceFile:c}),await U(u.functionArn,
55
- {...o.tags}),{functionArn:u.functionArn,functionVersion:u.functionVersion,variables:R(
56
- l),valuesHash:m,sourceHash:a,bundleHash:d,logGroup:i,roleArn:s};let w=await Z({...o,
57
- publish:!0,functionName:r,sourceFile:c,variables:l,logGroup:i,roleArn:s});return{
58
- functionArn:w.functionArn,functionVersion:w.functionVersion,variables:R(l),valuesHash:m,
59
- sourceHash:a,bundleHash:d,logGroup:i,roleArn:s}},"createResource"),pt=n(async(e,t,r)=>{
60
- let{parameters:o,result:i}=e;if(!i)return;let s=o.functionName,a=await o.getFunctionVariables(),
61
- c=t.result?.variables??a,m=te(p,s,r),l=t.result?.roleArn??m,u=ee(p,s,r),d=t.result?.
62
- logGroup??u,w={...o,variables:a,roleArn:m,logGroup:u},I={...t.parameters,variables:c,
63
- roleArn:l,logGroup:d};await mt(s,w,I,r),await ut(i.functionArn,o,t.parameters);let v=await lt(
64
- s,o,t.result,r);return{...i,...v,variables:R(a),logGroup:u,roleArn:m}},"updateRe\
65
- source"),ct=n(async e=>{let{result:t,parameters:r}=e;t&&await Q(r.functionName)},
66
- "deleteResource"),mt=n(async(e,t,r,o)=>{let{variables:i,...s}=t,a={variables:R(i),
67
- ...s};(!ot(a,r,{exclude:{sourceFile:!0,functionName:!0,architecture:!0,tags:!0}})||
68
- o.force)&&await H(e,t)},"checkConfigurationUpdates"),ut=n(async(e,t,r)=>{await et(
69
- t.tags,r.tags,o=>U(e,o),o=>J(e,o))},"checkTagUpdates"),lt=n(async(e,t,r,o)=>{let[
70
- i,s]=await Promise.all([z(...t.getFunctionFiles()),t.getFunctionHash()]),a=r?.sourceHash,
71
- c=r?.valuesHash;if(i!==a||s!==c||o.force){let m=await t.getFunctionBundle(o),l=await Y(
72
- m),u=r?.bundleHash;if(l===u&&s===c)return tt.logSkip(p,`${e} source code`),{valuesHash:s,
73
- sourceHash:i};let{functionVersion:d}=await V(e,{architecture:t.architecture,publish:!r?.
74
- functionVersion,sourceFile:m});return{valuesHash:s,sourceHash:i,bundleHash:l,...d&&
75
- {functionVersion:d}}}},"checkSourceCodeUpdates");var oe=n(()=>{gt(y,re())},"registerFunctionProvider");import{tryRegisterProvider as vt}from"@ez4/aws-common";import{ReplaceResourceError as xt}from"@ez4/aws-common";import{IncompleteResourceError as ie}from"@ez4/aws-common";var E=class extends Error{static{n(this,"FunctionNotFoundError")}constructor(t){
76
- super(`Function ${t} wasn't found.`)}};var se=n(e=>e.type===y,"isFunctionState"),an=n((e,t,r)=>{try{let o=e.getServiceState(
48
+ sourceHash:t.result?.sourceHash,valuesHash:t.result?.valuesHash},{exclude:{release:!0}});
49
+ if(i.counts)return{...i,name:r.functionName}},"previewResource"),pt=n(async(e,t,r)=>{
50
+ if(t.result)throw new nt(p,e.entryId,t.entryId);return oe(e,r)},"replaceResource"),
51
+ oe=n(async(e,t)=>{let{functionName:r,release:o,...i}=e.parameters,a=te(p,r,t),s=re(
52
+ p,r,t),[c,m,u,l]=await Promise.all([z(...i.getFunctionFiles()),i.getFunctionBundle(
53
+ t),i.getFunctionHash(),i.getFunctionVariables()]),d=await Z(r),x=await ee(m);if(d)
54
+ return await V(r,{architecture:i.architecture,publish:!1,sourceFile:m}),await H(
55
+ r,{...i,logGroup:a,roleArn:s,variables:{...l,...o?.variableName&&{[o.variableName]:o.
56
+ version}}}),await U(d.functionArn,{...i.tags,...o?.tagName&&{[o.tagName]:o.version}}),
57
+ {functionArn:d.functionArn,functionVersion:d.functionVersion,variables:R(l),valuesHash:u,
58
+ sourceHash:c,bundleHash:x,logGroup:a,roleArn:s};let v=await Q({...i,publish:!0,functionName:r,
59
+ sourceFile:m,logGroup:a,roleArn:s,variables:{...l,...o?.variableName&&{[o.variableName]:o.
60
+ version}},tags:{...i.tags,...o?.tagName&&{[o.tagName]:o.version}}});return{functionArn:v.
61
+ functionArn,functionVersion:v.functionVersion,variables:R(l),valuesHash:u,sourceHash:c,
62
+ bundleHash:x,logGroup:a,roleArn:s}},"createResource"),ct=n(async(e,t,r)=>{let{parameters:o,
63
+ result:i}=e;if(!i)return;let{functionName:a}=o,s=await o.getFunctionVariables(),
64
+ c=t.result?.variables??s,m=re(p,a,r),u=t.result?.roleArn??m,l=te(p,a,r),d=t.result?.
65
+ logGroup??l,{isUpdated:x,...v}=await gt(a,o,t.result,r),C={...o,variables:s,roleArn:m,
66
+ logGroup:l},G={...t.parameters,variables:c,roleArn:u,logGroup:d};return await ut(
67
+ a,C,G,x,r),await lt(i.functionArn,o,t.parameters,x),{...i,...v,variables:R(s),logGroup:l,
68
+ roleArn:m}},"updateResource"),mt=n(async e=>{let{result:t,parameters:r}=e;t&&await _(
69
+ r.functionName)},"deleteResource"),ut=n(async(e,t,r,o,i)=>{let{variables:a,...s}=t,
70
+ c={variables:R(a),...s},m=!it(c,r,{exclude:{sourceFile:!0,functionName:!0,architecture:!0,
71
+ release:!0,tags:!0}}),u=o?t.release:r.release,l=o&&u?.variableName;(m||l||i.force)&&
72
+ await H(e,{...t,variables:{...t.variables,...u?.variableName&&{[u.variableName]:u.
73
+ version}}})},"checkConfigurationUpdates"),lt=n(async(e,t,r,o)=>{let a=o&&t.release?.
74
+ version!==r.release?.version?t.release:void 0,s={...t.tags,...a?.tagName&&{[a.tagName]:a.
75
+ version}};await tt(s,r.tags,c=>U(e,c),c=>K(e,c))},"checkTagUpdates"),gt=n(async(e,t,r,o)=>{
76
+ let[i,a]=await Promise.all([z(...t.getFunctionFiles()),t.getFunctionHash()]),s=r?.
77
+ sourceHash,c=r?.valuesHash;if(i!==s||a!==c||o.force){let m=await t.getFunctionBundle(
78
+ o),u=await ee(m),l=r?.bundleHash;if(u===l&&a===c)return rt.logSkip(p,`${e} sourc\
79
+ e code`),{isUpdated:!1,valuesHash:a,sourceHash:i};let{functionVersion:d}=await V(
80
+ e,{architecture:t.architecture,publish:!r?.functionVersion,sourceFile:m});return{
81
+ isUpdated:!0,valuesHash:a,sourceHash:i,bundleHash:u,...d&&{functionVersion:d}}}return{
82
+ isUpdated:!1}},"checkSourceCodeUpdates");var ie=n(()=>{dt(y,ne())},"registerFunctionProvider");import{tryRegisterProvider as Ct}from"@ez4/aws-common";import{ReplaceResourceError as wt}from"@ez4/aws-common";import{IncompleteResourceError as ae}from"@ez4/aws-common";var E=class extends Error{static{n(this,"FunctionNotFoundError")}constructor(t){
83
+ super(`Function ${t} wasn't found.`)}};var se=n(e=>e.type===y,"isFunctionState"),sn=n((e,t,r)=>{try{let o=e.getServiceState(
77
84
  t,r);if(se(o))return o}catch{}},"tryGetFunctionState"),pn=n((e,t,r)=>{let o=e.getServiceState(
78
- t,r);if(!se(o))throw new E(t);return o},"getFunctionState"),P=n((e,t,r)=>{let o=r.
79
- getDependencies(y).at(0)?.parameters;if(!o?.functionName)throw new ie(e,t,"funct\
80
- ionName");return o.functionName},"getFunctionName"),dt=n(e=>e.getDependencies(y)[0]?.
81
- result?.functionArn,"tryGetFunctionArn"),cn=n((e,t,r)=>{let o=dt(r);if(!o)throw new ie(
82
- e,t,"functionArn");return o},"getFunctionArn");import{LambdaClient as yt,AddPermissionCommand as ft,RemovePermissionCommand as St,
83
- ResourceNotFoundException as Ft}from"@aws-sdk/client-lambda";import{Logger as ae}from"@ez4/aws-common";var h="AWS:Lambda/Permission",F="aws:lambda.permission";var pe=new yt({}),ce=n(async e=>{ae.logCreate(h,e.functionName);let t=e.statementId??
84
- `ID${Date.now()}`;return await pe.send(new ft({StatementId:t,FunctionName:e.functionName,
85
+ t,r);if(!se(o))throw new E(t);return o},"getFunctionState"),b=n((e,t,r)=>{let o=r.
86
+ getDependencies(y).at(0)?.parameters;if(!o?.functionName)throw new ae(e,t,"funct\
87
+ ionName");return o.functionName},"getFunctionName"),yt=n(e=>e.getDependencies(y)[0]?.
88
+ result?.functionArn,"tryGetFunctionArn"),cn=n((e,t,r)=>{let o=yt(r);if(!o)throw new ae(
89
+ e,t,"functionArn");return o},"getFunctionArn");import{LambdaClient as ft,AddPermissionCommand as St,RemovePermissionCommand as Ft,
90
+ ResourceNotFoundException as xt}from"@aws-sdk/client-lambda";import{Logger as pe}from"@ez4/aws-common";var h="AWS:Lambda/Permission",F="aws:lambda.permission";var ce=new ft({}),me=n(async e=>{pe.logCreate(h,e.functionName);let t=e.statementId??
91
+ `ID${Date.now()}`;return await ce.send(new St({StatementId:t,FunctionName:e.functionName,
85
92
  SourceArn:e.sourceArn,Principal:e.principal,Action:e.action})),{statementId:t}},
86
- "createPermission"),me=n(async(e,t)=>{ae.logDelete(h,e);try{return await pe.send(
87
- new St({FunctionName:e,StatementId:t})),!0}catch(r){if(!(r instanceof Ft))throw r;
88
- return!1}},"deletePermission");var ue=n(()=>({equals:wt,create:le,replace:ht,preview:Rt,update:Pt,delete:bt}),"\
89
- getPermissionHandler"),wt=n((e,t)=>!!e.result&&e.result.functionName===t.result?.
93
+ "createPermission"),ue=n(async(e,t)=>{pe.logDelete(h,e);try{return await ce.send(
94
+ new Ft({FunctionName:e,StatementId:t})),!0}catch(r){if(!(r instanceof xt))throw r;
95
+ return!1}},"deletePermission");var le=n(()=>({equals:vt,create:ge,replace:ht,preview:Rt,update:bt,delete:Pt}),"\
96
+ getPermissionHandler"),vt=n((e,t)=>!!e.result&&e.result.functionName===t.result?.
90
97
  functionName,"equalsResource"),Rt=n((e,t)=>{},"previewResource"),ht=n(async(e,t,r)=>{
91
- if(t.result)throw new xt(h,e.entryId,t.entryId);return le(e,r)},"replaceResource"),
92
- le=n(async(e,t)=>{let r=e.parameters,o=P(h,"permission",t),i=await r.getPermission(
93
- t);return{statementId:(await ce({action:"lambda:InvokeFunction",sourceArn:i.sourceArn,
98
+ if(t.result)throw new wt(h,e.entryId,t.entryId);return ge(e,r)},"replaceResource"),
99
+ ge=n(async(e,t)=>{let r=e.parameters,o=b(h,"permission",t),i=await r.getPermission(
100
+ t);return{statementId:(await me({action:"lambda:InvokeFunction",sourceArn:i.sourceArn,
94
101
  principal:i.principal,functionName:o})).statementId,functionName:o}},"createReso\
95
- urce"),Pt=n(async()=>{},"updateResource"),bt=n(async e=>{let t=e.result;t&&await me(
96
- t.functionName,t.statementId)},"deleteResource");var ge=n(()=>{vt(F,ue())},"registerPermissionProvider");import{tryRegisterProvider as jt}from"@ez4/aws-common";import{ReplaceResourceError as zt}from"@ez4/aws-common";import{deepCompare as Gt,
97
- deepEqual as Dt}from"@ez4/utils";import{LambdaClient as At,GetEventSourceMappingCommand as Ct,CreateEventSourceMappingCommand as Et,
98
- UpdateEventSourceMappingCommand as Nt,DeleteEventSourceMappingCommand as It,ListEventSourceMappingsCommand as Mt,
99
- FunctionResponseType as Tt,EventSourcePosition as Lt,ResourceNotFoundException as Vt}from"@aws-sdk/client-lambda";
100
- import{Logger as N,parseArn as Ht}from"@ez4/aws-common";import{Wait as ye}from"@ez4/utils";var S="AWS:Lambda/Mapping",x="aws:lambda.mapping",de=(r=>(r.DynamoDB="dynamodb",
101
- r.Queue="sqs",r))(de||{});var b=new At({}),fe=n(async(e,t)=>{N.logImport(S,e);let r=await b.send(new Mt({FunctionName:e,
102
+ urce"),bt=n(async()=>{},"updateResource"),Pt=n(async e=>{let t=e.result;t&&await ue(
103
+ t.functionName,t.statementId)},"deleteResource");var de=n(()=>{Ct(F,le())},"registerPermissionProvider");import{tryRegisterProvider as Zt}from"@ez4/aws-common";import{ReplaceResourceError as Gt}from"@ez4/aws-common";import{deepCompare as Dt,
104
+ deepEqual as qt}from"@ez4/utils";import{LambdaClient as At,GetEventSourceMappingCommand as Nt,CreateEventSourceMappingCommand as Et,
105
+ UpdateEventSourceMappingCommand as It,DeleteEventSourceMappingCommand as Mt,ListEventSourceMappingsCommand as Tt,
106
+ FunctionResponseType as Lt,EventSourcePosition as Vt,ResourceNotFoundException as Ht}from"@aws-sdk/client-lambda";
107
+ import{Logger as I,parseArn as Ut}from"@ez4/aws-common";import{Wait as fe}from"@ez4/utils";var S="AWS:Lambda/Mapping",w="aws:lambda.mapping",ye=(r=>(r.DynamoDB="dynamodb",
108
+ r.Queue="sqs",r))(ye||{});var P=new At({}),Se=n(async(e,t)=>{I.logImport(S,e);let r=await P.send(new Tt({FunctionName:e,
102
109
  EventSourceArn:t})),[o]=r.EventSourceMappings;return o?{eventId:o.UUID}:void 0},
103
- "importMapping"),Se=n(async e=>{let{sourceArn:t,functionName:r}=e;N.logCreate(S,
104
- r);let i=(await b.send(new Et({FunctionName:r,EventSourceArn:t,...Re(e)}))).UUID;
105
- return await we(i),{eventId:i}},"createMapping"),Fe=n(async(e,t)=>{let{functionName:r}=t;
106
- N.logUpdate(S,`${r} (${e})`),await b.send(new Nt({UUID:e,FunctionName:r,...Re(t)})),
107
- await we(e)},"updateMapping"),xe=n(async e=>{N.logDelete(S,e);try{return await b.
108
- send(new It({UUID:e})),!0}catch(t){if(!(t instanceof Vt))throw t;return!1}},"del\
109
- eteMapping"),Ut=n(async e=>(await b.send(new Ct({UUID:e}))).State,"getMappingSta\
110
- te"),we=n(async e=>{let t=new Set(["Enabled","Disabled"]);await ye.until(async()=>{
111
- let r=await Ut(e);return t.has(r)?!0:ye.RetryAttempt})},"waitForReadyState"),Re=n(
112
- e=>{let{sourceArn:t,enabled:r,concurrency:o,batch:i}=e,{service:s}=Ht(t);return{
113
- Enabled:r,FunctionResponseTypes:[Tt.ReportBatchItemFailures],MaximumBatchingWindowInSeconds:i?.
114
- maxWait,BatchSize:i?.size,...s==="dynamodb"&&{StartingPosition:Lt.LATEST},...s===
115
- "sqs"&&{ScalingConfig:{MaximumConcurrency:o}}}},"upsertMappingRequest");var he=n(()=>({equals:qt,create:Pe,replace:Ot,preview:kt,update:Bt,delete:Wt}),"\
116
- getMappingHandler"),qt=n((e,t)=>!!e.result&&e.result.eventId===t.result?.eventId,
117
- "equalsResource"),kt=n((e,t)=>{let r={...e.parameters,dependencies:e.dependencies},
118
- o={...t.parameters,dependencies:t.dependencies},i=Gt(r,o,{exclude:{getSourceArn:!0}});
119
- if(i.counts)return{...i,name:r.fromService}},"previewResource"),Ot=n(async(e,t,r)=>{
120
- if(t.result)throw new zt(S,e.entryId,t.entryId);return Pe(e,r)},"replaceResource"),
121
- Pe=n(async(e,t)=>{let r=e.parameters,o=P(S,"mapping",t),i=await r.getSourceArn(t);
122
- return{eventId:(await fe(o,i)??await Se({...e.parameters,functionName:o,sourceArn:i})).
123
- eventId,functionName:o,sourceArn:i}},"createResource"),Bt=n(async(e,t,r)=>{let o=e.
124
- result;if(!o)return;let i=o.sourceArn,s=P(S,"mapping",r),a=t.result?.functionName??
125
- o.functionName,c={...e.parameters,functionName:s,sourceArn:i},m={...t.parameters,
126
- functionName:a,sourceArn:i};return await $t(o.eventId,c,m),{...o,functionName:s}},
127
- "updateResource"),Wt=n(async e=>{let t=e.result;t&&await xe(t.eventId)},"deleteR\
128
- esource"),$t=n(async(e,t,r)=>{!Dt(t,r,{exclude:{getSourceArn:!0,fromService:!0}})&&
129
- await Fe(e,t)},"checkGeneralUpdates");var be=n(()=>{jt(x,he())},"registerMappingProvider");var ve=n(()=>[{account:"lambda.amazonaws.com"}],"prepareIdentityAccount");import{createPolicy as Jt,tryGetPolicy as Kt}from"@ez4/aws-identity";import{getServiceName as Xt}from"@ez4/project/library";import{getAccountId as Zt,getRegion as Qt,createPolicyDocument as _t}from"@ez4/aws-identity";var Ae=n(async e=>{let[t,r]=await Promise.all([Qt(),Zt()]);return _t([{permissions:[
110
+ "importMapping"),Fe=n(async e=>{let{sourceArn:t,functionName:r}=e;I.logCreate(S,
111
+ r);let i=(await P.send(new Et({FunctionName:r,EventSourceArn:t,...Re(e)}))).UUID;
112
+ return await ve(i),{eventId:i}},"createMapping"),xe=n(async(e,t)=>{let{functionName:r}=t;
113
+ I.logUpdate(S,`${r} (${e})`),await P.send(new It({UUID:e,FunctionName:r,...Re(t)})),
114
+ await ve(e)},"updateMapping"),we=n(async e=>{I.logDelete(S,e);try{return await P.
115
+ send(new Mt({UUID:e})),!0}catch(t){if(!(t instanceof Ht))throw t;return!1}},"del\
116
+ eteMapping"),zt=n(async e=>(await P.send(new Nt({UUID:e}))).State,"getMappingSta\
117
+ te"),ve=n(async e=>{let t=new Set(["Enabled","Disabled"]);await fe.until(async()=>{
118
+ let r=await zt(e);return t.has(r)?!0:fe.RetryAttempt})},"waitForReadyState"),Re=n(
119
+ e=>{let{sourceArn:t,enabled:r,concurrency:o,batch:i}=e,{service:a}=Ut(t);return{
120
+ Enabled:r,FunctionResponseTypes:[Lt.ReportBatchItemFailures],MaximumBatchingWindowInSeconds:i?.
121
+ maxWait,BatchSize:i?.size,...a==="dynamodb"&&{StartingPosition:Vt.LATEST},...a===
122
+ "sqs"&&{ScalingConfig:{MaximumConcurrency:o}}}},"upsertMappingRequest");var he=n(()=>({equals:kt,create:be,replace:Bt,preview:Ot,update:Wt,delete:$t}),"\
123
+ getMappingHandler"),kt=n((e,t)=>!!e.result&&e.result.eventId===t.result?.eventId,
124
+ "equalsResource"),Ot=n((e,t)=>{let r={...e.parameters,dependencies:e.dependencies},
125
+ o={...t.parameters,dependencies:t.dependencies},i=Dt(r,o,{exclude:{getSourceArn:!0}});
126
+ if(i.counts)return{...i,name:r.fromService}},"previewResource"),Bt=n(async(e,t,r)=>{
127
+ if(t.result)throw new Gt(S,e.entryId,t.entryId);return be(e,r)},"replaceResource"),
128
+ be=n(async(e,t)=>{let r=e.parameters,o=b(S,"mapping",t),i=await r.getSourceArn(t);
129
+ return{eventId:(await Se(o,i)??await Fe({...e.parameters,functionName:o,sourceArn:i})).
130
+ eventId,functionName:o,sourceArn:i}},"createResource"),Wt=n(async(e,t,r)=>{let o=e.
131
+ result;if(!o)return;let i=o.sourceArn,a=b(S,"mapping",r),s=t.result?.functionName??
132
+ o.functionName,c={...e.parameters,functionName:a,sourceArn:i},m={...t.parameters,
133
+ functionName:s,sourceArn:i};return await jt(o.eventId,c,m),{...o,functionName:a}},
134
+ "updateResource"),$t=n(async e=>{let t=e.result;t&&await we(t.eventId)},"deleteR\
135
+ esource"),jt=n(async(e,t,r)=>{!qt(t,r,{exclude:{getSourceArn:!0,fromService:!0}})&&
136
+ await xe(e,t)},"checkGeneralUpdates");var Pe=n(()=>{Zt(w,he())},"registerMappingProvider");var Ce=n(()=>[{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 Ae=n(async e=>{let[t,r]=await Promise.all([_t(),Qt()]);return Jt([{permissions:[
130
137
  "logs:CreateLogStream","logs:PutLogEvents"],resourceIds:[`arn:aws:logs:${t}:${r}\
131
- :log-group:${e}-*:*`]}])},"getPolicyDocument");var Ce=n(async e=>{let{state:t,options:r}=e,o=Xt("",r),i=`${o}-lambda-policy`;return Kt(
132
- t,i)??Jt(t,{tags:r.tags,policyDocument:await Ae(o),policyName:i})},"prepareExecu\
133
- tionPolicy");var go=n(()=>{Yt(),er(),tr(),rr("@ez4/aws-function",{"deploy:prepareIdentityAcco\
134
- unt":ve,"deploy:prepareExecutionPolicy":Ce}),oe(),ge(),be()},"registerTriggers");import{toKebabCase as nr,hashData as or}from"@ez4/utils";import{attachEntry as ir}from"@ez4/stateful";var wo=n((e,t,r,o)=>{let i=nr(o.functionName),s=or(y,t.entryId,i),a=[t.entryId];
135
- return r&&a.push(r.entryId),ir(e,{type:y,entryId:s,dependencies:a,parameters:{...o,
136
- functionName:i}})},"createFunction");import{attachEntry as sr}from"@ez4/stateful";import{hashData as Ne}from"@ez4/utils";var Ee=n(e=>e.type===F,"isPermissionState");var Io=n((e,t,r,o)=>{let i=Ne(F,t.entryId,r.entryId);return sr(e,{type:F,entryId:i,
138
+ :log-group:${e}-*:*`]}])},"getPolicyDocument");var Ne=n(async e=>{let{state:t,options:r}=e,o=Yt("",r),i=`${o}-lambda-policy`;return Xt(
139
+ t,i)??Kt(t,{tags:r.tags,policyDocument:await Ae(o),policyName:i})},"prepareExecu\
140
+ tionPolicy");var go=n(()=>{er(),tr(),rr(),nr("@ez4/aws-function",{"deploy:prepareIdentityAcco\
141
+ unt":Ce,"deploy:prepareExecutionPolicy":Ne}),ie(),de(),Pe()},"registerTriggers");import{toKebabCase as or,hashData as ir}from"@ez4/utils";import{attachEntry as ar}from"@ez4/stateful";var wo=n((e,t,r,o)=>{let i=or(o.functionName),a=ir(y,t.entryId,i),s=[t.entryId];
142
+ return r&&s.push(r.entryId),ar(e,{type:y,entryId:a,dependencies:s,parameters:{...o,
143
+ functionName:i}})},"createFunction");import{attachEntry as sr}from"@ez4/stateful";import{hashData as Ie}from"@ez4/utils";var Ee=n(e=>e.type===F,"isPermissionState");var Io=n((e,t,r,o)=>{let i=Ie(F,t.entryId,r.entryId);return sr(e,{type:F,entryId:i,
137
144
  dependencies:[t.entryId,r.entryId],parameters:o})},"createPermission"),Mo=n((e,t,r)=>{
138
- let o=Ne(F,t.entryId,r.entryId),i=e[o];return i&&Ee(i)?i:null},"getPermission");import{hashData as ar}from"@ez4/utils";import{attachEntry as pr}from"@ez4/stateful";var zo=n((e,t,r,o)=>{let i=ar(x,t.entryId,r.entryId);return pr(e,{type:x,entryId:i,
139
- dependencies:[t.entryId,r.entryId],parameters:o})},"createMapping");var ko=n(e=>e.type===x,"isMappingState");var Wo=n((e,t,r)=>`arn:aws:lambda:${e}:${t}:function:${r}`,"buildFunctionArn");import{ArchitectureType as cr,RuntimeType as mr}from"@ez4/project";var ur;(s=>(s.
140
- LogRetention=90,s.Architecture=cr.x86,s.Runtime=mr.Node24,s.Timeout=90,s.Memory=
141
- 192))(ur||={});export{Le as FunctionArchitecture,ur as FunctionDefaults,Me as FunctionRuntime,p as FunctionServiceName,
142
- y as FunctionServiceType,de as MappingService,S as MappingServiceName,x as MappingServiceType,
145
+ let o=Ie(F,t.entryId,r.entryId),i=e[o];return i&&Ee(i)?i:null},"getPermission");import{hashData as pr}from"@ez4/utils";import{attachEntry as cr}from"@ez4/stateful";var zo=n((e,t,r,o)=>{let i=pr(w,t.entryId,r.entryId);return cr(e,{type:w,entryId:i,
146
+ dependencies:[t.entryId,r.entryId],parameters:o})},"createMapping");var ko=n(e=>e.type===w,"isMappingState");var Wo=n((e,t,r)=>`arn:aws:lambda:${e}:${t}:function:${r}`,"buildFunctionArn");import{ArchitectureType as mr,RuntimeType as ur}from"@ez4/project";var lr;(a=>(a.
147
+ LogRetention=90,a.Architecture=mr.x86,a.Runtime=ur.Node24,a.Timeout=90,a.Memory=
148
+ 192))(lr||={});export{Ve as FunctionArchitecture,lr as FunctionDefaults,Te as FunctionRuntime,p as FunctionServiceName,
149
+ y as FunctionServiceType,ye as MappingService,S as MappingServiceName,w as MappingServiceType,
143
150
  h as PermissionServiceName,F as PermissionServiceType,Wo as buildFunctionArn,wo as createFunction,
144
151
  zo as createMapping,Io as createPermission,T as getFunctionArchitecture,cn as getFunctionArn,
145
- P as getFunctionName,M as getFunctionRuntime,pn as getFunctionState,Mo as getPermission,
146
- se as isFunctionState,ko as isMappingState,go as registerTriggers,dt as tryGetFunctionArn,
147
- an as tryGetFunctionState};
152
+ b as getFunctionName,M as getFunctionRuntime,pn as getFunctionState,Mo as getPermission,
153
+ se as isFunctionState,ko as isMappingState,go as registerTriggers,yt as tryGetFunctionArn,
154
+ sn as tryGetFunctionState};
148
155
  //# sourceMappingURL=main.mjs.map
@@ -3,7 +3,7 @@ export declare namespace FunctionDefaults {
3
3
  /**
4
4
  * Default log retention in days.
5
5
  */
6
- const LogRetention = 90;
6
+ const LogRetention = 15;
7
7
  /**
8
8
  * Default function architecture.
9
9
  */
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.38.0",
4
+ "version": "0.39.0",
5
5
  "author": "Silas B.",
6
6
  "license": "MIT",
7
7
  "type": "module",
@@ -43,13 +43,13 @@
43
43
  },
44
44
  "dependencies": {
45
45
  "@aws-sdk/client-lambda": "^3.958.0",
46
- "@ez4/aws-common": "^0.38.0",
47
- "@ez4/aws-identity": "^0.38.0",
48
- "@ez4/aws-logs": "^0.38.0",
49
- "@ez4/project": "^0.38.0",
50
- "@ez4/common": "^0.38.0",
51
- "@ez4/stateful": "^0.38.0",
52
- "@ez4/utils": "^0.38.0",
46
+ "@ez4/aws-common": "^0.39.0",
47
+ "@ez4/aws-identity": "^0.39.0",
48
+ "@ez4/aws-logs": "^0.39.0",
49
+ "@ez4/project": "^0.39.0",
50
+ "@ez4/common": "^0.39.0",
51
+ "@ez4/stateful": "^0.39.0",
52
+ "@ez4/utils": "^0.39.0",
53
53
  "@types/adm-zip": "^0.5.5",
54
54
  "adm-zip": "^0.5.14"
55
55
  }