{"version":3,"sources":["../../package.json","../../bin/cli.ts","../../index.ts"],"sourcesContent":["{\n  \"name\": \"open-file-manager\",\n  \"description\": \"Cross-platform utility to open a file or directory in the system's default file manager (Finder, Explorer, Nautilus, etc.)\",\n  \"version\": \"1.0.0\",\n  \"license\": \"MIT\",\n  \"author\": \"Jon Schlinkert (https://github.com/jonschlinkert)\",\n  \"homepage\": \"https://github.com/jonschlinkert/open-file-manager\",\n  \"repository\": \"jonschlinkert/open-file-manager\",\n  \"bugs\": {\n    \"url\": \"https://github.com/jonschlinkert/open-file-manager/issues\"\n  },\n  \"bin\": {\n    \"open-file-manager\": \"dist/bin/cli.js\"\n  },\n  \"scripts\": {\n    \"clean\": \"rm -rf dist\",\n    \"eslint\": \"npx eslint --ext .ts .\",\n    \"test\": \"ts-mocha -r esbuild-register 'test/*.test.ts' --exit\",\n    \"tsup\": \"npm run clean && npx tsup\"\n  },\n  \"main\": \"dist/index.js\",\n  \"module\": \"dist/index.mjs\",\n  \"types\": \"dist/index.d.ts\",\n  \"files\": [\n    \"dist\"\n  ],\n  \"exports\": {\n    \".\": {\n      \"import\": \"./dist/index.mjs\",\n      \"require\": \"./dist/index.js\"\n    }\n  },\n  \"dependencies\": {\n    \"minimist\": \"^1.2.8\"\n  },\n  \"devDependencies\": {\n    \"@types/node\": \"^22.7.4\",\n    \"@typescript-eslint/eslint-plugin\": \"^8.7.0\",\n    \"@typescript-eslint/parser\": \"^8.7.0\",\n    \"esbuild-register\": \"^3.5.0\",\n    \"eslint\": \"^8.57.0\",\n    \"gulp-format-md\": \"^2.0.0\",\n    \"prettier\": \"^3.5.3\",\n    \"ts-node\": \"^10.9.2\",\n    \"tsconfig-paths\": \"^4.2.0\",\n    \"tsup\": \"^8.3.0\",\n    \"typescript\": \"^5.5.3\"\n  },\n  \"keywords\": [\n    \"cli\",\n    \"command-line\",\n    \"cross-platform\",\n    \"desktop\",\n    \"dialog\",\n    \"directory\",\n    \"dmenu\",\n    \"electron\",\n    \"explorer\",\n    \"file chooser\",\n    \"file dialog\",\n    \"file manager\",\n    \"file picker\",\n    \"file selection dialog\",\n    \"file selection\",\n    \"file system\",\n    \"file-browser\",\n    \"file-chooser\",\n    \"file-dialog\",\n    \"file-explorer\",\n    \"file-manager\",\n    \"file-picker\",\n    \"file-selector\",\n    \"file-system\",\n    \"file\",\n    \"files\",\n    \"finder\",\n    \"folder\",\n    \"fzf\",\n    \"gnome\",\n    \"gui\",\n    \"kde\",\n    \"kdialog\",\n    \"linux\",\n    \"macos\",\n    \"mate\",\n    \"matedialog\",\n    \"native-dialog\",\n    \"nautilus\",\n    \"open-file\",\n    \"open\",\n    \"powershell\",\n    \"prompt\",\n    \"qarma\",\n    \"qt\",\n    \"rofi\",\n    \"select\",\n    \"terminal\",\n    \"utility\",\n    \"windows-api\",\n    \"windows-forms\",\n    \"windows\",\n    \"yad\",\n    \"zenity\"\n  ],\n  \"verb\": {\n    \"toc\": false,\n    \"layout\": \"default\",\n    \"tasks\": [\n      \"readme\"\n    ],\n    \"plugins\": [\n      \"gulp-format-md\"\n    ],\n    \"reflinks\": [\n      \"verb\"\n    ],\n    \"related\": [\n      \"open-file-manager-dialog\",\n      \"open-finder-dialog\",\n      \"open-linux-file-dialog\",\n      \"open-windows-file-dialog\"\n    ],\n    \"lint\": {\n      \"reflinks\": true\n    }\n  }\n}\n","#!/usr/bin/env node\n\nimport path from 'node:path';\nimport minimist from 'minimist';\nimport { openFileManager } from '../index.js';\n\nconst showHelp = () => {\n  console.log(`\nopen-file-manager - Open a file or directory in your system's file manager\n\nUsage:\n  open-file-manager [path] [options]\n\nArguments:\n  path              File or directory path to open (default: current directory)\n\nOptions:\n  -h, --help       Show this help message\n  -v, --version    Show version number\n\nExamples:\n  open-file-manager                    # Open current directory\n  open-file-manager /home/user         # Open specific directory\n  open-file-manager ./document.txt     # Open file location\n  open-file-manager ../               # Open parent directory\n`);\n};\n\nconst main = async () => {\n  const argv = minimist(process.argv.slice(2), {\n    alias: {\n      f: 'file',\n      h: 'help',\n      v: 'version'\n    }\n  });\n\n  if (argv.help) {\n    showHelp();\n    process.exit(0);\n  }\n\n  if (argv.version) {\n    const pkg = await import('../package.json', { assert: { type: 'json' } });\n    console.log(pkg.default.version);\n    process.exit(0);\n  }\n\n  const file = argv.file || argv._[0] || '.';\n\n  try {\n    await openFileManager(path.resolve(process.cwd(), file));\n  } catch (error) {\n    console.error('Error:', error.message);\n    process.exit(1);\n  }\n};\n\nmain().catch(error => {\n  console.error('Unexpected error:', error);\n  process.exit(1);\n});\n","import path from 'node:path';\nimport util from 'node:util';\nimport cb from 'node:child_process';\n\nconst managers = ['xdg-open', 'nautilus', 'dolphin', 'thunar', 'pcmanfm', 'nemo'];\n\nexport const openFileManager = async (pathname = '.') => {\n  const exec = util.promisify(cb.exec);\n  const filepath = path.resolve(process.cwd(), pathname);\n  let lastError;\n\n  try {\n    switch (process.platform) {\n      case 'win32':\n        return exec(`explorer /select \"${filepath}\"`);\n      case 'darwin':\n        return exec(`open -R \"${filepath}\"`);\n      case 'linux':\n      case 'freebsd':\n      case 'openbsd':\n      case 'sunos':\n        // Try multiple file managers in order of preference\n        for (const manager of managers) {\n          try {\n            // Check if the manager exists\n            await exec(`which ${manager}`);\n\n            // Try to open with the manager\n            if (manager === 'xdg-open') {\n              return exec(`${manager} \"${path.dirname(filepath)}\"`);\n            }\n\n            return exec(`${manager} \"${filepath}\"`);\n          } catch (err) {\n            lastError = err;\n            continue;\n          }\n        }\n\n        throw new Error(`No file manager found. Tried: ${managers.join(', ')}. Last error: ${lastError?.message}`);\n      default:\n        throw new Error(`Unsupported platform: ${process.platform}`);\n    }\n  } catch (error) {\n    // Windows explorer returns exit code 1 when the file doesn't exist\n    if (process.platform === 'win32' && error.code === 1) {\n      // Try opening the parent directory\n      const parentDir = path.dirname(filepath);\n      return exec(`explorer \"${parentDir}\"`);\n    }\n\n    throw error;\n  }\n};\n\nexport default openFileManager;\n"],"mappings":"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","names":["path","path"]}