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