static or()

in packages/sqrl/src/helpers/AstBuilder.ts [94:121]


  static or(asts: Ast[]): Ast {
    invariant(
      asts.length > 0,
      "SQRL AstBuilder requires at-least one value for an `or`"
    );
    let result: Ast = AstBuilder.constant(false);
    for (let idx = asts.length - 1; idx >= 0; idx--) {
      const ast: Ast = asts[idx];
      if (ast.type === "constant") {
        if (!ast.value) {
          continue;
        } else {
          return AstBuilder.constant(true);
        }
      } else {
        result =
          result.type === "constant" && result.value === false
            ? ast
            : {
                type: "boolean_expr",
                operator: "or",
                left: ast,
                right: result,
              };
      }
    }
    return result;
  }