{"version":3,"sources":["../../../src/schema/types/boolean.ts"],"sourcesContent":["import Definitions          from '../../core/definitions'\r\nimport ValidationError      from '../../errors/io-error'\r\nimport ErrorCodes           from '../../errors/io-error-codes'\r\nimport Node                 from '../../parser/nodes/nodes'\r\nimport TokenNode            from '../../parser/nodes/tokens'\r\nimport Schema               from '../../schema/schema'\r\nimport TypeDef              from '../../schema/typedef'\r\nimport TokenType            from '../../parser/tokenizer/token-types'\r\nimport doCommonTypeCheck    from './common-type'\r\nimport MemberDef            from './memberdef'\r\n\r\nconst schema = new Schema(\r\n  \"bool\",\r\n  { type:     { type: \"string\", optional: false, null: false, choices: [\"bool\"] } },\r\n  { default:  { type: \"bool\",   optional: true,  null: false  } },\r\n  { optional: { type: \"bool\",   optional: true } },\r\n  { null:     { type: \"bool\",   optional: true } },\r\n)\r\n\r\nexport default class BooleanDef implements TypeDef {\r\n  public get type()   { return 'bool' }\r\n  public get schema() { return schema }\r\n\r\n  public parse(node: Node, memberDef: MemberDef, defs?: Definitions): any {\r\n    return this.#validate(node, memberDef, defs)\r\n  }\r\n\r\n  // Load: JS Value → Validated JS Value\r\n  public load(value: any, memberDef: MemberDef, defs?: Definitions): boolean {\r\n    const { value: checkedValue, changed } = doCommonTypeCheck(memberDef, value)\r\n    if (changed) return checkedValue\r\n    if (typeof value !== 'boolean') {\r\n      throw new ValidationError(ErrorCodes.notABool, `Expecting a boolean value for '${memberDef.path}' but found ${JSON.stringify(value)}.`)\r\n    }\r\n    return value\r\n  }\r\n\r\n  // Stringify with validation\r\n  public stringify(value: any, memberDef: MemberDef): string {\r\n    this.load(value, memberDef)\r\n    return value ? 'T' : 'F'\r\n  }\r\n\r\n  #validate(node: Node, memberDef: MemberDef, defs?: Definitions): any {\r\n    const valueNode = defs?.getV(node) || node\r\n    const { value, changed } = doCommonTypeCheck(memberDef, valueNode, node, defs)\r\n    if (changed) return value\r\n\r\n    if (valueNode instanceof TokenNode === false || valueNode.type !== TokenType.BOOLEAN) {\r\n      throw new ValidationError(ErrorCodes.notABool, `Expecting a boolean value for '${memberDef.path}' but found ${valueNode.toValue()}.`, node)\r\n    }\r\n\r\n    return valueNode.value\r\n  }\r\n\r\n  public static get types() { return ['bool'] }\r\n}\r\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,sBAAiC;AACjC,4BAAiC;AAEjC,oBAAiC;AACjC,oBAAiC;AAEjC,yBAAiC;AACjC,yBAAiC;AAGjC,MAAM,SAAS,IAAI,cAAAA;AAAA,EACjB;AAAA,EACA,EAAE,MAAU,EAAE,MAAM,UAAU,UAAU,OAAO,MAAM,OAAO,SAAS,CAAC,MAAM,EAAE,EAAE;AAAA,EAChF,EAAE,SAAU,EAAE,MAAM,QAAU,UAAU,MAAO,MAAM,MAAO,EAAE;AAAA,EAC9D,EAAE,UAAU,EAAE,MAAM,QAAU,UAAU,KAAK,EAAE;AAAA,EAC/C,EAAE,MAAU,EAAE,MAAM,QAAU,UAAU,KAAK,EAAE;AACjD;AAEA,MAAO,WAA4C;AAAA,EACjD,IAAW,OAAS;AAAE,WAAO;AAAA,EAAO;AAAA,EACpC,IAAW,SAAS;AAAE,WAAO;AAAA,EAAO;AAAA,EAE7B,MAAM,MAAY,WAAsB,MAAyB;AACtE,WAAO,KAAK,UAAU,MAAM,WAAW,IAAI;AAAA,EAC7C;AAAA;AAAA,EAGO,KAAK,OAAY,WAAsB,MAA6B;AACzE,UAAM,EAAE,OAAO,cAAc,QAAQ,QAAI,mBAAAC,SAAkB,WAAW,KAAK;AAC3E,QAAI,QAAS,QAAO;AACpB,QAAI,OAAO,UAAU,WAAW;AAC9B,YAAM,IAAI,gBAAAC,QAAgB,sBAAAC,QAAW,UAAU,kCAAkC,UAAU,IAAI,eAAe,KAAK,UAAU,KAAK,CAAC,GAAG;AAAA,IACxI;AACA,WAAO;AAAA,EACT;AAAA;AAAA,EAGO,UAAU,OAAY,WAA8B;AACzD,SAAK,KAAK,OAAO,SAAS;AAC1B,WAAO,QAAQ,MAAM;AAAA,EACvB;AAAA,EAEA,UAAU,MAAY,WAAsB,MAAyB;AACnE,UAAM,YAAY,MAAM,KAAK,IAAI,KAAK;AACtC,UAAM,EAAE,OAAO,QAAQ,QAAI,mBAAAF,SAAkB,WAAW,WAAW,MAAM,IAAI;AAC7E,QAAI,QAAS,QAAO;AAEpB,QAAI,qBAAqB,cAAAG,YAAc,SAAS,UAAU,SAAS,mBAAAC,QAAU,SAAS;AACpF,YAAM,IAAI,gBAAAH,QAAgB,sBAAAC,QAAW,UAAU,kCAAkC,UAAU,IAAI,eAAe,UAAU,QAAQ,CAAC,KAAK,IAAI;AAAA,IAC5I;AAEA,WAAO,UAAU;AAAA,EACnB;AAAA,EAEA,WAAkB,QAAQ;AAAE,WAAO,CAAC,MAAM;AAAA,EAAE;AAC9C;","names":["Schema","doCommonTypeCheck","ValidationError","ErrorCodes","TokenNode","TokenType"]}