瀏覽代碼

Updated dependencies and linter

n1474335 6 年之前
父節點
當前提交
5eb3979504

+ 2 - 0
.eslintrc.json

@@ -38,6 +38,8 @@
 
 
         // disable rules from base configurations
         // disable rules from base configurations
         "no-control-regex": "off",
         "no-control-regex": "off",
+        "require-atomic-updates": "off",
+        "no-async-promise-executor": "off",
 
 
         // stylistic conventions
         // stylistic conventions
         "brace-style": ["error", "1tbs"],
         "brace-style": ["error", "1tbs"],

+ 331 - 214
package-lock.json

@@ -14,18 +14,18 @@
       }
       }
     },
     },
     "@babel/core": {
     "@babel/core": {
-      "version": "7.4.5",
-      "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.4.5.tgz",
-      "integrity": "sha512-OvjIh6aqXtlsA8ujtGKfC7LYWksYSX8yQcM8Ay3LuvVeQ63lcOKgoZWVqcpFwkd29aYU9rVx7jxhfhiEDV9MZA==",
+      "version": "7.5.0",
+      "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.5.0.tgz",
+      "integrity": "sha512-6Isr4X98pwXqHvtigw71CKgmhL1etZjPs5A67jL/w0TkLM9eqmFR40YrnJvEc1WnMZFsskjsmid8bHZyxKEAnw==",
       "dev": true,
       "dev": true,
       "requires": {
       "requires": {
         "@babel/code-frame": "^7.0.0",
         "@babel/code-frame": "^7.0.0",
-        "@babel/generator": "^7.4.4",
-        "@babel/helpers": "^7.4.4",
-        "@babel/parser": "^7.4.5",
+        "@babel/generator": "^7.5.0",
+        "@babel/helpers": "^7.5.0",
+        "@babel/parser": "^7.5.0",
         "@babel/template": "^7.4.4",
         "@babel/template": "^7.4.4",
-        "@babel/traverse": "^7.4.5",
-        "@babel/types": "^7.4.4",
+        "@babel/traverse": "^7.5.0",
+        "@babel/types": "^7.5.0",
         "convert-source-map": "^1.1.0",
         "convert-source-map": "^1.1.0",
         "debug": "^4.1.0",
         "debug": "^4.1.0",
         "json5": "^2.1.0",
         "json5": "^2.1.0",
@@ -35,6 +35,53 @@
         "source-map": "^0.5.0"
         "source-map": "^0.5.0"
       },
       },
       "dependencies": {
       "dependencies": {
+        "@babel/generator": {
+          "version": "7.5.0",
+          "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.5.0.tgz",
+          "integrity": "sha512-1TTVrt7J9rcG5PMjvO7VEG3FrEoEJNHxumRq66GemPmzboLWtIjjcJgk8rokuAS7IiRSpgVSu5Vb9lc99iJkOA==",
+          "dev": true,
+          "requires": {
+            "@babel/types": "^7.5.0",
+            "jsesc": "^2.5.1",
+            "lodash": "^4.17.11",
+            "source-map": "^0.5.0",
+            "trim-right": "^1.0.1"
+          }
+        },
+        "@babel/parser": {
+          "version": "7.5.0",
+          "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.5.0.tgz",
+          "integrity": "sha512-I5nW8AhGpOXGCCNYGc+p7ExQIBxRFnS2fd/d862bNOKvmoEPjYPcfIjsfdy0ujagYOIYPczKgD9l3FsgTkAzKA==",
+          "dev": true
+        },
+        "@babel/traverse": {
+          "version": "7.5.0",
+          "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.5.0.tgz",
+          "integrity": "sha512-SnA9aLbyOCcnnbQEGwdfBggnc142h/rbqqsXcaATj2hZcegCl903pUD/lfpsNBlBSuWow/YDfRyJuWi2EPR5cg==",
+          "dev": true,
+          "requires": {
+            "@babel/code-frame": "^7.0.0",
+            "@babel/generator": "^7.5.0",
+            "@babel/helper-function-name": "^7.1.0",
+            "@babel/helper-split-export-declaration": "^7.4.4",
+            "@babel/parser": "^7.5.0",
+            "@babel/types": "^7.5.0",
+            "debug": "^4.1.0",
+            "globals": "^11.1.0",
+            "lodash": "^4.17.11"
+          }
+        },
+        "@babel/types": {
+          "version": "7.5.0",
+          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.5.0.tgz",
+          "integrity": "sha512-UFpDVqRABKsW01bvw7/wSUe56uy6RXM5+VJibVVAybDGxEW25jdwiFJEf7ASvSaC7sN7rbE/l3cLp2izav+CtQ==",
+          "dev": true,
+          "requires": {
+            "esutils": "^2.0.2",
+            "lodash": "^4.17.11",
+            "to-fast-properties": "^2.0.0"
+          }
+        },
         "debug": {
         "debug": {
           "version": "4.1.1",
           "version": "4.1.1",
           "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
           "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
@@ -44,6 +91,12 @@
             "ms": "^2.1.1"
             "ms": "^2.1.1"
           }
           }
         },
         },
+        "globals": {
+          "version": "11.12.0",
+          "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
+          "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
+          "dev": true
+        },
         "ms": {
         "ms": {
           "version": "2.1.2",
           "version": "2.1.2",
           "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
           "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
@@ -55,6 +108,12 @@
           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
           "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
           "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
           "dev": true
           "dev": true
+        },
+        "to-fast-properties": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
+          "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=",
+          "dev": true
         }
         }
       }
       }
     },
     },
@@ -272,14 +331,96 @@
       }
       }
     },
     },
     "@babel/helpers": {
     "@babel/helpers": {
-      "version": "7.4.4",
-      "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.4.4.tgz",
-      "integrity": "sha512-igczbR/0SeuPR8RFfC7tGrbdTbFL3QTvH6D+Z6zNxnTe//GyqmtHmDkzrqDmyZ3eSwPqB/LhyKoU5DXsp+Vp2A==",
+      "version": "7.5.0",
+      "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.5.0.tgz",
+      "integrity": "sha512-EgCUEa8cNwuMrwo87l2d7i2oShi8m2Q58H7h3t4TWtqATZalJYFwfL9DulRe02f3KdqM9xmMCw3v/7Ll+EiaWg==",
       "dev": true,
       "dev": true,
       "requires": {
       "requires": {
         "@babel/template": "^7.4.4",
         "@babel/template": "^7.4.4",
-        "@babel/traverse": "^7.4.4",
-        "@babel/types": "^7.4.4"
+        "@babel/traverse": "^7.5.0",
+        "@babel/types": "^7.5.0"
+      },
+      "dependencies": {
+        "@babel/generator": {
+          "version": "7.5.0",
+          "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.5.0.tgz",
+          "integrity": "sha512-1TTVrt7J9rcG5PMjvO7VEG3FrEoEJNHxumRq66GemPmzboLWtIjjcJgk8rokuAS7IiRSpgVSu5Vb9lc99iJkOA==",
+          "dev": true,
+          "requires": {
+            "@babel/types": "^7.5.0",
+            "jsesc": "^2.5.1",
+            "lodash": "^4.17.11",
+            "source-map": "^0.5.0",
+            "trim-right": "^1.0.1"
+          }
+        },
+        "@babel/parser": {
+          "version": "7.5.0",
+          "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.5.0.tgz",
+          "integrity": "sha512-I5nW8AhGpOXGCCNYGc+p7ExQIBxRFnS2fd/d862bNOKvmoEPjYPcfIjsfdy0ujagYOIYPczKgD9l3FsgTkAzKA==",
+          "dev": true
+        },
+        "@babel/traverse": {
+          "version": "7.5.0",
+          "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.5.0.tgz",
+          "integrity": "sha512-SnA9aLbyOCcnnbQEGwdfBggnc142h/rbqqsXcaATj2hZcegCl903pUD/lfpsNBlBSuWow/YDfRyJuWi2EPR5cg==",
+          "dev": true,
+          "requires": {
+            "@babel/code-frame": "^7.0.0",
+            "@babel/generator": "^7.5.0",
+            "@babel/helper-function-name": "^7.1.0",
+            "@babel/helper-split-export-declaration": "^7.4.4",
+            "@babel/parser": "^7.5.0",
+            "@babel/types": "^7.5.0",
+            "debug": "^4.1.0",
+            "globals": "^11.1.0",
+            "lodash": "^4.17.11"
+          }
+        },
+        "@babel/types": {
+          "version": "7.5.0",
+          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.5.0.tgz",
+          "integrity": "sha512-UFpDVqRABKsW01bvw7/wSUe56uy6RXM5+VJibVVAybDGxEW25jdwiFJEf7ASvSaC7sN7rbE/l3cLp2izav+CtQ==",
+          "dev": true,
+          "requires": {
+            "esutils": "^2.0.2",
+            "lodash": "^4.17.11",
+            "to-fast-properties": "^2.0.0"
+          }
+        },
+        "debug": {
+          "version": "4.1.1",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+          "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+          "dev": true,
+          "requires": {
+            "ms": "^2.1.1"
+          }
+        },
+        "globals": {
+          "version": "11.12.0",
+          "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
+          "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
+          "dev": true
+        },
+        "ms": {
+          "version": "2.1.2",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+          "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+          "dev": true
+        },
+        "source-map": {
+          "version": "0.5.7",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+          "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+          "dev": true
+        },
+        "to-fast-properties": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
+          "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=",
+          "dev": true
+        }
       }
       }
     },
     },
     "@babel/highlight": {
     "@babel/highlight": {
@@ -347,6 +488,16 @@
         "@babel/plugin-syntax-async-generators": "^7.2.0"
         "@babel/plugin-syntax-async-generators": "^7.2.0"
       }
       }
     },
     },
