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