{"version":3,"sources":["local_files.ts"],"sourcesContent":["import { DATEX_FILE_TYPE, FILE_TYPE } from \"../compiler/compiler.ts\";\nimport { Runtime } from \"../runtime/runtime.ts\";\nimport wasm_init, { decompile } from \"../wasm/adapter/pkg/datex_wasm.js\";\n\nexport async function uploadDatexFile(){\n\tconst pickerOpts = {\n\t\ttypes: [\n\t\t\t{\n\t\t\t\tdescription: 'DATEX or JSON Files',\n\t\t\t\taccept: {\n\t\t\t\t\t'application/datex': ['.dxb'],\n\t\t\t\t\t'text/datex': ['.dx'],\n\t\t\t\t\t'text/dxb': ['.dxb'],\n\n\t\t\t\t\t'application/json': ['.json'],\n\t\t\t\t\t'application/json5': [ '.json5'],\n\t\t\t\t}\n\t\t\t}\n\t\t],\n\t\texcludeAcceptAllOption: true,\n\t\tmultiple: false\n\t};\n\t\n\t// open file picker\n\t// @ts-ignore new api\n\tconst [fileHandle] = await globalThis.showOpenFilePicker(pickerOpts);\n\treturn getDatexContentFromFileHandle(fileHandle);\n}\n\nexport type datex_file_data = {type: DATEX_FILE_TYPE, text:string, binary?:ArrayBuffer, fileHandle:any};\n\nexport async function getDatexContentFromFileHandle(fileHandle:any) {\n\t// init wasm\n\tawait wasm_init();\n\tconst fileData = <File> await fileHandle.getFile();\n\n\tconst data:datex_file_data = {\n\t\ttype: FILE_TYPE.DATEX_SCRIPT,\n\t\tfileHandle,\n\t\ttext: await fileData.text() // assume DATEX script or JSON\n\t}\n\n\tif (fileData.type == \"application/datex\" || fileData.type == \"text/dxb\" || fileHandle.name?.endsWith(\".dxb\") || fileData.name?.endsWith(\".dxb\") || data.text.startsWith('\\u0001\\u0064') /* dxb magic number*/) {\n\t\tconst buffer = await fileData.arrayBuffer(); // DXB\n\t\tdata.binary = buffer;\n\t\tdata.type = FILE_TYPE.DATEX_BINARY;\n\t\tdata.text = generateDecompiled(fileHandle.name??fileData.name??'unknown file', buffer);\t\n\t} \n\n\treturn data;\n}\n\nfunction generateDecompiled(filename:string, buffer:ArrayBuffer) {\n\ttry {\n\t\t// remove header\n\t\tconst res = Runtime.parseHeaderSynchronousPart(buffer);\n\t\tif (!(res instanceof Array)) return `# Invalid DATEX binary file: ${filename} - could not decompile (invalid header)`\n\t\tconst dxb_without_header = res[1];\n\t\tconst decompiled = decompile(dxb_without_header, true, false, true);\n\t\treturn `# Decompiled from ${filename}\\n\\n${decompiled}`\n\t}\n\tcatch (e){ \n\t\tconsole.log(e);\n\t\treturn `# Invalid DATEX binary file: ${filename} - could not decompile (${e})`\n\t} \n}"],"names":["FILE_TYPE","Runtime","wasm_init","decompile","uploadDatexFile","fileHandle","globalThis","showOpenFilePicker","types","description","accept","excludeAcceptAllOption","multiple","getDatexContentFromFileHandle","fileData","getFile","data","type","DATEX_SCRIPT","text","name","endsWith","startsWith","buffer","arrayBuffer","binary","DATEX_BINARY","generateDecompiled","filename","res","parseHeaderSynchronousPart","Array","dxb_without_header","decompiled","e","console","log"],"mappings":"AAAA,SAA0BA,SAAS,QAAQ,0BAA0B;AACrE,SAASC,OAAO,QAAQ,wBAAwB;AAChD,OAAOC,aAAaC,SAAS,QAAQ,oCAAoC;AAEzE,OAAO,eAAeC;IAqBrB,IAAM,CAACC,WAAW,GAAG,MAAMC,WAAWC,kBAAkB,CApBrC;QAClBC,OAAO;YACN;gBACCC,aAAa;gBACbC,QAAQ;oBACP,qBAAqB;wBAAC;qBAAO;oBAC7B,cAAc;wBAAC;qBAAM;oBACrB,YAAY;wBAAC;qBAAO;oBAEpB,oBAAoB;wBAAC;qBAAQ;oBAC7B,qBAAqB;wBAAE;qBAAS;gBACjC;YACD;SACA;QACDC,wBAAwB,CAAA;QACxBC,UAAU,CAAA;IACX;IAKA,OAAOC,8BAA8BR;AACtC;AAIA,OAAO,eAAeQ,8BAA8BR,UAAc;IAEjE,MAAMH;IACN,IAAMY,WAAkB,MAAMT,WAAWU,OAAO,IAE1CC,OAAuB;QAC5BC,MAAMjB,UAAUkB,YAAY;QAC5Bb;QACAc,MAAM,MAAML,SAASK,IAAI;IAC1B;IAEA,IAAIL,AAAiB,uBAAjBA,SAASG,IAAI,IAA2BH,AAAiB,cAAjBA,SAASG,IAAI,IAAkBZ,WAAWe,IAAI,EAAEC,SAAS,WAAWP,SAASM,IAAI,EAAEC,SAAS,WAAWL,KAAKG,IAAI,CAACG,UAAU,CAAC,iBAAuC;QAC9M,IAAMC,SAAS,MAAMT,SAASU,WAAW;QACzCR,KAAKS,MAAM,GAAGF,QACdP,KAAKC,IAAI,GAAGjB,UAAU0B,YAAY,EAClCV,KAAKG,IAAI,GAAGQ,mBAAmBtB,WAAWe,IAAI,IAAEN,SAASM,IAAI,IAAE,gBAAgBG;IAChF;IAEA,OAAOP;AACR;AAEA,SAASW,mBAAmBC,QAAe,EAAEL,MAAkB;IAC9D,IAAI;QAEH,IAAMM,MAAM5B,QAAQ6B,0BAA0B,CAACP;QAC/C,IAAI,CAAEM,CAAAA,eAAeE,KAAI,GAAI,OAAO,CAAC,6BAA6B,EAAEH,SAAS,uCAAuC,CAAC;QACrH,IAAMI,qBAAqBH,GAAG,CAAC,EAAE,EAC3BI,aAAa9B,UAAU6B,oBAAoB,CAAA,GAAM,CAAA,GAAO,CAAA;QAC9D,OAAO,CAAC,kBAAkB,EAAEJ,SAAS,IAAI,EAAEK,WAAW,CAAC;IACxD,EACA,OAAOC,GAAE;QAER,OADAC,QAAQC,GAAG,CAACF,IACL,CAAC,6BAA6B,EAAEN,SAAS,wBAAwB,EAAEM,EAAE,CAAC,CAAC;IAC/E;AACD","sourceRoot":"/lib/datex-core-js-legacy-0.3.15/utils/","file":"local_files.ts"}