jenkins-bot has submitted this change and it was merged. ( 
https://gerrit.wikimedia.org/r/388275 )

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


Chore: upgrade dependencies

• typescript v2.5.3 → 2.6.1

  • Strict function types (enabled by default with strict mode).

    • Weird. Classes and interfaces specifying optional types now require that
      subtypes also specify these be optional. In other words, they can't be
      more specific? This has to led to FUNKINESS. Check out preact-utils and
      the about page. about#componentDidMount now must be optional(!) and
      about#render must specify `null` as a possible return value.

    • That alarming type concern in router#respond is now an error (fixed)!

  • Suppress errors in .ts files using '// @ts-ignore' comments. Finally!

  
https://github.com/Microsoft/TypeScript/wiki/What's-new-in-TypeScript#typescript-26

• eslint-config-prettier v2.6.0 → 2.7.0

  
https://github.com/prettier/eslint-config-prettier/blob/cff31a2/CHANGELOG.md#version-270-2017-11-01

• sinon v4.0.2 → 4.1.0

  
https://github.com/sinonjs/sinon/blob/c0a71c6/docs/changelog.md#410--2017-11-02

Change-Id: If3d01d0dffeaa03b1bc20c3876224a5cd81d3889
---
M package-lock.json
M package.json
M src/common/components/preact-utils.ts
M src/common/http/page-http-client.ts
M src/common/http/page-summary-http-client.ts
M src/common/marshallers/page-summary/page-summary-unmarshaller.ts
M src/common/pages/about.tsx
M src/common/routers/route.ts
M src/common/routers/router.ts
9 files changed, 89 insertions(+), 71 deletions(-)

Approvals:
  Jhernandez: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/package-lock.json b/package-lock.json
index 523d7a9..f41949f 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -2018,9 +2018,9 @@
       "dev": true
     },
     "eslint-config-prettier": {
-      "version": "2.6.0",
-      "resolved": 
"https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-2.6.0.tgz";,
-      "integrity": "sha1-8h2w67Q4rWePuYlGCXxLsZi+/Mw=",
+      "version": "2.7.0",
+      "resolved": 
"https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-2.7.0.tgz";,
+      "integrity": "sha1-e7/vZq14MneDb06lVuaLm8ydpNA=",
       "dev": true,
       "requires": {
         "get-stdin": "5.0.1"
@@ -3598,6 +3598,12 @@
       "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=",
       "dev": true
     },
+    "just-extend": {
+      "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": {
       "version": "3.2.2",
       "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz";,
@@ -4408,6 +4414,42 @@
       "version": "0.6.1",
       "resolved": 
"https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz";,
       "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk="
+    },
+    "nise": {
+      "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.27",
+        "lolex": "1.6.0",
+        "path-to-regexp": "1.7.0",
+        "text-encoding": "0.6.4"
+      },
+      "dependencies": {
+        "isarray": {
+          "version": "0.0.1",
+          "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz";,
+          "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
+          "dev": true
+        },
+        "lolex": {
+          "version": "1.6.0",
+          "resolved": "https://registry.npmjs.org/lolex/-/lolex-1.6.0.tgz";,
+          "integrity": "sha1-OpoCg0UqR9dDnnJzG54H1zhuSfY=",
+          "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=",
+          "dev": true,
+          "requires": {
+            "isarray": "0.0.1"
+          }
+        }
+      }
     },
     "node-fetch": {
       "version": "1.7.3",
@@ -6341,9 +6383,9 @@
       "dev": true
     },
     "sinon": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/sinon/-/sinon-4.0.2.tgz";,
-      "integrity": 
"sha512-4mUsjHfjrHyPFGDTtNJl0q8cv4VOJGvQykI1r3fnn05ys0sQL9M1Y+DyyGNWLD2PMcoyqjJ/nFDm4K54V1eQOg==",
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/sinon/-/sinon-4.1.0.tgz";,
+      "integrity": 
"sha512-M4o7PuK+svU4YJtEY87f8UY9VZzEgLCRheZf70Hwt9jjxdQxFVujbN1O6shXPZxlcar6OfyE54RZPj58dVba2Q==",
       "dev": true,
       "requires": {
         "diff": "3.2.0",
@@ -6360,48 +6402,6 @@
           "resolved": 
"https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz";,
           "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
           "dev": true
-        },
-        "isarray": {
-          "version": "0.0.1",
-          "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz";,
-          "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
-          "dev": true
-        },
-        "just-extend": {
-          "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
-        },
-        "nise": {
-          "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.27",
-            "lolex": "1.6.0",
-            "path-to-regexp": "1.7.0",
-            "text-encoding": "0.6.4"
-          },
-          "dependencies": {
-            "lolex": {
-              "version": "1.6.0",
-              "resolved": "https://registry.npmjs.org/lolex/-/lolex-1.6.0.tgz";,
-              "integrity": "sha1-OpoCg0UqR9dDnnJzG54H1zhuSfY=",
-              "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=",
-          "dev": true,
-          "requires": {
-            "isarray": "0.0.1"
-          }
         },
         "supports-color": {
           "version": "4.5.0",
@@ -7083,9 +7083,9 @@
       "dev": true
     },
     "typescript": {
-      "version": "2.5.3",
-      "resolved": 
"https://registry.npmjs.org/typescript/-/typescript-2.5.3.tgz";,
-      "integrity": 
"sha512-ptLSQs2S4QuS6/OD1eAKG+S5G8QQtrU5RT32JULdZQtM1L3WTi34Wsu48Yndzi8xsObRAB9RPt/KhA9wlpEF6w==",
+      "version": "2.6.1",
+      "resolved": 
"https://registry.npmjs.org/typescript/-/typescript-2.6.1.tgz";,
+      "integrity": "sha1-7znN6ierrAtQAkLWcmq5DgyEZjE=",
       "dev": true
     },
     "typescript-eslint-parser": {
diff --git a/package.json b/package.json
index f2c786c..1ecda26 100644
--- a/package.json
+++ b/package.json
@@ -67,7 +67,7 @@
     "css-loader": "0.28.7",
     "eslint": "4.10.0",
     "eslint-config-node-services": "2.2.3",
-    "eslint-config-prettier": "2.6.0",
+    "eslint-config-prettier": "2.7.0",
     "eslint-config-wikimedia": "0.5.0",
     "eslint-plugin-import": "2.8.0",
     "eslint-plugin-jsdoc": "3.1.3",
@@ -81,12 +81,12 @@
     "nodemon": "1.12.1",
     "npm-run-all": "4.1.1",
     "prettier": "1.7.4",
-    "sinon": "4.0.2",
+    "sinon": "4.1.0",
     "style-loader": "0.19.0",
     "svg-inline-loader": "0.8.0",
     "ts-loader": "3.1.1",
     "ts-node": "3.3.0",
-    "typescript": "2.5.3",
+    "typescript": "2.6.1",
     "typescript-eslint-parser": "8.0.1",
     "uglifyjs-webpack-plugin": "1.0.1",
     "webpack": "3.6.0",
diff --git a/src/common/components/preact-utils.ts 
b/src/common/components/preact-utils.ts
index 256a2d5..b73479c 100644
--- a/src/common/components/preact-utils.ts
+++ b/src/common/components/preact-utils.ts
@@ -1,7 +1,28 @@
+import {
+  ComponentProps,
+  ComponentConstructor,
+  FunctionalComponent as PreactFunctionalComponent
+} from "preact";
+
 // todo: delete pending https://github.com/developit/preact/pull/869.
 export type ComponentChild = JSX.Element | string;
 export type ComponentChildren = ComponentChild[];
 
+// Identical to PreactFunctionalComponent but props are required for
+// TypeScript strictFunctionTypes.
+interface FunctionalComponentWithProps<Props>
+  extends Partial<PreactFunctionalComponent<Props>> {
+  (props: Props & ComponentProps<this>, context?: any): JSX.Element;
+}
+
+export type FunctionalComponent<Props> =
+  | PreactFunctionalComponent<Props>
+  | FunctionalComponentWithProps<Props>;
+
+export type AnyComponent<PropsType, StateType> =
+  | FunctionalComponent<PropsType>
+  | ComponentConstructor<PropsType, StateType>;
+
 export interface ChildrenProps {
   children?: ComponentChildren;
 }
diff --git a/src/common/http/page-http-client.ts 
b/src/common/http/page-http-client.ts
index ec73e02..c7c015e 100644
--- a/src/common/http/page-http-client.ts
+++ b/src/common/http/page-http-client.ts
@@ -35,8 +35,8 @@
   )}${revisionPath}${redirectParam}`;
 }
 
-const PAGE_HEADERS = { accept: RESTBase.PageSections.ACCEPT_HEADER };
-const RANDOM_HEADERS = { accept: RESTBase.Random.ACCEPT_HEADER };
+const PAGE_HEADERS = [["accept", RESTBase.PageSections.ACCEPT_HEADER]];
+const RANDOM_HEADERS = [["accept", RESTBase.Random.ACCEPT_HEADER]];
 
 interface UnmarshalParams {
   url: string;
diff --git a/src/common/http/page-summary-http-client.ts 
b/src/common/http/page-summary-http-client.ts
index 78e740a..140fdc4 100644
--- a/src/common/http/page-summary-http-client.ts
+++ b/src/common/http/page-summary-http-client.ts
@@ -28,13 +28,8 @@
   )}${redirectParam}`;
 };
 
