Demo for query storing

Change-Id: I947bcac841992c3f6cfd01ab337c265b0d01cb70
diff --git a/node_modules/rechoir/index.js b/node_modules/rechoir/index.js
new file mode 100644
index 0000000..0c36d05
--- /dev/null
+++ b/node_modules/rechoir/index.js
@@ -0,0 +1,59 @@
+const path = require('path');
+
+const extension = require('./lib/extension');
+const normalize = require('./lib/normalize');
+const register = require('./lib/register');
+
+exports.prepare = function (extensions, filepath, cwd, nothrow) {
+  var option, attempt;
+  var attempts = [];
+  var err;
+  var onlyErrors = false;
+  var ext = extension(filepath);
+  if (Object.keys(require.extensions).indexOf(ext) !== -1) {
+    return true;
+  }
+  var config = normalize(extensions[ext]);
+  if (!config) {
+    if (nothrow) {
+      return;
+    } else {
+      throw new Error('No module loader found for "'+ext+'".');
+    }
+  }
+  if (!cwd) {
+    cwd = path.dirname(path.resolve(filepath));
+  }
+  if (!Array.isArray(config)) {
+    config = [config];
+  }
+  for (var i in config) {
+    option = config[i];
+    attempt = register(cwd, option.module, option.register);
+    error = (attempt instanceof Error) ? attempt : null;
+    if (error) {
+      attempt = null;
+    }
+    attempts.push({
+      moduleName: option.module,
+      module: attempt,
+      error: error
+    });
+    if (!error) {
+      onlyErrors = false;
+      break;
+    } else {
+      onlyErrors = true;
+    }
+  }
+  if (onlyErrors) {
+    err = new Error('Unable to use specified module loaders for "'+ext+'".');
+    err.failures = attempts;
+    if (nothrow) {
+      return err;
+    } else {
+      throw err;
+    }
+  }
+  return attempts;
+};