Niedzielski has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/387583 )

Change subject: Chore: upgrade dependencies
......................................................................

Chore: upgrade dependencies

• preact v8.2.5 → 8.2.6
  • Fix: AnyComponent type to allow parameterized class usage. (Removed
    workaround in preact-utils.ts.)
  • Update: add link preload "as" to HTMLAttributes type definition.
    (Removed workarounds in html-page.ts.)
  • (Added a workaround for preact/debug to the Webpack config.)

  https://github.com/developit/preact/releases/tag/8.2.6

• ts-loader v2.3.7 → 3.1.1
  Drop support for typescript < 2.0. This upgrade causes an error
  compiling node_modules so this patch temporarily disables the
  "checkJs" TypeScript compiler option.

  https://github.com/TypeStrong/ts-loader/releases/tag/v3.0.0
  https://github.com/TypeStrong/ts-loader/releases/tag/v3.0.3
  https://github.com/TypeStrong/ts-loader/releases/tag/v3.0.4
  https://github.com/TypeStrong/ts-loader/releases/tag/v3.0.5
  https://github.com/TypeStrong/ts-loader/releases/tag/v3.1.0
  https://github.com/TypeStrong/ts-loader/releases/tag/v3.1.1

• domino v1.0.29 → 1.0.30
  
https://github.com/fgnass/domino/blob/b4cacbb/CHANGELOG.md#domino-1030-24-oct-2017

• path-to-regexp v2.0.0 → 2.1.0
  
https://github.com/pillarjs/path-to-regexp/blob/b0b9a92/History.md#210--2017-10-20

• webpack-dev-server v2.9.2 → 2.9.3
  https://github.com/webpack/webpack-dev-server/releases/tag/v2.9.3

• extract-text-webpack-plugin v3.0.1 → 3.0.2
  
https://github.com/webpack-contrib/extract-text-webpack-plugin/releases/tag/v3.0.2

• typescript-eslint-parser v8.0.0 → 8.0.1
  https://github.com/eslint/typescript-eslint-parser/releases/tag/v8.0.1

• eslint v4.8.0 → 4.10.0
  Lots of changes as per usual. It's unclear why there's a version minor
  bump to v4.10.0.

  https://github.com/eslint/eslint/releases/tag/v4.9.0
  https://github.com/eslint/eslint/releases/tag/v4.10.0

• eslint-plugin-import v2.7.0 → 2.8.0
  
https://github.com/benmosher/eslint-plugin-import/blob/4071379/CHANGELOG.md#280---2017-10-18

• sinon v4.0.1 → 4.0.2
  
https://github.com/sinonjs/sinon/blob/39e5737/docs/changelog.md#402--2017-10-25

• @types/express v4.0.37 → 4.0.39
• @types/history v4.6.0 → 4.6.1
• @types/mocha v2.2.43 → 2.2.44
• @types/node v8.0.34 → 8.0.47

No significant output differences identified.

Bug: T176965
Bug: T177011
Change-Id: I0a06a7385520f499eb15f4a5be4d93ebf4bebaac
---
M package-lock.json
M package.json
M src/common/components/preact-utils.ts
M src/common/routers/route.ts
M src/common/routers/router.ts
M src/server/components/html-page.tsx
M tsconfig.json
M webpack.config.ts
8 files changed, 222 insertions(+), 164 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/marvin refs/changes/83/387583/1

diff --git a/package-lock.json b/package-lock.json
index 4b9f2ba..d31efd9 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -13,32 +13,43 @@
         "@types/webpack": "3.0.9"
       }
     },
