OSDN Git Service

Merge Master into dev.
authorZhiting Lin <zlin035@uottawa.ca>
Mon, 4 Mar 2019 08:58:55 +0000 (16:58 +0800)
committerZhiting Lin <zlin035@uottawa.ca>
Mon, 4 Mar 2019 08:58:55 +0000 (16:58 +0800)
1  2 
modules/interface/locales/en/translation.json
modules/interface/locales/zh/translation.json
package-lock.json
package.json
src/features/core/reducers.js

        "version": "2.6.1",
        "resolved": "http://registry.npm.taobao.org/async/download/async-2.6.1.tgz",
        "integrity": "sha1-skWiPKcZMAROxT+kaqAKPofGphA=",
 +      "dev": true,
        "requires": {
-         "lodash": "4.17.10"
+         "lodash": "4.17.11"
        }
      },
      "async-each": {
      "aws4": {
        "version": "1.7.0",
        "resolved": "http://registry.npm.taobao.org/aws4/download/aws4-1.7.0.tgz",
 -      "integrity": "sha1-1NDpudv8p3vwjusKikcVUP454ok="
 -    },
 -    "axios": {
 -      "version": "0.15.3",
 -      "resolved": "https://registry.npmjs.org/axios/-/axios-0.15.3.tgz",
 -      "integrity": "sha1-LJ1jiy4ZGgjqHWzJiOrda6W9wFM=",
 -      "optional": true,
 -      "requires": {
 -        "follow-redirects": "1.0.0"
 -      }
 +      "integrity": "sha1-1NDpudv8p3vwjusKikcVUP454ok=",
 +      "dev": true
      },
      "babel-cli": {
-       "version": "6.14.0",
-       "resolved": "http://registry.npm.taobao.org/babel-cli/download/babel-cli-6.14.0.tgz",
-       "integrity": "sha1-y8d4rR/05YyHuH1+CJk5k8LTt18=",
+       "version": "6.26.0",
+       "resolved": "https://registry.npmjs.org/babel-cli/-/babel-cli-6.26.0.tgz",
+       "integrity": "sha1-UCq1SHTX24itALiHoGODzgPQAvE=",
        "dev": true,
        "requires": {
          "babel-core": "6.26.3",
              "private": "0.1.8",
              "slash": "1.0.0",
              "source-map": "0.5.7"
-           },
-           "dependencies": {
-             "babel-register": {
-               "version": "6.26.0",
-               "resolved": "http://registry.npm.taobao.org/babel-register/download/babel-register-6.26.0.tgz",
-               "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=",
-               "dev": true,
-               "requires": {
-                 "babel-core": "6.26.3",
-                 "babel-runtime": "6.26.0",
-                 "core-js": "2.5.7",
-                 "home-or-tmp": "2.0.0",
-                 "lodash": "4.17.10",
-                 "mkdirp": "0.5.1",
-                 "source-map-support": "0.4.18"
-               }
-             }
            }
          },
-         "chalk": {
-           "version": "1.1.1",
-           "resolved": "http://registry.npm.taobao.org/chalk/download/chalk-1.1.1.tgz",
-           "integrity": "sha1-UJr7ZwZudJn36zU1x3RFdyri0Bk=",
+         "babel-polyfill": {
+           "version": "6.26.0",
+           "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz",
+           "integrity": "sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM=",
            "dev": true,
            "requires": {
-             "ansi-styles": "2.2.1",
-             "escape-string-regexp": "1.0.5",
-             "has-ansi": "2.0.0",
-             "strip-ansi": "3.0.1",
-             "supports-color": "2.0.0"
+             "babel-runtime": "6.26.0",
+             "core-js": "2.5.7",
+             "regenerator-runtime": "0.10.5"
            }
          },
-         "debug": {
-           "version": "2.6.9",
-           "resolved": "http://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz",
-           "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=",
+         "babel-register": {
+           "version": "6.26.0",
+           "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz",
+           "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=",
            "dev": true,
            "requires": {
-             "ms": "2.0.0"
+             "babel-core": "6.26.3",
+             "babel-runtime": "6.26.0",
+             "core-js": "2.5.7",
+             "home-or-tmp": "2.0.0",
+             "lodash": "4.17.11",
+             "mkdirp": "0.5.1",
+             "source-map-support": "0.4.18"
            }
          },
-         "glob": {
-           "version": "5.0.15",
-           "resolved": "http://registry.npm.taobao.org/glob/download/glob-5.0.15.tgz",
-           "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=",
+         "debug": {
+           "version": "2.6.9",
+           "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+           "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
            "dev": true,
            "requires": {
-             "inflight": "1.0.6",
-             "inherits": "2.0.3",
-             "minimatch": "3.0.4",
-             "once": "1.4.0",
-             "path-is-absolute": "1.0.1"
+             "ms": "2.0.0"
            }
          },
+         "regenerator-runtime": {
+           "version": "0.10.5",
+           "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz",
+           "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=",
+           "dev": true
+         },
          "source-map": {
            "version": "0.5.7",
 -          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
 +          "resolved": "http://registry.npm.taobao.org/source-map/download/source-map-0.5.7.tgz",
            "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
            "dev": true
          }
          "assert-plus": "1.0.0"
        }
      },
 -    "data-uri-to-buffer": {
 -      "version": "2.0.0",
 -      "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-2.0.0.tgz",
 -      "integrity": "sha512-YbKCNLPPP4inc0E5If4OaalBc7gpaM2MRv77Pv2VThVComLKfbGYtJcdDCViDyp1Wd4SebhHLz94vp91zbK6bw==",
 -      "optional": true,
 -      "requires": {
 -        "@types/node": "8.10.29"
 -      }
 -    },
      "date-format": {
        "version": "1.2.0",
-       "resolved": "http://registry.npm.taobao.org/date-format/download/date-format-1.2.0.tgz",
+       "resolved": "https://registry.npmjs.org/date-format/-/date-format-1.2.0.tgz",
        "integrity": "sha1-YV6CjiM90aubua4JUODOzPpuytg="
      },
      "date-now": {
        }
      },
      "extend": {
-       "version": "3.0.1",
-       "resolved": "http://registry.npm.taobao.org/extend/download/extend-3.0.1.tgz",
-       "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=",
+       "version": "3.0.2",
+       "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
 -      "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
++      "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
 +      "dev": true
      },
      "extglob": {
        "version": "0.3.2",
        "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=",
        "dev": true
      },
-     "log-symbols": {
-       "version": "1.0.2",
-       "resolved": "http://registry.npm.taobao.org/log-symbols/download/log-symbols-1.0.2.tgz",
-       "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=",
-       "dev": true,
-       "requires": {
-         "chalk": "1.1.3"
-       }
-     },
      "log4js": {
-       "version": "3.0.5",
-       "resolved": "https://registry.npmjs.org/log4js/-/log4js-3.0.5.tgz",
-       "integrity": "sha512-IX5c3G/7fuTtdr0JjOT2OIR12aTESVhsH6cEsijloYwKgcPRlO6DgOU72v0UFhWcoV1HN6+M3dwT89qVPLXm0w==",
 -      "version": "2.11.0",
 -      "resolved": "https://registry.npmjs.org/log4js/-/log4js-2.11.0.tgz",
 -      "integrity": "sha512-z1XdwyGFg8/WGkOyF6DPJjivCWNLKrklGdViywdYnSKOvgtEBo2UyEMZS5sD2mZrQlU3TvO8wDWLc8mzE1ncBQ==",
++      "version": "3.0.6",
++      "resolved": "https://registry.npmjs.org/log4js/-/log4js-3.0.6.tgz",
++      "integrity": "sha512-ezXZk6oPJCWL483zj64pNkMuY/NcRX5MPiB0zE6tjZM137aeusrOnW1ecxgF9cmwMWkBMhjteQxBPoZBh9FDxQ==",
        "requires": {
-         "circular-json": "0.5.5",
 -        "amqplib": "0.5.3",
 -        "axios": "0.15.3",
+         "circular-json": "0.5.9",
          "date-format": "1.2.0",
          "debug": "3.1.0",
 -        "hipchat-notifier": "1.1.0",
 -        "loggly": "1.1.1",
 -        "mailgun-js": "0.18.1",
 -        "nodemailer": "2.7.2",
 -        "redis": "2.8.0",
 -        "semver": "5.5.0",
 -        "slack-node": "0.2.0",
 +        "rfdc": "1.1.2",
          "streamroller": "0.7.0"
        }
      },
      "pseudomap": {
        "version": "1.0.2",
        "resolved": "http://registry.npm.taobao.org/pseudomap/download/pseudomap-1.0.2.tgz",
 -      "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM="
 +      "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
 +      "dev": true
      },
+     "pump": {
+       "version": "3.0.0",
+       "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
+       "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
+       "requires": {
+         "end-of-stream": "1.4.1",
+         "once": "1.4.0"
+       }
+     },
      "punycode": {
        "version": "1.4.1",
        "resolved": "http://registry.npm.taobao.org/punycode/download/punycode-1.4.1.tgz",
 -      "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4="
 +      "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
 +      "dev": true
      },
+     "qrcode": {
+       "version": "1.3.3",
+       "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.3.3.tgz",
+       "integrity": "sha512-SH7V13AcJusH3GT8bMNOGz4w0L+LjcpNOU/NiOgtBhT/5DoWeZE6D5ntMJnJ84AMkoaM4kjJJoHoh9g++8lWFg==",
+       "requires": {
+         "can-promise": "0.0.1",
+         "dijkstrajs": "1.0.1",
+         "isarray": "2.0.4",
+         "pngjs": "3.3.3",
+         "yargs": "12.0.5"
+       },
+       "dependencies": {
+         "ansi-regex": {
+           "version": "3.0.0",
+           "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+           "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg="
+         },
+         "camelcase": {
+           "version": "5.1.0",
+           "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.1.0.tgz",
+           "integrity": "sha512-WP9f9OBL/TAbwOFBJL79FoS9UKUmnp82RWnhlwTgrAJeMq7lytHhe0Jzc6/P7Zq0+2oviXJuPlvkZalWUug9gg=="
+         },
+         "cross-spawn": {
+           "version": "6.0.5",
+           "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
+           "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+           "requires": {
+             "nice-try": "1.0.4",
+             "path-key": "2.0.1",
+             "semver": "5.5.0",
+             "shebang-command": "1.2.0",
+             "which": "1.3.1"
+           }
+         },
+         "execa": {
+           "version": "1.0.0",
+           "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
+           "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
+           "requires": {
+             "cross-spawn": "6.0.5",
+             "get-stream": "4.1.0",
+             "is-stream": "1.1.0",
+             "npm-run-path": "2.0.2",
+             "p-finally": "1.0.0",
+             "signal-exit": "3.0.2",
+             "strip-eof": "1.0.0"
+           }
+         },
+         "find-up": {
+           "version": "3.0.0",
+           "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+           "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+           "requires": {
+             "locate-path": "3.0.0"
+           }
+         },
+         "get-stream": {
+           "version": "4.1.0",
+           "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
+           "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
+           "requires": {
+             "pump": "3.0.0"
+           }
+         },
+         "invert-kv": {
+           "version": "2.0.0",
+           "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz",
+           "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA=="
+         },
+         "is-fullwidth-code-point": {
+           "version": "2.0.0",
+           "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+           "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8="
+         },
+         "isarray": {
+           "version": "2.0.4",
+           "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.4.tgz",
+           "integrity": "sha512-GMxXOiUirWg1xTKRipM0Ek07rX+ubx4nNVElTJdNLYmNO/2YrDkgJGw9CljXn+r4EWiDQg/8lsRdHyg2PJuUaA=="
+         },
+         "lcid": {
+           "version": "2.0.0",
+           "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz",
+           "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==",
+           "requires": {
+             "invert-kv": "2.0.0"
+           }
+         },
+         "locate-path": {
+           "version": "3.0.0",
+           "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+           "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+           "requires": {
+             "p-locate": "3.0.0",
+             "path-exists": "3.0.0"
+           }
+         },
+         "mem": {
+           "version": "4.1.0",
+           "resolved": "https://registry.npmjs.org/mem/-/mem-4.1.0.tgz",
+           "integrity": "sha512-I5u6Q1x7wxO0kdOpYBB28xueHADYps5uty/zg936CiG8NTe5sJL8EjrCuLneuDW3PlMdZBGDIn8BirEVdovZvg==",
+           "requires": {
+             "map-age-cleaner": "0.1.3",
+             "mimic-fn": "1.2.0",
+             "p-is-promise": "2.0.0"
+           }
+         },
+         "os-locale": {
+           "version": "3.1.0",
+           "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz",
+           "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==",
+           "requires": {
+             "execa": "1.0.0",
+             "lcid": "2.0.0",
+             "mem": "4.1.0"
+           }
+         },
+         "p-limit": {
+           "version": "2.2.0",
+           "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz",
+           "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==",
+           "requires": {
+             "p-try": "2.0.0"
+           }
+         },
+         "p-locate": {
+           "version": "3.0.0",
+           "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+           "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+           "requires": {
+             "p-limit": "2.2.0"
+           }
+         },
+         "p-try": {
+           "version": "2.0.0",
+           "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz",
+           "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ=="
+         },
+         "path-exists": {
+           "version": "3.0.0",
+           "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+           "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU="
+         },
+         "string-width": {
+           "version": "2.1.1",
+           "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+           "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+           "requires": {
+             "is-fullwidth-code-point": "2.0.0",
+             "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=",
+           "requires": {
+             "ansi-regex": "3.0.0"
+           }
+         },
+         "yargs": {
+           "version": "12.0.5",
+           "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz",
+           "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==",
+           "requires": {
+             "cliui": "4.1.0",
+             "decamelize": "1.2.0",
+             "find-up": "3.0.0",
+             "get-caller-file": "1.0.2",
+             "os-locale": "3.1.0",
+             "require-directory": "2.1.1",
+             "require-main-filename": "1.0.1",
+             "set-blocking": "2.0.0",
+             "string-width": "2.1.1",
+             "which-module": "2.0.0",
+             "y18n": "3.2.1",
+             "yargs-parser": "11.1.1"
+           }
+         },
+         "yargs-parser": {
+           "version": "11.1.1",
+           "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz",
+           "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==",
+           "requires": {
+             "camelcase": "5.1.0",
+             "decamelize": "1.2.0"
+           }
+         }
+       }
+     },
      "qs": {
        "version": "6.5.2",
        "resolved": "http://registry.npm.taobao.org/qs/download/qs-6.5.2.tgz",
        "dependencies": {
          "isarray": {
            "version": "1.0.0",
-           "resolved": "http://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz",
+           "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
            "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
          },
 -        "process-nextick-args": {
 -          "version": "2.0.0",
 -          "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
 -          "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw=="
 -        },
          "readable-stream": {
            "version": "2.3.6",
-           "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+           "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
            "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
            "requires": {
              "core-util-is": "1.0.2",
diff --cc package.json
    ],
    "dependencies": {
      "babel-polyfill": "~6.16.0",
 +    "babel-register": "~6.22.0",
      "bignumber.js": "^7.2.1",
-     "bootstrap-sass": "~3.3.7",
+     "bootstrap-sass": "~3.4.1",
      "btoa": "^1.1.2",
      "classnames": "~2.2.5",
      "electron-settings": "~3.1.4",
 +    "fetch-ponyfill": "~3.0.2",
      "glob": "~7.1.2",
      "i18next": "^11.9.1",
 -    "log4js": "^2.5.3",
 -    "fetch-ponyfill": "~3.0.2",
      "i18next-browser-languagedetector": "^2.2.3",
-     "lodash": "~4.17.4",
+     "lodash": "~4.17.11",
 +    "log4js": "^3.0.5",
      "moment": "^2.22.1",
      "moment-timezone": "^0.5.17",
      "pluralize": "~3.0.0",
      "babel-preset-es2015": "~6.9.0",
      "babel-preset-react": "~6.5.0",
      "babel-preset-react-hmre": "~1.1.1",
 -    "babel-register": "~6.22.0",
      "bootstrap-loader": "~1.0.10",
+     "extend": "~3.0.2",
      "chai": "~3.5.0",
      "chai-as-promised": "~6.0.0",
      "command-line-args": "~3.0.1",
Simple merge