{"version":3,"sources":["../../../src/parser/nodes/document.ts"],"sourcesContent":["import Definitions from '../../core/definitions';\r\nimport Document from '../../core/document';\r\nimport { Position } from '../../core/positions';\r\nimport SectionCollection from '../../core/section-collection';\r\nimport Node         from './nodes';\r\nimport SectionNode  from './section';\r\n\r\nclass DocumentNode implements Node {\r\n  header: SectionNode | null = null;\r\n  children: Array<SectionNode> = [];\r\n  private errors: Error[] = []; // Accumulated errors during parsing\r\n\r\n  constructor(header: SectionNode | null, children: Array<SectionNode> = [], errors: Error[] = []) {\r\n    this.header = header;\r\n    this.children = children;\r\n    this.errors = errors;\r\n  }\r\n\r\n  get firstChild(): SectionNode | null {\r\n    return this.children.length > 0 ? this.children[0] : null;\r\n  }\r\n\r\n  /**\r\n   * Returns all errors accumulated during parsing.\r\n   * This enables IDEs and tools to show all diagnostics in one pass.\r\n   */\r\n  getErrors(): Error[] {\r\n    return this.errors;\r\n  }\r\n\r\n\r\n  toValue(defs?: Definitions):any {\r\n    const header = this.header?.toValue(defs) ?? null\r\n    const sections = new SectionCollection();\r\n    for (let i=0; i<this.children.length; i++) {\r\n      sections.push(\r\n        this.children[i].toValue(defs)\r\n      );\r\n    }\r\n\r\n    return new Document(header, sections);\r\n  }\r\n\r\n  getStartPos(): Position {\r\n    if (this.header) {\r\n      return this.header.getStartPos();\r\n    }\r\n\r\n    if (this.children.length > 0) {\r\n      return this.children[0].getStartPos();\r\n    }\r\n\r\n    return Position.unknown;\r\n  }\r\n\r\n  getEndPos(): Position {\r\n    if (this.children.length > 0) {\r\n      return this.children[this.children.length - 1].getEndPos();\r\n    }\r\n\r\n    if (this.header) {\r\n      return this.header.getEndPos();\r\n    }\r\n\r\n    return Position.unknown;\r\n  }\r\n}\r\n\r\nexport default DocumentNode;"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,sBAAqB;AACrB,uBAAyB;AACzB,gCAA8B;AAI9B,MAAM,aAA6B;AAAA,EACjC,SAA6B;AAAA,EAC7B,WAA+B,CAAC;AAAA,EACxB,SAAkB,CAAC;AAAA;AAAA,EAE3B,YAAY,QAA4B,WAA+B,CAAC,GAAG,SAAkB,CAAC,GAAG;AAC/F,SAAK,SAAS;AACd,SAAK,WAAW;AAChB,SAAK,SAAS;AAAA,EAChB;AAAA,EAEA,IAAI,aAAiC;AACnC,WAAO,KAAK,SAAS,SAAS,IAAI,KAAK,SAAS,CAAC,IAAI;AAAA,EACvD;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,YAAqB;AACnB,WAAO,KAAK;AAAA,EACd;AAAA,EAGA,QAAQ,MAAwB;AAC9B,UAAM,SAAS,KAAK,QAAQ,QAAQ,IAAI,KAAK;AAC7C,UAAM,WAAW,IAAI,0BAAAA,QAAkB;AACvC,aAAS,IAAE,GAAG,IAAE,KAAK,SAAS,QAAQ,KAAK;AACzC,eAAS;AAAA,QACP,KAAK,SAAS,CAAC,EAAE,QAAQ,IAAI;AAAA,MAC/B;AAAA,IACF;AAEA,WAAO,IAAI,gBAAAC,QAAS,QAAQ,QAAQ;AAAA,EACtC;AAAA,EAEA,cAAwB;AACtB,QAAI,KAAK,QAAQ;AACf,aAAO,KAAK,OAAO,YAAY;AAAA,IACjC;AAEA,QAAI,KAAK,SAAS,SAAS,GAAG;AAC5B,aAAO,KAAK,SAAS,CAAC,EAAE,YAAY;AAAA,IACtC;AAEA,WAAO,0BAAS;AAAA,EAClB;AAAA,EAEA,YAAsB;AACpB,QAAI,KAAK,SAAS,SAAS,GAAG;AAC5B,aAAO,KAAK,SAAS,KAAK,SAAS,SAAS,CAAC,EAAE,UAAU;AAAA,IAC3D;AAEA,QAAI,KAAK,QAAQ;AACf,aAAO,KAAK,OAAO,UAAU;AAAA,IAC/B;AAEA,WAAO,0BAAS;AAAA,EAClB;AACF;AAEA,IAAO,mBAAQ;","names":["SectionCollection","Document"]}