@ez4/gateway 0.23.0 → 0.24.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.
@@ -1,5 +1,15 @@
1
1
  import type { Service } from '@ez4/common';
2
+ import type { NamingStyle } from '@ez4/schema';
2
3
  import type { Http } from './contract.js';
4
+ /**
5
+ * Contract for HTTP preferences.
6
+ */
7
+ export interface HttpPreferences {
8
+ /**
9
+ * Determines the naming style for the query strings and body payloads.
10
+ */
11
+ namingStyle?: NamingStyle;
12
+ }
3
13
  /**
4
14
  * HTTP CORS configuration.
5
15
  */
@@ -71,6 +81,10 @@ export type HttpRawBody = string;
71
81
  * Authorizer request.
72
82
  */
73
83
  export interface HttpAuthRequest {
84
+ /**
85
+ * Auth request preferences.
86
+ */
87
+ preferences?: HttpPreferences;
74
88
  /**
75
89
  * Expected HTTP headers.
76
90
  */
@@ -97,6 +111,10 @@ export interface HttpAuthResponse {
97
111
  * HTTP request.
98
112
  */
99
113
  export interface HttpRequest {
114
+ /**
115
+ * Request preferences.
116
+ */
117
+ preferences?: HttpPreferences;
100
118
  /**
101
119
  * Expected identity.
102
120
  */
@@ -122,6 +140,10 @@ export interface HttpRequest {
122
140
  * HTTP response.
123
141
  */
124
142
  export interface HttpResponse {
143
+ /**
144
+ * Response preferences.
145
+ */
146
+ preferences?: HttpPreferences;
125
147
  /**
126
148
  * HTTP status code.
127
149
  */
@@ -169,7 +191,7 @@ export type HttpIncoming<T extends HttpRequest | HttpAuthRequest> = T & {
169
191
  /**
170
192
  * Request listener.
171
193
  */
172
- export type HttpListener<T extends HttpRequest | HttpAuthRequest> = (event: Service.Event<HttpIncoming<T>>, context: Service.Context<Http.Service | HttpProvider>) => Promise<void> | void;
194
+ export type HttpListener<T extends HttpRequest | HttpAuthRequest> = (event: Service.AnyEvent<HttpIncoming<T>>, context: Service.Context<Http.Service | HttpProvider>) => Promise<void> | void;
173
195
  /**
174
196
  * Request authorizer.
175
197
  */
@@ -1,8 +1,8 @@
1
- import type { Service } from '@ez4/common';
1
+ import type { Service as CommonService } from '@ez4/common';
2
2
  import type { LinkedVariables } from '@ez4/project/library';
3
3
  import type { HttpPath } from '../types/common.js';
4
4
  import type { HttpSuccessStatuses, HttpEmptySuccessResponse, HttpSuccessResponse } from './utils.js';
5
- import type { HttpHeaders, HttpIdentity, HttpPathParameters, HttpQueryStrings, HttpJsonBody, HttpRawBody, HttpAuthRequest, HttpAuthResponse, HttpRequest, HttpResponse, HttpErrors, HttpProvider, HttpIncoming, HttpListener, HttpAuthorizer, HttpHandler, HttpCache, HttpCors } from './common.js';
5
+ import type { HttpHeaders, HttpIdentity, HttpPathParameters, HttpQueryStrings, HttpJsonBody, HttpRawBody, HttpPreferences, HttpAuthRequest, HttpAuthResponse, HttpRequest, HttpResponse, HttpErrors, HttpProvider, HttpIncoming, HttpListener, HttpAuthorizer, HttpHandler, HttpCache, HttpCors } from './common.js';
6
6
  /**
7
7
  * Provide all contracts for a self-managed HTTP service.
8
8
  */
@@ -13,6 +13,7 @@ export declare namespace Http {
13
13
  type QueryStrings = HttpQueryStrings;
14
14
  type JsonBody = HttpJsonBody;
15
15
  type RawBody = HttpRawBody;
16
+ type Preferences = HttpPreferences;
16
17
  type AuthRequest = HttpAuthRequest;
17
18
  type Request = HttpRequest;
18
19
  type AuthResponse = HttpAuthResponse;
@@ -25,7 +26,7 @@ export declare namespace Http {
25
26
  type Listener<T extends Request | AuthRequest> = HttpListener<T>;
26
27
  type Authorizer<T extends AuthRequest> = HttpAuthorizer<T>;
27
28
  type Handler<T extends Request> = HttpHandler<T>;
28
- type ServiceEvent<T extends Request | AuthRequest = Request> = Service.Event<Incoming<T>>;
29
+ type ServiceEvent<T extends Request | AuthRequest = Request> = CommonService.AnyEvent<Incoming<T>>;
29
30
  type EmptySuccessResponse<S extends HttpSuccessStatuses = 204> = HttpEmptySuccessResponse<S>;
30
31
  type SuccessResponse<S extends HttpSuccessStatuses, T extends HttpRawBody | HttpJsonBody> = HttpSuccessResponse<S, T>;
31
32
  /**
@@ -48,14 +49,14 @@ export declare namespace Http {
48
49
  * Route handler.
49
50
  */
50
51
  handler: Handler<T>;
51
- /**
52
- * Default log retention (in days) for the handlers.
53
- */
54
- logRetention?: number;
55
52
  /**
56
53
  * Map status codes and errors for all known exceptions.
57
54
  */
58
55
  httpErrors?: Errors;
56
+ /**
57
+ * Default log retention (in days) for the handlers.
58
+ */
59
+ logRetention?: number;
59
60
  /**
60
61
  * Variables associated to the route.
61
62
  */
@@ -85,6 +86,10 @@ export declare namespace Http {
85
86
  * Status codes for all known exceptions.
86
87
  */
87
88
  httpErrors?: Errors;
89
+ /**
90
+ * Default preferences for all handlers and routes.
91
+ */
92
+ preferences?: Preferences;
88
93
  /**
89
94
  * Default log retention (in days) for the handlers.
90
95
  */
@@ -101,7 +106,7 @@ export declare namespace Http {
101
106
  /**
102
107
  * HTTP service.
103
108
  */
104
- abstract class Service implements Service.Provider {
109
+ abstract class Service implements CommonService.Provider {
105
110
  /**
106
111
  * All expected routes.
107
112
  */
@@ -0,0 +1,9 @@
1
+ /**
2
+ * HTTP naming style.
3
+ */
4
+ export declare const enum NamingStyle {
5
+ CamelCase = "camel",
6
+ PascalCase = "pascal",
7
+ SnakeCase = "snake",
8
+ KebabCase = "kebab"
9
+ }
@@ -1,8 +1,11 @@
1
- import type { ArraySchema, ObjectSchema, ScalarSchema, UnionSchema } from '@ez4/schema';
1
+ import type { ArraySchema, NamingStyle, ObjectSchema, ScalarSchema, UnionSchema } from '@ez4/schema';
2
2
  import type { LinkedVariables } from '@ez4/project/library';
3
3
  import type { ServiceListener } from '@ez4/common/library';
4
4
  export type HttpVerb = 'ANY' | 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'OPTIONS';
5
5
  export type HttpPath = `${HttpVerb} /${string}`;
6
+ export type HttpPreferences = {
7
+ namingStyle?: NamingStyle;
8
+ };
6
9
  export type HttpAuthRequest = {
7
10
  headers?: ObjectSchema | null;
8
11
  parameters?: ObjectSchema | null;
@@ -12,8 +15,8 @@ export type HttpAuthResponse = {
12
15
  identity?: ObjectSchema | UnionSchema | null;
13
16
  };
14
17
  export type HttpRequest = {
15
- headers?: ObjectSchema | null;
16
18
  identity?: ObjectSchema | UnionSchema | null;
19
+ headers?: ObjectSchema | null;
17
20
  parameters?: ObjectSchema | null;
18
21
  query?: ObjectSchema | null;
19
22
  body?: ObjectSchema | UnionSchema | ArraySchema | ScalarSchema | null;
@@ -29,9 +32,11 @@ export type HttpHandler = {
29
32
  response: HttpResponse;
30
33
  request?: HttpRequest;
31
34
  file: string;
35
+ module?: string;
32
36
  };
33
37
  export type HttpAuthorizer = {
34
38
  name: string;
39
+ module?: string;
35
40
  file: string;
36
41
  description?: string;
37
42
  response?: HttpAuthResponse;
@@ -46,16 +51,18 @@ export type HttpRoute = {
46
51
  listener?: ServiceListener | null;
47
52
  authorizer?: HttpAuthorizer | null;
48
53
  variables?: LinkedVariables | null;
49
- logRetention?: number | null;
50
54
  httpErrors?: HttpErrors | null;
55
+ preferences?: HttpPreferences;
56
+ logRetention?: number | null;
51
57
  timeout?: number | null;
52
58
  memory?: number | null;
53
59
  cors?: boolean | null;
54
60
  };
55
61
  export type HttpDefaults = {
56
- logRetention?: number | null;
57
- httpErrors?: HttpErrors | null;
58
62
  listener?: ServiceListener | null;
63
+ httpErrors?: HttpErrors | null;
64
+ preferences?: HttpPreferences;
65
+ logRetention?: number | null;
59
66
  timeout?: number | null;
60
67
  memory?: number | null;
61
68
  };
@@ -1,4 +1,4 @@
1
1
  import type { AnySchema } from '@ez4/schema';
2
2
  import type { Http } from '../services/contract.js';
3
- export declare const getRequestBody: <T extends Http.JsonBody | Http.RawBody>(input: T, schema: AnySchema) => Promise<T>;
4
- export declare const getResponseBody: (body: unknown, schema: AnySchema) => unknown;
3
+ export declare const getRequestBody: <T extends Http.JsonBody | Http.RawBody>(input: T, schema: AnySchema, preferences?: Http.Preferences | null) => Promise<T>;
4
+ export declare const getResponseBody: (body: unknown, schema: AnySchema, preferences?: Http.Preferences) => unknown;
@@ -1,3 +1,3 @@
1
1
  import type { ObjectSchema } from '@ez4/schema';
2
2
  import type { Http } from '@ez4/gateway';
3
- export declare const getQueryStrings: <T extends Http.QueryStrings>(input: T, schema: ObjectSchema) => Promise<T>;
3
+ export declare const getQueryStrings: <T extends Http.QueryStrings>(input: T, schema: ObjectSchema, preferences?: Http.Preferences | null) => Promise<T>;
package/dist/utils.cjs CHANGED
@@ -1,23 +1,25 @@
1
- "use strict";var y=Object.defineProperty;var H=Object.getOwnPropertyDescriptor;var q=Object.getOwnPropertyNames;var S=Object.prototype.hasOwnProperty;var s=(e,t)=>y(e,"name",{value:t,configurable:!0});var b=(e,t)=>{for(var r in t)y(e,r,{get:t[r],enumerable:!0})},E=(e,t,r,o)=>{if(t&&
2
- typeof t=="object"||typeof t=="function")for(let a of q(t))!S.call(e,a)&&a!==r&&
3
- y(e,a,{get:()=>t[a],enumerable:!(o=H(t,a))||o.enumerable});return e};var v=e=>E(y({},"__esModule",{value:!0}),e);var R={};b(R,{getHeaders:()=>j,getIdentity:()=>B,getJsonError:()=>O,getPathParameters:()=>z,
4
- getQueryStrings:()=>M,getRequestBody:()=>C,getResponseBody:()=>P});module.exports=
5
- v(R);var m=require("@ez4/validator"),d=require("@ez4/transform"),x=require("@ez4/gateway");var z=s(async(e,t)=>{let r=(0,d.transform)(e,t,(0,d.createTransformContext)({convert:!1})),
6
- o=await(0,m.validate)(r,t,(0,m.createValidatorContext)({property:"$path"}));if(o.
7
- length){let a=(0,m.getUniqueErrorMessages)(o);throw new x.HttpBadRequestError("M\
8
- alformed path parameters.",a)}return r},"getPathParameters");var n=require("@ez4/validator"),g=require("@ez4/transform"),l=require("@ez4/gateway");var M=s(async(e,t)=>{let r=(0,g.transform)(e,t,(0,g.createTransformContext)({convert:!0})),
9
- o=await(0,n.validate)(r,t,(0,n.createValidatorContext)({property:"$query"}));if(o.
10
- length){let a=(0,n.getUniqueErrorMessages)(o);throw new l.HttpBadRequestError("M\
11
- alformed query strings.",a)}return r},"getQueryStrings");var p=require("@ez4/validator"),h=require("@ez4/transform"),u=require("@ez4/gateway");var j=s(async(e,t)=>{let r=(0,h.transform)(e,t,(0,h.createTransformContext)({convert:!1})),
1
+ "use strict";var d=Object.defineProperty;var q=Object.getOwnPropertyDescriptor;var C=Object.getOwnPropertyNames;var P=Object.prototype.hasOwnProperty;var s=(e,t)=>d(e,"name",{value:t,configurable:!0});var b=(e,t)=>{for(var r in t)d(e,r,{get:t[r],enumerable:!0})},z=(e,t,r,o)=>{if(t&&
2
+ typeof t=="object"||typeof t=="function")for(let a of C(t))!P.call(e,a)&&a!==r&&
3
+ d(e,a,{get:()=>t[a],enumerable:!(o=q(t,a))||o.enumerable});return e};var M=e=>z(d({},"__esModule",{value:!0}),e);var A={};b(A,{getHeaders:()=>O,getIdentity:()=>R,getJsonError:()=>$,getPathParameters:()=>j,
4
+ getQueryStrings:()=>B,getRequestBody:()=>U,getResponseBody:()=>V});module.exports=
5
+ M(A);var l=require("@ez4/transform"),n=require("@ez4/validator"),H=require("@ez4/gateway");var j=s(async(e,t)=>{let r=(0,l.transform)(e,t,(0,l.createTransformContext)({convert:!1})),
6
+ o=await(0,n.validate)(r,t,(0,n.createValidatorContext)({property:"$path"}));if(o.
7
+ length){let a=(0,n.getUniqueErrorMessages)(o);throw new H.HttpBadRequestError("M\
8
+ alformed path parameters.",a)}return r},"getPathParameters");var g=require("@ez4/transform"),m=require("@ez4/validator"),w=require("@ez4/gateway");var B=s(async(e,t,r)=>{let o=r?.namingStyle,a=(0,g.createTransformContext)({convert:!0,
9
+ inputStyle:o}),y=(0,g.transform)(e,t,a),x=(0,m.createValidatorContext)({property:"\
10
+ $query"}),u=await(0,m.validate)(y,t,x);if(u.length){let T=(0,m.getUniqueErrorMessages)(
11
+ u);throw new w.HttpBadRequestError("Malformed query strings.",T)}return y},"getQ\
12
+ ueryStrings");var h=require("@ez4/transform"),p=require("@ez4/validator"),S=require("@ez4/gateway");var O=s(async(e,t)=>{let r=(0,h.transform)(e,t,(0,h.createTransformContext)({convert:!1})),
12
13
  o=await(0,p.validate)(r,t,(0,p.createValidatorContext)({property:"$header"}));if(o.
13
- length){let a=(0,p.getUniqueErrorMessages)(o);throw new u.HttpBadRequestError("M\
14
- alformed request headers.",a)}return r},"getHeaders");var i=require("@ez4/validator"),T=require("@ez4/gateway");var B=s(async(e,t)=>{let r=await(0,i.validate)(e,t,(0,i.createValidatorContext)(
15
- {property:"$identity"}));if(r.length){let o=(0,i.getUniqueErrorMessages)(r);throw new T.HttpBadRequestError(
16
- "Malformed authorizer identity.",o)}return e},"getIdentity");var c=require("@ez4/validator"),f=require("@ez4/transform"),w=require("@ez4/gateway");var C=s(async(e,t)=>{let r=await(0,c.validate)(e,t,(0,c.createValidatorContext)(
17
- {property:"$body"}));if(r.length){let a=(0,c.getUniqueErrorMessages)(r);throw new w.HttpBadRequestError(
18
- "Malformed body payload.",a)}return(0,f.transform)(e,t,(0,f.createTransformContext)(
19
- {convert:!1}))},"getRequestBody"),P=s((e,t)=>(0,f.transform)(e,t,(0,f.createTransformContext)(
20
- {convert:!1})),"getResponseBody");var O=s(({status:e,message:t,details:r})=>({status:e,body:{message:t,details:r}}),
14
+ length){let a=(0,p.getUniqueErrorMessages)(o);throw new S.HttpBadRequestError("M\
15
+ alformed request headers.",a)}return r},"getHeaders");var i=require("@ez4/validator"),v=require("@ez4/gateway");var R=s(async(e,t)=>{let r=await(0,i.validate)(e,t,(0,i.createValidatorContext)(
16
+ {property:"$identity"}));if(r.length){let o=(0,i.getUniqueErrorMessages)(r);throw new v.HttpBadRequestError(
17
+ "Malformed authorizer identity.",o)}return e},"getIdentity");var c=require("@ez4/transform"),f=require("@ez4/validator"),E=require("@ez4/gateway");var U=s(async(e,t,r)=>{let o=r?.namingStyle,a=(0,f.createValidatorContext)({property:"\
18
+ $body",inputStyle:o}),y=await(0,f.validate)(e,t,a);if(y.length){let T=(0,f.getUniqueErrorMessages)(
19
+ y);throw new E.HttpBadRequestError("Malformed body payload.",T)}let x=(0,c.createTransformContext)(
20
+ {convert:!1,inputStyle:o});return(0,c.transform)(e,t,x)},"getRequestBody"),V=s((e,t,r)=>{
21
+ let o=r?.namingStyle,a=(0,c.createTransformContext)({convert:!1,outputStyle:o});
22
+ return(0,c.transform)(e,t,a)},"getResponseBody");var $=s(({status:e,message:t,details:r})=>({status:e,body:{message:t,details:r}}),
21
23
  "getJsonError");0&&(module.exports={getHeaders,getIdentity,getJsonError,getPathParameters,getQueryStrings,
22
24
  getRequestBody,getResponseBody});
23
25
  //# sourceMappingURL=utils.cjs.map
package/dist/utils.mjs CHANGED
@@ -1,19 +1,25 @@
1
- var p=Object.defineProperty;var o=(e,t)=>p(e,"name",{value:t,configurable:!0});import{validate as i,getUniqueErrorMessages as c,createValidatorContext as f}from"@ez4/validator";
2
- import{createTransformContext as y,transform as d}from"@ez4/transform";import{HttpBadRequestError as g}from"@ez4/gateway";var I=o(async(e,t)=>{let r=d(e,t,y({convert:!1})),a=await i(r,t,f({property:"$pa\
3
- th"}));if(a.length){let s=c(a);throw new g("Malformed path parameters.",s)}return r},
4
- "getPathParameters");import{validate as h,createValidatorContext as x,getUniqueErrorMessages as l}from"@ez4/validator";
5
- import{createTransformContext as u,transform as T}from"@ez4/transform";import{HttpBadRequestError as w}from"@ez4/gateway";var G=o(async(e,t)=>{let r=T(e,t,u({convert:!0})),a=await h(r,t,x({property:"$qu\
6
- ery"}));if(a.length){let s=l(a);throw new w("Malformed query strings.",s)}return r},
7
- "getQueryStrings");import{validate as H,createValidatorContext as q,getUniqueErrorMessages as S}from"@ez4/validator";
8
- import{createTransformContext as b,transform as E}from"@ez4/transform";import{HttpBadRequestError as v}from"@ez4/gateway";var Y=o(async(e,t)=>{let r=E(e,t,b({convert:!1})),a=await H(r,t,q({property:"$he\
9
- ader"}));if(a.length){let s=S(a);throw new v("Malformed request headers.",s)}return r},
10
- "getHeaders");import{validate as z,createValidatorContext as M,getUniqueErrorMessages as j}from"@ez4/validator";
11
- import{HttpBadRequestError as B}from"@ez4/gateway";var rt=o(async(e,t)=>{let r=await z(e,t,M({property:"$identity"}));if(r.length){
12
- let a=j(r);throw new B("Malformed authorizer identity.",a)}return e},"getIdentit\
13
- y");import{validate as C,createValidatorContext as P,getUniqueErrorMessages as O}from"@ez4/validator";
14
- import{createTransformContext as m,transform as n}from"@ez4/transform";import{HttpBadRequestError as R}from"@ez4/gateway";var pt=o(async(e,t)=>{let r=await C(e,t,P({property:"$body"}));if(r.length){let s=O(
15
- r);throw new R("Malformed body payload.",s)}return n(e,t,m({convert:!1}))},"getR\
16
- equestBody"),it=o((e,t)=>n(e,t,m({convert:!1})),"getResponseBody");var yt=o(({status:e,message:t,details:r})=>({status:e,body:{message:t,details:r}}),
17
- "getJsonError");export{Y as getHeaders,rt as getIdentity,yt as getJsonError,I as getPathParameters,
18
- G as getQueryStrings,pt as getRequestBody,it as getResponseBody};
1
+ var y=Object.defineProperty;var a=(e,t)=>y(e,"name",{value:t,configurable:!0});import{createTransformContext as d,transform as l}from"@ez4/transform";import{validate as g,
2
+ getUniqueErrorMessages as h,createValidatorContext as x}from"@ez4/validator";import{
3
+ HttpBadRequestError as u}from"@ez4/gateway";var D=a(async(e,t)=>{let r=l(e,t,d({convert:!1})),o=await g(r,t,x({property:"$pa\
4
+ th"}));if(o.length){let s=h(o);throw new u("Malformed path parameters.",s)}return r},
5
+ "getPathParameters");import{createTransformContext as T,transform as H}from"@ez4/transform";import{validate as w,
6
+ createValidatorContext as S,getUniqueErrorMessages as v}from"@ez4/validator";import{
7
+ HttpBadRequestError as E}from"@ez4/gateway";var W=a(async(e,t,r)=>{let o=r?.namingStyle,s=T({convert:!0,inputStyle:o}),n=H(e,
8
+ t,s),m=S({property:"$query"}),p=await w(n,t,m);if(p.length){let i=v(p);throw new E(
9
+ "Malformed query strings.",i)}return n},"getQueryStrings");import{createTransformContext as q,transform as C}from"@ez4/transform";import{validate as P,
10
+ createValidatorContext as b,getUniqueErrorMessages as z}from"@ez4/validator";import{
11
+ HttpBadRequestError as M}from"@ez4/gateway";var et=a(async(e,t)=>{let r=C(e,t,q({convert:!1})),o=await P(r,t,b({property:"$h\
12
+ eader"}));if(o.length){let s=z(o);throw new M("Malformed request headers.",s)}return r},
13
+ "getHeaders");import{validate as j,createValidatorContext as B,getUniqueErrorMessages as O}from"@ez4/validator";
14
+ import{HttpBadRequestError as R}from"@ez4/gateway";var nt=a(async(e,t)=>{let r=await j(e,t,B({property:"$identity"}));if(r.length){
15
+ let o=O(r);throw new R("Malformed authorizer identity.",o)}return e},"getIdentit\
16
+ y");import{createTransformContext as c,transform as f}from"@ez4/transform";import{validate as U,
17
+ createValidatorContext as V,getUniqueErrorMessages as $}from"@ez4/validator";import{
18
+ HttpBadRequestError as A}from"@ez4/gateway";var yt=a(async(e,t,r)=>{let o=r?.namingStyle,s=V({property:"$body",inputStyle:o}),
19
+ n=await U(e,t,s);if(n.length){let i=$(n);throw new A("Malformed body payload.",i)}
20
+ let m=c({convert:!1,inputStyle:o});return f(e,t,m)},"getRequestBody"),dt=a((e,t,r)=>{
21
+ let o=r?.namingStyle,s=c({convert:!1,outputStyle:o});return f(e,t,s)},"getRespon\
22
+ seBody");var ht=a(({status:e,message:t,details:r})=>({status:e,body:{message:t,details:r}}),
23
+ "getJsonError");export{et as getHeaders,nt as getIdentity,ht as getJsonError,D as getPathParameters,
24
+ W as getQueryStrings,yt as getRequestBody,dt as getResponseBody};
19
25
  //# sourceMappingURL=utils.mjs.map
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ez4/gateway",
3
3
  "description": "EZ4: Components to build gateway services",
4
- "version": "0.23.0",
4
+ "version": "0.24.0",
5
5
  "author": "Silas B.",
6
6
  "license": "MIT",
7
7
  "type": "module",
@@ -37,6 +37,7 @@
37
37
  "packages/*"
38
38
  ],
39
39
  "scripts": {
40
+ "lint": "eslint --cache",
40
41
  "clean": "rm -f *.tsbuildinfo && rm -rf dist/*",
41
42
  "build": "tsc -p tsconfig.json && node tools/bundler.mjs",
42
43
  "test": "npm run test:types && node --test --import ../../tools/tsnode.mjs test/*.spec.ts",
@@ -47,10 +48,12 @@
47
48
  "live:publish": "npm run test && npm publish --access public"
48
49
  },
49
50
  "dependencies": {
50
- "@ez4/common": "^0.23.0",
51
- "@ez4/project": "^0.23.0",
52
- "@ez4/reflection": "^0.23.0",
53
- "@ez4/schema": "^0.23.0",
54
- "@ez4/utils": "^0.23.0"
51
+ "@ez4/common": "^0.24.0",
52
+ "@ez4/project": "^0.24.0",
53
+ "@ez4/reflection": "^0.24.0",
54
+ "@ez4/schema": "^0.24.0",
55
+ "@ez4/transform": "^0.24.0",
56
+ "@ez4/utils": "^0.24.0",
57
+ "@ez4/validator": "^0.24.0"
55
58
  }
56
59
  }