# xpipe

> Use cross-platform IPC paths in Node.js.

Latest version **1.0.8** (published 2024-09-25) · MIT license · 0 weekly downloads

## Install

```sh
npm install xpipe
pnpm add xpipe
yarn add xpipe
bun add xpipe
```

## Health

**Score 25/100 (F)** — status: maintenance-mode.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: stale; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.8 |
| Published | 2024-09-25 |
| First published | 2016-09-03 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 0 |
| Unpacked size | 4.7 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 0 |
| Author | Michael Kortstiege |
| Maintainers | picobellz, picoblitz |
| Keywords | cross platform, cross-platform, ipc, path, unix, sockets, windows, named pipes |

## Links

- npm: https://www.npmjs.com/package/xpipe
- Repository: https://github.com/picoblitz/xpipe
- Homepage: https://github.com/picoblitz/xpipe#readme
- Issues: https://github.com/picoblitz/xpipe/issues
- npm.io page: https://npm.io/package/xpipe

## Alternatives

- [base64url](https://npm.io/package/base64url.md) — 6.1M weekly downloads
- [get-installed-path](https://npm.io/package/get-installed-path.md) — 502.9K weekly downloads
- [@uppy/url](https://npm.io/package/@uppy/url.md) — 185.8K weekly downloads
- [@d3fc/d3fc-shape](https://npm.io/package/@d3fc/d3fc-shape.md) — 16.2K weekly downloads
- [localizer](https://npm.io/package/localizer.md) — 226 weekly downloads

## Recent versions

- 1.0.8 (latest) — 2024-09-25
- 1.0.7 — 2024-04-25
- 1.0.6 — 2024-04-24
- 1.0.5 — 2016-09-05
- 1.0.4 — 2016-09-03
- 1.0.3 — 2016-09-03
- 1.0.2 — 2016-09-03
- 1.0.1 — 2016-09-03
- 1.0.0 — 2016-09-03

## README

# xpipe<sup>[^1]</sup>

Use cross-platform IPC paths in Node.js.

## Background

In Node.js - instead of using TCP - you also can take IPC<sup>[^2]</sup> to communicate to services like

- web servers (NGINX, Caddy)
- databases (redis, PostgreSQL, MongoDB)
- etc.

or to interconnect Node.js apps, Electron frontends/backends and so on.

**This can lead to large speed gains.**

On unixoid operating systems - e.g. Linux and OS X - we use [Unix domain sockets](https://en.wikipedia.org/wiki/Unix_domain_socket)
that are referred by file descriptors.

Windows has [named pipes](https://en.wikipedia.org/wiki/Named_pipe) for it, living
in the root directory of the NPFS<sup>[^3]</sup>, mounted under the special path \\\\.\\pipe\\.

**To mitigate these differences and to to support writing portable code, xpipe was born...**

## Installation

    npm install xpipe

## Usage

```javascript
// CommonJS (CJS) require
const xpipe = require('xpipe');
```

```javascript
// ECMAScript Modules (ESM) import
import xpipe from 'xpipe';
```

### xpipe.prefix

```javascript
let prefix = xpipe.prefix;
console.log(`prefix:  ${prefix}`);

//   [empty string] on Linux and macOS
//   "//./pipe/" on Windows
```

### xpipe.eq

```javascript
let ipcPath = xpipe.eq('/tmp/my.sock');
console.log(`ipcPath: ${ipcPath}`);

//   Returns a cross-platform IPC path:
//   "/tmp/my.sock" on Linux and OS X
//   "//./pipe/tmp/my.sock" on Windows
```

## When did Windows start accepting forward slash as a path separator?

Every Windows API/kernel ever has accepted "/" as a path separator.
So has every version of MS-DOS beginning with DOS 2.0 (the first version
to support subdirectories).

It's only been in command lines that "/" was not allowed when it had
already been used as a switch delimiter in MS-DOS 1.0 (introduced by IBM).

This behaviour could be bypassed (at least on modern Windows systems) by including
the path in double quotation marks:

- **cd c:/Windows** and **cd /Windows** work<sup>[^4]</sup>
- **dir ./ /B** fails but **dir "./" /B** works

Further articles:

- https://en.m.wikipedia.org/wiki/Path_(computing)

<p>&nbsp;</p> 
  
[^1]: xpipe stands for **xp (cross-platform) IPC path equalizer**  
[^2]: inter-process communication, see [https://en.wikipedia.org/wiki/Inter-process_communication](https://en.wikipedia.org/wiki/Inter-process_communication)
[^3]: named pipe file system (in-memory)  
[^4]: on Windows "/" without a leading drive letter represents the root of the current drive

---
_Source: https://npm.io/package/xpipe · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
