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