Jelajahi Sumber

Merge pull request #361 from goto-bus-stop/chore/eslint

Update standard
Renée Kooi 7 tahun lalu
induk
melakukan
7980e20a5e

+ 287 - 58
package-lock.json

@@ -2353,9 +2353,9 @@
       }
       }
     },
     },
     "circular-json": {
     "circular-json": {
-      "version": "0.3.1",
-      "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.1.tgz",
-      "integrity": "sha1-vos2rvzN6LPKeqLWr8B6NyQsDS0=",
+      "version": "0.3.3",
+      "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz",
+      "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==",
       "dev": true
       "dev": true
     },
     },
     "clap": {
     "clap": {
@@ -2435,9 +2435,9 @@
       }
       }
     },
     },
     "cli-width": {
     "cli-width": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.1.0.tgz",
-      "integrity": "sha1-sjTKIJsp72b8UY2bmNWEewDt8Ao=",
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz",
+      "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=",
       "dev": true
       "dev": true
     },
     },
     "cliui": {
     "cliui": {
@@ -2739,6 +2739,12 @@
       "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=",
       "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=",
       "dev": true
       "dev": true
     },
     },
+    "contains-path": {
+      "version": "0.1.0",
+      "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz",
+      "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=",
+      "dev": true
+    },
     "content-disposition": {
     "content-disposition": {
       "version": "0.5.2",
       "version": "0.5.2",
       "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz",
       "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz",
@@ -3283,9 +3289,9 @@
       }
       }
     },
     },
     "doctrine": {
     "doctrine": {
-      "version": "1.5.0",
-      "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz",
-      "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=",
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.0.0.tgz",
+      "integrity": "sha1-xz2NKQnSIpHhoAejlYBNqLZl/mM=",
       "dev": true,
       "dev": true,
       "requires": {
       "requires": {
         "esutils": "2.0.2",
         "esutils": "2.0.2",
@@ -3771,29 +3777,30 @@
       "requires": {
       "requires": {
         "es6-map": "0.1.5",
         "es6-map": "0.1.5",
         "es6-weak-map": "2.0.2",
         "es6-weak-map": "2.0.2",
-        "esrecurse": "4.1.0",
+        "esrecurse": "4.2.0",
         "estraverse": "4.2.0"
         "estraverse": "4.2.0"
       }
       }
     },
     },
     "eslint": {
     "eslint": {
-      "version": "3.16.1",
-      "resolved": "https://registry.npmjs.org/eslint/-/eslint-3.16.1.tgz",
-      "integrity": "sha1-m8MfxzQWks93LoBgdQj2fXEcVgk=",
+      "version": "3.19.0",
+      "resolved": "https://registry.npmjs.org/eslint/-/eslint-3.19.0.tgz",
+      "integrity": "sha1-yPxiAcf0DdCJQbh8CFdnOGpnmsw=",
       "dev": true,
       "dev": true,
       "requires": {
       "requires": {
         "babel-code-frame": "6.22.0",
         "babel-code-frame": "6.22.0",
         "chalk": "1.1.3",
         "chalk": "1.1.3",
         "concat-stream": "1.5.2",
         "concat-stream": "1.5.2",
         "debug": "2.6.4",
         "debug": "2.6.4",
-        "doctrine": "1.5.0",
+        "doctrine": "2.0.0",
         "escope": "3.6.0",
         "escope": "3.6.0",
-        "espree": "3.4.3",
+        "espree": "3.5.1",
+        "esquery": "1.0.0",
         "estraverse": "4.2.0",
         "estraverse": "4.2.0",
         "esutils": "2.0.2",
         "esutils": "2.0.2",
         "file-entry-cache": "2.0.0",
         "file-entry-cache": "2.0.0",
         "glob": "7.1.1",
         "glob": "7.1.1",
         "globals": "9.18.0",
         "globals": "9.18.0",
-        "ignore": "3.3.3",
+        "ignore": "3.3.5",
         "imurmurhash": "0.1.4",
         "imurmurhash": "0.1.4",
         "inquirer": "0.12.0",
         "inquirer": "0.12.0",
         "is-my-json-valid": "2.16.0",
         "is-my-json-valid": "2.16.0",
@@ -3835,37 +3842,228 @@
       }
       }
     },
     },
     "eslint-config-standard": {
     "eslint-config-standard": {
-      "version": "6.2.1",
-      "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-6.2.1.tgz",
-      "integrity": "sha1-06aKr8cZFjnn7kQec0hzkCY1QpI=",
+      "version": "10.2.1",
+      "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-10.2.1.tgz",
+      "integrity": "sha1-wGHk0GbzedwXzVYsZOgZtN1FRZE=",
       "dev": true
       "dev": true
     },
     },
+    "eslint-import-resolver-node": {
+      "version": "0.3.1",
+      "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.1.tgz",
+      "integrity": "sha512-yUtXS15gIcij68NmXmP9Ni77AQuCN0itXbCc/jWd8C6/yKZaSNXicpC8cgvjnxVdmfsosIXrjpzFq7GcDryb6A==",
+      "dev": true,
+      "requires": {
+        "debug": "2.6.8",
+        "resolve": "1.3.3"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "2.6.8",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz",
+          "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "ms": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+          "dev": true
+        }
+      }
+    },
+    "eslint-module-utils": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.1.1.tgz",
+      "integrity": "sha512-jDI/X5l/6D1rRD/3T43q8Qgbls2nq5km5KSqiwlyUbGo5+04fXhMKdCPhjwbqAa6HXWaMxj8Q4hQDIh7IadJQw==",
+      "dev": true,
+      "requires": {
+        "debug": "2.6.8",
+        "pkg-dir": "1.0.0"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "2.6.8",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz",
+          "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "ms": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+          "dev": true
+        }
+      }
+    },
+    "eslint-plugin-import": {
+      "version": "2.7.0",
+      "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.7.0.tgz",
+      "integrity": "sha512-HGYmpU9f/zJaQiKNQOVfHUh2oLWW3STBrCgH0sHTX1xtsxYlH1zjLh8FlQGEIdZSdTbUMaV36WaZ6ImXkenGxQ==",
+      "dev": true,
+      "requires": {
+        "builtin-modules": "1.1.1",
+        "contains-path": "0.1.0",
+        "debug": "2.6.8",
+        "doctrine": "1.5.0",
+        "eslint-import-resolver-node": "0.3.1",
+        "eslint-module-utils": "2.1.1",
+        "has": "1.0.1",
+        "lodash.cond": "4.5.2",
+        "minimatch": "3.0.4",
+        "read-pkg-up": "2.0.0"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "2.6.8",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz",
+          "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "doctrine": {
+          "version": "1.5.0",
+          "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz",
+          "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=",
+          "dev": true,
+          "requires": {
+            "esutils": "2.0.2",
+            "isarray": "1.0.0"
+          }
+        },
+        "find-up": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
+          "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+          "dev": true,
+          "requires": {
+            "locate-path": "2.0.0"
+          }
+        },
+        "isarray": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+          "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+          "dev": true
+        },
+        "load-json-file": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz",
+          "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=",
+          "dev": true,
+          "requires": {
+            "graceful-fs": "4.1.11",
+            "parse-json": "2.2.0",
+            "pify": "2.3.0",
+            "strip-bom": "3.0.0"
+          }
+        },
+        "ms": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+          "dev": true
+        },
+        "path-type": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz",
+          "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=",
+          "dev": true,
+          "requires": {
+            "pify": "2.3.0"
+          }
+        },
+        "read-pkg": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz",
+          "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=",
+          "dev": true,
+          "requires": {
+            "load-json-file": "2.0.0",
+            "normalize-package-data": "2.3.8",
+            "path-type": "2.0.0"
+          }
+        },
+        "read-pkg-up": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz",
+          "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=",
+          "dev": true,
+          "requires": {
+            "find-up": "2.1.0",
+            "read-pkg": "2.0.0"
+          }
+        },
+        "strip-bom": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+          "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
+          "dev": true
+        }
+      }
+    },
     "eslint-plugin-jest": {
     "eslint-plugin-jest": {
-      "version": "20.0.3",
-      "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-20.0.3.tgz",
-      "integrity": "sha1-7BXrpqwKtEpn6/bgJnLKnX58uik=",
+      "version": "21.1.0",
+      "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-21.1.0.tgz",
+      "integrity": "sha512-1KagzyFEqotQHCCvEo77c1xioPvxuFp3197wUi2n3GXLNVIDTufGVqmlkGHBurC4vkPKglHZt10x4yk+DfZaXg==",
       "dev": true
       "dev": true
     },
     },
