{"version":3,"sources":["../../../src/nodes/Location.ts"],"sourcesContent":["export class Position {\n  index: number;\n  line: number;\n  col: number;\n\n  constructor(loc: { index: number; line: number; col: number }) {\n    this.index = loc.index;\n    this.line = loc.line;\n    this.col = loc.col;\n  }\n}\n\nexport class Location {\n  start: Position;\n  end: Position;\n\n  constructor(start: Position, end: Position) {\n    this.start = start;\n    this.end = end;\n  }\n\n  slice(input: string): string {\n    return input.slice(...this.range);\n  }\n\n  get range(): [number, number] {\n    return [this.start.index, this.end.index];\n  }\n\n  get lines(): [number, number] {\n    return [this.start.line, this.end.line];\n  }\n}\n\nexport const location = (loc: { index: number; line: number; col: number }) => {\n  const start = new Position(loc);\n\n  return (node: unknown) => {\n    node.loc = new Location(start, new Position(loc));\n    return node;\n  };\n};\n\nlocation.Position = Position;\nlocation.Location = Location;\nlocation.location = location;\n\nexport default Location;\n"],"mappings":";;;;AAAO,IAAM,WAAN,MAAe;AAAA,EAAtB,OAAsB;AAAA;AAAA;AAAA,EACpB;AAAA,EACA;AAAA,EACA;AAAA,EAEA,YAAY,KAAmD;AAC7D,SAAK,QAAQ,IAAI;AACjB,SAAK,OAAO,IAAI;AAChB,SAAK,MAAM,IAAI;AAAA,EACjB;AACF;AAEO,IAAM,WAAN,MAAe;AAAA,EAZtB,OAYsB;AAAA;AAAA;AAAA,EACpB;AAAA,EACA;AAAA,EAEA,YAAY,OAAiB,KAAe;AAC1C,SAAK,QAAQ;AACb,SAAK,MAAM;AAAA,EACb;AAAA,EAEA,MAAM,OAAuB;AAC3B,WAAO,MAAM,MAAM,GAAG,KAAK,KAAK;AAAA,EAClC;AAAA,EAEA,IAAI,QAA0B;AAC5B,WAAO,CAAC,KAAK,MAAM,OAAO,KAAK,IAAI,KAAK;AAAA,EAC1C;AAAA,EAEA,IAAI,QAA0B;AAC5B,WAAO,CAAC,KAAK,MAAM,MAAM,KAAK,IAAI,IAAI;AAAA,EACxC;AACF;AAEO,IAAM,WAAW,wBAAC,QAAsD;AAC7E,QAAM,QAAQ,IAAI,SAAS,GAAG;AAE9B,SAAO,CAAC,SAAkB;AACxB,SAAK,MAAM,IAAI,SAAS,OAAO,IAAI,SAAS,GAAG,CAAC;AAChD,WAAO;AAAA,EACT;AACF,GAPwB;AASxB,SAAS,WAAW;AACpB,SAAS,WAAW;AACpB,SAAS,WAAW;AAEpB,IAAO,mBAAQ;","names":[]}