clean up some lint issues
authorJustin Wind <justin.wind+git@gmail.com>
Fri, 16 Sep 2022 17:27:59 +0000 (10:27 -0700)
committerJustin Wind <justin.wind+git@gmail.com>
Fri, 16 Sep 2022 17:27:59 +0000 (10:27 -0700)
.eslintrc.json
.markdownlint.json
README.md
lib/common.js

index 1dc01d2438c77662ef4d54c0b839a9d0752c1e9d..228599b4e5d0dd4b0b27a6a32b44c1d03dd3ecf6 100644 (file)
       "error",
       "single"
     ],
       "error",
       "single"
     ],
+    "semi": [
+      "error",
+      "always"
+    ],
     "strict": "error",
     "vars-on-top": "error"
   }
     "strict": "error",
     "vars-on-top": "error"
   }
index 18e3c71671b6e92d912cd50ccfac926f2ccd9d33..2ce28cb2c32032a3c8b1b5f02c61276cce0a4cb4 100644 (file)
@@ -1,4 +1,5 @@
 {
   "MD013": false,
 {
   "MD013": false,
-  "MD024": false
+  "MD024": false,
+  "MD032": false
 }
 }
index 37d9afbf15d045cab67c95fceffd082c08b36efd..c67a282dc8bd12b015ce86c630edafa186413318 100644 (file)
--- a/README.md
+++ b/README.md
@@ -3,29 +3,32 @@
 I just wanted a basic little API server for toy projects, without having to park a container-ship of modules under it.
 
 This is in no way intended to replace any mature, full-featured framework.  It is spartan in some aspects, brings some unexpected baggage in others, makes some questionable design decisions, has the occasional opinion, and is likely somewhat idiosyncratic from an outside perspective.
 I just wanted a basic little API server for toy projects, without having to park a container-ship of modules under it.
 
 This is in no way intended to replace any mature, full-featured framework.  It is spartan in some aspects, brings some unexpected baggage in others, makes some questionable design decisions, has the occasional opinion, and is likely somewhat idiosyncratic from an outside perspective.
+
+This was also created as a means to gain a better understanding of the existing web framework ecosystem by fussing with all the involved fiddly bits, a priori, from the bottom up.
+
 The primary design goals are:
 - self-contained: as few external dependencies as feasible
 - not-infinitely-extensible: only does the things it needs to do as dictated by the projects it is used in
 The primary design goals are:
 - self-contained: as few external dependencies as feasible
 - not-infinitely-extensible: only does the things it needs to do as dictated by the projects it is used in
+- learning from mistakes made along the way
 
 ## Getting Started
 
 
 ## Getting Started
 
-Construct it with a console-level-compatible logger capable of doing something meaningful with calls like level(scopeString, messageString, dataObject).
+Construct it with a console-level-compatible logger object capable of doing something meaningful with calls like `logger[level](scopeString, messageString, dataObject)`.
 
 Within the server request handler:
 
 Within the server request handler:
-* dispatch(req, res) makes things go.
+- `dispatch(req, res)` makes things go.
 
 Within the application implementation:
 
 Within the application implementation:
-* on(method, urlPath, handler) declares a thing to do when a request matches.
-* preHandler(req, res, ctx) can be overridden to do something to every request before it is handled.
+- `on(method, urlPath, handler)` declares a thing to do when a request matches.
+- `preHandler(req, res, ctx)` can be overridden to do something to every request before it is handled.
 
 Handled content types can be extended by overriding:
 
 Handled content types can be extended by overriding:
-* parseBody(contentType, ctx) for incoming types.
-* renderError(contentType, err) for outgoing types.
+- `parseBody(contentType, ctx)` for incoming types.
+- `renderError(contentType, err)` for outgoing types.
 
 Within your handlers:
 
 Within your handlers:
-* setResponseType(responseTypes, req, res, ctx) can be called to negotiate content types.
-* async ingestBody(req, res, ctx) will parse request body data.
-* throw an Error.ResponseError with an Enum.ErrorResponse for a simple status code with optional details, when something goes awry.
+- `setResponseType(responseTypes, req, res, ctx)` can be called to negotiate content types.
+- `async ingestBody(req, res, ctx)` will parse request body data.
+- throw an `Error.ResponseError` with an `Enum.ErrorResponse` for a simple status code with optional details, when something goes awry.
 
 Parameters and metadata are set in each request context.
 
 Parameters and metadata are set in each request context.
-
index 40a9f554f9ee4f687fe63402e3fed0908162408b..e2e2a8c640f58ba4df827cd6e7afcc5ffb69fd4b 100644 (file)
@@ -27,7 +27,7 @@ const fileScope = (filename) => {
     fScope = path.basename(path.dirname(filename));
   }
   return (scope) => `${fScope}:${scope}`;
     fScope = path.basename(path.dirname(filename));
   }
   return (scope) => `${fScope}:${scope}`;
-}
+};
 
 /**
  * Simple ETag from data.
 
 /**
  * Simple ETag from data.
@@ -202,7 +202,7 @@ const scrubHeaderObject = (data) => {
       authorization: obscureAuthorizationHeader(data.headers['authorization']),
     });
   }
       authorization: obscureAuthorizationHeader(data.headers['authorization']),
     });
   }
-}
+};
 
 
 /**
 
 
 /**
@@ -218,7 +218,7 @@ const obscureAuthorizationHeader = (authHeader) => {
   const space = authHeader.indexOf(' ');
   // This blurs entire string if no space found, because -1.
   return authHeader.slice(0, space + 1) + '*'.repeat(authHeader.length - (space + 1));
   const space = authHeader.indexOf(' ');
   // This blurs entire string if no space found, because -1.
   return authHeader.slice(0, space + 1) + '*'.repeat(authHeader.length - (space + 1));
-}
+};
 
 
 /**
 
 
 /**