+    "eslint-plugin-node": {
+      "version": "4.2.3",
+      "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-4.2.3.tgz",
+      "integrity": "sha512-vIUQPuwbVYdz/CYnlTLsJrRy7iXHQjdEe5wz0XhhdTym3IInM/zZLlPf9nZ2mThsH0QcsieCOWs2vOeCy/22LQ==",
+      "dev": true,
+      "requires": {
+        "ignore": "3.3.5",
+        "minimatch": "3.0.4",
+        "object-assign": "4.1.1",
+        "resolve": "1.3.3",
+        "semver": "5.3.0"
+      },
+      "dependencies": {
+        "semver": {
+          "version": "5.3.0",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz",
+          "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=",
+          "dev": true
+        }
+      }
+    },
     "eslint-plugin-promise": {
     "eslint-plugin-promise": {
-      "version": "3.4.2",
-      "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-3.4.2.tgz",
-      "integrity": "sha1-G+J5Pq/i0YtbEjuBNsJp+AT+cSI=",
+      "version": "3.5.0",
+      "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-3.5.0.tgz",
+      "integrity": "sha1-ePu2/+BHIBYnVp6FpsU3OvKmj8o=",
       "dev": true
       "dev": true
     },
     },
     "eslint-plugin-standard": {
     "eslint-plugin-standard": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-2.0.1.tgz",
-      "integrity": "sha1-NYlpn/nJF/LCX3apFmh/ZBw2n/M=",
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-3.0.1.tgz",
+      "integrity": "sha1-NNDJFbRe3G8BA5PH7vOCOwhWXPI=",
       "dev": true
       "dev": true
     },
     },
     "espree": {
     "espree": {
-      "version": "3.4.3",
-      "resolved": "https://registry.npmjs.org/espree/-/espree-3.4.3.tgz",
-      "integrity": "sha1-KRC1zNSc6JPC//+qtP2LOjG4I3Q=",
+      "version": "3.5.1",
+      "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.1.tgz",
+      "integrity": "sha1-DJiLirRttTEAoZVK5LqZXd0n2H4=",
       "dev": true,
       "dev": true,
       "requires": {
       "requires": {
-        "acorn": "5.0.3",
+        "acorn": "5.1.2",
         "acorn-jsx": "3.0.1"
         "acorn-jsx": "3.0.1"
+      },
+      "dependencies": {
+        "acorn": {
+          "version": "5.1.2",
+          "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.1.2.tgz",
+          "integrity": "sha512-o96FZLJBPY1lvTuJylGA9Bk3t/GKPPJG8H0ydQQl01crzwJgspa4AEIq/pVTXigmK0PHVQhiAtn8WMBLL9D2WA==",
+          "dev": true
+        }
       }
       }
     },
     },
     "esprima": {
     "esprima": {
@@ -3874,22 +4072,23 @@
       "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=",
       "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=",
       "dev": true
       "dev": true
     },
     },
