@ez4/aws-function 0.16.0 → 0.18.0

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