Add eslint-import-plugin to node_modules
Will be used to make sure no default exports are in DevTools.
The PRESUBMIT.py has been updated to skip running the formatting check
if node_modules files are affected, to workaround crbug.com/1068198.
DISABLE_THIRD_PARTY_CHECK=Add plugin to node_modules
Bug: 1068198
Change-Id: I04d4dc813daa01099f21d40edf47aaefcc0b045f
Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/2135610
Commit-Queue: Tim van der Lippe <tvanderlippe@chromium.org>
Auto-Submit: Tim van der Lippe <tvanderlippe@chromium.org>
Reviewed-by: Jack Franklin <jacktfranklin@chromium.org>
diff --git a/node_modules/eslint-module-utils/hash.js b/node_modules/eslint-module-utils/hash.js
new file mode 100644
index 0000000..d69dd4d
--- /dev/null
+++ b/node_modules/eslint-module-utils/hash.js
@@ -0,0 +1,59 @@
+/**
+ * utilities for hashing config objects.
+ * basically iteratively updates hash with a JSON-like format
+ */
+'use strict'
+exports.__esModule = true
+
+const createHash = require('crypto').createHash
+
+const stringify = JSON.stringify
+
+function hashify(value, hash) {
+ if (!hash) hash = createHash('sha256')
+
+ if (value instanceof Array) {
+ hashArray(value, hash)
+ } else if (value instanceof Object) {
+ hashObject(value, hash)
+ } else {
+ hash.update(stringify(value) || 'undefined')
+ }
+
+ return hash
+}
+exports.default = hashify
+
+function hashArray(array, hash) {
+ if (!hash) hash = createHash('sha256')
+
+ hash.update('[')
+ for (let i = 0; i < array.length; i++) {
+ hashify(array[i], hash)
+ hash.update(',')
+ }
+ hash.update(']')
+
+ return hash
+}
+hashify.array = hashArray
+exports.hashArray = hashArray
+
+function hashObject(object, hash) {
+ if (!hash) hash = createHash('sha256')
+
+ hash.update('{')
+ Object.keys(object).sort().forEach(key => {
+ hash.update(stringify(key))
+ hash.update(':')
+ hashify(object[key], hash)
+ hash.update(',')
+ })
+ hash.update('}')
+
+ return hash
+}
+hashify.object = hashObject
+exports.hashObject = hashObject
+
+