{"version":3,"sources":["../../../src/parser/nodes/collections.ts"],"sourcesContent":["import Collection from \"../../core/collection\";\r\nimport Definitions from \"../../core/definitions\";\r\nimport { Position } from '../../core/positions';\r\nimport ContainerNode from \"./containers\";\r\nimport ErrorNode from \"./error\";\r\nimport Node from \"./nodes\";\r\n\r\nclass CollectionNode extends ContainerNode {\r\n  constructor(children: Array<Node | undefined> = []) {\r\n    super('collection', children);\r\n  }\r\n\r\n  toValue(defs?: Definitions): any {\r\n    const value = new Collection();\r\n    for (const child of this.children) {\r\n      value.push(child?.toValue(defs));\r\n    }\r\n    return value;\r\n  }\r\n\r\n  getStartPos(): Position {\r\n    return this.children[0]?.getStartPos() ?? Position.unknown;\r\n  }\r\n\r\n  getEndPos(): Position {\r\n    return this.children[this.children.length - 1]?.getEndPos() ?? Position.unknown;\r\n  }\r\n\r\n  // Utility Methods\r\n  isEmpty(): boolean {\r\n    return this.children.length === 0 || this.children.every(child => child === undefined);\r\n  }\r\n\r\n  toDebugString(): string {\r\n    const itemStrings = this.children.map((child, index) => {\r\n      if (!child) return `[${index}]: undefined`;\r\n\r\n      const valueStr = typeof child.toValue === 'function' ?\r\n        JSON.stringify(child.toValue()) :\r\n        String(child);\r\n\r\n      return `[${index}]: ${valueStr}`;\r\n    });\r\n\r\n    return `CollectionNode { ${itemStrings.join(', ')} }`;\r\n  }\r\n\r\n  size(): number {\r\n    return this.children.length;\r\n  }\r\n\r\n  hasValidItems(): boolean {\r\n    return this.children.some(child => {\r\n      if (!child) return true; // undefined items are valid\r\n\r\n      // Check if the child is an ErrorNode\r\n      if (child instanceof ErrorNode) {\r\n        return false;\r\n      }\r\n\r\n      return true; // Valid item found\r\n    });\r\n  }\r\n\r\n  getValidItems(): Node[] {\r\n    return this.children.filter((child): child is Node => {\r\n      if (!child) return true; // undefined items are valid\r\n\r\n      // Check if the child is an ErrorNode\r\n      if (child instanceof ErrorNode) {\r\n        return false;\r\n      }\r\n\r\n      return true; // Valid item\r\n    });\r\n  }\r\n\r\n  isValid(): boolean {\r\n    // A collection is valid if none of its items are ErrorNodes\r\n    return this.children.every(child => {\r\n      if (!child) return true; // undefined items are considered valid\r\n\r\n      // Check if the child is an ErrorNode\r\n      if (child instanceof ErrorNode) {\r\n        return false;\r\n      }\r\n\r\n      return true;\r\n    });\r\n  }\r\n}\r\n\r\nexport default CollectionNode;\r\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAAuB;AAEvB,uBAAyB;AACzB,wBAA0B;AAC1B,mBAAsB;AAGtB,MAAM,uBAAuB,kBAAAA,QAAc;AAAA,EACzC,YAAY,WAAoC,CAAC,GAAG;AAClD,UAAM,cAAc,QAAQ;AAAA,EAC9B;AAAA,EAEA,QAAQ,MAAyB;AAC/B,UAAM,QAAQ,IAAI,kBAAAC,QAAW;AAC7B,eAAW,SAAS,KAAK,UAAU;AACjC,YAAM,KAAK,OAAO,QAAQ,IAAI,CAAC;AAAA,IACjC;AACA,WAAO;AAAA,EACT;AAAA,EAEA,cAAwB;AACtB,WAAO,KAAK,SAAS,CAAC,GAAG,YAAY,KAAK,0BAAS;AAAA,EACrD;AAAA,EAEA,YAAsB;AACpB,WAAO,KAAK,SAAS,KAAK,SAAS,SAAS,CAAC,GAAG,UAAU,KAAK,0BAAS;AAAA,EAC1E;AAAA;AAAA,EAGA,UAAmB;AACjB,WAAO,KAAK,SAAS,WAAW,KAAK,KAAK,SAAS,MAAM,WAAS,UAAU,MAAS;AAAA,EACvF;AAAA,EAEA,gBAAwB;AACtB,UAAM,cAAc,KAAK,SAAS,IAAI,CAAC,OAAO,UAAU;AACtD,UAAI,CAAC,MAAO,QAAO,IAAI,KAAK;AAE5B,YAAM,WAAW,OAAO,MAAM,YAAY,aACxC,KAAK,UAAU,MAAM,QAAQ,CAAC,IAC9B,OAAO,KAAK;AAEd,aAAO,IAAI,KAAK,MAAM,QAAQ;AAAA,IAChC,CAAC;AAED,WAAO,oBAAoB,YAAY,KAAK,IAAI,CAAC;AAAA,EACnD;AAAA,EAEA,OAAe;AACb,WAAO,KAAK,SAAS;AAAA,EACvB;AAAA,EAEA,gBAAyB;AACvB,WAAO,KAAK,SAAS,KAAK,WAAS;AACjC,UAAI,CAAC,MAAO,QAAO;AAGnB,UAAI,iBAAiB,aAAAC,SAAW;AAC9B,eAAO;AAAA,MACT;AAEA,aAAO;AAAA,IACT,CAAC;AAAA,EACH;AAAA,EAEA,gBAAwB;AACtB,WAAO,KAAK,SAAS,OAAO,CAAC,UAAyB;AACpD,UAAI,CAAC,MAAO,QAAO;AAGnB,UAAI,iBAAiB,aAAAA,SAAW;AAC9B,eAAO;AAAA,MACT;AAEA,aAAO;AAAA,IACT,CAAC;AAAA,EACH;AAAA,EAEA,UAAmB;AAEjB,WAAO,KAAK,SAAS,MAAM,WAAS;AAClC,UAAI,CAAC,MAAO,QAAO;AAGnB,UAAI,iBAAiB,aAAAA,SAAW;AAC9B,eAAO;AAAA,MACT;AAEA,aAAO;AAAA,IACT,CAAC;AAAA,EACH;AACF;AAEA,IAAO,sBAAQ;","names":["ContainerNode","Collection","ErrorNode"]}