-const PAGE_HEADERS = {
-  accept: RESTBase.PageSummary.ACCEPT_HEADER
-};
-
-const RANDOM_HEADERS = {
-  accept: RESTBase.Random.ACCEPT_HEADER
-};
+const PAGE_HEADERS = [["accept", RESTBase.PageSummary.ACCEPT_HEADER]];
+const RANDOM_HEADERS = [["accept", RESTBase.Random.ACCEPT_HEADER]];
 
 // todo: this can actually return an empty response when redirect is false. Do
 //       we want to support it? Same question for the other redirect usages.
diff --git a/src/common/marshallers/page-summary/page-summary-unmarshaller.ts 
b/src/common/marshallers/page-summary/page-summary-unmarshaller.ts
index 441a1d1..a1ec020 100644
--- a/src/common/marshallers/page-summary/page-summary-unmarshaller.ts
+++ b/src/common/marshallers/page-summary/page-summary-unmarshaller.ts
@@ -62,9 +62,11 @@
       : document.implementation.createHTMLDocument("").body;
   element.innerHTML = extractHTML;
 
-  const paragraphs = Array.from(element.querySelectorAll("p"));
+  const paragraphs: HTMLParagraphElement[] = Array.from(
+    element.querySelectorAll("p")
+  );
   return paragraphs.length