+    "@babel/plugin-proposal-dynamic-import": {
+      "version": "7.5.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.5.0.tgz",
+      "integrity": "sha512-x/iMjggsKTFHYC6g11PL7Qy58IK8H5zqfm9e6hu4z1iH2IRyAp9u9dL80zA6R76yFovETFLKz2VJIC2iIPBuFw==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "@babel/plugin-syntax-dynamic-import": "^7.2.0"
+      }
+    },
     "@babel/plugin-proposal-json-strings": {
     "@babel/plugin-proposal-json-strings": {
       "version": "7.2.0",
       "version": "7.2.0",
       "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz",
       "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz",
@@ -358,9 +509,9 @@
       }
       }
     },
     },
     "@babel/plugin-proposal-object-rest-spread": {
     "@babel/plugin-proposal-object-rest-spread": {
-      "version": "7.4.4",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.4.4.tgz",
-      "integrity": "sha512-dMBG6cSPBbHeEBdFXeQ2QLc5gUpg4Vkaz8octD4aoW/ISO+jBOcsuxYL7bsb5WSu8RLP6boxrBIALEHgoHtO9g==",
+      "version": "7.5.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.5.0.tgz",
+      "integrity": "sha512-G1qy5EdcO3vYhbxlXjRSR2SXB8GsxYv9hoRKT1Jdn3qy/NUnFqUUnqymKZ00Pbj+3FXNh06B+BUZzecrp3sxNw==",
       "dev": true,
       "dev": true,
       "requires": {
       "requires": {
         "@babel/helper-plugin-utils": "^7.0.0",
         "@babel/helper-plugin-utils": "^7.0.0",
@@ -397,6 +548,15 @@
         "@babel/helper-plugin-utils": "^7.0.0"
         "@babel/helper-plugin-utils": "^7.0.0"
       }
       }
     },
     },
