Demo for query storing
Change-Id: I947bcac841992c3f6cfd01ab337c265b0d01cb70
diff --git a/node_modules/css-what/lib/stringify.js b/node_modules/css-what/lib/stringify.js
new file mode 100644
index 0000000..b496ff1
--- /dev/null
+++ b/node_modules/css-what/lib/stringify.js
@@ -0,0 +1,83 @@
+"use strict";
+var __spreadArrays = (this && this.__spreadArrays) || function () {
+ for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
+ for (var r = Array(s), k = 0, i = 0; i < il; i++)
+ for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
+ r[k] = a[j];
+ return r;
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+var actionTypes = {
+ equals: "",
+ element: "~",
+ start: "^",
+ end: "$",
+ any: "*",
+ not: "!",
+ hyphen: "|",
+};
+var charsToEscape = new Set(__spreadArrays(Object.keys(actionTypes)
+ .map(function (typeKey) { return actionTypes[typeKey]; })
+ .filter(Boolean), [
+ ":",
+ "[",
+ "]",
+ " ",
+ "\\",
+]));
+function stringify(token) {
+ return token.map(stringifySubselector).join(", ");
+}
+exports.default = stringify;
+function stringifySubselector(token) {
+ return token.map(stringifyToken).join("");
+}
+function stringifyToken(token) {
+ switch (token.type) {
+ // Simple types
+ case "child":
+ return " > ";
+ case "parent":
+ return " < ";
+ case "sibling":
+ return " ~ ";
+ case "adjacent":
+ return " + ";
+ case "descendant":
+ return " ";
+ case "universal":
+ return "*";
+ case "tag":
+ return escapeName(token.name);
+ case "pseudo-element":
+ return "::" + escapeName(token.name);
+ case "pseudo":
+ if (token.data === null)
+ return ":" + escapeName(token.name);
+ if (typeof token.data === "string") {
+ return ":" + escapeName(token.name) + "(" + token.data + ")";
+ }
+ return ":" + escapeName(token.name) + "(" + stringify(token.data) + ")";
+ case "attribute":
+ if (token.action === "exists") {
+ return "[" + escapeName(token.name) + "]";
+ }
+ if (token.name === "id" &&
+ token.action === "equals" &&
+ !token.ignoreCase) {
+ return "#" + escapeName(token.value);
+ }
+ if (token.name === "class" &&
+ token.action === "element" &&
+ !token.ignoreCase) {
+ return "." + escapeName(token.value);
+ }
+ return "[" + escapeName(token.name) + actionTypes[token.action] + "='" + escapeName(token.value) + "'" + (token.ignoreCase ? "i" : "") + "]";
+ }
+}
+function escapeName(str) {
+ return str
+ .split("")
+ .map(function (c) { return (charsToEscape.has(c) ? "\\" + c : c); })
+ .join("");
+}