or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

configuration-presets.mdcore-functions.mdenvironment-detection.mdindex.mdoutput-formatting.mdpackage-management.md
tile.json

environment-detection.mddocs/

Environment Detection

Comprehensive system for detecting and reporting environment details across multiple categories including system information, development tools, browsers, languages, package managers, IDEs, databases, virtualization tools, and more.

Capabilities

System Information

Core system details including operating system, hardware, and runtime environment.

/**
 * Get operating system information including version and distribution
 * @returns Promise<[string, string]> - ['OS', 'macOS Mojave 10.14.5'] or ['OS', 'Ubuntu 20.04.1 LTS']
 */
helpers.getOSInfo();

/**
 * Get CPU information including core count, architecture, and model
 * @returns Promise<[string, string]> - ['CPU', '(8) x64 Intel(R) Core(TM) i7-7820HQ CPU @ 2.90GHz']
 */
helpers.getCPUInfo();

/**
 * Get memory usage information showing free and total memory
 * @returns Promise<[string, string]> - ['Memory', '2.97 GB / 16.00 GB']
 */
helpers.getMemoryInfo();

/**
 * Detect container environment (Docker, etc.)
 * @returns Promise<[string, string]> - ['Container', 'Yes'] or ['Container', 'N/A']
 */
helpers.getContainerInfo();

/**
 * Get shell information including version and path
 * @returns Promise<[string, string, string]> - ['Shell', '5.3', '/bin/zsh']
 */
helpers.getShellInfo();

/**
 * Get GNU C Library version (Linux only)
 * @returns Promise<[string, string]> - ['GLibc', '2.27'] or ['GLibc', 'N/A']
 */
helpers.getGLibcInfo();

Development Binaries

Node.js ecosystem and development tool binaries with version and path detection.

/**
 * Get Node.js version and installation path
 * @returns Promise<[string, string, string]> - ['Node', '16.14.0', '/usr/local/bin/node']
 */
helpers.getNodeInfo();

/**
 * Get npm package manager version and path
 * @returns Promise<[string, string, string]> - ['npm', '8.3.1', '/usr/local/bin/npm']
 */
helpers.getnpmInfo();

/**
 * Get Yarn package manager version and path
 * @returns Promise<[string, string, string]> - ['Yarn', '1.22.17', '/usr/local/bin/yarn']
 */
helpers.getYarnInfo();

/**
 * Get pnpm package manager version and path
 * @returns Promise<[string, string, string]> - ['pnpm', '6.28.0', '/usr/local/bin/pnpm']
 */
helpers.getpnpmInfo();

/**
 * Get Bun JavaScript runtime version and path
 * @returns Promise<[string, string, string]> - ['bun', '0.1.12', '/usr/local/bin/bun']
 */
helpers.getbunInfo();

/**
 * Get Watchman file watching service version and path
 * @returns Promise<[string, string, string]> - ['Watchman', '4.9.0', '/usr/local/bin/watchman']
 */
helpers.getWatchmanInfo();

Web Browsers

Browser detection across all major platforms with version and installation path.

/**
 * Get Google Chrome browser version and path
 * @returns Promise<[string, string, string]> - ['Chrome', '98.0.4758.102', '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome']
 */
helpers.getChromeInfo();

/**
 * Get Chrome Canary browser version and path
 * @returns Promise<[string, string, string]> - ['Chrome Canary', '100.0.4896.12', '/Applications/Google Chrome Canary.app/Contents/MacOS/Google Chrome Canary']
 */
helpers.getChromeCanaryInfo();

/**
 * Get Chromium browser version and path
 * @returns Promise<[string, string, string]> - ['Chromium', '98.0.4758.80', '/usr/bin/chromium-browser']
 */
helpers.getChromiumInfo();

/**
 * Get Brave Browser version and path
 * @returns Promise<[string, string, string]> - ['Brave Browser', '1.35.104', '/Applications/Brave Browser.app/Contents/MacOS/Brave Browser']
 */
helpers.getBraveBrowserInfo();

/**
 * Get Firefox browser version and path
 * @returns Promise<[string, string, string]> - ['Firefox', '97.0.1', '/Applications/Firefox.app/Contents/MacOS/firefox']
 */
helpers.getFirefoxInfo();

/**
 * Get Firefox Developer Edition version and path
 * @returns Promise<[string, string, string]> - ['Firefox Developer Edition', '98.0b9', '/Applications/Firefox Developer Edition.app/Contents/MacOS/firefox']
 */
