@tsed/swagger 6.87.1 → 6.89.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/lib/{SwaggerModule.d.ts → cjs/SwaggerModule.d.ts} +2 -0
- package/lib/cjs/SwaggerModule.js +135 -0
- package/lib/cjs/SwaggerModule.js.map +1 -0
- package/lib/{decorators → cjs/decorators}/docs.d.ts +0 -0
- package/lib/cjs/decorators/docs.js +18 -0
- package/lib/cjs/decorators/docs.js.map +1 -0
- package/lib/{decorators → cjs/decorators}/hidden.d.ts +0 -0
- package/lib/cjs/decorators/hidden.js +40 -0
- package/lib/cjs/decorators/hidden.js.map +1 -0
- package/lib/{index.d.ts → cjs/index.d.ts} +0 -0
- package/lib/cjs/index.js +9 -0
- package/lib/cjs/index.js.map +1 -0
- package/lib/{interfaces → cjs/interfaces}/SwaggerSettings.d.ts +0 -0
- package/lib/cjs/interfaces/SwaggerSettings.js +3 -0
- package/lib/cjs/interfaces/SwaggerSettings.js.map +1 -0
- package/lib/{interfaces → cjs/interfaces}/index.d.ts +0 -0
- package/lib/cjs/interfaces/index.js +5 -0
- package/lib/cjs/interfaces/index.js.map +1 -0
- package/lib/{middlewares → cjs/middlewares}/cssMiddleware.d.ts +0 -0
- package/lib/cjs/middlewares/cssMiddleware.js +23 -0
- package/lib/cjs/middlewares/cssMiddleware.js.map +1 -0
- package/lib/{middlewares → cjs/middlewares}/indexMiddleware.d.ts +0 -0
- package/lib/cjs/middlewares/indexMiddleware.js +24 -0
- package/lib/cjs/middlewares/indexMiddleware.js.map +1 -0
- package/lib/{middlewares → cjs/middlewares}/jsMiddleware.d.ts +0 -0
- package/lib/cjs/middlewares/jsMiddleware.js +18 -0
- package/lib/cjs/middlewares/jsMiddleware.js.map +1 -0
- package/lib/{middlewares → cjs/middlewares}/redirectMiddleware.d.ts +0 -0
- package/lib/cjs/middlewares/redirectMiddleware.js +16 -0
- package/lib/cjs/middlewares/redirectMiddleware.js.map +1 -0
- package/lib/{services → cjs/services}/SwaggerService.d.ts +0 -0
- package/lib/cjs/services/SwaggerService.js +103 -0
- package/lib/cjs/services/SwaggerService.js.map +1 -0
- package/lib/{utils → cjs/utils}/getSpecType.d.ts +0 -0
- package/lib/cjs/utils/getSpecType.js +21 -0
- package/lib/cjs/utils/getSpecType.js.map +1 -0
- package/lib/{utils → cjs/utils}/includeRoute.d.ts +0 -0
- package/lib/cjs/utils/includeRoute.js +20 -0
- package/lib/cjs/utils/includeRoute.js.map +1 -0
- package/lib/{utils → cjs/utils}/index.d.ts +0 -0
- package/lib/cjs/utils/index.js +11 -0
- package/lib/cjs/utils/index.js.map +1 -0
- package/lib/{utils → cjs/utils}/mapOpenSpec.d.ts +0 -0
- package/lib/cjs/utils/mapOpenSpec.js +40 -0
- package/lib/cjs/utils/mapOpenSpec.js.map +1 -0
- package/lib/{utils → cjs/utils}/mapOpenSpec2.d.ts +0 -0
- package/lib/cjs/utils/mapOpenSpec2.js +34 -0
- package/lib/cjs/utils/mapOpenSpec2.js.map +1 -0
- package/lib/{utils → cjs/utils}/mapOpenSpec3.d.ts +0 -0
- package/lib/cjs/utils/mapOpenSpec3.js +26 -0
- package/lib/cjs/utils/mapOpenSpec3.js.map +1 -0
- package/lib/{utils → cjs/utils}/mapOpenSpecInfo.d.ts +0 -0
- package/lib/cjs/utils/mapOpenSpecInfo.js +21 -0
- package/lib/cjs/utils/mapOpenSpecInfo.js.map +1 -0
- package/lib/{utils → cjs/utils}/matchPath.d.ts +0 -0
- package/lib/cjs/utils/matchPath.js +10 -0
- package/lib/cjs/utils/matchPath.js.map +1 -0
- package/lib/esm/SwaggerModule.js +132 -0
- package/lib/esm/SwaggerModule.js.map +1 -0
- package/lib/esm/decorators/docs.js +14 -0
- package/lib/esm/decorators/docs.js.map +1 -0
- package/lib/esm/decorators/hidden.js +36 -0
- package/lib/esm/decorators/hidden.js.map +1 -0
- package/lib/esm/index.js +6 -0
- package/lib/esm/index.js.map +1 -0
- package/lib/esm/interfaces/SwaggerSettings.js +2 -0
- package/lib/esm/interfaces/SwaggerSettings.js.map +1 -0
- package/lib/esm/interfaces/index.js +2 -0
- package/lib/esm/interfaces/index.js.map +1 -0
- package/lib/esm/middlewares/cssMiddleware.js +18 -0
- package/lib/esm/middlewares/cssMiddleware.js.map +1 -0
- package/lib/esm/middlewares/indexMiddleware.js +20 -0
- package/lib/esm/middlewares/indexMiddleware.js.map +1 -0
- package/lib/esm/middlewares/jsMiddleware.js +13 -0
- package/lib/esm/middlewares/jsMiddleware.js.map +1 -0
- package/lib/esm/middlewares/redirectMiddleware.js +12 -0
- package/lib/esm/middlewares/redirectMiddleware.js.map +1 -0
- package/lib/esm/services/SwaggerService.js +100 -0
- package/lib/esm/services/SwaggerService.js.map +1 -0
- package/lib/esm/utils/getSpecType.js +16 -0
- package/lib/esm/utils/getSpecType.js.map +1 -0
- package/lib/esm/utils/includeRoute.js +16 -0
- package/lib/esm/utils/includeRoute.js.map +1 -0
- package/lib/esm/utils/index.js +8 -0
- package/lib/esm/utils/index.js.map +1 -0
- package/lib/esm/utils/mapOpenSpec.js +36 -0
- package/lib/esm/utils/mapOpenSpec.js.map +1 -0
- package/lib/esm/utils/mapOpenSpec2.js +30 -0
- package/lib/esm/utils/mapOpenSpec2.js.map +1 -0
- package/lib/esm/utils/mapOpenSpec3.js +22 -0
- package/lib/esm/utils/mapOpenSpec3.js.map +1 -0
- package/lib/esm/utils/mapOpenSpecInfo.js +17 -0
- package/lib/esm/utils/mapOpenSpecInfo.js.map +1 -0
- package/lib/esm/utils/matchPath.js +5 -0
- package/lib/esm/utils/matchPath.js.map +1 -0
- package/lib/types/SwaggerModule.d.ts +30 -0
- package/lib/types/decorators/docs.d.ts +10 -0
- package/lib/types/decorators/hidden.d.ts +32 -0
- package/lib/types/index.d.ts +5 -0
- package/lib/types/interfaces/SwaggerSettings.d.ts +99 -0
- package/lib/types/interfaces/index.d.ts +9 -0
- package/lib/types/middlewares/cssMiddleware.d.ts +6 -0
- package/lib/types/middlewares/indexMiddleware.d.ts +10 -0
- package/lib/types/middlewares/jsMiddleware.d.ts +6 -0
- package/lib/types/middlewares/redirectMiddleware.d.ts +6 -0
- package/lib/types/services/SwaggerService.d.ts +29 -0
- package/lib/types/utils/getSpecType.d.ts +12 -0
- package/lib/types/utils/includeRoute.d.ts +3 -0
- package/lib/types/utils/index.d.ts +7 -0
- package/lib/types/utils/mapOpenSpec.d.ts +10 -0
- package/lib/types/utils/mapOpenSpec2.d.ts +9 -0
- package/lib/types/utils/mapOpenSpec3.d.ts +8 -0
- package/lib/types/utils/mapOpenSpecInfo.d.ts +6 -0
- package/lib/types/utils/matchPath.d.ts +1 -0
- package/lib/views/index.ejs +145 -0
- package/lib/views/index.html +144 -0
- package/package.json +22 -18
- package/tsconfig.compile.esm.json +24 -0
- package/lib/index.js +0 -614
- package/lib/index.js.map +0 -1
- package/lib/index.modern.js +0 -608
- package/lib/index.modern.js.map +0 -1
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { BeforeRoutesInit, Configuration, InjectorService, OnReady, PlatformApplication } from "@tsed/common";
|
|
2
2
|
import { SwaggerSettings } from "./interfaces";
|
|
3
3
|
import { SwaggerService } from "./services/SwaggerService";
|
|
4
|
+
import { Env } from "@tsed/core";
|
|
4
5
|
/**
|
|
5
6
|
* @ignore
|
|
6
7
|
*/
|
|
@@ -9,6 +10,7 @@ export declare class SwaggerModule implements BeforeRoutesInit, OnReady {
|
|
|
9
10
|
app: PlatformApplication;
|
|
10
11
|
configuration: Configuration;
|
|
11
12
|
swaggerService: SwaggerService;
|
|
13
|
+
env: Env;
|
|
12
14
|
private loaded;
|
|
13
15
|
get settings(): SwaggerSettings[];
|
|
14
16
|
/**
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SwaggerModule = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const common_1 = require("@tsed/common");
|
|
6
|
+
const fs_1 = (0, tslib_1.__importDefault)(require("fs"));
|
|
7
|
+
const path_1 = require("path");
|
|
8
|
+
const cssMiddleware_1 = require("./middlewares/cssMiddleware");
|
|
9
|
+
const indexMiddleware_1 = require("./middlewares/indexMiddleware");
|
|
10
|
+
const jsMiddleware_1 = require("./middlewares/jsMiddleware");
|
|
11
|
+
const redirectMiddleware_1 = require("./middlewares/redirectMiddleware");
|
|
12
|
+
const SwaggerService_1 = require("./services/SwaggerService");
|
|
13
|
+
const core_1 = require("@tsed/core");
|
|
14
|
+
const swaggerUiPath = require("swagger-ui-dist").absolutePath();
|
|
15
|
+
/**
|
|
16
|
+
* @ignore
|
|
17
|
+
*/
|
|
18
|
+
let SwaggerModule = class SwaggerModule {
|
|
19
|
+
constructor() {
|
|
20
|
+
this.loaded = false;
|
|
21
|
+
}
|
|
22
|
+
get settings() {
|
|
23
|
+
return [].concat(this.configuration.get("swagger")).filter((o) => !!o);
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
*
|
|
27
|
+
*/
|
|
28
|
+
$beforeRoutesInit() {
|
|
29
|
+
if (this.loaded) {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
const urls = this.getUrls();
|
|
33
|
+
this.settings.forEach((conf) => {
|
|
34
|
+
const { path = "/" } = conf;
|
|
35
|
+
this.app.get(path, (0, common_1.useCtxHandler)((0, redirectMiddleware_1.redirectMiddleware)(path)));
|
|
36
|
+
this.app.use(path, this.createRouter(conf, urls));
|
|
37
|
+
});
|
|
38
|
+
this.loaded = true;
|
|
39
|
+
}
|
|
40
|
+
$onReady() {
|
|
41
|
+
// istanbul ignore next
|
|
42
|
+
if (this.configuration.getBestHost) {
|
|
43
|
+
const host = this.configuration.getBestHost();
|
|
44
|
+
if (!host) {
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
const displayLog = (conf) => {
|
|
48
|
+
const { path = "/", fileName = "swagger.json", doc } = conf;
|
|
49
|
+
let url = "/";
|
|
50
|
+
if (host) {
|
|
51
|
+
url = typeof host.port === "number" ? `${host.protocol}://${host.address}:${host.port}` : "";
|
|
52
|
+
}
|
|
53
|
+
this.injector.logger.info(`[${doc || "default"}] Swagger JSON is available on ${url}${(0, common_1.normalizePath)(path, fileName)}`);
|
|
54
|
+
this.injector.logger.info(`[${doc || "default"}] Swagger UI is available on ${url}${path}/`);
|
|
55
|
+
};
|
|
56
|
+
this.settings.forEach((conf) => {
|
|
57
|
+
displayLog(conf);
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
this.generateSpecFiles();
|
|
61
|
+
}
|
|
62
|
+
generateSpecFiles() {
|
|
63
|
+
return Promise.all(this.settings.map((conf) => {
|
|
64
|
+
const { outFile } = conf;
|
|
65
|
+
if (this.env === core_1.Env.PROD || outFile) {
|
|
66
|
+
const spec = this.swaggerService.getOpenAPISpec(conf);
|
|
67
|
+
if (outFile) {
|
|
68
|
+
return fs_1.default.writeFile(outFile, JSON.stringify(spec, null, 2), { encoding: "utf8" }, () => { });
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}));
|
|
72
|
+
}
|
|
73
|
+
getUrls() {
|
|
74
|
+
return this.settings.reduce((acc, conf) => {
|
|
75
|
+
const { path = "/", fileName = "swagger.json", doc, hidden } = conf;
|
|
76
|
+
if (!hidden) {
|
|
77
|
+
acc.push({ url: (0, common_1.normalizePath)(path, fileName), name: doc || path });
|
|
78
|
+
}
|
|
79
|
+
return acc;
|
|
80
|
+
}, []);
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
*
|
|
84
|
+
* @param conf
|
|
85
|
+
* @param urls
|
|
86
|
+
*/
|
|
87
|
+
createRouter(conf, urls) {
|
|
88
|
+
const { disableSpec = false, fileName = "swagger.json", cssPath, jsPath, viewPath = (0, path_1.join)(__dirname, "../views/index.ejs") } = conf;
|
|
89
|
+
const router = common_1.PlatformRouter.create(this.injector);
|
|
90
|
+
if (!disableSpec) {
|
|
91
|
+
router.get((0, common_1.normalizePath)("/", fileName), (0, common_1.useCtxHandler)(this.middlewareSwaggerJson(conf)));
|
|
92
|
+
}
|
|
93
|
+
if (viewPath) {
|
|
94
|
+
if (cssPath) {
|
|
95
|
+
router.get("/main.css", (0, common_1.useCtxHandler)((0, cssMiddleware_1.cssMiddleware)(cssPath)));
|
|
96
|
+
}
|
|
97
|
+
if (jsPath) {
|
|
98
|
+
router.get("/main.js", (0, common_1.useCtxHandler)((0, jsMiddleware_1.jsMiddleware)(jsPath)));
|
|
99
|
+
}
|
|
100
|
+
router.get("/", (0, common_1.useCtxHandler)((0, indexMiddleware_1.indexMiddleware)(viewPath, { urls, ...conf })));
|
|
101
|
+
router.statics("/", { root: swaggerUiPath });
|
|
102
|
+
}
|
|
103
|
+
return router;
|
|
104
|
+
}
|
|
105
|
+
middlewareSwaggerJson(conf) {
|
|
106
|
+
return (ctx) => {
|
|
107
|
+
ctx.response.status(200).body(this.swaggerService.getOpenAPISpec(conf));
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
(0, tslib_1.__decorate)([
|
|
112
|
+
(0, common_1.Inject)(),
|
|
113
|
+
(0, tslib_1.__metadata)("design:type", common_1.InjectorService)
|
|
114
|
+
], SwaggerModule.prototype, "injector", void 0);
|
|
115
|
+
(0, tslib_1.__decorate)([
|
|
116
|
+
(0, common_1.Inject)(),
|
|
117
|
+
(0, tslib_1.__metadata)("design:type", common_1.PlatformApplication)
|
|
118
|
+
], SwaggerModule.prototype, "app", void 0);
|
|
119
|
+
(0, tslib_1.__decorate)([
|
|
120
|
+
(0, common_1.Configuration)(),
|
|
121
|
+
(0, tslib_1.__metadata)("design:type", Object)
|
|
122
|
+
], SwaggerModule.prototype, "configuration", void 0);
|
|
123
|
+
(0, tslib_1.__decorate)([
|
|
124
|
+
(0, common_1.Inject)(),
|
|
125
|
+
(0, tslib_1.__metadata)("design:type", SwaggerService_1.SwaggerService)
|
|
126
|
+
], SwaggerModule.prototype, "swaggerService", void 0);
|
|
127
|
+
(0, tslib_1.__decorate)([
|
|
128
|
+
(0, common_1.Constant)("env"),
|
|
129
|
+
(0, tslib_1.__metadata)("design:type", String)
|
|
130
|
+
], SwaggerModule.prototype, "env", void 0);
|
|
131
|
+
SwaggerModule = (0, tslib_1.__decorate)([
|
|
132
|
+
(0, common_1.Module)()
|
|
133
|
+
], SwaggerModule);
|
|
134
|
+
exports.SwaggerModule = SwaggerModule;
|
|
135
|
+
//# sourceMappingURL=SwaggerModule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SwaggerModule.js","sourceRoot":"","sources":["../../src/SwaggerModule.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n BeforeRoutesInit,\n Configuration,\n Constant,\n Inject,\n InjectorService,\n Module,\n normalizePath,\n OnReady,\n PlatformApplication,\n PlatformContext,\n PlatformRouter,\n useCtxHandler\n} from \"@tsed/common\";\nimport Fs from \"fs\";\nimport {join} from \"path\";\nimport {SwaggerSettings} from \"./interfaces\";\nimport {cssMiddleware} from \"./middlewares/cssMiddleware\";\nimport {indexMiddleware} from \"./middlewares/indexMiddleware\";\nimport {jsMiddleware} from \"./middlewares/jsMiddleware\";\nimport {redirectMiddleware} from \"./middlewares/redirectMiddleware\";\nimport {SwaggerService} from \"./services/SwaggerService\";\nimport {Env} from \"@tsed/core\";\n\nconst swaggerUiPath = require(\"swagger-ui-dist\").absolutePath();\n\n/**\n * @ignore\n */\n@Module()\nexport class SwaggerModule implements BeforeRoutesInit, OnReady {\n @Inject()\n injector: InjectorService;\n\n @Inject()\n app: PlatformApplication;\n\n @Configuration()\n configuration: Configuration;\n\n @Inject()\n swaggerService: SwaggerService;\n\n @Constant(\"env\")\n env: Env;\n\n private loaded = false;\n\n get settings() {\n return ([] as SwaggerSettings[]).concat(this.configuration.get<SwaggerSettings[]>(\"swagger\")).filter((o) => !!o);\n }\n\n /**\n *\n */\n $beforeRoutesInit() {\n if (this.loaded) {\n return;\n }\n\n const urls: any[] = this.getUrls();\n\n this.settings.forEach((conf: SwaggerSettings) => {\n const {path = \"/\"} = conf;\n\n this.app.get(path, useCtxHandler(redirectMiddleware(path)));\n this.app.use(path, this.createRouter(conf, urls));\n });\n\n this.loaded = true;\n }\n\n $onReady() {\n // istanbul ignore next\n if (this.configuration.getBestHost) {\n const host = this.configuration.getBestHost();\n\n if (!host) {\n return;\n }\n\n const displayLog = (conf: SwaggerSettings) => {\n const {path = \"/\", fileName = \"swagger.json\", doc} = conf;\n\n let url = \"/\";\n\n if (host) {\n url = typeof host.port === \"number\" ? `${host.protocol}://${host.address}:${host.port}` : \"\";\n }\n\n this.injector.logger.info(`[${doc || \"default\"}] Swagger JSON is available on ${url}${normalizePath(path, fileName)}`);\n this.injector.logger.info(`[${doc || \"default\"}] Swagger UI is available on ${url}${path}/`);\n };\n\n this.settings.forEach((conf) => {\n displayLog(conf);\n });\n }\n\n this.generateSpecFiles();\n }\n\n generateSpecFiles() {\n return Promise.all(\n this.settings.map((conf) => {\n const {outFile} = conf;\n\n if (this.env === Env.PROD || outFile) {\n const spec = this.swaggerService.getOpenAPISpec(conf);\n\n if (outFile) {\n return Fs.writeFile(outFile, JSON.stringify(spec, null, 2), {encoding: \"utf8\"}, () => {});\n }\n }\n })\n );\n }\n\n private getUrls() {\n return this.settings.reduce((acc: any[], conf) => {\n const {path = \"/\", fileName = \"swagger.json\", doc, hidden} = conf;\n\n if (!hidden) {\n acc.push({url: normalizePath(path, fileName), name: doc || path});\n }\n\n return acc;\n }, []);\n }\n\n /**\n *\n * @param conf\n * @param urls\n */\n private createRouter(conf: SwaggerSettings, urls: string[]) {\n const {disableSpec = false, fileName = \"swagger.json\", cssPath, jsPath, viewPath = join(__dirname, \"../views/index.ejs\")} = conf;\n const router = PlatformRouter.create(this.injector);\n\n if (!disableSpec) {\n router.get(normalizePath(\"/\", fileName), useCtxHandler(this.middlewareSwaggerJson(conf)));\n }\n\n if (viewPath) {\n if (cssPath) {\n router.get(\"/main.css\", useCtxHandler(cssMiddleware(cssPath)));\n }\n\n if (jsPath) {\n router.get(\"/main.js\", useCtxHandler(jsMiddleware(jsPath)));\n }\n\n router.get(\"/\", useCtxHandler(indexMiddleware(viewPath, {urls, ...conf})));\n router.statics(\"/\", {root: swaggerUiPath});\n }\n\n return router;\n }\n\n private middlewareSwaggerJson(conf: SwaggerSettings) {\n return (ctx: PlatformContext) => {\n ctx.response.status(200).body(this.swaggerService.getOpenAPISpec(conf));\n };\n }\n}\n"]}
|
|
File without changes
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Docs = void 0;
|
|
4
|
+
const core_1 = require("@tsed/core");
|
|
5
|
+
/**
|
|
6
|
+
* Set the type documentation for this class.
|
|
7
|
+
*
|
|
8
|
+
* See [swagger documentation](/tutorials/swagger.html)
|
|
9
|
+
*
|
|
10
|
+
* @decorator
|
|
11
|
+
* @swagger
|
|
12
|
+
* @param docs
|
|
13
|
+
*/
|
|
14
|
+
function Docs(...docs) {
|
|
15
|
+
return (0, core_1.StoreMerge)("docs", docs);
|
|
16
|
+
}
|
|
17
|
+
exports.Docs = Docs;
|
|
18
|
+
//# sourceMappingURL=docs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docs.js","sourceRoot":"","sources":["../../../src/decorators/docs.ts"],"names":[],"mappings":";;;AAAA,qCAAsC;AAEtC;;;;;;;;GAQG;AACH,SAAgB,IAAI,CAAC,GAAG,IAAc;IACpC,OAAO,IAAA,iBAAU,EAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAClC,CAAC;AAFD,oBAEC","sourcesContent":["import {StoreMerge} from \"@tsed/core\";\n\n/**\n * Set the type documentation for this class.\n *\n * See [swagger documentation](/tutorials/swagger.html)\n *\n * @decorator\n * @swagger\n * @param docs\n */\nexport function Docs(...docs: string[]) {\n return StoreMerge(\"docs\", docs);\n}\n"]}
|
|
File without changes
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Hidden = void 0;
|
|
4
|
+
const schema_1 = require("@tsed/schema");
|
|
5
|
+
/**
|
|
6
|
+
* Disable documentation for the class and his endpoint.
|
|
7
|
+
*
|
|
8
|
+
* ````typescript
|
|
9
|
+
* @Controller('/')
|
|
10
|
+
* export class Ctrl {
|
|
11
|
+
*
|
|
12
|
+
* @Get('/')
|
|
13
|
+
* @Hidden()
|
|
14
|
+
* hiddenRoute(){
|
|
15
|
+
*
|
|
16
|
+
* }
|
|
17
|
+
* }
|
|
18
|
+
*
|
|
19
|
+
* @Controller('/')
|
|
20
|
+
* @Hidden()
|
|
21
|
+
* export class Ctrl {
|
|
22
|
+
* @Get('/')
|
|
23
|
+
* hiddenRoute() {
|
|
24
|
+
*
|
|
25
|
+
* }
|
|
26
|
+
* @Get('/2')
|
|
27
|
+
* hiddenRoute2() {
|
|
28
|
+
*
|
|
29
|
+
* }
|
|
30
|
+
* }
|
|
31
|
+
* ```
|
|
32
|
+
*
|
|
33
|
+
* @decorator
|
|
34
|
+
* @swagger
|
|
35
|
+
*/
|
|
36
|
+
function Hidden() {
|
|
37
|
+
return (0, schema_1.Hidden)();
|
|
38
|
+
}
|
|
39
|
+
exports.Hidden = Hidden;
|
|
40
|
+
//# sourceMappingURL=hidden.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hidden.js","sourceRoot":"","sources":["../../../src/decorators/hidden.ts"],"names":[],"mappings":";;;AAAA,yCAAyC;AAEzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,SAAgB,MAAM;IACpB,OAAO,IAAA,eAAC,GAAE,CAAC;AACb,CAAC;AAFD,wBAEC","sourcesContent":["import {Hidden as H} from \"@tsed/schema\";\n\n/**\n * Disable documentation for the class and his endpoint.\n *\n * ````typescript\n * @Controller('/')\n * export class Ctrl {\n *\n * @Get('/')\n * @Hidden()\n * hiddenRoute(){\n *\n * }\n * }\n *\n * @Controller('/')\n * @Hidden()\n * export class Ctrl {\n * @Get('/')\n * hiddenRoute() {\n *\n * }\n * @Get('/2')\n * hiddenRoute2() {\n *\n * }\n * }\n * ```\n *\n * @decorator\n * @swagger\n */\nexport function Hidden() {\n return H();\n}\n"]}
|
|
File without changes
|
package/lib/cjs/index.js
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
(0, tslib_1.__exportStar)(require("./services/SwaggerService"), exports);
|
|
5
|
+
(0, tslib_1.__exportStar)(require("./SwaggerModule"), exports);
|
|
6
|
+
(0, tslib_1.__exportStar)(require("./interfaces"), exports);
|
|
7
|
+
(0, tslib_1.__exportStar)(require("./decorators/docs"), exports);
|
|
8
|
+
(0, tslib_1.__exportStar)(require("./decorators/hidden"), exports);
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,yEAA0C;AAC1C,+DAAgC;AAChC,4DAA6B;AAC7B,iEAAkC;AAClC,mEAAoC","sourcesContent":["export * from \"./services/SwaggerService\";\nexport * from \"./SwaggerModule\";\nexport * from \"./interfaces\";\nexport * from \"./decorators/docs\";\nexport * from \"./decorators/hidden\";\n"]}
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SwaggerSettings.js","sourceRoot":"","sources":["../../../src/interfaces/SwaggerSettings.ts"],"names":[],"mappings":"","sourcesContent":["import {OpenSpec2, OpenSpec3, OpenSpecVersions, OS2Versions, OS3Versions} from \"@tsed/openspec\";\n\nexport interface SwaggerUIOptions {\n configUrl?: string;\n url?: string;\n urls?: {url: string; name: string; primaryName?: string}[];\n layout?: string;\n validatorUrl?: string;\n oauth?: any;\n authorize?: any;\n\n [key: string]: any;\n}\n\nexport interface SwaggerSettingsBase {\n /**\n * The url subpath to access to the documentation.\n */\n path: string;\n /**\n * Specify the spec version you want to generate.\n */\n specVersion?: OpenSpecVersions;\n /**\n * Swagger file name. By default swagger.json\n */\n fileName?: string;\n /**\n * Hidden documentation. Use this to hide documentation link in the dropdown.\n */\n hidden?: string;\n /**\n * The documentation key used by `@Docs` decorator to create several swagger documentations.\n */\n doc?: string;\n /**\n * The path to the CSS file.\n */\n cssPath?: string;\n /**\n * The path to the JS file.\n */\n jsPath?: string;\n /**\n * The path to the ejs file to create html page.\n */\n viewPath?: string | false;\n /**\n * SwaggerUI options. See (https://github.com/swagger-api/swagger-ui/blob/HEAD/docs/usage/configuration.md)\n */\n options?: SwaggerUIOptions;\n /**\n * Display the search field in the navbar.\n */\n showExplorer?: boolean;\n /**\n * Load the base spec documentation from the specified path.\n */\n specPath?: string;\n /**\n * Write the `swagger.json` spec documentation on the specified path.\n */\n outFile?: string;\n /**\n * A function to generate the operationId.\n */\n operationIdFormatter?: (name: string, propertyKey: string, path: string) => string;\n /**\n * A pattern to generate the operationId. Format of operationId field (%c: class name, %m: method name).\n */\n operationIdPattern?: string;\n /**\n *\n */\n disableSpec?: boolean;\n /**\n * Include only controllers whose paths match the pattern list provided.\n */\n pathPatterns?: string[];\n}\n\n/**\n * @deprecated Since 2021-09-03. Will be removed in v7.\n */\nexport interface SwaggerOS2Settings extends SwaggerSettingsBase {\n specVersion?: OS2Versions;\n /**\n * OpenSpec 2\n */\n spec?: Partial<OpenSpec2>;\n}\n\nexport interface SwaggerOS3Settings extends SwaggerSettingsBase {\n specVersion?: OS3Versions;\n /**\n * OpenSpec 3\n */\n spec?: Partial<OpenSpec3>;\n}\n\nexport type SwaggerSettings = SwaggerOS2Settings | SwaggerOS3Settings;\n"]}
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/interfaces/index.ts"],"names":[],"mappings":";;;AAUA,iEAAkC","sourcesContent":["import {SwaggerSettings} from \"./SwaggerSettings\";\n\ndeclare global {\n namespace TsED {\n interface Configuration {\n swagger: SwaggerSettings[];\n }\n }\n}\n\nexport * from \"./SwaggerSettings\";\n"]}
|
|
File without changes
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.cssMiddleware = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const fs_1 = (0, tslib_1.__importDefault)(require("fs"));
|
|
6
|
+
const path_1 = require("path");
|
|
7
|
+
/**
|
|
8
|
+
* @ignore
|
|
9
|
+
* @param path
|
|
10
|
+
*/
|
|
11
|
+
function cssMiddleware(path) {
|
|
12
|
+
return (ctx) => {
|
|
13
|
+
const content = fs_1.default.readFileSync((0, path_1.resolve)(path), { encoding: "utf8" });
|
|
14
|
+
ctx.response
|
|
15
|
+
.setHeaders({
|
|
16
|
+
"Content-Type": "text/css"
|
|
17
|
+
})
|
|
18
|
+
.status(200)
|
|
19
|
+
.body(content);
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
exports.cssMiddleware = cssMiddleware;
|
|
23
|
+
//# sourceMappingURL=cssMiddleware.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cssMiddleware.js","sourceRoot":"","sources":["../../../src/middlewares/cssMiddleware.ts"],"names":[],"mappings":";;;;AACA,yDAAoB;AACpB,+BAA6B;AAE7B;;;GAGG;AACH,SAAgB,aAAa,CAAC,IAAY;IACxC,OAAO,CAAC,GAAoB,EAAE,EAAE;QAC9B,MAAM,OAAO,GAAG,YAAE,CAAC,YAAY,CAAC,IAAA,cAAO,EAAC,IAAI,CAAC,EAAE,EAAC,QAAQ,EAAE,MAAM,EAAC,CAAC,CAAC;QACnE,GAAG,CAAC,QAAQ;aACT,UAAU,CAAC;YACV,cAAc,EAAE,UAAU;SAC3B,CAAC;aACD,MAAM,CAAC,GAAG,CAAC;aACX,IAAI,CAAC,OAAO,CAAC,CAAC;IACnB,CAAC,CAAC;AACJ,CAAC;AAVD,sCAUC","sourcesContent":["import {PlatformContext} from \"@tsed/common\";\nimport Fs from \"fs\";\nimport {resolve} from \"path\";\n\n/**\n * @ignore\n * @param path\n */\nexport function cssMiddleware(path: string) {\n return (ctx: PlatformContext) => {\n const content = Fs.readFileSync(resolve(path), {encoding: \"utf8\"});\n ctx.response\n .setHeaders({\n \"Content-Type\": \"text/css\"\n })\n .status(200)\n .body(content);\n };\n}\n"]}
|
|
File without changes
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.indexMiddleware = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* @ignore
|
|
6
|
+
* @param viewPath
|
|
7
|
+
* @param conf
|
|
8
|
+
*/
|
|
9
|
+
function indexMiddleware(viewPath, conf) {
|
|
10
|
+
return async (ctx) => {
|
|
11
|
+
const { path = "/", options = {}, showExplorer, cssPath, jsPath, urls } = conf;
|
|
12
|
+
ctx.response.body(await ctx.response.render(viewPath, {
|
|
13
|
+
spec: {},
|
|
14
|
+
url: `${path}/swagger.json`,
|
|
15
|
+
urls,
|
|
16
|
+
showExplorer,
|
|
17
|
+
cssPath,
|
|
18
|
+
jsPath,
|
|
19
|
+
swaggerOptions: options
|
|
20
|
+
}));
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
exports.indexMiddleware = indexMiddleware;
|
|
24
|
+
//# sourceMappingURL=indexMiddleware.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"indexMiddleware.js","sourceRoot":"","sources":["../../../src/middlewares/indexMiddleware.ts"],"names":[],"mappings":";;;AAGA;;;;GAIG;AACH,SAAgB,eAAe,CAAC,QAAgB,EAAE,IAAwC;IACxF,OAAO,KAAK,EAAE,GAAoB,EAAE,EAAE;QACpC,MAAM,EAAC,IAAI,GAAG,GAAG,EAAE,OAAO,GAAG,EAAE,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAC,GAAG,IAAI,CAAC;QAE7E,GAAG,CAAC,QAAQ,CAAC,IAAI,CACf,MAAM,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE;YAClC,IAAI,EAAE,EAAE;YACR,GAAG,EAAE,GAAG,IAAI,eAAe;YAC3B,IAAI;YACJ,YAAY;YACZ,OAAO;YACP,MAAM;YACN,cAAc,EAAE,OAAO;SACxB,CAAC,CACH,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AAhBD,0CAgBC","sourcesContent":["import {PlatformContext} from \"@tsed/common\";\nimport {SwaggerSettings} from \"../interfaces/SwaggerSettings\";\n\n/**\n * @ignore\n * @param viewPath\n * @param conf\n */\nexport function indexMiddleware(viewPath: string, conf: SwaggerSettings & {urls: string[]}) {\n return async (ctx: PlatformContext) => {\n const {path = \"/\", options = {}, showExplorer, cssPath, jsPath, urls} = conf;\n\n ctx.response.body(\n await ctx.response.render(viewPath, {\n spec: {},\n url: `${path}/swagger.json`,\n urls,\n showExplorer,\n cssPath,\n jsPath,\n swaggerOptions: options\n })\n );\n };\n}\n"]}
|
|
File without changes
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.jsMiddleware = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const fs_1 = (0, tslib_1.__importDefault)(require("fs"));
|
|
6
|
+
const path_1 = require("path");
|
|
7
|
+
/**
|
|
8
|
+
* @ignore
|
|
9
|
+
* @param path
|
|
10
|
+
*/
|
|
11
|
+
function jsMiddleware(path) {
|
|
12
|
+
return (ctx) => {
|
|
13
|
+
const content = fs_1.default.readFileSync((0, path_1.resolve)(path), { encoding: "utf8" });
|
|
14
|
+
ctx.response.setHeaders({ "Content-Type": "application/javascript" }).status(200).body(content);
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
exports.jsMiddleware = jsMiddleware;
|
|
18
|
+
//# sourceMappingURL=jsMiddleware.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jsMiddleware.js","sourceRoot":"","sources":["../../../src/middlewares/jsMiddleware.ts"],"names":[],"mappings":";;;;AACA,yDAAoB;AACpB,+BAA6B;AAE7B;;;GAGG;AACH,SAAgB,YAAY,CAAC,IAAY;IACvC,OAAO,CAAC,GAAoB,EAAE,EAAE;QAC9B,MAAM,OAAO,GAAG,YAAE,CAAC,YAAY,CAAC,IAAA,cAAO,EAAC,IAAI,CAAC,EAAE,EAAC,QAAQ,EAAE,MAAM,EAAC,CAAC,CAAC;QACnE,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAC,cAAc,EAAE,wBAAwB,EAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAChG,CAAC,CAAC;AACJ,CAAC;AALD,oCAKC","sourcesContent":["import {PlatformContext} from \"@tsed/common\";\nimport Fs from \"fs\";\nimport {resolve} from \"path\";\n\n/**\n * @ignore\n * @param path\n */\nexport function jsMiddleware(path: string) {\n return (ctx: PlatformContext) => {\n const content = Fs.readFileSync(resolve(path), {encoding: \"utf8\"});\n ctx.response.setHeaders({\"Content-Type\": \"application/javascript\"}).status(200).body(content);\n };\n}\n"]}
|
|
File without changes
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.redirectMiddleware = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* @ignore
|
|
6
|
+
* @param path
|
|
7
|
+
*/
|
|
8
|
+
function redirectMiddleware(path) {
|
|
9
|
+
return (ctx) => {
|
|
10
|
+
if (ctx.request.url === path && !ctx.request.url.match(/\/$/)) {
|
|
11
|
+
ctx.response.redirect(302, `${path}/`);
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
exports.redirectMiddleware = redirectMiddleware;
|
|
16
|
+
//# sourceMappingURL=redirectMiddleware.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redirectMiddleware.js","sourceRoot":"","sources":["../../../src/middlewares/redirectMiddleware.ts"],"names":[],"mappings":";;;AAEA;;;GAGG;AACH,SAAgB,kBAAkB,CAAC,IAAY;IAC7C,OAAO,CAAC,GAAoB,EAAE,EAAE;QAC9B,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;YAC7D,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,CAAC,CAAC;SACxC;IACH,CAAC,CAAC;AACJ,CAAC;AAND,gDAMC","sourcesContent":["import {PlatformContext} from \"@tsed/common\";\n\n/**\n * @ignore\n * @param path\n */\nexport function redirectMiddleware(path: string) {\n return (ctx: PlatformContext) => {\n if (ctx.request.url === path && !ctx.request.url.match(/\\/$/)) {\n ctx.response.redirect(302, `${path}/`);\n }\n };\n}\n"]}
|
|
File without changes
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var _SwaggerService_specs;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.SwaggerService = void 0;
|
|
5
|
+
const tslib_1 = require("tslib");
|
|
6
|
+
const common_1 = require("@tsed/common");
|
|
7
|
+
const core_1 = require("@tsed/core");
|
|
8
|
+
const schema_1 = require("@tsed/schema");
|
|
9
|
+
const fs_1 = (0, tslib_1.__importDefault)(require("fs"));
|
|
10
|
+
const getSpecType_1 = require("../utils/getSpecType");
|
|
11
|
+
const includeRoute_1 = require("../utils/includeRoute");
|
|
12
|
+
const mapOpenSpec_1 = require("../utils/mapOpenSpec");
|
|
13
|
+
let SwaggerService = class SwaggerService {
|
|
14
|
+
constructor(injectorService, platform, configuration) {
|
|
15
|
+
this.injectorService = injectorService;
|
|
16
|
+
this.platform = platform;
|
|
17
|
+
this.configuration = configuration;
|
|
18
|
+
_SwaggerService_specs.set(this, new Map());
|
|
19
|
+
}
|
|
20
|
+
getOpenAPISpec(conf) {
|
|
21
|
+
if (!(0, tslib_1.__classPrivateFieldGet)(this, _SwaggerService_specs, "f").has(conf.path)) {
|
|
22
|
+
const defaultSpec = this.getDefaultSpec(conf);
|
|
23
|
+
const specType = (0, getSpecType_1.getSpecTypeFromSpec)(defaultSpec);
|
|
24
|
+
let finalSpec = {};
|
|
25
|
+
const options = {
|
|
26
|
+
paths: {},
|
|
27
|
+
tags: [],
|
|
28
|
+
schemas: {},
|
|
29
|
+
specType,
|
|
30
|
+
operationIdFormatter: conf.operationIdFormatter,
|
|
31
|
+
operationIdPattern: conf.operationIdPattern,
|
|
32
|
+
append(spec) {
|
|
33
|
+
finalSpec = (0, schema_1.mergeSpec)(finalSpec, spec);
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
this.platform.getMountedControllers().forEach(({ route, provider }) => {
|
|
37
|
+
if ((0, includeRoute_1.includeRoute)(route, provider, conf)) {
|
|
38
|
+
const spec = this.buildRoutes(provider, {
|
|
39
|
+
...options,
|
|
40
|
+
rootPath: route.replace(provider.path, "")
|
|
41
|
+
});
|
|
42
|
+
options.append(spec);
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
(0, tslib_1.__classPrivateFieldGet)(this, _SwaggerService_specs, "f").set(conf.path, (0, schema_1.mergeSpec)(defaultSpec, finalSpec));
|
|
46
|
+
}
|
|
47
|
+
return (0, tslib_1.__classPrivateFieldGet)(this, _SwaggerService_specs, "f").get(conf.path);
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Return the global api information.
|
|
51
|
+
*/
|
|
52
|
+
getDefaultSpec(conf) {
|
|
53
|
+
const { version = "1.0.0", acceptMimes } = this.configuration;
|
|
54
|
+
const { specPath, specVersion } = conf;
|
|
55
|
+
const fileSpec = specPath ? this.readSpecPath(specPath) : {};
|
|
56
|
+
return (0, mapOpenSpec_1.mapOpenSpec)((0, core_1.getValue)(conf, "spec", {}), {
|
|
57
|
+
fileSpec,
|
|
58
|
+
version,
|
|
59
|
+
specVersion,
|
|
60
|
+
acceptMimes
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
readSpecPath(path) {
|
|
64
|
+
path = this.configuration.resolve(path);
|
|
65
|
+
if (fs_1.default.existsSync(path)) {
|
|
66
|
+
const json = fs_1.default.readFileSync(path, { encoding: "utf8" });
|
|
67
|
+
/* istanbul ignore else */
|
|
68
|
+
if (json !== "") {
|
|
69
|
+
return JSON.parse(json);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return {};
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
*
|
|
76
|
+
* @param ctrl
|
|
77
|
+
* @param options
|
|
78
|
+
*/
|
|
79
|
+
buildRoutes(ctrl, options) {
|
|
80
|
+
const rootPath = options.rootPath + ctrl.path;
|
|
81
|
+
ctrl.children
|
|
82
|
+
.map((ctrl) => this.injectorService.getProvider(ctrl))
|
|
83
|
+
.forEach((provider) => {
|
|
84
|
+
if (!provider.store.get("hidden")) {
|
|
85
|
+
const spec = this.buildRoutes(provider, {
|
|
86
|
+
...options,
|
|
87
|
+
rootPath
|
|
88
|
+
});
|
|
89
|
+
options.append(spec);
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
return (0, schema_1.getSpec)(ctrl.token, options);
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
_SwaggerService_specs = new WeakMap();
|
|
96
|
+
SwaggerService = (0, tslib_1.__decorate)([
|
|
97
|
+
(0, common_1.Injectable)(),
|
|
98
|
+
(0, tslib_1.__param)(2, (0, common_1.Configuration)()),
|
|
99
|
+
(0, tslib_1.__metadata)("design:paramtypes", [common_1.InjectorService,
|
|
100
|
+
common_1.Platform, Object])
|
|
101
|
+
], SwaggerService);
|
|
102
|
+
exports.SwaggerService = SwaggerService;
|
|
103
|
+
//# sourceMappingURL=SwaggerService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SwaggerService.js","sourceRoot":"","sources":["../../../src/services/SwaggerService.ts"],"names":[],"mappings":"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","sourcesContent":["import {Configuration, ControllerProvider, Injectable, InjectorService, Platform} from \"@tsed/common\";\nimport {getValue} from \"@tsed/core\";\nimport {OpenSpec2, OpenSpec3} from \"@tsed/openspec\";\nimport {getSpec, mergeSpec, SpecSerializerOptions} from \"@tsed/schema\";\nimport Fs from \"fs\";\nimport {SwaggerOS2Settings, SwaggerOS3Settings, SwaggerSettings} from \"../interfaces/SwaggerSettings\";\nimport {getSpecTypeFromSpec} from \"../utils/getSpecType\";\nimport {includeRoute} from \"../utils/includeRoute\";\nimport {mapOpenSpec} from \"../utils/mapOpenSpec\";\n\n@Injectable()\nexport class SwaggerService {\n #specs: Map<string, OpenSpec3 | OpenSpec2> = new Map();\n\n constructor(\n private injectorService: InjectorService,\n private platform: Platform,\n @Configuration() private configuration: Configuration\n ) {}\n\n /**\n * Generate Spec for the given configuration\n * @returns {Spec}\n */\n public getOpenAPISpec(conf: SwaggerOS3Settings): OpenSpec3;\n public getOpenAPISpec(conf: SwaggerOS2Settings): OpenSpec2;\n public getOpenAPISpec(conf: SwaggerSettings): OpenSpec2;\n public getOpenAPISpec(conf: SwaggerSettings) {\n if (!this.#specs.has(conf.path)) {\n const defaultSpec: any = this.getDefaultSpec(conf);\n const specType = getSpecTypeFromSpec(defaultSpec);\n let finalSpec: any = {};\n\n const options: SpecSerializerOptions = {\n paths: {},\n tags: [],\n schemas: {},\n specType,\n operationIdFormatter: conf.operationIdFormatter,\n operationIdPattern: conf.operationIdPattern,\n append(spec: any) {\n finalSpec = mergeSpec(finalSpec, spec);\n }\n };\n\n this.platform.getMountedControllers().forEach(({route, provider}) => {\n if (includeRoute(route, provider, conf)) {\n const spec = this.buildRoutes(provider, {\n ...options,\n rootPath: route.replace(provider.path, \"\")\n });\n\n options.append(spec);\n }\n });\n\n this.#specs.set(conf.path, mergeSpec(defaultSpec, finalSpec) as any);\n }\n\n return this.#specs.get(conf.path);\n }\n\n /**\n * Return the global api information.\n */\n protected getDefaultSpec(conf: Partial<SwaggerSettings>): Partial<OpenSpec2 | OpenSpec3> {\n const {version = \"1.0.0\", acceptMimes} = this.configuration;\n const {specPath, specVersion} = conf;\n const fileSpec: Partial<OpenSpec2 | OpenSpec3> = specPath ? this.readSpecPath(specPath) : {};\n\n return mapOpenSpec(getValue(conf, \"spec\", {}), {\n fileSpec,\n version,\n specVersion,\n acceptMimes\n });\n }\n\n protected readSpecPath(path: string) {\n path = this.configuration.resolve(path);\n if (Fs.existsSync(path)) {\n const json = Fs.readFileSync(path, {encoding: \"utf8\"});\n /* istanbul ignore else */\n if (json !== \"\") {\n return JSON.parse(json);\n }\n }\n\n return {};\n }\n\n /**\n *\n * @param ctrl\n * @param options\n */\n protected buildRoutes(ctrl: ControllerProvider, options: SpecSerializerOptions) {\n const rootPath = options.rootPath + ctrl.path;\n\n ctrl.children\n .map((ctrl) => this.injectorService.getProvider(ctrl))\n .forEach((provider: ControllerProvider) => {\n if (!provider.store.get(\"hidden\")) {\n const spec = this.buildRoutes(provider, {\n ...options,\n rootPath\n });\n\n options.append(spec);\n }\n });\n\n return getSpec(ctrl.token, options);\n }\n}\n"]}
|
|
File without changes
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getSpecTypeFromSpec = exports.getSpecType = void 0;
|
|
4
|
+
const schema_1 = require("@tsed/schema");
|
|
5
|
+
/**
|
|
6
|
+
* @ignore
|
|
7
|
+
* @param version
|
|
8
|
+
*/
|
|
9
|
+
function getSpecType(version) {
|
|
10
|
+
return version.startsWith("3.") ? schema_1.SpecTypes.OPENAPI : schema_1.SpecTypes.SWAGGER;
|
|
11
|
+
}
|
|
12
|
+
exports.getSpecType = getSpecType;
|
|
13
|
+
/**
|
|
14
|
+
* @ignore
|
|
15
|
+
* @param spec
|
|
16
|
+
*/
|
|
17
|
+
function getSpecTypeFromSpec(spec) {
|
|
18
|
+
return "openapi" in spec ? schema_1.SpecTypes.OPENAPI : schema_1.SpecTypes.SWAGGER;
|
|
19
|
+
}
|
|
20
|
+
exports.getSpecTypeFromSpec = getSpecTypeFromSpec;
|
|
21
|
+
//# sourceMappingURL=getSpecType.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getSpecType.js","sourceRoot":"","sources":["../../../src/utils/getSpecType.ts"],"names":[],"mappings":";;;AACA,yCAAuC;AAEvC;;;GAGG;AACH,SAAgB,WAAW,CAAC,OAAe;IACzC,OAAO,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,kBAAS,CAAC,OAAO,CAAC,CAAC,CAAC,kBAAS,CAAC,OAAO,CAAC;AAC1E,CAAC;AAFD,kCAEC;AAED;;;GAGG;AACH,SAAgB,mBAAmB,CAAC,IAAoC;IACtE,OAAO,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,kBAAS,CAAC,OAAO,CAAC,CAAC,CAAC,kBAAS,CAAC,OAAO,CAAC;AACnE,CAAC;AAFD,kDAEC","sourcesContent":["import {OpenSpec2, OpenSpec3} from \"@tsed/openspec\";\nimport {SpecTypes} from \"@tsed/schema\";\n\n/**\n * @ignore\n * @param version\n */\nexport function getSpecType(version: string) {\n return version.startsWith(\"3.\") ? SpecTypes.OPENAPI : SpecTypes.SWAGGER;\n}\n\n/**\n * @ignore\n * @param spec\n */\nexport function getSpecTypeFromSpec(spec: Partial<OpenSpec2 | OpenSpec3>) {\n return \"openapi\" in spec ? SpecTypes.OPENAPI : SpecTypes.SWAGGER;\n}\n"]}
|
|
File without changes
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.includeRoute = void 0;
|
|
4
|
+
const _1 = require(".");
|
|
5
|
+
function includeRoute(route, provider, conf) {
|
|
6
|
+
const hidden = provider.store.get("hidden");
|
|
7
|
+
const docs = provider.store.get("docs") || [];
|
|
8
|
+
const { doc, pathPatterns } = conf;
|
|
9
|
+
const inDoc = doc && docs.indexOf(doc) > -1;
|
|
10
|
+
const pathPatternMatch = pathPatterns && (0, _1.matchPath)(route, pathPatterns);
|
|
11
|
+
if (hidden) {
|
|
12
|
+
return false;
|
|
13
|
+
}
|
|
14
|
+
if (!doc && !pathPatterns) {
|
|
15
|
+
return true;
|
|
16
|
+
}
|
|
17
|
+
return !!(inDoc || pathPatternMatch);
|
|
18
|
+
}
|
|
19
|
+
exports.includeRoute = includeRoute;
|
|
20
|
+
//# sourceMappingURL=includeRoute.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"includeRoute.js","sourceRoot":"","sources":["../../../src/utils/includeRoute.ts"],"names":[],"mappings":";;;AACA,wBAA4B;AAG5B,SAAgB,YAAY,CAAC,KAAa,EAAE,QAA4B,EAAE,IAAqB;IAC7F,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IAC9C,MAAM,EAAC,GAAG,EAAE,YAAY,EAAC,GAAG,IAAI,CAAC;IACjC,MAAM,KAAK,GAAG,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5C,MAAM,gBAAgB,GAAG,YAAY,IAAI,IAAA,YAAS,EAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IAExE,IAAI,MAAM,EAAE;QACV,OAAO,KAAK,CAAC;KACd;IAED,IAAI,CAAC,GAAG,IAAI,CAAC,YAAY,EAAE;QACzB,OAAO,IAAI,CAAC;KACb;IAED,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,gBAAgB,CAAC,CAAC;AACvC,CAAC;AAhBD,oCAgBC","sourcesContent":["import {ControllerProvider} from \"@tsed/common\";\nimport {matchPath} from \".\";\nimport {SwaggerSettings} from \"..\";\n\nexport function includeRoute(route: string, provider: ControllerProvider, conf: SwaggerSettings): boolean {\n const hidden = provider.store.get(\"hidden\");\n const docs = provider.store.get(\"docs\") || [];\n const {doc, pathPatterns} = conf;\n const inDoc = doc && docs.indexOf(doc) > -1;\n const pathPatternMatch = pathPatterns && matchPath(route, pathPatterns);\n\n if (hidden) {\n return false;\n }\n\n if (!doc && !pathPatterns) {\n return true;\n }\n\n return !!(inDoc || pathPatternMatch);\n}\n"]}
|
|
File without changes
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
(0, tslib_1.__exportStar)(require("./getSpecType"), exports);
|
|
5
|
+
(0, tslib_1.__exportStar)(require("./mapOpenSpec"), exports);
|
|
6
|
+
(0, tslib_1.__exportStar)(require("./mapOpenSpec2"), exports);
|
|
7
|
+
(0, tslib_1.__exportStar)(require("./mapOpenSpec3"), exports);
|
|
8
|
+
(0, tslib_1.__exportStar)(require("./mapOpenSpecInfo"), exports);
|
|
9
|
+
(0, tslib_1.__exportStar)(require("./mapOpenSpecInfo"), exports);
|
|
10
|
+
(0, tslib_1.__exportStar)(require("./matchPath"), exports);
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":";;;AAAA,6DAA8B;AAC9B,6DAA8B;AAC9B,8DAA+B;AAC/B,8DAA+B;AAC/B,iEAAkC;AAClC,iEAAkC;AAClC,2DAA4B","sourcesContent":["export * from \"./getSpecType\";\nexport * from \"./mapOpenSpec\";\nexport * from \"./mapOpenSpec2\";\nexport * from \"./mapOpenSpec3\";\nexport * from \"./mapOpenSpecInfo\";\nexport * from \"./mapOpenSpecInfo\";\nexport * from \"./matchPath\";\n"]}
|
|
File without changes
|