Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/sinclairzx81/carbon

Compatibility Layer for Node Deno and Bun
https://github.com/sinclairzx81/carbon

bun deno http node websocket

Last synced: 2 months ago
JSON representation

Compatibility Layer for Node Deno and Bun

Awesome Lists containing this project

README

        

Carbon

Compatibility Layer for Node Deno and Bun




[![Test](https://github.com/sinclairzx81/carbon/actions/workflows/test.yml/badge.svg)](https://github.com/sinclairzx81/carbon/actions/workflows/test.yml) [![npm version](https://badge.fury.io/js/%40sinclair%2Fcarbon.svg)](https://badge.fury.io/js/%40sinclair%2Fcarbon) [![License](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

## Install

```bash
$ 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

```typescript
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

```typescript
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 |