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