{"version":3,"file":"MediaInfoFactory.cjs","names":["noopPrint","MediaInfoFactory","options","callback","errCallback","undefined","Promise","resolve","reject","locateFile","mergedOptions","DEFAULT_OPTIONS","format","mediaInfoModuleFactoryOpts","print","printErr","path","prefix","onAbort","err","mediaInfoModuleFactory","then","wasmModule","MediaInfo","catch","_default","exports","default"],"sourceRoot":"../../src","sources":["MediaInfoFactory.ts"],"sourcesContent":["import MediaInfo, { DEFAULT_OPTIONS, type FormatType } from './MediaInfo'\nimport mediaInfoModuleFactory, { type MediaInfoModule } from './MediaInfoModule'\n\ninterface MediaInfoFactoryOptions {\n /** Output cover data as base64 */\n coverData?: boolean\n\n /** Chunk size used by `analyzeData` (in bytes) */\n chunkSize?: number\n\n /** Result format */\n format?: TFormat\n\n /** Full information display (all internal tags) */\n full?: boolean\n\n /** Customize loading path for files */\n locateFile?(this: void, url: string, scriptDirectory: string): string\n}\n\nconst noopPrint = () => {\n // No-op\n}\n\ntype FactoryCallback = (mediainfo: MediaInfo) => void\ntype ErrorCallback = (error: unknown) => void\n\n/**\n * Factory function for {@link MediaInfo}.\n *\n * @param options User options\n * @returns MediaInfo object\n */\nfunction MediaInfoFactory(\n options?: MediaInfoFactoryOptions\n): Promise>\n\n/**\n * Factory function for {@link MediaInfoFactory}.\n *\n * @param options User options\n * @param callback Function that is called once the module is created\n */\nfunction MediaInfoFactory(\n options: MediaInfoFactoryOptions,\n callback: FactoryCallback\n): void\n\n/**\n * Factory function for {@link MediaInfoFactory}.\n *\n * @param options User options\n * @param callback Function that is called once the module is created\n * @param callback Error callback\n */\nfunction MediaInfoFactory(\n options: MediaInfoFactoryOptions,\n callback: FactoryCallback,\n errCallback: ErrorCallback\n): void\n\n// TODO pass through all emscripten module options\nfunction MediaInfoFactory(\n options: MediaInfoFactoryOptions = {},\n callback?: FactoryCallback,\n errCallback?: ErrorCallback\n): Promise> | void {\n if (callback === undefined) {\n return new Promise((resolve, reject) => MediaInfoFactory(options, resolve, reject))\n }\n\n const { locateFile, ...mergedOptions } = {\n ...DEFAULT_OPTIONS,\n ...options,\n format: (options.format ?? DEFAULT_OPTIONS.format) as TFormat,\n }\n\n const mediaInfoModuleFactoryOpts: Partial = {\n // Silence all print in module\n print: noopPrint,\n printErr: noopPrint,\n\n locateFile: locateFile ? locateFile : (path: string, prefix: string) => `${prefix}../${path}`,\n onAbort: (err: Error) => {\n if (errCallback) {\n errCallback(err)\n }\n },\n }\n\n // Fetch and load WASM module\n mediaInfoModuleFactory(mediaInfoModuleFactoryOpts)\n .then((wasmModule) => callback(new MediaInfo(wasmModule, mergedOptions)))\n .catch((err) => {\n if (errCallback) errCallback(err)\n })\n}\n\nexport type { MediaInfoFactoryOptions }\nexport default MediaInfoFactory\n"],"mappings":";;;;;;;;;;;AAoBA,MAAMA,SAAS,GAAGA,CAAA,KAAM;EACtB;AAAA,CACD;;AAKD;AACA;AACA;AACA;AACA;AACA;;AAKA;AACA;AACA;AACA;AACA;AACA;;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;;AAOA;AACA,SAASC,gBAAgBA,CACvBC,OAAyC,GAAG,CAAC,CAAC,EAC9CC,QAAmC,EACnCC,WAA2B,EACS;EACpC,IAAID,QAAQ,KAAKE,SAAS,EAAE;IAC1B,OAAO,IAAIC,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAKP,gBAAgB,CAACC,OAAO,EAAEK,OAAO,EAAEC,MAAM,CAAC,CAAC;EACrF;EAEA,MAAM;IAAEC,UAAU;IAAE,GAAGC;EAAc,CAAC,GAAG;IACvC,GAAGC,0BAAe;IAClB,GAAGT,OAAO;IACVU,MAAM,EAAGV,OAAO,CAACU,MAAM,IAAID,0BAAe,CAACC;EAC7C,CAAC;EAED,MAAMC,0BAAoD,GAAG;IAC3D;IACAC,KAAK,EAAEd,SAAS;IAChBe,QAAQ,EAAEf,SAAS;IAEnBS,UAAU,EAAEA,UAAU,GAAGA,UAAU,GAAG,CAACO,IAAY,EAAEC,MAAc,KAAM,GAAEA,MAAO,MAAKD,IAAK,EAAC;IAC7FE,OAAO,EAAGC,GAAU,IAAK;MACvB,IAAIf,WAAW,EAAE;QACfA,WAAW,CAACe,GAAG,CAAC;MAClB;IACF;EACF,CAAC;;EAED;EACA,IAAAC,wBAAsB,EAACP,0BAA0B,CAAC,CAC/CQ,IAAI,CAAEC,UAAU,IAAKnB,QAAQ,CAAC,IAAIoB,kBAAS,CAAUD,UAAU,EAAEZ,aAAa,CAAC,CAAC,CAAC,CACjFc,KAAK,CAAEL,GAAG,IAAK;IACd,IAAIf,WAAW,EAAEA,WAAW,CAACe,GAAG,CAAC;EACnC,CAAC,CAAC;AACN;AAAC,IAAAM,QAAA,GAGcxB,gBAAgB;AAAAyB,OAAA,CAAAC,OAAA,GAAAF,QAAA"}