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