@sinclair/carbon
v0.8.4
Published
Compatibility Layer for Node Deno and Bun
Downloads
33
Readme
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 |