@ez4/aws-function 0.21.0 → 0.23.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.
Files changed (3) hide show
  1. package/dist/main.cjs +143 -126
  2. package/dist/main.mjs +134 -116
  3. package/package.json +12 -12
package/dist/main.cjs CHANGED
@@ -1,131 +1,148 @@
1
- "use strict";var ke=Object.create;var A=Object.defineProperty;var Qe=Object.getOwnPropertyDescriptor;var Je=Object.getOwnPropertyNames;var Ke=Object.getPrototypeOf,_e=Object.prototype.hasOwnProperty;var Xe=(e,t)=>{for(var r in t)A(e,r,{get:t[r],enumerable:!0})},Z=(e,t,r,n)=>{if(t&&
2
- typeof t=="object"||typeof t=="function")for(let o of Je(t))!_e.call(e,o)&&o!==r&&
3
- A(e,o,{get:()=>t[o],enumerable:!(n=Qe(t,o))||n.enumerable});return e};var Ye=(e,t,r)=>(r=e!=null?ke(Ke(e)):{},Z(t||!e||!e.__esModule?A(r,"default",{value:e,
4
- enumerable:!0}):r,e)),et=e=>Z(A({},"__esModule",{value:!0}),e);var Tt={};Xe(Tt,{FunctionServiceName:()=>a,FunctionServiceType:()=>l,MappingService:()=>q,
5
- MappingServiceName:()=>g,MappingServiceType:()=>w,PermissionServiceName:()=>x,PermissionServiceType:()=>d,
6
- createFunction:()=>Et,createMapping:()=>Mt,createPermission:()=>ht,getFunctionArn:()=>gt,
7
- getFunctionName:()=>R,getFunctionState:()=>lt,getPermission:()=>It,isFunctionState:()=>B,
8
- isMappingState:()=>Nt,registerTriggers:()=>bt,tryGetFunctionArn:()=>ce,tryGetFunctionState:()=>ut});
9
- module.exports=et(Tt);var Le=require("@ez4/aws-common"),ze=require("@ez4/aws-identity"),Ge=require("@ez4/aws-logs"),
10
- Ve=require("@ez4/project/library");var ae=require("@ez4/aws-common");var S=require("@ez4/aws-common"),h=require("@ez4/utils"),H=require("@ez4/aws-logs"),
11
- j=require("@ez4/aws-identity");var i=require("@aws-sdk/client-lambda"),p=require("@ez4/aws-common");var k=require("@ez4/aws-common"),Q=require("@ez4/utils");var a="AWS:Lambda/Function",l="aws:lambda.function";var tt=/[a-z][\w]+/i,rt=e=>tt.test(e),D=e=>{for(let t in e)if(!rt(t))throw new k.InvalidParameterError(
12
- a,`${t} is an invalid variable name .`)},b=e=>{let t={};for(let r in e)t[r]=(0,Q.hashData)(
13
- e[r]);return t};var J=Ye(require("adm-zip"),1),K=require("node:fs/promises"),_=async(e,t)=>{let r=new J.default,
14
- n=await(0,K.readFile)(e);return r.addFile(t,n),r.toBufferPromise()};var y=new i.LambdaClient({}),E={minDelay:15,maxWaitTime:1800,maxDelay:60,client:y},
15
- X=async(e,t)=>{p.Logger.logImport(a,e);try{let r=await y.send(new i.GetFunctionCommand(
16
- {FunctionName:e,Qualifier:t})),n=r.Configuration.Version,o=r.Configuration.FunctionArn;
17
- return{functionVersion:n,functionArn:o}}catch(r){if(!(r instanceof i.ResourceNotFoundException))
18
- throw r;return}},Y=async e=>{let{functionName:t,variables:r}=e;p.Logger.logCreate(
19
- a,t),r&&D(r);let n=oe(e.handlerName),o=await ne(e.sourceFile),s=await(0,p.waitCreation)(
20
- ()=>y.send(new i.CreateFunctionCommand({FunctionName:e.functionName,Description:e.
21
- description,MemorySize:e.memory,Timeout:e.timeout,Role:e.roleArn,Handler:n,Runtime:"\
22
- nodejs22.x",PackageType:"Zip",LoggingConfig:{LogGroup:e.logGroup,ApplicationLogLevel:e.
23
- debug?i.ApplicationLogLevel.Debug:i.ApplicationLogLevel.Warn,SystemLogLevel:i.SystemLogLevel.
24
- Warn,LogFormat:i.LogFormat.Json},Code:{ZipFile:o},Environment:{Variables:r},Tags:{
25
- ...e.tags,ManagedBy:"EZ4"}})));p.Logger.logWait(a,t),await(0,i.waitUntilFunctionActive)(
26
- E,{FunctionName:t});let m=s.FunctionArn;return e.publish?{functionVersion:await te(
27
- t),functionArn:m}:{functionArn:m}},L=async(e,t)=>{p.Logger.logUpdate(a,`${e} sou\
28
- rce code`);let r=await ne(t.sourceFile),n=await y.send(new i.UpdateFunctionCodeCommand(
29
- {FunctionName:e,Publish:t.publish,ZipFile:r}));p.Logger.logWait(a,e),await(0,i.waitUntilFunctionUpdated)(
30
- E,{FunctionName:e});let o=n.FunctionArn;return t.publish?{functionVersion:await te(
31
- e),functionArn:o}:{functionArn:o}},z=async(e,t)=>{let{handlerName:r,variables:n}=t;
32
- p.Logger.logUpdate(a,`${e} configuration`),n&&D(n),await y.send(new i.UpdateFunctionConfigurationCommand(
1
+ "use strict";var Qe=Object.create;var A=Object.defineProperty;var Je=Object.getOwnPropertyDescriptor;var Ke=Object.getOwnPropertyNames;var _e=Object.getPrototypeOf,Xe=Object.prototype.hasOwnProperty;var n=(e,t)=>A(e,"name",{value:t,configurable:!0});var Ye=(e,t)=>{for(var r in t)A(e,r,{get:t[r],enumerable:!0})},k=(e,t,r,o)=>{if(t&&
2
+ typeof t=="object"||typeof t=="function")for(let i of Ke(t))!Xe.call(e,i)&&i!==r&&
3
+ A(e,i,{get:()=>t[i],enumerable:!(o=Je(t,i))||o.enumerable});return e};var et=(e,t,r)=>(r=e!=null?Qe(_e(e)):{},k(t||!e||!e.__esModule?A(r,"default",{value:e,
4
+ enumerable:!0}):r,e)),tt=e=>k(A({},"__esModule",{value:!0}),e);var Ut={};Ye(Ut,{FunctionServiceName:()=>p,FunctionServiceType:()=>g,MappingService:()=>$,
5
+ MappingServiceName:()=>f,MappingServiceType:()=>x,PermissionServiceName:()=>P,PermissionServiceType:()=>S,
6
+ createFunction:()=>ht,createMapping:()=>Nt,createPermission:()=>It,getFunctionArn:()=>ft,
7
+ getFunctionName:()=>C,getFunctionState:()=>gt,getPermission:()=>Mt,isFunctionState:()=>W,
8
+ isMappingState:()=>Tt,registerTriggers:()=>Et,tryGetFunctionArn:()=>me,tryGetFunctionState:()=>lt});
9
+ module.exports=tt(Ut);var ze=require("@ez4/aws-common"),Ge=require("@ez4/aws-identity"),Ve=require("@ez4/aws-logs"),
10
+ He=require("@ez4/project/library");var pe=require("@ez4/aws-common");var F=require("@ez4/aws-common"),I=require("@ez4/utils"),j=require("@ez4/aws-logs"),
11
+ O=require("@ez4/aws-identity");var s=require("@aws-sdk/client-lambda"),c=require("@ez4/aws-common");var Q=require("@ez4/aws-common"),J=require("@ez4/utils");var p="AWS:Lambda/Function",g="aws:lambda.function";var rt=/[a-z][\w]+/i,nt=n(e=>rt.test(e),"isValidName"),L=n(e=>{for(let t in e)if(!nt(
12
+ t))throw new Q.InvalidParameterError(p,`${t} is an invalid variable name .`)},"a\
13
+ ssertVariables"),E=n(e=>{let t={};for(let r in e)t[r]=(0,J.hashData)(e[r]);return t},
14
+ "protectVariables");var K=et(require("adm-zip"),1),_=require("node:fs/promises");var X=n(async(e,t)=>{let r=new K.default,o=await(0,_.readFile)(e);return r.addFile(
15
+ t,o),r.toBufferPromise()},"getZipBuffer");var d=new s.LambdaClient({}),h={minDelay:15,maxWaitTime:1800,maxDelay:60,client:d},
16
+ Y=n(async(e,t)=>{c.Logger.logImport(p,e);try{let r=await d.send(new s.GetFunctionCommand(
17
+ {FunctionName:e,Qualifier:t})),o=r.Configuration.Version,i=r.Configuration.FunctionArn;
18
+ return{functionVersion:o,functionArn:i}}catch(r){if(!(r instanceof s.ResourceNotFoundException))
19
+ throw r;return}},"importFunction"),ee=n(async e=>{let{functionName:t,variables:r}=e;
20
+ c.Logger.logCreate(p,t),r&&L(r);let o=ie(e.handlerName),i=await oe(e.sourceFile),
21
+ a=await(0,c.waitCreation)(()=>d.send(new s.CreateFunctionCommand({FunctionName:e.
22
+ functionName,Description:e.description,MemorySize:e.memory,Timeout:e.timeout,Role:e.
23
+ roleArn,Handler:o,Runtime:"nodejs22.x",PackageType:"Zip",LoggingConfig:{LogGroup:e.
24
+ logGroup,ApplicationLogLevel:e.debug?s.ApplicationLogLevel.Debug:s.ApplicationLogLevel.
25
+ Warn,SystemLogLevel:s.SystemLogLevel.Warn,LogFormat:s.LogFormat.Json},Code:{ZipFile:i},
26
+ Environment:{Variables:r},Tags:{...e.tags,ManagedBy:"EZ4"}})));c.Logger.logWait(
27
+ p,t),await(0,s.waitUntilFunctionActive)(h,{FunctionName:t});let u=a.FunctionArn;
28
+ return e.publish?{functionVersion:await re(t),functionArn:u}:{functionArn:u}},"c\
29
+ reateFunction"),z=n(async(e,t)=>{c.Logger.logUpdate(p,`${e} source code`);let r=await oe(
30
+ t.sourceFile),o=await d.send(new s.UpdateFunctionCodeCommand({FunctionName:e,Publish:t.
31
+ publish,ZipFile:r}));c.Logger.logWait(p,e),await(0,s.waitUntilFunctionUpdated)(h,
32
+ {FunctionName:e});let i=o.FunctionArn;return t.publish?{functionVersion:await re(
33
+ e),functionArn:i}:{functionArn:i}},"updateSourceCode"),G=n(async(e,t)=>{let{handlerName:r,
34
+ variables:o}=t;c.Logger.logUpdate(p,`${e} configuration`),o&&L(o),await d.send(new s.UpdateFunctionConfigurationCommand(
33
35
  {FunctionName:e,Description:t.description,MemorySize:t.memory,Timeout:t.timeout,
34
- Role:t.roleArn,Runtime:"nodejs22.x",...r&&{Handler:oe(r)},LoggingConfig:{LogGroup:t.
35
- logGroup,ApplicationLogLevel:t.debug?i.ApplicationLogLevel.Debug:i.ApplicationLogLevel.
36
- Warn,SystemLogLevel:i.SystemLogLevel.Warn,LogFormat:i.LogFormat.Json},Environment:{
37
- Variables:n}})),p.Logger.logWait(a,e),await(0,i.waitUntilFunctionUpdated)(E,{FunctionName:e})},
38
- ee=async e=>{p.Logger.logDelete(a,e),await(0,p.waitDeletion)(async()=>{try{return await y.
39
- send(new i.DeleteFunctionCommand({FunctionName:e})),!0}catch(t){if(!(t instanceof
40
- i.ResourceNotFoundException))throw t;return!1}})},te=async e=>{p.Logger.logPublish(
41
- a,e);let t=await y.send(new i.PublishVersionCommand({FunctionName:e}));p.Logger.
42
- logWait(a,e);let r=t.Version;return await(0,i.waitUntilPublishedVersionActive)(E,
43
- {FunctionName:e,Qualifier:r}),r},G=async(e,t)=>{let r=(0,p.tryParseArn)(e)?.resourceName??
44
- e;p.Logger.logTag(a,r),await y.send(new i.TagResourceCommand({Resource:e,Tags:{...t,
45
- ManagedBy:"EZ4"}}))},re=async(e,t)=>{let r=(0,p.tryParseArn)(e)?.resourceName??e;
46
- p.Logger.logUntag(a,r),await y.send(new i.UntagResourceCommand({Resource:e,TagKeys:t}))},
47
- ne=e=>_(e,"main.mjs"),oe=e=>`main.${e}`;var ie=()=>({equals:nt,create:se,replace:it,preview:ot,update:st,delete:at}),nt=(e,t)=>!!e.
48
- result&&e.result.functionArn===t.result?.functionArn,ot=async(e,t)=>{let r=e.parameters,
49
- n=t.parameters,o=(0,h.deepCompare)({...r,dependencies:e.dependencies,sourceHash:await(0,S.getBundleHash)(
50
- ...r.getFunctionFiles()),...r.variables&&{variables:b(r.variables)}},{...n,dependencies:t.
51
- dependencies,sourceHash:t.result?.sourceHash});if(o.counts)return{...o,name:r.functionName}},
52
- it=async(e,t,r)=>{if(t.result)throw new S.ReplaceResourceError(a,e.entryId,t.entryId);
53
- return se(e,r)},se=async(e,t)=>{let r=e.parameters,n=r.functionName,o=(0,j.getRoleArn)(
54
- a,n,t),s=(0,H.getLogGroupName)(a,n,t),[m,u]=await Promise.all([(0,S.getBundleHash)(
55
- ...r.getFunctionFiles()),r.getFunctionBundle(t)]),f=await X(n);if(f)return await z(
56
- n,{...r,logGroup:s,roleArn:o}),await L(n,{publish:!1,sourceFile:u}),await G(f.functionArn,
57
- {...r.tags}),V(e),{functionArn:f.functionArn,sourceHash:m,logGroup:s,roleArn:o};
58
- let U=await Y({...r,publish:!0,sourceFile:u,logGroup:s,roleArn:o});return V(e),{
59
- functionArn:U.functionArn,sourceHash:m,logGroup:s,roleArn:o}},st=async(e,t,r)=>{
60
- let{parameters:n,result:o}=e;if(!o)return;let s=n.functionName,m=(0,j.getRoleArn)(
61
- a,s,r),u=t.result?.roleArn??m,f=(0,H.getLogGroupName)(a,s,r),U=t.result?.logGroup??
62
- f,qe={...n,roleArn:m,logGroup:f},$e={...t.parameters,roleArn:u,logGroup:U};await pt(
63
- s,qe,$e),await ct(o.functionArn,n,t.parameters);let Ze=await mt(s,n,t.result,r);
64
- return V(e),{...o,...Ze,logGroup:f,roleArn:m}},at=async e=>{let{result:t,parameters:r}=e;
65
- t&&await ee(r.functionName)},V=e=>{let{parameters:t}=e;return t.variables&&(t.variables=
66
- b(t.variables)),e},pt=async(e,t,r)=>{let n={...t,...t.variables&&{variables:b(t.
67
- variables)}};!(0,h.deepEqual)(n,r,{exclude:{sourceFile:!0,functionName:!0,tags:!0}})&&
68
- await z(e,t)},ct=async(e,t,r)=>{await(0,S.applyTagUpdates)(t.tags,r.tags,n=>G(e,
69
- n),n=>re(e,n))},mt=async(e,t,r,n)=>{let o=await(0,S.getBundleHash)(...t.getFunctionFiles()),
70
- s=r?.sourceHash;if(o===s&&!n.force)return r;let m=await t.getFunctionBundle(n),{
71
- functionVersion:u}=await L(e,{publish:!r?.functionVersion,sourceFile:m});return{
72
- sourceHash:o,...u&&{functionVersion:u}}};var pe=()=>{(0,ae.registerProvider)(l,ie())};var de=require("@ez4/aws-common");var ge=require("@ez4/aws-common");var O=require("@ez4/aws-common");var I=class extends Error{constructor(t){super(`Function ${t} wasn't found.`)}};var B=e=>e.type===l,ut=(e,t,r)=>{try{let n=e.getServiceState(t,r);if(B(n))return n}catch{}},
73
- lt=(e,t,r)=>{let n=e.getServiceState(t,r);if(!B(n))throw new I(t);return n},R=(e,t,r)=>{
74
- let n=r.getDependencies(l).at(0)?.parameters;if(!n?.functionName)throw new O.IncompleteResourceError(
75
- e,t,"functionName");return n.functionName},ce=e=>e.getDependencies(l)[0]?.result?.
76
- functionArn,gt=(e,t,r)=>{let n=ce(r);if(!n)throw new O.IncompleteResourceError(e,
77
- t,"functionArn");return n};var F=require("@aws-sdk/client-lambda"),W=require("@ez4/aws-common");var x="AWS:Lambda/Permission",d="aws:lambda.permission";var me=new F.LambdaClient({}),ue=async e=>{W.Logger.logCreate(x,e.functionName);
78
- let t=e.statementId??`SID${Date.now()}`;return await me.send(new F.AddPermissionCommand(
36
+ Role:t.roleArn,Runtime:"nodejs22.x",...r&&{Handler:ie(r)},LoggingConfig:{LogGroup:t.
37
+ logGroup,ApplicationLogLevel:t.debug?s.ApplicationLogLevel.Debug:s.ApplicationLogLevel.
38
+ Warn,SystemLogLevel:s.SystemLogLevel.Warn,LogFormat:s.LogFormat.Json},Environment:{
39
+ Variables:o}})),c.Logger.logWait(p,e),await(0,s.waitUntilFunctionUpdated)(h,{FunctionName:e})},
40
+ "updateConfiguration"),te=n(async e=>{c.Logger.logDelete(p,e),await(0,c.waitDeletion)(
41
+ async()=>{try{return await d.send(new s.DeleteFunctionCommand({FunctionName:e})),
42
+ !0}catch(t){if(!(t instanceof s.ResourceNotFoundException))throw t;return!1}})},
43
+ "deleteFunction"),re=n(async e=>{c.Logger.logPublish(p,e);let t=await d.send(new s.PublishVersionCommand(
44
+ {FunctionName:e}));c.Logger.logWait(p,e);let r=t.Version;return await(0,s.waitUntilPublishedVersionActive)(
45
+ h,{FunctionName:e,Qualifier:r}),r},"publishFunction"),V=n(async(e,t)=>{let r=(0,c.tryParseArn)(
46
+ e)?.resourceName??e;c.Logger.logTag(p,r),await d.send(new s.TagResourceCommand({
47
+ Resource:e,Tags:{...t,ManagedBy:"EZ4"}}))},"tagFunction"),ne=n(async(e,t)=>{let r=(0,c.tryParseArn)(
48
+ e)?.resourceName??e;c.Logger.logUntag(p,r),await d.send(new s.UntagResourceCommand(
49
+ {Resource:e,TagKeys:t}))},"untagFunction"),oe=n(e=>X(e,"main.mjs"),"getSourceZip\
50
+ File"),ie=n(e=>`main.${e}`,"getSourceHandlerName");var se=n(()=>({equals:ot,create:ae,replace:st,preview:it,update:at,delete:pt}),"\
51
+ getFunctionHandler"),ot=n((e,t)=>!!e.result&&e.result.functionArn===t.result?.functionArn,
52
+ "equalsResource"),it=n(async(e,t)=>{let r=e.parameters,o=t.parameters,i=(0,I.deepCompare)(
53
+ {...r,dependencies:e.dependencies,sourceHash:await(0,F.getBundleHash)(...r.getFunctionFiles()),
54
+ ...r.variables&&{variables:E(r.variables)}},{...o,dependencies:t.dependencies,sourceHash:t.
55
+ result?.sourceHash});if(i.counts)return{...i,name:r.functionName}},"previewResou\
56
+ rce"),st=n(async(e,t,r)=>{if(t.result)throw new F.ReplaceResourceError(p,e.entryId,
57
+ t.entryId);return ae(e,r)},"replaceResource"),ae=n(async(e,t)=>{let r=e.parameters,
58
+ o=r.functionName,i=(0,O.getRoleArn)(p,o,t),a=(0,j.getLogGroupName)(p,o,t),[u,l]=await Promise.
59
+ all([(0,F.getBundleHash)(...r.getFunctionFiles()),r.getFunctionBundle(t)]),y=await Y(
60
+ o);if(y)return await G(o,{...r,logGroup:a,roleArn:i}),await z(o,{publish:!1,sourceFile:l}),
61
+ await V(y.functionArn,{...r.tags}),H(e),{functionArn:y.functionArn,sourceHash:u,
62
+ logGroup:a,roleArn:i};let D=await ee({...r,publish:!0,sourceFile:l,logGroup:a,roleArn:i});
63
+ return H(e),{functionArn:D.functionArn,sourceHash:u,logGroup:a,roleArn:i}},"crea\
64
+ teResource"),at=n(async(e,t,r)=>{let{parameters:o,result:i}=e;if(!i)return;let a=o.
65
+ functionName,u=(0,O.getRoleArn)(p,a,r),l=t.result?.roleArn??u,y=(0,j.getLogGroupName)(
66
+ p,a,r),D=t.result?.logGroup??y,$e={...o,roleArn:u,logGroup:y},Ze={...t.parameters,
67
+ roleArn:l,logGroup:D};await ct(a,$e,Ze),await mt(i.functionArn,o,t.parameters);let ke=await ut(
68
+ a,o,t.result,r);return H(e),{...i,...ke,logGroup:y,roleArn:u}},"updateResource"),
69
+ pt=n(async e=>{let{result:t,parameters:r}=e;t&&await te(r.functionName)},"delete\
70
+ Resource"),H=n(e=>{let{parameters:t}=e;return t.variables&&(t.variables=E(t.variables)),
71
+ e},"lockSensitiveData"),ct=n(async(e,t,r)=>{let o={...t,...t.variables&&{variables:E(
72
+ t.variables)}};!(0,I.deepEqual)(o,r,{exclude:{sourceFile:!0,functionName:!0,tags:!0}})&&
73
+ await G(e,t)},"checkConfigurationUpdates"),mt=n(async(e,t,r)=>{await(0,F.applyTagUpdates)(
74
+ t.tags,r.tags,o=>V(e,o),o=>ne(e,o))},"checkTagUpdates"),ut=n(async(e,t,r,o)=>{let i=await(0,F.getBundleHash)(
75
+ ...t.getFunctionFiles()),a=r?.sourceHash;if(i===a&&!o.force)return r;let u=await t.
76
+ getFunctionBundle(o),{functionVersion:l}=await z(e,{publish:!r?.functionVersion,
77
+ sourceFile:u});return{sourceHash:i,...l&&{functionVersion:l}}},"checkSourceCodeU\
78
+ pdates");var ce=n(()=>{(0,pe.registerProvider)(g,se())},"registerFunctionProvider");var Se=require("@ez4/aws-common");var fe=require("@ez4/aws-common");var B=require("@ez4/aws-common");var M=class extends Error{static{n(this,"FunctionNotFoundError")}constructor(t){
79
+ super(`Function ${t} wasn't found.`)}};var W=n(e=>e.type===g,"isFunctionState"),lt=n((e,t,r)=>{try{let o=e.getServiceState(
80
+ t,r);if(W(o))return o}catch{}},"tryGetFunctionState"),gt=n((e,t,r)=>{let o=e.getServiceState(
81
+ t,r);if(!W(o))throw new M(t);return o},"getFunctionState"),C=n((e,t,r)=>{let o=r.
82
+ getDependencies(g).at(0)?.parameters;if(!o?.functionName)throw new B.IncompleteResourceError(
83
+ e,t,"functionName");return o.functionName},"getFunctionName"),me=n(e=>e.getDependencies(
84
+ g)[0]?.result?.functionArn,"tryGetFunctionArn"),ft=n((e,t,r)=>{let o=me(r);if(!o)
85
+ throw new B.IncompleteResourceError(e,t,"functionArn");return o},"getFunctionArn");var w=require("@aws-sdk/client-lambda"),q=require("@ez4/aws-common");var P="AWS:Lambda/Permission",S="aws:lambda.permission";var ue=new w.LambdaClient({}),le=n(async e=>{q.Logger.logCreate(P,e.functionName);
86
+ let t=e.statementId??`SID${Date.now()}`;return await ue.send(new w.AddPermissionCommand(
79
87
  {StatementId:t,FunctionName:e.functionName,SourceArn:e.sourceArn,Principal:e.principal,
80
- Action:e.action})),{statementId:t}},le=async(e,t)=>{W.Logger.logDelete(x,e);try{
81
- return await me.send(new F.RemovePermissionCommand({FunctionName:e,StatementId:t})),
82
- !0}catch(r){if(!(r instanceof F.ResourceNotFoundException))throw r;return!1}};var fe=()=>({equals:ft,create:ye,replace:dt,preview:yt,update:St,delete:Ft}),ft=(e,t)=>!!e.
83
- result&&e.result.functionName===t.result?.functionName,yt=async(e,t)=>{},dt=async(e,t,r)=>{
84
- if(t.result)throw new ge.ReplaceResourceError(x,e.entryId,t.entryId);return ye(e,
85
- r)},ye=async(e,t)=>{let r=e.parameters,n=R(x,"permission",t),o=await r.getPermission(
86
- t);return{statementId:(await ue({functionName:n,principal:o.principal,sourceArn:o.
87
- sourceArn,action:"lambda:InvokeFunction"})).statementId,functionName:n}},St=async()=>{},
88
- Ft=async e=>{let t=e.result;t&&await le(t.functionName,t.statementId)};var Se=()=>{(0,de.registerProvider)(d,fe())};var he=require("@ez4/aws-common");var Ae=require("@ez4/aws-common"),M=require("@ez4/utils");var c=require("@aws-sdk/client-lambda"),P=require("@ez4/aws-common"),Fe=require("@ez4/utils");var g="AWS:Lambda/Mapping",w="aws:lambda.mapping",q=(r=>(r.DynamoDB="dynamodb",r.
89
- Queue="sqs",r))(q||{});var v=new c.LambdaClient({}),we=async(e,t)=>{P.Logger.logImport(g,e);let r=await v.
90
- send(new c.ListEventSourceMappingsCommand({FunctionName:e,EventSourceArn:t})),[n]=r.
91
- EventSourceMappings;return n?{eventId:n.UUID}:void 0},xe=async e=>{let{sourceArn:t,
92
- functionName:r}=e;P.Logger.logCreate(g,r);let o=(await v.send(new c.CreateEventSourceMappingCommand(
93
- {FunctionName:r,EventSourceArn:t,...ve(e)}))).UUID;return await Ce(o),{eventId:o}},
94
- Pe=async(e,t)=>{let{functionName:r}=t;P.Logger.logUpdate(g,`${r} (${e})`),await v.
95
- send(new c.UpdateEventSourceMappingCommand({UUID:e,FunctionName:r,...ve(t)})),await Ce(
96
- e)},Re=async e=>{P.Logger.logDelete(g,e);try{return await v.send(new c.DeleteEventSourceMappingCommand(
97
- {UUID:e})),!0}catch(t){if(!(t instanceof c.ResourceNotFoundException))throw t;return!1}},
98
- wt=async e=>(await v.send(new c.GetEventSourceMappingCommand({UUID:e}))).State,Ce=async e=>{
99
- let t=new Set(["Enabled","Disabled"]);await(0,Fe.waitFor)(async()=>{let r=await wt(
100
- e);return t.has(r)})},ve=e=>{let{sourceArn:t,enabled:r,concurrency:n,batch:o}=e,
101
- {service:s}=(0,P.parseArn)(t);return{Enabled:r,FunctionResponseTypes:[c.FunctionResponseType.
102
- ReportBatchItemFailures],MaximumBatchingWindowInSeconds:o?.maxWait,BatchSize:o?.
103
- size,...s==="dynamodb"&&{StartingPosition:c.EventSourcePosition.LATEST},...s==="\
104
- sqs"&&{ScalingConfig:{MaximumConcurrency:n}}}};var be=()=>({equals:xt,create:Ee,replace:Rt,preview:Pt,update:Ct,delete:vt}),xt=(e,t)=>!!e.
105
- result&&e.result.eventId===t.result?.eventId,Pt=async(e,t)=>{let r={...e.parameters,
106
- dependencies:e.dependencies},n={...t.parameters,dependencies:t.dependencies},o=(0,M.deepCompare)(
107
- r,n,{exclude:{getSourceArn:!0}});if(o.counts)return{...o,name:r.fromService}},Rt=async(e,t,r)=>{
108
- if(t.result)throw new Ae.ReplaceResourceError(g,e.entryId,t.entryId);return Ee(e,
109
- r)},Ee=async(e,t)=>{let r=e.parameters,n=R(g,"mapping",t),o=await r.getSourceArn(
110
- t);return{eventId:(await we(n,o)??await xe({...e.parameters,functionName:n,sourceArn:o})).
111
- eventId,functionName:n,sourceArn:o}},Ct=async(e,t,r)=>{let n=e.result;if(!n)return;
112
- let o=n.sourceArn,s=R(g,"mapping",r),m=t.result?.functionName??n.functionName,u={
113
- ...e.parameters,functionName:s,sourceArn:o},f={...t.parameters,functionName:m,sourceArn:o};
114
- return await At(n.eventId,u,f),{...n,functionName:s}},vt=async e=>{let t=e.result;
115
- t&&await Re(t.eventId)},At=async(e,t,r)=>{!(0,M.deepEqual)(t,r,{exclude:{getSourceArn:!0,
116
- fromService:!0}})&&await Pe(e,t)};var Ie=()=>{(0,he.registerProvider)(w,be())};var Me=()=>[{account:"lambda.amazonaws.com"}];var N=require("@ez4/aws-identity"),Te=require("@ez4/project/library");var C=require("@ez4/aws-identity"),Ne=async e=>{let[t,r]=await Promise.all([(0,C.getRegion)(),
117
- (0,C.getAccountId)()]);return(0,C.createPolicyDocument)([{permissions:["logs:Cre\
118
- ateLogStream","logs:PutLogEvents"],resourceIds:[`arn:aws:logs:${t}:${r}:log-grou\
119
- p:${e}-*:*`]}])};var Ue=async e=>{let{state:t,options:r}=e,n=(0,Te.getServiceName)("",r),o=`${n}-\
120
- lambda-policy`;return(0,N.tryGetPolicy)(t,o)??(0,N.createPolicy)(t,{tags:r.tags,
121
- policyDocument:await Ne(n),policyName:o})};var De=!1,bt=()=>{De||((0,Le.registerTriggers)(),(0,ze.registerTriggers)(),(0,Ge.registerTriggers)(),
122
- (0,Ve.createTrigger)("@ez4/aws-function",{"deploy:prepareIdentityAccount":Me,"de\
123
- ploy:prepareExecutionPolicy":Ue}),pe(),Se(),Ie(),De=!0)};var T=require("@ez4/utils"),He=require("@ez4/stateful");var Et=(e,t,r,n)=>{let o=(0,T.toKebabCase)(n.functionName),s=(0,T.hashData)(l,t.
124
- entryId,o),m=[t.entryId];return r&&m.push(r.entryId),(0,He.attachEntry)(e,{type:l,
125
- entryId:s,dependencies:m,parameters:{...n,functionName:o}})};var Oe=require("@ez4/stateful"),$=require("@ez4/utils");var je=e=>e.type===d;var ht=(e,t,r,n)=>{let o=(0,$.hashData)(d,t.entryId,r.entryId);return(0,Oe.attachEntry)(
126
- e,{type:d,entryId:o,dependencies:[t.entryId,r.entryId],parameters:n})},It=(e,t,r)=>{
127
- let n=(0,$.hashData)(d,t.entryId,r.entryId),o=e[n];return o&&je(o)?o:null};var Be=require("@ez4/utils"),We=require("@ez4/stateful");var Mt=(e,t,r,n)=>{let o=(0,Be.hashData)(w,t.entryId,r.entryId);return(0,We.attachEntry)(
128
- e,{type:w,entryId:o,dependencies:[t.entryId,r.entryId],parameters:n})};var Nt=e=>e.type===w;0&&(module.exports={FunctionServiceName,FunctionServiceType,MappingService,MappingServiceName,
88
+ Action:e.action})),{statementId:t}},"createPermission"),ge=n(async(e,t)=>{q.Logger.
89
+ logDelete(P,e);try{return await ue.send(new w.RemovePermissionCommand({FunctionName:e,
90
+ StatementId:t})),!0}catch(r){if(!(r instanceof w.ResourceNotFoundException))throw r;
91
+ return!1}},"deletePermission");var ye=n(()=>({equals:yt,create:de,replace:St,preview:dt,update:Ft,delete:wt}),"\
92
+ getPermissionHandler"),yt=n((e,t)=>!!e.result&&e.result.functionName===t.result?.
93
+ functionName,"equalsResource"),dt=n(async(e,t)=>{},"previewResource"),St=n(async(e,t,r)=>{
94
+ if(t.result)throw new fe.ReplaceResourceError(P,e.entryId,t.entryId);return de(e,
95
+ r)},"replaceResource"),de=n(async(e,t)=>{let r=e.parameters,o=C(P,"permission",t),
96
+ i=await r.getPermission(t);return{statementId:(await le({functionName:o,principal:i.
97
+ principal,sourceArn:i.sourceArn,action:"lambda:InvokeFunction"})).statementId,functionName:o}},
98
+ "createResource"),Ft=n(async()=>{},"updateResource"),wt=n(async e=>{let t=e.result;
99
+ t&&await ge(t.functionName,t.statementId)},"deleteResource");var Fe=n(()=>{(0,Se.registerProvider)(S,ye())},"registerPermissionProvider");var Ie=require("@ez4/aws-common");var be=require("@ez4/aws-common"),N=require("@ez4/utils");var m=require("@aws-sdk/client-lambda"),R=require("@ez4/aws-common"),we=require("@ez4/utils");var f="AWS:Lambda/Mapping",x="aws:lambda.mapping",$=(r=>(r.DynamoDB="dynamodb",r.
100
+ Queue="sqs",r))($||{});var b=new m.LambdaClient({}),xe=n(async(e,t)=>{R.Logger.logImport(f,e);let r=await b.
101
+ send(new m.ListEventSourceMappingsCommand({FunctionName:e,EventSourceArn:t})),[o]=r.
102
+ EventSourceMappings;return o?{eventId:o.UUID}:void 0},"importMapping"),Pe=n(async e=>{
103
+ let{sourceArn:t,functionName:r}=e;R.Logger.logCreate(f,r);let i=(await b.send(new m.CreateEventSourceMappingCommand(
104
+ {FunctionName:r,EventSourceArn:t,...Ae(e)}))).UUID;return await ve(i),{eventId:i}},
105
+ "createMapping"),Re=n(async(e,t)=>{let{functionName:r}=t;R.Logger.logUpdate(f,`${r}\
106
+ (${e})`),await b.send(new m.UpdateEventSourceMappingCommand({UUID:e,FunctionName:r,
107
+ ...Ae(t)})),await ve(e)},"updateMapping"),Ce=n(async e=>{R.Logger.logDelete(f,e);
108
+ try{return await b.send(new m.DeleteEventSourceMappingCommand({UUID:e})),!0}catch(t){
109
+ if(!(t instanceof m.ResourceNotFoundException))throw t;return!1}},"deleteMapping"),
110
+ xt=n(async e=>(await b.send(new m.GetEventSourceMappingCommand({UUID:e}))).State,
111
+ "getMappingState"),ve=n(async e=>{let t=new Set(["Enabled","Disabled"]);await(0,we.waitFor)(
112
+ async()=>{let r=await xt(e);return t.has(r)})},"waitForReadyState"),Ae=n(e=>{let{
113
+ sourceArn:t,enabled:r,concurrency:o,batch:i}=e,{service:a}=(0,R.parseArn)(t);return{
114
+ Enabled:r,FunctionResponseTypes:[m.FunctionResponseType.ReportBatchItemFailures],
115
+ MaximumBatchingWindowInSeconds:i?.maxWait,BatchSize:i?.size,...a==="dynamodb"&&{
116
+ StartingPosition:m.EventSourcePosition.LATEST},...a==="sqs"&&{ScalingConfig:{MaximumConcurrency:o}}}},
117
+ "upsertMappingRequest");var Ee=n(()=>({equals:Pt,create:he,replace:Ct,preview:Rt,update:vt,delete:At}),"\
118
+ getMappingHandler"),Pt=n((e,t)=>!!e.result&&e.result.eventId===t.result?.eventId,
119
+ "equalsResource"),Rt=n(async(e,t)=>{let r={...e.parameters,dependencies:e.dependencies},
120
+ o={...t.parameters,dependencies:t.dependencies},i=(0,N.deepCompare)(r,o,{exclude:{
121
+ getSourceArn:!0}});if(i.counts)return{...i,name:r.fromService}},"previewResource"),
122
+ Ct=n(async(e,t,r)=>{if(t.result)throw new be.ReplaceResourceError(f,e.entryId,t.
123
+ entryId);return he(e,r)},"replaceResource"),he=n(async(e,t)=>{let r=e.parameters,
124
+ o=C(f,"mapping",t),i=await r.getSourceArn(t);return{eventId:(await xe(o,i)??await Pe(
125
+ {...e.parameters,functionName:o,sourceArn:i})).eventId,functionName:o,sourceArn:i}},
126
+ "createResource"),vt=n(async(e,t,r)=>{let o=e.result;if(!o)return;let i=o.sourceArn,
127
+ a=C(f,"mapping",r),u=t.result?.functionName??o.functionName,l={...e.parameters,functionName:a,
128
+ sourceArn:i},y={...t.parameters,functionName:u,sourceArn:i};return await bt(o.eventId,
129
+ l,y),{...o,functionName:a}},"updateResource"),At=n(async e=>{let t=e.result;t&&await Ce(
130
+ t.eventId)},"deleteResource"),bt=n(async(e,t,r)=>{!(0,N.deepEqual)(t,r,{exclude:{
131
+ getSourceArn:!0,fromService:!0}})&&await Re(e,t)},"checkGeneralUpdates");var Me=n(()=>{(0,Ie.registerProvider)(x,Ee())},"registerMappingProvider");var Ne=n(()=>[{account:"lambda.amazonaws.com"}],"prepareIdentityAccount");var T=require("@ez4/aws-identity"),Ue=require("@ez4/project/library");var v=require("@ez4/aws-identity");var Te=n(async e=>{let[t,r]=await Promise.all([(0,v.getRegion)(),(0,v.getAccountId)()]);
132
+ return(0,v.createPolicyDocument)([{permissions:["logs:CreateLogStream","logs:Put\
133
+ LogEvents"],resourceIds:[`arn:aws:logs:${t}:${r}:log-group:${e}-*:*`]}])},"getPo\
134
+ licyDocument");var De=n(async e=>{let{state:t,options:r}=e,o=(0,Ue.getServiceName)("",r),i=`${o}\
135
+ -lambda-policy`;return(0,T.tryGetPolicy)(t,i)??(0,T.createPolicy)(t,{tags:r.tags,
136
+ policyDocument:await Te(o),policyName:i})},"prepareExecutionPolicy");var Le=!1,Et=n(()=>{Le||((0,ze.registerTriggers)(),(0,Ge.registerTriggers)(),(0,Ve.registerTriggers)(),
137
+ (0,He.createTrigger)("@ez4/aws-function",{"deploy:prepareIdentityAccount":Ne,"de\
138
+ ploy:prepareExecutionPolicy":De}),ce(),Fe(),Me(),Le=!0)},"registerTriggers");var U=require("@ez4/utils"),je=require("@ez4/stateful");var ht=n((e,t,r,o)=>{let i=(0,U.toKebabCase)(o.functionName),a=(0,U.hashData)(g,
139
+ t.entryId,i),u=[t.entryId];return r&&u.push(r.entryId),(0,je.attachEntry)(e,{type:g,
140
+ entryId:a,dependencies:u,parameters:{...o,functionName:i}})},"createFunction");var Be=require("@ez4/stateful"),Z=require("@ez4/utils");var Oe=n(e=>e.type===S,"isPermissionState");var It=n((e,t,r,o)=>{let i=(0,Z.hashData)(S,t.entryId,r.entryId);return(0,Be.attachEntry)(
141
+ e,{type:S,entryId:i,dependencies:[t.entryId,r.entryId],parameters:o})},"createPe\
142
+ rmission"),Mt=n((e,t,r)=>{let o=(0,Z.hashData)(S,t.entryId,r.entryId),i=e[o];return i&&
143
+ Oe(i)?i:null},"getPermission");var We=require("@ez4/utils"),qe=require("@ez4/stateful");var Nt=n((e,t,r,o)=>{let i=(0,We.hashData)(x,t.entryId,r.entryId);return(0,qe.attachEntry)(
144
+ e,{type:x,entryId:i,dependencies:[t.entryId,r.entryId],parameters:o})},"createMa\
145
+ pping");var Tt=n(e=>e.type===x,"isMappingState");0&&(module.exports={FunctionServiceName,FunctionServiceType,MappingService,MappingServiceName,
129
146
  MappingServiceType,PermissionServiceName,PermissionServiceType,createFunction,createMapping,
130
147
  createPermission,getFunctionArn,getFunctionName,getFunctionState,getPermission,isFunctionState,
131
148
  isMappingState,registerTriggers,tryGetFunctionArn,tryGetFunctionState});
package/dist/main.mjs CHANGED
@@ -1,119 +1,137 @@
1
- import{registerTriggers as Ot}from"@ez4/aws-common";import{registerTriggers as Bt}from"@ez4/aws-identity";
2
- import{registerTriggers as Wt}from"@ez4/aws-logs";import{createTrigger as qt}from"@ez4/project/library";import{registerProvider as et}from"@ez4/aws-common";import{applyTagUpdates as Be,getBundleHash as M,ReplaceResourceError as We}from"@ez4/aws-common";
3
- import{deepCompare as qe,deepEqual as $e}from"@ez4/utils";import{getLogGroupName as q}from"@ez4/aws-logs";
4
- import{getRoleArn as $}from"@ez4/aws-identity";import{LambdaClient as Ie,GetFunctionCommand as Me,CreateFunctionCommand as Ne,DeleteFunctionCommand as Te,
5
- UpdateFunctionCodeCommand as Ue,UpdateFunctionConfigurationCommand as De,PublishVersionCommand as Le,
6
- TagResourceCommand as ze,UntagResourceCommand as Ge,waitUntilFunctionActive as Ve,
7
- waitUntilFunctionUpdated as T,waitUntilPublishedVersionActive as He,ResourceNotFoundException as U,
8
- ApplicationLogLevel as x,SystemLogLevel as D,LogFormat as L}from"@aws-sdk/client-lambda";
9
- import{Logger as p,tryParseArn as z,waitCreation as je,waitDeletion as Oe}from"@ez4/aws-common";import{InvalidParameterError as Ce}from"@ez4/aws-common";import{hashData as ve}from"@ez4/utils";var s="AWS:Lambda/Function",u="aws:lambda.function";var Ae=/[a-z][\w]+/i,be=e=>Ae.test(e),A=e=>{for(let t in e)if(!be(t))throw new Ce(
10
- s,`${t} is an invalid variable name .`)},w=e=>{let t={};for(let r in e)t[r]=ve(e[r]);
11
- return t};import Ee from"adm-zip";import{readFile as he}from"node:fs/promises";var N=async(e,t)=>{
12
- let r=new Ee,n=await he(e);return r.addFile(t,n),r.toBufferPromise()};var l=new Ie({}),P={minDelay:15,maxWaitTime:1800,maxDelay:60,client:l},G=async(e,t)=>{
13
- p.logImport(s,e);try{let r=await l.send(new Me({FunctionName:e,Qualifier:t})),n=r.
14
- Configuration.Version,o=r.Configuration.FunctionArn;return{functionVersion:n,functionArn:o}}catch(r){
15
- if(!(r instanceof U))throw r;return}},V=async e=>{let{functionName:t,variables:r}=e;
16
- p.logCreate(s,t),r&&A(r);let n=W(e.handlerName),o=await B(e.sourceFile),i=await je(
17
- ()=>l.send(new Ne({FunctionName:e.functionName,Description:e.description,MemorySize:e.
18
- memory,Timeout:e.timeout,Role:e.roleArn,Handler:n,Runtime:"nodejs22.x",PackageType:"\
19
- Zip",LoggingConfig:{LogGroup:e.logGroup,ApplicationLogLevel:e.debug?x.Debug:x.Warn,
20
- SystemLogLevel:D.Warn,LogFormat:L.Json},Code:{ZipFile:o},Environment:{Variables:r},
21
- Tags:{...e.tags,ManagedBy:"EZ4"}})));p.logWait(s,t),await Ve(P,{FunctionName:t});
22
- let a=i.FunctionArn;return e.publish?{functionVersion:await j(t),functionArn:a}:
23
- {functionArn:a}},b=async(e,t)=>{p.logUpdate(s,`${e} source code`);let r=await B(
24
- t.sourceFile),n=await l.send(new Ue({FunctionName:e,Publish:t.publish,ZipFile:r}));
25
- p.logWait(s,e),await T(P,{FunctionName:e});let o=n.FunctionArn;return t.publish?
26
- {functionVersion:await j(e),functionArn:o}:{functionArn:o}},E=async(e,t)=>{let{handlerName:r,
27
- variables:n}=t;p.logUpdate(s,`${e} configuration`),n&&A(n),await l.send(new De({
28
- FunctionName:e,Description:t.description,MemorySize:t.memory,Timeout:t.timeout,Role:t.
29
- roleArn,Runtime:"nodejs22.x",...r&&{Handler:W(r)},LoggingConfig:{LogGroup:t.logGroup,
30
- ApplicationLogLevel:t.debug?x.Debug:x.Warn,SystemLogLevel:D.Warn,LogFormat:L.Json},
31
- Environment:{Variables:n}})),p.logWait(s,e),await T(P,{FunctionName:e})},H=async e=>{
32
- p.logDelete(s,e),await Oe(async()=>{try{return await l.send(new Te({FunctionName:e})),
33
- !0}catch(t){if(!(t instanceof U))throw t;return!1}})},j=async e=>{p.logPublish(s,
34
- e);let t=await l.send(new Le({FunctionName:e}));p.logWait(s,e);let r=t.Version;return await He(
35
- P,{FunctionName:e,Qualifier:r}),r},h=async(e,t)=>{let r=z(e)?.resourceName??e;p.
36
- logTag(s,r),await l.send(new ze({Resource:e,Tags:{...t,ManagedBy:"EZ4"}}))},O=async(e,t)=>{
37
- let r=z(e)?.resourceName??e;p.logUntag(s,r),await l.send(new Ge({Resource:e,TagKeys:t}))},
38
- B=e=>N(e,"main.mjs"),W=e=>`main.${e}`;var Z=()=>({equals:Ze,create:k,replace:Qe,preview:ke,update:Je,delete:Ke}),Ze=(e,t)=>!!e.
39
- result&&e.result.functionArn===t.result?.functionArn,ke=async(e,t)=>{let r=e.parameters,
40
- n=t.parameters,o=qe({...r,dependencies:e.dependencies,sourceHash:await M(...r.getFunctionFiles()),
41
- ...r.variables&&{variables:w(r.variables)}},{...n,dependencies:t.dependencies,sourceHash:t.
42
- result?.sourceHash});if(o.counts)return{...o,name:r.functionName}},Qe=async(e,t,r)=>{
43
- if(t.result)throw new We(s,e.entryId,t.entryId);return k(e,r)},k=async(e,t)=>{let r=e.
44
- parameters,n=r.functionName,o=$(s,n,t),i=q(s,n,t),[a,c]=await Promise.all([M(...r.
45
- getFunctionFiles()),r.getFunctionBundle(t)]),m=await G(n);if(m)return await E(n,
46
- {...r,logGroup:i,roleArn:o}),await b(n,{publish:!1,sourceFile:c}),await h(m.functionArn,
47
- {...r.tags}),I(e),{functionArn:m.functionArn,sourceHash:a,logGroup:i,roleArn:o};
48
- let v=await V({...r,publish:!0,sourceFile:c,logGroup:i,roleArn:o});return I(e),{
49
- functionArn:v.functionArn,sourceHash:a,logGroup:i,roleArn:o}},Je=async(e,t,r)=>{
50
- let{parameters:n,result:o}=e;if(!o)return;let i=n.functionName,a=$(s,i,r),c=t.result?.
51
- roleArn??a,m=q(s,i,r),v=t.result?.logGroup??m,xe={...n,roleArn:a,logGroup:m},Pe={
52
- ...t.parameters,roleArn:c,logGroup:v};await _e(i,xe,Pe),await Xe(o.functionArn,n,
53
- t.parameters);let Re=await Ye(i,n,t.result,r);return I(e),{...o,...Re,logGroup:m,
54
- roleArn:a}},Ke=async e=>{let{result:t,parameters:r}=e;t&&await H(r.functionName)},
55
- I=e=>{let{parameters:t}=e;return t.variables&&(t.variables=w(t.variables)),e},_e=async(e,t,r)=>{
56
- let n={...t,...t.variables&&{variables:w(t.variables)}};!$e(n,r,{exclude:{sourceFile:!0,
57
- functionName:!0,tags:!0}})&&await E(e,t)},Xe=async(e,t,r)=>{await Be(t.tags,r.tags,
58
- n=>h(e,n),n=>O(e,n))},Ye=async(e,t,r,n)=>{let o=await M(...t.getFunctionFiles()),
59
- i=r?.sourceHash;if(o===i&&!n.force)return r;let a=await t.getFunctionBundle(n),{
60
- functionVersion:c}=await b(e,{publish:!r?.functionVersion,sourceFile:a});return{
61
- sourceHash:o,...c&&{functionVersion:c}}};var Q=()=>{et(u,Z())};import{registerProvider as lt}from"@ez4/aws-common";import{ReplaceResourceError as st}from"@ez4/aws-common";import{IncompleteResourceError as J}from"@ez4/aws-common";var R=class extends Error{constructor(t){super(`Function ${t} wasn't found.`)}};var K=e=>e.type===u,Er=(e,t,r)=>{try{let n=e.getServiceState(t,r);if(K(n))return n}catch{}},
62
- hr=(e,t,r)=>{let n=e.getServiceState(t,r);if(!K(n))throw new R(t);return n},S=(e,t,r)=>{
63
- let n=r.getDependencies(u).at(0)?.parameters;if(!n?.functionName)throw new J(e,t,
64
- "functionName");return n.functionName},tt=e=>e.getDependencies(u)[0]?.result?.functionArn,
65
- Ir=(e,t,r)=>{let n=tt(r);if(!n)throw new J(e,t,"functionArn");return n};import{LambdaClient as rt,AddPermissionCommand as nt,RemovePermissionCommand as ot,
66
- ResourceNotFoundException as it}from"@aws-sdk/client-lambda";import{Logger as _}from"@ez4/aws-common";var d="AWS:Lambda/Permission",f="aws:lambda.permission";var X=new rt({}),Y=async e=>{_.logCreate(d,e.functionName);let t=e.statementId??
67
- `SID${Date.now()}`;return await X.send(new nt({StatementId:t,FunctionName:e.functionName,
1
+ var ve=Object.defineProperty;var n=(e,t)=>ve(e,"name",{value:t,configurable:!0});import{registerTriggers as Wt}from"@ez4/aws-common";import{registerTriggers as qt}from"@ez4/aws-identity";
2
+ import{registerTriggers as $t}from"@ez4/aws-logs";import{createTrigger as Zt}from"@ez4/project/library";import{registerProvider as rt}from"@ez4/aws-common";import{applyTagUpdates as qe,getBundleHash as N,ReplaceResourceError as $e}from"@ez4/aws-common";
3
+ import{deepCompare as Ze,deepEqual as ke}from"@ez4/utils";import{getLogGroupName as $}from"@ez4/aws-logs";
4
+ import{getRoleArn as Z}from"@ez4/aws-identity";import{LambdaClient as Ne,GetFunctionCommand as Te,CreateFunctionCommand as Ue,DeleteFunctionCommand as De,
5
+ UpdateFunctionCodeCommand as Le,UpdateFunctionConfigurationCommand as ze,PublishVersionCommand as Ge,
6
+ TagResourceCommand as Ve,UntagResourceCommand as He,waitUntilFunctionActive as je,
7
+ waitUntilFunctionUpdated as U,waitUntilPublishedVersionActive as Oe,ResourceNotFoundException as D,
8
+ ApplicationLogLevel as P,SystemLogLevel as L,LogFormat as z}from"@aws-sdk/client-lambda";
9
+ import{Logger as c,tryParseArn as G,waitCreation as Be,waitDeletion as We}from"@ez4/aws-common";import{InvalidParameterError as Ae}from"@ez4/aws-common";import{hashData as be}from"@ez4/utils";var a="AWS:Lambda/Function",l="aws:lambda.function";var Ee=/[a-z][\w]+/i,he=n(e=>Ee.test(e),"isValidName"),b=n(e=>{for(let t in e)if(!he(
10
+ t))throw new Ae(a,`${t} is an invalid variable name .`)},"assertVariables"),x=n(
11
+ e=>{let t={};for(let r in e)t[r]=be(e[r]);return t},"protectVariables");import Ie from"adm-zip";import{readFile as Me}from"node:fs/promises";var T=n(async(e,t)=>{let r=new Ie,o=await Me(e);return r.addFile(t,o),r.toBufferPromise()},
12
+ "getZipBuffer");var g=new Ne({}),R={minDelay:15,maxWaitTime:1800,maxDelay:60,client:g},V=n(async(e,t)=>{
13
+ c.logImport(a,e);try{let r=await g.send(new Te({FunctionName:e,Qualifier:t})),o=r.
14
+ Configuration.Version,i=r.Configuration.FunctionArn;return{functionVersion:o,functionArn:i}}catch(r){
15
+ if(!(r instanceof D))throw r;return}},"importFunction"),H=n(async e=>{let{functionName:t,
16
+ variables:r}=e;c.logCreate(a,t),r&&b(r);let o=q(e.handlerName),i=await W(e.sourceFile),
17
+ s=await Be(()=>g.send(new Ue({FunctionName:e.functionName,Description:e.description,
18
+ MemorySize:e.memory,Timeout:e.timeout,Role:e.roleArn,Handler:o,Runtime:"nodejs22\
19
+ .x",PackageType:"Zip",LoggingConfig:{LogGroup:e.logGroup,ApplicationLogLevel:e.debug?
20
+ P.Debug:P.Warn,SystemLogLevel:L.Warn,LogFormat:z.Json},Code:{ZipFile:i},Environment:{
21
+ Variables:r},Tags:{...e.tags,ManagedBy:"EZ4"}})));c.logWait(a,t),await je(R,{FunctionName:t});
22
+ let p=s.FunctionArn;return e.publish?{functionVersion:await O(t),functionArn:p}:
23
+ {functionArn:p}},"createFunction"),E=n(async(e,t)=>{c.logUpdate(a,`${e} source c\
24
+ ode`);let r=await W(t.sourceFile),o=await g.send(new Le({FunctionName:e,Publish:t.
25
+ publish,ZipFile:r}));c.logWait(a,e),await U(R,{FunctionName:e});let i=o.FunctionArn;
26
+ return t.publish?{functionVersion:await O(e),functionArn:i}:{functionArn:i}},"up\
27
+ dateSourceCode"),h=n(async(e,t)=>{let{handlerName:r,variables:o}=t;c.logUpdate(a,
28
+ `${e} configuration`),o&&b(o),await g.send(new ze({FunctionName:e,Description:t.
29
+ description,MemorySize:t.memory,Timeout:t.timeout,Role:t.roleArn,Runtime:"nodejs\
30
+ 22.x",...r&&{Handler:q(r)},LoggingConfig:{LogGroup:t.logGroup,ApplicationLogLevel:t.
31
+ debug?P.Debug:P.Warn,SystemLogLevel:L.Warn,LogFormat:z.Json},Environment:{Variables:o}})),
32
+ c.logWait(a,e),await U(R,{FunctionName:e})},"updateConfiguration"),j=n(async e=>{
33
+ c.logDelete(a,e),await We(async()=>{try{return await g.send(new De({FunctionName:e})),
34
+ !0}catch(t){if(!(t instanceof D))throw t;return!1}})},"deleteFunction"),O=n(async e=>{
35
+ c.logPublish(a,e);let t=await g.send(new Ge({FunctionName:e}));c.logWait(a,e);let r=t.
36
+ Version;return await Oe(R,{FunctionName:e,Qualifier:r}),r},"publishFunction"),I=n(
37
+ async(e,t)=>{let r=G(e)?.resourceName??e;c.logTag(a,r),await g.send(new Ve({Resource:e,
38
+ Tags:{...t,ManagedBy:"EZ4"}}))},"tagFunction"),B=n(async(e,t)=>{let r=G(e)?.resourceName??
39
+ e;c.logUntag(a,r),await g.send(new He({Resource:e,TagKeys:t}))},"untagFunction"),
40
+ W=n(e=>T(e,"main.mjs"),"getSourceZipFile"),q=n(e=>`main.${e}`,"getSourceHandlerN\
41
+ ame");var k=n(()=>({equals:Qe,create:Q,replace:Ke,preview:Je,update:_e,delete:Xe}),"ge\
42
+ tFunctionHandler"),Qe=n((e,t)=>!!e.result&&e.result.functionArn===t.result?.functionArn,
43
+ "equalsResource"),Je=n(async(e,t)=>{let r=e.parameters,o=t.parameters,i=Ze({...r,
44
+ dependencies:e.dependencies,sourceHash:await N(...r.getFunctionFiles()),...r.variables&&
45
+ {variables:x(r.variables)}},{...o,dependencies:t.dependencies,sourceHash:t.result?.
46
+ sourceHash});if(i.counts)return{...i,name:r.functionName}},"previewResource"),Ke=n(
47
+ async(e,t,r)=>{if(t.result)throw new $e(a,e.entryId,t.entryId);return Q(e,r)},"r\
48
+ eplaceResource"),Q=n(async(e,t)=>{let r=e.parameters,o=r.functionName,i=Z(a,o,t),
49
+ s=$(a,o,t),[p,m]=await Promise.all([N(...r.getFunctionFiles()),r.getFunctionBundle(
50
+ t)]),u=await V(o);if(u)return await h(o,{...r,logGroup:s,roleArn:i}),await E(o,{
51
+ publish:!1,sourceFile:m}),await I(u.functionArn,{...r.tags}),M(e),{functionArn:u.
52
+ functionArn,sourceHash:p,logGroup:s,roleArn:i};let A=await H({...r,publish:!0,sourceFile:m,
53
+ logGroup:s,roleArn:i});return M(e),{functionArn:A.functionArn,sourceHash:p,logGroup:s,
54
+ roleArn:i}},"createResource"),_e=n(async(e,t,r)=>{let{parameters:o,result:i}=e;if(!i)
55
+ return;let s=o.functionName,p=Z(a,s,r),m=t.result?.roleArn??p,u=$(a,s,r),A=t.result?.
56
+ logGroup??u,Pe={...o,roleArn:p,logGroup:u},Re={...t.parameters,roleArn:m,logGroup:A};
57
+ await Ye(s,Pe,Re),await et(i.functionArn,o,t.parameters);let Ce=await tt(s,o,t.result,
58
+ r);return M(e),{...i,...Ce,logGroup:u,roleArn:p}},"updateResource"),Xe=n(async e=>{
59
+ let{result:t,parameters:r}=e;t&&await j(r.functionName)},"deleteResource"),M=n(e=>{
60
+ let{parameters:t}=e;return t.variables&&(t.variables=x(t.variables)),e},"lockSen\
61
+ sitiveData"),Ye=n(async(e,t,r)=>{let o={...t,...t.variables&&{variables:x(t.variables)}};
62
+ !ke(o,r,{exclude:{sourceFile:!0,functionName:!0,tags:!0}})&&await h(e,t)},"check\
63
+ ConfigurationUpdates"),et=n(async(e,t,r)=>{await qe(t.tags,r.tags,o=>I(e,o),o=>B(
64
+ e,o))},"checkTagUpdates"),tt=n(async(e,t,r,o)=>{let i=await N(...t.getFunctionFiles()),
65
+ s=r?.sourceHash;if(i===s&&!o.force)return r;let p=await t.getFunctionBundle(o),{
66
+ functionVersion:m}=await E(e,{publish:!r?.functionVersion,sourceFile:p});return{
67
+ sourceHash:i,...m&&{functionVersion:m}}},"checkSourceCodeUpdates");var J=n(()=>{rt(l,k())},"registerFunctionProvider");import{registerProvider as ft}from"@ez4/aws-common";import{ReplaceResourceError as pt}from"@ez4/aws-common";import{IncompleteResourceError as K}from"@ez4/aws-common";var C=class extends Error{static{n(this,"FunctionNotFoundError")}constructor(t){
68
+ super(`Function ${t} wasn't found.`)}};var _=n(e=>e.type===l,"isFunctionState"),zr=n((e,t,r)=>{try{let o=e.getServiceState(
69
+ t,r);if(_(o))return o}catch{}},"tryGetFunctionState"),Gr=n((e,t,r)=>{let o=e.getServiceState(
70
+ t,r);if(!_(o))throw new C(t);return o},"getFunctionState"),F=n((e,t,r)=>{let o=r.
71
+ getDependencies(l).at(0)?.parameters;if(!o?.functionName)throw new K(e,t,"functi\
72
+ onName");return o.functionName},"getFunctionName"),nt=n(e=>e.getDependencies(l)[0]?.
73
+ result?.functionArn,"tryGetFunctionArn"),Vr=n((e,t,r)=>{let o=nt(r);if(!o)throw new K(
74
+ e,t,"functionArn");return o},"getFunctionArn");import{LambdaClient as ot,AddPermissionCommand as it,RemovePermissionCommand as st,
75
+ ResourceNotFoundException as at}from"@aws-sdk/client-lambda";import{Logger as X}from"@ez4/aws-common";var S="AWS:Lambda/Permission",y="aws:lambda.permission";var Y=new ot({}),ee=n(async e=>{X.logCreate(S,e.functionName);let t=e.statementId??
76
+ `SID${Date.now()}`;return await Y.send(new it({StatementId:t,FunctionName:e.functionName,
68
77
  SourceArn:e.sourceArn,Principal:e.principal,Action:e.action})),{statementId:t}},
69
- ee=async(e,t)=>{_.logDelete(d,e);try{return await X.send(new ot({FunctionName:e,
70
- StatementId:t})),!0}catch(r){if(!(r instanceof it))throw r;return!1}};var te=()=>({equals:at,create:re,replace:ct,preview:pt,update:mt,delete:ut}),at=(e,t)=>!!e.
71
- result&&e.result.functionName===t.result?.functionName,pt=async(e,t)=>{},ct=async(e,t,r)=>{
72
- if(t.result)throw new st(d,e.entryId,t.entryId);return re(e,r)},re=async(e,t)=>{
73
- let r=e.parameters,n=S(d,"permission",t),o=await r.getPermission(t);return{statementId:(await Y(
74
- {functionName:n,principal:o.principal,sourceArn:o.sourceArn,action:"lambda:Invok\
75
- eFunction"})).statementId,functionName:n}},mt=async()=>{},ut=async e=>{let t=e.result;
76
- t&&await ee(t.functionName,t.statementId)};var ne=()=>{lt(f,te())};import{registerProvider as Dt}from"@ez4/aws-common";import{ReplaceResourceError as At}from"@ez4/aws-common";import{deepCompare as bt,
77
- deepEqual as Et}from"@ez4/utils";import{LambdaClient as gt,GetEventSourceMappingCommand as ft,CreateEventSourceMappingCommand as yt,
78
- UpdateEventSourceMappingCommand as dt,DeleteEventSourceMappingCommand as St,ListEventSourceMappingsCommand as Ft,
79
- FunctionResponseType as wt,EventSourcePosition as xt,ResourceNotFoundException as Pt}from"@aws-sdk/client-lambda";
80
- import{Logger as C,parseArn as Rt}from"@ez4/aws-common";import{waitFor as Ct}from"@ez4/utils";var g="AWS:Lambda/Mapping",y="aws:lambda.mapping",oe=(r=>(r.DynamoDB="dynamodb",
81
- r.Queue="sqs",r))(oe||{});var F=new gt({}),ie=async(e,t)=>{C.logImport(g,e);let r=await F.send(new Ft({FunctionName:e,
82
- EventSourceArn:t})),[n]=r.EventSourceMappings;return n?{eventId:n.UUID}:void 0},
83
- se=async e=>{let{sourceArn:t,functionName:r}=e;C.logCreate(g,r);let o=(await F.send(
84
- new yt({FunctionName:r,EventSourceArn:t,...me(e)}))).UUID;return await ce(o),{eventId:o}},
85
- ae=async(e,t)=>{let{functionName:r}=t;C.logUpdate(g,`${r} (${e})`),await F.send(
86
- new dt({UUID:e,FunctionName:r,...me(t)})),await ce(e)},pe=async e=>{C.logDelete(
87
- g,e);try{return await F.send(new St({UUID:e})),!0}catch(t){if(!(t instanceof Pt))
88
- throw t;return!1}},vt=async e=>(await F.send(new ft({UUID:e}))).State,ce=async e=>{
89
- let t=new Set(["Enabled","Disabled"]);await Ct(async()=>{let r=await vt(e);return t.
90
- has(r)})},me=e=>{let{sourceArn:t,enabled:r,concurrency:n,batch:o}=e,{service:i}=Rt(
91
- t);return{Enabled:r,FunctionResponseTypes:[wt.ReportBatchItemFailures],MaximumBatchingWindowInSeconds:o?.
92
- maxWait,BatchSize:o?.size,...i==="dynamodb"&&{StartingPosition:xt.LATEST},...i===
93
- "sqs"&&{ScalingConfig:{MaximumConcurrency:n}}}};var ue=()=>({equals:ht,create:le,replace:Mt,preview:It,update:Nt,delete:Tt}),ht=(e,t)=>!!e.
94
- result&&e.result.eventId===t.result?.eventId,It=async(e,t)=>{let r={...e.parameters,
95
- dependencies:e.dependencies},n={...t.parameters,dependencies:t.dependencies},o=bt(
96
- r,n,{exclude:{getSourceArn:!0}});if(o.counts)return{...o,name:r.fromService}},Mt=async(e,t,r)=>{
97
- if(t.result)throw new At(g,e.entryId,t.entryId);return le(e,r)},le=async(e,t)=>{
98
- let r=e.parameters,n=S(g,"mapping",t),o=await r.getSourceArn(t);return{eventId:(await ie(
99
- n,o)??await se({...e.parameters,functionName:n,sourceArn:o})).eventId,functionName:n,
100
- sourceArn:o}},Nt=async(e,t,r)=>{let n=e.result;if(!n)return;let o=n.sourceArn,i=S(
101
- g,"mapping",r),a=t.result?.functionName??n.functionName,c={...e.parameters,functionName:i,
102
- sourceArn:o},m={...t.parameters,functionName:a,sourceArn:o};return await Ut(n.eventId,
103
- c,m),{...n,functionName:i}},Tt=async e=>{let t=e.result;t&&await pe(t.eventId)},
104
- Ut=async(e,t,r)=>{!Et(t,r,{exclude:{getSourceArn:!0,fromService:!0}})&&await ae(
105
- e,t)};var ge=()=>{Dt(y,ue())};var fe=()=>[{account:"lambda.amazonaws.com"}];import{createPolicy as Vt,tryGetPolicy as Ht}from"@ez4/aws-identity";import{getServiceName as jt}from"@ez4/project/library";import{getAccountId as Lt,getRegion as zt,createPolicyDocument as Gt}from"@ez4/aws-identity";
106
- var ye=async e=>{let[t,r]=await Promise.all([zt(),Lt()]);return Gt([{permissions:[
78
+ "createPermission"),te=n(async(e,t)=>{X.logDelete(S,e);try{return await Y.send(new st(
79
+ {FunctionName:e,StatementId:t})),!0}catch(r){if(!(r instanceof at))throw r;return!1}},
80
+ "deletePermission");var re=n(()=>({equals:ct,create:ne,replace:ut,preview:mt,update:lt,delete:gt}),"\
81
+ getPermissionHandler"),ct=n((e,t)=>!!e.result&&e.result.functionName===t.result?.
82
+ functionName,"equalsResource"),mt=n(async(e,t)=>{},"previewResource"),ut=n(async(e,t,r)=>{
83
+ if(t.result)throw new pt(S,e.entryId,t.entryId);return ne(e,r)},"replaceResource"),
84
+ ne=n(async(e,t)=>{let r=e.parameters,o=F(S,"permission",t),i=await r.getPermission(
85
+ t);return{statementId:(await ee({functionName:o,principal:i.principal,sourceArn:i.
86
+ sourceArn,action:"lambda:InvokeFunction"})).statementId,functionName:o}},"create\
87
+ Resource"),lt=n(async()=>{},"updateResource"),gt=n(async e=>{let t=e.result;t&&await te(
88
+ t.functionName,t.statementId)},"deleteResource");var oe=n(()=>{ft(y,re())},"registerPermissionProvider");import{registerProvider as zt}from"@ez4/aws-common";import{ReplaceResourceError as Et}from"@ez4/aws-common";import{deepCompare as ht,
89
+ deepEqual as It}from"@ez4/utils";import{LambdaClient as yt,GetEventSourceMappingCommand as dt,CreateEventSourceMappingCommand as St,
90
+ UpdateEventSourceMappingCommand as Ft,DeleteEventSourceMappingCommand as wt,ListEventSourceMappingsCommand as xt,
91
+ FunctionResponseType as Pt,EventSourcePosition as Rt,ResourceNotFoundException as Ct}from"@aws-sdk/client-lambda";
92
+ import{Logger as v,parseArn as vt}from"@ez4/aws-common";import{waitFor as At}from"@ez4/utils";var f="AWS:Lambda/Mapping",d="aws:lambda.mapping",ie=(r=>(r.DynamoDB="dynamodb",
93
+ r.Queue="sqs",r))(ie||{});var w=new yt({}),se=n(async(e,t)=>{v.logImport(f,e);let r=await w.send(new xt({FunctionName:e,
94
+ EventSourceArn:t})),[o]=r.EventSourceMappings;return o?{eventId:o.UUID}:void 0},
95
+ "importMapping"),ae=n(async e=>{let{sourceArn:t,functionName:r}=e;v.logCreate(f,
96
+ r);let i=(await w.send(new St({FunctionName:r,EventSourceArn:t,...ue(e)}))).UUID;
97
+ return await me(i),{eventId:i}},"createMapping"),pe=n(async(e,t)=>{let{functionName:r}=t;
98
+ v.logUpdate(f,`${r} (${e})`),await w.send(new Ft({UUID:e,FunctionName:r,...ue(t)})),
99
+ await me(e)},"updateMapping"),ce=n(async e=>{v.logDelete(f,e);try{return await w.
100
+ send(new wt({UUID:e})),!0}catch(t){if(!(t instanceof Ct))throw t;return!1}},"del\
101
+ eteMapping"),bt=n(async e=>(await w.send(new dt({UUID:e}))).State,"getMappingSta\
102
+ te"),me=n(async e=>{let t=new Set(["Enabled","Disabled"]);await At(async()=>{let r=await bt(
103
+ e);return t.has(r)})},"waitForReadyState"),ue=n(e=>{let{sourceArn:t,enabled:r,concurrency:o,
104
+ batch:i}=e,{service:s}=vt(t);return{Enabled:r,FunctionResponseTypes:[Pt.ReportBatchItemFailures],
105
+ MaximumBatchingWindowInSeconds:i?.maxWait,BatchSize:i?.size,...s==="dynamodb"&&{
106
+ StartingPosition:Rt.LATEST},...s==="sqs"&&{ScalingConfig:{MaximumConcurrency:o}}}},
107
+ "upsertMappingRequest");var le=n(()=>({equals:Mt,create:ge,replace:Tt,preview:Nt,update:Ut,delete:Dt}),"\
108
+ getMappingHandler"),Mt=n((e,t)=>!!e.result&&e.result.eventId===t.result?.eventId,
109
+ "equalsResource"),Nt=n(async(e,t)=>{let r={...e.parameters,dependencies:e.dependencies},
110
+ o={...t.parameters,dependencies:t.dependencies},i=ht(r,o,{exclude:{getSourceArn:!0}});
111
+ if(i.counts)return{...i,name:r.fromService}},"previewResource"),Tt=n(async(e,t,r)=>{
112
+ if(t.result)throw new Et(f,e.entryId,t.entryId);return ge(e,r)},"replaceResource"),
113
+ ge=n(async(e,t)=>{let r=e.parameters,o=F(f,"mapping",t),i=await r.getSourceArn(t);
114
+ return{eventId:(await se(o,i)??await ae({...e.parameters,functionName:o,sourceArn:i})).
115
+ eventId,functionName:o,sourceArn:i}},"createResource"),Ut=n(async(e,t,r)=>{let o=e.
116
+ result;if(!o)return;let i=o.sourceArn,s=F(f,"mapping",r),p=t.result?.functionName??
117
+ o.functionName,m={...e.parameters,functionName:s,sourceArn:i},u={...t.parameters,
118
+ functionName:p,sourceArn:i};return await Lt(o.eventId,m,u),{...o,functionName:s}},
119
+ "updateResource"),Dt=n(async e=>{let t=e.result;t&&await ce(t.eventId)},"deleteR\
120
+ esource"),Lt=n(async(e,t,r)=>{!It(t,r,{exclude:{getSourceArn:!0,fromService:!0}})&&
121
+ await pe(e,t)},"checkGeneralUpdates");var fe=n(()=>{zt(d,le())},"registerMappingProvider");var ye=n(()=>[{account:"lambda.amazonaws.com"}],"prepareIdentityAccount");import{createPolicy as jt,tryGetPolicy as Ot}from"@ez4/aws-identity";import{getServiceName as Bt}from"@ez4/project/library";import{getAccountId as Gt,getRegion as Vt,createPolicyDocument as Ht}from"@ez4/aws-identity";var de=n(async e=>{let[t,r]=await Promise.all([Vt(),Gt()]);return Ht([{permissions:[
107
122
  "logs:CreateLogStream","logs:PutLogEvents"],resourceIds:[`arn:aws:logs:${t}:${r}\
108
- :log-group:${e}-*:*`]}])};var de=async e=>{let{state:t,options:r}=e,n=jt("",r),o=`${n}-lambda-policy`;return Ht(
109
- t,o)??Vt(t,{tags:r.tags,policyDocument:await ye(n),policyName:o})};var Se=!1,vn=()=>{Se||(Ot(),Bt(),Wt(),qt("@ez4/aws-function",{"deploy:prepareIde\
110
- ntityAccount":fe,"deploy:prepareExecutionPolicy":de}),Q(),ne(),ge(),Se=!0)};import{toKebabCase as $t,hashData as Zt}from"@ez4/utils";import{attachEntry as kt}from"@ez4/stateful";var In=(e,t,r,n)=>{let o=$t(n.functionName),i=Zt(u,t.entryId,o),a=[t.entryId];return r&&
111
- a.push(r.entryId),kt(e,{type:u,entryId:i,dependencies:a,parameters:{...n,functionName:o}})};import{attachEntry as Qt}from"@ez4/stateful";import{hashData as we}from"@ez4/utils";var Fe=e=>e.type===f;var Gn=(e,t,r,n)=>{let o=we(f,t.entryId,r.entryId);return Qt(e,{type:f,entryId:o,
112
- dependencies:[t.entryId,r.entryId],parameters:n})},Vn=(e,t,r)=>{let n=we(f,t.entryId,
113
- r.entryId),o=e[n];return o&&Fe(o)?o:null};import{hashData as Jt}from"@ez4/utils";import{attachEntry as Kt}from"@ez4/stateful";var Wn=(e,t,r,n)=>{let o=Jt(y,t.entryId,r.entryId);return Kt(e,{type:y,entryId:o,
114
- dependencies:[t.entryId,r.entryId],parameters:n})};var Zn=e=>e.type===y;export{s as FunctionServiceName,u as FunctionServiceType,oe as MappingService,g as MappingServiceName,
115
- y as MappingServiceType,d as PermissionServiceName,f as PermissionServiceType,In as createFunction,
116
- Wn as createMapping,Gn as createPermission,Ir as getFunctionArn,S as getFunctionName,
117
- hr as getFunctionState,Vn as getPermission,K as isFunctionState,Zn as isMappingState,
118
- vn as registerTriggers,tt as tryGetFunctionArn,Er as tryGetFunctionState};
123
+ :log-group:${e}-*:*`]}])},"getPolicyDocument");var Se=n(async e=>{let{state:t,options:r}=e,o=Bt("",r),i=`${o}-lambda-policy`;return Ot(
124
+ t,i)??jt(t,{tags:r.tags,policyDocument:await de(o),policyName:i})},"prepareExecu\
125
+ tionPolicy");var Fe=!1,Wn=n(()=>{Fe||(Wt(),qt(),$t(),Zt("@ez4/aws-function",{"deploy:prepareI\
126
+ dentityAccount":ye,"deploy:prepareExecutionPolicy":Se}),J(),oe(),fe(),Fe=!0)},"r\
127
+ egisterTriggers");import{toKebabCase as kt,hashData as Qt}from"@ez4/utils";import{attachEntry as Jt}from"@ez4/stateful";var Jn=n((e,t,r,o)=>{let i=kt(o.functionName),s=Qt(l,t.entryId,i),p=[t.entryId];
128
+ return r&&p.push(r.entryId),Jt(e,{type:l,entryId:s,dependencies:p,parameters:{...o,
129
+ functionName:i}})},"createFunction");import{attachEntry as Kt}from"@ez4/stateful";import{hashData as xe}from"@ez4/utils";var we=n(e=>e.type===y,"isPermissionState");var io=n((e,t,r,o)=>{let i=xe(y,t.entryId,r.entryId);return Kt(e,{type:y,entryId:i,
130
+ dependencies:[t.entryId,r.entryId],parameters:o})},"createPermission"),so=n((e,t,r)=>{
131
+ let o=xe(y,t.entryId,r.entryId),i=e[o];return i&&we(i)?i:null},"getPermission");import{hashData as _t}from"@ez4/utils";import{attachEntry as Xt}from"@ez4/stateful";var lo=n((e,t,r,o)=>{let i=_t(d,t.entryId,r.entryId);return Xt(e,{type:d,entryId:i,
132
+ dependencies:[t.entryId,r.entryId],parameters:o})},"createMapping");var So=n(e=>e.type===d,"isMappingState");export{a as FunctionServiceName,l as FunctionServiceType,ie as MappingService,f as MappingServiceName,
133
+ d as MappingServiceType,S as PermissionServiceName,y as PermissionServiceType,Jn as createFunction,
134
+ lo as createMapping,io as createPermission,Vr as getFunctionArn,F as getFunctionName,
135
+ Gr as getFunctionState,so as getPermission,_ as isFunctionState,So as isMappingState,
136
+ Wn as registerTriggers,nt as tryGetFunctionArn,zr as tryGetFunctionState};
119
137
  //# sourceMappingURL=main.mjs.map
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.21.0",
4
+ "version": "0.23.0",
5
5
  "author": "Silas B.",
6
6
  "license": "MIT",
7
7
  "type": "module",
@@ -11,10 +11,10 @@
11
11
  "repository": {
12
12
  "type": "git",
13
13
  "url": "git+https://github.com/sbalmt/ez4.git",
14
- "directory": "packages/aws-function"
14
+ "directory": "providers/aws/aws-function"
15
15
  },
16
16
  "engines": {
17
- "node": ">=22.3.0"
17
+ "node": ">=22.7"
18
18
  },
19
19
  "exports": {
20
20
  ".": {
@@ -29,21 +29,21 @@
29
29
  "scripts": {
30
30
  "clean": "rm -f *.tsbuildinfo && rm -rf dist/*",
31
31
  "build": "tsc -p tsconfig.json && node tools/bundler.mjs",
32
- "test": "npm run test:types && node --env-file ../../local.env --test --import ../../tools/tsnode.mjs test/*.spec.ts",
33
- "test:only": "npm run test:types && node --env-file ../../local.env --test-only --test --import ../../tools/tsnode.mjs test/*.spec.ts",
32
+ "test": "npm run test:types && node --env-file ../../../local.env --test --import ../../../tools/tsnode.mjs test/*.spec.ts",
33
+ "test:only": "npm run test:types && node --env-file ../../../local.env --test-only --test --import ../../../tools/tsnode.mjs test/*.spec.ts",
34
34
  "test:types": "npm run build && tsc -p tsconfig.test.json",
35
35
  "local:publish": "npm run build && npm run clean:registry && npm publish --registry http://localhost:4873",
36
- "clean:registry": "rm -rf ../../.registry/@ez4/aws-function",
36
+ "clean:registry": "rm -rf ../../../.registry/@ez4/aws-function",
37
37
  "live:publish": "npm run test && npm publish --access public"
38
38
  },
39
39
  "dependencies": {
40
40
  "@aws-sdk/client-lambda": "^3.758.0",
41
- "@ez4/aws-common": "^0.21.0",
42
- "@ez4/aws-identity": "^0.21.0",
43
- "@ez4/aws-logs": "^0.21.0",
44
- "@ez4/project": "^0.21.0",
45
- "@ez4/stateful": "^0.21.0",
46
- "@ez4/utils": "^0.21.0",
41
+ "@ez4/aws-common": "^0.23.0",
42
+ "@ez4/aws-identity": "^0.23.0",
43
+ "@ez4/aws-logs": "^0.23.0",
44
+ "@ez4/project": "^0.23.0",
45
+ "@ez4/stateful": "^0.23.0",
46
+ "@ez4/utils": "^0.23.0",
47
47
  "@types/adm-zip": "^0.5.5",
48
48
  "adm-zip": "^0.5.14"
49
49
  }