
Security News
The Hidden Blast Radius of the Axios Compromise
The Axios compromise shows how time-dependent dependency resolution makes exposure harder to detect and contain.
@purinton/path
Advanced tools

An ESM/Jest/Node-friendly path utility for resolving file and directory paths in both CommonJS and ESM environments.
import.meta or a string (like __dirname)pathUrl helper for cross-platform dynamic importnpm install @purinton/path
import path, { pathUrl } from '@purinton/path';
// for ESM, we need to pass import.meta
const envFile = path(import.meta, ".env");
console.log(envFile);
// Get a file URL href for dynamic import
const envFileUrl = pathUrl(import.meta, ".env");
console.log(envFileUrl);
// import(envFileUrl).then(mod => ...);
const { path, pathUrl } = require('@purinton/path');
// for CommonJS, we need to pass __dirname
const envFile = path(__dirname, '.env');
console.log(envFile);
// Get a file URL href for dynamic import
const envFileUrl = pathUrl(__dirname, '.env');
console.log(envFileUrl);
// import(envFileUrl).then(mod => ...); // if using ESM loader in CJS
// ESM
import { pathUrl } from '@purinton/path';
const mod = await import(pathUrl(import.meta, './my-module.mjs'));
// CommonJS (with ESM loader)
const { pathUrl } = require('@purinton/path');
const mod = await import(pathUrl(__dirname, './my-module.mjs'));
getCurrentFilename(metaOrDir?: ImportMeta | string): stringReturns the absolute path to the current file or directory. Pass import.meta (ESM) or a string (e.g. __dirname). Throws if unavailable.
getCurrentDirname(metaOrDir?: ImportMeta | string, dirnameFn?: (path: string) => string): stringReturns the absolute path to the current directory. Pass import.meta (ESM) or a string (e.g. __dirname). Throws if unavailable.
default path(metaOrDir: ImportMeta | string, ...segments: string[]): stringJoins the current dirname (from import.meta or a string) with provided segments to form an absolute path.
pathUrl(metaOrDir: ImportMeta | string, ...segments: string[]): stringReturns a file URL href string for the resolved path, suitable for use with dynamic import() on all platforms.
Type definitions are included:
export function getCurrentFilename(metaOrDir?: ImportMeta | string): string;
export function getCurrentDirname(metaOrDir?: ImportMeta | string, dirnameFn?: (path: string) => string): string;
export const path: (metaOrDir: ImportMeta | string, ...segments: string[]) => string;
export function pathUrl(metaOrDir: ImportMeta | string, ...segments: string[]): string;
export default path;
For help, questions, or to chat with the author and community, visit:
FAQs
An ESM/Jest friendly path utility.
We found that @purinton/path demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
The Axios compromise shows how time-dependent dependency resolution makes exposure harder to detect and contain.

Research
A supply chain attack on Axios introduced a malicious dependency, plain-crypto-js@4.2.1, published minutes earlier and absent from the project’s GitHub releases.

Research
Malicious versions of the Telnyx Python SDK on PyPI delivered credential-stealing malware via a multi-stage supply chain attack.