@tahminator/sapling 2.0.5-beta.2f539758 → 2.0.5-beta.a565b2cc

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/dist/index.cjs CHANGED
@@ -23,6 +23,8 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
23
23
  //#endregion
24
24
  let express = require("express");
25
25
  express = __toESM(express);
26
+ let swagger_ui_express = require("swagger-ui-express");
27
+ swagger_ui_express = __toESM(swagger_ui_express);
26
28
  //#region src/html/404.ts
27
29
  /**
28
30
  * Default Express.js 404 error page, as a string.
@@ -262,10 +264,13 @@ var ParserError = class ParserError extends ResponseStatusError {
262
264
  };
263
265
  //#endregion
264
266
  //#region src/helper/sapling.ts
265
- const settings = {
267
+ const _settings = {
266
268
  serialize: JSON.stringify,
267
269
  deserialize: JSON.parse,
268
- openapi: { path: "/openapi.json" }
270
+ doc: {
271
+ openApiPath: "/openapi.json",
272
+ swaggerPath: "/swagger.html"
273
+ }
269
274
  };
270
275
  /**
271
276
  * Collection of utility functions which are essential for Sapling to function.
@@ -344,13 +349,13 @@ var Sapling = class Sapling {
344
349
  * @defaultValue `JSON.stringify`
345
350
  */
346
351
  static serialize(value) {
347
- return settings.serialize(value);
352
+ return _settings.serialize(value);
348
353
  }
349
354
  /**
350
355
  * Replace the function used for `serialize`.
351
356
  */
352
357
  static setSerializeFn(fn) {
353
- settings.serialize = fn;
358
+ _settings.serialize = fn;
354
359
  }
355
360
  /**
356
361
  * De-serialize a JSON string back to a JavaScript object.
@@ -362,16 +367,19 @@ var Sapling = class Sapling {
362
367
  * @defaultValue `JSON.parse`
363
368
  */
364
369
  static deserialize(value) {
365
- return settings.deserialize(value);
370
+ return _settings.deserialize(value);
366
371
  }
367
372
  /**
368
373
  * Replace the function used for `deserialize`
369
374
  */
370
375
  static setDeserializeFn(fn) {
371
- settings.deserialize = fn;
376
+ _settings.deserialize = fn;
372
377
  }
373
378
  static setOpenApiPath(path) {
374
- settings.openapi.path = path;
379
+ _settings.doc.openApiPath = path;
380
+ }
381
+ static setSwaggerPath(path) {
382
+ _settings.doc.swaggerPath = path;
375
383
  }
376
384
  };
377
385
  //#endregion
@@ -655,17 +663,22 @@ var OpenAPIGenerator = class {
655
663
  };
656
664
  }
657
665
  toJsonSchema(schema) {
658
- return schema["~standard"].jsonSchema.output({ target: "openapi-3.0" });
666
+ try {
667
+ return schema["~standard"].jsonSchema.output({ target: "openapi-3.0" });
668
+ } catch (e) {
669
+ if (e instanceof Error && e.message.includes("Transforms cannot be represented in JSON Schema")) throw new Error(`${e.message}.\nIt appears that you are using z.transform() - it is highly recommended that you use z.codec instead - https://zod.dev/codecs`);
670
+ throw e;
671
+ }
659
672
  }
660
673
  };
661
674
  const openApiGenerator = new OpenAPIGenerator();
662
675
  function _registerControllerClass(controllerClass, prefix) {
663
676
  openApiGenerator.registerController(controllerClass, prefix);
664
677
  }
