diff --git a/.github/workflows/commit.yml b/.github/workflows/commit.yml index 7b6187050..7282e2a5d 100644 --- a/.github/workflows/commit.yml +++ b/.github/workflows/commit.yml @@ -104,3 +104,18 @@ jobs: yarn lint.eslint - name: Lint documentation run: yarn lint.prettier + + jsonschema-check: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@main + - uses: sourcemeta/jsonschema@v6.0.3 + - run: jsonschema metaschema --verbose packages/core/src/ruleset/meta/*.json + - run: jsonschema lint --verbose packages/core/src/ruleset/meta/*.json + + # As a smoke test to ensure the schemas at least reference each other well + - run: > + jsonschema bundle --verbose + packages/core/src/ruleset/meta/ruleset.schema.json + --resolve packages/core/src/ruleset/meta + --ignore packages/core/src/ruleset/meta/js-extensions.json diff --git a/packages/core/src/ruleset/meta/js-extensions.json b/packages/core/src/ruleset/meta/js-extensions.json index e6c717d8c..fa3139544 100644 --- a/packages/core/src/ruleset/meta/js-extensions.json +++ b/packages/core/src/ruleset/meta/js-extensions.json @@ -1,5 +1,5 @@ { - "$schema": "http://json-schema.org/draft-07/schema#", + "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "@stoplight/spectral-core/meta/extensions", "$defs": { "Extends": { @@ -20,13 +20,12 @@ { "type": "array", "minItems": 2, - "additionalItems": false, - "items": [ + "items": false, + "prefixItems": [ { "$ref": "ruleset" }, { - "type": "string", "enum": ["off", "recommended", "all"], "errorMessage": "allowed types are \"off\", \"recommended\" and \"all\"" } diff --git a/packages/core/src/ruleset/meta/json-extensions.json b/packages/core/src/ruleset/meta/json-extensions.json index f3c6186ec..c00aa081a 100644 --- a/packages/core/src/ruleset/meta/json-extensions.json +++ b/packages/core/src/ruleset/meta/json-extensions.json @@ -1,5 +1,5 @@ { - "$schema": "http://json-schema.org/draft-07/schema#", + "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "@stoplight/spectral-core/meta/extensions", "$defs": { "Extends": { @@ -18,8 +18,8 @@ { "type": "array", "minItems": 2, - "additionalItems": false, - "items": [ + "items": false, + "prefixItems": [ { "type": "string" }, diff --git a/packages/core/src/ruleset/meta/rule.schema.json b/packages/core/src/ruleset/meta/rule.schema.json index d5c0700b8..bf0648865 100644 --- a/packages/core/src/ruleset/meta/rule.schema.json +++ b/packages/core/src/ruleset/meta/rule.schema.json @@ -1,5 +1,5 @@ { - "$schema": "http://json-schema.org/draft-07/schema#", + "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "@stoplight/spectral-core/meta/rule.schema", "$defs": { "Then": { @@ -75,7 +75,6 @@ }, "type": { "enum": ["style", "validation"], - "type": "string", "errorMessage": "allowed types are \"style\" and \"validation\"" }, "extensions": { diff --git a/packages/core/src/ruleset/meta/ruleset.schema.json b/packages/core/src/ruleset/meta/ruleset.schema.json index 6fc6fccdb..a267d619c 100644 --- a/packages/core/src/ruleset/meta/ruleset.schema.json +++ b/packages/core/src/ruleset/meta/ruleset.schema.json @@ -1,5 +1,5 @@ { - "$schema": "http://json-schema.org/draft-07/schema#", + "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "@stoplight/spectral-core/meta/ruleset.schema", "type": "object", "additionalProperties": false, diff --git a/packages/core/src/ruleset/meta/shared.json b/packages/core/src/ruleset/meta/shared.json index bd8402c30..31c2ecc7a 100644 --- a/packages/core/src/ruleset/meta/shared.json +++ b/packages/core/src/ruleset/meta/shared.json @@ -1,5 +1,5 @@ { - "$schema": "http://json-schema.org/draft-07/schema#", + "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "@stoplight/spectral-core/meta/shared", "$defs": { "Formats": {