+    "esquery": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.0.tgz",
+      "integrity": "sha1-z7qLV9f7qT8XKYqKAGoEzaE9gPo=",
+      "dev": true,
+      "requires": {
+        "estraverse": "4.2.0"
+      }
+    },
     "esrecurse": {
     "esrecurse": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.1.0.tgz",
-      "integrity": "sha1-RxO2U2rffyrE8yfVWed1a/9kgiA=",
+      "version": "4.2.0",
+      "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.0.tgz",
+      "integrity": "sha1-+pVo2Y04I/mkHZHpAtyrnqblsWM=",
       "dev": true,
       "dev": true,
       "requires": {
       "requires": {
-        "estraverse": "4.1.1",
+        "estraverse": "4.2.0",
         "object-assign": "4.1.1"
         "object-assign": "4.1.1"
-      },
-      "dependencies": {
-        "estraverse": {
-          "version": "4.1.1",
-          "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.1.1.tgz",
-          "integrity": "sha1-9srKcokzqFDvkGYdDheYK6RxEaI=",
-          "dev": true
-        }
       }
       }
     },
     },
     "estraverse": {
     "estraverse": {
@@ -4278,7 +4477,7 @@
       "integrity": "sha1-+oZxTnLCHbiGAXYezy9VXRq8a5Y=",
       "integrity": "sha1-+oZxTnLCHbiGAXYezy9VXRq8a5Y=",
       "dev": true,
       "dev": true,
       "requires": {
       "requires": {
-        "circular-json": "0.3.1",
+        "circular-json": "0.3.3",
         "del": "2.2.2",
         "del": "2.2.2",
         "graceful-fs": "4.1.11",
         "graceful-fs": "4.1.11",
         "write": "0.2.1"
         "write": "0.2.1"
@@ -6475,9 +6674,9 @@
       "dev": true
       "dev": true
     },
     },
     "ignore": {
     "ignore": {
-      "version": "3.3.3",
-      "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.3.tgz",
-      "integrity": "sha1-QyNS5XrM2HqzEQ6C0/6g5HgSFW0=",
+      "version": "3.3.5",
+      "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.5.tgz",
+      "integrity": "sha512-JLH93mL8amZQhh/p6mfQgVBH3M6epNq3DfsXsTSuSrInVjwyYlFE1nv2AgfRCC8PoOhM0jwQ5v8s9LgbK7yGDw==",
       "dev": true
       "dev": true
     },
     },
     "immutable": {
     "immutable": {
@@ -6564,7 +6763,7 @@
         "ansi-regex": "2.1.1",
         "ansi-regex": "2.1.1",
         "chalk": "1.1.3",
         "chalk": "1.1.3",
         "cli-cursor": "1.0.2",
         "cli-cursor": "1.0.2",
-        "cli-width": "2.1.0",
+        "cli-width": "2.2.0",
         "figures": "1.7.0",
         "figures": "1.7.0",
         "lodash": "4.17.4",
         "lodash": "4.17.4",
         "readline2": "1.0.1",
         "readline2": "1.0.1",
@@ -6618,9 +6817,9 @@
       }
       }
     },
     },
     "interpret": {
     "interpret": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.0.3.tgz",
-      "integrity": "sha1-y8NcYu7uc/Gat7EKgBURQBr8D5A=",
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.0.4.tgz",
+      "integrity": "sha1-ggzdWIuGj/sZGoCVBtbJyPISsbA=",
       "dev": true
       "dev": true
     },
     },
     "invariant": {
     "invariant": {
@@ -8227,6 +8426,12 @@
         "lodash._bindcallback": "3.0.1"
         "lodash._bindcallback": "3.0.1"
       }
       }
     },
     },
