@ez4/aws-function 0.26.0 → 0.28.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.
@@ -1,5 +1,5 @@
1
1
  import type { Arn, ResourceTags } from '@ez4/aws-common';
2
- import type { Variables } from '../types/variables.js';
2
+ import type { Variables } from '../types/variables';
3
3
  export type CreateRequest = {
4
4
  roleArn: Arn;
5
5
  sourceFile: string;
@@ -1,3 +1,3 @@
1
1
  import type { StepHandler } from '@ez4/stateful';
2
- import type { FunctionState } from './types.js';
2
+ import type { FunctionState } from './types';
3
3
  export declare const getFunctionHandler: () => StepHandler<FunctionState>;
@@ -1,3 +1,3 @@
1
- import type { Variables } from '../../types/variables.js';
1
+ import type { Variables } from '../../types/variables';
2
2
  export declare const assertVariables: (variables: Variables) => void;
3
3
  export declare const protectVariables: (variables: Variables) => Variables;
@@ -1,5 +1,5 @@
1
1
  import type { EntryState, EntryStates } from '@ez4/stateful';
2
2
  import type { RoleState } from '@ez4/aws-identity';
3
3
  import type { LogGroupState } from '@ez4/aws-logs';
4
- import type { FunctionParameters, FunctionState } from './types.js';
4
+ import type { FunctionParameters, FunctionState } from './types';
5
5
  export declare const createFunction: <E extends EntryState>(state: EntryStates<E>, roleState: RoleState, logGroupState: LogGroupState | undefined, parameters: FunctionParameters) => FunctionState;
@@ -1,6 +1,6 @@
1
1
  import type { EntryState, StepContext } from '@ez4/stateful';
2
2
  import type { Arn } from '@ez4/aws-common';
3
- import type { CreateRequest, ImportOrCreateResponse } from './client.js';
3
+ import type { CreateRequest, ImportOrCreateResponse } from './client';
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;
@@ -1,6 +1,6 @@
1
1
  import type { DeployOptions, EventContext } from '@ez4/project/library';
2
2
  import type { EntryState, StepContext } from '@ez4/stateful';
3
- import type { FunctionState } from './types.js';
3
+ import type { FunctionState } from './types';
4
4
  export declare const isFunctionState: (resource: EntryState) => resource is FunctionState;
5
5
  export declare const tryGetFunctionState: (context: EventContext, functionName: string, options: DeployOptions) => FunctionState | undefined;
6
6
  export declare const getFunctionState: (context: EventContext, functionName: string, options: DeployOptions) => FunctionState;
package/dist/main.cjs CHANGED
@@ -1,14 +1,14 @@
1
- "use strict";var Qe=Object.create;var A=Object.defineProperty;var Je=Object.getOwnPropertyDescriptor;var Ke=Object.getOwnPropertyNames;var _e=Object.getPrototypeOf,Xe=Object.prototype.hasOwnProperty;var n=(e,t)=>A(e,"name",{value:t,configurable:!0});var Ye=(e,t)=>{for(var r in t)A(e,r,{get:t[r],enumerable:!0})},k=(e,t,r,o)=>{if(t&&
1
+ "use strict";var Qe=Object.create;var A=Object.defineProperty;var Je=Object.getOwnPropertyDescriptor;var Ke=Object.getOwnPropertyNames;var _e=Object.getPrototypeOf,Xe=Object.prototype.hasOwnProperty;var n=(e,t)=>A(e,"name",{value:t,configurable:!0});var Ye=(e,t)=>{for(var r in t)A(e,r,{get:t[r],enumerable:!0})},j=(e,t,r,o)=>{if(t&&
2
2
  typeof t=="object"||typeof t=="function")for(let i of Ke(t))!Xe.call(e,i)&&i!==r&&
3
- A(e,i,{get:()=>t[i],enumerable:!(o=Je(t,i))||o.enumerable});return e};var et=(e,t,r)=>(r=e!=null?Qe(_e(e)):{},k(t||!e||!e.__esModule?A(r,"default",{value:e,
4
- enumerable:!0}):r,e)),tt=e=>k(A({},"__esModule",{value:!0}),e);var Ut={};Ye(Ut,{FunctionServiceName:()=>p,FunctionServiceType:()=>g,MappingService:()=>$,
3
+ A(e,i,{get:()=>t[i],enumerable:!(o=Je(t,i))||o.enumerable});return e};var et=(e,t,r)=>(r=e!=null?Qe(_e(e)):{},j(t||!e||!e.__esModule?A(r,"default",{value:e,
4
+ enumerable:!0}):r,e)),tt=e=>j(A({},"__esModule",{value:!0}),e);var Ut={};Ye(Ut,{FunctionServiceName:()=>p,FunctionServiceType:()=>g,MappingService:()=>Z,
5
5
  MappingServiceName:()=>f,MappingServiceType:()=>x,PermissionServiceName:()=>P,PermissionServiceType:()=>S,
6
6
  createFunction:()=>ht,createMapping:()=>Nt,createPermission:()=>It,getFunctionArn:()=>ft,
7
- getFunctionName:()=>C,getFunctionState:()=>gt,getPermission:()=>Mt,isFunctionState:()=>W,
7
+ getFunctionName:()=>C,getFunctionState:()=>gt,getPermission:()=>Mt,isFunctionState:()=>q,
8
8
  isMappingState:()=>Tt,registerTriggers:()=>Et,tryGetFunctionArn:()=>me,tryGetFunctionState:()=>lt});
9
9
  module.exports=tt(Ut);var ze=require("@ez4/aws-common"),Ge=require("@ez4/aws-identity"),Ve=require("@ez4/aws-logs"),
10
- He=require("@ez4/project/library");var pe=require("@ez4/aws-common");var F=require("@ez4/aws-common"),I=require("@ez4/utils"),j=require("@ez4/aws-logs"),
11
- O=require("@ez4/aws-identity");var s=require("@aws-sdk/client-lambda"),c=require("@ez4/aws-common");var Q=require("@ez4/aws-common"),J=require("@ez4/utils");var p="AWS:Lambda/Function",g="aws:lambda.function";var rt=/[a-z][\w]+/i,nt=n(e=>rt.test(e),"isValidName"),L=n(e=>{for(let t in e)if(!nt(
10
+ He=require("@ez4/project/library");var pe=require("@ez4/aws-common");var F=require("@ez4/aws-common"),I=require("@ez4/utils"),O=require("@ez4/aws-logs"),
11
+ B=require("@ez4/aws-identity");var s=require("@aws-sdk/client-lambda"),c=require("@ez4/aws-common");var Q=require("@ez4/aws-common"),J=require("@ez4/utils");var p="AWS:Lambda/Function",g="aws:lambda.function";var rt=/[a-z][\w]+/i,nt=n(e=>rt.test(e),"isValidName"),L=n(e=>{for(let t in e)if(!nt(
12
12
  t))throw new Q.InvalidParameterError(p,`${t} is an invalid variable name .`)},"a\
13
13
  ssertVariables"),E=n(e=>{let t={};for(let r in e)t[r]=(0,J.hashData)(e[r]);return t},
14
14
  "protectVariables");var K=et(require("adm-zip"),1),_=require("node:fs/promises");var X=n(async(e,t)=>{let r=new K.default,o=await(0,_.readFile)(e);return r.addFile(
@@ -55,17 +55,17 @@ getFunctionHandler"),ot=n((e,t)=>!!e.result&&e.result.functionArn===t.result?.fu
55
55
  result?.sourceHash});if(i.counts)return{...i,name:r.functionName}},"previewResou\
56
56
  rce"),st=n(async(e,t,r)=>{if(t.result)throw new F.ReplaceResourceError(p,e.entryId,
57
57
  t.entryId);return ae(e,r)},"replaceResource"),ae=n(async(e,t)=>{let r=e.parameters,
58
- o=r.functionName,i=(0,O.getRoleArn)(p,o,t),a=(0,j.getLogGroupName)(p,o,t),[u,l]=await Promise.
58
+ o=r.functionName,i=(0,B.getRoleArn)(p,o,t),a=(0,O.getLogGroupName)(p,o,t),[u,l]=await Promise.
59
59
  all([(0,F.getBundleHash)(...r.getFunctionFiles()),r.getFunctionBundle(t)]),y=await Y(
60
60
  o);if(y)return await G(o,{...r,logGroup:a,roleArn:i}),await z(o,{publish:!1,sourceFile:l}),
61
61
  await V(y.functionArn,{...r.tags}),H(e),{functionArn:y.functionArn,sourceHash:u,
62
62
  logGroup:a,roleArn:i};let D=await ee({...r,publish:!0,sourceFile:l,logGroup:a,roleArn:i});
63
63
  return H(e),{functionArn:D.functionArn,sourceHash:u,logGroup:a,roleArn:i}},"crea\
64
64
  teResource"),at=n(async(e,t,r)=>{let{parameters:o,result:i}=e;if(!i)return;let a=o.
65
- functionName,u=(0,O.getRoleArn)(p,a,r),l=t.result?.roleArn??u,y=(0,j.getLogGroupName)(
66
- p,a,r),D=t.result?.logGroup??y,$e={...o,roleArn:u,logGroup:y},Ze={...t.parameters,
67
- roleArn:l,logGroup:D};await ct(a,$e,Ze),await mt(i.functionArn,o,t.parameters);let ke=await ut(
68
- a,o,t.result,r);return H(e),{...i,...ke,logGroup:y,roleArn:u}},"updateResource"),
65
+ functionName,u=(0,B.getRoleArn)(p,a,r),l=t.result?.roleArn??u,y=(0,O.getLogGroupName)(
66
+ p,a,r),D=t.result?.logGroup??y,Ze={...o,roleArn:u,logGroup:y},ke={...t.parameters,
67
+ roleArn:l,logGroup:D};await ct(a,Ze,ke),await mt(i.functionArn,o,t.parameters);let je=await ut(
68
+ a,o,t.result,r);return H(e),{...i,...je,logGroup:y,roleArn:u}},"updateResource"),
69
69
  pt=n(async e=>{let{result:t,parameters:r}=e;t&&await te(r.functionName)},"delete\
70
70
  Resource"),H=n(e=>{let{parameters:t}=e;return t.variables&&(t.variables=E(t.variables)),
71
71
  e},"lockSensitiveData"),ct=n(async(e,t,r)=>{let o={...t,...t.variables&&{variables:E(
@@ -75,17 +75,17 @@ t.tags,r.tags,o=>V(e,o),o=>ne(e,o))},"checkTagUpdates"),ut=n(async(e,t,r,o)=>{le
75
75
  ...t.getFunctionFiles()),a=r?.sourceHash;if(i===a&&!o.force)return r;let u=await t.
76
76
  getFunctionBundle(o),{functionVersion:l}=await z(e,{publish:!r?.functionVersion,
77
77
  sourceFile:u});return{sourceHash:i,...l&&{functionVersion:l}}},"checkSourceCodeU\
78
- pdates");var ce=n(()=>{(0,pe.registerProvider)(g,se())},"registerFunctionProvider");var Se=require("@ez4/aws-common");var fe=require("@ez4/aws-common");var B=require("@ez4/aws-common");var M=class extends Error{static{n(this,"FunctionNotFoundError")}constructor(t){
79
- super(`Function ${t} wasn't found.`)}};var W=n(e=>e.type===g,"isFunctionState"),lt=n((e,t,r)=>{try{let o=e.getServiceState(
80
- t,r);if(W(o))return o}catch{}},"tryGetFunctionState"),gt=n((e,t,r)=>{let o=e.getServiceState(
81
- t,r);if(!W(o))throw new M(t);return o},"getFunctionState"),C=n((e,t,r)=>{let o=r.
82
- getDependencies(g).at(0)?.parameters;if(!o?.functionName)throw new B.IncompleteResourceError(
78
+ pdates");var ce=n(()=>{(0,pe.registerProvider)(g,se())},"registerFunctionProvider");var Se=require("@ez4/aws-common");var fe=require("@ez4/aws-common");var W=require("@ez4/aws-common");var M=class extends Error{static{n(this,"FunctionNotFoundError")}constructor(t){
79
+ super(`Function ${t} wasn't found.`)}};var q=n(e=>e.type===g,"isFunctionState"),lt=n((e,t,r)=>{try{let o=e.getServiceState(
80
+ t,r);if(q(o))return o}catch{}},"tryGetFunctionState"),gt=n((e,t,r)=>{let o=e.getServiceState(
81
+ t,r);if(!q(o))throw new M(t);return o},"getFunctionState"),C=n((e,t,r)=>{let o=r.
82
+ getDependencies(g).at(0)?.parameters;if(!o?.functionName)throw new W.IncompleteResourceError(
83
83
  e,t,"functionName");return o.functionName},"getFunctionName"),me=n(e=>e.getDependencies(
84
84
  g)[0]?.result?.functionArn,"tryGetFunctionArn"),ft=n((e,t,r)=>{let o=me(r);if(!o)
85
- throw new B.IncompleteResourceError(e,t,"functionArn");return o},"getFunctionArn");var w=require("@aws-sdk/client-lambda"),q=require("@ez4/aws-common");var P="AWS:Lambda/Permission",S="aws:lambda.permission";var ue=new w.LambdaClient({}),le=n(async e=>{q.Logger.logCreate(P,e.functionName);
85
+ throw new W.IncompleteResourceError(e,t,"functionArn");return o},"getFunctionArn");var w=require("@aws-sdk/client-lambda"),$=require("@ez4/aws-common");var P="AWS:Lambda/Permission",S="aws:lambda.permission";var ue=new w.LambdaClient({}),le=n(async e=>{$.Logger.logCreate(P,e.functionName);
86
86
  let t=e.statementId??`SID${Date.now()}`;return await ue.send(new w.AddPermissionCommand(
87
87
  {StatementId:t,FunctionName:e.functionName,SourceArn:e.sourceArn,Principal:e.principal,
88
- Action:e.action})),{statementId:t}},"createPermission"),ge=n(async(e,t)=>{q.Logger.
88
+ Action:e.action})),{statementId:t}},"createPermission"),ge=n(async(e,t)=>{$.Logger.
89
89
  logDelete(P,e);try{return await ue.send(new w.RemovePermissionCommand({FunctionName:e,
90
90
  StatementId:t})),!0}catch(r){if(!(r instanceof w.ResourceNotFoundException))throw r;
91
91
  return!1}},"deletePermission");var ye=n(()=>({equals:yt,create:de,replace:St,preview:dt,update:Ft,delete:wt}),"\
@@ -96,8 +96,8 @@ r)},"replaceResource"),de=n(async(e,t)=>{let r=e.parameters,o=C(P,"permission",t
96
96
  i=await r.getPermission(t);return{statementId:(await le({functionName:o,principal:i.
97
97
  principal,sourceArn:i.sourceArn,action:"lambda:InvokeFunction"})).statementId,functionName:o}},
