{"version":3,"file":"linux.mjs","names":["mkdir","open","writeFile","join","pathJoin","basename","dirname","linuxLauncher","EM_386","EM_X86_64","ProjectorSaLinux","BundleSa","BundleSaLinux","constructor","path","flat","projector","_createProjector","extension","_getProjectorPathNested","_getProjectorPath","_writeLauncher","stat","d","Uint8Array","v","DataView","buffer","byteOffset","byteLength","f","r","read","bytesRead","Error","close","machine","getUint16","launcher","recursive","mode"],"sources":["../../../src/bundle/sa/linux.ts"],"sourcesContent":["import {mkdir, open, writeFile} from 'node:fs/promises';\nimport {join as pathJoin, basename, dirname} from 'node:path';\n\nimport {linuxLauncher} from '../../util/linux.ts';\nimport {EM_386, EM_X86_64} from '../../util/internal/linux/elf.ts';\nimport {ProjectorSaLinux} from '../../projector/sa/linux.ts';\nimport {BundleSa} from '../sa.ts';\n\n/**\n * BundleSaLinux object.\n */\nexport class BundleSaLinux extends BundleSa {\n\t/**\n\t * ProjectorSaLinux instance.\n\t */\n\tpublic readonly projector: ProjectorSaLinux;\n\n\t/**\n\t * BundleSaLinux constructor.\n\t *\n\t * @param path Output path for the main application.\n\t * @param flat Flat bundle.\n\t */\n\tconstructor(path: string, flat = false) {\n\t\tsuper(path, flat);\n\n\t\tthis.projector = this._createProjector();\n\t}\n\n\t/**\n\t * @inheritdoc\n\t */\n\tpublic get extension() {\n\t\treturn '';\n\t}\n\n\t/**\n\t * @inheritdoc\n\t */\n\tprotected _getProjectorPathNested(): string {\n\t\tconst {path} = this;\n\t\treturn pathJoin(`${path}.data`, basename(path));\n\t}\n\n\t/**\n\t * @inheritdoc\n\t */\n\tprotected _createProjector() {\n\t\treturn new ProjectorSaLinux(this._getProjectorPath());\n\t}\n\n\t/**\n\t * @inheritdoc\n\t */\n\tprotected async _writeLauncher() {\n\t\tconst {path, projector} = this;\n\n\t\tlet stat = null;\n\t\tconst d = new Uint8Array(2);\n\t\tconst v = new DataView(d.buffer, d.byteOffset, d.byteLength);\n\t\tconst f = await open(projector.path, 'r');\n\t\ttry {\n\t\t\tstat = await f.stat();\n\t\t\tconst r = await f.read(d, 0, 2, 18);\n\t\t\tif (r.bytesRead < 2) {\n\t\t\t\tthrow new Error('Unknown format');\n\t\t\t}\n\t\t} finally {\n\t\t\tawait f.close();\n\t\t}\n\n\t\tconst machine = v.getUint16(0, true);\n\t\tlet launcher = null;\n\t\tswitch (machine) {\n\t\t\tcase EM_386: {\n\t\t\t\tlauncher = await linuxLauncher('i386');\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase EM_X86_64: {\n\t\t\t\tlauncher = await linuxLauncher('x86_64');\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdefault: {\n\t\t\t\tthrow new Error(`Unknown machine type: ${machine}`);\n\t\t\t}\n\t\t}\n\n\t\tawait mkdir(dirname(path), {recursive: true});\n\t\tawait writeFile(path, launcher, {\n\t\t\tmode: stat.mode\n\t\t});\n\t}\n}\n"],"mappings":"AAAA,SAAQA,KAAK,EAAEC,IAAI,EAAEC,SAAS,QAAO,kBAAkB;AACvD,SAAQC,IAAI,IAAIC,QAAQ,EAAEC,QAAQ,EAAEC,OAAO,QAAO,WAAW;AAE7D,SAAQC,aAAa,QAAO,sBAAqB;AACjD,SAAQC,MAAM,EAAEC,SAAS,QAAO,mCAAkC;AAClE,SAAQC,gBAAgB,QAAO,8BAA6B;AAC5D,SAAQC,QAAQ,QAAO,WAAU;;AAEjC;AACA;AACA;AACA,OAAO,MAAMC,aAAa,SAASD,QAAQ,CAAC;EAC3C;AACD;AACA;;EAGC;AACD;AACA;AACA;AACA;AACA;EACCE,WAAWA,CAACC,IAAY,EAAEC,IAAI,GAAG,KAAK,EAAE;IACvC,KAAK,CAACD,IAAI,EAAEC,IAAI,CAAC;IAEjB,IAAI,CAACC,SAAS,GAAG,IAAI,CAACC,gBAAgB,CAAC,CAAC;EACzC;;EAEA;AACD;AACA;EACC,IAAWC,SAASA,CAAA,EAAG;IACtB,OAAO,EAAE;EACV;;EAEA;AACD;AACA;EACWC,uBAAuBA,CAAA,EAAW;IAC3C,MAAM;MAACL;IAAI,CAAC,GAAG,IAAI;IACnB,OAAOV,QAAQ,CAAC,GAAGU,IAAI,OAAO,EAAET,QAAQ,CAACS,IAAI,CAAC,CAAC;EAChD;;EAEA;AACD;AACA;EACWG,gBAAgBA,CAAA,EAAG;IAC5B,OAAO,IAAIP,gBAAgB,CAAC,IAAI,CAACU,iBAAiB,CAAC,CAAC,CAAC;EACtD;;EAEA;AACD;AACA;EACC,MAAgBC,cAAcA,CAAA,EAAG;IAChC,MAAM;MAACP,IAAI;MAAEE;IAAS,CAAC,GAAG,IAAI;IAE9B,IAAIM,IAAI,GAAG,IAAI;IACf,MAAMC,CAAC,GAAG,IAAIC,UAAU,CAAC,CAAC,CAAC;IAC3B,MAAMC,CAAC,GAAG,IAAIC,QAAQ,CAACH,CAAC,CAACI,MAAM,EAAEJ,CAAC,CAACK,UAAU,EAAEL,CAAC,CAACM,UAAU,CAAC;IAC5D,MAAMC,CAAC,GAAG,MAAM7B,IAAI,CAACe,SAAS,CAACF,IAAI,EAAE,GAAG,CAAC;IACzC,IAAI;MACHQ,IAAI,GAAG,MAAMQ,CAAC,CAACR,IAAI,CAAC,CAAC;MACrB,MAAMS,CAAC,GAAG,MAAMD,CAAC,CAACE,IAAI,CAACT,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;MACnC,IAAIQ,CAAC,CAACE,SAAS,GAAG,CAAC,EAAE;QACpB,MAAM,IAAIC,KAAK,CAAC,gBAAgB,CAAC;MAClC;IACD,CAAC,SAAS;MACT,MAAMJ,CAAC,CAACK,KAAK,CAAC,CAAC;IAChB;IAEA,MAAMC,OAAO,GAAGX,CAAC,CAACY,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC;IACpC,IAAIC,QAAQ,GAAG,IAAI;IACnB,QAAQF,OAAO;MACd,KAAK5B,MAAM;QAAE;UACZ8B,QAAQ,GAAG,MAAM/B,aAAa,CAAC,MAAM,CAAC;UACtC;QACD;MACA,KAAKE,SAAS;QAAE;UACf6B,QAAQ,GAAG,MAAM/B,aAAa,CAAC,QAAQ,CAAC;UACxC;QACD;MACA;QAAS;UACR,MAAM,IAAI2B,KAAK,CAAC,yBAAyBE,OAAO,EAAE,CAAC;QACpD;IACD;IAEA,MAAMpC,KAAK,CAACM,OAAO,CAACQ,IAAI,CAAC,EAAE;MAACyB,SAAS,EAAE;IAAI,CAAC,CAAC;IAC7C,MAAMrC,SAAS,CAACY,IAAI,EAAEwB,QAAQ,EAAE;MAC/BE,IAAI,EAAElB,IAAI,CAACkB;IACZ,CAAC,CAAC;EACH;AACD","ignoreList":[]}