or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

artifact-download.mdbasic-download.mdconfiguration.mddownloaders.mdindex.mdutilities.md
tile.json

utilities.mddocs/

Utilities

Helper functions for architecture detection and proxy initialization to support cross-platform downloads and enterprise environments.

Capabilities

Architecture Detection

Get the current system architecture in the format used by Electron and Node.js downloads.

/**
 * Generates an architecture name that would be used in an Electron or Node.js
 * download file name from the `process` module information.
 */
function getHostArch(): string;

Usage Examples:

import { getHostArch } from "@electron/get";

const arch = getHostArch();
console.log(`Current architecture: ${arch}`);
// Possible outputs: 'x64', 'ia32', 'arm64', 'armv7l'

// Use in download calls
import { downloadArtifact } from "@electron/get";

await downloadArtifact({
  version: '31.0.0',
  artifactName: 'electron',
  platform: 'linux',
  arch: getHostArch() // Use detected architecture
});

Architecture Mapping:

The function handles architecture normalization:

  • 'arm' becomes 'armv7l' (default) or output of uname -m (for ARM v6)
  • Other architectures ('x64', 'ia32', 'arm64') pass through unchanged

Proxy Initialization

Initialize HTTP(S) proxy support for downloads using the global-agent module.

/**
 * Initializes a third-party proxy module for HTTP(S) requests. Call this function before
 * using the download and downloadArtifact APIs if you need proxy support.
 * 
 * If the `ELECTRON_GET_USE_PROXY` environment variable is set to `true`, this function will be
 * called automatically for @electron/get requests.
 */
function initializeProxy(): void;

Usage Examples:

import { initializeProxy, download } from "@electron/get";

// Manual proxy initialization
initializeProxy();

// Then proceed with downloads
const electronPath = await download('31.0.0');

Environment Variables:

The proxy initialization looks for these environment variables:

  • GLOBAL_AGENT_HTTP_PROXY - HTTP proxy URL
  • GLOBAL_AGENT_HTTPS_PROXY - HTTPS proxy URL
  • GLOBAL_AGENT_NO_PROXY - Comma-separated list of hosts to bypass proxy

Configuration Examples:

# Set proxy environment variables
export GLOBAL_AGENT_HTTPS_PROXY="http://proxy.company.com:8080"
export GLOBAL_AGENT_NO_PROXY="localhost,127.0.0.1,.company.com"

# Enable automatic proxy initialization
export ELECTRON_GET_USE_PROXY=true
// Proxy will be automatically initialized due to ELECTRON_GET_USE_PROXY
import { download } from "@electron/get";

const electronPath = await download('31.0.0');

Temporary Directory Management

Functions for creating and managing temporary directories during downloads.

/**
 * Creates a temporary directory with a unique name.
 */
function mkdtemp(parentDirectory?: string): Promise<string>;

/**
 * Executes a function with a temporary directory and optionally cleans it up.
 */
function withTempDirectory<T>(
  fn: (directory: string) => Promise<T>,
  cleanUp: TempDirCleanUpMode
): Promise<T>;

/**
 * Executes a function with a temporary directory in a specific parent directory.
 */
function withTempDirectoryIn<T>(
  parentDirectory: string,
  fn: (directory: string) => Promise<T>,
  cleanUp: TempDirCleanUpMode
): Promise<T>;

/**
 * Controls temporary directory cleanup behavior.
 */
enum TempDirCleanUpMode {
  CLEAN,  // Clean up the directory after use
  ORPHAN, // Leave the directory (caller owns it)
}

Usage Examples:

import { mkdtemp, withTempDirectory, TempDirCleanUpMode } from "@electron/get";

// Create a temporary directory
const tempDir = await mkdtemp('/custom/temp/path');
console.log(`Temporary directory: ${tempDir}`);

// Use temporary directory with automatic cleanup
const result = await withTempDirectory(async (tempDir) => {
  // Do work in tempDir
  return someProcessing(tempDir);
}, TempDirCleanUpMode.CLEAN);

// Use temporary directory without cleanup (caller owns it)
const tempPath = await withTempDirectory(async (tempDir) => {
  const outputFile = path.join(tempDir, 'output.zip');
  // Create file in tempDir
  return outputFile;
}, TempDirCleanUpMode.ORPHAN);

Version and Architecture Utilities

Additional utility functions for version normalization and architecture handling.

/**
 * Normalize version strings by adding 'v' prefix if needed.
 */
function normalizeVersion(version: string): string;

/**
 * Generate architecture name for Electron/Node.js downloads.
 */
function getNodeArch(arch: string): string;

/**
 * Run the uname command and return trimmed output.
 */
function uname(): string;

/**
 * Validate that a property is a truthy string.
 */
function ensureIsTruthyString<T, K extends keyof T>(obj: T, key: K): void;

Usage Examples:

import { normalizeVersion, getNodeArch, uname } from "@electron/get";

// Normalize version strings
const version1 = normalizeVersion('4.0.4');     // Returns 'v4.0.4'
const version2 = normalizeVersion('v4.0.4');    // Returns 'v4.0.4'

// Get Node-style architecture
const nodeArch = getNodeArch('x64');            // Returns 'x64'
const armArch = getNodeArch('arm');             // Returns 'armv7l'

// Get system information
const systemInfo = uname();                     // Returns output of uname -m
console.log(`System: ${systemInfo}`);

Environment Variable Utilities

Utilities for working with environment variables with optional prefixes.

/**
 * Get environment variables with optional prefix.
 */
function getEnv(prefix?: string): (name: string) => string | undefined;

/**
 * Set environment variables.
 */
function setEnv(key: string, value: string | undefined): void;

Usage Examples:

import { getEnv, setEnv } from "@electron/get";

// Create environment variable getter with prefix
const getElectronEnv = getEnv('ELECTRON_');
const customDir = getElectronEnv('CUSTOM_DIR'); // Gets ELECTRON_CUSTOM_DIR

// Set environment variable
setEnv('ELECTRON_MIRROR', 'https://custom-mirror.com/');

Cache Mode Utilities

Utility functions for determining cache behavior.

/**
 * Determine effective cache mode from artifact details.
 */
function effectiveCacheMode(
  artifactDetails: ElectronPlatformArtifactDetailsWithDefaults | ElectronGenericArtifactDetails
): ElectronDownloadCacheMode;

/**
 * Check if cache should be read based on cache mode.
 */
function shouldTryReadCache(cacheMode: ElectronDownloadCacheMode): boolean;

/**
 * Check if cache should be written based on cache mode.
 */
function shouldWriteCache(cacheMode: ElectronDownloadCacheMode): boolean;

/**
 * Check if caller owns temporary output based on cache mode.
 */
function doesCallerOwnTemporaryOutput(cacheMode: ElectronDownloadCacheMode): boolean;