+    "@types/body-parser": {
+      "version": "1.16.7",
+      "resolved": 
"https://registry.npmjs.org/@types/body-parser/-/body-parser-1.16.7.tgz";,
+      "integrity": 
"sha512-Obn1/GG0sYsnlAlhhSR1hvYRGBpQT+fzSi2IlGN8emCE4iu6f6xIjaq499B1sa7N9iBLzxyOUBo5bzgJd16BvA==",
+      "dev": true,
+      "requires": {
+        "@types/express": "4.0.39",
+        "@types/node": "8.0.47"
+      }
+    },
     "@types/compression": {
       "version": "0.0.34",
       "resolved": 
"https://registry.npmjs.org/@types/compression/-/compression-0.0.34.tgz";,
       "integrity": 
"sha512-NUEw+1DmdMFjVXSaSYf0okgyrnydH7q2DpWTA5/M5lgsUzwut0Ir8qgkTKCavM558CXhNrj5TTTqe3WCfUHMAQ==",
       "dev": true,
       "requires": {
-        "@types/express": "4.0.37"
+        "@types/express": "4.0.39"
       }
     },
     "@types/express": {
-      "version": "4.0.37",
-      "resolved": 
"https://registry.npmjs.org/@types/express/-/express-4.0.37.tgz";,
-      "integrity": 
"sha512-tIULTLzQpFFs5/PKnFIAFOsXQxss76glppbVKR3/jddPK26SBsD5HF5grn5G2jOGtpRWSBvYmDYoduVv+3wOXg==",
+      "version": "4.0.39",
+      "resolved": 
"https://registry.npmjs.org/@types/express/-/express-4.0.39.tgz";,
+      "integrity": 
"sha512-dBUam7jEjyuEofigUXCtublUHknRZvcRgITlGsTbFgPvnTwtQUt2NgLakbsf+PsGo/Nupqr3IXCYsOpBpofyrA==",
       "dev": true,
       "requires": {
-        "@types/express-serve-static-core": "4.0.52",
-        "@types/serve-static": "1.7.32"
+        "@types/body-parser": "1.16.7",
+        "@types/express-serve-static-core": "4.0.56",
+        "@types/serve-static": "1.13.0"
       }
     },
     "@types/express-serve-static-core": {
-      "version": "4.0.52",
-      "resolved": 
"https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.0.52.tgz";,
-      "integrity": 
"sha512-UpN389YLcQEIn1t4Kxc8TlCrg43r6o8IcF57LvmbCGNhWzz0dEg4AaUsN6IHrrSjPzPmmJ1FLYXGPP/expXOWg==",
+      "version": "4.0.56",
+      "resolved": 
"https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.0.56.tgz";,
+      "integrity": 
"sha512-/0nwIzF1Bd4KGwW4lhDZYi5StmCZG1DIXXMfQ/zjORzlm4+F1eRA4c6yJQrt4hqX//TDtPULpSlYwmSNyCMeMg==",
       "dev": true,
       "requires": {
-        "@types/node": "8.0.34"
+        "@types/node": "8.0.47"
       }
     },
     "@types/extract-text-webpack-plugin": {
@@ -51,27 +62,27 @@
       }
     },
     "@types/history": {
-      "version": "4.6.0",
-      "resolved": 
"https://registry.npmjs.org/@types/history/-/history-4.6.0.tgz";,
-      "integrity": 
"sha512-2A0stT6b61DANLErAfSkeQ77N+A3FbR7ardUJUP3xm9f4W8qtG9ispBYDUX42Fl1EbR0rqSV3IWjbB6ew7hXRw==",
+      "version": "4.6.1",
+      "resolved": 
"https://registry.npmjs.org/@types/history/-/history-4.6.1.tgz";,
+      "integrity": 
"sha512-Z8DQIdWtl0ff+tXDKeG3P0IOXd0kCI5wCXqZZjymjwcwe/o46BlEXeDrN09L9qnhzHmo9ObpkrlMCHPfbVvewA==",
       "dev": true
     },
     "@types/mime": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.1.tgz";,
