{"version":3,"file":"injectFFMPEG.js","sourceRoot":"","sources":["../../src/electron/injectFFMPEG.ts"],"names":[],"mappings":";;;AAAA,+CAAkC;AAClC,+BAA8B;AAC9B,6BAA4B;AAC5B,kCAAkC;AAElC,qDAA8D;AAG9D,MAAa,cAAc;IACzB,YACmB,OAAgD,EAChD,eAAuB,EACvB,QAA2C;QAF3C,YAAO,GAAP,OAAO,CAAyC;QAChD,oBAAe,GAAf,eAAe,CAAQ;QACvB,aAAQ,GAAR,QAAQ,CAAmC;IAC3D,CAAC;IAEJ,KAAK,CAAC,MAAM;QACV,MAAM,OAAO,GACX,IAAI,CAAC,OAAO,CAAC,YAAY,KAAK,eAAQ,CAAC,GAAG,CAAC,QAAQ;YACjD,CAAC,CAAC,IAAI,CAAC,IAAI,CACP,IAAI,CAAC,OAAO,CAAC,SAAS,EACtB,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,MAAM,EAClC,UAAU,EACV,YAAY,EACZ,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,sBAAsB,EAClD,UAAU,EACV,GAAG,EACH,WAAW,CACZ;YACH,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAA;QAE5B,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAA;QAC7C,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;IAC5C,CAAC;IAEO,KAAK,CAAC,cAAc;QAC1B,MAAM,cAAc,GAAG,WAAW,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAA;QAE1G,kBAAG,CAAC,IAAI,CAAC,EAAE,cAAc,EAAE,EAAE,aAAa,CAAC,CAAA;QAE3C,MAAM,EACJ,QAAQ,EAAE,EACR,MAAM,EAAE,EAAE,gBAAgB,EAAE,GAC7B,EACD,YAAY,EACZ,IAAI,GACL,GAAG,IAAI,CAAC,OAAO,CAAA;QAEhB,OAAO,IAAA,sCAAwB,EAAC;YAC9B,gBAAgB;YAChB,YAAY,EAAE,QAAQ;YACtB,YAAY;YACZ,IAAI;YACJ,OAAO,EAAE,IAAI,CAAC,eAAe;SAC9B,CAAC,CAAA;IACJ,CAAC;IAEO,KAAK,CAAC,UAAU,CAAC,UAAkB,EAAE,UAAkB;QAC7D,IAAI,QAAQ,GAAG,YAAY,CAAA;QAC3B,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;YAC1D,QAAQ,GAAG,iBAAiB,CAAA;QAC9B,CAAC;aAAM,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,KAAK,OAAO,EAAE,CAAC;YACjD,QAAQ,GAAG,cAAc,CAAA;QAC3B,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;QAClD,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;QACxD,kBAAG,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,kBAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE,gCAAgC,CAAC,CAAA;QAEjG,gDAAgD;QAChD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,+CAA+C,OAAO,EAAE,CAAC,CAAA;QAC3E,CAAC;QAED,0DAA0D;QAC1D,IAAI,OAAO,KAAK,aAAa,EAAE,CAAC;YAC9B,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,CAAA;QAC3C,CAAC;QACD,OAAO,aAAa,CAAA;IACtB,CAAC;CACF;AAvED,wCAuEC","sourcesContent":["import { log } from \"builder-util\"\nimport * as fs from \"fs-extra\"\nimport * as path from \"path\"\nimport { Platform } from \"../core\"\nimport { PrepareApplicationStageDirectoryOptions } from \"../Framework\"\nimport { downloadElectronArtifact } from \"../util/electronGet\"\nimport { ElectronBrandingOptions } from \"./ElectronFramework\"\n\nexport class FFMPEGInjector {\n  constructor(\n    private readonly options: PrepareApplicationStageDirectoryOptions,\n    private readonly electronVersion: string,\n    private readonly branding: Required<ElectronBrandingOptions>\n  ) {}\n\n  async inject() {\n    const libPath =\n      this.options.platformName === Platform.MAC.nodeName\n        ? path.join(\n            this.options.appOutDir,\n            `${this.branding.productName}.app`,\n            \"Contents\",\n            \"Frameworks\",\n            `${this.branding.productName} Framework.framework`,\n            \"Versions\",\n            \"A\",\n            \"Libraries\"\n          )\n        : this.options.appOutDir\n\n    const ffmpegDir = await this.downloadFFMPEG()\n    return this.copyFFMPEG(libPath, ffmpegDir)\n  }\n\n  private async downloadFFMPEG(): Promise<string> {\n    const ffmpegFileName = `ffmpeg-v${this.electronVersion}-${this.options.platformName}-${this.options.arch}`\n\n    log.info({ ffmpegFileName }, \"downloading\")\n\n    const {\n      packager: {\n        config: { electronDownload },\n      },\n      platformName,\n      arch,\n    } = this.options\n\n    return downloadElectronArtifact({\n      electronDownload,\n      artifactName: \"ffmpeg\",\n      platformName,\n      arch,\n      version: this.electronVersion,\n    })\n  }\n\n  private async copyFFMPEG(targetPath: string, sourcePath: string) {\n    let fileName = \"ffmpeg.dll\"\n    if ([\"darwin\", \"mas\"].includes(this.options.platformName)) {\n      fileName = \"libffmpeg.dylib\"\n    } else if (this.options.platformName === \"linux\") {\n      fileName = \"libffmpeg.so\"\n    }\n\n    const libPath = path.resolve(sourcePath, fileName)\n    const libTargetPath = path.resolve(targetPath, fileName)\n    log.info({ lib: log.filePath(libPath), target: libTargetPath }, \"copying non-proprietary FFMPEG\")\n\n    // If the source doesn't exist we have a problem\n    if (!fs.existsSync(libPath)) {\n      throw new Error(`Failed to find FFMPEG library file at path: ${libPath}`)\n    }\n\n    // If we are copying to the source we can stop immediately\n    if (libPath !== libTargetPath) {\n      await fs.copyFile(libPath, libTargetPath)\n    }\n    return libTargetPath\n  }\n}\n"]}