98
98
  "createResource"),Ft=n(async()=>{},"updateResource"),wt=n(async e=>{let t=e.result;
99
- t&&await ge(t.functionName,t.statementId)},"deleteResource");var Fe=n(()=>{(0,Se.registerProvider)(S,ye())},"registerPermissionProvider");var Ie=require("@ez4/aws-common");var be=require("@ez4/aws-common"),N=require("@ez4/utils");var m=require("@aws-sdk/client-lambda"),R=require("@ez4/aws-common"),we=require("@ez4/utils");var f="AWS:Lambda/Mapping",x="aws:lambda.mapping",$=(r=>(r.DynamoDB="dynamodb",r.
100
- Queue="sqs",r))($||{});var b=new m.LambdaClient({}),xe=n(async(e,t)=>{R.Logger.logImport(f,e);let r=await b.
99
+ t&&await ge(t.functionName,t.statementId)},"deleteResource");var Fe=n(()=>{(0,Se.registerProvider)(S,ye())},"registerPermissionProvider");var Ie=require("@ez4/aws-common");var be=require("@ez4/aws-common"),N=require("@ez4/utils");var m=require("@aws-sdk/client-lambda"),R=require("@ez4/aws-common"),we=require("@ez4/utils");var f="AWS:Lambda/Mapping",x="aws:lambda.mapping",Z=(r=>(r.DynamoDB="dynamodb",r.
100
+ Queue="sqs",r))(Z||{});var b=new m.LambdaClient({}),xe=n(async(e,t)=>{R.Logger.logImport(f,e);let r=await b.
101
101
  send(new m.ListEventSourceMappingsCommand({FunctionName:e,EventSourceArn:t})),[o]=r.
102
102
  EventSourceMappings;return o?{eventId:o.UUID}:void 0},"importMapping"),Pe=n(async e=>{
103
103
  let{sourceArn:t,functionName:r}=e;R.Logger.logCreate(f,r);let i=(await b.send(new m.CreateEventSourceMappingCommand(
@@ -135,12 +135,12 @@ licyDocument");var De=n(async e=>{let{state:t,options:r}=e,o=(0,Ue.getServiceNam
135
135
  -lambda-policy`;return(0,T.tryGetPolicy)(t,i)??(0,T.createPolicy)(t,{tags:r.tags,
136
136
  policyDocument:await Te(o),policyName:i})},"prepareExecutionPolicy");var Le=!1,Et=n(()=>{Le||((0,ze.registerTriggers)(),(0,Ge.registerTriggers)(),(0,Ve.registerTriggers)(),
137
137
  (0,He.createTrigger)("@ez4/aws-function",{"deploy:prepareIdentityAccount":Ne,"de\
138
- ploy:prepareExecutionPolicy":De}),ce(),Fe(),Me(),Le=!0)},"registerTriggers");var U=require("@ez4/utils"),je=require("@ez4/stateful");var ht=n((e,t,r,o)=>{let i=(0,U.toKebabCase)(o.functionName),a=(0,U.hashData)(g,
139
- t.entryId,i),u=[t.entryId];return r&&u.push(r.entryId),(0,je.attachEntry)(e,{type:g,
140
- entryId:a,dependencies:u,parameters:{...o,functionName:i}})},"createFunction");var Be=require("@ez4/stateful"),Z=require("@ez4/utils");var Oe=n(e=>e.type===S,"isPermissionState");var It=n((e,t,r,o)=>{let i=(0,Z.hashData)(S,t.entryId,r.entryId);return(0,Be.attachEntry)(
138
+ ploy:prepareExecutionPolicy":De}),ce(),Fe(),Me(),Le=!0)},"registerTriggers");var U=require("@ez4/utils"),Oe=require("@ez4/stateful");var ht=n((e,t,r,o)=>{let i=(0,U.toKebabCase)(o.functionName),a=(0,U.hashData)(g,
139
+ t.entryId,i),u=[t.entryId];return r&&u.push(r.entryId),(0,Oe.attachEntry)(e,{type:g,
140
+ entryId:a,dependencies:u,parameters:{...o,functionName:i}})},"createFunction");var We=require("@ez4/stateful"),k=require("@ez4/utils");var Be=n(e=>e.type===S,"isPermissionState");var It=n((e,t,r,o)=>{let i=(0,k.hashData)(S,t.entryId,r.entryId);return(0,We.attachEntry)(
141
141
  e,{type:S,entryId:i,dependencies:[t.entryId,r.entryId],parameters:o})},"createPe\
142
- rmission"),Mt=n((e,t,r)=>{let o=(0,Z.hashData)(S,t.entryId,r.entryId),i=e[o];return i&&
143
- Oe(i)?i:null},"getPermission");var We=require("@ez4/utils"),qe=require("@ez4/stateful");var Nt=n((e,t,r,o)=>{let i=(0,We.hashData)(x,t.entryId,r.entryId);return(0,qe.attachEntry)(
142
+ rmission"),Mt=n((e,t,r)=>{let o=(0,k.hashData)(S,t.entryId,r.entryId),i=e[o];return i&&
143
+ Be(i)?i:null},"getPermission");var qe=require("@ez4/utils"),$e=require("@ez4/stateful");var Nt=n((e,t,r,o)=>{let i=(0,qe.hashData)(x,t.entryId,r.entryId);return(0,$e.attachEntry)(
144
144
  e,{type:x,entryId:i,dependencies:[t.entryId,r.entryId],parameters:o})},"createMa\
145
145
  pping");var Tt=n(e=>e.type===x,"isMappingState");0&&(module.exports={FunctionServiceName,FunctionServiceType,MappingService,MappingServiceName,
146
146
  MappingServiceType,PermissionServiceName,PermissionServiceType,createFunction,createMapping,
package/dist/main.d.ts CHANGED
@@ -1,10 +1,10 @@
1
- export * from './triggers/register.js';
2
- export * from './types/variables.js';
3
- export * from './function/service.js';
4
- export * from './function/types.js';
5
- export * from './function/utils.js';
6
- export * from './permission/service.js';
7
- export * from './permission/types.js';
8
- export * from './mapping/service.js';
9
- export * from './mapping/types.js';
10
- export * from './mapping/utils.js';
1
+ export * from './triggers/register';
2
+ export * from './types/variables';
3
+ export * from './function/service';
4
+ export * from './function/types';
5
+ export * from './function/utils';
6
+ export * from './permission/service';
7
+ export * from './permission/types';
8
+ export * from './mapping/service';
9
+ export * from './mapping/types';
10
+ export * from './mapping/utils';
package/dist/main.mjs CHANGED
@@ -1,70 +1,70 @@
1
- var ve=Object.defineProperty;var n=(e,t)=>ve(e,"name",{value:t,configurable:!0});import{registerTriggers as Wt}from"@ez4/aws-common";import{registerTriggers as qt}from"@ez4/aws-identity";
2
- import{registerTriggers as $t}from"@ez4/aws-logs";import{createTrigger as Zt}from"@ez4/project/library";import{registerProvider as rt}from"@ez4/aws-common";import{applyTagUpdates as qe,getBundleHash as N,ReplaceResourceError as $e}from"@ez4/aws-common";
3
- import{deepCompare as Ze,deepEqual as ke}from"@ez4/utils";import{getLogGroupName as $}from"@ez4/aws-logs";
4
- import{getRoleArn as Z}from"@ez4/aws-identity";import{LambdaClient as Ne,GetFunctionCommand as Te,CreateFunctionCommand as Ue,DeleteFunctionCommand as De,
1
+ var ve=Object.defineProperty;var n=(e,t)=>ve(e,"name",{value:t,configurable:!0});import{registerTriggers as qt}from"@ez4/aws-common";import{registerTriggers as $t}from"@ez4/aws-identity";
2
+ import{registerTriggers as Zt}from"@ez4/aws-logs";import{createTrigger as kt}from"@ez4/project/library";import{registerProvider as rt}from"@ez4/aws-common";import{applyTagUpdates as $e,getBundleHash as N,ReplaceResourceError as Ze}from"@ez4/aws-common";
3
+ import{deepCompare as ke,deepEqual as je}from"@ez4/utils";import{getLogGroupName as Z}from"@ez4/aws-logs";
4
+ import{getRoleArn as k}from"@ez4/aws-identity";import{LambdaClient as Ne,GetFunctionCommand as Te,CreateFunctionCommand as Ue,DeleteFunctionCommand as De,
5
5
  UpdateFunctionCodeCommand as Le,UpdateFunctionConfigurationCommand as ze,PublishVersionCommand as Ge,
6
- TagResourceCommand as Ve,UntagResourceCommand as He,waitUntilFunctionActive as je,
7
- waitUntilFunctionUpdated as U,waitUntilPublishedVersionActive as Oe,ResourceNotFoundException as D,
6
+ TagResourceCommand as Ve,UntagResourceCommand as He,waitUntilFunctionActive as Oe,
7
+ waitUntilFunctionUpdated as U,waitUntilPublishedVersionActive as Be,ResourceNotFoundException as D,
8
8
  ApplicationLogLevel as P,SystemLogLevel as L,LogFormat as z}from"@aws-sdk/client-lambda";
9
- import{Logger as c,tryParseArn as G,waitCreation as Be,waitDeletion as We}from"@ez4/aws-common";import{InvalidParameterError as Ae}from"@ez4/aws-common";import{hashData as be}from"@ez4/utils";var a="AWS:Lambda/Function",l="aws:lambda.function";var Ee=/[a-z][\w]+/i,he=n(e=>Ee.test(e),"isValidName"),b=n(e=>{for(let t in e)if(!he(
9
+ import{Logger as c,tryParseArn as G,waitCreation as We,waitDeletion as qe}from"@ez4/aws-common";import{InvalidParameterError as Ae}from"@ez4/aws-common";import{hashData as be}from"@ez4/utils";var a="AWS:Lambda/Function",l="aws:lambda.function";var Ee=/[a-z][\w]+/i,he=n(e=>Ee.test(e),"isValidName"),b=n(e=>{for(let t in e)if(!he(
10
10
  t))throw new Ae(a,`${t} is an invalid variable name .`)},"assertVariables"),x=n(
11
11
  e=>{let t={};for(let r in e)t[r]=be(e[r]);return t},"protectVariables");import Ie from"adm-zip";import{readFile as Me}from"node:fs/promises";var T=n(async(e,t)=>{let r=new Ie,o=await Me(e);return r.addFile(t,o),r.toBufferPromise()},
12
12
  "getZipBuffer");var g=new Ne({}),R={minDelay:15,maxWaitTime:1800,maxDelay:60,client:g},V=n(async(e,t)=>{
13
13
  c.logImport(a,e);try{let r=await g.send(new Te({FunctionName:e,Qualifier:t})),o=r.
14
14
  Configuration.Version,i=r.Configuration.FunctionArn;return{functionVersion:o,functionArn:i}}catch(r){
15
15
  if(!(r instanceof D))throw r;return}},"importFunction"),H=n(async e=>{let{functionName:t,
16
- variables:r}=e;c.logCreate(a,t),r&&b(r);let o=q(e.handlerName),i=await W(e.sourceFile),
17
- s=await Be(()=>g.send(new Ue({FunctionName:e.functionName,Description:e.description,
16
+ variables:r}=e;c.logCreate(a,t),r&&b(r);let o=$(e.handlerName),i=await q(e.sourceFile),
17
+ s=await We(()=>g.send(new Ue({FunctionName:e.functionName,Description:e.description,
18
18
  MemorySize:e.memory,Timeout:e.timeout,Role:e.roleArn,Handler:o,Runtime:"nodejs22\
19
19
  .x",PackageType:"Zip",LoggingConfig:{LogGroup:e.logGroup,ApplicationLogLevel:e.debug?
20
20
  P.Debug:P.Warn,SystemLogLevel:L.Warn,LogFormat:z.Json},Code:{ZipFile:i},Environment:{
21
- Variables:r},Tags:{...e.tags,ManagedBy:"EZ4"}})));c.logWait(a,t),await je(R,{FunctionName:t});
22
- let p=s.FunctionArn;return e.publish?{functionVersion:await O(t),functionArn:p}:
21
+ Variables:r},Tags:{...e.tags,ManagedBy:"EZ4"}})));c.logWait(a,t),await Oe(R,{FunctionName:t});
22
+ let p=s.FunctionArn;return e.publish?{functionVersion:await B(t),functionArn:p}:
23
23
  {functionArn:p}},"createFunction"),E=n(async(e,t)=>{c.logUpdate(a,`${e} source c\
24
- ode`);let r=await W(t.sourceFile),o=await g.send(new Le({FunctionName:e,Publish:t.
24
+ ode`);let r=await q(t.sourceFile),o=await g.send(new Le({FunctionName:e,Publish:t.
25
25
  publish,ZipFile:r}));c.logWait(a,e),await U(R,{FunctionName:e});let i=o.FunctionArn;
26
- return t.publish?{functionVersion:await O(e),functionArn:i}:{functionArn:i}},"up\
26
+ return t.publish?{functionVersion:await B(e),functionArn:i}:{functionArn:i}},"up\
27
27
  dateSourceCode"),h=n(async(e,t)=>{let{handlerName:r,variables:o}=t;c.logUpdate(a,
28
28
  `${e} configuration`),o&&b(o),await g.send(new ze({FunctionName:e,Description:t.
29
29
  description,MemorySize:t.memory,Timeout:t.timeout,Role:t.roleArn,Runtime:"nodejs\
30
- 22.x",...r&&{Handler:q(r)},LoggingConfig:{LogGroup:t.logGroup,ApplicationLogLevel:t.
30
+ 22.x",...r&&{Handler:$(r)},LoggingConfig:{LogGroup:t.logGroup,ApplicationLogLevel:t.
31
31
  debug?P.Debug:P.Warn,SystemLogLevel:L.Warn,LogFormat:z.Json},Environment:{Variables:o}})),