helpers.getFirefoxDeveloperEditionInfo();

/**
 * Get Firefox Nightly version and path
 * @returns Promise<[string, string, string]> - ['Firefox Nightly', '100.0a1', '/Applications/Firefox Nightly.app/Contents/MacOS/firefox']
 */
helpers.getFirefoxNightlyInfo();

/**
 * Get Safari browser version and path (macOS only)
 * @returns Promise<[string, string, string]> - ['Safari', '15.3', '/Applications/Safari.app/Contents/MacOS/Safari']
 */
helpers.getSafariInfo();

/**
 * Get Safari Technology Preview version and path (macOS only)
 * @returns Promise<[string, string, string]> - ['Safari Technology Preview', '141', '/Applications/Safari Technology Preview.app/Contents/MacOS/Safari Technology Preview']
 */
helpers.getSafariTechnologyPreviewInfo();

/**
 * Get Microsoft Edge browser version and path (can detect multiple versions)
 * @returns Promise<[string, string|string[], string]> - ['Edge', '98.0.1108.56', '/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge']
 */
helpers.getEdgeInfo();

/**
 * Get Internet Explorer version and path (Windows only)
 * @returns Promise<[string, string, string]> - ['Internet Explorer', '11.0.9600.19596', 'C:\\Program Files\\Internet Explorer\\iexplore.exe']
 */
helpers.getInternetExplorerInfo();

Programming Languages

Detection of programming language runtimes and compilers with version information.

/**
 * Get Bash shell version and path
 * @returns Promise<[string, string, string]> - ['Bash', '5.1.16', '/bin/bash']
 */
helpers.getBashInfo();

/**
 * Get Go programming language version and path
 * @returns Promise<[string, string, string]> - ['Go', '1.17.7', '/usr/local/go/bin/go']
 */
helpers.getGoInfo();

/**
 * Get Elixir programming language version and path
 * @returns Promise<[string, string, string]> - ['Elixir', '1.13.2', '/usr/local/bin/elixir']
 */
helpers.getElixirInfo();

/**
 * Get Erlang/OTP version and path
 * @returns Promise<[string, string, string]> - ['Erlang', '24.2.1', '/usr/local/bin/erl']
 */
helpers.getErlangInfo();

/**
 * Get Java compiler (javac) version and path
 * @returns Promise<[string, string, string]> - ['Java', '17.0.2', '/usr/bin/javac']
 */
helpers.getJavaInfo();

/**
 * Get Perl language version and path
 * @returns Promise<[string, string, string]> - ['Perl', '5.32.1', '/usr/bin/perl']
 */
helpers.getPerlInfo();

/**
 * Get PHP language version and path
 * @returns Promise<[string, string, string]> - ['PHP', '8.1.3', '/usr/bin/php']
 */
helpers.getPHPInfo();

/**
 * Get Protocol Buffer compiler version and path
 * @returns Promise<[string, string, string]> - ['Protoc', '3.19.4', '/usr/local/bin/protoc']
 */
helpers.getProtocInfo();

/**
 * Get Python 2.x version and path
 * @returns Promise<[string, string, string]> - ['Python', '2.7.18', '/usr/bin/python']
 */
helpers.getPythonInfo();

/**
 * Get Python 3.x version and path
 * @returns Promise<[string, string, string]> - ['Python3', '3.9.10', '/usr/bin/python3']
 */
helpers.getPython3Info();

/**
 * Get R language version and path
 * @returns Promise<[string, string, string]> - ['R', '4.1.2', '/usr/local/bin/R']
 */
helpers.getRInfo();

/**
 * Get Ruby language version and path
 * @returns Promise<[string, string, string]> - ['Ruby', '3.1.0', '/usr/local/bin/ruby']
 */
helpers.getRubyInfo();

/**
 * Get Rust language version and path
 * @returns Promise<[string, string, string]> - ['Rust', '1.58.1', '/usr/local/bin/rustc']
 */
helpers.getRustInfo();

/**
 * Get Scala language version
 * @returns Promise<[string, string]> - ['Scala', '2.13.8']
 */
helpers.getScalaInfo();

Package Managers

System and language-specific package managers with version detection.

/**
 * Get APT package manager version and path (Linux)
 * @returns Promise<[string, string, string]> - ['Apt', '2.0.6', '/usr/bin/apt']
 */
helpers.getAptInfo();

/**
 * Get Cargo (Rust package manager) version and path
 * @returns Promise<[string, string, string]> - ['Cargo', '1.58.0', '/usr/local/bin/cargo']
 */
