{"version":3,"file":"index.mjs","sources":["../src/index.ts"],"sourcesContent":["import * as path from 'path'\nimport * as fs from 'fs'\n\nimport audiosprite, { Channels, ExportType, Logger, LogLevel, VBR, VBR_Vorbis } from 'audiosprite'\nimport { wrapper, TypeOnBody, TypeToolProp, TypeToolOptions } from '@asset-toolkit/core'\n\nexport interface TypeProps extends TypeToolOptions {\n  output?: string | undefined\n  path?: string | undefined\n  export?: string | undefined\n  format?: ExportType | undefined\n  log?: LogLevel | undefined\n  autoplay?: string | null | undefined\n  loop?: string[] | undefined\n  silence?: number | undefined\n  gap?: number | undefined\n  minlength?: number | undefined\n  bitrate?: number | undefined\n  vbr?: VBR | undefined\n  'vbr:vorbis'?: VBR_Vorbis | undefined\n  samplerate?: number | undefined\n  channels?: Channels | undefined\n  rawparts?: string | undefined\n  logger?: Logger | undefined\n}\n\n/**\n * A tool to create sprite audio\n * @param props - { pathIn, pathOut }\n * @param options\n * @returns { Promise(returns) }\n */\n/**\n * * ### A tool to create a single audio file from more audio files.\n * Use \"format\" options to define a type of audiosprite, default is \"jukebox\" (use with howler.js or pixi-audio) \n * \n * https://www.npmjs.com/package/audiosprite\n * https://howlerjs.com/\n * https://pixijs.io/sound/examples/\n * \n *\n * ### Example\n * \n *  ```js\n  const { pipeline } = require(\"@asset-toolkit/core\");\n  const audioSprite = require(\"@asset-toolkit/audio-sprite\");\n *```\n *\n * ```js\n  const pipelineAudio = pipeline(audioSprite);\n  pipelineAudio({\n      pathIn: \"./audio/\",\n      pathOut: \"../public/audio\",\n  });\n * ```\n * @module\n */\nconst audioSpriteTool: (_props: TypeToolProp, options?: TypeProps) => Promise<unknown> = wrapper(\n  ({ file, pathIn, pathOut, wrapperProps, next }) => {\n    if (file.includes('_loop')) {\n      wrapperProps.loop += `${file}, `\n    }\n\n    wrapperProps.files.push(path.join(pathIn || pathOut, file))\n    next()\n  },\n  ({ pathOut, options, wrapperProps }: TypeOnBody): Promise<unknown> => {\n    const opts = Object.assign(\n      {\n        output: 'spriteTrack',\n        format: 'jukebox',\n        export: 'mp3,m4a',\n        channels: 2,\n        samplerate: 48000,\n        ignorerounding: 1,\n        loop: wrapperProps.loop,\n      },\n      options,\n    )\n\n    return new Promise(resolve => {\n      audiosprite(wrapperProps.files, opts, (err: any, obj: any) => {\n        if (err) return console.error(err)\n        fs.readdirSync(process.cwd()).forEach(file => {\n          if (file.includes(opts.output)) {\n            fs.rename(file, path.join(pathOut, file), function(err) {\n              if (err) throw err\n            })\n          }\n        })\n        fs.writeFileSync(path.join(pathOut, 'tracks.json'), JSON.stringify(obj, null, 2))\n        resolve(false)\n      })\n    })\n  },\n  { exts: ['mp3'], name: 'Audio Sprite', files: [], loop: '' },\n)\n\nexport default audioSpriteTool\n"],"names":["audioSpriteTool","wrapper","file","pathIn","pathOut","wrapperProps","next","includes","loop","files","push","path","join","opts","Object","assign","output","format","export","channels","samplerate","ignorerounding","options","Promise","resolve","audiosprite","err","obj","console","error","fs","readdirSync","process","cwd","forEach","rename","writeFileSync","JSON","stringify","exts","name"],"mappings":"qHAyDMA,IAAAA,EAAmFC,EACvF,gBAAGC,IAAAA,KAAMC,IAAAA,OAAQC,IAAAA,QAASC,IAAAA,aAAcC,IAAAA,KAClCJ,EAAKK,SAAS,WAChBF,EAAaG,MAAWN,QAG1BG,EAAaI,MAAMC,KAAKC,EAAKC,KAAKT,GAAUC,EAASF,IACrDI,KAEF,gBAAGF,IAAAA,QAAkBC,IAAAA,aACbQ,EAAOC,OAAOC,OAClB,CACEC,OAAQ,cACRC,OAAQ,UACRC,OAAQ,UACRC,SAAU,EACVC,WAAY,KACZC,eAAgB,EAChBb,KAAMH,EAAaG,QATbc,SAcV,WAAWC,QAAQ,SAAAC,GACjBC,EAAYpB,EAAaI,MAAOI,EAAM,SAACa,EAAUC,GAC/C,GAAID,EAAK,OAAOE,QAAQC,MAAMH,GAC9BI,EAAGC,YAAYC,QAAQC,OAAOC,QAAQ,SAAAhC,GAChCA,EAAKK,SAASM,EAAKG,SACrBc,EAAGK,OAAOjC,EAAMS,EAAKC,KAAKR,EAASF,GAAO,SAASwB,GACjD,GAAIA,EAAK,MAAMA,MAIrBI,EAAGM,cAAczB,EAAKC,KAAKR,EAAS,eAAgBiC,KAAKC,UAAUX,EAAK,KAAM,IAC9EH,GAAQ,QAId,CAAEe,KAAM,CAAC,OAAQC,KAAM,eAAgB/B,MAAO,GAAID,KAAM"}