/carbon

Compatibility Layer for Node Deno and Bun

Primary LanguageTypeScriptOtherNOASSERTION

Carbon

Compatibility Layer for Node Deno and Bun



Test npm version License

Install

$ npm install @sinclair/carbon

Overview

Carbon is an experimental cross platform compatibility layer for Node, Deno and Bun.

License MIT

Http Server

The following starts an Http listener

import { Http } from '@sinclair/carbon'

const listener = await Http.listen({ port: 5000 }, request => {

  return new Response('hello world')
})

WebSocket Server

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')
  })
})

Features

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