+    "@babel/plugin-syntax-dynamic-import": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.2.0.tgz",
+      "integrity": "sha512-mVxuJ0YroI/h/tbFTPGZR8cv6ai+STMKNBq0f8hFxsxWjl94qqhsb+wXbpNMDPU3cfR1TIsVFzU3nXyZMqyK4w==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0"
+      }
+    },
     "@babel/plugin-syntax-json-strings": {
     "@babel/plugin-syntax-json-strings": {
       "version": "7.2.0",
       "version": "7.2.0",
       "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.2.0.tgz",
       "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.2.0.tgz",
@@ -434,9 +594,9 @@
       }
       }
     },
     },
     "@babel/plugin-transform-async-to-generator": {
     "@babel/plugin-transform-async-to-generator": {
-      "version": "7.4.4",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.4.4.tgz",
-      "integrity": "sha512-YiqW2Li8TXmzgbXw+STsSqPBPFnGviiaSp6CYOq55X8GQ2SGVLrXB6pNid8HkqkZAzOH6knbai3snhP7v0fNwA==",
+      "version": "7.5.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.5.0.tgz",
+      "integrity": "sha512-mqvkzwIGkq0bEF1zLRRiTdjfomZJDV33AH3oQzHVGkI2VzEmXLpKKOBvEVaFZBJdN0XTyH38s9j/Kiqr68dggg==",
       "dev": true,
       "dev": true,
       "requires": {
       "requires": {
         "@babel/helper-module-imports": "^7.0.0",
         "@babel/helper-module-imports": "^7.0.0",
@@ -497,9 +657,9 @@
       }
       }
     },
     },
     "@babel/plugin-transform-destructuring": {
     "@babel/plugin-transform-destructuring": {
-      "version": "7.4.4",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.4.4.tgz",
-      "integrity": "sha512-/aOx+nW0w8eHiEHm+BTERB2oJn5D127iye/SUQl7NjHy0lf+j7h4MKMMSOwdazGq9OxgiNADncE+SRJkCxjZpQ==",
+      "version": "7.5.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.5.0.tgz",
+      "integrity": "sha512-YbYgbd3TryYYLGyC7ZR+Tq8H/+bCmwoaxHfJHupom5ECstzbRLTch6gOQbhEY9Z4hiCNHEURgq06ykFv9JZ/QQ==",
       "dev": true,
       "dev": true,
       "requires": {
       "requires": {
         "@babel/helper-plugin-utils": "^7.0.0"
         "@babel/helper-plugin-utils": "^7.0.0"
@@ -517,9 +677,9 @@
       }
       }
     },
     },
     "@babel/plugin-transform-duplicate-keys": {
     "@babel/plugin-transform-duplicate-keys": {
-      "version": "7.2.0",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.2.0.tgz",
-      "integrity": "sha512-q+yuxW4DsTjNceUiTzK0L+AfQ0zD9rWaTLiUqHA8p0gxx7lu1EylenfzjeIWNkPy6e/0VG/Wjw9uf9LueQwLOw==",
+      "version": "7.5.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.5.0.tgz",
+      "integrity": "sha512-igcziksHizyQPlX9gfSjHkE2wmoCH3evvD2qR5w29/Dk0SMKE/eOI7f1HhBdNhR/zxJDqrgpoDTq5YSLH/XMsQ==",
       "dev": true,
       "dev": true,
       "requires": {
       "requires": {
         "@babel/helper-plugin-utils": "^7.0.0"
         "@babel/helper-plugin-utils": "^7.0.0"
@@ -573,34 +733,37 @@
       }
       }
     },
     },
     "@babel/plugin-transform-modules-amd": {
     "@babel/plugin-transform-modules-amd": {
-      "version": "7.2.0",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.2.0.tgz",
-      "integrity": "sha512-mK2A8ucqz1qhrdqjS9VMIDfIvvT2thrEsIQzbaTdc5QFzhDjQv2CkJJ5f6BXIkgbmaoax3zBr2RyvV/8zeoUZw==",
+      "version": "7.5.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.5.0.tgz",
+      "integrity": "sha512-n20UsQMKnWrltocZZm24cRURxQnWIvsABPJlw/fvoy9c6AgHZzoelAIzajDHAQrDpuKFFPPcFGd7ChsYuIUMpg==",
       "dev": true,
       "dev": true,
       "requires": {
       "requires": {
         "@babel/helper-module-transforms": "^7.1.0",
         "@babel/helper-module-transforms": "^7.1.0",
-        "@babel/helper-plugin-utils": "^7.0.0"
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "babel-plugin-dynamic-import-node": "^2.3.0"
       }
       }
     },
     },
     "@babel/plugin-transform-modules-commonjs": {
     "@babel/plugin-transform-modules-commonjs": {
-      "version": "7.4.4",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.4.4.tgz",
-      "integrity": "sha512-4sfBOJt58sEo9a2BQXnZq+Q3ZTSAUXyK3E30o36BOGnJ+tvJ6YSxF0PG6kERvbeISgProodWuI9UVG3/FMY6iw==",
+      "version": "7.5.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.5.0.tgz",
+      "integrity": "sha512-xmHq0B+ytyrWJvQTc5OWAC4ii6Dhr0s22STOoydokG51JjWhyYo5mRPXoi+ZmtHQhZZwuXNN+GG5jy5UZZJxIQ==",
       "dev": true,
       "dev": true,
       "requires": {
       "requires": {
         "@babel/helper-module-transforms": "^7.4.4",
         "@babel/helper-module-transforms": "^7.4.4",
         "@babel/helper-plugin-utils": "^7.0.0",
         "@babel/helper-plugin-utils": "^7.0.0",
-        "@babel/helper-simple-access": "^7.1.0"
+        "@babel/helper-simple-access": "^7.1.0",
+        "babel-plugin-dynamic-import-node": "^2.3.0"
       }
       }
     },
     },
     "@babel/plugin-transform-modules-systemjs": {
     "@babel/plugin-transform-modules-systemjs": {
-      "version": "7.4.4",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.4.4.tgz",
-      "integrity": "sha512-MSiModfILQc3/oqnG7NrP1jHaSPryO6tA2kOMmAQApz5dayPxWiHqmq4sWH2xF5LcQK56LlbKByCd8Aah/OIkQ==",
+      "version": "7.5.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.5.0.tgz",
+      "integrity": "sha512-Q2m56tyoQWmuNGxEtUyeEkm6qJYFqs4c+XyXH5RAuYxObRNz9Zgj/1g2GMnjYp2EUyEy7YTrxliGCXzecl/vJg==",
       "dev": true,
       "dev": true,
       "requires": {
       "requires": {
         "@babel/helper-hoist-variables": "^7.4.4",
         "@babel/helper-hoist-variables": "^7.4.4",
-        "@babel/helper-plugin-utils": "^7.0.0"
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "babel-plugin-dynamic-import-node": "^2.3.0"
       }
       }
     },
     },
     "@babel/plugin-transform-modules-umd": {
     "@babel/plugin-transform-modules-umd": {
@@ -680,9 +843,9 @@
       }
       }
     },
     },
     "@babel/plugin-transform-runtime": {
     "@babel/plugin-transform-runtime": {
-      "version": "7.4.4",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.4.4.tgz",
-      "integrity": "sha512-aMVojEjPszvau3NRg+TIH14ynZLvPewH4xhlCW1w6A3rkxTS1m4uwzRclYR9oS+rl/dr+kT+pzbfHuAWP/lc7Q==",
+      "version": "7.5.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.5.0.tgz",
+      "integrity": "sha512-LmPIZOAgTLl+86gR9KjLXex6P/lRz1fWEjTz6V6QZMmKie51ja3tvzdwORqhHc4RWR8TcZ5pClpRWs0mlaA2ng==",
       "dev": true,
       "dev": true,
       "requires": {
       "requires": {
         "@babel/helper-module-imports": "^7.0.0",
         "@babel/helper-module-imports": "^7.0.0",
@@ -766,39 +929,41 @@
       }
       }
     },
     },
     "@babel/preset-env": {
     "@babel/preset-env": {
-      "version": "7.4.5",
-      "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.4.5.tgz",
-      "integrity": "sha512-f2yNVXM+FsR5V8UwcFeIHzHWgnhXg3NpRmy0ADvALpnhB0SLbCvrCRr4BLOUYbQNLS+Z0Yer46x9dJXpXewI7w==",
+      "version": "7.5.0",
+      "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.5.0.tgz",
+      "integrity": "sha512-/5oQ7cYg+6sH9Dt9yx5IiylnLPiUdyMHl5y+K0mKVNiW2wJ7FpU5bg8jKcT8PcCbxdYzfv6OuC63jLEtMuRSmQ==",
       "dev": true,
       "dev": true,
       "requires": {
       "requires": {
         "@babel/helper-module-imports": "^7.0.0",
         "@babel/helper-module-imports": "^7.0.0",
         "@babel/helper-plugin-utils": "^7.0.0",
         "@babel/helper-plugin-utils": "^7.0.0",
         "@babel/plugin-proposal-async-generator-functions": "^7.2.0",
         "@babel/plugin-proposal-async-generator-functions": "^7.2.0",
+        "@babel/plugin-proposal-dynamic-import": "^7.5.0",
         "@babel/plugin-proposal-json-strings": "^7.2.0",
         "@babel/plugin-proposal-json-strings": "^7.2.0",
-        "@babel/plugin-proposal-object-rest-spread": "^7.4.4",
+        "@babel/plugin-proposal-object-rest-spread": "^7.5.0",
         "@babel/plugin-proposal-optional-catch-binding": "^7.2.0",
         "@babel/plugin-proposal-optional-catch-binding": "^7.2.0",
         "@babel/plugin-proposal-unicode-property-regex": "^7.4.4",
         "@babel/plugin-proposal-unicode-property-regex": "^7.4.4",
         "@babel/plugin-syntax-async-generators": "^7.2.0",
         "@babel/plugin-syntax-async-generators": "^7.2.0",
+        "@babel/plugin-syntax-dynamic-import": "^7.2.0",
         "@babel/plugin-syntax-json-strings": "^7.2.0",
         "@babel/plugin-syntax-json-strings": "^7.2.0",
         "@babel/plugin-syntax-object-rest-spread": "^7.2.0",
         "@babel/plugin-syntax-object-rest-spread": "^7.2.0",
         "@babel/plugin-syntax-optional-catch-binding": "^7.2.0",
         "@babel/plugin-syntax-optional-catch-binding": "^7.2.0",
         "@babel/plugin-transform-arrow-functions": "^7.2.0",
         "@babel/plugin-transform-arrow-functions": "^7.2.0",
-        "@babel/plugin-transform-async-to-generator": "^7.4.4",
+        "@babel/plugin-transform-async-to-generator": "^7.5.0",
         "@babel/plugin-transform-block-scoped-functions": "^7.2.0",
         "@babel/plugin-transform-block-scoped-functions": "^7.2.0",
         "@babel/plugin-transform-block-scoping": "^7.4.4",
         "@babel/plugin-transform-block-scoping": "^7.4.4",
         "@babel/plugin-transform-classes": "^7.4.4",
         "@babel/plugin-transform-classes": "^7.4.4",
         "@babel/plugin-transform-computed-properties": "^7.2.0",
         "@babel/plugin-transform-computed-properties": "^7.2.0",
-        "@babel/plugin-transform-destructuring": "^7.4.4",
+        "@babel/plugin-transform-destructuring": "^7.5.0",
         "@babel/plugin-transform-dotall-regex": "^7.4.4",
         "@babel/plugin-transform-dotall-regex": "^7.4.4",
-        "@babel/plugin-transform-duplicate-keys": "^7.2.0",
+        "@babel/plugin-transform-duplicate-keys": "^7.5.0",
         "@babel/plugin-transform-exponentiation-operator": "^7.2.0",
         "@babel/plugin-transform-exponentiation-operator": "^7.2.0",
         "@babel/plugin-transform-for-of": "^7.4.4",
         "@babel/plugin-transform-for-of": "^7.4.4",
         "@babel/plugin-transform-function-name": "^7.4.4",
         "@babel/plugin-transform-function-name": "^7.4.4",
         "@babel/plugin-transform-literals": "^7.2.0",
         "@babel/plugin-transform-literals": "^7.2.0",
         "@babel/plugin-transform-member-expression-literals": "^7.2.0",
         "@babel/plugin-transform-member-expression-literals": "^7.2.0",
-        "@babel/plugin-transform-modules-amd": "^7.2.0",
-        "@babel/plugin-transform-modules-commonjs": "^7.4.4",
-        "@babel/plugin-transform-modules-systemjs": "^7.4.4",
+        "@babel/plugin-transform-modules-amd": "^7.5.0",
+        "@babel/plugin-transform-modules-commonjs": "^7.5.0",
+        "@babel/plugin-transform-modules-systemjs": "^7.5.0",
         "@babel/plugin-transform-modules-umd": "^7.2.0",
         "@babel/plugin-transform-modules-umd": "^7.2.0",
         "@babel/plugin-transform-named-capturing-groups-regex": "^7.4.5",
         "@babel/plugin-transform-named-capturing-groups-regex": "^7.4.5",
         "@babel/plugin-transform-new-target": "^7.4.4",
         "@babel/plugin-transform-new-target": "^7.4.4",
@@ -813,18 +978,37 @@
         "@babel/plugin-transform-template-literals": "^7.4.4",
         "@babel/plugin-transform-template-literals": "^7.4.4",
         "@babel/plugin-transform-typeof-symbol": "^7.2.0",
         "@babel/plugin-transform-typeof-symbol": "^7.2.0",
         "@babel/plugin-transform-unicode-regex": "^7.4.4",
         "@babel/plugin-transform-unicode-regex": "^7.4.4",
-        "@babel/types": "^7.4.4",
+        "@babel/types": "^7.5.0",
         "browserslist": "^4.6.0",
         "browserslist": "^4.6.0",
         "core-js-compat": "^3.1.1",
         "core-js-compat": "^3.1.1",
         "invariant": "^2.2.2",
         "invariant": "^2.2.2",
         "js-levenshtein": "^1.1.3",
         "js-levenshtein": "^1.1.3",
         "semver": "^5.5.0"
         "semver": "^5.5.0"
+      },
+      "dependencies": {
+        "@babel/types": {
+          "version": "7.5.0",
+          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.5.0.tgz",
+          "integrity": "sha512-UFpDVqRABKsW01bvw7/wSUe56uy6RXM5+VJibVVAybDGxEW25jdwiFJEf7ASvSaC7sN7rbE/l3cLp2izav+CtQ==",
+          "dev": true,
+          "requires": {
+            "esutils": "^2.0.2",
+            "lodash": "^4.17.11",
+            "to-fast-properties": "^2.0.0"
+          }
+        },
+        "to-fast-properties": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
+          "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=",
+          "dev": true
+        }
       }
       }
     },
     },
     "@babel/runtime": {
     "@babel/runtime": {
-      "version": "7.4.5",
-      "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.4.5.tgz",
-      "integrity": "sha512-TuI4qpWZP6lGOGIuGWtp9sPluqYICmbk8T/1vpSysqJxRPkudh/ofFWyqdcMsDf2s7KvDL4/YHgKyvcS3g9CJQ==",
+      "version": "7.5.0",
+      "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.5.0.tgz",
+      "integrity": "sha512-2xsuyZ0R0RBFwjgae5NpXk8FcfH4qovj5cEM5VEeB7KXnKqzaisIu2HSV/mCEISolJJuR4wkViUGYujA8MH9tw==",
       "requires": {
       "requires": {
         "regenerator-runtime": "^0.13.2"
         "regenerator-runtime": "^0.13.2"
       }
       }
@@ -2117,6 +2301,15 @@
         "babel-runtime": "^6.22.0"
         "babel-runtime": "^6.22.0"
       }
       }
     },
     },
