@tstdl/base 0.71.87 → 0.78.0-beta1
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/.eslintrc.js +2 -4
- package/api/client/client.js +2 -12
- package/api/client/client.js.map +1 -1
- package/api/default-error-handlers.d.ts +0 -4
- package/api/default-error-handlers.js +1 -6
- package/api/default-error-handlers.js.map +1 -1
- package/api/server/error-handler.js +2 -2
- package/api/server/error-handler.js.map +1 -1
- package/api/server/gateway.js +12 -18
- package/api/server/gateway.js.map +1 -1
- package/api/server/module.d.ts +0 -4
- package/api/server/module.js +1 -12
- package/api/server/module.js.map +1 -1
- package/api/types.d.ts +8 -32
- package/api/types.js.map +1 -1
- package/container/container.js +2 -2
- package/container/container.js.map +1 -1
- package/data-structures/index.d.ts +1 -0
- package/data-structures/index.js +1 -0
- package/data-structures/index.js.map +1 -1
- package/data-structures/iterable-weak-map.d.ts +29 -0
- package/data-structures/iterable-weak-map.js +128 -0
- package/data-structures/iterable-weak-map.js.map +1 -0
- package/data-structures/multi-key-map.d.ts +12 -1
- package/data-structures/multi-key-map.js +22 -11
- package/data-structures/multi-key-map.js.map +1 -1
- package/error/custom.error.d.ts +3 -1
- package/error/custom.error.js +16 -7
- package/error/custom.error.js.map +1 -1
- package/examples/api/basic-overview.js +16 -8
- package/examples/api/basic-overview.js.map +1 -1
- package/http/http.error.d.ts +4 -2
- package/http/http.error.js +6 -0
- package/http/http.error.js.map +1 -1
- package/image-service/image-service.d.ts +32 -65
- package/image-service/image-service.js +73 -15
- package/image-service/image-service.js.map +1 -1
- package/json-path/json-path.d.ts +8 -3
- package/json-path/json-path.js +24 -7
- package/json-path/json-path.js.map +1 -1
- package/logger/console/logger.js +2 -2
- package/logger/console/logger.js.map +1 -1
- package/mail/mail.service.js +2 -2
- package/mail/mail.service.js.map +1 -1
- package/module/modules/index.d.ts +0 -1
- package/module/modules/index.js +0 -1
- package/module/modules/index.js.map +1 -1
- package/openid-connect/oidc-configuration.service.js +7 -7
- package/openid-connect/oidc-configuration.service.js.map +1 -1
- package/openid-connect/oidc.service.js +7 -7
- package/openid-connect/oidc.service.js.map +1 -1
- package/package.json +3 -4
- package/process-shutdown.js +3 -2
- package/process-shutdown.js.map +1 -1
- package/reflection/decorators.js +1 -0
- package/reflection/decorators.js.map +1 -1
- package/reflection/reflection-data-map.d.ts +10 -0
- package/reflection/reflection-data-map.js +40 -0
- package/reflection/reflection-data-map.js.map +1 -0
- package/reflection/registry.d.ts +7 -7
- package/reflection/registry.js +7 -6
- package/reflection/registry.js.map +1 -1
- package/reflection/types.d.ts +1 -0
- package/reflection/utils.d.ts +6 -3
- package/reflection/utils.js +9 -35
- package/reflection/utils.js.map +1 -1
- package/schema/array-constraints/index.d.ts +2 -0
- package/{old-api/validation/validators → schema/array-constraints}/index.js +2 -1
- package/schema/array-constraints/index.js.map +1 -0
- package/schema/array-constraints/maximum-length.d.ts +11 -0
- package/schema/array-constraints/maximum-length.js +26 -0
- package/schema/array-constraints/maximum-length.js.map +1 -0
- package/schema/array-constraints/minimum-length.d.ts +11 -0
- package/schema/array-constraints/minimum-length.js +26 -0
- package/schema/array-constraints/minimum-length.js.map +1 -0
- package/schema/coercers/boolean.coercer.d.ts +9 -0
- package/schema/coercers/boolean.coercer.js +35 -0
- package/schema/coercers/boolean.coercer.js.map +1 -0
- package/schema/coercers/date.coercer.d.ts +9 -0
- package/schema/coercers/date.coercer.js +24 -0
- package/schema/coercers/date.coercer.js.map +1 -0
- package/schema/coercers/default-value.coercer.d.ts +9 -0
- package/schema/coercers/default-value.coercer.js +16 -0
- package/schema/coercers/default-value.coercer.js.map +1 -0
- package/schema/coercers/index.d.ts +7 -0
- package/schema/coercers/index.js +24 -0
- package/schema/coercers/index.js.map +1 -0
- package/schema/coercers/number.coercer.d.ts +9 -0
- package/schema/coercers/number.coercer.js +22 -0
- package/schema/coercers/number.coercer.js.map +1 -0
- package/schema/coercers/regexp.coercer.d.ts +11 -0
- package/schema/coercers/regexp.coercer.js +24 -0
- package/schema/coercers/regexp.coercer.js.map +1 -0
- package/schema/coercers/string.coercer.d.ts +9 -0
- package/schema/coercers/string.coercer.js +22 -0
- package/schema/coercers/string.coercer.js.map +1 -0
- package/schema/coercers/uint8-array.coercer.d.ts +9 -0
- package/schema/coercers/uint8-array.coercer.js +31 -0
- package/schema/coercers/uint8-array.coercer.js.map +1 -0
- package/schema/constraints/enumeration.d.ts +13 -0
- package/schema/constraints/enumeration.js +29 -0
- package/schema/constraints/enumeration.js.map +1 -0
- package/schema/constraints/generic.d.ts +22 -0
- package/schema/constraints/generic.js +32 -0
- package/schema/constraints/generic.js.map +1 -0
- package/schema/constraints/index.d.ts +12 -0
- package/schema/constraints/index.js +29 -0
- package/schema/constraints/index.js.map +1 -0
- package/schema/constraints/integer.d.ts +12 -0
- package/schema/constraints/integer.js +27 -0
- package/schema/constraints/integer.js.map +1 -0
- package/schema/constraints/length.d.ts +6 -0
- package/schema/constraints/length.js +20 -0
- package/schema/constraints/length.js.map +1 -0
- package/schema/constraints/literal.d.ts +10 -0
- package/schema/constraints/literal.js +26 -0
- package/schema/constraints/literal.js.map +1 -0
- package/schema/constraints/maximum-date.d.ts +12 -0
- package/schema/constraints/maximum-date.js +29 -0
- package/schema/constraints/maximum-date.js.map +1 -0
- package/schema/constraints/maximum-length.d.ts +12 -0
- package/schema/constraints/maximum-length.js +29 -0
- package/schema/constraints/maximum-length.js.map +1 -0
- package/schema/constraints/maximum.d.ts +12 -0
- package/schema/constraints/maximum.js +27 -0
- package/schema/constraints/maximum.js.map +1 -0
- package/schema/constraints/minimum-date.d.ts +12 -0
- package/schema/constraints/minimum-date.js +29 -0
- package/schema/constraints/minimum-date.js.map +1 -0
- package/schema/constraints/minimum-length.d.ts +12 -0
- package/schema/constraints/minimum-length.js +29 -0
- package/schema/constraints/minimum-length.js.map +1 -0
- package/schema/constraints/minimum.d.ts +12 -0
- package/schema/constraints/minimum.js +27 -0
- package/schema/constraints/minimum.js.map +1 -0
- package/schema/constraints/pattern.d.ts +13 -0
- package/schema/constraints/pattern.js +28 -0
- package/schema/constraints/pattern.js.map +1 -0
- package/schema/decorators/array.d.ts +4 -0
- package/schema/decorators/array.js +11 -0
- package/schema/decorators/array.js.map +1 -0
- package/schema/decorators/coerce.d.ts +2 -0
- package/schema/decorators/coerce.js +10 -0
- package/schema/decorators/coerce.js.map +1 -0
- package/schema/decorators/defaulted.d.ts +3 -0
- package/schema/decorators/defaulted.js +11 -0
- package/schema/decorators/defaulted.js.map +1 -0
- package/schema/decorators/index.d.ts +8 -0
- package/{old-api → schema/decorators}/index.js +8 -3
- package/schema/decorators/index.js.map +1 -0
- package/schema/decorators/nullable.d.ts +2 -0
- package/schema/decorators/nullable.js +10 -0
- package/schema/decorators/nullable.js.map +1 -0
- package/schema/decorators/optional.d.ts +2 -0
- package/schema/decorators/optional.js +10 -0
- package/schema/decorators/optional.js.map +1 -0
- package/schema/decorators/property.d.ts +6 -0
- package/schema/decorators/property.js +19 -0
- package/schema/decorators/property.js.map +1 -0
- package/schema/decorators/type.d.ts +3 -0
- package/schema/decorators/type.js +10 -0
- package/schema/decorators/type.js.map +1 -0
- package/schema/decorators/types.d.ts +18 -0
- package/schema/decorators/types.js +3 -0
- package/schema/decorators/types.js.map +1 -0
- package/schema/decorators/utils.d.ts +10 -0
- package/schema/decorators/utils.js +59 -0
- package/schema/decorators/utils.js.map +1 -0
- package/schema/index.d.ts +7 -1
- package/schema/index.js +7 -1
- package/schema/index.js.map +1 -1
- package/schema/schema.d.ts +19 -0
- package/schema/schema.error.d.ts +13 -7
- package/schema/schema.error.js +45 -13
- package/schema/schema.error.js.map +1 -1
- package/schema/schema.js +286 -0
- package/schema/schema.js.map +1 -0
- package/schema/schemas/any.d.ts +4 -8
- package/schema/schemas/any.js +9 -14
- package/schema/schemas/any.js.map +1 -1
- package/schema/schemas/array.d.ts +7 -13
- package/schema/schemas/array.js +14 -43
- package/schema/schemas/array.js.map +1 -1
- package/schema/schemas/assign.d.ts +8 -0
- package/schema/schemas/assign.js +28 -0
- package/schema/schemas/assign.js.map +1 -0
- package/schema/schemas/boolean.d.ts +5 -9
- package/schema/schemas/boolean.js +11 -38
- package/schema/schemas/boolean.js.map +1 -1
- package/schema/schemas/constraint.d.ts +4 -0
- package/schema/schemas/constraint.js +14 -0
- package/schema/schemas/constraint.js.map +1 -0
- package/schema/schemas/date.d.ts +7 -11
- package/schema/schemas/date.js +18 -53
- package/schema/schemas/date.js.map +1 -1
- package/schema/schemas/defaulted.d.ts +2 -15
- package/schema/schemas/defaulted.js +7 -23
- package/schema/schemas/defaulted.js.map +1 -1
- package/schema/schemas/enumeration.d.ts +6 -18
- package/schema/schemas/enumeration.js +13 -50
- package/schema/schemas/enumeration.js.map +1 -1
- package/schema/schemas/exclude.d.ts +4 -0
- package/schema/schemas/exclude.js +17 -0
- package/schema/schemas/exclude.js.map +1 -0
- package/schema/schemas/index.d.ts +5 -6
- package/schema/schemas/index.js +5 -6
- package/schema/schemas/index.js.map +1 -1
- package/schema/schemas/instance.d.ts +2 -12
- package/schema/schemas/instance.js +4 -20
- package/schema/schemas/instance.js.map +1 -1
- package/schema/schemas/literal.d.ts +4 -11
- package/schema/schemas/literal.js +13 -18
- package/schema/schemas/literal.js.map +1 -1
- package/schema/schemas/nullable.d.ts +3 -13
- package/schema/schemas/nullable.js +3 -26
- package/schema/schemas/nullable.js.map +1 -1
- package/schema/schemas/number.d.ts +7 -14
- package/schema/schemas/number.js +23 -44
- package/schema/schemas/number.js.map +1 -1
- package/schema/schemas/object.d.ts +6 -34
- package/schema/schemas/object.js +8 -112
- package/schema/schemas/object.js.map +1 -1
- package/schema/schemas/optional.d.ts +3 -13
- package/schema/schemas/optional.js +3 -26
- package/schema/schemas/optional.js.map +1 -1
- package/schema/schemas/pick.d.ts +4 -0
- package/schema/schemas/pick.js +17 -0
- package/schema/schemas/pick.js.map +1 -0
- package/schema/schemas/readable-stream.d.ts +4 -9
- package/schema/schemas/readable-stream.js +9 -15
- package/schema/schemas/readable-stream.js.map +1 -1
- package/schema/schemas/record.d.ts +4 -0
- package/schema/schemas/record.js +14 -0
- package/schema/schemas/record.js.map +1 -0
- package/schema/schemas/regexp.d.ts +6 -9
- package/schema/schemas/regexp.js +10 -27
- package/schema/schemas/regexp.js.map +1 -1
- package/schema/schemas/string.d.ts +9 -13
- package/schema/schemas/string.js +34 -46
- package/schema/schemas/string.js.map +1 -1
- package/schema/schemas/transform.d.ts +4 -16
- package/schema/schemas/transform.js +7 -36
- package/schema/schemas/transform.js.map +1 -1
- package/schema/schemas/uint8-array.d.ts +8 -11
- package/schema/schemas/uint8-array.js +20 -32
- package/schema/schemas/uint8-array.js.map +1 -1
- package/schema/schemas/union.d.ts +5 -17
- package/schema/schemas/union.js +9 -35
- package/schema/schemas/union.js.map +1 -1
- package/schema/schemas/unknown.d.ts +4 -8
- package/schema/schemas/unknown.js +9 -14
- package/schema/schemas/unknown.js.map +1 -1
- package/schema/transformers/generic.d.ts +13 -0
- package/schema/transformers/generic.js +28 -0
- package/schema/transformers/generic.js.map +1 -0
- package/schema/transformers/index.d.ts +3 -0
- package/{old-api/endpoints → schema/transformers}/index.js +3 -1
- package/schema/transformers/index.js.map +1 -0
- package/schema/transformers/lowercase.d.ts +9 -0
- package/schema/transformers/lowercase.js +22 -0
- package/schema/transformers/lowercase.js.map +1 -0
- package/schema/transformers/trim.d.ts +9 -0
- package/schema/transformers/trim.js +22 -0
- package/schema/transformers/trim.js.map +1 -0
- package/schema/transformers/uppercase.d.ts +9 -0
- package/schema/transformers/uppercase.js +22 -0
- package/schema/transformers/uppercase.js.map +1 -0
- package/schema/types.d.ts +135 -15
- package/schema/types.js +39 -3
- package/schema/types.js.map +1 -1
- package/schema/utils/index.d.ts +2 -0
- package/{old-api/validation → schema/utils}/index.js +2 -1
- package/schema/utils/index.js.map +1 -0
- package/schema/utils/schema.d.ts +12 -0
- package/schema/utils/schema.js +78 -0
- package/schema/utils/schema.js.map +1 -0
- package/schema/utils/value-type.d.ts +4 -0
- package/schema/utils/value-type.js +35 -0
- package/schema/utils/value-type.js.map +1 -0
- package/templates/providers/file-template.provider.base.d.ts +1 -1
- package/templates/providers/file-template.provider.base.js +3 -2
- package/templates/providers/file-template.provider.base.js.map +1 -1
- package/types.d.ts +5 -1
- package/utils/clone.d.ts +1 -0
- package/utils/clone.js +45 -0
- package/utils/clone.js.map +1 -0
- package/utils/enum.d.ts +1 -1
- package/utils/format-error.d.ts +20 -0
- package/utils/format-error.js +42 -0
- package/utils/format-error.js.map +1 -0
- package/utils/function/memoize.d.ts +6 -2
- package/utils/function/memoize.js +28 -20
- package/utils/function/memoize.js.map +1 -1
- package/utils/helpers.d.ts +1 -32
- package/utils/helpers.js +3 -158
- package/utils/helpers.js.map +1 -1
- package/utils/index.d.ts +3 -0
- package/utils/index.js +3 -0
- package/utils/index.js.map +1 -1
- package/utils/merge.d.ts +5 -0
- package/utils/merge.js +32 -0
- package/utils/merge.js.map +1 -0
- package/utils/object/decycle.d.ts +16 -0
- package/utils/object/decycle.js +81 -0
- package/utils/object/decycle.js.map +1 -0
- package/utils/object/dereference.js.map +1 -1
- package/utils/object/index.d.ts +1 -0
- package/utils/object/index.js +1 -0
- package/utils/object/index.js.map +1 -1
- package/utils/object/object.d.ts +4 -0
- package/utils/object/object.js +9 -2
- package/utils/object/object.js.map +1 -1
- package/utils/patterns.d.ts +1 -1
- package/utils/patterns.js +3 -3
- package/utils/patterns.js.map +1 -1
- package/utils/timing.d.ts +0 -8
- package/utils/timing.js.map +1 -1
- package/utils/type-guards.d.ts +6 -0
- package/utils/type-guards.js +16 -4
- package/utils/type-guards.js.map +1 -1
- package/instance-provider.d.ts +0 -17
- package/instance-provider.js +0 -55
- package/instance-provider.js.map +0 -1
- package/module/modules/old-web-server.module.d.ts +0 -22
- package/module/modules/old-web-server.module.js +0 -37
- package/module/modules/old-web-server.module.js.map +0 -1
- package/old-api/endpoint.d.ts +0 -5
- package/old-api/endpoint.js +0 -20
- package/old-api/endpoint.js.map +0 -1
- package/old-api/endpoints/echo.endpoint.d.ts +0 -2
- package/old-api/endpoints/echo.endpoint.js +0 -6
- package/old-api/endpoints/echo.endpoint.js.map +0 -1
- package/old-api/endpoints/index.d.ts +0 -1
- package/old-api/endpoints/index.js.map +0 -1
- package/old-api/http-api.d.ts +0 -63
- package/old-api/http-api.js +0 -269
- package/old-api/http-api.js.map +0 -1
- package/old-api/index.d.ts +0 -3
- package/old-api/index.js.map +0 -1
- package/old-api/validation/index.d.ts +0 -1
- package/old-api/validation/index.js.map +0 -1
- package/old-api/validation/types.d.ts +0 -6
- package/old-api/validation/types.js +0 -6
- package/old-api/validation/types.js.map +0 -1
- package/old-api/validation/validators/index.d.ts +0 -1
- package/old-api/validation/validators/index.js.map +0 -1
- package/old-api/validation/validators/noop.d.ts +0 -2
- package/old-api/validation/validators/noop.js +0 -8
- package/old-api/validation/validators/noop.js.map +0 -1
- package/old-api/validation/validators/superstruct.d.ts +0 -14
- package/old-api/validation/validators/superstruct.js +0 -66
- package/old-api/validation/validators/superstruct.js.map +0 -1
- package/old-api/validation/validators/yup.d.ts +0 -7
- package/old-api/validation/validators/yup.js +0 -60
- package/old-api/validation/validators/yup.js.map +0 -1
- package/schema/schema.validator.d.ts +0 -40
- package/schema/schema.validator.js +0 -75
- package/schema/schema.validator.js.map +0 -1
- package/schema/schemas/async-iterable.d.ts +0 -13
- package/schema/schemas/async-iterable.js +0 -40
- package/schema/schemas/async-iterable.js.map +0 -1
- package/schema/schemas/iterable.d.ts +0 -13
- package/schema/schemas/iterable.js +0 -40
- package/schema/schemas/iterable.js.map +0 -1
- package/schema/schemas/never.d.ts +0 -9
- package/schema/schemas/never.js +0 -22
- package/schema/schemas/never.js.map +0 -1
- package/schema/schemas/preprocess.d.ts +0 -16
- package/schema/schemas/preprocess.js +0 -35
- package/schema/schemas/preprocess.js.map +0 -1
- package/schema/schemas/refine.d.ts +0 -24
- package/schema/schemas/refine.js +0 -52
- package/schema/schemas/refine.js.map +0 -1
package/schema/schema.js
ADDED
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Schema = exports.getSchemaFromReflection = void 0;
|
|
4
|
+
const json_path_1 = require("../json-path");
|
|
5
|
+
const reflection_1 = require("../reflection");
|
|
6
|
+
const array_1 = require("../utils/array/array");
|
|
7
|
+
const function_1 = require("../utils/function");
|
|
8
|
+
const noop_1 = require("../utils/noop");
|
|
9
|
+
const object_1 = require("../utils/object/object");
|
|
10
|
+
const set_1 = require("../utils/set");
|
|
11
|
+
const type_guards_1 = require("../utils/type-guards");
|
|
12
|
+
const boolean_coercer_1 = require("./coercers/boolean.coercer");
|
|
13
|
+
const date_coercer_1 = require("./coercers/date.coercer");
|
|
14
|
+
const number_coercer_1 = require("./coercers/number.coercer");
|
|
15
|
+
const regexp_coercer_1 = require("./coercers/regexp.coercer");
|
|
16
|
+
const string_coercer_1 = require("./coercers/string.coercer");
|
|
17
|
+
const uint8_array_coercer_1 = require("./coercers/uint8-array.coercer");
|
|
18
|
+
const schema_error_1 = require("./schema.error");
|
|
19
|
+
const types_1 = require("./types");
|
|
20
|
+
const utils_1 = require("./utils");
|
|
21
|
+
exports.getSchemaFromReflection = (0, function_1.memoizeSingle)(_getObjectSchemaFromReflection);
|
|
22
|
+
const defaultCoercers = new Map();
|
|
23
|
+
let initialize = () => {
|
|
24
|
+
exports.Schema.registerDefaultCoercer(number_coercer_1.numberCoercer);
|
|
25
|
+
exports.Schema.registerDefaultCoercer(string_coercer_1.stringCoercer);
|
|
26
|
+
exports.Schema.registerDefaultCoercer(boolean_coercer_1.booleanCoercer);
|
|
27
|
+
exports.Schema.registerDefaultCoercer(date_coercer_1.dateCoercer);
|
|
28
|
+
exports.Schema.registerDefaultCoercer(regexp_coercer_1.regExpCoercer);
|
|
29
|
+
exports.Schema.registerDefaultCoercer(uint8_array_coercer_1.uint8ArrayCoercer);
|
|
30
|
+
initialize = noop_1.noop;
|
|
31
|
+
};
|
|
32
|
+
// eslint-disable-next-line @typescript-eslint/no-redeclare, @typescript-eslint/naming-convention
|
|
33
|
+
exports.Schema = {
|
|
34
|
+
registerDefaultCoercer(coercer) {
|
|
35
|
+
for (const sourceType of (0, array_1.toArray)(coercer.sourceType)) {
|
|
36
|
+
if (!defaultCoercers.has(sourceType)) {
|
|
37
|
+
defaultCoercers.set(sourceType, []);
|
|
38
|
+
}
|
|
39
|
+
defaultCoercers.get(sourceType).push(coercer);
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
test(schema, value, options, path = json_path_1.JsonPath.ROOT) {
|
|
43
|
+
const result = this.testWithFastError(schema, value, options, path);
|
|
44
|
+
if (result.success) {
|
|
45
|
+
return result;
|
|
46
|
+
}
|
|
47
|
+
return { success: false, error: new schema_error_1.SchemaError(result.error.message, { ...result.error, fast: false }, result.error.cause) };
|
|
48
|
+
},
|
|
49
|
+
validate(schema, value, options) {
|
|
50
|
+
const result = this.test(schema, value, options);
|
|
51
|
+
return result.success;
|
|
52
|
+
},
|
|
53
|
+
parse(schema, value, options) {
|
|
54
|
+
const result = this.test(schema, value, options);
|
|
55
|
+
if (result.success) {
|
|
56
|
+
return result.value;
|
|
57
|
+
}
|
|
58
|
+
throw result.error;
|
|
59
|
+
},
|
|
60
|
+
/**
|
|
61
|
+
* disables stack traces for errors
|
|
62
|
+
* @deprecated for internal use only
|
|
63
|
+
*/
|
|
64
|
+
testWithFastError(schema, value, options, path = json_path_1.JsonPath.ROOT) {
|
|
65
|
+
initialize();
|
|
66
|
+
if ((0, type_guards_1.isFunction)(schema) || (0, types_1.isObjectSchema)(schema)) {
|
|
67
|
+
return testObject(schema, value, options, path);
|
|
68
|
+
}
|
|
69
|
+
return testValue(schema, value, options, path);
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
// eslint-disable-next-line complexity
|
|
73
|
+
function testObject(schemaOrType, value, options = {}, path = json_path_1.JsonPath.ROOT) {
|
|
74
|
+
if ((0, type_guards_1.isFunction)(schemaOrType) && (value instanceof schemaOrType)) {
|
|
75
|
+
return { success: true, value: value };
|
|
76
|
+
}
|
|
77
|
+
if (!(value instanceof Object) && !(0, type_guards_1.isObject)(value)) {
|
|
78
|
+
const expected = (0, type_guards_1.isFunction)(schemaOrType) ? schemaOrType : Object;
|
|
79
|
+
return { success: false, error: schema_error_1.SchemaError.expectedButGot(expected, (0, utils_1.getValueType)(value), path) };
|
|
80
|
+
}
|
|
81
|
+
const unnormalizedSchema = (0, type_guards_1.isFunction)(schemaOrType) ? (0, exports.getSchemaFromReflection)(schemaOrType) : schemaOrType;
|
|
82
|
+
if ((0, type_guards_1.isNull)(unnormalizedSchema)) {
|
|
83
|
+
return { success: false, error: schema_error_1.SchemaError.expectedButGot(schemaOrType, (0, utils_1.getValueType)(value), path) };
|
|
84
|
+
}
|
|
85
|
+
const schema = (0, utils_1.normalizeSchema)(unnormalizedSchema);
|
|
86
|
+
const mask = schema.mask ?? options.mask ?? false;
|
|
87
|
+
const resultValue = (0, type_guards_1.isDefined)(schema.factory?.type) ? new schema.factory.type() : {};
|
|
88
|
+
const schemaPropertyKeys = (0, object_1.objectKeys)(schema.properties);
|
|
89
|
+
const valuePropertyKeys = (0, object_1.objectKeys)(value);
|
|
90
|
+
const unknownValuePropertyKeys = (0, set_1.differenceSets)(new Set(valuePropertyKeys), new Set(schemaPropertyKeys));
|
|
91
|
+
if ((unknownValuePropertyKeys.length > 0) && !(mask || (schema.allowUnknownProperties.size > 0))) {
|
|
92
|
+
return { success: false, error: new schema_error_1.SchemaError('Unknown property', { path: path.add(unknownValuePropertyKeys[0]) }) };
|
|
93
|
+
}
|
|
94
|
+
for (const key of schemaPropertyKeys) {
|
|
95
|
+
const propertyResult = exports.Schema.testWithFastError(schema.properties[key], value[key], options, path.add(key));
|
|
96
|
+
if (!propertyResult.success) {
|
|
97
|
+
return propertyResult;
|
|
98
|
+
}
|
|
99
|
+
resultValue[key] = propertyResult.value;
|
|
100
|
+
}
|
|
101
|
+
if (schema.allowUnknownProperties.size > 0) {
|
|
102
|
+
for (const key of unknownValuePropertyKeys) {
|
|
103
|
+
const errors = [];
|
|
104
|
+
for (const allowedSchema of schema.allowUnknownProperties) {
|
|
105
|
+
const propertyResult = exports.Schema.testWithFastError(allowedSchema, value[key], options, path.add(key));
|
|
106
|
+
if (!propertyResult.success && !mask) {
|
|
107
|
+
errors.push(propertyResult.error);
|
|
108
|
+
continue;
|
|
109
|
+
}
|
|
110
|
+
resultValue[key] = propertyResult.value;
|
|
111
|
+
break;
|
|
112
|
+
}
|
|
113
|
+
if (errors.length > 0) {
|
|
114
|
+
return { success: false, error: (errors.length == 1) ? errors[0] : new schema_error_1.SchemaError('Value did not match any allowed schemas.', { inner: errors, path }) };
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
const testResultValue = (0, type_guards_1.isUndefined)(schema.factory) ? resultValue : (0, type_guards_1.isDefined)(schema.factory.type) ? resultValue : schema.factory.builder(resultValue);
|
|
119
|
+
return { success: true, value: testResultValue };
|
|
120
|
+
}
|
|
121
|
+
// eslint-disable-next-line max-lines-per-function, max-statements, complexity
|
|
122
|
+
function testValue(schema, value, options = {}, path = json_path_1.JsonPath.ROOT) {
|
|
123
|
+
const valueSchema = (0, utils_1.normalizeValueSchema)(schema);
|
|
124
|
+
if (valueSchema.optional && (0, type_guards_1.isUndefined)(value)) {
|
|
125
|
+
return { success: true, value: value };
|
|
126
|
+
}
|
|
127
|
+
if (valueSchema.nullable && (0, type_guards_1.isNull)(value)) {
|
|
128
|
+
return { success: true, value: value };
|
|
129
|
+
}
|
|
130
|
+
const context = {
|
|
131
|
+
schema: valueSchema,
|
|
132
|
+
options
|
|
133
|
+
};
|
|
134
|
+
/** handle arrays */
|
|
135
|
+
if (valueSchema.array) {
|
|
136
|
+
if (!(0, type_guards_1.isArray)(value)) {
|
|
137
|
+
throw schema_error_1.SchemaError.expectedButGot(Array, (0, utils_1.getValueType)(value), path);
|
|
138
|
+
}
|
|
139
|
+
for (const arrayConstraint of valueSchema.arrayConstraints) {
|
|
140
|
+
const result = arrayConstraint.validate(value, path, context);
|
|
141
|
+
if (!result.success) {
|
|
142
|
+
return { success: false, error: result.error };
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
const itemSchema = (0, utils_1.getArrayItemSchema)(schema);
|
|
146
|
+
const validatedItems = [];
|
|
147
|
+
for (let i = 0; i < value.length; i++) {
|
|
148
|
+
const result = testValue(itemSchema, value[i], options, path.add(i));
|
|
149
|
+
if (!result.success) {
|
|
150
|
+
return result;
|
|
151
|
+
}
|
|
152
|
+
validatedItems.push(result.value);
|
|
153
|
+
}
|
|
154
|
+
return { success: true, value: validatedItems };
|
|
155
|
+
}
|
|
156
|
+
let valueType = (0, utils_1.getValueType)(value);
|
|
157
|
+
let validType = isValidType(valueSchema, valueType);
|
|
158
|
+
let resultValue = value;
|
|
159
|
+
/** try to coerce with custom coercers */
|
|
160
|
+
if (!validType) {
|
|
161
|
+
const coercers = valueSchema.coercers.get(valueType);
|
|
162
|
+
if ((0, type_guards_1.isDefined)(coercers)) {
|
|
163
|
+
const errors = [];
|
|
164
|
+
for (const coercer of coercers) {
|
|
165
|
+
const coerceResult = coercer.coerce(resultValue, path, context);
|
|
166
|
+
if (!coerceResult.success) {
|
|
167
|
+
errors.push(coerceResult.error);
|
|
168
|
+
continue;
|
|
169
|
+
}
|
|
170
|
+
resultValue = coerceResult.value;
|
|
171
|
+
valueType = (0, utils_1.getValueType)(resultValue);
|
|
172
|
+
validType = isValidType(valueSchema, valueType);
|
|
173
|
+
break;
|
|
174
|
+
}
|
|
175
|
+
if ((errors.length > 0)) {
|
|
176
|
+
return { success: false, error: (errors.length == 1) ? errors[0] : new schema_error_1.SchemaError('Value could not be coerced.', { inner: errors, path }) };
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
/** try to coerce with default coercers if enabled */
|
|
181
|
+
if (!validType && (valueSchema.coerce || options.coerce == true)) {
|
|
182
|
+
const coercers = defaultCoercers.get(valueType);
|
|
183
|
+
if ((0, type_guards_1.isDefined)(coercers)) {
|
|
184
|
+
const errors = [];
|
|
185
|
+
for (const coercer of coercers) {
|
|
186
|
+
const coerceResult = coercer.coerce(resultValue, path, context);
|
|
187
|
+
if (!coerceResult.success) {
|
|
188
|
+
errors.push(coerceResult.error);
|
|
189
|
+
continue;
|
|
190
|
+
}
|
|
191
|
+
resultValue = coerceResult.value;
|
|
192
|
+
valueType = (0, utils_1.getValueType)(resultValue);
|
|
193
|
+
validType = isValidType(valueSchema, valueType);
|
|
194
|
+
break;
|
|
195
|
+
}
|
|
196
|
+
if ((errors.length > 0)) {
|
|
197
|
+
return { success: false, error: (errors.length == 1) ? errors[0] : new schema_error_1.SchemaError('Value could not be coerced.', { inner: errors, path }) };
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
/** check for sub-schemas */
|
|
202
|
+
if (!validType) {
|
|
203
|
+
const errors = [];
|
|
204
|
+
for (const type of valueSchema.type) {
|
|
205
|
+
if (types_1.primitiveValueTypesSet.has(type)) {
|
|
206
|
+
continue;
|
|
207
|
+
}
|
|
208
|
+
const result = exports.Schema.testWithFastError(type, resultValue, options, path);
|
|
209
|
+
if (!result.success) {
|
|
210
|
+
errors.push(result.error);
|
|
211
|
+
continue;
|
|
212
|
+
}
|
|
213
|
+
resultValue = result.value;
|
|
214
|
+
validType = true;
|
|
215
|
+
break;
|
|
216
|
+
}
|
|
217
|
+
if (!validType && (errors.length > 0)) {
|
|
218
|
+
return { success: false, error: (errors.length == 1) ? errors[0] : new schema_error_1.SchemaError('Value did not match any allowed schemas.', { inner: errors, path }) };
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
if (!validType) {
|
|
222
|
+
const expectedNames = [...valueSchema.type].map((exp) => ((0, type_guards_1.isString)(exp) ? exp : (0, utils_1.getValueTypeName)(exp)));
|
|
223
|
+
const expectedTypeString = expectedNames.length == 1
|
|
224
|
+
? expectedNames[0]
|
|
225
|
+
: `[${expectedNames.join(', ')}]`;
|
|
226
|
+
const expects = valueSchema.valueConstraints.map((constraint) => constraint.expects);
|
|
227
|
+
const expectsString = expects.length > 0 ? ` (${expects.join(', ')})` : '';
|
|
228
|
+
return { success: false, error: schema_error_1.SchemaError.expectedButGot(`${expectedTypeString}${expectsString}`, (0, utils_1.getValueType)(resultValue), path) };
|
|
229
|
+
}
|
|
230
|
+
if (valueSchema.transformers.length > 0) {
|
|
231
|
+
for (const transformer of valueSchema.transformers) {
|
|
232
|
+
resultValue = transformer.transform(resultValue, path, context);
|
|
233
|
+
}
|
|
234
|
+
valueType = (0, utils_1.getValueType)(resultValue);
|
|
235
|
+
validType = isValidType(valueSchema, valueType);
|
|
236
|
+
if (!validType) {
|
|
237
|
+
const typeString = (0, type_guards_1.isFunction)(valueType) ? valueType.name : valueType;
|
|
238
|
+
throw new Error(`Transformers resulted in invalid type (${typeString}).`);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
for (const constraint of valueSchema.valueConstraints) {
|
|
242
|
+
const result = constraint.validate(resultValue, path, context);
|
|
243
|
+
if (!result.success) {
|
|
244
|
+
return { success: false, error: result.error };
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
return { success: true, value: resultValue };
|
|
248
|
+
}
|
|
249
|
+
function isValidType(valueSchema, valueType) {
|
|
250
|
+
return valueSchema.type.has(valueType) || valueSchema.type.has('any');
|
|
251
|
+
}
|
|
252
|
+
function _getObjectSchemaFromReflection(type) {
|
|
253
|
+
const metadata = reflection_1.reflectionRegistry.getMetadata(type);
|
|
254
|
+
if (!metadata.registered) {
|
|
255
|
+
return null;
|
|
256
|
+
}
|
|
257
|
+
const typeData = metadata.data.tryGet('schema');
|
|
258
|
+
const properties = {};
|
|
259
|
+
for (const [key, propertyMetadata] of metadata.properties) {
|
|
260
|
+
const reflectionData = propertyMetadata.data.tryGet('schema');
|
|
261
|
+
const itemType = (0, type_guards_1.isDefined)(reflectionData?.type) ? (0, utils_1.maybeDeferredValueTypesToValueTypes)(reflectionData.type) : undefined;
|
|
262
|
+
const array = ((propertyMetadata.type == Array) && (itemType != Array)) || (reflectionData?.array == true);
|
|
263
|
+
if (array && ((0, type_guards_1.isUndefined)(itemType) || ((0, type_guards_1.isArray)(itemType) && (itemType.length == 0)))) {
|
|
264
|
+
throw new Error(`Item type missing on type ${type.name} at property "${String(key)}"`);
|
|
265
|
+
}
|
|
266
|
+
properties[key] = {
|
|
267
|
+
type: itemType ?? propertyMetadata.type,
|
|
268
|
+
array,
|
|
269
|
+
optional: reflectionData?.optional,
|
|
270
|
+
nullable: reflectionData?.nullable,
|
|
271
|
+
coerce: reflectionData?.coerce,
|
|
272
|
+
coercers: reflectionData?.coercers,
|
|
273
|
+
transformers: reflectionData?.transformers,
|
|
274
|
+
arrayConstraints: reflectionData?.arrayConstraints,
|
|
275
|
+
valueConstraints: reflectionData?.valueConstraints
|
|
276
|
+
};
|
|
277
|
+
}
|
|
278
|
+
const objectSchema = {
|
|
279
|
+
factory: (0, type_guards_1.isDefined)(typeData?.factory) ? { builder: typeData.factory } : { type },
|
|
280
|
+
properties,
|
|
281
|
+
mask: typeData?.mask,
|
|
282
|
+
allowUnknownProperties: typeData?.allowUnknownProperties
|
|
283
|
+
};
|
|
284
|
+
return objectSchema;
|
|
285
|
+
}
|
|
286
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../source/schema/schema.ts"],"names":[],"mappings":"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"}
|
package/schema/schemas/any.d.ts
CHANGED
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
export declare
|
|
5
|
-
export declare class AnySchemaValidator extends SchemaValidator<AnySchemaDefinition> {
|
|
6
|
-
[test](value: any): ValidationTestResult<any>;
|
|
7
|
-
}
|
|
8
|
-
export declare function any(options?: SchemaOptions<AnySchemaDefinition>): AnySchemaValidator;
|
|
1
|
+
import type { Decorator } from "../../reflection";
|
|
2
|
+
import type { ValueSchema } from '../types';
|
|
3
|
+
export declare function any(): ValueSchema<any>;
|
|
4
|
+
export declare function Any(): Decorator<'property' | 'accessor'>;
|
package/schema/schemas/any.js
CHANGED
|
@@ -1,20 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/* eslint-disable @typescript-eslint/naming-convention */
|
|
2
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
const
|
|
4
|
+
exports.Any = exports.any = void 0;
|
|
5
|
+
const decorators_1 = require("../decorators");
|
|
5
6
|
const types_1 = require("../types");
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
return { valid: true, value };
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
exports.AnySchemaValidator = AnySchemaValidator;
|
|
12
|
-
function any(options) {
|
|
13
|
-
const schema = (0, types_1.schemaHelper)({
|
|
14
|
-
type: 'any',
|
|
15
|
-
...options
|
|
16
|
-
});
|
|
17
|
-
return new AnySchemaValidator(schema);
|
|
7
|
+
function any() {
|
|
8
|
+
return (0, types_1.valueSchema)({ type: 'any' });
|
|
18
9
|
}
|
|
19
10
|
exports.any = any;
|
|
11
|
+
function Any() {
|
|
12
|
+
return (0, decorators_1.createSchemaPropertyDecoratorFromValueType)(any());
|
|
13
|
+
}
|
|
14
|
+
exports.Any = Any;
|
|
20
15
|
//# sourceMappingURL=any.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"any.js","sourceRoot":"","sources":["../../../source/schema/schemas/any.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"any.js","sourceRoot":"","sources":["../../../source/schema/schemas/any.ts"],"names":[],"mappings":";AAAA,yDAAyD;;;AAGzD,8CAA2E;AAE3E,oCAAuC;AAEvC,SAAgB,GAAG;IACjB,OAAO,IAAA,mBAAW,EAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AACtC,CAAC;AAFD,kBAEC;AAED,SAAgB,GAAG;IACjB,OAAO,IAAA,uDAA0C,EAAC,GAAG,EAAE,CAAC,CAAC;AAC3D,CAAC;AAFD,kBAEC"}
|
|
@@ -1,14 +1,8 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
import type { Coercible, MaybeDeferredValueTypes, ValueSchema } from '../types';
|
|
2
|
+
export declare type ArrayOptions = Coercible & {
|
|
3
|
+
/** minimum length */
|
|
4
|
+
minimumLength?: number;
|
|
5
|
+
/** maximum length */
|
|
6
|
+
maximumLength?: number;
|
|
7
7
|
};
|
|
8
|
-
export declare
|
|
9
|
-
private readonly innerValidator;
|
|
10
|
-
constructor(innerValidator: SchemaValidator<T>, schema: ArraySchemaDefinition<T>);
|
|
11
|
-
[test](value: unknown, options: DefinedValidationOptions, path: JsonPath): ValidationTestResult<SchemaOutput<ArraySchemaDefinition<T>>>;
|
|
12
|
-
[testAsync](value: unknown, options: DefinedValidationOptions, path: JsonPath): Promise<ValidationTestResult<SchemaOutput<ArraySchemaDefinition<T>>>>;
|
|
13
|
-
}
|
|
14
|
-
export declare function array<T extends SchemaDefinition>(innerValidator: SchemaValidator<T>, options?: SchemaOptions<ArraySchemaDefinition<T>, 'schema'>): ArraySchemaValidator<T>;
|
|
8
|
+
export declare function array<T>(innerValues: MaybeDeferredValueTypes<T>, options?: ArrayOptions): ValueSchema<T[]>;
|
package/schema/schemas/array.js
CHANGED
|
@@ -1,53 +1,24 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/* eslint-disable @typescript-eslint/naming-convention */
|
|
2
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.array =
|
|
4
|
+
exports.array = void 0;
|
|
4
5
|
const type_guards_1 = require("../../utils/type-guards");
|
|
5
|
-
const
|
|
6
|
-
const schema_error_1 = require("../schema.error");
|
|
7
|
-
const schema_validator_1 = require("../schema.validator");
|
|
6
|
+
const array_constraints_1 = require("../array-constraints");
|
|
8
7
|
const types_1 = require("../types");
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
8
|
+
function array(innerValues, options = {}) {
|
|
9
|
+
const arrayConstraints = [];
|
|
10
|
+
if ((0, type_guards_1.isDefined)(options.minimumLength)) {
|
|
11
|
+
arrayConstraints.push(new array_constraints_1.ArrayMaximumLengthConstraint(options.minimumLength));
|
|
13
12
|
}
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
return { valid: false, error: schema_error_1.SchemaError.expectedButGot('array', (0, type_of_1.typeOf)(value), path) };
|
|
17
|
-
}
|
|
18
|
-
const validatedArray = [];
|
|
19
|
-
for (let i = 0; i < value.length; i++) {
|
|
20
|
-
const innerTestResult = this.innerValidator[schema_validator_1.test](value[i], options, path.add(i));
|
|
21
|
-
if (!innerTestResult.valid) {
|
|
22
|
-
return innerTestResult;
|
|
23
|
-
}
|
|
24
|
-
validatedArray.push(innerTestResult.value);
|
|
25
|
-
}
|
|
26
|
-
return { valid: true, value: validatedArray };
|
|
13
|
+
if ((0, type_guards_1.isDefined)(options.maximumLength)) {
|
|
14
|
+
arrayConstraints.push(new array_constraints_1.ArrayMaximumLengthConstraint(options.maximumLength));
|
|
27
15
|
}
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
for (let i = 0; i < value.length; i++) {
|
|
34
|
-
const innerTestResult = await this.innerValidator[schema_validator_1.testAsync](value[i], options, path.add(i));
|
|
35
|
-
if (!innerTestResult.valid) {
|
|
36
|
-
return innerTestResult;
|
|
37
|
-
}
|
|
38
|
-
validatedArray.push(innerTestResult.value);
|
|
39
|
-
}
|
|
40
|
-
return { valid: true, value: validatedArray };
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
exports.ArraySchemaValidator = ArraySchemaValidator;
|
|
44
|
-
function array(innerValidator, options) {
|
|
45
|
-
const schema = (0, types_1.schemaHelper)({
|
|
46
|
-
type: 'array',
|
|
47
|
-
schema: innerValidator.schema,
|
|
48
|
-
...options
|
|
16
|
+
return (0, types_1.valueSchema)({
|
|
17
|
+
type: innerValues,
|
|
18
|
+
array: true,
|
|
19
|
+
coerce: options.coerce,
|
|
20
|
+
arrayConstraints
|
|
49
21
|
});
|
|
50
|
-
return new ArraySchemaValidator(innerValidator, schema);
|
|
51
22
|
}
|
|
52
23
|
exports.array = array;
|
|
53
24
|
//# sourceMappingURL=array.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"array.js","sourceRoot":"","sources":["../../../source/schema/schemas/array.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"array.js","sourceRoot":"","sources":["../../../source/schema/schemas/array.ts"],"names":[],"mappings":";AAAA,yDAAyD;;;AAEzD,yDAAgD;AAChD,4DAAoE;AAEpE,oCAAuC;AAUvC,SAAgB,KAAK,CAAI,WAAuC,EAAE,UAAwB,EAAE;IAC1F,MAAM,gBAAgB,GAA4B,EAAE,CAAC;IAErD,IAAI,IAAA,uBAAS,EAAC,OAAO,CAAC,aAAa,CAAC,EAAE;QACpC,gBAAgB,CAAC,IAAI,CAAC,IAAI,gDAA4B,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;KAChF;IAED,IAAI,IAAA,uBAAS,EAAC,OAAO,CAAC,aAAa,CAAC,EAAE;QACpC,gBAAgB,CAAC,IAAI,CAAC,IAAI,gDAA4B,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;KAChF;IAED,OAAO,IAAA,mBAAW,EAAC;QACjB,IAAI,EAAE,WAAW;QACjB,KAAK,EAAE,IAAI;QACX,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,gBAAgB;KACjB,CAAC,CAAC;AACL,CAAC;AAjBD,sBAiBC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Record } from "../../types";
|
|
2
|
+
import type { Merge } from 'type-fest';
|
|
3
|
+
import type { ObjectSchema } from '../types';
|
|
4
|
+
export declare function assign<A extends Record, B extends Record>(schema1: ObjectSchema<A>, schema2: ObjectSchema<B>): ObjectSchema<Merge<A, B>>;
|
|
5
|
+
export declare function assign<A extends Record, B extends Record, C extends Record>(schema1: ObjectSchema<A>, schema2: ObjectSchema<B>, schema3: ObjectSchema<C>): ObjectSchema<Merge<Merge<A, B>, C>>;
|
|
6
|
+
export declare function assign<A extends Record, B extends Record, C extends Record, D extends Record>(schema1: ObjectSchema<A>, schema2: ObjectSchema<B>, schema3: ObjectSchema<C>, schema4: ObjectSchema<D>): ObjectSchema<Merge<Merge<Merge<A, B>, C>, D>>;
|
|
7
|
+
export declare function assign<A extends Record, B extends Record, C extends Record, D extends Record, E extends Record>(schema1: ObjectSchema<A>, schema2: ObjectSchema<B>, schema3: ObjectSchema<C>, schema4: ObjectSchema<D>, schema5: ObjectSchema<E>): ObjectSchema<Merge<Merge<Merge<Merge<A, B>, C>, D>, E>>;
|
|
8
|
+
export declare function assign<A extends Record, B extends Record, C extends Record, D extends Record, E extends Record, F extends Record>(schema1: ObjectSchema<A>, schema2: ObjectSchema<B>, schema3: ObjectSchema<C>, schema4: ObjectSchema<D>, schema5: ObjectSchema<E>, schema6: ObjectSchema<F>): ObjectSchema<Merge<Merge<Merge<Merge<Merge<A, B>, C>, D>, E>, F>>;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.assign = void 0;
|
|
4
|
+
const array_1 = require("../../utils/array/array");
|
|
5
|
+
const type_guards_1 = require("../../utils/type-guards");
|
|
6
|
+
function assign(...schemas) {
|
|
7
|
+
(0, type_guards_1.assert)(schemas.length >= 2, 'Assign requires at least 2 schemas.');
|
|
8
|
+
let result = schemas[0];
|
|
9
|
+
const hasDeferredValueType = schemas.flatMap((schema) => (0, array_1.toArray)(schema.allowUnknownProperties));
|
|
10
|
+
for (let i = 1; i < schemas.length; i++) {
|
|
11
|
+
result = {
|
|
12
|
+
...result,
|
|
13
|
+
...schemas[i],
|
|
14
|
+
properties: {
|
|
15
|
+
...result.properties,
|
|
16
|
+
...schemas[i].properties
|
|
17
|
+
},
|
|
18
|
+
allowUnknownProperties: [...(0, array_1.toArray)(result.allowUnknownProperties ?? []), ...(0, array_1.toArray)(schemas[i].allowUnknownProperties ?? [])]
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
if (result.allowUnknownProperties.length == 0) {
|
|
22
|
+
const { allowUnknownProperties: _, ...rest } = result;
|
|
23
|
+
result = rest;
|
|
24
|
+
}
|
|
25
|
+
return result;
|
|
26
|
+
}
|
|
27
|
+
exports.assign = assign;
|
|
28
|
+
//# sourceMappingURL=assign.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assign.js","sourceRoot":"","sources":["../../../source/schema/schemas/assign.ts"],"names":[],"mappings":";;;AACA,mDAA8C;AAC9C,yDAA6C;AAoB7C,SAAgB,MAAM,CAAC,GAAG,OAAuB;IAC/C,IAAA,oBAAM,EAAC,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE,qCAAqC,CAAC,CAAC;IAEnE,IAAI,MAAM,GAAG,OAAO,CAAC,CAAC,CAAE,CAAC;IACzB,MAAM,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAA,eAAO,EAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,CAAC;IAEjG,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACvC,MAAM,GAAG;YACP,GAAG,MAAM;YACT,GAAG,OAAO,CAAC,CAAC,CAAE;YACd,UAAU,EAAE;gBACV,GAAG,MAAM,CAAC,UAAU;gBACpB,GAAG,OAAO,CAAC,CAAC,CAAE,CAAC,UAAU;aAC1B;YACD,sBAAsB,EAAE,CAAC,GAAG,IAAA,eAAO,EAAC,MAAM,CAAC,sBAAsB,IAAI,EAAE,CAAC,EAAE,GAAG,IAAA,eAAO,EAAC,OAAO,CAAC,CAAC,CAAE,CAAC,sBAAsB,IAAI,EAAE,CAAC,CAAC;SAChI,CAAC;KACH;IAED,IAAK,MAAM,CAAC,sBAAgC,CAAC,MAAM,IAAI,CAAC,EAAE;QACxD,MAAM,EAAE,sBAAsB,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,CAAC;QACtD,MAAM,GAAG,IAAI,CAAC;KACf;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAxBD,wBAwBC"}
|
|
@@ -1,9 +1,5 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
export declare
|
|
6
|
-
export declare class BooleanSchemaValidator extends SchemaValidator<BooleanSchemaDefinition> {
|
|
7
|
-
[test](value: unknown, options: DefinedValidationOptions, path: JsonPath): ValidationTestResult<boolean>;
|
|
8
|
-
}
|
|
9
|
-
export declare function boolean(options?: SchemaOptions<BooleanSchemaDefinition>): BooleanSchemaValidator;
|
|
1
|
+
import type { Decorator } from "../../reflection";
|
|
2
|
+
import type { Coercible, ValueSchema } from '../types';
|
|
3
|
+
export declare type BooleanOptions = Coercible;
|
|
4
|
+
export declare function boolean(options?: BooleanOptions): ValueSchema<boolean>;
|
|
5
|
+
export declare function Boolean(options?: BooleanOptions): Decorator<'property' | 'accessor'>;
|
|
@@ -1,45 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/* eslint-disable @typescript-eslint/naming-convention */
|
|
2
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
const
|
|
5
|
-
const schema_validator_1 = require("../schema.validator");
|
|
4
|
+
exports.Boolean = exports.boolean = void 0;
|
|
5
|
+
const decorators_1 = require("../decorators");
|
|
6
6
|
const types_1 = require("../types");
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
case 'true':
|
|
12
|
-
case '1':
|
|
13
|
-
case 'yes':
|
|
14
|
-
return { valid: true, value: true };
|
|
15
|
-
case 'false':
|
|
16
|
-
case '0':
|
|
17
|
-
case 'no':
|
|
18
|
-
return { valid: true, value: false };
|
|
19
|
-
default:
|
|
20
|
-
return { valid: false, error: schema_error_1.SchemaError.expectedButGot('boolean', 'string', path) };
|
|
21
|
-
}
|
|
22
|
-
},
|
|
23
|
-
number: (number, path) => ((number == 1) ? { valid: true, value: true }
|
|
24
|
-
: (number == 0) ? { valid: true, value: false }
|
|
25
|
-
: { valid: false, error: schema_error_1.SchemaError.expectedButGot('boolean', 'number', path) })
|
|
26
|
-
};
|
|
27
|
-
class BooleanSchemaValidator extends schema_validator_1.SchemaValidator {
|
|
28
|
-
[schema_validator_1.test](value, options, path) {
|
|
29
|
-
const result = super.ensureType('boolean', value, path, { coerce: this.schema.coerce ?? options.coerce }, coercerMap);
|
|
30
|
-
if (!result.valid) {
|
|
31
|
-
return result;
|
|
32
|
-
}
|
|
33
|
-
return { valid: true, value: result.value };
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
exports.BooleanSchemaValidator = BooleanSchemaValidator;
|
|
37
|
-
function boolean(options) {
|
|
38
|
-
const schema = (0, types_1.schemaHelper)({
|
|
39
|
-
type: 'boolean',
|
|
40
|
-
...options
|
|
7
|
+
function boolean(options = {}) {
|
|
8
|
+
return (0, types_1.valueSchema)({
|
|
9
|
+
type: globalThis.Boolean,
|
|
10
|
+
coerce: options.coerce
|
|
41
11
|
});
|
|
42
|
-
return new BooleanSchemaValidator(schema);
|
|
43
12
|
}
|
|
44
13
|
exports.boolean = boolean;
|
|
14
|
+
function Boolean(options) {
|
|
15
|
+
return (0, decorators_1.createSchemaPropertyDecoratorFromValueType)(boolean(options));
|
|
16
|
+
}
|
|
17
|
+
exports.Boolean = Boolean;
|
|
45
18
|
//# sourceMappingURL=boolean.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"boolean.js","sourceRoot":"","sources":["../../../source/schema/schemas/boolean.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"boolean.js","sourceRoot":"","sources":["../../../source/schema/schemas/boolean.ts"],"names":[],"mappings":";AAAA,yDAAyD;;;AAGzD,8CAA2E;AAE3E,oCAAuC;AAIvC,SAAgB,OAAO,CAAC,UAA0B,EAAE;IAClD,OAAO,IAAA,mBAAW,EAAC;QACjB,IAAI,EAAE,UAAU,CAAC,OAAO;QACxB,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAC;AACL,CAAC;AALD,0BAKC;AAED,SAAgB,OAAO,CAAC,OAAwB;IAC9C,OAAO,IAAA,uDAA0C,EAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;AACtE,CAAC;AAFD,0BAEC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { OneOrMany } from "../../types";
|
|
2
|
+
import type { GenericConstraintFunction } from '../constraints/generic';
|
|
3
|
+
import type { Schema } from '../schema';
|
|
4
|
+
export declare function constraint<T>(schema: Schema<T>, constraintFunction: GenericConstraintFunction<T>, expects?: OneOrMany<string>): Schema<T>;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.constraint = void 0;
|
|
4
|
+
const generic_1 = require("../constraints/generic");
|
|
5
|
+
const types_1 = require("../types");
|
|
6
|
+
function constraint(schema, constraintFunction, expects) {
|
|
7
|
+
return (0, types_1.valueSchema)({
|
|
8
|
+
type: schema,
|
|
9
|
+
valueConstraints: new generic_1.GenericConstraint(constraintFunction, expects)
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
exports.constraint = constraint;
|
|
13
|
+
/* decorator is in file of GenericConstraint */
|
|
14
|
+
//# sourceMappingURL=constraint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constraint.js","sourceRoot":"","sources":["../../../source/schema/schemas/constraint.ts"],"names":[],"mappings":";;;AAEA,oDAA2D;AAE3D,oCAAuC;AAEvC,SAAgB,UAAU,CAAI,MAAiB,EAAE,kBAAgD,EAAE,OAA2B;IAC5H,OAAO,IAAA,mBAAW,EAAC;QACjB,IAAI,EAAE,MAAM;QACZ,gBAAgB,EAAE,IAAI,2BAAiB,CAAC,kBAAkB,EAAE,OAAO,CAAC;KACrE,CAAC,CAAC;AACL,CAAC;AALD,gCAKC;AAED,+CAA+C"}
|