+    "lodash.cond": {
+      "version": "4.5.2",
+      "resolved": "https://registry.npmjs.org/lodash.cond/-/lodash.cond-4.5.2.tgz",
+      "integrity": "sha1-9HGh2khr5g9quVXRcRVSPdHSVdU=",
+      "dev": true
+    },
     "lodash.defaults": {
     "lodash.defaults": {
       "version": "4.2.0",
       "version": "4.2.0",
       "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz",
       "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz",
@@ -9928,6 +10133,15 @@
         "pinkie": "2.0.4"
         "pinkie": "2.0.4"
       }
       }
     },
     },
+    "pkg-dir": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz",
+      "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=",
+      "dev": true,
+      "requires": {
+        "find-up": "1.1.2"
+      }
+    },
     "plucker": {
     "plucker": {
       "version": "0.0.0",
       "version": "0.0.0",
       "resolved": "https://registry.npmjs.org/plucker/-/plucker-0.0.0.tgz",
       "resolved": "https://registry.npmjs.org/plucker/-/plucker-0.0.0.tgz",
@@ -11568,7 +11782,7 @@
       "dev": true,
       "dev": true,
       "requires": {
       "requires": {
         "glob": "7.1.1",
         "glob": "7.1.1",
-        "interpret": "1.0.3",
+        "interpret": "1.0.4",
         "rechoir": "0.6.2"
         "rechoir": "0.6.2"
       }
       }
     },
     },
