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

Change subject: Chore: rename PageResolver
......................................................................

Chore: rename PageResolver

• Rename PageResolver from verb to noun, RequestPageModule.

• Use request / response instead of get or import to indicate that a
  module is requested, the request may fail, and the implementation may
  not be via import. Use page instead of name to match Route.page()
  naming.

• Move RequestPageModule to the top of the file since the type is used
  quite near the top.

• Add typing to requestPageModuleChunk since it otherwise returns a
  Promise<any> and it's also top-level (although not exported).

Change-Id: I6983d1610fc7bf1744770e205aa74370e0288100
---
M docs/development.md
M src/common/router/router.test.ts
M src/common/router/router.ts
3 files changed, 20 insertions(+), 16 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/marvin refs/changes/10/395810/1

diff --git a/docs/development.md b/docs/development.md
index 3a4863f..9bba644 100644
--- a/docs/development.md
+++ b/docs/development.md
@@ -176,6 +176,8 @@
 - Static constants should be written in `SHOUTING_SNAKE_CASE`. All other
   variables should be written in `camelCase`.
 - Preact components should be written in PascalCase.
+- Functions should be verbs like `request` or `get`, not `requester` or
+  `getter`.
 
 ### CSS
 
diff --git a/src/common/router/router.test.ts b/src/common/router/router.test.ts
index 58a1f1e..b301a69 100644
--- a/src/common/router/router.test.ts
+++ b/src/common/router/router.test.ts
@@ -39,7 +39,7 @@
     // eslint-disable-next-line max-len
     it("throws redirect errors up for handling on the server/client 
environment", done => {
       // Page module that throws a redirect
-      const page: PageModule<undefined, undefined> = {
+      const module: PageModule<undefined, undefined> = {
         default: {
           getInitialProps() {
             // Trick TS and eslint for tests
@@ -50,9 +50,9 @@
         }
       };
 
-      const getPage = (name: string) =>
-        name === "redirect"
-          ? Promise.resolve(page)
+      const requestPageModule = (page: string) =>
+        page === "redirect"
+          ? Promise.resolve(module)
           : Promise.reject(new Error("No page found"));
 
       const routes = [
@@ -62,7 +62,7 @@
         })
       ];
 
-      newRouter(routes, getPage)
+      newRouter(routes, requestPageModule)
         .route("/redirect")
         .catch(err => {
           assert.ok(
diff --git a/src/common/router/router.ts b/src/common/router/router.ts
index c4b8f45..f208e5b 100644
--- a/src/common/router/router.ts
+++ b/src/common/router/router.ts
@@ -18,6 +18,10 @@
   props: Props;
 }
 
+interface RequestPageModule {
+  (name: string): Promise<PageModule<any, any>>;
+}
+
 function getInitialProps<Params, Props>(
   module: PageComponent<Params, Props>,
   params: Params
@@ -29,18 +33,20 @@
 
 /**
  * Imports a page module from common/pages/* and names the chunk pages/* so 
that
- * the router can tell the server the name of the chunks to preload
+ * the router can tell the server the name of the chunks to preload.
+ * @param {string} page The page chunk basename with no extension. Corresponds
+ *                      to Route.page.
  */
-function getChunk(name: string) {
-  return import(/* webpackChunkName: "pages/[request]" */ `../pages/${name}`);
+function requestPageModuleChunk(page: string): Promise<PageModule<any, any>> {
+  return import(/* webpackChunkName: "pages/[request]" */ `../pages/${page}`);
 }
 
 function respond<Params, Props>(
-  getPage: PageResolver,
+  requestPageModule: RequestPageModule,
   route: Route<Params>,
   params: Params
 ): Promise<RouteResponse<Props>> {
-  return getPage(route.page).then(module =>
+  return requestPageModule(route.page).then(module =>
     getInitialProps(
       module.default,
       params
@@ -67,20 +73,16 @@
   };
 }
 
-interface PageResolver {
-  (name: string): Promise<PageModule<any, any>>;
-}
-
 export const newRouter = (
   routes: AnyRoute[],
-  getPage: PageResolver = getChunk
+  requestPageModule: RequestPageModule = requestPageModuleChunk
 ) => {
   return {
     route(path: string): Promise<RouteResponse<any>> {
       for (const route of routes) {
         const params = route.toParams(path);
         if (params) {
-          return respond(getPage, route, params).catch(respondError);
+          return respond(requestPageModule, route, params).catch(respondError);
         }
       }
       return Promise.resolve({

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I6983d1610fc7bf1744770e205aa74370e0288100
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