@tstdl/base 0.71.14 → 0.71.15

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tstdl/base",
3
- "version": "0.71.14",
3
+ "version": "0.71.15",
4
4
  "author": "Patrick Hein",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -19,4 +19,5 @@ export * from './regexp';
19
19
  export * from './string';
20
20
  export * from './transform';
21
21
  export * from './uint8-array';
22
+ export * from './union';
22
23
  export * from './unknown';
@@ -35,5 +35,6 @@ __exportStar(require("./regexp"), exports);
35
35
  __exportStar(require("./string"), exports);
36
36
  __exportStar(require("./transform"), exports);
37
37
  __exportStar(require("./uint8-array"), exports);
38
+ __exportStar(require("./union"), exports);
38
39
  __exportStar(require("./unknown"), exports);
39
40
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../source/schema/schemas/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wCAAsB;AACtB,0CAAwB;AACxB,mDAAiC;AACjC,4CAA0B;AAC1B,8CAA4B;AAC5B,gDAA8B;AAC9B,6CAA2B;AAC3B,6CAA2B;AAC3B,4CAA0B;AAC1B,0CAAwB;AACxB,6CAA2B;AAC3B,2CAAyB;AACzB,2CAAyB;AACzB,6CAA2B;AAC3B,+CAA6B;AAC7B,oDAAkC;AAClC,2CAAyB;AACzB,2CAAyB;AACzB,2CAAyB;AACzB,8CAA4B;AAC5B,gDAA8B;AAC9B,4CAA0B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../source/schema/schemas/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wCAAsB;AACtB,0CAAwB;AACxB,mDAAiC;AACjC,4CAA0B;AAC1B,8CAA4B;AAC5B,gDAA8B;AAC9B,6CAA2B;AAC3B,6CAA2B;AAC3B,4CAA0B;AAC1B,0CAAwB;AACxB,6CAA2B;AAC3B,2CAAyB;AACzB,2CAAyB;AACzB,6CAA2B;AAC3B,+CAA6B;AAC7B,oDAAkC;AAClC,2CAAyB;AACzB,2CAAyB;AACzB,2CAAyB;AACzB,8CAA4B;AAC5B,gDAA8B;AAC9B,0CAAwB;AACxB,4CAA0B"}
@@ -2,15 +2,17 @@ import type { JsonPath } from "../../json-path";
2
2
  import type { Optionalize, Simplify, SimplifyObject, StringMap } from "../../types";
3
3
  import type { DefinedValidationOptions, ValidationTestResult } from '../schema.validator';
4
4
  import { SchemaValidator, test, testAsync } from '../schema.validator';
5
- import type { SchemaDefinition, SchemaOptions, SchemaOutput } from '../types';
5
+ import type { Maskable, SchemaDefinition, SchemaOptions, SchemaOutput } from '../types';
6
6
  export declare type ObjectOutputType<T extends StringMap<SchemaDefinition>> = Simplify<Optionalize<{
7
7
  [P in keyof T]: SchemaOutput<T[P]>;
8
8
  }>>;
9
9
  export declare type ObjectSchemaValidatorEntries<T extends StringMap<SchemaDefinition>> = {
10
10
  [P in keyof T]: SchemaValidator<T[P]>;
11
11
  };
