mirror of
https://github.com/multipleof4/lynchmark.git
synced 2026-01-14 08:37:56 +00:00
Docs: Update benchmark results
This commit is contained in:
@@ -1,18 +1,14 @@
|
||||
const validateJSON = async (data, schema) => {
|
||||
const { default: Ajv } = await import('https://cdn.jsdelivr.net/npm/ajv@8.12.0/dist/2020.min.js');
|
||||
|
||||
const ajv = new Ajv({ allErrors: true, strict: false });
|
||||
const { default: Ajv } = await import('https://esm.sh/ajv@8.12.0');
|
||||
const ajv = new Ajv({ allErrors: true });
|
||||
const validate = ajv.compile(schema);
|
||||
const valid = validate(data);
|
||||
|
||||
return {
|
||||
valid,
|
||||
errors: valid ? [] : validate.errors.map(e => ({
|
||||
path: e.instancePath || '/',
|
||||
message: e.message,
|
||||
keyword: e.keyword,
|
||||
params: e.params
|
||||
}))
|
||||
errors: valid ? [] : validate.errors.map(e =>
|
||||
`${e.instancePath || '/'} ${e.message}`.trim()
|
||||
)
|
||||
};
|
||||
};
|
||||
export default validateJSON;
|
||||
@@ -1,16 +1,14 @@
|
||||
const validateJSON = async (data, schema) => {
|
||||
const { default: Ajv } = await import('https://cdn.jsdelivr.net/npm/ajv@8/dist/2020.min.js');
|
||||
const ajv = new Ajv({ allErrors: true, verbose: true });
|
||||
const { default: Ajv } = await import('https://esm.sh/ajv@8.12.0');
|
||||
const ajv = new Ajv({ allErrors: true });
|
||||
const validate = ajv.compile(schema);
|
||||
const valid = validate(data);
|
||||
|
||||
return {
|
||||
valid,
|
||||
errors: valid ? [] : validate.errors.map(e => ({
|
||||
path: e.instancePath || '/',
|
||||
message: e.message,
|
||||
keyword: e.keyword,
|
||||
params: e.params
|
||||
}))
|
||||
errors: valid ? [] : validate.errors.map(e =>
|
||||
`${e.instancePath || '/'} ${e.message}`.trim()
|
||||
)
|
||||
};
|
||||
};
|
||||
export default validateJSON;
|
||||
@@ -1,14 +1,13 @@
|
||||
const validateJSON = async (data, schema) => {
|
||||
const { default: Ajv } = await import('https://cdn.jsdelivr.net/npm/ajv@8/dist/ajv.bundle.js');
|
||||
|
||||
const { default: Ajv } = await import('https://esm.sh/ajv@8.12.0');
|
||||
const ajv = new Ajv({ allErrors: true });
|
||||
const validate = ajv.compile(schema);
|
||||
const valid = validate(data);
|
||||
|
||||
return {
|
||||
valid,
|
||||
errors: valid ? [] : validate.errors.map(e =>
|
||||
`${e.instancePath || 'root'} ${e.message}`
|
||||
errors: valid ? [] : validate.errors.map(err =>
|
||||
`${err.instancePath || '/'} ${err.message}`.trim()
|
||||
)
|
||||
};
|
||||
};
|
||||
|
||||
@@ -1,32 +1,25 @@
|
||||
let ajvPromise;
|
||||
const compiledSchemas = new WeakMap();
|
||||
const validateJSON = (() => {
|
||||
let ajvPromise;
|
||||
const validatorCache = new WeakMap();
|
||||
|
||||
return async (json, schema) => {
|
||||
ajvPromise ||= import('https://cdn.jsdelivr.net/npm/ajv@8/dist/ajv2020.min.js')
|
||||
.then(({ default: Ajv }) => new Ajv({ allErrors: true }));
|
||||
|
||||
const validateJSON = async (json, schema) => {
|
||||
try {
|
||||
ajvPromise ||= import('https://esm.sh/ajv@8').then(
|
||||
({ default: Ajv }) => new Ajv({ allErrors: true })
|
||||
);
|
||||
const ajv = await ajvPromise;
|
||||
|
||||
let validate = compiledSchemas.get(schema);
|
||||
let validate = validatorCache.get(schema);
|
||||
if (!validate) {
|
||||
validate = ajv.compile(schema);
|
||||
compiledSchemas.set(schema, validate);
|
||||
validatorCache.set(schema, validate);
|
||||
}
|
||||
|
||||
const valid = validate(json);
|
||||
const errors = valid
|
||||
? []
|
||||
: (validate.errors ?? []).map(({ instancePath, message }) =>
|
||||
`${instancePath.substring(1) || 'root'}: ${message}`
|
||||
);
|
||||
const errors = valid ? [] : validate.errors.map(
|
||||
({ instancePath, message }) => `${instancePath || 'object'} ${message}`
|
||||
);
|
||||
|
||||
return { valid, errors };
|
||||
} catch (error) {
|
||||
return {
|
||||
valid: false,
|
||||
errors: [error.message || 'An unknown validation error occurred.'],
|
||||
};
|
||||
}
|
||||
};
|
||||
};
|
||||
})();
|
||||
export default validateJSON;
|
||||
@@ -1,17 +1,25 @@
|
||||
let ajvReady
|
||||
const loadAjv=()=>ajvReady??=(async()=>{
|
||||
const {default:Ajv}=await import('https://cdn.jsdelivr.net/npm/ajv@8/dist/ajv2020.mjs')
|
||||
return new Ajv({allErrors:true,strict:false})
|
||||
})()
|
||||
let ajv
|
||||
const cache=new WeakMap()
|
||||
const ensureAjv=async()=>ajv??=new (await import('https://cdn.jsdelivr.net/npm/ajv@8.12.0/+esm')).default({allErrors:true,strict:false})
|
||||
const getValidator=async schema=>{
|
||||
if(cache.has(schema))return cache.get(schema)
|
||||
const v=(await ensureAjv()).compile(schema)
|
||||
cache.set(schema,v)
|
||||
return v
|
||||
}
|
||||
async function validateJSON(data,schema){
|
||||
const ajv=await loadAjv()
|
||||
const validate=ajv.compile(schema)
|
||||
const valid=validate(data)
|
||||
const errors=valid?[]:validate.errors?.map(({instancePath,message,params})=>{
|
||||
const here=instancePath||'/'
|
||||
const extra=params&&Object.keys(params).length?JSON.stringify(params):''
|
||||
return [here,message,extra].filter(Boolean).join(' ')
|
||||
})||[]
|
||||
return {valid,errors}
|
||||
try{
|
||||
const v=await getValidator(schema)
|
||||
const valid=v(data)
|
||||
const errors=valid?[]:(v.errors||[]).map(e=>{
|
||||
const path=e.instancePath||'/'
|
||||
const msg=e.message||'Invalid value'
|
||||
const meta=e.params&&Object.keys(e.params).length?` ${JSON.stringify(e.params)}`:''
|
||||
return`${path} ${msg}${meta}`.trim()
|
||||
})
|
||||
return{valid,errors}
|
||||
}catch(err){
|
||||
return{valid:false,errors:[err?.message||String(err)]}
|
||||
}
|
||||
}
|
||||
export default validateJSON;
|
||||
@@ -1,15 +1,21 @@
|
||||
async function validateJSON(data, schema) {
|
||||
const {default: Ajv} = await import('https://cdn.jsdelivr.net/npm/ajv@8/dist/ajv.min.js')
|
||||
const ajv = new Ajv({allErrors:true, strict:false})
|
||||
const validate = ajv.compile(schema)
|
||||
const valid = validate(data)
|
||||
if (valid) return {valid:true, errors:[]}
|
||||
const errors = (validate.errors || []).map(e => {
|
||||
const path = (e.instancePath || e.dataPath || '') || (e.schemaPath || '')
|
||||
const msg = e.message || 'Invalid value'
|
||||
const params = e.params ? JSON.stringify(e.params) : ''
|
||||
return [path, msg, params].filter(Boolean).join(' - ')
|
||||
})
|
||||
return {valid:false, errors}
|
||||
const { default: Ajv } = await import('https://cdn.skypack.dev/ajv@8?min');
|
||||
const { default: addFormats } = await import('https://cdn.skypack.dev/ajv-formats@2?min');
|
||||
const ajv = new Ajv({ allErrors: true, strict: false });
|
||||
addFormats(ajv);
|
||||
const compile = s => {
|
||||
const c = ajv.compile(s);
|
||||
return d => ({ ok: c(d), errs: c.errors || [] });
|
||||
};
|
||||
const run = compile(schema);
|
||||
const r = run(data);
|
||||
if (r.ok) return { valid: true, errors: [] };
|
||||
const errors = r.errs.map(e => {
|
||||
const p = e.instancePath || e.dataPath || '';
|
||||
const loc = p || e.schemaPath || '';
|
||||
const msg = e.message || 'Invalid value';
|
||||
return loc ? loc + ' ' + msg : msg;
|
||||
});
|
||||
return { valid: false, errors };
|
||||
}
|
||||
export default validateJSON;
|
||||
Reference in New Issue
Block a user