@lucania/schema 3.1.2 → 3.1.3

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.
@@ -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
@@ -856,6 +856,30 @@
856
856
  }
857
857
  }
858
858
 
859
+ class TupleSchema extends BaseSchema {
860
+ subschema;
861
+ constructor(subschema, required, defaultValue, additionalValidationPasses) {
862
+ super(required, defaultValue, additionalValidationPasses);
863
+ this.subschema = subschema;
864
+ }
865
+ get type() { return "Tuple"; }
866
+ _validate(source, options, pass) {
867
+ return source;
868
+ }
869
+ convert(value, pass) {
870
+ return this.subschema.map((schema, i) => schema.validate(value[i]));
871
+ }
872
+ clone() {
873
+ return new TupleSchema(this.subschema, this._required, this._default, this._additionalValidationPasses);
874
+ }
875
+ getJsonSchema() {
876
+ return {
877
+ type: "Tuple",
878
+ description: this._getJsonSchemaDescription(),
879
+ };
880
+ }
881
+ }
882
+
859
883
  /**
860
884
  * A collection of helper functions used to create the standard set of schemas.
861
885
  */
@@ -901,6 +925,10 @@
901
925
  return new EnumerationSchema($members, required, defaultValue);
902
926
  }
903
927
  Schema.Enumeration = Enumeration;
928
+ function Tuple({ $members }, required = true, defaultValue = undefined) {
929
+ return new TupleSchema($members, required, defaultValue);
930
+ }
931
+ Schema.Tuple = Tuple;
904
932
  function OrSet({ $members }, required = true, defaultValue = undefined) {
905
933
  return new OrSetSchema($members, required, defaultValue);
906
934
  }
@@ -923,30 +951,6 @@
923
951
  Schema.Values = Values;
924
952
  })(exports.Schema || (exports.Schema = {}));
925
953
 
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
954
  exports.$ = exports.Schema;
951
955
  exports.AnySchema = AnySchema;
952
956
  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<Type> = undefined | Type | ((pass: ValidationPass) => Type);
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
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lucania/schema",
3
- "version": "3.1.2",
3
+ "version": "3.1.3",
4
4
  "description": "A schema module for compile-time and runtime type checking.",
5
5
  "main": "./build/index.js",
6
6
  "types": "./build/index.d.ts",