32
- c.logWait(a,e),await U(R,{FunctionName:e})},"updateConfiguration"),j=n(async e=>{
33
- c.logDelete(a,e),await We(async()=>{try{return await g.send(new De({FunctionName:e})),
34
- !0}catch(t){if(!(t instanceof D))throw t;return!1}})},"deleteFunction"),O=n(async e=>{
32
+ c.logWait(a,e),await U(R,{FunctionName:e})},"updateConfiguration"),O=n(async e=>{
33
+ c.logDelete(a,e),await qe(async()=>{try{return await g.send(new De({FunctionName:e})),
34
+ !0}catch(t){if(!(t instanceof D))throw t;return!1}})},"deleteFunction"),B=n(async e=>{
35
35
  c.logPublish(a,e);let t=await g.send(new Ge({FunctionName:e}));c.logWait(a,e);let r=t.
36
- Version;return await Oe(R,{FunctionName:e,Qualifier:r}),r},"publishFunction"),I=n(
36
+ Version;return await Be(R,{FunctionName:e,Qualifier:r}),r},"publishFunction"),I=n(
37
37
  async(e,t)=>{let r=G(e)?.resourceName??e;c.logTag(a,r),await g.send(new Ve({Resource:e,
38
- Tags:{...t,ManagedBy:"EZ4"}}))},"tagFunction"),B=n(async(e,t)=>{let r=G(e)?.resourceName??
38
+ Tags:{...t,ManagedBy:"EZ4"}}))},"tagFunction"),W=n(async(e,t)=>{let r=G(e)?.resourceName??
39
39
  e;c.logUntag(a,r),await g.send(new He({Resource:e,TagKeys:t}))},"untagFunction"),
