{"version":3,"sources":["../src/generatorify.ts"],"sourcesContent":["import { createQueue } from './queue.js';\n\nexport interface TaskCallback<T> {\n  (value: T): Promise<void>;\n}\n\nexport interface Task<T, R = unknown> {\n  (callback: TaskCallback<T>): R;\n}\n\nexport const generatorify = <T, R>(task: Task<T, R>): AsyncIterable<T> => {\n  const queue = createQueue<IteratorResult<T, R>>();\n\n  Promise.resolve(\n    task(async (value) => {\n      await queue.push({ value, done: false }).promise;\n    }),\n  ).then(async (value) => queue.done({ value, done: true }));\n\n  return {\n    [Symbol.asyncIterator]() {\n      return {\n        next() {\n          return queue.pull().promise;\n        },\n      };\n    },\n  };\n};\n"],"names":["generatorify","task","queue","createQueue","Promise","resolve","value","push","done","promise","then","Symbol","asyncIterator","next","pull"],"mappings":";;;;+BAUaA;;;eAAAA;;;0BAVe;AAUrB,MAAMA,eAAe,CAAOC;IACjC,MAAMC,QAAQC,IAAAA,qBAAW;IAEzBC,QAAQC,OAAO,CACbJ,KAAK,OAAOK;QACV,MAAMJ,MAAMK,IAAI,CAAC;YAAED;YAAOE,MAAM;QAAM,GAAGC,OAAO;IAClD,IACAC,IAAI,CAAC,OAAOJ,QAAUJ,MAAMM,IAAI,CAAC;YAAEF;YAAOE,MAAM;QAAK;IAEvD,OAAO;QACL,CAACG,OAAOC,aAAa,CAAC;YACpB,OAAO;gBACLC;oBACE,OAAOX,MAAMY,IAAI,GAAGL,OAAO;gBAC7B;YACF;QACF;IACF;AACF"}