+    "babel-plugin-dynamic-import-node": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz",
+      "integrity": "sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ==",
+      "dev": true,
+      "requires": {
+        "object.assign": "^4.1.0"
+      }
+    },
     "babel-plugin-syntax-dynamic-import": {
     "babel-plugin-syntax-dynamic-import": {
       "version": "6.18.0",
       "version": "6.18.0",
       "resolved": "https://registry.npmjs.org/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz",
       "resolved": "https://registry.npmjs.org/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz",
@@ -2480,11 +2673,12 @@
       "integrity": "sha512-rXqOmH1VilAt2DyPzluTi2blhk17bO7ef+zLLPlWvG494pDxcM234pJ8wTc/6R40UWizAIIMgxjvxZg5kmsbag=="
       "integrity": "sha512-rXqOmH1VilAt2DyPzluTi2blhk17bO7ef+zLLPlWvG494pDxcM234pJ8wTc/6R40UWizAIIMgxjvxZg5kmsbag=="
     },
     },
     "bootstrap-colorpicker": {
     "bootstrap-colorpicker": {
-      "version": "2.5.3",
-      "resolved": "https://registry.npmjs.org/bootstrap-colorpicker/-/bootstrap-colorpicker-2.5.3.tgz",
-      "integrity": "sha512-xdllX8LSMvKULs3b8JrgRXTvyvjkSMHHHVuHjjN5FNMqr6kRe5NPiMHFmeAFjlgDF73MspikudLuEwR28LbzLw==",
+      "version": "3.1.2",
+      "resolved": "https://registry.npmjs.org/bootstrap-colorpicker/-/bootstrap-colorpicker-3.1.2.tgz",
+      "integrity": "sha512-yUWegXox8GYoXVtYdrEIN3QMOeEFbcSFGDadZu2pWmmMgTaw4ECX9T8GvYQzJkRusvK9uzi39FjE0W2k8lQECA==",
       "requires": {
       "requires": {
-        "jquery": ">=1.10"
+        "bootstrap": ">=4.0",
+        "jquery": ">=2.1.0"
       }
       }
     },
     },
     "bootstrap-material-design": {
     "bootstrap-material-design": {
@@ -2915,9 +3109,9 @@
       }
       }
     },
     },
     "chownr": {
     "chownr": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz",
-      "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==",
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.2.tgz",
+      "integrity": "sha512-GkfeAQh+QNy3wquu9oIZr6SS5x7wGdSgNQvD10X3r+AZr1Oys22HW8kAmDMvNg2+Dm0TeGaEuO8gFwdBXxwO8A==",
       "dev": true
       "dev": true
     },
     },
     "chrome-trace-event": {
     "chrome-trace-event": {
@@ -2930,9 +3124,9 @@
       }
       }
     },
     },
     "chromedriver": {
     "chromedriver": {
-      "version": "75.0.0",
-      "resolved": "https://registry.npmjs.org/chromedriver/-/chromedriver-75.0.0.tgz",
-      "integrity": "sha512-bUThqrWQn41agNxV58vT0uxUqDryhNKEcMiJ6Iu0KF8pDDH0vzlnlre9BRz+dO95cwoBAilgwQUx9ig91zIC/Q==",
+      "version": "75.0.1",
+      "resolved": "https://registry.npmjs.org/chromedriver/-/chromedriver-75.0.1.tgz",
+      "integrity": "sha512-x94nKFBcvHHuDHJkRj94BuhGnLJcJE8G64yOkXrAEEmer5vjW7N7V+TF7CzVdT/Bb8G+37h6qT+zpLD9xbQ1og==",
       "dev": true,
       "dev": true,
       "requires": {
       "requires": {
         "del": "^4.1.1",
         "del": "^4.1.1",
@@ -3301,9 +3495,9 @@
       },
       },
       "dependencies": {
       "dependencies": {
         "semver": {
         "semver": {
-          "version": "6.1.2",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-6.1.2.tgz",
-          "integrity": "sha512-z4PqiCpomGtWj8633oeAdXm1Kn1W++3T8epkZYnwiVgIYIJ0QHszhInYSJTYxebByQH7KVCEAn8R9duzZW2PhQ==",
+          "version": "6.2.0",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-6.2.0.tgz",
+          "integrity": "sha512-jdFC1VdUGT/2Scgbimf7FSx9iJLXoqfglSF+gJeuNWVpiE37OIbc1jywR/GJyFdz3mnkz2/id0L0J/cr0izR5A==",
           "dev": true
           "dev": true
         }
         }
       }
       }
@@ -3533,9 +3727,9 @@
       "dev": true
       "dev": true
     },
     },
     "d3": {
     "d3": {
-      "version": "5.9.4",
-      "resolved": "https://registry.npmjs.org/d3/-/d3-5.9.4.tgz",
-      "integrity": "sha512-iMLfEVd2Cg3YEfOdUvQ9gJtZs4YJG0T5Nvz+A3j4sIyBwscncVheaRtwg/g6g69qwS/gl0gqlIt7CUeO/BVNbQ==",
+      "version": "5.9.7",
+      "resolved": "https://registry.npmjs.org/d3/-/d3-5.9.7.tgz",
+      "integrity": "sha512-jENytrmdXtGPw7HuSK2S4gxRM1eUGjKvWQkQ6ct4yK+DB8SG3VcnVrwesfnsv8rIcxMUg18TafT4Q8mOZUMP4Q==",
       "requires": {
       "requires": {
         "d3-array": "1",
         "d3-array": "1",
         "d3-axis": "1",
         "d3-axis": "1",
@@ -3607,9 +3801,9 @@
       "integrity": "sha512-ii0/r5f4sjKNTfh84Di+DpztYwqKhEyUlKoPrzUFfeSkWxjW49xU2QzO9qrPrNkpdI0XJkfzvmTu8V2Zylln6A=="
       "integrity": "sha512-ii0/r5f4sjKNTfh84Di+DpztYwqKhEyUlKoPrzUFfeSkWxjW49xU2QzO9qrPrNkpdI0XJkfzvmTu8V2Zylln6A=="
     },
     },
     "d3-color": {
     "d3-color": {
-      "version": "1.2.5",
-      "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.2.5.tgz",
-      "integrity": "sha512-u4CaFaqQKRofuhr9uo/xLdaGvvzdsMX7MgP42XgQJHLBRWnn0C0T+48rvj80cN9KXAauHEMEfe7ehacIoxmP/g=="
+      "version": "1.2.8",
+      "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.2.8.tgz",
+      "integrity": "sha512-yeANXzP37PHk0DbSTMNPhnJD+Nn4G//O5E825bR6fAfHH43hobSBpgB9G9oWVl9+XgUaQ4yCnsX1H+l8DoaL9A=="
     },
     },
     "d3-contour": {
     "d3-contour": {
       "version": "1.3.2",
       "version": "1.3.2",
@@ -3820,9 +4014,9 @@
       },
       },
       "dependencies": {
       "dependencies": {
         "@types/node": {
         "@types/node": {
-          "version": "8.10.49",
-          "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.49.tgz",
-          "integrity": "sha512-YX30JVx0PvSmJ3Eqr74fYLGeBxD+C7vIL20ek+GGGLJeUbVYRUW3EzyAXpIRA0K8c8o0UWqR/GwEFYiFoz1T8w==",
+          "version": "8.10.50",
+          "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.50.tgz",
+          "integrity": "sha512-+ZbcUwJdaBgOZpwXeT0v+gHC/jQbEfzoc9s4d0rN0JIKeQbuTrT+A2n1aQY6LpZjrLXJT7avVUqiCecCJeeZxA==",
           "dev": true
           "dev": true
         }
         }
       }
       }
@@ -6445,21 +6639,15 @@
       }
       }
     },
     },
     "grunt-eslint": {
     "grunt-eslint": {
-      "version": "21.1.0",
-      "resolved": "https://registry.npmjs.org/grunt-eslint/-/grunt-eslint-21.1.0.tgz",
-      "integrity": "sha512-TN1C4BV947eUB/XrROUQ/QFTufWgH6wdfaxhlfmpjE70bFTp5q+Q2LgIZ5Y//+Rn1BWrXmm44sxegijNN6WR/A==",
+      "version": "22.0.0",
+      "resolved": "https://registry.npmjs.org/grunt-eslint/-/grunt-eslint-22.0.0.tgz",
+      "integrity": "sha512-I7vIU4x/mb20fmA6TAmLx6Wzn7mfs8ZXeuk7LbP2ujKVFV7KZmJ3qXUyqe2wnD+v/74Rs5uYOZrLL8EoBmlG9Q==",
       "dev": true,
       "dev": true,
       "requires": {
       "requires": {
         "chalk": "^2.1.0",
         "chalk": "^2.1.0",
-        "eslint": "^5.16.0"
+        "eslint": "^6.0.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
-        },
         "ansi-styles": {
         "ansi-styles": {
           "version": "3.2.1",
           "version": "3.2.1",
           "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
           "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
@@ -6480,107 +6668,6 @@
             "supports-color": "^5.3.0"
             "supports-color": "^5.3.0"
           }
           }
         },
         },
-        "debug": {
-          "version": "4.1.1",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
-          "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
-          "dev": true,
-          "requires": {
-            "ms": "^2.1.1"
-          }
-        },
-        "eslint": {
-          "version": "5.16.0",
-          "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.16.0.tgz",
-          "integrity": "sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg==",
-          "dev": true,
-          "requires": {
-            "@babel/code-frame": "^7.0.0",
-            "ajv": "^6.9.1",
-            "chalk": "^2.1.0",
-            "cross-spawn": "^6.0.5",
-            "debug": "^4.0.1",
-            "doctrine": "^3.0.0",
-            "eslint-scope": "^4.0.3",
-            "eslint-utils": "^1.3.1",
-            "eslint-visitor-keys": "^1.0.0",
-            "espree": "^5.0.1",
-            "esquery": "^1.0.1",
-            "esutils": "^2.0.2",
-            "file-entry-cache": "^5.0.1",
-            "functional-red-black-tree": "^1.0.1",
-            "glob": "^7.1.2",
-            "globals": "^11.7.0",
-            "ignore": "^4.0.6",
-            "import-fresh": "^3.0.0",
-            "imurmurhash": "^0.1.4",
-            "inquirer": "^6.2.2",
-            "js-yaml": "^3.13.0",
-            "json-stable-stringify-without-jsonify": "^1.0.1",
-            "levn": "^0.3.0",
-            "lodash": "^4.17.11",
-            "minimatch": "^3.0.4",
-            "mkdirp": "^0.5.1",
-            "natural-compare": "^1.4.0",
-            "optionator": "^0.8.2",
-            "path-is-inside": "^1.0.2",
-            "progress": "^2.0.0",
-            "regexpp": "^2.0.1",
-            "semver": "^5.5.1",
-            "strip-ansi": "^4.0.0",
-            "strip-json-comments": "^2.0.1",
-            "table": "^5.2.3",
-            "text-table": "^0.2.0"
-          }
-        },
-        "eslint-scope": {
-          "version": "4.0.3",
-          "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz",
-          "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==",
-          "dev": true,
-          "requires": {
-            "esrecurse": "^4.1.0",
-            "estraverse": "^4.1.1"
-          }
-        },
-        "espree": {
-          "version": "5.0.1",
-          "resolved": "https://registry.npmjs.org/espree/-/espree-5.0.1.tgz",
-          "integrity": "sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==",
-          "dev": true,
-          "requires": {
-            "acorn": "^6.0.7",
-            "acorn-jsx": "^5.0.0",
-            "eslint-visitor-keys": "^1.0.0"
-          }
-        },
-        "globals": {
-          "version": "11.12.0",
-          "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
-          "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
-          "dev": true
-        },
-        "ms": {
-          "version": "2.1.2",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-          "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
-          "dev": true
-        },
-        "progress": {
-          "version": "2.0.3",
-          "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
-          "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
-          "dev": true
-        },
-        "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"
-          }
-        },
         "supports-color": {
         "supports-color": {
           "version": "5.5.0",
           "version": "5.5.0",
           "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
           "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
@@ -8377,6 +8464,12 @@
       "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=",
       "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=",
       "dev": true
       "dev": true
     },
     },
