I'm looking for a ajv-like json schema validator for deno. Wondering is there any alternative?
You have some options to use none-deno modules.
The easiest way is to use a service like esm.sh and import it like:
import Ajv from 'https://esm.sh/[email protected]';
import addFormats from 'https://esm.sh/[email protected]';
const ajv = new Ajv({allErrors: true});
addFormats(ajv);
esm.sh even provides .d.ts definitions if available, so you can import types as well.
import Ajv, {ValidateFunction} from 'https://esm.sh/[email protected]';
const validate: ValidateFunction = new Ajv().compile(schema);
In some cases, you can even import the raw typescript file directly from git. But Ajv imports json files directly, which deno does not support atm.
https://esm.sh/ajv
, and it redirects to a later version if available –
Chretien You don't need an alternative, you can use ajv
.
Ajv
provides a bundle for browsers: https://cdnjs.cloudflare.com/ajax/libs/ajv/6.12.2/ajv.min.js
All you need to do is download it, save it to your project and add: export default Ajv
at the bottom of the file.
ajv.js
/* ajv 6.12.2: Another JSON Schema Validator */
!function(e){if("object"==typeof exports&&"undefined"!=typeof module) /*....... */
//# sourceMappingURL=ajv.min.js.map
export default Ajv;
index.js
import Ajv from './ajv.js'
const ajv = new Ajv({allErrors: true});
const schema = {
"properties": {
"foo": { "type": "string" },
"bar": { "type": "number", "maximum": 3 }
}
};
function test(data) {
const valid = validate(data);
if (valid) console.log('Valid!');
else console.log('Invalid: ' + ajv.errorsText(validate.errors));
}
const validate = ajv.compile(schema);
test({"foo": "abc", "bar": 2});
test({"foo": 2, "bar": 4});
Remember that Deno is a JavaScript runtime, so any code which uses plain JavaScript, you'll be able to use it with very little modification, in this case just export default Ajv
ajv
has a type definitions file, raw.githubusercontent.com/ajv-validator/ajv/master/lib/ajv.d.ts, so you can get type checking and hints if you prefix the import statement with // @deno-types="https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/ajv.d.ts"
–
Unbelievable Till now, ajv-like schema validator is not available for Deno. However, you can try value_schema for schema validation. It has both Node.js and Deno versions.
value_schema
/value-schema
is not able to handle JSON schemas but implements it's own way of defining schemas? Is there some way to generate the value-schema
code for a JSON schema? To what degree can value-schema
even offer the capabilities of a JSON schema? –
Dentistry jtd is a viable alternative. It is a deno native implementation of JSON Type Definition, aka RFC 8927, which is an alternative to json-schema
validation (and thus ajv) but has a similar purpose.
© 2022 - 2024 — McMap. All rights reserved.