@sourcemeta/blaze 15.3.0 → 15.4.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/describe.mjs +75 -2
- package/index.mjs +250 -231
- package/opcodes.mjs +88 -86
- package/package.json +1 -1
package/describe.mjs
CHANGED
|
@@ -4,7 +4,8 @@ import {
|
|
|
4
4
|
ASSERTION_DEFINES_EXACTLY, ASSERTION_DEFINES_EXACTLY_STRICT,
|
|
5
5
|
ASSERTION_DEFINES_EXACTLY_STRICT_HASH3, ASSERTION_PROPERTY_DEPENDENCIES,
|
|
6
6
|
ASSERTION_TYPE, ASSERTION_TYPE_ANY, ASSERTION_TYPE_STRICT,
|
|
7
|
-
ASSERTION_TYPE_STRICT_ANY,
|
|
7
|
+
ASSERTION_TYPE_STRICT_ANY, ASSERTION_NOT_TYPE_STRICT_ANY,
|
|
8
|
+
ASSERTION_TYPE_STRING_BOUNDED,
|
|
8
9
|
ASSERTION_TYPE_STRING_UPPER, ASSERTION_TYPE_ARRAY_BOUNDED,
|
|
9
10
|
ASSERTION_TYPE_ARRAY_UPPER, ASSERTION_TYPE_OBJECT_BOUNDED,
|
|
10
11
|
ASSERTION_TYPE_OBJECT_UPPER, ASSERTION_REGEX,
|
|
@@ -49,6 +50,7 @@ import {
|
|
|
49
50
|
const TYPE_INTEGER = 2;
|
|
50
51
|
const TYPE_REAL = 3;
|
|
51
52
|
const TYPE_OBJECT = 6;
|
|
53
|
+
const TYPE_DECIMAL = 7;
|
|
52
54
|
|
|
53
55
|
const TYPE_NAMES = [ 'null', 'boolean', 'integer', 'number',
|
|
54
56
|
'string', 'array', 'object', 'number' ];
|
|
@@ -214,6 +216,22 @@ function describeTypeCheck(valid, currentType, expectedType) {
|
|
|
214
216
|
return message;
|
|
215
217
|
}
|
|
216
218
|
|
|
219
|
+
function describeNotTypeCheck(valid, currentType, expectedType) {
|
|
220
|
+
let message = 'The value was expected to NOT be of type ' + typeName(expectedType);
|
|
221
|
+
if (!valid) {
|
|
222
|
+
message += ' but it was of type ';
|
|
223
|
+
if (currentType === TYPE_DECIMAL && expectedType === TYPE_INTEGER) {
|
|
224
|
+
message += 'integer';
|
|
225
|
+
} else if ((currentType === TYPE_INTEGER && expectedType === TYPE_REAL) ||
|
|
226
|
+
currentType === TYPE_DECIMAL) {
|
|
227
|
+
message += 'number';
|
|
228
|
+
} else {
|
|
229
|
+
message += typeName(currentType);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
return message;
|
|
233
|
+
}
|
|
234
|
+
|
|
217
235
|
function describeTypesCheck(valid, currentType, bitmask) {
|
|
218
236
|
let types = normalizeTypes(bitmask);
|
|
219
237
|
const hasReal = (bitmask & (1 << TYPE_REAL)) !== 0;
|
|
@@ -265,6 +283,57 @@ function describeTypesCheck(valid, currentType, bitmask) {
|
|
|
265
283
|
return message;
|
|
266
284
|
}
|
|
267
285
|
|
|
286
|
+
function describeNotTypesCheck(valid, currentType, bitmask) {
|
|
287
|
+
let types = normalizeTypes(bitmask);
|
|
288
|
+
const hasReal = (bitmask & (1 << TYPE_REAL)) !== 0;
|
|
289
|
+
const hasInteger = (bitmask & (1 << TYPE_INTEGER)) !== 0;
|
|
290
|
+
|
|
291
|
+
let popcount = 0;
|
|
292
|
+
for (let bit = 0; bit < 8; bit++) {
|
|
293
|
+
if ((types & (1 << bit)) !== 0) popcount++;
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
if (popcount === 1) {
|
|
297
|
+
let typeIndex = 0;
|
|
298
|
+
for (let bit = 0; bit < 8; bit++) {
|
|
299
|
+
if ((types & (1 << bit)) !== 0) { typeIndex = bit; break; }
|
|
300
|
+
}
|
|
301
|
+
return describeNotTypeCheck(valid, currentType, typeIndex);
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
let message = 'The value was expected to NOT be of type ';
|
|
305
|
+
let first = true;
|
|
306
|
+
let lastBit = 0;
|
|
307
|
+
for (let bit = 0; bit < 8; bit++) {
|
|
308
|
+
if ((types & (1 << bit)) !== 0) lastBit = bit;
|
|
309
|
+
}
|
|
310
|
+
for (let bit = 0; bit < 8; bit++) {
|
|
311
|
+
if ((types & (1 << bit)) !== 0) {
|
|
312
|
+
if (!first) message += ', ';
|
|
313
|
+
if (bit === lastBit) message += 'or ';
|
|
314
|
+
message += typeName(bit);
|
|
315
|
+
first = false;
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
if (valid) {
|
|
320
|
+
message += ' and it was of type ';
|
|
321
|
+
} else {
|
|
322
|
+
message += ' but it was of type ';
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
if (!valid && currentType === TYPE_INTEGER && hasReal) {
|
|
326
|
+
message += 'number';
|
|
327
|
+
} else if ((!valid && currentType === TYPE_INTEGER && hasReal) ||
|
|
328
|
+
currentType === TYPE_REAL) {
|
|
329
|
+
message += 'number';
|
|
330
|
+
} else {
|
|
331
|
+
message += typeName(currentType);
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
return message;
|
|
335
|
+
}
|
|
336
|
+
|
|
268
337
|
function describeReference(target) {
|
|
269
338
|
return 'The ' + typeName(jsonTypeOf(target)) +
|
|
270
339
|
' value was expected to validate against the referenced schema';
|
|
@@ -357,7 +426,7 @@ export function describe(valid, instruction, evaluatePath,
|
|
|
357
426
|
}
|
|
358
427
|
|
|
359
428
|
if (opcode === LOGICAL_AND) {
|
|
360
|
-
if (keyword === 'allOf') {
|
|
429
|
+
if (keyword === 'allOf' || keyword === 'extends') {
|
|
361
430
|
const childCount = children ? children.length : 0;
|
|
362
431
|
let message = 'The ' + typeName(targetType) +
|
|
363
432
|
' value was expected to validate against the ';
|
|
@@ -916,6 +985,10 @@ export function describe(valid, instruction, evaluatePath,
|
|
|
916
985
|
return describeTypesCheck(valid, targetType, value);
|
|
917
986
|
}
|
|
918
987
|
|
|
988
|
+
if (opcode === ASSERTION_NOT_TYPE_STRICT_ANY) {
|
|
989
|
+
return describeNotTypesCheck(valid, targetType, value);
|
|
990
|
+
}
|
|
991
|
+
|
|
919
992
|
if (opcode === ASSERTION_TYPE_STRING_BOUNDED) {
|
|
920
993
|
const minimum = value[0];
|
|
921
994
|
const maximum = value[1];
|
package/index.mjs
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
ANNOTATION_EMIT, ANNOTATION_TO_PARENT, ANNOTATION_BASENAME_TO_PARENT,
|
|
3
|
+
ASSERTION_EQUALS_ANY,
|
|
3
4
|
CONTROL_GROUP as CONTROL_GROUP_START,
|
|
4
|
-
CONTROL_EVALUATE as CONTROL_EVALUATE_END
|
|
5
|
+
CONTROL_EVALUATE as CONTROL_EVALUATE_END,
|
|
6
|
+
CONTROL_JUMP, CONTROL_DYNAMIC_ANCHOR_JUMP
|
|
5
7
|
} from './opcodes.mjs';
|
|
6
8
|
|
|
7
|
-
const JSON_VERSION =
|
|
9
|
+
const JSON_VERSION = 5;
|
|
8
10
|
const DEPTH_LIMIT = 300;
|
|
9
11
|
const URI_REGEX = /^[a-zA-Z][a-zA-Z0-9+\-.]*:[^\s]*$/;
|
|
10
12
|
|
|
@@ -121,7 +123,7 @@ function prepareInstruction(instruction) {
|
|
|
121
123
|
}
|
|
122
124
|
|
|
123
125
|
const opcode = instruction[0];
|
|
124
|
-
if (opcode ===
|
|
126
|
+
if (opcode === ASSERTION_EQUALS_ANY && Array.isArray(instruction[5])) {
|
|
125
127
|
const values = instruction[5];
|
|
126
128
|
let allPrimitive = true;
|
|
127
129
|
for (let index = 0; index < values.length; index++) {
|
|
@@ -153,7 +155,7 @@ function prepareInstruction(instruction) {
|
|
|
153
155
|
function resolveJumpTargets(instructions, targets) {
|
|
154
156
|
for (let index = 0; index < instructions.length; index++) {
|
|
155
157
|
const instruction = instructions[index];
|
|
156
|
-
if (instruction[0] ===
|
|
158
|
+
if (instruction[0] === CONTROL_JUMP) {
|
|
157
159
|
const targetIndex = instruction[5];
|
|
158
160
|
if (targetIndex < targets.length) {
|
|
159
161
|
instruction[5] = targets[targetIndex];
|
|
@@ -188,7 +190,7 @@ function collectAnchorNames(targets, result) {
|
|
|
188
190
|
function collectAnchorNamesFromInstructions(instructions, result) {
|
|
189
191
|
for (let index = 0; index < instructions.length; index++) {
|
|
190
192
|
const instruction = instructions[index];
|
|
191
|
-
if (instruction[0] ===
|
|
193
|
+
if (instruction[0] === CONTROL_DYNAMIC_ANCHOR_JUMP && typeof instruction[5] === 'string') {
|
|
192
194
|
result.add(instruction[5]);
|
|
193
195
|
}
|
|
194
196
|
if (instruction[6]) {
|
|
@@ -253,7 +255,7 @@ function compileInstructionToCode(instruction, captures, visited, budget) {
|
|
|
253
255
|
if (cr.length !== 0) return null;
|
|
254
256
|
switch (op) {
|
|
255
257
|
case 11: return '{if(_es(' + tv + ')!==' + cv + ')return false;}';
|
|
256
|
-
case
|
|
258
|
+
case 43: return 'if(' + tv + '!=null&&typeof ' + tv + "==='object'&&!Array.isArray(" + tv + ')){' + emitResolve('t', tv, cr) + 'if(t!==void 0&&_es(t)!==' + cv + ')return false;}';
|
|
257
259
|
default: return null;
|
|
258
260
|
}
|
|
259
261
|
}
|
|
@@ -276,65 +278,66 @@ function compileInstructionToCode(instruction, captures, visited, budget) {
|
|
|
276
278
|
case 10: { var r=R('t'); return r?r+'var a=_jt(t);if(('+value+'&(1<<a))!==0)return true;return('+value+'&4)!==0&&_ii(t);':null; }
|
|
277
279
|
case 11: { var r=R('t'); return r?r+'return _es(t)==='+value+';':null; }
|
|
278
280
|
case 12: { var r=R('t'); return r?r+'return('+value+'&(1<<_es(t)))!==0;':null; }
|
|
279
|
-
case 13: { var r=R('t'); return r?r+
|
|
280
|
-
case 14: { var r=R('t'); return r?r+"
|
|
281
|
-
case 15: { var r=R('t'); return r?r+
|
|
282
|
-
case 16: { var r=R('t'); return r?r+'
|
|
283
|
-
case 17: { var r=R('t'); return r?r+
|
|
284
|
-
case 18: { var r=R('t'); return r?r+TO+'return false;var s=0;for(var k in t)s++;return s
|
|
285
|
-
case 19:
|
|
286
|
-
case
|
|
287
|
-
case 23: { var r=R('t'); return r?r+'if(!Array.isArray(t))return true;return t.length
|
|
288
|
-
case 24: { var r=R('t'); return r?r+
|
|
289
|
-
case 25: { var r=R('t'); return r?r+TO+'return true;var s=0;for(var k in t)s++;return s
|
|
290
|
-
case 26: {
|
|
291
|
-
case 27:
|
|
292
|
-
case
|
|
293
|
-
case 30: { var r=R('t'),v=typeof value==='bigint'?value+'n':value; return r?r+"var tt=typeof t;if(tt!=='number'&&tt!=='bigint')return true;return t
|
|
294
|
-
case 31: { var r=R('t'),v=typeof value==='bigint'?value+'n':value; return r?r+"var tt=typeof t;if(tt!=='number'&&tt!=='bigint')return true;return t
|
|
295
|
-
case 32: { var r=R('t'),v=typeof value==='bigint'?value+'n':value; return r?r+"var tt=typeof t;if(tt!=='number'&&tt!=='bigint')return true;return t
|
|
296
|
-
case 33:
|
|
297
|
-
case
|
|
298
|
-
case 39: return fb(39);
|
|
299
|
-
case 40:
|
|
300
|
-
case 41: return
|
|
301
|
-
case 42:
|
|
302
|
-
case 43: return
|
|
303
|
-
case 44:
|
|
304
|
-
case 45:
|
|
305
|
-
case 48: return fb(48);
|
|
306
|
-
case 49: return
|
|
307
|
-
case
|
|
308
|
-
case 54: return
|
|
309
|
-
case 55:
|
|
310
|
-
case 56: { var r=R('t'); if(!r)return null; if(!children||children.length===0)return 'return true;'; return r+
|
|
311
|
-
case 57: { var r=R('t'); if(!r)return null; if(!children||children.length===0)return 'return
|
|
312
|
-
case 58: return
|
|
313
|
-
case 59:
|
|
314
|
-
case 60: { var r=R('t'); if(!r)return null; var c=r+
|
|
315
|
-
case 61: { var r=R('t'); if(!r)return null; var c=r+'if(!
|
|
316
|
-
case 62:
|
|
317
|
-
case
|
|
318
|
-
case 65: { var r=R('t'); if(!r)return null; if(!children||children.length===0)return r+'return true;'; var mi=captures.length; captures.push(value); var gf=''; for(var gi=0;gi<children.length;gi++){var gc=children[gi][6]; if(gc&&gc.length>0){gf+='function(i,d,_t,_v){'+lb(gc,'i')+'return true;},';}else{gf+='null,';}} return r+TO+'return true;var __cg=['+gf+'];for(var k in t){var __mi=_c['+mi+'][k];if(__mi
|
|
319
|
-
case 66: { var r=R('t'); if(!r)return null; if(!children||children.length===0)return r+'return true;'; return r+TO+'return true;for(var k in t){'+
|
|
320
|
-
case 67:
|
|
321
|
-
case
|
|
322
|
-
case
|
|
323
|
-
case 77:
|
|
324
|
-
case
|
|
325
|
-
case 82: { var r=R('t'); if(!r)return null; if(!children||children.length===0)return r+'return true;'; return r+'if(!Array.isArray(t)
|
|
326
|
-
case 83: return
|
|
327
|
-
case 84:
|
|
328
|
-
case 85: { var r=R('t'); return r?r+'if(!Array.isArray(t))return true;for(var j=0;j<t.length;j++){
|
|
329
|
-
case 86: { var r=R('t'); return r?r+'if(!Array.isArray(t))return true;for(var j=0;j<t.length;j++){if(
|
|
330
|
-
case 87:
|
|
331
|
-
case
|
|
332
|
-
case 93: { var
|
|
333
|
-
case 94: { var c=
|
|
334
|
-
case 95: { var c='if(
|
|
335
|
-
case 96: return 'return true;';
|
|
336
|
-
case 97: return
|
|
337
|
-
case 98:
|
|
281
|
+
case 13: { var r=R('t'); return r?r+'return('+value+'&(1<<_es(t)))===0;':null; }
|
|
282
|
+
case 14: { var r=R('t'); return r?r+"if(typeof t!=='string')return false;var l=_ul(t);if(l<"+value[0]+')return false;'+(value[1]!==null?'if(l>'+value[1]+')return false;':'')+'return true;':null; }
|
|
283
|
+
case 15: { var r=R('t'); return r?r+"return typeof t==='string'&&_ul(t)<="+value+';':null; }
|
|
284
|
+
case 16: { var r=R('t'); return r?r+'if(!Array.isArray(t))return false;if(t.length<'+value[0]+')return false;'+(value[1]!==null?'if(t.length>'+value[1]+')return false;':'')+'return true;':null; }
|
|
285
|
+
case 17: { var r=R('t'); return r?r+'return Array.isArray(t)&&t.length<='+value+';':null; }
|
|
286
|
+
case 18: { var r=R('t'); return r?r+TO+'return false;var s=0;for(var k in t)s++;if(s<'+value[0]+')return false;'+(value[1]!==null?'if(s>'+value[1]+')return false;':'')+'return true;':null; }
|
|
287
|
+
case 19: { var r=R('t'); return r?r+TO+'return false;var s=0;for(var k in t)s++;return s<='+value+';':null; }
|
|
288
|
+
case 20: return fb(20); case 21: return fb(21); case 22: return fb(22);
|
|
289
|
+
case 23: { var r=R('t'); return r?r+'if(!Array.isArray(t))return true;return t.length<'+value+';':null; }
|
|
290
|
+
case 24: { var r=R('t'); return r?r+'if(!Array.isArray(t))return true;return t.length>'+value+';':null; }
|
|
291
|
+
case 25: { var r=R('t'); return r?r+TO+'return true;var s=0;for(var k in t)s++;return s<'+value+';':null; }
|
|
292
|
+
case 26: { var r=R('t'); return r?r+TO+'return true;var s=0;for(var k in t)s++;return s>'+value+';':null; }
|
|
293
|
+
case 27: { if(typeof value==='string'||typeof value==='number'||typeof value==='boolean'||value===null){var r=R('t');return r?r+'return t==='+JSON.stringify(value)+';':null;}return fb(27); }
|
|
294
|
+
case 28: return fb(28); case 29: return fb(29);
|
|
295
|
+
case 30: { var r=R('t'),v=typeof value==='bigint'?value+'n':value; return r?r+"var tt=typeof t;if(tt!=='number'&&tt!=='bigint')return true;return t>="+v+';':null; }
|
|
296
|
+
case 31: { var r=R('t'),v=typeof value==='bigint'?value+'n':value; return r?r+"var tt=typeof t;if(tt!=='number'&&tt!=='bigint')return true;return t<="+v+';':null; }
|
|
297
|
+
case 32: { var r=R('t'),v=typeof value==='bigint'?value+'n':value; return r?r+"var tt=typeof t;if(tt!=='number'&&tt!=='bigint')return true;return t>"+v+';':null; }
|
|
298
|
+
case 33: { var r=R('t'),v=typeof value==='bigint'?value+'n':value; return r?r+"var tt=typeof t;if(tt!=='number'&&tt!=='bigint')return true;return t<"+v+';':null; }
|
|
299
|
+
case 34: return fb(34); case 35: return fb(35);
|
|
300
|
+
case 36: return fb(36); case 37: return fb(37); case 38: return fb(38); case 39: return fb(39);
|
|
301
|
+
case 40: return fb(40);
|
|
302
|
+
case 41: { var r=R('t'); return r?IO+r+'if(t===void 0)return true;var a=_jt(t);return a==='+value+'||('+value+'===2&&_ii(t));':null; }
|
|
303
|
+
case 42: return fb(42);
|
|
304
|
+
case 43: { var r=R('t'); return r?IO+r+'if(t===void 0)return true;return _es(t)==='+value+';':null; }
|
|
305
|
+
case 44: return fb(44);
|
|
306
|
+
case 45: { var r=R('t'); return r?IO+r+'if(t===void 0)return true;return('+value+'&(1<<_es(t)))!==0;':null; }
|
|
307
|
+
case 46: return fb(46); case 47: return fb(47); case 48: return fb(48);
|
|
308
|
+
case 49: return fb(49);
|
|
309
|
+
case 50: return 'return true;'; case 51: return 'return true;'; case 52: return 'return true;'; case 53: return 'return true;';
|
|
310
|
+
case 54: { var r=R('t'); if(!r)return null; if(!children||children.length===0)return 'return false;'; var c=r; for(var j=0;j<children.length;j++)c+='if(!'+cc(children[j],'t')+')return true;'; return c+'return false;'; }
|
|
311
|
+
case 55: return fb(55);
|
|
312
|
+
case 56: { var r=R('t'); if(!r)return null; if(!children||children.length===0)return 'return true;'; if(value){var c=r+'var __r=false;';for(var j=0;j<children.length;j++)c+='if('+cc(children[j],'t')+')__r=true;';return c+'return __r;';} var c=r;for(var j=0;j<children.length;j++)c+='if('+cc(children[j],'t')+')return true;';return c+'return false;'; }
|
|
313
|
+
case 57: { var r=R('t'); if(!r)return null; if(!children||children.length===0)return 'return true;'; return r+seq(children,'t')+'return true;'; }
|
|
314
|
+
case 58: { var r=R('t'); if(!r)return null; if(!children||children.length===0)return 'return false;'; var c=r+'var __r=true,__m=false;';for(var j=0;j<children.length;j++){c+='if('+cc(children[j],'t')+'){if(__m){__r=false;'+(!value?'return false;':'')+ '}else __m=true;}';}return c+'return __r&&__m;'; }
|
|
315
|
+
case 59: return fb(59);
|
|
316
|
+
case 60: { var r=R('t'); if(!r)return null; var c=r+'if(_jt(t)!=='+value+')return true;'; if(children&&children.length>0)c+=seq(children,'t'); return c+'return true;'; }
|
|
317
|
+
case 61: { var r=R('t'); if(!r)return null; var c=r+TO+'return true;if(!Object.hasOwn(t,'+JSON.stringify(value)+'))return true;'; if(children&&children.length>0)c+=seq(children,'t'); return c+'return true;'; }
|
|
318
|
+
case 62: { var r=R('t'); if(!r)return null; var c=r+'if(!Array.isArray(t)||t.length<='+value+')return true;'; if(children&&children.length>0)c+=seq(children,'t'); return c+'return true;'; }
|
|
319
|
+
case 63: return fb(63); case 64: return fb(64);
|
|
320
|
+
case 65: { var r=R('t'); if(!r)return null; if(!children||children.length===0)return r+'return true;'; var mi=captures.length; captures.push(value); var gf=''; for(var gi=0;gi<children.length;gi++){var gc=children[gi][6]; if(gc&&gc.length>0){gf+='function(i,d,_t,_v){'+lb(gc,'i')+'return true;},';}else{gf+='null,';}} return r+TO+'return true;var __cg=['+gf+'];for(var k in t){var __mi=_c['+mi+'][k];if(__mi!==void 0){var __cf=__cg[__mi];if(__cf&&!__cf(t,d,_t,_v))return false;}}return true;'; }
|
|
321
|
+
case 66: { var r=R('t'); if(!r)return null; if(!children||children.length===0)return r+'return true;'; var mi=captures.length; captures.push(value); var gf=''; for(var gi=0;gi<children.length;gi++){var gc=children[gi][6]; if(gc&&gc.length>0){gf+='function(i,d,_t,_v){'+lb(gc,'i')+'return true;},';}else{gf+='null,';}} return r+TO+'return true;var __cg=['+gf+'];for(var k in t){var __mi=_c['+mi+'][k];if(__mi===void 0)return false;var __cf=__cg[__mi];if(__cf&&!__cf(t,d,_t,_v))return false;}return true;'; }
|
|
322
|
+
case 67: { var r=R('t'); if(!r)return null; if(!children||children.length===0)return r+'return true;'; return r+TO+'return true;for(var k in t){'+lb(children,'t[k]')+'}return true;'; }
|
|
323
|
+
case 68: return fb(68); case 69: return fb(69); case 70: return fb(70); case 71: return fb(71); case 72: return fb(72);
|
|
324
|
+
case 73: return fb(73); case 74: return fb(74); case 75: return fb(75); case 76: return fb(76);
|
|
325
|
+
case 77: { var r=R('t'); return r?r+TO+'return true;for(var k in t){if(_es(t[k])!=='+value+')return false;}return true;':null; }
|
|
326
|
+
case 78: return fb(78); case 79: return fb(79); case 80: return fb(80); case 81: return fb(81);
|
|
327
|
+
case 82: { var r=R('t'); if(!r)return null; if(!children||children.length===0)return r+'return true;'; return r+'if(!Array.isArray(t))return true;for(var j=0;j<t.length;j++){'+lb(children,'t[j]')+'}return true;'; }
|
|
328
|
+
case 83: { var r=R('t'); if(!r)return null; if(!children||children.length===0)return r+'return true;'; return r+'if(!Array.isArray(t)||'+value+'>=t.length)return true;for(var j='+value+';j<t.length;j++){'+lb(children,'t[j]')+'}return true;'; }
|
|
329
|
+
case 84: return fb(84);
|
|
330
|
+
case 85: { var r=R('t'); return r?r+'if(!Array.isArray(t))return true;for(var j=0;j<t.length;j++){var a=_jt(t[j]);if(a!=='+value+'&&!('+value+'===2&&_ii(t[j])))return false;}return true;':null; }
|
|
331
|
+
case 86: { var r=R('t'); return r?r+'if(!Array.isArray(t))return true;for(var j=0;j<t.length;j++){if(_es(t[j])!=='+value+')return false;}return true;':null; }
|
|
332
|
+
case 87: { var r=R('t'); return r?r+'if(!Array.isArray(t))return true;for(var j=0;j<t.length;j++){if(('+value+'&(1<<_es(t[j])))===0)return false;}return true;':null; }
|
|
333
|
+
case 88: return fb(88); case 89: return fb(89); case 90: return fb(90); case 91: return fb(91); case 92: return fb(92);
|
|
334
|
+
case 93: { if(!children||children.length===0)return 'return true;'; var c=''; for(var j=0;j<children.length;j++){var r2=compileInstructionToCode(children[j],captures,visited,budget); if(r2===null){var ci=captures.length;captures.push(children[j]);c+='if(!_e(_c['+ci+'],i,d+1,_t,_v))return false;';}else{budget[0]-=r2.length;c+='if(!(function(i,d,_t,_v){'+r2+'})(i,d+1,_t,_v))return false;';}} return c+'return true;'; }
|
|
335
|
+
case 94: { var r=R('t'); if(!r)return null; var c=r+TO+'return true;if(!Object.hasOwn(t,'+JSON.stringify(value)+'))return true;'; if(children&&children.length>0)c+=seq(children,'i'); return c+'return true;'; }
|
|
336
|
+
case 95: { var c=IO+'if(!Object.hasOwn(i,'+JSON.stringify(value)+'))return true;'; if(children&&children.length>0)c+=seq(children,'i'); return c+'return true;'; }
|
|
337
|
+
case 96: { var c='if(_jt(i)!=='+value+')return true;'; if(children&&children.length>0)c+=seq(children,'i'); return c+'return true;'; }
|
|
338
|
+
case 97: return 'return true;';
|
|
339
|
+
case 98: return fb(98);
|
|
340
|
+
case 99: { if(!value)return 'return true;'; if(visited&&visited.has(instruction))return fb(99); if(!visited)visited=new Set(); visited.add(instruction); var r=R('t'); if(!r)return fb(99); var c=r; for(var j=0;j<value.length;j++){var r2=compileInstructionToCode(value[j],captures,visited,budget); if(r2===null){var ci=captures.length;captures.push(value[j]);c+='if(!_e(_c['+ci+'],t,d+1,_t,_v))return false;';}else{budget[0]-=r2.length;c+='if(!(function(i,d,_t,_v){'+r2+'})(t,d+1,_t,_v))return false;';}} return c+'return true;'; }
|
|
338
341
|
default: return null;
|
|
339
342
|
}
|
|
340
343
|
}
|
|
@@ -663,7 +666,7 @@ function evaluateInstructionTracked(instruction, instance, depth, template, eval
|
|
|
663
666
|
if (!handler) return true;
|
|
664
667
|
|
|
665
668
|
const type = instruction[0];
|
|
666
|
-
if (type <
|
|
669
|
+
if (type < CONTROL_GROUP_START || type > CONTROL_EVALUATE_END) {
|
|
667
670
|
if (evaluator.trackMode) {
|
|
668
671
|
evaluator.pushPath(instruction[1]);
|
|
669
672
|
}
|
|
@@ -1054,6 +1057,14 @@ function AssertionTypeStrictAny(instruction, instance, depth, template, evaluato
|
|
|
1054
1057
|
return __result;
|
|
1055
1058
|
};
|
|
1056
1059
|
|
|
1060
|
+
function AssertionNotTypeStrictAny(instruction, instance, depth, template, evaluator) {
|
|
1061
|
+
if (evaluator.callbackMode) evaluator.callbackPush(instruction);
|
|
1062
|
+
const target = resolveInstance(instance, instruction[2]);
|
|
1063
|
+
const __result = !typeSetTest(instruction[5], effectiveTypeStrictReal(target));
|
|
1064
|
+
if (evaluator.callbackMode) evaluator.callbackPop(instruction, __result);
|
|
1065
|
+
return __result;
|
|
1066
|
+
};
|
|
1067
|
+
|
|
1057
1068
|
function AssertionTypeStringBounded(instruction, instance, depth, template, evaluator) {
|
|
1058
1069
|
if (evaluator.callbackMode) evaluator.callbackPush(instruction);
|
|
1059
1070
|
const target = resolveInstance(instance, instruction[2]);
|
|
@@ -2617,92 +2628,93 @@ const handlers = [
|
|
|
2617
2628
|
AssertionTypeAny, // 10
|
|
2618
2629
|
AssertionTypeStrict, // 11
|
|
2619
2630
|
AssertionTypeStrictAny, // 12
|
|
2620
|
-
|
|
2621
|
-
|
|
2622
|
-
|
|
2623
|
-
|
|
2624
|
-
|
|
2625
|
-
|
|
2626
|
-
|
|
2627
|
-
|
|
2628
|
-
|
|
2629
|
-
|
|
2630
|
-
|
|
2631
|
-
|
|
2632
|
-
|
|
2633
|
-
|
|
2634
|
-
|
|
2635
|
-
|
|
2636
|
-
|
|
2637
|
-
|
|
2638
|
-
|
|
2639
|
-
|
|
2640
|
-
|
|
2641
|
-
|
|
2642
|
-
|
|
2643
|
-
|
|
2644
|
-
|
|
2645
|
-
|
|
2646
|
-
|
|
2647
|
-
|
|
2648
|
-
|
|
2649
|
-
|
|
2650
|
-
|
|
2651
|
-
|
|
2652
|
-
|
|
2653
|
-
|
|
2654
|
-
|
|
2655
|
-
|
|
2656
|
-
|
|
2657
|
-
|
|
2658
|
-
|
|
2659
|
-
|
|
2660
|
-
|
|
2661
|
-
|
|
2662
|
-
|
|
2663
|
-
|
|
2664
|
-
|
|
2665
|
-
|
|
2666
|
-
|
|
2667
|
-
|
|
2668
|
-
|
|
2669
|
-
|
|
2670
|
-
|
|
2671
|
-
|
|
2672
|
-
|
|
2673
|
-
|
|
2674
|
-
|
|
2675
|
-
|
|
2676
|
-
|
|
2677
|
-
|
|
2678
|
-
|
|
2679
|
-
|
|
2680
|
-
|
|
2681
|
-
|
|
2682
|
-
|
|
2683
|
-
|
|
2684
|
-
|
|
2685
|
-
|
|
2686
|
-
|
|
2687
|
-
|
|
2688
|
-
|
|
2689
|
-
|
|
2690
|
-
|
|
2691
|
-
|
|
2692
|
-
|
|
2693
|
-
|
|
2694
|
-
|
|
2631
|
+
AssertionNotTypeStrictAny, // 13
|
|
2632
|
+
AssertionTypeStringBounded, // 14
|
|
2633
|
+
AssertionTypeStringUpper, // 15
|
|
2634
|
+
AssertionTypeArrayBounded, // 16
|
|
2635
|
+
AssertionTypeArrayUpper, // 17
|
|
2636
|
+
AssertionTypeObjectBounded, // 18
|
|
2637
|
+
AssertionTypeObjectUpper, // 19
|
|
2638
|
+
AssertionRegex, // 20
|
|
2639
|
+
AssertionStringSizeLess, // 21
|
|
2640
|
+
AssertionStringSizeGreater, // 22
|
|
2641
|
+
AssertionArraySizeLess, // 23
|
|
2642
|
+
AssertionArraySizeGreater, // 24
|
|
2643
|
+
AssertionObjectSizeLess, // 25
|
|
2644
|
+
AssertionObjectSizeGreater, // 26
|
|
2645
|
+
AssertionEqual, // 27
|
|
2646
|
+
AssertionEqualsAny, // 28
|
|
2647
|
+
AssertionEqualsAnyStringHash, // 29
|
|
2648
|
+
AssertionGreaterEqual, // 30
|
|
2649
|
+
AssertionLessEqual, // 31
|
|
2650
|
+
AssertionGreater, // 32
|
|
2651
|
+
AssertionLess, // 33
|
|
2652
|
+
AssertionUnique, // 34
|
|
2653
|
+
AssertionDivisible, // 35
|
|
2654
|
+
AssertionTypeIntegerBounded, // 36
|
|
2655
|
+
AssertionTypeIntegerBoundedStrict, // 37
|
|
2656
|
+
AssertionTypeIntegerLowerBound, // 38
|
|
2657
|
+
AssertionTypeIntegerLowerBoundStrict, // 39
|
|
2658
|
+
AssertionStringType, // 40
|
|
2659
|
+
AssertionPropertyType, // 41
|
|
2660
|
+
AssertionPropertyTypeEvaluate, // 42
|
|
2661
|
+
AssertionPropertyTypeStrict, // 43
|
|
2662
|
+
AssertionPropertyTypeStrictEvaluate, // 44
|
|
2663
|
+
AssertionPropertyTypeStrictAny, // 45
|
|
2664
|
+
AssertionPropertyTypeStrictAnyEvaluate, // 46
|
|
2665
|
+
AssertionArrayPrefix, // 47
|
|
2666
|
+
AssertionArrayPrefixEvaluate, // 48
|
|
2667
|
+
AssertionObjectPropertiesSimple, // 49
|
|
2668
|
+
AnnotationEmit, // 50
|
|
2669
|
+
AnnotationToParent, // 51
|
|
2670
|
+
AnnotationBasenameToParent, // 52
|
|
2671
|
+
Evaluate, // 53
|
|
2672
|
+
LogicalNot, // 54
|
|
2673
|
+
LogicalNotEvaluate, // 55
|
|
2674
|
+
LogicalOr, // 56
|
|
2675
|
+
LogicalAnd, // 57
|
|
2676
|
+
LogicalXor, // 58
|
|
2677
|
+
LogicalCondition, // 59
|
|
2678
|
+
LogicalWhenType, // 60
|
|
2679
|
+
LogicalWhenDefines, // 61
|
|
2680
|
+
LogicalWhenArraySizeGreater, // 62
|
|
2681
|
+
LoopPropertiesUnevaluated, // 63
|
|
2682
|
+
LoopPropertiesUnevaluatedExcept, // 64
|
|
2683
|
+
LoopPropertiesMatch, // 65
|
|
2684
|
+
LoopPropertiesMatchClosed, // 66
|
|
2685
|
+
LoopProperties, // 67
|
|
2686
|
+
LoopPropertiesEvaluate, // 68
|
|
2687
|
+
LoopPropertiesRegex, // 69
|
|
2688
|
+
LoopPropertiesRegexClosed, // 70
|
|
2689
|
+
LoopPropertiesStartsWith, // 71
|
|
2690
|
+
LoopPropertiesExcept, // 72
|
|
2691
|
+
LoopPropertiesType, // 73
|
|
2692
|
+
LoopPropertiesTypeEvaluate, // 74
|
|
2693
|
+
LoopPropertiesExactlyTypeStrict, // 75
|
|
2694
|
+
LoopPropertiesExactlyTypeStrictHash, // 76
|
|
2695
|
+
LoopPropertiesTypeStrict, // 77
|
|
2696
|
+
LoopPropertiesTypeStrictEvaluate, // 78
|
|
2697
|
+
LoopPropertiesTypeStrictAny, // 79
|
|
2698
|
+
LoopPropertiesTypeStrictAnyEvaluate, // 80
|
|
2699
|
+
LoopKeys, // 81
|
|
2700
|
+
LoopItems, // 82
|
|
2701
|
+
LoopItemsFrom, // 83
|
|
2702
|
+
LoopItemsUnevaluated, // 84
|
|
2703
|
+
LoopItemsType, // 85
|
|
2704
|
+
LoopItemsTypeStrict, // 86
|
|
2705
|
+
LoopItemsTypeStrictAny, // 87
|
|
2695
2706
|
LoopItemsPropertiesExactlyTypeStrictHash, // 88
|
|
2696
|
-
|
|
2697
|
-
|
|
2698
|
-
|
|
2699
|
-
|
|
2700
|
-
|
|
2701
|
-
|
|
2702
|
-
|
|
2703
|
-
|
|
2704
|
-
|
|
2705
|
-
|
|
2707
|
+
LoopItemsPropertiesExactlyTypeStrictHash, // 89
|
|
2708
|
+
LoopItemsIntegerBounded, // 90
|
|
2709
|
+
LoopItemsIntegerBoundedSized, // 91
|
|
2710
|
+
LoopContains, // 92
|
|
2711
|
+
ControlGroup, // 93
|
|
2712
|
+
ControlGroupWhenDefines, // 94
|
|
2713
|
+
ControlGroupWhenDefinesDirect, // 95
|
|
2714
|
+
ControlGroupWhenType, // 96
|
|
2715
|
+
ControlEvaluate, // 97
|
|
2716
|
+
ControlDynamicAnchorJump, // 98
|
|
2717
|
+
ControlJump // 99
|
|
2706
2718
|
];
|
|
2707
2719
|
|
|
2708
2720
|
function AssertionTypeArrayBounded_fast(instruction, instance, depth, template, evaluator) {
|
|
@@ -3211,6 +3223,12 @@ function AssertionTypeStrictAny_fast(instruction, instance, depth, template, eva
|
|
|
3211
3223
|
return typeSetTest(instruction[5], effectiveTypeStrictReal(target));
|
|
3212
3224
|
}
|
|
3213
3225
|
|
|
3226
|
+
function AssertionNotTypeStrictAny_fast(instruction, instance, depth, template, evaluator) {
|
|
3227
|
+
const relInstance = instruction[2];
|
|
3228
|
+
const target = relInstance.length === 0 ? instance : resolveInstance(instance, relInstance);
|
|
3229
|
+
return !typeSetTest(instruction[5], effectiveTypeStrictReal(target));
|
|
3230
|
+
}
|
|
3231
|
+
|
|
3214
3232
|
function AssertionTypeStringUpper_fast(instruction, instance, depth, template, evaluator) {
|
|
3215
3233
|
const relInstance = instruction[2];
|
|
3216
3234
|
const target = relInstance.length === 0 ? instance : resolveInstance(instance, relInstance);
|
|
@@ -3879,100 +3897,101 @@ function AssertionTypeIntegerLowerBoundStrict_fast(instruction, instance, depth,
|
|
|
3879
3897
|
}
|
|
3880
3898
|
|
|
3881
3899
|
const fastHandlers = handlers.slice();
|
|
3882
|
-
fastHandlers[
|
|
3883
|
-
fastHandlers[
|
|
3884
|
-
fastHandlers[
|
|
3900
|
+
fastHandlers[16] = AssertionTypeArrayBounded_fast;
|
|
3901
|
+
fastHandlers[87] = LoopItemsTypeStrictAny_fast;
|
|
3902
|
+
fastHandlers[43] = AssertionPropertyTypeStrict_fast;
|
|
3885
3903
|
fastHandlers[11] = AssertionTypeStrict_fast;
|
|
3886
3904
|
fastHandlers[4] = AssertionDefinesAllStrict_fast;
|
|
3887
|
-
fastHandlers[
|
|
3888
|
-
fastHandlers[
|
|
3889
|
-
fastHandlers[
|
|
3890
|
-
fastHandlers[
|
|
3891
|
-
fastHandlers[
|
|
3892
|
-
fastHandlers[
|
|
3905
|
+
fastHandlers[27] = AssertionEqual_fast;
|
|
3906
|
+
fastHandlers[65] = LoopPropertiesMatch_fast;
|
|
3907
|
+
fastHandlers[56] = LogicalOr_fast;
|
|
3908
|
+
fastHandlers[99] = ControlJump_fast;
|
|
3909
|
+
fastHandlers[29] = AssertionEqualsAnyStringHash_fast;
|
|
3910
|
+
fastHandlers[58] = LogicalXor_fast;
|
|
3893
3911
|
fastHandlers[2] = AssertionDefinesStrict_fast;
|
|
3894
|
-
fastHandlers[
|
|
3895
|
-
fastHandlers[
|
|
3896
|
-
fastHandlers[
|
|
3897
|
-
fastHandlers[
|
|
3912
|
+
fastHandlers[82] = LoopItems_fast;
|
|
3913
|
+
fastHandlers[66] = LoopPropertiesMatchClosed_fast;
|
|
3914
|
+
fastHandlers[14] = AssertionTypeStringBounded_fast;
|
|
3915
|
+
fastHandlers[57] = LogicalAnd_fast;
|
|
3898
3916
|
fastHandlers[8] = AssertionPropertyDependencies_fast;
|
|
3899
3917
|
fastHandlers[10] = AssertionTypeAny_fast;
|
|
3900
|
-
fastHandlers[
|
|
3901
|
-
fastHandlers[
|
|
3902
|
-
fastHandlers[
|
|
3903
|
-
fastHandlers[
|
|
3918
|
+
fastHandlers[59] = LogicalCondition_fast;
|
|
3919
|
+
fastHandlers[72] = LoopPropertiesExcept_fast;
|
|
3920
|
+
fastHandlers[20] = AssertionRegex_fast;
|
|
3921
|
+
fastHandlers[67] = LoopProperties_fast;
|
|
3904
3922
|
fastHandlers[1] = AssertionDefines_fast;
|
|
3905
|
-
fastHandlers[
|
|
3906
|
-
fastHandlers[
|
|
3923
|
+
fastHandlers[60] = LogicalWhenType_fast;
|
|
3924
|
+
fastHandlers[61] = LogicalWhenDefines_fast;
|
|
3907
3925
|
fastHandlers[0] = AssertionFail_fast;
|
|
3908
|
-
fastHandlers[
|
|
3909
|
-
fastHandlers[
|
|
3910
|
-
fastHandlers[
|
|
3911
|
-
fastHandlers[
|
|
3912
|
-
fastHandlers[
|
|
3926
|
+
fastHandlers[92] = LoopContains_fast;
|
|
3927
|
+
fastHandlers[54] = LogicalNot_fast;
|
|
3928
|
+
fastHandlers[85] = LoopItemsType_fast;
|
|
3929
|
+
fastHandlers[86] = LoopItemsTypeStrict_fast;
|
|
3930
|
+
fastHandlers[28] = AssertionEqualsAny_fast;
|
|
3913
3931
|
fastHandlers[3] = AssertionDefinesAll_fast;
|
|
3914
3932
|
fastHandlers[5] = AssertionDefinesExactly_fast;
|
|
3915
3933
|
fastHandlers[6] = AssertionDefinesExactlyStrict_fast;
|
|
3916
3934
|
fastHandlers[7] = AssertionDefinesExactlyStrictHash3_fast;
|
|
3917
3935
|
fastHandlers[9] = AssertionType_fast;
|
|
3918
3936
|
fastHandlers[12] = AssertionTypeStrictAny_fast;
|
|
3919
|
-
fastHandlers[
|
|
3920
|
-
fastHandlers[
|
|
3921
|
-
fastHandlers[17] =
|
|
3922
|
-
fastHandlers[18] =
|
|
3923
|
-
fastHandlers[
|
|
3924
|
-
fastHandlers[21] =
|
|
3925
|
-
fastHandlers[22] =
|
|
3926
|
-
fastHandlers[23] =
|
|
3927
|
-
fastHandlers[24] =
|
|
3928
|
-
fastHandlers[25] =
|
|
3929
|
-
fastHandlers[
|
|
3930
|
-
fastHandlers[30] =
|
|
3931
|
-
fastHandlers[31] =
|
|
3932
|
-
fastHandlers[32] =
|
|
3933
|
-
fastHandlers[33] =
|
|
3934
|
-
fastHandlers[34] =
|
|
3935
|
-
fastHandlers[35] =
|
|
3936
|
-
fastHandlers[36] =
|
|
3937
|
-
fastHandlers[37] =
|
|
3938
|
-
fastHandlers[38] =
|
|
3939
|
-
fastHandlers[39] =
|
|
3940
|
-
fastHandlers[40] =
|
|
3941
|
-
fastHandlers[41] =
|
|
3942
|
-
fastHandlers[
|
|
3943
|
-
fastHandlers[44] =
|
|
3944
|
-
fastHandlers[45] =
|
|
3945
|
-
fastHandlers[46] =
|
|
3946
|
-
fastHandlers[47] =
|
|
3947
|
-
fastHandlers[48] =
|
|
3948
|
-
fastHandlers[49] =
|
|
3949
|
-
fastHandlers[50] =
|
|
3950
|
-
fastHandlers[51] =
|
|
3951
|
-
fastHandlers[52] =
|
|
3952
|
-
fastHandlers[
|
|
3953
|
-
fastHandlers[
|
|
3954
|
-
fastHandlers[62] =
|
|
3955
|
-
fastHandlers[63] =
|
|
3956
|
-
fastHandlers[
|
|
3957
|
-
fastHandlers[68] =
|
|
3958
|
-
fastHandlers[69] =
|
|
3959
|
-
fastHandlers[70] =
|
|
3960
|
-
fastHandlers[
|
|
3961
|
-
fastHandlers[73] =
|
|
3962
|
-
fastHandlers[74] =
|
|
3963
|
-
fastHandlers[75] =
|
|
3964
|
-
fastHandlers[76] =
|
|
3965
|
-
fastHandlers[77] =
|
|
3966
|
-
fastHandlers[78] =
|
|
3967
|
-
fastHandlers[79] =
|
|
3968
|
-
fastHandlers[80] =
|
|
3969
|
-
fastHandlers[
|
|
3970
|
-
fastHandlers[83] =
|
|
3971
|
-
fastHandlers[
|
|
3937
|
+
fastHandlers[13] = AssertionNotTypeStrictAny_fast;
|
|
3938
|
+
fastHandlers[15] = AssertionTypeStringUpper_fast;
|
|
3939
|
+
fastHandlers[17] = AssertionTypeArrayUpper_fast;
|
|
3940
|
+
fastHandlers[18] = AssertionTypeObjectBounded_fast;
|
|
3941
|
+
fastHandlers[19] = AssertionTypeObjectUpper_fast;
|
|
3942
|
+
fastHandlers[21] = AssertionStringSizeLess_fast;
|
|
3943
|
+
fastHandlers[22] = AssertionStringSizeGreater_fast;
|
|
3944
|
+
fastHandlers[23] = AssertionArraySizeLess_fast;
|
|
3945
|
+
fastHandlers[24] = AssertionArraySizeGreater_fast;
|
|
3946
|
+
fastHandlers[25] = AssertionObjectSizeLess_fast;
|
|
3947
|
+
fastHandlers[26] = AssertionObjectSizeGreater_fast;
|
|
3948
|
+
fastHandlers[30] = AssertionGreaterEqual_fast;
|
|
3949
|
+
fastHandlers[31] = AssertionLessEqual_fast;
|
|
3950
|
+
fastHandlers[32] = AssertionGreater_fast;
|
|
3951
|
+
fastHandlers[33] = AssertionLess_fast;
|
|
3952
|
+
fastHandlers[34] = AssertionUnique_fast;
|
|
3953
|
+
fastHandlers[35] = AssertionDivisible_fast;
|
|
3954
|
+
fastHandlers[36] = AssertionTypeIntegerBounded_fast;
|
|
3955
|
+
fastHandlers[37] = AssertionTypeIntegerBoundedStrict_fast;
|
|
3956
|
+
fastHandlers[38] = AssertionTypeIntegerLowerBound_fast;
|
|
3957
|
+
fastHandlers[39] = AssertionTypeIntegerLowerBoundStrict_fast;
|
|
3958
|
+
fastHandlers[40] = AssertionStringType_fast;
|
|
3959
|
+
fastHandlers[41] = AssertionPropertyType_fast;
|
|
3960
|
+
fastHandlers[42] = AssertionPropertyTypeEvaluate_fast;
|
|
3961
|
+
fastHandlers[44] = AssertionPropertyTypeStrictEvaluate_fast;
|
|
3962
|
+
fastHandlers[45] = AssertionPropertyTypeStrictAny_fast;
|
|
3963
|
+
fastHandlers[46] = AssertionPropertyTypeStrictAnyEvaluate_fast;
|
|
3964
|
+
fastHandlers[47] = AssertionArrayPrefix_fast;
|
|
3965
|
+
fastHandlers[48] = AssertionArrayPrefixEvaluate_fast;
|
|
3966
|
+
fastHandlers[49] = AssertionObjectPropertiesSimple_fast;
|
|
3967
|
+
fastHandlers[50] = AnnotationEmit_fast;
|
|
3968
|
+
fastHandlers[51] = AnnotationToParent_fast;
|
|
3969
|
+
fastHandlers[52] = AnnotationBasenameToParent_fast;
|
|
3970
|
+
fastHandlers[53] = Evaluate_fast;
|
|
3971
|
+
fastHandlers[55] = LogicalNotEvaluate_fast;
|
|
3972
|
+
fastHandlers[62] = LogicalWhenArraySizeGreater_fast;
|
|
3973
|
+
fastHandlers[63] = LoopPropertiesUnevaluated_fast;
|
|
3974
|
+
fastHandlers[64] = LoopPropertiesUnevaluatedExcept_fast;
|
|
3975
|
+
fastHandlers[68] = LoopPropertiesEvaluate_fast;
|
|
3976
|
+
fastHandlers[69] = LoopPropertiesRegex_fast;
|
|
3977
|
+
fastHandlers[70] = LoopPropertiesRegexClosed_fast;
|
|
3978
|
+
fastHandlers[71] = LoopPropertiesStartsWith_fast;
|
|
3979
|
+
fastHandlers[73] = LoopPropertiesType_fast;
|
|
3980
|
+
fastHandlers[74] = LoopPropertiesTypeEvaluate_fast;
|
|
3981
|
+
fastHandlers[75] = LoopPropertiesExactlyTypeStrict_fast;
|
|
3982
|
+
fastHandlers[76] = LoopPropertiesExactlyTypeStrictHash_fast;
|
|
3983
|
+
fastHandlers[77] = LoopPropertiesTypeStrict_fast;
|
|
3984
|
+
fastHandlers[78] = LoopPropertiesTypeStrictEvaluate_fast;
|
|
3985
|
+
fastHandlers[79] = LoopPropertiesTypeStrictAny_fast;
|
|
3986
|
+
fastHandlers[80] = LoopPropertiesTypeStrictAnyEvaluate_fast;
|
|
3987
|
+
fastHandlers[81] = LoopKeys_fast;
|
|
3988
|
+
fastHandlers[83] = LoopItemsFrom_fast;
|
|
3989
|
+
fastHandlers[84] = LoopItemsUnevaluated_fast;
|
|
3972
3990
|
fastHandlers[88] = LoopItemsPropertiesExactlyTypeStrictHash_fast;
|
|
3973
|
-
fastHandlers[89] =
|
|
3974
|
-
fastHandlers[90] =
|
|
3975
|
-
fastHandlers[
|
|
3991
|
+
fastHandlers[89] = LoopItemsPropertiesExactlyTypeStrictHash_fast;
|
|
3992
|
+
fastHandlers[90] = LoopItemsIntegerBounded_fast;
|
|
3993
|
+
fastHandlers[91] = LoopItemsIntegerBoundedSized_fast;
|
|
3994
|
+
fastHandlers[98] = ControlDynamicAnchorJump_fast;
|
|
3976
3995
|
|
|
3977
3996
|
import { describe } from './describe.mjs';
|
|
3978
3997
|
|
package/opcodes.mjs
CHANGED
|
@@ -11,92 +11,93 @@ export const ASSERTION_TYPE = 9;
|
|
|
11
11
|
export const ASSERTION_TYPE_ANY = 10;
|
|
12
12
|
export const ASSERTION_TYPE_STRICT = 11;
|
|
13
13
|
export const ASSERTION_TYPE_STRICT_ANY = 12;
|
|
14
|
-
export const
|
|
15
|
-
export const
|
|
16
|
-
export const
|
|
17
|
-
export const
|
|
18
|
-
export const
|
|
19
|
-
export const
|
|
20
|
-
export const
|
|
21
|
-
export const
|
|
22
|
-
export const
|
|
23
|
-
export const
|
|
24
|
-
export const
|
|
25
|
-
export const
|
|
26
|
-
export const
|
|
27
|
-
export const
|
|
28
|
-
export const
|
|
29
|
-
export const
|
|
30
|
-
export const
|
|
31
|
-
export const
|
|
32
|
-
export const
|
|
33
|
-
export const
|
|
34
|
-
export const
|
|
35
|
-
export const
|
|
36
|
-
export const
|
|
37
|
-
export const
|
|
38
|
-
export const
|
|
39
|
-
export const
|
|
40
|
-
export const
|
|
41
|
-
export const
|
|
42
|
-
export const
|
|
43
|
-
export const
|
|
44
|
-
export const
|
|
45
|
-
export const
|
|
46
|
-
export const
|
|
47
|
-
export const
|
|
48
|
-
export const
|
|
49
|
-
export const
|
|
50
|
-
export const
|
|
51
|
-
export const
|
|
52
|
-
export const
|
|
53
|
-
export const
|
|
54
|
-
export const
|
|
55
|
-
export const
|
|
56
|
-
export const
|
|
57
|
-
export const
|
|
58
|
-
export const
|
|
59
|
-
export const
|
|
60
|
-
export const
|
|
61
|
-
export const
|
|
62
|
-
export const
|
|
63
|
-
export const
|
|
64
|
-
export const
|
|
65
|
-
export const
|
|
66
|
-
export const
|
|
67
|
-
export const
|
|
68
|
-
export const
|
|
69
|
-
export const
|
|
70
|
-
export const
|
|
71
|
-
export const
|
|
72
|
-
export const
|
|
73
|
-
export const
|
|
74
|
-
export const
|
|
75
|
-
export const
|
|
76
|
-
export const
|
|
77
|
-
export const
|
|
78
|
-
export const
|
|
79
|
-
export const
|
|
80
|
-
export const
|
|
81
|
-
export const
|
|
82
|
-
export const
|
|
83
|
-
export const
|
|
84
|
-
export const
|
|
85
|
-
export const
|
|
86
|
-
export const
|
|
87
|
-
export const
|
|
88
|
-
export const
|
|
89
|
-
export const
|
|
90
|
-
export const
|
|
91
|
-
export const
|
|
92
|
-
export const
|
|
93
|
-
export const
|
|
94
|
-
export const
|
|
95
|
-
export const
|
|
96
|
-
export const
|
|
97
|
-
export const
|
|
98
|
-
export const
|
|
99
|
-
export const
|
|
14
|
+
export const ASSERTION_NOT_TYPE_STRICT_ANY = 13;
|
|
15
|
+
export const ASSERTION_TYPE_STRING_BOUNDED = 14;
|
|
16
|
+
export const ASSERTION_TYPE_STRING_UPPER = 15;
|
|
17
|
+
export const ASSERTION_TYPE_ARRAY_BOUNDED = 16;
|
|
18
|
+
export const ASSERTION_TYPE_ARRAY_UPPER = 17;
|
|
19
|
+
export const ASSERTION_TYPE_OBJECT_BOUNDED = 18;
|
|
20
|
+
export const ASSERTION_TYPE_OBJECT_UPPER = 19;
|
|
21
|
+
export const ASSERTION_REGEX = 20;
|
|
22
|
+
export const ASSERTION_STRING_SIZE_LESS = 21;
|
|
23
|
+
export const ASSERTION_STRING_SIZE_GREATER = 22;
|
|
24
|
+
export const ASSERTION_ARRAY_SIZE_LESS = 23;
|
|
25
|
+
export const ASSERTION_ARRAY_SIZE_GREATER = 24;
|
|
26
|
+
export const ASSERTION_OBJECT_SIZE_LESS = 25;
|
|
27
|
+
export const ASSERTION_OBJECT_SIZE_GREATER = 26;
|
|
28
|
+
export const ASSERTION_EQUAL = 27;
|
|
29
|
+
export const ASSERTION_EQUALS_ANY = 28;
|
|
30
|
+
export const ASSERTION_EQUALS_ANY_STRING_HASH = 29;
|
|
31
|
+
export const ASSERTION_GREATER_EQUAL = 30;
|
|
32
|
+
export const ASSERTION_LESS_EQUAL = 31;
|
|
33
|
+
export const ASSERTION_GREATER = 32;
|
|
34
|
+
export const ASSERTION_LESS = 33;
|
|
35
|
+
export const ASSERTION_UNIQUE = 34;
|
|
36
|
+
export const ASSERTION_DIVISIBLE = 35;
|
|
37
|
+
export const ASSERTION_TYPE_INTEGER_BOUNDED = 36;
|
|
38
|
+
export const ASSERTION_TYPE_INTEGER_BOUNDED_STRICT = 37;
|
|
39
|
+
export const ASSERTION_TYPE_INTEGER_LOWER_BOUND = 38;
|
|
40
|
+
export const ASSERTION_TYPE_INTEGER_LOWER_BOUND_STRICT = 39;
|
|
41
|
+
export const ASSERTION_STRING_TYPE = 40;
|
|
42
|
+
export const ASSERTION_PROPERTY_TYPE = 41;
|
|
43
|
+
export const ASSERTION_PROPERTY_TYPE_EVALUATE = 42;
|
|
44
|
+
export const ASSERTION_PROPERTY_TYPE_STRICT = 43;
|
|
45
|
+
export const ASSERTION_PROPERTY_TYPE_STRICT_EVALUATE = 44;
|
|
46
|
+
export const ASSERTION_PROPERTY_TYPE_STRICT_ANY = 45;
|
|
47
|
+
export const ASSERTION_PROPERTY_TYPE_STRICT_ANY_EVALUATE = 46;
|
|
48
|
+
export const ASSERTION_ARRAY_PREFIX = 47;
|
|
49
|
+
export const ASSERTION_ARRAY_PREFIX_EVALUATE = 48;
|
|
50
|
+
export const ASSERTION_OBJECT_PROPERTIES_SIMPLE = 49;
|
|
51
|
+
export const ANNOTATION_EMIT = 50;
|
|
52
|
+
export const ANNOTATION_TO_PARENT = 51;
|
|
53
|
+
export const ANNOTATION_BASENAME_TO_PARENT = 52;
|
|
54
|
+
export const EVALUATE = 53;
|
|
55
|
+
export const LOGICAL_NOT = 54;
|
|
56
|
+
export const LOGICAL_NOT_EVALUATE = 55;
|
|
57
|
+
export const LOGICAL_OR = 56;
|
|
58
|
+
export const LOGICAL_AND = 57;
|
|
59
|
+
export const LOGICAL_XOR = 58;
|
|
60
|
+
export const LOGICAL_CONDITION = 59;
|
|
61
|
+
export const LOGICAL_WHEN_TYPE = 60;
|
|
62
|
+
export const LOGICAL_WHEN_DEFINES = 61;
|
|
63
|
+
export const LOGICAL_WHEN_ARRAY_SIZE_GREATER = 62;
|
|
64
|
+
export const LOOP_PROPERTIES_UNEVALUATED = 63;
|
|
65
|
+
export const LOOP_PROPERTIES_UNEVALUATED_EXCEPT = 64;
|
|
66
|
+
export const LOOP_PROPERTIES_MATCH = 65;
|
|
67
|
+
export const LOOP_PROPERTIES_MATCH_CLOSED = 66;
|
|
68
|
+
export const LOOP_PROPERTIES = 67;
|
|
69
|
+
export const LOOP_PROPERTIES_EVALUATE = 68;
|
|
70
|
+
export const LOOP_PROPERTIES_REGEX = 69;
|
|
71
|
+
export const LOOP_PROPERTIES_REGEX_CLOSED = 70;
|
|
72
|
+
export const LOOP_PROPERTIES_STARTS_WITH = 71;
|
|
73
|
+
export const LOOP_PROPERTIES_EXCEPT = 72;
|
|
74
|
+
export const LOOP_PROPERTIES_TYPE = 73;
|
|
75
|
+
export const LOOP_PROPERTIES_TYPE_EVALUATE = 74;
|
|
76
|
+
export const LOOP_PROPERTIES_EXACTLY_TYPE_STRICT = 75;
|
|
77
|
+
export const LOOP_PROPERTIES_EXACTLY_TYPE_STRICT_HASH = 76;
|
|
78
|
+
export const LOOP_PROPERTIES_TYPE_STRICT = 77;
|
|
79
|
+
export const LOOP_PROPERTIES_TYPE_STRICT_EVALUATE = 78;
|
|
80
|
+
export const LOOP_PROPERTIES_TYPE_STRICT_ANY = 79;
|
|
81
|
+
export const LOOP_PROPERTIES_TYPE_STRICT_ANY_EVALUATE = 80;
|
|
82
|
+
export const LOOP_KEYS = 81;
|
|
83
|
+
export const LOOP_ITEMS = 82;
|
|
84
|
+
export const LOOP_ITEMS_FROM = 83;
|
|
85
|
+
export const LOOP_ITEMS_UNEVALUATED = 84;
|
|
86
|
+
export const LOOP_ITEMS_TYPE = 85;
|
|
87
|
+
export const LOOP_ITEMS_TYPE_STRICT = 86;
|
|
88
|
+
export const LOOP_ITEMS_TYPE_STRICT_ANY = 87;
|
|
89
|
+
export const LOOP_ITEMS_PROPERTIES_EXACTLY_TYPE_STRICT_HASH = 88;
|
|
90
|
+
export const LOOP_ITEMS_PROPERTIES_EXACTLY_TYPE_STRICT_HASH3 = 89;
|
|
91
|
+
export const LOOP_ITEMS_INTEGER_BOUNDED = 90;
|
|
92
|
+
export const LOOP_ITEMS_INTEGER_BOUNDED_SIZED = 91;
|
|
93
|
+
export const LOOP_CONTAINS = 92;
|
|
94
|
+
export const CONTROL_GROUP = 93;
|
|
95
|
+
export const CONTROL_GROUP_WHEN_DEFINES = 94;
|
|
96
|
+
export const CONTROL_GROUP_WHEN_DEFINES_DIRECT = 95;
|
|
97
|
+
export const CONTROL_GROUP_WHEN_TYPE = 96;
|
|
98
|
+
export const CONTROL_EVALUATE = 97;
|
|
99
|
+
export const CONTROL_DYNAMIC_ANCHOR_JUMP = 98;
|
|
100
|
+
export const CONTROL_JUMP = 99;
|
|
100
101
|
|
|
101
102
|
export const INSTRUCTION_NAMES = {
|
|
102
103
|
"AssertionFail": ASSERTION_FAIL,
|
|
@@ -112,6 +113,7 @@ export const INSTRUCTION_NAMES = {
|
|
|
112
113
|
"AssertionTypeAny": ASSERTION_TYPE_ANY,
|
|
113
114
|
"AssertionTypeStrict": ASSERTION_TYPE_STRICT,
|
|
114
115
|
"AssertionTypeStrictAny": ASSERTION_TYPE_STRICT_ANY,
|
|
116
|
+
"AssertionNotTypeStrictAny": ASSERTION_NOT_TYPE_STRICT_ANY,
|
|
115
117
|
"AssertionTypeStringBounded": ASSERTION_TYPE_STRING_BOUNDED,
|
|
116
118
|
"AssertionTypeStringUpper": ASSERTION_TYPE_STRING_UPPER,
|
|
117
119
|
"AssertionTypeArrayBounded": ASSERTION_TYPE_ARRAY_BOUNDED,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sourcemeta/blaze",
|
|
3
|
-
"version": "15.
|
|
3
|
+
"version": "15.4.1",
|
|
4
4
|
"description": "A pure JavaScript port of the evaluator from Blaze, a high-performance C++ JSON Schema validator. Zero dependencies. Supports Draft 4, Draft 6, Draft 7, 2019-09, and 2020-12 with schema-specific code generation for near-native speed",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./index.mjs",
|