@ez4/aws-bucket 0.42.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 +163 -161
- package/dist/main.mjs +156 -153
- package/dist/triggers/defaults.d.ts +4 -0
- package/package.json +12 -12
package/dist/main.cjs
CHANGED
|
@@ -1,176 +1,178 @@
|
|
|
1
|
-
"use strict";var
|
|
2
|
-
typeof e=="object"||typeof e=="function")for(let c of
|
|
3
|
-
|
|
4
|
-
enumerable:!0}):r,t))
|
|
5
|
-
ObjectServiceType:()=>
|
|
6
|
-
createBucket:()=>
|
|
7
|
-
createBucketStateId:()=>
|
|
8
|
-
getBucketObjectPath:()=>
|
|
9
|
-
isBucketObjectState:()=>
|
|
10
|
-
module.exports
|
|
11
|
-
|
|
12
|
-
{Bucket:e,MaxKeys:1}))).Contents?.length}catch(r){if(!(r instanceof
|
|
13
|
-
throw r;return 0}},"isBucketEmpty"),
|
|
14
|
-
let{bucketName:r}=e;return await u().send(new
|
|
15
|
-
{bucketName:r}},"createBucket"),
|
|
16
|
-
return await u().send(new
|
|
17
|
-
|
|
18
|
-
"Tag bucket"),await u().send(new
|
|
19
|
-
{...r,ManagedBy:"EZ4"})}}))},"tagBucket"),
|
|
20
|
-
bucket CORS"),await u().send(new
|
|
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
|
+
ObjectServiceType:()=>y,PolicyServiceName:()=>R,PolicyServiceType:()=>g,buildBucketArn:()=>X,
|
|
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
|
+
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
|
+
{Bucket:e,MaxKeys:1}))).Contents?.length}catch(r){if(!(r instanceof s.NoSuchBucket))
|
|
13
|
+
throw r;return 0}},"isBucketEmpty"),me=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"),le=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"),ye=n(async(t,e,r)=>{t.update(
|
|
18
|
+
"Tag bucket"),await u().send(new s.PutBucketTaggingCommand({Bucket:e,Tagging:{TagSet:(0,pe.getTagList)(
|
|
19
|
+
{...r,ManagedBy:"EZ4"})}}))},"tagBucket"),fe=n(async(t,e,r)=>{t.update("Updating\
|
|
20
|
+
bucket CORS"),await u().send(new s.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"),
|
|
24
|
-
return await u().send(new
|
|
25
|
-
|
|
26
|
-
t.update("Creating bucket lifecycle"),await u().send(new
|
|
27
|
-
{Bucket:e,LifecycleConfiguration:{Rules:[{ID:"ID0",Status:
|
|
28
|
-
Filter:{Prefix:"*"},Expiration:{Days:r}}]}}))},"createLifecycle"),
|
|
29
|
-
t.update("Deleting bucket lifecycle");try{return await u().send(new
|
|
30
|
-
{Bucket:e})),!0}catch(r){if(!(r instanceof
|
|
31
|
-
eleteLifecycle"),
|
|
32
|
-
functionArn:o,eventsPath:c,eventsType:a}=r;await u().send(new
|
|
23
|
+
"updateCorsConfiguration"),ge=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"),de=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"),Se=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"),ke=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(
|
|
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
|
|
36
|
-
getBucketHandler"),
|
|
37
|
-
"equalsResource"),
|
|
38
|
-
o={...e.parameters,dependencies:e.dependencies},c=(0,
|
|
39
|
-
return{...c,name:r.bucketName}},"previewResource"),
|
|
40
|
-
throw new f.ReplaceResourceError(
|
|
41
|
-
Resource"),
|
|
42
|
-
logExecution(
|
|
43
|
-
await
|
|
44
|
-
eventsPath:r.eventsPath,functionArn:o};return await
|
|
45
|
-
"createResource")
|
|
46
|
-
throw new f.CorruptedResourceError(
|
|
47
|
-
a,"updates",async i=>{let
|
|
48
|
-
i,a,c,e.parameters),await
|
|
49
|
-
tags);let
|
|
50
|
-
functionArn:m};return await
|
|
51
|
-
|
|
52
|
-
logExecution(
|
|
53
|
-
"deleteResource"),
|
|
54
|
-
cors,o.cors))){if(r.cors)return
|
|
55
|
-
kCorsUpdates"),
|
|
56
|
-
autoExpireDays)return
|
|
57
|
-
e)}},"checkLifecycleUpdates"),
|
|
58
|
-
c,o??{})&&await
|
|
59
|
-
r,o)&&await
|
|
60
|
-
"checkEventUpdates");var
|
|
61
|
-
`Bucket service ${e} wasn't found.`)}};var
|
|
62
|
-
type===
|
|
63
|
-
e);return o},"getBucketState"),
|
|
64
|
-
if(!o?.bucketName)throw new
|
|
65
|
-
bucketName},"getBucketName");var
|
|
66
|
-
role:o}=e;return await
|
|
67
|
-
stringify(o)})),{bucketName:r}},"createPolicy"),
|
|
68
|
-
ting bucket policy");try{return await
|
|
69
|
-
!0}catch(r){if(!(r instanceof
|
|
70
|
-
getPolicyHandler"),
|
|
71
|
-
"equalsResource"),
|
|
72
|
-
o={...e.parameters,dependencies:e.dependencies},c=(0,
|
|
73
|
-
getRole:!0}});if(c.counts)return{...c,name:r.fromService}},"previewResource"),
|
|
74
|
-
async(t,e,r)=>{if(e.result)throw new
|
|
75
|
-
return
|
|
76
|
-
e);return
|
|
77
|
-
getRole(e);return await
|
|
78
|
-
ource"),
|
|
79
|
-
let{bucketName:r}=e;await
|
|
80
|
-
r))},"deleteResource");var
|
|
81
|
-
a=
|
|
82
|
-
Body:(0,
|
|
83
|
-
ct"),
|
|
84
|
-
{Bucket:e,Key:r,Tagging:{TagSet:(0,
|
|
85
|
-
updateTags"),
|
|
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
|
+
o={...e.parameters,dependencies:e.dependencies},c=(0,v.deepCompare)(r,o);if(c.counts)
|
|
39
|
+
return{...c,name:r.bucketName}},"previewResource"),_t=n(async(t,e,r)=>{if(e.result)
|
|
40
|
+
throw new f.ReplaceResourceError(B,t.entryId,e.entryId);return xe(t,r)},"replace\
|
|
41
|
+
Resource"),xe=n((t,e)=>{let r=t.parameters,o=(0,V.tryGetFunctionArn)(e);return f.OperationLogger.
|
|
42
|
+
logExecution(B,r.bucketName,"creation",async c=>{let{bucketName:a}=await me(c,r);
|
|
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
|
+
eventsPath:r.eventsPath,functionArn:o};return await ve(c,a,i,{}),{bucketName:a,functionArn:o}})},
|
|
45
|
+
"createResource"),Vt=n((t,e,r)=>{let{result:o,parameters:c}=t,{bucketName:a}=c;if(!o)
|
|
46
|
+
throw new f.CorruptedResourceError(B,a);return f.OperationLogger.logExecution(B,
|
|
47
|
+
a,"updates",async i=>{let p=(0,V.tryGetFunctionArn)(r),m=e.result?.functionArn;await Pe(
|
|
48
|
+
i,a,c,e.parameters),await Be(i,a,c,e.parameters),await we(i,a,c.tags,e.parameters.
|
|
49
|
+
tags);let x={eventsPath:c.eventsPath,functionArn:p},O={eventsPath:e.parameters.eventsPath,
|
|
50
|
+
functionArn:m};return await ve(i,a,x,O),{...o,functionArn:p}})},"updateResource"),
|
|
51
|
+
Wt=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 ue(o,e.bucketName)&&await le(o,e.bucketName)})},
|
|
53
|
+
"deleteResource"),Pe=n(async(t,e,r,o)=>{if(!(r.cors&&o?.cors&&(0,v.deepEqual)(r.
|
|
54
|
+
cors,o.cors))){if(r.cors)return fe(t,e,r.cors);if(o?.cors)return ge(t,e)}},"chec\
|
|
55
|
+
kCorsUpdates"),Be=n(async(t,e,r,o)=>{if(r.autoExpireDays!==o?.autoExpireDays){if(r.
|
|
56
|
+
autoExpireDays)return de(t,e,r.autoExpireDays);if(o?.autoExpireDays)return Se(t,
|
|
57
|
+
e)}},"checkLifecycleUpdates"),we=n(async(t,e,r,o)=>{let c=r??{};!(0,v.deepEqual)(
|
|
58
|
+
c,o??{})&&await ye(t,e,c)},"checkTagUpdates"),ve=n(async(t,e,r,o)=>{!(0,v.deepEqual)(
|
|
59
|
+
r,o)&&await ke(t,e,{eventsType:["s3:ObjectCreated:*","s3:ObjectRemoved:*"],...r})},
|
|
60
|
+
"checkEventUpdates");var Re=n(()=>{(0,Ee.tryRegisterProvider)(l,be())},"registerBucketProvider");var ze=require("@ez4/aws-common");var N=require("@ez4/aws-common"),Ne=require("@ez4/utils");var Ce=require("@ez4/aws-common"),I=require("@ez4/utils");var A=class extends Error{static{n(this,"BucketNotFoundError")}constructor(e){super(
|
|
61
|
+
`Bucket service ${e} wasn't found.`)}};var W=n(t=>(0,I.hashData)(l,(0,I.toKebabCase)(t)),"createBucketStateId"),Oe=n(t=>t.
|
|
62
|
+
type===l,"isBucketState"),Z=n((t,e,r)=>{let o=t.getServiceState(e,r);if(!Oe(o))throw new A(
|
|
63
|
+
e);return o},"getBucketState"),L=n((t,e,r)=>{let o=r.getDependencies(l)[0]?.result;
|
|
64
|
+
if(!o?.bucketName)throw new Ce.IncompleteResourceError(t,e,"bucketName");return o.
|
|
65
|
+
bucketName},"getBucketName");var E=require("@aws-sdk/client-s3");var he=u(),je=n(async(t,e)=>{t.update("Creating bucket policy");let{bucketName:r,
|
|
66
|
+
role:o}=e;return await he.send(new E.PutBucketPolicyCommand({Bucket:r,Policy:JSON.
|
|
67
|
+
stringify(o)})),{bucketName:r}},"createPolicy"),Le=n(async(t,e)=>{t.update("Dele\
|
|
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: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
|
+
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"),Qt=n(
|
|
74
|
+
async(t,e,r)=>{if(e.result)throw new N.ReplaceResourceError(R,t.entryId,e.entryId);
|
|
75
|
+
return De(t,r)},"replaceResource"),De=n((t,e)=>{let r=t.parameters,o=L(R,"policy",
|
|
76
|
+
e);return N.OperationLogger.logExecution(R,o,"creation",async c=>{let a=await r.
|
|
77
|
+
getRole(e);return await je(c,{bucketName:o,role:a}),{bucketName:o}})},"createRes\
|
|
78
|
+
ource"),Xt=n(async()=>{},"updateResource"),Yt=n(async t=>{let e=t.result;if(!e)return;
|
|
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=Ht(require("mime"),1);var J=n(async(t,e,r)=>{t.update("Creating object");let{objectKey:o,filePath:c}=r,
|
|
81
|
+
a=Me.default.getType(c);return await u().send(new d.PutObjectCommand({Bucket:e,Key:o,
|
|
82
|
+
Body:(0,Ae.createReadStream)(c),...a&&{ContentType:a}})),{objectKey:o}},"putObje\
|
|
83
|
+
ct"),qe=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,Ie.getTagList)({...o,ManagedBy:"EZ4"})}}))},"\
|
|
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",
|
|
88
|
-
bjectPath"),
|
|
89
|
-
lastModified,objectKey:o.objectKey})),"getBucketObjectFiles");var
|
|
90
|
-
getObjectHandler"),
|
|
91
|
-
"equalsResource"),
|
|
92
|
-
{...r,dependencies:t.dependencies,lastModified:await
|
|
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
|
+
{...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"),
|
|
95
|
-
S,t.entryId,e.entryId);return
|
|
96
|
-
o=
|
|
97
|
-
creation",async a=>{let i=await
|
|
98
|
-
a,o,
|
|
99
|
-
|
|
100
|
-
S,c);let i=
|
|
101
|
-
async
|
|
102
|
-
tags),m})},"updateResource"),
|
|
103
|
-
let o=
|
|
104
|
-
tion",async c=>{await
|
|
105
|
-
let{mtime:e}=await(0,
|
|
106
|
-
async(t,e,r,o)=>{let c=await
|
|
107
|
-
filePath)return e;let{bucketName:a}=e,{objectKey:i}=o;return await
|
|
108
|
-
{lastModified:c,bucketName:a}},"checkObjectUpdates")
|
|
109
|
-
{};!(0,
|
|
94
|
+
objectKey}},"previewResource"),nr=n(async(t,e,r)=>{if(e.result)throw new k.ReplaceResourceError(
|
|
95
|
+
S,t.entryId,e.entryId);return Ue(t,r)},"replaceResource"),Ue=n((t,e)=>{let r=t.parameters,
|
|
96
|
+
o=L(S,"bucket",e),c=T(o,r.objectKey);return k.OperationLogger.logExecution(S,c,"\
|
|
97
|
+
creation",async a=>{let i=await Q(r.filePath),{objectKey:p}=await J(a,o,r);return await Ge(
|
|
98
|
+
a,o,p,r.tags,t.parameters.tags),{lastModified:i,bucketName:o}})},"createResource"),
|
|
99
|
+
cr=n((t,e)=>{let{result:r,parameters:o}=t,{objectKey:c,tags:a}=o;if(!r)throw new k.CorruptedResourceError(
|
|
100
|
+
S,c);let i=T(r.bucketName,c);return k.OperationLogger.logExecution(S,i,"updates",
|
|
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
|
+
let o=T(e.bucketName,r.objectKey);await k.OperationLogger.logExecution(S,o,"dele\
|
|
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"),ir=n(
|
|
106
|
+
async(t,e,r,o)=>{let c=await Q(r.filePath);if(c<=e.lastModified&&r.filePath===o.
|
|
107
|
+
filePath)return e;let{bucketName:a}=e,{objectKey:i}=o;return await J(t,a,{...r,objectKey:i}),
|
|
108
|
+
{lastModified:c,bucketName:a}},"checkObjectUpdates"),Ge=n(async(t,e,r,o,c)=>{let a=o??
|
|
109
|
+
{};!(0,M.deepEqual)(a,c??{})&&await qe(t,e,r,a)},"checkTagUpdates");var Ve=n(()=>{(0,_e.tryRegisterProvider)(y,$e())},"registerObjectProvider");var G=require("@ez4/storage/library");var q=require("@ez4/stateful"),Ze=require("@ez4/aws-function");var We=require("@ez4/aws-identity");var X=n(t=>`arn:aws:s3:::${t}`,"buildBucketArn"),Y=n(t=>(0,We.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
|
|
113
|
-
dependencies:[],parameters:r});return e&&((0,
|
|
114
|
-
bucketName,getPermission:n(()=>({principal:"s3.amazonaws.com",sourceArn:
|
|
115
|
-
getPermission")}),(0,
|
|
116
|
-
cket");var
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
e);return(0,
|
|
112
|
+
getPolicyDocument");var ee=n((t,e,r)=>{let o=r.bucketName,c=W(o),a=(0,q.attachEntry)(t,{type:l,entryId:c,
|
|
113
|
+
dependencies:[],parameters:r});return e&&((0,Ze.createPermission)(t,a,e,{fromService:r.
|
|
114
|
+
bucketName,getPermission:n(()=>({principal:"s3.amazonaws.com",sourceArn:X(o)}),"\
|
|
115
|
+
getPermission")}),(0,q.linkEntryDependency)(t,a.entryId,e.entryId)),a},"createBu\
|
|
116
|
+
cket");var $=require("@ez4/aws-function"),U=require("@ez4/project/library"),oe=require("@ez4/aws-identity"),
|
|
117
|
+
it=require("@ez4/aws-logs");var tt=require("@ez4/aws-function"),rt=require("@ez4/utils"),ot=require("@ez4/project");var Je=require("node:path"),Qe=require("@ez4/project/library"),Xe=require("@ez4/aws-function"),
|
|
118
|
+
Ye=require("@ez4/aws-common");var et=n(async(t,e)=>{let{handler:r,listener:o,context:c,debug:a}=t,i=(0,Qe.getDefinitionsObject)(
|
|
119
|
+
e);return(0,Ye.getFunctionBundle)(Xe.MappingServiceName,{templateFile:(0,Je.join)(
|
|
120
120
|
__dirname,"../lib/event.ts"),define:i,filePrefix:"s3",handler:r,listener:o,context:c,
|
|
121
|
-
debug:a})},"bundleBucketEventFunction");var
|
|
121
|
+
debug:a})},"bundleBucketEventFunction");var te=n((t,e,r,o)=>{let{handler:c,variables:a,debug:i,architecture:p}=o;return(0,tt.createFunction)(
|
|
122
122
|
t,e,r,{handlerName:"s3EntryPoint",sourceFile:c.sourceFile,functionName:o.functionName,
|
|
123
|
-
description:o.description,
|
|
124
|
-
|
|
125
|
-
()=>a.reduce((
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
()=>(0,
|
|
129
|
-
|
|
130
|
-
let r=(0,
|
|
131
|
-
0,46)}-${o}`},"getBucketName"),
|
|
132
|
-
e)}`,"getInternalName"),
|
|
133
|
-
e)}`,"getFunctionName");var
|
|
134
|
-
"Execution role for S3 is missing.")}};var
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
runtime:
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
123
|
+
description:o.description,logLevel:i?ot.LogLevel.Debug:o.logLevel,architecture:o.
|
|
124
|
+
architecture,runtime:o.runtime,release:o.release,timeout:o.timeout,memory:o.memory,
|
|
125
|
+
files:o.files,tags:o.tags,getFunctionVariables:n(()=>a.reduce((m,x)=>({...m,...x}),
|
|
126
|
+
{}),"getFunctionVariables"),getFunctionBundle:n(m=>et(o,[...m.getDependencies(),
|
|
127
|
+
...m.getConnections()]),"getFunctionBundle"),getFunctionFiles:n(()=>[c.sourceFile,
|
|
128
|
+
c.dependencies],"getFunctionFiles"),getFunctionHash:n(()=>(0,rt.hashObject)({architecture:p,
|
|
129
|
+
debug:i}),"getFunctionHash")})},"createBucketEventFunction");var K=require("@ez4/project/library"),nt=require("@ez4/aws-common"),H=require("@ez4/utils");var ct=n(async(t,e)=>{if(t.globalName)return(0,K.getServiceName)(t.globalName,e);
|
|
130
|
+
let r=(0,K.getServiceName)(t,e),o=await(0,nt.getRandomName)(16);return`${r.substring(
|
|
131
|
+
0,46)}-${o}`},"getBucketName"),re=n((t,e)=>`${(0,H.toKebabCase)(t.name)}-${(0,H.toKebabCase)(
|
|
132
|
+
e)}`,"getInternalName"),at=n((t,e,r)=>`${(0,K.getServiceName)(t,r)}-${(0,H.toKebabCase)(
|
|
133
|
+
e)}`,"getFunctionName");var D=class extends Error{static{n(this,"RoleMissingError")}constructor(){super(
|
|
134
|
+
"Execution role for S3 is missing.")}};var w=require("@ez4/aws-function"),b;(i=>(i.LogLevel=w.FunctionDefaults.LogLevel,
|
|
135
|
+
i.LogRetention=w.FunctionDefaults.LogRetention,i.Architecture=w.FunctionDefaults.
|
|
136
|
+
Architecture,i.Runtime=w.FunctionDefaults.Runtime,i.Timeout=w.FunctionDefaults.Timeout,
|
|
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
|
+
throw new D;let{defaults:c,release:a}=r,{runtime:i=c?.runtime??b.Runtime,architecture:p=c?.
|
|
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,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
|
+
c,{withFileTypes:!0,recursive:!0});for(let i of a){if(!i.isFile())continue;let p=(0,C.join)(
|
|
154
|
+
i.parentPath,i.name);(0,mt.createBucketObject)(t,e,{objectKey:(0,C.relative)(c,p),
|
|
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:"\
|
|
154
156
|
@ez4/aws-bucket/client",constructor:`@{EZ4_MODULE_IMPORT}.make('${o.parameters.bucketName}\
|
|
155
|
-
')`,dependencyIds:[c],connectionIds:[c]}},"prepareLinkedClient");var
|
|
156
|
-
|
|
157
|
-
context:c}=t;if(!(0
|
|
158
|
-
events:
|
|
159
|
-
tags,bucketName:
|
|
160
|
-
r,o,
|
|
161
|
-
options:o,context:c}=t;(0
|
|
162
|
-
ices");var
|
|
163
|
-
let c=(0,
|
|
164
|
-
e,a)??(0,
|
|
165
|
-
pareExecutionPolicy");var
|
|
166
|
-
(0,
|
|
167
|
-
pareExecutionPolicy":
|
|
168
|
-
s":
|
|
169
|
-
let e=await(0,
|
|
170
|
-
in");var
|
|
157
|
+
')`,dependencyIds:[c],connectionIds:[c]}},"prepareLinkedClient");var ft=n(t=>{let{service:e,options:r,context:o}=t;return(0,G.isBucketService)(e)?
|
|
158
|
+
yt(o,e,r):null},"prepareLinkedServices"),gt=n(async t=>{let{state:e,service:r,options:o,
|
|
159
|
+
context:c}=t;if(!(0,G.isBucketService)(r))return!1;let{localPath:a,autoExpireDays:i,
|
|
160
|
+
events:p,cors:m}=r,x=await ct(r,o),O=st(e,r,o,c),z=ee(e,O,{eventsPath:p?.path,tags:o.
|
|
161
|
+
tags,bucketName:x,autoExpireDays:i,localPath:a,cors:m});return c.setServiceState(
|
|
162
|
+
r,o,z),a&&await lt(e,z,a),!0},"prepareBucketServices"),dt=n(t=>{let{state:e,service:r,
|
|
163
|
+
options:o,context:c}=t;(0,G.isBucketService)(r)&&pt(e,r,o,c)},"connectBucketServ\
|
|
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
|
+
let c=(0,kt.getServiceName)("",o),a=`${c}-bucket-policy`;return(0,_.tryGetPolicy)(
|
|
166
|
+
e,a)??(0,_.createPolicy)(e,{tags:o.tags,policyDocument:Y(c),policyName:a})},"pre\
|
|
167
|
+
pareExecutionPolicy");var sr=n(()=>{(0,xt.registerTriggers)(),(0,Pt.registerTriggers)(),(0,Bt.registerTriggers)(),
|
|
168
|
+
(0,wt.registerTriggers)(),(0,vt.tryCreateTrigger)("@ez4/aws-bucket",{"deploy:pre\
|
|
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 pr=n(t=>/(.+)\.s3\.(.+)\.amazonaws\.com/i.test(t),"isBucketDomain"),ur=n(async t=>{
|
|
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 mr=n((t,e,r,o)=>{let c=(0,Ct.hashData)(g,e.entryId,r.entryId);return(0,Rt.attachEntry)(
|
|
171
173
|
t,{type:g,entryId:c,dependencies:[e.entryId,r.entryId],parameters:o})},"createBu\
|
|
172
|
-
cketPolicy");var
|
|
173
|
-
t,{type:
|
|
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
|
+
t,{type:y,entryId:c,dependencies:[e.entryId],parameters:r})},"createBucketObject");0&&(module.exports={BucketServiceName,BucketServiceType,ObjectServiceName,ObjectServiceType,
|
|
174
176
|
PolicyServiceName,PolicyServiceType,buildBucketArn,createBucket,createBucketEventFunction,
|
|
175
177
|
createBucketObject,createBucketPolicy,createBucketStateId,getBucketDomain,getBucketName,
|
|
176
178
|
getBucketObjectFiles,getBucketObjectPath,getBucketState,getPolicyDocument,isBucketDomain,
|
package/dist/main.mjs
CHANGED
|
@@ -1,160 +1,163 @@
|
|
|
1
|
-
var
|
|
2
|
-
import{registerTriggers as
|
|
3
|
-
import{tryCreateTrigger as
|
|
4
|
-
import{tryGetFunctionArn as
|
|
5
|
-
CreateBucketCommand as
|
|
6
|
-
PutBucketCorsCommand as
|
|
7
|
-
DeleteBucketLifecycleCommand as
|
|
8
|
-
NoSuchBucket as
|
|
9
|
-
{Bucket:e,MaxKeys:1}))).Contents?.length}catch(t){if(!(t instanceof
|
|
10
|
-
"isBucketEmpty"),
|
|
11
|
-
return await p().send(new
|
|
12
|
-
r.update("Deleting bucket");try{return await p().send(new
|
|
13
|
-
if(!(t instanceof
|
|
14
|
-
"Tag bucket"),await p().send(new
|
|
15
|
-
EZ4"})}}))},"tagBucket")
|
|
16
|
-
send(new
|
|
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
|
+
{Bucket:e,MaxKeys:1}))).Contents?.length}catch(t){if(!(t instanceof R))throw t;return 0}},
|
|
10
|
+
"isBucketEmpty"),H=n(async(r,e)=>{r.update("Creating bucket");let{bucketName:t}=e;
|
|
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
|
+
if(!(t instanceof R))throw t;return!1}},"deleteBucket"),U=n(async(r,e,t)=>{r.update(
|
|
14
|
+
"Tag bucket"),await p().send(new Je({Bucket:e,Tagging:{TagSet:_e({...t,ManagedBy:"\
|
|
15
|
+
EZ4"})}}))},"tagBucket"),G=n(async(r,e,t)=>{r.update("Updating bucket CORS"),await p().
|
|
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
|
-
MaxAgeSeconds:t.maxAge}]}}))},"updateCorsConfiguration"),
|
|
19
|
-
"Deleting bucket CORS");try{return await p().send(new
|
|
20
|
-
if(!(t instanceof
|
|
21
|
-
r.update("Creating bucket lifecycle"),await p().send(new
|
|
22
|
-
Rules:[{ID:"ID0",Status:
|
|
23
|
-
"createLifecycle"),
|
|
24
|
-
send(new
|
|
25
|
-
leteLifecycle"),
|
|
26
|
-
eventsPath:c,eventsType:a}=t;await p().send(new
|
|
18
|
+
MaxAgeSeconds:t.maxAge}]}}))},"updateCorsConfiguration"),_=n(async(r,e)=>{r.update(
|
|
19
|
+
"Deleting bucket CORS");try{return await p().send(new tt({Bucket:e})),!0}catch(t){
|
|
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 Xe({Bucket:e,LifecycleConfiguration:{
|
|
22
|
+
Rules:[{ID:"ID0",Status:rt.Enabled,Filter:{Prefix:"*"},Expiration:{Days:t}}]}}))},
|
|
23
|
+
"createLifecycle"),W=n(async(r,e)=>{r.update("Deleting bucket lifecycle");try{return await p().
|
|
24
|
+
send(new et({Bucket:e})),!0}catch(t){if(!(t instanceof R))throw t;return!1}},"de\
|
|
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 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
|
|
30
|
-
tBucketHandler"),
|
|
31
|
-
"equalsResource"),
|
|
32
|
-
o={...e.parameters,dependencies:e.dependencies},c=
|
|
33
|
-
name:t.bucketName}},"previewResource"),
|
|
34
|
-
|
|
35
|
-
o=
|
|
36
|
-
c,t);await
|
|
37
|
-
eventsPath:t.eventsPath,functionArn:o};return await
|
|
38
|
-
"createResource"),
|
|
39
|
-
throw new
|
|
40
|
-
functionArn;await
|
|
41
|
-
c.tags,e.parameters.tags);let
|
|
42
|
-
parameters.eventsPath,functionArn:u};return await
|
|
43
|
-
"updateResource"),
|
|
44
|
-
await
|
|
45
|
-
e.bucketName)})},"deleteResource"),
|
|
46
|
-
t.cors,o.cors))){if(t.cors)return
|
|
47
|
-
kCorsUpdates"),
|
|
48
|
-
autoExpireDays)return
|
|
49
|
-
"checkLifecycleUpdates"),
|
|
50
|
-
e,c)},"checkTagUpdates"),
|
|
51
|
-
"s3:ObjectCreated:*","s3:ObjectRemoved:*"],...t})},"checkEventUpdates");var
|
|
52
|
-
deepCompare as
|
|
53
|
-
toKebabCase as
|
|
54
|
-
`Bucket service ${e} wasn't found.`)}};var
|
|
55
|
-
|
|
56
|
-
getBucketState"),
|
|
57
|
-
throw new
|
|
58
|
-
role:o}=e;return await
|
|
59
|
-
"createPolicy"),
|
|
60
|
-
send(new
|
|
61
|
-
eletePolicy");var
|
|
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
|
|
67
|
-
|
|
68
|
-
eation",async c=>{let a=await t.getRole(e);return await
|
|
69
|
-
{bucketName:o}})},"createResource"),
|
|
70
|
-
let e=r.result;if(!e)return;let{bucketName:t}=e;await
|
|
71
|
-
ion",o=>
|
|
72
|
-
ReplaceResourceError as
|
|
73
|
-
DeleteObjectCommand as
|
|
74
|
-
a=
|
|
75
|
-
{objectKey:o}},"putObject"),
|
|
76
|
-
await p().send(new
|
|
77
|
-
"updateTags"),
|
|
78
|
-
send(new
|
|
79
|
-
"deleteObject");var
|
|
80
|
-
bjectPath"),
|
|
81
|
-
lastModified,objectKey:o.objectKey})),"getBucketObjectFiles");var
|
|
82
|
-
getObjectHandler"),
|
|
83
|
-
"equalsResource"),
|
|
84
|
-
dependencies:r.dependencies,lastModified:await
|
|
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
|
+
k,r.entryId,e.entryId);return X(r,t)},"replaceResource"),X=n((r,e)=>{let t=r.parameters,
|
|
35
|
+
o=J(e);return j.logExecution(k,t.bucketName,"creation",async c=>{let{bucketName:a}=await H(
|
|
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
|
+
eventsPath:t.eventsPath,functionArn:o};return await re(c,a,i,{}),{bucketName:a,functionArn:o}})},
|
|
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
|
+
functionArn;await Y(i,a,c,e.parameters),await ee(i,a,c,e.parameters),await te(i,
|
|
41
|
+
a,c.tags,e.parameters.tags);let f={eventsPath:c.eventsPath,functionArn:s},x={eventsPath:e.
|
|
42
|
+
parameters.eventsPath,functionArn:u};return await re(i,a,f,x),{...o,functionArn:s}})},
|
|
43
|
+
"updateResource"),ut=n(async r=>{let{result:e}=r;if(!e)return;let{bucketName:t}=e;
|
|
44
|
+
await j.logExecution(k,t,"deletion",async o=>{await K(o,e.bucketName)&&await $(o,
|
|
45
|
+
e.bucketName)})},"deleteResource"),Y=n(async(r,e,t,o)=>{if(!(t.cors&&o?.cors&&L(
|
|
46
|
+
t.cors,o.cors))){if(t.cors)return G(r,e,t.cors);if(o?.cors)return _(r,e)}},"chec\
|
|
47
|
+
kCorsUpdates"),ee=n(async(r,e,t,o)=>{if(t.autoExpireDays!==o?.autoExpireDays){if(t.
|
|
48
|
+
autoExpireDays)return V(r,e,t.autoExpireDays);if(o?.autoExpireDays)return W(r,e)}},
|
|
49
|
+
"checkLifecycleUpdates"),te=n(async(r,e,t,o)=>{let c=t??{};!L(c,o??{})&&await U(
|
|
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(()=>{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
|
+
getBucketState"),O=n((r,e,t)=>{let o=t.getDependencies(m)[0]?.result;if(!o?.bucketName)
|
|
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
|
+
"createPolicy"),se=n(async(r,e)=>{r.update("Deleting bucket policy");try{return await ae.
|
|
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
|
+
me=n((r,e)=>{let t=r.parameters,o=O(B,"policy",e);return pe.logExecution(B,o,"cr\
|
|
68
|
+
eation",async c=>{let a=await t.getRole(e);return await ie(c,{bucketName:o,role:a}),
|
|
69
|
+
{bucketName:o}})},"createResource"),vt=n(async()=>{},"updateResource"),Et=n(async r=>{
|
|
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(()=>{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
|
+
{objectKey:o}},"putObject"),ye=n(async(r,e,t,o)=>{r.update("Updating object tags"),
|
|
76
|
+
await p().send(new ht({Bucket:e,Key:t,Tagging:{TagSet:Nt({...o,ManagedBy:"EZ4"})}}))},
|
|
77
|
+
"updateTags"),fe=n(async(r,e,t)=>{r.update("Deleting object");try{return await p().
|
|
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
|
+
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"),
|
|
87
|
-
entryId,e.entryId);return
|
|
88
|
-
o=
|
|
89
|
-
let i=await
|
|
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
|
|
93
|
-
return await
|
|
94
|
-
async r=>{let{result:e,parameters:t}=r;if(!e)return;let o=
|
|
95
|
-
await
|
|
96
|
-
"deleteResource"),
|
|
97
|
-
tLastModifiedTime"),
|
|
98
|
-
t.filePath===o.filePath)return e;let{bucketName:a}=e,{objectKey:i}=o;return await
|
|
99
|
-
r,a,{...t,objectKey:i}),{lastModified:c,bucketName:a}},"checkObjectUpdates"),
|
|
100
|
-
async(r,e,t,o,c)=>{let a=o??{};!
|
|
86
|
+
objectKey}},"previewResource"),Kt=n(async(r,e,t)=>{if(e.result)throw new Ft(S,r.
|
|
87
|
+
entryId,e.entryId);return de(r,t)},"replaceResource"),de=n((r,e)=>{let t=r.parameters,
|
|
88
|
+
o=O(S,"bucket",e),c=h(o,t.objectKey);return T.logExecution(S,c,"creation",async a=>{
|
|
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"),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
|
+
async r=>{let{result:e,parameters:t}=r;if(!e)return;let o=h(e.bucketName,t.objectKey);
|
|
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 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
|
+
t.filePath===o.filePath)return e;let{bucketName:a}=e,{objectKey:i}=o;return await N(
|
|
99
|
+
r,a,{...t,objectKey:i}),{lastModified:c,bucketName:a}},"checkObjectUpdates"),Se=n(
|
|
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
|
|
103
|
-
parameters:t});return e&&(
|
|
104
|
-
principal:"s3.amazonaws.com",sourceArn:
|
|
105
|
-
e.entryId)),a},"createBucket");import{getFunctionState as
|
|
106
|
-
import{isLinkedContextVpcRequired as
|
|
107
|
-
import{isRoleState as
|
|
108
|
-
import{
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
()=>
|
|
116
|
-
o,[...
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
ar(
|
|
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
|
+
r,e,t,{handlerName:"s3EntryPoint",sourceFile:c.sourceFile,functionName:o.functionName,
|
|
113
|
+
description:o.description,logLevel:i?rr.Debug:o.logLevel,architecture:o.architecture,
|
|
114
|
+
runtime:o.runtime,release:o.release,timeout:o.timeout,memory:o.memory,files:o.files,
|
|
115
|
+
tags:o.tags,getFunctionVariables:n(()=>a.reduce((u,f)=>({...u,...f}),{}),"getFun\
|
|
116
|
+
ctionVariables"),getFunctionBundle:n(u=>Be(o,[...u.getDependencies(),...u.getConnections()]),
|
|
117
|
+
"getFunctionBundle"),getFunctionFiles:n(()=>[c.sourceFile,c.dependencies],"getFu\
|
|
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
|
+
16);return`${t.substring(0,46)}-${o}`},"getBucketName"),A=n((r,e)=>`${F(r.name)}\
|
|
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
|
+
"Execution role for S3 is missing.")}};import{FunctionDefaults as b}from"@ez4/aws-function";var y;(i=>(i.LogLevel=b.LogLevel,
|
|
124
|
+
i.LogRetention=b.LogRetention,i.Architecture=b.Architecture,i.Runtime=b.Runtime,
|
|
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
|
+
defaults:c,release:a}=t,{runtime:i=c?.runtime??y.Runtime,architecture:s=c?.architecture??
|
|
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,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
|
+
recursive:!0});for(let i of a){if(!i.isFile())continue;let s=he(i.parentPath,i.name);
|
|
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:"\
|
|
139
142
|
@ez4/aws-bucket/client",constructor:`@{EZ4_MODULE_IMPORT}.make('${o.parameters.bucketName}\
|
|
140
|
-
')`,dependencyIds:[c],connectionIds:[c]}},"prepareLinkedClient");var
|
|
141
|
-
repareLinkedServices"),
|
|
142
|
-
if(!
|
|
143
|
-
t,o),
|
|
144
|
-
localPath:a,cors:u});return c.setServiceState(t,o,
|
|
145
|
-
pareBucketServices"),
|
|
146
|
-
|
|
147
|
-
import{getServiceName as
|
|
148
|
-
"",o),a=`${c}-bucket-policy`;return
|
|
149
|
-
c),policyName:a})},"prepareExecutionPolicy");var
|
|
150
|
-
Policy":
|
|
151
|
-
:connectResources":
|
|
152
|
-
let e=await
|
|
153
|
-
dependencies:[e.entryId,t.entryId],parameters:o})},"createBucketPolicy");var
|
|
154
|
-
dependencies:[e.entryId],parameters:t})},"createBucketObject");export{
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
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
|
+
repareLinkedServices"),De=n(async r=>{let{state:e,service:t,options:o,context:c}=r;
|
|
145
|
+
if(!I(t))return!1;let{localPath:a,autoExpireDays:i,events:s,cors:u}=t,f=await ve(
|
|
146
|
+
t,o),x=Ce(e,t,o,c),v=Pe(e,x,{eventsPath:s?.path,tags:o.tags,bucketName:f,autoExpireDays:i,
|
|
147
|
+
localPath:a,cors:u});return c.setServiceState(t,o,v),a&&await Le(e,v,a),!0},"pre\
|
|
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 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
|
+
Policy":Fe,"deploy:prepareLinkedService":Te,"deploy:prepareResources":De,"deploy\
|
|
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
|
+
dependencies:[e.entryId],parameters:t})},"createBucketObject");export{k as BucketServiceName,m as BucketServiceType,S as ObjectServiceName,l as ObjectServiceType,
|
|
158
|
+
B as PolicyServiceName,d as PolicyServiceType,be as buildBucketArn,Pe as createBucket,
|
|
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};
|
|
160
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",
|
|
@@ -51,17 +51,17 @@
|
|
|
51
51
|
"@types/mime": "^3.0.0"
|
|
52
52
|
},
|
|
53
53
|
"dependencies": {
|
|
54
|
-
"@aws-sdk/client-s3": "^3.
|
|
55
|
-
"@aws-sdk/s3-request-presigner": "^3.
|
|
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.
|
|
54
|
+
"@aws-sdk/client-s3": "^3.996.0",
|
|
55
|
+
"@aws-sdk/s3-request-presigner": "^3.996.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
|
}
|