https://github.com/val-town/deno-http-worker
Securely spawn Deno workers from Node.js
https://github.com/val-town/deno-http-worker
deno sandboxing worker
Last synced: about 2 months ago
JSON representation
Securely spawn Deno workers from Node.js
- Host: GitHub
- URL: https://github.com/val-town/deno-http-worker
- Owner: val-town
- Created: 2024-04-15T22:45:44.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-01-10T20:29:43.000Z (5 months ago)
- Last Synced: 2025-04-14T14:14:55.489Z (about 2 months ago)
- Topics: deno, sandboxing, worker
- Language: TypeScript
- Homepage:
- Size: 298 KB
- Stars: 19
- Watchers: 4
- Forks: 3
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# deno-http-worker
[](https://npmjs.org/package/deno-http-worker)
Similarly to [deno-vm](https://github.com/casual-simulation/node-deno-vm), deno-http-worker lets you securely spawn Deno http servers.
## Usage
```ts
import { newDenoHTTPWorker } from 'deno-http-worker';let worker = await newDenoHTTPWorker(
`export default {
async fetch(req: Request): Promise {
return Response.json({ ok: req.url });
},
}`,
{ printOutput: true, runFlags: ["--allow-net"] }
);const body = await new Promise((resolve, reject) => {
const req = worker.request("https://hello/world?query=param", {}, (resp) => {
const body = [];
resp.on("error", reject);
resp.on("data", (chunk) => {
body.push(chunk);
});
resp.on("end", () => {
resolve(Buffer.concat(body).toString());
});
})
req.end();
})
console.log(body) // => {"ok":"https://hello/world?query=param"}worker.terminate();
```## Internals
Deno-http-worker connects to the Deno process over a Unix socket to make requests. As a result, the worker does not provide an address or url, but instead returns `request` function that calls `http.request` under the hood, but modifies the request attributes to work over the socket.
If you need more advanced usage here, or run into bugs, please open an issue.