Skip to content

Commit 1f3cebc

Browse files
committed
Revert contains applies to objects
1 parent 224e411 commit 1f3cebc

File tree

8 files changed

+11
-78
lines changed

8 files changed

+11
-78
lines changed

bundle/snapshots/35a365d04a84908c6a6b71df77a6cfc0

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
"valid": true,
66
"errors": [
77
{
8-
"keyword": "https://json-schema.org/keyword/draft-2019-09/contains",
8+
"keyword": "https://json-schema.org/keyword/contains",
99
"absoluteKeywordLocation": "https://bundler.hyperjump.io/main#/contains",
1010
"instanceLocation": "#",
1111
"valid": true,

bundle/snapshots/46083f579195b95d9b2928e15f896230

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
"valid": false,
66
"errors": [
77
{
8-
"keyword": "https://json-schema.org/keyword/draft-2019-09/contains",
8+
"keyword": "https://json-schema.org/keyword/contains",
99
"absoluteKeywordLocation": "https://bundler.hyperjump.io/main#/contains",
1010
"instanceLocation": "#",
1111
"valid": false,

bundle/snapshots/795cae84dab790d15cda3a397cfd708a

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
"valid": false,
66
"errors": [
77
{
8-
"keyword": "https://json-schema.org/keyword/draft-2019-09/contains",
8+
"keyword": "https://json-schema.org/keyword/contains",
99
"absoluteKeywordLocation": "https://bundler.hyperjump.io/main#/contains",
1010
"instanceLocation": "#",
1111
"valid": false,

bundle/snapshots/b4b1ef9324f3a148a6b4011bf1b4a506

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
"valid": true,
66
"errors": [
77
{
8-
"keyword": "https://json-schema.org/keyword/draft-2019-09/contains",
8+
"keyword": "https://json-schema.org/keyword/contains",
99
"absoluteKeywordLocation": "https://bundler.hyperjump.io/main#/contains",
1010
"instanceLocation": "#",
1111
"valid": true,

draft-2019-09/contains.js

Lines changed: 0 additions & 43 deletions
This file was deleted.

draft-2019-09/index.js

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,12 @@ import formatMetaSchema from "./meta/format.js";
1010
import contentMetaSchema from "./meta/content.js";
1111

1212
import additionalItems from "../draft-04/additionalItems.js";
13-
import contains from "./contains.js";
1413
import items from "../draft-04/items.js";
1514
import recursiveAnchor from "./recursiveAnchor.js";
1615
import recursiveRef from "../draft-2020-12/dynamicRef.js";
1716

1817

1918
addKeyword(additionalItems);
20-
addKeyword(contains);
2119
addKeyword(items);
2220
addKeyword(recursiveAnchor);
2321
addKeyword(recursiveRef);
@@ -38,7 +36,7 @@ defineVocabulary("https://json-schema.org/draft/2019-09/vocab/applicator", {
3836
"additionalProperties": "https://json-schema.org/keyword/additionalProperties",
3937
"allOf": "https://json-schema.org/keyword/allOf",
4038
"anyOf": "https://json-schema.org/keyword/anyOf",
41-
"contains": "https://json-schema.org/keyword/draft-2019-09/contains",
39+
"contains": "https://json-schema.org/keyword/contains",
4240
"dependentSchemas": "https://json-schema.org/keyword/dependentSchemas",
4341
"if": "https://json-schema.org/keyword/if",
4442
"then": "https://json-schema.org/keyword/then",

draft-2020-12/index.js

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,10 @@ import formatAssertionMetaSchema from "./meta/format-assertion.js";
1111
import contentMetaSchema from "./meta/content.js";
1212
import unevaluatedMetaSchema from "./meta/unevaluated.js";
1313

14-
import contains from "../draft-2019-09/contains.js";
1514
import dynamicAnchor from "./dynamicAnchor.js";
1615
import dynamicRef from "./dynamicRef.js";
1716

1817

19-
addKeyword(contains);
2018
addKeyword(dynamicRef);
2119
addKeyword(dynamicAnchor);
2220

@@ -35,7 +33,7 @@ defineVocabulary("https://json-schema.org/draft/2020-12/vocab/applicator", {
3533
"additionalProperties": "https://json-schema.org/keyword/additionalProperties",
3634
"allOf": "https://json-schema.org/keyword/allOf",
3735
"anyOf": "https://json-schema.org/keyword/anyOf",
38-
"contains": "https://json-schema.org/keyword/draft-2019-09/contains",
36+
"contains": "https://json-schema.org/keyword/contains",
3937
"dependentSchemas": "https://json-schema.org/keyword/dependentSchemas",
4038
"if": "https://json-schema.org/keyword/if",
4139
"then": "https://json-schema.org/keyword/then",

lib/keywords/contains.js

Lines changed: 5 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { pipe, map, filter, count, collectSet, zip, range } from "@hyperjump/pact";
1+
import { pipe, filter, reduce, zip, range, map, collectSet } from "@hyperjump/pact";
22
import * as Browser from "@hyperjump/browser";
33
import * as Instance from "../instance.js";
44
import { getKeywordName, Validation } from "../experimental.js";
@@ -21,34 +21,14 @@ const compile = async (schema, ast, parentSchema) => {
2121
};
2222

2323
const interpret = ({ contains, minContains, maxContains }, instance, ast, dynamicAnchors, quiet) => {
24-
let iterator;
25-
if (Instance.typeOf(instance) === "array") {
26-
iterator = Instance.iter(instance);
27-
} else if (Instance.typeOf(instance) === "object") {
28-
iterator = Instance.values(instance);
29-
} else {
30-
return true;
31-
}
32-
33-
const matches = pipe(
34-
iterator,
24+
const matches = Instance.typeOf(instance) !== "array" || pipe(
25+
Instance.iter(instance),
3526
filter((item) => Validation.interpret(contains, item, ast, dynamicAnchors, quiet)),
36-
count
27+
reduce((matches) => matches + 1, 0)
3728
);
3829
return matches >= minContains && matches <= maxContains;
3930
};
4031

41-
const collectEvaluatedProperties = (keywordValue, instance, ast, dynamicAnchors) => {
42-
return interpret(keywordValue, instance, ast, dynamicAnchors, true)
43-
&& Instance.typeOf(instance) === "object"
44-
&& pipe(
45-
Instance.entries(instance),
46-
filter(([, item]) => Validation.interpret(keywordValue.contains, item, ast, dynamicAnchors, true)),
47-
map(([propertyName]) => propertyName),
48-
collectSet
49-
);
50-
};
51-
5232
const collectEvaluatedItems = (keywordValue, instance, ast, dynamicAnchors) => {
5333
return interpret(keywordValue, instance, ast, dynamicAnchors, true)
5434
&& Instance.typeOf(instance) === "array"
@@ -60,4 +40,4 @@ const collectEvaluatedItems = (keywordValue, instance, ast, dynamicAnchors) => {
6040
);
6141
};
6242

63-
export default { id, compile, interpret, collectEvaluatedItems, collectEvaluatedProperties };
43+
export default { id, compile, interpret, collectEvaluatedItems };

0 commit comments

Comments
 (0)