0.8.4 • Published 2 years ago
@sinclair/carbon v0.8.4
Install
$ npm install @sinclair/carbonOverview
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 |