@@ -12256,9 +12470,15 @@
         "chalk": "1.1.3",
         "chalk": "1.1.3",
         "lodash": "4.17.4",
         "lodash": "4.17.4",
         "slice-ansi": "0.0.4",
         "slice-ansi": "0.0.4",
-        "string-width": "2.0.0"
+        "string-width": "2.1.1"
       },
       },
       "dependencies": {
       "dependencies": {
+        "ansi-regex": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+          "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+          "dev": true
+        },
         "is-fullwidth-code-point": {
         "is-fullwidth-code-point": {
           "version": "2.0.0",
           "version": "2.0.0",
           "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
           "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
@@ -12266,13 +12486,22 @@
           "dev": true
           "dev": true
         },
         },
         "string-width": {
         "string-width": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.0.0.tgz",
-          "integrity": "sha1-Y1xUNsxypuDDh87KJ41OLuxSaH4=",
+          "version": "2.1.1",
+          "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+          "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
           "dev": true,
           "dev": true,
           "requires": {
           "requires": {
             "is-fullwidth-code-point": "2.0.0",
             "is-fullwidth-code-point": "2.0.0",
-            "strip-ansi": "3.0.1"
+            "strip-ansi": "4.0.0"
+          }
+        },
+        "strip-ansi": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+          "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+          "dev": true,
+          "requires": {
+            "ansi-regex": "3.0.0"
           }
           }
         }
         }
       }
       }

+ 7 - 5
package.json

@@ -47,11 +47,13 @@
     "chalk": "1.1.3",
     "chalk": "1.1.3",
     "cssnano": "3.7.3",
     "cssnano": "3.7.3",
     "disc": "1.3.2",
     "disc": "1.3.2",
-    "eslint": "3.16.1",
-    "eslint-config-standard": "6.2.1",
-    "eslint-plugin-jest": "^20.0.3",
-    "eslint-plugin-promise": "3.4.2",
-    "eslint-plugin-standard": "2.0.1",
+    "eslint": "^3.19.0",
+    "eslint-config-standard": "^10.2.1",
+    "eslint-plugin-import": "^2.7.0",
+    "eslint-plugin-jest": "^21.1.0",
+    "eslint-plugin-node": "^4.2.3",
+    "eslint-plugin-promise": "^3.5.0",
+    "eslint-plugin-standard": "^3.0.1",
     "exorcist": "0.4.0",
     "exorcist": "0.4.0",
     "fakefile": "0.0.8",
     "fakefile": "0.0.8",
     "glob": "7.1.1",
     "glob": "7.1.1",

+ 8 - 6
src/core/Core.js

