commit a9145c8a80d8f89198fad78e1e4119fbca959cb7 Author: Sven Slootweg Date: Sat Mar 27 23:23:34 2021 +0100 Initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3c3629e --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +node_modules diff --git a/index.js b/index.js new file mode 100644 index 0000000..a2003ff --- /dev/null +++ b/index.js @@ -0,0 +1,33 @@ +"use strict"; + +const pDefer = require("p-defer"); + +module.exports = function createPauser() { + let isPaused = false; + let promise, resolve; + + return { + await: function (passthroughValue) { + if (isPaused) { + return promise.then(() => { + return passthroughValue; + }); + } else { + return passthroughValue; + } + }, + pause: function () { + isPaused = true; + + let defer = pDefer(); + promise = defer.promise; + resolve = defer.resolve; + }, + unpause: function () { + if (isPaused) { + isPaused = false; + resolve(); + } + } + }; +}; diff --git a/package.json b/package.json new file mode 100644 index 0000000..9258fdc --- /dev/null +++ b/package.json @@ -0,0 +1,11 @@ +{ + "name": "p-pause", + "version": "0.1.0", + "main": "index.js", + "repository": "https://git.cryto.net/joepie91/p-pause.git", + "author": "Sven Slootweg ", + "license": "WTFPL OR CC0-1.0", + "dependencies": { + "p-defer": "^3.0.0" + } +} diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..8be3292 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,8 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +p-defer@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-3.0.0.tgz#d1dceb4ee9b2b604b1d94ffec83760175d4e6f83" + integrity sha512-ugZxsxmtTln604yeYd29EGrNhazN2lywetzpKhfmQjW/VJmhpDmWbiX+h0zL8V91R0UXkhb3KtPmyq9PZw3aYw==