JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 2025890
  • Score
    100M100P100Q208093F
  • License MIT

Create sync/async APIs with usable logic

Package Exports

  • quansync

Readme

quansync

npm version npm downloads bundle JSDocs License

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.

Usage

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: (path: string) => fs.readFileSync(path),
  async: (path: string) => fs.promises.readFile(path),
})

// 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')

Sponsors

License

MIT License © Anthony Fu