@@ -296,8 +296,9 @@ class Uppy {
       .then(() => this.opts.onBeforeFileAdded(file, this.getState().files))
       .then(() => this.opts.onBeforeFileAdded(file, this.getState().files))
 
 
     return beforeFileAdded.catch((err) => {
     return beforeFileAdded.catch((err) => {
-      this.info(err, 'error', 5000)
-      return Promise.reject(`onBeforeFileAdded: ${err}`)
+      const message = typeof err === 'object' ? err.message : err
+      this.info(message, 'error', 5000)
+      return Promise.reject(new Error(`onBeforeFileAdded: ${message}`))
     }).then(() => {
     }).then(() => {
       return Utils.getFileType(file).then((fileType) => {
       return Utils.getFileType(file).then((fileType) => {
         const updatedFiles = Object.assign({}, this.state.files)
         const updatedFiles = Object.assign({}, this.state.files)
@@ -335,7 +336,7 @@ class Uppy {
         }
         }
 
 
         const isFileAllowed = this.checkRestrictions(newFile)
         const isFileAllowed = this.checkRestrictions(newFile)
-        if (!isFileAllowed) return Promise.reject('File not allowed')
+        if (!isFileAllowed) return Promise.reject(new Error('File not allowed'))
 
 
         updatedFiles[fileID] = newFile
         updatedFiles[fileID] = newFile
         this.setState({files: updatedFiles})
         this.setState({files: updatedFiles})
@@ -935,15 +936,16 @@ class Uppy {
   upload (forceUpload) {
   upload (forceUpload) {
     const isMinNumberOfFilesReached = this.checkMinNumberOfFiles()
     const isMinNumberOfFilesReached = this.checkMinNumberOfFiles()
     if (!isMinNumberOfFilesReached) {
     if (!isMinNumberOfFilesReached) {
-      return Promise.reject('Minimum number of files has not been reached')
+      return Promise.reject(new Error('Minimum number of files has not been reached'))
     }
     }
 
 
     const beforeUpload = Promise.resolve()
     const beforeUpload = Promise.resolve()
       .then(() => this.opts.onBeforeUpload(this.state.files))
       .then(() => this.opts.onBeforeUpload(this.state.files))
 
 
     return beforeUpload.catch((err) => {
     return beforeUpload.catch((err) => {
-      this.info(err, 'error', 5000)
-      return Promise.reject(`onBeforeUpload: ${err}`)
+      const message = typeof err === 'object' ? err.message : err
+      this.info(message, 'error', 5000)
+      return Promise.reject(new Error(`onBeforeUpload: ${message}`))
     }).then(() => {
     }).then(() => {
       const waitingFileIDs = []
       const waitingFileIDs = []
       Object.keys(this.state.files).forEach((fileID) => {
       Object.keys(this.state.files).forEach((fileID) => {

+ 21 - 7
src/core/Core.test.js

@@ -567,9 +567,23 @@ describe('src/Core', () => {
           throw new Error('File was allowed through')
           throw new Error('File was allowed through')
         })
         })
         .catch(e => {
         .catch(e => {
-          expect(e).toEqual('File not allowed')
+          expect(e.message).toEqual('File not allowed')
         })
         })
     })
     })
+
+    it('should work with restriction errors that are not Error class instances', () => {
+      const core = new Core({
+        onBeforeFileAdded () {
+          return Promise.reject('a plain string') // eslint-disable-line prefer-promise-reject-errors
+        }
+      })
+      return expect(core.addFile({
+        source: 'jest',
+        name: 'foo.jpg',
+        type: 'image/jpg',
+        data: null
+      })).rejects.toMatchObject({ message: 'onBeforeFileAdded: a plain string' })
+    })
   })
   })
 
 
   describe('uploading a file', () => {})
   describe('uploading a file', () => {})
@@ -715,12 +729,12 @@ describe('src/Core', () => {
         type: 'image/jpg',
         type: 'image/jpg',
         data: utils.dataURItoFile(sampleImageDataURI, {})
         data: utils.dataURItoFile(sampleImageDataURI, {})
       })
       })
-      expect(core.addFile({
+      return expect(core.addFile({
         source: 'jest',
         source: 'jest',
         name: 'foo2.jpg',
         name: 'foo2.jpg',
         type: 'image/jpg',
         type: 'image/jpg',
         data: utils.dataURItoFile(sampleImageDataURI, {})
         data: utils.dataURItoFile(sampleImageDataURI, {})
-      })).rejects.toMatch('File not allowed').then(() => {
+      })).rejects.toMatchObject({ message: 'File not allowed' }).then(() => {
         expect(core.state.info.message).toEqual('You can only upload 1 file')
         expect(core.state.info.message).toEqual('You can only upload 1 file')
       })
       })
     })
     })
@@ -735,12 +749,12 @@ describe('src/Core', () => {
         }
         }
       })
       })
 
 
