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

https://github.com/virtualstate/listen

Fetch listener
https://github.com/virtualstate/listen

Last synced: 2 months ago
JSON representation

Fetch listener

Awesome Lists containing this project

README

          

# `@virtualstate/listen`

Fetch listener

[//]: # (badges)

### Support

![Node.js supported](https://img.shields.io/badge/node-%3E%3D18.7.0-blue) ![Deno supported](https://img.shields.io/badge/deno-%3E%3D1.17.0-blue) ![Bun supported](https://img.shields.io/badge/bun-%3E%3D0.1.11-blue)

### Test Coverage

![96.69%25 lines covered](https://img.shields.io/badge/lines-96.69%25-brightgreen) ![96.69%25 statements covered](https://img.shields.io/badge/statements-96.69%25-brightgreen) ![95.65%25 functions covered](https://img.shields.io/badge/functions-95.65%25-brightgreen) ![90.57%25 branches covered](https://img.shields.io/badge/branches-90.57%25-brightgreen)

[//]: # (badges)

# Usage

```typescript
import { listen } from "@virtualstate/listen";

const { url, close } = await listen(
event => event.respondWith(new Response("Hello!"))
);

console.log(`Listening on ${url}`);

const response = await fetch(url);
const text = await response.text();
console.log(text);

if (text !== "Hello!") throw new Error("Expected Hello!");

await close();
```

## JSX

```jsx
import { listen, toResponse, toAsyncString, Fetch } from "@virtualstate/listen";
import { h, descendants, name, properties } from "@virtualstate/focus";

async function *App({ request }) {
if (request.method === "POST") {
const body = JSON.parse(
await toAsyncString(request)
);
yield
}
}

const { url, close } = await listen(
event => event.respondWith(
toResponse()
)
);

const random = Math.random()
const {
echo: [echo]
} = descendants(

).group(name);

const body = properties(await echo);
console.log(body);

if (body.random !== random) throw new Error("Expected body to contain random")
```