-      "integrity": 
"sha512-rek8twk9C58gHYqIrUlJsx8NQMhlxqHzln9Z9ODqiNgv3/s+ZwIrfr+djqzsnVM12xe9hL98iJ20lj2RvCBv6A==",
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/@types/mime/-/mime-2.0.0.tgz";,
+      "integrity": 
"sha512-A2TAGbTFdBw9azHbpVd+/FkdW2T6msN1uct1O9bH3vTerEHKZhTXJUQXy+hNq1B0RagfU8U+KBdqiZpxjhOUQA==",
       "dev": true
     },
     "@types/mocha": {
-      "version": "2.2.43",
-      "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-2.2.43.tgz";,
-      "integrity": 
"sha512-xNlAmH+lRJdUMXClMTI9Y0pRqIojdxfm7DHsIxoB2iTzu3fnPmSMEN8SsSx0cdwV36d02PWCWaDUoZPDSln+xw==",
+      "version": "2.2.44",
+      "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-2.2.44.tgz";,
+      "integrity": 
"sha512-k2tWTQU8G4+iSMvqKi0Q9IIsWAp/n8xzdZS4Q4YVIltApoMA00wFBFdlJnmoaK1/z7B0Cy0yPe6GgXteSmdUNw==",
       "dev": true
     },
     "@types/node": {
-      "version": "8.0.34",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-8.0.34.tgz";,
-      "integrity": 
"sha512-Jnmm57+nHqvJUPwUzt1CLoLzFtF2B2vgG7cWFut+a4nqTp9/L6pL0N+o0Jt3V7AQnCKMsPEqQpLFZYleBCdq3w==",
+      "version": "8.0.47",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-8.0.47.tgz";,
+      "integrity": 
"sha512-kOwL746WVvt/9Phf6/JgX/bsGQvbrK5iUgzyfwZNcKVFcjAUVSpF9HxevLTld2SG9aywYHOILj38arDdY1r/iQ==",
       "dev": true
     },
     "@types/node-fetch": {
@@ -80,17 +91,17 @@
       "integrity": "sha1-UhB46PDGmhWOUCIAWsqS0mIPbVc=",
       "dev": true,
       "requires": {
-        "@types/node": "8.0.34"
+        "@types/node": "8.0.47"
       }
     },
     "@types/serve-static": {
-      "version": "1.7.32",
-      "resolved": 
"https://registry.npmjs.org/@types/serve-static/-/serve-static-1.7.32.tgz";,
-      "integrity": 
"sha512-WpI0g7M1FiOmJ/a97Qrjafq2I938tjAZ3hZr9O7sXyA6oUhH3bqUNZIt7r1KZg8TQAKxcvxt6JjQ5XuLfIBFvg==",
+      "version": "1.13.0",
+      "resolved": 
"https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.0.tgz";,
+      "integrity": 
"sha512-wvQkePwCDZoyQPGb64DTl2TEeLw54CQFXjY+tznxYYxNcBb4LG40ezoVbMDa0epwE4yogB0f42jCaH0356x5Mg==",
       "dev": true,
       "requires": {
-        "@types/express-serve-static-core": "4.0.52",
-        "@types/mime": "1.3.1"
+        "@types/express-serve-static-core": "4.0.56",
+        "@types/mime": "2.0.0"
       }
     },
     "@types/source-map": {
@@ -111,7 +122,7 @@
       "integrity": 
"sha512-Bskfd5wztYbQ/mvU4rgHUB3fKcjW2hA6o/F0JN8O+jRPJQDN/2pPV6SmdIiFm2vLyyN/XQzoCULTE05ZOpnNbQ==",
       "dev": true,
       "requires": {
-        "@types/node": "8.0.34"
+        "@types/node": "8.0.47"
       }
     },
     "@types/uglify-js": {
@@ -129,7 +140,7 @@
       "integrity": 
"sha512-xXqusBBKbYb8fA1jtE3iO75uRW1ejqGuH93V+6fhbfNY59ndKjfhftJVxcSaYAMDjmFTRBHy82d+513JKuHD5g==",
       "dev": true,
       "requires": {
-        "@types/node": "8.0.34",
+        "@types/node": "8.0.47",
         "@types/tapable": "0.2.3",
         "@types/uglify-js": "2.6.29"
       }
@@ -1530,9 +1541,9 @@
       }
     },
     "domino": {
-      "version": "1.0.29",
-      "resolved": "https://registry.npmjs.org/domino/-/domino-1.0.29.tgz";,
-      "integrity": "sha1-3oqh9vmOPFU4/remH6acHqu6zgY="
+      "version": "1.0.30",
+      "resolved": "https://registry.npmjs.org/domino/-/domino-1.0.30.tgz";,
+      "integrity": 
"sha512-ikq8WiDSkICdkElud317F2Sigc6A3EDpWsxWBwIZqOl95km4p/Vc9Rj98id7qKgsjDmExj0AVM7JOd4bb647Xg=="
     },
     "domutils": {
       "version": "1.5.1",
@@ -1770,14 +1781,14 @@
       }
     },
     "eslint": {
-      "version": "4.8.0",
-      "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.8.0.tgz";,
-      "integrity": "sha1-Ip7w41Tg5h2DfHqA/fuoJeGZgV4=",
+      "version": "4.10.0",
+      "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.10.0.tgz";,
+      "integrity": 
"sha512-MMVl8P/dYUFZEvolL8PYt7qc5LNdS2lwheq9BYa5Y07FblhcZqFyaUqlS8TW5QITGex21tV4Lk0a3fK8lsJIkA==",
       "dev": true,
       "requires": {
         "ajv": "5.2.2",
         "babel-code-frame": "6.26.0",
-        "chalk": "2.1.0",
+        "chalk": "2.3.0",
         "concat-stream": "1.6.0",
         "cross-spawn": "5.1.0",
         "debug": "3.1.0",
@@ -1791,7 +1802,7 @@
         "functional-red-black-tree": "1.0.1",
         "glob": "7.1.2",
         "globals": "9.18.0",
-        "ignore": "3.3.5",
+        "ignore": "3.3.7",
         "imurmurhash": "0.1.4",
         "inquirer": "3.3.0",
         "is-resolvable": "1.0.0",
@@ -1830,14 +1841,14 @@
           }
         },
         "chalk": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz";,
-          "integrity": 
"sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==",
+          "version": "2.3.0",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz";,
+          "integrity": 
"sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
           "dev": true,
           "requires": {
             "ansi-styles": "3.2.0",
             "escape-string-regexp": "1.0.5",
-            "supports-color": "4.4.0"
+            "supports-color": "4.5.0"
           }
         },
         "debug": {
@@ -1881,9 +1892,9 @@
           }
         },
         "supports-color": {
-          "version": "4.4.0",
-          "resolved": 
"https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz";,
-          "integrity": 
"sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==",
+          "version": "4.5.0",
+          "resolved": 
"https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz";,
+          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
           "dev": true,
           "requires": {
             "has-flag": "2.0.0"
@@ -1919,7 +1930,7 @@
       "dev": true,
       "requires": {
         "debug": "2.6.8",
-        "resolve": "1.4.0"
+        "resolve": "1.5.0"
       }
     },
     "eslint-module-utils": {
@@ -1933,9 +1944,9 @@
       }
     },
     "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==",
