tibber-express-utils 3.3.1 → 3.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,15 +1,21 @@
1
1
  import { HttpError } from './HttpError';
2
2
  export declare type ProblemDetailsArgs = {
3
- detail: string;
4
- instance: string;
3
+ detail?: string;
4
+ instance?: string;
5
5
  statusCode: number;
6
6
  title: string;
7
7
  type: string;
8
+ extensions?: {
9
+ [k: string]: unknown;
10
+ };
8
11
  };
9
12
  export declare class ProblemDetailsError extends HttpError {
10
- detail: string;
11
13
  type: string;
12
- instance: string;
13
14
  title: string;
15
+ detail?: string;
16
+ instance?: string;
17
+ extensions?: {
18
+ [k: string]: unknown;
19
+ };
14
20
  constructor(args: ProblemDetailsArgs);
15
21
  }
@@ -4,12 +4,13 @@ exports.ProblemDetailsError = void 0;
4
4
  const HttpError_1 = require("./HttpError");
5
5
  class ProblemDetailsError extends HttpError_1.HttpError {
6
6
  constructor(args) {
7
- const { detail, instance, statusCode, title, type } = args;
8
- super(detail, statusCode);
7
+ const { detail, instance, statusCode, title, type, extensions } = args;
8
+ super(detail !== null && detail !== void 0 ? detail : title, statusCode);
9
9
  this.detail = detail;
10
10
  this.type = type;
11
11
  this.instance = instance;
12
12
  this.title = title;
13
+ this.extensions = extensions !== null && extensions !== void 0 ? extensions : {};
13
14
  }
14
15
  }
15
16
  exports.ProblemDetailsError = ProblemDetailsError;
@@ -1 +1 @@
1
- {"version":3,"file":"ProblemDetailsError.js","sourceRoot":"","sources":["../../../src/errors/ProblemDetailsError.ts"],"names":[],"mappings":";;;AAAA,2CAAsC;AAUtC,MAAa,mBAAoB,SAAQ,qBAAS;IAMhD,YAAY,IAAwB;QAClC,MAAM,EAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAC,GAAG,IAAI,CAAC;QAEzD,KAAK,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAE1B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;CACF;AAhBD,kDAgBC"}
1
+ {"version":3,"file":"ProblemDetailsError.js","sourceRoot":"","sources":["../../../src/errors/ProblemDetailsError.ts"],"names":[],"mappings":";;;AAAA,2CAAsC;AAatC,MAAa,mBAAoB,SAAQ,qBAAS;IAShD,YAAY,IAAwB;QAClC,MAAM,EAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAC,GAAG,IAAI,CAAC;QAErE,KAAK,CAAC,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,KAAK,EAAE,UAAU,CAAC,CAAC;QAEnC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,UAAU,GAAG,UAAU,aAAV,UAAU,cAAV,UAAU,GAAI,EAAE,CAAC;IACrC,CAAC;CACF;AApBD,kDAoBC"}
@@ -4,7 +4,7 @@ exports.jsonMiddleware = void 0;
4
4
  const errors_1 = require("./errors");
5
5
  const isHttpResult_1 = require("./utils/isHttpResult");
