
import { createScalar } from "../utilities";

const trueValue = /^t(rue)?|y(es)?|on|1$/iu;
const falseValue = /^f(alse)?|no?|off|0$/iu;

export const BoolScalar = createScalar(
  "bool", "state of true or false", {
    string ( value, invalid ) {
      if (trueValue.test(value)) { return "true"; }

      if (falseValue.test(value)) { return "false"; }

      return invalid();
    },
    number ( value ) {
      return `${Boolean(value)}`;
    },
    boolean: true,
  }
);
