Demo for query storing

Change-Id: I947bcac841992c3f6cfd01ab337c265b0d01cb70
diff --git a/node_modules/mdn-data/css/properties.schema.json b/node_modules/mdn-data/css/properties.schema.json
new file mode 100644
index 0000000..3367625
--- /dev/null
+++ b/node_modules/mdn-data/css/properties.schema.json
@@ -0,0 +1,394 @@
+{
+  "definitions": {
+    "propertyList": {
+      "type": "array",
+      "minItems": 1,
+      "uniqueItems": true,
+      "items": {
+        "type": "string",
+        "property-reference": {
+          "comment": "property-reference is an extension to the JSON schema validator. Here it jumps to the root level of the hierarchy and tests if a value is an existing key there (i.e a defined property). See test/validate-schema.js for implementation details.",
+          "$data": "/"
+        }
+      }
+    },
+    "animationType": {
+      "enum": [
+        "angleBasicShapeOrPath",
+        "angleOrBasicShapeOrPath",
+        "basicShapeOtherwiseNo",
+        "byComputedValueType",
+        "color",
+        "discrete",
+        "eachOfShorthandPropertiesExceptUnicodeBiDiAndDirection",
+        "filterList",
+        "fontStretch",
+        "fontWeight",
+        "integer",
+        "length",
+        "lpc",
+        "numberOrLength",
+        "number",
+        "position",
+        "rectangle",
+        "repeatableListOfSimpleListOfLpc",
+        "shadowList",
+        "simpleListOfLpc",
+        "simpleListOfLpcDifferenceLpc",
+        "transform",
+        "visibility"
+      ]
+    },
+    "percentages": {
+      "enum": [
+        "blockSizeOfContainingBlock",
+        "dependsOnLayoutModel",
+        "inlineSizeOfContainingBlock",
+        "lengthsAsPercentages",
+        "logicalHeightOfContainingBlock",
+        "logicalWidthOfContainingBlock",
+        "maxZoomFactor",
+        "minZoomFactor",
+        "no",
+        "referToBorderBox",
+        "referToContainingBlockHeight",
+        "referToDimensionOfBorderBox",
+        "referToDimensionOfContentArea",
+        "referToElementFontSize",
+        "referToFlexContainersInnerMainSize",
+        "referToHeightOfBackgroundPositioningAreaMinusBackgroundImageHeight",
+        "referToLineBoxWidth",
+        "referToLineHeight",
+        "referToParentElementsFontSize",
+        "referToSizeOfBackgroundPositioningAreaMinusBackgroundImageSize",
+        "referToSizeOfBorderImage",
+        "referToSizeOfBoundingBox",
+        "referToSizeOfContainingBlock",
+        "referToSizeOfElement",
+        "referToSizeOfFont",
+        "referToSizeOfMaskBorderImage",
+        "referToSizeOfMaskPaintingArea",
+        "referToTotalPathLength",
+        "referToWidthAndHeightOfElement",
+        "referToWidthOfAffectedGlyph",
+        "referToWidthOfBackgroundPositioningAreaMinusBackgroundImageHeight",
+        "referToWidthOfContainingBlock",
+        "referToWidthOrHeightOfBorderImageArea",
+        "referToReferenceBoxWhenSpecifiedOtherwiseBorderBox",
+        "regardingHeightOfGeneratedBoxContainingBlockPercentages0",
+        "regardingHeightOfGeneratedBoxContainingBlockPercentagesNone",
+        "regardingHeightOfGeneratedBoxContainingBlockPercentagesRelativeToContainingBlock",
+        "relativeToBackgroundPositioningArea",
+        "relativeToMaskBorderImageArea",
+        "relativeToScrollContainerPaddingBoxAxis",
+        "relativeToTheScrollContainersScrollport",
+        "relativeToWidthAndHeight"
+      ]
+    },
+    "computed": {
+      "enum": [
+        "absoluteLength",
+        "absoluteLength0ForNone",
+        "absoluteLength0IfColumnRuleStyleNoneOrHidden",
+        "absoluteLengthOr0IfBorderBottomStyleNoneOrHidden",
+        "absoluteLengthOr0IfBorderLeftStyleNoneOrHidden",
+        "absoluteLengthOr0IfBorderRightStyleNoneOrHidden",
+        "absoluteLengthOr0IfBorderTopStyleNoneOrHidden",
+        "absoluteLengthOrAsSpecified",
+        "absoluteLengthOrKeyword",
+        "absoluteLengthOrNone",
+        "absoluteLengthOrNormal",
+        "absoluteLengthOrPercentage",
+        "absoluteLengthsSpecifiedColorAsSpecified",
+        "absoluteLengthZeroIfBorderStyleNoneOrHidden",
+        "absoluteLengthZeroOrLarger",
+        "absoluteURIOrNone",
+        "angleRoundedToNextQuarter",
+        "asAutoOrColor",
+        "asDefinedForBasicShapeWithAbsoluteURIOtherwiseAsSpecified",
+        "asLength",
+        "asSpecified",
+        "asSpecifiedAppliesToEachProperty",
+        "asSpecifiedExceptMatchParent",
+        "asSpecifiedExceptPositionedFloatingAndRootElementsKeywordMaybeDifferent",
+        "asSpecifiedRelativeToAbsoluteLengths",
+        "asSpecifiedURLsAbsolute",
+        "asSpecifiedWithExceptionOfResolution",
+        "asSpecifiedWithLengthsAbsoluteAndNormalComputingToZeroExceptMultiColumn",
+        "asSpecifiedWithVarsSubstituted",
+        "autoOnAbsolutelyPositionedElementsValueOfAlignItemsOnParent",
+        "autoOrRectangle",
+        "colorPlusThreeAbsoluteLengths",
+        "computedColor",
+        "consistsOfTwoDimensionKeywords",
+        "consistsOfTwoKeywordsForOriginAndOffsets",
+        "forLengthAbsoluteValueOtherwisePercentage",
+        "invertForTranslucentColorRGBAOtherwiseRGB",
+        "keywordOrNumericalValueBolderLighterTransformedToRealValue",
+        "keywordPlusIntegerIfDigits",
+        "lengthAbsolutePercentageAsSpecifiedOtherwiseAuto",
+        "listEachItemConsistingOfAbsoluteLengthPercentageAndOrigin",
+        "listEachItemHasTwoKeywordsOnePerDimension",
+        "listEachItemTwoKeywordsOriginOffsets",
+        "noneOrImageWithAbsoluteURI",
+        "normalizedAngle",
+        "normalOnElementsForPseudosNoneAbsoluteURIStringOrAsSpecified",
+        "oneToFourPercentagesOrAbsoluteLengthsPlusFill",
+        "optimumMinAndMaxValueOfAbsoluteLengthPercentageOrNormal",
+        "optimumValueOfAbsoluteLengthOrNormal",
+        "percentageAsSpecifiedAbsoluteLengthOrNone",
+        "percentageAsSpecifiedOrAbsoluteLength",
+        "percentageAutoOrAbsoluteLength",
+        "percentageOrAbsoluteLengthPlusKeywords",
+        "sameAsBoxOffsets",
+        "sameAsMaxWidthAndMaxHeight",
+        "sameAsMinWidthAndMinHeight",
+        "sameAsWidthAndHeight",
+        "specifiedIntegerOrAbsoluteLength",
+        "specifiedValueClipped0To1",
+        "specifiedValueNumberClipped0To1",
+        "translucentValuesRGBAOtherwiseRGB",
+        "twoAbsoluteLengthOrPercentages",
+        "twoAbsoluteLengths"
+      ]
+    },
+    "appliesto": {
+      "enum": [
+        "absolutelyPositionedElements",
+        "allElements",
+        "allElementsAcceptingWidthOrHeight",
+        "allElementsAndPseudos",
+        "allElementsButNonReplacedAndTableColumns",
+        "allElementsButNonReplacedAndTableRows",
+        "allElementsCreatingNativeWindows",
+        "allElementsExceptGeneratedContentOrPseudoElements",
+        "allElementsExceptInternalTableDisplayTypes",
+        "allElementsExceptNonReplacedInlineElementsTableRowsColumnsRowColumnGroups",
+        "allElementsExceptTableDisplayTypes",
+        "allElementsExceptTableElementsWhenCollapse",
+        "allElementsExceptTableRowColumnGroupsTableRowsColumns",
+        "allElementsExceptTableRowGroupsRowsColumnGroupsAndColumns",
+        "allElementsNoEffectIfDisplayNone",
+        "allElementsSomeValuesNoEffectOnNonInlineElements",
+        "allElementsSVGContainerElements",
+        "allElementsSVGContainerGraphicsAndGraphicsReferencingElements",
+        "allElementsThatCanReferenceImages",
+        "allElementsUAsNotRequiredWhenCollapse",
+        "anyElementEffectOnProgressAndMeter",
+        "beforeAndAfterPseudos",
+        "blockContainerElements",
+        "blockContainers",
+        "blockContainersExceptMultiColumnContainers",
+        "blockContainersExceptTableWrappers",
+        "blockContainersFlexContainersGridContainers",
+        "blockElementsInNormalFlow",
+        "blockLevelElements",
+        "blockLevelBoxesAndAbsolutelyPositionedBoxesAndGridItems",
+        "boxElements",
+        "childrenOfBoxElements",
+        "directChildrenOfElementsWithDisplayMozBoxMozInlineBox",
+        "elementsWithDisplayBoxOrInlineBox",
+        "elementsWithDisplayMarker",
+        "elementsWithDisplayMozBoxMozInlineBox",
+        "elementsWithOverflowNotVisibleAndReplacedElements",
+        "exclusionElements",
+        "firstLetterPseudoElementsAndInlineLevelFirstChildren",
+        "flexContainers",
+        "flexItemsAndAbsolutelyPositionedFlexContainerChildren",
+        "flexItemsAndInFlowPseudos",
+        "flexItemsGridItemsAndAbsolutelyPositionedBoxes",
+        "floats",
+        "gridContainers",
+        "gridItemsAndBoxesWithinGridContainer",
+        "iframeElements",
+        "images",
+        "inFlowBlockLevelElements",
+        "inFlowChildrenOfBoxElements",
+        "inlineLevelAndTableCellElements",
+        "listItems",
+        "maskElements",
+        "multicolElements",
+        "multiColumnElementsFlexContainersGridContainers",
+        "multilineFlexContainers",
+        "nonReplacedBlockAndInlineBlockElements",
+        "nonReplacedBlockElements",
+        "nonReplacedElements",
+        "nonReplacedInlineElements",
+        "positionedElements",
+        "replacedElements",
+        "rubyAnnotationsContainers",
+        "rubyBasesAnnotationsBaseAnnotationContainers",
+        "sameAsMargin",
+        "sameAsWidthAndHeight",
+        "scrollContainers",
+        "scrollingBoxes",
+        "tableCaptionElements",
+        "tableCellElements",
+        "tableElements",
+        "textElements",
+        "textFields",
+        "transformableElements",
+        "xulImageElements"
+      ]
+    },
+    "alsoApplyTo": {
+      "type": "array",
+      "minItems": 1,
+      "uniqueItems": true,
+      "items": {
+        "enum": [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ]
+      }
+    },
+    "order": {
+      "enum": [
+        "canonicalOrder",
+        "lengthOrPercentageBeforeKeywordIfBothPresent",
+        "lengthOrPercentageBeforeKeywords",
+        "oneOrTwoValuesLengthAbsoluteKeywordsPercentages",
+        "orderOfAppearance",
+        "percentagesOrLengthsFollowedByFill",
+        "perGrammar",
+        "uniqueOrder"
+      ]
+    },
+    "status": {
+      "enum": [
+        "standard",
+        "nonstandard",
+        "experimental",
+        "obsolete"
+      ]
+    },
+    "mdn_url": {
+      "type": "string",
+      "pattern": "^https://developer.mozilla.org/docs/"
+    }
+  },
+  "type": "object",
+  "additionalProperties": {
+    "type": "object",
+    "additionalProperties": false,
+    "required": [
+      "syntax",
+      "media",
+      "inherited",
+      "animationType",
+      "percentages",
+      "groups",
+      "initial",
+      "appliesto",
+      "computed",
+      "order",
+      "status"
+    ],
+    "properties": {
+      "syntax": {
+        "type": "string"
+      },
+      "media": {
+        "oneOf": [
+          {
+            "type": "string",
+            "enum": [
+              "all",
+              "aural",
+              "continuous",
+              "interactive",
+              "none",
+              "noPracticalMedia",
+              "paged",
+              "visual",
+              "visualInContinuousMediaNoEffectInOverflowColumns"
+            ]
+          },
+          {
+            "type": "array",
+            "minItems": 2,
+            "uniqueItems": true,
+            "items": {
+              "type": "string",
+              "enum": [
+                "interactive",
+                "paged",
+                "visual"
+              ]
+            }
+          }
+        ]
+      },
+      "inherited": {
+        "type": "boolean"
+      },
+      "animationType": {
+        "oneOf": [
+          {
+            "$ref": "#/definitions/animationType"
+          },
+          {
+            "$ref": "#/definitions/propertyList"
+          }
+        ]
+      },
+      "percentages": {
+        "oneOf": [
+          {
+            "$ref": "#/definitions/percentages"
+          },
+          {
+            "$ref": "#/definitions/propertyList"
+          }
+        ]
+      },
+      "groups": {
+        "type": "array",
+        "minitems": 1,
+        "uniqueItems": true,
+        "items": {
+          "$ref": "definitions.json#/groupList"
+        }
+      },
+      "initial": {
+        "oneOf": [
+          {
+            "type": "string"
+          },
+          {
+            "$ref": "#/definitions/propertyList"
+          }
+        ]
+      },
+      "appliesto": {
+        "$ref": "#/definitions/appliesto"
+      },
+      "alsoAppliesTo": {
+        "$ref": "#/definitions/alsoApplyTo"
+      },
+      "computed": {
+        "oneOf": [
+          {
+            "$ref": "#/definitions/computed"
+          },
+          {
+            "$ref": "#/definitions/propertyList"
+          }
+        ]
+      },
+      "order": {
+        "$ref": "#/definitions/order"
+      },
+      "stacking": {
+        "type": "boolean"
+      },
+      "status": {
+        "$ref": "#/definitions/status"
+      },
+      "mdn_url": {
+        "$ref": "#/definitions/mdn_url"
+      }
+    }
+  }
+}