{"version":3,"file":"cli.cjs","names":["_fs","require","_helpers","_yargs","_interopRequireDefault","_MediaInfo","_MediaInfoFactory","obj","__esModule","default","analyze","coverData","file","format","full","fileHandle","fileSize","mediainfo","TypeError","includes","readChunk","size","offset","undefined","Error","buffer","Uint8Array","read","fsPromises","open","stat","MediaInfoFactory","console","log","analyzeData","close","parseArgs","yargsInstance","yargs","hideBin","process","argv","wrap","terminalWidth","option","alias","describe","choices","FORMAT_CHOICES","type","command","positional","help","fail","msg","err","error","message","exit","parseSync","catch"],"sourceRoot":"../../src","sources":["cli.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport { promises as fsPromises } from 'fs'\n\nimport { hideBin } from 'yargs/helpers'\nimport yargs from 'yargs/yargs'\n\nimport type { ReadChunkFunc } from './MediaInfo'\nimport type MediaInfo from './MediaInfo'\nimport { FORMAT_CHOICES } from './MediaInfo'\nimport MediaInfoFactory from './MediaInfoFactory'\n\nconst analyze = async ({ coverData, file, format, full }: ReturnType) => {\n let fileHandle: fsPromises.FileHandle | undefined\n let fileSize: number\n let mediainfo: MediaInfo | undefined\n\n if (!file) {\n throw TypeError('No file received!')\n }\n\n if (coverData && !['JSON', 'XML'].includes(format)) {\n throw TypeError('For cover data you need to choose JSON or XML as output format!')\n }\n\n const readChunk: ReadChunkFunc = async (size, offset) => {\n if (fileHandle === undefined) throw new Error('File unavailable')\n const buffer = new Uint8Array(size)\n await fileHandle.read(buffer, 0, size, offset)\n return buffer\n }\n\n try {\n fileHandle = await fsPromises.open(file, 'r')\n fileSize = (await fileHandle.stat()).size\n const mediainfo = await MediaInfoFactory({ format, coverData, full })\n if (mediainfo === undefined) {\n throw new Error('Failed to initialize MediaInfo')\n }\n console.log(await mediainfo.analyzeData(() => fileSize, readChunk))\n } finally {\n fileHandle && (await fileHandle.close())\n mediainfo && mediainfo.close()\n }\n}\n\nfunction parseArgs() {\n const yargsInstance = yargs(hideBin(process.argv))\n return yargsInstance\n .wrap(yargsInstance.terminalWidth())\n .option('format', {\n alias: 'f',\n default: 'text' as const,\n describe: 'Choose format',\n choices: FORMAT_CHOICES,\n })\n .option('cover-data', {\n default: false,\n describe: 'Output cover data as base64',\n type: 'boolean',\n })\n .option('full', {\n default: false,\n describe: 'Full information display (all internal tags)',\n type: 'boolean',\n })\n .command('$0 ', 'Show information about media file')\n .positional('file', { describe: 'File to analyze', type: 'string' })\n .help('h')\n .alias('h', 'help')\n .fail(function (msg: string, err: Error, yargs) {\n if (msg) {\n console.error(yargs.help())\n console.error(msg)\n }\n if (err) {\n console.error(err.message)\n }\n process.exit(1)\n })\n .parseSync()\n}\n\nanalyze(parseArgs()).catch(console.error)\n"],"mappings":"AAAA;AAAmB;;AAEnB,IAAAA,GAAA,GAAAC,OAAA;AAEA,IAAAC,QAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAC,sBAAA,CAAAH,OAAA;AAA+B,IAAAI,UAAA,GAAAJ,OAAA;AAAA,IAAAK,iBAAA,GAAAF,sBAAA,CAAAH,OAAA;AAAA,SAAAG,uBAAAG,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAO/B,MAAMG,OAAO,GAAG,MAAAA,CAAO;EAAEC,SAAS;EAAEC,IAAI;EAAEC,MAAM;EAAEC;AAAmC,CAAC,KAAK;EACzF,IAAIC,UAA6C;EACjD,IAAIC,QAAgB;EACpB,IAAIC,SAA+C;EAEnD,IAAI,CAACL,IAAI,EAAE;IACT,MAAMM,SAAS,CAAC,mBAAmB,CAAC;EACtC;EAEA,IAAIP,SAAS,IAAI,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,CAACQ,QAAQ,CAACN,MAAM,CAAC,EAAE;IAClD,MAAMK,SAAS,CAAC,iEAAiE,CAAC;EACpF;EAEA,MAAME,SAAwB,GAAG,MAAAA,CAAOC,IAAI,EAAEC,MAAM,KAAK;IACvD,IAAIP,UAAU,KAAKQ,SAAS,EAAE,MAAM,IAAIC,KAAK,CAAC,kBAAkB,CAAC;IACjE,MAAMC,MAAM,GAAG,IAAIC,UAAU,CAACL,IAAI,CAAC;IACnC,MAAMN,UAAU,CAACY,IAAI,CAACF,MAAM,EAAE,CAAC,EAAEJ,IAAI,EAAEC,MAAM,CAAC;IAC9C,OAAOG,MAAM;EACf,CAAC;EAED,IAAI;IACFV,UAAU,GAAG,MAAMa,YAAU,CAACC,IAAI,CAACjB,IAAI,EAAE,GAAG,CAAC;IAC7CI,QAAQ,GAAG,CAAC,MAAMD,UAAU,CAACe,IAAI,CAAC,CAAC,EAAET,IAAI;IACzC,MAAMJ,SAAS,GAAG,MAAM,IAAAc,yBAAgB,EAAC;MAAElB,MAAM;MAAEF,SAAS;MAAEG;IAAK,CAAC,CAAC;IACrE,IAAIG,SAAS,KAAKM,SAAS,EAAE;MAC3B,MAAM,IAAIC,KAAK,CAAC,gCAAgC,CAAC;IACnD;IACAQ,OAAO,CAACC,GAAG,CAAC,MAAMhB,SAAS,CAACiB,WAAW,CAAC,MAAMlB,QAAQ,EAAEI,SAAS,CAAC,CAAC;EACrE,CAAC,SAAS;IACRL,UAAU,KAAK,MAAMA,UAAU,CAACoB,KAAK,CAAC,CAAC,CAAC;IACxClB,SAAS,IAAIA,SAAS,CAACkB,KAAK,CAAC,CAAC;EAChC;AACF,CAAC;AAED,SAASC,SAASA,CAAA,EAAG;EACnB,MAAMC,aAAa,GAAG,IAAAC,cAAK,EAAC,IAAAC,gBAAO,EAACC,OAAO,CAACC,IAAI,CAAC,CAAC;EAClD,OAAOJ,aAAa,CACjBK,IAAI,CAACL,aAAa,CAACM,aAAa,CAAC,CAAC,CAAC,CACnCC,MAAM,CAAC,QAAQ,EAAE;IAChBC,KAAK,EAAE,GAAG;IACVpC,OAAO,EAAE,MAAe;IACxBqC,QAAQ,EAAE,eAAe;IACzBC,OAAO,EAAEC;EACX,CAAC,CAAC,CACDJ,MAAM,CAAC,YAAY,EAAE;IACpBnC,OAAO,EAAE,KAAK;IACdqC,QAAQ,EAAE,6BAA6B;IACvCG,IAAI,EAAE;EACR,CAAC,CAAC,CACDL,MAAM,CAAC,MAAM,EAAE;IACdnC,OAAO,EAAE,KAAK;IACdqC,QAAQ,EAAE,8CAA8C;IACxDG,IAAI,EAAE;EACR,CAAC,CAAC,CACDC,OAAO,CAAC,WAAW,EAAE,mCAAmC,CAAC,CACzDC,UAAU,CAAC,MAAM,EAAE;IAAEL,QAAQ,EAAE,iBAAiB;IAAEG,IAAI,EAAE;EAAS,CAAC,CAAC,CACnEG,IAAI,CAAC,GAAG,CAAC,CACTP,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAClBQ,IAAI,CAAC,UAAUC,GAAW,EAAEC,GAAU,EAAEjB,KAAK,EAAE;IAC9C,IAAIgB,GAAG,EAAE;MACPtB,OAAO,CAACwB,KAAK,CAAClB,KAAK,CAACc,IAAI,CAAC,CAAC,CAAC;MAC3BpB,OAAO,CAACwB,KAAK,CAACF,GAAG,CAAC;IACpB;IACA,IAAIC,GAAG,EAAE;MACPvB,OAAO,CAACwB,KAAK,CAACD,GAAG,CAACE,OAAO,CAAC;IAC5B;IACAjB,OAAO,CAACkB,IAAI,CAAC,CAAC,CAAC;EACjB,CAAC,CAAC,CACDC,SAAS,CAAC,CAAC;AAChB;AAEAjD,OAAO,CAAC0B,SAAS,CAAC,CAAC,CAAC,CAACwB,KAAK,CAAC5B,OAAO,CAACwB,KAAK,CAAC"}