justus 0.2.0 → 0.2.2
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/dts-generator.cjs +3 -12
- package/dist/dts-generator.cjs.map +2 -2
- package/dist/dts-generator.mjs +4 -22
- package/dist/dts-generator.mjs.map +2 -2
- package/dist/schema.cjs +4 -5
- package/dist/schema.cjs.map +1 -1
- package/dist/schema.mjs +4 -5
- package/dist/schema.mjs.map +1 -1
- package/dist/types.cjs +10 -17
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.ts +15 -13
- package/dist/types.mjs +9 -12
- package/dist/types.mjs.map +1 -1
- package/dist/utilities.cjs +3 -5
- package/dist/utilities.cjs.map +1 -1
- package/dist/utilities.mjs +3 -5
- package/dist/utilities.mjs.map +1 -1
- package/dist/validators/object.cjs +4 -4
- package/dist/validators/object.cjs.map +1 -1
- package/dist/validators/object.mjs +5 -8
- package/dist/validators/object.mjs.map +1 -1
- package/dist/validators/tuple.cjs +2 -2
- package/dist/validators/tuple.cjs.map +1 -1
- package/dist/validators/tuple.mjs +3 -3
- package/dist/validators/tuple.mjs.map +1 -1
- package/package.json +5 -5
- package/src/dts-generator.ts +2 -21
- package/src/schema.ts +5 -5
- package/src/types.ts +23 -17
- package/src/utilities.ts +4 -5
- package/src/validators/object.ts +4 -7
- package/src/validators/tuple.ts +3 -3
package/dist/dts-generator.cjs
CHANGED
|
@@ -77,7 +77,7 @@ function generateTypeNode(validator, references) {
|
|
|
77
77
|
return type;
|
|
78
78
|
if (type === neverType)
|
|
79
79
|
return undefinedType;
|
|
80
|
-
if (
|
|
80
|
+
if (import_typescript.default.isUnionTypeNode(type)) {
|
|
81
81
|
return import_typescript.default.factory.createUnionTypeNode([...type.types, undefinedType]);
|
|
82
82
|
}
|
|
83
83
|
return import_typescript.default.factory.createUnionTypeNode([type, undefinedType]);
|
|
@@ -111,15 +111,6 @@ registerTypeGenerator(import_index.BooleanValidator, () => booleanType);
|
|
|
111
111
|
registerTypeGenerator(import_index.NeverValidator, () => neverType);
|
|
112
112
|
registerTypeGenerator(import_index.DateValidator, () => import_typescript.default.factory.createTypeReferenceNode("Date"));
|
|
113
113
|
registerTypeGenerator(import_index.URLValidator, () => import_typescript.default.factory.createTypeReferenceNode("URL"));
|
|
114
|
-
registerTypeGenerator(import_index.any, () => anyType);
|
|
115
|
-
registerTypeGenerator(import_index.array, () => anyArrayType);
|
|
116
|
-
registerTypeGenerator(import_index.number, () => numberType);
|
|
117
|
-
registerTypeGenerator(import_index.object, () => recordType);
|
|
118
|
-
registerTypeGenerator(import_index.string, () => stringType);
|
|
119
|
-
registerTypeGenerator(import_index.boolean, () => booleanType);
|
|
120
|
-
registerTypeGenerator(import_index.never, () => neverType);
|
|
121
|
-
registerTypeGenerator(import_index.date, () => import_typescript.default.factory.createTypeReferenceNode("Date"));
|
|
122
|
-
registerTypeGenerator(import_index.url, () => import_typescript.default.factory.createTypeReferenceNode("URL"));
|
|
123
114
|
registerTypeGenerator(import_index.ArrayValidator, (validator, references) => {
|
|
124
115
|
const itemType = generateTypeNode(validator.items, references);
|
|
125
116
|
return import_typescript.default.factory.createArrayTypeNode(itemType);
|
|
@@ -171,8 +162,8 @@ registerTypeGenerator(import_index.TupleValidator, (validator, references) => {
|
|
|
171
162
|
const types = members.slice(first, next).map(({ validator: validator2 }) => generateTypeNode(validator2, references));
|
|
172
163
|
const after = members.slice(next).map(({ validator: validator2 }) => generateTypeNode(validator2, references));
|
|
173
164
|
const union = import_typescript.default.factory.createUnionTypeNode(types);
|
|
174
|
-
const
|
|
175
|
-
const rest = import_typescript.default.factory.createRestTypeNode(
|
|
165
|
+
const array = import_typescript.default.factory.createArrayTypeNode(union);
|
|
166
|
+
const rest = import_typescript.default.factory.createRestTypeNode(array);
|
|
176
167
|
return import_typescript.default.factory.createTupleTypeNode([...before, rest, ...after]);
|
|
177
168
|
});
|
|
178
169
|
registerTypeGenerator(import_index.AllOfValidator, (validator, references) => {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/dts-generator.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,
|
|
5
|
-
"names": ["ts", "count", "first", "next", "types", "validator"
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAAe;AAEf,mBAqBO;AA2BP,IAAM,aAAa,oBAAI,IAA8C;AAG9D,SAAS,sBACZ,WACA,WACI;AACN,aAAW,IAAI,WAAW,SAAS;AACrC;AAGO,SAAS,cAAc,aAAiD;AAK7E,QAAM,aAAa,oBAAI,IAAuB;AAC9C,QAAM,aAAa,oBAAI,IAAuB;AAE9C,SAAO,QAAQ,WAAW,EAAE,QAAQ,CAAC,CAAE,MAAM,UAAW,MAAM;AAC5D,UAAM,gBAAY,2BAAa,UAAU;AAEzC,QAAI,CAAE,WAAW,IAAI,SAAS;AAAG,iBAAW,IAAI,WAAW,IAAI;AAC/D,eAAW,IAAI,MAAM,SAAS;AAAA,EAChC,CAAC;AAGD,QAAM,QAAmC,CAAC;AAC1C,aAAW,CAAE,MAAM,SAAU,KAAK,WAAW,QAAQ,GAAG;AAGtD,UAAM,gBAAgB,IAAI,IAAI,UAAU;AACxC,QAAI,cAAc,IAAI,SAAS,MAAM,MAAM;AACzC,oBAAc,OAAO,SAAS;AAAA,IAChC;AAGA,UAAM,OAAO,iBAAiB,WAAW,aAAa;AAGtD,UAAM,YAAY,CAAE,kBAAAA,QAAG,QAAQ,eAAe,kBAAAA,QAAG,WAAW,aAAa,CAAE;AAC3E,UAAM,OAAO,kBAAAA,QAAG,QAAQ,2BAA2B,WAAW,MAAM,CAAC,GAAG,IAAI;AAC5E,UAAM,KAAK,IAAI;AAAA,EACjB;AAGA,SAAO,kBAAAA,QAAG,cAAc,EAAE;AAAA,IACtB,kBAAAA,QAAG,WAAW;AAAA,IACd,kBAAAA,QAAG,QAAQ,gBAAgB,KAAK;AAAA,IAChC,kBAAAA,QAAG,iBAAiB,cAAc,IAAI,kBAAAA,QAAG,aAAa,MAAM;AAAA,EAAC;AACnE;AAOA,SAAS,iBACL,WACA,YACW;AACb,QAAM,YAAY,WAAW,IAAI,SAAS;AAC1C,MAAI;AAAW,WAAO,kBAAAA,QAAG,QAAQ,wBAAwB,SAAS;AAElE,QAAM,YAAY,WAAW,IAAI,SAAS,KAAK,WAAW,IAAI,UAAU,WAAW;AACnF,iCAAa,CAAC,CAAE,WAAW,uBAAuB,UAAU,YAAY,iBAAiB;AACzF,QAAM,OAAO,UAAU,WAAW,UAAU;AAG5C,MAAI,CAAE,UAAU;AAAU,WAAO;AAGjC,MAAI,SAAS;AAAW,WAAO;AAG/B,MAAI,kBAAAA,QAAG,gBAAgB,IAAI,GAAG;AAC5B,WAAO,kBAAAA,QAAG,QAAQ,oBAAoB,CAAE,GAAG,KAAK,OAAO,aAAc,CAAC;AAAA,EACxE;AAGA,SAAO,kBAAAA,QAAG,QAAQ,oBAAoB,CAAE,MAAM,aAAc,CAAC;AAC/D;AAMA,IAAM,UAAU,kBAAAA,QAAG,QAAQ,sBAAsB,kBAAAA,QAAG,WAAW,UAAU;AACzE,IAAM,eAAe,kBAAAA,QAAG,QAAQ,oBAAoB,OAAO;AAC3D,IAAM,cAAc,kBAAAA,QAAG,QAAQ,sBAAsB,kBAAAA,QAAG,WAAW,cAAc;AACjF,IAAM,aAAa,kBAAAA,QAAG,QAAQ,sBAAsB,kBAAAA,QAAG,WAAW,aAAa;AAC/E,IAAM,YAAY,kBAAAA,QAAG,QAAQ,sBAAsB,kBAAAA,QAAG,WAAW,YAAY;AAC7E,IAAM,aAAa,kBAAAA,QAAG,QAAQ,sBAAsB,kBAAAA,QAAG,WAAW,aAAa;AAC/E,IAAM,gBAAgB,kBAAAA,QAAG,QAAQ,sBAAsB,kBAAAA,QAAG,WAAW,gBAAgB;AACrF,IAAM,aAAa,kBAAAA,QAAG,QAAQ;AAAA,EAC1B;AAAA;AAAA,EACA,kBAAAA,QAAG,QAAQ,+BAA+B,CAAC,GAAG,OAAO,UAAU;AAAA,EAC/D;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAS;AAGb,IAAM,kBAAkB,kBAAAA,QAAG,QAAQ,YAAY,kBAAAA,QAAG,WAAW,aAAa;AAM1E,sBAAsB,2BAAc,MAAM,OAAO;AACjD,sBAAsB,gCAAmB,MAAM,YAAY;AAC3D,sBAAsB,iCAAoB,MAAM,UAAU;AAC1D,sBAAsB,iCAAoB,MAAM,UAAU;AAC1D,sBAAsB,iCAAoB,MAAM,UAAU;AAC1D,sBAAsB,+BAAkB,MAAM,WAAW;AACzD,sBAAsB,6BAAgB,MAAM,SAAS;AACrD,sBAAsB,4BAAe,MAAM,kBAAAA,QAAG,QAAQ,wBAAwB,MAAM,CAAC;AACrF,sBAAsB,2BAAc,MAAM,kBAAAA,QAAG,QAAQ,wBAAwB,KAAK,CAAC;AAMnF,sBAAsB,6BAAgB,CAAC,WAAW,eAAe;AAC/D,QAAM,WAAW,iBAAiB,UAAU,OAAO,UAAU;AAC7D,SAAO,kBAAAA,QAAG,QAAQ,oBAAoB,QAAQ;AAChD,CAAC;AAED,sBAAsB,gCAAmB,CAAC,cAAc;AACtD,QAAM,UACJ,OAAO,UAAU,aAAa,WAAW,kBAAAA,QAAG,QAAQ,qBAAqB,UAAU,QAAQ,IAC3F,OAAO,UAAU,aAAa,WAAW,kBAAAA,QAAG,QAAQ,oBAAoB,UAAU,QAAQ,IAC1F,UAAU,aAAa,QAAQ,kBAAAA,QAAG,QAAQ,YAAY,IACtD,UAAU,aAAa,OAAO,kBAAAA,QAAG,QAAQ,WAAW,IACpD,UAAU,aAAa,OAAO,kBAAAA,QAAG,QAAQ,WAAW,IACpD;AAEF,iCAAa,CAAC,CAAE,SAAS,qBAAqB,UAAU,WAAW;AACnE,SAAO,kBAAAA,QAAG,QAAQ,sBAAsB,OAAO;AACjD,CAAC;AAED,sBAAsB,8BAAiB,CAAC,cAA+B;AACrE,MAAI,CAAE,UAAU;AAAO,WAAO;AAE9B,QAAM,YAAY,kBAAAA,QAAG,QAAQ,wBAAwB,QAAW,WAAW,UAAU,SAAS,QAAW,SAAS;AAClH,QAAM,UAAU,kBAAAA,QAAG,QAAQ,sBAAsB,CAAE,SAAU,CAAC;AAC9D,SAAO,kBAAAA,QAAG,QAAQ,2BAA2B,CAAE,YAAY,OAAQ,CAAC;AACtE,CAAC;AAED,sBAAsB,gCAAmB,CAAC,WAA8B,eAAe;AAGrF,SAAO,iBAAiB,UAAU,WAAW,UAAU;AACzD,CAAC;AAED,sBAAsB,8BAAiB,CAAC,cAA+B;AACrE,MAAI,CAAE,UAAU;AAAO,WAAO;AAE9B,QAAM,YAAY,kBAAAA,QAAG,QAAQ,wBAAwB,QAAW,WAAW,UAAU,SAAS,QAAW,SAAS;AAClH,QAAM,UAAU,kBAAAA,QAAG,QAAQ,sBAAsB,CAAE,SAAU,CAAC;AAC9D,SAAO,kBAAAA,QAAG,QAAQ,2BAA2B,CAAE,YAAY,OAAQ,CAAC;AACtE,CAAC;AAED,sBAAsB,6BAAgB,CAAC,WAAgC,eAAe;AACpF,QAAM,UAAU,UAAU;AAG1B,QAAM,EAAE,OAAO,OAAO,KAAK,IACvB,QAAQ,OAAO,CAAC,EAAE,OAAAC,QAAO,OAAAC,QAAO,MAAAC,MAAK,GAAG,EAAE,OAAO,GAAG,MAAM;AACxD,QAAI,CAAE,QAAQ;AACZ,UAAI,IAAID;AAAO,QAAAA,SAAQ;AACvB,MAAAC,QAAO,IAAI;AACX,MAAAF,UAAS;AAAA,IACX;AACA,WAAO,EAAE,OAAAA,QAAO,OAAAC,QAAO,MAAAC,MAAK;AAAA,EAC9B,GAAG,EAAE,OAAO,GAAG,OAAO,QAAQ,QAAQ,MAAM,GAAG,CAAC;AAGpD,MAAI,QAAQ,GAAG;AACb,UAAMC,SAAQ,QAAQ,IAAI,CAAC,EAAE,QAAQ,WAAAC,WAAU,MAAM;AACnD,YAAM,aAAa,iBAAiBA,YAAW,UAAU;AAEzD,UAAI;AAAQ,eAAO,iBAAiBA,YAAW,UAAU;AAEzD,YAAM,YAAY,kBAAAL,QAAG,QAAQ,oBAAoB,UAAU;AAC3D,aAAO,kBAAAA,QAAG,QAAQ,mBAAmB,SAAS;AAAA,IAChD,CAAC;AAED,WAAO,kBAAAA,QAAG,QAAQ,oBAAoBI,MAAK;AAAA,EAC7C;AAIA,QAAM,SAAS,QAAQ,MAAM,GAAG,KAAK,EAChC,IAAI,CAAC,EAAE,WAAAC,WAAU,MAAM,iBAAiBA,YAAW,UAAU,CAAC;AACnE,QAAM,QAAQ,QAAQ,MAAM,OAAO,IAAI,EAClC,IAAI,CAAC,EAAE,WAAAA,WAAU,MAAM,iBAAiBA,YAAW,UAAU,CAAC;AACnE,QAAM,QAAQ,QAAQ,MAAM,IAAI,EAC3B,IAAI,CAAC,EAAE,WAAAA,WAAU,MAAM,iBAAiBA,YAAW,UAAU,CAAC;AAEnE,QAAM,QAAQ,kBAAAL,QAAG,QAAQ,oBAAoB,KAAK;AAClD,QAAM,QAAQ,kBAAAA,QAAG,QAAQ,oBAAoB,KAAK;AAClD,QAAM,OAAO,kBAAAA,QAAG,QAAQ,mBAAmB,KAAK;AAEhD,SAAO,kBAAAA,QAAG,QAAQ,oBAAoB,CAAE,GAAG,QAAQ,MAAM,GAAG,KAAM,CAAC;AACrE,CAAC;AAED,sBAAsB,6BAAgB,CAAC,WAAW,eAAe;AAC/D,QAAM,UAAU,UAAU,WAAW,IAAI,CAACK,eAAc,iBAAiBA,YAAW,UAAU,CAAC;AAC/F,SAAO,kBAAAL,QAAG,QAAQ,2BAA2B,OAAO;AACtD,CAAC;AAED,sBAAsB,6BAAgB,CAAC,WAAW,eAAe;AAC/D,QAAM,UAAU,UAAU,WAAW,IAAI,CAACK,eAAc,iBAAiBA,YAAW,UAAU,CAAC;AAC/F,SAAO,kBAAAL,QAAG,QAAQ,oBAAoB,OAAO;AAC/C,CAAC;AAED,sBAAsB,8BAAiB,CAAC,WAAW,eAAe;AAChE,QAAM,aAAqC,CAAC;AAE5C,aAAW,CAAE,KAAK,cAAe,KAAK,UAAU,WAAW,QAAQ,GAAG;AACpE,UAAM,OAAO,iBAAiB,gBAAgB,UAAU;AACxD,UAAM,WAAW,eAAe;AAEhC,UAAM,YAAY,kBAAAA,QAAG,QAAQ;AAAA,MACzB;AAAA,MACA;AAAA,MACA,WAAW,kBAAkB;AAAA,MAC7B;AAAA,IAAI;AAER,eAAW,KAAK,SAAS;AAAA,EAC3B;AAEA,MAAI,UAAU,sBAAsB;AAClC,UAAM,eAAe,iBAAiB,UAAU,sBAAsB,UAAU;AAEhF,UAAM,QAAQ,kBAAAA,QAAG,QAAQ;AAAA,MACrB;AAAA;AAAA,MACA,kBAAAA,QAAG,QAAQ,+BAA+B,CAAC,GAAG,OAAO,UAAU;AAAA,MAC/D;AAAA;AAAA,MACA;AAAA;AAAA,MACA;AAAA;AAAA,MACA;AAAA,IAAS;AAEb,QAAI,WAAW,UAAU;AAAG,aAAO;AAEnC,UAAM,OAAO,kBAAAA,QAAG,QAAQ,sBAAsB,UAAU;AACxD,WAAO,kBAAAA,QAAG,QAAQ,2BAA2B,CAAE,MAAM,KAAM,CAAC;AAAA,EAC9D,OAAO;AACL,WAAO,kBAAAA,QAAG,QAAQ,sBAAsB,UAAU;AAAA,EACpD;AACF,CAAC;",
|
|
5
|
+
"names": ["ts", "count", "first", "next", "types", "validator"]
|
|
6
6
|
}
|
package/dist/dts-generator.mjs
CHANGED
|
@@ -1,34 +1,25 @@
|
|
|
1
1
|
// dts-generator.ts
|
|
2
|
-
import ts
|
|
2
|
+
import ts from "typescript";
|
|
3
3
|
import {
|
|
4
4
|
AllOfValidator,
|
|
5
|
-
any,
|
|
6
5
|
AnyArrayValidator,
|
|
7
6
|
AnyNumberValidator,
|
|
8
7
|
AnyObjectValidator,
|
|
9
8
|
AnyStringValidator,
|
|
10
9
|
AnyValidator,
|
|
11
|
-
array,
|
|
12
10
|
ArrayValidator,
|
|
13
11
|
assertSchema,
|
|
14
|
-
boolean,
|
|
15
12
|
BooleanValidator,
|
|
16
13
|
ConstantValidator,
|
|
17
|
-
date,
|
|
18
14
|
DateValidator,
|
|
19
15
|
getValidator,
|
|
20
|
-
never,
|
|
21
16
|
NeverValidator,
|
|
22
|
-
number,
|
|
23
17
|
NumberValidator,
|
|
24
|
-
object,
|
|
25
18
|
ObjectValidator,
|
|
26
19
|
OneOfValidator,
|
|
27
20
|
OptionalValidator,
|
|
28
|
-
string,
|
|
29
21
|
StringValidator,
|
|
30
22
|
TupleValidator,
|
|
31
|
-
url,
|
|
32
23
|
URLValidator
|
|
33
24
|
} from "./index.mjs";
|
|
34
25
|
var generators = /* @__PURE__ */ new Map();
|
|
@@ -72,7 +63,7 @@ function generateTypeNode(validator, references) {
|
|
|
72
63
|
return type;
|
|
73
64
|
if (type === neverType)
|
|
74
65
|
return undefinedType;
|
|
75
|
-
if (isUnionTypeNode(type)) {
|
|
66
|
+
if (ts.isUnionTypeNode(type)) {
|
|
76
67
|
return ts.factory.createUnionTypeNode([...type.types, undefinedType]);
|
|
77
68
|
}
|
|
78
69
|
return ts.factory.createUnionTypeNode([type, undefinedType]);
|
|
@@ -106,15 +97,6 @@ registerTypeGenerator(BooleanValidator, () => booleanType);
|
|
|
106
97
|
registerTypeGenerator(NeverValidator, () => neverType);
|
|
107
98
|
registerTypeGenerator(DateValidator, () => ts.factory.createTypeReferenceNode("Date"));
|
|
108
99
|
registerTypeGenerator(URLValidator, () => ts.factory.createTypeReferenceNode("URL"));
|
|
109
|
-
registerTypeGenerator(any, () => anyType);
|
|
110
|
-
registerTypeGenerator(array, () => anyArrayType);
|
|
111
|
-
registerTypeGenerator(number, () => numberType);
|
|
112
|
-
registerTypeGenerator(object, () => recordType);
|
|
113
|
-
registerTypeGenerator(string, () => stringType);
|
|
114
|
-
registerTypeGenerator(boolean, () => booleanType);
|
|
115
|
-
registerTypeGenerator(never, () => neverType);
|
|
116
|
-
registerTypeGenerator(date, () => ts.factory.createTypeReferenceNode("Date"));
|
|
117
|
-
registerTypeGenerator(url, () => ts.factory.createTypeReferenceNode("URL"));
|
|
118
100
|
registerTypeGenerator(ArrayValidator, (validator, references) => {
|
|
119
101
|
const itemType = generateTypeNode(validator.items, references);
|
|
120
102
|
return ts.factory.createArrayTypeNode(itemType);
|
|
@@ -166,8 +148,8 @@ registerTypeGenerator(TupleValidator, (validator, references) => {
|
|
|
166
148
|
const types = members.slice(first, next).map(({ validator: validator2 }) => generateTypeNode(validator2, references));
|
|
167
149
|
const after = members.slice(next).map(({ validator: validator2 }) => generateTypeNode(validator2, references));
|
|
168
150
|
const union = ts.factory.createUnionTypeNode(types);
|
|
169
|
-
const
|
|
170
|
-
const rest = ts.factory.createRestTypeNode(
|
|
151
|
+
const array = ts.factory.createArrayTypeNode(union);
|
|
152
|
+
const rest = ts.factory.createRestTypeNode(array);
|
|
171
153
|
return ts.factory.createTupleTypeNode([...before, rest, ...after]);
|
|
172
154
|
});
|
|
173
155
|
registerTypeGenerator(AllOfValidator, (validator, references) => {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/dts-generator.ts"],
|
|
4
|
-
"mappings": ";AAAA,OAAO,
|
|
5
|
-
"names": ["count", "first", "next", "types", "validator"
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": ["count", "first", "next", "types", "validator"]
|
|
6
6
|
}
|
package/dist/schema.cjs
CHANGED
|
@@ -24,18 +24,17 @@ __export(schema_exports, {
|
|
|
24
24
|
allowAdditionalProperties: () => allowAdditionalProperties
|
|
25
25
|
});
|
|
26
26
|
module.exports = __toCommonJS(schema_exports);
|
|
27
|
-
var import_types = require("./types.cjs");
|
|
28
27
|
var import_utilities = require("./utilities.cjs");
|
|
29
28
|
var import_any = require("./validators/any.cjs");
|
|
30
29
|
function _allowAdditionalProperties(options) {
|
|
31
30
|
if (options === false)
|
|
32
|
-
return { [
|
|
31
|
+
return { [Symbol.justusAdditionalValidator]: false };
|
|
33
32
|
if (options === true)
|
|
34
|
-
return { [
|
|
35
|
-
return { [
|
|
33
|
+
return { [Symbol.justusAdditionalValidator]: import_any.any };
|
|
34
|
+
return { [Symbol.justusAdditionalValidator]: options ? (0, import_utilities.getValidator)(options) : import_any.any };
|
|
36
35
|
}
|
|
37
36
|
var allowAdditionalProperties = _allowAdditionalProperties;
|
|
38
|
-
allowAdditionalProperties[
|
|
37
|
+
allowAdditionalProperties[Symbol.justusAdditionalValidator] = import_any.any;
|
|
39
38
|
// Annotate the CommonJS export names for ESM import in node:
|
|
40
39
|
0 && (module.exports = {
|
|
41
40
|
_allowAdditionalProperties,
|
package/dist/schema.cjs.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/schema.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,uBAA6B;AAC7B,iBAAoB;AAkBb,SAAS,2BAA2B,SAAyE;AAClH,MAAI,YAAY;AAAO,WAAO,EAAE,CAAC,OAAO,yBAAyB,GAAG,MAAM;AAC1E,MAAI,YAAY;AAAM,WAAO,EAAE,CAAC,OAAO,yBAAyB,GAAG,eAAI;AAEvE,SAAO,EAAE,CAAC,OAAO,yBAAyB,GAAG,cAAU,+BAAa,OAAO,IAAI,eAAI;AACrF;AAWO,IAAM,4BAA4B;AAKzC,0BAA0B,OAAO,yBAAyB,IAAI;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/dist/schema.mjs
CHANGED
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
// schema.ts
|
|
2
|
-
import { additionalValidator } from "./types.mjs";
|
|
3
2
|
import { getValidator } from "./utilities.mjs";
|
|
4
3
|
import { any } from "./validators/any.mjs";
|
|
5
4
|
function _allowAdditionalProperties(options) {
|
|
6
5
|
if (options === false)
|
|
7
|
-
return { [
|
|
6
|
+
return { [Symbol.justusAdditionalValidator]: false };
|
|
8
7
|
if (options === true)
|
|
9
|
-
return { [
|
|
10
|
-
return { [
|
|
8
|
+
return { [Symbol.justusAdditionalValidator]: any };
|
|
9
|
+
return { [Symbol.justusAdditionalValidator]: options ? getValidator(options) : any };
|
|
11
10
|
}
|
|
12
11
|
var allowAdditionalProperties = _allowAdditionalProperties;
|
|
13
|
-
allowAdditionalProperties[
|
|
12
|
+
allowAdditionalProperties[Symbol.justusAdditionalValidator] = any;
|
|
14
13
|
export {
|
|
15
14
|
_allowAdditionalProperties,
|
|
16
15
|
allowAdditionalProperties
|
package/dist/schema.mjs.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/schema.ts"],
|
|
4
|
-
"mappings": ";
|
|
4
|
+
"mappings": ";AAEA,SAAS,oBAAoB;AAC7B,SAAS,WAAW;AAkBb,SAAS,2BAA2B,SAAyE;AAClH,MAAI,YAAY;AAAO,WAAO,EAAE,CAAC,OAAO,yBAAyB,GAAG,MAAM;AAC1E,MAAI,YAAY;AAAM,WAAO,EAAE,CAAC,OAAO,yBAAyB,GAAG,IAAI;AAEvE,SAAO,EAAE,CAAC,OAAO,yBAAyB,GAAG,UAAU,aAAa,OAAO,IAAI,IAAI;AACrF;AAWO,IAAM,4BAA4B;AAKzC,0BAA0B,OAAO,yBAAyB,IAAI;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/dist/types.cjs
CHANGED
|
@@ -21,18 +21,15 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
21
21
|
var types_exports = {};
|
|
22
22
|
__export(types_exports, {
|
|
23
23
|
AbstractValidator: () => AbstractValidator,
|
|
24
|
-
additionalValidator: () => additionalValidator,
|
|
25
24
|
defaultValidationOptions: () => defaultValidationOptions,
|
|
26
|
-
|
|
27
|
-
makeValidatorFactory: () => makeValidatorFactory,
|
|
28
|
-
restValidator: () => restValidator,
|
|
29
|
-
schemaValidator: () => schemaValidator
|
|
25
|
+
makeValidatorFactory: () => makeValidatorFactory
|
|
30
26
|
});
|
|
31
27
|
module.exports = __toCommonJS(types_exports);
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
28
|
+
Object.defineProperties(Symbol, {
|
|
29
|
+
justusValidator: { value: Symbol.for("justus.Validator") },
|
|
30
|
+
justusRestValidator: { value: Symbol.for("justus.restValidator") },
|
|
31
|
+
justusAdditionalValidator: { value: Symbol.for("justus.additionalValidator") }
|
|
32
|
+
});
|
|
36
33
|
var defaultValidationOptions = {
|
|
37
34
|
stripAdditionalProperties: false,
|
|
38
35
|
stripForbiddenProperties: false,
|
|
@@ -43,25 +40,21 @@ function makeValidatorFactory(validator, factory) {
|
|
|
43
40
|
optional: validator.optional,
|
|
44
41
|
validate: validator.validate.bind(validator),
|
|
45
42
|
[Symbol.iterator]: validator[Symbol.iterator].bind(validator),
|
|
46
|
-
[
|
|
43
|
+
[Symbol.justusValidator]: validator
|
|
47
44
|
});
|
|
48
45
|
}
|
|
49
46
|
var AbstractValidator = class {
|
|
50
|
-
[
|
|
47
|
+
[Symbol.justusValidator] = this;
|
|
51
48
|
optional = void 0;
|
|
52
49
|
/** Allow any `Validator` to be used as a rest parameter in `Tuple`s */
|
|
53
50
|
*[Symbol.iterator]() {
|
|
54
|
-
yield { [
|
|
51
|
+
yield { [Symbol.justusRestValidator]: this };
|
|
55
52
|
}
|
|
56
53
|
};
|
|
57
54
|
// Annotate the CommonJS export names for ESM import in node:
|
|
58
55
|
0 && (module.exports = {
|
|
59
56
|
AbstractValidator,
|
|
60
|
-
additionalValidator,
|
|
61
57
|
defaultValidationOptions,
|
|
62
|
-
|
|
63
|
-
makeValidatorFactory,
|
|
64
|
-
restValidator,
|
|
65
|
-
schemaValidator
|
|
58
|
+
makeValidatorFactory
|
|
66
59
|
});
|
|
67
60
|
//# sourceMappingURL=types.cjs.map
|
package/dist/types.cjs.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/types.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBA,OAAO,iBAAiB,QAAQ;AAAA,EAC9B,iBAAiB,EAAE,OAAO,OAAO,IAAI,kBAAkB,EAAE;AAAA,EACzD,qBAAqB,EAAE,OAAO,OAAO,IAAI,sBAAsB,EAAE;AAAA,EACjE,2BAA2B,EAAE,OAAO,OAAO,IAAI,4BAA4B,EAAE;AAC/E,CAAC;AAqBM,IAAM,2BAAkE;AAAA,EAC7E,2BAA2B;AAAA,EAC3B,0BAA0B;AAAA,EAC1B,oBAAoB;AACtB;AAwBO,SAAS,qBAGd,WAAc,SAAmB;AACjC,SAAO,OAAO,OAAO,SAAS;AAAA,IAC5B,UAAU,UAAU;AAAA,IACpB,UAAU,UAAU,SAAS,KAAK,SAAS;AAAA,IAC3C,CAAC,OAAO,QAAQ,GAAG,UAAU,OAAO,QAAQ,EAAE,KAAK,SAAS;AAAA,IAC5D,CAAC,OAAO,eAAe,GAAG;AAAA,EAC5B,CAAC;AACH;AAMO,IAAe,oBAAf,MACkD;AAAA,EACvD,CAAC,OAAO,eAAe,IAAI;AAAA,EAE3B,WAAqB;AAAA;AAAA,EAMrB,EAAG,OAAO,QAAQ,IAAsC;AACtD,UAAM,EAAE,CAAC,OAAO,mBAAmB,GAAG,KAAK;AAAA,EAC7C;AACF;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
/** A symbol
|
|
4
|
-
|
|
5
|
-
/** A symbol indicating the `Validator` for a `
|
|
6
|
-
|
|
7
|
-
/** A symbol indicating the `Validator` for a `Schema`'s additional properties. */
|
|
8
|
-
|
|
1
|
+
declare global {
|
|
2
|
+
interface SymbolConstructor {
|
|
3
|
+
/** A symbol associated with a `Validator` instance. */
|
|
4
|
+
readonly justusValidator: unique symbol;
|
|
5
|
+
/** A symbol indicating the `Validator` for a `Tuple`'s rest parameter. */
|
|
6
|
+
readonly justusRestValidator: unique symbol;
|
|
7
|
+
/** A symbol indicating the `Validator` for a `Schema`'s additional properties. */
|
|
8
|
+
readonly justusAdditionalValidator: unique symbol;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
9
11
|
/**
|
|
10
12
|
* Options to be using while validating.
|
|
11
13
|
*/
|
|
@@ -26,7 +28,7 @@ export declare const defaultValidationOptions: Readonly<Required<ValidationOptio
|
|
|
26
28
|
* (possibly) converting it the required type `T`.
|
|
27
29
|
*/
|
|
28
30
|
export interface Validator<T = any> extends Iterable<TupleRestParameter<T>> {
|
|
29
|
-
[
|
|
31
|
+
[Symbol.justusValidator]: this;
|
|
30
32
|
optional?: boolean;
|
|
31
33
|
/** Validate a _value_ and optionally convert it to the required `Type` */
|
|
32
34
|
validate(value: unknown, options?: ValidationOptions | undefined): T;
|
|
@@ -45,7 +47,7 @@ export declare function makeValidatorFactory<V extends Validator, F extends (...
|
|
|
45
47
|
* (possibly) converting it the required type `T`.
|
|
46
48
|
*/
|
|
47
49
|
export declare abstract class AbstractValidator<T = any> implements Validator<T>, Iterable<TupleRestParameter<T>> {
|
|
48
|
-
[
|
|
50
|
+
[Symbol.justusValidator]: this;
|
|
49
51
|
optional?: boolean;
|
|
50
52
|
/** Validate a _value_ and optionally convert it to the required `Type` */
|
|
51
53
|
abstract validate(value: unknown, options?: ValidationOptions | undefined): T;
|
|
@@ -89,7 +91,7 @@ export type Tuple = readonly (Validation | TupleRestParameter)[];
|
|
|
89
91
|
* ```
|
|
90
92
|
*/
|
|
91
93
|
export type TupleRestParameter<T = any> = {
|
|
92
|
-
[
|
|
94
|
+
[Symbol.justusRestValidator]: Validator<T>;
|
|
93
95
|
};
|
|
94
96
|
/**
|
|
95
97
|
* Infer the type returned by a `TupleValidator` when validating an array.
|
|
@@ -109,14 +111,14 @@ export type InferTuple<T> = T extends Tuple ? T extends readonly [] ? [] : T ext
|
|
|
109
111
|
*/
|
|
110
112
|
export interface Schema {
|
|
111
113
|
[key: string]: Validation;
|
|
112
|
-
[
|
|
114
|
+
[Symbol.justusAdditionalValidator]?: Validator | false;
|
|
113
115
|
}
|
|
114
116
|
/**
|
|
115
117
|
* An interface defining whether a `Schema` should include additional
|
|
116
118
|
* properties, and the `Validator` used to validate them.
|
|
117
119
|
*/
|
|
118
120
|
export interface AdditionalProperties<V extends Validator | false> {
|
|
119
|
-
[
|
|
121
|
+
[Symbol.justusAdditionalValidator]: V;
|
|
120
122
|
}
|
|
121
123
|
/** Infer the type validated by a `Schema` */
|
|
122
124
|
export type InferSchema<S> = S extends AdditionalProperties<Validator<infer V>> ? {
|
package/dist/types.mjs
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
// types.ts
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
2
|
+
Object.defineProperties(Symbol, {
|
|
3
|
+
justusValidator: { value: Symbol.for("justus.Validator") },
|
|
4
|
+
justusRestValidator: { value: Symbol.for("justus.restValidator") },
|
|
5
|
+
justusAdditionalValidator: { value: Symbol.for("justus.additionalValidator") }
|
|
6
|
+
});
|
|
6
7
|
var defaultValidationOptions = {
|
|
7
8
|
stripAdditionalProperties: false,
|
|
8
9
|
stripForbiddenProperties: false,
|
|
@@ -13,24 +14,20 @@ function makeValidatorFactory(validator, factory) {
|
|
|
13
14
|
optional: validator.optional,
|
|
14
15
|
validate: validator.validate.bind(validator),
|
|
15
16
|
[Symbol.iterator]: validator[Symbol.iterator].bind(validator),
|
|
16
|
-
[
|
|
17
|
+
[Symbol.justusValidator]: validator
|
|
17
18
|
});
|
|
18
19
|
}
|
|
19
20
|
var AbstractValidator = class {
|
|
20
|
-
[
|
|
21
|
+
[Symbol.justusValidator] = this;
|
|
21
22
|
optional = void 0;
|
|
22
23
|
/** Allow any `Validator` to be used as a rest parameter in `Tuple`s */
|
|
23
24
|
*[Symbol.iterator]() {
|
|
24
|
-
yield { [
|
|
25
|
+
yield { [Symbol.justusRestValidator]: this };
|
|
25
26
|
}
|
|
26
27
|
};
|
|
27
28
|
export {
|
|
28
29
|
AbstractValidator,
|
|
29
|
-
additionalValidator,
|
|
30
30
|
defaultValidationOptions,
|
|
31
|
-
|
|
32
|
-
makeValidatorFactory,
|
|
33
|
-
restValidator,
|
|
34
|
-
schemaValidator
|
|
31
|
+
makeValidatorFactory
|
|
35
32
|
};
|
|
36
33
|
//# sourceMappingURL=types.mjs.map
|
package/dist/types.mjs.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/types.ts"],
|
|
4
|
-
"mappings": ";
|
|
4
|
+
"mappings": ";AAgBA,OAAO,iBAAiB,QAAQ;AAAA,EAC9B,iBAAiB,EAAE,OAAO,OAAO,IAAI,kBAAkB,EAAE;AAAA,EACzD,qBAAqB,EAAE,OAAO,OAAO,IAAI,sBAAsB,EAAE;AAAA,EACjE,2BAA2B,EAAE,OAAO,OAAO,IAAI,4BAA4B,EAAE;AAC/E,CAAC;AAqBM,IAAM,2BAAkE;AAAA,EAC7E,2BAA2B;AAAA,EAC3B,0BAA0B;AAAA,EAC1B,oBAAoB;AACtB;AAwBO,SAAS,qBAGd,WAAc,SAAmB;AACjC,SAAO,OAAO,OAAO,SAAS;AAAA,IAC5B,UAAU,UAAU;AAAA,IACpB,UAAU,UAAU,SAAS,KAAK,SAAS;AAAA,IAC3C,CAAC,OAAO,QAAQ,GAAG,UAAU,OAAO,QAAQ,EAAE,KAAK,SAAS;AAAA,IAC5D,CAAC,OAAO,eAAe,GAAG;AAAA,EAC5B,CAAC;AACH;AAMO,IAAe,oBAAf,MACkD;AAAA,EACvD,CAAC,OAAO,eAAe,IAAI;AAAA,EAE3B,WAAqB;AAAA;AAAA,EAMrB,EAAG,OAAO,QAAQ,IAAsC;AACtD,UAAM,EAAE,CAAC,OAAO,mBAAmB,GAAG,KAAK;AAAA,EAC7C;AACF;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/dist/utilities.cjs
CHANGED
|
@@ -23,23 +23,21 @@ __export(utilities_exports, {
|
|
|
23
23
|
getValidator: () => getValidator
|
|
24
24
|
});
|
|
25
25
|
module.exports = __toCommonJS(utilities_exports);
|
|
26
|
-
var import_types = require("./types.cjs");
|
|
27
26
|
var import_constant = require("./validators/constant.cjs");
|
|
28
27
|
var import_object = require("./validators/object.cjs");
|
|
29
28
|
var import_tuple = require("./validators/tuple.cjs");
|
|
30
29
|
function getValidator(validation) {
|
|
31
30
|
if (validation === null)
|
|
32
31
|
return import_constant.nullValidator;
|
|
33
|
-
if (validation[
|
|
34
|
-
return validation;
|
|
32
|
+
if (validation[Symbol.justusValidator]) {
|
|
33
|
+
return validation[Symbol.justusValidator];
|
|
34
|
+
}
|
|
35
35
|
switch (typeof validation) {
|
|
36
36
|
case "boolean":
|
|
37
37
|
case "string":
|
|
38
38
|
case "number":
|
|
39
39
|
return new import_constant.ConstantValidator(validation);
|
|
40
40
|
case "object":
|
|
41
|
-
if (import_types.schemaValidator in validation)
|
|
42
|
-
return validation[import_types.schemaValidator];
|
|
43
41
|
if (Array.isArray(validation))
|
|
44
42
|
return new import_tuple.TupleValidator(validation);
|
|
45
43
|
return new import_object.ObjectValidator(validation);
|
package/dist/utilities.cjs.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/utilities.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAAiD;AAEjD,oBAAgC;AAEhC,mBAA+B;AAaxB,SAAS,aAAa,YAAmC;AAE9D,MAAI,eAAe;AAAM,WAAO;AAGhC,MAAW,WAAY,OAAO,eAAe,GAAG;AAC9C,WAAc,WAAY,OAAO,eAAe;AAAA,EAClD;AAGA,UAAQ,OAAO,YAAY;AAAA,IAEzB,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACH,aAAO,IAAI,kCAAkB,UAAU;AAAA,IAGzC,KAAK;AAEH,UAAI,MAAM,QAAQ,UAAU;AAAG,eAAO,IAAI,4BAAe,UAAU;AAEnE,aAAO,IAAI,8BAAgB,UAAoB;AAAA,IAGjD;AACE,YAAM,IAAI,UAAU,4BAA4B,OAAO,aAAa;AAAA,EACxE;AACF;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/dist/utilities.mjs
CHANGED
|
@@ -1,21 +1,19 @@
|
|
|
1
1
|
// utilities.ts
|
|
2
|
-
import { isValidator, schemaValidator } from "./types.mjs";
|
|
3
2
|
import { ConstantValidator, nullValidator } from "./validators/constant.mjs";
|
|
4
3
|
import { ObjectValidator } from "./validators/object.mjs";
|
|
5
4
|
import { TupleValidator } from "./validators/tuple.mjs";
|
|
6
5
|
function getValidator(validation) {
|
|
7
6
|
if (validation === null)
|
|
8
7
|
return nullValidator;
|
|
9
|
-
if (validation[
|
|
10
|
-
return validation;
|
|
8
|
+
if (validation[Symbol.justusValidator]) {
|
|
9
|
+
return validation[Symbol.justusValidator];
|
|
10
|
+
}
|
|
11
11
|
switch (typeof validation) {
|
|
12
12
|
case "boolean":
|
|
13
13
|
case "string":
|
|
14
14
|
case "number":
|
|
15
15
|
return new ConstantValidator(validation);
|
|
16
16
|
case "object":
|
|
17
|
-
if (schemaValidator in validation)
|
|
18
|
-
return validation[schemaValidator];
|
|
19
17
|
if (Array.isArray(validation))
|
|
20
18
|
return new TupleValidator(validation);
|
|
21
19
|
return new ObjectValidator(validation);
|
package/dist/utilities.mjs.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/utilities.ts"],
|
|
4
|
-
"mappings": ";AAAA,SAAS,
|
|
4
|
+
"mappings": ";AAAA,SAAS,mBAAmB,qBAAqB;AAEjD,SAAS,uBAAuB;AAEhC,SAAS,sBAAsB;AAaxB,SAAS,aAAa,YAAmC;AAE9D,MAAI,eAAe;AAAM,WAAO;AAGhC,MAAW,WAAY,OAAO,eAAe,GAAG;AAC9C,WAAc,WAAY,OAAO,eAAe;AAAA,EAClD;AAGA,UAAQ,OAAO,YAAY;AAAA,IAEzB,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACH,aAAO,IAAI,kBAAkB,UAAU;AAAA,IAGzC,KAAK;AAEH,UAAI,MAAM,QAAQ,UAAU;AAAG,eAAO,IAAI,eAAe,UAAU;AAEnE,aAAO,IAAI,gBAAgB,UAAoB;AAAA,IAGjD;AACE,YAAM,IAAI,UAAU,4BAA4B,OAAO,aAAa;AAAA,EACxE;AACF;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -43,9 +43,9 @@ var ObjectValidator = class extends import_types.AbstractValidator {
|
|
|
43
43
|
additionalProperties;
|
|
44
44
|
constructor(schema) {
|
|
45
45
|
super();
|
|
46
|
-
const { [
|
|
46
|
+
const { [Symbol.justusAdditionalValidator]: additional, ...properties } = schema;
|
|
47
47
|
if (additional)
|
|
48
|
-
this.additionalProperties =
|
|
48
|
+
this.additionalProperties = additional;
|
|
49
49
|
for (const key of Object.keys(properties)) {
|
|
50
50
|
this.validators.set(key, (0, import_utilities.getValidator)(properties[key]));
|
|
51
51
|
}
|
|
@@ -108,10 +108,10 @@ var ObjectValidator = class extends import_types.AbstractValidator {
|
|
|
108
108
|
function _object(schema) {
|
|
109
109
|
const validator = new ObjectValidator(schema);
|
|
110
110
|
function* iterator() {
|
|
111
|
-
yield { [
|
|
111
|
+
yield { [Symbol.justusRestValidator]: validator };
|
|
112
112
|
}
|
|
113
113
|
return Object.defineProperties(schema, {
|
|
114
|
-
[
|
|
114
|
+
[Symbol.justusValidator]: { value: validator, enumerable: false },
|
|
115
115
|
[Symbol.iterator]: { value: iterator, enumerable: false }
|
|
116
116
|
});
|
|
117
117
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/validators/object.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAyD;AAEzD,oBAA0C;AAC1C,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -3,11 +3,8 @@ import { assertValidation, ValidationErrorBuilder } from "../errors.mjs";
|
|
|
3
3
|
import { allowAdditionalProperties } from "../schema.mjs";
|
|
4
4
|
import {
|
|
5
5
|
AbstractValidator,
|
|
6
|
-
additionalValidator,
|
|
7
6
|
defaultValidationOptions,
|
|
8
|
-
makeValidatorFactory
|
|
9
|
-
restValidator,
|
|
10
|
-
schemaValidator
|
|
7
|
+
makeValidatorFactory
|
|
11
8
|
} from "../types.mjs";
|
|
12
9
|
import { getValidator } from "../utilities.mjs";
|
|
13
10
|
var AnyObjectValidator = class extends AbstractValidator {
|
|
@@ -23,9 +20,9 @@ var ObjectValidator = class extends AbstractValidator {
|
|
|
23
20
|
additionalProperties;
|
|
24
21
|
constructor(schema) {
|
|
25
22
|
super();
|
|
26
|
-
const { [
|
|
23
|
+
const { [Symbol.justusAdditionalValidator]: additional, ...properties } = schema;
|
|
27
24
|
if (additional)
|
|
28
|
-
this.additionalProperties =
|
|
25
|
+
this.additionalProperties = additional;
|
|
29
26
|
for (const key of Object.keys(properties)) {
|
|
30
27
|
this.validators.set(key, getValidator(properties[key]));
|
|
31
28
|
}
|
|
@@ -88,10 +85,10 @@ var ObjectValidator = class extends AbstractValidator {
|
|
|
88
85
|
function _object(schema) {
|
|
89
86
|
const validator = new ObjectValidator(schema);
|
|
90
87
|
function* iterator() {
|
|
91
|
-
yield { [
|
|
88
|
+
yield { [Symbol.justusRestValidator]: validator };
|
|
92
89
|
}
|
|
93
90
|
return Object.defineProperties(schema, {
|
|
94
|
-
[
|
|
91
|
+
[Symbol.justusValidator]: { value: validator, enumerable: false },
|
|
95
92
|
[Symbol.iterator]: { value: iterator, enumerable: false }
|
|
96
93
|
});
|
|
97
94
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/validators/object.ts"],
|
|
4
|
-
"mappings": ";AAAA,SAAS,kBAAkB,8BAA8B;AAEzD,SAAS,iCAAiC;AAC1C;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -37,8 +37,8 @@ var TupleValidator = class extends import_types.AbstractValidator {
|
|
|
37
37
|
for (const item of tuple2) {
|
|
38
38
|
if (item === null) {
|
|
39
39
|
members.push({ single: true, validator: import_constant.nullValidator });
|
|
40
|
-
} else if (typeof item === "object" &&
|
|
41
|
-
members.push({ single: false, validator: item[
|
|
40
|
+
} else if (typeof item === "object" && Symbol.justusRestValidator in item) {
|
|
41
|
+
members.push({ single: false, validator: item[Symbol.justusRestValidator] });
|
|
42
42
|
} else {
|
|
43
43
|
members.push({ single: true, validator: (0, import_utilities.getValidator)(item) });
|
|
44
44
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/validators/tuple.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAkD;AAClD,
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAkD;AAClD,mBAAkC;AAElC,uBAA6B;AAC7B,sBAA8B;AAOvB,IAAM,iBAAN,cAA8C,+BAAiC;AAAA,EAC3E;AAAA,EACA;AAAA,EAET,YAAYA,QAAU;AACpB,UAAM;AAEN,UAAM,UAAyB,CAAC;AAChC,eAAW,QAAQA,QAAO;AACxB,UAAI,SAAS,MAAM;AACjB,gBAAQ,KAAK,EAAE,QAAQ,MAAM,WAAW,8BAAc,CAAC;AAAA,MACzD,WAAY,OAAO,SAAS,YAAc,OAAO,uBAAuB,MAAO;AAC7E,gBAAQ,KAAK,EAAE,QAAQ,OAAO,WAAiB,KAAM,OAAO,mBAAmB,EAAE,CAAC;AAAA,MACpF,OAAO;AACL,gBAAQ,KAAK,EAAE,QAAQ,MAAM,eAAW,+BAAa,IAAI,EAAE,CAAC;AAAA,MAC9D;AAAA,IACF;AAEA,SAAK,UAAU;AACf,SAAK,QAAQA;AAAA,EACf;AAAA,EAEA,SAAS,OAAgB,SAA4C;AACnE,wCAAiB,MAAM,QAAQ,KAAK,GAAG,yBAAyB;AAGhE,QAAI,KAAK,QAAQ,WAAW,GAAG;AAC7B,YAAM,OAAO,MAAM;AACnB,0CAAiB,SAAS,GAAG,SAAS,eAAe,SAAS,IAAI,KAAK,4BAA4B;AACnG,aAAO;AAAA,IACT;AAGA,UAAM,QAAQ,IAAI,MAAM,MAAM,MAAM;AACpC,QAAI,SAAS;AACb,QAAI,WAAW;AACf,QAAI,EAAE,QAAQ,UAAU,IAAI,KAAK,QAAQ,MAAM;AAE/C,WAAQ,SAAS,KAAK,QAAQ,UAAY,WAAW,MAAM,QAAS;AAClE,UAAI;AACF,cAAM,QAAQ,IAAI,UAAU,SAAS,MAAM,QAAQ,GAAG,OAAO;AAC7D,YAAI;AAAQ,WAAC,EAAE,QAAQ,UAAU,IAAI,KAAK,QAAQ,EAAG,MAAM,KAAK,CAAC;AACjE;AAAA,MACF,SAAS,OAAP;AACA,YAAI;AAAQ,gBAAM,IAAI,8BAAgB,OAAO,CAAE,QAAS,CAAC;AAAA;AACpD,WAAC,EAAE,QAAQ,UAAU,IAAI,KAAK,QAAQ,EAAG,MAAM,KAAK,CAAC;AAAA,MAC5D;AAAA,IACF;AAEA,WAAQ,SAAS,KAAK,QAAQ,UAAY,KAAK,QAAQ,MAAM,EAAE,WAAW,OAAQ;AAChF;AAAA,IACF;AAEA,UAAM,UAAU,KAAK,QAAQ,SAAS;AACtC,QAAK,YAAY,KAAM,QAAQ;AAC7B,YAAM,IAAI,8BAAgB,oCAAoC;AAAA,IAChE,WAAW,UAAU,GAAG;AACtB,YAAM,IAAI,8BAAgB,iBAAiB,6BAA6B;AAAA,IAC1E;AAEA,UAAM,QAAQ,MAAM,SAAS;AAC7B,wCAAiB,UAAU,GAAG,SAAS,sBAAsB,UAAU,IAAI,KAAK,cAAc;AAE9F,WAAO;AAAA,EACT;AACF;AAGO,SAAS,MAAuBA,QAAoC;AACzE,SAAO,IAAI,eAAeA,MAAK;AACjC;",
|
|
5
5
|
"names": ["tuple"]
|
|
6
6
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// validators/tuple.ts
|
|
2
2
|
import { assertValidation, ValidationError } from "../errors.mjs";
|
|
3
|
-
import { AbstractValidator
|
|
3
|
+
import { AbstractValidator } from "../types.mjs";
|
|
4
4
|
import { getValidator } from "../utilities.mjs";
|
|
5
5
|
import { nullValidator } from "./constant.mjs";
|
|
6
6
|
var TupleValidator = class extends AbstractValidator {
|
|
@@ -12,8 +12,8 @@ var TupleValidator = class extends AbstractValidator {
|
|
|
12
12
|
for (const item of tuple2) {
|
|
13
13
|
if (item === null) {
|
|
14
14
|
members.push({ single: true, validator: nullValidator });
|
|
15
|
-
} else if (typeof item === "object" &&
|
|
16
|
-
members.push({ single: false, validator: item[
|
|
15
|
+
} else if (typeof item === "object" && Symbol.justusRestValidator in item) {
|
|
16
|
+
members.push({ single: false, validator: item[Symbol.justusRestValidator] });
|
|
17
17
|
} else {
|
|
18
18
|
members.push({ single: true, validator: getValidator(item) });
|
|
19
19
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/validators/tuple.ts"],
|
|
4
|
-
"mappings": ";AAAA,SAAS,kBAAkB,uBAAuB;AAClD,SAAS,
|
|
4
|
+
"mappings": ";AAAA,SAAS,kBAAkB,uBAAuB;AAClD,SAAS,yBAAyB;AAElC,SAAS,oBAAoB;AAC7B,SAAS,qBAAqB;AAOvB,IAAM,iBAAN,cAA8C,kBAAiC;AAAA,EAC3E;AAAA,EACA;AAAA,EAET,YAAYA,QAAU;AACpB,UAAM;AAEN,UAAM,UAAyB,CAAC;AAChC,eAAW,QAAQA,QAAO;AACxB,UAAI,SAAS,MAAM;AACjB,gBAAQ,KAAK,EAAE,QAAQ,MAAM,WAAW,cAAc,CAAC;AAAA,MACzD,WAAY,OAAO,SAAS,YAAc,OAAO,uBAAuB,MAAO;AAC7E,gBAAQ,KAAK,EAAE,QAAQ,OAAO,WAAiB,KAAM,OAAO,mBAAmB,EAAE,CAAC;AAAA,MACpF,OAAO;AACL,gBAAQ,KAAK,EAAE,QAAQ,MAAM,WAAW,aAAa,IAAI,EAAE,CAAC;AAAA,MAC9D;AAAA,IACF;AAEA,SAAK,UAAU;AACf,SAAK,QAAQA;AAAA,EACf;AAAA,EAEA,SAAS,OAAgB,SAA4C;AACnE,qBAAiB,MAAM,QAAQ,KAAK,GAAG,yBAAyB;AAGhE,QAAI,KAAK,QAAQ,WAAW,GAAG;AAC7B,YAAM,OAAO,MAAM;AACnB,uBAAiB,SAAS,GAAG,SAAS,eAAe,SAAS,IAAI,KAAK,4BAA4B;AACnG,aAAO;AAAA,IACT;AAGA,UAAM,QAAQ,IAAI,MAAM,MAAM,MAAM;AACpC,QAAI,SAAS;AACb,QAAI,WAAW;AACf,QAAI,EAAE,QAAQ,UAAU,IAAI,KAAK,QAAQ,MAAM;AAE/C,WAAQ,SAAS,KAAK,QAAQ,UAAY,WAAW,MAAM,QAAS;AAClE,UAAI;AACF,cAAM,QAAQ,IAAI,UAAU,SAAS,MAAM,QAAQ,GAAG,OAAO;AAC7D,YAAI;AAAQ,WAAC,EAAE,QAAQ,UAAU,IAAI,KAAK,QAAQ,EAAG,MAAM,KAAK,CAAC;AACjE;AAAA,MACF,SAAS,OAAP;AACA,YAAI;AAAQ,gBAAM,IAAI,gBAAgB,OAAO,CAAE,QAAS,CAAC;AAAA;AACpD,WAAC,EAAE,QAAQ,UAAU,IAAI,KAAK,QAAQ,EAAG,MAAM,KAAK,CAAC;AAAA,MAC5D;AAAA,IACF;AAEA,WAAQ,SAAS,KAAK,QAAQ,UAAY,KAAK,QAAQ,MAAM,EAAE,WAAW,OAAQ;AAChF;AAAA,IACF;AAEA,UAAM,UAAU,KAAK,QAAQ,SAAS;AACtC,QAAK,YAAY,KAAM,QAAQ;AAC7B,YAAM,IAAI,gBAAgB,oCAAoC;AAAA,IAChE,WAAW,UAAU,GAAG;AACtB,YAAM,IAAI,gBAAgB,iBAAiB,6BAA6B;AAAA,IAC1E;AAEA,UAAM,QAAQ,MAAM,SAAS;AAC7B,qBAAiB,UAAU,GAAG,SAAS,sBAAsB,UAAU,IAAI,KAAK,cAAc;AAE9F,WAAO;AAAA,EACT;AACF;AAGO,SAAS,MAAuBA,QAAoC;AACzE,SAAO,IAAI,eAAeA,MAAK;AACjC;",
|
|
5
5
|
"names": ["tuple"]
|
|
6
6
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "justus",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.2",
|
|
4
4
|
"description": "A JavaScript validation library, with types!",
|
|
5
5
|
"main": "./dist/index.cjs",
|
|
6
6
|
"module": "./dist/index.mjs",
|
|
@@ -36,13 +36,13 @@
|
|
|
36
36
|
"transpile": "plug transpile"
|
|
37
37
|
},
|
|
38
38
|
"author": "Juit Developers <developers@juit.com>",
|
|
39
|
-
"license": "
|
|
39
|
+
"license": "Apache-2.0",
|
|
40
40
|
"devDependencies": {
|
|
41
|
-
"@plugjs/build": "^0.2.
|
|
42
|
-
"@plugjs/tsd": "^0.2.
|
|
41
|
+
"@plugjs/build": "^0.2.4",
|
|
42
|
+
"@plugjs/tsd": "^0.2.3",
|
|
43
43
|
"@types/chai": "^4.3.4",
|
|
44
44
|
"chai": "^4.3.7",
|
|
45
|
-
"tsd": "^0.
|
|
45
|
+
"tsd": "^0.27.0",
|
|
46
46
|
"typescript": "^4.9.5"
|
|
47
47
|
},
|
|
48
48
|
"directories": {
|
package/src/dts-generator.ts
CHANGED
|
@@ -1,34 +1,25 @@
|
|
|
1
|
-
import ts
|
|
1
|
+
import ts from 'typescript'
|
|
2
2
|
|
|
3
3
|
import {
|
|
4
4
|
AllOfValidator,
|
|
5
|
-
any,
|
|
6
5
|
AnyArrayValidator,
|
|
7
6
|
AnyNumberValidator,
|
|
8
7
|
AnyObjectValidator,
|
|
9
8
|
AnyStringValidator,
|
|
10
9
|
AnyValidator,
|
|
11
|
-
array,
|
|
12
10
|
ArrayValidator,
|
|
13
11
|
assertSchema,
|
|
14
|
-
boolean,
|
|
15
12
|
BooleanValidator,
|
|
16
13
|
ConstantValidator,
|
|
17
|
-
date,
|
|
18
14
|
DateValidator,
|
|
19
15
|
getValidator,
|
|
20
|
-
never,
|
|
21
16
|
NeverValidator,
|
|
22
|
-
number,
|
|
23
17
|
NumberValidator,
|
|
24
|
-
object,
|
|
25
18
|
ObjectValidator,
|
|
26
19
|
OneOfValidator,
|
|
27
20
|
OptionalValidator,
|
|
28
|
-
string,
|
|
29
21
|
StringValidator,
|
|
30
22
|
TupleValidator,
|
|
31
|
-
url,
|
|
32
23
|
URLValidator,
|
|
33
24
|
} from './index'
|
|
34
25
|
|
|
@@ -132,7 +123,7 @@ function generateTypeNode(
|
|
|
132
123
|
if (type === neverType) return undefinedType
|
|
133
124
|
|
|
134
125
|
// If the type is already a union type, we simply add our "undefined"
|
|
135
|
-
if (isUnionTypeNode(type)) {
|
|
126
|
+
if (ts.isUnionTypeNode(type)) {
|
|
136
127
|
return ts.factory.createUnionTypeNode([ ...type.types, undefinedType ])
|
|
137
128
|
}
|
|
138
129
|
|
|
@@ -176,16 +167,6 @@ registerTypeGenerator(NeverValidator, () => neverType)
|
|
|
176
167
|
registerTypeGenerator(DateValidator, () => ts.factory.createTypeReferenceNode('Date'))
|
|
177
168
|
registerTypeGenerator(URLValidator, () => ts.factory.createTypeReferenceNode('URL'))
|
|
178
169
|
|
|
179
|
-
registerTypeGenerator(any, () => anyType)
|
|
180
|
-
registerTypeGenerator(array, () => anyArrayType)
|
|
181
|
-
registerTypeGenerator(number, () => numberType)
|
|
182
|
-
registerTypeGenerator(object, () => recordType)
|
|
183
|
-
registerTypeGenerator(string, () => stringType)
|
|
184
|
-
registerTypeGenerator(boolean, () => booleanType)
|
|
185
|
-
registerTypeGenerator(never, () => neverType)
|
|
186
|
-
registerTypeGenerator(date, () => ts.factory.createTypeReferenceNode('Date'))
|
|
187
|
-
registerTypeGenerator(url, () => ts.factory.createTypeReferenceNode('URL'))
|
|
188
|
-
|
|
189
170
|
/* ========================================================================== */
|
|
190
171
|
|
|
191
172
|
// Complex generator functions...
|
package/src/schema.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { additionalValidator } from './types'
|
|
1
|
+
// import { additionalValidator } from './types'
|
|
2
2
|
// eslint-disable-next-line import/no-cycle
|
|
3
3
|
import { getValidator } from './utilities'
|
|
4
4
|
import { any } from './validators/any'
|
|
@@ -20,10 +20,10 @@ export function _allowAdditionalProperties(allow: false): AdditionalProperties<f
|
|
|
20
20
|
export function _allowAdditionalProperties<V extends Validation>(validation: V): AdditionalProperties<Validator<InferValidation<V>>>
|
|
21
21
|
|
|
22
22
|
export function _allowAdditionalProperties(options?: Validation | boolean): AdditionalProperties<Validator | false> {
|
|
23
|
-
if (options === false) return { [
|
|
24
|
-
if (options === true) return { [
|
|
23
|
+
if (options === false) return { [Symbol.justusAdditionalValidator]: false }
|
|
24
|
+
if (options === true) return { [Symbol.justusAdditionalValidator]: any }
|
|
25
25
|
|
|
26
|
-
return { [
|
|
26
|
+
return { [Symbol.justusAdditionalValidator]: options ? getValidator(options) : any }
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
/**
|
|
@@ -40,4 +40,4 @@ export const allowAdditionalProperties = _allowAdditionalProperties as
|
|
|
40
40
|
|
|
41
41
|
// Remember to inject our `any` validator as the default for when
|
|
42
42
|
// `allowAdditionalProperties` is _not_ used as a function
|
|
43
|
-
allowAdditionalProperties[
|
|
43
|
+
allowAdditionalProperties[Symbol.justusAdditionalValidator] = any
|
package/src/types.ts
CHANGED
|
@@ -2,17 +2,23 @@
|
|
|
2
2
|
* SYMBOLS IDENTIFYING SPECIAL FUNCTIONALITIES *
|
|
3
3
|
* ========================================================================== */
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
/** A symbol indicating the `Validator` for a `Schema
|
|
12
|
-
|
|
5
|
+
declare global {
|
|
6
|
+
interface SymbolConstructor {
|
|
7
|
+
/** A symbol associated with a `Validator` instance. */
|
|
8
|
+
readonly justusValidator: unique symbol
|
|
9
|
+
/** A symbol indicating the `Validator` for a `Tuple`'s rest parameter. */
|
|
10
|
+
readonly justusRestValidator: unique symbol
|
|
11
|
+
/** A symbol indicating the `Validator` for a `Schema`'s additional properties. */
|
|
12
|
+
readonly justusAdditionalValidator: unique symbol
|
|
13
|
+
}
|
|
14
|
+
}
|
|
13
15
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
+
/* Inject our symbols as globals */
|
|
17
|
+
Object.defineProperties(Symbol, {
|
|
18
|
+
justusValidator: { value: Symbol.for('justus.Validator') },
|
|
19
|
+
justusRestValidator: { value: Symbol.for('justus.restValidator') },
|
|
20
|
+
justusAdditionalValidator: { value: Symbol.for('justus.additionalValidator') },
|
|
21
|
+
})
|
|
16
22
|
|
|
17
23
|
/* ========================================================================== *
|
|
18
24
|
* BASIC VALIDATION TYPES *
|
|
@@ -44,7 +50,7 @@ export const defaultValidationOptions: Readonly<Required<ValidationOptions>> = {
|
|
|
44
50
|
* (possibly) converting it the required type `T`.
|
|
45
51
|
*/
|
|
46
52
|
export interface Validator<T = any> extends Iterable<TupleRestParameter<T>> {
|
|
47
|
-
[
|
|
53
|
+
[Symbol.justusValidator]: this
|
|
48
54
|
|
|
49
55
|
optional?: boolean
|
|
50
56
|
|
|
@@ -69,7 +75,7 @@ export function makeValidatorFactory<
|
|
|
69
75
|
optional: validator.optional,
|
|
70
76
|
validate: validator.validate.bind(validator),
|
|
71
77
|
[Symbol.iterator]: validator[Symbol.iterator].bind(validator),
|
|
72
|
-
[
|
|
78
|
+
[Symbol.justusValidator]: validator,
|
|
73
79
|
}) as F & V
|
|
74
80
|
}
|
|
75
81
|
|
|
@@ -79,7 +85,7 @@ export function makeValidatorFactory<
|
|
|
79
85
|
*/
|
|
80
86
|
export abstract class AbstractValidator<T = any>
|
|
81
87
|
implements Validator<T>, Iterable<TupleRestParameter<T>> {
|
|
82
|
-
[
|
|
88
|
+
[Symbol.justusValidator] = this
|
|
83
89
|
|
|
84
90
|
optional?: boolean = undefined
|
|
85
91
|
|
|
@@ -88,7 +94,7 @@ implements Validator<T>, Iterable<TupleRestParameter<T>> {
|
|
|
88
94
|
|
|
89
95
|
/** Allow any `Validator` to be used as a rest parameter in `Tuple`s */
|
|
90
96
|
* [Symbol.iterator](): Generator<TupleRestParameter<T>> {
|
|
91
|
-
yield { [
|
|
97
|
+
yield { [Symbol.justusRestValidator]: this }
|
|
92
98
|
}
|
|
93
99
|
}
|
|
94
100
|
|
|
@@ -159,7 +165,7 @@ export type Tuple = readonly (Validation | TupleRestParameter)[]
|
|
|
159
165
|
* ```
|
|
160
166
|
*/
|
|
161
167
|
export type TupleRestParameter<T = any> = {
|
|
162
|
-
[
|
|
168
|
+
[Symbol.justusRestValidator] : Validator<T>
|
|
163
169
|
}
|
|
164
170
|
|
|
165
171
|
/**
|
|
@@ -192,7 +198,7 @@ export type InferTuple<T> =
|
|
|
192
198
|
*/
|
|
193
199
|
export interface Schema {
|
|
194
200
|
[ key: string ] : Validation
|
|
195
|
-
[
|
|
201
|
+
[ Symbol.justusAdditionalValidator ]?: Validator | false
|
|
196
202
|
}
|
|
197
203
|
|
|
198
204
|
/**
|
|
@@ -200,7 +206,7 @@ export interface Schema {
|
|
|
200
206
|
* properties, and the `Validator` used to validate them.
|
|
201
207
|
*/
|
|
202
208
|
export interface AdditionalProperties<V extends Validator | false> {
|
|
203
|
-
[
|
|
209
|
+
[ Symbol.justusAdditionalValidator ]: V
|
|
204
210
|
}
|
|
205
211
|
|
|
206
212
|
/* ========================================================================== *
|
package/src/utilities.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { isValidator, schemaValidator } from './types'
|
|
2
1
|
import { ConstantValidator, nullValidator } from './validators/constant'
|
|
3
2
|
// eslint-disable-next-line import/no-cycle
|
|
4
3
|
import { ObjectValidator } from './validators/object'
|
|
@@ -20,8 +19,10 @@ export function getValidator(validation: Validation): Validator {
|
|
|
20
19
|
// Null is a constant
|
|
21
20
|
if (validation === null) return nullValidator
|
|
22
21
|
|
|
23
|
-
//
|
|
24
|
-
if ((<any> validation)[
|
|
22
|
+
// Anything with a validor associated with
|
|
23
|
+
if ((<any> validation)[Symbol.justusValidator]) {
|
|
24
|
+
return (<any> validation)[Symbol.justusValidator] as Validator
|
|
25
|
+
}
|
|
25
26
|
|
|
26
27
|
// Other types
|
|
27
28
|
switch (typeof validation) {
|
|
@@ -33,8 +34,6 @@ export function getValidator(validation: Validation): Validator {
|
|
|
33
34
|
|
|
34
35
|
// other objects...
|
|
35
36
|
case 'object':
|
|
36
|
-
// pre-compiled schema with validator
|
|
37
|
-
if (schemaValidator in validation) return (<any> validation)[schemaValidator]
|
|
38
37
|
// arrays are tuples
|
|
39
38
|
if (Array.isArray(validation)) return new TupleValidator(validation)
|
|
40
39
|
// any other object is a schema
|
package/src/validators/object.ts
CHANGED
|
@@ -3,11 +3,8 @@ import { assertValidation, ValidationErrorBuilder } from '../errors'
|
|
|
3
3
|
import { allowAdditionalProperties } from '../schema'
|
|
4
4
|
import {
|
|
5
5
|
AbstractValidator,
|
|
6
|
-
additionalValidator,
|
|
7
6
|
defaultValidationOptions,
|
|
8
7
|
makeValidatorFactory,
|
|
9
|
-
restValidator,
|
|
10
|
-
schemaValidator,
|
|
11
8
|
} from '../types'
|
|
12
9
|
import { getValidator } from '../utilities'
|
|
13
10
|
|
|
@@ -38,9 +35,9 @@ export class ObjectValidator<S extends Schema> extends AbstractValidator<InferSc
|
|
|
38
35
|
|
|
39
36
|
constructor(schema: S) {
|
|
40
37
|
super()
|
|
41
|
-
const { [
|
|
38
|
+
const { [Symbol.justusAdditionalValidator]: additional, ...properties } = schema
|
|
42
39
|
|
|
43
|
-
if (additional) this.additionalProperties =
|
|
40
|
+
if (additional) this.additionalProperties = additional
|
|
44
41
|
|
|
45
42
|
for (const key of Object.keys(properties)) {
|
|
46
43
|
this.validators.set(key, getValidator(properties[key]))
|
|
@@ -125,11 +122,11 @@ function _object<S extends Schema>(schema: S): S & {
|
|
|
125
122
|
} {
|
|
126
123
|
const validator = new ObjectValidator(schema)
|
|
127
124
|
function* iterator(): Generator<TupleRestParameter> {
|
|
128
|
-
yield { [
|
|
125
|
+
yield { [Symbol.justusRestValidator]: validator }
|
|
129
126
|
}
|
|
130
127
|
|
|
131
128
|
return Object.defineProperties(schema, {
|
|
132
|
-
[
|
|
129
|
+
[Symbol.justusValidator]: { value: validator, enumerable: false },
|
|
133
130
|
[Symbol.iterator]: { value: iterator, enumerable: false },
|
|
134
131
|
}) as any
|
|
135
132
|
}
|
package/src/validators/tuple.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { assertValidation, ValidationError } from '../errors'
|
|
2
|
-
import { AbstractValidator
|
|
2
|
+
import { AbstractValidator } from '../types'
|
|
3
3
|
// eslint-disable-next-line import/no-cycle
|
|
4
4
|
import { getValidator } from '../utilities'
|
|
5
5
|
import { nullValidator } from './constant'
|
|
@@ -20,8 +20,8 @@ export class TupleValidator<T extends Tuple> extends AbstractValidator<InferTupl
|
|
|
20
20
|
for (const item of tuple) {
|
|
21
21
|
if (item === null) { // god knows why typeof null === "object"
|
|
22
22
|
members.push({ single: true, validator: nullValidator })
|
|
23
|
-
} else if ((typeof item === 'object') && (
|
|
24
|
-
members.push({ single: false, validator: (<any>item)[
|
|
23
|
+
} else if ((typeof item === 'object') && (Symbol.justusRestValidator in item)) {
|
|
24
|
+
members.push({ single: false, validator: (<any>item)[Symbol.justusRestValidator] })
|
|
25
25
|
} else {
|
|
26
26
|
members.push({ single: true, validator: getValidator(item) })
|
|
27
27
|
}
|