+    "lodash.chunk": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npmjs.org/lodash.chunk/-/lodash.chunk-4.2.0.tgz",
+      "integrity": "sha1-ZuXOH3btJ7QwPYxlEujRIW6BBrw=",
+      "dev": true
+    },
     "lodash.clone": {
     "lodash.clone": {
       "version": "3.0.3",
       "version": "3.0.3",
       "resolved": "https://registry.npmjs.org/lodash.clone/-/lodash.clone-3.0.3.tgz",
       "resolved": "https://registry.npmjs.org/lodash.clone/-/lodash.clone-3.0.3.tgz",
@@ -8482,6 +8575,12 @@
       "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz",
       "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz",
       "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w="
       "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w="
     },
     },
+    "lodash.padstart": {
+      "version": "4.6.1",
+      "resolved": "https://registry.npmjs.org/lodash.padstart/-/lodash.padstart-4.6.1.tgz",
+      "integrity": "sha1-0uPuv/DZ05rVD1y9G1KnvOa7YRs=",
+      "dev": true
+    },
     "lodash.sortby": {
     "lodash.sortby": {
       "version": "4.7.0",
       "version": "4.7.0",
       "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz",
       "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz",
@@ -9114,9 +9213,9 @@
       "dev": true
       "dev": true
     },
     },
     "nightwatch": {
     "nightwatch": {
-      "version": "1.1.12",
-      "resolved": "https://registry.npmjs.org/nightwatch/-/nightwatch-1.1.12.tgz",
-      "integrity": "sha512-xbQ+/oXRu/OSyidJ9CKvgM+9FpdFgOl/I/ZS69EBxaQeBFOupCcZJnJr6/zog7YOcpgKNZvzu9L4pXBErRfI1Q==",
+      "version": "1.1.13",
+      "resolved": "https://registry.npmjs.org/nightwatch/-/nightwatch-1.1.13.tgz",
+      "integrity": "sha512-p/EqaCnVqAvGB5uaKgBhPaXCT/gxspVjgDyFRp2NmQiNnmlpTpw2wun+O5eYjF/iYDtXra7FD7uUFFLBAESvNw==",
       "dev": true,
       "dev": true,
       "requires": {
       "requires": {
         "assertion-error": "^1.1.0",
         "assertion-error": "^1.1.0",
@@ -9505,6 +9604,18 @@
         "isobject": "^3.0.0"
         "isobject": "^3.0.0"
       }
       }
     },
     },
+    "object.assign": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz",
+      "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==",
+      "dev": true,
+      "requires": {
+        "define-properties": "^1.1.2",
+        "function-bind": "^1.1.1",
+        "has-symbols": "^1.0.0",
+        "object-keys": "^1.0.11"
+      }
+    },
     "object.getownpropertydescriptors": {
     "object.getownpropertydescriptors": {
       "version": "2.0.3",
       "version": "2.0.3",
       "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz",
       "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz",
@@ -11423,20 +11534,32 @@
       "dev": true
       "dev": true
     },
     },
     "sitemap": {
     "sitemap": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/sitemap/-/sitemap-2.2.0.tgz",
-      "integrity": "sha512-9Zoi3UBhSIt5jWENDRUbzsqLMJ+Fha3P2aQ2PRghmh0FOivtHsC4FAJdkAEKHvATajd74BWp/57Yh7kz/UA53Q==",
+      "version": "3.2.0",
+      "resolved": "https://registry.npmjs.org/sitemap/-/sitemap-3.2.0.tgz",
+      "integrity": "sha512-tP4B5l8PjMt5e/v4kxn3jQjjHpxYe/VXZUSIMIkOmbKCvbPwNU9PEsguaJl4Q09ZJqrOQlt691Si4VuevVtw9Q==",
       "dev": true,
       "dev": true,
       "requires": {
       "requires": {
-        "lodash": "^4.17.10",
-        "url-join": "^4.0.0",
-        "xmlbuilder": "^10.0.0"
+        "lodash.chunk": "^4.2.0",
+        "lodash.padstart": "^4.6.1",
+        "whatwg-url": "^7.0.0",
+        "xmlbuilder": "^13.0.0"
       },
       },
       "dependencies": {
       "dependencies": {
+        "whatwg-url": {
+          "version": "7.0.0",
+          "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.0.0.tgz",
+          "integrity": "sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ==",
+          "dev": true,
+          "requires": {
+            "lodash.sortby": "^4.7.0",
+            "tr46": "^1.0.1",
+            "webidl-conversions": "^4.0.2"
+          }
+        },
         "xmlbuilder": {
         "xmlbuilder": {
-          "version": "10.1.1",
-          "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-10.1.1.tgz",
-          "integrity": "sha512-OyzrcFLL/nb6fMGHbiRDuPup9ljBycsdCypwuyg5AAHvyWzGfChJpCXMG88AGTIMFhGZ9RccFN1e6lhg3hkwKg==",
+          "version": "13.0.2",
+          "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-13.0.2.tgz",
+          "integrity": "sha512-Eux0i2QdDYKbdbA6AM6xE4m6ZTZr4G4xF9kahI2ukSEMCzwce2eX9WlTI5J3s+NU7hpasFsr8hWIONae7LluAQ==",
           "dev": true
           "dev": true
         }
         }
       }
       }
@@ -12126,9 +12249,9 @@
       "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc="
       "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc="
     },
     },
     "svg-url-loader": {
     "svg-url-loader": {
-      "version": "2.3.3",
-      "resolved": "https://registry.npmjs.org/svg-url-loader/-/svg-url-loader-2.3.3.tgz",
-      "integrity": "sha512-dFXrXCrtyEucN6dWdvDGMipbVwPPez4OVVYUpxJwLJ5WuaPLYY9RmpOjUparDNs1+sPEXrsdDGIOCOK8NOy5VQ==",
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/svg-url-loader/-/svg-url-loader-3.0.0.tgz",
+      "integrity": "sha512-z50VtJLRPoZKUW8gv/YP4ld3QUknK4Vzi2q9dHWYW9iFfOeOMLbBo5x61YLD8O+BrzOk1rVB7ZNCFdX83DTgFg==",
       "dev": true,
       "dev": true,
       "requires": {
       "requires": {
         "file-loader": "4.0.0",
         "file-loader": "4.0.0",
@@ -12232,9 +12355,9 @@
       }
       }
     },
     },
     "terser": {
     "terser": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/terser/-/terser-4.0.0.tgz",
-      "integrity": "sha512-dOapGTU0hETFl1tCo4t56FN+2jffoKyER9qBGoUFyZ6y7WLoKT0bF+lAYi6B6YsILcGF3q1C2FBh8QcKSCgkgA==",
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/terser/-/terser-4.0.2.tgz",
+      "integrity": "sha512-IWLuJqTvx97KP3uTYkFVn93cXO+EtlzJu8TdJylq+H0VBDlPMIfQA9MBS5Vc5t3xTEUG1q0hIfHMpAP2R+gWTw==",
       "dev": true,
       "dev": true,
       "requires": {
       "requires": {
         "commander": "^2.19.0",
         "commander": "^2.19.0",
@@ -12779,12 +12902,6 @@
         }
         }
       }
       }
     },
     },