40
- W=n(e=>T(e,"main.mjs"),"getSourceZipFile"),q=n(e=>`main.${e}`,"getSourceHandlerN\
41
- ame");var k=n(()=>({equals:Qe,create:Q,replace:Ke,preview:Je,update:_e,delete:Xe}),"ge\
40
+ q=n(e=>T(e,"main.mjs"),"getSourceZipFile"),$=n(e=>`main.${e}`,"getSourceHandlerN\
41
+ ame");var j=n(()=>({equals:Qe,create:Q,replace:Ke,preview:Je,update:_e,delete:Xe}),"ge\
42
42
  tFunctionHandler"),Qe=n((e,t)=>!!e.result&&e.result.functionArn===t.result?.functionArn,
43
- "equalsResource"),Je=n(async(e,t)=>{let r=e.parameters,o=t.parameters,i=Ze({...r,
43
+ "equalsResource"),Je=n(async(e,t)=>{let r=e.parameters,o=t.parameters,i=ke({...r,
44
44
  dependencies:e.dependencies,sourceHash:await N(...r.getFunctionFiles()),...r.variables&&
45
45
  {variables:x(r.variables)}},{...o,dependencies:t.dependencies,sourceHash:t.result?.
46
46
  sourceHash});if(i.counts)return{...i,name:r.functionName}},"previewResource"),Ke=n(
47
- async(e,t,r)=>{if(t.result)throw new $e(a,e.entryId,t.entryId);return Q(e,r)},"r\
48
- eplaceResource"),Q=n(async(e,t)=>{let r=e.parameters,o=r.functionName,i=Z(a,o,t),
49
- s=$(a,o,t),[p,m]=await Promise.all([N(...r.getFunctionFiles()),r.getFunctionBundle(
47
+ async(e,t,r)=>{if(t.result)throw new Ze(a,e.entryId,t.entryId);return Q(e,r)},"r\
48
+ eplaceResource"),Q=n(async(e,t)=>{let r=e.parameters,o=r.functionName,i=k(a,o,t),
49
+ s=Z(a,o,t),[p,m]=await Promise.all([N(...r.getFunctionFiles()),r.getFunctionBundle(
50
50
  t)]),u=await V(o);if(u)return await h(o,{...r,logGroup:s,roleArn:i}),await E(o,{
51
51
  publish:!1,sourceFile:m}),await I(u.functionArn,{...r.tags}),M(e),{functionArn:u.
52
52
  functionArn,sourceHash:p,logGroup:s,roleArn:i};let A=await H({...r,publish:!0,sourceFile:m,
53
53
  logGroup:s,roleArn:i});return M(e),{functionArn:A.functionArn,sourceHash:p,logGroup:s,
54
54
  roleArn:i}},"createResource"),_e=n(async(e,t,r)=>{let{parameters:o,result:i}=e;if(!i)
55
- return;let s=o.functionName,p=Z(a,s,r),m=t.result?.roleArn??p,u=$(a,s,r),A=t.result?.
55
+ return;let s=o.functionName,p=k(a,s,r),m=t.result?.roleArn??p,u=Z(a,s,r),A=t.result?.
56
56
  logGroup??u,Pe={...o,roleArn:p,logGroup:u},Re={...t.parameters,roleArn:m,logGroup:A};
57
57
  await Ye(s,Pe,Re),await et(i.functionArn,o,t.parameters);let Ce=await tt(s,o,t.result,
58
58
  r);return M(e),{...i,...Ce,logGroup:u,roleArn:p}},"updateResource"),Xe=n(async e=>{
59
- let{result:t,parameters:r}=e;t&&await j(r.functionName)},"deleteResource"),M=n(e=>{
59
+ let{result:t,parameters:r}=e;t&&await O(r.functionName)},"deleteResource"),M=n(e=>{
60
60
  let{parameters:t}=e;return t.variables&&(t.variables=x(t.variables)),e},"lockSen\
61
61
  sitiveData"),Ye=n(async(e,t,r)=>{let o={...t,...t.variables&&{variables:x(t.variables)}};
62
- !ke(o,r,{exclude:{sourceFile:!0,functionName:!0,tags:!0}})&&await h(e,t)},"check\
63
- ConfigurationUpdates"),et=n(async(e,t,r)=>{await qe(t.tags,r.tags,o=>I(e,o),o=>B(
62
+ !je(o,r,{exclude:{sourceFile:!0,functionName:!0,tags:!0}})&&await h(e,t)},"check\
63
+ ConfigurationUpdates"),et=n(async(e,t,r)=>{await $e(t.tags,r.tags,o=>I(e,o),o=>W(
64
64
  e,o))},"checkTagUpdates"),tt=n(async(e,t,r,o)=>{let i=await N(...t.getFunctionFiles()),
65
65
  s=r?.sourceHash;if(i===s&&!o.force)return r;let p=await t.getFunctionBundle(o),{
66
66
  functionVersion:m}=await E(e,{publish:!r?.functionVersion,sourceFile:p});return{
67
- sourceHash:i,...m&&{functionVersion:m}}},"checkSourceCodeUpdates");var J=n(()=>{rt(l,k())},"registerFunctionProvider");import{registerProvider as ft}from"@ez4/aws-common";import{ReplaceResourceError as pt}from"@ez4/aws-common";import{IncompleteResourceError as K}from"@ez4/aws-common";var C=class extends Error{static{n(this,"FunctionNotFoundError")}constructor(t){
67
+ sourceHash:i,...m&&{functionVersion:m}}},"checkSourceCodeUpdates");var J=n(()=>{rt(l,j())},"registerFunctionProvider");import{registerProvider as ft}from"@ez4/aws-common";import{ReplaceResourceError as pt}from"@ez4/aws-common";import{IncompleteResourceError as K}from"@ez4/aws-common";var C=class extends Error{static{n(this,"FunctionNotFoundError")}constructor(t){
68
68
  super(`Function ${t} wasn't found.`)}};var _=n(e=>e.type===l,"isFunctionState"),zr=n((e,t,r)=>{try{let o=e.getServiceState(
69
69
  t,r);if(_(o))return o}catch{}},"tryGetFunctionState"),Gr=n((e,t,r)=>{let o=e.getServiceState(
70
70
  t,r);if(!_(o))throw new C(t);return o},"getFunctionState"),F=n((e,t,r)=>{let o=r.
@@ -118,13 +118,13 @@ o.functionName,m={...e.parameters,functionName:s,sourceArn:i},u={...t.parameters
118
118
  functionName:p,sourceArn:i};return await Lt(o.eventId,m,u),{...o,functionName:s}},
119
119
  "updateResource"),Dt=n(async e=>{let t=e.result;t&&await ce(t.eventId)},"deleteR\
120
120
  esource"),Lt=n(async(e,t,r)=>{!It(t,r,{exclude:{getSourceArn:!0,fromService:!0}})&&
121
- await pe(e,t)},"checkGeneralUpdates");var fe=n(()=>{zt(d,le())},"registerMappingProvider");var ye=n(()=>[{account:"lambda.amazonaws.com"}],"prepareIdentityAccount");import{createPolicy as jt,tryGetPolicy as Ot}from"@ez4/aws-identity";import{getServiceName as Bt}from"@ez4/project/library";import{getAccountId as Gt,getRegion as Vt,createPolicyDocument as Ht}from"@ez4/aws-identity";var de=n(async e=>{let[t,r]=await Promise.all([Vt(),Gt()]);return Ht([{permissions:[
121
+ await pe(e,t)},"checkGeneralUpdates");var fe=n(()=>{zt(d,le())},"registerMappingProvider");var ye=n(()=>[{account:"lambda.amazonaws.com"}],"prepareIdentityAccount");import{createPolicy as Ot,tryGetPolicy as Bt}from"@ez4/aws-identity";import{getServiceName as Wt}from"@ez4/project/library";import{getAccountId as Gt,getRegion as Vt,createPolicyDocument as Ht}from"@ez4/aws-identity";var de=n(async e=>{let[t,r]=await Promise.all([Vt(),Gt()]);return Ht([{permissions:[
122
122
  "logs:CreateLogStream","logs:PutLogEvents"],resourceIds:[`arn:aws:logs:${t}:${r}\
123
- :log-group:${e}-*:*`]}])},"getPolicyDocument");var Se=n(async e=>{let{state:t,options:r}=e,o=Bt("",r),i=`${o}-lambda-policy`;return Ot(
124
- t,i)??jt(t,{tags:r.tags,policyDocument:await de(o),policyName:i})},"prepareExecu\
125
- tionPolicy");var Fe=!1,Wn=n(()=>{Fe||(Wt(),qt(),$t(),Zt("@ez4/aws-function",{"deploy:prepareI\
123
+ :log-group:${e}-*:*`]}])},"getPolicyDocument");var Se=n(async e=>{let{state:t,options:r}=e,o=Wt("",r),i=`${o}-lambda-policy`;return Bt(
124
+ t,i)??Ot(t,{tags:r.tags,policyDocument:await de(o),policyName:i})},"prepareExecu\
125
+ tionPolicy");var Fe=!1,qn=n(()=>{Fe||(qt(),$t(),Zt(),kt("@ez4/aws-function",{"deploy:prepareI\
126
126
  dentityAccount":ye,"deploy:prepareExecutionPolicy":Se}),J(),oe(),fe(),Fe=!0)},"r\
127
- egisterTriggers");import{toKebabCase as kt,hashData as Qt}from"@ez4/utils";import{attachEntry as Jt}from"@ez4/stateful";var Jn=n((e,t,r,o)=>{let i=kt(o.functionName),s=Qt(l,t.entryId,i),p=[t.entryId];
127
+ egisterTriggers");import{toKebabCase as jt,hashData as Qt}from"@ez4/utils";import{attachEntry as Jt}from"@ez4/stateful";var Jn=n((e,t,r,o)=>{let i=jt(o.functionName),s=Qt(l,t.entryId,i),p=[t.entryId];
128
128
  return r&&p.push(r.entryId),Jt(e,{type:l,entryId:s,dependencies:p,parameters:{...o,
129
129
  functionName:i}})},"createFunction");import{attachEntry as Kt}from"@ez4/stateful";import{hashData as xe}from"@ez4/utils";var we=n(e=>e.type===y,"isPermissionState");var io=n((e,t,r,o)=>{let i=xe(y,t.entryId,r.entryId);return Kt(e,{type:y,entryId:i,
130
130
  dependencies:[t.entryId,r.entryId],parameters:o})},"createPermission"),so=n((e,t,r)=>{
@@ -133,5 +133,5 @@ dependencies:[t.entryId,r.entryId],parameters:o})},"createMapping");var So=n(e=>
133
133
  d as MappingServiceType,S as PermissionServiceName,y as PermissionServiceType,Jn as createFunction,
134
134
  lo as createMapping,io as createPermission,Vr as getFunctionArn,F as getFunctionName,
135
135
  Gr as getFunctionState,so as getPermission,_ as isFunctionState,So as isMappingState,
136
- Wn as registerTriggers,nt as tryGetFunctionArn,zr as tryGetFunctionState};
136
+ qn as registerTriggers,nt as tryGetFunctionArn,zr as tryGetFunctionState};
137
137
  //# sourceMappingURL=main.mjs.map
@@ -1,3 +1,3 @@
1
1
  import type { StepHandler } from '@ez4/stateful';
2
- import type { MappingState } from './types.js';
2
+ import type { MappingState } from './types';
3
3
  export declare const getMappingHandler: () => StepHandler<MappingState>;
@@ -1,4 +1,4 @@
1
1
  import type { EntryState, EntryStates } from '@ez4/stateful';
2
- import type { MappingParameters, MappingState } from './types.js';
3
- import type { FunctionState } from '../function/types.js';
2
+ import type { MappingParameters, MappingState } from './types';
3
+ import type { FunctionState } from '../function/types';
4
4
  export declare const createMapping: <E extends EntryState>(state: EntryStates<E>, sourceState: EntryState, functionState: FunctionState, parameters: MappingParameters) => MappingState;
@@ -1,6 +1,6 @@
1
1
  import type { Arn } from '@ez4/aws-common';
2
2
  import type { EntryState, StepContext } from '@ez4/stateful';
3
- import type { CreateRequest, ImportOrCreateResponse } from './client.js';
3
+ import type { CreateRequest, ImportOrCreateResponse } from './client';
4
4
  export declare const MappingServiceName = "AWS:Lambda/Mapping";
5
5
  export declare const MappingServiceType = "aws:lambda.mapping";
6
6
  export type GetMappingSourceArn = (context: StepContext) => Promise<Arn> | Arn;
@@ -1,3 +1,3 @@
1
1
  import type { EntryState } from '@ez4/stateful';
2
- import type { MappingState } from './types.js';
2
+ import type { MappingState } from './types';
3
3
  export declare const isMappingState: (resource: EntryState) => resource is MappingState;
@@ -1,3 +1,3 @@
1
1
  import type { StepHandler } from '@ez4/stateful';
2
- import type { PermissionState } from './types.js';
2
+ import type { PermissionState } from './types';
3
3
  export declare const getPermissionHandler: () => StepHandler<PermissionState>;
@@ -1,10 +1,10 @@
1
1
  import type { EntryState, EntryStates } from '@ez4/stateful';
2
- import type { FunctionState } from '../function/types.js';
3
- import type { PermissionParameters, PermissionState } from './types.js';
4
- import { PermissionServiceType } from './types.js';
2
+ import type { FunctionState } from '../function/types';
3
+ import type { PermissionParameters, PermissionState } from './types';
4
+ import { PermissionServiceType } from './types';
5
5
  export declare const createPermission: <E extends EntryState>(state: EntryStates<E>, sourceState: EntryState, functionState: FunctionState, parameters: PermissionParameters) => PermissionState;
6
6
  export declare const getPermission: <E extends EntryState>(state: EntryStates<E>, sourceState: EntryState, functionState: FunctionState) => (E & EntryState & {
7
7
  type: typeof PermissionServiceType;
8
8
  parameters: PermissionParameters;
9
- result?: import("./types.js").PermissionResult;
9
+ result?: import("./types").PermissionResult;
10
10
  }) | null;
@@ -1,5 +1,5 @@
1
1
  import type { EntryState, StepContext } from '@ez4/stateful';
2
- import type { CreateRequest, CreateResponse } from './client.js';
2
+ import type { CreateRequest, CreateResponse } from './client';
3
3
  export declare const PermissionServiceName = "AWS:Lambda/Permission";
4
4
  export declare const PermissionServiceType = "aws:lambda.permission";
5
5
  export type Permission = Omit<CreateRequest, 'functionName' | 'statementId' | 'action'>;
@@ -1,3 +1,3 @@
1
1
  import type { EntryState } from '@ez4/stateful';
2
- import type { PermissionState } from './types.js';
2
+ import type { PermissionState } from './types';
3
3
  export declare const isPermissionState: (resource: EntryState) => resource is PermissionState;
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.26.0",
4
+ "version": "0.28.0",
5
5
  "author": "Silas B.",
6
6
  "license": "MIT",
7
7
  "type": "module",
@@ -24,27 +24,27 @@
24
24
  }
25
25
  },
26
26
  "workspaces": [
27
- "packages/*"
27
+ "foundation/*",
28
+ "contracts/*",
29
+ "providers/aws/*"
28
30
  ],
29
31
  "scripts": {
30
32
  "lint": "eslint --cache",
31
33
  "clean": "rm -f *.tsbuildinfo && rm -rf dist/*",
32
- "build": "tsc -p tsconfig.json && node tools/bundler.mjs",
33
- "test": "npm run test:types && node --env-file ../../../local.env --test --import ../../../tools/tsnode.mjs test/*.spec.ts",
34
- "test:only": "npm run test:types && node --env-file ../../../local.env --test-only --test --import ../../../tools/tsnode.mjs test/*.spec.ts",
35
- "test:types": "npm run build && tsc -p tsconfig.test.json",
34
+ "build": "tsc && node tools/bundler.mjs",
35
+ "test": "npm run build && tsc -p tsconfig.test.json && ez4 test -e ../../../local.env",
36
36
  "local:publish": "npm run build && npm run clean:registry && npm publish --registry http://localhost:4873",
37
37
  "clean:registry": "rm -rf ../../../.registry/@ez4/aws-function",
38
38
  "live:publish": "npm run build && npm publish --access public"
39
39
  },
40
40
  "dependencies": {
41
41
  "@aws-sdk/client-lambda": "^3.758.0",
42
- "@ez4/aws-common": "^0.26.0",
43
- "@ez4/aws-identity": "^0.26.0",
44
- "@ez4/aws-logs": "^0.26.0",
45
- "@ez4/project": "^0.26.0",
46
- "@ez4/stateful": "^0.26.0",
47
- "@ez4/utils": "^0.26.0",
42
+ "@ez4/aws-common": "^0.28.0",
43
+ "@ez4/aws-identity": "^0.28.0",
44
+ "@ez4/aws-logs": "^0.28.0",
45
+ "@ez4/project": "^0.28.0",
46
+ "@ez4/stateful": "^0.28.0",
47
+ "@ez4/utils": "^0.28.0",
48
48
  "@types/adm-zip": "^0.5.5",
49
49
  "adm-zip": "^0.5.14"
50
50
  }