Skip to content

Instantly share code, notes, and snippets.

View jimmywarting's full-sized avatar

Jimmy Wärting jimmywarting

View GitHub Profile
@jimmywarting
jimmywarting / reload.js
Last active February 20, 2024 21:13
Simple dependency free file auto-reload (NodeJS)
import { watch } from 'node:fs/promises'
import { Worker } from 'node:worker_threads'
let worker = new Worker('./app.js')
async function reloadOnChange (dir) {
const watcher = watch(dir, { recursive: true })
for await (const change of watcher) {
if (change.filename.endsWith('.js')) {
worker.terminate()
@jimmywarting
jimmywarting / block-reader.js
Last active January 25, 2024 13:15
Memory efficient block reader of fetch- `Response.body` a.k.a `RedableStream`
/**
* Read a stream into same underlying ArrayBuffer of a fixed size.
* And yield a new Uint8Array view of the same underlying buffer.
* @param {ReadableStreamBYOBReader} reader
* @param {number} chunkSize
*/
async function* blockReader(reader, chunkSize) {
let offset = 0;
let buffer = new ArrayBuffer(chunkSize)
let done, view
@jimmywarting
jimmywarting / cjs-in-esm.md
Last active January 27, 2024 18:02
using cjs in esm runtime (NodeJS)