helpers.getCargoInfo();

/**
 * Get CocoaPods package manager version and path (macOS)
 * @returns Promise<[string, string, string]> - ['CocoaPods', '1.11.2', '/usr/local/bin/pod']
 */
helpers.getCocoaPodsInfo();

/**
 * Get Composer (PHP package manager) version and path
 * @returns Promise<[string, string, string]> - ['Composer', '2.2.6', '/usr/local/bin/composer']
 */
helpers.getComposerInfo();

/**
 * Get Gradle build tool version and path
 * @returns Promise<[string, string, string]> - ['Gradle', '7.4', '/usr/local/bin/gradle']
 */
helpers.getGradleInfo();

/**
 * Get Homebrew package manager version and path (macOS/Linux)
 * @returns Promise<[string, string, string]> - ['Homebrew', '3.3.14', '/usr/local/bin/brew']
 */
helpers.getHomebrewInfo();

/**
 * Get Maven build tool version and path
 * @returns Promise<[string, string, string]> - ['Maven', '3.8.4', '/usr/local/bin/mvn']
 */
helpers.getMavenInfo();

/**
 * Get pip2 (Python 2 package manager) version and path
 * @returns Promise<[string, string, string]> - ['pip2', '20.3.4', '/usr/bin/pip2']
 */
helpers.getpip2Info();

/**
 * Get pip3 (Python 3 package manager) version and path
 * @returns Promise<[string, string, string]> - ['pip3', '21.3.1', '/usr/bin/pip3']
 */
helpers.getpip3Info();

/**
 * Get RubyGems package manager version and path
 * @returns Promise<[string, string, string]> - ['RubyGems', '3.3.7', '/usr/local/bin/gem']
 */
helpers.getRubyGemsInfo();

/**
 * Get Yum package manager version and path (Linux)
 * @returns Promise<[string, string, string]> - ['Yum', '4.10.0', '/usr/bin/yum']
 */
helpers.getYumInfo();

Development Utilities

Build tools, version control systems, compilers, and development utilities.

/**
 * Get Bazel build tool version and path
 * @returns Promise<[string, string, string]> - ['Bazel', '4.2.2', '/usr/local/bin/bazel']
 */
helpers.getBazelInfo();

/**
 * Get CMake build system version and path
 * @returns Promise<[string, string, string]> - ['CMake', '3.22.2', '/usr/local/bin/cmake']
 */
helpers.getCMakeInfo();

/**
 * Get Make build tool version
 * @returns Promise<[string, string]> - ['Make', '4.3']
 */
helpers.getMakeInfo();

/**
 * Get GCC compiler version
 * @returns Promise<[string, string]> - ['GCC', '11.2.0']
 */
helpers.getGCCInfo();

/**
 * Get Clang compiler version and path
 * @returns Promise<[string, string, string]> - ['Clang', '13.0.1', '/usr/bin/clang']
 */
helpers.getClangInfo();

/**
 * Get Git version control system version and path
 * @returns Promise<[string, string, string]> - ['Git', '2.34.1', '/usr/bin/git']
 */
helpers.getGitInfo();

/**
 * Get Ninja build system version and path
 * @returns Promise<[string, string, string]> - ['Ninja', '1.10.2', '/usr/local/bin/ninja']
 */
helpers.getNinjaInfo();

/**
 * Get Mercurial version control system version
 * @returns Promise<[string, string]> - ['Mercurial', '6.0.3']
 */
helpers.getMercurialInfo();

/**
 * Get Subversion version control system version
 * @returns Promise<[string, string]> - ['Subversion', '1.14.1']
 */
helpers.getSubversionInfo();

/**
 * Get FFmpeg multimedia framework version and path
 * @returns Promise<[string, string, string]> - ['FFmpeg', '4.4.1', '/usr/local/bin/ffmpeg']
 */
helpers.getFFmpegInfo();

/**
 * Get Curl command-line tool version and path
 * @returns Promise<[string, string, string]> - ['Curl', '7.81.0', '/usr/bin/curl']
 */
helpers.getCurlInfo();

/**
 * Get OpenSSL cryptographic library version and path
 * @returns Promise<[string, string, string]> - ['OpenSSL', '1.1.1m', '/usr/bin/openssl']
 */
helpers.getOpenSSLInfo();

Web Servers

Detection of web server installations and versions.

/**
 * Get Apache HTTP Server version
 * @returns Promise<[string, string]> - ['Apache', '2.4.52']
 */