-      expect(core.addFile({
+      return expect(core.addFile({
         source: 'jest',
         source: 'jest',
         name: 'foo2.jpg',
         name: 'foo2.jpg',
         type: 'image/jpg',
         type: 'image/jpg',
         data: utils.dataURItoFile(sampleImageDataURI, {})
         data: utils.dataURItoFile(sampleImageDataURI, {})
-      })).rejects.toMatch('File not allowed').then(() => {
+      })).rejects.toMatchObject({ message: 'File not allowed' }).then(() => {
         expect(core.state.info.message).toEqual('You can only upload: image/gif, image/png')
         expect(core.state.info.message).toEqual('You can only upload: image/gif, image/png')
       })
       })
     })
     })
@@ -753,12 +767,12 @@ describe('src/Core', () => {
         }
         }
       })
       })
 
 
-      expect(core.addFile({
+      return expect(core.addFile({
         source: 'jest',
         source: 'jest',
         name: 'foo.jpg',
         name: 'foo.jpg',
         type: 'image/jpg',
         type: 'image/jpg',
         data: utils.dataURItoFile(sampleImageDataURI, {})
         data: utils.dataURItoFile(sampleImageDataURI, {})
-      })).rejects.toMatch('File not allowed').then(() => {
+      })).rejects.toMatchObject({ message: 'File not allowed' }).then(() => {
         expect(core.state.info.message).toEqual('This file exceeds maximum allowed size of 1.2 KB')
         expect(core.state.info.message).toEqual('This file exceeds maximum allowed size of 1.2 KB')
       })
       })
     })
     })

+ 3 - 3
src/core/Utils.js

