@ez4/aws-bucket 0.38.0 → 0.39.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/dist/main.cjs CHANGED
@@ -1,13 +1,13 @@
1
- "use strict";var Ot=Object.create;var h=Object.defineProperty;var Tt=Object.getOwnPropertyDescriptor;var Nt=Object.getOwnPropertyNames;var Dt=Object.getPrototypeOf,zt=Object.prototype.hasOwnProperty;var o=(t,e)=>h(t,"name",{value:e,configurable:!0});var Ft=(t,e)=>{for(var r in e)h(t,r,{get:e[r],enumerable:!0})},ne=(t,e,r,n)=>{if(e&&
2
- typeof e=="object"||typeof e=="function")for(let c of Nt(e))!zt.call(t,c)&&c!==r&&
3
- h(t,c,{get:()=>e[c],enumerable:!(n=Tt(e,c))||n.enumerable});return t};var At=(t,e,r)=>(r=t!=null?Ot(Dt(t)):{},ne(e||!t||!t.__esModule?h(r,"default",{value:t,
4
- enumerable:!0}):r,t)),It=t=>ne(h({},"__esModule",{value:!0}),t);var ir={};Ft(ir,{BucketServiceName:()=>m,BucketServiceType:()=>y,ObjectServiceName:()=>k,
1
+ "use strict";var Tt=Object.create;var h=Object.defineProperty;var Nt=Object.getOwnPropertyDescriptor;var Dt=Object.getOwnPropertyNames;var zt=Object.getPrototypeOf,Ft=Object.prototype.hasOwnProperty;var o=(t,e)=>h(t,"name",{value:e,configurable:!0});var At=(t,e)=>{for(var r in e)h(t,r,{get:e[r],enumerable:!0})},ne=(t,e,r,n)=>{if(e&&
2
+ typeof e=="object"||typeof e=="function")for(let c of Dt(e))!Ft.call(t,c)&&c!==r&&
3
+ h(t,c,{get:()=>e[c],enumerable:!(n=Nt(e,c))||n.enumerable});return t};var It=(t,e,r)=>(r=t!=null?Tt(zt(t)):{},ne(e||!t||!t.__esModule?h(r,"default",{value:t,
4
+ enumerable:!0}):r,t)),Lt=t=>ne(h({},"__esModule",{value:!0}),t);var pr={};At(pr,{BucketServiceName:()=>m,BucketServiceType:()=>y,ObjectServiceName:()=>k,
5
5
  ObjectServiceType:()=>g,PolicyServiceName:()=>x,PolicyServiceType:()=>d,buildBucketArn:()=>J,
6
- createBucket:()=>X,createBucketEventFunction:()=>Y,createBucketObject:()=>ar,createBucketPolicy:()=>cr,
7
- createBucketStateId:()=>U,getBucketDomain:()=>nr,getBucketName:()=>j,getBucketObjectFiles:()=>Zt,
8
- getBucketObjectPath:()=>O,getBucketState:()=>G,getPolicyDocument:()=>Q,isBucketDomain:()=>or,
9
- isBucketObjectState:()=>Wt,isBucketPolicyState:()=>sr,isBucketState:()=>ve,registerTriggers:()=>rr});
10
- module.exports=It(ir);var St=require("@ez4/aws-common"),kt=require("@ez4/aws-identity"),bt=require("@ez4/aws-function"),
6
+ createBucket:()=>X,createBucketEventFunction:()=>Y,createBucketObject:()=>ir,createBucketPolicy:()=>sr,
7
+ createBucketStateId:()=>U,getBucketDomain:()=>cr,getBucketName:()=>j,getBucketObjectFiles:()=>Jt,
8
+ getBucketObjectPath:()=>O,getBucketState:()=>G,getPolicyDocument:()=>Q,isBucketDomain:()=>nr,
9
+ isBucketObjectState:()=>Zt,isBucketPolicyState:()=>ar,isBucketState:()=>ve,registerTriggers:()=>or});
10
+ module.exports=Lt(pr);var St=require("@ez4/aws-common"),kt=require("@ez4/aws-identity"),bt=require("@ez4/aws-function"),
11
11
  xt=require("@ez4/storage/library"),Pt=require("@ez4/project/library");var Pe=require("@ez4/aws-common");var fe=require("@ez4/aws-common"),K=require("@ez4/aws-function"),B=require("@ez4/utils");var u=require("@ez4/aws-common"),a=require("@aws-sdk/client-s3");var m="AWS:S3/Bucket",y="aws:s3.bucket";var f=new a.S3Client({}),ce=o(async t=>{u.Logger.logFetch(m,t);try{return!(await f.
12
12
  send(new a.ListObjectsV2Command({Bucket:t,MaxKeys:1}))).Contents?.length}catch(e){
13
13
  if(!(e instanceof a.NoSuchBucket))throw e;return 0}},"isBucketEmpty"),se=o(async t=>{
@@ -32,20 +32,20 @@ eleteLifecycle"),ye=o(async(t,e)=>{u.Logger.logUpdate(m,`${t} events`);let{funct
32
32
  eventsPath:n,eventsType:c}=e;await f.send(new a.PutBucketNotificationConfigurationCommand(
33
33
  {Bucket:t,SkipDestinationValidation:!0,NotificationConfiguration:{...r&&{LambdaFunctionConfigurations:[
34
34
  {Id:"ID0",LambdaFunctionArn:r,Events:c,...n&&{Filter:{Key:{FilterRules:[{Name:"p\
35
- refix",Value:n}]}}}}]}}}))},"updateEventNotifications");var ge=o(()=>({equals:Lt,create:de,replace:qt,preview:Mt,update:$t,delete:Ht}),"\
36
- getBucketHandler"),Lt=o((t,e)=>!!t.result&&t.result.bucketName===e.result?.bucketName,
37
- "equalsResource"),Mt=o((t,e)=>{let r={...t.parameters,dependencies:t.dependencies},
35
+ refix",Value:n}]}}}}]}}}))},"updateEventNotifications");var ge=o(()=>({equals:Mt,create:de,replace:$t,preview:qt,update:Ht,delete:Kt}),"\
36
+ getBucketHandler"),Mt=o((t,e)=>!!t.result&&t.result.bucketName===e.result?.bucketName,
37
+ "equalsResource"),qt=o((t,e)=>{let r={...t.parameters,dependencies:t.dependencies},
38
38
  n={...e.parameters,dependencies:e.dependencies},c=(0,B.deepCompare)(r,n);if(c.counts)
39
- return{...c,name:r.bucketName}},"previewResource"),qt=o(async(t,e,r)=>{if(e.result)
39
+ return{...c,name:r.bucketName}},"previewResource"),$t=o(async(t,e,r)=>{if(e.result)
40
40
  throw new fe.ReplaceResourceError(m,t.entryId,e.entryId);return de(t,r)},"replac\
41
41
  eResource"),de=o(async(t,e)=>{let r=t.parameters,n=(0,K.tryGetFunctionArn)(e),{bucketName:c}=await se(
42
42
  r);await Se(c,r,void 0),await ke(c,r,void 0),await be(c,r.tags,void 0);let s={eventsPath:r.
43
43
  eventsPath,functionArn:n};return await xe(c,s,{}),{bucketName:c,functionArn:n}},
44
- "createResource"),$t=o(async(t,e,r)=>{let{result:n,parameters:c}=t;if(!n)return;
44
+ "createResource"),Ht=o(async(t,e,r)=>{let{result:n,parameters:c}=t;if(!n)return;
45
45
  let s=n.bucketName,i=(0,K.tryGetFunctionArn)(r),p=e.result?.functionArn;await Se(
46
46
  s,c,e.parameters),await ke(s,c,e.parameters),await be(s,c.tags,e.parameters.tags);
47
47
  let b={eventsPath:c.eventsPath,functionArn:i},E={eventsPath:e.parameters.eventsPath,
48
- functionArn:p};return await xe(s,b,E),{...n,functionArn:i}},"updateResource"),Ht=o(
48
+ functionArn:p};return await xe(s,b,E),{...n,functionArn:i}},"updateResource"),Kt=o(
49
49
  async t=>{let e=t.result;e&&await ce(e.bucketName)&&await ae(e.bucketName)},"del\
50
50
  eteResource"),Se=o(async(t,e,r)=>{if(!(e.cors&&r?.cors&&(0,B.deepEqual)(e.cors,r.
51
51
  cors))){if(e.cors)return pe(t,e.cors);if(r?.cors)return me(t)}},"checkCorsUpdate\
@@ -62,18 +62,18 @@ bucketName},"getBucketName");var S=require("@aws-sdk/client-s3"),_=require("@ez4
62
62
  logCreate(x,e),await Re.send(new S.PutBucketPolicyCommand({Bucket:e,Policy:JSON.
63
63
  stringify(r)})),{bucketName:e}},"createPolicy"),Ce=o(async t=>{_.Logger.logDelete(
64
64
  x,t);try{return await Re.send(new S.DeleteBucketPolicyCommand({Bucket:t})),!0}catch(e){
65
- if(!(e instanceof S.NoSuchBucket))throw e;return!1}},"deletePolicy");var Oe=o(()=>({equals:Kt,create:Te,replace:Gt,preview:Ut,update:_t,delete:Vt}),"\
66
- getPolicyHandler"),Kt=o((t,e)=>!!t.result&&t.result.bucketName===e.result?.bucketName,
67
- "equalsResource"),Ut=o((t,e)=>{let r={...t.parameters,dependencies:t.dependencies},
65
+ if(!(e instanceof S.NoSuchBucket))throw e;return!1}},"deletePolicy");var Oe=o(()=>({equals:Ut,create:Te,replace:_t,preview:Gt,update:Vt,delete:Wt}),"\
66
+ getPolicyHandler"),Ut=o((t,e)=>!!t.result&&t.result.bucketName===e.result?.bucketName,
67
+ "equalsResource"),Gt=o((t,e)=>{let r={...t.parameters,dependencies:t.dependencies},
68
68
  n={...e.parameters,dependencies:e.dependencies},c=(0,je.deepCompare)(r,n,{exclude:{
69
- getRole:!0}});if(c.counts)return{...c,name:r.fromService}},"previewResource"),Gt=o(
69
+ getRole:!0}});if(c.counts)return{...c,name:r.fromService}},"previewResource"),_t=o(
70
70
  async(t,e,r)=>{if(e.result)throw new he.ReplaceResourceError(x,t.entryId,e.entryId);
71
71
  return Te(t,r)},"replaceResource"),Te=o(async(t,e)=>{let r=t.parameters,n=j(x,"p\
72
72
  olicy",e),c=await r.getRole(e);return await Ee({bucketName:n,role:c}),{bucketName:n}},
73
- "createResource"),_t=o(async()=>{},"updateResource"),Vt=o(async t=>{let e=t.result;
73
+ "createResource"),Vt=o(async()=>{},"updateResource"),Wt=o(async t=>{let e=t.result;
74
74
  e&&await Ce(e.bucketName)},"deleteResource");var De=o(()=>{(0,Ne.tryRegisterProvider)(d,Oe())},"registerPolicyProvider");var Ke=require("@ez4/aws-common");var Le=require("node:fs/promises"),Me=require("@ez4/aws-common"),F=require("@ez4/utils");var ze=require("node:fs"),l=require("@aws-sdk/client-s3"),w=require("@ez4/aws-common"),
75
- Fe=At(require("mime"),1);var k="AWS:S3/Object",g="aws:s3.object";var Wt=o(t=>t.type===g,"isBucketObjectState"),O=o((t,e)=>`${t}/${e}`,"getBucketO\
76
- bjectPath"),Zt=o(t=>t.getDependencies(g).map(({result:r,parameters:n})=>({lastModified:r?.
75
+ Fe=It(require("mime"),1);var k="AWS:S3/Object",g="aws:s3.object";var Zt=o(t=>t.type===g,"isBucketObjectState"),O=o((t,e)=>`${t}/${e}`,"getBucketO\
76
+ bjectPath"),Jt=o(t=>t.getDependencies(g).map(({result:r,parameters:n})=>({lastModified:r?.
77
77
  lastModified,objectKey:n.objectKey})),"getBucketObjectFiles");var V=new l.S3Client({}),W=o(async(t,e)=>{let{objectKey:r,filePath:n}=e;w.Logger.
78
78
  logCreate(k,O(t,r));let c=Fe.default.getType(n);return await V.send(new l.PutObjectCommand(
79
79
  {Bucket:t,Key:r,Body:(0,ze.createReadStream)(n),...c&&{ContentType:c}})),{objectKey:r}},
@@ -81,20 +81,20 @@ logCreate(k,O(t,r));let c=Fe.default.getType(n);return await V.send(new l.PutObj
81
81
  {Bucket:t,Key:e,Tagging:{TagSet:(0,w.getTagList)({...r,ManagedBy:"EZ4"})}}))},"t\
82
82
  agObject"),Ie=o(async(t,e)=>{w.Logger.logDelete(k,O(t,e));try{return await V.send(