helpers.getApacheInfo();

/**
 * Get Nginx web server version
 * @returns Promise<[string, string]> - ['Nginx', '1.20.2']
 */
helpers.getNginxInfo();

Software Development Kits (SDKs)

Platform SDKs with detailed information about installed components.

/**
 * Get Android SDK information with detailed component breakdown
 * @returns Promise<[string, Object|string]> - ['Android SDK', detailedObject] or ['Android SDK', 'Not Found']
 * 
 * Detailed object structure:
 * {
 *   "API Levels": ["android-30", "android-31"],
 *   "Build Tools": ["30.0.3", "31.0.0"],
 *   "System Images": ["android-30;google_apis;x86", "android-31;google_apis;x86_64"],
 *   "Android NDK": "23.1.7779620"
 * }
 */
helpers.getAndroidSDKInfo();

/**
 * Get iOS SDK information with platforms array (macOS only)
 * @returns Promise<[string, Object|string]> - ['iOS SDK', platformsObject] or ['iOS SDK', 'N/A']
 * 
 * Platforms object structure:
 * {
 *   "Platforms": ["iPhoneOS15.2.sdk", "iPhoneSimulator15.2.sdk", "MacOSX12.1.sdk"]
 * }
 */
helpers.getiOSSDKInfo();

/**
 * Get Windows SDK information with registry data (Windows only)
 * @returns Promise<[string, Object|string]> - ['Windows SDK', sdkObject] or ['Windows SDK', 'N/A']
 * 
 * SDK object structure:
 * {
 *   "10.0.19041.685": "C:\\Program Files (x86)\\Windows Kits\\10\\"
 * }
 */
helpers.getWindowsSDKInfo();

IDEs and Editors

Integrated development environments and text editors with version detection.

/**
 * Get Android Studio IDE version (macOS only)
 * @returns Promise<[string, string]> - ['Android Studio', '2021.1.1.23']
 */
helpers.getAndroidStudioInfo();

/**
 * Get Atom editor version and path (macOS only)
 * @returns Promise<[string, string, string]> - ['Atom', '1.58.0', '/Applications/Atom.app/Contents/MacOS/Atom']
 */
helpers.getAtomInfo();

/**
 * Get Emacs editor version
 * @returns Promise<[string, string]> - ['Emacs', '28.0.92']
 */
helpers.getEmacsInfo();

/**
 * Get IntelliJ IDEA version (macOS only)
 * @returns Promise<[string, string]> - ['IntelliJ', '2021.3.2']
 */
helpers.getIntelliJInfo();

/**
 * Get Neovim editor version
 * @returns Promise<[string, string]> - ['NVim', '0.6.1']
 */
helpers.getNvimInfo();

/**
 * Get Nano editor version (Linux only)
 * @returns Promise<[string, string]> - ['Nano', '6.0']
 */
helpers.getNanoInfo();

/**
 * Get PhpStorm IDE version (macOS only)
 * @returns Promise<[string, string]> - ['PhpStorm', '2021.3.2']
 */
helpers.getPhpStormInfo();

/**
 * Get Sublime Text editor version and path
 * @returns Promise<[string, string, string]> - ['Sublime Text', '4126', '/Applications/Sublime Text.app/Contents/MacOS/Sublime Text']
 */
helpers.getSublimeTextInfo();

/**
 * Get Vim editor version
 * @returns Promise<[string, string]> - ['Vim', '8.2']
 */
helpers.getVimInfo();

/**
 * Get Visual Studio Code version and path
 * @returns Promise<[string, string, string]> - ['VSCode', '1.64.2', '/Applications/Visual Studio Code.app/Contents/MacOS/Electron']
 */
helpers.getVSCodeInfo();

/**
 * Get Visual Studio IDE versions (Windows only)
 * @returns Promise<[string, string[]]> - ['Visual Studio', ['2019 Professional 16.11.31729.503', '2019 Community 16.11.31729.503']]
 */
helpers.getVisualStudioInfo();

/**
 * Get WebStorm IDE version (macOS only)
 * @returns Promise<[string, string]> - ['WebStorm', '2021.3.2']
 */
helpers.getWebStormInfo();

/**
 * Get Xcode IDE version and path (macOS only)
 * @returns Promise<[string, string, string]> - ['Xcode', '13.2.1', '/Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild']
 */
helpers.getXcodeInfo();

Databases

Database system detection with version information.

/**
 * Get MongoDB database version and path
 * @returns Promise<[string, string, string]> - ['MongoDB', '5.0.6', '/usr/local/bin/mongod']
 */
