Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ajv-validator/json-schema-migrate
Migrate JSON-Schema draft-04 to draft-07, draft-2019-09 or draft-2020-12
https://github.com/ajv-validator/json-schema-migrate
json-schema
Last synced: 3 months ago
JSON representation
Migrate JSON-Schema draft-04 to draft-07, draft-2019-09 or draft-2020-12
- Host: GitHub
- URL: https://github.com/ajv-validator/json-schema-migrate
- Owner: ajv-validator
- License: mit
- Created: 2017-03-24T23:44:33.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2021-03-28T08:59:29.000Z (over 3 years ago)
- Last Synced: 2024-08-16T21:56:10.125Z (4 months ago)
- Topics: json-schema
- Language: TypeScript
- Homepage:
- Size: 32.2 KB
- Stars: 25
- Watchers: 6
- Forks: 4
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# json-schema-migrate
Migrate JSON-Schema from draft-04 to draft-07, draft-2019-09 or draft-2020-12
[![build](https://github.com/ajv-validator/json-schema-migrate/workflows/build/badge.svg)](https://github.com/ajv-validator/json-schema-migrate/actions?query=workflow%3Abuild)
[![npm](https://img.shields.io/npm/v/json-schema-migrate)](https://www.npmjs.com/package/json-schema-migrate)
[![coverage](https://coveralls.io/repos/github/ajv-validator/json-schema-migrate/badge.svg?branch=master)](https://coveralls.io/github/ajv-validator/json-schema-migrate?branch=master)## Install
```
npm install json-schema-migrate
```## Usage
```javascript
const migrate = require("json-schema-migrate")
const schema = {
id: "my-schema",
minimum: 1,
exclusiveMinimum: true,
}
migrate.draft7(schema)
// or migrate.draft2019(schema)
// or migrate.draft2020(schema)console.log(schema)
// {
// $id: 'my-schema',
// exclusiveMinimum: 1
// }
```You can access Ajv instance that is used to migrate schema using `migrate.getAjv` function:
```javascript
console.log(migrate.getAjv().errorsText(errors))
```## Changes in schemas after migration
- `id` is replaced with `$id`
- `$schema` value becomes draft-07, draft-2019-09 or draft-2020-12 meta-schema
- draft-04 boolean form of `exclusiveMaximum/Minimum` is replaced with the current number form
- `enum` with a single allowed value is replaced with `const`
- Non-standard `constant` is replaced with `const`
- empty schema is replaced with `true`
- schema `{"not":{}}` is replaced with `false`
- `draft2019` function additionally replaces:
- `definitions` with `$defs`
- `dependencies` with `dependentRequired` and `dependentSchemas`
- `"id": "#foo"` with `"$anchor": "foo"`
- `"id": "schema#foo"` with `"$id": "schema", "$anchor": "foo"`
- `draft2020` function additionally replaces array form of `items` with `prefixItems` (and `additionalItems` with `items`)## License
[MIT](https://github.com/epoberezkin/json-schema-migrate/blob/master/LICENSE)