Commit 973bc58 for mammothjs
commit 973bc5820a702ebedbaeb4ceecfea64f148dbafb
Author: Michael Williamson <mike@zwobble.org>
Date: Wed Sep 16 23:39:44 2026 +0100
Implement props in promises module
diff --git a/lib/promises.js b/lib/promises.js
index b292331..6ceee1c 100644
--- a/lib/promises.js
+++ b/lib/promises.js
@@ -3,10 +3,38 @@ var bluebird = require("bluebird/js/release/promise")();
exports.defer = defer;
exports.resolve = bluebird.resolve;
-exports.props = bluebird.props;
exports.reject = bluebird.reject;
exports.mapSeries = bluebird.mapSeries;
+var props = exports.props = function(obj) {
+ // We rely on .keys() and .values() returning properties in the same order.
+ var keys = Object.keys(obj);
+ var values = Object.values(obj);
+
+ var result = bluebird.all(values).then(function(resolvedValues) {
+ var resolvedObj = {};
+ for (var index = 0; index < keys.length; index++) {
+ resolvedObj[keys[index]] = resolvedValues[index];
+ }
+ return resolvedObj;
+ });
+
+ return addAlsoToPromise(result);
+};
+
+function addAlsoToPromise(promise) {
+ promise.also = function(func) {
+ var result = this.then(function(value) {
+ var returnValue = _.extend({}, value, func(value));
+ return props(returnValue);
+ });
+
+ return addAlsoToPromise(result);
+ };
+
+ return promise;
+}
+
exports.try = function(func) {
try {
return bluebird.resolve(func());