Demo for query storing
Change-Id: I947bcac841992c3f6cfd01ab337c265b0d01cb70
diff --git a/node_modules/dateformat/LICENSE b/node_modules/dateformat/LICENSE
new file mode 100644
index 0000000..57d44e2
--- /dev/null
+++ b/node_modules/dateformat/LICENSE
@@ -0,0 +1,20 @@
+(c) 2007-2009 Steven Levithan <stevenlevithan.com>
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/node_modules/dateformat/Readme.md b/node_modules/dateformat/Readme.md
new file mode 100644
index 0000000..7dcdbed
--- /dev/null
+++ b/node_modules/dateformat/Readme.md
@@ -0,0 +1,162 @@
+# dateformat
+
+A node.js package for Steven Levithan's excellent [dateFormat()][dateformat] function.
+
+[](https://travis-ci.org/felixge/node-dateformat)
+
+## Modifications
+
+* Removed the `Date.prototype.format` method. Sorry folks, but extending native prototypes is for suckers.
+* Added a `module.exports = dateFormat;` statement at the bottom
+* Added the placeholder `N` to get the ISO 8601 numeric representation of the day of the week
+
+## Installation
+
+```bash
+$ npm install dateformat
+$ dateformat --help
+```
+
+## Usage
+
+As taken from Steven's post, modified to match the Modifications listed above:
+```js
+var dateFormat = require('dateformat');
+var now = new Date();
+
+// Basic usage
+dateFormat(now, "dddd, mmmm dS, yyyy, h:MM:ss TT");
+// Saturday, June 9th, 2007, 5:46:21 PM
+
+// You can use one of several named masks
+dateFormat(now, "isoDateTime");
+// 2007-06-09T17:46:21
+
+// ...Or add your own
+dateFormat.masks.hammerTime = 'HH:MM! "Can\'t touch this!"';
+dateFormat(now, "hammerTime");
+// 17:46! Can't touch this!
+
+// You can also provide the date as a string
+dateFormat("Jun 9 2007", "fullDate");
+// Saturday, June 9, 2007
+
+// Note that if you don't include the mask argument,
+// dateFormat.masks.default is used
+dateFormat(now);
+// Sat Jun 09 2007 17:46:21
+
+// And if you don't include the date argument,
+// the current date and time is used
+dateFormat();
+// Sat Jun 09 2007 17:46:22
+
+// You can also skip the date argument (as long as your mask doesn't
+// contain any numbers), in which case the current date/time is used
+dateFormat("longTime");
+// 5:46:22 PM EST
+
+// And finally, you can convert local time to UTC time. Simply pass in
+// true as an additional argument (no argument skipping allowed in this case):
+dateFormat(now, "longTime", true);
+// 10:46:21 PM UTC
+
+// ...Or add the prefix "UTC:" or "GMT:" to your mask.
+dateFormat(now, "UTC:h:MM:ss TT Z");
+// 10:46:21 PM UTC
+
+// You can also get the ISO 8601 week of the year:
+dateFormat(now, "W");
+// 42
+
+// and also get the ISO 8601 numeric representation of the day of the week:
+dateFormat(now,"N");
+// 6
+```
+
+### Mask options
+
+Mask | Description
+---- | -----------
+`d` | Day of the month as digits; no leading zero for single-digit days.
+`dd` | Day of the month as digits; leading zero for single-digit days.
+`ddd` | Day of the week as a three-letter abbreviation.
+`dddd` | Day of the week as its full name.
+`m` | Month as digits; no leading zero for single-digit months.
+`mm` | Month as digits; leading zero for single-digit months.
+`mmm` | Month as a three-letter abbreviation.
+`mmmm` | Month as its full name.
+`yy` | Year as last two digits; leading zero for years less than 10.
+`yyyy` | Year represented by four digits.
+`h` | Hours; no leading zero for single-digit hours (12-hour clock).
+`hh` | Hours; leading zero for single-digit hours (12-hour clock).
+`H` | Hours; no leading zero for single-digit hours (24-hour clock).
+`HH` | Hours; leading zero for single-digit hours (24-hour clock).
+`M` | Minutes; no leading zero for single-digit minutes.
+`MM` | Minutes; leading zero for single-digit minutes.
+`N` | ISO 8601 numeric representation of the day of the week.
+`o` | GMT/UTC timezone offset, e.g. -0500 or +0230.
+`s` | Seconds; no leading zero for single-digit seconds.
+`ss` | Seconds; leading zero for single-digit seconds.
+`S` | The date's ordinal suffix (st, nd, rd, or th). Works well with `d`.
+`l` | Milliseconds; gives 3 digits.
+`L` | Milliseconds; gives 2 digits.
+`t` | Lowercase, single-character time marker string: a or p.
+`tt` | Lowercase, two-character time marker string: am or pm.
+`T` | Uppercase, single-character time marker string: A or P.
+`TT` | Uppercase, two-character time marker string: AM or PM.
+`W` | ISO 8601 week number of the year, e.g. 42
+`Z` | US timezone abbreviation, e.g. EST or MDT. With non-US timezones or in the
+`'...'`, `"..."` | Literal character sequence. Surrounding quotes are removed.
+`UTC:` | Must be the first four characters of the mask. Converts the date from local time to UTC/GMT/Zulu time before applying the mask. The "UTC:" prefix is removed.
+
+### Named Formats
+
+Name | Mask | Example
+---- | ---- | -------
+`default` | `ddd mmm dd yyyy HH:MM:ss` | Sat Jun 09 2007 17:46:21
+`shortDate` | `m/d/yy` | 6/9/07
+`mediumDate` | `mmm d, yyyy` | Jun 9, 2007
+`longDate` | `mmmm d, yyyy` | June 9, 2007
+`fullDate` | `dddd, mmmm d, yyyy` | Saturday, June 9, 2007
+`shortTime` | `h:MM TT` | 5:46 PM
+`mediumTime` | `h:MM:ss TT` | 5:46:21 PM
+`longTime` | `h:MM:ss TT Z` | 5:46:21 PM EST
+`isoDate` | `yyyy-mm-dd` | 2007-06-09
+`isoTime` | `HH:MM:ss` | 17:46:21
+`isoDateTime` | `yyyy-mm-dd'T'HH:MM:ss` | 2007-06-09T17:46:21
+`isoUtcDateTime` | `UTC:yyyy-mm-dd'T'HH:MM:ss'Z'` | 2007-06-09T22:46:21Z
+
+### Localization
+Day names, month names and the AM/PM indicators can be localized by
+passing an object with the necessary strings. For example:
+```js
+var dateFormat = require('dateformat');
+dateFormat.i18n = {
+ dayNames: [
+ 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat',
+ 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'
+ ],
+ monthNames: [
+ 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec',
+ 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'
+ ],
+ timeNames: [
+ 'a', 'p', 'am', 'pm', 'A', 'P', 'AM', 'PM'
+ ]
+};
+```
+> Notice that only one language is supported at a time and all strings
+> *must* be present in the new value.
+
+### Breaking change in 2.1.0
+- 2.1.0 was published with a breaking change, for those using localized strings.
+- 2.2.0 has been published without the change, to keep packages refering to ^2.0.0 to continue working. This is now branch v2_2.
+- 3.0.* contains the localized AM/PM change.
+
+## License
+
+(c) 2007-2009 Steven Levithan [stevenlevithan.com][stevenlevithan], MIT license.
+
+[dateformat]: http://blog.stevenlevithan.com/archives/date-time-format
+[stevenlevithan]: http://stevenlevithan.com/
diff --git a/node_modules/dateformat/lib/dateformat.js b/node_modules/dateformat/lib/dateformat.js
new file mode 100644
index 0000000..95ed91b
--- /dev/null
+++ b/node_modules/dateformat/lib/dateformat.js
@@ -0,0 +1,229 @@
+/*
+ * Date Format 1.2.3
+ * (c) 2007-2009 Steven Levithan <stevenlevithan.com>
+ * MIT license
+ *
+ * Includes enhancements by Scott Trenda <scott.trenda.net>
+ * and Kris Kowal <cixar.com/~kris.kowal/>
+ *
+ * Accepts a date, a mask, or a date and a mask.
+ * Returns a formatted version of the given date.
+ * The date defaults to the current date/time.
+ * The mask defaults to dateFormat.masks.default.
+ */
+
+(function(global) {
+ 'use strict';
+
+ var dateFormat = (function() {
+ var token = /d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZWN]|"[^"]*"|'[^']*'/g;
+ var timezone = /\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g;
+ var timezoneClip = /[^-+\dA-Z]/g;
+
+ // Regexes and supporting functions are cached through closure
+ return function (date, mask, utc, gmt) {
+
+ // You can't provide utc if you skip other args (use the 'UTC:' mask prefix)
+ if (arguments.length === 1 && kindOf(date) === 'string' && !/\d/.test(date)) {
+ mask = date;
+ date = undefined;
+ }
+
+ date = date || new Date;
+
+ if(!(date instanceof Date)) {
+ date = new Date(date);
+ }
+
+ if (isNaN(date)) {
+ throw TypeError('Invalid date');
+ }
+
+ mask = String(dateFormat.masks[mask] || mask || dateFormat.masks['default']);
+
+ // Allow setting the utc/gmt argument via the mask
+ var maskSlice = mask.slice(0, 4);
+ if (maskSlice === 'UTC:' || maskSlice === 'GMT:') {
+ mask = mask.slice(4);
+ utc = true;
+ if (maskSlice === 'GMT:') {
+ gmt = true;
+ }
+ }
+
+ var _ = utc ? 'getUTC' : 'get';
+ var d = date[_ + 'Date']();
+ var D = date[_ + 'Day']();
+ var m = date[_ + 'Month']();
+ var y = date[_ + 'FullYear']();
+ var H = date[_ + 'Hours']();
+ var M = date[_ + 'Minutes']();
+ var s = date[_ + 'Seconds']();
+ var L = date[_ + 'Milliseconds']();
+ var o = utc ? 0 : date.getTimezoneOffset();
+ var W = getWeek(date);
+ var N = getDayOfWeek(date);
+ var flags = {
+ d: d,
+ dd: pad(d),
+ ddd: dateFormat.i18n.dayNames[D],
+ dddd: dateFormat.i18n.dayNames[D + 7],
+ m: m + 1,
+ mm: pad(m + 1),
+ mmm: dateFormat.i18n.monthNames[m],
+ mmmm: dateFormat.i18n.monthNames[m + 12],
+ yy: String(y).slice(2),
+ yyyy: y,
+ h: H % 12 || 12,
+ hh: pad(H % 12 || 12),
+ H: H,
+ HH: pad(H),
+ M: M,
+ MM: pad(M),
+ s: s,
+ ss: pad(s),
+ l: pad(L, 3),
+ L: pad(Math.round(L / 10)),
+ t: H < 12 ? dateFormat.i18n.timeNames[0] : dateFormat.i18n.timeNames[1],
+ tt: H < 12 ? dateFormat.i18n.timeNames[2] : dateFormat.i18n.timeNames[3],
+ T: H < 12 ? dateFormat.i18n.timeNames[4] : dateFormat.i18n.timeNames[5],
+ TT: H < 12 ? dateFormat.i18n.timeNames[6] : dateFormat.i18n.timeNames[7],
+ Z: gmt ? 'GMT' : utc ? 'UTC' : (String(date).match(timezone) || ['']).pop().replace(timezoneClip, ''),
+ o: (o > 0 ? '-' : '+') + pad(Math.floor(Math.abs(o) / 60) * 100 + Math.abs(o) % 60, 4),
+ S: ['th', 'st', 'nd', 'rd'][d % 10 > 3 ? 0 : (d % 100 - d % 10 != 10) * d % 10],
+ W: W,
+ N: N
+ };
+
+ return mask.replace(token, function (match) {
+ if (match in flags) {
+ return flags[match];
+ }
+ return match.slice(1, match.length - 1);
+ });
+ };
+ })();
+
+ dateFormat.masks = {
+ 'default': 'ddd mmm dd yyyy HH:MM:ss',
+ 'shortDate': 'm/d/yy',
+ 'mediumDate': 'mmm d, yyyy',
+ 'longDate': 'mmmm d, yyyy',
+ 'fullDate': 'dddd, mmmm d, yyyy',
+ 'shortTime': 'h:MM TT',
+ 'mediumTime': 'h:MM:ss TT',
+ 'longTime': 'h:MM:ss TT Z',
+ 'isoDate': 'yyyy-mm-dd',
+ 'isoTime': 'HH:MM:ss',
+ 'isoDateTime': 'yyyy-mm-dd\'T\'HH:MM:sso',
+ 'isoUtcDateTime': 'UTC:yyyy-mm-dd\'T\'HH:MM:ss\'Z\'',
+ 'expiresHeaderFormat': 'ddd, dd mmm yyyy HH:MM:ss Z'
+ };
+
+ // Internationalization strings
+ dateFormat.i18n = {
+ dayNames: [
+ 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat',
+ 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'
+ ],
+ monthNames: [
+ 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec',
+ 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'
+ ],
+ timeNames: [
+ 'a', 'p', 'am', 'pm', 'A', 'P', 'AM', 'PM'
+ ]
+ };
+
+function pad(val, len) {
+ val = String(val);
+ len = len || 2;
+ while (val.length < len) {
+ val = '0' + val;
+ }
+ return val;
+}
+
+/**
+ * Get the ISO 8601 week number
+ * Based on comments from
+ * http://techblog.procurios.nl/k/n618/news/view/33796/14863/Calculate-ISO-8601-week-and-year-in-javascript.html
+ *
+ * @param {Object} `date`
+ * @return {Number}
+ */
+function getWeek(date) {
+ // Remove time components of date
+ var targetThursday = new Date(date.getFullYear(), date.getMonth(), date.getDate());
+
+ // Change date to Thursday same week
+ targetThursday.setDate(targetThursday.getDate() - ((targetThursday.getDay() + 6) % 7) + 3);
+
+ // Take January 4th as it is always in week 1 (see ISO 8601)
+ var firstThursday = new Date(targetThursday.getFullYear(), 0, 4);
+
+ // Change date to Thursday same week
+ firstThursday.setDate(firstThursday.getDate() - ((firstThursday.getDay() + 6) % 7) + 3);
+
+ // Check if daylight-saving-time-switch occurred and correct for it
+ var ds = targetThursday.getTimezoneOffset() - firstThursday.getTimezoneOffset();
+ targetThursday.setHours(targetThursday.getHours() - ds);
+
+ // Number of weeks between target Thursday and first Thursday
+ var weekDiff = (targetThursday - firstThursday) / (86400000*7);
+ return 1 + Math.floor(weekDiff);
+}
+
+/**
+ * Get ISO-8601 numeric representation of the day of the week
+ * 1 (for Monday) through 7 (for Sunday)
+ *
+ * @param {Object} `date`
+ * @return {Number}
+ */
+function getDayOfWeek(date) {
+ var dow = date.getDay();
+ if(dow === 0) {
+ dow = 7;
+ }
+ return dow;
+}
+
+/**
+ * kind-of shortcut
+ * @param {*} val
+ * @return {String}
+ */
+function kindOf(val) {
+ if (val === null) {
+ return 'null';
+ }
+
+ if (val === undefined) {
+ return 'undefined';
+ }
+
+ if (typeof val !== 'object') {
+ return typeof val;
+ }
+
+ if (Array.isArray(val)) {
+ return 'array';
+ }
+
+ return {}.toString.call(val)
+ .slice(8, -1).toLowerCase();
+};
+
+
+
+ if (typeof define === 'function' && define.amd) {
+ define(function () {
+ return dateFormat;
+ });
+ } else if (typeof exports === 'object') {
+ module.exports = dateFormat;
+ } else {
+ global.dateFormat = dateFormat;
+ }
+})(this);
diff --git a/node_modules/dateformat/package.json b/node_modules/dateformat/package.json
new file mode 100644
index 0000000..d42cef6
--- /dev/null
+++ b/node_modules/dateformat/package.json
@@ -0,0 +1,71 @@
+{
+ "_from": "dateformat@~3.0.3",
+ "_id": "dateformat@3.0.3",
+ "_inBundle": false,
+ "_integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==",
+ "_location": "/dateformat",
+ "_phantomChildren": {},
+ "_requested": {
+ "type": "range",
+ "registry": true,
+ "raw": "dateformat@~3.0.3",
+ "name": "dateformat",
+ "escapedName": "dateformat",
+ "rawSpec": "~3.0.3",
+ "saveSpec": null,
+ "fetchSpec": "~3.0.3"
+ },
+ "_requiredBy": [
+ "/grunt"
+ ],
+ "_resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz",
+ "_shasum": "a6e37499a4d9a9cf85ef5872044d62901c9889ae",
+ "_spec": "dateformat@~3.0.3",
+ "_where": "C:\\Users\\marcr\\Desktop\\KorAp\\Git\\Kalamar\\node_modules\\grunt",
+ "author": {
+ "name": "Steven Levithan"
+ },
+ "bugs": {
+ "url": "https://github.com/felixge/node-dateformat/issues"
+ },
+ "bundleDependencies": false,
+ "contributors": [
+ {
+ "name": "Steven Levithan"
+ },
+ {
+ "name": "Felix Geisendörfer",
+ "email": "felix@debuggable.com"
+ },
+ {
+ "name": "Christoph Tavan",
+ "email": "dev@tavan.de"
+ },
+ {
+ "name": "Jon Schlinkert",
+ "url": "https://github.com/jonschlinkert"
+ }
+ ],
+ "deprecated": false,
+ "description": "A node.js package for Steven Levithan's excellent dateFormat() function.",
+ "devDependencies": {
+ "mocha": "2.0.1",
+ "underscore": "1.7.0"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "homepage": "https://github.com/felixge/node-dateformat",
+ "license": "MIT",
+ "main": "lib/dateformat",
+ "maintainers": "Felix Geisendörfer <felix@debuggable.com>",
+ "name": "dateformat",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/felixge/node-dateformat.git"
+ },
+ "scripts": {
+ "test": "mocha"
+ },
+ "version": "3.0.3"
+}