Demo for query storing
Change-Id: I947bcac841992c3f6cfd01ab337c265b0d01cb70
diff --git a/node_modules/now-and-later/lib/helpers.js b/node_modules/now-and-later/lib/helpers.js
new file mode 100644
index 0000000..b0e913c
--- /dev/null
+++ b/node_modules/now-and-later/lib/helpers.js
@@ -0,0 +1,41 @@
+'use strict';
+
+function noop() {}
+
+var defaultExts = {
+ create: noop,
+ before: noop,
+ after: noop,
+ error: noop,
+};
+
+function defaultExtensions(extensions) {
+ extensions = extensions || {};
+ return {
+ create: extensions.create || defaultExts.create,
+ before: extensions.before || defaultExts.before,
+ after: extensions.after || defaultExts.after,
+ error: extensions.error || defaultExts.error,
+ };
+}
+
+function initializeResults(values) {
+ var keys = Object.keys(values);
+ var results = Array.isArray(values) ? [] : {};
+
+ var idx = 0;
+ var length = keys.length;
+
+ for (idx = 0; idx < length; idx++) {
+ var key = keys[idx];
+ results[key] = undefined;
+ }
+
+ return results;
+}
+
+module.exports = {
+ defaultExtensions: defaultExtensions,
+ noop: noop,
+ initializeResults: initializeResults,
+};
diff --git a/node_modules/now-and-later/lib/map.js b/node_modules/now-and-later/lib/map.js
new file mode 100644
index 0000000..cd278fe
--- /dev/null
+++ b/node_modules/now-and-later/lib/map.js
@@ -0,0 +1,63 @@
+'use strict';
+
+var once = require('once');
+
+var helpers = require('./helpers');
+
+function map(values, iterator, extensions, done) {
+ // Allow for extensions to not be specified
+ if (typeof extensions === 'function') {
+ done = extensions;
+ extensions = {};
+ }
+
+ // Handle no callback case
+ if (typeof done !== 'function') {
+ done = helpers.noop;
+ }
+
+ done = once(done);
+
+ // Will throw if non-object
+ var keys = Object.keys(values);
+ var length = keys.length;
+ var count = length;
+ var idx = 0;
+ // Return the same type as passed in
+ var results = helpers.initializeResults(values);
+
+ var exts = helpers.defaultExtensions(extensions);
+
+ if (length === 0) {
+ return done(null, results);
+ }
+
+ for (idx = 0; idx < length; idx++) {
+ var key = keys[idx];
+ next(key);
+ }
+
+ function next(key) {
+ var value = values[key];
+
+ var storage = exts.create(value, key) || {};
+
+ exts.before(storage);
+ iterator(value, key, once(handler));
+
+ function handler(err, result) {
+ if (err) {
+ exts.error(err, storage);
+ return done(err, results);
+ }
+
+ exts.after(result, storage);
+ results[key] = result;
+ if (--count === 0) {
+ done(err, results);
+ }
+ }
+ }
+}
+
+module.exports = map;
diff --git a/node_modules/now-and-later/lib/mapSeries.js b/node_modules/now-and-later/lib/mapSeries.js
new file mode 100644
index 0000000..02cce77
--- /dev/null
+++ b/node_modules/now-and-later/lib/mapSeries.js
@@ -0,0 +1,63 @@
+'use strict';
+
+var once = require('once');
+
+var helpers = require('./helpers');
+
+function mapSeries(values, iterator, extensions, done) {
+ // Allow for extensions to not be specified
+ if (typeof extensions === 'function') {
+ done = extensions;
+ extensions = {};
+ }
+
+ // Handle no callback case
+ if (typeof done !== 'function') {
+ done = helpers.noop;
+ }
+
+ done = once(done);
+
+ // Will throw if non-object
+ var keys = Object.keys(values);
+ var length = keys.length;
+ var idx = 0;
+ // Return the same type as passed in
+ var results = helpers.initializeResults(values);
+
+ var exts = helpers.defaultExtensions(extensions);
+
+ if (length === 0) {
+ return done(null, results);
+ }
+
+ var key = keys[idx];
+ next(key);
+
+ function next(key) {
+ var value = values[key];
+
+ var storage = exts.create(value, key) || {};
+
+ exts.before(storage);
+ iterator(value, key, once(handler));
+
+ function handler(err, result) {
+ if (err) {
+ exts.error(err, storage);
+ return done(err, results);
+ }
+
+ exts.after(result, storage);
+ results[key] = result;
+
+ if (++idx >= length) {
+ done(err, results);
+ } else {
+ next(keys[idx]);
+ }
+ }
+ }
+}
+
+module.exports = mapSeries;