@@ -345,7 +345,7 @@ function dataURItoFile (dataURI, opts) {
 function copyToClipboard (textToCopy, fallbackString) {
 function copyToClipboard (textToCopy, fallbackString) {
   fallbackString = fallbackString || 'Copy the URL below'
   fallbackString = fallbackString || 'Copy the URL below'
 
 
-  return new Promise((resolve, reject) => {
+  return new Promise((resolve) => {
     const textArea = document.createElement('textarea')
     const textArea = document.createElement('textarea')
     textArea.setAttribute('style', {
     textArea.setAttribute('style', {
       position: 'fixed',
       position: 'fixed',
@@ -364,10 +364,10 @@ function copyToClipboard (textToCopy, fallbackString) {
     document.body.appendChild(textArea)
     document.body.appendChild(textArea)
     textArea.select()
     textArea.select()
 
 
-    const magicCopyFailed = (err) => {
+    const magicCopyFailed = () => {
       document.body.removeChild(textArea)
       document.body.removeChild(textArea)
       window.prompt(fallbackString, textToCopy)
       window.prompt(fallbackString, textToCopy)
-      return reject('Oops, unable to copy displayed fallback prompt: ' + err)
+      resolve()
     }
     }
 
 
     try {
     try {

+ 1 - 1
src/plugins/Plugin.js

@@ -119,7 +119,7 @@ module.exports = class Plugin {
   }
   }
 
 
   install () {
   install () {
-    return
+
   }
   }
 
 
   uninstall () {
   uninstall () {

+ 1 - 1
src/plugins/Plugin.test.js

@@ -13,7 +13,7 @@ jest.mock('../core/Utils', () => ({
 
 
 getFormData.mockImplementation(() => ({ foo: 'bar' }))
 getFormData.mockImplementation(() => ({ foo: 'bar' }))
 nanoraf.mockImplementation(cb => {
 nanoraf.mockImplementation(cb => {
-  cb({ some: 'state' })
+  cb({ some: 'state' }) // eslint-disable-line standard/no-callback-literal
   return () => {}
   return () => {}
 })
 })
 
 

+ 1 - 2
src/plugins/Tus10.js

@@ -93,7 +93,6 @@ module.exports = class Tus10 extends Plugin {
           updatedFiles[file] = updatedFile
           updatedFiles[file] = updatedFile
         })
         })
         this.core.setState({files: updatedFiles})
         this.core.setState({files: updatedFiles})
-        return
     }
     }
   }
   }
 
 
@@ -143,7 +142,7 @@ module.exports = class Tus10 extends Plugin {
       optsTus.onError = (err) => {
       optsTus.onError = (err) => {
         this.core.log(err)
         this.core.log(err)
         this.core.emit('core:upload-error', file.id, err)
         this.core.emit('core:upload-error', file.id, err)
-        reject('Failed because: ' + err)
+        reject(new Error('Failed because: ' + err))
       }
       }
 
 
       optsTus.onProgress = (bytesUploaded, bytesTotal) => {
       optsTus.onProgress = (bytesUploaded, bytesTotal) => {

+ 5 - 4
src/plugins/Webcam/index.js

@@ -199,7 +199,7 @@ module.exports = class Webcam extends Plugin {
         if (!this.webcamActive) {
         if (!this.webcamActive) {
           clearInterval(countDown)
           clearInterval(countDown)
           this.captureInProgress = false
           this.captureInProgress = false
-          return reject('Webcam is not active')
+          return reject(new Error('Webcam is not active'))
         }
         }
 
 
         if (count > 0) {
         if (count > 0) {
@@ -233,13 +233,14 @@ module.exports = class Webcam extends Plugin {
     this.captureInProgress = true
     this.captureInProgress = true
 
 
     this.opts.onBeforeSnapshot().catch((err) => {
     this.opts.onBeforeSnapshot().catch((err) => {
-      this.core.info(err, 'error', 5000)
-      return Promise.reject(`onBeforeSnapshot: ${err}`)
+      const message = typeof err === 'object' ? err.message : err
+      this.core.info(message, 'error', 5000)
+      return Promise.reject(new Error(`onBeforeSnapshot: ${message}`))
     }).then(() => {
     }).then(() => {
       const video = this.target.querySelector('.UppyWebcam-video')
       const video = this.target.querySelector('.UppyWebcam-video')
       if (!video) {
       if (!video) {
         this.captureInProgress = false
         this.captureInProgress = false
-        return Promise.reject('No video element found, likely due to the Webcam tab being closed.')
+        return Promise.reject(new Error('No video element found, likely due to the Webcam tab being closed.'))
       }
       }
 
 
       const image = this.webcam.getImage(video, opts)
       const image = this.webcam.getImage(video, opts)

+ 0 - 1
src/react/StatusBar.js

@@ -47,4 +47,3 @@ StatusBar.defaultProps = {
 }
 }
 
 
 module.exports = StatusBar
 module.exports = StatusBar
-

+ 0 - 1
src/uppy-base/src/plugins/Webcam.js

@@ -7,7 +7,6 @@ const { dataURItoFile } = require('../../../core/Utils')
  */
  */
 module.exports = class Webcam {
 module.exports = class Webcam {
   constructor (opts = {}, params = {}) {
   constructor (opts = {}, params = {}) {
-    this._userMedia
     this.userMedia = true
     this.userMedia = true
     this.protocol = location.protocol.match(/https/i) ? 'https' : 'http'
     this.protocol = location.protocol.match(/https/i) ? 'https' : 'http'
 
 

+ 1 - 1
website/themes/uppy/source/js/common.js

@@ -24,7 +24,7 @@
     var allLinks = []
     var allLinks = []
 
 
     function updateSidebar () {
     function updateSidebar () {
-      var top = doc && doc.scrollTop || body.scrollTop
+      var top = (doc && doc.scrollTop) || body.scrollTop
       var headerHeight = header.offsetHeight
       var headerHeight = header.offsetHeight
       if (top > headerHeight) {
       if (top > headerHeight) {
         main.classList.add('fix-sidebar')
         main.classList.add('fix-sidebar')