{"version":3,"sources":["../../src/parse/node.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unsafe-assignment */\nimport type { Maybe, Token } from \"../types\";\n\nexport class ASTNode {\n  private _token: Token;\n  private _left: Maybe<ASTNode> = null;\n  private _right: Maybe<ASTNode> = null;\n\n  constructor(token: Token) {\n    this._token = token;\n  }\n\n  public get token(): Token {\n    return this._token;\n  }\n\n  public get left(): Maybe<ASTNode> {\n    return this._left;\n  }\n\n  public get right(): Maybe<ASTNode> {\n    return this._right;\n  }\n\n  setRight(node: ASTNode): this {\n    this._right = node;\n    return this;\n  }\n\n  setLeft(node: ASTNode): this {\n    this._left = node;\n    return this;\n  }\n\n  /**\n   * Recursively converts the ASTNode to a JSON object.\n   * @example\n   * build(\"1 + 2\").toJSON();\n   * @returns\n   */\n  toJSON(): Record<string, unknown> {\n    return {\n      ...this._token,\n      left: this._left?.toJSON(),\n      right: this._right?.toJSON(),\n    };\n  }\n}\n"],"mappings":";;;;;AAGO,IAAM,UAAN,MAAc;AAAA,EAKnB,YAAY,OAAc;AAJ1B,wBAAQ;AACR,wBAAQ,SAAwB;AAChC,wBAAQ,UAAyB;AAG/B,SAAK,SAAS;AAAA,EAChB;AAAA,EAEA,IAAW,QAAe;AACxB,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAW,OAAuB;AAChC,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAW,QAAwB;AACjC,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,SAAS,MAAqB;AAC5B,SAAK,SAAS;AACd,WAAO;AAAA,EACT;AAAA,EAEA,QAAQ,MAAqB;AAC3B,SAAK,QAAQ;AACb,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,SAAkC;AAChC,WAAO;AAAA,MACL,GAAG,KAAK;AAAA,MACR,MAAM,KAAK,OAAO,OAAO;AAAA,MACzB,OAAO,KAAK,QAAQ,OAAO;AAAA,IAC7B;AAAA,EACF;AACF;","names":[]}