{"_id":"@boruto_vk7/opus-ogg","_rev":"5-1ad65f31cd295d7231f005d34f916931","name":"@boruto_vk7/opus-ogg","dist-tags":{"latest":"1.3.2"},"versions":{"1.2.0":{"name":"@boruto_vk7/opus-ogg","version":"1.2.0","author":{"url":"Borutovk7","name":"eduh_dev021"},"license":"MIT","_id":"@boruto_vk7/opus-ogg@1.2.0","maintainers":[{"name":"eduh_dev021","email":"kentakakura021028@gmail.com"}],"homepage":"https://github.com/Borutovk7/opus-ogg#readme","bugs":{"url":"https://github.com/Borutovk7/opus-ogg/issues"},"dist":{"shasum":"54be23363679023dc70ff64a04abed129def80bf","tarball":"https://registry.npmjs.org/@boruto_vk7/opus-ogg/-/opus-ogg-1.2.0.tgz","fileCount":16,"integrity":"sha512-26b75ForGZy1bEyV4LMp8+LjHEI7lIuSV8SasBGvD0j3wHzXjYGoeJgf6dFBBGlP77/YOzQqCGE42L/43/+Lbg==","signatures":[{"sig":"MEUCIQDNxDeZkJ7DsTq0+Y2w9jDc0dPfpcuJ8iO0grPkWnSTuQIgDFh32yAJk2UWHBmNwpeyYcyep/w6jyE5MfrWIz39KoA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":54712},"main":"./dist/cjs/index.js","types":"./dist/types/index.d.ts","module":"./dist/esm/index.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"}},"gitHead":"1fb4405314f60cf773cbaa7944e0b6285f90156f","scripts":{"test":"node test.mjs","build":"tsc -p tsconfig.cjs.json && tsc -p tsconfig.esm.json && node -e \"const fs = require('fs'); if (!fs.existsSync('dist/cjs')) fs.mkdirSync('dist/cjs', {recursive:true}); if (!fs.existsSync('dist/esm')) fs.mkdirSync('dist/esm', {recursive:true}); fs.writeFileSync('dist/cjs/package.json', JSON.stringify({type:'commonjs'})); fs.writeFileSync('dist/esm/package.json', JSON.stringify({type:'module'}));\"","postinstall":"node scripts/install-ffmpeg.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"eduh_dev021","email":"kentakakura021028@gmail.com"},"repository":{"url":"git+https://github.com/Borutovk7/opus-ogg.git","type":"git"},"_npmVersion":"11.17.0","description":"Ultra-fast Audio to OGG Opus converter for WhatsApp (iPhone) and Discord","directories":{},"_nodeVersion":"24.17.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/opus-ogg_1.2.0_1782817091024_0.052494207784163915","host":"s3://npm-registry-packages-npm-production"}},"1.2.2":{"name":"@boruto_vk7/opus-ogg","version":"1.2.2","author":{"url":"Borutovk7","name":"eduh_dev021"},"license":"MIT","_id":"@boruto_vk7/opus-ogg@1.2.2","maintainers":[{"name":"eduh_dev021","email":"kentakakura021028@gmail.com"}],"homepage":"https://github.com/Borutovk7/opus-ogg#readme","bugs":{"url":"https://github.com/Borutovk7/opus-ogg/issues"},"dist":{"shasum":"186dec39058b86bc35a39adf86eb933d4b5f7885","tarball":"https://registry.npmjs.org/@boruto_vk7/opus-ogg/-/opus-ogg-1.2.2.tgz","fileCount":12,"integrity":"sha512-iWPyqh6Tp7TaFwXLKMKL11PJQCwsxmlaCECGWrWyKrg2ilahbcYO7Yy56AZBxUjQbzA51fzH6LV5CPXbw9ZfsA==","signatures":[{"sig":"MEUCIQDvO1HOZhiA6AKsK3rq2W7QVEEW/gpCTWikp8LjPsMtigIgKZuPTR5Vu81gFm+gjllIRYI7qPBkUM0dnkcUnTJKtWI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38298},"main":"./dist/cjs/index.js","types":"./dist/types/index.d.ts","module":"./dist/esm/index.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"}},"gitHead":"a45b09d982f34ec463f596586b6d8c69495688a3","scripts":{"test":"node test.mjs","build":"tsc -p tsconfig.cjs.json && tsc -p tsconfig.esm.json && node -e \"const fs = require('fs'); if (!fs.existsSync('dist/cjs')) fs.mkdirSync('dist/cjs', {recursive:true}); if (!fs.existsSync('dist/esm')) fs.mkdirSync('dist/esm', {recursive:true}); fs.writeFileSync('dist/cjs/package.json', JSON.stringify({type:'commonjs'})); fs.writeFileSync('dist/esm/package.json', JSON.stringify({type:'module'}));\"","postinstall":"node scripts/install-ffmpeg.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"eduh_dev021","email":"kentakakura021028@gmail.com"},"repository":{"url":"git+https://github.com/Borutovk7/opus-ogg.git","type":"git"},"_npmVersion":"11.17.0","description":"Ultra-fast Audio to OGG Opus converter for WhatsApp (iPhone) and Discord","directories":{},"_nodeVersion":"24.17.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/opus-ogg_1.2.2_1782817926777_0.9240002586216896","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@boruto_vk7/opus-ogg","version":"1.3.0","keywords":["opus","ogg","ffmpeg","whatsapp","discord","discord.js","voice","ptt","audio","converter","baileys","termux"],"author":{"url":"Borutovk7","name":"eduh_dev021"},"license":"MIT","_id":"@boruto_vk7/opus-ogg@1.3.0","maintainers":[{"name":"eduh_dev021","email":"kentakakura021028@gmail.com"}],"homepage":"https://github.com/Borutovk7/opus-ogg#readme","bugs":{"url":"https://github.com/Borutovk7/opus-ogg/issues"},"dist":{"shasum":"3fc2006cac9283e1aa19a236340c37c6275919e9","tarball":"https://registry.npmjs.org/@boruto_vk7/opus-ogg/-/opus-ogg-1.3.0.tgz","fileCount":31,"integrity":"sha512-gqdD/eVaFGYekSN+gI7Naztn7aK8vbA4sXthrO1n7v9LQD2HfUyVBdmrC7vskz2/JZWYBG7ZkxX/0l0c/RswXw==","signatures":[{"sig":"MEUCIFJVAlMluTN0Qnem4Mb5+hZGi7mmXWBc4QQN0Xs9FqLEAiEAtU9cxrK6WUB557WPhra4lVOyf6qslpFSHPwBJYfGWhM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":93123},"main":"./dist/cjs/index.js","type":"module","types":"./dist/types/index.d.ts","module":"./dist/esm/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/esm/index.js","default":"./dist/esm/index.js","require":"./dist/cjs/index.js"}},"scripts":{"test":"node --test test/basic.test.mjs","build":"node scripts/build.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"eduh_dev021","email":"kentakakura021028@gmail.com"},"repository":{"url":"git+https://github.com/Borutovk7/opus-ogg.git","type":"git"},"_npmVersion":"10.8.2","description":"High-performance OGG Opus converter for WhatsApp (iOS mono) and Discord.js — dual CJS/ESM, smart FFmpeg resolution, native Ogg demuxer","directories":{},"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.2","@types/node":"^20.0.0"},"optionalDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/opus-ogg_1.3.0_1784254195068_0.9969389498023489","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"@boruto_vk7/opus-ogg","version":"1.3.1","keywords":["opus","ogg","ffmpeg","whatsapp","discord","discord.js","voice","ptt","audio","converter","baileys","termux"],"author":{"url":"Borutovk7","name":"eduh_dev021"},"license":"MIT","_id":"@boruto_vk7/opus-ogg@1.3.1","maintainers":[{"name":"eduh_dev021","email":"kentakakura021028@gmail.com"}],"homepage":"https://github.com/Borutovk7/opus-ogg#readme","bugs":{"url":"https://github.com/Borutovk7/opus-ogg/issues"},"dist":{"shasum":"b721fccf0272fb0721b1b7116539db42224aada3","tarball":"https://registry.npmjs.org/@boruto_vk7/opus-ogg/-/opus-ogg-1.3.1.tgz","fileCount":37,"integrity":"sha512-vBamOFC3H8XI31pXa+HgLOqxb908LZOPceRCzq48LgeYFICVdBExjbYUgDSzdGKVx2VvZnV9ciIR0LgVXnz/sQ==","signatures":[{"sig":"MEUCIEouZcX+5ElQXvIk2LXpDzlTWFNQP0iaBgxNDal1kOK1AiEAlpzp+orysoIXoC2qPvTzoiSXjcLJGWvdJKgxfqZBArA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":142814},"main":"./dist/cjs/index.js","type":"module","types":"./dist/types/index.d.ts","module":"./dist/esm/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/esm/index.js","default":"./dist/esm/index.js","require":"./dist/cjs/index.js"}},"scripts":{"test":"node --test test/basic.test.mjs","build":"node scripts/build.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"eduh_dev021","email":"kentakakura021028@gmail.com"},"repository":{"url":"git+https://github.com/Borutovk7/opus-ogg.git","type":"git"},"_npmVersion":"10.8.2","description":"High-performance OGG Opus converter for WhatsApp/Discord — configurable tempDir, FFmpeg source (system/module), optional axios URL downloads, dual CJS/ESM","directories":{},"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.2","@types/node":"^20.0.0"},"peerDependencies":{"axios":">=1.0.0"},"optionalDependencies":{},"peerDependenciesMeta":{"axios":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/opus-ogg_1.3.1_1784254407785_0.13443238018853698","host":"s3://npm-registry-packages-npm-production"}},"1.3.2":{"name":"@boruto_vk7/opus-ogg","version":"1.3.2","description":"High-performance OGG Opus converter for WhatsApp/Discord — configurable tempDir, FFmpeg source (system/module), optional axios URL downloads, dual CJS/ESM","author":{"name":"eduh_dev021","url":"Borutovk7"},"license":"MIT","type":"module","main":"./dist/cjs/index.js","module":"./dist/esm/index.js","types":"./dist/types/index.d.ts","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js","default":"./dist/esm/index.js"}},"keywords":["opus","ogg","ffmpeg","whatsapp","discord","discord.js","voice","ptt","audio","converter","baileys","termux"],"engines":{"node":">=18"},"repository":{"type":"git","url":"git+https://github.com/Borutovk7/opus-ogg.git"},"bugs":{"url":"https://github.com/Borutovk7/opus-ogg/issues"},"homepage":"https://github.com/Borutovk7/opus-ogg#readme","scripts":{"build":"node scripts/build.mjs","test":"node --test test/basic.test.mjs","prepublishOnly":"npm run build"},"optionalDependencies":{},"devDependencies":{"@types/node":"^20.0.0","typescript":"^5.8.2"},"peerDependencies":{"axios":">=1.0.0"},"peerDependenciesMeta":{"axios":{"optional":true}},"_id":"@boruto_vk7/opus-ogg@1.3.2","_nodeVersion":"20.20.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-AcYFzCue0U6tEHMojgu4EUKvNBQOl2+TmN0WtHKJHVGMapnJsBJ5Yx+VzN1tySWs+2KVN4Snoq0nKeRcDp/RxA==","shasum":"594e9a831f18e5b0274717fe8126ce85299f0c0b","tarball":"https://registry.npmjs.org/@boruto_vk7/opus-ogg/-/opus-ogg-1.3.2.tgz","fileCount":37,"unpackedSize":172247,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIDkzP81XfkoNTCZE0OQs6rzinnlrJYRnHR6JLvO5DB55AiEAxDnPIgxS9X+MqmsZk5M63VCLGpHnNxtyWy0kx0iZHDU="}]},"_npmUser":{"name":"eduh_dev021","email":"kentakakura021028@gmail.com"},"directories":{},"maintainers":[{"name":"eduh_dev021","email":"kentakakura021028@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/opus-ogg_1.3.2_1784255358060_0.1841602133933331"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-30T10:58:10.915Z","modified":"2026-07-17T02:29:18.384Z","1.2.0":"2026-06-30T10:58:11.187Z","1.2.2":"2026-06-30T11:12:06.967Z","1.3.0":"2026-07-17T02:09:55.192Z","1.3.1":"2026-07-17T02:13:27.936Z","1.3.2":"2026-07-17T02:29:18.191Z"},"bugs":{"url":"https://github.com/Borutovk7/opus-ogg/issues"},"author":{"name":"eduh_dev021","url":"Borutovk7"},"license":"MIT","homepage":"https://github.com/Borutovk7/opus-ogg#readme","keywords":["opus","ogg","ffmpeg","whatsapp","discord","discord.js","voice","ptt","audio","converter","baileys","termux"],"repository":{"type":"git","url":"git+https://github.com/Borutovk7/opus-ogg.git"},"description":"High-performance OGG Opus converter for WhatsApp/Discord — configurable tempDir, FFmpeg source (system/module), optional axios URL downloads, dual CJS/ESM","maintainers":[{"name":"eduh_dev021","email":"kentakakura021028@gmail.com"}],"readme":"# @boruto_vk7/opus-ogg\n\n> **High-performance OGG Opus conversion for Node.js**  \n> WhatsApp voice notes (iOS mono) · Discord.js · dual CJS/ESM · smart FFmpeg detection\n\n[![npm](https://img.shields.io/npm/v/@boruto_vk7/opus-ogg?style=flat-square)](https://www.npmjs.com/package/@boruto_vk7/opus-ogg)\n[![node](https://img.shields.io/node/v/@boruto_vk7/opus-ogg?style=flat-square)](https://nodejs.org)\n[![license](https://img.shields.io/npm/l/@boruto_vk7/opus-ogg?style=flat-square)](LICENSE)\n\n---\n\n## Features\n\n| Feature | Detail |\n|---|---|\n| **WhatsApp iOS** | Mono OGG Opus (`profile: 'voip'`) — plays on iPhone PTT |\n| **Discord.js** | `OggToOpusStream` → raw Opus packets (`StreamType.Opus`) |\n| **Dual package** | `require` + `import` + TypeScript types |\n| **Smart FFmpeg** | env → package `bin/` → cwd `bin/` → system `PATH` |\n| **Streaming** | Pipe architecture, low memory |\n| **HTTP(S) input** | Follows redirects, works with remote URLs |\n| **Termux** | Use system FFmpeg (`pkg install ffmpeg`) |\n\n---\n\n## Install\n\n```bash\nnpm i @boruto_vk7/opus-ogg\n```\n\n**Requires FFmpeg with `libopus`:**\n\n```bash\n# Debian/Ubuntu\nsudo apt install ffmpeg\n\n# macOS\nbrew install ffmpeg\n\n# Termux\npkg install ffmpeg\n\n# Optional: download static binary into package bin/\nnode node_modules/@boruto_vk7/opus-ogg/scripts/install-ffmpeg.js\n```\n\nOr set a custom path:\n\n```bash\nexport OPUS_OGG_FFMPEG=/usr/bin/ffmpeg\n# or\nexport FFMPEG_PATH=/usr/bin/ffmpeg\n```\n\n\n## Global configuration\n\nCall once at bot startup:\n\n```js\nconst { configureOpusOgg, getOpusOggConfig } = require('@boruto_vk7/opus-ogg');\n\nconfigureOpusOgg({\n  // Temp folder for EngineOggFile (absolute or relative)\n  tempDir: './tmp/audio',\n\n  // FFmpeg source:\n  //   'system'      → PATH/env first, then package bin (default)\n  //   'module'      → package bin/ first, then system\n  //   'system-only' → never use package bin\n  //   'module-only' → never use PATH\n  //   '/usr/bin/ffmpeg' → fixed path\n  ffmpeg: 'system',\n\n  // URL downloads:\n  //   'auto'   → axios if installed, else native http(s) (default)\n  //   'axios'  → always axios (npm i axios)\n  //   'native' → always Node http/https\n  urlClient: 'auto',\n\n  // Passed to axios when used (timeout, proxy, httpsAgent, headers…)\n  axiosConfig: {\n    timeout: 60_000\n  },\n\n  urlHeaders: {\n    // 'Authorization': 'Bearer …'\n  },\n\n  maxRedirects: 5,\n\n  // Defaults for every EngineOgg* call (per-call options still win)\n  defaults: {\n    profile: 'voip',\n    forceStereo: false\n  }\n});\n\nconsole.log(getOpusOggConfig());\n```\n\nPer-call overrides:\n\n```js\nEngineOgg(url, {\n  ffmpeg: 'module',\n  urlClient: 'axios',\n  urlHeaders: { 'Authorization': 'Bearer x' },\n  profile: 'voip'\n});\n\n// Temp dir only for this file write\nawait EngineOggFile('id', input, { tempDir: '/tmp/my-ogg' });\n```\n\nOptional axios:\n\n```bash\nnpm i axios\n```\n\n---\n\n## Quick start\n\n### WhatsApp voice note (Baileys / iOS)\n\n```js\nconst { EngineOgg, EngineOggBuffer } = require('@boruto_vk7/opus-ogg');\nconst fs = require('fs');\n\n// Stream\nEngineOgg('./voice.mp3', { profile: 'voip', forceStereo: false })\n  .pipe(fs.createWriteStream('./ptt.ogg'));\n\n// Or buffer (small clips)\nconst ogg = await EngineOggBuffer('./voice.mp3', { profile: 'voip' });\n// sock.sendMessage(jid, { audio: ogg, ptt: true, mimetype: 'audio/ogg; codecs=opus' })\n```\n\n### Discord.js voice\n\n```js\nconst { EngineOgg, OggToOpusStream } = require('@boruto_vk7/opus-ogg');\nconst { createAudioResource, StreamType } = require('@discordjs/voice');\n\nconst ogg = EngineOgg('https://example.com/track.mp3', {\n  profile: 'audio',\n  forceStereo: true,\n  bitrate: '128k'\n});\n\nconst resource = createAudioResource(OggToOpusStream(ogg), {\n  inputType: StreamType.Opus\n});\n```\n\n### ESM\n\n```js\nimport { EngineOgg, isFfmpegAvailable } from '@boruto_vk7/opus-ogg';\n\nif (!isFfmpegAvailable()) {\n  throw new Error('Install FFmpeg first');\n}\n\nconst stream = EngineOgg('./audio.wav', { profile: 'voip' });\n```\n\n### Temp file helper\n\n```js\nconst { EngineOggFile } = require('@boruto_vk7/opus-ogg');\n\nconst filePath = await EngineOggFile('msg1', './input.m4a', { profile: 'voip' });\n// ... use filePath, then fs.unlinkSync(filePath)\n```\n\n---\n\n\n## Temp files cleanup\n\n```js\nconst {\n  configureOpusOgg,\n  cleanTempDir,\n  deleteTempFile,\n  listTempFiles,\n  EngineOggFile\n} = require('@boruto_vk7/opus-ogg');\n\nconfigureOpusOgg({ tempDir: './tmp/audio' });\n\n// list what's there\nconsole.log(await listTempFiles());\n\n// delete ALL files in tempDir\nconst r = await cleanTempDir();\nconsole.log(r.deletedFiles.length, 'files,', r.freedBytes, 'bytes freed');\n\n// only .ogg older than 1 hour\nawait cleanTempDir({\n  maxAgeMs: 60 * 60 * 1000,\n  match: '.ogg'\n});\n\n// dry-run\nawait cleanTempDir({ dryRun: true });\n\n// delete one file returned by EngineOggFile\nconst f = await EngineOggFile('x', './a.mp3');\nawait deleteTempFile(f);\n```\n\n### Baileys PTT helper\n\n```js\nconst { toWhatsAppPtt } = require('@boruto_vk7/opus-ogg');\n\nawait sock.sendMessage(jid, await toWhatsAppPtt('./voz.mp3'));\n// → { audio: Buffer, ptt: true, mimetype: 'audio/ogg; codecs=opus' }\n```\n\nBuffer input also works:\n\n```js\nEngineOgg(audioBuffer, { profile: 'voip' })\nawait EngineOggBuffer(audioBuffer)\n```\n\n---\n\n## API\n\n### `EngineOgg(input, options?) → Readable`\n\n| Option | Type | Default | Description |\n|---|---|---|---|\n| `profile` | `'voip' \\| 'audio' \\| 'lowdelay'` | `'voip'` | libopus application |\n| `forceStereo` | `boolean` | `false` | 2 channels (avoid for WA iOS) |\n| `bitrate` | `string` | `64k` / `128k` | e.g. `48k`, `96k` |\n| `sampleRate` | `number` | `48000` | Hz |\n| `frameDuration` | `2.5…60` | `20` | Opus frame ms |\n| `ffmpegPath` | `string` | auto | Custom binary |\n| `extraArgs` | `string[]` | `[]` | Extra FFmpeg args |\n| `signal` | `AbortSignal` | — | Cancel conversion |\n| `highWaterMark` | `number` | `128KiB` | Pipe buffer |\n\n`input`: local path · `http(s)://` URL · `Readable` stream\n\n### `OggToOpusStream(oggReadable) → Readable` (objectMode packets)\n\n### `EngineOggFile(id, input, options?) → Promise<string>`\n\n### `EngineOggBuffer(input, options?) → Promise<Buffer>`\n\n### `resolveFFmpeg()` / `getFfmpegPath()` / `isFfmpegAvailable()`\n\n### `OggDemuxer` (class)\n\n---\n\n## WhatsApp tips\n\n1. Use **`profile: 'voip'`** and **`forceStereo: false`** (mono).\n2. Mime: `audio/ogg; codecs=opus` with `ptt: true`.\n3. Prefer converting **before** upload; keep clips reasonably short.\n4. Errors from FFmpeg now surface on the stream (`error` event) — always handle them.\n\n```js\nconst s = EngineOgg(file, { profile: 'voip' });\ns.on('error', console.error);\n```\n\n---\n\n## Changelog\n\n### 1.3.2\n- `cleanTempDir()` / `deleteTempFile()` / `listTempFiles()`\n- Buffer/Uint8Array input\n- `toWhatsAppPtt()` helper for Baileys\n\n### 1.3.1\n- `configureOpusOgg({ tempDir, ffmpeg, urlClient, axiosConfig, defaults })`\n- FFmpeg mode: `system` | `module` | `system-only` | `module-only` | custom path\n- URL downloads via **axios** (optional peer) or native http(s)\n- `getOpusOggConfig()`, `resolveTempDir()`, `isAxiosAvailable()`\n\n### 1.3.0\n\n- Fix **ESM** path resolution (no broken `__dirname`)\n- **HTTP redirects** followed for URL inputs\n- Local files passed to FFmpeg with **`-i file`** (not always pipe)\n- **stderr** from FFmpeg propagated as stream errors\n- `AbortSignal` support\n- `EngineOggBuffer`, `isFfmpegAvailable`, richer options\n- Safer **OggDemuxer** packet lacing / resync\n- Dual package `exports.types` order fixed\n- `postinstall` no longer forced (optional script instead)\n- Keywords + clearer README\n\n---\n\n## License\n\nMIT © eduh_dev021 ([Borutovk7](https://github.com/Borutovk7))\n","readmeFilename":"README.md"}