Index: frontend/node_modules/caniuse-api/dist/index.js
===================================================================
--- frontend/node_modules/caniuse-api/dist/index.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/caniuse-api/dist/index.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,96 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.getBrowserScope = exports.setBrowserScope = exports.getLatestStableBrowsers = exports.find = exports.isSupported = exports.getSupport = exports.features = undefined;
+
+var _lodash = require("lodash.memoize");
+
+var _lodash2 = _interopRequireDefault(_lodash);
+
+var _browserslist = require("browserslist");
+
+var _browserslist2 = _interopRequireDefault(_browserslist);
+
+var _caniuseLite = require("caniuse-lite");
+
+var _utils = require("./utils");
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+var featuresList = Object.keys(_caniuseLite.features);
+
+var browsers = void 0;
+function setBrowserScope(browserList) {
+  browsers = (0, _utils.cleanBrowsersList)(browserList);
+}
+
+function getBrowserScope() {
+  return browsers;
+}
+
+var parse = (0, _lodash2.default)(_utils.parseCaniuseData, function (feat, browsers) {
+  return feat.title + browsers;
+});
+
+function getSupport(query) {
+  var feature = void 0;
+  try {
+    feature = (0, _caniuseLite.feature)(_caniuseLite.features[query]);
+  } catch (e) {
+    var res = find(query);
+    if (res.length === 1) return getSupport(res[0]);
+    throw new ReferenceError("Please provide a proper feature name. Cannot find " + query);
+  }
+  return parse(feature, browsers);
+}
+
+function isSupported(feature, browsers) {
+  var data = void 0;
+  try {
+    data = (0, _caniuseLite.feature)(_caniuseLite.features[feature]);
+  } catch (e) {
+    var res = find(feature);
+    if (res.length === 1) {
+      data = _caniuseLite.features[res[0]];
+    } else {
+      throw new ReferenceError("Please provide a proper feature name. Cannot find " + feature);
+    }
+  }
+
+  return (0, _browserslist2.default)(browsers, { ignoreUnknownVersions: true }).map(function (browser) {
+    return browser.split(" ");
+  }).every(function (browser) {
+    return data.stats[browser[0]] && data.stats[browser[0]][browser[1]] === "y";
+  });
+}
+
+function find(query) {
+  if (typeof query !== "string") {
+    throw new TypeError("The `query` parameter should be a string.");
+  }
+
+  if (~featuresList.indexOf(query)) {
+    // exact match
+    return query;
+  }
+
+  return featuresList.filter(function (file) {
+    return (0, _utils.contains)(file, query);
+  });
+}
+
+function getLatestStableBrowsers() {
+  return (0, _browserslist2.default)("last 1 version");
+}
+
+setBrowserScope();
+
+exports.features = featuresList;
+exports.getSupport = getSupport;
+exports.isSupported = isSupported;
+exports.find = find;
+exports.getLatestStableBrowsers = getLatestStableBrowsers;
+exports.setBrowserScope = setBrowserScope;
+exports.getBrowserScope = getBrowserScope;
Index: frontend/node_modules/caniuse-api/dist/utils.js
===================================================================
--- frontend/node_modules/caniuse-api/dist/utils.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/caniuse-api/dist/utils.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,62 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.contains = contains;
+exports.parseCaniuseData = parseCaniuseData;
+exports.cleanBrowsersList = cleanBrowsersList;
+
+var _lodash = require("lodash.uniq");
+
+var _lodash2 = _interopRequireDefault(_lodash);
+
+var _browserslist = require("browserslist");
+
+var _browserslist2 = _interopRequireDefault(_browserslist);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function contains(str, substr) {
+  return !!~str.indexOf(substr);
+}
+
+function parseCaniuseData(feature, browsers) {
+  var support = {};
+  var letters;
+  var letter;
+
+  browsers.forEach(function (browser) {
+    support[browser] = {};
+    for (var info in feature.stats[browser]) {
+      letters = feature.stats[browser][info].replace(/#\d+/, "").trim().split(" ");
+      info = parseFloat(info.split("-")[0]); //if info is a range, take the left
+      if (isNaN(info)) continue;
+      for (var i = 0; i < letters.length; i++) {
+        letter = letters[i];
+        if (letter === "d") {
+          // skip this letter, we don't support it yet
+          continue;
+        } else if (letter === "y") {
+          // min support asked, need to find the min value
+          if (typeof support[browser][letter] === "undefined" || info < support[browser][letter]) {
+            support[browser][letter] = info;
+          }
+        } else {
+          // any other support, need to find the max value
+          if (typeof support[browser][letter] === "undefined" || info > support[browser][letter]) {
+            support[browser][letter] = info;
+          }
+        }
+      }
+    }
+  });
+
+  return support;
+}
+
+function cleanBrowsersList(browserList) {
+  return (0, _lodash2.default)((0, _browserslist2.default)(browserList).map(function (browser) {
+    return browser.split(" ")[0];
+  }));
+}
