@ez4/aws-bucket 0.26.0 → 0.28.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/function/bundler.d.ts +1 -1
- package/dist/bucket/function/service.d.ts +1 -1
- package/dist/bucket/handler.d.ts +1 -1
- package/dist/bucket/service.d.ts +1 -1
- package/dist/bucket/types.d.ts +1 -1
- package/dist/bucket/utils.d.ts +1 -1
- package/dist/main.cjs +17 -17
- package/dist/main.d.ts +14 -14
- package/dist/main.mjs +16 -16
- package/dist/object/handler.d.ts +1 -1
- package/dist/object/service.d.ts +2 -2
- package/dist/object/types.d.ts +1 -1
- package/dist/object/utils.d.ts +1 -1
- package/dist/policy/handler.d.ts +1 -1
- package/dist/policy/service.d.ts +2 -2
- package/dist/policy/types.d.ts +1 -1
- package/dist/policy/utils.d.ts +1 -1
- package/lib/event.ts +1 -1
- package/package.json +14 -14
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { EntryState } from '@ez4/stateful';
|
|
2
|
-
import type { BucketEventFunctionParameters } from './types
|
|
2
|
+
import type { BucketEventFunctionParameters } from './types';
|
|
3
3
|
export declare const bundleBucketEventFunction: (dependencies: EntryState[], parameters: BucketEventFunctionParameters) => Promise<string>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { EntryState, EntryStates } from '@ez4/stateful';
|
|
2
2
|
import type { LogGroupState } from '@ez4/aws-logs';
|
|
3
3
|
import type { RoleState } from '@ez4/aws-identity';
|
|
4
|
-
import type { BucketEventFunctionParameters } from './types
|
|
4
|
+
import type { BucketEventFunctionParameters } from './types';
|
|
5
5
|
export declare const createBucketEventFunction: <E extends EntryState>(state: EntryStates<E>, roleState: RoleState, logGroupState: LogGroupState, parameters: BucketEventFunctionParameters) => import("@ez4/aws-function").FunctionState;
|
package/dist/bucket/handler.d.ts
CHANGED
package/dist/bucket/service.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { EntryState, EntryStates } from '@ez4/stateful';
|
|
2
2
|
import type { FunctionState } from '@ez4/aws-function';
|
|
3
|
-
import type { BucketParameters, BucketState } from './types
|
|
3
|
+
import type { BucketParameters, BucketState } from './types';
|
|
4
4
|
export declare const createBucket: <E extends EntryState>(state: EntryStates<E>, functionState: FunctionState | undefined, parameters: BucketParameters) => BucketState;
|
package/dist/bucket/types.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Arn, ResourceTags } from '@ez4/aws-common';
|
|
2
2
|
import type { EntryState } from '@ez4/stateful';
|
|
3
3
|
import type { Bucket } from '@ez4/storage';
|
|
4
|
-
import type { CreateRequest, CreateResponse } from './client
|
|
4
|
+
import type { CreateRequest, CreateResponse } from './client';
|
|
5
5
|
export declare const BucketServiceName = "AWS:S3/Bucket";
|
|
6
6
|
export declare const BucketServiceType = "aws:s3.bucket";
|
|
7
7
|
export type BucketParameters = CreateRequest & {
|
package/dist/bucket/utils.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { DeployOptions, EventContext } from '@ez4/project/library';
|
|
2
2
|
import type { EntryState, StepContext } from '@ez4/stateful';
|
|
3
|
-
import type { BucketState } from './types
|
|
3
|
+
import type { BucketState } from './types';
|
|
4
4
|
export declare const createBucketStateId: (bucketName: string) => string;
|
|
5
5
|
export declare const isBucketState: (resource: EntryState) => resource is BucketState;
|
|
6
6
|
export declare const getBucketState: (context: EventContext, bucketName: string, options: DeployOptions) => BucketState;
|
package/dist/main.cjs
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
"use strict";var Et=Object.create;var R=Object.defineProperty;var Rt=Object.getOwnPropertyDescriptor;var Ct=Object.getOwnPropertyNames;var
|
|
2
|
-
typeof e=="object"||typeof e=="function")for(let s of Ct(e))!
|
|
3
|
-
R(t,s,{get:()=>e[s],enumerable:!(n=Rt(e,s))||n.enumerable});return t};var Tt=(t,e,r)=>(r=t!=null?Et(
|
|
1
|
+
"use strict";var Et=Object.create;var R=Object.defineProperty;var Rt=Object.getOwnPropertyDescriptor;var Ct=Object.getOwnPropertyNames;var ht=Object.getPrototypeOf,jt=Object.prototype.hasOwnProperty;var o=(t,e)=>R(t,"name",{value:e,configurable:!0});var Ot=(t,e)=>{for(var r in e)R(t,r,{get:e[r],enumerable:!0})},te=(t,e,r,n)=>{if(e&&
|
|
2
|
+
typeof e=="object"||typeof e=="function")for(let s of Ct(e))!jt.call(t,s)&&s!==r&&
|
|
3
|
+
R(t,s,{get:()=>e[s],enumerable:!(n=Rt(e,s))||n.enumerable});return t};var Tt=(t,e,r)=>(r=t!=null?Et(ht(t)):{},te(e||!t||!t.__esModule?R(r,"default",{value:t,
|
|
4
4
|
enumerable:!0}):r,t)),Nt=t=>te(R({},"__esModule",{value:!0}),t);var or={};Ot(or,{BucketServiceName:()=>p,BucketServiceType:()=>l,ObjectServiceName:()=>b,
|
|
5
5
|
ObjectServiceType:()=>f,PolicyServiceName:()=>x,PolicyServiceType:()=>S,buildBucketArn:()=>W,
|
|
6
6
|
createBucket:()=>J,createBucketEventFunction:()=>Q,createBucketObject:()=>rr,createBucketPolicy:()=>er,
|
|
7
7
|
createBucketStateId:()=>H,getBucketDomain:()=>Yt,getBucketName:()=>C,getBucketObjectFiles:()=>Ut,
|
|
8
|
-
getBucketObjectPath:()=>
|
|
8
|
+
getBucketObjectPath:()=>h,getBucketState:()=>K,getPolicyDocument:()=>Z,isBucketDomain:()=>Xt,
|
|
9
9
|
isBucketObjectState:()=>Kt,isBucketPolicyState:()=>tr,isBucketState:()=>Pe,registerTriggers:()=>Qt});
|
|
10
10
|
module.exports=Nt(or);var ft=require("@ez4/aws-common"),gt=require("@ez4/aws-identity"),dt=require("@ez4/aws-function"),
|
|
11
11
|
St=require("@ez4/storage/library"),kt=require("@ez4/project/library");var ke=require("@ez4/aws-common");var ue=require("@ez4/aws-common"),$=require("@ez4/aws-function"),P=require("@ez4/utils");var m=require("@ez4/aws-common"),a=require("@aws-sdk/client-s3");var p="AWS:S3/Bucket",l="aws:s3.bucket";var y=new a.S3Client({}),re=o(async t=>{m.Logger.logFetch(p,t);try{return!(await y.
|
|
@@ -28,8 +28,8 @@ m.Logger.logCreate(p,`${t} lifecycle`),await y.send(new a.PutBucketLifecycleConf
|
|
|
28
28
|
Filter:{Prefix:"*"},Expiration:{Days:e}}]}}))},"createLifecycle"),pe=o(async t=>{
|
|
29
29
|
m.Logger.logDelete(p,`${t} lifecycle`);try{return await y.send(new a.DeleteBucketLifecycleCommand(
|
|
30
30
|
{Bucket:t})),!0}catch(e){if(!(e instanceof a.NoSuchBucket))throw e;return!1}},"d\
|
|
31
|
-
eleteLifecycle"),me=o(async(t,e)=>{m.Logger.logUpdate(p,`${t}
|
|
32
|
-
|
|
31
|
+
eleteLifecycle"),me=o(async(t,e)=>{m.Logger.logUpdate(p,`${t} events`);let{functionArn:r,
|
|
32
|
+
eventsPath:n,eventsType:s}=e;await y.send(new a.PutBucketNotificationConfigurationCommand(
|
|
33
33
|
{Bucket:t,SkipDestinationValidation:!0,NotificationConfiguration:{...r&&{LambdaFunctionConfigurations:[
|
|
34
34
|
{Id:"ID0",LambdaFunctionArn:r,Events:s,...n&&{Filter:{Key:{FilterRules:[{Name:"p\
|
|
35
35
|
refix",Value:n}]}}}}]}}}))},"updateEventNotifications");var le=o(()=>({equals:Dt,create:ye,replace:Ft,preview:zt,update:At,delete:It}),"\
|
|
@@ -53,7 +53,7 @@ s"),ge=o(async(t,e,r)=>{if(e.autoExpireDays!==r?.autoExpireDays){if(e.autoExpire
|
|
|
53
53
|
return ie(t,e.autoExpireDays);if(r?.autoExpireDays)return pe(t)}},"checkLifecycl\
|
|
54
54
|
eUpdates"),de=o(async(t,e,r)=>{let n=e??{};!(0,P.deepEqual)(n,r??{})&&await se(t,
|
|
55
55
|
n)},"checkTagUpdates"),Se=o(async(t,e,r)=>{!(0,P.deepEqual)(e,r)&&await me(t,{eventsType:[
|
|
56
|
-
"s3:ObjectCreated:*","s3:ObjectRemoved:*"],...e})},"checkEventUpdates");var be=o(()=>{(0,ke.registerProvider)(l,le())},"registerBucketProvider");var
|
|
56
|
+
"s3:ObjectCreated:*","s3:ObjectRemoved:*"],...e})},"checkEventUpdates");var be=o(()=>{(0,ke.registerProvider)(l,le())},"registerBucketProvider");var je=require("@ez4/aws-common");var Ee=require("@ez4/aws-common"),Re=require("@ez4/utils");var xe=require("@ez4/aws-common"),D=require("@ez4/utils");var N=class extends Error{static{o(this,"BucketNotFoundError")}constructor(e){super(
|
|
57
57
|
`Bucket service ${e} wasn't found.`)}};var H=o(t=>(0,D.hashData)(l,(0,D.toKebabCase)(t)),"createBucketStateId"),Pe=o(t=>t.
|
|
58
58
|
type===l,"isBucketState"),K=o((t,e,r)=>{let n=t.getServiceState(e,r);if(!Pe(n))throw new N(
|
|
59
59
|
e);return n},"getBucketState"),C=o((t,e,r)=>{let n=r.getDependencies(l)[0]?.result;
|
|
@@ -62,24 +62,24 @@ bucketName},"getBucketName");var k=require("@aws-sdk/client-s3"),U=require("@ez4
|
|
|
62
62
|
logCreate(x,e),await Be.send(new k.PutBucketPolicyCommand({Bucket:e,Policy:JSON.
|
|
63
63
|
stringify(r)})),{bucketName:e}},"createPolicy"),ve=o(async t=>{U.Logger.logDelete(
|
|
64
64
|
x,t);try{return await Be.send(new k.DeleteBucketPolicyCommand({Bucket:t})),!0}catch(e){
|
|
65
|
-
if(!(e instanceof k.NoSuchBucket))throw e;return!1}},"deletePolicy");var Ce=o(()=>({equals:Lt,create:
|
|
65
|
+
if(!(e instanceof k.NoSuchBucket))throw e;return!1}},"deletePolicy");var Ce=o(()=>({equals:Lt,create:he,replace:Mt,preview:qt,update:$t,delete:Ht}),"\
|
|
66
66
|
getPolicyHandler"),Lt=o((t,e)=>!!t.result&&t.result.bucketName===e.result?.bucketName,
|
|
67
67
|
"equalsResource"),qt=o(async(t,e)=>{let r={...t.parameters,dependencies:t.dependencies},
|
|
68
68
|
n={...e.parameters,dependencies:e.dependencies},s=(0,Re.deepCompare)(r,n,{exclude:{
|
|
69
69
|
getRole:!0}});if(s.counts)return{...s,name:r.fromService}},"previewResource"),Mt=o(
|
|
70
70
|
async(t,e,r)=>{if(e.result)throw new Ee.ReplaceResourceError(x,t.entryId,e.entryId);
|
|
71
|
-
return
|
|
71
|
+
return he(t,r)},"replaceResource"),he=o(async(t,e)=>{let r=t.parameters,n=C(x,"p\
|
|
72
72
|
olicy",e),s=await r.getRole(e);return await we({bucketName:n,role:s}),{bucketName:n}},
|
|
73
73
|
"createResource"),$t=o(async()=>{},"updateResource"),Ht=o(async t=>{let e=t.result;
|
|
74
|
-
e&&await ve(e.bucketName)},"deleteResource");var Oe=o(()=>{(0,
|
|
75
|
-
Ne=Tt(require("mime"),1);var b="AWS:S3/Object",f="aws:s3.object";var Kt=o(t=>t.type===f,"isBucketObjectState"),
|
|
74
|
+
e&&await ve(e.bucketName)},"deleteResource");var Oe=o(()=>{(0,je.registerProvider)(S,Ce())},"registerPolicyProvider");var Me=require("@ez4/aws-common");var Fe=require("node:fs/promises"),Ae=require("@ez4/aws-common"),z=require("@ez4/utils");var Te=require("node:fs"),u=require("@aws-sdk/client-s3"),B=require("@ez4/aws-common"),
|
|
75
|
+
Ne=Tt(require("mime"),1);var b="AWS:S3/Object",f="aws:s3.object";var Kt=o(t=>t.type===f,"isBucketObjectState"),h=o((t,e)=>`${t}/${e}`,"getBucketO\
|
|
76
76
|
bjectPath"),Ut=o(t=>t.getDependencies(f).map(({result:r,parameters:n})=>({lastModified:r?.
|
|
77
77
|
lastModified,objectKey:n.objectKey})),"getBucketObjectFiles");var G=new u.S3Client({}),_=o(async(t,e)=>{let{objectKey:r,filePath:n}=e;B.Logger.
|
|
78
|
-
logCreate(b,
|
|
78
|
+
logCreate(b,h(t,r));let s=Ne.default.getType(n);return await G.send(new u.PutObjectCommand(
|
|
79
79
|
{Bucket:t,Key:r,Body:(0,Te.createReadStream)(n),...s&&{ContentType:s}})),{objectKey:r}},
|
|
80
|
-
"putObject"),De=o(async(t,e,r)=>{B.Logger.logTag(b,
|
|
80
|
+
"putObject"),De=o(async(t,e,r)=>{B.Logger.logTag(b,h(t,e)),await G.send(new u.PutObjectTaggingCommand(
|
|
81
81
|
{Bucket:t,Key:e,Tagging:{TagSet:(0,B.getTagList)({...r,ManagedBy:"EZ4"})}}))},"t\
|
|
82
|
-
agObject"),ze=o(async(t,e)=>{B.Logger.logDelete(b,
|
|
82
|
+
agObject"),ze=o(async(t,e)=>{B.Logger.logDelete(b,h(t,e));try{return await G.send(
|
|
83
83
|
new u.DeleteObjectCommand({Bucket:t,Key:e})),!0}catch(r){if(!(r instanceof u.NoSuchBucket))
|
|
84
84
|
throw r;return!1}},"deleteObject");var Ie=o(()=>({equals:Gt,create:Le,replace:Vt,preview:_t,update:Wt,delete:Zt}),"\
|
|
85
85
|
getObjectHandler"),Gt=o((t,e)=>!!t.result&&t.result.lastModified===e.result?.lastModified,
|
|
@@ -118,9 +118,9 @@ tionFiles")})},"createBucketEventFunction");var A=require("@ez4/project/library"
|
|
|
118
118
|
let r=(0,A.getServiceName)(t,e),n=await(0,Je.getRandomName)(16);return`${r.substring(
|
|
119
119
|
0,46)}-${n}`},"getBucketName"),X=o((t,e)=>`${(0,I.toKebabCase)(t.name)}-${(0,I.toKebabCase)(
|
|
120
120
|
e)}`,"getInternalName"),Xe=o((t,e,r)=>`${(0,A.getServiceName)(t,r)}-${(0,I.toKebabCase)(
|
|
121
|
-
e)}`,"getFunctionName");var
|
|
121
|
+
e)}`,"getFunctionName");var j=class extends Error{static{o(this,"RoleMissingError")}constructor(){super(
|
|
122
122
|
"Execution role for S3 is missing.")}};var O;(n=>(n.LogRetention=90,n.Timeout=90,n.Memory=192))(O||={});var tt=o((t,e,r,n)=>{if(!e.events)return;if(!n.role||!(0,Y.isRoleState)(n.role))
|
|
123
|
-
throw new
|
|
123
|
+
throw new j;let{handler:s,listener:c,logRetention:i,timeout:g,memory:v,variables:E}=e.
|
|
124
124
|
events,T=X(e,s.name),d=(0,L.tryGetFunctionState)(n,T,r);if(d)return d;let ee=Xe(
|
|
125
125
|
e,s.name,r),vt=(0,et.createLogGroup)(t,{retention:i??O.LogRetention,groupName:ee,
|
|
126
126
|
tags:r.tags});return d=Q(t,n.role,vt,{functionName:ee,description:s.description,
|
|
@@ -129,7 +129,7 @@ variables:{...r.variables,...e.variables,...E},handler:{dependencies:n.getDepend
|
|
|
129
129
|
s.file),functionName:s.name,sourceFile:s.file,module:s.module},...c&&{listener:{
|
|
130
130
|
functionName:c.name,sourceFile:c.file,module:c.module}}}),n.setServiceState(d,T,
|
|
131
131
|
r),d},"prepareEvents"),rt=o((t,e,r,n)=>{if(!e.extras||!e.events)return;if(!n.role||
|
|
132
|
-
!(0,Y.isRoleState)(n.role))throw new
|
|
132
|
+
!(0,Y.isRoleState)(n.role))throw new j;let{handler:s}=e.events,c=X(e,s.name),i=(0,L.getFunctionState)(
|
|
133
133
|
n,c,r);(0,Ye.linkServiceExtras)(t,i.entryId,e.extras)},"connectEvents");var ot=require("node:fs/promises"),w=require("node:path"),nt=require("@ez4/aws-bucket");var st=o(async(t,e,r)=>{let n=process.cwd(),s=(0,w.join)(n,r),c=await(0,ot.readdir)(
|
|
134
134
|
s,{withFileTypes:!0,recursive:!0});for(let i of c){if(!i.isFile())continue;let g=(0,w.join)(
|
|
135
135
|
i.parentPath,i.name);(0,nt.createBucketObject)(t,e,{objectKey:(0,w.relative)(s,g),
|
package/dist/main.d.ts
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
export * from './triggers/register
|
|
2
|
-
export * from './utils/domain
|
|
3
|
-
export * from './utils/policy
|
|
4
|
-
export * from './bucket/service
|
|
5
|
-
export * from './bucket/types
|
|
6
|
-
export * from './bucket/utils
|
|
7
|
-
export * from './bucket/function/service
|
|
8
|
-
export * from './bucket/function/types
|
|
9
|
-
export * from './policy/service
|
|
10
|
-
export * from './policy/types
|
|
11
|
-
export * from './policy/utils
|
|
12
|
-
export * from './object/service
|
|
13
|
-
export * from './object/types
|
|
14
|
-
export * from './object/utils
|
|
1
|
+
export * from './triggers/register';
|
|
2
|
+
export * from './utils/domain';
|
|
3
|
+
export * from './utils/policy';
|
|
4
|
+
export * from './bucket/service';
|
|
5
|
+
export * from './bucket/types';
|
|
6
|
+
export * from './bucket/utils';
|
|
7
|
+
export * from './bucket/function/service';
|
|
8
|
+
export * from './bucket/function/types';
|
|
9
|
+
export * from './policy/service';
|
|
10
|
+
export * from './policy/types';
|
|
11
|
+
export * from './policy/utils';
|
|
12
|
+
export * from './object/service';
|
|
13
|
+
export * from './object/types';
|
|
14
|
+
export * from './object/utils';
|
package/dist/main.mjs
CHANGED
|
@@ -22,10 +22,10 @@ send(new Ue({Bucket:t,LifecycleConfiguration:{Rules:[{ID:"ID0",Status:Ve.Enabled
|
|
|
22
22
|
Filter:{Prefix:"*"},Expiration:{Days:e}}]}}))},"createLifecycle"),U=o(async t=>{
|
|
23
23
|
p.logDelete(i,`${t} lifecycle`);try{return await m.send(new Ge({Bucket:t})),!0}catch(e){
|
|
24
24
|
if(!(e instanceof w))throw e;return!1}},"deleteLifecycle"),G=o(async(t,e)=>{p.logUpdate(
|
|
25
|
-
i,`${t}
|
|
26
|
-
|
|
27
|
-
{
|
|
28
|
-
|
|
25
|
+
i,`${t} events`);let{functionArn:r,eventsPath:n,eventsType:s}=e;await m.send(new _e(
|
|
26
|
+
{Bucket:t,SkipDestinationValidation:!0,NotificationConfiguration:{...r&&{LambdaFunctionConfigurations:[
|
|
27
|
+
{Id:"ID0",LambdaFunctionArn:r,Events:s,...n&&{Filter:{Key:{FilterRules:[{Name:"p\
|
|
28
|
+
refix",Value:n}]}}}}]}}}))},"updateEventNotifications");var V=o(()=>({equals:Je,create:W,replace:Xe,preview:Qe,update:Ye,delete:et}),"ge\
|
|
29
29
|
tBucketHandler"),Je=o((t,e)=>!!t.result&&t.result.bucketName===e.result?.bucketName,
|
|
30
30
|
"equalsResource"),Qe=o(async(t,e)=>{let r={...t.parameters,dependencies:t.dependencies},
|
|
31
31
|
n={...e.parameters,dependencies:e.dependencies},s=Ze(r,n);if(s.counts)return{...s,
|
|
@@ -64,19 +64,19 @@ ae=o(async(t,e)=>{let r=t.parameters,n=E(S,"policy",e),s=await r.getRole(e);retu
|
|
|
64
64
|
{bucketName:n,role:s}),{bucketName:n}},"createResource"),gt=o(async()=>{},"updat\
|
|
65
65
|
eResource"),dt=o(async t=>{let e=t.result;e&&await se(e.bucketName)},"deleteReso\
|
|
66
66
|
urce");var ie=o(()=>{St(g,ce())},"registerPolicyProvider");import{registerProvider as At}from"@ez4/aws-common";import{stat as Rt}from"node:fs/promises";import{ReplaceResourceError as Ct}from"@ez4/aws-common";
|
|
67
|
-
import{deepCompare as
|
|
67
|
+
import{deepCompare as ht,deepEqual as jt}from"@ez4/utils";import{createReadStream as kt}from"node:fs";import{S3Client as bt,PutObjectCommand as xt,
|
|
68
68
|
PutObjectTaggingCommand as Pt,DeleteObjectCommand as Bt,NoSuchBucket as wt}from"@aws-sdk/client-s3";
|
|
69
|
-
import{getTagList as vt,Logger as
|
|
69
|
+
import{getTagList as vt,Logger as h}from"@ez4/aws-common";import Et from"mime";var d="AWS:S3/Object",f="aws:s3.object";var co=o(t=>t.type===f,"isBucketObjectState"),R=o((t,e)=>`${t}/${e}`,"getBucketO\
|
|
70
70
|
bjectPath"),ao=o(t=>t.getDependencies(f).map(({result:r,parameters:n})=>({lastModified:r?.
|
|
71
|
-
lastModified,objectKey:n.objectKey})),"getBucketObjectFiles");var
|
|
72
|
-
t,r));let s=Et.getType(n);return await
|
|
73
|
-
...s&&{ContentType:s}})),{objectKey:r}},"putObject"),pe=o(async(t,e,r)=>{
|
|
74
|
-
d,R(t,e)),await
|
|
75
|
-
EZ4"})}}))},"tagObject"),me=o(async(t,e)=>{
|
|
71
|
+
lastModified,objectKey:n.objectKey})),"getBucketObjectFiles");var j=new bt({}),O=o(async(t,e)=>{let{objectKey:r,filePath:n}=e;h.logCreate(d,R(
|
|
72
|
+
t,r));let s=Et.getType(n);return await j.send(new xt({Bucket:t,Key:r,Body:kt(n),
|
|
73
|
+
...s&&{ContentType:s}})),{objectKey:r}},"putObject"),pe=o(async(t,e,r)=>{h.logTag(
|
|
74
|
+
d,R(t,e)),await j.send(new Pt({Bucket:t,Key:e,Tagging:{TagSet:vt({...r,ManagedBy:"\
|
|
75
|
+
EZ4"})}}))},"tagObject"),me=o(async(t,e)=>{h.logDelete(d,R(t,e));try{return await j.
|
|
76
76
|
send(new Bt({Bucket:t,Key:e})),!0}catch(r){if(!(r instanceof wt))throw r;return!1}},
|
|
77
77
|
"deleteObject");var ue=o(()=>({equals:Ot,create:le,replace:Nt,preview:Tt,update:Dt,delete:zt}),"\
|
|
78
78
|
getObjectHandler"),Ot=o((t,e)=>!!t.result&&t.result.lastModified===e.result?.lastModified,
|
|
79
|
-
"equalsResource"),Tt=o(async(t,e)=>{let r=t.parameters,n=e.parameters,s=
|
|
79
|
+
"equalsResource"),Tt=o(async(t,e)=>{let r=t.parameters,n=e.parameters,s=ht({...r,
|
|
80
80
|
dependencies:t.dependencies,lastModified:await T(r.filePath)},{...n,dependencies:e.
|
|
81
81
|
dependencies,lastModified:t.result?.lastModified});if(s.counts)return{...s,name:r.
|
|
82
82
|
objectKey}},"previewResource"),Nt=o(async(t,e,r)=>{if(e.result)throw new Ct(d,t.
|
|
@@ -90,7 +90,7 @@ r.objectKey)},"deleteResource"),T=o(async t=>{let{mtime:e}=await Rt(t);return e.
|
|
|
90
90
|
getTime()},"getLastModifiedTime"),Ft=o(async(t,e,r)=>{let n=await T(e.filePath);
|
|
91
91
|
if(n<=t.lastModified&&e.filePath===r.filePath)return t;let{bucketName:s}=t,{objectKey:c}=r;
|
|
92
92
|
return await O(s,{...e,objectKey:c}),{lastModified:n,bucketName:s}},"checkObject\
|
|
93
|
-
Updates"),ye=o(async(t,e,r,n)=>{let s=r??{};!
|
|
93
|
+
Updates"),ye=o(async(t,e,r,n)=>{let s=r??{};!jt(s,n??{})&&await pe(t,e,s)},"chec\
|
|
94
94
|
kTagUpdates");var fe=o(()=>{At(f,ue())},"registerObjectProvider");import{isBucketService as F}from"@ez4/storage/library";import{createPermission as Lt}from"@ez4/aws-function";import{attachEntry as qt,linkDependency as Mt}from"@ez4/stateful";import{createPolicyDocument as It}from"@ez4/aws-identity";var ge=o(t=>`arn:aws:s3:::${t}`,"buildBucketArn"),de=o(t=>It([{resourceIds:[`arn\
|
|
95
95
|
:aws:s3:::${t}-*`,`arn:aws:s3:::${t}-*/*`],permissions:["s3:ListBucket","s3:PutO\
|
|
96
96
|
bject","s3:GetObject","s3:DeleteObject"]}]),"getPolicyDocument");var Se=o((t,e,r)=>{let n=r.bucketName,s=ee(n),c=qt(t,{type:y,entryId:s,dependencies:[],
|
|
@@ -123,9 +123,9 @@ role||!Be(n.role))throw new x;let{handler:s}=e.events,c=z(e,s.name),a=Vt(n,c,r);
|
|
|
123
123
|
Zt(t,a.entryId,e.extras)},"connectEvents");import{readdir as Qt}from"node:fs/promises";import{join as Ee,relative as Re}from"node:path";
|
|
124
124
|
import{createBucketObject as Xt}from"@ez4/aws-bucket";var Ce=o(async(t,e,r)=>{let n=process.cwd(),s=Ee(n,r),c=await Qt(s,{withFileTypes:!0,
|
|
125
125
|
recursive:!0});for(let a of c){if(!a.isFile())continue;let u=Ee(a.parentPath,a.name);
|
|
126
|
-
Xt(t,e,{objectKey:Re(s,u),filePath:Re(n,u)})}},"prepareLocalContent");var
|
|
126
|
+
Xt(t,e,{objectKey:Re(s,u),filePath:Re(n,u)})}},"prepareLocalContent");var he=o((t,e,r)=>{let n=te(t,e.name,r);return{entryIds:[n.entryId],constructor:`\
|
|
127
127
|
make('${n.parameters.bucketName}')`,from:"@ez4/aws-bucket/client",module:"Client"}},
|
|
128
|
-
"prepareLinkedClient");var
|
|
128
|
+
"prepareLinkedClient");var je=o(t=>{let{service:e,options:r,context:n}=t;return F(e)?he(n,e,r):null},"p\
|
|
129
129
|
repareLinkedServices"),Oe=o(async t=>{let{state:e,service:r,options:n,context:s}=t;
|
|
130
130
|
if(!F(r))return!1;let{localPath:c,autoExpireDays:a,events:u,cors:k}=r,b=await xe(
|
|
131
131
|
r,n),B=we(e,r,n,s),l=Se(e,B,{eventsPath:u?.path,tags:n.tags,bucketName:b,autoExpireDays:a,
|
|
@@ -135,7 +135,7 @@ ve(e,r,n,s)},"connectBucketServices");import{ServiceType as Yt}from"@ez4/storage
|
|
|
135
135
|
import{getServiceName as rr}from"@ez4/project/library";var Ne=o(t=>{let{state:e,serviceType:r,options:n}=t;if(r!==Yt)return null;let s=rr(
|
|
136
136
|
"",n),c=`${s}-bucket-policy`;return tr(e,c)??er(e,{tags:n.tags,policyDocument:de(
|
|
137
137
|
s),policyName:c})},"prepareExecutionPolicy");var De=!1,Zn=o(()=>{De||(or(),nr(),sr(),cr(),ar("@ez4/aws-bucket",{"deploy:prepa\
|
|
138
|
-
reExecutionPolicy":Ne,"deploy:prepareLinkedService":
|
|
138
|
+
reExecutionPolicy":Ne,"deploy:prepareLinkedService":je,"deploy:prepareResources":Oe,
|
|
139
139
|
"deploy:connectResources":Te}),Y(),ie(),fe(),De=!0)},"registerTriggers");import{getRegion as ir}from"@ez4/aws-identity";var Yn=o(t=>/(.+)\.s3\.(.+)\.amazonaws\.com/i.test(t),"isBucketDomain"),es=o(async t=>{
|
|
140
140
|
let e=await ir();return`${t}.s3.${e}.amazonaws.com`},"getBucketDomain");import{attachEntry as pr}from"@ez4/stateful";import{hashData as mr}from"@ez4/utils";var cs=o((t,e,r,n)=>{let s=mr(g,e.entryId,r.entryId);return pr(t,{type:g,entryId:s,
|
|
141
141
|
dependencies:[e.entryId,r.entryId],parameters:n})},"createBucketPolicy");var ms=o(t=>t.type===g,"isBucketPolicyState");import{attachEntry as ur}from"@ez4/stateful";import{hashData as lr}from"@ez4/utils";var ds=o((t,e,r)=>{let n=r.objectKey,s=lr(f,e.entryId,n);return ur(t,{type:f,entryId:s,
|
package/dist/object/handler.d.ts
CHANGED
package/dist/object/service.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { EntryState, EntryStates } from '@ez4/stateful';
|
|
2
|
-
import type { BucketState } from '../bucket/types
|
|
3
|
-
import type { ObjectParameters, ObjectState } from './types
|
|
2
|
+
import type { BucketState } from '../bucket/types';
|
|
3
|
+
import type { ObjectParameters, ObjectState } from './types';
|
|
4
4
|
export declare const createBucketObject: <E extends EntryState>(state: EntryStates<E>, bucketState: BucketState, parameters: ObjectParameters) => ObjectState;
|
package/dist/object/types.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { ResourceTags } from '@ez4/aws-common';
|
|
2
2
|
import type { EntryState } from '@ez4/stateful';
|
|
3
|
-
import type { CreateRequest } from './client
|
|
3
|
+
import type { CreateRequest } from './client';
|
|
4
4
|
export declare const ObjectServiceName = "AWS:S3/Object";
|
|
5
5
|
export declare const ObjectServiceType = "aws:s3.object";
|
|
6
6
|
export type ObjectParameters = CreateRequest & {
|
package/dist/object/utils.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { EntryState, StepContext } from '@ez4/stateful';
|
|
2
|
-
import type { ObjectState } from './types
|
|
2
|
+
import type { ObjectState } from './types';
|
|
3
3
|
export declare const isBucketObjectState: (resource: EntryState) => resource is ObjectState;
|
|
4
4
|
export declare const getBucketObjectPath: (bucketName: string, objectKey: string) => string;
|
|
5
5
|
export declare const getBucketObjectFiles: (context: StepContext) => {
|
package/dist/policy/handler.d.ts
CHANGED
package/dist/policy/service.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { EntryState, EntryStates } from '@ez4/stateful';
|
|
2
|
-
import type { BucketState } from '../bucket/types
|
|
3
|
-
import type { PolicyParameters, PolicyState } from './types
|
|
2
|
+
import type { BucketState } from '../bucket/types';
|
|
3
|
+
import type { PolicyParameters, PolicyState } from './types';
|
|
4
4
|
export declare const createBucketPolicy: <E extends EntryState>(state: EntryStates<E>, sourceState: EntryState, bucketState: BucketState, parameters: PolicyParameters) => PolicyState;
|
package/dist/policy/types.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { RoleDocument } from '@ez4/aws-identity';
|
|
2
2
|
import type { EntryState, StepContext } from '@ez4/stateful';
|
|
3
|
-
import type { CreateResponse } from './client
|
|
3
|
+
import type { CreateResponse } from './client';
|
|
4
4
|
export declare const PolicyServiceName = "AWS:S3/Policy";
|
|
5
5
|
export declare const PolicyServiceType = "aws:s3.policy";
|
|
6
6
|
export type GetRole = (context: StepContext) => Promise<RoleDocument> | RoleDocument;
|
package/dist/policy/utils.d.ts
CHANGED
package/lib/event.ts
CHANGED
|
@@ -10,7 +10,7 @@ declare function dispatch(event: Bucket.ServiceEvent, context: object): Promise<
|
|
|
10
10
|
declare function handle(event: Bucket.Event, context: object): Promise<any>;
|
|
11
11
|
|
|
12
12
|
/**
|
|
13
|
-
* Entrypoint to handle S3
|
|
13
|
+
* Entrypoint to handle S3 events.
|
|
14
14
|
*/
|
|
15
15
|
export async function s3EntryPoint(event: S3Event, context: Context): Promise<void> {
|
|
16
16
|
let currentRequest: Bucket.Incoming | undefined;
|
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.28.0",
|
|
5
5
|
"author": "Silas B.",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"type": "module",
|
|
@@ -29,15 +29,15 @@
|
|
|
29
29
|
}
|
|
30
30
|
},
|
|
31
31
|
"workspaces": [
|
|
32
|
-
"
|
|
32
|
+
"foundation/*",
|
|
33
|
+
"contracts/*",
|
|
34
|
+
"providers/aws/*"
|
|
33
35
|
],
|
|
34
36
|
"scripts": {
|
|
35
37
|
"lint": "eslint --cache",
|
|
36
38
|
"clean": "rm -f *.tsbuildinfo && rm -rf dist/*",
|
|
37
|
-
"build": "tsc
|
|
38
|
-
"test": "npm run
|
|
39
|
-
"test:only": "npm run test:types && node --env-file ../../../local.env --test-only --test --import ../../../tools/tsnode.mjs test/*.spec.ts",
|
|
40
|
-
"test:types": "npm run build && tsc -p tsconfig.test.json",
|
|
39
|
+
"build": "tsc && node tools/bundler.mjs",
|
|
40
|
+
"test": "npm run build && tsc -p tsconfig.test.json && ez4 test -e ../../../local.env",
|
|
41
41
|
"local:publish": "npm run build && npm run clean:registry && npm publish --registry http://localhost:4873",
|
|
42
42
|
"clean:registry": "rm -rf ../../../.registry/@ez4/aws-bucket",
|
|
43
43
|
"live:publish": "npm run build && npm publish --access public"
|
|
@@ -45,14 +45,14 @@
|
|
|
45
45
|
"dependencies": {
|
|
46
46
|
"@aws-sdk/client-s3": "^3.758.0",
|
|
47
47
|
"@aws-sdk/s3-request-presigner": "^3.758.0",
|
|
48
|
-
"@ez4/aws-common": "^0.
|
|
49
|
-
"@ez4/aws-function": "^0.
|
|
50
|
-
"@ez4/aws-identity": "^0.
|
|
51
|
-
"@ez4/aws-logs": "^0.
|
|
52
|
-
"@ez4/project": "^0.
|
|
53
|
-
"@ez4/stateful": "^0.
|
|
54
|
-
"@ez4/storage": "^0.
|
|
55
|
-
"@ez4/utils": "^0.
|
|
48
|
+
"@ez4/aws-common": "^0.28.0",
|
|
49
|
+
"@ez4/aws-function": "^0.28.0",
|
|
50
|
+
"@ez4/aws-identity": "^0.28.0",
|
|
51
|
+
"@ez4/aws-logs": "^0.28.0",
|
|
52
|
+
"@ez4/project": "^0.28.0",
|
|
53
|
+
"@ez4/stateful": "^0.28.0",
|
|
54
|
+
"@ez4/storage": "^0.28.0",
|
|
55
|
+
"@ez4/utils": "^0.28.0",
|
|
56
56
|
"@types/aws-lambda": "^8.10.147",
|
|
57
57
|
"@types/mime": "^3.0.0",
|
|
58
58
|
"mime": "^3.0.0"
|