UNPKG

hakojs

Version:

A secure, embeddable JavaScript engine that runs untrusted code inside WebAssembly sandboxes with fine-grained permissions and resource limits

40 lines (38 loc) 1.1 kB
// src/helpers/asyncify-helpers.ts function* awaitYield(value) { return yield value; } function awaitYieldOf(generator) { return awaitYield(awaitEachYieldedPromise(generator)); } var AwaitYield = awaitYield; AwaitYield.of = awaitYieldOf; function maybeAsyncFn(that, fn) { return (...args) => { const generator = fn.call(that, AwaitYield, ...args); return awaitEachYieldedPromise(generator); }; } function maybeAsync(that, startGenerator) { const generator = startGenerator.call(that, AwaitYield); return awaitEachYieldedPromise(generator); } function awaitEachYieldedPromise(gen) { function handleNextStep(step) { if (step.done) { return step.value; } if (step.value instanceof Promise) { return step.value.then((value) => handleNextStep(gen.next(value)), (error) => handleNextStep(gen.throw(error))); } return handleNextStep(gen.next(step.value)); } return handleNextStep(gen.next()); } export { maybeAsyncFn, maybeAsync, awaitEachYieldedPromise }; //# debugId=84C58E2835B7F13A64756E2164756E21 //# sourceMappingURL=asyncify-helpers.js.map