@ez4/aws-function 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,3 +1,15 @@
1
1
  # EZ4: AWS Function
2
2
 
3
3
  It provides all the components to manage lambda functions on AWS.
4
+
5
+ ## Getting started
6
+
7
+ #### Install
8
+
9
+ ```sh
10
+ npm install @ez4/aws-function -D
11
+ ```
12
+
13
+ ## License
14
+
15
+ MIT License
@@ -5,7 +5,6 @@ export declare const FunctionServiceName = "AWS:Lambda/Function";
5
5
  export declare const FunctionServiceType = "aws:lambda.function";
6
6
  export type FunctionParameters = Omit<CreateRequest, 'roleArn'>;
7
7
  export type FunctionResult = CreateResponse & {
8
- sourceTime: number;
9
8
  sourceHash: string;
10
9
  roleArn: Arn;
11
10
  };
package/dist/main.cjs CHANGED
@@ -1,105 +1,103 @@
1
- "use strict";var he=Object.create;var N=Object.defineProperty;var Ie=Object.getOwnPropertyDescriptor;var Me=Object.getOwnPropertyNames;var Te=Object.getPrototypeOf,ze=Object.prototype.hasOwnProperty;var Ue=(e,t)=>{for(var n in t)N(e,n,{get:t[n],enumerable:!0})},W=(e,t,n,r)=>{if(t&&
2
- typeof t=="object"||typeof t=="function")for(let o of Me(t))!ze.call(e,o)&&o!==n&&
3
- N(e,o,{get:()=>t[o],enumerable:!(r=Ie(t,o))||r.enumerable});return e};var De=(e,t,n)=>(n=e!=null?he(Te(e)):{},W(t||!e||!e.__esModule?N(n,"default",{value:e,
4
- enumerable:!0}):n,e)),He=e=>W(N({},"__esModule",{value:!0}),e);var dt={};Ue(dt,{FunctionServiceName:()=>i,FunctionServiceType:()=>p,MappingServiceName:()=>u,
5
- MappingServiceType:()=>F,PermissionServiceName:()=>w,PermissionServiceType:()=>g,
6
- createFunction:()=>st,createMapping:()=>ut,createPermission:()=>ct,getFunction:()=>it,
7
- getFunctionArn:()=>Ke,getFunctionName:()=>x,getPermission:()=>pt,isFunction:()=>xe,
8
- isMapping:()=>mt,isPermission:()=>Ce,registerTriggers:()=>lt});module.exports=He(
9
- dt);var z=require("@ez4/aws-common");var H=require("node:fs/promises"),ne=require("@aws-sdk/client-lambda"),P=require("@ez4/aws-common"),
10
- m=require("@ez4/utils"),j=require("@ez4/aws-identity");var a=require("@aws-sdk/client-lambda"),f=require("@ez4/aws-common");var Z=require("@ez4/aws-common"),k=require("@ez4/utils");var i="AWS:Lambda/Function",p="aws:lambda.function";var je=/[a-z][\w]+/i,Ve=e=>je.test(e),U=e=>{for(let t in e)if(!Ve(t))throw new Z.InvalidParameterError(
11
- i,`${t} is an invalid variable name .`)},h=e=>{let t={};for(let n in e)t[n]=(0,k.hashData)(
12
- e[n]);return t};var G=De(require("adm-zip"),1),O=require("node:fs/promises"),K=async(e,t)=>{let n=new G.default,
13
- r=await(0,O.readFile)(e);return n.addFile(t,r),n.toBufferPromise()};var S=new a.LambdaClient({}),D={maxWaitTime:90,client:S},_=async e=>{f.Logger.logCreate(
14
- i,e.functionName),e.variables&&U(e.variables);let t=await S.send(new a.CreateFunctionCommand(
1
+ "use strict";var be=Object.create;var b=Object.defineProperty;var Ne=Object.getOwnPropertyDescriptor;var Ie=Object.getOwnPropertyNames;var he=Object.getPrototypeOf,Me=Object.prototype.hasOwnProperty;var Te=(e,t)=>{for(var n in t)b(e,n,{get:t[n],enumerable:!0})},B=(e,t,n,r)=>{if(t&&
2
+ typeof t=="object"||typeof t=="function")for(let o of Ie(t))!Me.call(e,o)&&o!==n&&
3
+ b(e,o,{get:()=>t[o],enumerable:!(r=Ne(t,o))||r.enumerable});return e};var ze=(e,t,n)=>(n=e!=null?be(he(e)):{},B(t||!e||!e.__esModule?b(n,"default",{value:e,
4
+ enumerable:!0}):n,e)),Ue=e=>B(b({},"__esModule",{value:!0}),e);var yt={};Te(yt,{FunctionServiceName:()=>i,FunctionServiceType:()=>p,MappingServiceName:()=>u,
5
+ MappingServiceType:()=>S,PermissionServiceName:()=>f,PermissionServiceType:()=>l,
6
+ createFunction:()=>ot,createMapping:()=>pt,createPermission:()=>st,getFunction:()=>at,
7
+ getFunctionArn:()=>Ge,getFunctionName:()=>P,getPermission:()=>it,isFunction:()=>Fe,
8
+ isMapping:()=>ct,isPermission:()=>xe,registerTriggers:()=>mt});module.exports=Ue(
9
+ yt);var T=require("@ez4/aws-common");var ee=require("@aws-sdk/client-lambda"),F=require("@ez4/aws-common"),m=require("@ez4/utils"),
10
+ D=require("@ez4/aws-identity");var a=require("@aws-sdk/client-lambda"),g=require("@ez4/aws-common");var $=require("@ez4/aws-common"),W=require("@ez4/utils");var i="AWS:Lambda/Function",p="aws:lambda.function";var De=/[a-z][\w]+/i,He=e=>De.test(e),z=e=>{for(let t in e)if(!He(t))throw new $.InvalidParameterError(
11
+ i,`${t} is an invalid variable name .`)},N=e=>{let t={};for(let n in e)t[n]=(0,W.hashData)(
12
+ e[n]);return t};var Z=ze(require("adm-zip"),1),k=require("node:fs/promises"),G=async(e,t)=>{let n=new Z.default,
13
+ r=await(0,k.readFile)(e);return n.addFile(t,r),n.toBufferPromise()};var d=new a.LambdaClient({}),U={maxWaitTime:90,client:d},O=async e=>{g.Logger.logCreate(
14
+ i,e.functionName),e.variables&&z(e.variables);let t=await d.send(new a.CreateFunctionCommand(
15
15
  {Publish:!0,FunctionName:e.functionName,Description:e.description,MemorySize:e.memory,
16
- Timeout:e.timeout,Role:e.roleArn,PackageType:"Zip",Handler:te(e.handlerName),Runtime:"\
17
- nodejs20.x",Code:{ZipFile:await ee(e.sourceFile)},Environment:{Variables:e.variables},
16
+ Timeout:e.timeout,Role:e.roleArn,PackageType:"Zip",Handler:q(e.handlerName),Runtime:"\
17
+ nodejs20.x",Code:{ZipFile:await Y(e.sourceFile)},Environment:{Variables:e.variables},
18
18
  Tags:{...e.tags,ManagedBy:"EZ4"}})),n=t.FunctionName,r=t.FunctionArn;return await(0,a.waitUntilFunctionActive)(
19
- D,{FunctionName:n}),{functionName:n,functionArn:r}},J=async(e,t)=>{f.Logger.logTag(
20
- i,e),await S.send(new a.TagResourceCommand({Resource:e,Tags:{...t,ManagedBy:"EZ4"}}))},
21
- Q=async(e,t)=>{f.Logger.logUntag(i,e),await S.send(new a.UntagResourceCommand({Resource:e,
22
- TagKeys:t}))},X=async(e,t)=>{f.Logger.logUpdate(i,`${e} source code`);let{sourceFile:n}=t;
23
- await S.send(new a.UpdateFunctionCodeCommand({FunctionName:e,ZipFile:await ee(n),
24
- Publish:!0})),await(0,a.waitUntilFunctionUpdated)(D,{FunctionName:e})},Y=async(e,t)=>{
25
- f.Logger.logUpdate(i,`${e} configuration`),t.variables&&U(t.variables);let{handlerName:n}=t;
26
- await S.send(new a.UpdateFunctionConfigurationCommand({FunctionName:e,Description:t.
27
- description,MemorySize:t.memory,Timeout:t.timeout,Role:t.roleArn,...n&&{Handler:te(
28
- n)},Environment:{Variables:t.variables}})),await(0,a.waitUntilFunctionUpdated)(D,
29
- {FunctionName:e})},q=async e=>{f.Logger.logDelete(i,e),await S.send(new a.DeleteFunctionCommand(
30
- {FunctionName:e}))},ee=e=>K(e,"main.mjs"),te=e=>`main.${e}`;var re=()=>({equals:Le,create:ae,replace:$e,preview:Be,update:We,delete:Ze}),oe=e=>{
31
- let{parameters:t}=e;return t.variables&&(t.variables=h(t.variables)),e},Le=(e,t)=>!!e.
32
- result&&e.result.functionArn===t.result?.functionArn,Be=async(e,t)=>{let n=e.parameters,
19
+ U,{FunctionName:n}),{functionName:n,functionArn:r}},K=async(e,t)=>{g.Logger.logTag(
20
+ i,e),await d.send(new a.TagResourceCommand({Resource:e,Tags:{...t,ManagedBy:"EZ4"}}))},
21
+ _=async(e,t)=>{g.Logger.logUntag(i,e),await d.send(new a.UntagResourceCommand({Resource:e,
22
+ TagKeys:t}))},J=async(e,t)=>{g.Logger.logUpdate(i,`${e} source code`);let{sourceFile:n}=t;
23
+ await d.send(new a.UpdateFunctionCodeCommand({FunctionName:e,ZipFile:await Y(n),
24
+ Publish:!0})),await(0,a.waitUntilFunctionUpdated)(U,{FunctionName:e})},Q=async(e,t)=>{
25
+ g.Logger.logUpdate(i,`${e} configuration`),t.variables&&z(t.variables);let{handlerName:n}=t;
26
+ await d.send(new a.UpdateFunctionConfigurationCommand({FunctionName:e,Description:t.
27
+ description,MemorySize:t.memory,Timeout:t.timeout,Role:t.roleArn,...n&&{Handler:q(
28
+ n)},Environment:{Variables:t.variables}})),await(0,a.waitUntilFunctionUpdated)(U,
29
+ {FunctionName:e})},X=async e=>{g.Logger.logDelete(i,e),await d.send(new a.DeleteFunctionCommand(
30
+ {FunctionName:e}))},Y=e=>G(e,"main.mjs"),q=e=>`main.${e}`;var te=()=>({equals:je,create:re,replace:Le,preview:Ve,update:Be,delete:$e}),ne=e=>{
31
+ let{parameters:t}=e;return t.variables&&(t.variables=N(t.variables)),e},je=(e,t)=>!!e.
32
+ result&&e.result.functionArn===t.result?.functionArn,Ve=async(e,t)=>{let n=e.parameters,
33
33
  r=t.parameters,o=(0,m.deepCompare)({...n,dependencies:e.dependencies,sourceHash:await(0,m.hashFile)(
34
- n.sourceFile),...n.variables&&{variables:h(n.variables)}},{...r,dependencies:t.dependencies,
34
+ n.sourceFile),...n.variables&&{variables:N(n.variables)}},{...r,dependencies:t.dependencies,
35
35
  sourceHash:t.result?.sourceHash});if(o.counts)return{...o,name:n.functionName}},
36
- $e=async(e,t,n)=>{if(t.result)throw new P.ReplaceResourceError(i,e.entryId,t.entryId);
37
- return ae(e,n)},ae=async(e,t)=>{let n=e.parameters,r=n.functionName,o=(0,j.getRoleArn)(
38
- i,r,t),s=n.sourceFile,[l,y]=await Promise.all([(0,H.stat)(s),(0,m.hashFile)(s)]),
39
- d,b=await(0,m.waitFor)(async()=>{try{return await _({...n,sourceFile:s,roleArn:o})}catch(v){
40
- if(!(v instanceof ne.InvalidParameterValueException))throw v;return d=v,null}});
41
- if(!b)throw d;return oe(e),{functionArn:b.functionArn,functionName:b.functionName,
42
- sourceTime:l.mtime.getTime(),sourceHash:y,roleArn:o}},We=async(e,t,n)=>{let{parameters:r,
43
- result:o}=e;if(!o)return;let s=r.functionName,l=(0,j.getRoleArn)(i,s,n),y={...r,
44
- roleArn:l},d={...t.parameters,roleArn:t.result?.roleArn??l};await Promise.all([ke(
45
- s,y,d),Ge(o.functionArn,r,t.parameters)]);let{sourceTime:b,sourceHash:v}=await Oe(
46
- s,r,t.result);return oe(e),{...o,sourceTime:b,sourceHash:v,roleArn:l}},Ze=async e=>{
47
- let t=e.result;t&&await(0,P.waitDeletion)(()=>q(t.functionName))},ke=async(e,t,n)=>{
48
- let r={...t,...t.variables&&{variables:h(t.variables)}};!(0,m.deepEqual)(r,n,{sourceFile:!0,
49
- functionName:!0,tags:!0})&&await Y(e,t)},Ge=async(e,t,n)=>{await(0,P.applyTagUpdates)(
50
- t.tags,n.tags,r=>J(e,r),r=>Q(e,r))},Oe=async(e,t,n)=>{let r=t.sourceFile,o=n?.sourceTime??
51
- 0,s=n?.sourceHash,y=(await(0,H.stat)(r)).mtime.getTime();if(y>o){let d=await(0,m.hashFile)(
52
- r);return d!==s&&await X(e,t),{sourceTime:y,sourceHash:d}}return{sourceTime:o,sourceHash:s}};var pe=require("@ez4/aws-common");var V=require("@ez4/aws-common");var x=(e,t,n)=>{let r=n.getDependencies(p).at(0)?.result;if(!r?.functionName)throw new V.IncompleteResourceError(
53
- e,t,"functionName");return r.functionName},Ke=(e,t,n)=>{let r=n.getDependencies(
54
- p).at(0)?.result;if(!r?.functionArn)throw new V.IncompleteResourceError(e,t,"fun\
55
- ctionArn");return r.functionArn};var R=require("@aws-sdk/client-lambda"),L=require("@ez4/aws-common");var w="AWS:Lambda/Permission",g="aws:lambda.permission";var se=new R.LambdaClient({}),ie=async e=>{L.Logger.logCreate(w,e.functionName);
56
- let t=e.statementId??`SID${Date.now()}`;return await se.send(new R.AddPermissionCommand(
36
+ Le=async(e,t,n)=>{if(t.result)throw new F.ReplaceResourceError(i,e.entryId,t.entryId);
37
+ return re(e,n)},re=async(e,t)=>{let n=e.parameters,r=n.functionName,o=(0,D.getRoleArn)(
38
+ i,r,t),s=n.sourceFile,y=await(0,m.hashFile)(s),w,A=await(0,m.waitFor)(async()=>{
39
+ try{return await O({...n,sourceFile:s,roleArn:o})}catch(v){if(!(v instanceof ee.InvalidParameterValueException))
40
+ throw v;return w=v,null}});if(!A)throw w;return ne(e),{functionArn:A.functionArn,
41
+ functionName:A.functionName,sourceHash:y,roleArn:o}},Be=async(e,t,n)=>{let{parameters:r,
42
+ result:o}=e;if(!o)return;let s=r.functionName,y=(0,D.getRoleArn)(i,s,n),w={...r,
43
+ roleArn:y},A={...t.parameters,roleArn:t.result?.roleArn??y};await Promise.all([We(
44
+ s,w,A),Ze(o.functionArn,r,t.parameters)]);let v=await ke(s,r,t.result);return ne(
45
+ e),{...o,sourceHash:v,roleArn:y}},$e=async e=>{let t=e.result;t&&await(0,F.waitDeletion)(
46
+ ()=>X(t.functionName))},We=async(e,t,n)=>{let r={...t,...t.variables&&{variables:N(
47
+ t.variables)}};!(0,m.deepEqual)(r,n,{sourceFile:!0,functionName:!0,tags:!0})&&await Q(
48
+ e,t)},Ze=async(e,t,n)=>{await(0,F.applyTagUpdates)(t.tags,n.tags,r=>K(e,r),r=>_(
49
+ e,r))},ke=async(e,t,n)=>{let r=t.sourceFile,o=await(0,m.hashFile)(r),s=n?.sourceHash;
50
+ return o!==s?(await J(e,t),o):s};var ie=require("@ez4/aws-common");var H=require("@ez4/aws-common");var P=(e,t,n)=>{let r=n.getDependencies(p).at(0)?.result;if(!r?.functionName)throw new H.IncompleteResourceError(
51
+ e,t,"functionName");return r.functionName},Ge=(e,t,n)=>{let r=n.getDependencies(
52
+ p).at(0)?.result;if(!r?.functionArn)throw new H.IncompleteResourceError(e,t,"fun\
53
+ ctionArn");return r.functionArn};var x=require("@aws-sdk/client-lambda"),j=require("@ez4/aws-common");var f="AWS:Lambda/Permission",l="aws:lambda.permission";var oe=new x.LambdaClient({}),ae=async e=>{j.Logger.logCreate(f,e.functionName);
54
+ let t=e.statementId??`SID${Date.now()}`;return await oe.send(new x.AddPermissionCommand(
57
55
  {StatementId:t,FunctionName:e.functionName,SourceArn:e.sourceArn,Principal:e.principal,
58
- Action:e.action})),{statementId:t}},ce=async(e,t)=>{L.Logger.logDelete(w,e),await se.
59
- send(new R.RemovePermissionCommand({FunctionName:e,StatementId:t}))};var me=()=>({equals:_e,create:ue,replace:Qe,preview:Je,update:Xe,delete:Ye}),_e=(e,t)=>!!e.
60
- result&&e.result.functionName===t.result?.functionName,Je=async(e,t)=>{},Qe=async(e,t,n)=>{
61
- if(t.result)throw new pe.ReplaceResourceError(w,e.entryId,t.entryId);return ue(e,
62
- n)},ue=async(e,t)=>{let n=e.parameters,r=x(w,"permission",t),o=await n.getPermission(
63
- t);return{statementId:(await ie({functionName:r,principal:o.principal,sourceArn:o.
64
- sourceArn,action:"lambda:InvokeFunction"})).statementId,functionName:r}},Xe=async()=>{},
65
- Ye=async e=>{let t=e.result;t&&await ce(t.functionName,t.statementId)};var Se=require("@ez4/aws-common"),M=require("@ez4/utils");var c=require("@aws-sdk/client-lambda"),C=require("@ez4/aws-common"),le=require("@ez4/utils");var u="AWS:Lambda/Mapping",F="aws:lambda.mapping";var I=new c.LambdaClient({}),ye=async e=>{C.Logger.logCreate(u,e.functionName);let{
66
- service:t}=(0,C.parseArn)(e.sourceArn),{batch:n}=e,o=(await I.send(new c.CreateEventSourceMappingCommand(
56
+ Action:e.action})),{statementId:t}},se=async(e,t)=>{j.Logger.logDelete(f,e),await oe.
57
+ send(new x.RemovePermissionCommand({FunctionName:e,StatementId:t}))};var ce=()=>({equals:Oe,create:pe,replace:_e,preview:Ke,update:Je,delete:Qe}),Oe=(e,t)=>!!e.
58
+ result&&e.result.functionName===t.result?.functionName,Ke=async(e,t)=>{},_e=async(e,t,n)=>{
59
+ if(t.result)throw new ie.ReplaceResourceError(f,e.entryId,t.entryId);return pe(e,
60
+ n)},pe=async(e,t)=>{let n=e.parameters,r=P(f,"permission",t),o=await n.getPermission(
61
+ t);return{statementId:(await ae({functionName:r,principal:o.principal,sourceArn:o.
62
+ sourceArn,action:"lambda:InvokeFunction"})).statementId,functionName:r}},Je=async()=>{},
63
+ Qe=async e=>{let t=e.result;t&&await se(t.functionName,t.statementId)};var de=require("@ez4/aws-common"),h=require("@ez4/utils");var c=require("@aws-sdk/client-lambda"),R=require("@ez4/aws-common"),me=require("@ez4/utils");var u="AWS:Lambda/Mapping",S="aws:lambda.mapping";var I=new c.LambdaClient({}),ue=async e=>{R.Logger.logCreate(u,e.functionName);let{
64
+ service:t}=(0,R.parseArn)(e.sourceArn),{batch:n}=e,o=(await I.send(new c.CreateEventSourceMappingCommand(
67
65
  {FunctionName:e.functionName,EventSourceArn:e.sourceArn,Enabled:e.enabled,...t===
68
66
  "dynamodb"&&{StartingPosition:c.EventSourcePosition.LATEST},...n&&{BatchSize:n.batchSize,
69
- MaximumBatchingWindowInSeconds:n.maxWindow}}))).UUID;return await fe(o),{eventId:o}},
70
- ge=async(e,t)=>{C.Logger.logUpdate(u,e);let{batch:n}=t;await I.send(new c.UpdateEventSourceMappingCommand(
67
+ MaximumBatchingWindowInSeconds:n.maxWindow}}))).UUID;return await ge(o),{eventId:o}},
68
+ le=async(e,t)=>{R.Logger.logUpdate(u,e);let{batch:n}=t;await I.send(new c.UpdateEventSourceMappingCommand(
71
69
  {UUID:e,FunctionName:t.functionName,Enabled:t.enabled,...n&&{BatchSize:n.batchSize,
72
- MaximumBatchingWindowInSeconds:n.maxWindow}})),await fe(e)},de=async e=>{C.Logger.
73
- logDelete(u,e),await I.send(new c.DeleteEventSourceMappingCommand({UUID:e}))},qe=async e=>(await I.
74
- send(new c.GetEventSourceMappingCommand({UUID:e}))).State,fe=async e=>{let t=new Set(
75
- ["Enabled","Disabled"]);await(0,le.waitFor)(async()=>{let n=await qe(e);return t.
76
- has(n)})};var we=()=>({equals:et,create:Fe,replace:nt,preview:tt,update:rt,delete:ot}),et=(e,t)=>!!e.
77
- result&&e.result.eventId===t.result?.eventId,tt=async(e,t)=>{let n={...e.parameters,
78
- dependencies:e.dependencies},r={...t.parameters,dependencies:t.dependencies},o=(0,M.deepCompare)(
79
- n,r,{getSourceArn:!0});return o.counts?o:void 0},nt=async(e,t,n)=>{if(t.result)throw new Se.ReplaceResourceError(
80
- u,e.entryId,t.entryId);return Fe(e,n)},Fe=async(e,t)=>{let n=e.parameters,r=x(u,
81
- "mapping",t),o=await n.getSourceArn(t);return{eventId:(await ye({...e.parameters,
82
- functionName:r,sourceArn:o})).eventId,functionName:r,sourceArn:o}},rt=async(e,t,n)=>{
83
- let r=e.result;if(!r)return;let o=x(u,"mapping",n),s=t.result?.functionName??r.functionName,
84
- l={...e.parameters,functionName:o},y={...t.parameters,functionName:s};return await at(
85
- r.eventId,l,y),{...r,functionName:o}},ot=async e=>{let t=e.result;t&&await de(t.
86
- eventId)},at=async(e,t,n)=>{(0,M.deepEqual)(t,n,{getSourceArn:!0})||await ge(e,t)};var E=require("@ez4/utils"),Pe=require("@ez4/stateful");var xe=e=>e.type===p,st=(e,t,n)=>{let r=(0,E.toKebabCase)(n.functionName),o=(0,E.hashData)(
87
- p,t.entryId,r);return(0,Pe.attachEntry)(e,{type:p,entryId:o,dependencies:[t.entryId],
88
- parameters:{...n,functionName:r}})},it=(e,t,n)=>{let r=(0,E.toKebabCase)(n),o=(0,E.hashData)(
89
- p,t.entryId,r),s=e[o];return s&&xe(s)?s:null};var B=require("@ez4/utils"),Re=require("@ez4/stateful");var Ce=e=>e.type===g,ct=(e,t,n,r)=>{let o=(0,B.hashData)(g,t.entryId,n.entryId);
90
- return(0,Re.attachEntry)(e,{type:g,entryId:o,dependencies:[t.entryId,n.entryId],
91
- parameters:r})},pt=(e,t,n)=>{let r=(0,B.hashData)(g,t.entryId,n.entryId),o=e[r];
92
- return o&&Ce(o)?o:null};var Ee=require("@ez4/utils"),Ae=require("@ez4/stateful");var mt=e=>e.type===F,ut=(e,t,n,r)=>{let o=(0,Ee.hashData)(F,t.entryId,n.entryId);
93
- return(0,Ae.attachEntry)(e,{type:F,entryId:o,dependencies:[t.entryId,n.entryId],
94
- parameters:r})};var ve=require("@ez4/aws-common"),T=require("@ez4/aws-identity"),Ne=require("@ez4/project/library");var A=require("@ez4/aws-identity"),be=async e=>{let[t,n]=await Promise.all([(0,A.getRegion)(),
95
- (0,A.getAccountId)()]);return(0,A.createPolicyDocument)([{permissions:["logs:Cre\
70
+ MaximumBatchingWindowInSeconds:n.maxWindow}})),await ge(e)},ye=async e=>{R.Logger.
71
+ logDelete(u,e),await I.send(new c.DeleteEventSourceMappingCommand({UUID:e}))},Xe=async e=>(await I.
72
+ send(new c.GetEventSourceMappingCommand({UUID:e}))).State,ge=async e=>{let t=new Set(
73
+ ["Enabled","Disabled"]);await(0,me.waitFor)(async()=>{let n=await Xe(e);return t.
74
+ has(n)})};var fe=()=>({equals:Ye,create:Se,replace:et,preview:qe,update:tt,delete:nt}),Ye=(e,t)=>!!e.
75
+ result&&e.result.eventId===t.result?.eventId,qe=async(e,t)=>{let n={...e.parameters,
76
+ dependencies:e.dependencies},r={...t.parameters,dependencies:t.dependencies},o=(0,h.deepCompare)(
77
+ n,r,{getSourceArn:!0});return o.counts?o:void 0},et=async(e,t,n)=>{if(t.result)throw new de.ReplaceResourceError(
78
+ u,e.entryId,t.entryId);return Se(e,n)},Se=async(e,t)=>{let n=e.parameters,r=P(u,
79
+ "mapping",t),o=await n.getSourceArn(t);return{eventId:(await ue({...e.parameters,
80
+ functionName:r,sourceArn:o})).eventId,functionName:r,sourceArn:o}},tt=async(e,t,n)=>{
81
+ let r=e.result;if(!r)return;let o=P(u,"mapping",n),s=t.result?.functionName??r.functionName,
82
+ y={...e.parameters,functionName:o},w={...t.parameters,functionName:s};return await rt(
83
+ r.eventId,y,w),{...r,functionName:o}},nt=async e=>{let t=e.result;t&&await ye(t.
84
+ eventId)},rt=async(e,t,n)=>{(0,h.deepEqual)(t,n,{getSourceArn:!0})||await le(e,t)};var C=require("@ez4/utils"),we=require("@ez4/stateful");var Fe=e=>e.type===p,ot=(e,t,n)=>{let r=(0,C.toKebabCase)(n.functionName),o=(0,C.hashData)(
85
+ p,t.entryId,r);return(0,we.attachEntry)(e,{type:p,entryId:o,dependencies:[t.entryId],
86
+ parameters:{...n,functionName:r}})},at=(e,t,n)=>{let r=(0,C.toKebabCase)(n),o=(0,C.hashData)(
87
+ p,t.entryId,r),s=e[o];return s&&Fe(s)?s:null};var V=require("@ez4/utils"),Pe=require("@ez4/stateful");var xe=e=>e.type===l,st=(e,t,n,r)=>{let o=(0,V.hashData)(l,t.entryId,n.entryId);
88
+ return(0,Pe.attachEntry)(e,{type:l,entryId:o,dependencies:[t.entryId,n.entryId],
89
+ parameters:r})},it=(e,t,n)=>{let r=(0,V.hashData)(l,t.entryId,n.entryId),o=e[r];
90
+ return o&&xe(o)?o:null};var Re=require("@ez4/utils"),Ce=require("@ez4/stateful");var ct=e=>e.type===S,pt=(e,t,n,r)=>{let o=(0,Re.hashData)(S,t.entryId,n.entryId);
91
+ return(0,Ce.attachEntry)(e,{type:S,entryId:o,dependencies:[t.entryId,n.entryId],
92
+ parameters:r})};var Ae=require("@ez4/aws-common"),M=require("@ez4/aws-identity"),ve=require("@ez4/project/library");var E=require("@ez4/aws-identity"),Ee=async e=>{let[t,n]=await Promise.all([(0,E.getRegion)(),
93
+ (0,E.getAccountId)()]);return(0,E.createPolicyDocument)([{permissions:["logs:Cre\
96
94
  ateLogGroup","logs:CreateLogStream","logs:PutLogEvents"],resourceIds:[`arn:aws:l\
97
- ogs:${t}:${n}:log-group:/aws/lambda/${e}-*:*`]}])};var $=!1,lt=()=>($||((0,ve.registerTriggers)(),(0,T.registerTriggers)(),(0,Ne.createTrigger)(
98
- "@ez4/aws-function",{"deploy:prepareIdentityAccount":yt,"deploy:prepareExecution\
99
- Policy":gt}),$=!0),$),yt=()=>[{account:"lambda.amazonaws.com"}],gt=async e=>{let{
100
- state:t,options:n}=e,{resourcePrefix:r,projectName:o}=n;return(0,T.createPolicy)(
101
- t,{policyName:`${r}-${o}-lambda-policy`,policyDocument:await be(r)})};(0,z.registerProvider)(p,re());(0,z.registerProvider)(g,me());(0,z.registerProvider)(
102
- F,we());0&&(module.exports={FunctionServiceName,FunctionServiceType,MappingServiceName,MappingServiceType,
95
+ ogs:${t}:${n}:log-group:/aws/lambda/${e}-*:*`]}])};var L=!1,mt=()=>(L||((0,Ae.registerTriggers)(),(0,M.registerTriggers)(),(0,ve.createTrigger)(
96
+ "@ez4/aws-function",{"deploy:prepareIdentityAccount":ut,"deploy:prepareExecution\
97
+ Policy":lt}),L=!0),L),ut=()=>[{account:"lambda.amazonaws.com"}],lt=async e=>{let{
98
+ state:t,options:n}=e,{resourcePrefix:r,projectName:o}=n;return(0,M.createPolicy)(
99
+ t,{policyName:`${r}-${o}-lambda-policy`,policyDocument:await Ee(r)})};(0,T.registerProvider)(p,te());(0,T.registerProvider)(l,ce());(0,T.registerProvider)(
100
+ S,fe());0&&(module.exports={FunctionServiceName,FunctionServiceType,MappingServiceName,MappingServiceType,
103
101
  PermissionServiceName,PermissionServiceType,createFunction,createMapping,createPermission,
104
102
  getFunction,getFunctionArn,getFunctionName,getPermission,isFunction,isMapping,isPermission,
105
103
  registerTriggers});
package/dist/main.mjs CHANGED
@@ -1,96 +1,94 @@
1
- import{registerProvider as v}from"@ez4/aws-common";import{stat as V}from"node:fs/promises";import{InvalidParameterValueException as Pe}from"@aws-sdk/client-lambda";
2
- import{applyTagUpdates as xe,ReplaceResourceError as Re,waitDeletion as Ce}from"@ez4/aws-common";
3
- import{deepCompare as Ee,deepEqual as Ae,hashFile as E,waitFor as be}from"@ez4/utils";
4
- import{getRoleArn as L}from"@ez4/aws-identity";import{CreateFunctionCommand as le,DeleteFunctionCommand as ye,LambdaClient as ge,
5
- TagResourceCommand as de,UntagResourceCommand as fe,UpdateFunctionCodeCommand as Se,
6
- UpdateFunctionConfigurationCommand as we,waitUntilFunctionActive as Fe,waitUntilFunctionUpdated as h}from"@aws-sdk/client-lambda";
7
- import{Logger as g}from"@ez4/aws-common";import{InvalidParameterError as se}from"@ez4/aws-common";import{hashData as ie}from"@ez4/utils";var s="AWS:Lambda/Function",i="aws:lambda.function";var ce=/[a-z][\w]+/i,pe=e=>ce.test(e),R=e=>{for(let t in e)if(!pe(t))throw new se(
8
- s,`${t} is an invalid variable name .`)},P=e=>{let t={};for(let n in e)t[n]=ie(e[n]);
9
- return t};import me from"adm-zip";import{readFile as ue}from"node:fs/promises";var N=async(e,t)=>{
10
- let n=new me,r=await ue(e);return n.addFile(t,r),n.toBufferPromise()};var l=new ge({}),C={maxWaitTime:90,client:l},I=async e=>{g.logCreate(s,e.functionName),
11
- e.variables&&R(e.variables);let t=await l.send(new le({Publish:!0,FunctionName:e.
1
+ import{registerProvider as v}from"@ez4/aws-common";import{InvalidParameterValueException as we}from"@aws-sdk/client-lambda";import{
2
+ applyTagUpdates as Fe,ReplaceResourceError as Pe,waitDeletion as xe}from"@ez4/aws-common";
3
+ import{deepCompare as Re,deepEqual as Ce,hashFile as C,waitFor as Ee}from"@ez4/utils";
4
+ import{getRoleArn as j}from"@ez4/aws-identity";import{CreateFunctionCommand as me,DeleteFunctionCommand as ue,LambdaClient as le,
5
+ TagResourceCommand as ye,UntagResourceCommand as ge,UpdateFunctionCodeCommand as de,
6
+ UpdateFunctionConfigurationCommand as fe,waitUntilFunctionActive as Se,waitUntilFunctionUpdated as N}from"@aws-sdk/client-lambda";
7
+ import{Logger as y}from"@ez4/aws-common";import{InvalidParameterError as oe}from"@ez4/aws-common";import{hashData as ae}from"@ez4/utils";var s="AWS:Lambda/Function",i="aws:lambda.function";var se=/[a-z][\w]+/i,ie=e=>se.test(e),x=e=>{for(let t in e)if(!ie(t))throw new oe(
8
+ s,`${t} is an invalid variable name .`)},F=e=>{let t={};for(let n in e)t[n]=ae(e[n]);
9
+ return t};import ce from"adm-zip";import{readFile as pe}from"node:fs/promises";var b=async(e,t)=>{
10
+ let n=new ce,r=await pe(e);return n.addFile(t,r),n.toBufferPromise()};var m=new le({}),R={maxWaitTime:90,client:m},I=async e=>{y.logCreate(s,e.functionName),
11
+ e.variables&&x(e.variables);let t=await m.send(new me({Publish:!0,FunctionName:e.
12
12
  functionName,Description:e.description,MemorySize:e.memory,Timeout:e.timeout,Role:e.
13
- roleArn,PackageType:"Zip",Handler:j(e.handlerName),Runtime:"nodejs20.x",Code:{ZipFile:await H(
13
+ roleArn,PackageType:"Zip",Handler:H(e.handlerName),Runtime:"nodejs20.x",Code:{ZipFile:await D(
14
14
  e.sourceFile)},Environment:{Variables:e.variables},Tags:{...e.tags,ManagedBy:"EZ\
15
- 4"}})),n=t.FunctionName,r=t.FunctionArn;return await Fe(C,{FunctionName:n}),{functionName:n,
16
- functionArn:r}},M=async(e,t)=>{g.logTag(s,e),await l.send(new de({Resource:e,Tags:{
17
- ...t,ManagedBy:"EZ4"}}))},T=async(e,t)=>{g.logUntag(s,e),await l.send(new fe({Resource:e,
18
- TagKeys:t}))},z=async(e,t)=>{g.logUpdate(s,`${e} source code`);let{sourceFile:n}=t;
19
- await l.send(new Se({FunctionName:e,ZipFile:await H(n),Publish:!0})),await h(C,{
20
- FunctionName:e})},U=async(e,t)=>{g.logUpdate(s,`${e} configuration`),t.variables&&
21
- R(t.variables);let{handlerName:n}=t;await l.send(new we({FunctionName:e,Description:t.
22
- description,MemorySize:t.memory,Timeout:t.timeout,Role:t.roleArn,...n&&{Handler:j(
23
- n)},Environment:{Variables:t.variables}})),await h(C,{FunctionName:e})},D=async e=>{
24
- g.logDelete(s,e),await l.send(new ye({FunctionName:e}))},H=e=>N(e,"main.mjs"),j=e=>`\
25
- main.${e}`;var B=()=>({equals:ve,create:W,replace:he,preview:Ne,update:Ie,delete:Me}),$=e=>{
26
- let{parameters:t}=e;return t.variables&&(t.variables=P(t.variables)),e},ve=(e,t)=>!!e.
27
- result&&e.result.functionArn===t.result?.functionArn,Ne=async(e,t)=>{let n=e.parameters,
28
- r=t.parameters,o=Ee({...n,dependencies:e.dependencies,sourceHash:await E(n.sourceFile),
29
- ...n.variables&&{variables:P(n.variables)}},{...r,dependencies:t.dependencies,sourceHash:t.
30
- result?.sourceHash});if(o.counts)return{...o,name:n.functionName}},he=async(e,t,n)=>{
31
- if(t.result)throw new Re(s,e.entryId,t.entryId);return W(e,n)},W=async(e,t)=>{let n=e.
32
- parameters,r=n.functionName,o=L(s,r,t),a=n.sourceFile,[c,p]=await Promise.all([V(
33
- a),E(a)]),u,S=await be(async()=>{try{return await I({...n,sourceFile:a,roleArn:o})}catch(w){
34
- if(!(w instanceof Pe))throw w;return u=w,null}});if(!S)throw u;return $(e),{functionArn:S.
35
- functionArn,functionName:S.functionName,sourceTime:c.mtime.getTime(),sourceHash:p,
36
- roleArn:o}},Ie=async(e,t,n)=>{let{parameters:r,result:o}=e;if(!o)return;let a=r.
37
- functionName,c=L(s,a,n),p={...r,roleArn:c},u={...t.parameters,roleArn:t.result?.
38
- roleArn??c};await Promise.all([Te(a,p,u),ze(o.functionArn,r,t.parameters)]);let{
39
- sourceTime:S,sourceHash:w}=await Ue(a,r,t.result);return $(e),{...o,sourceTime:S,
40
- sourceHash:w,roleArn:c}},Me=async e=>{let t=e.result;t&&await Ce(()=>D(t.functionName))},
41
- Te=async(e,t,n)=>{let r={...t,...t.variables&&{variables:P(t.variables)}};!Ae(r,
42
- n,{sourceFile:!0,functionName:!0,tags:!0})&&await U(e,t)},ze=async(e,t,n)=>{await xe(
43
- t.tags,n.tags,r=>M(e,r),r=>T(e,r))},Ue=async(e,t,n)=>{let r=t.sourceFile,o=n?.sourceTime??
44
- 0,a=n?.sourceHash,p=(await V(r)).mtime.getTime();if(p>o){let u=await E(r);return u!==
45
- a&&await z(e,t),{sourceTime:p,sourceHash:u}}return{sourceTime:o,sourceHash:a}};import{ReplaceResourceError as Ve}from"@ez4/aws-common";import{IncompleteResourceError as Z}from"@ez4/aws-common";var F=(e,t,n)=>{let r=n.getDependencies(i).at(0)?.result;if(!r?.functionName)throw new Z(
46
- e,t,"functionName");return r.functionName},_t=(e,t,n)=>{let r=n.getDependencies(
47
- i).at(0)?.result;if(!r?.functionArn)throw new Z(e,t,"functionArn");return r.functionArn};import{AddPermissionCommand as De,LambdaClient as He,RemovePermissionCommand as je}from"@aws-sdk/client-lambda";
48
- import{Logger as k}from"@ez4/aws-common";var d="AWS:Lambda/Permission",y="aws:lambda.permission";var G=new He({}),O=async e=>{k.logCreate(d,e.functionName);let t=e.statementId??
49
- `SID${Date.now()}`;return await G.send(new De({StatementId:t,FunctionName:e.functionName,
15
+ 4"}})),n=t.FunctionName,r=t.FunctionArn;return await Se(R,{FunctionName:n}),{functionName:n,
16
+ functionArn:r}},h=async(e,t)=>{y.logTag(s,e),await m.send(new ye({Resource:e,Tags:{
17
+ ...t,ManagedBy:"EZ4"}}))},M=async(e,t)=>{y.logUntag(s,e),await m.send(new ge({Resource:e,
18
+ TagKeys:t}))},T=async(e,t)=>{y.logUpdate(s,`${e} source code`);let{sourceFile:n}=t;
19
+ await m.send(new de({FunctionName:e,ZipFile:await D(n),Publish:!0})),await N(R,{
20
+ FunctionName:e})},z=async(e,t)=>{y.logUpdate(s,`${e} configuration`),t.variables&&
21
+ x(t.variables);let{handlerName:n}=t;await m.send(new fe({FunctionName:e,Description:t.
22
+ description,MemorySize:t.memory,Timeout:t.timeout,Role:t.roleArn,...n&&{Handler:H(
23
+ n)},Environment:{Variables:t.variables}})),await N(R,{FunctionName:e})},U=async e=>{
24
+ y.logDelete(s,e),await m.send(new ue({FunctionName:e}))},D=e=>b(e,"main.mjs"),H=e=>`\
25
+ main.${e}`;var V=()=>({equals:Ae,create:B,replace:be,preview:ve,update:Ne,delete:Ie}),L=e=>{
26
+ let{parameters:t}=e;return t.variables&&(t.variables=F(t.variables)),e},Ae=(e,t)=>!!e.
27
+ result&&e.result.functionArn===t.result?.functionArn,ve=async(e,t)=>{let n=e.parameters,
28
+ r=t.parameters,o=Re({...n,dependencies:e.dependencies,sourceHash:await C(n.sourceFile),
29
+ ...n.variables&&{variables:F(n.variables)}},{...r,dependencies:t.dependencies,sourceHash:t.
30
+ result?.sourceHash});if(o.counts)return{...o,name:n.functionName}},be=async(e,t,n)=>{
31
+ if(t.result)throw new Pe(s,e.entryId,t.entryId);return B(e,n)},B=async(e,t)=>{let n=e.
32
+ parameters,r=n.functionName,o=j(s,r,t),a=n.sourceFile,p=await C(a),l,f=await Ee(
33
+ async()=>{try{return await I({...n,sourceFile:a,roleArn:o})}catch(S){if(!(S instanceof
34
+ we))throw S;return l=S,null}});if(!f)throw l;return L(e),{functionArn:f.functionArn,
35
+ functionName:f.functionName,sourceHash:p,roleArn:o}},Ne=async(e,t,n)=>{let{parameters:r,
36
+ result:o}=e;if(!o)return;let a=r.functionName,p=j(s,a,n),l={...r,roleArn:p},f={...t.
37
+ parameters,roleArn:t.result?.roleArn??p};await Promise.all([he(a,l,f),Me(o.functionArn,
38
+ r,t.parameters)]);let S=await Te(a,r,t.result);return L(e),{...o,sourceHash:S,roleArn:p}},
39
+ Ie=async e=>{let t=e.result;t&&await xe(()=>U(t.functionName))},he=async(e,t,n)=>{
40
+ let r={...t,...t.variables&&{variables:F(t.variables)}};!Ce(r,n,{sourceFile:!0,functionName:!0,
41
+ tags:!0})&&await z(e,t)},Me=async(e,t,n)=>{await Fe(t.tags,n.tags,r=>h(e,r),r=>M(
42
+ e,r))},Te=async(e,t,n)=>{let r=t.sourceFile,o=await C(r),a=n?.sourceHash;return o!==
43
+ a?(await T(e,t),o):a};import{ReplaceResourceError as He}from"@ez4/aws-common";import{IncompleteResourceError as $}from"@ez4/aws-common";var w=(e,t,n)=>{let r=n.getDependencies(i).at(0)?.result;if(!r?.functionName)throw new $(
44
+ e,t,"functionName");return r.functionName},Gt=(e,t,n)=>{let r=n.getDependencies(
45
+ i).at(0)?.result;if(!r?.functionArn)throw new $(e,t,"functionArn");return r.functionArn};import{AddPermissionCommand as ze,LambdaClient as Ue,RemovePermissionCommand as De}from"@aws-sdk/client-lambda";
46
+ import{Logger as W}from"@ez4/aws-common";var g="AWS:Lambda/Permission",u="aws:lambda.permission";var Z=new Ue({}),k=async e=>{W.logCreate(g,e.functionName);let t=e.statementId??
47
+ `SID${Date.now()}`;return await Z.send(new ze({StatementId:t,FunctionName:e.functionName,
50
48
  SourceArn:e.sourceArn,Principal:e.principal,Action:e.action})),{statementId:t}},
51
- K=async(e,t)=>{k.logDelete(d,e),await G.send(new je({FunctionName:e,StatementId:t}))};var _=()=>({equals:Le,create:J,replace:$e,preview:Be,update:We,delete:Ze}),Le=(e,t)=>!!e.
52
- result&&e.result.functionName===t.result?.functionName,Be=async(e,t)=>{},$e=async(e,t,n)=>{
53
- if(t.result)throw new Ve(d,e.entryId,t.entryId);return J(e,n)},J=async(e,t)=>{let n=e.
54
- parameters,r=F(d,"permission",t),o=await n.getPermission(t);return{statementId:(await O(
49
+ G=async(e,t)=>{W.logDelete(g,e),await Z.send(new De({FunctionName:e,StatementId:t}))};var O=()=>({equals:je,create:K,replace:Le,preview:Ve,update:Be,delete:$e}),je=(e,t)=>!!e.
50
+ result&&e.result.functionName===t.result?.functionName,Ve=async(e,t)=>{},Le=async(e,t,n)=>{
51
+ if(t.result)throw new He(g,e.entryId,t.entryId);return K(e,n)},K=async(e,t)=>{let n=e.
52
+ parameters,r=w(g,"permission",t),o=await n.getPermission(t);return{statementId:(await k(
55
53
  {functionName:r,principal:o.principal,sourceArn:o.sourceArn,action:"lambda:Invok\
56
- eFunction"})).statementId,functionName:r}},We=async()=>{},Ze=async e=>{let t=e.result;
57
- t&&await K(t.functionName,t.statementId)};import{ReplaceResourceError as qe}from"@ez4/aws-common";import{deepCompare as et,
58
- deepEqual as tt}from"@ez4/utils";import{CreateEventSourceMappingCommand as ke,UpdateEventSourceMappingCommand as Ge,
59
- DeleteEventSourceMappingCommand as Oe,GetEventSourceMappingCommand as Ke,EventSourcePosition as _e,
60
- LambdaClient as Je}from"@aws-sdk/client-lambda";import{Logger as A,parseArn as Qe}from"@ez4/aws-common";
61
- import{waitFor as Xe}from"@ez4/utils";var m="AWS:Lambda/Mapping",f="aws:lambda.mapping";var x=new Je({}),Q=async e=>{A.logCreate(m,e.functionName);let{service:t}=Qe(e.sourceArn),
62
- {batch:n}=e,o=(await x.send(new ke({FunctionName:e.functionName,EventSourceArn:e.
63
- sourceArn,Enabled:e.enabled,...t==="dynamodb"&&{StartingPosition:_e.LATEST},...n&&
64
- {BatchSize:n.batchSize,MaximumBatchingWindowInSeconds:n.maxWindow}}))).UUID;return await q(
65
- o),{eventId:o}},X=async(e,t)=>{A.logUpdate(m,e);let{batch:n}=t;await x.send(new Ge(
54
+ eFunction"})).statementId,functionName:r}},Be=async()=>{},$e=async e=>{let t=e.result;
55
+ t&&await G(t.functionName,t.statementId)};import{ReplaceResourceError as Xe}from"@ez4/aws-common";import{deepCompare as Ye,
56
+ deepEqual as qe}from"@ez4/utils";import{CreateEventSourceMappingCommand as We,UpdateEventSourceMappingCommand as Ze,
57
+ DeleteEventSourceMappingCommand as ke,GetEventSourceMappingCommand as Ge,EventSourcePosition as Oe,
58
+ LambdaClient as Ke}from"@aws-sdk/client-lambda";import{Logger as E,parseArn as _e}from"@ez4/aws-common";
59
+ import{waitFor as Je}from"@ez4/utils";var c="AWS:Lambda/Mapping",d="aws:lambda.mapping";var P=new Ke({}),_=async e=>{E.logCreate(c,e.functionName);let{service:t}=_e(e.sourceArn),
60
+ {batch:n}=e,o=(await P.send(new We({FunctionName:e.functionName,EventSourceArn:e.
61
+ sourceArn,Enabled:e.enabled,...t==="dynamodb"&&{StartingPosition:Oe.LATEST},...n&&
62
+ {BatchSize:n.batchSize,MaximumBatchingWindowInSeconds:n.maxWindow}}))).UUID;return await X(
63
+ o),{eventId:o}},J=async(e,t)=>{E.logUpdate(c,e);let{batch:n}=t;await P.send(new Ze(
66
64
  {UUID:e,FunctionName:t.functionName,Enabled:t.enabled,...n&&{BatchSize:n.batchSize,
67
- MaximumBatchingWindowInSeconds:n.maxWindow}})),await q(e)},Y=async e=>{A.logDelete(
68
- m,e),await x.send(new Oe({UUID:e}))},Ye=async e=>(await x.send(new Ke({UUID:e}))).
69
- State,q=async e=>{let t=new Set(["Enabled","Disabled"]);await Xe(async()=>{let n=await Ye(
70
- e);return t.has(n)})};var ee=()=>({equals:nt,create:te,replace:ot,preview:rt,update:at,delete:st}),nt=(e,t)=>!!e.
71
- result&&e.result.eventId===t.result?.eventId,rt=async(e,t)=>{let n={...e.parameters,
72
- dependencies:e.dependencies},r={...t.parameters,dependencies:t.dependencies},o=et(
73
- n,r,{getSourceArn:!0});return o.counts?o:void 0},ot=async(e,t,n)=>{if(t.result)throw new qe(
74
- m,e.entryId,t.entryId);return te(e,n)},te=async(e,t)=>{let n=e.parameters,r=F(m,
75
- "mapping",t),o=await n.getSourceArn(t);return{eventId:(await Q({...e.parameters,
76
- functionName:r,sourceArn:o})).eventId,functionName:r,sourceArn:o}},at=async(e,t,n)=>{
77
- let r=e.result;if(!r)return;let o=F(m,"mapping",n),a=t.result?.functionName??r.functionName,
78
- c={...e.parameters,functionName:o},p={...t.parameters,functionName:a};return await it(
79
- r.eventId,c,p),{...r,functionName:o}},st=async e=>{let t=e.result;t&&await Y(t.eventId)},
80
- it=async(e,t,n)=>{tt(t,n,{getSourceArn:!0})||await X(e,t)};import{toKebabCase as ne,hashData as re}from"@ez4/utils";import{attachEntry as ct}from"@ez4/stateful";var pt=e=>e.type===i,Rn=(e,t,n)=>{let r=ne(n.functionName),o=re(i,t.entryId,r);return ct(
65
+ MaximumBatchingWindowInSeconds:n.maxWindow}})),await X(e)},Q=async e=>{E.logDelete(
66
+ c,e),await P.send(new ke({UUID:e}))},Qe=async e=>(await P.send(new Ge({UUID:e}))).
67
+ State,X=async e=>{let t=new Set(["Enabled","Disabled"]);await Je(async()=>{let n=await Qe(
68
+ e);return t.has(n)})};var Y=()=>({equals:et,create:q,replace:nt,preview:tt,update:rt,delete:ot}),et=(e,t)=>!!e.
69
+ result&&e.result.eventId===t.result?.eventId,tt=async(e,t)=>{let n={...e.parameters,
70
+ dependencies:e.dependencies},r={...t.parameters,dependencies:t.dependencies},o=Ye(
71
+ n,r,{getSourceArn:!0});return o.counts?o:void 0},nt=async(e,t,n)=>{if(t.result)throw new Xe(
72
+ c,e.entryId,t.entryId);return q(e,n)},q=async(e,t)=>{let n=e.parameters,r=w(c,"m\
73
+ apping",t),o=await n.getSourceArn(t);return{eventId:(await _({...e.parameters,functionName:r,
74
+ sourceArn:o})).eventId,functionName:r,sourceArn:o}},rt=async(e,t,n)=>{let r=e.result;
75
+ if(!r)return;let o=w(c,"mapping",n),a=t.result?.functionName??r.functionName,p={
76
+ ...e.parameters,functionName:o},l={...t.parameters,functionName:a};return await at(
77
+ r.eventId,p,l),{...r,functionName:o}},ot=async e=>{let t=e.result;t&&await Q(t.eventId)},
78
+ at=async(e,t,n)=>{qe(t,n,{getSourceArn:!0})||await J(e,t)};import{toKebabCase as ee,hashData as te}from"@ez4/utils";import{attachEntry as st}from"@ez4/stateful";var it=e=>e.type===i,Fn=(e,t,n)=>{let r=ee(n.functionName),o=te(i,t.entryId,r);return st(
81
79
  e,{type:i,entryId:o,dependencies:[t.entryId],parameters:{...n,functionName:r}})},
82
- Cn=(e,t,n)=>{let r=ne(n),o=re(i,t.entryId,r),a=e[o];return a&&pt(a)?a:null};import{hashData as oe}from"@ez4/utils";import{attachEntry as mt}from"@ez4/stateful";var ut=e=>e.type===y,Nn=(e,t,n,r)=>{let o=oe(y,t.entryId,n.entryId);return mt(e,
83
- {type:y,entryId:o,dependencies:[t.entryId,n.entryId],parameters:r})},hn=(e,t,n)=>{
84
- let r=oe(y,t.entryId,n.entryId),o=e[r];return o&&ut(o)?o:null};import{hashData as lt}from"@ez4/utils";import{attachEntry as yt}from"@ez4/stateful";var Un=e=>e.type===f,Dn=(e,t,n,r)=>{let o=lt(f,t.entryId,n.entryId);return yt(e,
85
- {type:f,entryId:o,dependencies:[t.entryId,n.entryId],parameters:r})};import{registerTriggers as St}from"@ez4/aws-common";import{createPolicy as wt,registerTriggers as Ft}from"@ez4/aws-identity";
86
- import{createTrigger as Pt}from"@ez4/project/library";import{getAccountId as gt,getRegion as dt,createPolicyDocument as ft}from"@ez4/aws-identity";
87
- var ae=async e=>{let[t,n]=await Promise.all([dt(),gt()]);return ft([{permissions:[
80
+ Pn=(e,t,n)=>{let r=ee(n),o=te(i,t.entryId,r),a=e[o];return a&&it(a)?a:null};import{hashData as ne}from"@ez4/utils";import{attachEntry as ct}from"@ez4/stateful";var pt=e=>e.type===u,An=(e,t,n,r)=>{let o=ne(u,t.entryId,n.entryId);return ct(e,
81
+ {type:u,entryId:o,dependencies:[t.entryId,n.entryId],parameters:r})},vn=(e,t,n)=>{
82
+ let r=ne(u,t.entryId,n.entryId),o=e[r];return o&&pt(o)?o:null};import{hashData as mt}from"@ez4/utils";import{attachEntry as ut}from"@ez4/stateful";var Mn=e=>e.type===d,Tn=(e,t,n,r)=>{let o=mt(d,t.entryId,n.entryId);return ut(e,
83
+ {type:d,entryId:o,dependencies:[t.entryId,n.entryId],parameters:r})};import{registerTriggers as dt}from"@ez4/aws-common";import{createPolicy as ft,registerTriggers as St}from"@ez4/aws-identity";
84
+ import{createTrigger as wt}from"@ez4/project/library";import{getAccountId as lt,getRegion as yt,createPolicyDocument as gt}from"@ez4/aws-identity";
85
+ var re=async e=>{let[t,n]=await Promise.all([yt(),lt()]);return gt([{permissions:[
88
86
  "logs:CreateLogGroup","logs:CreateLogStream","logs:PutLogEvents"],resourceIds:[`\
89
- arn:aws:logs:${t}:${n}:log-group:/aws/lambda/${e}-*:*`]}])};var b=!1,Zn=()=>(b||(St(),Ft(),Pt("@ez4/aws-function",{"deploy:prepareIdentityAc\
90
- count":xt,"deploy:prepareExecutionPolicy":Rt}),b=!0),b),xt=()=>[{account:"lambda\
91
- .amazonaws.com"}],Rt=async e=>{let{state:t,options:n}=e,{resourcePrefix:r,projectName:o}=n;
92
- return wt(t,{policyName:`${r}-${o}-lambda-policy`,policyDocument:await ae(r)})};v(i,B());v(y,_());v(f,ee());export{s as FunctionServiceName,i as FunctionServiceType,m as MappingServiceName,
93
- f as MappingServiceType,d as PermissionServiceName,y as PermissionServiceType,Rn as createFunction,
94
- Dn as createMapping,Nn as createPermission,Cn as getFunction,_t as getFunctionArn,
95
- F as getFunctionName,hn as getPermission,pt as isFunction,Un as isMapping,ut as isPermission,
96
- Zn as registerTriggers};
87
+ arn:aws:logs:${t}:${n}:log-group:/aws/lambda/${e}-*:*`]}])};var A=!1,Bn=()=>(A||(dt(),St(),wt("@ez4/aws-function",{"deploy:prepareIdentityAc\
88
+ count":Ft,"deploy:prepareExecutionPolicy":Pt}),A=!0),A),Ft=()=>[{account:"lambda\
89
+ .amazonaws.com"}],Pt=async e=>{let{state:t,options:n}=e,{resourcePrefix:r,projectName:o}=n;
90
+ return ft(t,{policyName:`${r}-${o}-lambda-policy`,policyDocument:await re(r)})};v(i,V());v(u,O());v(d,Y());export{s as FunctionServiceName,i as FunctionServiceType,c as MappingServiceName,
91
+ d as MappingServiceType,g as PermissionServiceName,u as PermissionServiceType,Fn as createFunction,
92
+ Tn as createMapping,An as createPermission,Pn as getFunction,Gt as getFunctionArn,
93
+ w as getFunctionName,vn as getPermission,it as isFunction,Mn as isMapping,pt as isPermission,
94
+ Bn as registerTriggers};
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ez4/aws-function",
3
3
  "description": "EZ4: Self-managed AWS lambda functions",
4
- "version": "0.2.0",
4
+ "version": "0.3.0",
5
5
  "author": "Silas B.",
6
6
  "license": "MIT",
7
7
  "type": "module",
@@ -27,11 +27,11 @@
27
27
  },
28
28
  "dependencies": {
29
29
  "@aws-sdk/client-lambda": "^3.614.0",
30
- "@ez4/aws-common": "^0.2.0",
31
- "@ez4/aws-identity": "^0.2.0",
32
- "@ez4/project": "^0.2.0",
33
- "@ez4/stateful": "^0.2.0",
34
- "@ez4/utils": "^0.2.0",
30
+ "@ez4/aws-common": "^0.3.0",
31
+ "@ez4/aws-identity": "^0.3.0",
32
+ "@ez4/project": "^0.3.0",
33
+ "@ez4/stateful": "^0.3.0",
34
+ "@ez4/utils": "^0.3.0",
35
35
  "@types/adm-zip": "^0.5.5",
36
36
  "adm-zip": "^0.5.14"
37
37
  }