summaryrefslogtreecommitdiff
path: root/node_modules/thenify-all/index.js
diff options
context:
space:
mode:
authorPhilipp Tanlak <philipp.tanlak@gmail.com>2025-11-24 20:54:57 +0100
committerPhilipp Tanlak <philipp.tanlak@gmail.com>2025-11-24 20:57:48 +0100
commitb1e2c8fd5cb5dfa46bc440a12eafaf56cd844b1c (patch)
tree49d360fd6cbc6a2754efe93524ac47ff0fbe0f7d /node_modules/thenify-all/index.js
Docs
Diffstat (limited to 'node_modules/thenify-all/index.js')
-rw-r--r--node_modules/thenify-all/index.js73
1 files changed, 73 insertions, 0 deletions
diff --git a/node_modules/thenify-all/index.js b/node_modules/thenify-all/index.js
new file mode 100644
index 0000000..e0cc69c
--- /dev/null
+++ b/node_modules/thenify-all/index.js
@@ -0,0 +1,73 @@
+
+var thenify = require('thenify')
+
+module.exports = thenifyAll
+thenifyAll.withCallback = withCallback
+thenifyAll.thenify = thenify
+
+/**
+ * Promisifies all the selected functions in an object.
+ *
+ * @param {Object} source the source object for the async functions
+ * @param {Object} [destination] the destination to set all the promisified methods
+ * @param {Array} [methods] an array of method names of `source`
+ * @return {Object}
+ * @api public
+ */
+
+function thenifyAll(source, destination, methods) {
+ return promisifyAll(source, destination, methods, thenify)
+}
+
+/**
+ * Promisifies all the selected functions in an object and backward compatible with callback.
+ *
+ * @param {Object} source the source object for the async functions
+ * @param {Object} [destination] the destination to set all the promisified methods
+ * @param {Array} [methods] an array of method names of `source`
+ * @return {Object}
+ * @api public
+ */
+
+function withCallback(source, destination, methods) {
+ return promisifyAll(source, destination, methods, thenify.withCallback)
+}
+
+function promisifyAll(source, destination, methods, promisify) {
+ if (!destination) {
+ destination = {};
+ methods = Object.keys(source)
+ }
+
+ if (Array.isArray(destination)) {
+ methods = destination
+ destination = {}
+ }
+
+ if (!methods) {
+ methods = Object.keys(source)
+ }
+
+ if (typeof source === 'function') destination = promisify(source)
+
+ methods.forEach(function (name) {
+ // promisify only if it's a function
+ if (typeof source[name] === 'function') destination[name] = promisify(source[name])
+ })
+
+ // proxy the rest
+ Object.keys(source).forEach(function (name) {
+ if (deprecated(source, name)) return
+ if (destination[name]) return
+ destination[name] = source[name]
+ })
+
+ return destination
+}
+
+function deprecated(source, name) {
+ var desc = Object.getOwnPropertyDescriptor(source, name)
+ if (!desc || !desc.get) return false
+ if (desc.get.name === 'deprecated') return true
+ return false
+}