Skip to content

Instantly share code, notes, and snippets.

View denchiklut's full-sized avatar
🏳️‍🌈

Karl denchiklut

🏳️‍🌈
View GitHub Profile
@denchiklut
denchiklut / main.ts
Created February 16, 2026 19:40
AsyncIterator
type Emit<T> = (value: T) => void;
type Subscribe<T> = (emit: Emit<T>) => void | (() => void);
export async function* toAsyncIterator<T>(subscribe: Subscribe<T>): AsyncGenerator<T> {
const queue = new AsyncQueue<T>();
const cleanup = subscribe(v => queue.push(v));
try {
while (true) {
yield queue.next();
@denchiklut
denchiklut / promt.hook.ts
Last active May 11, 2023 09:52
usePromt
import { useEffect } from 'react'
import { unstable_useBlocker as useBlocker } from 'react-router-dom'
export function usePrompt(message: string, when = true) {
const blocker = useBlocker(when)
useEffect(() => {
if (when) window.onbeforeunload = () => message
return () => {