@lucania/schema 3.1.2 → 3.1.4
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/build/builder.d.ts +4 -0
- package/build/index.js +32 -25
- package/build/typing/toolbox.d.ts +1 -1
- package/package.json +1 -1
package/build/builder.d.ts
CHANGED
|
@@ -11,6 +11,7 @@ import { NumberSchema, NumberSource } from "./schema/NumberSchema";
|
|
|
11
11
|
import { ObjectSchema, ObjectSource, ObjectSubschema } from "./schema/ObjectSchema";
|
|
12
12
|
import { OrSetSchema, OrSetSchemaSource } from "./schema/OrSetSchema";
|
|
13
13
|
import { StringSchema, StringSource } from "./schema/StringSchema";
|
|
14
|
+
import { TupleSchema, TupleSource } from "./schema/TupleSchema";
|
|
14
15
|
import { BaseSchemaAny } from "./typing/extended";
|
|
15
16
|
import { DefaultValue, ModelValue, SourceValue } from "./typing/toolbox";
|
|
16
17
|
/**
|
|
@@ -147,6 +148,9 @@ export declare namespace Schema {
|
|
|
147
148
|
function Enumeration<Members extends string[]>(subschema: TypedMembers<Members>): EnumerationSchema<Members, true, undefined>;
|
|
148
149
|
function Enumeration<Members extends string[], Required extends boolean>(subschema: TypedMembers<Members>, required: Required): EnumerationSchema<Members, Required, undefined>;
|
|
149
150
|
function Enumeration<Members extends string[], Required extends boolean, Default extends DefaultValue<EnumerationSource<Members>>>(subschema: TypedMembers<Members>, required: Required, defaultValue: Default): EnumerationSchema<Members, Required, Default>;
|
|
151
|
+
function Tuple<Members extends BaseSchemaAny[]>(members: TypedMembers<Members>): TupleSchema<Members, true, undefined>;
|
|
152
|
+
function Tuple<Members extends BaseSchemaAny[], Required extends boolean>(members: TypedMembers<Members>, required: Required): TupleSchema<Members, Required, undefined>;
|
|
153
|
+
function Tuple<Members extends BaseSchemaAny[], Required extends boolean, Default extends DefaultValue<TupleSource<Members>>>(members: TypedMembers<Members>, required: Required, defaultValue: Default): TupleSchema<Members, Required, Default>;
|
|
150
154
|
function OrSet<MemberSchemas extends BaseSchemaAny[]>(subschema: TypedMembers<MemberSchemas>): OrSetSchema<MemberSchemas, true, undefined>;
|
|
151
155
|
function OrSet<MemberSchemas extends BaseSchemaAny[], Required extends boolean>(subschema: TypedMembers<MemberSchemas>, required: Required): OrSetSchema<MemberSchemas, Required, undefined>;
|
|
152
156
|
function OrSet<MemberSchemas extends BaseSchemaAny[], Required extends boolean, Default extends DefaultValue<OrSetSchemaSource<MemberSchemas>>>(subschema: TypedMembers<MemberSchemas>, required: Required, defaultValue: Default): OrSetSchema<MemberSchemas, Required, Default>;
|
package/build/index.js
CHANGED
|
@@ -262,6 +262,9 @@
|
|
|
262
262
|
}
|
|
263
263
|
const type = typeof value;
|
|
264
264
|
if (type === "object") {
|
|
265
|
+
if (value.constructor === undefined) {
|
|
266
|
+
return type;
|
|
267
|
+
}
|
|
265
268
|
const constructor = value.constructor.name;
|
|
266
269
|
if (constructor === "Object") {
|
|
267
270
|
return type;
|
|
@@ -707,7 +710,7 @@
|
|
|
707
710
|
return output;
|
|
708
711
|
}
|
|
709
712
|
convert(value, pass) {
|
|
710
|
-
pass.assert(typeof value === "object", `Unable to convert ${ObjectSchema.getType(value)} to object.`);
|
|
713
|
+
pass.assert(typeof value === "object" && value !== null, `Unable to convert ${ObjectSchema.getType(value)} to object.`);
|
|
711
714
|
const model = {};
|
|
712
715
|
for (const key in this.subschema) {
|
|
713
716
|
const nestedSchema = this.subschema[key];
|
|
@@ -856,6 +859,30 @@
|
|
|
856
859
|
}
|
|
857
860
|
}
|
|
858
861
|
|
|
862
|
+
class TupleSchema extends BaseSchema {
|
|
863
|
+
subschema;
|
|
864
|
+
constructor(subschema, required, defaultValue, additionalValidationPasses) {
|
|
865
|
+
super(required, defaultValue, additionalValidationPasses);
|
|
866
|
+
this.subschema = subschema;
|
|
867
|
+
}
|
|
868
|
+
get type() { return "Tuple"; }
|
|
869
|
+
_validate(source, options, pass) {
|
|
870
|
+
return source;
|
|
871
|
+
}
|
|
872
|
+
convert(value, pass) {
|
|
873
|
+
return this.subschema.map((schema, i) => schema.validate(value[i]));
|
|
874
|
+
}
|
|
875
|
+
clone() {
|
|
876
|
+
return new TupleSchema(this.subschema, this._required, this._default, this._additionalValidationPasses);
|
|
877
|
+
}
|
|
878
|
+
getJsonSchema() {
|
|
879
|
+
return {
|
|
880
|
+
type: "Tuple",
|
|
881
|
+
description: this._getJsonSchemaDescription(),
|
|
882
|
+
};
|
|
883
|
+
}
|
|
884
|
+
}
|
|
885
|
+
|
|
859
886
|
/**
|
|
860
887
|
* A collection of helper functions used to create the standard set of schemas.
|
|
861
888
|
*/
|
|
@@ -901,6 +928,10 @@
|
|
|
901
928
|
return new EnumerationSchema($members, required, defaultValue);
|
|
902
929
|
}
|
|
903
930
|
Schema.Enumeration = Enumeration;
|
|
931
|
+
function Tuple({ $members }, required = true, defaultValue = undefined) {
|
|
932
|
+
return new TupleSchema($members, required, defaultValue);
|
|
933
|
+
}
|
|
934
|
+
Schema.Tuple = Tuple;
|
|
904
935
|
function OrSet({ $members }, required = true, defaultValue = undefined) {
|
|
905
936
|
return new OrSetSchema($members, required, defaultValue);
|
|
906
937
|
}
|
|
@@ -923,30 +954,6 @@
|
|
|
923
954
|
Schema.Values = Values;
|
|
924
955
|
})(exports.Schema || (exports.Schema = {}));
|
|
925
956
|
|
|
926
|
-
class TupleSchema extends BaseSchema {
|
|
927
|
-
subschema;
|
|
928
|
-
constructor(subschema, required, defaultValue, additionalValidationPasses) {
|
|
929
|
-
super(required, defaultValue, additionalValidationPasses);
|
|
930
|
-
this.subschema = subschema;
|
|
931
|
-
}
|
|
932
|
-
get type() { return "Tuple"; }
|
|
933
|
-
_validate(source, options, pass) {
|
|
934
|
-
return source;
|
|
935
|
-
}
|
|
936
|
-
convert(value, pass) {
|
|
937
|
-
return this.subschema.map((schema, i) => schema.validate(value[i]));
|
|
938
|
-
}
|
|
939
|
-
clone() {
|
|
940
|
-
return new TupleSchema(this.subschema, this._required, this._default, this._additionalValidationPasses);
|
|
941
|
-
}
|
|
942
|
-
getJsonSchema() {
|
|
943
|
-
return {
|
|
944
|
-
type: "Tuple",
|
|
945
|
-
description: this._getJsonSchemaDescription(),
|
|
946
|
-
};
|
|
947
|
-
}
|
|
948
|
-
}
|
|
949
|
-
|
|
950
957
|
exports.$ = exports.Schema;
|
|
951
958
|
exports.AnySchema = AnySchema;
|
|
952
959
|
exports.ArraySchema = ArraySchema;
|
|
@@ -9,7 +9,7 @@ export type SourceRequirement<Layout extends BaseSchemaAny> = (Layout extends Ba
|
|
|
9
9
|
export type SourceValue<Source, Required extends boolean, Default extends DefaultValue<Source>> = (Required extends true ? (undefined extends Default ? (Source) : (Source | undefined)) : Source | undefined);
|
|
10
10
|
export type ModelRequirement<Layout extends BaseSchemaAny> = (Layout extends BaseSchema<any, any, infer Required, infer Default> ? (Required extends true ? (true) : (Default extends undefined ? false : true)) : never);
|
|
11
11
|
export type ModelValue<Source, Model, Required extends boolean, Default extends DefaultValue<Source>> = (Required extends true ? Model : Default extends undefined ? Model | undefined : Model);
|
|
12
|
-
export type DefaultValue<
|
|
12
|
+
export type DefaultValue<Source> = undefined | Source | ((pass: ValidationPass) => Source);
|
|
13
13
|
export type AdditionalValidatorBeforeType = ("beforeAll" | "beforeDefault" | "afterDefault");
|
|
14
14
|
export type AdditionalValidatorAfterType = ("beforeConversion" | "afterConversion" | "afterAll");
|
|
15
15
|
/**
|