+      "version": "2.8.0",
+      "resolved": 
"https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.8.0.tgz";,
+      "integrity": 
"sha512-Rf7dfKJxZ16QuTgVv1OYNxkZcsu/hULFnC+e+w0Gzi6jMC3guQoWQgxYxc54IDRinlb6/0v5z/PxxIKmVctN+g==",
       "dev": true,
       "requires": {
         "builtin-modules": "1.1.1",
@@ -2207,7 +2218,7 @@
       "dev": true,
       "requires": {
         "iconv-lite": "0.4.18",
-        "jschardet": "1.5.1",
+        "jschardet": "1.6.0",
         "tmp": "0.0.33"
       }
     },
@@ -2221,9 +2232,9 @@
       }
     },
     "extract-text-webpack-plugin": {
-      "version": "3.0.1",
-      "resolved": 
"https://registry.npmjs.org/extract-text-webpack-plugin/-/extract-text-webpack-plugin-3.0.1.tgz";,
-      "integrity": 
"sha512-zv0/Cg2mU8uMzeQQ3oyfJvZU4Iv/GbQYUIr/HU+8pZetT/0W3xj6XAbxoG4gsp8SbnYcFd4BOsCAZPl9NvplPw==",
+      "version": "3.0.2",
+      "resolved": 
"https://registry.npmjs.org/extract-text-webpack-plugin/-/extract-text-webpack-plugin-3.0.2.tgz";,
+      "integrity": 
"sha512-bt/LZ4m5Rqt/Crl2HiKuAl/oqg0psx1tsTLkvWbJen1CtD+fftkZhMaQ9HOtY2gWsl2Wq+sABmMVi9z3DhKWQQ==",
       "dev": true,
       "requires": {
         "async": "2.5.0",
@@ -2242,6 +2253,12 @@
       "version": "1.1.2",
       "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.1.2.tgz";,
       "integrity": 
"sha512-KaJUt+M9t1qaIteSvjc6P3RbMdXsNhK61GRftR6SNxqmhthcd9MGIi4T+o0jD8LUSpSnSKXE20nLtJ3fOHxQig==",
+      "dev": true
+    },
+    "fast-json-stable-stringify": {
+      "version": "2.0.0",
+      "resolved": 
"https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz";,
+      "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
       "dev": true
     },
     "fast-levenshtein": {
@@ -2816,9 +2833,9 @@
       "dev": true
     },
     "ignore": {
-      "version": "3.3.5",
-      "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.5.tgz";,
-      "integrity": 
"sha512-JLH93mL8amZQhh/p6mfQgVBH3M6epNq3DfsXsTSuSrInVjwyYlFE1nv2AgfRCC8PoOhM0jwQ5v8s9LgbK7yGDw==",
+      "version": "3.3.7",
+      "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.7.tgz";,
+      "integrity": 
"sha512-YGG3ejvBNHRqu0559EOxxNFihD0AjpvHlC/pdGKd3X3ofe+CoJkYazwNJYTNebqpPKN+VVQbh4ZFn1DivMNuHA==",
       "dev": true
     },
     "ignore-by-default": {
@@ -2838,6 +2855,27 @@
       "resolved": 
"https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz";,
       "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=",
       "dev": true
+    },
+    "import-local": {
+      "version": "0.1.1",
+      "resolved": 
"https://registry.npmjs.org/import-local/-/import-local-0.1.1.tgz";,
+      "integrity": "sha1-sReVcqrNwRxqkQCftDDbyrX2aKg=",
+      "dev": true,
+      "requires": {
+        "pkg-dir": "2.0.0",
+        "resolve-cwd": "2.0.0"
+      },
+      "dependencies": {
+        "pkg-dir": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz";,
+          "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=",
+          "dev": true,
+          "requires": {
+            "find-up": "2.1.0"
+          }
+        }
+      }
     },
     "imurmurhash": {
       "version": "0.1.4",
@@ -2894,7 +2932,7 @@
       "dev": true,
       "requires": {
         "ansi-escapes": "3.0.0",
-        "chalk": "2.1.0",
+        "chalk": "2.3.0",
         "cli-cursor": "2.1.0",
         "cli-width": "2.2.0",
         "external-editor": "2.0.5",
@@ -2925,14 +2963,14 @@
           }
         },
         "chalk": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz";,
