@ez4/aws-function 0.0.0 → 0.1.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.
@@ -23,9 +23,12 @@ export type UpdateConfigRequest = {
23
23
  timeout?: number;
24
24
  memory?: number;
25
25
  };
26
+ export type UpdateSourceCodeRequest = {
27
+ sourceFile: string;
28
+ };
26
29
  export declare const createFunction: (request: CreateRequest) => Promise<CreateResponse>;
27
30
  export declare const tagFunction: (functionArn: Arn, tags: ResourceTags) => Promise<void>;
28
31
  export declare const untagFunction: (functionArn: Arn, tagKeys: string[]) => Promise<void>;
29
- export declare const updateSourceCode: (functionName: string, sourceFile: string) => Promise<void>;
32
+ export declare const updateSourceCode: (functionName: string, request: UpdateSourceCodeRequest) => Promise<void>;
30
33
  export declare const updateConfiguration: (functionName: string, request: UpdateConfigRequest) => Promise<void>;
31
34
  export declare const deleteFunction: (functionName: string) => Promise<void>;
package/dist/main.cjs CHANGED
@@ -1,68 +1,96 @@
1
- "use strict";var ce=Object.create;var w=Object.defineProperty;var me=Object.getOwnPropertyDescriptor;var pe=Object.getOwnPropertyNames;var ue=Object.getPrototypeOf,le=Object.prototype.hasOwnProperty;var ye=(e,t)=>{for(var r in t)w(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 pe(t))!le.call(e,o)&&o!==r&&
3
- w(e,o,{get:()=>t[o],enumerable:!(n=me(t,o))||n.enumerable});return e};var fe=(e,t,r)=>(r=e!=null?ce(ue(e)):{},z(t||!e||!e.__esModule?w(r,"default",{value:e,
4
- enumerable:!0}):r,e)),de=e=>z(w({},"__esModule",{value:!0}),e);var Le={};ye(Le,{FunctionServiceName:()=>i,FunctionServiceType:()=>a,PermissionServiceName:()=>u,
5
- PermissionServiceType:()=>l,createFunction:()=>Te,createPermission:()=>He,getFunction:()=>ze,
6
- getFunctionArn:()=>Ne,getFunctionName:()=>I,isFunction:()=>re,isPermission:()=>De,
7
- registerTriggers:()=>je});module.exports=de(Le);var T=require("@ez4/aws-common");var O=require("@aws-sdk/client-lambda"),N=require("@ez4/aws-identity"),x=require("@ez4/aws-common"),
8
- p=require("@ez4/utils");var s=require("@aws-sdk/client-lambda"),V=require("@ez4/utils"),c=require("@ez4/aws-common");var D=require("@ez4/aws-common");var i="AWS:Lambda/Function",a="aws:lambda.function";var ge=/[a-z][\w]+/i,Se=e=>ge.test(e),A=e=>{for(let t in e)if(!Se(t))throw new D.InvalidParameterError(
9
- i,`name ${t} for variable unsupported.`)};var H=fe(require("adm-zip"),1),j=require("node:fs/promises"),U=async(e,t)=>{let r=new H.default,
10
- n=await(0,j.readFile)(e);return r.addFile(t,n),r.toBufferPromise()};var m=new s.LambdaClient({}),L=async e=>{c.Logger.logCreate(i,e.functionName),e.
11
- variables&&A(e.variables);let t=await m.send(new s.CreateFunctionCommand({Publish:!0,
12
- FunctionName:e.functionName,Description:e.description,MemorySize:e.memory,Timeout:e.
13
- timeout,Role:e.roleArn,Handler:K(e.handlerName),Runtime:"nodejs20.x",PackageType:"\
14
- Zip",Code:{ZipFile:await M(e.sourceFile)},Environment:{Variables:e.variables},Tags:{
15
- ...e.tags,ManagedBy:"EZ4"}})),r=t.FunctionName,n=t.FunctionArn;return await E(r),
16
- {functionName:r,functionArn:n}},$=async(e,t)=>{c.Logger.logTag(i,e),await m.send(
17
- new s.TagResourceCommand({Resource:e,Tags:{...t,ManagedBy:"EZ4"}}))},Z=async(e,t)=>{
18
- c.Logger.logUntag(i,e),await m.send(new s.UntagResourceCommand({Resource:e,TagKeys:t}))},
19
- G=async(e,t)=>{c.Logger.logUpdate(i,`${e} source code`),await m.send(new s.UpdateFunctionCodeCommand(
20
- {FunctionName:e,ZipFile:await M(t),Publish:!0})),await E(e)},k=async(e,t)=>{c.Logger.
21
- logUpdate(i,`${e} configuration`),t.variables&&A(t.variables),await m.send(new s.UpdateFunctionConfigurationCommand(
22
- {FunctionName:e,Description:t.description,MemorySize:t.memory,Timeout:t.timeout,
23
- Role:t.roleArn,...t.handlerName&&{Handler:K(t.handlerName)},Environment:{Variables:t.
24
- variables}})),await E(e)},B=async e=>{c.Logger.logDelete(i,e),await m.send(new s.DeleteFunctionCommand(
25
- {FunctionName:e}))},M=e=>U(e,"main.mjs"),K=e=>`main.${e}`,Fe=async e=>{let t=await m.
26
- send(new s.GetFunctionConfigurationCommand({FunctionName:e}));return[t.State,t.LastUpdateStatus]},
27
- E=async e=>{await(0,V.waitFor)(async()=>{let[t,r]=await Fe(e);return t!=="Pendin\
28
- g"&&r!=="InProgress"})};var W=()=>({equals:Pe,replace:we,create:J,update:xe,delete:Re}),Pe=(e,t)=>!!e.result&&
29
- e.result.functionArn===t.result?.functionArn,we=async(e,t,r)=>{if(t.result)throw new x.ReplaceResourceError(
30
- i,e.entryId,t.entryId);return J(e,r)},J=async(e,t)=>{let r=e.parameters,n=r.functionName,
31
- o=(0,N.getRoleArn)(i,n,t),y=r.sourceFile,C=await(0,p.hashFile)(y),P,S=await(0,p.waitFor)(
32
- async()=>{try{return await L({...r,sourceFile:y,roleArn:o})}catch(F){if(!(F instanceof
33
- O.InvalidParameterValueException))throw F;return P=F,null}});if(!S)throw P;return{
34
- functionName:S.functionName,functionArn:S.functionArn,sourceHash:C,roleArn:o}},xe=async(e,t,r)=>{
35
- let n=e.result;if(!n)return;let o=e.parameters.functionName,y=(0,N.getRoleArn)(i,
36
- o,r),C=t.result?.roleArn??y,P={...e.parameters,roleArn:y},S={...t.parameters,roleArn:C};
37
- await Promise.all([Ce(o,P,S),Ae(n.functionArn,e.parameters,t.parameters)]);let F=await Ee(
38
- o,e.parameters,t.result);return{...n,sourceHash:F,roleArn:y}},Re=async e=>{let t=e.
39
- result;t&&await B(t.functionName)},Ce=async(e,t,r)=>{!(0,p.deepEqual)(t,r,{sourceFile:!0,
40
- functionName:!0,tags:!0})&&await k(e,t)},Ae=async(e,t,r)=>{await(0,x.applyTagUpdates)(
41
- t.tags,r.tags,n=>$(e,n),n=>Z(e,n))},Ee=async(e,t,r)=>{let n=t.sourceFile,o=await(0,p.hashFile)(
42
- n);return o!==r?.sourceHash&&await G(e,n),o};var _=require("@ez4/aws-common");var b=require("@ez4/aws-common");var I=(e,t,r)=>{let n=r.getDependencies(a).at(0)?.result;if(!n?.functionName)throw new b.IncompleteResourceError(
43
- e,t,"functionName");return n.functionName},Ne=(e,t,r)=>{let n=r.getDependencies(
44
- a).at(0)?.result;if(!n?.functionArn)throw new b.IncompleteResourceError(e,t,"fun\
45
- ctionArn");return n.functionArn};var f=require("@aws-sdk/client-lambda"),v=require("@ez4/aws-common");var u="AWS:Lambda/Permission",l="aws:lambda.permission";var Q=new f.LambdaClient({}),X=async e=>{v.Logger.logCreate(u,e.functionName);let t=e.
46
- statementId??`SID${Date.now()}`;return await Q.send(new f.AddPermissionCommand({
47
- StatementId:t,FunctionName:e.functionName,SourceArn:e.sourceArn,Principal:e.principal,
48
- Action:e.action})),{statementId:t}},Y=async(e,t)=>{v.Logger.logDelete(u,e),await Q.
49
- send(new f.RemovePermissionCommand({FunctionName:e,StatementId:t}))};var q=()=>({equals:be,replace:Ie,create:ee,update:ve,delete:he}),be=(e,t)=>!!e.result&&
50
- e.result.functionName===t.result?.functionName,Ie=async(e,t,r)=>{if(t.result)throw new _.ReplaceResourceError(
51
- u,e.entryId,t.entryId);return ee(e,r)},ee=async(e,t)=>{let r=I(u,"permission",t),
52
- n=await e.parameters(t);return{statementId:(await X({functionName:r,principal:n.
53
- principal,sourceArn:n.sourceArn,action:"lambda:InvokeFunction"})).statementId,functionName:r}},
54
- ve=async()=>{},he=async e=>{let t=e.result;t&&await Y(t.functionName,t.statementId)};var d=require("@ez4/utils"),te=require("@ez4/stateful");var re=e=>e.type===a,Te=(e,t,r)=>{let n=(0,d.toKebabCase)(r.functionName),o=(0,d.hashData)(
55
- a,t.entryId,n);return(0,te.attachEntry)(e,{type:a,entryId:o,dependencies:[t.entryId],
56
- parameters:{...r,functionName:n}})},ze=(e,t,r)=>{let n=(0,d.hashData)((0,d.toKebabCase)(
57
- r)),o=e[t.entryId,n];return o&&re(o)?o:null};var ne=require("@ez4/utils"),oe=require("@ez4/stateful");var De=e=>e.type===l,He=(e,t,r,n)=>{let o=(0,ne.hashData)(l,t.entryId,r.entryId);
58
- return(0,oe.attachEntry)(e,{type:l,entryId:o,dependencies:[t.entryId,r.entryId],
59
- parameters:n})};var ie=require("@ez4/aws-common"),R=require("@ez4/aws-identity"),ae=require("@ez4/project");var g=require("@ez4/aws-identity"),se=async e=>{let[t,r]=await Promise.all([(0,g.getRegion)(),
60
- (0,g.getAccountId)()]);return(0,g.createPolicyDocument)([{permissions:["logs:Cre\
1
+ "use strict";var Ce=Object.create;var v=Object.defineProperty;var Ae=Object.getOwnPropertyDescriptor;var Ee=Object.getOwnPropertyNames;var Ne=Object.getPrototypeOf,ve=Object.prototype.hasOwnProperty;var be=(e,t)=>{for(var n in t)v(e,n,{get:t[n],enumerable:!0})},L=(e,t,n,r)=>{if(t&&
2
+ typeof t=="object"||typeof t=="function")for(let o of Ee(t))!ve.call(e,o)&&o!==n&&
3
+ v(e,o,{get:()=>t[o],enumerable:!(r=Ae(t,o))||r.enumerable});return e};var Me=(e,t,n)=>(n=e!=null?Ce(Ne(e)):{},L(t||!e||!e.__esModule?v(n,"default",{value:e,
4
+ enumerable:!0}):n,e)),he=e=>L(v({},"__esModule",{value:!0}),e);var ct={};be(ct,{FunctionServiceName:()=>i,FunctionServiceType:()=>c,MappingServiceName:()=>u,
5
+ MappingServiceType:()=>d,PermissionServiceName:()=>g,PermissionServiceType:()=>f,
6
+ createFunction:()=>et,createMapping:()=>at,createPermission:()=>rt,getFunction:()=>tt,
7
+ getFunctionArn:()=>$e,getFunctionName:()=>F,isFunction:()=>fe,isMapping:()=>ot,isPermission:()=>nt,
8
+ registerTriggers:()=>it});module.exports=he(ct);var I=require("@ez4/aws-common");var X=require("@aws-sdk/client-lambda"),w=require("@ez4/aws-common"),m=require("@ez4/utils"),
9
+ U=require("@ez4/aws-identity");var a=require("@aws-sdk/client-lambda"),l=require("@ez4/aws-common");var V=require("@ez4/aws-common");var i="AWS:Lambda/Function",c="aws:lambda.function";var Ie=/[a-z][\w]+/i,Te=e=>Ie.test(e),T=e=>{for(let t in e)if(!Te(t))throw new V.InvalidParameterError(
10
+ i,`name ${t} for variable unsupported.`)};var B=Me(require("adm-zip"),1),$=require("node:fs/promises"),W=async(e,t)=>{let n=new B.default,
11
+ r=await(0,$.readFile)(e);return n.addFile(t,r),n.toBufferPromise()};var y=new a.LambdaClient({}),z={maxWaitTime:90,client:y},Z=async e=>{l.Logger.logCreate(
12
+ i,e.functionName),e.variables&&T(e.variables);let t=await y.send(new a.CreateFunctionCommand(
13
+ {Publish:!0,FunctionName:e.functionName,Description:e.description,MemorySize:e.memory,
14
+ Timeout:e.timeout,Role:e.roleArn,PackageType:"Zip",Handler:Q(e.handlerName),Runtime:"\
15
+ nodejs20.x",Code:{ZipFile:await J(e.sourceFile)},Environment:{Variables:e.variables},
16
+ Tags:{...e.tags,ManagedBy:"EZ4"}})),n=t.FunctionName,r=t.FunctionArn;return await(0,a.waitUntilFunctionActive)(
17
+ z,{FunctionName:n}),{functionName:n,functionArn:r}},G=async(e,t)=>{l.Logger.logTag(
18
+ i,e),await y.send(new a.TagResourceCommand({Resource:e,Tags:{...t,ManagedBy:"EZ4"}}))},
19
+ k=async(e,t)=>{l.Logger.logUntag(i,e),await y.send(new a.UntagResourceCommand({Resource:e,
20
+ TagKeys:t}))},O=async(e,t)=>{l.Logger.logUpdate(i,`${e} source code`);let{sourceFile:n}=t;
21
+ await y.send(new a.UpdateFunctionCodeCommand({FunctionName:e,ZipFile:await J(n),
22
+ Publish:!0})),await(0,a.waitUntilFunctionUpdated)(z,{FunctionName:e})},K=async(e,t)=>{
23
+ l.Logger.logUpdate(i,`${e} configuration`),t.variables&&T(t.variables);let{handlerName:n}=t;
24
+ await y.send(new a.UpdateFunctionConfigurationCommand({FunctionName:e,Description:t.
25
+ description,MemorySize:t.memory,Timeout:t.timeout,Role:t.roleArn,...n&&{Handler:Q(
26
+ n)},Environment:{Variables:t.variables}})),await(0,a.waitUntilFunctionUpdated)(z,
27
+ {FunctionName:e})},_=async e=>{l.Logger.logDelete(i,e),await y.send(new a.DeleteFunctionCommand(
28
+ {FunctionName:e}))},J=e=>W(e,"main.mjs"),Q=e=>`main.${e}`;var Y=()=>({equals:ze,create:q,replace:De,preview:Ue,update:He,delete:je}),ze=(e,t)=>!!e.
29
+ result&&e.result.functionArn===t.result?.functionArn,Ue=async(e,t)=>{let n=e.parameters,
30
+ r=(0,m.deepCompare)({...e.parameters,sourceHash:await(0,m.hashFile)(n.sourceFile)},
31
+ {...t.parameters,sourceHash:t.result?.sourceHash});if(r.counts)return{...r,name:n.
32
+ functionName}},De=async(e,t,n)=>{if(t.result)throw new w.ReplaceResourceError(i,
33
+ e.entryId,t.entryId);return q(e,n)},q=async(e,t)=>{let n=e.parameters,r=n.functionName,
34
+ o=(0,U.getRoleArn)(i,r,t),p=n.sourceFile,A=await(0,m.hashFile)(p),S,E=await(0,m.waitFor)(
35
+ async()=>{try{return await Z({...n,sourceFile:p,roleArn:o})}catch(N){if(!(N instanceof
36
+ X.InvalidParameterValueException))throw N;return S=N,null}});if(!E)throw S;return{
37
+ functionName:E.functionName,functionArn:E.functionArn,sourceHash:A,roleArn:o}},He=async(e,t,n)=>{
38
+ let r=e.result;if(!r)return;let o=e.parameters.functionName,p=(0,U.getRoleArn)(i,
39
+ o,n),A=t.result?.roleArn??p,S={...e.parameters,roleArn:p},E={...t.parameters,roleArn:A};
40
+ await Promise.all([Le(o,S,E),Ve(r.functionArn,e.parameters,t.parameters)]);let N=await Be(
41
+ o,e.parameters,t.result);return{...r,sourceHash:N,roleArn:p}},je=async e=>{let t=e.
42
+ result;t&&await(0,w.waitDeletion)(()=>_(t.functionName))},Le=async(e,t,n)=>{!(0,m.deepEqual)(
43
+ t,n,{sourceFile:!0,functionName:!0,tags:!0})&&await K(e,t)},Ve=async(e,t,n)=>{await(0,w.applyTagUpdates)(
44
+ t.tags,n.tags,r=>G(e,r),r=>k(e,r))},Be=async(e,t,n)=>{let r=t.sourceFile,o=await(0,m.hashFile)(
45
+ r);return o!==n?.sourceHash&&await O(e,t),o};var re=require("@ez4/aws-common");var D=require("@ez4/aws-common");var F=(e,t,n)=>{let r=n.getDependencies(c).at(0)?.result;if(!r?.functionName)throw new D.IncompleteResourceError(
46
+ e,t,"functionName");return r.functionName},$e=(e,t,n)=>{let r=n.getDependencies(
47
+ c).at(0)?.result;if(!r?.functionArn)throw new D.IncompleteResourceError(e,t,"fun\
48
+ ctionArn");return r.functionArn};var P=require("@aws-sdk/client-lambda"),H=require("@ez4/aws-common");var g="AWS:Lambda/Permission",f="aws:lambda.permission";var ee=new P.LambdaClient({}),te=async e=>{H.Logger.logCreate(g,e.functionName);
49
+ let t=e.statementId??`SID${Date.now()}`;return await ee.send(new P.AddPermissionCommand(
50
+ {StatementId:t,FunctionName:e.functionName,SourceArn:e.sourceArn,Principal:e.principal,
51
+ Action:e.action})),{statementId:t}},ne=async(e,t)=>{H.Logger.logDelete(g,e),await ee.
52
+ send(new P.RemovePermissionCommand({FunctionName:e,StatementId:t}))};var oe=()=>({equals:We,create:ae,replace:Ge,preview:Ze,update:ke,delete:Oe}),We=(e,t)=>!!e.
53
+ result&&e.result.functionName===t.result?.functionName,Ze=async(e,t)=>{},Ge=async(e,t,n)=>{
54
+ if(t.result)throw new re.ReplaceResourceError(g,e.entryId,t.entryId);return ae(e,
55
+ n)},ae=async(e,t)=>{let n=e.parameters,r=F(g,"permission",t),o=await n.getPermission(
56
+ t);return{statementId:(await te({functionName:r,principal:o.principal,sourceArn:o.
57
+ sourceArn,action:"lambda:InvokeFunction"})).statementId,functionName:r}},ke=async()=>{},
58
+ Oe=async e=>{let t=e.result;t&&await ne(t.functionName,t.statementId)};var ue=require("@ez4/aws-common"),M=require("@ez4/utils");var s=require("@aws-sdk/client-lambda"),x=require("@ez4/aws-common"),ie=require("@ez4/utils");var u="AWS:Lambda/Mapping",d="aws:lambda.mapping";var b=new s.LambdaClient({}),se=async e=>{x.Logger.logCreate(u,e.functionName);let{
59
+ service:t}=(0,x.parseArn)(e.sourceArn),{batch:n}=e,o=(await b.send(new s.CreateEventSourceMappingCommand(
60
+ {FunctionName:e.functionName,EventSourceArn:e.sourceArn,Enabled:e.enabled,...t===
61
+ "dynamodb"&&{StartingPosition:s.EventSourcePosition.LATEST},...n&&{BatchSize:n.batchSize,
62
+ MaximumBatchingWindowInSeconds:n.maxWindow}}))).UUID;return await me(o),{eventId:o}},
63
+ pe=async(e,t)=>{x.Logger.logUpdate(u,e);let{batch:n}=t;await b.send(new s.UpdateEventSourceMappingCommand(
64
+ {UUID:e,FunctionName:t.functionName,Enabled:t.enabled,...n&&{BatchSize:n.batchSize,
65
+ MaximumBatchingWindowInSeconds:n.maxWindow}})),await me(e)},ce=async e=>{x.Logger.
66
+ logDelete(u,e),await b.send(new s.DeleteEventSourceMappingCommand({UUID:e}))},Ke=async e=>(await b.
67
+ send(new s.GetEventSourceMappingCommand({UUID:e}))).State,me=async e=>{let t=new Set(
68
+ ["Enabled","Disabled"]);await(0,ie.waitFor)(async()=>{let n=await Ke(e);return t.
69
+ has(n)})};var le=()=>({equals:_e,create:ye,replace:Qe,preview:Je,update:Xe,delete:Ye}),_e=(e,t)=>!!e.
70
+ result&&e.result.eventId===t.result?.eventId,Je=async(e,t)=>{let n=(0,M.deepCompare)(
71
+ e.parameters,t.parameters,{getSourceArn:!0});return n.counts?n:void 0},Qe=async(e,t,n)=>{
72
+ if(t.result)throw new ue.ReplaceResourceError(u,e.entryId,t.entryId);return ye(e,
73
+ n)},ye=async(e,t)=>{let n=e.parameters,r=F(u,"mapping",t),o=await n.getSourceArn(
74
+ t);return{eventId:(await se({...e.parameters,functionName:r,sourceArn:o})).eventId,
75
+ functionName:r,sourceArn:o}},Xe=async(e,t,n)=>{let r=e.result;if(!r)return;let o=F(
76
+ u,"mapping",n),p=t.result?.functionName??r.functionName,A={...e.parameters,functionName:o},
77
+ S={...t.parameters,functionName:p};return await qe(r.eventId,A,S),{...r,functionName:o}},
78
+ Ye=async e=>{let t=e.result;t&&await ce(t.eventId)},qe=async(e,t,n)=>{(0,M.deepEqual)(
79
+ t,n,{getSourceArn:!0})||await pe(e,t)};var R=require("@ez4/utils"),ge=require("@ez4/stateful");var fe=e=>e.type===c,et=(e,t,n)=>{let r=(0,R.toKebabCase)(n.functionName),o=(0,R.hashData)(
80
+ c,t.entryId,r);return(0,ge.attachEntry)(e,{type:c,entryId:o,dependencies:[t.entryId],
81
+ parameters:{...n,functionName:r}})},tt=(e,t,n)=>{let r=(0,R.hashData)((0,R.toKebabCase)(
82
+ n)),o=e[t.entryId,r];return o&&fe(o)?o:null};var de=require("@ez4/utils"),Se=require("@ez4/stateful");var nt=e=>e.type===f,rt=(e,t,n,r)=>{let o=(0,de.hashData)(f,t.entryId,n.entryId);
83
+ return(0,Se.attachEntry)(e,{type:f,entryId:o,dependencies:[t.entryId,n.entryId],
84
+ parameters:r})};var we=require("@ez4/utils"),Fe=require("@ez4/stateful");var ot=e=>e.type===d,at=(e,t,n,r)=>{let o=(0,we.hashData)(d,t.entryId,n.entryId);
85
+ return(0,Fe.attachEntry)(e,{type:d,entryId:o,dependencies:[t.entryId,n.entryId],
86
+ parameters:r})};var xe=require("@ez4/aws-common"),h=require("@ez4/aws-identity"),Re=require("@ez4/project");var C=require("@ez4/aws-identity"),Pe=async e=>{let[t,n]=await Promise.all([(0,C.getRegion)(),
87
+ (0,C.getAccountId)()]);return(0,C.createPolicyDocument)([{permissions:["logs:Cre\
61
88
  ateLogGroup","logs:CreateLogStream","logs:PutLogEvents"],resourceIds:[`arn:aws:l\
62
- ogs:${t}:${r}:log-group:/aws/lambda/${e}-*:*`]}])};var h=!1,je=()=>(h||((0,ie.registerTriggers)(),(0,R.registerTriggers)(),(0,ae.createTrigger)(
63
- "@ez4/aws-function",{"deploy:prepareIdentityAccount":Ue,"deploy:prepareExecution\
64
- Policy":Ve}),h=!0),h),Ue=()=>[{account:"lambda.amazonaws.com"}],Ve=async e=>{let{
65
- state:t,options:r}=e,{resourcePrefix:n,projectName:o}=r;return(0,R.createPolicy)(
66
- t,{policyName:`${n}-${o}-lambda-policy`,policyDocument:await se(n)})};(0,T.registerProvider)(a,W());(0,T.registerProvider)(l,q());0&&(module.exports={FunctionServiceName,FunctionServiceType,PermissionServiceName,
67
- PermissionServiceType,createFunction,createPermission,getFunction,getFunctionArn,
68
- getFunctionName,isFunction,isPermission,registerTriggers});
89
+ ogs:${t}:${n}:log-group:/aws/lambda/${e}-*:*`]}])};var j=!1,it=()=>(j||((0,xe.registerTriggers)(),(0,h.registerTriggers)(),(0,Re.createTrigger)(
90
+ "@ez4/aws-function",{"deploy:prepareIdentityAccount":st,"deploy:prepareExecution\
91
+ Policy":pt}),j=!0),j),st=()=>[{account:"lambda.amazonaws.com"}],pt=async e=>{let{
92
+ state:t,options:n}=e,{resourcePrefix:r,projectName:o}=n;return(0,h.createPolicy)(
93
+ t,{policyName:`${r}-${o}-lambda-policy`,policyDocument:await Pe(r)})};(0,I.registerProvider)(c,Y());(0,I.registerProvider)(f,oe());(0,I.registerProvider)(
94
+ d,le());0&&(module.exports={FunctionServiceName,FunctionServiceType,MappingServiceName,MappingServiceType,
95
+ PermissionServiceName,PermissionServiceType,createFunction,createMapping,createPermission,
96
+ getFunction,getFunctionArn,getFunctionName,isFunction,isMapping,isPermission,registerTriggers});
package/dist/main.d.ts CHANGED
@@ -1,6 +1,9 @@
1
+ export * from './types/variables.js';
1
2
  export * from './function/service.js';
2
3
  export * from './function/types.js';
3
4
  export * from './function/utils.js';
4
5
  export * from './permission/service.js';
5
6
  export * from './permission/types.js';
7
+ export * from './mapping/service.js';
8
+ export * from './mapping/types.js';
6
9
  export * from './triggers/register.js';
package/dist/main.mjs CHANGED
@@ -1,60 +1,89 @@
1
- import{registerProvider as B}from"@ez4/aws-common";import{InvalidParameterValueException as se}from"@aws-sdk/client-lambda";import{
2
- getRoleArn as I}from"@ez4/aws-identity";import{applyTagUpdates as ie,ReplaceResourceError as ae}from"@ez4/aws-common";
3
- import{deepEqual as ce,hashFile as v,waitFor as me}from"@ez4/utils";import{CreateFunctionCommand as Q,DeleteFunctionCommand as X,GetFunctionConfigurationCommand as Y,
4
- LambdaClient as _,TagResourceCommand as q,UntagResourceCommand as ee,UpdateFunctionCodeCommand as te,
5
- UpdateFunctionConfigurationCommand as re}from"@aws-sdk/client-lambda";import{waitFor as ne}from"@ez4/utils";
6
- import{Logger as m}from"@ez4/aws-common";import{InvalidParameterError as M}from"@ez4/aws-common";var s="AWS:Lambda/Function",i="aws:lambda.function";var K=/[a-z][\w]+/i,O=e=>K.test(e),g=e=>{for(let t in e)if(!O(t))throw new M(s,`\
7
- name ${t} for variable unsupported.`)};import W from"adm-zip";import{readFile as J}from"node:fs/promises";var P=async(e,t)=>{
8
- let r=new W,n=await J(e);return r.addFile(t,n),r.toBufferPromise()};var a=new _({}),w=async e=>{m.logCreate(s,e.functionName),e.variables&&g(e.variables);
9
- let t=await a.send(new Q({Publish:!0,FunctionName:e.functionName,Description:e.description,
10
- MemorySize:e.memory,Timeout:e.timeout,Role:e.roleArn,Handler:b(e.handlerName),Runtime:"\
11
- nodejs20.x",PackageType:"Zip",Code:{ZipFile:await N(e.sourceFile)},Environment:{
12
- Variables:e.variables},Tags:{...e.tags,ManagedBy:"EZ4"}})),r=t.FunctionName,n=t.
13
- FunctionArn;return await S(r),{functionName:r,functionArn:n}},x=async(e,t)=>{m.logTag(
14
- s,e),await a.send(new q({Resource:e,Tags:{...t,ManagedBy:"EZ4"}}))},R=async(e,t)=>{
15
- m.logUntag(s,e),await a.send(new ee({Resource:e,TagKeys:t}))},C=async(e,t)=>{m.logUpdate(
16
- s,`${e} source code`),await a.send(new te({FunctionName:e,ZipFile:await N(t),Publish:!0})),
17
- await S(e)},A=async(e,t)=>{m.logUpdate(s,`${e} configuration`),t.variables&&g(t.
18
- variables),await a.send(new re({FunctionName:e,Description:t.description,MemorySize:t.
19
- memory,Timeout:t.timeout,Role:t.roleArn,...t.handlerName&&{Handler:b(t.handlerName)},
20
- Environment:{Variables:t.variables}})),await S(e)},E=async e=>{m.logDelete(s,e),
21
- await a.send(new X({FunctionName:e}))},N=e=>P(e,"main.mjs"),b=e=>`main.${e}`,oe=async e=>{
22
- let t=await a.send(new Y({FunctionName:e}));return[t.State,t.LastUpdateStatus]},
23
- S=async e=>{await ne(async()=>{let[t,r]=await oe(e);return t!=="Pending"&&r!=="I\
24
- nProgress"})};var h=()=>({equals:pe,replace:ue,create:T,update:le,delete:ye}),pe=(e,t)=>!!e.result&&
25
- e.result.functionArn===t.result?.functionArn,ue=async(e,t,r)=>{if(t.result)throw new ae(
26
- s,e.entryId,t.entryId);return T(e,r)},T=async(e,t)=>{let r=e.parameters,n=r.functionName,
27
- o=I(s,n,t),c=r.sourceFile,d=await v(c),f,l=await me(async()=>{try{return await w(
28
- {...r,sourceFile:c,roleArn:o})}catch(y){if(!(y instanceof se))throw y;return f=y,
29
- null}});if(!l)throw f;return{functionName:l.functionName,functionArn:l.functionArn,
30
- sourceHash:d,roleArn:o}},le=async(e,t,r)=>{let n=e.result;if(!n)return;let o=e.parameters.
31
- functionName,c=I(s,o,r),d=t.result?.roleArn??c,f={...e.parameters,roleArn:c},l={
32
- ...t.parameters,roleArn:d};await Promise.all([fe(o,f,l),de(n.functionArn,e.parameters,
33
- t.parameters)]);let y=await ge(o,e.parameters,t.result);return{...n,sourceHash:y,
34
- roleArn:c}},ye=async e=>{let t=e.result;t&&await E(t.functionName)},fe=async(e,t,r)=>{
35
- !ce(t,r,{sourceFile:!0,functionName:!0,tags:!0})&&await A(e,t)},de=async(e,t,r)=>{
36
- await ie(t.tags,r.tags,n=>x(e,n),n=>R(e,n))},ge=async(e,t,r)=>{let n=t.sourceFile,
37
- o=await v(n);return o!==r?.sourceHash&&await C(e,n),o};import{ReplaceResourceError as we}from"@ez4/aws-common";import{IncompleteResourceError as z}from"@ez4/aws-common";var D=(e,t,r)=>{let n=r.getDependencies(i).at(0)?.result;if(!n?.functionName)throw new z(
38
- e,t,"functionName");return n.functionName},at=(e,t,r)=>{let n=r.getDependencies(
39
- i).at(0)?.result;if(!n?.functionArn)throw new z(e,t,"functionArn");return n.functionArn};import{AddPermissionCommand as Se,LambdaClient as Fe,RemovePermissionCommand as Pe}from"@aws-sdk/client-lambda";
40
- import{Logger as H}from"@ez4/aws-common";var p="AWS:Lambda/Permission",u="aws:lambda.permission";var j=new Fe({}),U=async e=>{H.logCreate(p,e.functionName);let t=e.statementId??
41
- `SID${Date.now()}`;return await j.send(new Se({StatementId:t,FunctionName:e.functionName,
1
+ import{registerProvider as E}from"@ez4/aws-common";import{InvalidParameterValueException as ge}from"@aws-sdk/client-lambda";import{
2
+ applyTagUpdates as fe,ReplaceResourceError as de,waitDeletion as Se}from"@ez4/aws-common";
3
+ import{deepCompare as we,deepEqual as Fe,hashFile as R,waitFor as Pe}from"@ez4/utils";
4
+ import{getRoleArn as H}from"@ez4/aws-identity";import{CreateFunctionCommand as ie,DeleteFunctionCommand as se,LambdaClient as pe,
5
+ TagResourceCommand as ce,UntagResourceCommand as me,UpdateFunctionCodeCommand as ue,
6
+ UpdateFunctionConfigurationCommand as le,waitUntilFunctionActive as ye,waitUntilFunctionUpdated as v}from"@aws-sdk/client-lambda";
7
+ import{Logger as u}from"@ez4/aws-common";import{InvalidParameterError as te}from"@ez4/aws-common";var a="AWS:Lambda/Function",s="aws:lambda.function";var ne=/[a-z][\w]+/i,re=e=>ne.test(e),P=e=>{for(let t in e)if(!re(t))throw new te(
8
+ a,`name ${t} for variable unsupported.`)};import oe from"adm-zip";import{readFile as ae}from"node:fs/promises";var N=async(e,t)=>{
9
+ let n=new oe,r=await ae(e);return n.addFile(t,r),n.toBufferPromise()};var c=new pe({}),x={maxWaitTime:90,client:c},b=async e=>{u.logCreate(a,e.functionName),
10
+ e.variables&&P(e.variables);let t=await c.send(new ie({Publish:!0,FunctionName:e.
11
+ functionName,Description:e.description,MemorySize:e.memory,Timeout:e.timeout,Role:e.
12
+ roleArn,PackageType:"Zip",Handler:D(e.handlerName),Runtime:"nodejs20.x",Code:{ZipFile:await U(
13
+ e.sourceFile)},Environment:{Variables:e.variables},Tags:{...e.tags,ManagedBy:"EZ\
14
+ 4"}})),n=t.FunctionName,r=t.FunctionArn;return await ye(x,{FunctionName:n}),{functionName:n,
15
+ functionArn:r}},M=async(e,t)=>{u.logTag(a,e),await c.send(new ce({Resource:e,Tags:{
16
+ ...t,ManagedBy:"EZ4"}}))},h=async(e,t)=>{u.logUntag(a,e),await c.send(new me({Resource:e,
17
+ TagKeys:t}))},I=async(e,t)=>{u.logUpdate(a,`${e} source code`);let{sourceFile:n}=t;
18
+ await c.send(new ue({FunctionName:e,ZipFile:await U(n),Publish:!0})),await v(x,{
19
+ FunctionName:e})},T=async(e,t)=>{u.logUpdate(a,`${e} configuration`),t.variables&&
20
+ P(t.variables);let{handlerName:n}=t;await c.send(new le({FunctionName:e,Description:t.
21
+ description,MemorySize:t.memory,Timeout:t.timeout,Role:t.roleArn,...n&&{Handler:D(
22
+ n)},Environment:{Variables:t.variables}})),await v(x,{FunctionName:e})},z=async e=>{
23
+ u.logDelete(a,e),await c.send(new se({FunctionName:e}))},U=e=>N(e,"main.mjs"),D=e=>`\
24
+ main.${e}`;var j=()=>({equals:xe,create:L,replace:Ce,preview:Re,update:Ae,delete:Ee}),xe=(e,t)=>!!e.
25
+ result&&e.result.functionArn===t.result?.functionArn,Re=async(e,t)=>{let n=e.parameters,
26
+ r=we({...e.parameters,sourceHash:await R(n.sourceFile)},{...t.parameters,sourceHash:t.
27
+ result?.sourceHash});if(r.counts)return{...r,name:n.functionName}},Ce=async(e,t,n)=>{
28
+ if(t.result)throw new de(a,e.entryId,t.entryId);return L(e,n)},L=async(e,t)=>{let n=e.
29
+ parameters,r=n.functionName,o=H(a,r,t),i=n.sourceFile,f=await R(i),m,d=await Pe(
30
+ async()=>{try{return await b({...n,sourceFile:i,roleArn:o})}catch(S){if(!(S instanceof
31
+ ge))throw S;return m=S,null}});if(!d)throw m;return{functionName:d.functionName,
32
+ functionArn:d.functionArn,sourceHash:f,roleArn:o}},Ae=async(e,t,n)=>{let r=e.result;
33
+ if(!r)return;let o=e.parameters.functionName,i=H(a,o,n),f=t.result?.roleArn??i,m={
34
+ ...e.parameters,roleArn:i},d={...t.parameters,roleArn:f};await Promise.all([Ne(o,
35
+ m,d),ve(r.functionArn,e.parameters,t.parameters)]);let S=await be(o,e.parameters,
36
+ t.result);return{...r,sourceHash:S,roleArn:i}},Ee=async e=>{let t=e.result;t&&await Se(
37
+ ()=>z(t.functionName))},Ne=async(e,t,n)=>{!Fe(t,n,{sourceFile:!0,functionName:!0,
38
+ tags:!0})&&await T(e,t)},ve=async(e,t,n)=>{await fe(t.tags,n.tags,r=>M(e,r),r=>h(
39
+ e,r))},be=async(e,t,n)=>{let r=t.sourceFile,o=await R(r);return o!==n?.sourceHash&&
40
+ await I(e,t),o};import{ReplaceResourceError as Te}from"@ez4/aws-common";import{IncompleteResourceError as V}from"@ez4/aws-common";var w=(e,t,n)=>{let r=n.getDependencies(s).at(0)?.result;if(!r?.functionName)throw new V(
41
+ e,t,"functionName");return r.functionName},Vt=(e,t,n)=>{let r=n.getDependencies(
42
+ s).at(0)?.result;if(!r?.functionArn)throw new V(e,t,"functionArn");return r.functionArn};import{AddPermissionCommand as Me,LambdaClient as he,RemovePermissionCommand as Ie}from"@aws-sdk/client-lambda";
43
+ import{Logger as B}from"@ez4/aws-common";var l="AWS:Lambda/Permission",y="aws:lambda.permission";var $=new he({}),W=async e=>{B.logCreate(l,e.functionName);let t=e.statementId??
44
+ `SID${Date.now()}`;return await $.send(new Me({StatementId:t,FunctionName:e.functionName,
42
45
  SourceArn:e.sourceArn,Principal:e.principal,Action:e.action})),{statementId:t}},
43
- V=async(e,t)=>{H.logDelete(p,e),await j.send(new Pe({FunctionName:e,StatementId:t}))};var L=()=>({equals:xe,replace:Re,create:$,update:Ce,delete:Ae}),xe=(e,t)=>!!e.result&&
44
- e.result.functionName===t.result?.functionName,Re=async(e,t,r)=>{if(t.result)throw new we(
45
- p,e.entryId,t.entryId);return $(e,r)},$=async(e,t)=>{let r=D(p,"permission",t),n=await e.
46
- parameters(t);return{statementId:(await U({functionName:r,principal:n.principal,
47
- sourceArn:n.sourceArn,action:"lambda:InvokeFunction"})).statementId,functionName:r}},
48
- Ce=async()=>{},Ae=async e=>{let t=e.result;t&&await V(t.functionName,t.statementId)};import{toKebabCase as Z,hashData as G}from"@ez4/utils";import{attachEntry as Ee}from"@ez4/stateful";var Ne=e=>e.type===i,Rt=(e,t,r)=>{let n=Z(r.functionName),o=G(i,t.entryId,n);return Ee(
49
- e,{type:i,entryId:o,dependencies:[t.entryId],parameters:{...r,functionName:n}})},
50
- Ct=(e,t,r)=>{let n=G(Z(r)),o=e[t.entryId,n];return o&&Ne(o)?o:null};import{hashData as be}from"@ez4/utils";import{attachEntry as Ie}from"@ez4/stateful";var It=e=>e.type===u,vt=(e,t,r,n)=>{let o=be(u,t.entryId,r.entryId);return Ie(e,
51
- {type:u,entryId:o,dependencies:[t.entryId,r.entryId],parameters:n})};import{registerTriggers as ze}from"@ez4/aws-common";import{createPolicy as De,registerTriggers as He}from"@ez4/aws-identity";
52
- import{createTrigger as je}from"@ez4/project";import{getAccountId as ve,getRegion as he,createPolicyDocument as Te}from"@ez4/aws-identity";
53
- var k=async e=>{let[t,r]=await Promise.all([he(),ve()]);return Te([{permissions:[
46
+ Z=async(e,t)=>{B.logDelete(l,e),await $.send(new Ie({FunctionName:e,StatementId:t}))};var G=()=>({equals:ze,create:k,replace:De,preview:Ue,update:He,delete:je}),ze=(e,t)=>!!e.
47
+ result&&e.result.functionName===t.result?.functionName,Ue=async(e,t)=>{},De=async(e,t,n)=>{
48
+ if(t.result)throw new Te(l,e.entryId,t.entryId);return k(e,n)},k=async(e,t)=>{let n=e.
49
+ parameters,r=w(l,"permission",t),o=await n.getPermission(t);return{statementId:(await W(
50
+ {functionName:r,principal:o.principal,sourceArn:o.sourceArn,action:"lambda:Invok\
51
+ eFunction"})).statementId,functionName:r}},He=async()=>{},je=async e=>{let t=e.result;
52
+ t&&await Z(t.functionName,t.statementId)};import{ReplaceResourceError as Ke}from"@ez4/aws-common";import{deepCompare as _e,
53
+ deepEqual as Je}from"@ez4/utils";import{CreateEventSourceMappingCommand as Le,UpdateEventSourceMappingCommand as Ve,
54
+ DeleteEventSourceMappingCommand as Be,GetEventSourceMappingCommand as $e,EventSourcePosition as We,
55
+ LambdaClient as Ze}from"@aws-sdk/client-lambda";import{Logger as C,parseArn as Ge}from"@ez4/aws-common";
56
+ import{waitFor as ke}from"@ez4/utils";var p="AWS:Lambda/Mapping",g="aws:lambda.mapping";var F=new Ze({}),O=async e=>{C.logCreate(p,e.functionName);let{service:t}=Ge(e.sourceArn),
57
+ {batch:n}=e,o=(await F.send(new Le({FunctionName:e.functionName,EventSourceArn:e.
58
+ sourceArn,Enabled:e.enabled,...t==="dynamodb"&&{StartingPosition:We.LATEST},...n&&
59
+ {BatchSize:n.batchSize,MaximumBatchingWindowInSeconds:n.maxWindow}}))).UUID;return await J(
60
+ o),{eventId:o}},K=async(e,t)=>{C.logUpdate(p,e);let{batch:n}=t;await F.send(new Ve(
61
+ {UUID:e,FunctionName:t.functionName,Enabled:t.enabled,...n&&{BatchSize:n.batchSize,
62
+ MaximumBatchingWindowInSeconds:n.maxWindow}})),await J(e)},_=async e=>{C.logDelete(
63
+ p,e),await F.send(new Be({UUID:e}))},Oe=async e=>(await F.send(new $e({UUID:e}))).
64
+ State,J=async e=>{let t=new Set(["Enabled","Disabled"]);await ke(async()=>{let n=await Oe(
65
+ e);return t.has(n)})};var Q=()=>({equals:Qe,create:X,replace:Ye,preview:Xe,update:qe,delete:et}),Qe=(e,t)=>!!e.
66
+ result&&e.result.eventId===t.result?.eventId,Xe=async(e,t)=>{let n=_e(e.parameters,
67
+ t.parameters,{getSourceArn:!0});return n.counts?n:void 0},Ye=async(e,t,n)=>{if(t.
68
+ result)throw new Ke(p,e.entryId,t.entryId);return X(e,n)},X=async(e,t)=>{let n=e.
69
+ parameters,r=w(p,"mapping",t),o=await n.getSourceArn(t);return{eventId:(await O(
70
+ {...e.parameters,functionName:r,sourceArn:o})).eventId,functionName:r,sourceArn:o}},
71
+ qe=async(e,t,n)=>{let r=e.result;if(!r)return;let o=w(p,"mapping",n),i=t.result?.
72
+ functionName??r.functionName,f={...e.parameters,functionName:o},m={...t.parameters,
73
+ functionName:i};return await tt(r.eventId,f,m),{...r,functionName:o}},et=async e=>{
74
+ let t=e.result;t&&await _(t.eventId)},tt=async(e,t,n)=>{Je(t,n,{getSourceArn:!0})||
75
+ await K(e,t)};import{toKebabCase as Y,hashData as q}from"@ez4/utils";import{attachEntry as nt}from"@ez4/stateful";var rt=e=>e.type===s,yn=(e,t,n)=>{let r=Y(n.functionName),o=q(s,t.entryId,r);return nt(
76
+ e,{type:s,entryId:o,dependencies:[t.entryId],parameters:{...n,functionName:r}})},
77
+ gn=(e,t,n)=>{let r=q(Y(n)),o=e[t.entryId,r];return o&&rt(o)?o:null};import{hashData as ot}from"@ez4/utils";import{attachEntry as at}from"@ez4/stateful";var Fn=e=>e.type===y,Pn=(e,t,n,r)=>{let o=ot(y,t.entryId,n.entryId);return at(e,
78
+ {type:y,entryId:o,dependencies:[t.entryId,n.entryId],parameters:r})};import{hashData as it}from"@ez4/utils";import{attachEntry as st}from"@ez4/stateful";var En=e=>e.type===g,Nn=(e,t,n,r)=>{let o=it(g,t.entryId,n.entryId);return st(e,
79
+ {type:g,entryId:o,dependencies:[t.entryId,n.entryId],parameters:r})};import{registerTriggers as ut}from"@ez4/aws-common";import{createPolicy as lt,registerTriggers as yt}from"@ez4/aws-identity";
80
+ import{createTrigger as gt}from"@ez4/project";import{getAccountId as pt,getRegion as ct,createPolicyDocument as mt}from"@ez4/aws-identity";
81
+ var ee=async e=>{let[t,n]=await Promise.all([ct(),pt()]);return mt([{permissions:[
54
82
  "logs:CreateLogGroup","logs:CreateLogStream","logs:PutLogEvents"],resourceIds:[`\
55
- arn:aws:logs:${t}:${r}:log-group:/aws/lambda/${e}-*:*`]}])};var F=!1,Vt=()=>(F||(ze(),He(),je("@ez4/aws-function",{"deploy:prepareIdentityAc\
56
- count":Ue,"deploy:prepareExecutionPolicy":Ve}),F=!0),F),Ue=()=>[{account:"lambda\
57
- .amazonaws.com"}],Ve=async e=>{let{state:t,options:r}=e,{resourcePrefix:n,projectName:o}=r;
58
- return De(t,{policyName:`${n}-${o}-lambda-policy`,policyDocument:await k(n)})};B(i,h());B(u,L());export{s as FunctionServiceName,i as FunctionServiceType,p as PermissionServiceName,
59
- u as PermissionServiceType,Rt as createFunction,vt as createPermission,Ct as getFunction,
60
- at as getFunctionArn,D as getFunctionName,Ne as isFunction,It as isPermission,Vt as registerTriggers};
83
+ arn:aws:logs:${t}:${n}:log-group:/aws/lambda/${e}-*:*`]}])};var A=!1,Un=()=>(A||(ut(),yt(),gt("@ez4/aws-function",{"deploy:prepareIdentityAc\
84
+ count":ft,"deploy:prepareExecutionPolicy":dt}),A=!0),A),ft=()=>[{account:"lambda\
85
+ .amazonaws.com"}],dt=async e=>{let{state:t,options:n}=e,{resourcePrefix:r,projectName:o}=n;
86
+ return lt(t,{policyName:`${r}-${o}-lambda-policy`,policyDocument:await ee(r)})};E(s,j());E(y,G());E(g,Q());export{a as FunctionServiceName,s as FunctionServiceType,p as MappingServiceName,
87
+ g as MappingServiceType,l as PermissionServiceName,y as PermissionServiceType,yn as createFunction,
88
+ Nn as createMapping,Pn as createPermission,gn as getFunction,Vt as getFunctionArn,
89
+ w as getFunctionName,rt as isFunction,En as isMapping,Fn as isPermission,Un as registerTriggers};
@@ -0,0 +1,18 @@
1
+ import type { Arn } from '@ez4/aws-common';
2
+ export type BatchOptions = {
3
+ batchSize: number;
4
+ maxWindow: number;
5
+ };
6
+ export type CreateRequest = {
7
+ functionName: string;
8
+ batch?: BatchOptions;
9
+ sourceArn: Arn;
10
+ enabled?: boolean;
11
+ };
12
+ export type CreateResponse = {
13
+ eventId: string;
14
+ };
15
+ export type UpdateRequest = Partial<Omit<CreateRequest, 'sourceArn'>>;
16
+ export declare const createMapping: (request: CreateRequest) => Promise<CreateResponse>;
17
+ export declare const updateMapping: (eventId: string, request: UpdateRequest) => Promise<void>;
18
+ export declare const deleteMapping: (eventId: string) => Promise<void>;
@@ -0,0 +1,3 @@
1
+ import type { StepHandler } from '@ez4/stateful';
2
+ import type { MappingState } from './types.js';
3
+ export declare const getMappingHandler: () => StepHandler<MappingState>;
@@ -0,0 +1,5 @@
1
+ import type { EntryState, EntryStates } from '@ez4/stateful';
2
+ import type { MappingParameters, MappingState } from './types.js';
3
+ import type { FunctionState } from '../function/types.js';
4
+ export declare const isMapping: (resource: EntryState) => resource is MappingState;
5
+ export declare const createMapping: <E extends EntryState>(state: EntryStates<E>, sourceState: EntryState, functionState: FunctionState, parameters: MappingParameters) => MappingState;
@@ -0,0 +1,18 @@
1
+ import type { Arn } from '@ez4/aws-common';
2
+ import type { EntryState, StepContext } from '@ez4/stateful';
3
+ import type { CreateRequest, CreateResponse } from './client.js';
4
+ export declare const MappingServiceName = "AWS:Lambda/Mapping";
5
+ export declare const MappingServiceType = "aws:lambda.mapping";
6
+ export type GetMappingSourceArn = (context: StepContext) => Promise<Arn> | Arn;
7
+ export type MappingParameters = Omit<CreateRequest, 'functionName' | 'sourceArn'> & {
8
+ getSourceArn: GetMappingSourceArn;
9
+ };
10
+ export type MappingResult = CreateResponse & {
11
+ functionName: string;
12
+ sourceArn: Arn;
13
+ };
14
+ export type MappingState = EntryState & {
15
+ type: typeof MappingServiceType;
16
+ parameters: MappingParameters;
17
+ result?: MappingResult;
18
+ };
@@ -1,5 +1,5 @@
1
1
  import type { EntryState, EntryStates } from '@ez4/stateful';
2
2
  import type { FunctionState } from '../function/types.js';
3
- import type { PermissionParametersGenerator, PermissionState } from './types.js';
3
+ import type { PermissionParameters, PermissionState } from './types.js';
4
4
  export declare const isPermission: (resource: EntryState) => resource is PermissionState;
5
- export declare const createPermission: <E extends EntryState>(state: EntryStates<E>, sourceState: EntryState, functionState: FunctionState, getParameters: PermissionParametersGenerator) => PermissionState;
5
+ export declare const createPermission: <E extends EntryState>(state: EntryStates<E>, sourceState: EntryState, functionState: FunctionState, parameters: PermissionParameters) => PermissionState;
@@ -2,13 +2,16 @@ import type { EntryState, StepContext } from '@ez4/stateful';
2
2
  import type { CreateRequest, CreateResponse } from './client.js';
3
3
  export declare const PermissionServiceName = "AWS:Lambda/Permission";
4
4
  export declare const PermissionServiceType = "aws:lambda.permission";
5
- export type PermissionParameters = Omit<CreateRequest, 'functionName' | 'statementId' | 'action'>;
5
+ export type Permission = Omit<CreateRequest, 'functionName' | 'statementId' | 'action'>;
6
+ export type GetPermission = (context: StepContext) => Promise<Permission> | Permission;
7
+ export type PermissionParameters = {
8
+ getPermission: GetPermission;
9
+ };
6
10
  export type PermissionResult = CreateResponse & {
7
11
  functionName: string;
8
12
  };
9
- export type PermissionParametersGenerator = (context: StepContext) => Promise<PermissionParameters> | PermissionParameters;
10
13
  export type PermissionState = EntryState & {
11
14
  type: typeof PermissionServiceType;
12
- parameters: PermissionParametersGenerator;
15
+ parameters: PermissionParameters;
13
16
  result?: PermissionResult;
14
17
  };
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.0.0",
4
+ "version": "0.1.0",
5
5
  "author": "Silas B.",
6
6
  "license": "MIT",
7
7
  "type": "module",
@@ -23,16 +23,15 @@
23
23
  "test:types": "npm run build && tsc -p tsconfig.test.json",
24
24
  "local:publish": "npm run build && npm run clean:registry && npm publish --registry http://localhost:4873",
25
25
  "clean:registry": "rm -rf ../../.registry/@ez4/aws-function",
26
- "prepublishOnly": "npm run clean && npm run build && npm run test",
27
- "publish": "npm publish --access public"
26
+ "live:publish": "npm run test && npm publish --access public"
28
27
  },
29
28
  "dependencies": {
30
29
  "@aws-sdk/client-lambda": "^3.614.0",
31
- "@ez4/aws-common": "^0.0.0",
32
- "@ez4/aws-identity": "^0.0.0",
33
- "@ez4/project": "^0.0.0",
34
- "@ez4/stateful": "^0.0.0",
35
- "@ez4/utils": "^0.0.0",
30
+ "@ez4/aws-common": "^0.1.0",
31
+ "@ez4/aws-identity": "^0.1.0",
32
+ "@ez4/project": "^0.1.0",
33
+ "@ez4/stateful": "^0.1.0",
34
+ "@ez4/utils": "^0.1.0",
36
35
  "@types/adm-zip": "^0.5.5",
37
36
  "adm-zip": "^0.5.14"
38
37
  }