@tsoa-next/runtime 8.0.4 → 8.0.5-dev.58.3748c499
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/config.d.ts +50 -45
- package/dist/decorators/customAttribute.d.ts +6 -0
- package/dist/decorators/customAttribute.js +6 -0
- package/dist/decorators/customAttribute.js.map +1 -1
- package/dist/decorators/deprecated.d.ts +1 -1
- package/dist/decorators/deprecated.js +1 -1
- package/dist/decorators/example.d.ts +6 -0
- package/dist/decorators/example.js +6 -0
- package/dist/decorators/example.js.map +1 -1
- package/dist/decorators/extension.d.ts +7 -0
- package/dist/decorators/extension.js +6 -0
- package/dist/decorators/extension.js.map +1 -1
- package/dist/decorators/methods.d.ts +7 -0
- package/dist/decorators/methods.js +7 -0
- package/dist/decorators/methods.js.map +1 -1
- package/dist/decorators/middlewares.d.ts +6 -7
- package/dist/decorators/middlewares.js +6 -7
- package/dist/decorators/middlewares.js.map +1 -1
- package/dist/decorators/operationid.d.ts +5 -0
- package/dist/decorators/operationid.js +5 -0
- package/dist/decorators/operationid.js.map +1 -1
- package/dist/decorators/parameter.d.ts +22 -24
- package/dist/decorators/parameter.js +22 -24
- package/dist/decorators/parameter.js.map +1 -1
- package/dist/decorators/response.d.ts +18 -3
- package/dist/decorators/response.js +18 -3
- package/dist/decorators/response.js.map +1 -1
- package/dist/decorators/route.d.ts +6 -1
- package/dist/decorators/route.js +6 -1
- package/dist/decorators/route.js.map +1 -1
- package/dist/decorators/security.d.ts +5 -2
- package/dist/decorators/security.js +5 -2
- package/dist/decorators/security.js.map +1 -1
- package/dist/decorators/specPath.d.ts +66 -0
- package/dist/decorators/specPath.js +68 -0
- package/dist/decorators/specPath.js.map +1 -0
- package/dist/decorators/tags.d.ts +5 -0
- package/dist/decorators/tags.js +5 -0
- package/dist/decorators/tags.js.map +1 -1
- package/dist/decorators/validate.d.ts +5 -0
- package/dist/decorators/validate.js +5 -0
- package/dist/decorators/validate.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/interfaces/controller.d.ts +7 -0
- package/dist/interfaces/controller.js +8 -0
- package/dist/interfaces/controller.js.map +1 -1
- package/dist/interfaces/iocModule.d.ts +4 -0
- package/dist/interfaces/response.d.ts +8 -0
- package/dist/metadataGeneration/tsoa.d.ts +1 -0
- package/dist/routeGeneration/additionalProps.d.ts +1 -0
- package/dist/routeGeneration/externalValidation.d.ts +3 -0
- package/dist/routeGeneration/externalValidation.js +1 -0
- package/dist/routeGeneration/externalValidation.js.map +1 -1
- package/dist/routeGeneration/specPathSupport.d.ts +32 -0
- package/dist/routeGeneration/specPathSupport.js +408 -0
- package/dist/routeGeneration/specPathSupport.js.map +1 -0
- package/dist/routeGeneration/templateHelpers.d.ts +14 -0
- package/dist/routeGeneration/templateHelpers.js +2 -0
- package/dist/routeGeneration/templateHelpers.js.map +1 -1
- package/dist/routeGeneration/templates/express/expressTemplateService.d.ts +1 -0
- package/dist/routeGeneration/templates/express/expressTemplateService.js +1 -0
- package/dist/routeGeneration/templates/express/expressTemplateService.js.map +1 -1
- package/dist/routeGeneration/templates/hapi/hapiTemplateService.d.ts +1 -0
- package/dist/routeGeneration/templates/hapi/hapiTemplateService.js +1 -0
- package/dist/routeGeneration/templates/hapi/hapiTemplateService.js.map +1 -1
- package/dist/routeGeneration/templates/koa/koaTemplateService.d.ts +1 -0
- package/dist/routeGeneration/templates/koa/koaTemplateService.js +1 -0
- package/dist/routeGeneration/templates/koa/koaTemplateService.js.map +1 -1
- package/dist/routeGeneration/templates/templateService.d.ts +6 -0
- package/dist/routeGeneration/templates/templateService.js +3 -0
- package/dist/routeGeneration/templates/templateService.js.map +1 -1
- package/dist/routeGeneration/tsoa-route.d.ts +12 -2
- package/dist/routeGeneration/tsoa-route.js +1 -2
- package/dist/routeGeneration/tsoa-route.js.map +1 -1
- package/dist/swagger/swagger.d.ts +1 -0
- package/dist/swagger/swagger.js +1 -0
- package/dist/swagger/swagger.js.map +1 -1
- package/dist/utils/pathUtils.d.ts +4 -0
- package/dist/utils/pathUtils.js +49 -0
- package/dist/utils/pathUtils.js.map +1 -0
- package/package.json +22 -2
|
@@ -1,9 +1,13 @@
|
|
|
1
|
+
/** Constructor type used for IoC container lookups. */
|
|
1
2
|
export type Newable<T = unknown, TArgs extends unknown[] = unknown[]> = new (...args: TArgs) => T;
|
|
3
|
+
/** Identifier types accepted by tsoa IoC container integrations. */
|
|
2
4
|
export type ServiceIdentifier<T = unknown> = string | symbol | Newable<T> | Function;
|
|
5
|
+
/** Minimal runtime container contract used to resolve controller instances. */
|
|
3
6
|
export interface IocContainer {
|
|
4
7
|
get<T>(controller: ServiceIdentifier<T>): T;
|
|
5
8
|
get<T>(controller: ServiceIdentifier<T>): Promise<T>;
|
|
6
9
|
}
|
|
10
|
+
/** Factory signature used to build an {@link IocContainer} per incoming request. */
|
|
7
11
|
export type IocContainerFactory<T = unknown> = {
|
|
8
12
|
bivarianceHack(request: T): IocContainer;
|
|
9
13
|
}['bivarianceHack'];
|
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
import { IsValidHeader } from '../utils/isHeaderType';
|
|
2
|
+
/** Enumerates the concrete HTTP status codes accepted by tsoa response helpers. */
|
|
2
3
|
export type HttpStatusCodeLiteral = 100 | 101 | 102 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 226 | 300 | 301 | 302 | 303 | 304 | 305 | 307 | 308 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 422 | 423 | 424 | 425 | 426 | 428 | 429 | 431 | 451 | 500 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 510 | 511;
|
|
4
|
+
/** String form of the supported concrete HTTP status codes. */
|
|
3
5
|
export type HttpStatusCodeStringLiteral = `${HttpStatusCodeLiteral}`;
|
|
6
|
+
/** Additional OpenAPI response keys supported by {@link Response}. */
|
|
4
7
|
export type OtherValidOpenApiHttpStatusCode = '1XX' | '2XX' | '3XX' | '4XX' | '5XX' | 'default';
|
|
8
|
+
/**
|
|
9
|
+
* Responder function shape injected by {@link Res}.
|
|
10
|
+
*
|
|
11
|
+
* Call the function with a status code, payload, and optional headers to short-circuit the action and send a typed response.
|
|
12
|
+
*/
|
|
5
13
|
export type TsoaResponse<T extends HttpStatusCodeLiteral, BodyType, HeaderType extends IsValidHeader<HeaderType> = object, ReturnType = never> = (status: T, data: BodyType, headers?: HeaderType) => ReturnType;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { ExtensionType } from '../decorators/extension';
|
|
2
2
|
import type { Swagger } from '../swagger/swagger';
|
|
3
3
|
import { Validator } from '..';
|
|
4
|
+
/** Public metadata model produced by tsoa during controller and schema analysis. */
|
|
4
5
|
export declare namespace Tsoa {
|
|
5
6
|
export type ExternalValidatorKind = 'zod' | 'joi' | 'yup' | 'superstruct' | 'io-ts';
|
|
6
7
|
export type ValidationStrategy = 'standard' | 'external';
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Config, RoutesConfig } from '../config';
|
|
2
2
|
import type { Tsoa } from '../metadataGeneration/tsoa';
|
|
3
|
+
/** Runtime validation options passed into generated route template services. */
|
|
3
4
|
export interface AdditionalProps {
|
|
4
5
|
noImplicitAdditionalProperties: Exclude<Config['noImplicitAdditionalProperties'], undefined>;
|
|
5
6
|
bodyCoercion: Exclude<RoutesConfig['bodyCoercion'], undefined>;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Tsoa } from '../metadataGeneration/tsoa';
|
|
2
|
+
/** Result returned by a runtime adapter for an external validation library. */
|
|
2
3
|
export type RuntimeSchemaAdapterResult<T = unknown> = {
|
|
3
4
|
ok: true;
|
|
4
5
|
value: T;
|
|
@@ -6,8 +7,10 @@ export type RuntimeSchemaAdapterResult<T = unknown> = {
|
|
|
6
7
|
ok: false;
|
|
7
8
|
failure: Tsoa.ValidationFailure;
|
|
8
9
|
};
|
|
10
|
+
/** Adapter contract used to execute validation with external schema libraries at runtime. */
|
|
9
11
|
export interface RuntimeSchemaAdapter {
|
|
10
12
|
kind: Tsoa.ExternalValidatorKind;
|
|
11
13
|
validate(value: unknown, schema: unknown, context: Tsoa.ValidationContext): RuntimeSchemaAdapterResult;
|
|
12
14
|
}
|
|
15
|
+
/** Validates a value with the runtime adapter for the selected external schema library. */
|
|
13
16
|
export declare function validateExternalSchema(kind: Tsoa.ExternalValidatorKind, schema: unknown, value: unknown, context?: Tsoa.ValidationContext): RuntimeSchemaAdapterResult;
|
|
@@ -226,6 +226,7 @@ const adapterRegistry = {
|
|
|
226
226
|
yup: yupAdapter,
|
|
227
227
|
zod: zodAdapter,
|
|
228
228
|
};
|
|
229
|
+
/** Validates a value with the runtime adapter for the selected external schema library. */
|
|
229
230
|
function validateExternalSchema(kind, schema, value, context = {}) {
|
|
230
231
|
return adapterRegistry[kind].validate(value, schema, context);
|
|
231
232
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"externalValidation.js","sourceRoot":"","sources":["../../src/routeGeneration/externalValidation.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"externalValidation.js","sourceRoot":"","sources":["../../src/routeGeneration/externalValidation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { SpecGenerator, SpecPathDefinition, SpecResponseValue, SpecRuntime } from '../decorators/specPath';
|
|
2
|
+
import { Config, SpecConfig } from '../config';
|
|
3
|
+
/** Snapshot of spec-generation settings embedded into generated routes for {@link SpecPath}. */
|
|
4
|
+
export interface RuntimeSpecConfigSnapshot {
|
|
5
|
+
compilerOptions?: Record<string, unknown>;
|
|
6
|
+
defaultNumberType?: Config['defaultNumberType'];
|
|
7
|
+
ignore?: string[];
|
|
8
|
+
spec: SpecConfig & {
|
|
9
|
+
entryFile: Config['entryFile'];
|
|
10
|
+
controllerPathGlobs?: Config['controllerPathGlobs'];
|
|
11
|
+
noImplicitAdditionalProperties: Exclude<Config['noImplicitAdditionalProperties'], undefined>;
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
/** Fully resolved response body and content type returned by spec-path helpers. */
|
|
15
|
+
export interface ResolvedSpecResponse {
|
|
16
|
+
body: SpecResponseValue;
|
|
17
|
+
contentType?: string;
|
|
18
|
+
}
|
|
19
|
+
type SpecContextArgs = {
|
|
20
|
+
controllerClass: object;
|
|
21
|
+
fullPath: string;
|
|
22
|
+
request?: unknown;
|
|
23
|
+
response?: unknown;
|
|
24
|
+
runtime: SpecRuntime;
|
|
25
|
+
specGenerator: SpecGenerator;
|
|
26
|
+
specPath: SpecPathDefinition;
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* Resolves a declared {@link SpecPath} target into a concrete response body, applying built-in rendering and caching behavior.
|
|
30
|
+
*/
|
|
31
|
+
export declare function resolveSpecPathResponse(args: SpecContextArgs): Promise<ResolvedSpecResponse>;
|
|
32
|
+
export {};
|
|
@@ -0,0 +1,408 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.resolveSpecPathResponse = resolveSpecPathResponse;
|
|
4
|
+
const node_crypto_1 = require("node:crypto");
|
|
5
|
+
const promises_1 = require("node:fs/promises");
|
|
6
|
+
const node_module_1 = require("node:module");
|
|
7
|
+
const node_path_1 = require("node:path");
|
|
8
|
+
const node_stream_1 = require("node:stream");
|
|
9
|
+
const memoryCache = new WeakMap();
|
|
10
|
+
const assetCache = new Map();
|
|
11
|
+
const controllerCacheScopes = new WeakMap();
|
|
12
|
+
const specGeneratorCacheScopes = new WeakMap();
|
|
13
|
+
let controllerCacheScopeId = 0;
|
|
14
|
+
let specGeneratorCacheScopeId = 0;
|
|
15
|
+
function isAsyncIterable(value) {
|
|
16
|
+
return value != null && typeof value[Symbol.asyncIterator] === 'function';
|
|
17
|
+
}
|
|
18
|
+
function isReadableStream(value) {
|
|
19
|
+
return (isAsyncIterable(value) ||
|
|
20
|
+
value instanceof node_stream_1.Readable ||
|
|
21
|
+
(typeof value === 'object' &&
|
|
22
|
+
value !== null &&
|
|
23
|
+
'pipe' in value &&
|
|
24
|
+
typeof value.pipe === 'function' &&
|
|
25
|
+
'on' in value &&
|
|
26
|
+
typeof value.on === 'function'));
|
|
27
|
+
}
|
|
28
|
+
function getMemoryCache(specGenerator) {
|
|
29
|
+
const cached = memoryCache.get(specGenerator);
|
|
30
|
+
if (cached) {
|
|
31
|
+
return cached;
|
|
32
|
+
}
|
|
33
|
+
const created = new Map();
|
|
34
|
+
memoryCache.set(specGenerator, created);
|
|
35
|
+
return created;
|
|
36
|
+
}
|
|
37
|
+
function getControllerCacheScope(controllerClass) {
|
|
38
|
+
const cached = controllerCacheScopes.get(controllerClass);
|
|
39
|
+
if (cached) {
|
|
40
|
+
return cached;
|
|
41
|
+
}
|
|
42
|
+
const created = `controller:${controllerCacheScopeId++}`;
|
|
43
|
+
controllerCacheScopes.set(controllerClass, created);
|
|
44
|
+
return created;
|
|
45
|
+
}
|
|
46
|
+
function getSpecGeneratorCacheScope(specGenerator) {
|
|
47
|
+
const cached = specGeneratorCacheScopes.get(specGenerator);
|
|
48
|
+
if (cached) {
|
|
49
|
+
return cached;
|
|
50
|
+
}
|
|
51
|
+
const created = `spec-generator:${specGeneratorCacheScopeId++}`;
|
|
52
|
+
specGeneratorCacheScopes.set(specGenerator, created);
|
|
53
|
+
return created;
|
|
54
|
+
}
|
|
55
|
+
function getContentType(target) {
|
|
56
|
+
switch (target) {
|
|
57
|
+
case 'json':
|
|
58
|
+
return 'application/json; charset=utf-8';
|
|
59
|
+
case 'yaml':
|
|
60
|
+
return 'application/yaml; charset=utf-8';
|
|
61
|
+
default:
|
|
62
|
+
return 'text/html; charset=utf-8';
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
function getFormat(target) {
|
|
66
|
+
switch (target) {
|
|
67
|
+
case 'json':
|
|
68
|
+
return 'json';
|
|
69
|
+
case 'yaml':
|
|
70
|
+
return 'yaml';
|
|
71
|
+
case 'swagger':
|
|
72
|
+
case 'redoc':
|
|
73
|
+
case 'rapidoc':
|
|
74
|
+
return 'html';
|
|
75
|
+
default:
|
|
76
|
+
return undefined;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
function getCacheHandler({ specGenerator, specPath }) {
|
|
80
|
+
const { cache } = specPath;
|
|
81
|
+
if (cache === 'none') {
|
|
82
|
+
return undefined;
|
|
83
|
+
}
|
|
84
|
+
if (cache === 'memory') {
|
|
85
|
+
const scopedMemoryCache = getMemoryCache(specGenerator);
|
|
86
|
+
return {
|
|
87
|
+
get(context) {
|
|
88
|
+
return scopedMemoryCache.get(context.cacheKey);
|
|
89
|
+
},
|
|
90
|
+
set(context, value) {
|
|
91
|
+
scopedMemoryCache.set(context.cacheKey, value);
|
|
92
|
+
},
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
return cache;
|
|
96
|
+
}
|
|
97
|
+
function getCacheKey({ controllerClass, fullPath, runtime, specGenerator, specPath }) {
|
|
98
|
+
const format = typeof specPath.target === 'string' ? specPath.target : 'custom';
|
|
99
|
+
let cacheMode;
|
|
100
|
+
if (specPath.cache === 'none') {
|
|
101
|
+
cacheMode = 'none';
|
|
102
|
+
}
|
|
103
|
+
else if (specPath.cache === 'memory') {
|
|
104
|
+
cacheMode = 'memory';
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
cacheMode = 'custom';
|
|
108
|
+
}
|
|
109
|
+
const cacheInput = JSON.stringify({
|
|
110
|
+
cache: cacheMode,
|
|
111
|
+
controller: getControllerCacheScope(controllerClass),
|
|
112
|
+
fullPath,
|
|
113
|
+
format,
|
|
114
|
+
runtime,
|
|
115
|
+
specGenerator: getSpecGeneratorCacheScope(specGenerator),
|
|
116
|
+
});
|
|
117
|
+
return (0, node_crypto_1.createHash)('sha256').update(cacheInput).digest('hex');
|
|
118
|
+
}
|
|
119
|
+
function createSpecRequestContext(args) {
|
|
120
|
+
const target = typeof args.specPath.target === 'string' ? args.specPath.target : 'custom';
|
|
121
|
+
const cacheContext = {
|
|
122
|
+
cacheKey: getCacheKey(args),
|
|
123
|
+
controllerClass: args.controllerClass,
|
|
124
|
+
format: getFormat(target),
|
|
125
|
+
fullPath: args.fullPath,
|
|
126
|
+
path: args.specPath.path,
|
|
127
|
+
runtime: args.runtime,
|
|
128
|
+
target,
|
|
129
|
+
};
|
|
130
|
+
return {
|
|
131
|
+
...cacheContext,
|
|
132
|
+
getSpecObject: () => args.specGenerator.getSpecObject(),
|
|
133
|
+
getSpecString: format => args.specGenerator.getSpecString(format),
|
|
134
|
+
request: args.request,
|
|
135
|
+
response: args.response,
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
async function readResponseValue(value) {
|
|
139
|
+
if (!isReadableStream(value)) {
|
|
140
|
+
return value;
|
|
141
|
+
}
|
|
142
|
+
if (isAsyncIterable(value)) {
|
|
143
|
+
const chunks = [];
|
|
144
|
+
for await (const chunk of value) {
|
|
145
|
+
chunks.push(toResponseChunkBuffer(chunk));
|
|
146
|
+
}
|
|
147
|
+
return Buffer.concat(chunks).toString('utf8');
|
|
148
|
+
}
|
|
149
|
+
return readReadableStreamFromEvents(value);
|
|
150
|
+
}
|
|
151
|
+
function toResponseChunkBuffer(chunk) {
|
|
152
|
+
if (typeof chunk === 'string') {
|
|
153
|
+
return Buffer.from(chunk);
|
|
154
|
+
}
|
|
155
|
+
if (chunk instanceof Uint8Array) {
|
|
156
|
+
return chunk;
|
|
157
|
+
}
|
|
158
|
+
return Buffer.from(String(chunk));
|
|
159
|
+
}
|
|
160
|
+
function readReadableStreamFromEvents(value) {
|
|
161
|
+
return new Promise((resolve, reject) => {
|
|
162
|
+
const chunks = [];
|
|
163
|
+
value.on('data', (chunk) => {
|
|
164
|
+
chunks.push(toResponseChunkBuffer(chunk));
|
|
165
|
+
});
|
|
166
|
+
value.once('end', () => {
|
|
167
|
+
resolve(Buffer.concat(chunks).toString('utf8'));
|
|
168
|
+
});
|
|
169
|
+
value.once('error', reject);
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
function serializeSpecForHtml(spec) {
|
|
173
|
+
return JSON.stringify(spec)
|
|
174
|
+
.replaceAll('<', String.raw `\u003c`)
|
|
175
|
+
.replaceAll('>', String.raw `\u003e`)
|
|
176
|
+
.replaceAll('&', String.raw `\u0026`);
|
|
177
|
+
}
|
|
178
|
+
function escapeHtmlText(value) {
|
|
179
|
+
return value.replaceAll('&', '&').replaceAll('<', '<').replaceAll('>', '>');
|
|
180
|
+
}
|
|
181
|
+
async function readPeerFile(packageName, candidates) {
|
|
182
|
+
const cacheKey = `${packageName}:${candidates.join('|')}`;
|
|
183
|
+
const cached = assetCache.get(cacheKey);
|
|
184
|
+
if (cached) {
|
|
185
|
+
return cached;
|
|
186
|
+
}
|
|
187
|
+
const loadPromise = (async () => {
|
|
188
|
+
let packageJsonPath;
|
|
189
|
+
try {
|
|
190
|
+
packageJsonPath = require.resolve(`${packageName}/package.json`);
|
|
191
|
+
}
|
|
192
|
+
catch {
|
|
193
|
+
throw new Error(`SpecPath target requires optional peer dependency '${packageName}'. Install it to serve this documentation target.`);
|
|
194
|
+
}
|
|
195
|
+
const packageRoot = (0, node_path_1.dirname)(packageJsonPath);
|
|
196
|
+
for (const candidate of candidates) {
|
|
197
|
+
try {
|
|
198
|
+
return await (0, promises_1.readFile)((0, node_path_1.join)(packageRoot, candidate), 'utf8');
|
|
199
|
+
}
|
|
200
|
+
catch {
|
|
201
|
+
continue;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
throw new Error(`Unable to locate runtime asset for optional peer dependency '${packageName}'. Checked: ${candidates.join(', ')}`);
|
|
205
|
+
})();
|
|
206
|
+
assetCache.set(cacheKey, loadPromise);
|
|
207
|
+
return loadPromise;
|
|
208
|
+
}
|
|
209
|
+
async function readSwaggerDistAsset(runtime, assetName) {
|
|
210
|
+
let packageName;
|
|
211
|
+
if (runtime === 'express') {
|
|
212
|
+
packageName = 'swagger-ui-express';
|
|
213
|
+
}
|
|
214
|
+
else if (runtime === 'koa') {
|
|
215
|
+
packageName = 'swagger-ui-koa';
|
|
216
|
+
}
|
|
217
|
+
else {
|
|
218
|
+
packageName = 'hapi-swagger';
|
|
219
|
+
}
|
|
220
|
+
let packageJsonPath;
|
|
221
|
+
try {
|
|
222
|
+
packageJsonPath = require.resolve(`${packageName}/package.json`);
|
|
223
|
+
}
|
|
224
|
+
catch {
|
|
225
|
+
throw new Error(`SpecPath target 'swagger' requires optional peer dependency '${packageName}' for the '${runtime}' runtime.`);
|
|
226
|
+
}
|
|
227
|
+
const directPackageRoot = (0, node_path_1.dirname)(packageJsonPath);
|
|
228
|
+
const directCandidates = runtime === 'koa' ? [(0, node_path_1.join)('static', assetName)] : [];
|
|
229
|
+
for (const candidate of directCandidates) {
|
|
230
|
+
try {
|
|
231
|
+
return await (0, promises_1.readFile)((0, node_path_1.join)(directPackageRoot, candidate), 'utf8');
|
|
232
|
+
}
|
|
233
|
+
catch {
|
|
234
|
+
continue;
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
const requireFromPackage = (0, node_module_1.createRequire)(packageJsonPath);
|
|
238
|
+
let swaggerUiDistPackagePath;
|
|
239
|
+
try {
|
|
240
|
+
swaggerUiDistPackagePath = requireFromPackage.resolve('swagger-ui-dist/package.json');
|
|
241
|
+
}
|
|
242
|
+
catch {
|
|
243
|
+
throw new Error(`SpecPath target 'swagger' requires '${packageName}' to provide 'swagger-ui-dist'. Install or re-install '${packageName}'.`);
|
|
244
|
+
}
|
|
245
|
+
return (0, promises_1.readFile)((0, node_path_1.join)((0, node_path_1.dirname)(swaggerUiDistPackagePath), assetName), 'utf8');
|
|
246
|
+
}
|
|
247
|
+
async function loadSwaggerAssets(runtime) {
|
|
248
|
+
const [script, preset, style] = await Promise.all([
|
|
249
|
+
readSwaggerDistAsset(runtime, 'swagger-ui-bundle.js'),
|
|
250
|
+
readSwaggerDistAsset(runtime, 'swagger-ui-standalone-preset.js'),
|
|
251
|
+
readSwaggerDistAsset(runtime, 'swagger-ui.css'),
|
|
252
|
+
]);
|
|
253
|
+
return { preset, script, style };
|
|
254
|
+
}
|
|
255
|
+
async function loadRedocAssets() {
|
|
256
|
+
return {
|
|
257
|
+
script: await readPeerFile('redoc', ['bundles/redoc.standalone.js']),
|
|
258
|
+
};
|
|
259
|
+
}
|
|
260
|
+
async function loadRapiDocAssets() {
|
|
261
|
+
return {
|
|
262
|
+
script: await readPeerFile('rapidoc', ['dist/rapidoc-min.js']),
|
|
263
|
+
};
|
|
264
|
+
}
|
|
265
|
+
async function renderSwaggerHtml(spec, runtime) {
|
|
266
|
+
const assets = await loadSwaggerAssets(runtime);
|
|
267
|
+
const title = escapeHtmlText(spec.info.title || 'API documentation');
|
|
268
|
+
const serializedSpec = serializeSpecForHtml(spec);
|
|
269
|
+
return `<!DOCTYPE html>
|
|
270
|
+
<html lang="en">
|
|
271
|
+
<head>
|
|
272
|
+
<meta charset="utf-8" />
|
|
273
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
274
|
+
<title>${title}</title>
|
|
275
|
+
<style>
|
|
276
|
+
html { box-sizing: border-box; overflow-y: scroll; }
|
|
277
|
+
*, *:before, *:after { box-sizing: inherit; }
|
|
278
|
+
body { margin: 0; background: #fafafa; }
|
|
279
|
+
${assets.style ?? ''}
|
|
280
|
+
</style>
|
|
281
|
+
</head>
|
|
282
|
+
<body>
|
|
283
|
+
<div id="swagger-ui"></div>
|
|
284
|
+
<script>${assets.script}</script>
|
|
285
|
+
<script>${assets.preset ?? ''}</script>
|
|
286
|
+
<script>
|
|
287
|
+
window.ui = SwaggerUIBundle({
|
|
288
|
+
spec: ${serializedSpec},
|
|
289
|
+
dom_id: '#swagger-ui',
|
|
290
|
+
deepLinking: true,
|
|
291
|
+
presets: [SwaggerUIBundle.presets.apis, SwaggerUIStandalonePreset],
|
|
292
|
+
layout: 'BaseLayout'
|
|
293
|
+
});
|
|
294
|
+
</script>
|
|
295
|
+
</body>
|
|
296
|
+
</html>`;
|
|
297
|
+
}
|
|
298
|
+
async function renderRedocHtml(spec) {
|
|
299
|
+
const assets = await loadRedocAssets();
|
|
300
|
+
const title = escapeHtmlText(spec.info.title || 'API documentation');
|
|
301
|
+
const serializedSpec = serializeSpecForHtml(spec);
|
|
302
|
+
return `<!DOCTYPE html>
|
|
303
|
+
<html lang="en">
|
|
304
|
+
<head>
|
|
305
|
+
<meta charset="utf-8" />
|
|
306
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
307
|
+
<title>${title}</title>
|
|
308
|
+
<style>
|
|
309
|
+
body { margin: 0; padding: 0; }
|
|
310
|
+
</style>
|
|
311
|
+
</head>
|
|
312
|
+
<body>
|
|
313
|
+
<div id="redoc-container"></div>
|
|
314
|
+
<script>${assets.script}</script>
|
|
315
|
+
<script>
|
|
316
|
+
Redoc.init(${serializedSpec}, {}, document.getElementById('redoc-container'));
|
|
317
|
+
</script>
|
|
318
|
+
</body>
|
|
319
|
+
</html>`;
|
|
320
|
+
}
|
|
321
|
+
async function renderRapiDocHtml(spec) {
|
|
322
|
+
const assets = await loadRapiDocAssets();
|
|
323
|
+
const title = escapeHtmlText(spec.info.title || 'API documentation');
|
|
324
|
+
const serializedSpec = serializeSpecForHtml(spec);
|
|
325
|
+
return `<!DOCTYPE html>
|
|
326
|
+
<html lang="en">
|
|
327
|
+
<head>
|
|
328
|
+
<meta charset="utf-8" />
|
|
329
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
330
|
+
<title>${title}</title>
|
|
331
|
+
<style>
|
|
332
|
+
body { margin: 0; padding: 0; }
|
|
333
|
+
rapi-doc { width: 100vw; height: 100vh; display: block; }
|
|
334
|
+
</style>
|
|
335
|
+
</head>
|
|
336
|
+
<body>
|
|
337
|
+
<rapi-doc id="rapidoc" render-style="read" show-header="false"></rapi-doc>
|
|
338
|
+
<script>${assets.script}</script>
|
|
339
|
+
<script>
|
|
340
|
+
document.getElementById('rapidoc').loadSpec(${serializedSpec});
|
|
341
|
+
</script>
|
|
342
|
+
</body>
|
|
343
|
+
</html>`;
|
|
344
|
+
}
|
|
345
|
+
async function buildBuiltinResponse(target, context) {
|
|
346
|
+
switch (target) {
|
|
347
|
+
case 'json':
|
|
348
|
+
return {
|
|
349
|
+
body: await context.getSpecString('json'),
|
|
350
|
+
contentType: getContentType(target),
|
|
351
|
+
};
|
|
352
|
+
case 'yaml':
|
|
353
|
+
return {
|
|
354
|
+
body: await context.getSpecString('yaml'),
|
|
355
|
+
contentType: getContentType(target),
|
|
356
|
+
};
|
|
357
|
+
case 'swagger':
|
|
358
|
+
return {
|
|
359
|
+
body: await renderSwaggerHtml(await context.getSpecObject(), context.runtime),
|
|
360
|
+
contentType: getContentType(target),
|
|
361
|
+
};
|
|
362
|
+
case 'redoc':
|
|
363
|
+
return {
|
|
364
|
+
body: await renderRedocHtml(await context.getSpecObject()),
|
|
365
|
+
contentType: getContentType(target),
|
|
366
|
+
};
|
|
367
|
+
case 'rapidoc':
|
|
368
|
+
return {
|
|
369
|
+
body: await renderRapiDocHtml(await context.getSpecObject()),
|
|
370
|
+
contentType: getContentType(target),
|
|
371
|
+
};
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
async function resolveHandlerResponse(specPath, context) {
|
|
375
|
+
if (typeof specPath.target === 'string') {
|
|
376
|
+
return buildBuiltinResponse(specPath.target, context);
|
|
377
|
+
}
|
|
378
|
+
const body = await specPath.target(context);
|
|
379
|
+
return { body };
|
|
380
|
+
}
|
|
381
|
+
/**
|
|
382
|
+
* Resolves a declared {@link SpecPath} target into a concrete response body, applying built-in rendering and caching behavior.
|
|
383
|
+
*/
|
|
384
|
+
async function resolveSpecPathResponse(args) {
|
|
385
|
+
const context = createSpecRequestContext(args);
|
|
386
|
+
const cacheHandler = getCacheHandler(args);
|
|
387
|
+
if (cacheHandler) {
|
|
388
|
+
const cached = await cacheHandler.get(context);
|
|
389
|
+
if (cached !== undefined) {
|
|
390
|
+
return {
|
|
391
|
+
body: cached,
|
|
392
|
+
contentType: typeof args.specPath.target === 'string' ? getContentType(args.specPath.target) : undefined,
|
|
393
|
+
};
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
const resolved = await resolveHandlerResponse(args.specPath, context);
|
|
397
|
+
if (!cacheHandler) {
|
|
398
|
+
return resolved;
|
|
399
|
+
}
|
|
400
|
+
if (typeof resolved.body === 'string') {
|
|
401
|
+
await cacheHandler.set(context, resolved.body);
|
|
402
|
+
return resolved;
|
|
403
|
+
}
|
|
404
|
+
const serialized = await readResponseValue(resolved.body);
|
|
405
|
+
await cacheHandler.set(context, serialized);
|
|
406
|
+
return { ...resolved, body: serialized };
|
|
407
|
+
}
|
|
408
|
+
//# sourceMappingURL=specPathSupport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"specPathSupport.js","sourceRoot":"","sources":["../../src/routeGeneration/specPathSupport.ts"],"names":[],"mappings":"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"}
|