-          "integrity": 
"sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==",
+          "version": "2.3.0",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz";,
+          "integrity": 
"sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
           "dev": true,
           "requires": {
             "ansi-styles": "3.2.0",
             "escape-string-regexp": "1.0.5",
-            "supports-color": "4.4.0"
+            "supports-color": "4.5.0"
           }
         },
         "has-flag": {
@@ -2951,9 +2989,9 @@
           }
         },
         "supports-color": {
-          "version": "4.4.0",
-          "resolved": 
"https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz";,
-          "integrity": 
"sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==",
+          "version": "4.5.0",
+          "resolved": 
"https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz";,
+          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
           "dev": true,
           "requires": {
             "has-flag": "2.0.0"
@@ -3300,9 +3338,9 @@
       }
     },
     "jschardet": {
-      "version": "1.5.1",
-      "resolved": "https://registry.npmjs.org/jschardet/-/jschardet-1.5.1.tgz";,
-      "integrity": 
"sha512-vE2hT1D0HLZCLLclfBSfkfTTedhVj0fubHpJBHKwwUWX0nSbhPAfk+SG9rTX95BYNmau8rGFfCeaT6T5OW1C2A==",
+      "version": "1.6.0",
+      "resolved": "https://registry.npmjs.org/jschardet/-/jschardet-1.6.0.tgz";,
+      "integrity": 
"sha512-xYuhvQ7I9PDJIGBWev9xm0+SMSed3ZDBAmvVjbFR1ZRLAF+vlXcQu6cRI9uAlj81rzikElRVteehwV7DuX2ZmQ==",
       "dev": true
     },
     "jsesc": {
@@ -3381,9 +3419,9 @@
       "dev": true
     },
     "just-extend": {
-      "version": "1.1.22",
-      "resolved": 
"https://registry.npmjs.org/just-extend/-/just-extend-1.1.22.tgz";,
-      "integrity": "sha1-MzCvdWyralQnAMZLLk5KoGLVL/8=",
+      "version": "1.1.27",
+      "resolved": 
"https://registry.npmjs.org/just-extend/-/just-extend-1.1.27.tgz";,
+      "integrity": 
"sha512-mJVp13Ix6gFo3SBAy9U/kL+oeZqzlYYYLQBwXVBlVzIsZwBqGREnOro24oC/8s8aox+rJhtZ2DiQof++IrkA+g==",
       "dev": true
     },
     "kind-of": {
@@ -4137,12 +4175,6 @@
       "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=",
       "dev": true
     },
-    "native-promise-only": {
-      "version": "0.8.1",
-      "resolved": 
"https://registry.npmjs.org/native-promise-only/-/native-promise-only-0.8.1.tgz";,
-      "integrity": "sha1-IKMYwwy0X3H+et+/eyHJnBRy7xE=",
-      "dev": true
-    },
     "natural-compare": {
       "version": "1.4.0",
       "resolved": 
"https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz";,
@@ -4155,13 +4187,13 @@
       "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk="
     },
     "nise": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/nise/-/nise-1.1.1.tgz";,
-      "integrity": 
"sha512-f5DMJB0MqBaSuP2NAwPx7HyVKPdaozds0KsNe9XIP3npKWt/QUg73l5TTLRTSwfG/Y3AB0ktacuxX4QNcg6vVw==",
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/nise/-/nise-1.2.0.tgz";,
+      "integrity": 
"sha512-q9jXh3UNsMV28KeqI43ILz5+c3l+RiNW8mhurEwCKckuHQbL+hTJIKKTiUlCPKlgQ/OukFvSnKB/Jk3+sFbkGA==",
       "dev": true,
       "requires": {
         "formatio": "1.2.0",
-        "just-extend": "1.1.22",
+        "just-extend": "1.1.27",
         "lolex": "1.6.0",
         "path-to-regexp": "1.7.0",
         "text-encoding": "0.6.4"
@@ -4748,9 +4780,9 @@
       "dev": true
     },
     "path-to-regexp": {
-      "version": "2.0.0",
-      "resolved": 
"https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.0.0.tgz";,
-      "integrity": 
"sha512-DPZblKdQsbV6B3fHknj89h6Nw/Z5zFK0nFX+DVN7y8a+IUHf9taJWvMK+ue0+AEjXrke0KVRCcfm2pOYGSRk8g=="
+      "version": "2.1.0",
+      "resolved": 
"https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.1.0.tgz";,
+      "integrity": 
"sha512-dZY7QPCPp5r9cnNuQ955mOv4ZFVDXY/yvqeV7Y1W2PJA3PEFcuow9xKFfJxbBj1pIjOAP+M2B4/7xubmykLrXw=="
     },
     "path-type": {
       "version": "2.0.0",
@@ -5422,9 +5454,9 @@
       }
     },
     "preact": {
-      "version": "8.2.5",
-      "resolved": "https://registry.npmjs.org/preact/-/preact-8.2.5.tgz";,
-      "integrity": "sha1-y/o5YqgBJ2gVn20B1G+cHrMhPAo="
+      "version": "8.2.6",
+      "resolved": "https://registry.npmjs.org/preact/-/preact-8.2.6.tgz";,
+      "integrity": "sha1-ACi0Ju+Y/Mp0Gjxhf/W4E7mpR8c="
     },
     "preact-render-to-string": {
       "version": "3.7.0",
@@ -5874,12 +5906,29 @@
       "dev": true
     },
     "resolve": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.4.0.tgz";,
-      "integrity": 
"sha512-aW7sVKPufyHqOmyyLzg/J+8606v5nevBgaliIlV7nUpVMsDnoBGV/cbSLNjZAg9q0Cfd/+easKVKQ8vOu8fn1Q==",
+      "version": "1.5.0",
+      "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz";,
+      "integrity": 
"sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==",
       "dev": true,
       "requires": {
         "path-parse": "1.0.5"
+      }
+    },
+    "resolve-cwd": {
+      "version": "2.0.0",
+      "resolved": 
"https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz";,
+      "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=",
+      "dev": true,
+      "requires": {
+        "resolve-from": "3.0.0"
+      },
+      "dependencies": {
+        "resolve-from": {
+          "version": "3.0.0",
+          "resolved": 
"https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz";,
+          "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=",
+          "dev": true
+        }
       }
     },
     "resolve-from": {
@@ -6158,36 +6207,33 @@
       "dev": true
     },
     "sinon": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/sinon/-/sinon-4.0.1.tgz";,
