Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/sinclairzx81/carbon
Compatibility Layer for Node Deno and Bun
https://github.com/sinclairzx81/carbon
bun deno http node websocket
Last synced: 17 days ago
JSON representation
Compatibility Layer for Node Deno and Bun
- Host: GitHub
- URL: https://github.com/sinclairzx81/carbon
- Owner: sinclairzx81
- License: other
- Created: 2024-03-01T03:46:08.000Z (8 months ago)
- Default Branch: main
- Last Pushed: 2024-04-29T15:06:46.000Z (6 months ago)
- Last Synced: 2024-04-30T12:49:38.563Z (6 months ago)
- Topics: bun, deno, http, node, websocket
- Language: TypeScript
- Homepage:
- Size: 2.89 MB
- Stars: 13
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
- License: license
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 |