@spinajs/http-swagger 2.0.470 → 2.0.472

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.
Files changed (71) hide show
  1. package/lib/cjs/cli/GenerateSwaggerCache.d.ts +10 -0
  2. package/lib/cjs/cli/GenerateSwaggerCache.d.ts.map +1 -0
  3. package/lib/cjs/cli/GenerateSwaggerCache.js +43 -0
  4. package/lib/cjs/cli/GenerateSwaggerCache.js.map +1 -0
  5. package/lib/cjs/config/http-swagger.d.ts +42 -0
  6. package/lib/cjs/config/http-swagger.d.ts.map +1 -0
  7. package/lib/cjs/config/http-swagger.js +84 -0
  8. package/lib/cjs/config/http-swagger.js.map +1 -0
  9. package/lib/cjs/controllers/SwaggerController.d.ts +26 -0
  10. package/lib/cjs/controllers/SwaggerController.d.ts.map +1 -0
  11. package/lib/cjs/controllers/SwaggerController.js +74 -0
  12. package/lib/cjs/controllers/SwaggerController.js.map +1 -0
  13. package/lib/cjs/index.d.ts +7 -0
  14. package/lib/cjs/index.d.ts.map +1 -0
  15. package/lib/cjs/index.js +23 -0
  16. package/lib/cjs/index.js.map +1 -0
  17. package/lib/cjs/interfaces.d.ts +211 -0
  18. package/lib/cjs/interfaces.d.ts.map +1 -0
  19. package/lib/cjs/interfaces.js +3 -0
  20. package/lib/cjs/interfaces.js.map +1 -0
  21. package/lib/cjs/openapi-builder.d.ts +153 -0
  22. package/lib/cjs/openapi-builder.d.ts.map +1 -0
  23. package/lib/cjs/openapi-builder.js +844 -0
  24. package/lib/cjs/openapi-builder.js.map +1 -0
  25. package/lib/cjs/package.json +1 -0
  26. package/lib/cjs/swagger-cache.d.ts +18 -0
  27. package/lib/cjs/swagger-cache.d.ts.map +1 -0
  28. package/lib/cjs/swagger-cache.js +110 -0
  29. package/lib/cjs/swagger-cache.js.map +1 -0
  30. package/lib/cjs/swagger-service.d.ts +24 -0
  31. package/lib/cjs/swagger-service.d.ts.map +1 -0
  32. package/lib/cjs/swagger-service.js +88 -0
  33. package/lib/cjs/swagger-service.js.map +1 -0
  34. package/lib/mjs/cli/GenerateSwaggerCache.d.ts +10 -0
  35. package/lib/mjs/cli/GenerateSwaggerCache.d.ts.map +1 -0
  36. package/lib/mjs/cli/GenerateSwaggerCache.js +40 -0
  37. package/lib/mjs/cli/GenerateSwaggerCache.js.map +1 -0
  38. package/lib/mjs/config/http-swagger.d.ts +42 -0
  39. package/lib/mjs/config/http-swagger.d.ts.map +1 -0
  40. package/lib/mjs/config/http-swagger.js +82 -0
  41. package/lib/mjs/config/http-swagger.js.map +1 -0
  42. package/lib/mjs/controllers/SwaggerController.d.ts +26 -0
  43. package/lib/mjs/controllers/SwaggerController.d.ts.map +1 -0
  44. package/lib/mjs/controllers/SwaggerController.js +71 -0
  45. package/lib/mjs/controllers/SwaggerController.js.map +1 -0
  46. package/lib/mjs/index.d.ts +7 -0
  47. package/lib/mjs/index.d.ts.map +1 -0
  48. package/lib/mjs/index.js +7 -0
  49. package/lib/mjs/index.js.map +1 -0
  50. package/lib/mjs/interfaces.d.ts +211 -0
  51. package/lib/mjs/interfaces.d.ts.map +1 -0
  52. package/lib/mjs/interfaces.js +2 -0
  53. package/lib/mjs/interfaces.js.map +1 -0
  54. package/lib/mjs/openapi-builder.d.ts +153 -0
  55. package/lib/mjs/openapi-builder.d.ts.map +1 -0
  56. package/lib/mjs/openapi-builder.js +840 -0
  57. package/lib/mjs/openapi-builder.js.map +1 -0
  58. package/lib/mjs/package.json +1 -0
  59. package/lib/mjs/swagger-cache.d.ts +18 -0
  60. package/lib/mjs/swagger-cache.d.ts.map +1 -0
  61. package/lib/mjs/swagger-cache.js +107 -0
  62. package/lib/mjs/swagger-cache.js.map +1 -0
  63. package/lib/mjs/swagger-service.d.ts +24 -0
  64. package/lib/mjs/swagger-service.d.ts.map +1 -0
  65. package/lib/mjs/swagger-service.js +85 -0
  66. package/lib/mjs/swagger-service.js.map +1 -0
  67. package/lib/tsconfig.cjs.tsbuildinfo +1 -0
  68. package/lib/tsconfig.mjs.tsbuildinfo +1 -0
  69. package/lib/views/swagger-ui-init.js +11 -0
  70. package/lib/views/swagger.pug +16 -0
  71. package/package.json +15 -11
