@ez4/storage 0.12.0 → 0.14.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/errors/event.d.ts +11 -0
- package/dist/errors/handler.d.ts +4 -0
- package/dist/library.cjs +50 -28
- package/dist/library.d.ts +4 -1
- package/dist/library.mjs +46 -25
- package/dist/main.cjs +3 -3
- package/dist/main.d.ts +2 -1
- package/dist/main.mjs +1 -1
- package/dist/metadata/cors.d.ts +1 -1
- package/dist/metadata/event.d.ts +5 -0
- package/dist/metadata/handler.d.ts +3 -0
- package/dist/metadata/utils.d.ts +4 -2
- package/dist/services/common.d.ts +57 -0
- package/dist/services/contract.d.ts +71 -0
- package/dist/types/common.d.ts +20 -0
- package/dist/types/service.d.ts +3 -1
- package/package.json +4 -4
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { IncompleteTypeError, IncorrectTypeError, InvalidTypeError } from '@ez4/common/library';
|
|
2
|
+
export declare class IncompleteEventError extends IncompleteTypeError {
|
|
3
|
+
constructor(properties: string[], fileName?: string);
|
|
4
|
+
}
|
|
5
|
+
export declare class InvalidEventTypeError extends InvalidTypeError {
|
|
6
|
+
constructor(fileName?: string);
|
|
7
|
+
}
|
|
8
|
+
export declare class IncorrectEventTypeError extends IncorrectTypeError {
|
|
9
|
+
eventType: string;
|
|
10
|
+
constructor(eventType: string, fileName?: string);
|
|
11
|
+
}
|
package/dist/library.cjs
CHANGED
|
@@ -1,29 +1,51 @@
|
|
|
1
|
-
"use strict";var
|
|
2
|
-
typeof
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
let
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
return
|
|
20
|
-
e)
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
o.
|
|
27
|
-
"
|
|
28
|
-
|
|
1
|
+
"use strict";var I=Object.defineProperty;var W=Object.getOwnPropertyDescriptor;var X=Object.getOwnPropertyNames;var Y=Object.prototype.hasOwnProperty;var Z=(e,t)=>{for(var r in t)I(e,r,{get:t[r],enumerable:!0})},$=(e,t,r,n)=>{if(t&&
|
|
2
|
+
typeof t=="object"||typeof t=="function")for(let o of X(t))!Y.call(e,o)&&o!==r&&
|
|
3
|
+
I(e,o,{get:()=>t[o],enumerable:!(n=W(t,o))||n.enumerable});return e};var ee=e=>$(I({},"__esModule",{value:!0}),e);var pe={};Z(pe,{IncompleteCorsError:()=>b,IncompleteEventError:()=>g,IncompleteServiceError:()=>d,
|
|
4
|
+
IncorrectCorsTypeError:()=>x,IncorrectEventTypeError:()=>T,InvalidCorsTypeError:()=>S,
|
|
5
|
+
InvalidEventTypeError:()=>k,ServiceType:()=>E,getBucketCors:()=>P,getBucketEvent:()=>w,
|
|
6
|
+
getBucketServices:()=>j,getEventHandler:()=>C,isBucketService:()=>re,registerTriggers:()=>ce});
|
|
7
|
+
module.exports=ee(pe);var Q=require("@ez4/common/library"),U=require("@ez4/project/library");var c=require("@ez4/common/library"),q=require("@ez4/reflection"),G=require("@ez4/utils");var E="@ez4/bucket",re=e=>e.type===E;var z=require("@ez4/common/library"),d=class extends z.IncompleteTypeError{constructor(t,r){
|
|
8
|
+
super("Incomplete bucket service",t,r)}};var a=require("@ez4/common/library"),M=require("@ez4/reflection"),B=e=>(0,a.isClassDeclaration)(
|
|
9
|
+
e)&&(0,a.hasHeritageType)(e,"Bucket.Service"),O=e=>(0,M.isTypeCallback)(e)||(0,M.isTypeFunction)(
|
|
10
|
+
e),A=e=>(0,a.hasHeritageType)(e,"Bucket.Event"),H=e=>(0,a.hasHeritageType)(e,"Bu\
|
|
11
|
+
cket.Cors");var p=require("@ez4/common/library"),f=require("@ez4/reflection"),V=require("@ez4/utils");var u=require("@ez4/common/library"),g=class extends u.IncompleteTypeError{constructor(t,r){
|
|
12
|
+
super("Incomplete bucket event",t,r)}},k=class extends u.InvalidTypeError{constructor(t){
|
|
13
|
+
super("Invalid bucket event type",void 0,"Bucket.Event",t)}},T=class extends u.IncorrectTypeError{constructor(r,n){
|
|
14
|
+
super("Incorrect bucket event type",r,"Bucket.Event",n);this.eventType=r}};var N=require("@ez4/common/library"),h=class extends N.IncompleteTypeError{constructor(t,r){
|
|
15
|
+
super("Incomplete event handler",t,r)}};var C=(e,t,r)=>{if(!O(e))return null;let n={},o=new Set(["name","file"]);return e.
|
|
16
|
+
description&&(n.description=e.description),(n.name=e.name)&&o.delete("name"),(n.
|
|
17
|
+
file=e.file)&&o.delete("file"),o.size===0&&te(n)?n:(r.push(new h([...o],e.file)),
|
|
18
|
+
null)},te=e=>!!e.name&&!!e.file;var w=(e,t,r,n)=>{if(!(0,f.isTypeReference)(e))return D(e,t,r,n);let o=r[e.path];
|
|
19
|
+
return o?D(o,t,r,n):null},oe=e=>!!e.handler,D=(e,t,r,n)=>(0,f.isTypeObject)(e)?R(
|
|
20
|
+
e,(0,p.getObjectMembers)(e),r,n):(0,p.isModelDeclaration)(e)?A(e)?R(e,(0,p.getModelMembers)(
|
|
21
|
+
e),r,n):(n.push(new T(e.name,e.file)),null):(n.push(new k(t.file)),null),R=(e,t,r,n)=>{
|
|
22
|
+
let o={},s=new Set(["handler"]);for(let i of t)if(!(!(0,f.isModelProperty)(i)||i.
|
|
23
|
+
inherited))switch(i.name){case"handler":o.handler=C(i.value,r,n);break;case"path":{
|
|
24
|
+
let l=(0,p.getPropertyString)(i);l&&(o[i.name]=l);break}case"timeout":case"memor\
|
|
25
|
+
y":{let l=(0,p.getPropertyNumber)(i);(0,V.isAnyNumber)(l)&&(o[i.name]=l);break}case"\
|
|
26
|
+
variables":o.variables=(0,p.getLinkedVariableList)(i,n);break}return oe(o)?o:(n.
|
|
27
|
+
push(new g([...s],e.file)),null)};var m=require("@ez4/common/library"),v=require("@ez4/reflection"),_=require("@ez4/utils");var y=require("@ez4/common/library"),b=class extends y.IncompleteTypeError{constructor(t,r){
|
|
28
|
+
super("Incomplete bucket CORS",t,r)}},S=class extends y.InvalidTypeError{constructor(t){
|
|
29
|
+
super("Invalid bucket CORS type",void 0,"Bucket.Cors",t)}},x=class extends y.IncorrectTypeError{constructor(r,n){
|
|
30
|
+
super("Incorrect bucket CORS type",r,"Bucket.Cors",n);this.fallbackType=r}};var P=(e,t,r,n)=>{if(!(0,v.isTypeReference)(e))return F(e,t,n);let o=r[e.path];return o?
|
|
31
|
+
F(o,t,n):null},ne=e=>!!e.allowOrigins?.length,F=(e,t,r)=>(0,v.isTypeObject)(e)?L(
|
|
32
|
+
e,(0,m.getObjectMembers)(e),r):(0,m.isModelDeclaration)(e)?H(e)?L(e,(0,m.getModelMembers)(
|
|
33
|
+
e),r):(r.push(new x(e.name,e.file)),null):(r.push(new S(t.file)),null),L=(e,t,r)=>{
|
|
34
|
+
let n={},o=new Set(["allowOrigins"]);for(let s of t)if(!(!(0,v.isModelProperty)(
|
|
35
|
+
s)||s.inherited))switch(s.name){case"allowOrigins":case"allowMethods":case"allow\
|
|
36
|
+
Headers":case"exposeHeaders":{let i=ie(s);i.length&&(n[s.name]=i);break}case"max\
|
|
37
|
+
Age":{let i=(0,m.getPropertyNumber)(s);(0,_.isAnyNumber)(i)&&(n[s.name]=i);break}}
|
|
38
|
+
return ne(n)?n:(r.push(new b([...o],e.file)),null)},ie=e=>{let t=(0,m.getPropertyTuple)(
|
|
39
|
+
e)??[],r=[];for(let n of t){let o=(0,m.getLiteralString)(n);o&&r.push(o)}return r};var j=e=>{let t={},r=[];for(let n in e){let o=e[n];if(!B(o)||(0,c.isExternalStatement)(
|
|
40
|
+
o))continue;let s={type:E};s.name=o.name;for(let i of(0,c.getModelMembers)(o))if(!(!(0,q.isModelProperty)(
|
|
41
|
+
i)||i.inherited))switch(i.name){case"localPath":case"globalName":{let l=(0,c.getPropertyString)(
|
|
42
|
+
i);l&&(s[i.name]=l);break}case"autoExpireDays":{let l=(0,c.getPropertyNumber)(i);
|
|
43
|
+
(0,G.isAnyNumber)(l)&&(s.autoExpireDays=l);break}case"events":s.events=w(i.value,
|
|
44
|
+
o,e,r);break;case"cors":s.cors=P(i.value,o,e,r);break;case"variables":s.variables=
|
|
45
|
+
(0,c.getLinkedVariableList)(i,r);break;case"services":s.services=(0,c.getLinkedServiceList)(
|
|
46
|
+
i,e,r);break}if(!se(s)){r.push(new d([],o.file));continue}if(t[o.name]){r.push(new c.DuplicateServiceError(
|
|
47
|
+
o.name,o.file));continue}t[o.name]=s}return{services:t,errors:r}},se=e=>!!e.name;var J=e=>B(e)?e.name:null;var K=!1,ce=()=>{K||((0,Q.registerTriggers)(),(0,U.createTrigger)("@ez4/bucket",
|
|
48
|
+
{"metadata:getServices":j,"metadata:getLinkedService":J}),K=!0)};0&&(module.exports={IncompleteCorsError,IncompleteEventError,IncompleteServiceError,
|
|
49
|
+
IncorrectCorsTypeError,IncorrectEventTypeError,InvalidCorsTypeError,InvalidEventTypeError,
|
|
50
|
+
ServiceType,getBucketCors,getBucketEvent,getBucketServices,getEventHandler,isBucketService,
|
|
29
51
|
registerTriggers});
|
package/dist/library.d.ts
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
export * from './triggers/register.js';
|
|
2
2
|
export * from './metadata/service.js';
|
|
3
|
+
export * from './metadata/event.js';
|
|
4
|
+
export * from './metadata/handler.js';
|
|
3
5
|
export * from './metadata/cors.js';
|
|
4
6
|
export * from './errors/service.js';
|
|
7
|
+
export * from './errors/event.js';
|
|
5
8
|
export * from './errors/cors.js';
|
|
6
9
|
export * from './types/service.js';
|
|
7
|
-
export * from './types/
|
|
10
|
+
export * from './types/common.js';
|
package/dist/library.mjs
CHANGED
|
@@ -1,25 +1,46 @@
|
|
|
1
|
-
import{registerTriggers as
|
|
2
|
-
getPropertyNumber as
|
|
3
|
-
import{isAnyNumber as
|
|
4
|
-
super("Incomplete bucket service",t,r)}};import{hasHeritageType as
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
(
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
n);break
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
1
|
+
import{registerTriggers as Ee}from"@ez4/common/library";import{createTrigger as Me}from"@ez4/project/library";import{DuplicateServiceError as fe,isExternalStatement as ye,getLinkedVariableList as ve,
|
|
2
|
+
getLinkedServiceList as de,getModelMembers as ge,getPropertyNumber as ke,getPropertyString as Te}from"@ez4/common/library";
|
|
3
|
+
import{isModelProperty as be}from"@ez4/reflection";import{isAnyNumber as Se}from"@ez4/utils";var g="@ez4/bucket",Be=e=>e.type===g;import{IncompleteTypeError as z}from"@ez4/common/library";var p=class extends z{constructor(t,r){
|
|
4
|
+
super("Incomplete bucket service",t,r)}};import{hasHeritageType as k,isClassDeclaration as O}from"@ez4/common/library";import{
|
|
5
|
+
isTypeCallback as A,isTypeFunction as H}from"@ez4/reflection";var m=e=>O(e)&&k(e,
|
|
6
|
+
"Bucket.Service"),T=e=>A(e)||H(e),b=e=>k(e,"Bucket.Event"),S=e=>k(e,"Bucket.Cors");import{getLinkedVariableList as L,getModelMembers as _,getObjectMembers as q,getPropertyNumber as G,
|
|
7
|
+
getPropertyString as J,isModelDeclaration as K}from"@ez4/common/library";import{
|
|
8
|
+
isModelProperty as Q,isTypeObject as U,isTypeReference as W}from"@ez4/reflection";
|
|
9
|
+
import{isAnyNumber as X}from"@ez4/utils";import{IncompleteTypeError as N,IncorrectTypeError as D,InvalidTypeError as R}from"@ez4/common/library";
|
|
10
|
+
var l=class extends N{constructor(t,r){super("Incomplete bucket event",t,r)}},a=class extends R{constructor(t){
|
|
11
|
+
super("Invalid bucket event type",void 0,"Bucket.Event",t)}},u=class extends D{constructor(r,n){
|
|
12
|
+
super("Incorrect bucket event type",r,"Bucket.Event",n);this.eventType=r}};import{IncompleteTypeError as V}from"@ez4/common/library";var f=class extends V{constructor(t,r){
|
|
13
|
+
super("Incomplete event handler",t,r)}};var x=(e,t,r)=>{if(!T(e))return null;let n={},o=new Set(["name","file"]);return e.
|
|
14
|
+
description&&(n.description=e.description),(n.name=e.name)&&o.delete("name"),(n.
|
|
15
|
+
file=e.file)&&o.delete("file"),o.size===0&&F(n)?n:(r.push(new f([...o],e.file)),
|
|
16
|
+
null)},F=e=>!!e.name&&!!e.file;var B=(e,t,r,n)=>{if(!W(e))return E(e,t,r,n);let o=r[e.path];return o?E(o,t,r,n):
|
|
17
|
+
null},Y=e=>!!e.handler,E=(e,t,r,n)=>U(e)?M(e,q(e),r,n):K(e)?b(e)?M(e,_(e),r,n):(n.
|
|
18
|
+
push(new u(e.name,e.file)),null):(n.push(new a(t.file)),null),M=(e,t,r,n)=>{let o={},
|
|
19
|
+
s=new Set(["handler"]);for(let i of t)if(!(!Q(i)||i.inherited))switch(i.name){case"\
|
|
20
|
+
handler":o.handler=x(i.value,r,n);break;case"path":{let c=J(i);c&&(o[i.name]=c);
|
|
21
|
+
break}case"timeout":case"memory":{let c=G(i);X(c)&&(o[i.name]=c);break}case"vari\
|
|
22
|
+
ables":o.variables=L(i,n);break}return Y(o)?o:(n.push(new l([...s],e.file)),null)};import{getLiteralString as re,getModelMembers as te,getObjectMembers as oe,getPropertyNumber as ne,
|
|
23
|
+
getPropertyTuple as ie,isModelDeclaration as se}from"@ez4/common/library";import{
|
|
24
|
+
isModelProperty as ce,isTypeObject as pe,isTypeReference as me}from"@ez4/reflection";
|
|
25
|
+
import{isAnyNumber as le}from"@ez4/utils";import{IncompleteTypeError as Z,IncorrectTypeError as $,InvalidTypeError as ee}from"@ez4/common/library";
|
|
26
|
+
var y=class extends Z{constructor(t,r){super("Incomplete bucket CORS",t,r)}},v=class extends ee{constructor(t){
|
|
27
|
+
super("Invalid bucket CORS type",void 0,"Bucket.Cors",t)}},d=class extends ${constructor(r,n){
|
|
28
|
+
super("Incorrect bucket CORS type",r,"Bucket.Cors",n);this.fallbackType=r}};var C=(e,t,r,n)=>{if(!me(e))return h(e,t,n);let o=r[e.path];return o?h(o,t,n):null},
|
|
29
|
+
ae=e=>!!e.allowOrigins?.length,h=(e,t,r)=>pe(e)?I(e,oe(e),r):se(e)?S(e)?I(e,te(e),
|
|
30
|
+
r):(r.push(new d(e.name,e.file)),null):(r.push(new v(t.file)),null),I=(e,t,r)=>{
|
|
31
|
+
let n={},o=new Set(["allowOrigins"]);for(let s of t)if(!(!ce(s)||s.inherited))switch(s.
|
|
32
|
+
name){case"allowOrigins":case"allowMethods":case"allowHeaders":case"exposeHeader\
|
|
33
|
+
s":{let i=ue(s);i.length&&(n[s.name]=i);break}case"maxAge":{let i=ne(s);le(i)&&(n[s.
|
|
34
|
+
name]=i);break}}return ae(n)?n:(r.push(new y([...o],e.file)),null)},ue=e=>{let t=ie(
|
|
35
|
+
e)??[],r=[];for(let n of t){let o=re(n);o&&r.push(o)}return r};var w=e=>{let t={},r=[];for(let n in e){let o=e[n];if(!m(o)||ye(o))continue;let s={
|
|
36
|
+
type:g};s.name=o.name;for(let i of ge(o))if(!(!be(i)||i.inherited))switch(i.name){case"\
|
|
37
|
+
localPath":case"globalName":{let c=Te(i);c&&(s[i.name]=c);break}case"autoExpireD\
|
|
38
|
+
ays":{let c=ke(i);Se(c)&&(s.autoExpireDays=c);break}case"events":s.events=B(i.value,
|
|
39
|
+
o,e,r);break;case"cors":s.cors=C(i.value,o,e,r);break;case"variables":s.variables=
|
|
40
|
+
ve(i,r);break;case"services":s.services=de(i,e,r);break}if(!xe(s)){r.push(new p(
|
|
41
|
+
[],o.file));continue}if(t[o.name]){r.push(new fe(o.name,o.file));continue}t[o.name]=
|
|
42
|
+
s}return{services:t,errors:r}},xe=e=>!!e.name;var P=e=>m(e)?e.name:null;var j=!1,vr=()=>{j||(Ee(),Me("@ez4/bucket",{"metadata:getServices":w,"metadata:g\
|
|
43
|
+
etLinkedService":P}),j=!0)};export{y as IncompleteCorsError,l as IncompleteEventError,p as IncompleteServiceError,
|
|
44
|
+
d as IncorrectCorsTypeError,u as IncorrectEventTypeError,v as InvalidCorsTypeError,
|
|
45
|
+
a as InvalidEventTypeError,g as ServiceType,C as getBucketCors,B as getBucketEvent,
|
|
46
|
+
w as getBucketServices,x as getEventHandler,Be as isBucketService,vr as registerTriggers};
|
package/dist/main.cjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
"use strict";var
|
|
2
|
-
typeof e=="object"||typeof e=="function")for(let o of m(e))!
|
|
3
|
-
|
|
1
|
+
"use strict";var i=Object.defineProperty;var c=Object.getOwnPropertyDescriptor;var m=Object.getOwnPropertyNames;var p=Object.prototype.hasOwnProperty;var l=(t,e)=>{for(var r in e)i(t,r,{get:e[r],enumerable:!0})},v=(t,e,r,s)=>{if(e&&
|
|
2
|
+
typeof e=="object"||typeof e=="function")for(let o of m(e))!p.call(t,o)&&o!==r&&
|
|
3
|
+
i(t,o,{get:()=>e[o],enumerable:!(s=c(e,o))||s.enumerable});return t};var u=t=>v(i({},"__esModule",{value:!0}),t);var b={};l(b,{Bucket:()=>a,BucketEventType:()=>n});module.exports=u(b);var n=(r=>(r.Create="create",r.Delete="delete",r))(n||{});var a;(t=>{})(a||={});0&&(module.exports={Bucket,BucketEventType});
|
package/dist/main.d.ts
CHANGED
package/dist/main.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var e;(
|
|
1
|
+
var t=(e=>(e.Create="create",e.Delete="delete",e))(t||{});var r;(o=>{})(r||={});export{r as Bucket,t as BucketEventType};
|
package/dist/metadata/cors.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { AllType, SourceMap, TypeModel, TypeObject } from '@ez4/reflection';
|
|
2
|
-
import type { BucketCors } from '../types/
|
|
2
|
+
import type { BucketCors } from '../types/common.js';
|
|
3
3
|
type TypeParent = TypeModel | TypeObject;
|
|
4
4
|
export declare const getBucketCors: (type: AllType, parent: TypeParent, reflection: SourceMap, errorList: Error[]) => BucketCors | null;
|
|
5
5
|
export {};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { AllType, SourceMap, TypeModel, TypeObject } from '@ez4/reflection';
|
|
2
|
+
import type { BucketEvent } from '../types/common.js';
|
|
3
|
+
type TypeParent = TypeModel | TypeObject;
|
|
4
|
+
export declare const getBucketEvent: (type: AllType, parent: TypeParent, reflection: SourceMap, errorList: Error[]) => BucketEvent | null;
|
|
5
|
+
export {};
|
package/dist/metadata/utils.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
-
import type { AllType, TypeClass } from '@ez4/reflection';
|
|
1
|
+
import type { AllType, TypeCallback, TypeClass, TypeFunction, TypeModel } from '@ez4/reflection';
|
|
2
2
|
export declare const isBucketService: (type: AllType) => type is TypeClass;
|
|
3
|
-
export declare const
|
|
3
|
+
export declare const isEventHandler: (type: AllType) => type is TypeCallback | TypeFunction;
|
|
4
|
+
export declare const isBucketEvent: (type: TypeModel) => boolean;
|
|
5
|
+
export declare const isBucketCors: (type: TypeModel) => boolean;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bucket CORS configuration.
|
|
3
|
+
*/
|
|
4
|
+
export interface BucketCors {
|
|
5
|
+
/**
|
|
6
|
+
* List of allowed origins.
|
|
7
|
+
*/
|
|
8
|
+
allowOrigins: string[];
|
|
9
|
+
/**
|
|
10
|
+
* List of allowed methods.
|
|
11
|
+
*/
|
|
12
|
+
allowMethods?: string[];
|
|
13
|
+
/**
|
|
14
|
+
* List of allowed headers.
|
|
15
|
+
*/
|
|
16
|
+
allowHeaders?: string[];
|
|
17
|
+
/**
|
|
18
|
+
* List of exposed headers.
|
|
19
|
+
*/
|
|
20
|
+
exposeHeaders?: string[];
|
|
21
|
+
/**
|
|
22
|
+
* Determines how long the preflight result can be cached.
|
|
23
|
+
*/
|
|
24
|
+
maxAge?: number;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Bucket event type.
|
|
28
|
+
*/
|
|
29
|
+
export declare const enum BucketEventType {
|
|
30
|
+
Create = "create",
|
|
31
|
+
Delete = "delete"
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Bucket event.
|
|
35
|
+
*/
|
|
36
|
+
export type BucketEvent = {
|
|
37
|
+
/**
|
|
38
|
+
* Request Id.
|
|
39
|
+
*/
|
|
40
|
+
requestId: string;
|
|
41
|
+
/**
|
|
42
|
+
* Type of event.
|
|
43
|
+
*/
|
|
44
|
+
eventType: BucketEventType;
|
|
45
|
+
/**
|
|
46
|
+
* Bucket from the event.
|
|
47
|
+
*/
|
|
48
|
+
bucketName: string;
|
|
49
|
+
/**
|
|
50
|
+
* Size of the created object.
|
|
51
|
+
*/
|
|
52
|
+
objectSize?: number;
|
|
53
|
+
/**
|
|
54
|
+
* Object key in the bucket.
|
|
55
|
+
*/
|
|
56
|
+
objectKey: string;
|
|
57
|
+
};
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import type { LinkedVariables } from '@ez4/project/library';
|
|
2
|
+
import type { Service } from '@ez4/common';
|
|
3
|
+
import type { BucketCors, BucketEvent } from './common.js';
|
|
4
|
+
import type { Client } from './client.js';
|
|
5
|
+
/**
|
|
6
|
+
* Provide all contracts for a self-managed Bucket service.
|
|
7
|
+
*/
|
|
8
|
+
export declare namespace Bucket {
|
|
9
|
+
type Cors = BucketCors;
|
|
10
|
+
/**
|
|
11
|
+
* Bucket event.
|
|
12
|
+
*/
|
|
13
|
+
interface Event {
|
|
14
|
+
/**
|
|
15
|
+
* Event handler.
|
|
16
|
+
*
|
|
17
|
+
* @param event Event object.
|
|
18
|
+
* @param context Handler context.
|
|
19
|
+
*/
|
|
20
|
+
handler: (event: BucketEvent, context: Service.Context<Service>) => void | Promise<void>;
|
|
21
|
+
/**
|
|
22
|
+
* Path associated to the event.
|
|
23
|
+
*/
|
|
24
|
+
path?: string;
|
|
25
|
+
/**
|
|
26
|
+
* Variables associated to the handler.
|
|
27
|
+
*/
|
|
28
|
+
variables?: LinkedVariables;
|
|
29
|
+
/**
|
|
30
|
+
* Max execution time (in seconds) for the handler.
|
|
31
|
+
*/
|
|
32
|
+
timeout?: number;
|
|
33
|
+
/**
|
|
34
|
+
* Amount of memory available for the handler.
|
|
35
|
+
*/
|
|
36
|
+
memory?: number;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Bucket service.
|
|
40
|
+
*/
|
|
41
|
+
abstract class Service implements Service.Provider {
|
|
42
|
+
/**
|
|
43
|
+
* Overwrite the global bucket name.
|
|
44
|
+
*/
|
|
45
|
+
globalName?: string;
|
|
46
|
+
/**
|
|
47
|
+
* Specify a local path to synchronize with the storage.
|
|
48
|
+
*/
|
|
49
|
+
localPath?: string;
|
|
50
|
+
/**
|
|
51
|
+
* Maximum amount of days an object is stored before its auto-deletion.
|
|
52
|
+
*/
|
|
53
|
+
autoExpireDays?: number;
|
|
54
|
+
/**
|
|
55
|
+
* Bucket events.
|
|
56
|
+
*/
|
|
57
|
+
events?: Event;
|
|
58
|
+
/**
|
|
59
|
+
* CORS configuration.
|
|
60
|
+
*/
|
|
61
|
+
cors?: Cors;
|
|
62
|
+
/**
|
|
63
|
+
* Variables associated to all events.
|
|
64
|
+
*/
|
|
65
|
+
variables?: LinkedVariables;
|
|
66
|
+
/**
|
|
67
|
+
* Service client.
|
|
68
|
+
*/
|
|
69
|
+
client: Client;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { LinkedVariables } from '@ez4/project/library';
|
|
2
|
+
export type BucketCors = {
|
|
3
|
+
allowOrigins: string[];
|
|
4
|
+
allowMethods?: string[];
|
|
5
|
+
exposeHeaders?: string[];
|
|
6
|
+
allowHeaders?: string[];
|
|
7
|
+
maxAge?: number;
|
|
8
|
+
};
|
|
9
|
+
export type EventHandler = {
|
|
10
|
+
name: string;
|
|
11
|
+
file: string;
|
|
12
|
+
description?: string;
|
|
13
|
+
};
|
|
14
|
+
export type BucketEvent = {
|
|
15
|
+
handler: EventHandler;
|
|
16
|
+
path?: string;
|
|
17
|
+
variables?: LinkedVariables | null;
|
|
18
|
+
timeout?: number;
|
|
19
|
+
memory?: number;
|
|
20
|
+
};
|
package/dist/types/service.d.ts
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import type { ServiceMetadata } from '@ez4/project/library';
|
|
2
|
-
import type { BucketCors } from './
|
|
2
|
+
import type { BucketCors, BucketEvent } from './common.js';
|
|
3
3
|
export declare const ServiceType = "@ez4/bucket";
|
|
4
4
|
export type BucketService = ServiceMetadata & {
|
|
5
5
|
type: typeof ServiceType;
|
|
6
6
|
name: string;
|
|
7
7
|
localPath?: string;
|
|
8
|
+
globalName?: string;
|
|
8
9
|
autoExpireDays?: number;
|
|
10
|
+
events?: BucketEvent;
|
|
9
11
|
cors?: BucketCors;
|
|
10
12
|
};
|
|
11
13
|
export declare const isBucketService: (service: ServiceMetadata) => service is BucketService;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ez4/storage",
|
|
3
3
|
"description": "EZ4: Components to build storage services",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.14.0",
|
|
5
5
|
"author": "Silas B.",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"type": "module",
|
|
@@ -42,8 +42,8 @@
|
|
|
42
42
|
"live:publish": "npm run test && npm publish --access public"
|
|
43
43
|
},
|
|
44
44
|
"dependencies": {
|
|
45
|
-
"@ez4/common": "^0.
|
|
46
|
-
"@ez4/project": "^0.
|
|
47
|
-
"@ez4/reflection": "^0.
|
|
45
|
+
"@ez4/common": "^0.14.0",
|
|
46
|
+
"@ez4/project": "^0.14.0",
|
|
47
|
+
"@ez4/reflection": "^0.14.0"
|
|
48
48
|
}
|
|
49
49
|
}
|