Add stylelint dependency

This also adds CC-BY-4.0 to the list of accepted licenses.

DISABLE_THIRD_PARTY_CHECK=update dependencies

Bug: chromium:1083142
Change-Id: I8612de2fba52dae32eeb71af79d5aacfde52142b
Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/2220097
Reviewed-by: Paul Lewis <aerotwist@chromium.org>
Commit-Queue: Mathias Bynens <mathias@chromium.org>
diff --git a/node_modules/stylelint/lib/utils/validateObjectWithArrayProps.js b/node_modules/stylelint/lib/utils/validateObjectWithArrayProps.js
new file mode 100644
index 0000000..067f2dc
--- /dev/null
+++ b/node_modules/stylelint/lib/utils/validateObjectWithArrayProps.js
@@ -0,0 +1,41 @@
+'use strict';
+
+const _ = require('lodash');
+
+/**
+ * @template T
+ * @typedef {(i: T) => boolean} Validator
+ */
+
+/**
+ * Check whether the variable is an object and all it's properties are arrays of string values:
+ *
+ * ignoreProperties = {
+ *   value1: ["item11", "item12", "item13"],
+ *   value2: ["item21", "item22", "item23"],
+ *   value3: ["item31", "item32", "item33"],
+ * }
+ * @template T
+ * @param {Validator<T>|Validator<T>[]} validator
+ * @returns {(value: {[k: any]: T|T[]}) => boolean}
+ */
+module.exports = (validator) => (value) => {
+	if (!_.isPlainObject(value)) {
+		return false;
+	}
+
+	return Object.values(value).every((value) => {
+		if (!Array.isArray(value)) {
+			return false;
+		}
+
+		// Make sure the array items are strings
+		return value.every((item) => {
+			if (Array.isArray(validator)) {
+				return validator.some((v) => v(item));
+			}
+
+			return validator(item);
+		});
+	});
+};