@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.
- package/dist/main.cjs +48 -48
- package/dist/main.mjs +97 -97
- package/package.json +10 -10
package/dist/main.cjs
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
"use strict";var
|
|
2
|
-
typeof e=="object"||typeof e=="function")for(let c of
|
|
3
|
-
j(t,c,{get:()=>e[c],enumerable:!(o=
|
|
4
|
-
enumerable:!0}):r,t))
|
|
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:()=>
|
|
7
|
-
createBucketStateId:()=>W,getBucketDomain:()=>
|
|
8
|
-
getBucketObjectPath:()=>T,getBucketState:()=>Z,getPolicyDocument:()=>Y,isBucketDomain:()=>
|
|
9
|
-
isBucketObjectState:()=>
|
|
10
|
-
module.exports
|
|
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
|
|
36
|
-
getBucketHandler")
|
|
37
|
-
"equalsResource"),
|
|
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"),
|
|
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"),
|
|
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
|
-
|
|
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:
|
|
70
|
-
getPolicyHandler"),
|
|
71
|
-
"equalsResource"),
|
|
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"),
|
|
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"),
|
|
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=
|
|
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
|
|
88
|
-
bjectPath"),
|
|
89
|
-
lastModified,objectKey:o.objectKey})),"getBucketObjectFiles");var $e=n(()=>({equals:
|
|
90
|
-
getObjectHandler"),
|
|
91
|
-
"equalsResource"),
|
|
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"),
|
|
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
|
-
|
|
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=
|
|
102
|
-
tags),m})},"updateResource"),
|
|
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"),
|
|
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,
|
|
141
|
-
listener:F,handler:P,files:
|
|
142
|
-
o,ne,r);if(h)return h;let ce=at(e,P.name,r),
|
|
143
|
-
t,{retention:m,groupName:ce,tags:r.tags});return h=
|
|
144
|
-
description:P.description,context:e.context,
|
|
145
|
-
r.variables,e.variables,
|
|
146
|
-
memory:O,files:
|
|
147
|
-
module,dependencies:
|
|
148
|
-
module}}),o.setServiceState(ne,r,h),h},"
|
|
149
|
-
return;if(!o.role||!(0,oe.isRoleState)(o.role))
|
|
150
|
-
a=re(e,c.name),i=(0,$.getFunctionState)(o,a,
|
|
151
|
-
e.context),i.parameters.vpc||(i.parameters.
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
2
|
-
import{registerTriggers as
|
|
3
|
-
import{tryCreateTrigger as
|
|
4
|
-
import{tryGetFunctionArn as J}from"@ez4/aws-function";import{deepCompare as
|
|
5
|
-
CreateBucketCommand as
|
|
6
|
-
PutBucketCorsCommand as
|
|
7
|
-
DeleteBucketLifecycleCommand as
|
|
8
|
-
NoSuchBucket as R}from"@aws-sdk/client-s3";import{getAwsClientOptions as
|
|
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
|
|
12
|
-
r.update("Deleting bucket");try{return await p().send(new
|
|
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
|
|
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
|
|
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
|
|
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
|
|
22
|
-
Rules:[{ID:"ID0",Status:
|
|
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
|
|
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
|
|
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:
|
|
30
|
-
tBucketHandler"),
|
|
31
|
-
"equalsResource"),
|
|
32
|
-
o={...e.parameters,dependencies:e.dependencies},c=
|
|
33
|
-
name:t.bucketName}},"previewResource"),
|
|
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"),
|
|
39
|
-
throw new
|
|
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"),
|
|
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(()=>{
|
|
52
|
-
deepCompare as
|
|
53
|
-
toKebabCase as
|
|
54
|
-
`Bucket service ${e} wasn't found.`)}};var ne=n(r=>
|
|
55
|
-
ce=n((r,e,t)=>{let o=r.getServiceState(e,t);if(!
|
|
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
|
|
58
|
-
role:o}=e;return await ae.send(new
|
|
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
|
|
61
|
-
eletePolicy");var B="AWS:S3/Policy",d="aws:s3.policy";var ue=n(()=>({equals:
|
|
62
|
-
getPolicyHandler"),
|
|
63
|
-
"equalsResource"),
|
|
64
|
-
o={...e.parameters,dependencies:e.dependencies},c=
|
|
65
|
-
if(c.counts)return{...c,name:t.fromService}},"previewResource"),
|
|
66
|
-
if(e.result)throw new
|
|
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"),
|
|
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(()=>{
|
|
72
|
-
ReplaceResourceError as
|
|
73
|
-
DeleteObjectCommand as
|
|
74
|
-
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
|
|
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
|
|
79
|
-
"deleteObject");var S="AWS:S3/Object",l="aws:s3.object";var
|
|
80
|
-
bjectPath"),
|
|
81
|
-
lastModified,objectKey:o.objectKey})),"getBucketObjectFiles");var ge=n(()=>({equals:
|
|
82
|
-
getObjectHandler"),
|
|
83
|
-
"equalsResource"),
|
|
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"),
|
|
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"),
|
|
91
|
-
let{result:t,parameters:o}=r,{objectKey:c,tags:a}=o;if(!t)throw new
|
|
92
|
-
t.bucketName,c);return T.logExecution(S,i,"updates",async s=>{let u
|
|
93
|
-
return await Se(s,t.bucketName,c,a,e.parameters.tags),u})},"updateResource")
|
|
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
|
|
97
|
-
tLastModifiedTime")
|
|
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??{};!
|
|
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=
|
|
103
|
-
parameters:t});return e&&(
|
|
104
|
-
principal:"s3.amazonaws.com",sourceArn:be(o)}),"getPermission")}),
|
|
105
|
-
e.entryId)),a},"createBucket");import{getFunctionState as
|
|
106
|
-
import{isLinkedContextVpcRequired as
|
|
107
|
-
import{isRoleState as Re}from"@ez4/aws-identity";import{createLogGroup as
|
|
108
|
-
import{LogLevel as
|
|
109
|
-
import{MappingServiceName as
|
|
110
|
-
|
|
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
|
|
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?
|
|
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(()=>
|
|
119
|
-
h")})},"createBucketEventFunction");import{getServiceName as z}from"@ez4/project/library";import{getRandomName as
|
|
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
|
|
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,
|
|
129
|
-
handler:g,files:
|
|
130
|
-
e,g.name,t),
|
|
131
|
-
tags});return P=we(r,o.role,
|
|
132
|
-
context
|
|
133
|
-
logLevel:f,runtime:i,release:a,timeout:v,memory:x,files:
|
|
134
|
-
file,functionName:g.name,module:g.module,dependencies:
|
|
135
|
-
name,sourceFile:E.file,module:E.module}}),o.setServiceState(M,t,
|
|
136
|
-
|
|
137
|
-
let{handler:c}=e.events,a=A(e,c.name),i=
|
|
138
|
-
vpc||(i.parameters.vpc=
|
|
139
|
-
import{createBucketObject as
|
|
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
|
-
|
|
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
|
|
150
|
-
import{getServiceName as
|
|
151
|
-
"",o),a=`${c}-bucket-policy`;return
|
|
152
|
-
c),policyName:a})},"prepareExecutionPolicy");var
|
|
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
|
|
155
|
-
let e=await
|
|
156
|
-
dependencies:[e.entryId,t.entryId],parameters:o})},"createBucketPolicy");var
|
|
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,
|
|
160
|
-
ne as createBucketStateId,
|
|
161
|
-
h as getBucketObjectPath,ce as getBucketState,xe as getPolicyDocument,
|
|
162
|
-
|
|
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.
|
|
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.
|
|
57
|
-
"@ez4/aws-function": "^0.
|
|
58
|
-
"@ez4/aws-identity": "^0.
|
|
59
|
-
"@ez4/aws-logs": "^0.
|
|
60
|
-
"@ez4/common": "^0.
|
|
61
|
-
"@ez4/project": "^0.
|
|
62
|
-
"@ez4/stateful": "^0.
|
|
63
|
-
"@ez4/storage": "^0.
|
|
64
|
-
"@ez4/utils": "^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
|
}
|