@eggjs/typebox-validate
Version:
another validate for typescript egg projects
43 lines • 2.5 kB
JavaScript
import addFormats from 'ajv-formats';
import { Ajv2019 as Ajv } from 'ajv/dist/2019.js';
import keyWords from 'ajv-keywords';
const getAjvInstance = () => {
const ajv = new Ajv();
// @ts-expect-error - keyWords types are not fully compatible
keyWords(ajv, 'transform');
// @ts-expect-error - addFormats types are not fully compatible
addFormats(ajv, [
'date-time',
'time',
'date',
'email',
'hostname',
'ipv4',
'ipv6',
'uri',
'uri-reference',
'uuid',
'uri-template',
'json-pointer',
'relative-json-pointer',
'regex',
])
.addKeyword('kind')
.addKeyword('modifier');
return ajv;
};
export default class AppBootHook {
app;
constructor(app) {
this.app = app;
this.app.ajv = getAjvInstance();
}
async configDidLoad() {
const config = this.app.config;
const typeboxValidate = config.typeboxValidate;
if (typeboxValidate) {
typeboxValidate.patchAjv?.(this.app.ajv);
}
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2FwcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLFVBQVUsTUFBTSxhQUFhLENBQUM7QUFDckMsT0FBTyxFQUFFLE9BQU8sSUFBSSxHQUFHLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLFFBQVEsTUFBTSxjQUFjLENBQUM7QUFFcEMsTUFBTSxjQUFjLEdBQUcsR0FBRyxFQUFFO0lBQzFCLE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7SUFDdEIsNkRBQTZEO0lBQzdELFFBQVEsQ0FBQyxHQUFHLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDM0IsK0RBQStEO0lBQy9ELFVBQVUsQ0FBQyxHQUFHLEVBQUU7UUFDZCxXQUFXO1FBQ1gsTUFBTTtRQUNOLE1BQU07UUFDTixPQUFPO1FBQ1AsVUFBVTtRQUNWLE1BQU07UUFDTixNQUFNO1FBQ04sS0FBSztRQUNMLGVBQWU7UUFDZixNQUFNO1FBQ04sY0FBYztRQUNkLGNBQWM7UUFDZCx1QkFBdUI7UUFDdkIsT0FBTztLQUNSLENBQUM7U0FDQyxVQUFVLENBQUMsTUFBTSxDQUFDO1NBQ2xCLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMxQixPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxPQUFPLE9BQU8sV0FBVztJQUN2QixHQUFHLENBQWM7SUFFeEIsWUFBWSxHQUFnQjtRQUMxQixJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNmLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLGNBQWMsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFRCxLQUFLLENBQUMsYUFBYTtRQUNqQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQztRQUMvQixNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDO1FBQy9DLElBQUksZUFBZSxFQUFFLENBQUM7WUFDcEIsZUFBZSxDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0MsQ0FBQztJQUNILENBQUM7Q0FDRiJ9