https://ajv.js.org/standalone.html
У меня есть экземпляр AJV, созданный следующим образом:
Код: Выделить всё
const ajv = require("ajv");
const add_formats = require("ajv-formats");
const add_errors = require("ajv-errors");
const ajv_inst = new ajv({
code: { source: true }, // needed for standalone pre compiled scripts
allErrors: true,
$data: true,
});
add_errors(add_formats(ajv_inst));
Код: Выделить всё
ajv_inst.addKeyword({
keyword: "custom_array",
validate: (schema, data) => {
try {
const unique_name = data.map((tar) => {
return tar.name.toLowerCase().replaceAll(/\s+/g, "");
});
const unique_id = data.map((tar) => {
return tar._id;
});
return (
new Set(unique_name).size === data.length &&
new Set(unique_id).size === data.length
);
} catch (err) {
return false;
}
},
metaSchema: {
enum: [true],
},
});
Код: Выделить всё
code(cxt: KeywordCxt) {
const {data, schema} = cxt
const op = schema ? _`!==` : _`===`
cxt.fail(_`${data} %2 ${op} 0`) // ... the only code change needed is to use `cxt.fail$data` here
},
вопросы:
- Учитывая, что у меня уже определено свойство validate, есть ли способ сгенерировать предварительно скомпилированный автономный код с функцией, определенной как в validate< /code> свойство?
- Если нет, Существует ли простой или автоматизированный способ преобразования моей функции проверки в необходимый код генерации кода?
Подробнее здесь: https://stackoverflow.com/questions/792 ... m-keywords
Мобильная версия