@ez4/aws-function 0.16.0 → 0.17.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/dist/function/helpers/zip.d.ts +1 -1
- package/dist/main.cjs +45 -43
- package/dist/main.mjs +56 -55
- package/package.json +6 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const getZipBuffer: (filePath: string, entryName: string) => Promise<Buffer
|
|
1
|
+
export declare const getZipBuffer: (filePath: string, entryName: string) => Promise<Buffer<ArrayBufferLike>>;
|
package/dist/main.cjs
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
"use strict";var Ge=Object.create;var I=Object.defineProperty;var $e=Object.getOwnPropertyDescriptor;var We=Object.getOwnPropertyNames;var Ze=Object.getPrototypeOf,ke=Object.prototype.hasOwnProperty;var Ke=(e,t)=>{for(var r in t)I(e,r,{get:t[r],enumerable:!0})},W=(e,t,r,n)=>{if(t&&
|
|
2
2
|
typeof t=="object"||typeof t=="function")for(let o of We(t))!ke.call(e,o)&&o!==r&&
|
|
3
3
|
I(e,o,{get:()=>t[o],enumerable:!(n=$e(t,o))||n.enumerable});return e};var _e=(e,t,r)=>(r=e!=null?Ge(Ze(e)):{},W(t||!e||!e.__esModule?I(r,"default",{value:e,
|
|
4
|
-
enumerable:!0}):r,e)),Qe=e=>W(I({},"__esModule",{value:!0}),e);var It={};Ke(It,{FunctionServiceName:()=>a,FunctionServiceType:()=>l,MappingServiceName:()=>
|
|
5
|
-
MappingServiceType:()=>w,PermissionServiceName:()=>F,PermissionServiceType:()=>
|
|
6
|
-
createFunction:()=>
|
|
4
|
+
enumerable:!0}):r,e)),Qe=e=>W(I({},"__esModule",{value:!0}),e);var It={};Ke(It,{FunctionServiceName:()=>a,FunctionServiceType:()=>l,MappingServiceName:()=>y,
|
|
5
|
+
MappingServiceType:()=>w,PermissionServiceName:()=>F,PermissionServiceType:()=>f,
|
|
6
|
+
createFunction:()=>Ct,createMapping:()=>Et,createPermission:()=>vt,getFunctionArn:()=>ct,
|
|
7
7
|
getFunctionName:()=>A,getFunctionState:()=>pt,getPermission:()=>At,isFunctionState:()=>L,
|
|
8
|
-
isMappingState:()=>Mt,registerTriggers:()=>
|
|
8
|
+
isMappingState:()=>Mt,registerTriggers:()=>Rt,tryGetFunctionArn:()=>pe,tryGetFunctionState:()=>at});
|
|
9
9
|
module.exports=Qe(It);var De=require("@ez4/aws-common"),ze=require("@ez4/aws-identity"),qe=require("@ez4/project/library");var ie=require("@ez4/aws-common");var ne=require("@aws-sdk/client-lambda"),g=require("@ez4/aws-common"),v=require("@ez4/utils"),
|
|
10
|
-
|
|
10
|
+
B=require("@ez4/aws-identity");var s=require("@aws-sdk/client-lambda"),m=require("@ez4/aws-common");var Z=require("@ez4/aws-common"),k=require("@ez4/utils");var a="AWS:Lambda/Function",l="aws:lambda.function";var Je=/[a-z][\w]+/i,Xe=e=>Je.test(e),D=e=>{for(let t in e)if(!Xe(t))throw new Z.InvalidParameterError(
|
|
11
11
|
a,`${t} is an invalid variable name .`)},h=e=>{let t={};for(let r in e)t[r]=(0,k.hashData)(
|
|
12
12
|
e[r]);return t};var K=_e(require("adm-zip"),1),_=require("node:fs/promises"),Q=async(e,t)=>{let r=new K.default,
|
|
13
13
|
n=await(0,_.readFile)(e);return r.addFile(t,n),r.toBufferPromise()};var d=new s.LambdaClient({}),z={minDelay:15,maxWaitTime:1800,maxDelay:60,client:d},
|
|
@@ -15,10 +15,10 @@ J=async(e,t)=>{m.Logger.logImport(a,e);try{return{functionArn:(await d.send(new
|
|
|
15
15
|
{FunctionName:e,Qualifier:t}))).Configuration.FunctionArn}}catch(r){if(!(r instanceof
|
|
16
16
|
s.ResourceNotFoundException))throw r;return}},X=async e=>{let{functionName:t,variables:r}=e;
|
|
17
17
|
m.Logger.logCreate(a,t),r&&D(r);let{description:n,memory:o,timeout:i,roleArn:c,handlerName:u,
|
|
18
|
-
sourceFile:P,tags:
|
|
18
|
+
sourceFile:P,tags:R}=e,Le=(await d.send(new s.CreateFunctionCommand({Publish:!0,
|
|
19
19
|
FunctionName:t,Description:n,MemorySize:o,Timeout:i,Role:c,Handler:re(u),Runtime:"\
|
|
20
20
|
nodejs22.x",PackageType:"Zip",Code:{ZipFile:await te(P)},Environment:{Variables:r},
|
|
21
|
-
Tags:{...
|
|
21
|
+
Tags:{...R,ManagedBy:"EZ4"}}))).FunctionArn;return m.Logger.logWait(a,t),await(0,s.waitUntilFunctionActive)(
|
|
22
22
|
z,{FunctionName:t}),{functionArn:Le}},q=async(e,t)=>{m.Logger.logUpdate(a,`${e} \
|
|
23
23
|
source code`);let{sourceFile:r}=t;await d.send(new s.UpdateFunctionCodeCommand({
|
|
24
24
|
FunctionName:e,ZipFile:await te(r),Publish:!0})),m.Logger.logWait(a,e),await(0,s.waitUntilFunctionUpdated)(
|
|
@@ -38,62 +38,63 @@ n=t.parameters,o=(0,v.deepCompare)({...r,dependencies:e.dependencies,sourceHash:
|
|
|
38
38
|
r.sourceFile),...r.variables&&{variables:h(r.variables)}},{...n,dependencies:t.dependencies,
|
|
39
39
|
sourceHash:t.result?.sourceHash});if(o.counts)return{...o,name:r.functionName}},
|
|
40
40
|
tt=async(e,t,r)=>{if(t.result)throw new g.ReplaceResourceError(a,e.entryId,t.entryId);
|
|
41
|
-
return se(e,r)},se=async(e,t)=>{let r=e.parameters,n=r.functionName,o=(0,
|
|
41
|
+
return se(e,r)},se=async(e,t)=>{let r=e.parameters,n=r.functionName,o=(0,B.getRoleArn)(
|
|
42
42
|
a,n,t),[i,c]=await Promise.all([r.getFunctionBundle(t),(0,g.bundleHash)(r.sourceFile)]),
|
|
43
43
|
u=await J(n);if(u)return await H(n,r),await q(n,{sourceFile:i}),await j(u.functionArn,
|
|
44
|
-
{...r.tags}),O(e),{functionArn:u.functionArn,sourceHash:c,roleArn:o};let P,
|
|
45
|
-
async()=>{try{return await X({...r,sourceFile:i,roleArn:o})}catch(
|
|
46
|
-
ne.InvalidParameterValueException))throw
|
|
47
|
-
e),{functionArn:
|
|
48
|
-
result:o}=e;if(!o)return;let i=n.functionName,c=(0,
|
|
49
|
-
roleArn??c,P={...n,roleArn:c},
|
|
50
|
-
i,P,
|
|
51
|
-
e),{...o,roleArn:c,sourceHash:
|
|
44
|
+
{...r.tags}),O(e),{functionArn:u.functionArn,sourceHash:c,roleArn:o};let P,R=await(0,v.waitFor)(
|
|
45
|
+
async()=>{try{return await X({...r,sourceFile:i,roleArn:o})}catch(C){if(!(C instanceof
|
|
46
|
+
ne.InvalidParameterValueException))throw C;return P=C,null}});if(!R)throw P;return O(
|
|
47
|
+
e),{functionArn:R.functionArn,sourceHash:c,roleArn:o}},rt=async(e,t,r)=>{let{parameters:n,
|
|
48
|
+
result:o}=e;if(!o)return;let i=n.functionName,c=(0,B.getRoleArn)(a,i,r),u=t.result?.
|
|
49
|
+
roleArn??c,P={...n,roleArn:c},R={...t.parameters,roleArn:u};await Promise.all([ot(
|
|
50
|
+
i,P,R),st(o.functionArn,n,t.parameters)]);let C=await it(i,n,t.result,r);return O(
|
|
51
|
+
e),{...o,roleArn:c,sourceHash:C}},nt=async e=>{let{result:t,parameters:r}=e;t&&await(0,g.waitDeletion)(
|
|
52
52
|
async()=>Y(r.functionName))},O=e=>{let{parameters:t}=e;return t.variables&&(t.variables=
|
|
53
53
|
h(t.variables)),e},ot=async(e,t,r)=>{let n={...t,...t.variables&&{variables:h(t.
|
|
54
54
|
variables)}};!(0,v.deepEqual)(n,r,{exclude:{sourceFile:!0,functionName:!0,tags:!0}})&&
|
|
55
55
|
await H(e,t)},st=async(e,t,r)=>{await(0,g.applyTagUpdates)(t.tags,r.tags,n=>j(e,
|
|
56
56
|
n),n=>ee(e,n))},it=async(e,t,r,n)=>{let o=await(0,g.bundleHash)(t.sourceFile),i=r?.
|
|
57
57
|
sourceHash;if(o!==i){let c=await t.getFunctionBundle(n);return await q(e,{sourceFile:c}),
|
|
58
|
-
o}return i};var ae=()=>{(0,ie.registerProvider)(l,oe())};var
|
|
58
|
+
o}return i};var ae=()=>{(0,ie.registerProvider)(l,oe())};var fe=require("@ez4/aws-common");var le=require("@ez4/aws-common");var V=require("@ez4/aws-common");var b=class extends Error{constructor(t){super(`Function ${t} wasn't found.`)}};var L=e=>e.type===l,at=(e,t,r)=>{try{let n=e.getServiceState(t,r);if(L(n))return n}catch{}},
|
|
59
59
|
pt=(e,t,r)=>{let n=e.getServiceState(t,r);if(!L(n))throw new b(t);return n},A=(e,t,r)=>{
|
|
60
|
-
let n=r.getDependencies(l).at(0)?.parameters;if(!n?.functionName)throw new
|
|
60
|
+
let n=r.getDependencies(l).at(0)?.parameters;if(!n?.functionName)throw new V.IncompleteResourceError(
|
|
61
61
|
e,t,"functionName");return n.functionName},pe=e=>e.getDependencies(l)[0]?.result?.
|
|
62
|
-
functionArn,ct=(e,t,r)=>{let n=pe(r);if(!n)throw new
|
|
63
|
-
t,"functionArn");return n};var S=require("@aws-sdk/client-lambda"),G=require("@ez4/aws-common");var F="AWS:Lambda/Permission",
|
|
62
|
+
functionArn,ct=(e,t,r)=>{let n=pe(r);if(!n)throw new V.IncompleteResourceError(e,
|
|
63
|
+
t,"functionArn");return n};var S=require("@aws-sdk/client-lambda"),G=require("@ez4/aws-common");var F="AWS:Lambda/Permission",f="aws:lambda.permission";var ce=new S.LambdaClient({}),me=async e=>{G.Logger.logCreate(F,e.functionName);
|
|
64
64
|
let t=e.statementId??`SID${Date.now()}`;return await ce.send(new S.AddPermissionCommand(
|
|
65
65
|
{StatementId:t,FunctionName:e.functionName,SourceArn:e.sourceArn,Principal:e.principal,
|
|
66
66
|
Action:e.action})),{statementId:t}},ue=async(e,t)=>{G.Logger.logDelete(F,e);try{
|
|
67
67
|
return await ce.send(new S.RemovePermissionCommand({FunctionName:e,StatementId:t})),
|
|
68
|
-
!0}catch(r){if(!(r instanceof S.ResourceNotFoundException))throw r;return!1}};var ge=()=>({equals:mt,create:
|
|
68
|
+
!0}catch(r){if(!(r instanceof S.ResourceNotFoundException))throw r;return!1}};var ge=()=>({equals:mt,create:ye,replace:lt,preview:ut,update:gt,delete:yt}),mt=(e,t)=>!!e.
|
|
69
69
|
result&&e.result.functionName===t.result?.functionName,ut=async(e,t)=>{},lt=async(e,t,r)=>{
|
|
70
|
-
if(t.result)throw new le.ReplaceResourceError(F,e.entryId,t.entryId);return
|
|
71
|
-
r)},
|
|
70
|
+
if(t.result)throw new le.ReplaceResourceError(F,e.entryId,t.entryId);return ye(e,
|
|
71
|
+
r)},ye=async(e,t)=>{let r=e.parameters,n=A(F,"permission",t),o=await r.getPermission(
|
|
72
72
|
t);return{statementId:(await me({functionName:n,principal:o.principal,sourceArn:o.
|
|
73
73
|
sourceArn,action:"lambda:InvokeFunction"})).statementId,functionName:n}},gt=async()=>{},
|
|
74
|
-
|
|
74
|
+
yt=async e=>{let t=e.result;t&&await ue(t.functionName,t.statementId)};var de=()=>{(0,fe.registerProvider)(f,ge())};var Me=require("@ez4/aws-common");var ve=require("@ez4/aws-common"),N=require("@ez4/utils");var p=require("@aws-sdk/client-lambda"),x=require("@ez4/aws-common"),Se=require("@ez4/utils");var y="AWS:Lambda/Mapping",w="aws:lambda.mapping";var M=new p.LambdaClient({}),we=async(e,t)=>{x.Logger.logImport(y,e);let r=await M.
|
|
75
75
|
send(new p.ListEventSourceMappingsCommand({FunctionName:e,EventSourceArn:t})),[n]=r.
|
|
76
76
|
EventSourceMappings;return n?{eventId:n.UUID}:void 0},Fe=async e=>{let{sourceArn:t,
|
|
77
|
-
functionName:r}=e;x.Logger.logCreate(
|
|
78
|
-
{FunctionName:r,EventSourceArn:t,...
|
|
79
|
-
xe=async(e,t)=>{let{functionName:r}=t;x.Logger.logUpdate(
|
|
80
|
-
send(new p.UpdateEventSourceMappingCommand({UUID:e,FunctionName:r,...
|
|
81
|
-
e)},Pe=async e=>{x.Logger.logDelete(
|
|
77
|
+
functionName:r}=e;x.Logger.logCreate(y,r);let o=(await M.send(new p.CreateEventSourceMappingCommand(
|
|
78
|
+
{FunctionName:r,EventSourceArn:t,...Ce(e)}))).UUID;return await Re(o),{eventId:o}},
|
|
79
|
+
xe=async(e,t)=>{let{functionName:r}=t;x.Logger.logUpdate(y,`${r} (${e})`),await M.
|
|
80
|
+
send(new p.UpdateEventSourceMappingCommand({UUID:e,FunctionName:r,...Ce(t)})),await Re(
|
|
81
|
+
e)},Pe=async e=>{x.Logger.logDelete(y,e);try{return await M.send(new p.DeleteEventSourceMappingCommand(
|
|
82
82
|
{UUID:e})),!0}catch(t){if(!(t instanceof p.ResourceNotFoundException))throw t;return!1}},
|
|
83
|
-
|
|
84
|
-
let t=new Set(["Enabled","Disabled"]);await(0,Se.waitFor)(async()=>{let r=await
|
|
85
|
-
e);return t.has(r)})},
|
|
86
|
-
{service:i}=(0,x.parseArn)(t);return{Enabled:r
|
|
87
|
-
|
|
88
|
-
|
|
83
|
+
ft=async e=>(await M.send(new p.GetEventSourceMappingCommand({UUID:e}))).State,Re=async e=>{
|
|
84
|
+
let t=new Set(["Enabled","Disabled"]);await(0,Se.waitFor)(async()=>{let r=await ft(
|
|
85
|
+
e);return t.has(r)})},Ce=e=>{let{sourceArn:t,enabled:r,concurrency:n,batch:o}=e,
|
|
86
|
+
{service:i}=(0,x.parseArn)(t);return{Enabled:r,FunctionResponseTypes:[p.FunctionResponseType.
|
|
87
|
+
ReportBatchItemFailures],MaximumBatchingWindowInSeconds:o?.maxWindow,BatchSize:o?.
|
|
88
|
+
batchSize,...i==="dynamodb"&&{StartingPosition:p.EventSourcePosition.LATEST},...i===
|
|
89
|
+
"sqs"&&n&&{ScalingConfig:{MaximumConcurrency:n}}}};var Ae=()=>({equals:dt,create:Ee,replace:wt,preview:St,update:Ft,delete:xt}),dt=(e,t)=>!!e.
|
|
89
90
|
result&&e.result.eventId===t.result?.eventId,St=async(e,t)=>{let r={...e.parameters,
|
|
90
91
|
dependencies:e.dependencies},n={...t.parameters,dependencies:t.dependencies},o=(0,N.deepCompare)(
|
|
91
92
|
r,n,{exclude:{getSourceArn:!0}});if(o.counts)return{...o,name:r.fromService}},wt=async(e,t,r)=>{
|
|
92
|
-
if(t.result)throw new ve.ReplaceResourceError(
|
|
93
|
-
r)},Ee=async(e,t)=>{let r=e.parameters,n=A(
|
|
93
|
+
if(t.result)throw new ve.ReplaceResourceError(y,e.entryId,t.entryId);return Ee(e,
|
|
94
|
+
r)},Ee=async(e,t)=>{let r=e.parameters,n=A(y,"mapping",t),o=await r.getSourceArn(
|
|
94
95
|
t);return{eventId:(await we(n,o)??await Fe({...e.parameters,functionName:n,sourceArn:o})).
|
|
95
96
|
eventId,functionName:n,sourceArn:o}},Ft=async(e,t,r)=>{let n=e.result;if(!n)return;
|
|
96
|
-
let o=n.sourceArn,i=A(
|
|
97
|
+
let o=n.sourceArn,i=A(y,"mapping",r),c=t.result?.functionName??n.functionName;return await Pt(
|
|
97
98
|
n.eventId,{...e.parameters,functionName:i,sourceArn:o},{...t.parameters,functionName:c,
|
|
98
99
|
sourceArn:o}),{...n,functionName:i}},xt=async e=>{let t=e.result;t&&await Pe(t.eventId)},
|
|
99
100
|
Pt=async(e,t,r)=>{!(0,N.deepEqual)(t,r,{exclude:{getSourceArn:!0,fromService:!0}})&&
|
|
@@ -102,14 +103,15 @@ await xe(e,t)};var Ie=()=>{(0,Me.registerProvider)(w,Ae())};var he=()=>[{account
|
|
|
102
103
|
ateLogGroup","logs:CreateLogStream","logs:PutLogEvents"],resourceIds:[`arn:aws:l\
|
|
103
104
|
ogs:${t}:${r}:log-group:/aws/lambda/${e}-*:*`]}])};var Ue=async e=>{let{state:t,options:r}=e,n=(0,Ne.getServiceName)("",r),o=`${n}-\
|
|
104
105
|
lambda-policy`;return(0,U.tryGetPolicy)(t,o)??(0,U.createPolicy)(t,{policyDocument:await be(
|
|
105
|
-
n),policyName:o})};var Te=!1,
|
|
106
|
+
n),policyName:o})};var Te=!1,Rt=()=>{Te||((0,De.registerTriggers)(),(0,ze.registerTriggers)(),(0,qe.createTrigger)(
|
|
106
107
|
"@ez4/aws-function",{"deploy:prepareIdentityAccount":he,"deploy:prepareExecution\
|
|
107
|
-
Policy":Ue}),ae(),de(),Ie(),Te=!0)};var T=require("@ez4/utils"),He=require("@ez4/stateful");var
|
|
108
|
+
Policy":Ue}),ae(),de(),Ie(),Te=!0)};var T=require("@ez4/utils"),He=require("@ez4/stateful");var Ct=(e,t,r)=>{let n=(0,T.toKebabCase)(r.functionName),o=(0,T.hashData)(l,t.entryId,
|
|
108
109
|
n);return(0,He.attachEntry)(e,{type:l,entryId:o,dependencies:[t.entryId],parameters:{
|
|
109
|
-
...r,functionName:n}})};var Oe=require("@ez4/stateful"),$=require("@ez4/utils");var je=e=>e.type===
|
|
110
|
-
e,{type:
|
|
111
|
-
let n=(0,$.hashData)(
|
|
110
|
+
...r,functionName:n}})};var Oe=require("@ez4/stateful"),$=require("@ez4/utils");var je=e=>e.type===f;var vt=(e,t,r,n)=>{let o=(0,$.hashData)(f,t.entryId,r.entryId);return(0,Oe.attachEntry)(
|
|
111
|
+
e,{type:f,entryId:o,dependencies:[t.entryId,r.entryId],parameters:n})},At=(e,t,r)=>{
|
|
112
|
+
let n=(0,$.hashData)(f,t.entryId,r.entryId),o=e[n];return o&&je(o)?o:null};var Be=require("@ez4/utils"),Ve=require("@ez4/stateful");var Et=(e,t,r,n)=>{let o=(0,Be.hashData)(w,t.entryId,r.entryId);return(0,Ve.attachEntry)(
|
|
112
113
|
e,{type:w,entryId:o,dependencies:[t.entryId,r.entryId],parameters:n})};var Mt=e=>e.type===w;0&&(module.exports={FunctionServiceName,FunctionServiceType,MappingServiceName,MappingServiceType,
|
|
113
114
|
PermissionServiceName,PermissionServiceType,createFunction,createMapping,createPermission,
|
|
114
115
|
getFunctionArn,getFunctionName,getFunctionState,getPermission,isFunctionState,isMappingState,
|
|
115
116
|
registerTriggers,tryGetFunctionArn,tryGetFunctionState});
|
|
117
|
+
//# sourceMappingURL=main.cjs.map
|
package/dist/main.mjs
CHANGED
|
@@ -1,45 +1,45 @@
|
|
|
1
|
-
import{registerTriggers as
|
|
2
|
-
import{createTrigger as
|
|
1
|
+
import{registerTriggers as Tt}from"@ez4/aws-common";import{registerTriggers as Dt}from"@ez4/aws-identity";
|
|
2
|
+
import{createTrigger as zt}from"@ez4/project/library";import{registerProvider as Ze}from"@ez4/aws-common";import{InvalidParameterValueException as Ne}from"@aws-sdk/client-lambda";import{
|
|
3
3
|
applyTagUpdates as Ue,bundleHash as b,ReplaceResourceError as Te,waitDeletion as De}from"@ez4/aws-common";
|
|
4
|
-
import{deepCompare as ze,deepEqual as qe,waitFor as He}from"@ez4/utils";import{getRoleArn as
|
|
4
|
+
import{deepCompare as ze,deepEqual as qe,waitFor as He}from"@ez4/utils";import{getRoleArn as V}from"@ez4/aws-identity";import{LambdaClient as Re,GetFunctionCommand as Ce,CreateFunctionCommand as ve,DeleteFunctionCommand as Ae,
|
|
5
5
|
UpdateFunctionCodeCommand as Ee,UpdateFunctionConfigurationCommand as Me,TagResourceCommand as Ie,
|
|
6
6
|
UntagResourceCommand as he,waitUntilFunctionActive as be,waitUntilFunctionUpdated as U,
|
|
7
7
|
ResourceNotFoundException as T}from"@aws-sdk/client-lambda";import{Logger as c,tryParseArn as D}from"@ez4/aws-common";import{InvalidParameterError as de}from"@ez4/aws-common";import{hashData as Se}from"@ez4/utils";var i="AWS:Lambda/Function",m="aws:lambda.function";var we=/[a-z][\w]+/i,Fe=e=>we.test(e),v=e=>{for(let t in e)if(!Fe(t))throw new de(
|
|
8
8
|
i,`${t} is an invalid variable name .`)},P=e=>{let t={};for(let r in e)t[r]=Se(e[r]);
|
|
9
9
|
return t};import xe from"adm-zip";import{readFile as Pe}from"node:fs/promises";var N=async(e,t)=>{
|
|
10
|
-
let r=new xe,n=await Pe(e);return r.addFile(t,n),r.toBufferPromise()};var l=new
|
|
11
|
-
c.logImport(i,e);try{return{functionArn:(await l.send(new
|
|
10
|
+
let r=new xe,n=await Pe(e);return r.addFile(t,n),r.toBufferPromise()};var l=new Re({}),A={minDelay:15,maxWaitTime:1800,maxDelay:60,client:l},z=async(e,t)=>{
|
|
11
|
+
c.logImport(i,e);try{return{functionArn:(await l.send(new Ce({FunctionName:e,Qualifier:t}))).
|
|
12
12
|
Configuration.FunctionArn}}catch(r){if(!(r instanceof T))throw r;return}},q=async e=>{
|
|
13
13
|
let{functionName:t,variables:r}=e;c.logCreate(i,t),r&&v(r);let{description:n,memory:o,
|
|
14
|
-
timeout:s,roleArn:a,handlerName:p,sourceFile:
|
|
15
|
-
{Publish:!0,FunctionName:t,Description:n,MemorySize:o,Timeout:s,Role:a,Handler:
|
|
16
|
-
p),Runtime:"nodejs22.x",PackageType:"Zip",Code:{ZipFile:await O(
|
|
14
|
+
timeout:s,roleArn:a,handlerName:p,sourceFile:f,tags:d}=e,fe=(await l.send(new ve(
|
|
15
|
+
{Publish:!0,FunctionName:t,Description:n,MemorySize:o,Timeout:s,Role:a,Handler:B(
|
|
16
|
+
p),Runtime:"nodejs22.x",PackageType:"Zip",Code:{ZipFile:await O(f)},Environment:{
|
|
17
17
|
Variables:r},Tags:{...d,ManagedBy:"EZ4"}}))).FunctionArn;return c.logWait(i,t),await be(
|
|
18
|
-
A,{FunctionName:t}),{functionArn:
|
|
18
|
+
A,{FunctionName:t}),{functionArn:fe}},E=async(e,t)=>{c.logUpdate(i,`${e} source \
|
|
19
19
|
code`);let{sourceFile:r}=t;await l.send(new Ee({FunctionName:e,ZipFile:await O(r),
|
|
20
20
|
Publish:!0})),c.logWait(i,e),await U(A,{FunctionName:e})},M=async(e,t)=>{let{variables:r}=t;
|
|
21
21
|
c.logUpdate(i,`${e} configuration`),r&&v(r);let{description:n,memory:o,timeout:s,
|
|
22
22
|
roleArn:a,handlerName:p}=t;await l.send(new Me({FunctionName:e,Description:n,MemorySize:o,
|
|
23
|
-
Timeout:s,Role:a,...p&&{Handler:
|
|
23
|
+
Timeout:s,Role:a,...p&&{Handler:B(p)},Environment:{Variables:r}})),c.logWait(i,e),
|
|
24
24
|
await U(A,{FunctionName:e})},H=async e=>{c.logDelete(i,e);try{return await l.send(
|
|
25
25
|
new Ae({FunctionName:e})),!0}catch(t){if(!(t instanceof T))throw t;return!1}},I=async(e,t)=>{
|
|
26
26
|
let r=D(e)?.resourceName??e;c.logTag(i,r),await l.send(new Ie({Resource:e,Tags:{
|
|
27
27
|
...t,ManagedBy:"EZ4"}}))},j=async(e,t)=>{let r=D(e)?.resourceName??e;c.logUntag(
|
|
28
|
-
i,r),await l.send(new he({Resource:e,TagKeys:t}))},O=e=>N(e,"main.mjs"),
|
|
29
|
-
in.${e}`;var L=()=>({equals:je,create:G,replace:
|
|
28
|
+
i,r),await l.send(new he({Resource:e,TagKeys:t}))},O=e=>N(e,"main.mjs"),B=e=>`ma\
|
|
29
|
+
in.${e}`;var L=()=>({equals:je,create:G,replace:Be,preview:Oe,update:Ve,delete:Le}),je=(e,t)=>!!e.
|
|
30
30
|
result&&e.result.functionArn===t.result?.functionArn,Oe=async(e,t)=>{let r=e.parameters,
|
|
31
31
|
n=t.parameters,o=ze({...r,dependencies:e.dependencies,sourceHash:await b(r.sourceFile),
|
|
32
32
|
...r.variables&&{variables:P(r.variables)}},{...n,dependencies:t.dependencies,sourceHash:t.
|
|
33
|
-
result?.sourceHash});if(o.counts)return{...o,name:r.functionName}},
|
|
33
|
+
result?.sourceHash});if(o.counts)return{...o,name:r.functionName}},Be=async(e,t,r)=>{
|
|
34
34
|
if(t.result)throw new Te(i,e.entryId,t.entryId);return G(e,r)},G=async(e,t)=>{let r=e.
|
|
35
|
-
parameters,n=r.functionName,o=
|
|
35
|
+
parameters,n=r.functionName,o=V(i,n,t),[s,a]=await Promise.all([r.getFunctionBundle(
|
|
36
36
|
t),b(r.sourceFile)]),p=await z(n);if(p)return await M(n,r),await E(n,{sourceFile:s}),
|
|
37
37
|
await I(p.functionArn,{...r.tags}),h(e),{functionArn:p.functionArn,sourceHash:a,
|
|
38
|
-
roleArn:o};let
|
|
39
|
-
if(!(S instanceof Ne))throw S;return
|
|
40
|
-
functionArn,sourceHash:a,roleArn:o}},
|
|
41
|
-
if(!o)return;let s=n.functionName,a=
|
|
42
|
-
d={...t.parameters,roleArn:p};await Promise.all([Ge(s,
|
|
38
|
+
roleArn:o};let f,d=await He(async()=>{try{return await q({...r,sourceFile:s,roleArn:o})}catch(S){
|
|
39
|
+
if(!(S instanceof Ne))throw S;return f=S,null}});if(!d)throw f;return h(e),{functionArn:d.
|
|
40
|
+
functionArn,sourceHash:a,roleArn:o}},Ve=async(e,t,r)=>{let{parameters:n,result:o}=e;
|
|
41
|
+
if(!o)return;let s=n.functionName,a=V(i,s,r),p=t.result?.roleArn??a,f={...n,roleArn:a},
|
|
42
|
+
d={...t.parameters,roleArn:p};await Promise.all([Ge(s,f,d),$e(o.functionArn,n,t.
|
|
43
43
|
parameters)]);let S=await We(s,n,t.result,r);return h(e),{...o,roleArn:a,sourceHash:S}},
|
|
44
44
|
Le=async e=>{let{result:t,parameters:r}=e;t&&await De(async()=>H(r.functionName))},
|
|
45
45
|
h=e=>{let{parameters:t}=e;return t.variables&&(t.variables=P(t.variables)),e},Ge=async(e,t,r)=>{
|
|
@@ -47,11 +47,11 @@ let n={...t,...t.variables&&{variables:P(t.variables)}};!qe(n,r,{exclude:{source
|
|
|
47
47
|
functionName:!0,tags:!0}})&&await M(e,t)},$e=async(e,t,r)=>{await Ue(t.tags,r.tags,
|
|
48
48
|
n=>I(e,n),n=>j(e,n))},We=async(e,t,r,n)=>{let o=await b(t.sourceFile),s=r?.sourceHash;
|
|
49
49
|
if(o!==s){let a=await t.getFunctionBundle(n);return await E(e,{sourceFile:a}),o}
|
|
50
|
-
return s};var $=()=>{Ze(m,L())};import{registerProvider as ot}from"@ez4/aws-common";import{ReplaceResourceError as Xe}from"@ez4/aws-common";import{IncompleteResourceError as W}from"@ez4/aws-common";var
|
|
51
|
-
|
|
50
|
+
return s};var $=()=>{Ze(m,L())};import{registerProvider as ot}from"@ez4/aws-common";import{ReplaceResourceError as Xe}from"@ez4/aws-common";import{IncompleteResourceError as W}from"@ez4/aws-common";var R=class extends Error{constructor(t){super(`Function ${t} wasn't found.`)}};var Z=e=>e.type===m,wr=(e,t,r)=>{try{let n=e.getServiceState(t,r);if(Z(n))return n}catch{}},
|
|
51
|
+
Fr=(e,t,r)=>{let n=e.getServiceState(t,r);if(!Z(n))throw new R(t);return n},F=(e,t,r)=>{
|
|
52
52
|
let n=r.getDependencies(m).at(0)?.parameters;if(!n?.functionName)throw new W(e,t,
|
|
53
53
|
"functionName");return n.functionName},ke=e=>e.getDependencies(m)[0]?.result?.functionArn,
|
|
54
|
-
|
|
54
|
+
xr=(e,t,r)=>{let n=ke(r);if(!n)throw new W(e,t,"functionArn");return n};import{LambdaClient as Ke,AddPermissionCommand as _e,RemovePermissionCommand as Qe,
|
|
55
55
|
ResourceNotFoundException as Je}from"@aws-sdk/client-lambda";import{Logger as k}from"@ez4/aws-common";var w="AWS:Lambda/Permission",g="aws:lambda.permission";var K=new Ke({}),_=async e=>{k.logCreate(w,e.functionName);let t=e.statementId??
|
|
56
56
|
`SID${Date.now()}`;return await K.send(new _e({StatementId:t,FunctionName:e.functionName,
|
|
57
57
|
SourceArn:e.sourceArn,Principal:e.principal,Action:e.action})),{statementId:t}},
|
|
@@ -62,44 +62,45 @@ if(t.result)throw new Xe(w,e.entryId,t.entryId);return X(e,r)},X=async(e,t)=>{le
|
|
|
62
62
|
parameters,n=F(w,"permission",t),o=await r.getPermission(t);return{statementId:(await _(
|
|
63
63
|
{functionName:n,principal:o.principal,sourceArn:o.sourceArn,action:"lambda:Invok\
|
|
64
64
|
eFunction"})).statementId,functionName:n}},rt=async()=>{},nt=async e=>{let t=e.result;
|
|
65
|
-
t&&await Q(t.functionName,t.statementId)};var Y=()=>{ot(g,J())};import{registerProvider as
|
|
66
|
-
deepEqual as
|
|
65
|
+
t&&await Q(t.functionName,t.statementId)};var Y=()=>{ot(g,J())};import{registerProvider as Et}from"@ez4/aws-common";import{ReplaceResourceError as St}from"@ez4/aws-common";import{deepCompare as wt,
|
|
66
|
+
deepEqual as Ft}from"@ez4/utils";import{LambdaClient as st,GetEventSourceMappingCommand as it,CreateEventSourceMappingCommand as at,
|
|
67
67
|
UpdateEventSourceMappingCommand as pt,DeleteEventSourceMappingCommand as ct,ListEventSourceMappingsCommand as mt,
|
|
68
|
-
|
|
69
|
-
import{Logger as
|
|
68
|
+
FunctionResponseType as ut,EventSourcePosition as lt,ResourceNotFoundException as gt}from"@aws-sdk/client-lambda";
|
|
69
|
+
import{Logger as C,parseArn as yt}from"@ez4/aws-common";import{waitFor as ft}from"@ez4/utils";var u="AWS:Lambda/Mapping",y="aws:lambda.mapping";var x=new st({}),ee=async(e,t)=>{C.logImport(u,e);let r=await x.send(new mt({FunctionName:e,
|
|
70
70
|
EventSourceArn:t})),[n]=r.EventSourceMappings;return n?{eventId:n.UUID}:void 0},
|
|
71
|
-
te=async e=>{let{sourceArn:t,functionName:r}=e;
|
|
71
|
+
te=async e=>{let{sourceArn:t,functionName:r}=e;C.logCreate(u,r);let o=(await x.send(
|
|
72
72
|
new at({FunctionName:r,EventSourceArn:t,...se(e)}))).UUID;return await oe(o),{eventId:o}},
|
|
73
|
-
re=async(e,t)=>{let{functionName:r}=t;
|
|
74
|
-
new pt({UUID:e,FunctionName:r,...se(t)})),await oe(e)},ne=async e=>{
|
|
75
|
-
u,e);try{return await x.send(new ct({UUID:e})),!0}catch(t){if(!(t instanceof
|
|
76
|
-
throw t;return!1}},
|
|
77
|
-
let t=new Set(["Enabled","Disabled"]);await ft(async()=>{let r=await
|
|
78
|
-
has(r)})},se=e=>{let{sourceArn:t,enabled:r,concurrency:n,batch:o}=e,{service:s}=
|
|
79
|
-
t);return{Enabled:r
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
result&&e.result.eventId===t.result?.eventId,
|
|
83
|
-
dependencies:e.dependencies},n={...t.parameters,dependencies:t.dependencies},o=
|
|
84
|
-
r,n,{exclude:{getSourceArn:!0}});if(o.counts)return{...o,name:r.fromService}},
|
|
85
|
-
if(t.result)throw new
|
|
73
|
+
re=async(e,t)=>{let{functionName:r}=t;C.logUpdate(u,`${r} (${e})`),await x.send(
|
|
74
|
+
new pt({UUID:e,FunctionName:r,...se(t)})),await oe(e)},ne=async e=>{C.logDelete(
|
|
75
|
+
u,e);try{return await x.send(new ct({UUID:e})),!0}catch(t){if(!(t instanceof gt))
|
|
76
|
+
throw t;return!1}},dt=async e=>(await x.send(new it({UUID:e}))).State,oe=async e=>{
|
|
77
|
+
let t=new Set(["Enabled","Disabled"]);await ft(async()=>{let r=await dt(e);return t.
|
|
78
|
+
has(r)})},se=e=>{let{sourceArn:t,enabled:r,concurrency:n,batch:o}=e,{service:s}=yt(
|
|
79
|
+
t);return{Enabled:r,FunctionResponseTypes:[ut.ReportBatchItemFailures],MaximumBatchingWindowInSeconds:o?.
|
|
80
|
+
maxWindow,BatchSize:o?.batchSize,...s==="dynamodb"&&{StartingPosition:lt.LATEST},
|
|
81
|
+
...s==="sqs"&&n&&{ScalingConfig:{MaximumConcurrency:n}}}};var ie=()=>({equals:xt,create:ae,replace:Rt,preview:Pt,update:Ct,delete:vt}),xt=(e,t)=>!!e.
|
|
82
|
+
result&&e.result.eventId===t.result?.eventId,Pt=async(e,t)=>{let r={...e.parameters,
|
|
83
|
+
dependencies:e.dependencies},n={...t.parameters,dependencies:t.dependencies},o=wt(
|
|
84
|
+
r,n,{exclude:{getSourceArn:!0}});if(o.counts)return{...o,name:r.fromService}},Rt=async(e,t,r)=>{
|
|
85
|
+
if(t.result)throw new St(u,e.entryId,t.entryId);return ae(e,r)},ae=async(e,t)=>{
|
|
86
86
|
let r=e.parameters,n=F(u,"mapping",t),o=await r.getSourceArn(t);return{eventId:(await ee(
|
|
87
87
|
n,o)??await te({...e.parameters,functionName:n,sourceArn:o})).eventId,functionName:n,
|
|
88
88
|
sourceArn:o}},Ct=async(e,t,r)=>{let n=e.result;if(!n)return;let o=n.sourceArn,s=F(
|
|
89
|
-
u,"mapping",r),a=t.result?.functionName??n.functionName;return await
|
|
89
|
+
u,"mapping",r),a=t.result?.functionName??n.functionName;return await At(n.eventId,
|
|
90
90
|
{...e.parameters,functionName:s,sourceArn:o},{...t.parameters,functionName:a,sourceArn:o}),
|
|
91
|
-
{...n,functionName:s}},
|
|
92
|
-
!
|
|
93
|
-
var me=async e=>{let[t,r]=await Promise.all([
|
|
91
|
+
{...n,functionName:s}},vt=async e=>{let t=e.result;t&&await ne(t.eventId)},At=async(e,t,r)=>{
|
|
92
|
+
!Ft(t,r,{exclude:{getSourceArn:!0,fromService:!0}})&&await re(e,t)};var pe=()=>{Et(y,ie())};var ce=()=>[{account:"lambda.amazonaws.com"}];import{createPolicy as bt,tryGetPolicy as Nt}from"@ez4/aws-identity";import{getServiceName as Ut}from"@ez4/project/library";import{getAccountId as Mt,getRegion as It,createPolicyDocument as ht}from"@ez4/aws-identity";
|
|
93
|
+
var me=async e=>{let[t,r]=await Promise.all([It(),Mt()]);return ht([{permissions:[
|
|
94
94
|
"logs:CreateLogGroup","logs:CreateLogStream","logs:PutLogEvents"],resourceIds:[`\
|
|
95
|
-
arn:aws:logs:${t}:${r}:log-group:/aws/lambda/${e}-*:*`]}])};var ue=async e=>{let{state:t,options:r}=e,n=
|
|
96
|
-
t,o)??
|
|
97
|
-
Account":ce,"deploy:prepareExecutionPolicy":ue}),$(),Y(),pe(),le=!0)};import{toKebabCase as
|
|
98
|
-
entryId:o,dependencies:[t.entryId],parameters:{...r,functionName:n}})};import{attachEntry as
|
|
99
|
-
dependencies:[t.entryId,r.entryId],parameters:n})},
|
|
100
|
-
r.entryId),o=e[n];return o&&ge(o)?o:null};import{hashData as
|
|
101
|
-
dependencies:[t.entryId,r.entryId],parameters:n})};var
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
95
|
+
arn:aws:logs:${t}:${r}:log-group:/aws/lambda/${e}-*:*`]}])};var ue=async e=>{let{state:t,options:r}=e,n=Ut("",r),o=`${n}-lambda-policy`;return Nt(
|
|
96
|
+
t,o)??bt(t,{policyDocument:await me(n),policyName:o})};var le=!1,yn=()=>{le||(Tt(),Dt(),zt("@ez4/aws-function",{"deploy:prepareIdentity\
|
|
97
|
+
Account":ce,"deploy:prepareExecutionPolicy":ue}),$(),Y(),pe(),le=!0)};import{toKebabCase as qt,hashData as Ht}from"@ez4/utils";import{attachEntry as jt}from"@ez4/stateful";var Fn=(e,t,r)=>{let n=qt(r.functionName),o=Ht(m,t.entryId,n);return jt(e,{type:m,
|
|
98
|
+
entryId:o,dependencies:[t.entryId],parameters:{...r,functionName:n}})};import{attachEntry as Ot}from"@ez4/stateful";import{hashData as ye}from"@ez4/utils";var ge=e=>e.type===g;var Mn=(e,t,r,n)=>{let o=ye(g,t.entryId,r.entryId);return Ot(e,{type:g,entryId:o,
|
|
99
|
+
dependencies:[t.entryId,r.entryId],parameters:n})},In=(e,t,r)=>{let n=ye(g,t.entryId,
|
|
100
|
+
r.entryId),o=e[n];return o&&ge(o)?o:null};import{hashData as Bt}from"@ez4/utils";import{attachEntry as Vt}from"@ez4/stateful";var Tn=(e,t,r,n)=>{let o=Bt(y,t.entryId,r.entryId);return Vt(e,{type:y,entryId:o,
|
|
101
|
+
dependencies:[t.entryId,r.entryId],parameters:n})};var qn=e=>e.type===y;export{i as FunctionServiceName,m as FunctionServiceType,u as MappingServiceName,
|
|
102
|
+
y as MappingServiceType,w as PermissionServiceName,g as PermissionServiceType,Fn as createFunction,
|
|
103
|
+
Tn as createMapping,Mn as createPermission,xr as getFunctionArn,F as getFunctionName,
|
|
104
|
+
Fr as getFunctionState,In as getPermission,Z as isFunctionState,qn as isMappingState,
|
|
105
|
+
yn as registerTriggers,ke as tryGetFunctionArn,wr as tryGetFunctionState};
|
|
106
|
+
//# 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.
|
|
4
|
+
"version": "0.17.0",
|
|
5
5
|
"author": "Silas B.",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"type": "module",
|
|
@@ -38,11 +38,11 @@
|
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
40
|
"@aws-sdk/client-lambda": "^3.758.0",
|
|
41
|
-
"@ez4/aws-common": "^0.
|
|
42
|
-
"@ez4/aws-identity": "^0.
|
|
43
|
-
"@ez4/project": "^0.
|
|
44
|
-
"@ez4/stateful": "^0.
|
|
45
|
-
"@ez4/utils": "^0.
|
|
41
|
+
"@ez4/aws-common": "^0.17.0",
|
|
42
|
+
"@ez4/aws-identity": "^0.17.0",
|
|
43
|
+
"@ez4/project": "^0.17.0",
|
|
44
|
+
"@ez4/stateful": "^0.17.0",
|
|
45
|
+
"@ez4/utils": "^0.17.0",
|
|
46
46
|
"@types/adm-zip": "^0.5.5",
|
|
47
47
|
"adm-zip": "^0.5.14"
|
|
48
48
|
}
|