-    ? paragraphs.map((paragraph: HTMLParagraphElement) => paragraph.outerHTML)
+    ? paragraphs.map(paragraph => paragraph.outerHTML)
     : [extractHTML];
 };
 
diff --git a/src/common/pages/about.tsx b/src/common/pages/about.tsx
index 18cfe12..4f36f19 100644
--- a/src/common/pages/about.tsx
+++ b/src/common/pages/about.tsx
@@ -14,9 +14,9 @@
 
 export default {
   Component: class extends PreactComponent<undefined, State> {
-    state = { subtitle: "" };
+    state: State = { subtitle: "" };
 
-    componentDidMount() {
+    componentDidMount?() {
       // todo: figure out a common way across entry points for defining
       // configuration variables that common code could consume. The server has
       // server specific vars in config.ts and this here for example are used
@@ -34,7 +34,7 @@
       this.setState({ subtitle });
     }
 
-    render(_props: undefined, { subtitle }: State): JSX.Element {
+    render(_props: undefined, { subtitle }: State): JSX.Element | null {
       const links = [
         {
           href: "https://phabricator.wikimedia.org/tag/marvin/";,
diff --git a/src/common/routers/route.ts b/src/common/routers/route.ts
index a5c0121..4192965 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 "preact";
+import { AnyComponent } from "../components/preact-utils";
 import HttpResponse from "../http/http-response";
 
 /**
diff --git a/src/common/routers/router.ts b/src/common/routers/router.ts
index 10c2435..5f488e4 100644
--- a/src/common/routers/router.ts
+++ b/src/common/routers/router.ts
@@ -32,11 +32,11 @@
     getInitialProps(
       module.default,
       params
-    ).then((response: HttpResponse<Props>) => ({
+    ).then((response: HttpResponse<Props> | void) => ({
       chunkName: route.chunkName,
       status: (response && response.status) || module.default.status || 200,
       Component: module.default.Component as AnyComponent<Props, any>,
-      props: response && response.data
+      props: (response && response.data) as Props
     }))
   );
 }

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

Gerrit-MessageType: merged
Gerrit-Change-Id: If3d01d0dffeaa03b1bc20c3876224a5cd81d3889
Gerrit-PatchSet: 7
Gerrit-Project: marvin
Gerrit-Branch: master
Gerrit-Owner: Niedzielski <[email protected]>
Gerrit-Reviewer: Jhernandez <[email protected]>
Gerrit-Reviewer: Niedzielski <[email protected]>
Gerrit-Reviewer: Sniedzielski <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to