$ npm install @sinclair/carbon
Carbon is an experimental cross platform compatibility layer for Node, Deno and Bun.
License MIT
The following starts an Http listener
import { Http } from '@sinclair/carbon'
const listener = await Http.listen({ port: 5000 }, request => {
return new Response('hello world')
})
The following upgrades an Http request into a WebSocket
import { Http } from '@sinclair/carbon'
const listener = await Http.listen({ port: 5000 }, request => {
return Http.upgrade(request, socket => {
socket.send('hello world')
})
})
Carbon implements several API abstractions that provide a uniform way to interact with core functionality provided by each runtime. It is built exclusively for ESM and dynamic platform detection + dynamic ESM imports to load implementations for each runtime.
The following API's are implemented
Feature | Info | Node | Deno | Bun | Browser |
---|---|---|---|---|---|
Ansi | Ansi Terminal Codes | Yes | Yes | Yes | Yes |
Assert | Value Assertions | Yes | Yes | Yes | Yes |
Async | Async Utils | Yes | Yes | Yes | Yes |
Benchmark | Performance Measurements | Yes | Yes | Yes | Yes |
Buffer | Operations on Uint8Array Buffers | Yes | Yes | Yes | Yes |
Channel | Multi Sender Single Receiver Channels | Yes | Yes | Yes | Yes |
Crypto | Web Crypto API | Yes | Yes | Yes | Yes |
Encoding | Json and Binary Buffer Encoding | Yes | Yes | Yes | Yes |
Events | Event Emitters | Yes | Yes | Yes | Yes |
Fs | Isolated File System | Yes | Yes | Yes | Yes |
Http | Http and WebSockets | Yes | Yes | Yes | Partial |
Net | Tcp Listeners and Sockets | Yes | Yes | Yes | No |
Os | Operating System Resolver | Yes | Yes | Yes | Yes |
Path | Pathing Utils (Windows and Posix) | Yes | Yes | Yes | Yes |
Performance | Web Performance API | Yes | Yes | Yes | Yes |
Process | Standard IO and TTY | Yes | Yes | Yes | Partial |
Qs | Query String Parsing | Yes | Yes | Yes | Yes |
Runtime | JavaScript Runtime Resolver | Yes | Yes | Yes | Yes |
Stream | Stream Interfaces | Yes | Yes | Yes | Yes |
Test | Unit Testing | Yes | Yes | Yes | Yes |
Type | Type System (TypeBox) | Yes | Yes | Yes | Yes |
Url | Url Parsing | Yes | Yes | Yes | Yes |
Value | Value Operations (TypeBox) | Yes | Yes | Yes | Yes |