665
- function setOpenApiConfig(config) {
678
+ function _setOpenApiConfig(config) {
666
679
  openApiGenerator.setConfig(config);
667
680
  }
668
- function generateOpenApiSpec() {
681
+ function _generateOpenApiSpec() {
669
682
  return openApiGenerator.generateSpec();
670
683
  }
671
684
  //#endregion
@@ -937,12 +950,38 @@ DefaultResponseStatusErrorMiddleware = __decorate([MiddlewareClass()], DefaultRe
937
950
  //#region src/middleware/default/openapi/index.ts
938
951
  let DefaultOpenApiMiddleware = class DefaultOpenApiMiddleware {
939
952
  handle(_request, _response, _next) {
940
- return ResponseEntity.ok().body(generateOpenApiSpec());
953
+ return ResponseEntity.ok().body(_generateOpenApiSpec());
941
954
  }
942
955
  };
943
- __decorate([GET("/openapi.json")], DefaultOpenApiMiddleware.prototype, "handle", null);
956
+ __decorate([GET(_settings.doc.openApiPath)], DefaultOpenApiMiddleware.prototype, "handle", null);
944
957
  DefaultOpenApiMiddleware = __decorate([MiddlewareClass()], DefaultOpenApiMiddleware);
945
958
  //#endregion
959
+ //#region src/middleware/default/swagger/index.ts
960
+ let Serve = class Serve {
961
+ constructor() {
962
+ this.handlers = swagger_ui_express.default.serve;
963
+ }
964
+ handle(_request, _response, _next) {
965
+ return this.handlers;
966
+ }
967
+ };
968
+ __decorate([Middleware()], Serve.prototype, "handle", null);
969
+ Serve = __decorate([MiddlewareClass()], Serve);
970
+ let Setup = class Setup {
971
+ constructor() {
972
+ this.handler = swagger_ui_express.default.setup(void 0, { swaggerOptions: { url: _settings.doc.openApiPath } });
973
+ }
974
+ handle(request, response, next) {
975
+ return this.handler(request, response, next);
976
+ }
977
+ };
978
+ __decorate([Middleware()], Setup.prototype, "handle", null);
979
+ Setup = __decorate([MiddlewareClass()], Setup);
980
+ const DefaultSwaggerMiddleware = {
981
+ Serve,
982
+ Setup
983
+ };
984
+ //#endregion
946
985
  exports.Controller = Controller;
947
986
  exports.DELETE = DELETE;
948
987
  Object.defineProperty(exports, "DefaultBaseErrorMiddleware", {
@@ -969,6 +1008,7 @@ Object.defineProperty(exports, "DefaultResponseStatusErrorMiddleware", {
969
1008
  return DefaultResponseStatusErrorMiddleware;
970
1009
  }
971
1010
  });
1011
+ exports.DefaultSwaggerMiddleware = DefaultSwaggerMiddleware;
972
1012
  exports.GET = GET;
973
1013
  exports.HEAD = HEAD;
974
1014
  exports.Html404ErrorPage = Html404ErrorPage;
@@ -993,12 +1033,13 @@ exports._ControllerRegistry = _ControllerRegistry;
993
1033
  exports._InjectableDeps = _InjectableDeps;
994
1034
  exports._InjectableRegistry = _InjectableRegistry;
995
1035
  exports._Route = _Route;
1036
+ exports._generateOpenApiSpec = _generateOpenApiSpec;
996
1037
  exports._getRequestSchemas = _getRequestSchemas;
997
1038
  exports._getRoutes = _getRoutes;
998
1039
  exports._parseOrThrow = _parseOrThrow;
999
1040
  exports._registerControllerClass = _registerControllerClass;
1000
1041
  exports._resolve = _resolve;
1001
- exports.generateOpenApiSpec = generateOpenApiSpec;
1042
+ exports._setOpenApiConfig = _setOpenApiConfig;
1043
+ exports._settings = _settings;
1002
1044
  exports.methodResolve = methodResolve;
1003
1045
  exports.openApiGenerator = openApiGenerator;
1004
- exports.setOpenApiConfig = setOpenApiConfig;
package/dist/index.d.cts CHANGED
@@ -1,4 +1,4 @@
1
- import e, { ErrorRequestHandler, NextFunction, Request, Response as Response$1, Router } from "express";
1
+ import e, { ErrorRequestHandler, NextFunction, Request, RequestHandler, Response as Response$1, Router } from "express";
2
2
 
3
3
  //#region src/html/404.d.ts
4
4
  /**
@@ -447,6 +447,15 @@ declare class ParserError extends ResponseStatusError {
447
447
  }
448
448
  //#endregion
449
449
  //#region src/helper/sapling.d.ts
450
+ type Settings = {
451
+ serialize: (value: any) => string;
452
+ deserialize: (value: string) => any;
453
+ doc: {
454
+ openApiPath: string;
455
+ swaggerPath: string;
456
+ };
457
+ };
458
+ declare const _settings: Settings;
450
459
  /**
451
460
  * Collection of utility functions which are essential for Sapling to function.
452
461
  */
@@ -521,6 +530,7 @@ declare class Sapling {
521
530
  */
522
531
  static setDeserializeFn(this: void, fn: (value: string) => any): void;
523
532
  static setOpenApiPath(this: void, path: string): void;
533
+ static setSwaggerPath(this: void, path: string): void;
524
534
  }
525
535
  //#endregion
526
536
  //#region node_modules/.pnpm/openapi-types@12.1.3/node_modules/openapi-types/dist/index.d.ts
@@ -859,8 +869,8 @@ declare class OpenAPIGenerator {
859
869
  }
860
870
  declare const openApiGenerator: OpenAPIGenerator;
861
871
  declare function _registerControllerClass(controllerClass: Function, prefix: string): void;
862
- declare function setOpenApiConfig(config: OpenAPIConfig): void;
863
- declare function generateOpenApiSpec(): OpenAPIV3.Document;
872
+ declare function _setOpenApiConfig(config: OpenAPIConfig): void;
873
+ declare function _generateOpenApiSpec(): OpenAPIV3.Document;
864
874
  //#endregion
865
875
  //#region src/annotation/request.d.ts
866
876
  type RequestSchemaDefinition = {
@@ -979,4 +989,19 @@ declare class DefaultOpenApiMiddleware {
979
989
  handle(_request: Request, _response: Response$1, _next: NextFunction): ResponseEntity<OpenAPIV3.Document<{}>>;
980
990
  }
981
991
  //#endregion
982
- export { Class, Controller, DELETE, DefaultBaseErrorMiddleware, DefaultOpenApiMiddleware, DefaultParserErrorMiddleware, DefaultResponseStatusErrorMiddleware, ExpressMiddlewareFn, ExpressRouterMethodKey, ExpressRouterMethods, GET, HEAD, Html404ErrorPage, HttpHeaders, HttpStatus, Injectable, Middleware, MiddlewareClass, OPTIONS, PATCH, POST, PUT, ParserError, ParserErrorLocation, RedirectView, RequestBody, RequestParam, RequestQuery, ResponseEntity, ResponseEntityBuilder, ResponseStatusError, RouteDefinition, Sapling, _ControllerRegistry, _InjectableDeps, _InjectableRegistry, _Route, _getRequestSchemas, _getRoutes, _parseOrThrow, _registerControllerClass, _resolve, generateOpenApiSpec, methodResolve, openApiGenerator, setOpenApiConfig };
992
+ //#region src/middleware/default/swagger/index.d.ts
993
+ declare class Serve {
994
+ private readonly handlers;
995
+ handle(_request: Request, _response: Response$1, _next: NextFunction): RequestHandler[];
996
+ }
997
+ declare class Setup {
998
+ private readonly handler;
999
+ constructor();
1000
+ handle(request: Request, response: Response$1, next: NextFunction): unknown;
1001
+ }
1002
+ declare const DefaultSwaggerMiddleware: {
1003
+ Serve: typeof Serve;
1004
+ Setup: typeof Setup;
1005
+ };
1006
+ //#endregion
1007
+ export { Class, Controller, DELETE, DefaultBaseErrorMiddleware, DefaultOpenApiMiddleware, DefaultParserErrorMiddleware, DefaultResponseStatusErrorMiddleware, DefaultSwaggerMiddleware, ExpressMiddlewareFn, ExpressRouterMethodKey, ExpressRouterMethods, GET, HEAD, Html404ErrorPage, HttpHeaders, HttpStatus, Injectable, Middleware, MiddlewareClass, OPTIONS, PATCH, POST, PUT, ParserError, ParserErrorLocation, RedirectView, RequestBody, RequestParam, RequestQuery, ResponseEntity, ResponseEntityBuilder, ResponseStatusError, RouteDefinition, Sapling, _ControllerRegistry, _InjectableDeps, _InjectableRegistry, _Route, _generateOpenApiSpec, _getRequestSchemas, _getRoutes, _parseOrThrow, _registerControllerClass, _resolve, _setOpenApiConfig, _settings, methodResolve, openApiGenerator };
package/dist/index.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import e, { ErrorRequestHandler, NextFunction, Request, Response as Response$1, Router } from "express";
1
+ import e, { ErrorRequestHandler, NextFunction, Request, RequestHandler, Response as Response$1, Router } from "express";
2
2
 
3
3
  //#region src/html/404.d.ts
4
4
  /**
@@ -447,6 +447,15 @@ declare class ParserError extends ResponseStatusError {
447
447
  }
448
448
  //#endregion
449
449
  //#region src/helper/sapling.d.ts
450
+ type Settings = {
451
+ serialize: (value: any) => string;
452
+ deserialize: (value: string) => any;
453
+ doc: {
454
+ openApiPath: string;
455
+ swaggerPath: string;
456
+ };
457
+ };
458
+ declare const _settings: Settings;
450
459
  /**
451
460
  * Collection of utility functions which are essential for Sapling to function.
452
461
  */
@@ -521,6 +530,7 @@ declare class Sapling {
521
530
  */
522
531
  static setDeserializeFn(this: void, fn: (value: string) => any): void;
523
532
  static setOpenApiPath(this: void, path: string): void;
533
+ static setSwaggerPath(this: void, path: string): void;
524
534
  }
525
535
  //#endregion
526
536
  //#region node_modules/.pnpm/openapi-types@12.1.3/node_modules/openapi-types/dist/index.d.ts
@@ -859,8 +869,8 @@ declare class OpenAPIGenerator {
859
869
  }
860
870
  declare const openApiGenerator: OpenAPIGenerator;
861
871
  declare function _registerControllerClass(controllerClass: Function, prefix: string): void;
862
- declare function setOpenApiConfig(config: OpenAPIConfig): void;
863
- declare function generateOpenApiSpec(): OpenAPIV3.Document;
872
+ declare function _setOpenApiConfig(config: OpenAPIConfig): void;
873
+ declare function _generateOpenApiSpec(): OpenAPIV3.Document;
864
874
  //#endregion
865
875
  //#region src/annotation/request.d.ts
866
876
  type RequestSchemaDefinition = {
@@ -979,4 +989,19 @@ declare class DefaultOpenApiMiddleware {
979
989
  handle(_request: Request, _response: Response$1, _next: NextFunction): ResponseEntity<OpenAPIV3.Document<{}>>;
980
990
  }
981
991
  //#endregion
982
- export { Class, Controller, DELETE, DefaultBaseErrorMiddleware, DefaultOpenApiMiddleware, DefaultParserErrorMiddleware, DefaultResponseStatusErrorMiddleware, ExpressMiddlewareFn, ExpressRouterMethodKey, ExpressRouterMethods, GET, HEAD, Html404ErrorPage, HttpHeaders, HttpStatus, Injectable, Middleware, MiddlewareClass, OPTIONS, PATCH, POST, PUT, ParserError, ParserErrorLocation, RedirectView, RequestBody, RequestParam, RequestQuery, ResponseEntity, ResponseEntityBuilder, ResponseStatusError, RouteDefinition, Sapling, _ControllerRegistry, _InjectableDeps, _InjectableRegistry, _Route, _getRequestSchemas, _getRoutes, _parseOrThrow, _registerControllerClass, _resolve, generateOpenApiSpec, methodResolve, openApiGenerator, setOpenApiConfig };
992
+ //#region src/middleware/default/swagger/index.d.ts
993
+ declare class Serve {
994
+ private readonly handlers;
995
+ handle(_request: Request, _response: Response$1, _next: NextFunction): RequestHandler[];
996
+ }
997
+ declare class Setup {
998
+ private readonly handler;
999
+ constructor();
1000
+ handle(request: Request, response: Response$1, next: NextFunction): unknown;
1001
+ }
1002
+ declare const DefaultSwaggerMiddleware: {
1003
+ Serve: typeof Serve;
1004
+ Setup: typeof Setup;
1005
+ };
1006
+ //#endregion
1007
+ export { Class, Controller, DELETE, DefaultBaseErrorMiddleware, DefaultOpenApiMiddleware, DefaultParserErrorMiddleware, DefaultResponseStatusErrorMiddleware, DefaultSwaggerMiddleware, ExpressMiddlewareFn, ExpressRouterMethodKey, ExpressRouterMethods, GET, HEAD, Html404ErrorPage, HttpHeaders, HttpStatus, Injectable, Middleware, MiddlewareClass, OPTIONS, PATCH, POST, PUT, ParserError, ParserErrorLocation, RedirectView, RequestBody, RequestParam, RequestQuery, ResponseEntity, ResponseEntityBuilder, ResponseStatusError, RouteDefinition, Sapling, _ControllerRegistry, _InjectableDeps, _InjectableRegistry, _Route, _generateOpenApiSpec, _getRequestSchemas, _getRoutes, _parseOrThrow, _registerControllerClass, _resolve, _setOpenApiConfig, _settings, methodResolve, openApiGenerator };
package/dist/index.mjs CHANGED
@@ -1,4 +1,5 @@
1
1
  import e, { Router } from "express";
2
+ import swagger from "swagger-ui-express";
2
3
  //#region src/html/404.ts
3
4
  /**
4
5
  * Default Express.js 404 error page, as a string.
@@ -238,10 +239,13 @@ var ParserError = class ParserError extends ResponseStatusError {
238
239
  };
239
240
  //#endregion
240
241
  //#region src/helper/sapling.ts
241
- const settings = {
242
+ const _settings = {
242
243
  serialize: JSON.stringify,
243
244
  deserialize: JSON.parse,
244
- openapi: { path: "/openapi.json" }
245
+ doc: {
246
+ openApiPath: "/openapi.json",
247
+ swaggerPath: "/swagger.html"
248
+ }
245
249
  };
246
250
  /**
247
251
  * Collection of utility functions which are essential for Sapling to function.
@@ -320,13 +324,13 @@ var Sapling = class Sapling {
320
324
  * @defaultValue `JSON.stringify`
321
325
  */
322
326
  static serialize(value) {
323
- return settings.serialize(value);
327
+ return _settings.serialize(value);
324
328
  }
325
329
  /**
326
330
  * Replace the function used for `serialize`.
327
331
  */
328
332
  static setSerializeFn(fn) {
329
- settings.serialize = fn;
333
+ _settings.serialize = fn;
330
334
  }
331
335
  /**
332
336
  * De-serialize a JSON string back to a JavaScript object.
@@ -338,16 +342,19 @@ var Sapling = class Sapling {
338
342
  * @defaultValue `JSON.parse`
339
343
  */
340
344
  static deserialize(value) {
341
- return settings.deserialize(value);
345
+ return _settings.deserialize(value);
342
346
  }
343
347
  /**
344
348
  * Replace the function used for `deserialize`
345
349
  */
346
350
  static setDeserializeFn(fn) {
347
- settings.deserialize = fn;
351
+ _settings.deserialize = fn;
348
352
  }
349
353
  static setOpenApiPath(path) {
350
- settings.openapi.path = path;
354
+ _settings.doc.openApiPath = path;
355
+ }
356
+ static setSwaggerPath(path) {
357
+ _settings.doc.swaggerPath = path;
351
358
  }
352
359
  };
353
360
  //#endregion
@@ -631,17 +638,22 @@ var OpenAPIGenerator = class {
631
638
  };
632
639
  }
633
640
  toJsonSchema(schema) {
634
- return schema["~standard"].jsonSchema.output({ target: "openapi-3.0" });
641
+ try {
642
+ return schema["~standard"].jsonSchema.output({ target: "openapi-3.0" });
643
+ } catch (e) {
644
+ if (e instanceof Error && e.message.includes("Transforms cannot be represented in JSON Schema")) throw new Error(`${e.message}.\nIt appears that you are using z.transform() - it is highly recommended that you use z.codec instead - https://zod.dev/codecs`);
645
+ throw e;
646
+ }
635
647
  }
636
648
  };
637
649
  const openApiGenerator = new OpenAPIGenerator();
638
650
  function _registerControllerClass(controllerClass, prefix) {
639
651
  openApiGenerator.registerController(controllerClass, prefix);
640
652
  }
641
- function setOpenApiConfig(config) {
653
+ function _setOpenApiConfig(config) {
642
654
  openApiGenerator.setConfig(config);
643
655
  }
644
- function generateOpenApiSpec() {
656
+ function _generateOpenApiSpec() {
645
657
  return openApiGenerator.generateSpec();
646
658
  }
647
659
  //#endregion
@@ -913,10 +925,36 @@ DefaultResponseStatusErrorMiddleware = __decorate([MiddlewareClass()], DefaultRe
913
925
  //#region src/middleware/default/openapi/index.ts
914
926
  let DefaultOpenApiMiddleware = class DefaultOpenApiMiddleware {
915
927
  handle(_request, _response, _next) {
916
- return ResponseEntity.ok().body(generateOpenApiSpec());
928
+ return ResponseEntity.ok().body(_generateOpenApiSpec());
917
929
  }
918
930
  };
919
- __decorate([GET("/openapi.json")], DefaultOpenApiMiddleware.prototype, "handle", null);
931
+ __decorate([GET(_settings.doc.openApiPath)], DefaultOpenApiMiddleware.prototype, "handle", null);
920
932
  DefaultOpenApiMiddleware = __decorate([MiddlewareClass()], DefaultOpenApiMiddleware);
921
933
  //#endregion
922
- export { Controller, DELETE, DefaultBaseErrorMiddleware, DefaultOpenApiMiddleware, DefaultParserErrorMiddleware, DefaultResponseStatusErrorMiddleware, GET, HEAD, Html404ErrorPage, HttpStatus, Injectable, Middleware, MiddlewareClass, OPTIONS, PATCH, POST, PUT, ParserError, RedirectView, RequestBody, RequestParam, RequestQuery, ResponseEntity, ResponseEntityBuilder, ResponseStatusError, Sapling, _ControllerRegistry, _InjectableDeps, _InjectableRegistry, _Route, _getRequestSchemas, _getRoutes, _parseOrThrow, _registerControllerClass, _resolve, generateOpenApiSpec, methodResolve, openApiGenerator, setOpenApiConfig };
934
+ //#region src/middleware/default/swagger/index.ts
935
+ let Serve = class Serve {
936
+ constructor() {
937
+ this.handlers = swagger.serve;
938
+ }
939
+ handle(_request, _response, _next) {
940
+ return this.handlers;
941
+ }
942
+ };
943
+ __decorate([Middleware()], Serve.prototype, "handle", null);
944
+ Serve = __decorate([MiddlewareClass()], Serve);
945
+ let Setup = class Setup {
946
+ constructor() {
947
+ this.handler = swagger.setup(void 0, { swaggerOptions: { url: _settings.doc.openApiPath } });
948
+ }
949
+ handle(request, response, next) {
950
+ return this.handler(request, response, next);
951
+ }
952
+ };
953
+ __decorate([Middleware()], Setup.prototype, "handle", null);
954
+ Setup = __decorate([MiddlewareClass()], Setup);
955
+ const DefaultSwaggerMiddleware = {
956
+ Serve,
957
+ Setup
958
+ };
959
+ //#endregion
960
+ export { Controller, DELETE, DefaultBaseErrorMiddleware, DefaultOpenApiMiddleware, DefaultParserErrorMiddleware, DefaultResponseStatusErrorMiddleware, DefaultSwaggerMiddleware, GET, HEAD, Html404ErrorPage, HttpStatus, Injectable, Middleware, MiddlewareClass, OPTIONS, PATCH, POST, PUT, ParserError, RedirectView, RequestBody, RequestParam, RequestQuery, ResponseEntity, ResponseEntityBuilder, ResponseStatusError, Sapling, _ControllerRegistry, _InjectableDeps, _InjectableRegistry, _Route, _generateOpenApiSpec, _getRequestSchemas, _getRoutes, _parseOrThrow, _registerControllerClass, _resolve, _setOpenApiConfig, _settings, methodResolve, openApiGenerator };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tahminator/sapling",
3
- "version": "2.0.5-beta.2f539758",
3
+ "version": "2.0.5-beta.a565b2cc",
4
4
  "author": "Tahmid Ahmed",
5
5
  "description": "A library to help you write cleaner Express.js code",
6
6
  "repository": {
@@ -44,13 +44,14 @@
44
44
  "@standard-schema/spec": "^1.1.0",
45
45
  "@types/express": "^5",
46
46
  "@types/supertest": "^7.2.0",
47
+ "@types/swagger-ui-express": "^4.1.8",
47
48
  "@vitest/coverage-istanbul": "^4.1.2",
48
- "openapi-types": "12.1.3",
49
49
  "eslint": "^10.1.0",
50
50
  "eslint-plugin-perfectionist": "^5.7.0",
51
51
  "globals": "^17.4.0",
52
52
  "jiti": "^2.6.1",
53
53
  "jsdom": "^29.0.1",
54
+ "openapi-types": "12.1.3",
54
55
  "prettier": "^3.8.1",
55
56
  "superjson": "^2.2.6",
56
57
  "supertest": "^7.2.2",
@@ -63,5 +64,8 @@
63
64
  "inlinedDependencies": {
64
65
  "@standard-schema/spec": "1.1.0",
65
66
  "openapi-types": "12.1.3"
67
+ },
68
+ "dependencies": {
69
+ "swagger-ui-express": "^5.0.1"
66
70
  }
67
71
  }