12
- export declare type ObjectSchemaDefinition<T extends StringMap<SchemaDefinition> = StringMap<SchemaDefinition>> = SchemaDefinition<'object', unknown, ObjectOutputType<T>> & {
12
+ export declare type ObjectSchemaDefinition<T extends StringMap<SchemaDefinition> = StringMap<SchemaDefinition>> = SchemaDefinition<'object', unknown, ObjectOutputType<T>> & Maskable & {
13
13
  entries: T;
14
+ /** Keep unknown properties instead of raising an error. This overwrites mask. */
15
+ keepUnknown?: boolean;
14
16
  };
15
17
  export declare type ObjectAssign<A extends StringMap<SchemaDefinition>, B extends StringMap<SchemaDefinition>> = SimplifyObject<Omit<A, keyof B> & B>;
16
18
  export declare class ObjectSchemaValidator<T extends StringMap<SchemaDefinition>> extends SchemaValidator<ObjectSchemaDefinition<T>> {
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.assign = exports.object = exports.ObjectSchemaValidator = void 0;
4
4
  const map_1 = require("../../utils/map");
5
+ const type_guards_1 = require("../../utils/type-guards");
5
6
  const schema_error_1 = require("../schema.error");
6
7
  const schema_validator_1 = require("../schema.validator");
7
8
  const types_1 = require("../types");
@@ -23,7 +24,7 @@ class ObjectSchemaValidator extends schema_validator_1.SchemaValidator {
23
24
  if (!testBaseResult.valid) {
24
25
  return testBaseResult;
25
26
  }
26
- const resultObject = {};
27
+ let resultObject = {};
27
28
  for (const [key, validator] of this.validatorEntries) {
28
29
  const innerValue = testBaseResult.value.get(key);
29
30
  const innerValueValidationTestResult = validator[schema_validator_1.test](innerValue, options, path.add(key));
@@ -32,6 +33,9 @@ class ObjectSchemaValidator extends schema_validator_1.SchemaValidator {
32
33
  }
33
34
  resultObject[key] = innerValueValidationTestResult.value;
34
35
  }
36
+ if (this.schema.keepUnknown == true) {
37
+ resultObject = Object.assign(Object.assign({}, value), resultObject);
38
+ }
35
39
  return { valid: true, value: resultObject };
36
40
  }
37
41
  async [schema_validator_1.testAsync](value, options, path) {
@@ -39,7 +43,7 @@ class ObjectSchemaValidator extends schema_validator_1.SchemaValidator {
39
43
  if (!testBaseResult.valid) {
40
44
  return testBaseResult;
41
45
  }
42
- const resultObject = {};
46
+ let resultObject = {};
43
47
  for (const [key, validator] of this.validatorEntries) {
44
48
  const innerValue = testBaseResult.value.get(key);
45
49
  const innerValueValidationTestResult = await validator[schema_validator_1.testAsync](innerValue, options, path.add(key));
@@ -48,6 +52,9 @@ class ObjectSchemaValidator extends schema_validator_1.SchemaValidator {
48
52
  }
49
53
  resultObject[key] = innerValueValidationTestResult.value;
50
54
  }
55
+ if (this.schema.keepUnknown == true) {
56
+ resultObject = Object.assign(Object.assign({}, value), resultObject);
57
+ }
51
58
  return { valid: true, value: resultObject };
52
59
  }
53
60
  _testBase(value, options, path) {
@@ -60,7 +67,7 @@ class ObjectSchemaValidator extends schema_validator_1.SchemaValidator {
60
67
  }
61
68
  const valueEntries = new Map(Object.entries(value));
62
69
  const unknownKeys = (0, map_1.differenceMaps)(valueEntries, this.validatorEntries);
63
- if ((unknownKeys.length > 0) && !options.mask) {
70
+ if ((unknownKeys.length > 0) && (this.schema.mask != true) && ((0, type_guards_1.isBoolean)(this.schema.mask) || !options.mask) && (this.schema.keepUnknown != true)) {
64
71
  const keys = unknownKeys.map((entry) => entry[0]).join(', ');
65
72
  return { valid: false, error: (0, schema_error_1.schemaError)(`unexpecet keys in object: ${keys}`, path) };
66
73
  }
@@ -1 +1 @@
1
- {"version":3,"file":"object.js","sourceRoot":"","sources":["../../../source/schema/schemas/object.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"object.js","sourceRoot":"","sources":["../../../source/schema/schemas/object.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { JsonPath } from "../../json-path";
2
+ import type { DefinedValidationOptions, ValidationTestResult } from '../schema.validator';
3
+ import { SchemaValidator, test, testAsync } from '../schema.validator';
4
+ import type { SchemaDefinition, SchemaInput, SchemaOptions, SchemaOutput } from '../types';
5
+ export declare type UnionSchemaInput<A extends SchemaDefinition, B extends SchemaDefinition[]> = SchemaInput<A> | SchemaInput<B[number]>;
6
+ export declare type UnionSchemaOutput<A extends SchemaDefinition, B extends SchemaDefinition[]> = SchemaOutput<A> | SchemaOutput<B[number]>;
7
+ export declare type UnionSchemaDefinition<A extends SchemaDefinition, B extends SchemaDefinition[]> = SchemaDefinition<'union', UnionSchemaInput<A, B>, UnionSchemaOutput<A, B>> & {
8
+ schemas: [A, ...B];
9
+ };
10
+ export declare class UnionSchemaValidator<A extends SchemaDefinition, B extends SchemaDefinition[]> extends SchemaValidator<UnionSchemaDefinition<A, B>> {
11
+ private readonly innerSchemas;
12
+ private readonly innerSchemaTypesString;
13
+ constructor(innerSchemas: [SchemaValidator<A>, ...SchemaValidator<B[number]>[]], schema: UnionSchemaDefinition<A, B>);
14
+ [test](value: unknown, options: DefinedValidationOptions, path: JsonPath): ValidationTestResult<UnionSchemaOutput<A, B>>;
15
+ protected [testAsync](value: unknown, options: DefinedValidationOptions, path: JsonPath): Promise<ValidationTestResult<UnionSchemaOutput<A, B>>>;
16
+ }
17
+ export declare function union<A extends SchemaValidator, B extends SchemaValidator[]>(schemas: [A, ...B], options?: SchemaOptions<UnionSchemaDefinition<A['schema'], B[number]['schema'][]>, 'schemas'>): UnionSchemaValidator<A['schema'], B[number]['schema'][]>;
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.union = exports.UnionSchemaValidator = void 0;
4
+ const schema_error_1 = require("../schema.error");
5
+ const schema_validator_1 = require("../schema.validator");
6
+ const types_1 = require("../types");
7
+ class UnionSchemaValidator extends schema_validator_1.SchemaValidator {
8
+ constructor(innerSchemas, schema) {
9
+ super(schema);
10
+ this.innerSchemas = innerSchemas;
11
+ this.innerSchemaTypesString = this.innerSchemas.map((innerSchema) => innerSchema.schema.type).join(', ');
12
+ }
13
+ [schema_validator_1.test](value, options, path) {
14
+ for (const schema of this.innerSchemas) {
15
+ const result = schema.test(value, options);
16
+ if (result.valid) {
17
+ return result;
18
+ }
19
+ }
20
+ return { valid: false, error: new schema_error_1.SchemaError(`Value did not match any of the allowed schemas (${this.innerSchemaTypesString}).`, { path }) };
21
+ }
22
+ async [schema_validator_1.testAsync](value, options, path) {
23
+ for (const schema of this.innerSchemas) {
24
+ const result = await schema.testAsync(value, options);
25
+ if (result.valid) {
26
+ return result;
27
+ }
28
+ }
29
+ return { valid: false, error: new schema_error_1.SchemaError(`Value did not match any of the allowed schemas (${this.innerSchemaTypesString}).`, { path }) };
30
+ }
31
+ }
32
+ exports.UnionSchemaValidator = UnionSchemaValidator;
33
+ function union(schemas, options) {
34
+ const schema = (0, types_1.schemaHelper)(Object.assign({ type: 'union', schemas: schemas.map((innerSchema) => innerSchema.schema) }, options));
35
+ return new UnionSchemaValidator(schemas, schema);
36
+ }
37
+ exports.union = union;
38
+ //# sourceMappingURL=union.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"union.js","sourceRoot":"","sources":["../../../source/schema/schemas/union.ts"],"names":[],"mappings":";;;AACA,kDAA8C;AAE9C,0DAAuE;AAEvE,oCAAwC;AASxC,MAAa,oBAA+E,SAAQ,kCAA4C;IAI9I,YAAY,YAAmE,EAAE,MAAmC;QAClH,KAAK,CAAC,MAAM,CAAC,CAAC;QAEd,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3G,CAAC;IAED,CAAC,uBAAI,CAAC,CAAC,KAAc,EAAE,OAAiC,EAAE,IAAc;QACtE,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,YAAY,EAAE;YACtC,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,KAA0B,EAAE,OAAO,CAAC,CAAC;YAEhE,IAAI,MAAM,CAAC,KAAK,EAAE;gBAChB,OAAO,MAAM,CAAC;aACf;SACF;QAED,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,0BAAW,CAAC,mDAAmD,IAAI,CAAC,sBAAsB,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IAChJ,CAAC;IAES,KAAK,CAAC,CAAC,4BAAS,CAAC,CAAC,KAAc,EAAE,OAAiC,EAAE,IAAc;QAC3F,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,YAAY,EAAE;YACtC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,KAA0B,EAAE,OAAO,CAAC,CAAC;YAE3E,IAAI,MAAM,CAAC,KAAK,EAAE;gBAChB,OAAO,MAAM,CAAC;aACf;SACF;QAED,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,0BAAW,CAAC,mDAAmD,IAAI,CAAC,sBAAsB,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IAChJ,CAAC;CACF;AAlCD,oDAkCC;AAED,SAAgB,KAAK,CAAyD,OAAkB,EAAE,OAA6F;IAC7L,MAAM,MAAM,GAAG,IAAA,oBAAY,kBACzB,IAAI,EAAE,OAAO,EACb,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,CAAuC,IAC5F,OAAO,EACV,CAAC;IAEH,OAAO,IAAI,oBAAoB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AACnD,CAAC;AARD,sBAQC"}