@ez4/aws-bucket 0.18.0 → 0.19.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 +30 -30
- package/dist/main.mjs +19 -17
- package/package.json +9 -9
package/dist/main.cjs
CHANGED
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
typeof e=="object"||typeof e=="function")for(let n of Rt(e))!jt.call(t,n)&&n!==r&&
|
|
3
3
|
O(t,n,{get:()=>e[n],enumerable:!(o=Et(e,n))||o.enumerable});return t};var Ot=(t,e,r)=>(r=t!=null?vt(Ct(t)):{},ee(e||!t||!t.__esModule?O(r,"default",{value:t,
|
|
4
4
|
enumerable:!0}):r,t)),Tt=t=>ee(O({},"__esModule",{value:!0}),t);var rr={};ht(rr,{BucketServiceName:()=>i,BucketServiceType:()=>u,ObjectServiceName:()=>k,
|
|
5
|
-
ObjectServiceType:()=>y,PolicyServiceName:()=>
|
|
5
|
+
ObjectServiceType:()=>y,PolicyServiceName:()=>x,PolicyServiceType:()=>d,buildBucketArn:()=>V,
|
|
6
6
|
createBucket:()=>Z,createBucketEventFunction:()=>J,createBucketObject:()=>tr,createBucketPolicy:()=>Yt,
|
|
7
7
|
createBucketStateId:()=>$,getBucketDomain:()=>Xt,getBucketName:()=>E,getBucketObjectFiles:()=>Kt,
|
|
8
8
|
getBucketObjectPath:()=>R,getBucketState:()=>H,getPolicyDocument:()=>W,isBucketDomain:()=>Qt,
|
|
9
|
-
isBucketObjectState:()=>Ht,isBucketPolicyState:()=>er,isBucketState:()=>
|
|
9
|
+
isBucketObjectState:()=>Ht,isBucketPolicyState:()=>er,isBucketState:()=>be,registerTriggers:()=>Jt});
|
|
10
10
|
module.exports=Tt(rr);var yt=require("@ez4/aws-common"),ft=require("@ez4/aws-identity"),gt=require("@ez4/aws-function"),
|
|
11
|
-
dt=require("@ez4/storage/library"),St=require("@ez4/project/library");var Se=require("@ez4/aws-common");var me=require("@ez4/aws-common"),M=require("@ez4/aws-function"),
|
|
11
|
+
dt=require("@ez4/storage/library"),St=require("@ez4/project/library");var Se=require("@ez4/aws-common");var me=require("@ez4/aws-common"),M=require("@ez4/aws-function"),b=require("@ez4/utils");var p=require("@ez4/aws-common"),c=require("@aws-sdk/client-s3");var i="AWS:S3/Bucket",u="aws:s3.bucket";var l=new c.S3Client({}),te=async t=>{p.Logger.logFetch(i,t);try{return!(await l.
|
|
12
12
|
send(new c.ListObjectsV2Command({Bucket:t,MaxKeys:1}))).Contents?.length}catch(e){
|
|
13
13
|
if(!(e instanceof c.NoSuchBucket))throw e;return 0}},re=async t=>{let{bucketName:e}=t;
|
|
14
14
|
return p.Logger.logCreate(i,e),await l.send(new c.CreateBucketCommand({Bucket:e})),
|
|
@@ -32,7 +32,7 @@ SkipDestinationValidation:!0,NotificationConfiguration:{...r&&{LambdaFunctionCon
|
|
|
32
32
|
{Id:"ID0",LambdaFunctionArn:r,Events:n,...o&&{Filter:{Key:{FilterRules:[{Name:"p\
|
|
33
33
|
refix",Value:o}]}}}}]}}}))};var ue=()=>({equals:Nt,create:le,replace:zt,preview:Dt,update:At,delete:It}),Nt=(t,e)=>!!t.
|
|
34
34
|
result&&t.result.bucketName===e.result?.bucketName,Dt=async(t,e)=>{let r={...t.parameters,
|
|
35
|
-
dependencies:t.dependencies},o={...e.parameters,dependencies:e.dependencies},n=(0,
|
|
35
|
+
dependencies:t.dependencies},o={...e.parameters,dependencies:e.dependencies},n=(0,b.deepCompare)(
|
|
36
36
|
r,o);if(n.counts)return{...n,name:r.bucketName}},zt=async(t,e,r)=>{if(e.result)throw new me.ReplaceResourceError(
|
|
37
37
|
i,t.entryId,e.entryId);return le(t,r)},le=async(t,e)=>{let r=t.parameters,o=(0,M.tryGetFunctionArn)(
|
|
38
38
|
e),{bucketName:n}=await re(r);await ye(n,r,void 0),await fe(n,r,void 0),await ge(
|
|
@@ -43,25 +43,25 @@ await ye(s,n,e.parameters),await fe(s,n,e.parameters),await ge(s,n.tags,e.parame
|
|
|
43
43
|
tags);let w={eventsPath:n.eventsPath,functionArn:a},v={eventsPath:e.parameters.eventsPath,
|
|
44
44
|
functionArn:f};return await de(s,w,v),{...o,functionArn:a}},It=async t=>{let e=t.
|
|
45
45
|
result;e&&await te(e.bucketName)&&await oe(e.bucketName)},ye=async(t,e,r)=>{if(!(e.
|
|
46
|
-
cors&&r?.cors&&(0,
|
|
46
|
+
cors&&r?.cors&&(0,b.deepEqual)(e.cors,r.cors))){if(e.cors)return se(t,e.cors);if(r?.
|
|
47
47
|
cors)return ce(t)}},fe=async(t,e,r)=>{if(e.autoExpireDays!==r?.autoExpireDays){if(e.
|
|
48
48
|
autoExpireDays)return ae(t,e.autoExpireDays);if(r?.autoExpireDays)return ie(t)}},
|
|
49
|
-
ge=async(t,e,r)=>{let o=e??{};!(0,
|
|
50
|
-
!(0,
|
|
51
|
-
moved:*"],...e})};var ke=()=>{(0,Se.registerProvider)(u,ue())};var je=require("@ez4/aws-common");var ve=require("@ez4/aws-common"),Ee=require("@ez4/utils");var
|
|
52
|
-
.`)}};var $=t=>(0,N.hashData)(u,(0,N.toKebabCase)(t)),
|
|
53
|
-
getServiceState(e,r);if(!
|
|
54
|
-
u)[0]?.result;if(!o?.bucketName)throw new
|
|
55
|
-
Name");return o.bucketName};var S=require("@aws-sdk/client-s3"),K=require("@ez4/aws-common");var
|
|
56
|
-
logCreate(
|
|
57
|
-
stringify(r)})),{bucketName:e}},we=async t=>{K.Logger.logDelete(
|
|
49
|
+
ge=async(t,e,r)=>{let o=e??{};!(0,b.deepEqual)(o,r??{})&&await ne(t,o)},de=async(t,e,r)=>{
|
|
50
|
+
!(0,b.deepEqual)(e,r)&&await pe(t,{eventsType:["s3:ObjectCreated:*","s3:ObjectRe\
|
|
51
|
+
moved:*"],...e})};var ke=()=>{(0,Se.registerProvider)(u,ue())};var je=require("@ez4/aws-common");var ve=require("@ez4/aws-common"),Ee=require("@ez4/utils");var xe=require("@ez4/aws-common"),N=require("@ez4/utils");var T=class extends Error{constructor(e){super(`Bucket service ${e} wasn't found\
|
|
52
|
+
.`)}};var $=t=>(0,N.hashData)(u,(0,N.toKebabCase)(t)),be=t=>t.type===u,H=(t,e,r)=>{let o=t.
|
|
53
|
+
getServiceState(e,r);if(!be(o))throw new T(e);return o},E=(t,e,r)=>{let o=r.getDependencies(
|
|
54
|
+
u)[0]?.result;if(!o?.bucketName)throw new xe.IncompleteResourceError(t,e,"bucket\
|
|
55
|
+
Name");return o.bucketName};var S=require("@aws-sdk/client-s3"),K=require("@ez4/aws-common");var x="AWS:S3/Policy",d="aws:s3.policy";var Pe=new S.S3Client({}),Be=async t=>{let{bucketName:e,role:r}=t;return K.Logger.
|
|
56
|
+
logCreate(x,e),await Pe.send(new S.PutBucketPolicyCommand({Bucket:e,Policy:JSON.
|
|
57
|
+
stringify(r)})),{bucketName:e}},we=async t=>{K.Logger.logDelete(x,t);try{return await Pe.
|
|
58
58
|
send(new S.DeleteBucketPolicyCommand({Bucket:t})),!0}catch(e){if(!(e instanceof S.NoSuchBucket))
|
|
59
59
|
throw e;return!1}};var Re=()=>({equals:Ft,create:Ce,replace:qt,preview:Lt,update:Mt,delete:$t}),Ft=(t,e)=>!!t.
|
|
60
60
|
result&&t.result.bucketName===e.result?.bucketName,Lt=async(t,e)=>{let r={...t.parameters,
|
|
61
61
|
dependencies:t.dependencies},o={...e.parameters,dependencies:e.dependencies},n=(0,Ee.deepCompare)(
|
|
62
62
|
r,o,{exclude:{getRole:!0}});if(n.counts)return{...n,name:r.fromService}},qt=async(t,e,r)=>{
|
|
63
|
-
if(e.result)throw new ve.ReplaceResourceError(
|
|
64
|
-
r)},Ce=async(t,e)=>{let r=t.parameters,o=E(
|
|
63
|
+
if(e.result)throw new ve.ReplaceResourceError(x,t.entryId,e.entryId);return Ce(t,
|
|
64
|
+
r)},Ce=async(t,e)=>{let r=t.parameters,o=E(x,"policy",e),n=await r.getRole(e);return await Be(
|
|
65
65
|
{bucketName:o,role:n}),{bucketName:o}},Mt=async()=>{},$t=async t=>{let e=t.result;
|
|
66
66
|
e&&await we(e.bucketName)};var he=()=>{(0,je.registerProvider)(d,Re())};var qe=require("@ez4/aws-common");var ze=require("node:fs/promises"),Ae=require("@ez4/aws-common"),D=require("@ez4/utils");var Oe=require("node:fs"),m=require("@aws-sdk/client-s3"),P=require("@ez4/aws-common"),
|
|
67
67
|
Te=Ot(require("mime"),1);var k="AWS:S3/Object",y="aws:s3.object";var Ht=t=>t.type===y,R=(t,e)=>`${t}/${e}`,Kt=t=>t.getDependencies(y).map(({result:r,
|
|
@@ -93,7 +93,7 @@ bucketName,getPermission:()=>({principal:"s3.amazonaws.com",sourceArn:V(o)})}),(
|
|
|
93
93
|
t,s.entryId,e.entryId)),s};var F=require("@ez4/aws-function"),Xe=require("@ez4/project/library"),X=require("@ez4/aws-identity"),
|
|
94
94
|
Ye=require("@ez4/aws-logs");var We=require("@ez4/aws-function");var Ke=require("node:path"),Ue=require("@ez4/project/library"),Ge=require("@ez4/aws-function"),
|
|
95
95
|
_e=require("@ez4/aws-common"),Ve=async(t,e)=>{let{extras:r,debug:o,handler:n,listener:s}=e,
|
|
96
|
-
a=(0,Ue.getDefinitionsObject)(t);return(0,_e.
|
|
96
|
+
a=(0,Ue.getDefinitionsObject)(t);return(0,_e.getFunctionBundle)(Ge.MappingServiceName,
|
|
97
97
|
{templateFile:(0,Ke.join)(__dirname,"../lib/event.ts"),filePrefix:"s3",define:{...a},
|
|
98
98
|
handler:n,listener:s,extras:r,debug:o})};var J=(t,e,r,o)=>(0,We.createFunction)(t,e,r,{handlerName:"s3EntryPoint",functionName:o.
|
|
99
99
|
functionName,sourceFile:o.handler.sourceFile,description:o.description,variables:o.
|
|
@@ -105,14 +105,14 @@ t.name)}-${(0,I.toKebabCase)(e)}`,Qe=(t,e,r)=>`${(0,A.getServiceName)(t,r)}-${(0
|
|
|
105
105
|
e)}`;var C=class extends Error{constructor(){super("Execution role for S3 is missing.")}};var j;(o=>(o.LogRetention=90,o.Timeout=90,o.Memory=192))(j||={});var et=(t,e,r,o)=>{if(!e.events)return;if(!o.role||!(0,X.isRoleState)(o.role))throw new C;
|
|
106
106
|
let{handler:n,listener:s,retention:a,timeout:f,memory:w,variables:v}=e.events,h=Q(
|
|
107
107
|
e,n.name),g=(0,F.tryGetFunctionState)(o,h,r);if(g)return g;let Y=Qe(e,n.name,r),
|
|
108
|
-
wt=(0,Ye.createLogGroup)(t,{retention:a??j.LogRetention,groupName:Y});
|
|
109
|
-
t,o.role,wt,{functionName:Y,description:n.description,timeout:f??j.Timeout,
|
|
110
|
-
j.Memory,extras:e.extras,debug:r.debug,variables:{...r.variables
|
|
111
|
-
...v},handler:{functionName:n.name,sourceFile:n.file},...s&&{listener:{
|
|
112
|
-
name,sourceFile:s.file}}}),o.setServiceState(g,h,r),g},tt=(t,e,r,o)=>{
|
|
113
|
-
!e.events)return;if(!o.role||!(0,X.isRoleState)(o.role))throw new C;
|
|
114
|
-
events,s=Q(e,n.name),a=(0,F.getFunctionState)(o,s,r);(0,Xe.linkServiceExtras)(
|
|
115
|
-
a.entryId,e.extras)};var rt=require("node:fs/promises"),B=require("node:path"),ot=require("@ez4/aws-bucket"),
|
|
108
|
+
wt=(0,Ye.createLogGroup)(t,{retention:a??j.LogRetention,groupName:Y,tags:r.tags});
|
|
109
|
+
return g=J(t,o.role,wt,{functionName:Y,description:n.description,timeout:f??j.Timeout,
|
|
110
|
+
memory:w??j.Memory,extras:e.extras,debug:r.debug,tags:r.tags,variables:{...r.variables,
|
|
111
|
+
...e.variables,...v},handler:{functionName:n.name,sourceFile:n.file},...s&&{listener:{
|
|
112
|
+
functionName:s.name,sourceFile:s.file}}}),o.setServiceState(g,h,r),g},tt=(t,e,r,o)=>{
|
|
113
|
+
if(!e.extras||!e.events)return;if(!o.role||!(0,X.isRoleState)(o.role))throw new C;
|
|
114
|
+
let{handler:n}=e.events,s=Q(e,n.name),a=(0,F.getFunctionState)(o,s,r);(0,Xe.linkServiceExtras)(
|
|
115
|
+
t,a.entryId,e.extras)};var rt=require("node:fs/promises"),B=require("node:path"),ot=require("@ez4/aws-bucket"),
|
|
116
116
|
nt=async(t,e,r)=>{let o=process.cwd(),n=(0,B.join)(o,r),s=await(0,rt.readdir)(n,
|
|
117
117
|
{withFileTypes:!0,recursive:!0});for(let a of s){if(!a.isFile())continue;let f=(0,B.join)(
|
|
118
118
|
a.parentPath,a.name);(0,ot.createBucketObject)(t,e,{objectKey:(0,B.relative)(n,f),
|
|
@@ -120,15 +120,15 @@ filePath:(0,B.relative)(o,f)})}};var st=(t,e,r)=>{let o=H(t,e.name,r);return{ent
|
|
|
120
120
|
ke('${o.parameters.bucketName}')`,from:"@ez4/aws-bucket/client",module:"Client"}};var ct=t=>{let{service:e,options:r,context:o}=t;return(0,L.isBucketService)(e)?st(
|
|
121
121
|
o,e,r):null},at=async t=>{let{state:e,service:r,options:o,context:n}=t;if(!(0,L.isBucketService)(
|
|
122
122
|
r))return;let{localPath:s,autoExpireDays:a,events:f,cors:w}=r,v=await Je(r,o),h=et(
|
|
123
|
-
e,r,o,n),g=Z(e,h,{eventsPath:f?.path,bucketName:v,autoExpireDays:a,localPath:s,
|
|
124
|
-
n.setServiceState(g,r,o),s&&await nt(e,g,s)},it=t=>{let{state:e,service:r,
|
|
125
|
-
context:n}=t;(0,L.isBucketService)(r)&&tt(e,r,o,n)};var pt=require("@ez4/storage/library"),q=require("@ez4/aws-identity"),mt=require("@ez4/project/library");var ut=t=>{let{state:e,serviceType:r,options:o}=t;if(r!==pt.ServiceType)return null;
|
|
123
|
+
e,r,o,n),g=Z(e,h,{eventsPath:f?.path,tags:o.tags,bucketName:v,autoExpireDays:a,localPath:s,
|
|
124
|
+
cors:w});n.setServiceState(g,r,o),s&&await nt(e,g,s)},it=t=>{let{state:e,service:r,
|
|
125
|
+
options:o,context:n}=t;(0,L.isBucketService)(r)&&tt(e,r,o,n)};var pt=require("@ez4/storage/library"),q=require("@ez4/aws-identity"),mt=require("@ez4/project/library");var ut=t=>{let{state:e,serviceType:r,options:o}=t;if(r!==pt.ServiceType)return null;
|
|
126
126
|
let n=(0,mt.getServiceName)("",o),s=`${n}-bucket-policy`;return(0,q.tryGetPolicy)(
|
|
127
|
-
e,s)??(0,q.createPolicy)(e,{policyDocument:W(n),policyName:s})};var lt=!1,Jt=()=>{lt||((0,yt.registerTriggers)(),(0,ft.registerTriggers)(),(0,gt.registerTriggers)(),
|
|
127
|
+
e,s)??(0,q.createPolicy)(e,{tags:o.tags,policyDocument:W(n),policyName:s})};var lt=!1,Jt=()=>{lt||((0,yt.registerTriggers)(),(0,ft.registerTriggers)(),(0,gt.registerTriggers)(),
|
|
128
128
|
(0,dt.registerTriggers)(),(0,St.createTrigger)("@ez4/aws-bucket",{"deploy:prepar\
|
|
129
129
|
eExecutionPolicy":ut,"deploy:prepareLinkedService":ct,"deploy:prepareResources":at,
|
|
130
130
|
"deploy:connectResources":it}),ke(),he(),Me(),lt=!0)};var kt=require("@ez4/aws-identity"),Qt=t=>/(.+)\.s3\.(.+)\.amazonaws\.com/i.test(
|
|
131
|
-
t),Xt=async t=>{let e=await(0,kt.getRegion)();return`${t}.s3.${e}.amazonaws.com`};var
|
|
131
|
+
t),Xt=async t=>{let e=await(0,kt.getRegion)();return`${t}.s3.${e}.amazonaws.com`};var xt=require("@ez4/stateful"),bt=require("@ez4/utils");var Yt=(t,e,r,o)=>{let n=(0,bt.hashData)(d,e.entryId,r.entryId);return(0,xt.attachEntry)(
|
|
132
132
|
t,{type:d,entryId:n,dependencies:[e.entryId,r.entryId],parameters:o})};var er=t=>t.type===d;var Pt=require("@ez4/stateful"),Bt=require("@ez4/utils");var tr=(t,e,r)=>{let o=r.objectKey,n=(0,Bt.hashData)(y,e.entryId,o);return(0,Pt.attachEntry)(
|
|
133
133
|
t,{type:y,entryId:n,dependencies:[e.entryId],parameters:r})};0&&(module.exports={BucketServiceName,BucketServiceType,ObjectServiceName,ObjectServiceType,
|
|
134
134
|
PolicyServiceName,PolicyServiceType,buildBucketArn,createBucket,createBucketEventFunction,
|
package/dist/main.mjs
CHANGED
|
@@ -55,13 +55,13 @@ let r=t.parameters,o=v(d,"policy",e),n=await r.getRole(e);return await oe({bucke
|
|
|
55
55
|
role:n}),{bucketName:o}},yt=async()=>{},ft=async t=>{let e=t.result;e&&await ne(
|
|
56
56
|
e.bucketName)};var ae=()=>{gt(f,se())};import{registerProvider as zt}from"@ez4/aws-common";import{stat as vt}from"node:fs/promises";import{ReplaceResourceError as Et}from"@ez4/aws-common";
|
|
57
57
|
import{deepCompare as Rt,deepEqual as Ct}from"@ez4/utils";import{createReadStream as dt}from"node:fs";import{S3Client as St,PutObjectCommand as kt,
|
|
58
|
-
PutObjectTaggingCommand as
|
|
58
|
+
PutObjectTaggingCommand as xt,DeleteObjectCommand as bt,NoSuchBucket as Pt}from"@aws-sdk/client-s3";
|
|
59
59
|
import{getTagList as Bt,Logger as C}from"@ez4/aws-common";import wt from"mime";var g="AWS:S3/Object",y="aws:s3.object";var Qr=t=>t.type===y,E=(t,e)=>`${t}/${e}`,Xr=t=>t.getDependencies(y).map(({result:r,
|
|
60
60
|
parameters:o})=>({lastModified:r?.lastModified,objectKey:o.objectKey}));var j=new St({}),h=async(t,e)=>{let{objectKey:r,filePath:o}=e;C.logCreate(g,E(t,
|
|
61
61
|
r));let n=wt.getType(o);return await j.send(new kt({Bucket:t,Key:r,Body:dt(o),...n&&
|
|
62
62
|
{ContentType:n}})),{objectKey:r}},ie=async(t,e,r)=>{C.logTag(g,E(t,e)),await j.send(
|
|
63
|
-
new
|
|
64
|
-
C.logDelete(g,E(t,e));try{return await j.send(new
|
|
63
|
+
new xt({Bucket:t,Key:e,Tagging:{TagSet:Bt({...r,ManagedBy:"EZ4"})}}))},pe=async(t,e)=>{
|
|
64
|
+
C.logDelete(g,E(t,e));try{return await j.send(new bt({Bucket:t,Key:e})),!0}catch(r){
|
|
65
65
|
if(!(r instanceof Pt))throw r;return!1}};var me=()=>({equals:jt,create:ue,replace:Ot,preview:ht,update:Tt,delete:Nt}),jt=(t,e)=>!!t.
|
|
66
66
|
result&&t.result.lastModified===e.result?.lastModified,ht=async(t,e)=>{let r=t.parameters,
|
|
67
67
|
o=e.parameters,n=Rt({...r,dependencies:t.dependencies,lastModified:await O(r.filePath)},
|
|
@@ -83,35 +83,37 @@ parameters:r});return e&&(It(t,s,e,{fromService:r.bucketName,getPermission:()=>(
|
|
|
83
83
|
principal:"s3.amazonaws.com",sourceArn:fe(o)})}),Lt(t,s.entryId,e.entryId)),s};import{getFunctionState as Gt,tryGetFunctionState as _t}from"@ez4/aws-function";
|
|
84
84
|
import{linkServiceExtras as Vt}from"@ez4/project/library";import{isRoleState as Pe}from"@ez4/aws-identity";
|
|
85
85
|
import{createLogGroup as Wt}from"@ez4/aws-logs";import{createFunction as Kt}from"@ez4/aws-function";import{join as qt}from"node:path";import{getDefinitionsObject as Mt}from"@ez4/project/library";
|
|
86
|
-
import{MappingServiceName as $t}from"@ez4/aws-function";import{
|
|
86
|
+
import{MappingServiceName as $t}from"@ez4/aws-function";import{getFunctionBundle as Ht}from"@ez4/aws-common";
|
|
87
87
|
var Se=async(t,e)=>{let{extras:r,debug:o,handler:n,listener:s}=e,c=Mt(t);return Ht(
|
|
88
88
|
$t,{templateFile:qt(import.meta.dirname,"../lib/event.ts"),filePrefix:"s3",define:{
|
|
89
89
|
...c},handler:n,listener:s,extras:r,debug:o})};var ke=(t,e,r,o)=>Kt(t,e,r,{handlerName:"s3EntryPoint",functionName:o.functionName,
|
|
90
90
|
sourceFile:o.handler.sourceFile,description:o.description,variables:o.variables,
|
|
91
91
|
timeout:o.timeout,memory:o.memory,debug:o.debug,tags:o.tags,getFunctionBundle:n=>{
|
|
92
92
|
let s=n.getDependencies();return Se(s,o)}});import{getServiceName as T}from"@ez4/project/library";import{getRandomName as Ut}from"@ez4/aws-common";
|
|
93
|
-
import{toKebabCase as N}from"@ez4/utils";var
|
|
93
|
+
import{toKebabCase as N}from"@ez4/utils";var xe=async(t,e)=>{if(t.globalName)return T(
|
|
94
94
|
t.globalName,e);let r=T(t,e),o=await Ut(16);return`${r.substring(0,46)}-${o}`},D=(t,e)=>`${N(
|
|
95
|
-
t.name)}-${N(e)}`,
|
|
95
|
+
t.name)}-${N(e)}`,be=(t,e,r)=>`${T(t,r)}-${N(e)}`;var x=class extends Error{constructor(){super("Execution role for S3 is missing.")}};var b;(o=>(o.LogRetention=90,o.Timeout=90,o.Memory=192))(b||={});var Be=(t,e,r,o)=>{if(!e.events)return;if(!o.role||!Pe(o.role))throw new x;let{handler:n,
|
|
96
96
|
listener:s,retention:c,timeout:m,memory:S,variables:k}=e.events,P=D(e,n.name),u=_t(
|
|
97
|
-
o,P,r);if(u)return u;let A=
|
|
98
|
-
return u=ke(t,o.role,De,{functionName:A,description:n.description,
|
|
99
|
-
memory:S??
|
|
100
|
-
variables,...k},handler:{functionName:n.name,sourceFile:n.
|
|
101
|
-
functionName:s.name,sourceFile:s.file}}}),o.setServiceState(
|
|
102
|
-
if(!e.extras||!e.events)return;if(!o.role||!Pe(o.role))
|
|
103
|
-
events,s=D(e,n.name),c=Gt(o,s,r);Vt(t,c.entryId,e.extras)};import{readdir as Zt}from"node:fs/promises";import{join as ve,relative as Ee}from"node:path";
|
|
97
|
+
o,P,r);if(u)return u;let A=be(e,n.name,r),De=Wt(t,{retention:c??b.LogRetention,groupName:A,
|
|
98
|
+
tags:r.tags});return u=ke(t,o.role,De,{functionName:A,description:n.description,
|
|
99
|
+
timeout:m??b.Timeout,memory:S??b.Memory,extras:e.extras,debug:r.debug,tags:r.tags,
|
|
100
|
+
variables:{...r.variables,...e.variables,...k},handler:{functionName:n.name,sourceFile:n.
|
|
101
|
+
file},...s&&{listener:{functionName:s.name,sourceFile:s.file}}}),o.setServiceState(
|
|
102
|
+
u,P,r),u},we=(t,e,r,o)=>{if(!e.extras||!e.events)return;if(!o.role||!Pe(o.role))
|
|
103
|
+
throw new x;let{handler:n}=e.events,s=D(e,n.name),c=Gt(o,s,r);Vt(t,c.entryId,e.extras)};import{readdir as Zt}from"node:fs/promises";import{join as ve,relative as Ee}from"node:path";
|
|
104
104
|
import{createBucketObject as Jt}from"@ez4/aws-bucket";var Re=async(t,e,r)=>{let o=process.
|
|
105
105
|
cwd(),n=ve(o,r),s=await Zt(n,{withFileTypes:!0,recursive:!0});for(let c of s){if(!c.
|
|
106
106
|
isFile())continue;let m=ve(c.parentPath,c.name);Jt(t,e,{objectKey:Ee(n,m),filePath:Ee(
|
|
107
107
|
o,m)})}};var Ce=(t,e,r)=>{let o=ee(t,e.name,r);return{entryIds:[o.entryId],constructor:`m\
|
|
108
108
|
ake('${o.parameters.bucketName}')`,from:"@ez4/aws-bucket/client",module:"Client"}};var je=t=>{let{service:e,options:r,context:o}=t;return z(e)?Ce(o,e,r):null},he=async t=>{
|
|
109
109
|
let{state:e,service:r,options:o,context:n}=t;if(!z(r))return;let{localPath:s,autoExpireDays:c,
|
|
110
|
-
events:m,cors:S}=r,k=await
|
|
111
|
-
autoExpireDays:c,localPath:s,cors:S});n.setServiceState(u,r,o),
|
|
112
|
-
Oe=t=>{let{state:e,service:r,options:o,context:n}=t;z(r)&&we(
|
|
110
|
+
events:m,cors:S}=r,k=await xe(r,o),P=Be(e,r,o,n),u=de(e,P,{eventsPath:m?.path,tags:o.
|
|
111
|
+
tags,bucketName:k,autoExpireDays:c,localPath:s,cors:S});n.setServiceState(u,r,o),
|
|
112
|
+
s&&await Re(e,u,s)},Oe=t=>{let{state:e,service:r,options:o,context:n}=t;z(r)&&we(
|
|
113
|
+
e,r,o,n)};import{ServiceType as Qt}from"@ez4/storage/library";import{createPolicy as Xt,tryGetPolicy as Yt}from"@ez4/aws-identity";
|
|
113
114
|
import{getServiceName as er}from"@ez4/project/library";var Te=t=>{let{state:e,serviceType:r,options:o}=t;if(r!==Qt)return null;let n=er(
|
|
114
|
-
"",o),s=`${n}-bucket-policy`;return Yt(e,s)??Xt(e,{policyDocument:ge(
|
|
115
|
+
"",o),s=`${n}-bucket-policy`;return Yt(e,s)??Xt(e,{tags:o.tags,policyDocument:ge(
|
|
116
|
+
n),policyName:s})};var Ne=!1,En=()=>{Ne||(tr(),rr(),or(),nr(),sr("@ez4/aws-bucket",{"deploy:prepare\
|
|
115
117
|
ExecutionPolicy":Te,"deploy:prepareLinkedService":je,"deploy:prepareResources":he,
|
|
116
118
|
"deploy:connectResources":Oe}),X(),ae(),ye(),Ne=!0)};import{getRegion as cr}from"@ez4/aws-identity";var jn=t=>/(.+)\.s3\.(.+)\.amazonaws\.com/i.
|
|
117
119
|
test(t),hn=async t=>{let e=await cr();return`${t}.s3.${e}.amazonaws.com`};import{attachEntry as ar}from"@ez4/stateful";import{hashData as ir}from"@ez4/utils";var zn=(t,e,r,o)=>{let n=ir(f,e.entryId,r.entryId);return ar(t,{type:f,entryId:n,
|
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.19.0",
|
|
5
5
|
"author": "Silas B.",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"type": "module",
|
|
@@ -48,14 +48,14 @@
|
|
|
48
48
|
"dependencies": {
|
|
49
49
|
"@aws-sdk/client-s3": "^3.758.0",
|
|
50
50
|
"@aws-sdk/s3-request-presigner": "^3.758.0",
|
|
51
|
-
"@ez4/aws-common": "^0.
|
|
52
|
-
"@ez4/aws-function": "^0.
|
|
53
|
-
"@ez4/aws-identity": "^0.
|
|
54
|
-
"@ez4/aws-logs": "^0.
|
|
55
|
-
"@ez4/project": "^0.
|
|
56
|
-
"@ez4/stateful": "^0.
|
|
57
|
-
"@ez4/storage": "^0.
|
|
58
|
-
"@ez4/utils": "^0.
|
|
51
|
+
"@ez4/aws-common": "^0.19.0",
|
|
52
|
+
"@ez4/aws-function": "^0.19.0",
|
|
53
|
+
"@ez4/aws-identity": "^0.19.0",
|
|
54
|
+
"@ez4/aws-logs": "^0.19.0",
|
|
55
|
+
"@ez4/project": "^0.19.0",
|
|
56
|
+
"@ez4/stateful": "^0.19.0",
|
|
57
|
+
"@ez4/storage": "^0.19.0",
|
|
58
|
+
"@ez4/utils": "^0.19.0",
|
|
59
59
|
"mime": "^3.0.0"
|
|
60
60
|
}
|
|
61
61
|
}
|