@ez4/database 0.13.0 → 0.15.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/library.cjs CHANGED
@@ -1,95 +1,98 @@
1
- "use strict";var X=Object.defineProperty;var ze=Object.getOwnPropertyDescriptor;var Ce=Object.getOwnPropertyNames;var Ne=Object.prototype.hasOwnProperty;var He=(e,t)=>{for(var r in t)X(e,r,{get:t[r],enumerable:!0})},$e=(e,t,r,o)=>{if(t&&
2
- typeof t=="object"||typeof t=="function")for(let s of Ce(t))!Ne.call(e,s)&&s!==r&&
3
- X(e,s,{get:()=>t[s],enumerable:!(o=ze(t,s))||o.enumerable});return e};var qe=e=>$e(X({},"__esModule",{value:!0}),e);var Xe={};He(Xe,{IncompleteHandlerError:()=>F,IncompleteServiceError:()=>w,IncompleteStreamError:()=>H,
4
- IncompleteTableError:()=>O,IncorrectIndexesTypeError:()=>k,IncorrectRelationsTypeError:()=>v,
1
+ "use strict";var X=Object.defineProperty;var ze=Object.getOwnPropertyDescriptor;var Ce=Object.getOwnPropertyNames;var Ne=Object.prototype.hasOwnProperty;var He=(e,t)=>{for(var r in t)X(e,r,{get:t[r],enumerable:!0})},$e=(e,t,r,a)=>{if(t&&
2
+ typeof t=="object"||typeof t=="function")for(let n of Ce(t))!Ne.call(e,n)&&n!==r&&
3
+ X(e,n,{get:()=>t[n],enumerable:!(a=ze(t,n))||a.enumerable});return e};var qe=e=>$e(X({},"__esModule",{value:!0}),e);var Xe={};He(Xe,{IncompleteHandlerError:()=>F,IncompleteServiceError:()=>w,IncompleteStreamError:()=>H,
4
+ IncompleteTableError:()=>k,IncorrectIndexesTypeError:()=>A,IncorrectRelationsTypeError:()=>D,
5
5
  IncorrectSchemaTypeError:()=>N,IncorrectStreamTypeError:()=>q,InvalidIndexReferenceError:()=>z,
6
- InvalidIndexTypeError:()=>R,InvalidIndexesTypeError:()=>A,InvalidRelationAliasError:()=>E,
7
- InvalidRelationColumnError:()=>f,InvalidRelationTableError:()=>j,InvalidRelationTargetError:()=>P,
8
- InvalidRelationsTypeError:()=>D,InvalidSchemaTypeError:()=>C,InvalidStreamTypeError:()=>$,
6
+ InvalidIndexTypeError:()=>R,InvalidIndexesTypeError:()=>O,InvalidRelationAliasError:()=>E,
7
+ InvalidRelationColumnError:()=>y,InvalidRelationTableError:()=>j,InvalidRelationTargetError:()=>P,
8
+ InvalidRelationsTypeError:()=>v,InvalidSchemaTypeError:()=>C,InvalidStreamTypeError:()=>$,
9
9
  ServiceType:()=>U,getDatabaseServices:()=>L,getDatabaseTable:()=>Z,getTableSchema:()=>Y,
10
- isDatabaseService:()=>Fe,registerTriggers:()=>We});module.exports=qe(Xe);var Oe=require("@ez4/common/library"),Ae=require("@ez4/schema/library"),ke=require("@ez4/project/library");var l=require("@ez4/common/library"),je=require("@ez4/reflection");var u=require("@ez4/common/library"),D=class extends u.InvalidTypeError{constructor(t){
11
- super("Invalid table relations type",void 0,"Database.Relations",t)}},v=class extends u.IncorrectTypeError{constructor(r,o){
12
- super("Incorrect table relations type",r,"Database.Relations",o);this.schemaType=
13
- r}},P=class extends u.TypeError{constructor(r,o){super(`Target ${r} must follow \
14
- the pattern 'column@alias'.`,o);this.relationSource=r}},j=class extends u.TypeError{constructor(r,o){
15
- super(`Relation table ${r} don't exists.`,o);this.relationTable=r}},f=class extends u.TypeError{constructor(r,o){
16
- super(`Relation column ${r} don't exists.`,o);this.relationColumn=r}},E=class extends u.TypeError{constructor(r,o){
17
- super(`Relation alias ${r} can't override table columns.`,o);this.relationAlias=
10
+ isDatabaseService:()=>Fe,registerTriggers:()=>We});module.exports=qe(Xe);var ke=require("@ez4/common/library"),Oe=require("@ez4/schema/library"),Ae=require("@ez4/project/library");var m=require("@ez4/common/library"),je=require("@ez4/reflection");var u=require("@ez4/common/library"),v=class extends u.InvalidTypeError{constructor(t){
11
+ super("Invalid table relations type",void 0,"Database.Relations",t)}},D=class extends u.IncorrectTypeError{constructor(r,a){
12
+ super("Incorrect table relations type",r,"Database.Relations",a);this.schemaType=
13
+ r}},P=class extends u.TypeError{constructor(r,a){super(`Target ${r} must follow \
14
+ the pattern 'column@alias'.`,a);this.relationSource=r}},j=class extends u.TypeError{constructor(r,a){
15
+ super(`Relation table ${r} don't exists.`,a);this.relationTable=r}},y=class extends u.TypeError{constructor(r,a){
16
+ super(`Relation column ${r} don't exists.`,a);this.relationColumn=r}},E=class extends u.TypeError{constructor(r,a){
17
+ super(`Relation alias ${r} can't override table columns.`,a);this.relationAlias=
18
18
  r}};var U="@ez4/database",Fe=e=>e.type===U;var re=require("@ez4/common/library"),w=class extends re.IncompleteTypeError{constructor(t,r){
19
- super("Incomplete database service",t,r)}};var m=require("@ez4/common/library"),V=require("@ez4/reflection"),_=e=>(0,m.isClassDeclaration)(
20
- e)&&(0,m.hasHeritageType)(e,"Database.Service"),te=e=>(0,m.isModelDeclaration)(e)&&
21
- (0,m.hasHeritageType)(e,"Database.Table"),oe=e=>(0,V.isTypeCallback)(e)||(0,V.isTypeFunction)(
22
- e),se=e=>(0,m.hasHeritageType)(e,"Database.Relations"),ae=e=>(0,m.hasHeritageType)(
23
- e,"Database.Indexes"),ne=e=>(0,m.hasHeritageType)(e,"Database.Schema"),ie=e=>(0,m.hasHeritageType)(
24
- e,"Database.Stream");var I=require("@ez4/common/library"),M=require("@ez4/reflection");var pe=require("@ez4/common/library"),O=class extends pe.IncompleteTypeError{constructor(t,r){
25
- super("Incomplete database table",t,r)}};var T=require("@ez4/common/library"),A=class extends T.InvalidTypeError{constructor(t){
26
- super("Invalid table indexes type",void 0,"Database.Indexes",t)}},k=class extends T.IncorrectTypeError{constructor(r,o){
27
- super("Incorrect table indexes type",r,"Database.Indexes",o);this.schemaType=r}},
28
- R=class extends T.TypeError{constructor(r,o){super(`Invalid index type, ${r} mus\
29
- t follow one of the Index options.`,o);this.indexName=r}},z=class extends T.TypeError{constructor(r,o){
30
- super(`Invalid index reference, ${r} must be valid column.`,o);this.indexName=r}};var b=require("@ez4/common/library"),y=require("@ez4/reflection");var ce=(e,t,r,o)=>{if(!(0,y.isTypeReference)(e))return le(e,t,o);let s=r[e.path];
31
- return s?le(s,t,o):null},le=(e,t,r)=>(0,y.isTypeObject)(e)?me(e,(0,b.getObjectMembers)(
32
- e),r):(0,b.isModelDeclaration)(e)?se(e)?me(e,(0,b.getModelMembers)(e),r):(r.push(
33
- new v(e.name,e.file)),null):(r.push(new D(t.file)),null),me=(e,t,r)=>{let o=[];for(let s of t){
34
- if(!(0,y.isModelProperty)(s)||s.inherited)continue;let a=(0,b.getPropertyString)(
35
- s);if(!a)return r.push(new P(s.name,e.file)),null;let[n,i]=s.name.split(":",2),[
36
- p,h]=a.split("@",2);o.push({sourceTable:n,sourceColumn:i,targetColumn:p,targetAlias:h})}
37
- return o};var d=require("@ez4/common/library"),x=require("@ez4/reflection");var de=(e,t,r,o)=>{if(!(0,x.isTypeReference)(e))return ue(e,t,o);let s=r[e.path];
38
- return s?ue(s,t,o):null},ue=(e,t,r)=>(0,x.isTypeObject)(e)?be(e,(0,d.getObjectMembers)(
39
- e),r):(0,d.isModelDeclaration)(e)?ae(e)?be(e,(0,d.getModelMembers)(e),r):(r.push(
40
- new k(e.name,e.file)),null):(r.push(new A(t.file)),null),be=(e,t,r)=>{let o=[];for(let s of t){
41
- if(!(0,x.isModelProperty)(s)||s.inherited)continue;let a=s.name,n=(0,d.getPropertyString)(
42
- s);switch(n){case"primary":case"secondary":case"unique":case"ttl":o.push({name:a,
43
- columns:a.split(":"),type:n});break;default:return r.push(new R(a,e.file)),null}}
44
- return o};var G=require("@ez4/schema/library"),J=require("@ez4/reflection"),ye=require("@ez4/common/library");var B=require("@ez4/common/library"),C=class extends B.InvalidTypeError{constructor(t){
45
- super("Invalid table schema type",void 0,"Database.Schema",t)}},N=class extends B.IncorrectTypeError{constructor(r,o){
46
- super("Incorrect table schema type",r,"Database.Schema",o);this.schemaType=r}};var Y=(e,t,r,o)=>{if(!(0,J.isTypeReference)(e))return Te(e,t,r,o);let s=r[e.path];
47
- return s?Te(s,t,r,o):null},Te=(e,t,r,o)=>(0,J.isTypeObject)(e)?fe(e,r):(0,ye.isModelDeclaration)(
48
- e)?ne(e)?fe(e,r):(o.push(new N(e.name,e.file)),null):(o.push(new C(t.file)),null),
49
- fe=(e,t)=>{let r=(0,G.getObjectSchema)(e,t);return r&&(0,G.isObjectSchema)(r)?r:
50
- null};var c=require("@ez4/common/library"),S=require("@ez4/reflection"),Me=require("@ez4/utils");var g=require("@ez4/common/library"),H=class extends g.IncompleteTypeError{constructor(t,r){
51
- super("Incomplete table stream",t,r)}},$=class extends g.InvalidTypeError{constructor(t){
52
- super("Invalid table stream type",void 0,"Database.Stream",t)}},q=class extends g.IncorrectTypeError{constructor(r,o){
53
- super("Incorrect table stream type",r,"Database.Stream",o);this.streamType=r}};var xe=require("@ez4/common/library"),F=class extends xe.IncompleteTypeError{constructor(t,r){
54
- super("Incomplete stream handler",t,r)}};var ge=(e,t,r)=>{if(!oe(e))return null;let o={},s=new Set(["name","file","change"]);
55
- return e.description&&(o.description=e.description),(o.name=e.name)&&s.delete("n\
56
- ame"),(o.file=e.file)&&s.delete("file"),e.parameters&&s.delete("change"),s.size===
57
- 0&&Ue(o)?o:(r.push(new F([...s],e.file)),null)},Ue=e=>!!e.name&&!!e.file;var he=(e,t,r,o)=>{if(!(0,S.isTypeReference)(e))return Se(e,t,r,o);let s=r[e.path];
58
- return s?Se(s,t,r,o):null},Ve=e=>!!e.handler,Se=(e,t,r,o)=>(0,S.isTypeObject)(e)?
59
- Ie(e,(0,c.getObjectMembers)(e),r,o):(0,c.isModelDeclaration)(e)?ie(e)?Ie(e,(0,c.getModelMembers)(
60
- e),r,o):(o.push(new q(e.name,e.file)),null):(o.push(new $(t.file)),null),Ie=(e,t,r,o)=>{
61
- let s={},a=new Set(["handler"]);for(let n of t)if(!(!(0,S.isModelProperty)(n)||n.
62
- inherited))switch(n.name){case"handler":s.handler=ge(n.value,r,o);break;case"tim\
63
- eout":case"memory":{let i=(0,c.getPropertyNumber)(n);(0,Me.isAnyNumber)(i)&&(s[n.
64
- name]=i);break}case"variables":s.variables=(0,c.getLinkedVariableList)(n,o);break}
65
- return Ve(s)?s:(o.push(new H([...a],e.file)),null)};var Z=(e,t,r)=>{if(!(0,M.isTypeReference)(e))return De(e,t,r);let o=t[e.path];return o?
66
- De(o,t,r):null},_e=e=>!!e.name&&!!e.schema&&!!e.indexes,De=(e,t,r)=>te(e)?ve(e,(0,I.getModelMembers)(
67
- e),t,r):(0,M.isTypeObject)(e)?ve(e,(0,I.getObjectMembers)(e),t,r):null,ve=(e,t,r,o)=>{
68
- let s={},a=new Set(["name","schema","indexes"]);for(let i of t)if(!(!(0,M.isModelProperty)(
69
- i)||i.inherited))switch(i.name){case"name":(s.name=(0,I.getPropertyString)(i))&&
70
- a.delete(i.name);break;case"relations":{let p=ce(i.value,e,r,o);p&&(s.relations=
71
- p);break}case"indexes":{(s.indexes=de(i.value,e,r,o))&&a.delete(i.name);break}case"\
72
- schema":{(s.schema=Y(i.value,e,r,o))&&a.delete(i.name);break}case"stream":{s.stream=
73
- he(i.value,e,r,o);break}}if(!_e(s))return o.push(new O([...a],e.file)),null;let n=Be(
74
- e,s.indexes,s.schema);return n.length?(o.push(...n),null):s},Be=(e,t,r)=>{let o=r.
75
- properties,s=[];for(let{name:a,columns:n}of t)n.some(p=>!o[p])&&s.push(new z(a,e.
76
- file));return s};var L=e=>{let t={},r=[];for(let o in e){let s=e[o];if(!_(s)||(0,l.isExternalStatement)(
77
- s))continue;let a={type:U},n=new Set(["engine","tables"]);a.name=s.name;for(let p of(0,l.getModelMembers)(
78
- s))if(!(!(0,je.isModelProperty)(p)||p.inherited))switch(p.name){case"engine":{(a.
79
- engine=(0,l.getPropertyString)(p))&&n.delete(p.name);break}case"tables":(a.tables=
80
- Je(p,e,r))&&n.delete(p.name);break;case"variables":a.variables=(0,l.getLinkedVariableList)(
81
- p,r);break;case"services":a.services=(0,l.getLinkedServiceList)(p,e,r);break}if(!Ge(
82
- a)){r.push(new w([...n],s.file));continue}let i=Ke(s,a.tables);if(i.length){r.push(
83
- ...i);continue}if(t[s.name]){r.push(new l.DuplicateServiceError(s.name,s.file));
84
- continue}t[s.name]=a}return{services:t,errors:r}},Ge=e=>!!e.name&&!!e.tables,Je=(e,t,r)=>{
85
- let o=(0,l.getPropertyTuple)(e)??[],s=[];for(let a of o){let n=Z(a,t,r);n&&s.push(
86
- n)}return s},Ke=(e,t)=>{let r=Qe(t),o=[];for(let{relations:s,schema:a,indexes:n}of t){
87
- if(!s)continue;let i=a.properties;for(let p of s){let{sourceTable:h,sourceColumn:K,
88
- targetColumn:Q,targetAlias:ee}=p;i[Q]||o.push(new f(Q,e.file)),i[ee]&&o.push(new E(
89
- ee,e.file));let W=r[h]?.schema.properties;W||o.push(new j(h,e.file)),W&&!W[K]&&o.
90
- push(new f(K,e.file));let Re=r[h]?.indexes??[];p.sourceIndex=Pe(Re,K),p.targetIndex=
91
- Pe(n,Q)}}return o},Pe=(e,t)=>e.find(({name:r})=>r===t)?.type,Qe=e=>e.reduce((t,r)=>({
92
- ...t,[r.name]:r}),{});var Ee=e=>_(e)?e.name:null;var we=!1,We=()=>{we||((0,Oe.registerTriggers)(),(0,Ae.registerTriggers)(),(0,ke.createTrigger)(
19
+ super("Incomplete database service",t,r)}};var c=require("@ez4/common/library"),V=require("@ez4/reflection"),_=e=>(0,c.isClassDeclaration)(
20
+ e)&&(0,c.hasHeritageType)(e,"Database.Service"),te=e=>(0,c.isModelDeclaration)(e)&&
21
+ (0,c.hasHeritageType)(e,"Database.Table"),ae=e=>(0,V.isTypeCallback)(e)||(0,V.isTypeFunction)(
22
+ e),ne=e=>(0,c.hasHeritageType)(e,"Database.Relations"),oe=e=>(0,c.hasHeritageType)(
23
+ e,"Database.Indexes"),se=e=>(0,c.hasHeritageType)(e,"Database.Schema"),ie=e=>(0,c.hasHeritageType)(
24
+ e,"Database.Stream");var f=require("@ez4/common/library"),M=require("@ez4/reflection");var pe=require("@ez4/common/library"),k=class extends pe.IncompleteTypeError{constructor(t,r){
25
+ super("Incomplete database table",t,r)}};var T=require("@ez4/common/library"),O=class extends T.InvalidTypeError{constructor(t){
26
+ super("Invalid table indexes type",void 0,"Database.Indexes",t)}},A=class extends T.IncorrectTypeError{constructor(r,a){
27
+ super("Incorrect table indexes type",r,"Database.Indexes",a);this.schemaType=r}},
28
+ R=class extends T.TypeError{constructor(r,a){super(`Invalid index type, ${r} mus\
29
+ t follow one of the Index options.`,a);this.indexName=r}},z=class extends T.TypeError{constructor(r,a){
30
+ super(`Invalid index reference, ${r} must be valid column.`,a);this.indexName=r}};var b=require("@ez4/common/library"),x=require("@ez4/reflection");var ce=(e,t,r,a)=>{if(!(0,x.isTypeReference)(e))return le(e,t,a);let n=r[e.path];
31
+ return n?le(n,t,a):null},le=(e,t,r)=>(0,x.isTypeObject)(e)?me(e,(0,b.getObjectMembers)(
32
+ e),r):(0,b.isModelDeclaration)(e)?ne(e)?me(e,(0,b.getModelMembers)(e),r):(r.push(
33
+ new D(e.name,e.file)),null):(r.push(new v(t.file)),null),me=(e,t,r)=>{let a=[];for(let n of t){
34
+ if(!(0,x.isModelProperty)(n)||n.inherited)continue;let o=(0,b.getPropertyString)(
35
+ n);if(!o)return r.push(new P(n.name,e.file)),null;let[s,i]=n.name.split(":",2),[
36
+ p,h]=o.split("@",2);a.push({sourceTable:s,sourceColumn:i,targetColumn:p,targetAlias:h})}
37
+ return a};var d=require("@ez4/common/library"),g=require("@ez4/reflection");var de=(e,t,r,a)=>{if(!(0,g.isTypeReference)(e))return ue(e,t,a);let n=r[e.path];
38
+ return n?ue(n,t,a):null},ue=(e,t,r)=>(0,g.isTypeObject)(e)?be(e,(0,d.getObjectMembers)(
39
+ e),r):(0,d.isModelDeclaration)(e)?oe(e)?be(e,(0,d.getModelMembers)(e),r):(r.push(
40
+ new A(e.name,e.file)),null):(r.push(new O(t.file)),null),be=(e,t,r)=>{let a=[];for(let n of t){
41
+ if(!(0,g.isModelProperty)(n)||n.inherited)continue;let o=n.name,s=(0,d.getPropertyString)(
42
+ n);switch(s){case"primary":case"secondary":case"unique":case"ttl":a.push({name:o,
43
+ columns:o.split(":"),type:s});break;default:return r.push(new R(o,e.file)),null}}
44
+ return a};var G=require("@ez4/schema/library"),J=require("@ez4/reflection"),ye=require("@ez4/common/library");var B=require("@ez4/common/library"),C=class extends B.InvalidTypeError{constructor(t){
45
+ super("Invalid table schema type",void 0,"Database.Schema",t)}},N=class extends B.IncorrectTypeError{constructor(r,a){
46
+ super("Incorrect table schema type",r,"Database.Schema",a);this.schemaType=r}};var Y=(e,t,r,a)=>{if(!(0,J.isTypeReference)(e))return fe(e,t,r,a);let n=r[e.path];
47
+ return n?fe(n,t,r,a):null},fe=(e,t,r,a)=>(0,J.isTypeObject)(e)?Te(e,r):(0,ye.isModelDeclaration)(
48
+ e)?se(e)?Te(e,r):(a.push(new N(e.name,e.file)),null):(a.push(new C(t.file)),null),
49
+ Te=(e,t)=>{let r=(0,G.getObjectSchema)(e,t);return r&&(0,G.isObjectSchema)(r)?r:
50
+ null};var l=require("@ez4/common/library"),I=require("@ez4/reflection"),Me=require("@ez4/utils");var S=require("@ez4/common/library"),H=class extends S.IncompleteTypeError{constructor(t,r){
51
+ super("Incomplete table stream",t,r)}},$=class extends S.InvalidTypeError{constructor(t){
52
+ super("Invalid table stream type",void 0,"Database.Stream",t)}},q=class extends S.IncorrectTypeError{constructor(r,a){
53
+ super("Incorrect table stream type",r,"Database.Stream",a);this.streamType=r}};var xe=require("@ez4/common/library"),F=class extends xe.IncompleteTypeError{constructor(t,r){
54
+ super("Incomplete stream handler",t,r)}};var ge=(e,t,r)=>{if(!ae(e))return null;let a={},n=new Set(["name","file","change"]);
55
+ return e.description&&(a.description=e.description),(a.name=e.name)&&n.delete("n\
56
+ ame"),(a.file=e.file)&&n.delete("file"),e.parameters&&n.delete("change"),n.size===
57
+ 0&&Ue(a)?a:(r.push(new F([...n],e.file)),null)},Ue=e=>!!e.name&&!!e.file;var he=(e,t,r,a)=>{if(!(0,I.isTypeReference)(e))return Se(e,t,r,a);let n=r[e.path];
58
+ return n?Se(n,t,r,a):null},Ve=e=>!!e.handler,Se=(e,t,r,a)=>(0,I.isTypeObject)(e)?
59
+ Ie(e,(0,l.getObjectMembers)(e),r,a):(0,l.isModelDeclaration)(e)?ie(e)?Ie(e,(0,l.getModelMembers)(
60
+ e),r,a):(a.push(new q(e.name,e.file)),null):(a.push(new $(t.file)),null),Ie=(e,t,r,a)=>{
61
+ let n={},o=new Set(["handler"]);for(let s of t)if(!(!(0,I.isModelProperty)(s)||s.
62
+ inherited))switch(s.name){default:a.push(new l.InvalidServicePropertyError(parent.
63
+ name,s.name,e.file));break;case"listener":{let i=(0,l.getServiceListener)(s.value,
64
+ a);i&&(n.listener=i);break}case"handler":n.handler=ge(s.value,r,a);break;case"ti\
65
+ meout":case"memory":{let i=(0,l.getPropertyNumber)(s);(0,Me.isAnyNumber)(i)&&(n[s.
66
+ name]=i);break}case"variables":n.variables=(0,l.getLinkedVariableList)(s,a);break}
67
+ return Ve(n)?n:(a.push(new H([...o],e.file)),null)};var Z=(e,t,r)=>{if(!(0,M.isTypeReference)(e))return ve(e,t,r);let a=t[e.path];return a?
68
+ ve(a,t,r):null},_e=e=>!!e.name&&!!e.schema&&!!e.indexes,ve=(e,t,r)=>te(e)?De(e,(0,f.getModelMembers)(
69
+ e),t,r):(0,M.isTypeObject)(e)?De(e,(0,f.getObjectMembers)(e),t,r):null,De=(e,t,r,a)=>{
70
+ let n={},o=new Set(["name","schema","indexes"]);for(let i of t)if(!(!(0,M.isModelProperty)(
71
+ i)||i.inherited))switch(i.name){default:a.push(new f.InvalidServicePropertyError(
72
+ parent.name,i.name,e.file));break;case"name":(n.name=(0,f.getPropertyString)(i))&&
73
+ o.delete(i.name);break;case"relations":{let p=ce(i.value,e,r,a);p&&(n.relations=
74
+ p);break}case"indexes":(n.indexes=de(i.value,e,r,a))&&o.delete(i.name);break;case"\
75
+ schema":(n.schema=Y(i.value,e,r,a))&&o.delete(i.name);break;case"stream":n.stream=
76
+ he(i.value,e,r,a);break}if(!_e(n))return a.push(new k([...o],e.file)),null;let s=Be(
77
+ e,n.indexes,n.schema);return s.length?(a.push(...s),null):n},Be=(e,t,r)=>{let a=r.
78
+ properties,n=[];for(let{name:o,columns:s}of t)s.some(p=>!a[p])&&n.push(new z(o,e.
79
+ file));return n};var L=e=>{let t={},r=[];for(let a in e){let n=e[a];if(!_(n)||(0,m.isExternalStatement)(
80
+ n))continue;let o={type:U},s=new Set(["engine","tables"]);o.name=n.name;for(let p of(0,m.getModelMembers)(
81
+ n))if(!(!(0,je.isModelProperty)(p)||p.inherited))switch(p.name){case"engine":{(o.
82
+ engine=(0,m.getPropertyString)(p))&&s.delete(p.name);break}case"tables":(o.tables=
83
+ Je(p,e,r))&&s.delete(p.name);break;case"variables":o.variables=(0,m.getLinkedVariableList)(
84
+ p,r);break;case"services":o.services=(0,m.getLinkedServiceList)(p,e,r);break}if(!Ge(
85
+ o)){r.push(new w([...s],n.file));continue}let i=Ke(n,o.tables);if(i.length){r.push(
86
+ ...i);continue}if(t[n.name]){r.push(new m.DuplicateServiceError(n.name,n.file));
87
+ continue}t[n.name]=o}return{services:t,errors:r}},Ge=e=>!!e.name&&!!e.tables,Je=(e,t,r)=>{
88
+ let a=(0,m.getPropertyTuple)(e)??[],n=[];for(let o of a){let s=Z(o,t,r);s&&n.push(
89
+ s)}return n},Ke=(e,t)=>{let r=Qe(t),a=[];for(let{relations:n,schema:o,indexes:s}of t){
90
+ if(!n)continue;let i=o.properties;for(let p of n){let{sourceTable:h,sourceColumn:K,
91
+ targetColumn:Q,targetAlias:ee}=p;i[Q]||a.push(new y(Q,e.file)),i[ee]&&a.push(new E(
92
+ ee,e.file));let W=r[h]?.schema.properties;W||a.push(new j(h,e.file)),W&&!W[K]&&a.
93
+ push(new y(K,e.file));let Re=r[h]?.indexes??[];p.sourceIndex=Pe(Re,K),p.targetIndex=
94
+ Pe(s,Q)}}return a},Pe=(e,t)=>e.find(({name:r})=>r===t)?.type,Qe=e=>e.reduce((t,r)=>({
95
+ ...t,[r.name]:r}),{});var Ee=e=>_(e)?e.name:null;var we=!1,We=()=>{we||((0,ke.registerTriggers)(),(0,Oe.registerTriggers)(),(0,Ae.createTrigger)(
93
96
  "@ez4/database",{"metadata:getServices":L,"metadata:getLinkedService":Ee}),we=!0)};0&&(module.exports={IncompleteHandlerError,IncompleteServiceError,IncompleteStreamError,
94
97
  IncompleteTableError,IncorrectIndexesTypeError,IncorrectRelationsTypeError,IncorrectSchemaTypeError,
95
98
  IncorrectStreamTypeError,InvalidIndexReferenceError,InvalidIndexTypeError,InvalidIndexesTypeError,
package/dist/library.mjs CHANGED
@@ -1,92 +1,94 @@
1
- import{registerTriggers as Mr}from"@ez4/common/library";import{registerTriggers as hr}from"@ez4/schema/library";
2
- import{createTrigger as Dr}from"@ez4/project/library";import{DuplicateServiceError as mr,isExternalStatement as cr,getLinkedServiceList as ur,
3
- getLinkedVariableList as br,getPropertyString as dr,getPropertyTuple as Tr,getModelMembers as fr}from"@ez4/common/library";
4
- import{isModelProperty as yr}from"@ez4/reflection";import{IncorrectTypeError as me,InvalidTypeError as ce,TypeError as y}from"@ez4/common/library";
5
- var u=class extends ce{constructor(t){super("Invalid table relations type",void 0,
6
- "Database.Relations",t)}},b=class extends me{constructor(r,o){super("Incorrect t\
7
- able relations type",r,"Database.Relations",o);this.schemaType=r}},d=class extends y{constructor(r,o){
8
- super(`Target ${r} must follow the pattern 'column@alias'.`,o);this.relationSource=
9
- r}},T=class extends y{constructor(r,o){super(`Relation table ${r} don't exists.`,
10
- o);this.relationTable=r}},c=class extends y{constructor(r,o){super(`Relation col\
11
- umn ${r} don't exists.`,o);this.relationColumn=r}},f=class extends y{constructor(r,o){
12
- super(`Relation alias ${r} can't override table columns.`,o);this.relationAlias=
13
- r}};var z="@ez4/database",jr=e=>e.type===z;import{IncompleteTypeError as ue}from"@ez4/common/library";var x=class extends ue{constructor(t,r){
14
- super("Incomplete database service",t,r)}};import{hasHeritageType as l,isClassDeclaration as be,isModelDeclaration as de}from"@ez4/common/library";
15
- import{isTypeCallback as Te,isTypeFunction as fe}from"@ez4/reflection";var g=e=>be(
16
- e)&&l(e,"Database.Service"),N=e=>de(e)&&l(e,"Database.Table"),H=e=>Te(e)||fe(e),
1
+ import{registerTriggers as Dr}from"@ez4/common/library";import{registerTriggers as Pr}from"@ez4/schema/library";
2
+ import{createTrigger as jr}from"@ez4/project/library";import{DuplicateServiceError as br,isExternalStatement as dr,getLinkedServiceList as fr,
3
+ getLinkedVariableList as Tr,getPropertyString as yr,getPropertyTuple as xr,getModelMembers as gr}from"@ez4/common/library";
4
+ import{isModelProperty as Sr}from"@ez4/reflection";import{IncorrectTypeError as me,InvalidTypeError as ce,TypeError as y}from"@ez4/common/library";
5
+ var u=class extends ce{constructor(a){super("Invalid table relations type",void 0,
6
+ "Database.Relations",a)}},b=class extends me{constructor(r,t){super("Incorrect t\
7
+ able relations type",r,"Database.Relations",t);this.schemaType=r}},d=class extends y{constructor(r,t){
8
+ super(`Target ${r} must follow the pattern 'column@alias'.`,t);this.relationSource=
9
+ r}},f=class extends y{constructor(r,t){super(`Relation table ${r} don't exists.`,
10
+ t);this.relationTable=r}},c=class extends y{constructor(r,t){super(`Relation col\
11
+ umn ${r} don't exists.`,t);this.relationColumn=r}},T=class extends y{constructor(r,t){
12
+ super(`Relation alias ${r} can't override table columns.`,t);this.relationAlias=
13
+ r}};var z="@ez4/database",kr=e=>e.type===z;import{IncompleteTypeError as ue}from"@ez4/common/library";var x=class extends ue{constructor(a,r){
14
+ super("Incomplete database service",a,r)}};import{hasHeritageType as l,isClassDeclaration as be,isModelDeclaration as de}from"@ez4/common/library";
15
+ import{isTypeCallback as fe,isTypeFunction as Te}from"@ez4/reflection";var g=e=>be(
16
+ e)&&l(e,"Database.Service"),N=e=>de(e)&&l(e,"Database.Table"),H=e=>fe(e)||Te(e),
17
17
  $=e=>l(e,"Database.Relations"),q=e=>l(e,"Database.Indexes"),F=e=>l(e,"Database.S\
18
- chema"),U=e=>l(e,"Database.Stream");import{getModelMembers as tr,getObjectMembers as or,getPropertyString as sr}from"@ez4/common/library";
19
- import{isModelProperty as ar,isTypeObject as nr,isTypeReference as ir}from"@ez4/reflection";import{IncompleteTypeError as ye}from"@ez4/common/library";var S=class extends ye{constructor(t,r){
20
- super("Incomplete database table",t,r)}};import{IncorrectTypeError as xe,InvalidTypeError as ge,TypeError as V}from"@ez4/common/library";
21
- var I=class extends ge{constructor(t){super("Invalid table indexes type",void 0,
22
- "Database.Indexes",t)}},M=class extends xe{constructor(r,o){super("Incorrect tab\
23
- le indexes type",r,"Database.Indexes",o);this.schemaType=r}},h=class extends V{constructor(r,o){
24
- super(`Invalid index type, ${r} must follow one of the Index options.`,o);this.indexName=
25
- r}},D=class extends V{constructor(r,o){super(`Invalid index reference, ${r} must\
26
- be valid column.`,o);this.indexName=r}};import{isModelDeclaration as Se,getModelMembers as Ie,getObjectMembers as Me,getPropertyString as he}from"@ez4/common/library";
27
- import{isModelProperty as De,isTypeObject as ve,isTypeReference as Pe}from"@ez4/reflection";var G=(e,t,r,o)=>{if(!Pe(e))return _(e,t,o);let s=r[e.path];return s?_(s,t,o):null},
28
- _=(e,t,r)=>ve(e)?B(e,Me(e),r):Se(e)?$(e)?B(e,Ie(e),r):(r.push(new b(e.name,e.file)),
29
- null):(r.push(new u(t.file)),null),B=(e,t,r)=>{let o=[];for(let s of t){if(!De(s)||
30
- s.inherited)continue;let a=he(s);if(!a)return r.push(new d(s.name,e.file)),null;
31
- let[n,i]=s.name.split(":",2),[p,m]=a.split("@",2);o.push({sourceTable:n,sourceColumn:i,
32
- targetColumn:p,targetAlias:m})}return o};import{isModelDeclaration as je,getModelMembers as Ee,getObjectMembers as we,getPropertyString as Oe}from"@ez4/common/library";
33
- import{isModelProperty as Ae,isTypeObject as ke,isTypeReference as Re}from"@ez4/reflection";var Q=(e,t,r,o)=>{if(!Re(e))return J(e,t,o);let s=r[e.path];return s?J(s,t,o):null},
34
- J=(e,t,r)=>ke(e)?K(e,we(e),r):je(e)?q(e)?K(e,Ee(e),r):(r.push(new M(e.name,e.file)),
35
- null):(r.push(new I(t.file)),null),K=(e,t,r)=>{let o=[];for(let s of t){if(!Ae(s)||
36
- s.inherited)continue;let a=s.name,n=Oe(s);switch(n){case"primary":case"secondary":case"\
37
- unique":case"ttl":o.push({name:a,columns:a.split(":"),type:n});break;default:return r.
38
- push(new h(a,e.file)),null}}return o};import{getObjectSchema as Ne,isObjectSchema as He}from"@ez4/schema/library";import{
18
+ chema"),U=e=>l(e,"Database.Stream");import{InvalidServicePropertyError as nr,getModelMembers as or,getObjectMembers as sr,
19
+ getPropertyString as ir}from"@ez4/common/library";import{isModelProperty as pr,isTypeObject as lr,
20
+ isTypeReference as mr}from"@ez4/reflection";import{IncompleteTypeError as ye}from"@ez4/common/library";var S=class extends ye{constructor(a,r){
21
+ super("Incomplete database table",a,r)}};import{IncorrectTypeError as xe,InvalidTypeError as ge,TypeError as V}from"@ez4/common/library";
22
+ var I=class extends ge{constructor(a){super("Invalid table indexes type",void 0,
23
+ "Database.Indexes",a)}},M=class extends xe{constructor(r,t){super("Incorrect tab\
24
+ le indexes type",r,"Database.Indexes",t);this.schemaType=r}},h=class extends V{constructor(r,t){
25
+ super(`Invalid index type, ${r} must follow one of the Index options.`,t);this.indexName=
26
+ r}},v=class extends V{constructor(r,t){super(`Invalid index reference, ${r} must\
27
+ be valid column.`,t);this.indexName=r}};import{isModelDeclaration as Se,getModelMembers as Ie,getObjectMembers as Me,getPropertyString as he}from"@ez4/common/library";
28
+ import{isModelProperty as ve,isTypeObject as De,isTypeReference as Pe}from"@ez4/reflection";var G=(e,a,r,t)=>{if(!Pe(e))return _(e,a,t);let n=r[e.path];return n?_(n,a,t):null},
29
+ _=(e,a,r)=>De(e)?B(e,Me(e),r):Se(e)?$(e)?B(e,Ie(e),r):(r.push(new b(e.name,e.file)),
30
+ null):(r.push(new u(a.file)),null),B=(e,a,r)=>{let t=[];for(let n of a){if(!ve(n)||
31
+ n.inherited)continue;let o=he(n);if(!o)return r.push(new d(n.name,e.file)),null;
32
+ let[s,i]=n.name.split(":",2),[p,m]=o.split("@",2);t.push({sourceTable:s,sourceColumn:i,
33
+ targetColumn:p,targetAlias:m})}return t};import{isModelDeclaration as je,getModelMembers as Ee,getObjectMembers as we,getPropertyString as ke}from"@ez4/common/library";
34
+ import{isModelProperty as Oe,isTypeObject as Ae,isTypeReference as Re}from"@ez4/reflection";var Q=(e,a,r,t)=>{if(!Re(e))return J(e,a,t);let n=r[e.path];return n?J(n,a,t):null},
35
+ J=(e,a,r)=>Ae(e)?K(e,we(e),r):je(e)?q(e)?K(e,Ee(e),r):(r.push(new M(e.name,e.file)),
36
+ null):(r.push(new I(a.file)),null),K=(e,a,r)=>{let t=[];for(let n of a){if(!Oe(n)||
37
+ n.inherited)continue;let o=n.name,s=ke(n);switch(s){case"primary":case"secondary":case"\
38
+ unique":case"ttl":t.push({name:o,columns:o.split(":"),type:s});break;default:return r.
39
+ push(new h(o,e.file)),null}}return t};import{getObjectSchema as Ne,isObjectSchema as He}from"@ez4/schema/library";import{
39
40
  isTypeObject as $e,isTypeReference as qe}from"@ez4/reflection";import{isModelDeclaration as Fe}from"@ez4/common/library";import{IncorrectTypeError as ze,InvalidTypeError as Ce}from"@ez4/common/library";
40
- var v=class extends Ce{constructor(t){super("Invalid table schema type",void 0,"\
41
- Database.Schema",t)}},P=class extends ze{constructor(r,o){super("Incorrect table\
42
- schema type",r,"Database.Schema",o);this.schemaType=r}};var Y=(e,t,r,o)=>{if(!qe(e))return W(e,t,r,o);let s=r[e.path];return s?W(s,t,r,o):
43
- null},W=(e,t,r,o)=>$e(e)?X(e,r):Fe(e)?F(e)?X(e,r):(o.push(new P(e.name,e.file)),
44
- null):(o.push(new v(t.file)),null),X=(e,t)=>{let r=Ne(e,t);return r&&He(r)?r:null};import{getLinkedVariableList as Je,getModelMembers as Ke,getObjectMembers as Qe,
45
- getPropertyNumber as We,isModelDeclaration as Xe}from"@ez4/common/library";import{
46
- isModelProperty as Ye,isTypeObject as Ze,isTypeReference as Le}from"@ez4/reflection";
47
- import{isAnyNumber as er}from"@ez4/utils";import{IncompleteTypeError as Ue,IncorrectTypeError as Ve,InvalidTypeError as _e}from"@ez4/common/library";
48
- var j=class extends Ue{constructor(t,r){super("Incomplete table stream",t,r)}},E=class extends _e{constructor(t){
49
- super("Invalid table stream type",void 0,"Database.Stream",t)}},w=class extends Ve{constructor(r,o){
50
- super("Incorrect table stream type",r,"Database.Stream",o);this.streamType=r}};import{IncompleteTypeError as Be}from"@ez4/common/library";var O=class extends Be{constructor(t,r){
51
- super("Incomplete stream handler",t,r)}};var Z=(e,t,r)=>{if(!H(e))return null;let o={},s=new Set(["name","file","change"]);
52
- return e.description&&(o.description=e.description),(o.name=e.name)&&s.delete("n\
53
- ame"),(o.file=e.file)&&s.delete("file"),e.parameters&&s.delete("change"),s.size===
54
- 0&&Ge(o)?o:(r.push(new O([...s],e.file)),null)},Ge=e=>!!e.name&&!!e.file;var re=(e,t,r,o)=>{if(!Le(e))return L(e,t,r,o);let s=r[e.path];return s?L(s,t,r,
55
- o):null},rr=e=>!!e.handler,L=(e,t,r,o)=>Ze(e)?ee(e,Qe(e),r,o):Xe(e)?U(e)?ee(e,Ke(
56
- e),r,o):(o.push(new w(e.name,e.file)),null):(o.push(new E(t.file)),null),ee=(e,t,r,o)=>{
57
- let s={},a=new Set(["handler"]);for(let n of t)if(!(!Ye(n)||n.inherited))switch(n.
58
- name){case"handler":s.handler=Z(n.value,r,o);break;case"timeout":case"memory":{let i=We(
59
- n);er(i)&&(s[n.name]=i);break}case"variables":s.variables=Je(n,o);break}return rr(
60
- s)?s:(o.push(new j([...a],e.file)),null)};var se=(e,t,r)=>{if(!ir(e))return te(e,t,r);let o=t[e.path];return o?te(o,t,r):null},
61
- pr=e=>!!e.name&&!!e.schema&&!!e.indexes,te=(e,t,r)=>N(e)?oe(e,tr(e),t,r):nr(e)?oe(
62
- e,or(e),t,r):null,oe=(e,t,r,o)=>{let s={},a=new Set(["name","schema","indexes"]);
63
- for(let i of t)if(!(!ar(i)||i.inherited))switch(i.name){case"name":(s.name=sr(i))&&
64
- a.delete(i.name);break;case"relations":{let p=G(i.value,e,r,o);p&&(s.relations=p);
65
- break}case"indexes":{(s.indexes=Q(i.value,e,r,o))&&a.delete(i.name);break}case"s\
66
- chema":{(s.schema=Y(i.value,e,r,o))&&a.delete(i.name);break}case"stream":{s.stream=
67
- re(i.value,e,r,o);break}}if(!pr(s))return o.push(new S([...a],e.file)),null;let n=lr(
68
- e,s.indexes,s.schema);return n.length?(o.push(...n),null):s},lr=(e,t,r)=>{let o=r.
69
- properties,s=[];for(let{name:a,columns:n}of t)n.some(p=>!o[p])&&s.push(new D(a,e.
70
- file));return s};var ne=e=>{let t={},r=[];for(let o in e){let s=e[o];if(!g(s)||cr(s))continue;let a={
71
- type:z},n=new Set(["engine","tables"]);a.name=s.name;for(let p of fr(s))if(!(!yr(
72
- p)||p.inherited))switch(p.name){case"engine":{(a.engine=dr(p))&&n.delete(p.name);
73
- break}case"tables":(a.tables=gr(p,e,r))&&n.delete(p.name);break;case"variables":
74
- a.variables=br(p,r);break;case"services":a.services=ur(p,e,r);break}if(!xr(a)){r.
75
- push(new x([...n],s.file));continue}let i=Sr(s,a.tables);if(i.length){r.push(...i);
76
- continue}if(t[s.name]){r.push(new mr(s.name,s.file));continue}t[s.name]=a}return{
77
- services:t,errors:r}},xr=e=>!!e.name&&!!e.tables,gr=(e,t,r)=>{let o=Tr(e)??[],s=[];
78
- for(let a of o){let n=se(a,t,r);n&&s.push(n)}return s},Sr=(e,t)=>{let r=Ir(t),o=[];
79
- for(let{relations:s,schema:a,indexes:n}of t){if(!s)continue;let i=a.properties;for(let p of s){
80
- let{sourceTable:m,sourceColumn:A,targetColumn:k,targetAlias:C}=p;i[k]||o.push(new c(
81
- k,e.file)),i[C]&&o.push(new f(C,e.file));let R=r[m]?.schema.properties;R||o.push(
82
- new T(m,e.file)),R&&!R[A]&&o.push(new c(A,e.file));let le=r[m]?.indexes??[];p.sourceIndex=
83
- ae(le,A),p.targetIndex=ae(n,k)}}return o},ae=(e,t)=>e.find(({name:r})=>r===t)?.type,
84
- Ir=e=>e.reduce((t,r)=>({...t,[r.name]:r}),{});var ie=e=>g(e)?e.name:null;var pe=!1,Bt=()=>{pe||(Mr(),hr(),Dr("@ez4/database",{"metadata:getServices":ne,"\
85
- metadata:getLinkedService":ie}),pe=!0)};export{O as IncompleteHandlerError,x as IncompleteServiceError,j as IncompleteStreamError,
41
+ var D=class extends Ce{constructor(a){super("Invalid table schema type",void 0,"\
42
+ Database.Schema",a)}},P=class extends ze{constructor(r,t){super("Incorrect table\
43
+ schema type",r,"Database.Schema",t);this.schemaType=r}};var Y=(e,a,r,t)=>{if(!qe(e))return W(e,a,r,t);let n=r[e.path];return n?W(n,a,r,t):
44
+ null},W=(e,a,r,t)=>$e(e)?X(e,r):Fe(e)?F(e)?X(e,r):(t.push(new P(e.name,e.file)),
45
+ null):(t.push(new D(a.file)),null),X=(e,a)=>{let r=Ne(e,a);return r&&He(r)?r:null};import{InvalidServicePropertyError as Je,isModelDeclaration as Ke,getLinkedVariableList as Qe,
46
+ getModelMembers as We,getObjectMembers as Xe,getPropertyNumber as Ye,getServiceListener as Ze}from"@ez4/common/library";
47
+ import{isModelProperty as Le,isTypeObject as er,isTypeReference as rr}from"@ez4/reflection";
48
+ import{isAnyNumber as tr}from"@ez4/utils";import{IncompleteTypeError as Ue,IncorrectTypeError as Ve,InvalidTypeError as _e}from"@ez4/common/library";
49
+ var j=class extends Ue{constructor(a,r){super("Incomplete table stream",a,r)}},E=class extends _e{constructor(a){
50
+ super("Invalid table stream type",void 0,"Database.Stream",a)}},w=class extends Ve{constructor(r,t){
51
+ super("Incorrect table stream type",r,"Database.Stream",t);this.streamType=r}};import{IncompleteTypeError as Be}from"@ez4/common/library";var k=class extends Be{constructor(a,r){
52
+ super("Incomplete stream handler",a,r)}};var Z=(e,a,r)=>{if(!H(e))return null;let t={},n=new Set(["name","file","change"]);
53
+ return e.description&&(t.description=e.description),(t.name=e.name)&&n.delete("n\
54
+ ame"),(t.file=e.file)&&n.delete("file"),e.parameters&&n.delete("change"),n.size===
55
+ 0&&Ge(t)?t:(r.push(new k([...n],e.file)),null)},Ge=e=>!!e.name&&!!e.file;var re=(e,a,r,t)=>{if(!rr(e))return L(e,a,r,t);let n=r[e.path];return n?L(n,a,r,
56
+ t):null},ar=e=>!!e.handler,L=(e,a,r,t)=>er(e)?ee(e,Xe(e),r,t):Ke(e)?U(e)?ee(e,We(
57
+ e),r,t):(t.push(new w(e.name,e.file)),null):(t.push(new E(a.file)),null),ee=(e,a,r,t)=>{
58
+ let n={},o=new Set(["handler"]);for(let s of a)if(!(!Le(s)||s.inherited))switch(s.
59
+ name){default:t.push(new Je(parent.name,s.name,e.file));break;case"listener":{let i=Ze(
60
+ s.value,t);i&&(n.listener=i);break}case"handler":n.handler=Z(s.value,r,t);break;case"\
61
+ timeout":case"memory":{let i=Ye(s);tr(i)&&(n[s.name]=i);break}case"variables":n.
62
+ variables=Qe(s,t);break}return ar(n)?n:(t.push(new j([...o],e.file)),null)};var ne=(e,a,r)=>{if(!mr(e))return te(e,a,r);let t=a[e.path];return t?te(t,a,r):null},
63
+ cr=e=>!!e.name&&!!e.schema&&!!e.indexes,te=(e,a,r)=>N(e)?ae(e,or(e),a,r):lr(e)?ae(
64
+ e,sr(e),a,r):null,ae=(e,a,r,t)=>{let n={},o=new Set(["name","schema","indexes"]);
65
+ for(let i of a)if(!(!pr(i)||i.inherited))switch(i.name){default:t.push(new nr(parent.
66
+ name,i.name,e.file));break;case"name":(n.name=ir(i))&&o.delete(i.name);break;case"\
67
+ relations":{let p=G(i.value,e,r,t);p&&(n.relations=p);break}case"indexes":(n.indexes=
68
+ Q(i.value,e,r,t))&&o.delete(i.name);break;case"schema":(n.schema=Y(i.value,e,r,t))&&
69
+ o.delete(i.name);break;case"stream":n.stream=re(i.value,e,r,t);break}if(!cr(n))return t.
70
+ push(new S([...o],e.file)),null;let s=ur(e,n.indexes,n.schema);return s.length?(t.
71
+ push(...s),null):n},ur=(e,a,r)=>{let t=r.properties,n=[];for(let{name:o,columns:s}of a)
72
+ s.some(p=>!t[p])&&n.push(new v(o,e.file));return n};var se=e=>{let a={},r=[];for(let t in e){let n=e[t];if(!g(n)||dr(n))continue;let o={
73
+ type:z},s=new Set(["engine","tables"]);o.name=n.name;for(let p of gr(n))if(!(!Sr(
74
+ p)||p.inherited))switch(p.name){case"engine":{(o.engine=yr(p))&&s.delete(p.name);
75
+ break}case"tables":(o.tables=Mr(p,e,r))&&s.delete(p.name);break;case"variables":
76
+ o.variables=Tr(p,r);break;case"services":o.services=fr(p,e,r);break}if(!Ir(o)){r.
77
+ push(new x([...s],n.file));continue}let i=hr(n,o.tables);if(i.length){r.push(...i);
78
+ continue}if(a[n.name]){r.push(new br(n.name,n.file));continue}a[n.name]=o}return{
79
+ services:a,errors:r}},Ir=e=>!!e.name&&!!e.tables,Mr=(e,a,r)=>{let t=xr(e)??[],n=[];
80
+ for(let o of t){let s=ne(o,a,r);s&&n.push(s)}return n},hr=(e,a)=>{let r=vr(a),t=[];
81
+ for(let{relations:n,schema:o,indexes:s}of a){if(!n)continue;let i=o.properties;for(let p of n){
82
+ let{sourceTable:m,sourceColumn:O,targetColumn:A,targetAlias:C}=p;i[A]||t.push(new c(
83
+ A,e.file)),i[C]&&t.push(new T(C,e.file));let R=r[m]?.schema.properties;R||t.push(
84
+ new f(m,e.file)),R&&!R[O]&&t.push(new c(O,e.file));let le=r[m]?.indexes??[];p.sourceIndex=
85
+ oe(le,O),p.targetIndex=oe(s,A)}}return t},oe=(e,a)=>e.find(({name:r})=>r===a)?.type,
86
+ vr=e=>e.reduce((a,r)=>({...a,[r.name]:r}),{});var ie=e=>g(e)?e.name:null;var pe=!1,Kt=()=>{pe||(Dr(),Pr(),jr("@ez4/database",{"metadata:getServices":se,"\
87
+ metadata:getLinkedService":ie}),pe=!0)};export{k as IncompleteHandlerError,x as IncompleteServiceError,j as IncompleteStreamError,
86
88
  S as IncompleteTableError,M as IncorrectIndexesTypeError,b as IncorrectRelationsTypeError,
87
- P as IncorrectSchemaTypeError,w as IncorrectStreamTypeError,D as InvalidIndexReferenceError,
88
- h as InvalidIndexTypeError,I as InvalidIndexesTypeError,f as InvalidRelationAliasError,
89
- c as InvalidRelationColumnError,T as InvalidRelationTableError,d as InvalidRelationTargetError,
90
- u as InvalidRelationsTypeError,v as InvalidSchemaTypeError,E as InvalidStreamTypeError,
91
- z as ServiceType,ne as getDatabaseServices,se as getDatabaseTable,Y as getTableSchema,
92
- jr as isDatabaseService,Bt as registerTriggers};
89
+ P as IncorrectSchemaTypeError,w as IncorrectStreamTypeError,v as InvalidIndexReferenceError,
90
+ h as InvalidIndexTypeError,I as InvalidIndexesTypeError,T as InvalidRelationAliasError,
91
+ c as InvalidRelationColumnError,f as InvalidRelationTableError,d as InvalidRelationTargetError,
92
+ u as InvalidRelationsTypeError,D as InvalidSchemaTypeError,E as InvalidStreamTypeError,
93
+ z as ServiceType,se as getDatabaseServices,ne as getDatabaseTable,Y as getTableSchema,
94
+ kr as isDatabaseService,Kt as registerTriggers};
@@ -4,7 +4,7 @@ import type { Database } from './database.js';
4
4
  /**
5
5
  * Database client.
6
6
  */
7
- export type Client<T extends Database.Service<any>> = TableClients<T> & {
7
+ export type Client<T extends Database.Service> = TableClients<T> & {
8
8
  /**
9
9
  * Prepare and execute the given query.
10
10
  *
@@ -1,9 +1,7 @@
1
1
  import type { Service } from '@ez4/common';
2
2
  import type { LinkedVariables } from '@ez4/project/library';
3
3
  import type { StreamChange } from './streams.js';
4
- import type { TableTypes } from './table.js';
5
4
  import type { Client } from './client.js';
6
- import type { Index } from './indexes.js';
7
5
  /**
8
6
  * Given a database service `T`, it returns all its table.
9
7
  */
@@ -27,26 +25,43 @@ export declare namespace Database {
27
25
  /**
28
26
  * Table indexes.
29
27
  */
30
- type Indexes<T extends Schema = Schema> = {
31
- [P in keyof T]?: Index;
32
- };
28
+ type Indexes = {};
29
+ /**
30
+ * Incoming stream event.
31
+ */
32
+ type Incoming<T extends Schema> = StreamChange<T & {
33
+ /**
34
+ * Request tracking Id.
35
+ */
36
+ requestId: string;
37
+ }>;
38
+ /**
39
+ * Stream listener.
40
+ */
41
+ type Listener<T extends Schema> = (event: Service.Event<Incoming<T> | StreamChange<T>>, context: Service.Context<Database.Service>) => Promise<void> | void;
42
+ /**
43
+ * Stream handler.
44
+ */
45
+ type Handler<T extends Schema> = (request: Incoming<T> | StreamChange<T>, context: Service.Context<Database.Service>) => Promise<void> | void;
46
+ type ServiceEvent<T extends Schema = Schema> = Service.Event<Incoming<T>>;
33
47
  /**
34
48
  * Table stream.
35
49
  */
36
50
  interface Stream<T extends Schema = Schema> {
51
+ /**
52
+ * Stream listener.
53
+ */
54
+ listener?: Listener<T>;
37
55
  /**
38
56
  * Stream handler.
39
- *
40
- * @param change Stream change.
41
- * @param context Handler context.
42
57
  */
43
- handler: (change: StreamChange<T>, context: Service.Context<Service<any>>) => void | Promise<void>;
58
+ handler: Handler<T>;
44
59
  /**
45
- * Variables associated to the route.
60
+ * Variables associated to the handler.
46
61
  */
47
62
  variables?: LinkedVariables;
48
63
  /**
49
- * Max route execution time (in seconds) for the handler.
64
+ * Max execution time (in seconds) for the handler.
50
65
  */
51
66
  timeout?: number;
52
67
  /**
@@ -73,7 +88,7 @@ export declare namespace Database {
73
88
  /**
74
89
  * Table indexes.
75
90
  */
76
- indexes: Indexes<T>;
91
+ indexes: Indexes;
77
92
  /**
78
93
  * Table stream configuration.
79
94
  */
@@ -82,7 +97,7 @@ export declare namespace Database {
82
97
  /**
83
98
  * Database service.
84
99
  */
85
- abstract class Service<T extends Schema[] = [Schema]> implements Service.Provider {
100
+ abstract class Service implements Service.Provider {
86
101
  /**
87
102
  * Determines which database engine to use.
88
103
  * Check the provider package to know all the possible values.
@@ -91,10 +106,10 @@ export declare namespace Database {
91
106
  /**
92
107
  * Describe all available tables for the service.
93
108
  */
94
- abstract tables: TableTypes<T>[];
109
+ abstract tables: Table<any>[];
95
110
  /**
96
111
  * Service client.
97
112
  */
98
- client: Client<Service<T>>;
113
+ client: Client<Service>;
99
114
  }
100
115
  }
@@ -46,7 +46,7 @@ export type DecomposeSecondaryIndexNames<T extends Database.Indexes> = Decompose
46
46
  /**
47
47
  * Given a database service `T`, it produces an object with all tables containing indexes.
48
48
  */
49
- export type IndexedTables<T extends Database.Service<any>> = MergeIndexes<DatabaseTables<T>>;
49
+ export type IndexedTables<T extends Database.Service> = MergeIndexes<DatabaseTables<T>>;
50
50
  /**
51
51
  * Given a list of tables with indexes `T`, it produces another object containing all the
52
52
  * table indexes.
@@ -2,7 +2,7 @@ import type { RelationMetadata } from './relations.js';
2
2
  import type { Database } from './database.js';
3
3
  import type { Order } from './order.js';
4
4
  import type { DecomposeIndexName, DecomposePrimaryIndexNames, DecomposeUniqueIndexNames } from './indexes.js';
5
- import type { AnyObject, PartialProperties, PartialObject, FlatObject, OptionalObject, StrictObject, IsNullable, IsObjectEmpty, IsObject } from '@ez4/utils';
5
+ import type { AnyObject, PartialProperties, PartialObject, FlatObject, OptionalObject, StrictObject, IsNullable, IsObjectEmpty, IsObject, IsArray } from '@ez4/utils';
6
6
  /**
7
7
  * Query builder types.
8
8
  */
@@ -10,25 +10,25 @@ export declare namespace Query {
10
10
  export type InsertOneInput<T extends Database.Schema, R extends RelationMetadata> = {
11
11
  data: InsertDataInput<T, R>;
12
12
  };
13
- export type UpdateOneInput<T extends Database.Schema, S extends AnyObject, I extends Database.Indexes<T>, R extends RelationMetadata> = {
13
+ export type UpdateOneInput<T extends Database.Schema, S extends AnyObject, I extends Database.Indexes, R extends RelationMetadata> = {
14
14
  select?: StrictSelectInput<T, S, R>;
15
15
  include?: StrictIncludeInput<S, R>;
16
16
  data: OptionalObject<UpdateDataInput<T, R>>;
17
17
  where: WhereInput<T, I, R>;
18
18
  };
19
- export type FindOneInput<T extends Database.Schema, S extends AnyObject, I extends Database.Indexes<T>, R extends RelationMetadata> = {
19
+ export type FindOneInput<T extends Database.Schema, S extends AnyObject, I extends Database.Indexes, R extends RelationMetadata> = {
20
20
  select: StrictSelectInput<T, S, R>;
21
21
  include?: StrictIncludeInput<S, R>;
22
22
  where: WhereInput<T, I, R>;
23
23
  };
24
- export type UpsertOneInput<T extends Database.Schema, S extends AnyObject, I extends Database.Indexes<T>, R extends RelationMetadata> = {
24
+ export type UpsertOneInput<T extends Database.Schema, S extends AnyObject, I extends Database.Indexes, R extends RelationMetadata> = {
25
25
  select?: StrictSelectInput<T, S, R>;
26
26
  include?: StrictIncludeInput<S, R>;
27
27
  update: OptionalObject<UpdateDataInput<T, R>>;
28
28
  insert: InsertDataInput<T, R>;
29
29
  where: WhereInput<T, I, R>;
30
30
  };
31
- export type DeleteOneInput<T extends Database.Schema, S extends AnyObject, I extends Database.Indexes<T>, R extends RelationMetadata> = {
31
+ export type DeleteOneInput<T extends Database.Schema, S extends AnyObject, I extends Database.Indexes, R extends RelationMetadata> = {
32
32
  select?: StrictSelectInput<T, S, R>;
33
33
  include?: StrictIncludeInput<S, R>;
34
34
  where: WhereInput<T, I, R>;
@@ -43,7 +43,7 @@ export declare namespace Query {
43
43
  where?: WhereInput<T, {}, R>;
44
44
  limit?: number;
45
45
  };
46
- export type FindManyInput<T extends Database.Schema, S extends AnyObject, I extends Database.Indexes<T>, R extends RelationMetadata> = {
46
+ export type FindManyInput<T extends Database.Schema, S extends AnyObject, I extends Database.Indexes, R extends RelationMetadata> = {
47
47
  select: StrictSelectInput<T, S, R>;
48
48
  include?: StrictIncludeInput<S, R>;
49
49
  where?: WhereInput<T, {}, R>;
@@ -81,14 +81,14 @@ export declare namespace Query {
81
81
  export type OrderInput<I extends Database.Indexes> = {
82
82
  [P in DecomposeIndexName<keyof I>]?: Order;
83
83
  };
84
- export type WhereInput<T extends Database.Schema, I extends Database.Indexes<T>, R extends RelationMetadata> = WhereInputFilters<T, I, R> & WhereNot<WhereInputFilters<T, I, R>> & WhereAnd<WhereInputFilters<T, I, R>> & WhereOr<WhereInputFilters<T, I, R>>;
85
- export type WhereOperators = keyof (WhereNegate<any> & WhereEqual<any> & WhereGreaterThan<any> & WhereGreaterThanOrEqual<any> & WhereLessThan<any> & WhereLessThanOrEqual<any> & WhereIn<any> & WhereBetween<any> & WhereIsMissing & WhereIsNull & WhereStartsWith & WhereContains);
84
+ export type WhereInput<T extends Database.Schema, I extends Database.Indexes, R extends RelationMetadata> = WhereInputFilters<T, I, R> & WhereNot<WhereInputFilters<T, I, R>> & WhereAnd<WhereInputFilters<T, I, R>> & WhereOr<WhereInputFilters<T, I, R>>;
85
+ export type WhereOperators = keyof (WhereNegate<any> & WhereEqual<any> & WhereGreaterThan<any> & WhereGreaterThanOrEqual<any> & WhereLessThan<any> & WhereLessThanOrEqual<any> & WhereIn<any> & WhereBetween<any> & WhereIsMissing & WhereIsNull & WhereStartsWith & WhereContains<any>);
86
86
  type IndexFields<R extends RelationMetadata> = string extends R['indexes'] ? never : R['indexes'];
87
87
  type SelectFields<T extends Database.Schema, R extends RelationMetadata> = IsObjectEmpty<R['selects']> extends true ? T : T & R['selects'];
88
88
  type IncludeFilters<T extends AnyObject, S extends AnyObject> = {
89
89
  [P in keyof T]?: P extends keyof S ? IsObject<T[P]> extends true ? null | WhereRelationField<NonNullable<T[P]>> : never : never;
90
90
  };
91
- type WhereOperations<T> = WhereNegate<T> | WhereEqual<T> | WhereGreaterThan<T> | WhereGreaterThanOrEqual<T> | WhereLessThan<T> | WhereLessThanOrEqual<T> | WhereIn<T> | WhereBetween<T> | WhereIsMissing | WhereIsNull | WhereStartsWith | WhereContains;
91
+ type WhereOperations<T> = WhereNegate<T> | WhereEqual<T> | WhereGreaterThan<T> | WhereGreaterThanOrEqual<T> | WhereLessThan<T> | WhereLessThanOrEqual<T> | WhereIn<T> | WhereBetween<T> | WhereIsMissing | WhereIsNull | WhereStartsWith | WhereContains<T>;
92
92
  type WhereField<T> = IsObject<T> extends false ? T | WhereOperations<T> : IsNullable<T> extends true ? null | WhereObjectField<NonNullable<T>> : WhereObjectField<NonNullable<T>>;
93
93
  type WhereObjectField<T extends AnyObject> = {
94
94
  [P in keyof T]?: WhereField<T[P]>;
@@ -103,8 +103,8 @@ export declare namespace Query {
103
103
  type WhereOptionalFilters<T extends AnyObject, N extends string> = {
104
104
  [P in Exclude<keyof T, N>]?: WhereField<T[P]>;
105
105
  };
106
- type WhereCommonFilters<T extends AnyObject, I extends Database.Indexes<T>> = (WhereRequiredFilters<T, DecomposePrimaryIndexNames<I>> & WhereOptionalFilters<T, DecomposePrimaryIndexNames<I>>) | (WhereRequiredFilters<T, DecomposeUniqueIndexNames<I>> & WhereOptionalFilters<T, DecomposeUniqueIndexNames<I>>);
107
- type WhereInputFilters<T extends Database.Schema, I extends Database.Indexes<T>, R extends RelationMetadata> = WhereCommonFilters<T, I> & WhereRelationFilters<R['filters']>;
106
+ type WhereCommonFilters<T extends AnyObject, I extends Database.Indexes> = (WhereRequiredFilters<T, DecomposePrimaryIndexNames<I>> & WhereOptionalFilters<T, DecomposePrimaryIndexNames<I>>) | (WhereRequiredFilters<T, DecomposeUniqueIndexNames<I>> & WhereOptionalFilters<T, DecomposeUniqueIndexNames<I>>);
107
+ type WhereInputFilters<T extends Database.Schema, I extends Database.Indexes, R extends RelationMetadata> = WhereCommonFilters<T, I> & WhereRelationFilters<R['filters']>;
108
108
  type WhereNot<T extends AnyObject> = {
109
109
  NOT?: T | WhereAnd<T> | WhereOr<T>;
110
110
  };
@@ -133,7 +133,7 @@ export declare namespace Query {
133
133
  lte: T;
134
134
  };
135
135
  type WhereIn<T> = {
136
- isIn: T[];
136
+ isIn: IsArray<T> extends true ? T : IsObject<T> extends true ? T : T[];
137
137
  };
138
138
  type WhereBetween<T> = {
139
139
  isBetween: [T, T];
@@ -147,8 +147,8 @@ export declare namespace Query {
147
147
  type WhereStartsWith = {
148
148
  startsWith: string;
149
149
  };
150
- type WhereContains = {
151
- contains: string;
150
+ type WhereContains<T> = {
151
+ contains: IsObject<T> extends true ? Partial<T> : T;
152
152
  };
153
153
  export {};
154
154
  }
@@ -30,7 +30,7 @@ export type RelationTargetAlias<T> = T extends `${string}@${infer U}` ? U : neve
30
30
  /**
31
31
  * Given a database service `T`, it produces an object with all relation tables.
32
32
  */
33
- export type RelationTables<T extends Database.Service<any>> = MergeRelations<DatabaseTables<T>, TableSchemas<T>, IndexedTables<T>>;
33
+ export type RelationTables<T extends Database.Service> = MergeRelations<DatabaseTables<T>, TableSchemas<T>, IndexedTables<T>>;
34
34
  /**
35
35
  * Given a list of tables with relations `T`, it produces an object containing all the
36
36
  * relation tables.
@@ -3,7 +3,7 @@ import type { Database, DatabaseTables } from './database.js';
3
3
  /**
4
4
  * Given a database service `T`, it produces an object containing all tables with schemas.
5
5
  */
6
- export type TableSchemas<T extends Database.Service<any>> = MergeTables<DatabaseTables<T>>;
6
+ export type TableSchemas<T extends Database.Service> = MergeTables<DatabaseTables<T>>;
7
7
  /**
8
8
  * Given a list of tables with schema `T`, it produces an object containing all schemas.
9
9
  */
@@ -2,33 +2,54 @@
2
2
  * Stream change for `insert`, `update` or `delete` operations.
3
3
  */
4
4
  export type StreamChange<T> = StreamInsertChange<T> | StreamUpdateChange<T> | StreamDeleteChange<T>;
5
+ /**
6
+ * Stream change types.
7
+ */
8
+ export declare const enum StreamType {
9
+ Insert = "insert",
10
+ Update = "update",
11
+ Delete = "delete"
12
+ }
5
13
  /**
6
14
  * Stream change for an `insert` operation.
7
15
  */
8
16
  export type StreamInsertChange<T> = {
17
+ /**
18
+ * Change type.
19
+ */
9
20
  type: StreamType.Insert;
21
+ /**
22
+ * Inserted record.
23
+ */
10
24
  record: T;
11
25
  };
12
26
  /**
13
27
  * Stream change for an `update` operation.
14
28
  */
15
29
  export type StreamUpdateChange<T> = {
30
+ /**
31
+ * Change type.
32
+ */
16
33
  type: StreamType.Update;
34
+ /**
35
+ * Previous record.
36
+ */
17
37
  oldRecord: T;
38
+ /**
39
+ * Current record.
40
+ */
18
41
  newRecord: T;
19
42
  };
20
43
  /**
21
44
  * Stream change for an `delete` operation.
22
45
  */
23
46
  export type StreamDeleteChange<T> = {
47
+ /**
48
+ * Change type.
49
+ */
24
50
  type: StreamType.Delete;
51
+ /**
52
+ * Deleted record.
53
+ */
25
54
  record: T;
26
55
  };
27
- /**
28
- * Stream change types.
29
- */
30
- export declare const enum StreamType {
31
- Insert = "insert",
32
- Update = "update",
33
- Delete = "delete"
34
- }
@@ -1,13 +1,9 @@
1
- import type { AnyObject, ArrayRest, IsArrayEmpty, IsAny, PropertyExists } from '@ez4/utils';
1
+ import type { AnyObject, PropertyExists } from '@ez4/utils';
2
2
  import type { RelationMetadata, RelationTables } from './relations.js';
3
3
  import type { IndexedTables } from './indexes.js';
4
4
  import type { TableSchemas } from './schemas.js';
5
5
  import type { Database } from './database.js';
6
6
  import type { Query } from './query.js';
7
- /**
8
- * Given an array of schemas `T`, it returns an union of `Database.Table` for each schema.
9
- */
10
- export type TableTypes<T extends Database.Schema[]> = IsAny<T> extends true ? any : IsArrayEmpty<T> extends true ? Database.Table<Database.Schema> : Database.Table<T[0]> | TableTypes<ArrayRest<T>>;
11
7
  /**
12
8
  * Given an indexed table `T` and a property `P`, it returns all the indexes corresponding
13
9
  * to the given property.
@@ -21,13 +17,13 @@ export type TableRelation<P, T extends AnyObject> = PropertyExists<P, T> extends
21
17
  /**
22
18
  * Given a database service `T`, it returns all table clients.
23
19
  */
24
- export type TableClients<T extends Database.Service<any>> = {
20
+ export type TableClients<T extends Database.Service> = {
25
21
  [P in keyof TableSchemas<T>]: TableSchemas<T>[P] extends Database.Schema ? Table<TableSchemas<T>[P], TableIndex<P, IndexedTables<T>>, TableRelation<P, RelationTables<T>>> : never;
26
22
  };
27
23
  /**
28
24
  * Table client.
29
25
  */
30
- export interface Table<T extends Database.Schema, I extends Database.Indexes<T>, R extends RelationMetadata> {
26
+ export interface Table<T extends Database.Schema, I extends Database.Indexes, R extends RelationMetadata> {
31
27
  /**
32
28
  * Insert one record into the database.
33
29
  *
@@ -12,17 +12,17 @@ export declare namespace Transaction {
12
12
  /**
13
13
  * Write operations.
14
14
  */
15
- export type WriteOperations<T extends Database.Service<any>> = {
15
+ export type WriteOperations<T extends Database.Service> = {
16
16
  [P in keyof TableSchemas<T>]?: (TableSchemas<T>[P] extends Database.Schema ? AnyOperation<TableSchemas<T>[P], TableIndex<P, IndexedTables<T>>, TableRelation<P, RelationTables<T>>> : AnyObject)[];
17
17
  };
18
- type AnyOperation<T extends Database.Schema, I extends Database.Indexes<T>, R extends RelationMetadata> = InsertOperation<T, R> | UpdateOperation<T, I, R> | DeleteOperation<T, I, R>;
18
+ type AnyOperation<T extends Database.Schema, I extends Database.Indexes, R extends RelationMetadata> = InsertOperation<T, R> | UpdateOperation<T, I, R> | DeleteOperation<T, I, R>;
19
19
  type InsertOperation<T extends Database.Schema, R extends RelationMetadata> = {
20
20
  insert: Query.InsertOneInput<T, R>;
21
21
  };
22
- type UpdateOperation<T extends Database.Schema, I extends Database.Indexes<T>, R extends RelationMetadata> = {
22
+ type UpdateOperation<T extends Database.Schema, I extends Database.Indexes, R extends RelationMetadata> = {
23
23
  update: Omit<Query.UpdateOneInput<T, Query.SelectInput<T, R>, I, R>, 'select' | 'include'>;
24
24
  };
25
- type DeleteOperation<T extends Database.Schema, I extends Database.Indexes<T>, R extends RelationMetadata> = {
25
+ type DeleteOperation<T extends Database.Schema, I extends Database.Indexes, R extends RelationMetadata> = {
26
26
  delete: Omit<Query.DeleteOneInput<T, Query.SelectInput<T, R>, I, R>, 'select' | 'include'>;
27
27
  };
28
28
  export {};
@@ -1,6 +1,8 @@
1
1
  import type { LinkedVariables } from '@ez4/project/library';
2
+ import type { ServiceListener } from '@ez4/common/library';
2
3
  import type { StreamHandler } from './handler.js';
3
4
  export type TableStream = {
5
+ listener?: ServiceListener;
4
6
  handler: StreamHandler;
5
7
  variables?: LinkedVariables | null;
6
8
  timeout?: number;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ez4/database",
3
3
  "description": "EZ4: Components to build database services",
4
- "version": "0.13.0",
4
+ "version": "0.15.0",
5
5
  "author": "Silas B.",
6
6
  "license": "MIT",
7
7
  "type": "module",
@@ -42,10 +42,10 @@
42
42
  "live:publish": "npm run test && npm publish --access public"
43
43
  },
44
44
  "dependencies": {
45
- "@ez4/common": "^0.13.0",
46
- "@ez4/project": "^0.13.0",
47
- "@ez4/reflection": "^0.13.0",
48
- "@ez4/schema": "^0.13.0",
49
- "@ez4/utils": "^0.13.0"
45
+ "@ez4/common": "^0.15.0",
46
+ "@ez4/project": "^0.15.0",
47
+ "@ez4/reflection": "^0.15.0",
48
+ "@ez4/schema": "^0.15.0",
49
+ "@ez4/utils": "^0.15.0"
50
50
  }
51
51
  }