@ez4/aws-bucket 0.18.0 → 0.19.0

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