helpers.getMongoDBInfo();

/**
 * Get MySQL database version and path (includes MariaDB detection)
 * @returns Promise<[string, string, string]> - ['MySQL', '8.0.28', '/usr/local/bin/mysql'] or ['MySQL', '10.6.7-MariaDB', '/usr/bin/mysql']
 */
helpers.getMySQLInfo();

/**
 * Get PostgreSQL database version and path
 * @returns Promise<[string, string, string]> - ['PostgreSQL', '14.2', '/usr/local/bin/postgres']
 */
helpers.getPostgreSQLInfo();

/**
 * Get SQLite database version and path
 * @returns Promise<[string, string, string]> - ['SQLite', '3.37.2', '/usr/bin/sqlite3']
 */
helpers.getSQLiteInfo();

Virtualization and Containerization

Container platforms and virtualization tools.

/**
 * Get Docker container platform version and path
 * @returns Promise<[string, string, string]> - ['Docker', '20.10.12', '/usr/local/bin/docker']
 */
helpers.getDockerInfo();

/**
 * Get Docker Compose version and path
 * @returns Promise<[string, string, string]> - ['Docker Compose', '2.2.3', '/usr/local/bin/docker-compose']
 */
helpers.getDockerComposeInfo();

/**
 * Get Parallels virtualization version and path
 * @returns Promise<[string, string, string]> - ['Parallels', '17.1.2', '/Applications/Parallels Desktop.app/Contents/MacOS/prl_client_app']
 */
helpers.getParallelsInfo();

/**
 * Get Podman container engine version and path
 * @returns Promise<[string, string, string]> - ['Podman', '4.0.2', '/usr/bin/podman']
 */
helpers.getPodmanInfo();

/**
 * Get VirtualBox virtualization version and path
 * @returns Promise<[string, string, string]> - ['VirtualBox', '6.1.32', '/usr/local/bin/VBoxManage']
 */
helpers.getVirtualBoxInfo();

/**
 * Get VMware Fusion version and path (macOS only)
 * @returns Promise<[string, string, string]> - ['VMware Fusion', '12.2.3', '/Applications/VMware Fusion.app/Contents/MacOS/VMware Fusion']
 */
helpers.getVMwareFusionInfo();

Monorepo Tools

Tools for managing monorepo projects and workspaces.

/**
 * Get Yarn Workspaces configuration status
 * @returns Promise<[string, string]> - ['Yarn Workspaces', 'Yes'] or ['Yarn Workspaces', 'No']
 */
helpers.getYarnWorkspacesInfo();

/**
 * Get Lerna monorepo tool version
 * @returns Promise<[string, string]> - ['Lerna', '4.0.0'] or ['Lerna', 'Not Found']
 */
helpers.getLernaInfo();

Usage Examples

Direct helper usage:

const { helpers } = require('envinfo');

// Get system information
const [osName, osVersion] = await helpers.getOSInfo();
console.log(`${osName}: ${osVersion}`);

// Get Node.js information with path
const [nodeName, nodeVersion, nodePath] = await helpers.getNodeInfo();
console.log(`${nodeName}: ${nodeVersion} - ${nodePath}`);

// Get complex SDK information
const [androidName, androidSDK] = await helpers.getAndroidSDKInfo();
if (typeof androidSDK === 'object') {
  console.log('Android SDK Components:', androidSDK);
} else {
  console.log(`${androidName}: ${androidSDK}`);
}

Batch helper usage:

const { helpers } = require('envinfo');

// Get multiple browser versions
const browsers = await Promise.all([
  helpers.getChromeInfo(),
  helpers.getFirefoxInfo(),
  helpers.getSafariInfo()
]);

browsers.forEach(([name, version, path]) => {
  if (version !== 'Not Found') {
    console.log(`${name}: ${version}`);
  }
});

Return Value Patterns

All helper functions follow consistent return patterns:

  • Two-element: [name, version] for simple version detection
  • Three-element: [name, version, path] for version with installation path
  • Complex objects: [name, detailedObject] for SDKs with multiple components
  • Not Found: [name, 'Not Found'] when tool/software is not installed
  • Platform N/A: [name, 'N/A'] when tool is not supported on current platform

Error Handling

All helper functions handle errors gracefully:

  • Missing binaries return "Not Found"
  • Unsupported platforms return "N/A"
  • Failed operations are logged but don't crash the process
  • Promise rejections are caught and converted to appropriate return values