Demo for query storing

Change-Id: I947bcac841992c3f6cfd01ab337c265b0d01cb70
diff --git a/node_modules/squeak/index.js b/node_modules/squeak/index.js
new file mode 100644
index 0000000..e83ee03
--- /dev/null
+++ b/node_modules/squeak/index.js
@@ -0,0 +1,147 @@
+'use strict';
+var EventEmitter = require('events').EventEmitter;
+var fmt = require('util').format;
+var inherits = require('util').inherits;
+var chalk = require('chalk');
+var consoleStream = require('console-stream');
+var lpadAlign = require('lpad-align');
+
+/**
+ * Initialize a new `Squeak`
+ *
+ * @param {Object} opts
+ * @api public
+ */
+
+function Squeak(opts) {
+	if (!(this instanceof Squeak)) {
+		return new Squeak(opts);
+	}
+
+	EventEmitter.call(this);
+
+	this.opts = opts || {};
+	this.align = this.opts.align !== false;
+	this.indent = this.opts.indent || 2;
+	this.separator = this.opts.separator || ' : ';
+	this.stream = this.opts.stream || process.stderr || consoleStream();
+	this.types = [];
+}
+
+inherits(Squeak, EventEmitter);
+module.exports = Squeak;
+
+/**
+ * Write args to stream
+ *
+ * @api public
+ */
+
+Squeak.prototype.write = function () {
+	this.log([].slice.call(arguments));
+	return this;
+};
+
+/**
+ * Write args and new line to stream
+ *
+ * @api public
+ */
+
+Squeak.prototype.writeln = function () {
+	this.log([].slice.call(arguments));
+	this.stream.write('\n');
+	return this;
+};
+
+/**
+ * Pad and write args to stream
+ *
+ * @api public
+ */
+
+Squeak.prototype.writelpad = function () {
+	var args = [].slice.call(arguments);
+	var pad = new Array(this.indent + 1).join(' ');
+
+	if (args.length) {
+		args[0] = pad + args[0];
+	}
+
+	this.log(args);
+	return this;
+};
+
+/**
+ * Add type
+ *
+ * @param {String} type
+ * @param {Object} opts
+ * @param {Function} cb
+ * @api public
+ */
+
+Squeak.prototype.type = function (type, opts, cb) {
+	if (!cb && typeof opts === 'function') {
+		cb = opts;
+		opts = {};
+	}
+
+	opts = opts || {};
+	opts.color = opts.color || 'reset';
+	opts.prefix = opts.prefix || type;
+
+	this.types.push(opts.prefix);
+	this[type] = function () {
+		this.log([].slice.call(arguments), opts);
+
+		if (cb) {
+			cb();
+		}
+	};
+
+	return this;
+};
+
+/**
+ * End
+ *
+ * @param {Function} cb
+ * @api public
+ */
+
+Squeak.prototype.end = function (cb) {
+	this.stream.write('\n');
+
+	if (cb) {
+		cb();
+	}
+
+	return this;
+};
+
+/**
+ * Log
+ *
+ * @param {Array} args
+ * @param {Object} opts
+ * @api private
+ */
+
+Squeak.prototype.log = function (args, opts) {
+	opts = opts || {};
+
+	var msg = [fmt.apply(null, args)];
+	var color = opts.color;
+	var prefix = opts.prefix;
+
+	if (prefix) {
+		var arr = this.align ? this.types : [prefix];
+		msg.unshift(chalk[color](lpadAlign(prefix, arr, this.indent)));
+	}
+
+	this.stream.write(msg.join(this.separator));
+	this.stream.write('\n');
+
+	return this;
+};