{"version":3,"sources":["../src/index.ts","../src/dirname.ts"],"sourcesContent":["import { join } from \"path\";\nimport { readdirSync } from \"fs\";\nimport { platform } from \"os\";\nimport chalk from \"chalk\";\nimport { execa } from \"execa\";\nimport { __dirnameSafe } from \"./dirname\";\n\nasync function playSound(filePath: string) {\n  const os = platform();\n\n  try {\n    if (os === \"darwin\") {\n      await execa(\"afplay\", [filePath]);\n    } else if (os === \"win32\") {\n      await execa(\"powershell\", [\n        \"-c\",\n        `Start-Process -FilePath \"${filePath}\" -WindowStyle Hidden`,\n      ]);\n    } else {\n      // Try common Linux players in order\n      const players = [\"paplay\", \"aplay\", \"mpg123\", \"mplayer\", \"play\"];\n      let played = false;\n\n      for (const cmd of players) {\n        try {\n          await execa(cmd, [filePath]);\n          played = true;\n          break;\n        } catch {}\n      }\n\n      if (!played) {\n        console.error(\"🔇 No compatible audio player found.\");\n      }\n    }\n  } catch (err) {\n    console.error(\"💩 Failed to play fart sound:\", err);\n  }\n}\n\nasync function playFart() {\n  const fartDir = join(__dirnameSafe, \"..\", \"farts\");\n\n  const files = readdirSync(fartDir).filter((file) => file.endsWith(\".wav\"));\n\n  if (files.length === 0) {\n    console.error(\"💨 No fart files found.\");\n    return;\n  }\n\n  const selected = files[Math.floor(Math.random() * files.length)];\n  const fartPath = join(fartDir, selected);\n\n  await playSound(fartPath);\n}\n\nfunction printMessage(err: any) {\n  console.error(chalk.redBright.bold(\"💩 UNHANDLED ERROR 💩\"));\n  console.error(chalk.red(err?.stack || err?.message || err));\n}\n\nexport function initShart() {\n  process.on(\"uncaughtException\", async (err) => {\n    await playFart();\n    printMessage(err);\n    process.exit(1);\n  });\n\n  process.on(\"unhandledRejection\", async (reason) => {\n    await playFart();\n    printMessage(reason);\n    process.exit(1);\n  });\n}\n","// dirname.ts\nimport { dirname } from \"path\";\nimport { fileURLToPath } from \"url\";\n\n// Works in both ESM and CJS builds\nexport const __filenameSafe =\n  typeof __filename !== \"undefined\"\n    ? __filename // CJS\n    : fileURLToPath(import.meta.url); // ESM\n\nexport const __dirnameSafe =\n  typeof __dirname !== \"undefined\"\n    ? __dirname // CJS\n    : dirname(__filenameSafe); // ESM\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAAA,eAAqB;AACrB,gBAA4B;AAC5B,gBAAyB;AACzB,mBAAkB;AAClB,mBAAsB;;;ACHtB,kBAAwB;AACxB,iBAA8B;AAF9B;AAKO,IAAM,iBACX,OAAO,eAAe,cAClB,iBACA,0BAAc,YAAY,GAAG;AAE5B,IAAM,gBACX,OAAO,cAAc,cACjB,gBACA,qBAAQ,cAAc;;;ADN5B,eAAe,UAAU,UAAkB;AACzC,QAAM,SAAK,oBAAS;AAEpB,MAAI;AACF,QAAI,OAAO,UAAU;AACnB,gBAAM,oBAAM,UAAU,CAAC,QAAQ,CAAC;AAAA,IAClC,WAAW,OAAO,SAAS;AACzB,gBAAM,oBAAM,cAAc;AAAA,QACxB;AAAA,QACA,4BAA4B,QAAQ;AAAA,MACtC,CAAC;AAAA,IACH,OAAO;AAEL,YAAM,UAAU,CAAC,UAAU,SAAS,UAAU,WAAW,MAAM;AAC/D,UAAI,SAAS;AAEb,iBAAW,OAAO,SAAS;AACzB,YAAI;AACF,oBAAM,oBAAM,KAAK,CAAC,QAAQ,CAAC;AAC3B,mBAAS;AACT;AAAA,QACF,QAAQ;AAAA,QAAC;AAAA,MACX;AAEA,UAAI,CAAC,QAAQ;AACX,gBAAQ,MAAM,6CAAsC;AAAA,MACtD;AAAA,IACF;AAAA,EACF,SAAS,KAAK;AACZ,YAAQ,MAAM,wCAAiC,GAAG;AAAA,EACpD;AACF;AAEA,eAAe,WAAW;AACxB,QAAM,cAAU,mBAAK,eAAe,MAAM,OAAO;AAEjD,QAAM,YAAQ,uBAAY,OAAO,EAAE,OAAO,CAAC,SAAS,KAAK,SAAS,MAAM,CAAC;AAEzE,MAAI,MAAM,WAAW,GAAG;AACtB,YAAQ,MAAM,gCAAyB;AACvC;AAAA,EACF;AAEA,QAAM,WAAW,MAAM,KAAK,MAAM,KAAK,OAAO,IAAI,MAAM,MAAM,CAAC;AAC/D,QAAM,eAAW,mBAAK,SAAS,QAAQ;AAEvC,QAAM,UAAU,QAAQ;AAC1B;AAEA,SAAS,aAAa,KAAU;AAC9B,UAAQ,MAAM,aAAAC,QAAM,UAAU,KAAK,qCAAuB,CAAC;AAC3D,UAAQ,MAAM,aAAAA,QAAM,IAAI,KAAK,SAAS,KAAK,WAAW,GAAG,CAAC;AAC5D;AAEO,SAAS,YAAY;AAC1B,UAAQ,GAAG,qBAAqB,OAAO,QAAQ;AAC7C,UAAM,SAAS;AACf,iBAAa,GAAG;AAChB,YAAQ,KAAK,CAAC;AAAA,EAChB,CAAC;AAED,UAAQ,GAAG,sBAAsB,OAAO,WAAW;AACjD,UAAM,SAAS;AACf,iBAAa,MAAM;AACnB,YAAQ,KAAK,CAAC;AAAA,EAChB,CAAC;AACH;","names":["import_path","chalk"]}