-      "integrity": 
"sha512-4qIY0pCWCvGCJpV/1JkFu9kbsNEZ9O34cG1oru/c7OCDtrEs50Gq/VjkA2ID5ZwLyoNx1i1ws118oh/p6fVeDg==",
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/sinon/-/sinon-4.0.2.tgz";,
+      "integrity": 
"sha512-4mUsjHfjrHyPFGDTtNJl0q8cv4VOJGvQykI1r3fnn05ys0sQL9M1Y+DyyGNWLD2PMcoyqjJ/nFDm4K54V1eQOg==",
       "dev": true,
       "requires": {
         "diff": "3.2.0",
         "formatio": "1.2.0",
         "lodash.get": "4.4.2",
         "lolex": "2.1.3",
-        "native-promise-only": "0.8.1",
-        "nise": "1.1.1",
-        "path-to-regexp": "1.7.0",
-        "samsam": "1.3.0",
-        "text-encoding": "0.6.4",
+        "nise": "1.2.0",
+        "supports-color": "4.5.0",
         "type-detect": "4.0.3"
       },
       "dependencies": {
-        "isarray": {
-          "version": "0.0.1",
-          "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz";,
-          "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
+        "has-flag": {
+          "version": "2.0.0",
+          "resolved": 
"https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz";,
+          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
           "dev": true
         },
-        "path-to-regexp": {
-          "version": "1.7.0",
-          "resolved": 
"https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz";,
-          "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=",
+        "supports-color": {
+          "version": "4.5.0",
+          "resolved": 
"https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz";,
+          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
           "dev": true,
           "requires": {
-            "isarray": "0.0.1"
+            "has-flag": "2.0.0"
           }
         }
       }
@@ -6516,24 +6562,24 @@
       "integrity": 
"sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==",
       "dev": true,
       "requires": {
-        "ajv": "5.2.3",
+        "ajv": "5.3.0",
         "ajv-keywords": "2.1.0",
-        "chalk": "2.1.0",
+        "chalk": "2.3.0",
         "lodash": "4.17.4",
         "slice-ansi": "1.0.0",
         "string-width": "2.1.1"
       },
       "dependencies": {
         "ajv": {
-          "version": "5.2.3",
-          "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.2.3.tgz";,
-          "integrity": "sha1-wG9Zh3jETGsWGrr+NGa4GtGBTtI=",
+          "version": "5.3.0",
+          "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.3.0.tgz";,
+          "integrity": "sha1-RBT/dKUIecII7l/cgm4ywwNUnto=",
           "dev": true,
           "requires": {
             "co": "4.6.0",
             "fast-deep-equal": "1.0.0",
-            "json-schema-traverse": "0.3.1",
-            "json-stable-stringify": "1.0.1"
+            "fast-json-stable-stringify": "2.0.0",
+            "json-schema-traverse": "0.3.1"
           }
         },
         "ansi-styles": {
@@ -6546,14 +6592,14 @@
           }
         },
         "chalk": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz";,
-          "integrity": 
"sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==",
+          "version": "2.3.0",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz";,
+          "integrity": 
"sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
           "dev": true,
           "requires": {
             "ansi-styles": "3.2.0",
             "escape-string-regexp": "1.0.5",
-            "supports-color": "4.4.0"
+            "supports-color": "4.5.0"
           }
         },
         "has-flag": {
@@ -6563,9 +6609,9 @@
           "dev": true
         },
         "supports-color": {
-          "version": "4.4.0",
-          "resolved": 
"https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz";,
-          "integrity": 
"sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==",
+          "version": "4.5.0",
+          "resolved": 
"https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz";,
+          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
           "dev": true,
           "requires": {
             "has-flag": "2.0.0"
@@ -6674,12 +6720,12 @@
       "dev": true
     },
     "ts-loader": {
-      "version": "2.3.7",
-      "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-2.3.7.tgz";,
-      "integrity": 
"sha512-8t3bu2FcEkXb+D4L+Cn8qiK2E2C6Ms4/GQChvz6IMbVurcFHLXrhW4EMtfaol1a1ASQACZGDUGit4NHnX9g7hQ==",
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-3.1.1.tgz";,
+      "integrity": 
"sha512-AQmLFSIgTiR8AlS5BxqvoHpZ3OUTwHHuDZTAZ2KcKsYRz/yANGeQn4Se/DCQ4cn1/eVvN37f/caVW4+kUPNNHw==",
       "dev": true,
       "requires": {
-        "chalk": "2.1.0",
+        "chalk": "2.3.0",
         "enhanced-resolve": "3.4.1",
         "loader-utils": "1.1.0",
         "semver": "5.4.1"
@@ -6695,14 +6741,14 @@
           }
         },
         "chalk": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz";,
-          "integrity": 
"sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==",
+          "version": "2.3.0",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz";,
+          "integrity": 
"sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
           "dev": true,
           "requires": {
             "ansi-styles": "3.2.0",
             "escape-string-regexp": "1.0.5",
-            "supports-color": "4.4.0"
+            "supports-color": "4.5.0"
           }
         },
         "has-flag": {
@@ -6712,9 +6758,9 @@
           "dev": true
         },
         "supports-color": {
-          "version": "4.4.0",
-          "resolved": 
"https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz";,
-          "integrity": 
"sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==",
+          "version": "4.5.0",
+          "resolved": 
"https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz";,
+          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
           "dev": true,
           "requires": {
             "has-flag": "2.0.0"
@@ -6836,9 +6882,9 @@
       "dev": true
     },
     "typescript-eslint-parser": {
-      "version": "8.0.0",
-      "resolved": 
"https://registry.npmjs.org/typescript-eslint-parser/-/typescript-eslint-parser-8.0.0.tgz";,
-      "integrity": "sha1-gfcLv/yhE5wdxaEwEgin/YIT+LI=",
+      "version": "8.0.1",
+      "resolved": 
"https://registry.npmjs.org/typescript-eslint-parser/-/typescript-eslint-parser-8.0.1.tgz";,
+      "integrity": "sha1-6MrFN9mW4Ww9uw18TVCXmeZ6/gw=",
       "dev": true,
       "requires": {
         "lodash.unescape": "4.0.1",
@@ -7160,9 +7206,9 @@
       }
     },
     "webpack-dev-server": {
-      "version": "2.9.2",
-      "resolved": 
"https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-2.9.2.tgz";,
-      "integrity": 
"sha512-ppL53TttdTPfiZA4EphKRE4QgtXssjLdHBwNs/MOx/fWLHCrZ0JeyE+eFcHrAcv7qOJgvR5jFZ1quO7i1LNieA==",
+      "version": "2.9.3",
+      "resolved": 
"https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-2.9.3.tgz";,
+      "integrity": 
"sha512-bwq7sj452FRH+oVfgOA8xXKkLYPTNsYB4dQ0Jhz3ydjNJ9MvhpGJtehFW8Z0cEcwNkRRiF4aYbReiSGQ4pbS1w==",
       "dev": true,
       "requires": {
         "ansi-html": "0.0.7",
@@ -7171,10 +7217,12 @@
         "chokidar": "1.7.0",
         "compression": "1.7.1",
         "connect-history-api-fallback": "1.4.0",
+        "debug": "3.1.0",
         "del": "3.0.0",
         "express": "4.16.2",
         "html-entities": "1.2.1",
         "http-proxy-middleware": "0.17.4",
+        "import-local": "0.1.1",
         "internal-ip": "1.2.0",
         "ip": "1.1.5",
         "loglevel": "1.5.1",
@@ -7208,6 +7256,15 @@
             "wrap-ansi": "2.1.0"
           }
         },
+        "debug": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz";,
+          "integrity": 
"sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
         "del": {
           "version": "3.0.0",
           "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz";,
diff --git a/package.json b/package.json
index eef72d6..7a4f141 100644
--- a/package.json
+++ b/package.json
@@ -45,35 +45,35 @@
   },
   "dependencies": {
     "compression": "1.7.1",
-    "domino": "1.0.29",
+    "domino": "1.0.30",
     "express": "4.16.2",
     "isomorphic-unfetch": "2.0.0",
-    "path-to-regexp": "2.0.0",
-    "preact": "8.2.5",
+    "path-to-regexp": "2.1.0",
+    "preact": "8.2.6",
     "preact-render-to-string": "3.7.0"
   },
   "devDependencies": {
     "@types/assets-webpack-plugin": "3.5.0",
     "@types/compression": "0.0.34",
-    "@types/express": "4.0.37",
+    "@types/express": "4.0.39",
     "@types/extract-text-webpack-plugin": "3.0.0",
-    "@types/history": "4.6.0",
-    "@types/mocha": "2.2.43",
-    "@types/node": "8.0.34",
+    "@types/history": "4.6.1",
+    "@types/mocha": "2.2.44",
+    "@types/node": "8.0.47",
     "@types/node-fetch": "1.6.7",
     "@types/touch": "3.1.0",
     "assets-webpack-plugin": "3.5.1",
     "copyfiles": "1.2.0",
     "css-loader": "0.28.7",
-    "eslint": "4.8.0",
+    "eslint": "4.10.0",
     "eslint-config-node-services": "2.2.3",
     "eslint-config-prettier": "2.6.0",
     "eslint-config-wikimedia": "0.5.0",
-    "eslint-plugin-import": "2.7.0",
+    "eslint-plugin-import": "2.8.0",
     "eslint-plugin-jsdoc": "3.1.3",
     "eslint-plugin-json": "1.2.0",
     "eslint-plugin-prettier": "2.3.1",
-    "extract-text-webpack-plugin": "3.0.1",
+    "extract-text-webpack-plugin": "3.0.2",
     "history": "4.7.2",
     "husky": "0.14.3",
     "ignore-styles": "5.0.1",
@@ -81,16 +81,16 @@
     "nodemon": "1.12.1",
     "npm-run-all": "4.1.1",
     "prettier": "1.7.4",
-    "sinon": "4.0.1",
+    "sinon": "4.0.2",
     "style-loader": "0.19.0",
     "svg-inline-loader": "0.8.0",
     "touch": "3.1.0",
-    "ts-loader": "2.3.7",
+    "ts-loader": "3.1.1",
     "ts-node": "3.3.0",
     "typescript": "2.5.3",
-    "typescript-eslint-parser": "8.0.0",
+    "typescript-eslint-parser": "8.0.1",
     "webpack": "3.8.1",
-    "webpack-dev-server": "2.9.2",
+    "webpack-dev-server": "2.9.3",
     "wikimedia-ui-base": "0.9.2"
   }
 }
diff --git a/src/common/components/preact-utils.ts 
b/src/common/components/preact-utils.ts
index ebc1e3e..22a43d1 100644
--- a/src/common/components/preact-utils.ts
+++ b/src/common/components/preact-utils.ts
@@ -1,13 +1,8 @@
-import { FunctionalComponent, ComponentConstructor } from "preact";
+import "preact";
 
 // todo: delete pending https://github.com/developit/preact/pull/869.
 export type ComponentChild = JSX.Element | string;
 export type ComponentChildren = ComponentChild[];
-
-// todo: consider upstreaming type definition for AnyComponent
-export type AnyComponent<PropsType, StateType> =
-  | FunctionalComponent<PropsType>
-  | ComponentConstructor<PropsType, StateType>;
 
 export interface ChildrenProps {
   children?: ComponentChildren;
diff --git a/src/common/routers/route.ts b/src/common/routers/route.ts
index a402259..e9915f5 100644
--- a/src/common/routers/route.ts
+++ b/src/common/routers/route.ts
@@ -1,5 +1,5 @@
 import * as pathToRegExp from "path-to-regexp";
-import { AnyComponent } from "../components/preact-utils";
+import { AnyComponent } from "preact";
 import HttpResponse from "../data-clients/http-response";
 
 /**
diff --git a/src/common/routers/router.ts b/src/common/routers/router.ts
index cc5e4f8..7c91b9c 100644
--- a/src/common/routers/router.ts
+++ b/src/common/routers/router.ts
@@ -1,4 +1,4 @@
-import { AnyComponent } from "../components/preact-utils";
+import { AnyComponent } from "preact";
 import {
   AnyRoute,
   PageModule,
diff --git a/src/server/components/html-page.tsx 
b/src/server/components/html-page.tsx
index 844f7b1..50c9ea8 100644
--- a/src/server/components/html-page.tsx
+++ b/src/server/components/html-page.tsx
@@ -25,11 +25,9 @@
         <meta name="viewport" content="width=device-width, initial-scale=1" />
         <title>{title ? `${title} - ` : ""}Marvin</title>
         {/* Preload the stylesheet before the scripts */}
-        <link rel="preload" href={style(manifest)} {...{ as: "style" }} />
+        <link rel="preload" href={style(manifest)} as="style" />
         <link rel="stylesheet" href={style(manifest)} />
-        {assets.map(path => (
-          <link rel="preload" href={path} {...{ as: "script" }} />
-        ))}
+        {assets.map(path => <link rel="preload" href={path} as="script" />)}
       </head>
       <body>
         <div id="root">{children}</div>
diff --git a/tsconfig.json b/tsconfig.json
index 738add8..dd427b0 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -10,7 +10,10 @@
     "moduleResolution": "node",
     "sourceMap": true,
     "allowJs": true,
-    "checkJs": true,
+
+    // todo: reenable. This is causing ts-loader errors in
+    //       node_modules/unfetch/dist/unfetch.es.js.
+    // "checkJs": true,
 
     "strict": true,
 
diff --git a/webpack.config.ts b/webpack.config.ts
index d237589..0e41110 100644
--- a/webpack.config.ts
+++ b/webpack.config.ts
@@ -145,6 +145,11 @@
   },
 
   resolve: {
+    alias: {
+      // todo: remove. https://github.com/developit/preact/issues/924
+      preact$: "preact/dist/preact.js"
+    },
+
     // Add `.ts` and `.tsx` as a resolvable extension.
     extensions: [".ts", ".tsx", ".js"]
   },

-- 
To view, visit https://gerrit.wikimedia.org/r/387583
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I0a06a7385520f499eb15f4a5be4d93ebf4bebaac
Gerrit-PatchSet: 1
Gerrit-Project: marvin
Gerrit-Branch: master
Gerrit-Owner: Niedzielski <sniedziel...@wikimedia.org>
Gerrit-Reviewer: Sniedzielski <sniedziel...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to