6
6
  const jsonMiddleware = (httpStatusCodeSelector, contextSelector, handler, logger) => {
7
- return async (req, res) => {
7
+ return async (req, res, next) => {
8
8
  try {
9
9
  /**
10
10
  * Execute the RequestHandler provided against the request, extracting the context
@@ -57,26 +57,38 @@ const jsonMiddleware = (httpStatusCodeSelector, contextSelector, handler, logger
57
57
  * additional details as a JSON payload.
58
58
  */
59
59
  if (err instanceof errors_1.ProblemDetailsError) {
60
- const { detail, httpStatus: status, instance, title, type } = err;
61
- return res.status(status).contentType('application/problem+json').json({
60
+ const { detail, httpStatus: status, instance, title, type, extensions, } = err;
61
+ const response = res
62
+ .status(status)
63
+ .contentType('application/problem+json')
64
+ .send({
65
+ ...(extensions !== null && extensions !== void 0 ? extensions : {}),
62
66
  detail,
63
67
  instance,
64
68
  status,
65
69
  title,
66
70
  type,
67
71
  });
72
+ next(err);
73
+ return response;
68
74
  }
69
75
  /**
70
76
  * If 'err' is a vanilla HttpError object, extract status code (defaulting to 500) and
71
77
  * message, and send that.
72
78
  */
73
79
  if (err instanceof errors_1.HttpError) {
74
- return res.status(err.httpStatus || 500).send({ err: err.message });
80
+ const response = res
81
+ .status(err.httpStatus || 500)
82
+ .json({ err: err.message });
83
+ next(err);
84
+ return response;
75
85
  }
76
86
  /**
77
87
  * As last resort, send error's string representation as the message.
78
88
  */
79
- return res.status(500).send({ err: errorAsString });
89
+ const response = res.status(500).send({ err: errorAsString });
90
+ next(err);
91
+ return response;
80
92
  }
81
93
  };
82
94
  };
@@ -1 +1 @@
1
- {"version":3,"file":"jsonMiddleware.js","sourceRoot":"","sources":["../../src/jsonMiddleware.ts"],"names":[],"mappings":";;;AACA,qCAAwD;AAExD,uDAAkD;AAE3C,MAAM,cAAc,GAAmB,CAC5C,sBAAsB,EACtB,eAAe,EACf,OAAO,EACP,MAAM,EACN,EAAE;IACF,OAAO,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,EAAE;QAC3C,IAAI;YACF;;;eAGG;YACH,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;YACrC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YAE3C;;;;;;;eAOG;YACH,IAAI,CAAC,IAAA,2BAAY,EAAC,MAAM,CAAC,EAAE;gBACzB,MAAM,cAAc,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;gBACtD,OAAO,GAAG,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aAChD;YAED;;eAEG;YACH,IAAI,MAAM,CAAC,OAAO,EAAE;gBAClB,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE;oBACnC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;iBACzC;aACF;YAED;;;eAGG;YACH,OAAO,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;SAClE;QAAC,OAAO,GAAG,EAAE;YACZ,IAAI,aAAa,CAAC;YAElB;;eAEG;YACH,IAAI,GAAG,YAAY,KAAK,EAAE;gBACxB,aAAa,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;aAChC;iBAAM,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,YAAY,MAAM,EAAE;gBAC3D,aAAa,GAAG,GAAG,CAAC;aACrB;YAED,IAAI,MAAM,IAAI,MAAM,CAAC,KAAK,EAAE;gBAC1B,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,aAAa,EAAE,CAAC,CAAC;aACjE;YAED;;;eAGG;YACH,IAAI,GAAG,YAAY,4BAAmB,EAAE;gBACtC,MAAM,EAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAC,GAAG,GAAG,CAAC;gBAChE,OAAO,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,0BAA0B,CAAC,CAAC,IAAI,CAAC;oBACrE,MAAM;oBACN,QAAQ;oBACR,MAAM;oBACN,KAAK;oBACL,IAAI;iBACL,CAAC,CAAC;aACJ;YAED;;;eAGG;YACH,IAAI,GAAG,YAAY,kBAAS,EAAE;gBAC5B,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,EAAC,GAAG,EAAE,GAAG,CAAC,OAAO,EAAC,CAAC,CAAC;aACnE;YAED;;eAEG;YACH,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAC,GAAG,EAAE,aAAa,EAAC,CAAC,CAAC;SACnD;IACH,CAAC,CAAC;AACJ,CAAC,CAAC;AAvFW,QAAA,cAAc,kBAuFzB"}
1
+ {"version":3,"file":"jsonMiddleware.js","sourceRoot":"","sources":["../../src/jsonMiddleware.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { Request, Response, Router } from 'express';
1
+ import { NextFunction, Request, Response, Router } from 'express';
2
2
  import { PathParams } from 'express-serve-static-core';
3
3
  import { HttpResult } from './HttpResult';
4
4
  /**
@@ -48,7 +48,7 @@ export declare type JsonRouteMatcher<TContext> = {
48
48
  *
49
49
  * It is expected that the handler returns a JsonRequestHandlerResult.
50
50
  */
51
- export declare type JsonRequestHandler<TContext, TPayload> = (req: Request, ctx?: TContext) => JsonRequestHandlerResult<TPayload>;
51
+ export declare type JsonRequestHandler<TContext, TPayload> = (req: Request, ctx: TContext) => JsonRequestHandlerResult<TPayload>;
52
52
  /**
53
53
  * The allowable return types of a JsonRequestHandler. A JsonRequestHandler
54
54
  * may return undefined, an HTTP status code (number) or an HttpResult
@@ -78,7 +78,7 @@ export interface Logger {
78
78
  * request handling.
79
79
  */
80
80
  export declare type JsonMiddleware = {
81
- <TContext, TPayload>(httpStatusCodeSelector: HttpStatusCodeSelector, contextSelector: ContextSelector<TContext>, handler: JsonRequestHandler<TContext, TPayload>, logger?: Logger): (req: Request, res: Response) => Promise<Response<TPayload>>;
81
+ <TContext, TPayload>(httpStatusCodeSelector: HttpStatusCodeSelector, contextSelector: ContextSelector<TContext>, handler: JsonRequestHandler<TContext, TPayload>, logger?: Logger): (req: Request, res: Response, next: NextFunction) => Promise<Response<TPayload>>;
82
82
  };
83
83
  /**
84
84
  * Defines logic remapping a status code returned from a JsonRequestHandler in a
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tibber-express-utils",
3
- "version": "3.3.1",
3
+ "version": "3.3.2",
4
4
  "description": "",
5
5
  "main": "./dist/src/index.js",
6
6
  "scripts": {
@@ -10,7 +10,7 @@
10
10
  "clean": "gts clean",
11
11
  "compile": "tsc",
12
12
  "fix": "gts fix && sortier \"./**/*.{ts,tsx,js,jsx}\"",
13
- "prepare": "yarn run compile",
13
+ "prepare": "yarn run compile && husky install",
14
14
  "pretest": "yarn run compile",
15
15
  "posttest": "yarn run lint",
16
16
  "release": "semantic-release",