Create sync/async APIs with usable logic.
Quantum + Sync - "Superposition" between sync
and async
.
- Typesafe
- ESM, modern JavaScript
- Zero dependencies
Heavily inspired by genasync
by @loganfsmyth.
pnpm i quansync
import fs from 'node:fs'
import { quansync } from 'quansync'
// Create an quansync function by providing `sync` and `async` implementations
const readFile = quansync({
sync: fs.readFileSync,
async: fs.promises.readFile,
})
// Create an quansync function by providing a generator function
const myFunction = quansync(function* (filename) {
// Use `yield*` to call another quansync function
const code = yield * readFile(filename, 'utf8')
return `// some custom prefix\n${code}`
})
// Use it as a sync function
const result = myFunction.sync('./some-file.js')
// Use it as an async function
const asyncResult = await myFunction.async('./some-file.js')
MIT License © Anthony Fu