@@ -0,0 +1,10 @@
1
+ import { CliCommand } from '@spinajs/cli';
2
+ import { Log } from '@spinajs/log-common';
3
+ import { ClassInfo } from '@spinajs/di';
4
+ import { BaseController } from '@spinajs/http';
5
+ export declare class SwaggerCacheCommand extends CliCommand {
6
+ protected Log: Log;
7
+ protected Controllers: Array<ClassInfo<BaseController>>;
8
+ execute(): Promise<void>;
9
+ }
10
+ //# sourceMappingURL=GenerateSwaggerCache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GenerateSwaggerCache.d.ts","sourceRoot":"","sources":["../../../src/cli/GenerateSwaggerCache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAW,MAAM,cAAc,CAAC;AACnD,OAAO,EAAU,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAM,MAAM,aAAa,CAAC;AAG5C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAG/C,qBACa,mBAAoB,SAAQ,UAAU;IAEjD,SAAS,CAAC,GAAG,EAAG,GAAG,CAAC;IAGpB,SAAS,CAAC,WAAW,EAAG,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC;IAE5C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAatC"}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.SwaggerCacheCommand = void 0;
13
+ const cli_1 = require("@spinajs/cli");
14
+ const log_common_1 = require("@spinajs/log-common");
15
+ const di_1 = require("@spinajs/di");
16
+ const fs_1 = require("@spinajs/fs");
17
+ const reflection_1 = require("@spinajs/reflection");
18
+ const swagger_cache_js_1 = require("../swagger-cache.js");
19
+ let SwaggerCacheCommand = class SwaggerCacheCommand extends cli_1.CliCommand {
20
+ async execute() {
21
+ await di_1.DI.resolve(fs_1.fsService);
22
+ this.Log.info('Generating Swagger documentation cache...');
23
+ const cache = await di_1.DI.resolve(swagger_cache_js_1.SwaggerDocCache);
24
+ for (const controller of this.Controllers) {
25
+ this.Log.info(`Processing controller: ${controller.name}`);
26
+ await cache.getCache(controller);
27
+ }
28
+ this.Log.info('Swagger cache generation complete.');
29
+ }
30
+ };
31
+ exports.SwaggerCacheCommand = SwaggerCacheCommand;
32
+ __decorate([
33
+ (0, log_common_1.Logger)('http-swagger'),
34
+ __metadata("design:type", log_common_1.Log)
35
+ ], SwaggerCacheCommand.prototype, "Log", void 0);
36
+ __decorate([
37
+ (0, reflection_1.ListFromFiles)('/**/!(*.d).{ts,js}', 'system.dirs.controllers'),
38
+ __metadata("design:type", Array)
39
+ ], SwaggerCacheCommand.prototype, "Controllers", void 0);
40
+ exports.SwaggerCacheCommand = SwaggerCacheCommand = __decorate([
41
+ (0, cli_1.Command)('http:swagger:cache', 'generate swagger documentation cache from controller JSDoc comments')
42
+ ], SwaggerCacheCommand);
43
+ //# sourceMappingURL=GenerateSwaggerCache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GenerateSwaggerCache.js","sourceRoot":"","sources":["../../../src/cli/GenerateSwaggerCache.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,sCAAmD;AACnD,oDAAkD;AAClD,oCAA4C;AAC5C,oCAAwC;AACxC,oDAAoD;AAEpD,0DAAsD;AAG/C,IAAM,mBAAmB,GAAzB,MAAM,mBAAoB,SAAQ,gBAAU;IAO1C,KAAK,CAAC,OAAO;QAClB,MAAM,OAAE,CAAC,OAAO,CAAC,cAAS,CAAC,CAAC;QAE5B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;QAC3D,MAAM,KAAK,GAAG,MAAM,OAAE,CAAC,OAAO,CAAC,kCAAe,CAAC,CAAC;QAEhD,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YAC1C,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,0BAA0B,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;YAC3D,MAAM,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QACnC,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;IACtD,CAAC;CACF,CAAA;AApBY,kDAAmB;AAEpB;IADT,IAAA,mBAAM,EAAC,cAAc,CAAC;8BACP,gBAAG;gDAAC;AAGV;IADT,IAAA,0BAAa,EAAC,oBAAoB,EAAE,yBAAyB,CAAC;8BACvC,KAAK;wDAA4B;8BAL9C,mBAAmB;IAD/B,IAAA,aAAO,EAAC,oBAAoB,EAAE,qEAAqE,CAAC;GACxF,mBAAmB,CAoB/B"}
@@ -0,0 +1,42 @@
1
+ import { ConfigVar } from '@spinajs/configuration-common';
2
+ declare const httpSwagger: {
3
+ system: {
4
+ dirs: {
5
+ controllers: string[];
6
+ cli: string[];
7
+ };
8
+ };
9
+ fs: {
10
+ providers: {
11
+ service: string;
12
+ name: string;
13
+ basePath: string;
14
+ }[];
15
+ };
16
+ http: {
17
+ Static: {
18
+ Route: string;
19
+ Path: string;
20
+ }[];
21
+ swagger: {
22
+ enabled: boolean;
23
+ title: string;
24
+ version: string;
25
+ description: string;
26
+ basePath: string;
27
+ servers: {
28
+ url: string;
29
+ description?: string;
30
+ }[];
31
+ ui: {
32
+ cssUrl: string;
33
+ bundleUrl: string;
34
+ presetUrl: string;
35
+ specUrl: ConfigVar;
36
+ pageTitle: string;
37
+ };
38
+ };
39
+ };
40
+ };
41
+ export default httpSwagger;
42
+ //# sourceMappingURL=http-swagger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-swagger.d.ts","sourceRoot":"","sources":["../../../src/config/http-swagger.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAiB,MAAM,+BAA+B,CAAC;AA8BzE,QAAA,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;qBAsCI;gBAAE,GAAG,EAAE,MAAM,CAAC;gBAAC,WAAW,CAAC,EAAE,MAAM,CAAA;aAAE,EAAE;;;;;;;;;;CAa3D,CAAC;AAEF,eAAe,WAAW,CAAC"}
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const path_1 = require("path");
4
+ const fs_1 = require("fs");
5
+ const configuration_common_1 = require("@spinajs/configuration-common");
6
+ const di_1 = require("@spinajs/di");
7
+ function cwd(...paths) {
8
+ return (0, path_1.join)(process.env.WORKSPACE_ROOT_PATH ?? process.cwd(), ...paths);
9
+ }
10
+ function lib(...paths) {
11
+ return (0, path_1.join)(cwd(), 'node_modules', '@spinajs', 'http-swagger', 'lib', ...paths);
12
+ }
13
+ function swaggerUiDist() {
14
+ let dir = cwd();
15
+ // Walk up the directory tree to handle hoisted packages in monorepos
16
+ while (true) {
17
+ const candidate = (0, path_1.join)(dir, 'node_modules', 'swagger-ui-dist');
18
+ if ((0, fs_1.existsSync)(candidate))
19
+ return candidate;
20
+ const parent = (0, path_1.dirname)(dir);
21
+ if (parent === dir)
22
+ break;
23
+ dir = parent;
24
+ }
25
+ throw new Error('swagger-ui-dist package not found. Please install it as a dependency.');
26
+ }
27
+ function dir(path) {
28
+ const inCommonJs = typeof module !== 'undefined';
29
+ return (0, path_1.resolve)((0, path_1.normalize)((0, path_1.join)(process.env.WORKSPACE_ROOT_PATH ?? process.cwd(), 'node_modules', '@spinajs', 'http-swagger', 'lib', inCommonJs ? 'cjs' : 'mjs', path)));
30
+ }
31
+ const httpSwagger = {
32
+ system: {
33
+ dirs: {
34
+ controllers: [dir('controllers')],
35
+ cli: [dir('cli')]
36
+ },
37
+ },
38
+ fs: {
39
+ providers: [
40
+ {
41
+ service: 'fsNative',
42
+ name: '__fs_swagger_views__',
43
+ basePath: lib('views'),
44
+ },
45
+ {
46
+ service: 'fsNative',
47
+ name: '__fs_swagger_cache__',
48
+ basePath: (0, path_1.join)(process.cwd(), '__cache__', '__swagger__'),
49
+ },
50
+ ],
51
+ },
52
+ http: {
53
+ Static: [
54
+ {
55
+ Route: '/docs/ui',
56
+ Path: swaggerUiDist(),
57
+ },
58
+ {
59
+ Route: '/docs/static',
60
+ Path: lib('views'),
61
+ },
62
+ ],
63
+ swagger: {
64
+ enabled: true,
65
+ title: 'API Documentation',
66
+ version: '1.0.0',
67
+ description: '',
68
+ basePath: '',
69
+ servers: [],
70
+ ui: {
71
+ cssUrl: '/docs/ui/swagger-ui.css',
72
+ bundleUrl: '/docs/ui/swagger-ui-bundle.js',
73
+ presetUrl: '/docs/ui/swagger-ui-standalone-preset.js',
74
+ specUrl: new configuration_common_1.ConfigVar(() => {
75
+ const prefix = di_1.DI.get(configuration_common_1.Configuration)?.get('http.controllers.route.prefix', '');
76
+ return prefix ? `/${prefix}/docs/swagger.json` : '/docs/swagger.json';
77
+ }),
78
+ pageTitle: 'API Documentation',
79
+ },
80
+ },
81
+ },
82
+ };
83
+ exports.default = httpSwagger;
84
+ //# sourceMappingURL=http-swagger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-swagger.js","sourceRoot":"","sources":["../../../src/config/http-swagger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import { BaseController, Json, Ok, TemplateResponse } from '@spinajs/http';
2
+ import { SwaggerService } from '../swagger-service.js';
3
+ import { ISwaggerUiConfig } from '../interfaces.js';
4
+ /**
5
+ * Controller that serves Swagger/OpenAPI documentation.
6
+ * Provides the OpenAPI JSON spec and a Swagger UI interface.
7
+ */
8
+ export declare class SwaggerController extends BaseController {
9
+ protected Swagger: SwaggerService;
10
+ protected UiConfig: ISwaggerUiConfig;
11
+ /**
12
+ * Returns the OpenAPI 3.0 JSON specification.
13
+ * @returns OpenAPI specification document
14
+ */
15
+ getSpec(): Promise<Json<{
16
+ error: string;
17
+ }> | Json<import("../interfaces.js").IOpenApiDocument>>;
18
+ /**
19
+ * Serves the Swagger UI HTML page rendered via Pug template.
20
+ * @returns HTML page with Swagger UI
21
+ */
22
+ getUI(): Promise<Ok<{
23
+ error: string;
24
+ }> | TemplateResponse>;
25
+ }
26
+ //# sourceMappingURL=SwaggerController.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SwaggerController.d.ts","sourceRoot":"","sources":["../../../src/controllers/SwaggerController.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAiB,IAAI,EAAE,EAAE,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC1F,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD;;;GAGG;AACH,qBACa,iBAAkB,SAAQ,cAAc;IAEnD,SAAS,CAAC,OAAO,EAAG,cAAc,CAAC;IAGnC,SAAS,CAAC,QAAQ,EAAG,gBAAgB,CAAC;IAEtC;;;OAGG;IAEU,OAAO;;;IAQpB;;;OAGG;IAEU,KAAK;;;CAkBnB"}
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.SwaggerController = void 0;
13
+ const di_1 = require("@spinajs/di");
14
+ const configuration_1 = require("@spinajs/configuration");
15
+ const http_1 = require("@spinajs/http");
16
+ const swagger_service_js_1 = require("../swagger-service.js");
17
+ /**
18
+ * Controller that serves Swagger/OpenAPI documentation.
19
+ * Provides the OpenAPI JSON spec and a Swagger UI interface.
20
+ */
21
+ let SwaggerController = class SwaggerController extends http_1.BaseController {
22
+ /**
23
+ * Returns the OpenAPI 3.0 JSON specification.
24
+ * @returns OpenAPI specification document
25
+ */
26
+ async getSpec() {
27
+ if (!this.Swagger.IsEnabled) {
28
+ return new http_1.Json({ error: 'Swagger documentation is disabled' });
29
+ }
30
+ return new http_1.Json(await this.Swagger.getSpec());
31
+ }
32
+ /**
33
+ * Serves the Swagger UI HTML page rendered via Pug template.
34
+ * @returns HTML page with Swagger UI
35
+ */
36
+ async getUI() {
37
+ if (!this.Swagger.IsEnabled) {
38
+ return new http_1.Ok({ error: 'Swagger documentation is disabled' });
39
+ }
40
+ const cfg = this.UiConfig || {};
41
+ return new http_1.TemplateResponse({ template: 'swagger.pug', provider: '__fs_swagger_views__' }, {
42
+ title: cfg.pageTitle || (await this.Swagger.getSpec())?.info?.title || 'API Documentation',
43
+ cssUrl: cfg.cssUrl || 'https://cdn.jsdelivr.net/npm/swagger-ui-dist@5/swagger-ui.css',
44
+ bundleUrl: cfg.bundleUrl || 'https://cdn.jsdelivr.net/npm/swagger-ui-dist@5/swagger-ui-bundle.js',
45
+ presetUrl: cfg.presetUrl || 'https://cdn.jsdelivr.net/npm/swagger-ui-dist@5/swagger-ui-standalone-preset.js',
46
+ specUrl: cfg.specUrl || '/docs/swagger.json',
47
+ });
48
+ }
49
+ };
50
+ exports.SwaggerController = SwaggerController;
51
+ __decorate([
52
+ (0, di_1.Autoinject)(),
53
+ __metadata("design:type", swagger_service_js_1.SwaggerService)
54
+ ], SwaggerController.prototype, "Swagger", void 0);
55
+ __decorate([
56
+ (0, configuration_1.Config)('http.swagger.ui'),
57
+ __metadata("design:type", Object)
58
+ ], SwaggerController.prototype, "UiConfig", void 0);
59
+ __decorate([
60
+ (0, http_1.Get)('swagger.json'),
61
+ __metadata("design:type", Function),
62
+ __metadata("design:paramtypes", []),
63
+ __metadata("design:returntype", Promise)
64
+ ], SwaggerController.prototype, "getSpec", null);
65
+ __decorate([
66
+ (0, http_1.Get)('/'),
67
+ __metadata("design:type", Function),
68
+ __metadata("design:paramtypes", []),
69
+ __metadata("design:returntype", Promise)
70
+ ], SwaggerController.prototype, "getUI", null);
71
+ exports.SwaggerController = SwaggerController = __decorate([
72
+ (0, http_1.BasePath)('docs')
73
+ ], SwaggerController);
74
+ //# sourceMappingURL=SwaggerController.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SwaggerController.js","sourceRoot":"","sources":["../../../src/controllers/SwaggerController.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,oCAAyC;AACzC,0DAAgD;AAChD,wCAA0F;AAC1F,8DAAuD;AAGvD;;;GAGG;AAEI,IAAM,iBAAiB,GAAvB,MAAM,iBAAkB,SAAQ,qBAAc;IAOnD;;;OAGG;IAEU,AAAN,KAAK,CAAC,OAAO;QAClB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YAC5B,OAAO,IAAI,WAAI,CAAC,EAAE,KAAK,EAAE,mCAAmC,EAAE,CAAC,CAAC;QAClE,CAAC;QAED,OAAO,IAAI,WAAI,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAChD,CAAC;IAED;;;OAGG;IAEU,AAAN,KAAK,CAAC,KAAK;QAChB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YAC5B,OAAO,IAAI,SAAE,CAAC,EAAE,KAAK,EAAE,mCAAmC,EAAE,CAAC,CAAC;QAChE,CAAC;QAED,MAAM,GAAG,GAA8B,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;QAE3D,OAAO,IAAI,uBAAgB,CACzB,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,sBAAsB,EAAE,EAC7D;YACE,KAAK,EAAE,GAAG,CAAC,SAAS,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,IAAI,mBAAmB;YAC1F,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,+DAA+D;YACrF,SAAS,EAAE,GAAG,CAAC,SAAS,IAAI,qEAAqE;YACjG,SAAS,EAAE,GAAG,CAAC,SAAS,IAAI,gFAAgF;YAC5G,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,oBAAoB;SAC7C,CACF,CAAC;IACJ,CAAC;CACF,CAAA;AA3CY,8CAAiB;AAElB;IADT,IAAA,eAAU,GAAE;8BACO,mCAAc;kDAAC;AAGzB;IADT,IAAA,sBAAM,EAAC,iBAAiB,CAAC;;mDACY;AAOzB;IADZ,IAAA,UAAG,EAAC,cAAc,CAAC;;;;gDAOnB;AAOY;IADZ,IAAA,UAAG,EAAC,GAAG,CAAC;;;;8CAkBR;4BA1CU,iBAAiB;IAD7B,IAAA,eAAQ,EAAC,MAAM,CAAC;GACJ,iBAAiB,CA2C7B"}
@@ -0,0 +1,7 @@
1
+ export * from './interfaces.js';
2
+ export * from './swagger-cache.js';
3
+ export * from './swagger-service.js';
4
+ export * from './controllers/SwaggerController.js';
5
+ export * from './openapi-builder.js';
6
+ export * from './cli/GenerateSwaggerCache.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oCAAoC,CAAC;AACnD,cAAc,sBAAsB,CAAC;AACrC,cAAc,+BAA+B,CAAC"}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./interfaces.js"), exports);
18
+ __exportStar(require("./swagger-cache.js"), exports);
19
+ __exportStar(require("./swagger-service.js"), exports);
20
+ __exportStar(require("./controllers/SwaggerController.js"), exports);
21
+ __exportStar(require("./openapi-builder.js"), exports);
22
+ __exportStar(require("./cli/GenerateSwaggerCache.js"), exports);
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAAgC;AAChC,qDAAmC;AACnC,uDAAqC;AACrC,qEAAmD;AACnD,uDAAqC;AACrC,gEAA8C"}
@@ -0,0 +1,211 @@
1
+ /**
2
+ * Configuration for Swagger/OpenAPI documentation generation.
3
+ * Read from application configuration at path `http.swagger`
4
+ */
5
+ export interface ISwaggerConfig {
6
+ enabled: boolean;
7
+ title: string;
8
+ version: string;
9
+ description?: string;
10
+ basePath?: string;
11
+ servers?: ISwaggerServer[];
12
+ securitySchemes?: Record<string, ISecurityScheme>;
13
+ security?: Record<string, string[]>[];
14
+ ui?: ISwaggerUiConfig;
15
+ }
16
+ /**
17
+ * Configuration for Swagger UI rendering
18
+ */
19
+ export interface ISwaggerUiConfig {
20
+ /**
21
+ * URL to swagger-ui CSS file
22
+ */
23
+ cssUrl: string;
24
+ /**
25
+ * URL to swagger-ui-bundle.js
26
+ */
27
+ bundleUrl: string;
28
+ /**
29
+ * URL to swagger-ui-standalone-preset.js
30
+ */
31
+ presetUrl: string;
32
+ /**
33
+ * URL to the OpenAPI JSON spec endpoint (used by Swagger UI to load the spec)
34
+ */
35
+ specUrl: string;
36
+ /**
37
+ * Custom page title for the Swagger UI page
38
+ */
39
+ pageTitle?: string;
40
+ }
41
+ export interface ISwaggerServer {
42
+ url: string;
43
+ description?: string;
44
+ }
45
+ export interface ISecurityScheme {
46
+ type: 'apiKey' | 'http' | 'oauth2' | 'openIdConnect';
47
+ scheme?: string;
48
+ bearerFormat?: string;
49
+ name?: string;
50
+ in?: 'query' | 'header' | 'cookie';
51
+ description?: string;
52
+ }
53
+ /**
54
+ * JSDoc documentation extracted from a controller method
55
+ */
56
+ export interface IMethodDocumentation {
57
+ summary?: string;
58
+ description?: string;
59
+ params: Record<string, IParamDocumentation>;
60
+ returns?: IReturnDocumentation;
61
+ responses?: Record<string, IResponseDocumentation>;
62
+ examples?: IExampleDocumentation[];
63
+ tags?: string[];
64
+ deprecated?: boolean;
65
+ security?: Array<Record<string, string[]>>;
66
+ }
67
+ export interface IParamDocumentation {
68
+ name: string;
69
+ description?: string;
70
+ type?: string;
71
+ required?: boolean;
72
+ }
73
+ export interface IReturnDocumentation {
74
+ description?: string;
75
+ type?: string;
76
+ schema?: IOpenApiSchema;
77
+ }
78
+ export interface IResponseDocumentation {
79
+ description: string;
80
+ type?: string;
81
+ }
82
+ export interface IExampleDocumentation {
83
+ name?: string;
84
+ description?: string;
85
+ value?: string;
86
+ }
87
+ /** JSDoc-extracted documentation for a policy class */
88
+ export interface IPolicyDocumentation {
89
+ /** File where the policy is defined (for traceability) */
90
+ file?: string;
91
+ /** Class-level JSDoc description, if present */
92
+ description?: string;
93
+ }
94
+ /**
95
+ * Cache entry for a single controller's JSDoc documentation
96
+ */
97
+ export interface ISwaggerCacheEntry {
98
+ className: string;
99
+ classDescription?: string;
100
+ classTags?: string[];
101
+ methods: Record<string, IMethodDocumentation>;
102
+ /** Controller-level policies (applied to every route on the controller) */
103
+ controllerPolicies?: string[];
104
+ /** Per-route policy class names */
105
+ routePolicies?: Record<string, string[]>;
106
+ /** Docs for each referenced policy class, keyed by class name */
107
+ policies?: Record<string, IPolicyDocumentation>;
108
+ }
109
+ /**
110
+ * OpenAPI 3.0 document structure
111
+ */
112
+ export interface IOpenApiDocument {
113
+ openapi: string;
114
+ info: IOpenApiInfo;
115
+ servers?: IOpenApiServer[];
116
+ paths: Record<string, IOpenApiPathItem>;
117
+ components?: IOpenApiComponents;
118
+ security?: Record<string, string[]>[];
119
+ tags?: IOpenApiTag[];
120
+ }
121
+ export interface IOpenApiInfo {
122
+ title: string;
123
+ version: string;
124
+ description?: string;
125
+ }
126
+ export interface IOpenApiServer {
127
+ url: string;
128
+ description?: string;
129
+ }
130
+ export interface IOpenApiTag {
131
+ name: string;
132
+ description?: string;
133
+ }
134
+ export interface IOpenApiPathItem {
135
+ [method: string]: IOpenApiOperation;
136
+ }
137
+ export interface IOpenApiOperation {
138
+ operationId?: string;
139
+ summary?: string;
140
+ description?: string;
141
+ tags?: string[];
142
+ deprecated?: boolean;
143
+ parameters?: IOpenApiParameter[];
144
+ requestBody?: IOpenApiRequestBody;
145
+ responses: Record<string, IOpenApiResponse>;
146
+ security?: Record<string, string[]>[];
147
+ /** RBAC resource name (from rbac-http @Resource) */
148
+ 'x-rbac-resource'?: string;
149
+ /**
150
+ * Permissions accepted for this route (accesscontrol actions:
151
+ * readAny|readOwn|updateAny|updateOwn|createAny|createOwn|deleteAny|deleteOwn).
152
+ * Access is granted if the caller's role(s) have at least one.
153
+ */
154
+ 'x-rbac-permissions'?: string[];
155
+ /** Policy class names applied to this route (controller-level + route-level, in execution order) */
156
+ 'x-policies'?: string[];
157
+ }
158
+ export interface IOpenApiParameter {
159
+ name: string;
160
+ in: 'query' | 'path' | 'header' | 'cookie';
161
+ description?: string;
162
+ required?: boolean;
163
+ schema?: IOpenApiSchema;
164
+ style?: string;
165
+ explode?: boolean;
166
+ }
167
+ export interface IOpenApiRequestBody {
168
+ description?: string;
169
+ required?: boolean;
170
+ content: Record<string, IOpenApiMediaType>;
171
+ }
172
+ export interface IOpenApiMediaType {
173
+ schema?: IOpenApiSchema;
174
+ examples?: Record<string, IOpenApiExample>;
175
+ }
176
+ export interface IOpenApiExample {
177
+ summary?: string;
178
+ description?: string;
179
+ value?: any;
180
+ }
181
+ export interface IOpenApiResponse {
182
+ description?: string;
183
+ content?: Record<string, IOpenApiMediaType>;
184
+ $ref?: string;
185
+ }
186
+ export interface IOpenApiSchema {
187
+ type?: string;
188
+ format?: string;
189
+ items?: IOpenApiSchema;
190
+ properties?: Record<string, IOpenApiSchema>;
191
+ required?: string[];
192
+ $ref?: string;
193
+ description?: string;
194
+ enum?: any[];
195
+ minimum?: number;
196
+ maximum?: number;
197
+ minLength?: number;
198
+ maxLength?: number;
199
+ pattern?: string;
200
+ nullable?: boolean;
201
+ oneOf?: IOpenApiSchema[];
202
+ anyOf?: IOpenApiSchema[];
203
+ allOf?: IOpenApiSchema[];
204
+ example?: unknown;
205
+ }
206
+ export interface IOpenApiComponents {
207
+ schemas?: Record<string, IOpenApiSchema>;
208
+ securitySchemes?: Record<string, ISecurityScheme>;
209
+ responses?: Record<string, IOpenApiResponse>;
210
+ }
211
+ //# sourceMappingURL=interfaces.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/interfaces.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=interfaces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../src/interfaces.ts"],"names":[],"mappings":""}