fix(globalOperators): handle null and empty array cases in function (#6415)

This commit is contained in:
Zeke Zhang 2025-03-11 16:13:34 +08:00 committed by GitHub
parent d04bc83f2f
commit ece3d10139
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -124,7 +124,7 @@ export function getOperators() {
return !a.includes(b);
},
$anyOf: function (a, b) {
if (a.length === 0) {
if (a == null || a.length === 0) {
return false;
}
if (Array.isArray(a) && Array.isArray(b) && a.some((element) => Array.isArray(element))) {
@ -347,7 +347,7 @@ export function getOperators() {
/*
This helper will defer to the JsonLogic spec as a tie-breaker when different language interpreters define different behavior for the truthiness of primitives. E.g., PHP considers empty arrays to be falsy, but Javascript considers them to be truthy. JsonLogic, as an ecosystem, needs one consistent answer.
Spec and rationale here: http://jsonlogic.com/truthy
*/
jsonLogic.truthy = function (value) {
@ -397,7 +397,7 @@ export function getOperators() {
if( 0 ){ 1 }else{ 2 };
if( 0 ){ 1 }else if( 2 ){ 3 }else{ 4 };
if( 0 ){ 1 }else if( 2 ){ 3 }else if( 4 ){ 5 }else{ 6 };
The implementation is:
For pairs of values (0,1 then 2,3 then 4,5 etc)
If the first evaluates truthy, evaluate and return the second