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