ata-validator 1.31.0 → 1.31.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.js +16 -3
- package/lib/js-compiler.js +61 -29
- package/lib/version.js +1 -1
- package/package.json +9 -9
package/index.js
CHANGED
|
@@ -1406,7 +1406,7 @@ class Validator {
|
|
|
1406
1406
|
return this._compiled.validate(x);
|
|
1407
1407
|
});
|
|
1408
1408
|
}
|
|
1409
|
-
return _errOnlyImpl(d);
|
|
1409
|
+
return _mustReject(_errOnlyImpl(d));
|
|
1410
1410
|
};
|
|
1411
1411
|
|
|
1412
1412
|
// Best path: combined validator (single pass, validates + collects errors)
|
|
@@ -1450,7 +1450,7 @@ class Validator {
|
|
|
1450
1450
|
let _errPreferredImpl = null;
|
|
1451
1451
|
const errPreferCombined = (d) => {
|
|
1452
1452
|
if (_errPreferredImpl === null) _errPreferredImpl = combinedIfSafe() || errOnly;
|
|
1453
|
-
return _errPreferredImpl(d);
|
|
1453
|
+
return _mustReject(_errPreferredImpl(d));
|
|
1454
1454
|
};
|
|
1455
1455
|
|
|
1456
1456
|
// The boolean engine is the verdict authority for these paths; the
|
|
@@ -1513,7 +1513,7 @@ class Validator {
|
|
|
1513
1513
|
let impl = null;
|
|
1514
1514
|
const onReject = (data) => {
|
|
1515
1515
|
const combined = combinedIfSafe();
|
|
1516
|
-
if (combined) { impl = combined; return combined(data); }
|
|
1516
|
+
if (combined) { impl = combined; return _mustReject(combined(data)); }
|
|
1517
1517
|
return errOnly(data);
|
|
1518
1518
|
};
|
|
1519
1519
|
const hybridFn = jsFn._hybridFactory(VALID_RESULT, onReject);
|
|
@@ -2666,6 +2666,19 @@ Object.defineProperty(Validator.prototype, "~standard", {
|
|
|
2666
2666
|
},
|
|
2667
2667
|
});
|
|
2668
2668
|
|
|
2669
|
+
// The error resolvers run only after a verdict function has said no. If one
|
|
2670
|
+
// answers valid anyway, two generators disagree, and the verdict is the one
|
|
2671
|
+
// to keep: returning the resolver's answer is how a vacuous combined function
|
|
2672
|
+
// turned a rejection into an acceptance in validateJSON. The disagreement is
|
|
2673
|
+
// reported as a generic failure rather than hidden.
|
|
2674
|
+
const _VERDICT_DISAGREES = Object.freeze({
|
|
2675
|
+
valid: false,
|
|
2676
|
+
errors: Object.freeze([Object.freeze({ keyword: 'validation', instancePath: '', schemaPath: '#', params: Object.freeze({}), message: 'schema validation failed' })]),
|
|
2677
|
+
});
|
|
2678
|
+
function _mustReject(r) {
|
|
2679
|
+
return r && r.valid === false ? r : _VERDICT_DISAGREES;
|
|
2680
|
+
}
|
|
2681
|
+
|
|
2669
2682
|
// Install the verdict method. Every place that binds isValidObject comes
|
|
2670
2683
|
// through here, so a check registered with _extendVerdict survives the method
|
|
2671
2684
|
// being replaced as the validator compiles further, which it does more than
|
package/lib/js-compiler.js
CHANGED
|
@@ -968,6 +968,23 @@ function hasNestedIdScope(node, isRoot = true) {
|
|
|
968
968
|
// only safe way out.
|
|
969
969
|
const DECLINE = Symbol('ata.decline')
|
|
970
970
|
|
|
971
|
+
// The error and combined generators compile the subschemas of not, if, contains
|
|
972
|
+
// and their anyOf/oneOf closures with the boolean generator. That generator
|
|
973
|
+
// follows a reference back to the root with `_validate` and a reference cycle
|
|
974
|
+
// with a named function in its preamble, and neither exists inside the other
|
|
975
|
+
// two generators' functions: the first threw a ReferenceError on the first
|
|
976
|
+
// document that reached it, and the second cut the cycle, so the reference
|
|
977
|
+
// checked nothing. While `nestedBoolean` is set, genCode declines at those
|
|
978
|
+
// points instead, and the caller's generator declines the schema.
|
|
979
|
+
function nestedGenCode(schema, v, lines, ctx) {
|
|
980
|
+
ctx.nestedBoolean = (ctx.nestedBoolean || 0) + 1
|
|
981
|
+
try {
|
|
982
|
+
genCode(schema, v, lines, ctx)
|
|
983
|
+
} finally {
|
|
984
|
+
ctx.nestedBoolean--
|
|
985
|
+
}
|
|
986
|
+
}
|
|
987
|
+
|
|
971
988
|
const CYCLE_DEPTH = 512
|
|
972
989
|
|
|
973
990
|
// Declarations the guarded functions close over. Emitted once, ahead of them.
|
|
@@ -1878,6 +1895,7 @@ function genCode(schema, v, lines, ctx, knownType) {
|
|
|
1878
1895
|
if (schema.$ref) {
|
|
1879
1896
|
// Self-reference "#" — recursive call to root validator
|
|
1880
1897
|
if (schema.$ref === '#') {
|
|
1898
|
+
if (ctx.nestedBoolean) throw DECLINE
|
|
1881
1899
|
ctx.usesRecursion = true
|
|
1882
1900
|
lines.push(`if(!_validate(${v}))return false`)
|
|
1883
1901
|
if (!hasSiblings) return
|
|
@@ -1920,7 +1938,7 @@ function genCode(schema, v, lines, ctx, knownType) {
|
|
|
1920
1938
|
}
|
|
1921
1939
|
lines.push(`if(!${fnName}(${v}))return false`)
|
|
1922
1940
|
if (!hasSiblings) return
|
|
1923
|
-
} else if (ctx.refStack.has(schema.$ref)) { if (!hasSiblings) return }
|
|
1941
|
+
} else if (ctx.refStack.has(schema.$ref)) { if (ctx.nestedBoolean) throw DECLINE; if (!hasSiblings) return }
|
|
1924
1942
|
else {
|
|
1925
1943
|
ctx.refStack.add(schema.$ref)
|
|
1926
1944
|
genCode(ctx.rootDefs[defName], v, lines, ctx, knownType)
|
|
@@ -1932,7 +1950,7 @@ function genCode(schema, v, lines, ctx, knownType) {
|
|
|
1932
1950
|
const entry = ctx.rootDefs && ctx.rootDefs[schema.$ref]
|
|
1933
1951
|
const anchorTarget = entry && entry.raw ? entry.raw : (ctx.anchors && ctx.anchors[schema.$ref])
|
|
1934
1952
|
if (anchorTarget) {
|
|
1935
|
-
if (ctx.refStack.has(schema.$ref)) { if (!hasSiblings) return }
|
|
1953
|
+
if (ctx.refStack.has(schema.$ref)) { if (ctx.nestedBoolean) throw DECLINE; if (!hasSiblings) return }
|
|
1936
1954
|
else {
|
|
1937
1955
|
ctx.refStack.add(schema.$ref)
|
|
1938
1956
|
genCode(anchorTarget, v, lines, ctx, knownType)
|
|
@@ -1975,11 +1993,13 @@ function genCode(schema, v, lines, ctx, knownType) {
|
|
|
1975
1993
|
const target = ctx.anchors[anchorKey]
|
|
1976
1994
|
if (target === ctx.rootSchema) {
|
|
1977
1995
|
// Self-recursive: generate _validate(v) call
|
|
1996
|
+
if (ctx.nestedBoolean) throw DECLINE
|
|
1978
1997
|
ctx.usesRecursion = true
|
|
1979
1998
|
lines.push(`if(!_validate(${v}))return false`)
|
|
1980
1999
|
} else {
|
|
1981
2000
|
// Different schema: inline the target validation
|
|
1982
2001
|
const refKey = '$dynamicRef:' + anchorKey
|
|
2002
|
+
if (ctx.refStack.has(refKey) && ctx.nestedBoolean) throw DECLINE
|
|
1983
2003
|
if (!ctx.refStack.has(refKey)) {
|
|
1984
2004
|
ctx.refStack.add(refKey)
|
|
1985
2005
|
genCode(target, v, lines, ctx, knownType)
|
|
@@ -4178,7 +4198,7 @@ function genCodeE(schema, v, pathExpr, lines, ctx, schemaPrefix) {
|
|
|
4178
4198
|
if (schema.contains !== undefined) {
|
|
4179
4199
|
const ci = ctx.varCounter++
|
|
4180
4200
|
const subLines = []
|
|
4181
|
-
|
|
4201
|
+
nestedGenCode(schema.contains, `_cv`, subLines, ctx)
|
|
4182
4202
|
const fnBody = subLines.length === 0 ? `return true` : `${subLines.join(';')};return true`
|
|
4183
4203
|
const minC = schema.minContains !== undefined ? schema.minContains : 1
|
|
4184
4204
|
const maxC = schema.maxContains
|
|
@@ -4210,7 +4230,7 @@ function genCodeE(schema, v, pathExpr, lines, ctx, schemaPrefix) {
|
|
|
4210
4230
|
// not
|
|
4211
4231
|
if (schema.not !== undefined) {
|
|
4212
4232
|
const subLines = []
|
|
4213
|
-
|
|
4233
|
+
nestedGenCode(schema.not, '_nv', subLines, ctx)
|
|
4214
4234
|
const nfn = subLines.length === 0 ? `function(_nv){return true}` : `function(_nv){${subLines.join(';')};return true}`
|
|
4215
4235
|
const fi = ctx.varCounter++
|
|
4216
4236
|
lines.push(`{const _nf${fi}=${nfn};if(_nf${fi}(${v})){${fail('not', 'not', '{}', "'must NOT be valid'")}}}`)
|
|
@@ -4219,7 +4239,7 @@ function genCodeE(schema, v, pathExpr, lines, ctx, schemaPrefix) {
|
|
|
4219
4239
|
// if/then/else
|
|
4220
4240
|
if (schema.if !== undefined) {
|
|
4221
4241
|
const ifLines = []
|
|
4222
|
-
|
|
4242
|
+
nestedGenCode(schema.if, '_iv', ifLines, ctx)
|
|
4223
4243
|
const fi = ctx.varCounter++
|
|
4224
4244
|
const ifFn = ifLines.length === 0
|
|
4225
4245
|
? `function(_iv){return true}`
|
|
@@ -4324,22 +4344,34 @@ function compileToJSCombined(schema, VALID_RESULT, schemaMap, userFormats) {
|
|
|
4324
4344
|
const ctx = { varCounter: 0, helperCode: [], shared: [], closureVars: ['_cpLen'], closureVals: [_cpLen],
|
|
4325
4345
|
rootDefs: cRootDefs, refStack: new Set(), schemaMap: schemaMap || null, anchors: cAnchors, rootSchema: schema, userFormats: userFormats || null }
|
|
4326
4346
|
const lines = []
|
|
4327
|
-
|
|
4347
|
+
try {
|
|
4348
|
+
genCodeC(schema, 'd', '', lines, ctx, '#')
|
|
4349
|
+
} catch (e) {
|
|
4350
|
+
if (e === DECLINE) return null
|
|
4351
|
+
throw e
|
|
4352
|
+
}
|
|
4328
4353
|
if (lines.length === 0) return () => VALID_RESULT
|
|
4329
4354
|
|
|
4330
|
-
// Use factory pattern: closure vars (regexes, etc.) created once, not per call
|
|
4331
|
-
|
|
4332
|
-
//
|
|
4355
|
+
// Use factory pattern: closure vars (regexes, etc.) created once, not per call.
|
|
4356
|
+
// The helpers are constants too and are declared in the factory: inside the
|
|
4357
|
+
// function they were rebuilt on every call. `__ataSafeRe` is bound when a
|
|
4358
|
+
// helper compiles a pattern through it, which the boolean generator does for
|
|
4359
|
+
// subschemas under not/if/contains; without the binding those threw a
|
|
4360
|
+
// ReferenceError on the first document that reached them.
|
|
4361
|
+
const closureNames = ctx.usesSafeRe ? [...ctx.closureVars, '__ataSafeRe'] : ctx.closureVars
|
|
4362
|
+
const closureArgs = ctx.usesSafeRe ? [...ctx.closureVals, compileSafe] : ctx.closureVals
|
|
4363
|
+
const closureParams = closureNames.join(',')
|
|
4364
|
+
const helpers = ctx.helperCode.length ? ctx.helperCode.join('\n ') + '\n ' : ''
|
|
4365
|
+
// Lazy error array: no allocation for valid data (the common case)
|
|
4333
4366
|
const inner = `let _e;\n ` +
|
|
4334
|
-
(ctx.helperCode.length ? ctx.helperCode.join('\n ') + '\n ' : '') +
|
|
4335
4367
|
lines.join('\n ') +
|
|
4336
4368
|
`\n return _e?{valid:false,errors:_e}:R`
|
|
4337
4369
|
|
|
4338
4370
|
try {
|
|
4339
|
-
if (typeof process !== 'undefined' && process.env && process.env.ATA_DUMP_CODEGEN) console.log('=== COMBINED CODEGEN ===\n' + inner + '\n=== CLOSURE VARS: ' + ctx.closureVars.length + ' ===')
|
|
4371
|
+
if (typeof process !== 'undefined' && process.env && process.env.ATA_DUMP_CODEGEN) console.log('=== COMBINED CODEGEN ===\n' + helpers + inner + '\n=== CLOSURE VARS: ' + ctx.closureVars.length + ' ===')
|
|
4340
4372
|
const factory = new Function('R' + (closureParams ? ',' + closureParams : ''),
|
|
4341
|
-
|
|
4342
|
-
return factory(VALID_RESULT, ...
|
|
4373
|
+
`${helpers}return function(d){${inner}}`)
|
|
4374
|
+
return factory(VALID_RESULT, ...closureArgs)
|
|
4343
4375
|
} catch (e) {
|
|
4344
4376
|
if (typeof process !== 'undefined' && process.env && process.env.ATA_DEBUG) console.error('compileToJSCombined error:', e.message, '\n', inner.slice(0, 500))
|
|
4345
4377
|
return null
|
|
@@ -4411,17 +4443,17 @@ function genCodeC(schema, v, pathExpr, lines, ctx, schemaPrefix) {
|
|
|
4411
4443
|
const anchorKey = schema.$dynamicRef.startsWith('#') ? schema.$dynamicRef : '#' + schema.$dynamicRef
|
|
4412
4444
|
if (ctx.anchors && ctx.anchors[anchorKey]) {
|
|
4413
4445
|
const target = ctx.anchors[anchorKey]
|
|
4414
|
-
|
|
4415
|
-
|
|
4416
|
-
|
|
4417
|
-
|
|
4418
|
-
|
|
4419
|
-
|
|
4420
|
-
|
|
4421
|
-
|
|
4422
|
-
|
|
4423
|
-
|
|
4424
|
-
|
|
4446
|
+
// This generator has no named functions, so it cannot follow a reference
|
|
4447
|
+
// back to the root or around a cycle. It used to emit nothing in both
|
|
4448
|
+
// cases, which the function then answered as valid: a document the other
|
|
4449
|
+
// generators reject passed through validateJSON. It declines instead,
|
|
4450
|
+
// and the schema takes the error generator.
|
|
4451
|
+
if (target === ctx.rootSchema) throw DECLINE
|
|
4452
|
+
const refKey = '$dynamicRef:' + anchorKey
|
|
4453
|
+
if (ctx.refStack.has(refKey)) throw DECLINE
|
|
4454
|
+
ctx.refStack.add(refKey)
|
|
4455
|
+
genCodeC(target, v, pathExpr, lines, ctx, schemaPrefix)
|
|
4456
|
+
ctx.refStack.delete(refKey)
|
|
4425
4457
|
}
|
|
4426
4458
|
}
|
|
4427
4459
|
|
|
@@ -4904,7 +4936,7 @@ function genCodeC(schema, v, pathExpr, lines, ctx, schemaPrefix) {
|
|
|
4904
4936
|
if (schema.contains !== undefined) {
|
|
4905
4937
|
const ci = ctx.varCounter++
|
|
4906
4938
|
const subLines = []
|
|
4907
|
-
|
|
4939
|
+
nestedGenCode(schema.contains, `_cv`, subLines, ctx)
|
|
4908
4940
|
const fnBody = subLines.length === 0 ? `return true` : `${subLines.join(';')};return true`
|
|
4909
4941
|
const minC = schema.minContains !== undefined ? schema.minContains : 1
|
|
4910
4942
|
const maxC = schema.maxContains
|
|
@@ -4920,20 +4952,20 @@ function genCodeC(schema, v, pathExpr, lines, ctx, schemaPrefix) {
|
|
|
4920
4952
|
// anyOf
|
|
4921
4953
|
if (schema.anyOf) {
|
|
4922
4954
|
const fi = ctx.varCounter++
|
|
4923
|
-
const fns = schema.anyOf.map(sub => { const sl = [];
|
|
4955
|
+
const fns = schema.anyOf.map(sub => { const sl = []; nestedGenCode(sub, '_av', sl, ctx); return sl.length === 0 ? `function(_av){return true}` : `function(_av){${sl.join(';')};return true}` })
|
|
4924
4956
|
lines.push(`{const _af${fi}=[${fns.join(',')}];let _am=false;for(let _ai=0;_ai<_af${fi}.length;_ai++){if(_af${fi}[_ai](${v})){_am=true;break}}if(!_am){${fail('anyOf', 'anyOf', '{}', "'must match a schema in anyOf'")}}}`)
|
|
4925
4957
|
}
|
|
4926
4958
|
|
|
4927
4959
|
// oneOf
|
|
4928
4960
|
if (schema.oneOf) {
|
|
4929
4961
|
const fi = ctx.varCounter++
|
|
4930
|
-
const fns = schema.oneOf.map(sub => { const sl = [];
|
|
4962
|
+
const fns = schema.oneOf.map(sub => { const sl = []; nestedGenCode(sub, '_ov', sl, ctx); return sl.length === 0 ? `function(_ov){return true}` : `function(_ov){${sl.join(';')};return true}` })
|
|
4931
4963
|
lines.push(`{const _of${fi}=[${fns.join(',')}];let _oc=0;for(let _oi=0;_oi<_of${fi}.length;_oi++){if(_of${fi}[_oi](${v}))_oc++;if(_oc>1)break}if(_oc!==1){${fail('oneOf', 'oneOf', '{}', "'must match exactly one schema in oneOf'")}}}`)
|
|
4932
4964
|
}
|
|
4933
4965
|
|
|
4934
4966
|
// not
|
|
4935
4967
|
if (schema.not !== undefined) {
|
|
4936
|
-
const sl = [];
|
|
4968
|
+
const sl = []; nestedGenCode(schema.not, '_nv', sl, ctx)
|
|
4937
4969
|
const nfn = sl.length === 0 ? `function(_nv){return true}` : `function(_nv){${sl.join(';')};return true}`
|
|
4938
4970
|
const fi = ctx.varCounter++
|
|
4939
4971
|
lines.push(`{const _nf${fi}=${nfn};if(_nf${fi}(${v})){${fail('not', 'not', '{}', "'must NOT be valid'")}}}`)
|
|
@@ -4941,7 +4973,7 @@ function genCodeC(schema, v, pathExpr, lines, ctx, schemaPrefix) {
|
|
|
4941
4973
|
|
|
4942
4974
|
// if/then/else
|
|
4943
4975
|
if (schema.if !== undefined) {
|
|
4944
|
-
const sl = [];
|
|
4976
|
+
const sl = []; nestedGenCode(schema.if, '_iv', sl, ctx)
|
|
4945
4977
|
const fi = ctx.varCounter++
|
|
4946
4978
|
const ifFn = sl.length === 0 ? `function(_iv){return true}` : `function(_iv){${sl.join(';')};return true}`
|
|
4947
4979
|
lines.push(`{const _if${fi}=${ifFn}`)
|
package/lib/version.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ata-validator",
|
|
3
|
-
"version": "1.31.
|
|
3
|
+
"version": "1.31.1",
|
|
4
4
|
"description": "JSON Schema validation that compiles for speed and still runs where code generation is blocked. Compiled and interpreted engines answer identically at 100% of the official suite. TypeScript inference, Standard Schema V1, and a build step that emits dependency-free modules.",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"module": "index.mjs",
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
"release:check": "node scripts/regen-safe-regex-source.js && node tests/test_pack_purity.js && node scripts/check-doc-coverage.js && node tests/test_error_codes_lock.js && node tests/test_safe_regex_source_sync.js && node tests/test_version_sync.js",
|
|
52
52
|
"build": "cmake-js build --target ata",
|
|
53
53
|
"rebuild": "cmake-js rebuild --target ata",
|
|
54
|
-
"test": "node test.js && node tests/test_removed_aot_methods.js && node tests/test_no_native.js && node tests/test_no_eval.js && node tests/test_property_dependencies.js && node tests/test_v1_dialect.js && node tests/test_buffer_path_parity.js && node tests/test_buffer_gate.js && node tests/test_scanner_differential.js && node tests/test_validate_json_scanner_cost.js && node tests/test_buffer_reject_cost.js && node tests/test_nan_verdict.js && node tests/test_remove_additional_nested.js && node tests/test_exclusive_bounds.js && node tests/test_engine_differential.js && node tests/test_error_shape_differential.js && node tests/test_output_format.js && node tests/test_retry_message.js && node tests/test_describe_schema.js && node tests/test_aot_parse.js && node tests/test_draft7_semantics.js && node tests/test_metaschema_ref.js && node tests/test_pure_js_unsupported.js && node tests/test_native_load_order.js && node tests/test_pack_purity.js && node tests/test_make_native_package.js && node tests/test_browser_nofs.js && node tests/test_browser_imports_guard.js && node tests/test_version_sync.js && node tests/test_native_loaded.js && node tests/test_safe_regex_source_sync.js && node tests/test_t_builder.js && node tests/test_async_refine.js && node tests/test_safe_regex.js && node tests/test_safe_regex_integration.js && node tests/test_aot_build.js && node tests/test_aot_differential.js && node tests/test_aot_cli_build.js && node tests/test_aot_cli_smoke.js && node tests/test_bundle_standalone.js && node tests/test_standalone_anyof.js && node tests/test_standalone_formats.js && node tests/test_aot_format_mode.js && node tests/test_aot_additional_props_errors.js && node tests/test_id_anchor_refs.js && node tests/test_engine_routing.js && node tests/test_engine_option.js && node tests/test_compile_cache_order.js && node tests/test_engine_diagnostic.js && node tests/test_format_engine_parity.js && node tests/test_error_accumulator_collision.js && node tests/test_uri_helper_parity.js && node tests/test_uri_fast_path.js && node tests/test_extend_verdict.js && node tests/test_ipv4_regex.js && node tests/test_ipv6_fast_path.js && node tests/test_formats_single_pass.js && node tests/test_email_format_cost.js && node tests/test_format_single_error.js && node tests/test_defs_pointer_alias.js && node tests/test_cross_doc_root_ref.js && node tests/test_codegen_entrypoint_agreement.js && node tests/test_hybrid_agreement.js && node tests/test_codegen_edge_shapes.js && node tests/test_deferred_def_scope.js && node tests/test_node_scoped_ctx_flags.js && node tests/test_fast_slot_exhaustion.js && node tests/test_ajv_errors.js && node tests/test_custom_keywords.js && node tests/test_strict_schema.js && node tests/test_aot_external_checks.js && node tests/test_ajv_parity.js && node tests/test_user_format_error_path.js && node tests/test_unevaluated_error_path.js && node tests/test_unevaluated_error_shape.js && node tests/test_pattern_properties_errors.js && node tests/test_additional_properties_scaling.js && node tests/test_additional_props_combined_cost.js && node tests/test_no_input_mutation.js && node tests/test_typed_validator_runner.js && node tests/test_define_schema.js && node tests/test_error_codes_lock.js && node tests/test_error_code_lookup.js && node tests/test_error_order.js && node tests/test_error_order_ordinal.js && node tests/test_rejection_shape.js && node tests/test_lazy_normalization.js && node tests/test_value_equality.js && node tests/test_vocabulary.js && node tests/test_schema_scan.js && node tests/test_lazy_errors.js && node tests/test_single_pass_errors.js && node tests/test_lazy_json_errors.js && node tests/test_lazy_instance.js && node tests/test_cyclic_input.js && node tests/test_native_error_codes.js && node tests/test_verdict_preprocess.js && node tests/test_defaults_own_keys.js && node tests/test_plan_compiler.js && node tests/test_nullable.js && node tests/test_validate_and_parse.js && node tests/test_validate_data.js && node tests/test_enrich_error.js && node tests/test_enrich_received.js && node tests/test_rich_errors_optout.js && node tests/test_error_messages.js && node tests/test_source_positions.js && node tests/fuzz_positions.js && node tests/test_malformed_json_termination.js && node tests/test_data_positions.js && node tests/test_targeted_positions.js && node tests/test_position_map_cost.js && node tests/test_targeted_positions_cost.js && node tests/test_aot_staleness.js && node tests/test_file_positions.js && node tests/test_aot_positions_cost.js && node tests/test_schema_hash.js && node tests/test_render_shared.js && node tests/test_renderers.js && node tests/test_additive_fields.js && node tests/test_diagnostic_source.js && node tests/test_diagnose.js && node tests/test_correlate.js && node tests/test_diagnostics_score.js && node tests/test_runtime_error_dx.js && node tests/test_aot_error_dx.js && node tests/test_abort_early.js && node tests/test_branch_collapse.js && node tests/test_suggestions.js && node tests/test_cli_validate.js && node tests/test_cli_version.js && node benchmark/bench_aot_size.mjs",
|
|
54
|
+
"test": "node test.js && node tests/test_removed_aot_methods.js && node tests/test_no_native.js && node tests/test_no_eval.js && node tests/test_property_dependencies.js && node tests/test_v1_dialect.js && node tests/test_buffer_path_parity.js && node tests/test_buffer_gate.js && node tests/test_scanner_differential.js && node tests/test_validate_json_scanner_cost.js && node tests/test_buffer_reject_cost.js && node tests/test_nan_verdict.js && node tests/test_remove_additional_nested.js && node tests/test_exclusive_bounds.js && node tests/test_engine_differential.js && node tests/test_error_shape_differential.js && node tests/test_output_format.js && node tests/test_retry_message.js && node tests/test_describe_schema.js && node tests/test_aot_parse.js && node tests/test_draft7_semantics.js && node tests/test_metaschema_ref.js && node tests/test_pure_js_unsupported.js && node tests/test_native_load_order.js && node tests/test_pack_purity.js && node tests/test_make_native_package.js && node tests/test_browser_nofs.js && node tests/test_browser_imports_guard.js && node tests/test_version_sync.js && node tests/test_native_loaded.js && node tests/test_safe_regex_source_sync.js && node tests/test_t_builder.js && node tests/test_async_refine.js && node tests/test_safe_regex.js && node tests/test_safe_regex_integration.js && node tests/test_aot_build.js && node tests/test_aot_differential.js && node tests/test_aot_cli_build.js && node tests/test_aot_cli_smoke.js && node tests/test_bundle_standalone.js && node tests/test_standalone_anyof.js && node tests/test_standalone_formats.js && node tests/test_aot_format_mode.js && node tests/test_aot_additional_props_errors.js && node tests/test_id_anchor_refs.js && node tests/test_engine_routing.js && node tests/test_engine_option.js && node tests/test_compile_cache_order.js && node tests/test_engine_diagnostic.js && node tests/test_format_engine_parity.js && node tests/test_error_accumulator_collision.js && node tests/test_uri_helper_parity.js && node tests/test_uri_fast_path.js && node tests/test_extend_verdict.js && node tests/test_ipv4_regex.js && node tests/test_ipv6_fast_path.js && node tests/test_nested_recursion_decline.js && node tests/test_formats_single_pass.js && node tests/test_email_format_cost.js && node tests/test_format_single_error.js && node tests/test_defs_pointer_alias.js && node tests/test_cross_doc_root_ref.js && node tests/test_codegen_entrypoint_agreement.js && node tests/test_hybrid_agreement.js && node tests/test_codegen_edge_shapes.js && node tests/test_deferred_def_scope.js && node tests/test_node_scoped_ctx_flags.js && node tests/test_fast_slot_exhaustion.js && node tests/test_ajv_errors.js && node tests/test_custom_keywords.js && node tests/test_strict_schema.js && node tests/test_aot_external_checks.js && node tests/test_ajv_parity.js && node tests/test_user_format_error_path.js && node tests/test_unevaluated_error_path.js && node tests/test_unevaluated_error_shape.js && node tests/test_pattern_properties_errors.js && node tests/test_additional_properties_scaling.js && node tests/test_additional_props_combined_cost.js && node tests/test_no_input_mutation.js && node tests/test_typed_validator_runner.js && node tests/test_define_schema.js && node tests/test_error_codes_lock.js && node tests/test_error_code_lookup.js && node tests/test_error_order.js && node tests/test_error_order_ordinal.js && node tests/test_rejection_shape.js && node tests/test_lazy_normalization.js && node tests/test_value_equality.js && node tests/test_vocabulary.js && node tests/test_schema_scan.js && node tests/test_lazy_errors.js && node tests/test_single_pass_errors.js && node tests/test_lazy_json_errors.js && node tests/test_lazy_instance.js && node tests/test_cyclic_input.js && node tests/test_native_error_codes.js && node tests/test_verdict_preprocess.js && node tests/test_defaults_own_keys.js && node tests/test_plan_compiler.js && node tests/test_nullable.js && node tests/test_validate_and_parse.js && node tests/test_validate_data.js && node tests/test_enrich_error.js && node tests/test_enrich_received.js && node tests/test_rich_errors_optout.js && node tests/test_error_messages.js && node tests/test_source_positions.js && node tests/fuzz_positions.js && node tests/test_malformed_json_termination.js && node tests/test_data_positions.js && node tests/test_targeted_positions.js && node tests/test_position_map_cost.js && node tests/test_targeted_positions_cost.js && node tests/test_aot_staleness.js && node tests/test_file_positions.js && node tests/test_aot_positions_cost.js && node tests/test_schema_hash.js && node tests/test_render_shared.js && node tests/test_renderers.js && node tests/test_additive_fields.js && node tests/test_diagnostic_source.js && node tests/test_diagnose.js && node tests/test_correlate.js && node tests/test_diagnostics_score.js && node tests/test_runtime_error_dx.js && node tests/test_aot_error_dx.js && node tests/test_abort_early.js && node tests/test_branch_collapse.js && node tests/test_suggestions.js && node tests/test_cli_validate.js && node tests/test_cli_version.js && node benchmark/bench_aot_size.mjs",
|
|
55
55
|
"bench:size": "node benchmark/bench_aot_size.mjs",
|
|
56
56
|
"test:suite": "node tests/run_suite.js && node tests/run_suite.js draft7 && node tests/run_suite.js v1",
|
|
57
57
|
"test:compat": "node tests/test_compat.js",
|
|
@@ -121,13 +121,13 @@
|
|
|
121
121
|
"LICENSE"
|
|
122
122
|
],
|
|
123
123
|
"optionalDependencies": {
|
|
124
|
-
"@ata-validator/native-darwin-arm64": "1.31.
|
|
125
|
-
"@ata-validator/native-darwin-x64": "1.31.
|
|
126
|
-
"@ata-validator/native-linux-arm64-gnu": "1.31.
|
|
127
|
-
"@ata-validator/native-linux-arm64-musl": "1.31.
|
|
128
|
-
"@ata-validator/native-linux-x64-gnu": "1.31.
|
|
129
|
-
"@ata-validator/native-linux-x64-musl": "1.31.
|
|
130
|
-
"@ata-validator/native-win32-x64": "1.31.
|
|
124
|
+
"@ata-validator/native-darwin-arm64": "1.31.1",
|
|
125
|
+
"@ata-validator/native-darwin-x64": "1.31.1",
|
|
126
|
+
"@ata-validator/native-linux-arm64-gnu": "1.31.1",
|
|
127
|
+
"@ata-validator/native-linux-arm64-musl": "1.31.1",
|
|
128
|
+
"@ata-validator/native-linux-x64-gnu": "1.31.1",
|
|
129
|
+
"@ata-validator/native-linux-x64-musl": "1.31.1",
|
|
130
|
+
"@ata-validator/native-win32-x64": "1.31.1"
|
|
131
131
|
},
|
|
132
132
|
"peerDependencies": {
|
|
133
133
|
"yaml": "^2.0.0"
|