{"version":3,"sources":["sourcefile.ts"],"names":["utilNormalizeNewlines","SourceFile","Object","constructor","code","name","defineProperty","configurable","enumerable","writable","value","getLines","start","end","lines","split","slice"],"mappings":"AAAA,SAAQA,qBAAR,QAAoC,eAApC;AAEA;AACA;AACA;;AACA,OAAO,MAAMC,UAAN,SAAyBC,MAAzB,CAAgC;AACtC;AACD;AACA;;AAGC;AACD;AACA;AAGCC,EAAAA,WAAW,CAACC,IAAD,EAAeC,IAAI,GAAG,EAAtB,EAA0B;AACpC;AADoC,SAPrBD,IAOqB;AAAA,SAFrBC,IAEqB;AAEpC,SAAKD,IAAL,GAAYA,IAAZ;AACA,SAAKC,IAAL,GAAYA,IAAZ,CAHoC,CAKpC;;AACAH,IAAAA,MAAM,CAACI,cAAP,CAAsB,IAAtB,EAA4B,MAA5B,EAAoC;AACnCC,MAAAA,YAAY,EAAE,KADqB;AAEnCC,MAAAA,UAAU,EAAE,IAFuB;AAGnCC,MAAAA,QAAQ,EAAE,KAHyB;AAInCC,MAAAA,KAAK,EAAEN;AAJ4B,KAApC;AAMAF,IAAAA,MAAM,CAACI,cAAP,CAAsB,IAAtB,EAA4B,MAA5B,EAAoC;AACnCC,MAAAA,YAAY,EAAE,KADqB;AAEnCC,MAAAA,UAAU,EAAE,IAFuB;AAGnCC,MAAAA,QAAQ,EAAE,KAHyB;AAInCC,MAAAA,KAAK,EAAEL;AAJ4B,KAApC;AAMA;AAED;AACD;AACA;AACA;AACA;AACA;AACA;;;AACQM,EAAAA,QAAQ,CAACC,KAAK,GAAG,CAAT,EAAYC,GAAG,GAAG,CAAC,CAAnB,EAAsB;AACpC,UAAMC,KAAK,GAAGd,qBAAqB,CAAC,KAAKI,IAAN,CAArB,CAAiCW,KAAjC,CAAuC,IAAvC,CAAd;;AACA,QAAIH,KAAK,GAAG,CAAR,IAAaC,GAAG,GAAG,CAAvB,EAA0B;AACzB,aAAOC,KAAP;AACA;;AACD,WAAOD,GAAG,GAAG,CAAN,GAAUC,KAAK,CAACE,KAAN,CAAYJ,KAAZ,CAAV,GAA+BE,KAAK,CAACE,KAAN,CAAYJ,KAAZ,EAAmBC,GAAnB,CAAtC;AACA;;AA5CqC","sourcesContent":["import {utilNormalizeNewlines} from '@sage-js/core';\n\n/**\n * SourceFile constructor.\n */\nexport class SourceFile extends Object {\n\t/**\n\t * File code.\n\t */\n\tpublic readonly code: string;\n\n\t/**\n\t * File name.\n\t */\n\tpublic readonly name: string;\n\n\tconstructor(code: string, name = '') {\n\t\tsuper();\n\t\tthis.code = code;\n\t\tthis.name = name;\n\n\t\t// Make sure values are not modified by mistake.\n\t\tObject.defineProperty(this, 'code', {\n\t\t\tconfigurable: false,\n\t\t\tenumerable: true,\n\t\t\twritable: false,\n\t\t\tvalue: code\n\t\t});\n\t\tObject.defineProperty(this, 'name', {\n\t\t\tconfigurable: false,\n\t\t\tenumerable: true,\n\t\t\twritable: false,\n\t\t\tvalue: name\n\t\t});\n\t}\n\n\t/**\n\t * Get source file lines, 0 indexed.\n\t *\n\t * @param start Start index.\n\t * @param end End index.\n\t * @returns Source lines in range.\n\t */\n\tpublic getLines(start = 0, end = -1) {\n\t\tconst lines = utilNormalizeNewlines(this.code).split('\\n');\n\t\tif (start < 1 && end < 0) {\n\t\t\treturn lines;\n\t\t}\n\t\treturn end < 0 ? lines.slice(start) : lines.slice(start, end);\n\t}\n}\n"],"file":"sourcefile.mjs","sourceRoot":"../src"}