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