83
83
  new l.DeleteObjectCommand({Bucket:t,Key:e})),!0}catch(r){if(!(r instanceof l.NoSuchBucket))
84
- throw r;return!1}},"deleteObject");var qe=o(()=>({equals:Jt,create:$e,replace:Xt,preview:Qt,update:Yt,delete:er}),"\
85
- getObjectHandler"),Jt=o((t,e)=>!!t.result&&t.result.lastModified===e.result?.lastModified,
86
- "equalsResource"),Qt=o(async(t,e)=>{let r=t.parameters,n=e.parameters,c=(0,F.deepCompare)(
84
+ throw r;return!1}},"deleteObject");var qe=o(()=>({equals:Qt,create:$e,replace:Yt,preview:Xt,update:er,delete:tr}),"\
85
+ getObjectHandler"),Qt=o((t,e)=>!!t.result&&t.result.lastModified===e.result?.lastModified,
86
+ "equalsResource"),Xt=o(async(t,e)=>{let r=t.parameters,n=e.parameters,c=(0,F.deepCompare)(
87
87
  {...r,dependencies:t.dependencies,lastModified:await Z(r.filePath)},{...n,dependencies:e.
88
88
  dependencies,lastModified:t.result?.lastModified});if(c.counts)return{...c,name:r.
89
- objectKey}},"previewResource"),Xt=o(async(t,e,r)=>{if(e.result)throw new Me.ReplaceResourceError(
89
+ objectKey}},"previewResource"),Yt=o(async(t,e,r)=>{if(e.result)throw new Me.ReplaceResourceError(
90
90
  k,t.entryId,e.entryId);return $e(t,r)},"replaceResource"),$e=o(async(t,e)=>{let r=t.
91
91
  parameters,n=j(k,"bucket",e),c=await Z(r.filePath),{objectKey:s}=await W(n,r);return await He(
92
- n,s,r.tags,t.parameters.tags),{lastModified:c,bucketName:n}},"createResource"),Yt=o(
92
+ n,s,r.tags,t.parameters.tags),{lastModified:c,bucketName:n}},"createResource"),er=o(
93
93
  async(t,e)=>{let{result:r,parameters:n}=t;if(!r)return;let{objectKey:c,tags:s}=n,
94
- i=tr(r,n,e.parameters);return await He(r.bucketName,c,s,e.parameters.tags),i},"u\
95
- pdateResource"),er=o(async t=>{let{result:e,parameters:r}=t;e&&await Ie(e.bucketName,
94
+ i=rr(r,n,e.parameters);return await He(r.bucketName,c,s,e.parameters.tags),i},"u\
95
+ pdateResource"),tr=o(async t=>{let{result:e,parameters:r}=t;e&&await Ie(e.bucketName,
96
96
  r.objectKey)},"deleteResource"),Z=o(async t=>{let{mtime:e}=await(0,Le.stat)(t);return e.
97
- getTime()},"getLastModifiedTime"),tr=o(async(t,e,r)=>{let n=await Z(e.filePath);
97
+ getTime()},"getLastModifiedTime"),rr=o(async(t,e,r)=>{let n=await Z(e.filePath);
98
98
  if(n<=t.lastModified&&e.filePath===r.filePath)return t;let{bucketName:c}=t,{objectKey:s}=r;
99
99
  return await W(c,{...e,objectKey:s}),{lastModified:n,bucketName:c}},"checkObject\
100
100
  Updates"),He=o(async(t,e,r,n)=>{let c=r??{};!(0,F.deepEqual)(c,n??{})&&await Ae(
@@ -112,12 +112,13 @@ e);return(0,Je.getFunctionBundle)(Ze.MappingServiceName,{templateFile:(0,Ve.join
112
112
  __dirname,"../lib/event.ts"),define:i,filePrefix:"s3",handler:r,listener:n,context:c,
113
113
  debug:s})},"bundleBucketEventFunction");var Y=o((t,e,r,n)=>{let{handler:c,variables:s,architecture:i}=n;return(0,Xe.createFunction)(
114
114
  t,e,r,{handlerName:"s3EntryPoint",sourceFile:c.sourceFile,functionName:n.functionName,
115
- description:n.description,architecture:n.architecture,runtime:n.runtime,timeout:n.
116
- timeout,memory:n.memory,debug:n.debug,tags:n.tags,getFunctionVariables:o(()=>s.reduce(
117
- (p,b)=>({...p,...b}),{}),"getFunctionVariables"),getFunctionFiles:o(()=>[c.sourceFile,
118
- c.dependencies],"getFunctionFiles"),getFunctionBundle:o(p=>Qe(n,[...p.getDependencies(),
119
- ...p.getConnections()]),"getFunctionBundle"),getFunctionHash:o(()=>(0,Ye.hashObject)(
120
- {architecture:i}),"getFunctionHash")})},"createBucketEventFunction");var I=require("@ez4/project/library"),et=require("@ez4/aws-common"),L=require("@ez4/utils");var tt=o(async(t,e)=>{if(t.globalName)return(0,I.getServiceName)(t.globalName,e);
115
+ description:n.description,architecture:n.architecture,runtime:n.runtime,release:n.
116
+ release,timeout:n.timeout,memory:n.memory,debug:n.debug,tags:n.tags,getFunctionVariables:o(
117
+ ()=>s.reduce((p,b)=>({...p,...b}),{}),"getFunctionVariables"),getFunctionFiles:o(
118
+ ()=>[c.sourceFile,c.dependencies],"getFunctionFiles"),getFunctionBundle:o(p=>Qe(
119
+ n,[...p.getDependencies(),...p.getConnections()]),"getFunctionBundle"),getFunctionHash:o(
120
+ ()=>(0,Ye.hashObject)({architecture:i}),"getFunctionHash")})},"createBucketEvent\
121
+ Function");var I=require("@ez4/project/library"),et=require("@ez4/aws-common"),L=require("@ez4/utils");var tt=o(async(t,e)=>{if(t.globalName)return(0,I.getServiceName)(t.globalName,e);
121
122
  let r=(0,I.getServiceName)(t,e),n=await(0,et.getRandomName)(16);return`${r.substring(
122
123
  0,46)}-${n}`},"getBucketName"),ee=o((t,e)=>`${(0,L.toKebabCase)(t.name)}-${(0,L.toKebabCase)(
123
124
  e)}`,"getInternalName"),rt=o((t,e,r)=>`${(0,I.getServiceName)(t,r)}-${(0,L.toKebabCase)(
@@ -125,19 +126,19 @@ e)}`,"getFunctionName");var T=class extends Error{static{o(this,"RoleMissingErro
125
126
  "Execution role for S3 is missing.")}};var v=require("@ez4/aws-function"),P;(s=>(s.LogRetention=v.FunctionDefaults.LogRetention,
126
127
  s.Architecture=v.FunctionDefaults.Architecture,s.Runtime=v.FunctionDefaults.Runtime,
127
128
  s.Timeout=v.FunctionDefaults.Timeout,s.Memory=v.FunctionDefaults.Memory))(P||={});var ct=o((t,e,r,n)=>{if(!e.events)return;if(!n.role||!(0,te.isRoleState)(n.role))
128
- throw new T;let{defaults:c}=r,{handler:s,listener:i,variables:p,runtime:b=c?.runtime??
129
- P.Runtime,architecture:E=c?.architecture??P.Architecture,logRetention:H=c?.logRetention??
130
- P.LogRetention,memory:N=c?.memory??P.Memory,timeout:Ct=P.Timeout}=e.events,re=ee(
131
- e,s.name),C=(0,M.tryGetFunctionState)(n,re,r);if(C)return C;let oe=rt(e,s.name,r),
132
- ht=n.getDependencyFiles(s.file),jt=(0,nt.createLogGroup)(t,{retention:H,groupName:oe,
133
- tags:r.tags});return C=Y(t,n.role,jt,{functionName:oe,description:s.description,
134
- context:e.context,debug:r.debug,tags:r.tags,variables:[r.variables,e.variables,p],
135
- architecture:E,runtime:b,timeout:Ct,memory:N,handler:{sourceFile:s.file,functionName:s.
136
- name,module:s.module,dependencies:ht},listener:i&&{functionName:i.name,sourceFile:i.
137
- file,module:i.module}}),n.setServiceState(C,re,r),C},"prepareEvents"),st=o((t,e,r,n)=>{
138
- if(!e.events)return;if(!n.role||!(0,te.isRoleState)(n.role))throw new T;let{handler:c}=e.
139
- events,s=ee(e,c.name),i=(0,M.getFunctionState)(n,s,r);(0,ot.linkServiceContext)(
140
- t,i.entryId,e.context)},"connectEvents");var at=require("node:fs/promises"),R=require("node:path"),it=require("@ez4/aws-bucket");var pt=o(async(t,e,r)=>{let n=process.cwd(),c=(0,R.join)(n,r),s=await(0,at.readdir)(
129
+ throw new T;let{defaults:c,release:s}=r,{handler:i,listener:p,variables:b,runtime:E=c?.
130
+ runtime??P.Runtime,architecture:H=c?.architecture??P.Architecture,logRetention:N=c?.
131
+ logRetention??P.LogRetention,memory:Ct=c?.memory??P.Memory,timeout:ht=P.Timeout}=e.
132
+ events,re=ee(e,i.name),C=(0,M.tryGetFunctionState)(n,re,r);if(C)return C;let oe=rt(
133
+ e,i.name,r),jt=n.getDependencyFiles(i.file),Ot=(0,nt.createLogGroup)(t,{retention:N,
134
+ groupName:oe,tags:r.tags});return C=Y(t,n.role,Ot,{functionName:oe,description:i.
135
+ description,context:e.context,debug:r.debug,tags:r.tags,variables:[r.variables,e.
136
+ variables,b],architecture:H,runtime:E,release:s,timeout:ht,memory:Ct,handler:{sourceFile:i.
137
+ file,functionName:i.name,module:i.module,dependencies:jt},listener:p&&{functionName:p.
138
+ name,sourceFile:p.file,module:p.module}}),n.setServiceState(C,re,r),C},"prepareE\
139
+ vents"),st=o((t,e,r,n)=>{if(!e.events)return;if(!n.role||!(0,te.isRoleState)(n.role))
140
+ throw new T;let{handler:c}=e.events,s=ee(e,c.name),i=(0,M.getFunctionState)(n,s,
141
+ r);(0,ot.linkServiceContext)(t,i.entryId,e.context)},"connectEvents");var at=require("node:fs/promises"),R=require("node:path"),it=require("@ez4/aws-bucket");var pt=o(async(t,e,r)=>{let n=process.cwd(),c=(0,R.join)(n,r),s=await(0,at.readdir)(
141
142
  c,{withFileTypes:!0,recursive:!0});for(let i of s){if(!i.isFile())continue;let p=(0,R.join)(
142
143
  i.parentPath,i.name);(0,it.createBucketObject)(t,e,{objectKey:(0,R.relative)(c,p),
143
144
  filePath:(0,R.relative)(n,p)})}},"prepareLocalContent");var mt=o((t,e,r)=>{let n=G(t,e.name,r),c=n.entryId;return{module:"Client",from:"\
@@ -152,14 +153,14 @@ options:n,context:c}=t;(0,q.isBucketService)(r)&&st(e,r,n,c)},"connectBucketServ
152
153
  ices");var ft=require("@ez4/storage/library"),$=require("@ez4/aws-identity"),gt=require("@ez4/project/library");var dt=o(t=>{let{state:e,serviceType:r,options:n}=t;if(r!==ft.ServiceType)return null;
153
154
  let c=(0,gt.getServiceName)("",n),s=`${c}-bucket-policy`;return(0,$.tryGetPolicy)(
154
155
  e,s)??(0,$.createPolicy)(e,{tags:n.tags,policyDocument:Q(c),policyName:s})},"pre\
155
- pareExecutionPolicy");var rr=o(()=>{(0,St.registerTriggers)(),(0,kt.registerTriggers)(),(0,bt.registerTriggers)(),
156
+ pareExecutionPolicy");var or=o(()=>{(0,St.registerTriggers)(),(0,kt.registerTriggers)(),(0,bt.registerTriggers)(),
156
157
  (0,xt.registerTriggers)(),(0,Pt.tryCreateTrigger)("@ez4/aws-bucket",{"deploy:pre\
157
158
  pareExecutionPolicy":dt,"deploy:prepareLinkedService":ut,"deploy:prepareResource\
158
- s":lt,"deploy:connectResources":yt}),Be(),De(),Ue()},"registerTriggers");var Bt=require("@ez4/aws-identity");var or=o(t=>/(.+)\.s3\.(.+)\.amazonaws\.com/i.test(t),"isBucketDomain"),nr=o(async t=>{
159
+ s":lt,"deploy:connectResources":yt}),Be(),De(),Ue()},"registerTriggers");var Bt=require("@ez4/aws-identity");var nr=o(t=>/(.+)\.s3\.(.+)\.amazonaws\.com/i.test(t),"isBucketDomain"),cr=o(async t=>{
159
160
  let e=await(0,Bt.getRegion)();return`${t}.s3.${e}.amazonaws.com`},"getBucketDoma\
160
- in");var wt=require("@ez4/stateful"),vt=require("@ez4/utils");var cr=o((t,e,r,n)=>{let c=(0,vt.hashData)(d,e.entryId,r.entryId);return(0,wt.attachEntry)(
161
+ in");var wt=require("@ez4/stateful"),vt=require("@ez4/utils");var sr=o((t,e,r,n)=>{let c=(0,vt.hashData)(d,e.entryId,r.entryId);return(0,wt.attachEntry)(
161
162
  t,{type:d,entryId:c,dependencies:[e.entryId,r.entryId],parameters:n})},"createBu\
162
- cketPolicy");var sr=o(t=>t.type===d,"isBucketPolicyState");var Rt=require("@ez4/stateful"),Et=require("@ez4/utils");var ar=o((t,e,r)=>{let n=r.objectKey,c=(0,Et.hashData)(g,e.entryId,n);return(0,Rt.attachEntry)(
163
+ cketPolicy");var ar=o(t=>t.type===d,"isBucketPolicyState");var Rt=require("@ez4/stateful"),Et=require("@ez4/utils");var ir=o((t,e,r)=>{let n=r.objectKey,c=(0,Et.hashData)(g,e.entryId,n);return(0,Rt.attachEntry)(
163
164
  t,{type:g,entryId:c,dependencies:[e.entryId],parameters:r})},"createBucketObject");0&&(module.exports={BucketServiceName,BucketServiceType,ObjectServiceName,ObjectServiceType,
164
165
  PolicyServiceName,PolicyServiceType,buildBucketArn,createBucket,createBucketEventFunction,
165
166
  createBucketObject,createBucketPolicy,createBucketStateId,getBucketDomain,getBucketName,
package/dist/main.mjs CHANGED
@@ -1,43 +1,43 @@
1
- var Me=Object.defineProperty;var o=(t,e)=>Me(t,"name",{value:e,configurable:!0});import{registerTriggers as ir}from"@ez4/aws-common";import{registerTriggers as pr}from"@ez4/aws-identity";
2
- import{registerTriggers as mr}from"@ez4/aws-function";import{registerTriggers as ur}from"@ez4/storage/library";
3
- import{tryCreateTrigger as lr}from"@ez4/project/library";import{tryRegisterProvider as ct}from"@ez4/aws-common";import{ReplaceResourceError as Xe}from"@ez4/aws-common";import{tryGetFunctionArn as Z}from"@ez4/aws-function";
4
- import{deepCompare as Ye,deepEqual as j}from"@ez4/utils";import{getTagList as qe,Logger as m}from"@ez4/aws-common";import{S3Client as $e,
5
- ListObjectsV2Command as He,CreateBucketCommand as Ke,DeleteBucketCommand as Ue,PutBucketTaggingCommand as Ge,
6
- PutBucketCorsCommand as _e,DeleteBucketCorsCommand as Ve,PutBucketLifecycleConfigurationCommand as We,
7
- DeleteBucketLifecycleCommand as Ze,PutBucketNotificationConfigurationCommand as Je,
8
- ExpirationStatus as Qe,NoSuchBucket as v}from"@aws-sdk/client-s3";var p="AWS:S3/Bucket",l="aws:s3.bucket";var u=new $e({}),q=o(async t=>{m.logFetch(p,t);try{return!(await u.send(new He({
1
+ var qe=Object.defineProperty;var o=(t,e)=>qe(t,"name",{value:e,configurable:!0});import{registerTriggers as pr}from"@ez4/aws-common";import{registerTriggers as mr}from"@ez4/aws-identity";
2
+ import{registerTriggers as ur}from"@ez4/aws-function";import{registerTriggers as lr}from"@ez4/storage/library";
3
+ import{tryCreateTrigger as yr}from"@ez4/project/library";import{tryRegisterProvider as st}from"@ez4/aws-common";import{ReplaceResourceError as Ye}from"@ez4/aws-common";import{tryGetFunctionArn as Z}from"@ez4/aws-function";
4
+ import{deepCompare as et,deepEqual as j}from"@ez4/utils";import{getTagList as $e,Logger as m}from"@ez4/aws-common";import{S3Client as He,
5
+ ListObjectsV2Command as Ke,CreateBucketCommand as Ue,DeleteBucketCommand as Ge,PutBucketTaggingCommand as _e,
6
+ PutBucketCorsCommand as Ve,DeleteBucketCorsCommand as We,PutBucketLifecycleConfigurationCommand as Ze,
7
+ DeleteBucketLifecycleCommand as Je,PutBucketNotificationConfigurationCommand as Qe,
8
+ ExpirationStatus as Xe,NoSuchBucket as v}from"@aws-sdk/client-s3";var p="AWS:S3/Bucket",l="aws:s3.bucket";var u=new He({}),q=o(async t=>{m.logFetch(p,t);try{return!(await u.send(new Ke({
9
9
  Bucket:t,MaxKeys:1}))).Contents?.length}catch(e){if(!(e instanceof v))throw e;return 0}},
10
10
  "isBucketEmpty"),$=o(async t=>{let{bucketName:e}=t;return m.logCreate(p,e),await u.
11
- send(new Ke({Bucket:e})),{bucketName:e}},"createBucket"),H=o(async t=>{m.logDelete(
12
- p,t);try{return await u.send(new Ue({Bucket:t})),!0}catch(e){if(!(e instanceof v))
13
- throw e;return!1}},"deleteBucket"),K=o(async(t,e)=>{m.logTag(p,t),await u.send(new Ge(
14
- {Bucket:t,Tagging:{TagSet:qe({...e,ManagedBy:"EZ4"})}}))},"tagBucket"),U=o(async(t,e)=>{
15
- m.logUpdate(p,`${t} CORS`),await u.send(new _e({Bucket:t,CORSConfiguration:{CORSRules:[
11
+ send(new Ue({Bucket:e})),{bucketName:e}},"createBucket"),H=o(async t=>{m.logDelete(
12
+ p,t);try{return await u.send(new Ge({Bucket:t})),!0}catch(e){if(!(e instanceof v))
13
+ throw e;return!1}},"deleteBucket"),K=o(async(t,e)=>{m.logTag(p,t),await u.send(new _e(
14
+ {Bucket:t,Tagging:{TagSet:$e({...e,ManagedBy:"EZ4"})}}))},"tagBucket"),U=o(async(t,e)=>{
15
+ m.logUpdate(p,`${t} CORS`),await u.send(new Ve({Bucket:t,CORSConfiguration:{CORSRules:[
16
16
  {ID:"ID0",AllowedOrigins:e.allowOrigins,AllowedMethods:e.allowMethods,AllowedHeaders:e.
17
17
  allowHeaders,ExposeHeaders:e.exposeHeaders,MaxAgeSeconds:e.maxAge}]}}))},"update\
18
18
  CorsConfiguration"),G=o(async t=>{m.logDelete(p,`${t} CORS`);try{return await u.
19
- send(new Ve({Bucket:t})),!0}catch(e){if(!(e instanceof v))throw e;return!1}},"de\
19
+ send(new We({Bucket:t})),!0}catch(e){if(!(e instanceof v))throw e;return!1}},"de\
20
20
  leteCorsConfiguration"),_=o(async(t,e)=>{m.logCreate(p,`${t} lifecycle`),await u.
21
- send(new We({Bucket:t,LifecycleConfiguration:{Rules:[{ID:"ID0",Status:Qe.Enabled,
21
+ send(new Ze({Bucket:t,LifecycleConfiguration:{Rules:[{ID:"ID0",Status:Xe.Enabled,
22
22
  Filter:{Prefix:"*"},Expiration:{Days:e}}]}}))},"createLifecycle"),V=o(async t=>{
23
- m.logDelete(p,`${t} lifecycle`);try{return await u.send(new Ze({Bucket:t})),!0}catch(e){
23
+ m.logDelete(p,`${t} lifecycle`);try{return await u.send(new Je({Bucket:t})),!0}catch(e){
24
24
  if(!(e instanceof v))throw e;return!1}},"deleteLifecycle"),W=o(async(t,e)=>{m.logUpdate(
25
- p,`${t} events`);let{functionArn:r,eventsPath:n,eventsType:c}=e;await u.send(new Je(
25
+ p,`${t} events`);let{functionArn:r,eventsPath:n,eventsType:c}=e;await u.send(new Qe(
26
26
  {Bucket:t,SkipDestinationValidation:!0,NotificationConfiguration:{...r&&{LambdaFunctionConfigurations:[
27
27
  {Id:"ID0",LambdaFunctionArn:r,Events:c,...n&&{Filter:{Key:{FilterRules:[{Name:"p\
28
- refix",Value:n}]}}}}]}}}))},"updateEventNotifications");var J=o(()=>({equals:et,create:Q,replace:rt,preview:tt,update:ot,delete:nt}),"ge\
29
- tBucketHandler"),et=o((t,e)=>!!t.result&&t.result.bucketName===e.result?.bucketName,
30
- "equalsResource"),tt=o((t,e)=>{let r={...t.parameters,dependencies:t.dependencies},
31
- n={...e.parameters,dependencies:e.dependencies},c=Ye(r,n);if(c.counts)return{...c,
32
- name:r.bucketName}},"previewResource"),rt=o(async(t,e,r)=>{if(e.result)throw new Xe(
28
+ refix",Value:n}]}}}}]}}}))},"updateEventNotifications");var J=o(()=>({equals:tt,create:Q,replace:ot,preview:rt,update:nt,delete:ct}),"ge\
29
+ tBucketHandler"),tt=o((t,e)=>!!t.result&&t.result.bucketName===e.result?.bucketName,
30
+ "equalsResource"),rt=o((t,e)=>{let r={...t.parameters,dependencies:t.dependencies},
31
+ n={...e.parameters,dependencies:e.dependencies},c=et(r,n);if(c.counts)return{...c,
32
+ name:r.bucketName}},"previewResource"),ot=o(async(t,e,r)=>{if(e.result)throw new Ye(
33
33
  p,t.entryId,e.entryId);return Q(t,r)},"replaceResource"),Q=o(async(t,e)=>{let r=t.
34
34
  parameters,n=Z(e),{bucketName:c}=await $(r);await X(c,r,void 0),await Y(c,r,void 0),
35
35
  await ee(c,r.tags,void 0);let s={eventsPath:r.eventsPath,functionArn:n};return await te(
36
- c,s,{}),{bucketName:c,functionArn:n}},"createResource"),ot=o(async(t,e,r)=>{let{
36
+ c,s,{}),{bucketName:c,functionArn:n}},"createResource"),nt=o(async(t,e,r)=>{let{
37
37
  result:n,parameters:c}=t;if(!n)return;let s=n.bucketName,a=Z(r),i=e.result?.functionArn;
38
38
  await X(s,c,e.parameters),await Y(s,c,e.parameters),await ee(s,c.tags,e.parameters.
39
39
  tags);let f={eventsPath:c.eventsPath,functionArn:a},b={eventsPath:e.parameters.eventsPath,
40
- functionArn:i};return await te(s,f,b),{...n,functionArn:a}},"updateResource"),nt=o(
40
+ functionArn:i};return await te(s,f,b),{...n,functionArn:a}},"updateResource"),ct=o(
41
41
  async t=>{let e=t.result;e&&await q(e.bucketName)&&await H(e.bucketName)},"delet\
42
42
  eResource"),X=o(async(t,e,r)=>{if(!(e.cors&&r?.cors&&j(e.cors,r.cors))){if(e.cors)
43
43
  return U(t,e.cors);if(r?.cors)return G(t)}},"checkCorsUpdates"),Y=o(async(t,e,r)=>{
@@ -45,91 +45,91 @@ if(e.autoExpireDays!==r?.autoExpireDays){if(e.autoExpireDays)return _(t,e.autoEx
45
45
  if(r?.autoExpireDays)return V(t)}},"checkLifecycleUpdates"),ee=o(async(t,e,r)=>{
46
46
  let n=e??{};!j(n,r??{})&&await K(t,n)},"checkTagUpdates"),te=o(async(t,e,r)=>{!j(
47
47
  e,r)&&await W(t,{eventsType:["s3:ObjectCreated:*","s3:ObjectRemoved:*"],...e})},
48
- "checkEventUpdates");var re=o(()=>{ct(l,J())},"registerBucketProvider");import{tryRegisterProvider as Pt}from"@ez4/aws-common";import{ReplaceResourceError as ft}from"@ez4/aws-common";import{deepCompare as gt}from"@ez4/utils";import{IncompleteResourceError as st}from"@ez4/aws-common";import{hashData as at,
49
- toKebabCase as it}from"@ez4/utils";var R=class extends Error{static{o(this,"BucketNotFoundError")}constructor(e){super(
50
- `Bucket service ${e} wasn't found.`)}};var oe=o(t=>at(l,it(t)),"createBucketStateId"),pt=o(t=>t.type===l,"isBucketState"),
51
- ne=o((t,e,r)=>{let n=t.getServiceState(e,r);if(!pt(n))throw new R(e);return n},"\
48
+ "checkEventUpdates");var re=o(()=>{st(l,J())},"registerBucketProvider");import{tryRegisterProvider as Bt}from"@ez4/aws-common";import{ReplaceResourceError as gt}from"@ez4/aws-common";import{deepCompare as dt}from"@ez4/utils";import{IncompleteResourceError as at}from"@ez4/aws-common";import{hashData as it,
49
+ toKebabCase as pt}from"@ez4/utils";var R=class extends Error{static{o(this,"BucketNotFoundError")}constructor(e){super(
50
+ `Bucket service ${e} wasn't found.`)}};var oe=o(t=>it(l,pt(t)),"createBucketStateId"),mt=o(t=>t.type===l,"isBucketState"),
51
+ ne=o((t,e,r)=>{let n=t.getServiceState(e,r);if(!mt(n))throw new R(e);return n},"\
52
52
  getBucketState"),E=o((t,e,r)=>{let n=r.getDependencies(l)[0]?.result;if(!n?.bucketName)
53
- throw new st(t,e,"bucketName");return n.bucketName},"getBucketName");import{S3Client as mt,PutBucketPolicyCommand as ut,DeleteBucketPolicyCommand as lt,
54
- NoSuchBucket as yt}from"@aws-sdk/client-s3";import{Logger as ce}from"@ez4/aws-common";var k="AWS:S3/Policy",g="aws:s3.policy";var se=new mt({}),ae=o(async t=>{let{bucketName:e,role:r}=t;return ce.logCreate(
55
- k,e),await se.send(new ut({Bucket:e,Policy:JSON.stringify(r)})),{bucketName:e}},
56
- "createPolicy"),ie=o(async t=>{ce.logDelete(k,t);try{return await se.send(new lt(
57
- {Bucket:t})),!0}catch(e){if(!(e instanceof yt))throw e;return!1}},"deletePolicy");var pe=o(()=>({equals:dt,create:me,replace:kt,preview:St,update:bt,delete:xt}),"\
58
- getPolicyHandler"),dt=o((t,e)=>!!t.result&&t.result.bucketName===e.result?.bucketName,
59
- "equalsResource"),St=o((t,e)=>{let r={...t.parameters,dependencies:t.dependencies},
60
- n={...e.parameters,dependencies:e.dependencies},c=gt(r,n,{exclude:{getRole:!0}});
61
- if(c.counts)return{...c,name:r.fromService}},"previewResource"),kt=o(async(t,e,r)=>{
62
- if(e.result)throw new ft(k,t.entryId,e.entryId);return me(t,r)},"replaceResource"),
53
+ throw new at(t,e,"bucketName");return n.bucketName},"getBucketName");import{S3Client as ut,PutBucketPolicyCommand as lt,DeleteBucketPolicyCommand as yt,
54
+ NoSuchBucket as ft}from"@aws-sdk/client-s3";import{Logger as ce}from"@ez4/aws-common";var k="AWS:S3/Policy",g="aws:s3.policy";var se=new ut({}),ae=o(async t=>{let{bucketName:e,role:r}=t;return ce.logCreate(
55
+ k,e),await se.send(new lt({Bucket:e,Policy:JSON.stringify(r)})),{bucketName:e}},
56
+ "createPolicy"),ie=o(async t=>{ce.logDelete(k,t);try{return await se.send(new yt(
57
+ {Bucket:t})),!0}catch(e){if(!(e instanceof ft))throw e;return!1}},"deletePolicy");var pe=o(()=>({equals:St,create:me,replace:bt,preview:kt,update:xt,delete:Pt}),"\
58
+ getPolicyHandler"),St=o((t,e)=>!!t.result&&t.result.bucketName===e.result?.bucketName,
59
+ "equalsResource"),kt=o((t,e)=>{let r={...t.parameters,dependencies:t.dependencies},
60
+ n={...e.parameters,dependencies:e.dependencies},c=dt(r,n,{exclude:{getRole:!0}});
61
+ if(c.counts)return{...c,name:r.fromService}},"previewResource"),bt=o(async(t,e,r)=>{
62
+ if(e.result)throw new gt(k,t.entryId,e.entryId);return me(t,r)},"replaceResource"),
63
63
  me=o(async(t,e)=>{let r=t.parameters,n=E(k,"policy",e),c=await r.getRole(e);return await ae(
64
- {bucketName:n,role:c}),{bucketName:n}},"createResource"),bt=o(async()=>{},"updat\
65
- eResource"),xt=o(async t=>{let e=t.result;e&&await ie(e.bucketName)},"deleteReso\
66
- urce");var ue=o(()=>{Pt(g,pe())},"registerPolicyProvider");import{tryRegisterProvider as qt}from"@ez4/aws-common";import{stat as Ot}from"node:fs/promises";import{ReplaceResourceError as Tt}from"@ez4/aws-common";
67
- import{deepCompare as Nt,deepEqual as Dt}from"@ez4/utils";import{createReadStream as Bt}from"node:fs";import{S3Client as wt,PutObjectCommand as vt,
68
- PutObjectTaggingCommand as Rt,DeleteObjectCommand as Et,NoSuchBucket as Ct}from"@aws-sdk/client-s3";
69
- import{getTagList as ht,Logger as O}from"@ez4/aws-common";import jt from"mime";var d="AWS:S3/Object",y="aws:s3.object";var uo=o(t=>t.type===y,"isBucketObjectState"),C=o((t,e)=>`${t}/${e}`,"getBucketO\
70
- bjectPath"),lo=o(t=>t.getDependencies(y).map(({result:r,parameters:n})=>({lastModified:r?.
71
- lastModified,objectKey:n.objectKey})),"getBucketObjectFiles");var T=new wt({}),N=o(async(t,e)=>{let{objectKey:r,filePath:n}=e;O.logCreate(d,C(
72
- t,r));let c=jt.getType(n);return await T.send(new vt({Bucket:t,Key:r,Body:Bt(n),
64
+ {bucketName:n,role:c}),{bucketName:n}},"createResource"),xt=o(async()=>{},"updat\
65
+ eResource"),Pt=o(async t=>{let e=t.result;e&&await ie(e.bucketName)},"deleteReso\
66
+ urce");var ue=o(()=>{Bt(g,pe())},"registerPolicyProvider");import{tryRegisterProvider as $t}from"@ez4/aws-common";import{stat as Tt}from"node:fs/promises";import{ReplaceResourceError as Nt}from"@ez4/aws-common";
67
+ import{deepCompare as Dt,deepEqual as zt}from"@ez4/utils";import{createReadStream as wt}from"node:fs";import{S3Client as vt,PutObjectCommand as Rt,
68
+ PutObjectTaggingCommand as Et,DeleteObjectCommand as Ct,NoSuchBucket as ht}from"@aws-sdk/client-s3";
69
+ import{getTagList as jt,Logger as O}from"@ez4/aws-common";import Ot from"mime";var d="AWS:S3/Object",y="aws:s3.object";var lo=o(t=>t.type===y,"isBucketObjectState"),C=o((t,e)=>`${t}/${e}`,"getBucketO\
70
+ bjectPath"),yo=o(t=>t.getDependencies(y).map(({result:r,parameters:n})=>({lastModified:r?.
71
+ lastModified,objectKey:n.objectKey})),"getBucketObjectFiles");var T=new vt({}),N=o(async(t,e)=>{let{objectKey:r,filePath:n}=e;O.logCreate(d,C(
72
+ t,r));let c=Ot.getType(n);return await T.send(new Rt({Bucket:t,Key:r,Body:wt(n),
73
73
  ...c&&{ContentType:c}})),{objectKey:r}},"putObject"),le=o(async(t,e,r)=>{O.logTag(
74
- d,C(t,e)),await T.send(new Rt({Bucket:t,Key:e,Tagging:{TagSet:ht({...r,ManagedBy:"\
74
+ d,C(t,e)),await T.send(new Et({Bucket:t,Key:e,Tagging:{TagSet:jt({...r,ManagedBy:"\
75
75
  EZ4"})}}))},"tagObject"),ye=o(async(t,e)=>{O.logDelete(d,C(t,e));try{return await T.
76
- send(new Et({Bucket:t,Key:e})),!0}catch(r){if(!(r instanceof Ct))throw r;return!1}},
77
- "deleteObject");var fe=o(()=>({equals:zt,create:ge,replace:At,preview:Ft,update:It,delete:Lt}),"\
78
- getObjectHandler"),zt=o((t,e)=>!!t.result&&t.result.lastModified===e.result?.lastModified,
79
- "equalsResource"),Ft=o(async(t,e)=>{let r=t.parameters,n=e.parameters,c=Nt({...r,
76
+ send(new Ct({Bucket:t,Key:e})),!0}catch(r){if(!(r instanceof ht))throw r;return!1}},
77
+ "deleteObject");var fe=o(()=>({equals:Ft,create:ge,replace:It,preview:At,update:Lt,delete:Mt}),"\
78
+ getObjectHandler"),Ft=o((t,e)=>!!t.result&&t.result.lastModified===e.result?.lastModified,
79
+ "equalsResource"),At=o(async(t,e)=>{let r=t.parameters,n=e.parameters,c=Dt({...r,
80
80
  dependencies:t.dependencies,lastModified:await D(r.filePath)},{...n,dependencies:e.
81
81
  dependencies,lastModified:t.result?.lastModified});if(c.counts)return{...c,name:r.
82
- objectKey}},"previewResource"),At=o(async(t,e,r)=>{if(e.result)throw new Tt(d,t.
82
+ objectKey}},"previewResource"),It=o(async(t,e,r)=>{if(e.result)throw new Nt(d,t.
83
83
  entryId,e.entryId);return ge(t,r)},"replaceResource"),ge=o(async(t,e)=>{let r=t.
84
84
  parameters,n=E(d,"bucket",e),c=await D(r.filePath),{objectKey:s}=await N(n,r);return await de(
85
- n,s,r.tags,t.parameters.tags),{lastModified:c,bucketName:n}},"createResource"),It=o(
85
+ n,s,r.tags,t.parameters.tags),{lastModified:c,bucketName:n}},"createResource"),Lt=o(
86
86
  async(t,e)=>{let{result:r,parameters:n}=t;if(!r)return;let{objectKey:c,tags:s}=n,
87
- a=Mt(r,n,e.parameters);return await de(r.bucketName,c,s,e.parameters.tags),a},"u\
88
- pdateResource"),Lt=o(async t=>{let{result:e,parameters:r}=t;e&&await ye(e.bucketName,
89
- r.objectKey)},"deleteResource"),D=o(async t=>{let{mtime:e}=await Ot(t);return e.
90
- getTime()},"getLastModifiedTime"),Mt=o(async(t,e,r)=>{let n=await D(e.filePath);
87
+ a=qt(r,n,e.parameters);return await de(r.bucketName,c,s,e.parameters.tags),a},"u\
88
+ pdateResource"),Mt=o(async t=>{let{result:e,parameters:r}=t;e&&await ye(e.bucketName,
89
+ r.objectKey)},"deleteResource"),D=o(async t=>{let{mtime:e}=await Tt(t);return e.
90
+ getTime()},"getLastModifiedTime"),qt=o(async(t,e,r)=>{let n=await D(e.filePath);
91
91
  if(n<=t.lastModified&&e.filePath===r.filePath)return t;let{bucketName:c}=t,{objectKey:s}=r;
92
92
  return await N(c,{...e,objectKey:s}),{lastModified:n,bucketName:c}},"checkObject\
93
- Updates"),de=o(async(t,e,r,n)=>{let c=r??{};!Dt(c,n??{})&&await le(t,e,c)},"chec\
94
- kTagUpdates");var Se=o(()=>{qt(y,fe())},"registerObjectProvider");import{isBucketService as I}from"@ez4/storage/library";import{attachEntry as Ht,linkEntryDependency as Kt}from"@ez4/stateful";import{createPermission as Ut}from"@ez4/aws-function";import{createPolicyDocument as $t}from"@ez4/aws-identity";var ke=o(t=>`arn:aws:s3:::${t}`,"buildBucketArn"),be=o(t=>$t([{resourceIds:[`arn\
93
+ Updates"),de=o(async(t,e,r,n)=>{let c=r??{};!zt(c,n??{})&&await le(t,e,c)},"chec\
94
+ kTagUpdates");var Se=o(()=>{$t(y,fe())},"registerObjectProvider");import{isBucketService as I}from"@ez4/storage/library";import{attachEntry as Kt,linkEntryDependency as Ut}from"@ez4/stateful";import{createPermission as Gt}from"@ez4/aws-function";import{createPolicyDocument as Ht}from"@ez4/aws-identity";var ke=o(t=>`arn:aws:s3:::${t}`,"buildBucketArn"),be=o(t=>Ht([{resourceIds:[`arn\
95
95
  :aws:s3:::${t}-*`,`arn:aws:s3:::${t}-*/*`],permissions:["s3:ListBucket","s3:PutO\
96
- bject","s3:GetObject","s3:DeleteObject"]}]),"getPolicyDocument");var xe=o((t,e,r)=>{let n=r.bucketName,c=oe(n),s=Ht(t,{type:l,entryId:c,dependencies:[],
97
- parameters:r});return e&&(Ut(t,s,e,{fromService:r.bucketName,getPermission:o(()=>({
98
- principal:"s3.amazonaws.com",sourceArn:ke(n)}),"getPermission")}),Kt(t,s.entryId,
99
- e.entryId)),s},"createBucket");import{getFunctionState as Xt,tryGetFunctionState as Yt}from"@ez4/aws-function";
100
- import{linkServiceContext as er}from"@ez4/project/library";import{isRoleState as Re}from"@ez4/aws-identity";
101
- import{createLogGroup as tr}from"@ez4/aws-logs";import{createFunction as Zt}from"@ez4/aws-function";import{hashObject as Jt}from"@ez4/utils";import{join as Gt}from"node:path";import{getDefinitionsObject as _t}from"@ez4/project/library";
102
- import{MappingServiceName as Vt}from"@ez4/aws-function";import{getFunctionBundle as Wt}from"@ez4/aws-common";var Pe=o(async(t,e)=>{let{handler:r,listener:n,context:c,debug:s}=t,a=_t(e);return Wt(
103
- Vt,{templateFile:Gt(import.meta.dirname,"../lib/event.ts"),define:a,filePrefix:"\
104
- s3",handler:r,listener:n,context:c,debug:s})},"bundleBucketEventFunction");var Be=o((t,e,r,n)=>{let{handler:c,variables:s,architecture:a}=n;return Zt(t,e,r,
96
+ bject","s3:GetObject","s3:DeleteObject"]}]),"getPolicyDocument");var xe=o((t,e,r)=>{let n=r.bucketName,c=oe(n),s=Kt(t,{type:l,entryId:c,dependencies:[],
97
+ parameters:r});return e&&(Gt(t,s,e,{fromService:r.bucketName,getPermission:o(()=>({
98
+ principal:"s3.amazonaws.com",sourceArn:ke(n)}),"getPermission")}),Ut(t,s.entryId,
99
+ e.entryId)),s},"createBucket");import{getFunctionState as Yt,tryGetFunctionState as er}from"@ez4/aws-function";
100
+ import{linkServiceContext as tr}from"@ez4/project/library";import{isRoleState as Re}from"@ez4/aws-identity";
101
+ import{createLogGroup as rr}from"@ez4/aws-logs";import{createFunction as Jt}from"@ez4/aws-function";import{hashObject as Qt}from"@ez4/utils";import{join as _t}from"node:path";import{getDefinitionsObject as Vt}from"@ez4/project/library";
102
+ import{MappingServiceName as Wt}from"@ez4/aws-function";import{getFunctionBundle as Zt}from"@ez4/aws-common";var Pe=o(async(t,e)=>{let{handler:r,listener:n,context:c,debug:s}=t,a=Vt(e);return Zt(
103
+ Wt,{templateFile:_t(import.meta.dirname,"../lib/event.ts"),define:a,filePrefix:"\
104
+ s3",handler:r,listener:n,context:c,debug:s})},"bundleBucketEventFunction");var Be=o((t,e,r,n)=>{let{handler:c,variables:s,architecture:a}=n;return Jt(t,e,r,
105
105
  {handlerName:"s3EntryPoint",sourceFile:c.sourceFile,functionName:n.functionName,
106
- description:n.description,architecture:n.architecture,runtime:n.runtime,timeout:n.
107
- timeout,memory:n.memory,debug:n.debug,tags:n.tags,getFunctionVariables:o(()=>s.reduce(
108
- (i,f)=>({...i,...f}),{}),"getFunctionVariables"),getFunctionFiles:o(()=>[c.sourceFile,
109
- c.dependencies],"getFunctionFiles"),getFunctionBundle:o(i=>Pe(n,[...i.getDependencies(),
110
- ...i.getConnections()]),"getFunctionBundle"),getFunctionHash:o(()=>Jt({architecture:a}),
111
- "getFunctionHash")})},"createBucketEventFunction");import{getServiceName as z}from"@ez4/project/library";import{getRandomName as Qt}from"@ez4/aws-common";
112
- import{toKebabCase as F}from"@ez4/utils";var we=o(async(t,e)=>{if(t.globalName)return z(t.globalName,e);let r=z(t,e),n=await Qt(
106
+ description:n.description,architecture:n.architecture,runtime:n.runtime,release:n.
107
+ release,timeout:n.timeout,memory:n.memory,debug:n.debug,tags:n.tags,getFunctionVariables:o(
108
+ ()=>s.reduce((i,f)=>({...i,...f}),{}),"getFunctionVariables"),getFunctionFiles:o(
109
+ ()=>[c.sourceFile,c.dependencies],"getFunctionFiles"),getFunctionBundle:o(i=>Pe(
110
+ n,[...i.getDependencies(),...i.getConnections()]),"getFunctionBundle"),getFunctionHash:o(
111
+ ()=>Qt({architecture:a}),"getFunctionHash")})},"createBucketEventFunction");import{getServiceName as z}from"@ez4/project/library";import{getRandomName as Xt}from"@ez4/aws-common";
112
+ import{toKebabCase as F}from"@ez4/utils";var we=o(async(t,e)=>{if(t.globalName)return z(t.globalName,e);let r=z(t,e),n=await Xt(
113
113
  16);return`${r.substring(0,46)}-${n}`},"getBucketName"),A=o((t,e)=>`${F(t.name)}\
114
114
  -${F(e)}`,"getInternalName"),ve=o((t,e,r)=>`${z(t,r)}-${F(e)}`,"getFunctionName");var P=class extends Error{static{o(this,"RoleMissingError")}constructor(){super(
115
115
  "Execution role for S3 is missing.")}};import{FunctionDefaults as B}from"@ez4/aws-function";var S;(s=>(s.LogRetention=B.
116
116
  LogRetention,s.Architecture=B.Architecture,s.Runtime=B.Runtime,s.Timeout=B.Timeout,
117
117
  s.Memory=B.Memory))(S||={});var Ee=o((t,e,r,n)=>{if(!e.events)return;if(!n.role||!Re(n.role))throw new P;let{
118
- defaults:c}=r,{handler:s,listener:a,variables:i,runtime:f=c?.runtime??S.Runtime,
119
- architecture:b=c?.architecture??S.Architecture,logRetention:h=c?.logRetention??S.
120
- LogRetention,memory:w=c?.memory??S.Memory,timeout:Ae=S.Timeout}=e.events,L=A(e,s.
121
- name),x=Yt(n,L,r);if(x)return x;let M=ve(e,s.name,r),Ie=n.getDependencyFiles(s.file),
122
- Le=tr(t,{retention:h,groupName:M,tags:r.tags});return x=Be(t,n.role,Le,{functionName:M,
123
- description:s.description,context:e.context,debug:r.debug,tags:r.tags,variables:[
124
- r.variables,e.variables,i],architecture:b,runtime:f,timeout:Ae,memory:w,handler:{
125
- sourceFile:s.file,functionName:s.name,module:s.module,dependencies:Ie},listener:a&&
126
- {functionName:a.name,sourceFile:a.file,module:a.module}}),n.setServiceState(x,L,
127
- r),x},"prepareEvents"),Ce=o((t,e,r,n)=>{if(!e.events)return;if(!n.role||!Re(n.role))
128
- throw new P;let{handler:c}=e.events,s=A(e,c.name),a=Xt(n,s,r);er(t,a.entryId,e.context)},
129
- "connectEvents");import{readdir as rr}from"node:fs/promises";import{join as he,relative as je}from"node:path";
130
- import{createBucketObject as or}from"@ez4/aws-bucket";var Oe=o(async(t,e,r)=>{let n=process.cwd(),c=he(n,r),s=await rr(c,{withFileTypes:!0,
118
+ defaults:c,release:s}=r,{handler:a,listener:i,variables:f,runtime:b=c?.runtime??
119
+ S.Runtime,architecture:h=c?.architecture??S.Architecture,logRetention:w=c?.logRetention??
120
+ S.LogRetention,memory:Ae=c?.memory??S.Memory,timeout:Ie=S.Timeout}=e.events,L=A(
121
+ e,a.name),x=er(n,L,r);if(x)return x;let M=ve(e,a.name,r),Le=n.getDependencyFiles(
122
+ a.file),Me=rr(t,{retention:w,groupName:M,tags:r.tags});return x=Be(t,n.role,Me,{
123
+ functionName:M,description:a.description,context:e.context,debug:r.debug,tags:r.
124
+ tags,variables:[r.variables,e.variables,f],architecture:h,runtime:b,release:s,timeout:Ie,
125
+ memory:Ae,handler:{sourceFile:a.file,functionName:a.name,module:a.module,dependencies:Le},
126
+ listener:i&&{functionName:i.name,sourceFile:i.file,module:i.module}}),n.setServiceState(
127
+ x,L,r),x},"prepareEvents"),Ce=o((t,e,r,n)=>{if(!e.events)return;if(!n.role||!Re(
128
+ n.role))throw new P;let{handler:c}=e.events,s=A(e,c.name),a=Yt(n,s,r);tr(t,a.entryId,
129
+ e.context)},"connectEvents");import{readdir as or}from"node:fs/promises";import{join as he,relative as je}from"node:path";
130
+ import{createBucketObject as nr}from"@ez4/aws-bucket";var Oe=o(async(t,e,r)=>{let n=process.cwd(),c=he(n,r),s=await or(c,{withFileTypes:!0,
131
131
  recursive:!0});for(let a of s){if(!a.isFile())continue;let i=he(a.parentPath,a.name);
132
- or(t,e,{objectKey:je(c,i),filePath:je(n,i)})}},"prepareLocalContent");var Te=o((t,e,r)=>{let n=ne(t,e.name,r),c=n.entryId;return{module:"Client",from:"\
132
+ nr(t,e,{objectKey:je(c,i),filePath:je(n,i)})}},"prepareLocalContent");var Te=o((t,e,r)=>{let n=ne(t,e.name,r),c=n.entryId;return{module:"Client",from:"\
133
133
  @ez4/aws-bucket/client",constructor:`@{EZ4_MODULE_IMPORT}.make('${n.parameters.bucketName}\
134
134
  ')`,connectionIds:[c],dependencyIds:[c]}},"prepareLinkedClient");var Ne=o(t=>{let{service:e,options:r,context:n}=t;return I(e)?Te(n,e,r):null},"p\
135
135
  repareLinkedServices"),De=o(async t=>{let{state:e,service:r,options:n,context:c}=t;
@@ -137,18 +137,18 @@ if(!I(r))return!1;let{localPath:s,autoExpireDays:a,events:i,cors:f}=r,b=await we
137
137
  r,n),h=Ee(e,r,n,c),w=xe(e,h,{eventsPath:i?.path,tags:n.tags,bucketName:b,autoExpireDays:a,
138
138
  localPath:s,cors:f});return c.setServiceState(w,r,n),s&&await Oe(e,w,s),!0},"pre\
139
139
  pareBucketServices"),ze=o(t=>{let{state:e,service:r,options:n,context:c}=t;I(r)&&
140
- Ce(e,r,n,c)},"connectBucketServices");import{ServiceType as nr}from"@ez4/storage/library";import{createPolicy as cr,tryGetPolicy as sr}from"@ez4/aws-identity";
141
- import{getServiceName as ar}from"@ez4/project/library";var Fe=o(t=>{let{state:e,serviceType:r,options:n}=t;if(r!==nr)return null;let c=ar(
142
- "",n),s=`${c}-bucket-policy`;return sr(e,s)??cr(e,{tags:n.tags,policyDocument:be(
143
- c),policyName:s})},"prepareExecutionPolicy");var rc=o(()=>{ir(),pr(),mr(),ur(),lr("@ez4/aws-bucket",{"deploy:prepareExecution\
140
+ Ce(e,r,n,c)},"connectBucketServices");import{ServiceType as cr}from"@ez4/storage/library";import{createPolicy as sr,tryGetPolicy as ar}from"@ez4/aws-identity";
141
+ import{getServiceName as ir}from"@ez4/project/library";var Fe=o(t=>{let{state:e,serviceType:r,options:n}=t;if(r!==cr)return null;let c=ir(
142
+ "",n),s=`${c}-bucket-policy`;return ar(e,s)??sr(e,{tags:n.tags,policyDocument:be(
143
+ c),policyName:s})},"prepareExecutionPolicy");var oc=o(()=>{pr(),mr(),ur(),lr(),yr("@ez4/aws-bucket",{"deploy:prepareExecution\
144
144
  Policy":Fe,"deploy:prepareLinkedService":Ne,"deploy:prepareResources":De,"deploy\
145
- :connectResources":ze}),re(),ue(),Se()},"registerTriggers");import{getRegion as yr}from"@ez4/aws-identity";var sc=o(t=>/(.+)\.s3\.(.+)\.amazonaws\.com/i.test(t),"isBucketDomain"),ac=o(async t=>{
146
- let e=await yr();return`${t}.s3.${e}.amazonaws.com`},"getBucketDomain");import{attachEntry as fr}from"@ez4/stateful";import{hashData as gr}from"@ez4/utils";var yc=o((t,e,r,n)=>{let c=gr(g,e.entryId,r.entryId);return fr(t,{type:g,entryId:c,
147
- dependencies:[e.entryId,r.entryId],parameters:n})},"createBucketPolicy");var Sc=o(t=>t.type===g,"isBucketPolicyState");import{attachEntry as dr}from"@ez4/stateful";import{hashData as Sr}from"@ez4/utils";var wc=o((t,e,r)=>{let n=r.objectKey,c=Sr(y,e.entryId,n);return dr(t,{type:y,entryId:c,
145
+ :connectResources":ze}),re(),ue(),Se()},"registerTriggers");import{getRegion as fr}from"@ez4/aws-identity";var ac=o(t=>/(.+)\.s3\.(.+)\.amazonaws\.com/i.test(t),"isBucketDomain"),ic=o(async t=>{
146
+ let e=await fr();return`${t}.s3.${e}.amazonaws.com`},"getBucketDomain");import{attachEntry as gr}from"@ez4/stateful";import{hashData as dr}from"@ez4/utils";var fc=o((t,e,r,n)=>{let c=dr(g,e.entryId,r.entryId);return gr(t,{type:g,entryId:c,
147
+ dependencies:[e.entryId,r.entryId],parameters:n})},"createBucketPolicy");var kc=o(t=>t.type===g,"isBucketPolicyState");import{attachEntry as Sr}from"@ez4/stateful";import{hashData as kr}from"@ez4/utils";var vc=o((t,e,r)=>{let n=r.objectKey,c=kr(y,e.entryId,n);return Sr(t,{type:y,entryId:c,
148
148
  dependencies:[e.entryId],parameters:r})},"createBucketObject");export{p as BucketServiceName,l as BucketServiceType,d as ObjectServiceName,y as ObjectServiceType,
149
149
  k as PolicyServiceName,g as PolicyServiceType,ke as buildBucketArn,xe as createBucket,
150
- Be as createBucketEventFunction,wc as createBucketObject,yc as createBucketPolicy,
151
- oe as createBucketStateId,ac as getBucketDomain,E as getBucketName,lo as getBucketObjectFiles,
152
- C as getBucketObjectPath,ne as getBucketState,be as getPolicyDocument,sc as isBucketDomain,
153
- uo as isBucketObjectState,Sc as isBucketPolicyState,pt as isBucketState,rc as registerTriggers};
150
+ Be as createBucketEventFunction,vc as createBucketObject,fc as createBucketPolicy,
151
+ oe as createBucketStateId,ic as getBucketDomain,E as getBucketName,yo as getBucketObjectFiles,
152
+ C as getBucketObjectPath,ne as getBucketState,be as getPolicyDocument,ac as isBucketDomain,
153
+ lo as isBucketObjectState,kc as isBucketPolicyState,mt as isBucketState,oc as registerTriggers};
154
154
  //# sourceMappingURL=main.mjs.map
@@ -2,7 +2,7 @@ export declare namespace Defaults {
2
2
  /**
3
3
  * Default log retention in days.
4
4
  */
5
- const LogRetention = 90;
5
+ const LogRetention = 15;
6
6
  /**
7
7
  * Default function architecture.
8
8
  */
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ez4/aws-bucket",
3
3
  "description": "EZ4: Self-managed AWS S3 bucket provider",
4
- "version": "0.38.0",
4
+ "version": "0.39.0",
5
5
  "author": "Silas B.",
6
6
  "license": "MIT",
7
7
  "type": "module",
@@ -53,15 +53,15 @@
53
53
  "dependencies": {
54
54
  "@aws-sdk/client-s3": "^3.958.0",
55
55
  "@aws-sdk/s3-request-presigner": "^3.958.0",
56
- "@ez4/aws-common": "^0.38.0",
57
- "@ez4/aws-function": "^0.38.0",
58
- "@ez4/aws-identity": "^0.38.0",
59
- "@ez4/aws-logs": "^0.38.0",
60
- "@ez4/common": "^0.38.0",
61
- "@ez4/project": "^0.38.0",
62
- "@ez4/stateful": "^0.38.0",
63
- "@ez4/storage": "^0.38.0",
64
- "@ez4/utils": "^0.38.0",
56
+ "@ez4/aws-common": "^0.39.0",
57
+ "@ez4/aws-function": "^0.39.0",
58
+ "@ez4/aws-identity": "^0.39.0",
59
+ "@ez4/aws-logs": "^0.39.0",
60
+ "@ez4/common": "^0.39.0",
61
+ "@ez4/project": "^0.39.0",
62
+ "@ez4/stateful": "^0.39.0",
63
+ "@ez4/storage": "^0.39.0",
64
+ "@ez4/utils": "^0.39.0",
65
65
  "mime": "^3.0.0"
66
66
  }
67
67
  }