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