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/unambiguous.js b/node_modules/eslint-module-utils/unambiguous.js
new file mode 100644
index 0000000..1dae1d6
--- /dev/null
+++ b/node_modules/eslint-module-utils/unambiguous.js
@@ -0,0 +1,30 @@
+'use strict'
+exports.__esModule = true
+
+
+const pattern = /(^|;)\s*(export|import)((\s+\w)|(\s*[{*=]))/m
+/**
+ * detect possible imports/exports without a full parse.
+ *
+ * A negative test means that a file is definitely _not_ a module.
+ * A positive test means it _could_ be.
+ *
+ * Not perfect, just a fast way to disqualify large non-ES6 modules and
+ * avoid a parse.
+ * @type {RegExp}
+ */
+exports.test = function isMaybeUnambiguousModule(content) {
+ return pattern.test(content)
+}
+
+// future-/Babel-proof at the expense of being a little loose
+const unambiguousNodeType = /^(?:(?:Exp|Imp)ort.*Declaration|TSExportAssignment)$/
+
+/**
+ * Given an AST, return true if the AST unambiguously represents a module.
+ * @param {Program node} ast
+ * @return {Boolean}
+ */
+exports.isModule = function isUnambiguousModule(ast) {
+ return ast.body.some(node => unambiguousNodeType.test(node.type))
+}