Skip to content

Commit b988758

Browse files
author
Sascha Goldhofer
committed
release: bump version to v9.1.1
1 parent c8b0fed commit b988758

File tree

6 files changed

+26
-5
lines changed

6 files changed

+26
-5
lines changed

dist/jsonSchemaLibrary.js

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/lib/features/allOf.d.ts

+1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { JsonSchema, JsonValidator, JsonError } from "../types";
55
import { Draft } from "../draft";
66
export declare function resolveAllOf(draft: Draft, data: any, schema?: JsonSchema): JsonSchema | JsonError;
77
/**
8+
* @attention: subschemas have to be resolved upfront (e.g. if-else that do not apply)
89
* Merge all allOf sub schema into a single schema. Returns undefined for
910
* missing allOf definition.
1011
*

dist/module/lib/features/allOf.js

+1
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ export function resolveAllOf(draft, data, schema = draft.rootSchema) {
2727
return mergedSchema;
2828
}
2929
/**
30+
* @attention: subschemas have to be resolved upfront (e.g. if-else that do not apply)
3031
* Merge all allOf sub schema into a single schema. Returns undefined for
3132
* missing allOf definition.
3233
*

dist/module/lib/features/if.js

+3
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@
66
* @returns json schema defined by if-then-else or undefined
77
*/
88
export function resolveIfSchema(draft, schema, data) {
9+
if (schema.if == null) {
10+
return undefined;
11+
}
912
if (schema.if === false) {
1013
return schema.else;
1114
}

dist/module/lib/resolveDynamicSchema.js

+19-3
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,25 @@ export function resolveDynamicSchema(draft, schema, data, pointer) {
4343
}
4444
}
4545
// @feature allOf
46-
const allOfSchema = mergeAllOfSchema(draft, schema);
47-
if (allOfSchema) {
48-
resolvedSchema = mergeSchema(resolvedSchema !== null && resolvedSchema !== void 0 ? resolvedSchema : {}, allOfSchema);
46+
if (Array.isArray(schema.allOf)) {
47+
const allOf = schema.allOf.map((s) => {
48+
// before merging allOf schema we need to resolve all subschemas
49+
// if not, we would wrongly merge oneOf, if-then statements, etc
50+
if (isDynamicSchema(s)) {
51+
// copy of reduceSchema
52+
let result = resolveDynamicSchema(draft, s, data, pointer);
53+
if (result) {
54+
result = mergeSchema(s, result);
55+
return omit(result, ...toOmit);
56+
}
57+
return undefined;
58+
}
59+
return s;
60+
});
61+
if (allOf.length > 0) {
62+
const allOfSchema = mergeAllOfSchema(draft, { allOf });
63+
resolvedSchema = mergeSchema(resolvedSchema !== null && resolvedSchema !== void 0 ? resolvedSchema : {}, allOfSchema);
64+
}
4965
}
5066
// @feature anyOf
5167
const anyOfSchema = mergeValidAnyOfSchema(draft, schema, data);

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "json-schema-library",
3-
"version": "9.1.0",
3+
"version": "9.1.1",
44
"description": "Customizable and hackable json-validator and json-schema utilities for traversal, data generation and validation",
55
"module": "dist/module/index.js",
66
"types": "dist/index.d.ts",

0 commit comments

Comments
 (0)