-    "url-join": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.0.tgz",
-      "integrity": "sha1-TTNA6AfTdzvamZH4MFrNzCpmXSo=",
-      "dev": true
-    },
     "url-loader": {
     "url-loader": {
       "version": "2.0.1",
       "version": "2.0.1",
       "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-2.0.1.tgz",
       "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-2.0.1.tgz",
@@ -12992,9 +13109,9 @@
       "dev": true
       "dev": true
     },
     },
     "webpack": {
     "webpack": {
-      "version": "4.35.0",
-      "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.35.0.tgz",
-      "integrity": "sha512-M5hL3qpVvtr8d4YaJANbAQBc4uT01G33eDpl/psRTBCfjxFTihdhin1NtAKB1ruDwzeVdcsHHV3NX+QsAgOosw==",
+      "version": "4.35.2",
+      "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.35.2.tgz",
+      "integrity": "sha512-TZAmorNymV4q66gAM/h90cEjG+N3627Q2MnkSgKlX/z3DlNVKUtqy57lz1WmZU2+FUZwzM+qm7cGaO95PyrX5A==",
       "dev": true,
       "dev": true,
       "requires": {
       "requires": {
         "@webassemblyjs/ast": "1.8.5",
         "@webassemblyjs/ast": "1.8.5",

+ 12 - 12
package.json

@@ -36,14 +36,14 @@
     "node >= 6.5"
     "node >= 6.5"
   ],
   ],
   "devDependencies": {
   "devDependencies": {
-    "@babel/core": "^7.4.5",
-    "@babel/plugin-transform-runtime": "^7.4.4",
-    "@babel/preset-env": "^7.4.5",
+    "@babel/core": "^7.5.0",
+    "@babel/plugin-transform-runtime": "^7.5.0",
+    "@babel/preset-env": "^7.5.0",
     "autoprefixer": "^9.6.0",
     "autoprefixer": "^9.6.0",
     "babel-eslint": "^10.0.2",
     "babel-eslint": "^10.0.2",
     "babel-loader": "^8.0.6",
     "babel-loader": "^8.0.6",
     "babel-plugin-syntax-dynamic-import": "^6.18.0",
     "babel-plugin-syntax-dynamic-import": "^6.18.0",
-    "chromedriver": "^75.0.0",
+    "chromedriver": "^75.0.1",
     "colors": "^1.3.3",
     "colors": "^1.3.3",
     "css-loader": "^3.0.0",
     "css-loader": "^3.0.0",
     "eslint": "^6.0.1",
     "eslint": "^6.0.1",
@@ -57,7 +57,7 @@
     "grunt-contrib-connect": "^2.0.0",
     "grunt-contrib-connect": "^2.0.0",
     "grunt-contrib-copy": "~1.0.0",
     "grunt-contrib-copy": "~1.0.0",
     "grunt-contrib-watch": "^1.1.0",
     "grunt-contrib-watch": "^1.1.0",
-    "grunt-eslint": "^21.1.0",
+    "grunt-eslint": "^22.0.0",
     "grunt-exec": "~3.0.0",
     "grunt-exec": "~3.0.0",
     "grunt-jsdoc": "^2.4.0",
     "grunt-jsdoc": "^2.4.0",
     "grunt-webpack": "^3.1.3",
     "grunt-webpack": "^3.1.3",
@@ -67,18 +67,18 @@
     "ink-docstrap": "^1.3.2",
     "ink-docstrap": "^1.3.2",
     "jsdoc-babel": "^0.5.0",
     "jsdoc-babel": "^0.5.0",
     "mini-css-extract-plugin": "^0.7.0",
     "mini-css-extract-plugin": "^0.7.0",
-    "nightwatch": "^1.1.12",
+    "nightwatch": "^1.1.13",
     "node-sass": "^4.12.0",
     "node-sass": "^4.12.0",
     "postcss-css-variables": "^0.13.0",
     "postcss-css-variables": "^0.13.0",
     "postcss-import": "^12.0.1",
     "postcss-import": "^12.0.1",
     "postcss-loader": "^3.0.0",
     "postcss-loader": "^3.0.0",
     "prompt": "^1.0.0",
     "prompt": "^1.0.0",
     "sass-loader": "^7.1.0",
     "sass-loader": "^7.1.0",
-    "sitemap": "^2.2.0",
+    "sitemap": "^3.2.0",
     "style-loader": "^0.23.1",
     "style-loader": "^0.23.1",
-    "svg-url-loader": "^2.3.3",
+    "svg-url-loader": "^3.0.0",
     "url-loader": "^2.0.1",
     "url-loader": "^2.0.1",
-    "webpack": "^4.35.0",
+    "webpack": "^4.35.2",
     "webpack-bundle-analyzer": "^3.3.2",
     "webpack-bundle-analyzer": "^3.3.2",
     "webpack-dev-server": "^3.7.2",
     "webpack-dev-server": "^3.7.2",
     "webpack-node-externals": "^1.7.2",
     "webpack-node-externals": "^1.7.2",
@@ -86,14 +86,14 @@
   },
   },
   "dependencies": {
   "dependencies": {
     "@babel/polyfill": "^7.4.4",
     "@babel/polyfill": "^7.4.4",
-    "@babel/runtime": "^7.4.5",
+    "@babel/runtime": "^7.5.0",
     "arrive": "^2.4.1",
     "arrive": "^2.4.1",
     "babel-plugin-transform-builtin-extend": "1.1.2",
     "babel-plugin-transform-builtin-extend": "1.1.2",
     "bcryptjs": "^2.4.3",
     "bcryptjs": "^2.4.3",
     "bignumber.js": "^9.0.0",
     "bignumber.js": "^9.0.0",
     "blakejs": "^1.1.0",
     "blakejs": "^1.1.0",
     "bootstrap": "4.3.1",
     "bootstrap": "4.3.1",
-    "bootstrap-colorpicker": "^2.5.3",
+    "bootstrap-colorpicker": "^3.1.2",
     "bootstrap-material-design": "^4.1.2",
     "bootstrap-material-design": "^4.1.2",
     "bson": "^4.0.2",
     "bson": "^4.0.2",
     "chi-squared": "^1.1.0",
     "chi-squared": "^1.1.0",
@@ -102,7 +102,7 @@
     "crypto-api": "^0.8.3",
     "crypto-api": "^0.8.3",
     "crypto-js": "^3.1.9-1",
     "crypto-js": "^3.1.9-1",
     "ctph.js": "0.0.5",
     "ctph.js": "0.0.5",
-    "d3": "^5.9.4",
+    "d3": "^5.9.7",
     "d3-hexbin": "^0.2.2",
     "d3-hexbin": "^0.2.2",
     "diff": "^4.0.1",
     "diff": "^4.0.1",
     "es6-promisify": "^6.0.1",
     "es6-promisify": "^6.0.1",

+ 1 - 1
src/core/Chef.mjs

@@ -43,7 +43,7 @@ class Chef {
         const startTime = new Date().getTime(),
         const startTime = new Date().getTime(),
             recipe      = new Recipe(recipeConfig),
             recipe      = new Recipe(recipeConfig),
             containsFc  = recipe.containsFlowControl(),
             containsFc  = recipe.containsFlowControl(),
-            notUTF8     = options && options.hasOwnProperty("treatAsUtf8") && !options.treatAsUtf8;
+            notUTF8     = options && "treatAsUtf8" in options && !options.treatAsUtf8;
         let error = false;
         let error = false;
 
 
         if (containsFc && ENVIRONMENT_IS_WORKER()) self.setOption("attemptHighlight", false);
         if (containsFc && ENVIRONMENT_IS_WORKER()) self.setOption("attemptHighlight", false);

+ 1 - 1
src/core/ChefWorker.js

@@ -175,7 +175,7 @@ self.loadRequiredModules = function(recipeConfig) {
     recipeConfig.forEach(op => {
     recipeConfig.forEach(op => {
         const module = self.OperationConfig[op.op].module;
         const module = self.OperationConfig[op.op].module;
 
 
-        if (!OpModules.hasOwnProperty(module)) {
+        if (!(module in OpModules)) {
             log.info(`Loading ${module} module`);
             log.info(`Loading ${module} module`);
             self.sendStatusMessage(`Loading ${module} module`);
             self.sendStatusMessage(`Loading ${module} module`);
             self.importScripts(`${self.docURL}/modules/${module}.js`);
             self.importScripts(`${self.docURL}/modules/${module}.js`);

+ 2 - 2
src/core/Dish.mjs

@@ -25,8 +25,8 @@ class Dish {
         this.type = Dish.ARRAY_BUFFER;
         this.type = Dish.ARRAY_BUFFER;
 
 
         if (dish &&
         if (dish &&
-            dish.hasOwnProperty("value") &&
-            dish.hasOwnProperty("type")) {
+            Object.prototype.hasOwnProperty.call(dish, "value") &&
+            Object.prototype.hasOwnProperty.call(dish, "type")) {
             this.set(dish.value, dish.type);
             this.set(dish.value, dish.type);
         }
         }
     }
     }

文件差異過大導致無法顯示
+ 1 - 0
src/core/Utils.mjs


+ 2 - 2
src/core/config/scripts/generateConfig.mjs

@@ -45,11 +45,11 @@ for (const opObj in Ops) {
         args:        op.args
         args:        op.args
     };
     };
 
 
-    if (op.hasOwnProperty("patterns")) {
+    if ("patterns" in op) {
         operationConfig[op.name].patterns = op.patterns;
         operationConfig[op.name].patterns = op.patterns;
     }
     }
 
 
-    if (!modules.hasOwnProperty(op.module))
+    if (!(op.module in modules))
         modules[op.module] = {};
         modules[op.module] = {};
     modules[op.module][op.name] = opObj;
     modules[op.module][op.name] = opObj;
 }
 }

+ 3 - 3
src/core/lib/Enigma.mjs

@@ -184,10 +184,10 @@ class PairMapBase {
                 // self-stecker
                 // self-stecker
                 return;
                 return;
             }
             }
-            if (this.map.hasOwnProperty(a)) {
+            if (Object.prototype.hasOwnProperty.call(this.map, a)) {
                 throw new OperationError(`${name} connects ${pair[0]} more than once`);
                 throw new OperationError(`${name} connects ${pair[0]} more than once`);
             }
             }
-            if (this.map.hasOwnProperty(b)) {
+            if (Object.prototype.hasOwnProperty.call(this.map, b)) {
                 throw new OperationError(`${name} connects ${pair[1]} more than once`);
                 throw new OperationError(`${name} connects ${pair[1]} more than once`);
             }
             }
             this.map[a] = b;
             this.map[a] = b;
@@ -203,7 +203,7 @@ class PairMapBase {
      * @returns {number}
      * @returns {number}
      */
      */
     transform(c) {
     transform(c) {
-        if (!this.map.hasOwnProperty(c)) {
+        if (!Object.prototype.hasOwnProperty.call(this.map, c)) {
             return c;
             return c;
         }
         }
         return this.map[c];
         return this.map[c];

+ 3 - 3
src/core/lib/Magic.mjs

@@ -338,7 +338,7 @@ class Magic {
         }
         }
 
 
         // Prune branches that result in unhelpful outputs
         // Prune branches that result in unhelpful outputs
-        results = results.filter(r =>
+        const prunedResults = results.filter(r =>
             (r.useful || r.data.length > 0) &&          // The operation resulted in ""
             (r.useful || r.data.length > 0) &&          // The operation resulted in ""
             (                                           // One of the following must be true
             (                                           // One of the following must be true
                 r.languageScores[0].probability > 0 ||    // Some kind of language was found
                 r.languageScores[0].probability > 0 ||    // Some kind of language was found
@@ -349,7 +349,7 @@ class Magic {
         );
         );
 
 
         // Return a sorted list of possible recipes along with their properties
         // Return a sorted list of possible recipes along with their properties
-        return results.sort((a, b) => {
+        return prunedResults.sort((a, b) => {
             // Each option is sorted based on its most likely language (lower is better)
             // Each option is sorted based on its most likely language (lower is better)
             let aScore = a.languageScores[0].score,
             let aScore = a.languageScores[0].score,
                 bScore = b.languageScores[0].score;
                 bScore = b.languageScores[0].score;
@@ -450,7 +450,7 @@ class Magic {
         const opPatterns = [];
         const opPatterns = [];
 
 
         for (const op in OperationConfig) {
         for (const op in OperationConfig) {
-            if (!OperationConfig[op].hasOwnProperty("patterns")) continue;
+            if (!("patterns" in OperationConfig[op])) continue;
 
 
             OperationConfig[op].patterns.forEach(pattern => {
             OperationConfig[op].patterns.forEach(pattern => {
                 opPatterns.push({
                 opPatterns.push({

+ 1 - 1
src/core/lib/Protobuf.mjs

@@ -124,7 +124,7 @@ class Protobuf {
         // Get the field key/values
         // Get the field key/values
         const key = field.key;
         const key = field.key;
         const value = field.value;
         const value = field.value;
-        object[key] = object.hasOwnProperty(key) ?
+        object[key] = Object.prototype.hasOwnProperty.call(object, key) ?
             object[key] instanceof Array ?
             object[key] instanceof Array ?
                 object[key].concat([value]) :
                 object[key].concat([value]) :
                 [object[key], value] :
                 [object[key], value] :

+ 2 - 2
src/core/lib/Typex.mjs

@@ -98,14 +98,14 @@ export class TypexMachine extends Enigma.EnigmaBase {
                 if (x === " ") {
                 if (x === " ") {
                     inputMod += "X";
                     inputMod += "X";
                 } else if (mode) {
                 } else if (mode) {
-                    if (KEYBOARD_REV.hasOwnProperty(x)) {
+                    if (Object.prototype.hasOwnProperty.call(KEYBOARD_REV, x)) {
                         inputMod += KEYBOARD_REV[x];
                         inputMod += KEYBOARD_REV[x];
                     } else {
                     } else {
                         mode = false;
                         mode = false;
                         inputMod += "V" + x;
                         inputMod += "V" + x;
                     }
                     }
                 } else {
                 } else {
-                    if (KEYBOARD_REV.hasOwnProperty(x)) {
+                    if (Object.prototype.hasOwnProperty.call(KEYBOARD_REV, x)) {
                         mode = true;
                         mode = true;
                         inputMod += "Z" + KEYBOARD_REV[x];
                         inputMod += "Z" + KEYBOARD_REV[x];
                     } else {
                     } else {

+ 2 - 2
src/core/operations/GroupIPAddresses.mjs

@@ -77,7 +77,7 @@ class GroupIPAddresses extends Operation {
                 ip = strToIpv4(match[1]) >>> 0;
                 ip = strToIpv4(match[1]) >>> 0;
                 network = ip & ipv4Mask;
                 network = ip & ipv4Mask;
 
 
-                if (ipv4Networks.hasOwnProperty(network)) {
+                if (network in ipv4Networks) {
                     ipv4Networks[network].push(ip);
                     ipv4Networks[network].push(ip);
                 } else {
                 } else {
                     ipv4Networks[network] = [ip];
                     ipv4Networks[network] = [ip];
@@ -93,7 +93,7 @@ class GroupIPAddresses extends Operation {
 
 
                 networkStr = ipv6ToStr(network, true);
                 networkStr = ipv6ToStr(network, true);
 
 
-                if (ipv6Networks.hasOwnProperty(networkStr)) {
+                if (networkStr in ipv6Networks) {
                     ipv6Networks[networkStr].push(ip);
                     ipv6Networks[networkStr].push(ip);
                 } else {
                 } else {
                     ipv6Networks[networkStr] = [ip];
                     ipv6Networks[networkStr] = [ip];

+ 1 - 1
src/core/operations/JWTVerify.mjs

@@ -50,7 +50,7 @@ class JWTVerify extends Operation {
                 "none"
                 "none"
             ]});
             ]});
 
 
-            if (verified.hasOwnProperty("name") && verified.name === "JsonWebTokenError") {
+            if (Object.prototype.hasOwnProperty.call(verified, "name") && verified.name === "JsonWebTokenError") {
                 throw new OperationError(verified.message);
                 throw new OperationError(verified.message);
             }
             }
 
 

+ 6 - 6
src/core/operations/ParseColourCode.mjs

@@ -96,7 +96,7 @@ class ParseColourCode extends Operation {
             cmyk = "cmyk(" + c + ", " + m + ", " + y + ", " + k + ")";
             cmyk = "cmyk(" + c + ", " + m + ", " + y + ", " + k + ")";
 
 
         // Generate output
         // Generate output
-        return `<div id="colorpicker" style="display: inline-block"></div>
+        return `<div id="colorpicker" style="white-space: normal;"></div>
 Hex:  ${hex}
 Hex:  ${hex}
 RGB:  ${rgb}
 RGB:  ${rgb}
 RGBA: ${rgba}
 RGBA: ${rgba}
@@ -109,12 +109,12 @@ CMYK: ${cmyk}
         color: '${rgba}',
         color: '${rgba}',
         container: true,
         container: true,
         inline: true,
         inline: true,
-    }).on('changeColor', function(e) {
-        var color = e.color.toRGB();
-        document.getElementById('input-text').value = 'rgba(' +
-            color.r + ', ' + color.g + ', ' + color.b + ', ' + color.a + ')';
+        useAlpha: true
+    }).on('colorpickerChange', function(e) {
+        var color = e.color.string('rgba');
+        document.getElementById('input-text').value = color;
         window.app.autoBake();
         window.app.autoBake();
-    }).children(".colorpicker").removeClass('dropdown-menu');
+    });
 </script>`;
 </script>`;
     }
     }
 
 

+ 1 - 1
src/core/operations/Register.mjs

@@ -101,7 +101,7 @@ class Register extends Operation {
             args = args.map(arg => {
             args = args.map(arg => {
                 if (typeof arg !== "string" && typeof arg !== "object") return arg;
                 if (typeof arg !== "string" && typeof arg !== "object") return arg;
 
 
-                if (typeof arg === "object" && arg.hasOwnProperty("string")) {
+                if (typeof arg === "object" && Object.prototype.hasOwnProperty.call(arg, "string")) {
                     arg.string = replaceRegister(arg.string);
                     arg.string = replaceRegister(arg.string);
                     return arg;
                     return arg;
                 }
                 }

+ 2 - 2
src/core/operations/ToHTMLEntity.mjs

@@ -59,13 +59,13 @@ class ToHTMLEntity extends Operation {
             } else if (convertAll) {
             } else if (convertAll) {
                 output += byteToEntity[charcodes[i]] || "&#" + charcodes[i] + ";";
                 output += byteToEntity[charcodes[i]] || "&#" + charcodes[i] + ";";
             } else if (numeric) {
             } else if (numeric) {
-                if (charcodes[i] > 255 || byteToEntity.hasOwnProperty(charcodes[i])) {
+                if (charcodes[i] > 255 || charcodes[i] in byteToEntity) {
                     output += "&#" + charcodes[i] + ";";
                     output += "&#" + charcodes[i] + ";";
                 } else {
                 } else {
                     output += Utils.chr(charcodes[i]);
                     output += Utils.chr(charcodes[i]);
                 }
                 }
             } else if (hexa) {
             } else if (hexa) {
-                if (charcodes[i] > 255 || byteToEntity.hasOwnProperty(charcodes[i])) {
+                if (charcodes[i] > 255 || charcodes[i] in byteToEntity) {
                     output += "&#x" + Utils.hex(charcodes[i]) + ";";
                     output += "&#x" + Utils.hex(charcodes[i]) + ";";
                 } else {
                 } else {
                     output += Utils.chr(charcodes[i]);
                     output += Utils.chr(charcodes[i]);

+ 2 - 2
src/web/App.mjs

@@ -216,7 +216,7 @@ class App {
 
 
             for (let j = 0; j < catConf.ops.length; j++) {
             for (let j = 0; j < catConf.ops.length; j++) {
                 const opName = catConf.ops[j];
                 const opName = catConf.ops[j];
-                if (!this.operations.hasOwnProperty(opName)) {
+                if (!(opName in this.operations)) {
                     log.warn(`${opName} could not be found.`);
                     log.warn(`${opName} could not be found.`);
                     continue;
                     continue;
                 }
                 }
@@ -330,7 +330,7 @@ class App {
     validFavourites(favourites) {
     validFavourites(favourites) {
         const validFavs = [];
         const validFavs = [];
         for (let i = 0; i < favourites.length; i++) {
         for (let i = 0; i < favourites.length; i++) {
-            if (this.operations.hasOwnProperty(favourites[i])) {
+            if (favourites[i] in this.operations) {
                 validFavs.push(favourites[i]);
                 validFavs.push(favourites[i]);
             } else {
             } else {
                 this.alert(`The operation "${Utils.escapeHtml(favourites[i])}" is no longer available. ` +
                 this.alert(`The operation "${Utils.escapeHtml(favourites[i])}" is no longer available. ` +

+ 3 - 3
src/web/InputWaiter.mjs

@@ -267,16 +267,16 @@ class InputWaiter {
      */
      */
     handleLoaderMessage(e) {
     handleLoaderMessage(e) {
         const r = e.data;
         const r = e.data;
-        if (r.hasOwnProperty("progress")) {
+        if (Object.prototype.hasOwnProperty.call(r, "progress")) {
             const fileLoaded = document.getElementById("input-file-loaded");
             const fileLoaded = document.getElementById("input-file-loaded");
             fileLoaded.textContent = r.progress + "%";
             fileLoaded.textContent = r.progress + "%";
         }
         }
 
 
-        if (r.hasOwnProperty("error")) {
+        if (Object.prototype.hasOwnProperty.call(r, "error")) {
             this.app.alert(r.error, 10000);
             this.app.alert(r.error, 10000);
         }
         }
 
 
-        if (r.hasOwnProperty("fileBuffer")) {
+        if (Object.prototype.hasOwnProperty.call(r, "fileBuffer")) {
             log.debug("Input file loaded");
             log.debug("Input file loaded");
             this.fileBuffer = r.fileBuffer;
             this.fileBuffer = r.fileBuffer;
             this.displayFilePreview();
             this.displayFilePreview();

+ 1 - 1
src/web/LoaderWorker.js

@@ -12,7 +12,7 @@
  */
  */
 self.addEventListener("message", function(e) {
 self.addEventListener("message", function(e) {
     const r = e.data;
     const r = e.data;
-    if (r.hasOwnProperty("file")) {
+    if (Object.prototype.hasOwnProperty.call(r, "file")) {
         self.loadFile(r.file);
         self.loadFile(r.file);
     }
     }
 });
 });

+ 1 - 1
src/web/Manager.mjs

@@ -275,7 +275,7 @@ class Manager {
             callback: callback.bind(scope || this)
             callback: callback.bind(scope || this)
         };
         };
 
 
-        if (this.dynamicHandlers.hasOwnProperty(eventType)) {
+        if (Object.prototype.hasOwnProperty.call(this.dynamicHandlers, eventType)) {
             // Listener already exists, add new handler to the appropriate list
             // Listener already exists, add new handler to the appropriate list
             this.dynamicHandlers[eventType].push(eventConfig);
             this.dynamicHandlers[eventType].push(eventConfig);
         } else {
         } else {

+ 1 - 1
src/web/SeasonalWaiter.mjs

@@ -81,7 +81,7 @@ class SeasonalWaiter {
         </div>`;
         </div>`;
         optionsBody.appendChild(optionItem);
         optionsBody.appendChild(optionItem);
 
 
-        if (!this.app.options.hasOwnProperty("clippy")) {
+        if (!("clippy" in this.app.options)) {
             this.app.options.clippy = true;
             this.app.options.clippy = true;
         }
         }
 
 

+ 1 - 1
tests/operations/TestRegister.mjs

@@ -66,7 +66,7 @@ import Chef from "../../src/core/Chef";
                             ret.output = "Expected an error but did not receive one.";
                             ret.output = "Expected an error but did not receive one.";
                         } else if (result.result === test.expectedOutput) {
                         } else if (result.result === test.expectedOutput) {
                             ret.status = "passing";
                             ret.status = "passing";
-                        } else if (test.hasOwnProperty("expectedMatch") && test.expectedMatch.test(result.result)) {
+                        } else if ("expectedMatch" in test && test.expectedMatch.test(result.result)) {
                             ret.status = "passing";
                             ret.status = "passing";
                         } else {
                         } else {
                             ret.status = "failing";
                             ret.status = "failing";

部分文件因文件數量過多而無法顯示