@trojs/openapi-server 3.5.2 → 3.6.0

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.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@trojs/openapi-server",
3
3
  "description": "OpenAPI Server",
4
- "version": "3.5.2",
4
+ "version": "3.6.0",
5
5
  "author": {
6
6
  "name": "Pieter Wigboldus",
7
7
  "url": "https://trojs.org/"
package/src/api.js CHANGED
@@ -28,6 +28,7 @@ import { setupRouter } from './router.js'
28
28
  * @property {Handler=} unauthorizedHandler
29
29
  * @property {boolean=} swagger
30
30
  * @property {boolean=} apiDocs
31
+ * @property {boolean=} validateResponse
31
32
  * @property {AjvOpts=} ajvOptions
32
33
  * @property {AjvCustomizer=} customizeAjv
33
34
  * @property {any[]=} middleware
@@ -57,6 +58,7 @@ export class Api {
57
58
  unauthorizedHandler,
58
59
  swagger,
59
60
  apiDocs,
61
+ validateResponse,
60
62
  ajvOptions,
61
63
  customizeAjv,
62
64
  middleware = []
@@ -73,6 +75,7 @@ export class Api {
73
75
  this.unauthorizedHandler = unauthorizedHandler || undefined
74
76
  this.swagger = swagger ?? true
75
77
  this.apiDocs = apiDocs ?? true
78
+ this.validateResponse = validateResponse ?? true
76
79
  this.ajvOptions = ajvOptions ?? { allErrors: false }
77
80
  this.customizeAjv = customizeAjv
78
81
  this.middleware = middleware
@@ -120,6 +123,7 @@ export class Api {
120
123
  meta: this.meta,
121
124
  securityHandlers: this.securityHandlers,
122
125
  unauthorizedHandler: this.unauthorizedHandler,
126
+ validateResponse: this.validateResponse,
123
127
  ajvOptions: this.ajvOptions,
124
128
  customizeAjv: this.customizeAjv
125
129
  })
package/src/router.js CHANGED
@@ -27,6 +27,7 @@ import { unauthorized } from './handlers/unauthorized.js'
27
27
  * @param {object=} params.meta
28
28
  * @param {SecurityHandler[]=} params.securityHandlers
29
29
  * @param {Handler=} params.unauthorizedHandler
30
+ * @param {boolean=} params.validateResponse
30
31
  * @param {AjvOpts=} params.ajvOptions
31
32
  * @param {AjvCustomizer=} params.customizeAjv
32
33
  * @param {boolean=} params.mock
@@ -42,6 +43,7 @@ export const setupRouter = ({
42
43
  meta,
43
44
  securityHandlers = [],
44
45
  unauthorizedHandler,
46
+ validateResponse = true,
45
47
  ajvOptions = {},
46
48
  customizeAjv,
47
49
  mock
@@ -58,12 +60,17 @@ export const setupRouter = ({
58
60
  customizeAjv: customizeAjv || ajvWithExtraFormats
59
61
  })
60
62
 
61
- api.register({
63
+ const handlers = {
62
64
  unauthorizedHandler: unauthorizedHandler || unauthorized,
63
65
  validationFail: requestValidation,
64
- notFound,
65
- postResponseHandler: makeResponseValidation(logger)
66
- })
66
+ notFound
67
+ }
68
+
69
+ if (validateResponse) {
70
+ handlers.postResponseHandler = makeResponseValidation(logger)
71
+ }
72
+
73
+ api.register(handlers)
67
74
 
68
75
  operationIds({ specification: openAPISpecification }).forEach(
69
76
  (operationId) => {
package/types/api.d.ts CHANGED
@@ -23,6 +23,7 @@
23
23
  * @property {Handler=} unauthorizedHandler
24
24
  * @property {boolean=} swagger
25
25
  * @property {boolean=} apiDocs
26
+ * @property {boolean=} validateResponse
26
27
  * @property {AjvOpts=} ajvOptions
27
28
  * @property {AjvCustomizer=} customizeAjv
28
29
  * @property {any[]=} middleware
@@ -37,7 +38,7 @@ export class Api {
37
38
  * @class
38
39
  * @param {ApiSchema} params
39
40
  */
40
- constructor({ version, specification, controllers, apiRoot, strictSpecification, errorDetails, logger, meta, securityHandlers, unauthorizedHandler, swagger, apiDocs, ajvOptions, customizeAjv, middleware }: ApiSchema);
41
+ constructor({ version, specification, controllers, apiRoot, strictSpecification, errorDetails, logger, meta, securityHandlers, unauthorizedHandler, swagger, apiDocs, validateResponse, ajvOptions, customizeAjv, middleware }: ApiSchema);
41
42
  version: string;
42
43
  specification: object;
43
44
  controllers: object;
@@ -50,6 +51,7 @@ export class Api {
50
51
  unauthorizedHandler: Handler | undefined;
51
52
  swagger: boolean;
52
53
  apiDocs: boolean;
54
+ validateResponse: boolean;
53
55
  ajvOptions: import("ajv").Options;
54
56
  customizeAjv: import("openapi-backend").AjvCustomizer | undefined;
55
57
  middleware: any[];
@@ -81,6 +83,7 @@ export type ApiSchema = {
81
83
  unauthorizedHandler?: Handler | undefined;
82
84
  swagger?: boolean | undefined;
83
85
  apiDocs?: boolean | undefined;
86
+ validateResponse?: boolean | undefined;
84
87
  ajvOptions?: AjvOpts | undefined;
85
88
  customizeAjv?: AjvCustomizer | undefined;
86
89
  middleware?: any[] | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.js"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH;;;GAGG;AAEH;IACE;;;;OAIG;IACH,8MAFW,SAAS,EAkCnB;IAfC,gBAAsB;IACtB,sBAAkC;IAClC,oBAA8B;IAC9B,4BAAsB;IACtB,yCAA8C;IAC9C,sBAAyC;IACzC,eAA+B;IAC/B,aAAsB;IACtB,oCAA8C;IAC9C,yCAA2D;IAC3D,iBAA8B;IAC9B,iBAA8B;IAC9B,kCAAoD;IACpD,kEAAgC;IAChC,kBAA4B;IAG9B,aAsDC;CACF;sBAjIY,OAAO,iBAAiB,EAAE,OAAO;sBACjC,OAAO,KAAK,EAAE,OAAO;4BACrB,OAAO,iBAAiB,EAAE,aAAa;;;;;;;;UAOtC,MAAM;aACN,OAAO;;;aAEP,MAAM;mBACN,MAAM;iBACN,MAAM;cACN,MAAM,YAAC;0BACP,OAAO,YAAC;mBACR,OAAO,YAAC;aACR,MAAM,YAAC;WACP,MAAM,YAAC;uBACP,eAAe,EAAE,YAAC;0BAClB,OAAO,YAAC;cACR,OAAO,YAAC;cACR,OAAO,YAAC;iBACR,OAAO,YAAC;mBACR,aAAa,YAAC;iBACd,GAAG,EAAE,YAAC"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.js"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH;;;GAGG;AAEH;IACE;;;;OAIG;IACH,gOAFW,SAAS,EAoCnB;IAhBC,gBAAsB;IACtB,sBAAkC;IAClC,oBAA8B;IAC9B,4BAAsB;IACtB,yCAA8C;IAC9C,sBAAyC;IACzC,eAA+B;IAC/B,aAAsB;IACtB,oCAA8C;IAC9C,yCAA2D;IAC3D,iBAA8B;IAC9B,iBAA8B;IAC9B,0BAAgD;IAChD,kCAAoD;IACpD,kEAAgC;IAChC,kBAA4B;IAG9B,aAuDC;CACF;sBArIY,OAAO,iBAAiB,EAAE,OAAO;sBACjC,OAAO,KAAK,EAAE,OAAO;4BACrB,OAAO,iBAAiB,EAAE,aAAa;;;;;;;;UAOtC,MAAM;aACN,OAAO;;;aAEP,MAAM;mBACN,MAAM;iBACN,MAAM;cACN,MAAM,YAAC;0BACP,OAAO,YAAC;mBACR,OAAO,YAAC;aACR,MAAM,YAAC;WACP,MAAM,YAAC;uBACP,eAAe,EAAE,YAAC;0BAClB,OAAO,YAAC;cACR,OAAO,YAAC;cACR,OAAO,YAAC;uBACR,OAAO,YAAC;iBACR,OAAO,YAAC;mBACR,aAAa,YAAC;iBACd,GAAG,EAAE,YAAC"}
package/types/router.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export function setupRouter({ openAPISpecification, controllers, apiRoot, strictSpecification, errorDetails, logger, meta, securityHandlers, unauthorizedHandler, ajvOptions, customizeAjv, mock }: {
1
+ export function setupRouter({ openAPISpecification, controllers, apiRoot, strictSpecification, errorDetails, logger, meta, securityHandlers, unauthorizedHandler, validateResponse, ajvOptions, customizeAjv, mock }: {
2
2
  openAPISpecification: object;
3
3
  controllers: object;
4
4
  apiRoot?: string | undefined;
@@ -8,6 +8,7 @@ export function setupRouter({ openAPISpecification, controllers, apiRoot, strict
8
8
  meta?: object | undefined;
9
9
  securityHandlers?: SecurityHandler[] | undefined;
10
10
  unauthorizedHandler?: Handler | undefined;
11
+ validateResponse?: boolean | undefined;
11
12
  ajvOptions?: AjvOpts | undefined;
12
13
  customizeAjv?: AjvCustomizer | undefined;
13
14
  mock?: boolean | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../src/router.js"],"names":[],"mappings":"AAkCO,oMAdJ;IAAuB,oBAAoB,EAAnC,MAAM;IACS,WAAW,EAA1B,MAAM;IACU,OAAO,GAAvB,MAAM,YAAC;IACU,mBAAmB,GAApC,OAAO,YAAC;IACS,YAAY,GAA7B,OAAO,YAAC;IACQ,MAAM,GAAtB,MAAM,YAAC;IACS,IAAI,GAApB,MAAM,YAAC;IACoB,gBAAgB,GAA3C,eAAe,EAAE,YAAC;IACD,mBAAmB,GAApC,OAAO,YAAC;IACS,UAAU,GAA3B,OAAO,YAAC;IACe,YAAY,GAAnC,aAAa,YAAC;IACG,IAAI,GAArB,OAAO,YAAC;CAChB,GAAU;IAAE,GAAG,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC;IAAC,oBAAoB,EAAE,MAAM,CAAA;CAAE,CAoEtE;qBA1FY,OAAO,UAAU,EAAE,MAAM;8BACzB,OAAO,UAAU,EAAE,eAAe;sBAClC,OAAO,UAAU,EAAE,OAAO;sBAC1B,OAAO,KAAK,EAAE,OAAO;4BACrB,OAAO,iBAAiB,EAAE,aAAa;+BAdrB,iBAAiB"}
1
+ {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../src/router.js"],"names":[],"mappings":"AAmCO,sNAfJ;IAAuB,oBAAoB,EAAnC,MAAM;IACS,WAAW,EAA1B,MAAM;IACU,OAAO,GAAvB,MAAM,YAAC;IACU,mBAAmB,GAApC,OAAO,YAAC;IACS,YAAY,GAA7B,OAAO,YAAC;IACQ,MAAM,GAAtB,MAAM,YAAC;IACS,IAAI,GAApB,MAAM,YAAC;IACoB,gBAAgB,GAA3C,eAAe,EAAE,YAAC;IACD,mBAAmB,GAApC,OAAO,YAAC;IACS,gBAAgB,GAAjC,OAAO,YAAC;IACS,UAAU,GAA3B,OAAO,YAAC;IACe,YAAY,GAAnC,aAAa,YAAC;IACG,IAAI,GAArB,OAAO,YAAC;CAChB,GAAU;IAAE,GAAG,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC;IAAC,oBAAoB,EAAE,MAAM,CAAA;CAAE,CA0EtE;qBAjGY,OAAO,UAAU,EAAE,MAAM;8BACzB,OAAO,UAAU,EAAE,eAAe;sBAClC,OAAO,UAAU,EAAE,OAAO;sBAC1B,OAAO,KAAK,EAAE,OAAO;4BACrB,OAAO,iBAAiB,EAAE,aAAa;+BAdrB,iBAAiB"}