Demo for query storing
Change-Id: I947bcac841992c3f6cfd01ab337c265b0d01cb70
diff --git a/node_modules/css-select/index.d.ts b/node_modules/css-select/index.d.ts
new file mode 100644
index 0000000..81f1f39
--- /dev/null
+++ b/node_modules/css-select/index.d.ts
@@ -0,0 +1,219 @@
+export = CSSselect;
+
+/**
+ * Alias for CSSselect.selectAll(query, elems, options).
+ * @see [CSSselect.compile] for supported selector queries.
+ */
+declare function CSSselect<Node, ElementNode extends Node>(
+ query: CSSselect.Query,
+ elems: Array<ElementNode> | ElementNode,
+ options?: CSSselect.Options<Node, ElementNode>
+ ): Array<ElementNode>;
+
+declare namespace CSSselect {
+ type Predicate<Value> = (v: Value) => boolean;
+ interface Adapter<Node, ElementNode extends Node> {
+ /**
+ * is the node a tag?
+ */
+ isTag(node: Node): node is ElementNode;
+
+ /**
+ * Does at least one of passed element nodes pass the test predicate?
+ */
+ existsOne(test: Predicate<ElementNode>, elems: Array<ElementNode>): boolean;
+
+ /**
+ * get the attribute value.
+ */
+ getAttributeValue(elem: ElementNode, name: string): string;
+
+ /**
+ * get the node's children
+ */
+ getChildren(node: Node): Array<Node>;
+
+ /**
+ * get the name of the tag
+ */
+ getName(elem: ElementNode): string;
+
+ /**
+ * get the parent of the node
+ */
+ getParent(node: Node): Node;
+
+ /*
+ Get the siblings of the node. Note that unlike jQuery's `siblings` method,
+ this is expected to include the current node as well
+ */
+ getSiblings(node: Node): Array<Node>;
+
+ /*
+ * Get the text content of the node, and its children if it has any.
+ */
+ getText(node: Node): string;
+
+ /**
+ * Does the element have the named attribute?
+ */
+ hasAttrib(elem: ElementNode, name: string): boolean;
+
+ /**
+ * takes an array of nodes, and removes any duplicates, as well as any
+ * nodes whose ancestors are also in the array.
+ */
+ removeSubsets(nodes: Array<Node>): Array<Node>;
+
+ /**
+ * finds all of the element nodes in the array that match the test predicate,
+ * as well as any of their children that match it.
+ */
+ findAll(test: Predicate<ElementNode>, nodes: Array<Node>): Array<ElementNode>;
+
+ /**
+ * finds the first node in the array that matches the test predicate, or one
+ * of its children.
+ */
+ findOne(test: Predicate<ElementNode>, elems: Array<ElementNode>): ElementNode | undefined,
+
+ /**
+ The adapter can also optionally include an equals method, if your DOM
+ structure needs a custom equality test to compare two objects which refer
+ to the same underlying node. If not provided, `css-select` will fall back to
+ `a === b`.
+ */
+ equals?: (a: Node, b: Node) => boolean;
+
+ /**
+ * is the element in hovered state?
+ */
+ isHovered?: (elem: ElementNode) => boolean;
+
+ /**
+ * is the element in visited state?
+ */
+ isVisited?: (elem: ElementNode) => boolean;
+
+ /**
+ * is the element in active state?
+ */
+ isActive?: (elem: ElementNode) => boolean;
+ }
+
+ // TODO default types to the domutil/httpparser2 types
+ interface Options<Node, ElementNode extends Node> {
+ /**
+ * When enabled, tag names will be case-sensitive. Default: false.
+ */
+ xmlMode?: boolean;
+ /**
+ * Limits the module to only use CSS3 selectors. Default: false.
+ */
+ strict?: boolean;
+ /**
+ * The last function in the stack, will be called with the last element
+ * that's looked at. Should return true.
+ */
+ rootFunc?: (element: ElementNode) => true;
+ /**
+ * The adapter to use when interacting with the backing DOM structure. By
+ * default it uses domutils.
+ */
+ adapter?: Adapter<Node, ElementNode>;
+ }
+
+ type CompiledQuery = (node: any) => boolean;
+ type Query = string | CompiledQuery;
+
+ /**
+ * Compiles the query, returns a function.
+ *
+ * Supported simple selectors:
+ * * Universal (*)
+ * * Tag (<tagname>)
+ * * Attribute ([attr=foo]), with supported comparisons:
+ * * [attr] (existential)
+ * * =
+ * * ~=
+ * * |=
+ * * *=
+ * * ^=
+ * * $=
+ * * !=
+ * * Can be case insensitive (E.g. [attr=foo i])
+ * * Pseudos:
+ * * :not
+ * * :root
+ * * :empty
+ * * :[first|last]-child[-of-type]
+ * * :only-of-type, :only-child
+ * * :nth-[last-]child[-of-type]
+ * * :link, :visited (the latter doesn't match any elements)
+ * * :checked
+ * * :enabled, :disabled
+ * * :required, :optional
+ * * Nonstandard Pseudos (available when strict mode is not enabled):
+ * * `:contains`
+ * * `:icontains` (case-insensitive version of :contains)
+ * * `:has`
+ * * `:parent`
+ * * `:selected`
+ * * `:header, :button, :input, :text, :checkbox, :file, :password, :reset, :radio etc.
+ * * :matches
+ *
+ * Supported Combinators:
+ *
+ * * Descendant (` `)
+ * * Child (`>`)
+ * * Parent (`<`) (when strict mode is not enabled)
+ * * Sibling (`~`)
+ * * Adjacent (`+`)
+ */
+ function compile(query: string): CompiledQuery;
+ /**
+ * @template Node The generic Node type for the DOM adapter being used.
+ * @template ElementNode The Node type for elements for the DOM adapter being used.
+ * @param elems Elements to query. If it is an element, its children will be queried..
+ * @param query can be either a CSS selector string or a compiled query function.
+ * @param [options] options for querying the document.
+ * @see CSSselect.compile for supported selector queries.
+ * @returns All matching elements.
+ */
+ function selectAll<Node, ElementNode extends Node>(
+ query: Query,
+ elems: Array<ElementNode> | ElementNode,
+ options?: Options<Node, ElementNode>
+ ): Array<ElementNode>;
+ /**
+ * @template Node The generic Node type for the DOM adapter being used.
+ * @template ElementNode The Node type for elements for the DOM adapter being used.
+ * @param elems Elements to query. If it is an element, its children will be queried..
+ * @param query can be either a CSS selector string or a compiled query function.
+ * @param [options] options for querying the document.
+ * @see CSSselect.compile for supported selector queries.
+ * @returns the first match, or null if there was no match.
+ */
+ function selectOne<Node, ElementNode extends Node>(
+ query: Query,
+ elems: Array<ElementNode> | ElementNode,
+ options?: Options<Node, ElementNode>
+ ): ElementNode | null;
+
+ /**
+ * Tests whether or not an element is matched by query.
+ *
+ * @template Node The generic Node type for the DOM adapter being used.
+ * @template ElementNode The Node type for elements for the DOM adapter being used.
+ * @param elem The element to test if it matches the query.
+ * @param query can be either a CSS selector string or a compiled query function.
+ * @param [options] options for querying the document.
+ * @see CSSselect.compile for supported selector queries.
+ * @returns
+ */
+ function is<Node, ElementNode extends Node>(
+ elem: ElementNode,
+ query: Query,
+ options?: Options<Node, ElementNode>
+ ): boolean;
+}
\ No newline at end of file