@ez4/aws-bucket 0.6.0 → 0.8.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/bucket/utils.d.ts +1 -2
- package/dist/main.cjs +51 -51
- package/dist/main.d.ts +2 -0
- package/dist/main.mjs +45 -44
- package/dist/object/utils.d.ts +3 -3
- package/dist/utils/domain.d.ts +2 -0
- package/package.json +7 -7
package/dist/bucket/utils.d.ts
CHANGED
|
@@ -3,5 +3,4 @@ import type { BucketState } from './types.js';
|
|
|
3
3
|
export declare const isBucketState: (resource: EntryState) => resource is BucketState;
|
|
4
4
|
export declare const getBucketStateId: (bucketName: string) => string;
|
|
5
5
|
export declare const getBucketState: (state: EntryStates, bucketName: string) => BucketState;
|
|
6
|
-
export declare const
|
|
7
|
-
export declare const getBucketName: <E extends EntryState>(serviceName: string, resourceId: string, context: StepContext<E | BucketState>) => any;
|
|
6
|
+
export declare const getBucketName: (serviceName: string, resourceId: string, context: StepContext) => string;
|
package/dist/main.cjs
CHANGED
|
@@ -1,81 +1,81 @@
|
|
|
1
|
-
"use strict";var He=Object.create;var B=Object.defineProperty;var Me=Object.getOwnPropertyDescriptor;var $e=Object.getOwnPropertyNames;var Fe=Object.getPrototypeOf,Ae=Object.prototype.hasOwnProperty;var Ue=(e,t)=>{for(var r in t)B(e,r,{get:t[r],enumerable:!0})},
|
|
1
|
+
"use strict";var He=Object.create;var B=Object.defineProperty;var Me=Object.getOwnPropertyDescriptor;var $e=Object.getOwnPropertyNames;var Fe=Object.getPrototypeOf,Ae=Object.prototype.hasOwnProperty;var Ue=(e,t)=>{for(var r in t)B(e,r,{get:t[r],enumerable:!0})},z=(e,t,r,o)=>{if(t&&
|
|
2
2
|
typeof t=="object"||typeof t=="function")for(let c of $e(t))!Ae.call(e,c)&&c!==r&&
|
|
3
|
-
B(e,c,{get:()=>t[c],enumerable:!(o=Me(t,c))||o.enumerable});return e};var Ge=(e,t,r)=>(r=e!=null?He(Fe(e)):{},
|
|
4
|
-
enumerable:!0}):r,e)),We=e=>
|
|
5
|
-
ObjectServiceType:()=>p,PolicyServiceName:()=>f,PolicyServiceType:()=>u,createBucket:()=>
|
|
6
|
-
createBucketObject:()=>
|
|
7
|
-
getBucketObjectFiles:()=>
|
|
8
|
-
|
|
9
|
-
module.exports=We(
|
|
10
|
-
|
|
11
|
-
n,t),await k.send(new a.CreateBucketCommand({Bucket:t})),{bucketName:t}},
|
|
3
|
+
B(e,c,{get:()=>t[c],enumerable:!(o=Me(t,c))||o.enumerable});return e};var Ge=(e,t,r)=>(r=e!=null?He(Fe(e)):{},z(t||!e||!e.__esModule?B(r,"default",{value:e,
|
|
4
|
+
enumerable:!0}):r,e)),We=e=>z(B({},"__esModule",{value:!0}),e);var kt={};Ue(kt,{BucketServiceName:()=>n,BucketServiceType:()=>i,ObjectServiceName:()=>y,
|
|
5
|
+
ObjectServiceType:()=>p,PolicyServiceName:()=>f,PolicyServiceType:()=>u,createBucket:()=>D,
|
|
6
|
+
createBucketObject:()=>dt,createBucketPolicy:()=>gt,getBucketDomain:()=>ft,getBucketName:()=>b,
|
|
7
|
+
getBucketObjectFiles:()=>st,getBucketObjectPath:()=>P,getBucketState:()=>Ye,getBucketStateId:()=>E,
|
|
8
|
+
getPolicyDocument:()=>N,isBucketDomain:()=>lt,isBucketObjectState:()=>ct,isBucketPolicyState:()=>St,
|
|
9
|
+
isBucketState:()=>J,registerTriggers:()=>yt});module.exports=We(kt);var ve=require("@ez4/aws-common"),Te=require("@ez4/aws-identity"),he=require("@ez4/storage/library"),
|
|
10
|
+
Ne=require("@ez4/project/library");var G=require("@ez4/aws-common");var M=require("@ez4/aws-common"),j=require("@ez4/utils");var m=require("@ez4/aws-common"),a=require("@aws-sdk/client-s3");var n="AWS:S3/Bucket",i="aws:s3.bucket";var k=new a.S3Client({}),I=async e=>{let{bucketName:t}=e;return m.Logger.logCreate(
|
|
11
|
+
n,t),await k.send(new a.CreateBucketCommand({Bucket:t})),{bucketName:t}},L=async(e,t)=>{
|
|
12
12
|
m.Logger.logTag(n,e),await k.send(new a.PutBucketTaggingCommand({Bucket:e,Tagging:{
|
|
13
|
-
TagSet:(0,m.getTagList)({...t,ManagedBy:"EZ4"})}}))},
|
|
13
|
+
TagSet:(0,m.getTagList)({...t,ManagedBy:"EZ4"})}}))},q=async(e,t)=>{m.Logger.logCreate(
|
|
14
14
|
n,`${e} lifecycle`),await k.send(new a.PutBucketLifecycleConfigurationCommand({Bucket:e,
|
|
15
15
|
LifecycleConfiguration:{Rules:[{ID:"ID0",Status:a.ExpirationStatus.Enabled,Filter:{
|
|
16
|
-
Prefix:"*"},Expiration:{Days:t}}]}}))},
|
|
17
|
-
fecycle`),await k.send(new a.DeleteBucketLifecycleCommand({Bucket:e}))},
|
|
18
|
-
m.Logger.logDelete(n,e),await k.send(new a.DeleteBucketCommand({Bucket:e}))};var
|
|
16
|
+
Prefix:"*"},Expiration:{Days:t}}]}}))},K=async e=>{m.Logger.logDelete(n,`${e} li\
|
|
17
|
+
fecycle`),await k.send(new a.DeleteBucketLifecycleCommand({Bucket:e}))},H=async e=>{
|
|
18
|
+
m.Logger.logDelete(n,e),await k.send(new a.DeleteBucketCommand({Bucket:e}))};var $=()=>({equals:Ze,create:F,replace:Qe,preview:Je,update:Ve,delete:Xe}),Ze=(e,t)=>!!e.
|
|
19
19
|
result&&e.result.bucketName===t.result?.bucketName,Je=async(e,t)=>{let r={...e.parameters,
|
|
20
20
|
dependencies:e.dependencies},o={...t.parameters,dependencies:t.dependencies},c=(0,j.deepCompare)(
|
|
21
|
-
r,o);if(c.counts)return{...c,name:r.bucketName}},Qe=async(e,t)=>{if(t.result)throw new
|
|
22
|
-
n,e.entryId,t.entryId);return
|
|
23
|
-
t);return await Promise.all([
|
|
21
|
+
r,o);if(c.counts)return{...c,name:r.bucketName}},Qe=async(e,t)=>{if(t.result)throw new M.ReplaceResourceError(
|
|
22
|
+
n,e.entryId,t.entryId);return F(e)},F=async e=>{let t=e.parameters,{bucketName:r}=await I(
|
|
23
|
+
t);return await Promise.all([A(r,t,void 0),U(r,t.tags,void 0)]),{bucketName:r}},
|
|
24
24
|
Ve=async(e,t)=>{let{result:r,parameters:o}=e;if(!r)return;let c=r.bucketName;await Promise.
|
|
25
|
-
all([
|
|
26
|
-
t&&await
|
|
27
|
-
if(t.autoExpireDays)return
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
let t=await(0,Z.getRegion)();return`${e}.s3.${t}.amazonaws.com`},b=(e,t,r)=>{let o=r.
|
|
32
|
-
getDependencies(i).at(0)?.result;if(!o?.bucketName)throw new W.IncompleteResourceError(
|
|
25
|
+
all([A(c,o,t.parameters),U(c,o.tags,t.parameters.tags)])},Xe=async e=>{let t=e.result;
|
|
26
|
+
t&&await H(t.bucketName)},A=async(e,t,r)=>{if(t.autoExpireDays!==r?.autoExpireDays){
|
|
27
|
+
if(t.autoExpireDays)return q(e,t.autoExpireDays);if(r?.autoExpireDays)return K(e)}},
|
|
28
|
+
U=async(e,t,r)=>{let o=t??{};!(0,j.deepEqual)(o,r??{})&&await L(e,o)};var W=()=>{(0,G.registerProvider)(i,$())};var te=require("@ez4/aws-common");var Y=require("@ez4/aws-common");var R=require("@ez4/stateful"),Z=require("@ez4/aws-common"),w=require("@ez4/utils");var J=e=>e.type===i,E=e=>(0,w.hashData)(i,(0,w.toKebabCase)(e)),Ye=(e,t)=>{let r=(0,R.getEntry)(
|
|
29
|
+
e,E(t));if(!J(r))throw new R.EntryNotFoundError(r.entryId);return r},b=(e,t,r)=>{
|
|
30
|
+
let o=r.getDependencies(i).at(0)?.result;if(!o?.bucketName)throw new Z.IncompleteResourceError(
|
|
33
31
|
e,t,"bucketName");return o.bucketName};var O=require("@ez4/aws-common"),S=require("@aws-sdk/client-s3");var f="AWS:S3/Policy",u="aws:s3.policy";var Q=new S.S3Client({}),V=async e=>{let{bucketName:t,role:r}=e;return O.Logger.
|
|
34
32
|
logCreate(f,t),await Q.send(new S.PutBucketPolicyCommand({Bucket:t,Policy:JSON.stringify(
|
|
35
33
|
r)})),{bucketName:t}},X=async e=>{O.Logger.logDelete(f,e),await Q.send(new S.DeleteBucketPolicyCommand(
|
|
36
|
-
{Bucket:e}))};var _=()=>({equals:
|
|
37
|
-
result&&e.result.bucketName===t.result?.bucketName,
|
|
34
|
+
{Bucket:e}))};var _=()=>({equals:_e,create:ee,replace:tt,preview:et,update:rt,delete:ot}),_e=(e,t)=>!!e.
|
|
35
|
+
result&&e.result.bucketName===t.result?.bucketName,et=async()=>{},tt=async(e,t,r)=>{
|
|
38
36
|
if(t.result)throw new Y.ReplaceResourceError(f,e.entryId,t.entryId);return ee(e,
|
|
39
37
|
r)},ee=async(e,t)=>{let r=e.parameters,o=b(f,"policy",t),c=await r.getRole(t);return await V(
|
|
40
|
-
{bucketName:o,role:c}),{bucketName:o}},
|
|
38
|
+
{bucketName:o,role:c}),{bucketName:o}},rt=async()=>{},ot=async e=>{let t=e.result;
|
|
41
39
|
t&&await X(t.bucketName)};var re=()=>{(0,te.registerProvider)(u,_())};var ye=require("@ez4/aws-common");var ne=require("node:fs/promises"),ie=require("@ez4/aws-common"),C=require("@ez4/utils");var d=require("@ez4/aws-common"),oe=require("node:fs"),ce=Ge(require("mime"),1),
|
|
42
|
-
l=require("@aws-sdk/client-s3");var y="AWS:S3/Object",p="aws:s3.object";var
|
|
40
|
+
l=require("@aws-sdk/client-s3");var y="AWS:S3/Object",p="aws:s3.object";var ct=e=>e.type===p,P=(e,t)=>`${e}/${t}`,st=e=>e.getDependencies(p).map(({result:r})=>({
|
|
43
41
|
lastModified:r?.lastModified,objectKey:r?.objectKey}));var v=new l.S3Client({}),T=async(e,t)=>{let{objectKey:r,filePath:o}=t;d.Logger.logCreate(
|
|
44
42
|
y,P(e,r));let c=ce.default.getType(o);return await v.send(new l.PutObjectCommand(
|
|
45
43
|
{Bucket:e,Key:r,Body:(0,oe.createReadStream)(o),...c&&{ContentType:c}})),{objectKey:r}},
|
|
46
44
|
se=async(e,t,r)=>{d.Logger.logTag(y,P(e,t)),await v.send(new l.PutObjectTaggingCommand(
|
|
47
45
|
{Bucket:e,Key:t,Tagging:{TagSet:(0,d.getTagList)({...r,ManagedBy:"EZ4"})}}))},ae=async(e,t)=>{
|
|
48
|
-
d.Logger.logDelete(y,P(e,t)),await v.send(new l.DeleteObjectCommand({Bucket:e,Key:t}))};var pe=()=>({equals:
|
|
49
|
-
result&&e.result.objectKey===t.result?.objectKey,
|
|
46
|
+
d.Logger.logDelete(y,P(e,t)),await v.send(new l.DeleteObjectCommand({Bucket:e,Key:t}))};var pe=()=>({equals:at,create:me,replace:it,preview:nt,update:pt,delete:mt}),at=(e,t)=>!!e.
|
|
47
|
+
result&&e.result.objectKey===t.result?.objectKey,nt=async(e,t)=>{let r=e.parameters,
|
|
50
48
|
o=t.parameters,c=(0,C.deepCompare)({...r,dependencies:e.dependencies,lastModified:await h(
|
|
51
49
|
r.filePath)},{...o,dependencies:t.dependencies,lastModified:e.result?.lastModified});
|
|
52
|
-
if(c.counts)return{...c,name:r.objectKey}},
|
|
50
|
+
if(c.counts)return{...c,name:r.objectKey}},it=async(e,t,r)=>{if(t.result)throw new ie.ReplaceResourceError(
|
|
53
51
|
y,e.entryId,t.entryId);return me(e,r)},me=async(e,t)=>{let r=e.parameters,o=b(y,
|
|
54
52
|
"bucket",t),c=await h(r.filePath),{objectKey:s}=await T(o,r);return await ue(o,s,
|
|
55
|
-
r.tags,e.parameters.tags),{lastModified:c,bucketName:o,objectKey:s}},
|
|
56
|
-
let{result:r,parameters:o}=e;if(!r)return;let{bucketName:c,objectKey:s}=r,g=
|
|
57
|
-
o,t.parameters);return await ue(c,s,o.tags,t.parameters.tags),g},
|
|
53
|
+
r.tags,e.parameters.tags),{lastModified:c,bucketName:o,objectKey:s}},pt=async(e,t)=>{
|
|
54
|
+
let{result:r,parameters:o}=e;if(!r)return;let{bucketName:c,objectKey:s}=r,g=ut(r,
|
|
55
|
+
o,t.parameters);return await ue(c,s,o.tags,t.parameters.tags),g},mt=async e=>{let t=e.
|
|
58
56
|
result;t&&await ae(t.bucketName,t.objectKey)},h=async e=>{let{mtime:t}=await(0,ne.stat)(
|
|
59
|
-
e);return t.getTime()},
|
|
57
|
+
e);return t.getTime()},ut=async(e,t,r)=>{let o=await h(t.filePath);if(o<=e.lastModified&&
|
|
60
58
|
t.filePath===r.filePath)return e;let{bucketName:c,objectKey:s}=e;return await T(
|
|
61
59
|
c,{...t,objectKey:s}),{lastModified:o,bucketName:c,objectKey:s}},ue=async(e,t,r,o)=>{
|
|
62
|
-
let c=r??{};!(0,C.deepEqual)(c,o??{})&&await se(e,t,c)};var le=()=>{(0,ye.registerProvider)(p,pe())};var
|
|
60
|
+
let c=r??{};!(0,C.deepEqual)(c,o??{})&&await se(e,t,c)};var le=()=>{(0,ye.registerProvider)(p,pe())};var ge=require("@ez4/aws-identity");var fe=require("@ez4/aws-identity"),N=e=>(0,fe.createPolicyDocument)([{resourceIds:[
|
|
63
61
|
`arn:aws:s3:::${e}-*`,`arn:aws:s3:::${e}-*/*`],permissions:["s3:ListBucket","s3:\
|
|
64
|
-
PutObject","s3:GetObject","s3:DeleteObject"]}]);var
|
|
65
|
-
-${c}`;return(0,
|
|
66
|
-
s)})};var
|
|
67
|
-
e,{type:i,entryId:o,dependencies:[],parameters:{...t,bucketName:r}})};var
|
|
68
|
-
|
|
62
|
+
PutObject","s3:GetObject","s3:DeleteObject"]}]);var Se=async e=>{let{state:t,options:r}=e,{resourcePrefix:o,projectName:c}=r,s=`${o}\
|
|
63
|
+
-${c}`;return(0,ge.createPolicy)(t,{policyName:`${s}-bucket-policy`,policyDocument:N(
|
|
64
|
+
s)})};var Be=require("@ez4/project/library"),je=require("@ez4/storage/library");var de=require("@ez4/utils"),ke=require("@ez4/stateful");var D=(e,t)=>{let r=(0,de.toKebabCase)(t.bucketName),o=E(t.bucketName);return(0,ke.attachEntry)(
|
|
65
|
+
e,{type:i,entryId:o,dependencies:[],parameters:{...t,bucketName:r}})};var be=require("node:fs/promises"),x=require("node:path"),Pe=require("@ez4/aws-bucket"),
|
|
66
|
+
xe=async(e,t,r)=>{let o=(0,x.join)(process.cwd(),r),c=await(0,be.readdir)(o,{withFileTypes:!0,
|
|
69
67
|
recursive:!0});for(let s of c){if(!s.isFile())continue;let g=(0,x.join)(s.parentPath,
|
|
70
|
-
s.name),Ke=(0,x.relative)(o,g);(0,
|
|
71
|
-
return;let{autoExpireDays:c,localPath:s}=r,g=
|
|
72
|
-
r,o),autoExpireDays:c,localPath:s});s&&await
|
|
73
|
-
let{service:t,options:r}=e;return(0,
|
|
74
|
-
t,r)}')`,module:"Client",from:"@ez4/aws-bucket/client"}:null};var
|
|
75
|
-
(0,
|
|
76
|
-
oy:prepareLinkedService":
|
|
77
|
-
e,{
|
|
68
|
+
s.name),Ke=(0,x.relative)(o,g);(0,Pe.createBucketObject)(e,t,{objectKey:Ke,filePath:g})}};var Re=async e=>{let{state:t,service:r,options:o}=e;if(!(0,je.isBucketService)(r))
|
|
69
|
+
return;let{autoExpireDays:c,localPath:s}=r,g=D(t,{bucketName:(0,Be.getServiceName)(
|
|
70
|
+
r,o),autoExpireDays:c,localPath:s});s&&await xe(t,g,s)};var we=require("@ez4/storage/library"),Ee=require("@ez4/project/library"),Ce=async e=>{
|
|
71
|
+
let{service:t,options:r}=e;return(0,we.isBucketService)(t)?{constructor:`make('${(0,Ee.getServiceName)(
|
|
72
|
+
t,r)}')`,module:"Client",from:"@ez4/aws-bucket/client"}:null};var Oe=!1,yt=()=>{Oe||((0,ve.registerTriggers)(),(0,Te.registerTriggers)(),(0,he.registerTriggers)(),
|
|
73
|
+
(0,Ne.createTrigger)("@ez4/aws-bucket",{"deploy:prepareExecutionPolicy":Se,"depl\
|
|
74
|
+
oy:prepareLinkedService":Ce,"deploy:prepareResources":Re}),W(),re(),le(),Oe=!0)};var De=require("@ez4/aws-identity"),lt=e=>/(.+)\.s3\.(.+)\.amazonaws\.com/i.test(
|
|
75
|
+
e),ft=async e=>{let t=await(0,De.getRegion)();return`${e}.s3.${t}.amazonaws.com`};var ze=require("@ez4/stateful"),Ie=require("@ez4/utils");var gt=(e,t,r,o)=>{let c=(0,Ie.hashData)(u,t.entryId,r.entryId);return(0,ze.attachEntry)(
|
|
76
|
+
e,{type:u,entryId:c,dependencies:[t.entryId,r.entryId],parameters:o})};var St=e=>e.type===u;var Le=require("@ez4/stateful"),qe=require("@ez4/utils");var dt=(e,t,r)=>{let o=r.objectKey,c=(0,qe.hashData)(p,t.entryId,o);return(0,Le.attachEntry)(
|
|
78
77
|
e,{type:p,entryId:c,dependencies:[t.entryId],parameters:r})};0&&(module.exports={BucketServiceName,BucketServiceType,ObjectServiceName,ObjectServiceType,
|
|
79
78
|
PolicyServiceName,PolicyServiceType,createBucket,createBucketObject,createBucketPolicy,
|
|
80
79
|
getBucketDomain,getBucketName,getBucketObjectFiles,getBucketObjectPath,getBucketState,
|
|
81
|
-
getBucketStateId,isBucketObjectState,isBucketPolicyState,
|
|
80
|
+
getBucketStateId,getPolicyDocument,isBucketDomain,isBucketObjectState,isBucketPolicyState,
|
|
81
|
+
isBucketState,registerTriggers});
|
package/dist/main.d.ts
CHANGED
package/dist/main.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import{registerTriggers as
|
|
2
|
-
import{registerTriggers as
|
|
1
|
+
import{registerTriggers as it}from"@ez4/aws-common";import{registerTriggers as pt}from"@ez4/aws-identity";
|
|
2
|
+
import{registerTriggers as mt}from"@ez4/storage/library";import{createTrigger as ut}from"@ez4/project/library";import{registerProvider as Se}from"@ez4/aws-common";import{ReplaceResourceError as ie}from"@ez4/aws-common";import{deepCompare as pe,
|
|
3
3
|
deepEqual as me}from"@ez4/utils";import{getTagList as ee,Logger as l}from"@ez4/aws-common";import{CreateBucketCommand as te,
|
|
4
4
|
DeleteBucketCommand as re,PutBucketTaggingCommand as oe,PutBucketLifecycleConfigurationCommand as ce,
|
|
5
5
|
DeleteBucketLifecycleCommand as se,ExpirationStatus as ae,S3Client as ne}from"@aws-sdk/client-s3";var a="AWS:S3/Bucket",n="aws:s3.bucket";var f=new ne({}),B=async e=>{let{bucketName:t}=e;return l.logCreate(a,t),await f.
|
|
@@ -18,56 +18,57 @@ fe=async(e,t)=>{let{result:r,parameters:o}=e;if(!r)return;let c=r.bucketName;awa
|
|
|
18
18
|
all([v(c,o,t.parameters),T(c,o.tags,t.parameters.tags)])},ge=async e=>{let t=e.result;
|
|
19
19
|
t&&await E(t.bucketName)},v=async(e,t,r)=>{if(t.autoExpireDays!==r?.autoExpireDays){
|
|
20
20
|
if(t.autoExpireDays)return R(e,t.autoExpireDays);if(r?.autoExpireDays)return w(e)}},
|
|
21
|
-
T=async(e,t,r)=>{let o=t??{};!me(o,r??{})&&await j(e,o)};var h=()=>{Se(n,C())};import{registerProvider as
|
|
22
|
-
import{hashData as Pe,toKebabCase as xe}from"@ez4/utils";
|
|
23
|
-
r.entryId);return r},
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
await D.send(new we({Bucket:
|
|
28
|
-
|
|
29
|
-
result
|
|
30
|
-
if(t.result)throw new Ce(y,e.entryId,t.entryId);return q(e,r)},q=async(e,t)=>{let r=e.
|
|
21
|
+
T=async(e,t,r)=>{let o=t??{};!me(o,r??{})&&await j(e,o)};var h=()=>{Se(n,C())};import{registerProvider as Ne}from"@ez4/aws-common";import{ReplaceResourceError as Ee}from"@ez4/aws-common";import{EntryNotFoundError as de,getEntry as ke}from"@ez4/stateful";import{IncompleteResourceError as be}from"@ez4/aws-common";
|
|
22
|
+
import{hashData as Pe,toKebabCase as xe}from"@ez4/utils";var Be=e=>e.type===n,d=e=>Pe(n,xe(e)),It=(e,t)=>{let r=ke(e,d(t));if(!Be(r))throw new de(
|
|
23
|
+
r.entryId);return r},g=(e,t,r)=>{let o=r.getDependencies(n).at(0)?.result;if(!o?.
|
|
24
|
+
bucketName)throw new be(e,t,"bucketName");return o.bucketName};import{Logger as N}from"@ez4/aws-common";import{S3Client as je,PutBucketPolicyCommand as Re,
|
|
25
|
+
DeleteBucketPolicyCommand as we}from"@aws-sdk/client-s3";var y="AWS:S3/Policy",p="aws:s3.policy";var D=new je({}),z=async e=>{let{bucketName:t,role:r}=e;return N.logCreate(y,t),
|
|
26
|
+
await D.send(new Re({Bucket:t,Policy:JSON.stringify(r)})),{bucketName:t}},I=async e=>{
|
|
27
|
+
N.logDelete(y,e),await D.send(new we({Bucket:e}))};var L=()=>({equals:Ce,create:q,replace:ve,preview:Oe,update:Te,delete:he}),Ce=(e,t)=>!!e.
|
|
28
|
+
result&&e.result.bucketName===t.result?.bucketName,Oe=async()=>{},ve=async(e,t,r)=>{
|
|
29
|
+
if(t.result)throw new Ee(y,e.entryId,t.entryId);return q(e,r)},q=async(e,t)=>{let r=e.
|
|
31
30
|
parameters,o=g(y,"policy",t),c=await r.getRole(t);return await z({bucketName:o,role:c}),
|
|
32
|
-
{bucketName:o}},
|
|
33
|
-
import{deepCompare as
|
|
34
|
-
import
|
|
35
|
-
DeleteObjectCommand as
|
|
36
|
-
lastModified:r?.lastModified,objectKey:r?.objectKey}));var b=new
|
|
37
|
-
r));let c=
|
|
31
|
+
{bucketName:o}},Te=async()=>{},he=async e=>{let t=e.result;t&&await I(t.bucketName)};var K=()=>{Ne(p,L())};import{registerProvider as Ve}from"@ez4/aws-common";import{stat as Me}from"node:fs/promises";import{ReplaceResourceError as $e}from"@ez4/aws-common";
|
|
32
|
+
import{deepCompare as Fe,deepEqual as Ae}from"@ez4/utils";import{getTagList as De,Logger as k}from"@ez4/aws-common";import{createReadStream as ze}from"node:fs";
|
|
33
|
+
import Ie from"mime";import{PutObjectCommand as Le,PutObjectTaggingCommand as qe,
|
|
34
|
+
DeleteObjectCommand as Ke,S3Client as He}from"@aws-sdk/client-s3";var m="AWS:S3/Object",i="aws:s3.object";var er=e=>e.type===i,S=(e,t)=>`${e}/${t}`,tr=e=>e.getDependencies(i).map(({result:r})=>({
|
|
35
|
+
lastModified:r?.lastModified,objectKey:r?.objectKey}));var b=new He({}),P=async(e,t)=>{let{objectKey:r,filePath:o}=t;k.logCreate(m,S(e,
|
|
36
|
+
r));let c=Ie.getType(o);return await b.send(new Le({Bucket:e,Key:r,Body:ze(o),...c&&
|
|
38
37
|
{ContentType:c}})),{objectKey:r}},H=async(e,t,r)=>{k.logTag(m,S(e,t)),await b.send(
|
|
39
|
-
new
|
|
40
|
-
k.logDelete(m,S(e,t)),await b.send(new
|
|
41
|
-
result&&e.result.objectKey===t.result?.objectKey,
|
|
42
|
-
o=t.parameters,c=
|
|
38
|
+
new qe({Bucket:e,Key:t,Tagging:{TagSet:De({...r,ManagedBy:"EZ4"})}}))},M=async(e,t)=>{
|
|
39
|
+
k.logDelete(m,S(e,t)),await b.send(new Ke({Bucket:e,Key:t}))};var $=()=>({equals:Ue,create:F,replace:We,preview:Ge,update:Ze,delete:Je}),Ue=(e,t)=>!!e.
|
|
40
|
+
result&&e.result.objectKey===t.result?.objectKey,Ge=async(e,t)=>{let r=e.parameters,
|
|
41
|
+
o=t.parameters,c=Fe({...r,dependencies:e.dependencies,lastModified:await x(r.filePath)},
|
|
43
42
|
{...o,dependencies:t.dependencies,lastModified:e.result?.lastModified});if(c.counts)
|
|
44
|
-
return{...c,name:r.objectKey}},
|
|
43
|
+
return{...c,name:r.objectKey}},We=async(e,t,r)=>{if(t.result)throw new $e(m,e.entryId,
|
|
45
44
|
t.entryId);return F(e,r)},F=async(e,t)=>{let r=e.parameters,o=g(m,"bucket",t),c=await x(
|
|
46
45
|
r.filePath),{objectKey:s}=await P(o,r);return await A(o,s,r.tags,e.parameters.tags),
|
|
47
|
-
{lastModified:c,bucketName:o,objectKey:s}},
|
|
48
|
-
if(!r)return;let{bucketName:c,objectKey:s}=r,u=
|
|
49
|
-
c,s,o.tags,t.parameters.tags),u},
|
|
50
|
-
t.objectKey)},x=async e=>{let{mtime:t}=await
|
|
46
|
+
{lastModified:c,bucketName:o,objectKey:s}},Ze=async(e,t)=>{let{result:r,parameters:o}=e;
|
|
47
|
+
if(!r)return;let{bucketName:c,objectKey:s}=r,u=Qe(r,o,t.parameters);return await A(
|
|
48
|
+
c,s,o.tags,t.parameters.tags),u},Je=async e=>{let t=e.result;t&&await M(t.bucketName,
|
|
49
|
+
t.objectKey)},x=async e=>{let{mtime:t}=await Me(e);return t.getTime()},Qe=async(e,t,r)=>{
|
|
51
50
|
let o=await x(t.filePath);if(o<=e.lastModified&&t.filePath===r.filePath)return e;
|
|
52
51
|
let{bucketName:c,objectKey:s}=e;return await P(c,{...t,objectKey:s}),{lastModified:o,
|
|
53
|
-
bucketName:c,objectKey:s}},A=async(e,t,r,o)=>{let c=r??{};!
|
|
54
|
-
e,t,c)};var U=()=>{
|
|
52
|
+
bucketName:c,objectKey:s}},A=async(e,t,r,o)=>{let c=r??{};!Ae(c,o??{})&&await H(
|
|
53
|
+
e,t,c)};var U=()=>{Ve(i,$())};import{createPolicy as Ye}from"@ez4/aws-identity";import{createPolicyDocument as Xe}from"@ez4/aws-identity";var G=e=>Xe([{resourceIds:[
|
|
55
54
|
`arn:aws:s3:::${e}-*`,`arn:aws:s3:::${e}-*/*`],permissions:["s3:ListBucket","s3:\
|
|
56
55
|
PutObject","s3:GetObject","s3:DeleteObject"]}]);var W=async e=>{let{state:t,options:r}=e,{resourcePrefix:o,projectName:c}=r,s=`${o}\
|
|
57
|
-
-${c}`;return
|
|
58
|
-
dependencies:[],parameters:{...t,bucketName:r}})};import{readdir as
|
|
59
|
-
import{createBucketObject as
|
|
60
|
-
process.cwd(),r),c=await
|
|
61
|
-
isFile())continue;let u=J(s.parentPath,s.name),_=
|
|
62
|
-
localPath:s}=r,u=Z(t,{bucketName:
|
|
63
|
-
t,u,s)};import{isBucketService as
|
|
64
|
-
var X=async e=>{let{service:t,options:r}=e;return
|
|
65
|
-
t,r)}')`,module:"Client",from:"@ez4/aws-bucket/client"}:null};var Y=!1,
|
|
56
|
+
-${c}`;return Ye(t,{policyName:`${s}-bucket-policy`,policyDocument:G(s)})};import{getServiceName as ct}from"@ez4/project/library";import{isBucketService as st}from"@ez4/storage/library";import{toKebabCase as _e}from"@ez4/utils";import{attachEntry as et}from"@ez4/stateful";var Z=(e,t)=>{let r=_e(t.bucketName),o=d(t.bucketName);return et(e,{type:n,entryId:o,
|
|
57
|
+
dependencies:[],parameters:{...t,bucketName:r}})};import{readdir as tt}from"node:fs/promises";import{join as J,relative as rt}from"node:path";
|
|
58
|
+
import{createBucketObject as ot}from"@ez4/aws-bucket";var Q=async(e,t,r)=>{let o=J(
|
|
59
|
+
process.cwd(),r),c=await tt(o,{withFileTypes:!0,recursive:!0});for(let s of c){if(!s.
|
|
60
|
+
isFile())continue;let u=J(s.parentPath,s.name),_=rt(o,u);ot(e,t,{objectKey:_,filePath:u})}};var V=async e=>{let{state:t,service:r,options:o}=e;if(!st(r))return;let{autoExpireDays:c,
|
|
61
|
+
localPath:s}=r,u=Z(t,{bucketName:ct(r,o),autoExpireDays:c,localPath:s});s&&await Q(
|
|
62
|
+
t,u,s)};import{isBucketService as at}from"@ez4/storage/library";import{getServiceName as nt}from"@ez4/project/library";
|
|
63
|
+
var X=async e=>{let{service:t,options:r}=e;return at(t)?{constructor:`make('${nt(
|
|
64
|
+
t,r)}')`,module:"Client",from:"@ez4/aws-bucket/client"}:null};var Y=!1,_r=()=>{Y||(it(),pt(),mt(),ut("@ez4/aws-bucket",{"deploy:prepareExecuti\
|
|
66
65
|
onPolicy":W,"deploy:prepareLinkedService":X,"deploy:prepareResources":V}),h(),K(),
|
|
67
|
-
U(),Y=!0)};import{
|
|
68
|
-
|
|
66
|
+
U(),Y=!0)};import{getRegion as yt}from"@ez4/aws-identity";var ro=e=>/(.+)\.s3\.(.+)\.amazonaws\.com/i.
|
|
67
|
+
test(e),oo=async e=>{let t=await yt();return`${e}.s3.${t}.amazonaws.com`};import{attachEntry as lt}from"@ez4/stateful";import{hashData as ft}from"@ez4/utils";var io=(e,t,r,o)=>{let c=ft(p,t.entryId,r.entryId);return lt(e,{type:p,entryId:c,
|
|
68
|
+
dependencies:[t.entryId,r.entryId],parameters:o})};var uo=e=>e.type===p;import{attachEntry as gt}from"@ez4/stateful";import{hashData as St}from"@ez4/utils";var So=(e,t,r)=>{let o=r.objectKey,c=St(i,t.entryId,o);return gt(e,{type:i,entryId:c,
|
|
69
69
|
dependencies:[t.entryId],parameters:r})};export{a as BucketServiceName,n as BucketServiceType,m as ObjectServiceName,i as ObjectServiceType,
|
|
70
|
-
y as PolicyServiceName,p as PolicyServiceType,Z as createBucket,
|
|
71
|
-
|
|
72
|
-
S as getBucketObjectPath,
|
|
73
|
-
|
|
70
|
+
y as PolicyServiceName,p as PolicyServiceType,Z as createBucket,So as createBucketObject,
|
|
71
|
+
io as createBucketPolicy,oo as getBucketDomain,g as getBucketName,tr as getBucketObjectFiles,
|
|
72
|
+
S as getBucketObjectPath,It as getBucketState,d as getBucketStateId,G as getPolicyDocument,
|
|
73
|
+
ro as isBucketDomain,er as isBucketObjectState,uo as isBucketPolicyState,Be as isBucketState,
|
|
74
|
+
_r as registerTriggers};
|
package/dist/object/utils.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import type { EntryState, StepContext } from '@ez4/stateful';
|
|
|
2
2
|
import { ObjectState } from './types.js';
|
|
3
3
|
export declare const isBucketObjectState: (resource: EntryState) => resource is ObjectState;
|
|
4
4
|
export declare const getBucketObjectPath: (bucketName: string, objectKey: string) => string;
|
|
5
|
-
export declare const getBucketObjectFiles:
|
|
6
|
-
lastModified:
|
|
7
|
-
objectKey:
|
|
5
|
+
export declare const getBucketObjectFiles: (context: StepContext) => {
|
|
6
|
+
lastModified: number | undefined;
|
|
7
|
+
objectKey: string | undefined;
|
|
8
8
|
}[];
|
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.8.0",
|
|
5
5
|
"author": "Silas B.",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"type": "module",
|
|
@@ -45,16 +45,16 @@
|
|
|
45
45
|
"@types/mime": "^3.0.0"
|
|
46
46
|
},
|
|
47
47
|
"peerDependencies": {
|
|
48
|
-
"@ez4/project": "^0.
|
|
48
|
+
"@ez4/project": "^0.8.0"
|
|
49
49
|
},
|
|
50
50
|
"dependencies": {
|
|
51
51
|
"@aws-sdk/client-s3": "^3.614.0",
|
|
52
52
|
"@aws-sdk/s3-request-presigner": "^3.651.0",
|
|
53
|
-
"@ez4/aws-common": "^0.
|
|
54
|
-
"@ez4/aws-identity": "^0.
|
|
55
|
-
"@ez4/stateful": "^0.
|
|
56
|
-
"@ez4/storage": "^0.
|
|
57
|
-
"@ez4/utils": "^0.
|
|
53
|
+
"@ez4/aws-common": "^0.8.0",
|
|
54
|
+
"@ez4/aws-identity": "^0.8.0",
|
|
55
|
+
"@ez4/stateful": "^0.8.0",
|
|
56
|
+
"@ez4/storage": "^0.8.0",
|
|
57
|
+
"@ez4/utils": "^0.8.0",
|
|
58
58
|
"mime": "^3.0.0"
|
|
59
59
|
}
|
|
60
60
|
}
|