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,43 @@
|
||||
async function validateJSON(jsonObject, jsonSchema) {
|
||||
const { default: Ajv } = await import("https://esm.sh/ajv@8");
|
||||
const { default: addFormats } = await import("https://esm.sh/ajv-formats@3");
|
||||
|
||||
const ajv = new Ajv({ allErrors: true, strict: false });
|
||||
addFormats(ajv);
|
||||
|
||||
const validate = ajv.compile(jsonSchema);
|
||||
const valid = validate(jsonObject);
|
||||
|
||||
return {
|
||||
valid,
|
||||
errors: valid ? [] : validate.errors.map(e =>
|
||||
e.instancePath ? `${e.instancePath} ${e.message}` : e.message
|
||||
)
|
||||
};
|
||||
try {
|
||||
const Ajv = (await import('https://cdn.jsdelivr.net/npm/ajv@8/dist/ajv.min.js')).default
|
||||
|| (await import('https://esm.sh/ajv@8')).default;
|
||||
|
||||
const ajv = new Ajv({ allErrors: true, verbose: true });
|
||||
const validate = ajv.compile(jsonSchema);
|
||||
const valid = validate(jsonObject);
|
||||
|
||||
return {
|
||||
valid,
|
||||
errors: valid ? [] : validate.errors.map(e =>
|
||||
e.instancePath
|
||||
? `${e.instancePath} ${e.message}`
|
||||
: e.message
|
||||
)
|
||||
};
|
||||
} catch (e) {
|
||||
try {
|
||||
const { default: Ajv } = await import('https://esm.sh/ajv@8');
|
||||
const ajv = new Ajv({ allErrors: true, verbose: true });
|
||||
const validate = ajv.compile(jsonSchema);
|
||||
const valid = validate(jsonObject);
|
||||
|
||||
return {
|
||||
valid,
|
||||
errors: valid ? [] : validate.errors.map(e =>
|
||||
e.instancePath
|
||||
? `${e.instancePath} ${e.message}`
|
||||
: e.message
|
||||
)
|
||||
};
|
||||
} catch (err) {
|
||||
return {
|
||||
valid: false,
|
||||
errors: [`Schema validation failed: ${err.message}`]
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
export default validateJSON;
|
||||
export default validateJSON;
|
||||
// Generation time: 5.496s
|
||||
// Result: PASS
|
||||
@@ -1,11 +1,18 @@
|
||||
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, strict: false });
|
||||
const { default: Ajv } = await import('https://cdn.jsdelivr.net/npm/ajv@8.12.0/dist/2020.min.js');
|
||||
const ajv = new Ajv({ allErrors: true, verbose: true });
|
||||
const validate = ajv.compile(schema);
|
||||
const valid = validate(data);
|
||||
return {
|
||||
valid,
|
||||
errors: valid ? [] : validate.errors.map(e => `${e.instancePath || '/'} ${e.message}`)
|
||||
errors: valid ? [] : validate.errors.map(e => ({
|
||||
path: e.instancePath || '/',
|
||||
message: e.message,
|
||||
keyword: e.keyword,
|
||||
params: e.params
|
||||
}))
|
||||
};
|
||||
};
|
||||
export default validateJSON;
|
||||
export default validateJSON;
|
||||
// Generation time: 3.111s
|
||||
// Result: FAIL
|
||||
@@ -1,24 +0,0 @@
|
||||
const validateJSON = async (json, schema) => {
|
||||
let ajv;
|
||||
|
||||
try {
|
||||
const { default: Ajv } = await import('https://cdn.jsdelivr.net/npm/ajv@8.17.1/+esm');
|
||||
ajv = new Ajv({ allErrors: true });
|
||||
} catch (e) {
|
||||
return { valid: false, errors: ["Failed to load validator: " + e.message] };
|
||||
}
|
||||
|
||||
try {
|
||||
const validate = ajv.compile(schema);
|
||||
const valid = validate(json);
|
||||
|
||||
const errors = validate.errors?.map(
|
||||
e => `${e.instancePath || 'root'} ${e.message}`.trim()
|
||||
) ?? [];
|
||||
|
||||
return { valid, errors };
|
||||
} catch (e) {
|
||||
return { valid: false, errors: ["Invalid schema: " + e.message] };
|
||||
}
|
||||
};
|
||||
export default validateJSON;
|
||||
@@ -1,10 +1,9 @@
|
||||
const validateJSON = async (d, s) => {
|
||||
const { default: A } = await import('https://esm.sh/ajv@8.17.1')
|
||||
const v = new A({ allErrors: true }).compile(s)
|
||||
const r = v(d)
|
||||
return {
|
||||
valid: r,
|
||||
errors: r ? [] : v.errors.map(e => `${e.instancePath} ${e.message}`.trim())
|
||||
}
|
||||
}
|
||||
export default validateJSON;
|
||||
const validateJSON = async (data, schema) => {
|
||||
const { default: Ajv } = await import('https://esm.sh/ajv@8.17.1');
|
||||
const validate = new Ajv({ allErrors: true }).compile(schema);
|
||||
const valid = validate(data);
|
||||
return { valid, errors: valid ? [] : validate.errors.map(e => `${e.instancePath} ${e.message}`.trim()) };
|
||||
};
|
||||
export default validateJSON;
|
||||
// Generation time: 20.754s
|
||||
// Result: PASS
|
||||
@@ -1,12 +1,24 @@
|
||||
let Ajv;
|
||||
async function validateJSON(json, schema) {
|
||||
if(!(json&&typeof json==='object')||!(schema===true||schema===false||(schema&&typeof schema==='object')))
|
||||
return{valid:false,errors:['Invalid input']};
|
||||
try{
|
||||
if(!Ajv){const m=await import('https://esm.sh/ajv@8');Ajv=m.default}
|
||||
const ajv=new Ajv({allErrors:true}),v=ajv.compile(schema);
|
||||
const valid=v(json);
|
||||
return{valid,errors:valid?[]:v.errors.map(e=>`${e.instancePath||'root'} ${e.message}`)};
|
||||
}catch(e){return{valid:false,errors:[e.message]}}
|
||||
}
|
||||
export default validateJSON;
|
||||
let a, c;
|
||||
|
||||
export const validateJSON = async (d, s) => {
|
||||
try {
|
||||
if (!a) {
|
||||
const { default: Ajv } = await import('https://esm.sh/ajv?bundle');
|
||||
a = new Ajv({ allErrors: true });
|
||||
c = new Map();
|
||||
}
|
||||
const k = JSON.stringify(s);
|
||||
if (!c.has(k)) c.set(k, a.compile(s));
|
||||
const v = c.get(k);
|
||||
const valid = v(d);
|
||||
return {
|
||||
valid,
|
||||
errors: valid ? [] : v.errors.map(e => `${e.instancePath || 'root'} ${e.message}`)
|
||||
};
|
||||
} catch (e) {
|
||||
return { valid: false, errors: [e.message] };
|
||||
}
|
||||
};
|
||||
export default validateJSON;
|
||||
// Generation time: 19.566s
|
||||
// Result: PASS
|
||||
@@ -1,2 +1,21 @@
|
||||
const validateJSON=(()=>{let a;return async(j,s)=>{a??=(async()=>{const{default:Ajv}=await import('https://esm.run/ajv@8');return new Ajv({allErrors:1});})();const v=await a,c=v.compile(s),valid=c(j);return{valid,errors:valid?[]:(c.errors||[]).map(e=>`${e.instancePath||'/'} ${e.message}`)}}})();
|
||||
export default validateJSON;
|
||||
const loadAjv = (() => {
|
||||
let ajv
|
||||
return async () => {
|
||||
if (!ajv) {
|
||||
const { default: Ajv } = await import('https://cdn.jsdelivr.net/npm/ajv@8.12.0/dist/ajv.js')
|
||||
ajv = new Ajv({ allErrors: true, strict: false })
|
||||
}
|
||||
return ajv
|
||||
}
|
||||
})()
|
||||
|
||||
export const validateJSON = async (data, schema) => {
|
||||
const ajv = await loadAjv()
|
||||
const validate = ajv.compile(schema)
|
||||
const valid = validate(data)
|
||||
const errors = valid ? [] : validate.errors.map(e => `${e.instancePath || '/'} ${e.message}`)
|
||||
return { valid, errors }
|
||||
}
|
||||
export default validateJSON;
|
||||
// Generation time: 6.678s
|
||||
// Result: FAIL
|
||||
@@ -1,36 +0,0 @@
|
||||
const validateJSON = async (json, schema) => {
|
||||
try {
|
||||
const { default: Ajv } = await import('https://cdn.jsdelivr.net/npm/ajv@8.12.0/+esm')
|
||||
const { default: addFormats } = await import('https://cdn.jsdelivr.net/npm/ajv-formats@2.1.1/+esm')
|
||||
|
||||
const ajv = new Ajv({
|
||||
allErrors: true,
|
||||
strict: false,
|
||||
validateSchema: true
|
||||
})
|
||||
|
||||
addFormats(ajv)
|
||||
|
||||
const validate = ajv.compile(schema)
|
||||
const valid = validate(json)
|
||||
|
||||
return {
|
||||
valid,
|
||||
errors: valid ? [] : validate.errors.map(err => ({
|
||||
message: err.message,
|
||||
instancePath: err.instancePath,
|
||||
schemaPath: err.schemaPath,
|
||||
params: err.params
|
||||
}))
|
||||
}
|
||||
} catch (error) {
|
||||
return {
|
||||
valid: false,
|
||||
errors: [{
|
||||
message: error.message,
|
||||
stack: error.stack
|
||||
}]
|
||||
}
|
||||
}
|
||||
}
|
||||
export default validateJSON;
|
||||
@@ -1,21 +0,0 @@
|
||||
let ajvInstance;
|
||||
|
||||
async function validateJSON(data, schema) {
|
||||
if (!ajvInstance) {
|
||||
const { default: Ajv } = await import('https://cdn.skypack.dev/ajv@8');
|
||||
ajvInstance = new Ajv({ allErrors: true });
|
||||
}
|
||||
const ajv = ajvInstance;
|
||||
try {
|
||||
const validate = ajv.compile(schema);
|
||||
const valid = validate(data);
|
||||
const errors = valid ? [] : ajv.errorsText(validate.errors, { separator: '\n' })
|
||||
.split('\n')
|
||||
.map(s => s.trim())
|
||||
.filter(Boolean);
|
||||
return { valid, errors };
|
||||
} catch (e) {
|
||||
return { valid: false, errors: [`Schema error: ${e.message}`] };
|
||||
}
|
||||
}
|
||||
export default validateJSON;
|
||||
@@ -1,10 +0,0 @@
|
||||
async function validateJSON(data,schema){
|
||||
const{default:Ajv}=await import('https://esm.sh/ajv@7.13.4');
|
||||
const ajv=new Ajv({allErrors:true});
|
||||
const validate=ajv.compile(schema);
|
||||
const valid=validate(data);
|
||||
if(valid)return{valid:true,errors:[]};
|
||||
const errors=validate.errors.map(e=>`${e.instancePath||''} ${e.message||'Validation error'}`.trim()).filter(Boolean);
|
||||
return{valid:false,errors};
|
||||
}
|
||||
export default validateJSON;
|
||||
13
tests/8_json_validator/outputs/x-ai_grok-4.js
Normal file
13
tests/8_json_validator/outputs/x-ai_grok-4.js
Normal file
@@ -0,0 +1,13 @@
|
||||
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 });
|
||||
const validate = ajv.compile(schema);
|
||||
const valid = validate(data);
|
||||
return {
|
||||
valid,
|
||||
errors: valid ? [] : validate.errors.map(e => e.message)
|
||||
};
|
||||
}
|
||||
export default validateJSON;
|
||||
// Generation time: 16.498s
|
||||
// Result: FAIL
|
||||
Reference in New Issue
Block a user