@lit-protocol/access-control-conditions
Version:
This submodule provides functionalities for formatting and canonicalizing data, validating and creating digital signatures, and hashing various types of conditions and identifiers in a deterministic way to ensure data integrity and security within the LIT
38 lines • 1.37 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.isTokenOperator = isTokenOperator;
exports.isValidBooleanExpression = isValidBooleanExpression;
const access_control_conditions_schemas_1 = require("@lit-protocol/access-control-conditions-schemas");
function isTokenOperator(token) {
return access_control_conditions_schemas_1.OperatorAccSchema.safeParse(token).success;
}
function isValidBooleanExpression(expression) {
const STATES = {
START: 'start',
CONDITION: 'condition',
OPERATOR: 'operator',
};
let currentState = STATES.START;
for (const token of expression) {
switch (currentState) {
case STATES.START:
case STATES.OPERATOR:
if (isTokenOperator(token)) {
return false;
}
// Nested conditions expression
if (Array.isArray(token) && !isValidBooleanExpression(token)) {
return false;
}
currentState = STATES.CONDITION;
break;
default:
if (!isTokenOperator(token)) {
return false;
}
currentState = STATES.OPERATOR;
}
}
return currentState === STATES.CONDITION;
}
//# sourceMappingURL=booleanExpressions.js.map