Demo for query storing
Change-Id: I947bcac841992c3f6cfd01ab337c265b0d01cb70
diff --git a/node_modules/glob-stream/LICENSE b/node_modules/glob-stream/LICENSE
new file mode 100644
index 0000000..67fa13b
--- /dev/null
+++ b/node_modules/glob-stream/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2015-2017 Blaine Bublitz <blaine.bublitz@gmail.com>, Eric Schoffstall <yo@contra.io> and other contributors
+
+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/glob-stream/README.md b/node_modules/glob-stream/README.md
new file mode 100644
index 0000000..12c103e
--- /dev/null
+++ b/node_modules/glob-stream/README.md
@@ -0,0 +1,146 @@
+<p align="center">
+ <a href="http://gulpjs.com">
+ <img height="257" width="114" src="https://raw.githubusercontent.com/gulpjs/artwork/master/gulp-2x.png">
+ </a>
+</p>
+
+# glob-stream
+
+[![NPM version][npm-image]][npm-url] [![Downloads][downloads-image]][npm-url] [![Build Status][travis-image]][travis-url] [![AppVeyor Build Status][appveyor-image]][appveyor-url] [![Coveralls Status][coveralls-image]][coveralls-url] [![Gitter chat][gitter-image]][gitter-url]
+
+A [Readable Stream][readable-stream-url] interface over [node-glob][node-glob-url].
+
+## Usage
+
+```javascript
+var gs = require('glob-stream');
+
+var readable = gs('./files/**/*.coffee', { /* options */ });
+
+var writable = /* your WriteableStream */
+
+readable.pipe(writable);
+```
+
+You can pass any combination of glob strings. One caveat is that you cannot __only__ pass a negative glob, you must give it at least one positive glob so it knows where to start. If given a non-glob path (also referred to as a singular glob), only one file will be emitted. If given a singular glob and no files match, an error is emitted (see also [`options.allowEmpty`][allow-empty-url]).
+
+## API
+
+### `globStream(globs, options)`
+
+Takes a glob string or an array of glob strings as the first argument and an options object as the second. Returns a stream of objects that contain `cwd`, `base` and `path` properties.
+
+#### Options
+
+##### `options.allowEmpty`
+
+Whether or not to error upon an empty singular glob.
+
+Type: `Boolean`
+
+Default: `false` (error upon no match)
+
+##### `options.dot`
+
+Whether or not to treat dotfiles as regular files. This is passed through to [node-glob][node-glob-url].
+
+Type: `Boolean`
+
+Default: `false`
+
+##### `options.silent`
+
+Whether or not to suppress warnings on stderr from [node-glob][node-glob-url]. This is passed through to [node-glob][node-glob-url].
+
+Type: `Boolean`
+
+Default: `true`
+
+##### `options.cwd`
+
+The current working directory that the glob is resolved against.
+
+Type: `String`
+
+Default: `process.cwd()`
+
+##### `options.root`
+
+The root path that the glob is resolved against.
+
+__Note: This is never passed to [node-glob][node-glob-url] because it is pre-resolved against your paths.__
+
+Type: `String`
+
+Default: `undefined` (use the filesystem root)
+
+##### `options.base`
+
+The absolute segment of the glob path that isn't a glob. This value is attached to each glob object and is useful for relative pathing.
+
+Type: `String`
+
+Default: The absolute path segement before a glob starts (see [glob-parent][glob-parent-url])
+
+##### `options.cwdbase`
+
+Whether or not the `cwd` and `base` should be the same.
+
+Type: `Boolean`
+
+Default: `false`
+
+##### `options.uniqueBy`
+
+Filters stream to remove duplicates based on the string property name or the result of function. When using a function, the function receives the streamed data (objects containing `cwd`, `base`, `path` properties) to compare against.
+
+Type: `String` or `Function`
+
+Default: `'path'`
+
+##### other
+
+Any glob-related options are documented in [node-glob][node-glob-url]. Those options are forwarded verbatim, with the exception of `root` and `ignore`. `root` is pre-resolved and `ignore` is joined with all negative globs.
+
+#### Globbing & Negation
+
+```js
+var stream = gs(['./**/*.js', '!./node_modules/**/*']);
+```
+
+Globs are executed in order, so negations should follow positive globs. For example:
+
+The following would __not__ exclude any files:
+```js
+gs(['!b*.js', '*.js'])
+```
+
+However, this would exclude all files that started with `b`:
+```js
+gs(['*.js', '!b*.js'])
+```
+
+## License
+
+MIT
+
+[node-glob-url]: https://github.com/isaacs/node-glob
+[glob-parent-url]: https://github.com/es128/glob-parent
+[allow-empty-url]: #optionsallowempty
+[readable-stream-url]: https://nodejs.org/api/stream.html#stream_readable_streams
+
+[downloads-image]: http://img.shields.io/npm/dm/glob-stream.svg
+[npm-url]: https://www.npmjs.com/package/glob-stream
+[npm-image]: http://img.shields.io/npm/v/glob-stream.svg
+
+[travis-url]: https://travis-ci.org/gulpjs/glob-stream
+[travis-image]: http://img.shields.io/travis/gulpjs/glob-stream.svg?label=travis-ci
+
+[appveyor-url]: https://ci.appveyor.com/project/gulpjs/glob-stream
+[appveyor-image]: https://img.shields.io/appveyor/ci/gulpjs/glob-stream.svg?label=appveyor
+
+[coveralls-url]: https://coveralls.io/r/gulpjs/glob-stream
+[coveralls-image]: http://img.shields.io/coveralls/gulpjs/glob-stream.svg
+
+[gitter-url]: https://gitter.im/gulpjs/gulp
+[gitter-image]: https://badges.gitter.im/gulpjs/gulp.svg
diff --git a/node_modules/glob-stream/index.js b/node_modules/glob-stream/index.js
new file mode 100644
index 0000000..dd012f6
--- /dev/null
+++ b/node_modules/glob-stream/index.js
@@ -0,0 +1,94 @@
+'use strict';
+
+var Combine = require('ordered-read-streams');
+var unique = require('unique-stream');
+var pumpify = require('pumpify');
+var isNegatedGlob = require('is-negated-glob');
+var extend = require('extend');
+
+var GlobStream = require('./readable');
+
+function globStream(globs, opt) {
+ if (!opt) {
+ opt = {};
+ }
+
+ var ourOpt = extend({}, opt);
+ var ignore = ourOpt.ignore;
+
+ ourOpt.cwd = typeof ourOpt.cwd === 'string' ? ourOpt.cwd : process.cwd();
+ ourOpt.dot = typeof ourOpt.dot === 'boolean' ? ourOpt.dot : false;
+ ourOpt.silent = typeof ourOpt.silent === 'boolean' ? ourOpt.silent : true;
+ ourOpt.cwdbase = typeof ourOpt.cwdbase === 'boolean' ? ourOpt.cwdbase : false;
+ ourOpt.uniqueBy = typeof ourOpt.uniqueBy === 'string' ||
+ typeof ourOpt.uniqueBy === 'function' ? ourOpt.uniqueBy : 'path';
+
+ if (ourOpt.cwdbase) {
+ ourOpt.base = ourOpt.cwd;
+ }
+ // Normalize string `ignore` to array
+ if (typeof ignore === 'string') {
+ ignore = [ignore];
+ }
+ // Ensure `ignore` is an array
+ if (!Array.isArray(ignore)) {
+ ignore = [];
+ }
+
+ // Only one glob no need to aggregate
+ if (!Array.isArray(globs)) {
+ globs = [globs];
+ }
+
+ var positives = [];
+ var negatives = [];
+
+ globs.forEach(sortGlobs);
+
+ function sortGlobs(globString, index) {
+ if (typeof globString !== 'string') {
+ throw new Error('Invalid glob at index ' + index);
+ }
+
+ var glob = isNegatedGlob(globString);
+ var globArray = glob.negated ? negatives : positives;
+
+ globArray.push({
+ index: index,
+ glob: glob.pattern,
+ });
+ }
+
+ if (positives.length === 0) {
+ throw new Error('Missing positive glob');
+ }
+
+ // Create all individual streams
+ var streams = positives.map(streamFromPositive);
+
+ // Then just pipe them to a single unique stream and return it
+ var aggregate = new Combine(streams);
+ var uniqueStream = unique(ourOpt.uniqueBy);
+
+ return pumpify.obj(aggregate, uniqueStream);
+
+ function streamFromPositive(positive) {
+ var negativeGlobs = negatives
+ .filter(indexGreaterThan(positive.index))
+ .map(toGlob)
+ .concat(ignore);
+ return new GlobStream(positive.glob, negativeGlobs, ourOpt);
+ }
+}
+
+function indexGreaterThan(index) {
+ return function(obj) {
+ return obj.index > index;
+ };
+}
+
+function toGlob(obj) {
+ return obj.glob;
+}
+
+module.exports = globStream;
diff --git a/node_modules/glob-stream/package.json b/node_modules/glob-stream/package.json
new file mode 100644
index 0000000..13da4af
--- /dev/null
+++ b/node_modules/glob-stream/package.json
@@ -0,0 +1,101 @@
+{
+ "_from": "glob-stream@^6.1.0",
+ "_id": "glob-stream@6.1.0",
+ "_inBundle": false,
+ "_integrity": "sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ=",
+ "_location": "/glob-stream",
+ "_phantomChildren": {},
+ "_requested": {
+ "type": "range",
+ "registry": true,
+ "raw": "glob-stream@^6.1.0",
+ "name": "glob-stream",
+ "escapedName": "glob-stream",
+ "rawSpec": "^6.1.0",
+ "saveSpec": null,
+ "fetchSpec": "^6.1.0"
+ },
+ "_requiredBy": [
+ "/vinyl-fs"
+ ],
+ "_resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz",
+ "_shasum": "7045c99413b3eb94888d83ab46d0b404cc7bdde4",
+ "_spec": "glob-stream@^6.1.0",
+ "_where": "C:\\Users\\marcr\\Desktop\\KorAp\\Git\\Kalamar\\node_modules\\vinyl-fs",
+ "author": {
+ "name": "Gulp Team",
+ "email": "team@gulpjs.com",
+ "url": "http://gulpjs.com/"
+ },
+ "bugs": {
+ "url": "https://github.com/gulpjs/glob-stream/issues"
+ },
+ "bundleDependencies": false,
+ "contributors": [
+ {
+ "name": "Eric Schoffstall",
+ "email": "yo@contra.io"
+ },
+ {
+ "name": "Blaine Bublitz",
+ "email": "blaine.bublitz@gmail.com"
+ }
+ ],
+ "dependencies": {
+ "extend": "^3.0.0",
+ "glob": "^7.1.1",
+ "glob-parent": "^3.1.0",
+ "is-negated-glob": "^1.0.0",
+ "ordered-read-streams": "^1.0.0",
+ "pumpify": "^1.3.5",
+ "readable-stream": "^2.1.5",
+ "remove-trailing-separator": "^1.0.1",
+ "to-absolute-glob": "^2.0.0",
+ "unique-stream": "^2.0.2"
+ },
+ "deprecated": false,
+ "description": "A Readable Stream interface over node-glob.",
+ "devDependencies": {
+ "eslint": "^1.10.3",
+ "eslint-config-gulp": "^2.0.0",
+ "expect": "^1.19.0",
+ "istanbul": "^0.4.3",
+ "istanbul-coveralls": "^1.0.3",
+ "jscs": "^2.4.0",
+ "jscs-preset-gulp": "^1.0.0",
+ "mississippi": "^1.2.0",
+ "mocha": "^2.4.5"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ },
+ "files": [
+ "index.js",
+ "readable.js",
+ "LICENSE"
+ ],
+ "homepage": "https://github.com/gulpjs/glob-stream#readme",
+ "keywords": [
+ "glob",
+ "stream",
+ "gulp",
+ "readable",
+ "fs",
+ "files"
+ ],
+ "license": "MIT",
+ "main": "index.js",
+ "name": "glob-stream",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/gulpjs/glob-stream.git"
+ },
+ "scripts": {
+ "cover": "istanbul cover _mocha --report lcovonly",
+ "coveralls": "npm run cover && istanbul-coveralls",
+ "lint": "eslint . && jscs index.js readable.js test/",
+ "pretest": "npm run lint",
+ "test": "mocha --async-only"
+ },
+ "version": "6.1.0"
+}
diff --git a/node_modules/glob-stream/readable.js b/node_modules/glob-stream/readable.js
new file mode 100644
index 0000000..36cf7b6
--- /dev/null
+++ b/node_modules/glob-stream/readable.js
@@ -0,0 +1,117 @@
+'use strict';
+
+var inherits = require('util').inherits;
+
+var glob = require('glob');
+var extend = require('extend');
+var Readable = require('readable-stream').Readable;
+var globParent = require('glob-parent');
+var toAbsoluteGlob = require('to-absolute-glob');
+var removeTrailingSeparator = require('remove-trailing-separator');
+
+var globErrMessage1 = 'File not found with singular glob: ';
+var globErrMessage2 = ' (if this was purposeful, use `allowEmpty` option)';
+
+function getBasePath(ourGlob, opt) {
+ return globParent(toAbsoluteGlob(ourGlob, opt));
+}
+
+function globIsSingular(glob) {
+ var globSet = glob.minimatch.set;
+ if (globSet.length !== 1) {
+ return false;
+ }
+
+ return globSet[0].every(function isString(value) {
+ return typeof value === 'string';
+ });
+}
+
+function GlobStream(ourGlob, negatives, opt) {
+ if (!(this instanceof GlobStream)) {
+ return new GlobStream(ourGlob, negatives, opt);
+ }
+
+ var ourOpt = extend({}, opt);
+
+ Readable.call(this, {
+ objectMode: true,
+ highWaterMark: ourOpt.highWaterMark || 16,
+ });
+
+ // Delete `highWaterMark` after inheriting from Readable
+ delete ourOpt.highWaterMark;
+
+ var self = this;
+
+ function resolveNegatives(negative) {
+ return toAbsoluteGlob(negative, ourOpt);
+ }
+
+ var ourNegatives = negatives.map(resolveNegatives);
+ ourOpt.ignore = ourNegatives;
+
+ var cwd = ourOpt.cwd;
+ var allowEmpty = ourOpt.allowEmpty || false;
+
+ // Extract base path from glob
+ var basePath = ourOpt.base || getBasePath(ourGlob, ourOpt);
+
+ // Remove path relativity to make globs make sense
+ ourGlob = toAbsoluteGlob(ourGlob, ourOpt);
+ // Delete `root` after all resolving done
+ delete ourOpt.root;
+
+ var globber = new glob.Glob(ourGlob, ourOpt);
+ this._globber = globber;
+
+ var found = false;
+
+ globber.on('match', function(filepath) {
+ found = true;
+ var obj = {
+ cwd: cwd,
+ base: basePath,
+ path: removeTrailingSeparator(filepath),
+ };
+ if (!self.push(obj)) {
+ globber.pause();
+ }
+ });
+
+ globber.once('end', function() {
+ if (allowEmpty !== true && !found && globIsSingular(globber)) {
+ var err = new Error(globErrMessage1 + ourGlob + globErrMessage2);
+
+ return self.destroy(err);
+ }
+
+ self.push(null);
+ });
+
+ function onError(err) {
+ self.destroy(err);
+ }
+
+ globber.once('error', onError);
+}
+inherits(GlobStream, Readable);
+
+GlobStream.prototype._read = function() {
+ this._globber.resume();
+};
+
+GlobStream.prototype.destroy = function(err) {
+ var self = this;
+
+ this._globber.abort();
+
+ process.nextTick(function() {
+ if (err) {
+ self.emit('error', err);
+ }
+ self.emit('close');
+ });
+};
+
+module.exports = GlobStream;