@zudojs/openapi 0.0.1
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/README.md +44 -0
- package/dist/.tsbuildinfo +1 -0
- package/dist/index.d.ts +50 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +42 -0
- package/dist/index.js.map +1 -0
- package/dist/openApiComponents/index.d.ts +9 -0
- package/dist/openApiComponents/index.d.ts.map +1 -0
- package/dist/openApiComponents/index.js +8 -0
- package/dist/openApiComponents/index.js.map +1 -0
- package/dist/openApiConstants/index.d.ts +5 -0
- package/dist/openApiConstants/index.d.ts.map +1 -0
- package/dist/openApiConstants/index.js +5 -0
- package/dist/openApiConstants/index.js.map +1 -0
- package/dist/openApiConstants/openApiConstants.core.d.ts +40 -0
- package/dist/openApiConstants/openApiConstants.core.d.ts.map +1 -0
- package/dist/openApiConstants/openApiConstants.core.js +40 -0
- package/dist/openApiConstants/openApiConstants.core.js.map +1 -0
- package/dist/openApiDocument/index.d.ts +8 -0
- package/dist/openApiDocument/index.d.ts.map +1 -0
- package/dist/openApiDocument/index.js +7 -0
- package/dist/openApiDocument/index.js.map +1 -0
- package/dist/openApiDocument/openApiDocument.builder.d.ts +60 -0
- package/dist/openApiDocument/openApiDocument.builder.d.ts.map +1 -0
- package/dist/openApiDocument/openApiDocument.builder.js +106 -0
- package/dist/openApiDocument/openApiDocument.builder.js.map +1 -0
- package/dist/openApiErrors/index.d.ts +8 -0
- package/dist/openApiErrors/index.d.ts.map +1 -0
- package/dist/openApiErrors/index.js +7 -0
- package/dist/openApiErrors/index.js.map +1 -0
- package/dist/openApiErrors/openApiError.base.d.ts +21 -0
- package/dist/openApiErrors/openApiError.base.d.ts.map +1 -0
- package/dist/openApiErrors/openApiError.base.js +28 -0
- package/dist/openApiErrors/openApiError.base.js.map +1 -0
- package/dist/openApiErrors/openApiError.core.d.ts +6 -0
- package/dist/openApiErrors/openApiError.core.d.ts.map +1 -0
- package/dist/openApiErrors/openApiError.core.js +6 -0
- package/dist/openApiErrors/openApiError.core.js.map +1 -0
- package/dist/openApiErrors/openApiError.types.d.ts +51 -0
- package/dist/openApiErrors/openApiError.types.d.ts.map +1 -0
- package/dist/openApiErrors/openApiError.types.js +125 -0
- package/dist/openApiErrors/openApiError.types.js.map +1 -0
- package/dist/openApiHttp/index.d.ts +7 -0
- package/dist/openApiHttp/index.d.ts.map +1 -0
- package/dist/openApiHttp/index.js +7 -0
- package/dist/openApiHttp/index.js.map +1 -0
- package/dist/openApiHttp/openApiHttpAdapter.core.d.ts +38 -0
- package/dist/openApiHttp/openApiHttpAdapter.core.d.ts.map +1 -0
- package/dist/openApiHttp/openApiHttpAdapter.core.js +61 -0
- package/dist/openApiHttp/openApiHttpAdapter.core.js.map +1 -0
- package/dist/openApiRegistry/index.d.ts +8 -0
- package/dist/openApiRegistry/index.d.ts.map +1 -0
- package/dist/openApiRegistry/index.js +7 -0
- package/dist/openApiRegistry/index.js.map +1 -0
- package/dist/openApiRegistry/openApiRegistry.core.d.ts +31 -0
- package/dist/openApiRegistry/openApiRegistry.core.d.ts.map +1 -0
- package/dist/openApiRegistry/openApiRegistry.core.js +150 -0
- package/dist/openApiRegistry/openApiRegistry.core.js.map +1 -0
- package/dist/openApiRegistry/openApiRegistry.type.d.ts +42 -0
- package/dist/openApiRegistry/openApiRegistry.type.d.ts.map +1 -0
- package/dist/openApiRegistry/openApiRegistry.type.js +3 -0
- package/dist/openApiRegistry/openApiRegistry.type.js.map +1 -0
- package/dist/openApiRouting/index.d.ts +9 -0
- package/dist/openApiRouting/index.d.ts.map +1 -0
- package/dist/openApiRouting/index.js +8 -0
- package/dist/openApiRouting/index.js.map +1 -0
- package/dist/openApiRouting/routeConverter.core.d.ts +23 -0
- package/dist/openApiRouting/routeConverter.core.d.ts.map +1 -0
- package/dist/openApiRouting/routeConverter.core.js +85 -0
- package/dist/openApiRouting/routeConverter.core.js.map +1 -0
- package/dist/openApiRouting/routeMetadata.type.d.ts +38 -0
- package/dist/openApiRouting/routeMetadata.type.d.ts.map +1 -0
- package/dist/openApiRouting/routeMetadata.type.js +2 -0
- package/dist/openApiRouting/routeMetadata.type.js.map +1 -0
- package/dist/openApiRouting/routeScanner.core.d.ts +57 -0
- package/dist/openApiRouting/routeScanner.core.d.ts.map +1 -0
- package/dist/openApiRouting/routeScanner.core.js +71 -0
- package/dist/openApiRouting/routeScanner.core.js.map +1 -0
- package/dist/openApiSchema/index.d.ts +11 -0
- package/dist/openApiSchema/index.d.ts.map +1 -0
- package/dist/openApiSchema/index.js +9 -0
- package/dist/openApiSchema/index.js.map +1 -0
- package/dist/openApiSchema/references.core.d.ts +9 -0
- package/dist/openApiSchema/references.core.d.ts.map +1 -0
- package/dist/openApiSchema/references.core.js +12 -0
- package/dist/openApiSchema/references.core.js.map +1 -0
- package/dist/openApiSchema/schemaConverter.core.d.ts +11 -0
- package/dist/openApiSchema/schemaConverter.core.d.ts.map +1 -0
- package/dist/openApiSchema/schemaConverter.core.js +141 -0
- package/dist/openApiSchema/schemaConverter.core.js.map +1 -0
- package/dist/openApiSchema/schemaRegistry.core.d.ts +28 -0
- package/dist/openApiSchema/schemaRegistry.core.d.ts.map +1 -0
- package/dist/openApiSchema/schemaRegistry.core.js +36 -0
- package/dist/openApiSchema/schemaRegistry.core.js.map +1 -0
- package/dist/openApiSerialization/index.d.ts +7 -0
- package/dist/openApiSerialization/index.d.ts.map +1 -0
- package/dist/openApiSerialization/index.js +7 -0
- package/dist/openApiSerialization/index.js.map +1 -0
- package/dist/openApiSerialization/openApiSerializer.core.d.ts +12 -0
- package/dist/openApiSerialization/openApiSerializer.core.d.ts.map +1 -0
- package/dist/openApiSerialization/openApiSerializer.core.js +26 -0
- package/dist/openApiSerialization/openApiSerializer.core.js.map +1 -0
- package/dist/openApiTypes/index.d.ts +7 -0
- package/dist/openApiTypes/index.d.ts.map +1 -0
- package/dist/openApiTypes/index.js +7 -0
- package/dist/openApiTypes/index.js.map +1 -0
- package/dist/openApiTypes/openApiComponent.type.d.ts +69 -0
- package/dist/openApiTypes/openApiComponent.type.d.ts.map +1 -0
- package/dist/openApiTypes/openApiComponent.type.js +5 -0
- package/dist/openApiTypes/openApiComponent.type.js.map +1 -0
- package/dist/openApiTypes/openApiDocument.type.d.ts +61 -0
- package/dist/openApiTypes/openApiDocument.type.d.ts.map +1 -0
- package/dist/openApiTypes/openApiDocument.type.js +5 -0
- package/dist/openApiTypes/openApiDocument.type.js.map +1 -0
- package/dist/openApiTypes/openApiPath.type.d.ts +48 -0
- package/dist/openApiTypes/openApiPath.type.d.ts.map +1 -0
- package/dist/openApiTypes/openApiPath.type.js +5 -0
- package/dist/openApiTypes/openApiPath.type.js.map +1 -0
- package/dist/openApiTypes/openApiSchema.type.d.ts +40 -0
- package/dist/openApiTypes/openApiSchema.type.d.ts.map +1 -0
- package/dist/openApiTypes/openApiSchema.type.js +5 -0
- package/dist/openApiTypes/openApiSchema.type.js.map +1 -0
- package/dist/openApiTypes/openApiSecurity.type.d.ts +29 -0
- package/dist/openApiTypes/openApiSecurity.type.d.ts.map +1 -0
- package/dist/openApiTypes/openApiSecurity.type.js +5 -0
- package/dist/openApiTypes/openApiSecurity.type.js.map +1 -0
- package/dist/openApiTypes/openApiTypes.core.d.ts +11 -0
- package/dist/openApiTypes/openApiTypes.core.d.ts.map +1 -0
- package/dist/openApiTypes/openApiTypes.core.js +11 -0
- package/dist/openApiTypes/openApiTypes.core.js.map +1 -0
- package/dist/openApiValidation/index.d.ts +8 -0
- package/dist/openApiValidation/index.d.ts.map +1 -0
- package/dist/openApiValidation/index.js +7 -0
- package/dist/openApiValidation/index.js.map +1 -0
- package/dist/openApiValidation/openApiValidator.core.d.ts +22 -0
- package/dist/openApiValidation/openApiValidator.core.d.ts.map +1 -0
- package/dist/openApiValidation/openApiValidator.core.js +114 -0
- package/dist/openApiValidation/openApiValidator.core.js.map +1 -0
- package/package.json +53 -0
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { OpenAPIDocument } from "../openApiTypes/openApiTypes.core.js";
|
|
2
|
+
import { OpenAPIRegistryImpl } from "../openApiRegistry/openApiRegistry.core.js";
|
|
3
|
+
import { OpenAPIRouteScannerImpl } from "../openApiRouting/routeScanner.core.js";
|
|
4
|
+
/**
|
|
5
|
+
* High-level OpenAPI manager that coordinates generation, validation, and serving.
|
|
6
|
+
*/
|
|
7
|
+
export declare class OpenAPIManager {
|
|
8
|
+
private readonly registry;
|
|
9
|
+
private readonly scanner;
|
|
10
|
+
private readonly validator;
|
|
11
|
+
private cachedDocument?;
|
|
12
|
+
constructor(version?: string);
|
|
13
|
+
get registryInstance(): OpenAPIRegistryImpl;
|
|
14
|
+
get scannerInstance(): OpenAPIRouteScannerImpl;
|
|
15
|
+
addRoute(route: {
|
|
16
|
+
readonly method: "get" | "put" | "post" | "delete" | "options" | "head" | "patch" | "trace";
|
|
17
|
+
readonly path: string;
|
|
18
|
+
readonly metadata?: {
|
|
19
|
+
readonly openapi?: {
|
|
20
|
+
readonly operationId?: string;
|
|
21
|
+
readonly summary?: string;
|
|
22
|
+
readonly description?: string;
|
|
23
|
+
readonly tags?: readonly string[];
|
|
24
|
+
readonly responses?: Record<string, unknown>;
|
|
25
|
+
readonly requestBody?: unknown;
|
|
26
|
+
readonly parameters?: readonly unknown[];
|
|
27
|
+
readonly security?: readonly Record<string, readonly string[]>[];
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
}): void;
|
|
31
|
+
addSchema(name: string, schema: unknown): void;
|
|
32
|
+
generate(validate?: boolean): OpenAPIDocument;
|
|
33
|
+
getDocument(validate?: boolean): Readonly<OpenAPIDocument>;
|
|
34
|
+
invalidate(): void;
|
|
35
|
+
toJSON(validate?: boolean): string;
|
|
36
|
+
toYAML(validate?: boolean): string;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=openApiHttpAdapter.core.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openApiHttpAdapter.core.d.ts","sourceRoot":"","sources":["../../src/openApiHttp/openApiHttpAdapter.core.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAG5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,4CAA4C,CAAC;AACjF,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AAOjF;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAsB;IAE/C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0B;IAElD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAuB;IAEjD,OAAO,CAAC,cAAc,CAAC,CAAkB;IAEzC,YAAY,OAAO,SAAU,EAI5B;IAED,IAAW,gBAAgB,IAAI,mBAAmB,CAEjD;IAED,IAAW,eAAe,IAAI,uBAAuB,CAEpD;IAEM,QAAQ,CAAC,KAAK,EAAE;QACrB,QAAQ,CAAC,MAAM,EACX,KAAK,GACL,KAAK,GACL,MAAM,GACN,QAAQ,GACR,SAAS,GACT,MAAM,GACN,OAAO,GACP,OAAO,CAAC;QACZ,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,QAAQ,CAAC,EAAE;YAClB,QAAQ,CAAC,OAAO,CAAC,EAAE;gBACjB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;gBAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;gBAC1B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;gBAC9B,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;gBAClC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAC7C,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;gBAC/B,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;gBACzC,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,EAAE,CAAC;aAClE,CAAC;SACH,CAAC;KACH,GAAG,IAAI,CAEP;IAEM,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI,CAEpD;IAEM,QAAQ,CAAC,QAAQ,UAAQ,GAAG,eAAe,CAejD;IAEM,WAAW,CAAC,QAAQ,UAAQ,GAAG,QAAQ,CAAC,eAAe,CAAC,CAK9D;IAEM,UAAU,IAAI,IAAI,CAIxB;IAEM,MAAM,CAAC,QAAQ,UAAQ,GAAG,MAAM,CAEtC;IAEM,MAAM,CAAC,QAAQ,UAAQ,GAAG,MAAM,CAEtC;CACF"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { OpenAPIDocumentBuilder } from "../openApiDocument/openApiDocument.builder.js";
|
|
2
|
+
import { OpenAPIRegistryImpl } from "../openApiRegistry/openApiRegistry.core.js";
|
|
3
|
+
import { OpenAPIRouteScannerImpl } from "../openApiRouting/routeScanner.core.js";
|
|
4
|
+
import { OpenAPIValidatorImpl } from "../openApiValidation/openApiValidator.core.js";
|
|
5
|
+
import { toOpenAPIJSON, toOpenAPIYAML, } from "../openApiSerialization/openApiSerializer.core.js";
|
|
6
|
+
/**
|
|
7
|
+
* High-level OpenAPI manager that coordinates generation, validation, and serving.
|
|
8
|
+
*/
|
|
9
|
+
export class OpenAPIManager {
|
|
10
|
+
registry;
|
|
11
|
+
scanner;
|
|
12
|
+
validator;
|
|
13
|
+
cachedDocument;
|
|
14
|
+
constructor(version = "3.1.0") {
|
|
15
|
+
this.registry = new OpenAPIRegistryImpl(version);
|
|
16
|
+
this.scanner = new OpenAPIRouteScannerImpl();
|
|
17
|
+
this.validator = new OpenAPIValidatorImpl();
|
|
18
|
+
}
|
|
19
|
+
get registryInstance() {
|
|
20
|
+
return this.registry;
|
|
21
|
+
}
|
|
22
|
+
get scannerInstance() {
|
|
23
|
+
return this.scanner;
|
|
24
|
+
}
|
|
25
|
+
addRoute(route) {
|
|
26
|
+
this.scanner.addRoute(route);
|
|
27
|
+
}
|
|
28
|
+
addSchema(name, schema) {
|
|
29
|
+
this.registry.registerSchema(name, schema);
|
|
30
|
+
}
|
|
31
|
+
generate(validate = false) {
|
|
32
|
+
const routes = this.scanner.scan();
|
|
33
|
+
for (const route of routes) {
|
|
34
|
+
this.registry.registerRoute(route);
|
|
35
|
+
}
|
|
36
|
+
const document = this.registry.generate();
|
|
37
|
+
if (validate) {
|
|
38
|
+
this.validator.assertValid(document);
|
|
39
|
+
}
|
|
40
|
+
this.cachedDocument = document;
|
|
41
|
+
return document;
|
|
42
|
+
}
|
|
43
|
+
getDocument(validate = false) {
|
|
44
|
+
if (this.cachedDocument) {
|
|
45
|
+
return this.cachedDocument;
|
|
46
|
+
}
|
|
47
|
+
return this.generate(validate);
|
|
48
|
+
}
|
|
49
|
+
invalidate() {
|
|
50
|
+
this.cachedDocument = undefined;
|
|
51
|
+
this.scanner.clear();
|
|
52
|
+
this.registry.clear();
|
|
53
|
+
}
|
|
54
|
+
toJSON(validate = false) {
|
|
55
|
+
return toOpenAPIJSON(this.getDocument(validate));
|
|
56
|
+
}
|
|
57
|
+
toYAML(validate = false) {
|
|
58
|
+
return toOpenAPIYAML(this.getDocument(validate));
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=openApiHttpAdapter.core.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openApiHttpAdapter.core.js","sourceRoot":"","sources":["../../src/openApiHttp/openApiHttpAdapter.core.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,+CAA+C,CAAC;AACvF,OAAO,EAAE,mBAAmB,EAAE,MAAM,4CAA4C,CAAC;AACjF,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AACjF,OAAO,EAAE,oBAAoB,EAAE,MAAM,+CAA+C,CAAC;AACrF,OAAO,EACL,aAAa,EACb,aAAa,GACd,MAAM,mDAAmD,CAAC;AAE3D;;GAEG;AACH,MAAM,OAAO,cAAc;IACR,QAAQ,CAAsB;IAE9B,OAAO,CAA0B;IAEjC,SAAS,CAAuB;IAEzC,cAAc,CAAmB;IAEzC,YAAY,OAAO,GAAG,OAAO;QAC3B,IAAI,CAAC,QAAQ,GAAG,IAAI,mBAAmB,CAAC,OAAO,CAAC,CAAC;QACjD,IAAI,CAAC,OAAO,GAAG,IAAI,uBAAuB,EAAE,CAAC;QAC7C,IAAI,CAAC,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC9C,CAAC;IAED,IAAW,gBAAgB;QACzB,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,IAAW,eAAe;QACxB,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAEM,QAAQ,CAAC,KAuBf;QACC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAc,CAAC,CAAC;IACxC,CAAC;IAEM,SAAS,CAAC,IAAY,EAAE,MAAe;QAC5C,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,MAAe,CAAC,CAAC;IACtD,CAAC;IAEM,QAAQ,CAAC,QAAQ,GAAG,KAAK;QAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAEnC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACrC,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;QAE1C,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QACvC,CAAC;QAED,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC;QAC/B,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEM,WAAW,CAAC,QAAQ,GAAG,KAAK;QACjC,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC,cAAc,CAAC;QAC7B,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACjC,CAAC;IAEM,UAAU;QACf,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;QAChC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACrB,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;IAEM,MAAM,CAAC,QAAQ,GAAG,KAAK;QAC5B,OAAO,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC;IACnD,CAAC;IAEM,MAAM,CAAC,QAAQ,GAAG,KAAK;QAC5B,OAAO,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC;IACnD,CAAC;CACF"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @zudojs/openapi/openApiRegistry
|
|
3
|
+
*
|
|
4
|
+
* OpenAPI registry for collecting routes, schemas, and components.
|
|
5
|
+
*/
|
|
6
|
+
export type { OpenAPIRegistry, OpenAPIRoute, OpenAPIComponentRegistration, } from "./openApiRegistry.type.js";
|
|
7
|
+
export { OpenAPIRegistryImpl } from "./openApiRegistry.core.js";
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/openApiRegistry/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,YAAY,EACV,eAAe,EACf,YAAY,EACZ,4BAA4B,GAC7B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/openApiRegistry/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { OpenAPIDocument, OpenAPIParameter, OpenAPIRequestBody, OpenAPISchema, OpenAPISecurityScheme, OpenAPITag, OpenAPIReference } from "../openApiTypes/openApiTypes.core.js";
|
|
2
|
+
import type { OpenAPIRoute, OpenAPIRegistry } from "./openApiRegistry.type.js";
|
|
3
|
+
/** Default OpenAPI registry implementation. */
|
|
4
|
+
export declare class OpenAPIRegistryImpl implements OpenAPIRegistry {
|
|
5
|
+
readonly version: string;
|
|
6
|
+
private readonly routes;
|
|
7
|
+
private readonly schemas;
|
|
8
|
+
private readonly responses;
|
|
9
|
+
private readonly parameters;
|
|
10
|
+
private readonly requestBodies;
|
|
11
|
+
private readonly headers;
|
|
12
|
+
private readonly examples;
|
|
13
|
+
private readonly securitySchemes;
|
|
14
|
+
private readonly tags;
|
|
15
|
+
private readonly links;
|
|
16
|
+
private readonly callbacks;
|
|
17
|
+
constructor(version?: string);
|
|
18
|
+
registerRoute(route: OpenAPIRoute): void;
|
|
19
|
+
registerSchema(name: string, schema: OpenAPISchema): void;
|
|
20
|
+
registerResponse(name: string, response: unknown): void;
|
|
21
|
+
registerParameter(name: string, parameter: OpenAPIParameter): void;
|
|
22
|
+
registerRequestBody(name: string, body: OpenAPIRequestBody): void;
|
|
23
|
+
registerHeader(name: string, header: unknown): void;
|
|
24
|
+
registerExample(name: string, example: unknown): void;
|
|
25
|
+
registerSecurityScheme(name: string, scheme: OpenAPISecurityScheme): void;
|
|
26
|
+
registerTag(tag: OpenAPITag): void;
|
|
27
|
+
ref(section: "schemas" | "responses" | "parameters" | "requestBodies" | "headers" | "examples" | "securitySchemes" | "links" | "callbacks", name: string): OpenAPIReference;
|
|
28
|
+
generate(): OpenAPIDocument;
|
|
29
|
+
clear(): void;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=openApiRegistry.core.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openApiRegistry.core.d.ts","sourceRoot":"","sources":["../../src/openApiRegistry/openApiRegistry.core.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EAGf,gBAAgB,EAChB,kBAAkB,EAClB,aAAa,EACb,qBAAqB,EACrB,UAAU,EACV,gBAAgB,EAEjB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAY/E,+CAA+C;AAC/C,qBAAa,mBAAoB,YAAW,eAAe;IACzD,SAAgB,OAAO,EAAE,MAAM,CAAC;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmC;IAC1D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoC;IAC5D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA8B;IACxD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAuC;IAClE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAyC;IACvE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA8B;IACtD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA8B;IACvD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA4C;IAC5E,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAiC;IACtD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA8B;IACpD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA8B;IAExD,YAAY,OAAO,GAAE,MAAgC,EAEpD;IAEM,aAAa,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAc9C;IAEM,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI,CAI/D;IAEM,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI,CAI7D;IAEM,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,gBAAgB,GAAG,IAAI,CAIxE;IAEM,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,GAAG,IAAI,CAIvE;IAEM,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI,CAIzD;IAEM,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAI3D;IAEM,sBAAsB,CAC3B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,qBAAqB,GAC5B,IAAI,CAIN;IAEM,WAAW,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI,CAGxC;IAEM,GAAG,CACR,OAAO,EACH,SAAS,GACT,WAAW,GACX,YAAY,GACZ,eAAe,GACf,SAAS,GACT,UAAU,GACV,iBAAiB,GACjB,OAAO,GACP,WAAW,EACf,IAAI,EAAE,MAAM,GACX,gBAAgB,CAElB;IAEM,QAAQ,IAAI,eAAe,CAiEjC;IAEM,KAAK,IAAI,IAAI,CAenB;CACF"}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
import { COMPONENT_REF_PREFIX, DEFAULT_OPENAPI_VERSION, } from "../openApiConstants/openApiConstants.core.js";
|
|
2
|
+
import { OpenAPIComponentConflictError, OpenAPIDocumentError, OpenAPIOperationError, OpenAPIVersionError, } from "../openApiErrors/openApiError.core.js";
|
|
3
|
+
/** Default OpenAPI registry implementation. */
|
|
4
|
+
export class OpenAPIRegistryImpl {
|
|
5
|
+
version;
|
|
6
|
+
routes = new Map();
|
|
7
|
+
schemas = new Map();
|
|
8
|
+
responses = new Map();
|
|
9
|
+
parameters = new Map();
|
|
10
|
+
requestBodies = new Map();
|
|
11
|
+
headers = new Map();
|
|
12
|
+
examples = new Map();
|
|
13
|
+
securitySchemes = new Map();
|
|
14
|
+
tags = new Map();
|
|
15
|
+
links = new Map();
|
|
16
|
+
callbacks = new Map();
|
|
17
|
+
constructor(version = DEFAULT_OPENAPI_VERSION) {
|
|
18
|
+
this.version = version;
|
|
19
|
+
}
|
|
20
|
+
registerRoute(route) {
|
|
21
|
+
const key = `${route.method}:${route.path}`;
|
|
22
|
+
const existing = this.routes.get(key);
|
|
23
|
+
if (existing)
|
|
24
|
+
throw new OpenAPIOperationError(`Duplicate operation for ${route.method.toUpperCase()} ${route.path}: ${existing.operation.operationId ?? "unknown"}.`);
|
|
25
|
+
this.routes.set(key, {
|
|
26
|
+
...route,
|
|
27
|
+
operation: Object.freeze({
|
|
28
|
+
...route.operation,
|
|
29
|
+
responses: Object.freeze({ ...route.operation.responses }),
|
|
30
|
+
}),
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
registerSchema(name, schema) {
|
|
34
|
+
if (this.schemas.has(name))
|
|
35
|
+
throw new OpenAPIComponentConflictError(`schemas/${name}`);
|
|
36
|
+
this.schemas.set(name, Object.freeze({ ...schema }));
|
|
37
|
+
}
|
|
38
|
+
registerResponse(name, response) {
|
|
39
|
+
if (this.responses.has(name))
|
|
40
|
+
throw new OpenAPIComponentConflictError(`responses/${name}`);
|
|
41
|
+
this.responses.set(name, Object.freeze({ ...response }));
|
|
42
|
+
}
|
|
43
|
+
registerParameter(name, parameter) {
|
|
44
|
+
if (this.parameters.has(name))
|
|
45
|
+
throw new OpenAPIComponentConflictError(`parameters/${name}`);
|
|
46
|
+
this.parameters.set(name, Object.freeze({ ...parameter }));
|
|
47
|
+
}
|
|
48
|
+
registerRequestBody(name, body) {
|
|
49
|
+
if (this.requestBodies.has(name))
|
|
50
|
+
throw new OpenAPIComponentConflictError(`requestBodies/${name}`);
|
|
51
|
+
this.requestBodies.set(name, Object.freeze({ ...body }));
|
|
52
|
+
}
|
|
53
|
+
registerHeader(name, header) {
|
|
54
|
+
if (this.headers.has(name))
|
|
55
|
+
throw new OpenAPIComponentConflictError(`headers/${name}`);
|
|
56
|
+
this.headers.set(name, Object.freeze({ ...header }));
|
|
57
|
+
}
|
|
58
|
+
registerExample(name, example) {
|
|
59
|
+
if (this.examples.has(name))
|
|
60
|
+
throw new OpenAPIComponentConflictError(`examples/${name}`);
|
|
61
|
+
this.examples.set(name, Object.freeze({ ...example }));
|
|
62
|
+
}
|
|
63
|
+
registerSecurityScheme(name, scheme) {
|
|
64
|
+
if (this.securitySchemes.has(name))
|
|
65
|
+
throw new OpenAPIComponentConflictError(`securitySchemes/${name}`);
|
|
66
|
+
this.securitySchemes.set(name, Object.freeze({ ...scheme }));
|
|
67
|
+
}
|
|
68
|
+
registerTag(tag) {
|
|
69
|
+
if (!this.tags.has(tag.name))
|
|
70
|
+
this.tags.set(tag.name, Object.freeze({ ...tag }));
|
|
71
|
+
}
|
|
72
|
+
ref(section, name) {
|
|
73
|
+
return { $ref: `${COMPONENT_REF_PREFIX}/${section}/${name}` };
|
|
74
|
+
}
|
|
75
|
+
generate() {
|
|
76
|
+
if (!["3.0.0", "3.0.1", "3.0.2", "3.0.3", "3.1.0", "3.1.1"].includes(this.version))
|
|
77
|
+
throw new OpenAPIVersionError(this.version);
|
|
78
|
+
const paths = {};
|
|
79
|
+
for (const [, route] of this.routes) {
|
|
80
|
+
const operation = Object.freeze({
|
|
81
|
+
...route.operation,
|
|
82
|
+
responses: Object.freeze({ ...route.operation.responses }),
|
|
83
|
+
});
|
|
84
|
+
const existing = paths[route.path] ?? {};
|
|
85
|
+
paths[route.path] = Object.freeze({
|
|
86
|
+
...existing,
|
|
87
|
+
...(route.method === "get" ? { get: operation } : {}),
|
|
88
|
+
...(route.method === "put" ? { put: operation } : {}),
|
|
89
|
+
...(route.method === "post" ? { post: operation } : {}),
|
|
90
|
+
...(route.method === "delete" ? { delete: operation } : {}),
|
|
91
|
+
...(route.method === "options" ? { options: operation } : {}),
|
|
92
|
+
...(route.method === "head" ? { head: operation } : {}),
|
|
93
|
+
...(route.method === "patch" ? { patch: operation } : {}),
|
|
94
|
+
...(route.method === "trace" ? { trace: operation } : {}),
|
|
95
|
+
...(route.operation.parameters?.length
|
|
96
|
+
? { parameters: Object.freeze([...route.operation.parameters]) }
|
|
97
|
+
: {}),
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
const components = {};
|
|
101
|
+
const componentMaps = [
|
|
102
|
+
["schemas", this.schemas],
|
|
103
|
+
["responses", this.responses],
|
|
104
|
+
["parameters", this.parameters],
|
|
105
|
+
["requestBodies", this.requestBodies],
|
|
106
|
+
["headers", this.headers],
|
|
107
|
+
["examples", this.examples],
|
|
108
|
+
["securitySchemes", this.securitySchemes],
|
|
109
|
+
["links", this.links],
|
|
110
|
+
["callbacks", this.callbacks],
|
|
111
|
+
];
|
|
112
|
+
for (const [key, map] of componentMaps) {
|
|
113
|
+
if (map.size > 0)
|
|
114
|
+
components[key] = Object.freeze(Object.fromEntries(map));
|
|
115
|
+
}
|
|
116
|
+
try {
|
|
117
|
+
return Object.freeze({
|
|
118
|
+
openapi: this.version,
|
|
119
|
+
info: { title: "Zudojs API", version: "1.0.0" },
|
|
120
|
+
paths: Object.freeze(paths),
|
|
121
|
+
...(Object.keys(components).length > 0
|
|
122
|
+
? { components: Object.freeze(components) }
|
|
123
|
+
: {}),
|
|
124
|
+
...(this.tags.size > 0
|
|
125
|
+
? { tags: Object.freeze(Array.from(this.tags.values())) }
|
|
126
|
+
: {}),
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
catch (error) {
|
|
130
|
+
throw new OpenAPIDocumentError(`Failed to generate OpenAPI document: ${error.message}`);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
clear() {
|
|
134
|
+
for (const map of [
|
|
135
|
+
this.routes,
|
|
136
|
+
this.schemas,
|
|
137
|
+
this.responses,
|
|
138
|
+
this.parameters,
|
|
139
|
+
this.requestBodies,
|
|
140
|
+
this.headers,
|
|
141
|
+
this.examples,
|
|
142
|
+
this.securitySchemes,
|
|
143
|
+
this.tags,
|
|
144
|
+
this.links,
|
|
145
|
+
this.callbacks,
|
|
146
|
+
])
|
|
147
|
+
map.clear();
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
//# sourceMappingURL=openApiRegistry.core.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openApiRegistry.core.js","sourceRoot":"","sources":["../../src/openApiRegistry/openApiRegistry.core.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { OpenAPIDocument } from "../openApiTypes/openApiTypes.core.js";
|
|
2
|
+
import type { OpenAPIOperation } from "../openApiTypes/openApiTypes.core.js";
|
|
3
|
+
import type { OpenAPIParameter } from "../openApiTypes/openApiTypes.core.js";
|
|
4
|
+
import type { OpenAPIRequestBody } from "../openApiTypes/openApiTypes.core.js";
|
|
5
|
+
import type { OpenAPISchema } from "../openApiTypes/openApiTypes.core.js";
|
|
6
|
+
import type { OpenAPISecurityScheme } from "../openApiTypes/openApiTypes.core.js";
|
|
7
|
+
import type { OpenAPITag } from "../openApiTypes/openApiTypes.core.js";
|
|
8
|
+
import type { OpenAPIReference } from "../openApiTypes/openApiTypes.core.js";
|
|
9
|
+
/**
|
|
10
|
+
* A registered route in the OpenAPI registry.
|
|
11
|
+
*/
|
|
12
|
+
export interface OpenAPIRoute {
|
|
13
|
+
readonly method: "get" | "put" | "post" | "delete" | "options" | "head" | "patch" | "trace";
|
|
14
|
+
readonly path: string;
|
|
15
|
+
readonly operation: OpenAPIOperation;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Component registration entry.
|
|
19
|
+
*/
|
|
20
|
+
export interface OpenAPIComponentRegistration<T> {
|
|
21
|
+
readonly name: string;
|
|
22
|
+
readonly value: T;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* OpenAPI registry for collecting routes, schemas, and components.
|
|
26
|
+
*/
|
|
27
|
+
export interface OpenAPIRegistry {
|
|
28
|
+
readonly version: string;
|
|
29
|
+
registerRoute(route: OpenAPIRoute): void;
|
|
30
|
+
registerSchema(name: string, schema: OpenAPISchema): void;
|
|
31
|
+
registerResponse(name: string, response: unknown): void;
|
|
32
|
+
registerParameter(name: string, parameter: OpenAPIParameter): void;
|
|
33
|
+
registerRequestBody(name: string, body: OpenAPIRequestBody): void;
|
|
34
|
+
registerHeader(name: string, header: unknown): void;
|
|
35
|
+
registerExample(name: string, example: unknown): void;
|
|
36
|
+
registerSecurityScheme(name: string, scheme: OpenAPISecurityScheme): void;
|
|
37
|
+
registerTag(tag: OpenAPITag): void;
|
|
38
|
+
ref(section: "schemas" | "responses" | "parameters" | "requestBodies" | "headers" | "examples" | "securitySchemes" | "links" | "callbacks", name: string): OpenAPIReference;
|
|
39
|
+
generate(): OpenAPIDocument;
|
|
40
|
+
clear(): void;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=openApiRegistry.type.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openApiRegistry.type.d.ts","sourceRoot":"","sources":["../../src/openApiRegistry/openApiRegistry.type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAE5E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC/E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAClF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAW7E;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,EACb,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;IAE7E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAC;CACtC;AAED;;GAEG;AACH,MAAM,WAAW,4BAA4B,CAAC,CAAC;IAC7C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAEzB,aAAa,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;IAEzC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI,CAAC;IAE1D,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAC;IAExD,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAEnE,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAElE,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;IAEpD,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IAEtD,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,qBAAqB,GAAG,IAAI,CAAC;IAE1E,WAAW,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI,CAAC;IAEnC,GAAG,CACD,OAAO,EACH,SAAS,GACT,WAAW,GACX,YAAY,GACZ,eAAe,GACf,SAAS,GACT,UAAU,GACV,iBAAiB,GACjB,OAAO,GACP,WAAW,EACf,IAAI,EAAE,MAAM,GACX,gBAAgB,CAAC;IAEpB,QAAQ,IAAI,eAAe,CAAC;IAE5B,KAAK,IAAI,IAAI,CAAC;CACf"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { COMPONENT_REF_PREFIX, DEFAULT_OPENAPI_VERSION, } from "../openApiConstants/openApiConstants.core.js";
|
|
2
|
+
import { OpenAPIComponentConflictError, OpenAPIDocumentError, OpenAPIOperationError, } from "../openApiErrors/openApiError.core.js";
|
|
3
|
+
//# sourceMappingURL=openApiRegistry.type.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openApiRegistry.type.js","sourceRoot":"","sources":["../../src/openApiRegistry/openApiRegistry.type.ts"],"names":[],"mappings":"AASA,OAAO,EACL,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,8CAA8C,CAAC;AACtD,OAAO,EACL,6BAA6B,EAC7B,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,uCAAuC,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @zudojs/openapi/openApiRouting
|
|
3
|
+
*
|
|
4
|
+
* Route metadata, conversion, and scanning for OpenAPI generation.
|
|
5
|
+
*/
|
|
6
|
+
export type { RouteMetadata, RouteOpenAPIMetadata, RouteParameterMetadata, RouteInfo, } from "./routeScanner.core.js";
|
|
7
|
+
export { toOpenAPIPath, convertRouteToOpenAPI, ZUDOLIB_TO_OPENAPI_METHODS, } from "./routeConverter.core.js";
|
|
8
|
+
export { OpenAPIRouteScannerImpl } from "./routeScanner.core.js";
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/openApiRouting/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,YAAY,EACV,aAAa,EACb,oBAAoB,EACpB,sBAAsB,EACtB,SAAS,GACV,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,0BAA0B,GAC3B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @zudojs/openapi/openApiRouting
|
|
3
|
+
*
|
|
4
|
+
* Route metadata, conversion, and scanning for OpenAPI generation.
|
|
5
|
+
*/
|
|
6
|
+
export { toOpenAPIPath, convertRouteToOpenAPI, ZUDOLIB_TO_OPENAPI_METHODS, } from "./routeConverter.core.js";
|
|
7
|
+
export { OpenAPIRouteScannerImpl } from "./routeScanner.core.js";
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/openApiRouting/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,0BAA0B,GAC3B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { OpenAPIOperation } from "../openApiTypes/openApiTypes.core.js";
|
|
2
|
+
import type { RouteMetadata } from "./routeMetadata.type.js";
|
|
3
|
+
/**
|
|
4
|
+
* Converts a Zudojs-style route path to an OpenAPI path template.
|
|
5
|
+
*
|
|
6
|
+
* Example:
|
|
7
|
+
* "/users/:id" -> "/users/{id}"
|
|
8
|
+
* "/users/:id?": throws (optional path params not supported in OpenAPI)
|
|
9
|
+
*/
|
|
10
|
+
export declare function toOpenAPIPath(path: string): string;
|
|
11
|
+
/**
|
|
12
|
+
* Maps Zudojs HTTP methods to OpenAPI methods.
|
|
13
|
+
*/
|
|
14
|
+
export declare const ZUDOLIB_TO_OPENAPI_METHODS: readonly ["get", "put", "post", "delete", "options", "head", "patch", "trace"];
|
|
15
|
+
/**
|
|
16
|
+
* Converts a route with metadata into an OpenAPI operation.
|
|
17
|
+
*/
|
|
18
|
+
export declare function convertRouteToOpenAPI(method: string, path: string, metadata?: RouteMetadata): {
|
|
19
|
+
method: string;
|
|
20
|
+
path: string;
|
|
21
|
+
operation: OpenAPIOperation;
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=routeConverter.core.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routeConverter.core.d.ts","sourceRoot":"","sources":["../../src/openApiRouting/routeConverter.core.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE7D;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAoBlD;AAED;;GAEG;AACH,eAAO,MAAM,0BAA0B,YACrC,KAAK,EACL,KAAK,EACL,MAAM,EACN,QAAQ,EACR,SAAS,EACT,MAAM,EACN,OAAO,EACP,OAAO,CACC,CAAC;AAEX;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,QAAQ,CAAC,EAAE,aAAa,GACvB;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,gBAAgB,CAAA;CAAE,CA6C/D"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Converts a Zudojs-style route path to an OpenAPI path template.
|
|
3
|
+
*
|
|
4
|
+
* Example:
|
|
5
|
+
* "/users/:id" -> "/users/{id}"
|
|
6
|
+
* "/users/:id?": throws (optional path params not supported in OpenAPI)
|
|
7
|
+
*/
|
|
8
|
+
export function toOpenAPIPath(path) {
|
|
9
|
+
if (path.includes(":")) {
|
|
10
|
+
const segments = path.split("/");
|
|
11
|
+
const openApiSegments = segments.map((segment) => {
|
|
12
|
+
if (segment.startsWith(":") && segment.endsWith("?")) {
|
|
13
|
+
throw new Error(`Optional path parameter "${segment}" is not supported in OpenAPI. ` +
|
|
14
|
+
`Use separate routes or a query parameter instead.`);
|
|
15
|
+
}
|
|
16
|
+
if (segment.startsWith(":")) {
|
|
17
|
+
return `{${segment.slice(1)}}`;
|
|
18
|
+
}
|
|
19
|
+
return segment;
|
|
20
|
+
});
|
|
21
|
+
return openApiSegments.join("/");
|
|
22
|
+
}
|
|
23
|
+
return path;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Maps Zudojs HTTP methods to OpenAPI methods.
|
|
27
|
+
*/
|
|
28
|
+
export const ZUDOLIB_TO_OPENAPI_METHODS = [
|
|
29
|
+
"get",
|
|
30
|
+
"put",
|
|
31
|
+
"post",
|
|
32
|
+
"delete",
|
|
33
|
+
"options",
|
|
34
|
+
"head",
|
|
35
|
+
"patch",
|
|
36
|
+
"trace",
|
|
37
|
+
];
|
|
38
|
+
/**
|
|
39
|
+
* Converts a route with metadata into an OpenAPI operation.
|
|
40
|
+
*/
|
|
41
|
+
export function convertRouteToOpenAPI(method, path, metadata) {
|
|
42
|
+
const openApiPath = toOpenAPIPath(path);
|
|
43
|
+
const openApiMetadata = metadata?.openapi;
|
|
44
|
+
const operation = {
|
|
45
|
+
responses: openApiMetadata?.responses
|
|
46
|
+
? {
|
|
47
|
+
"200": {
|
|
48
|
+
description: "OK",
|
|
49
|
+
...(openApiMetadata.responses["200"] ?? {}),
|
|
50
|
+
},
|
|
51
|
+
}
|
|
52
|
+
: { "200": { description: "OK" } },
|
|
53
|
+
...(openApiMetadata?.operationId
|
|
54
|
+
? { operationId: openApiMetadata.operationId }
|
|
55
|
+
: {}),
|
|
56
|
+
...(openApiMetadata?.summary ? { summary: openApiMetadata.summary } : {}),
|
|
57
|
+
...(openApiMetadata?.description
|
|
58
|
+
? { description: openApiMetadata.description }
|
|
59
|
+
: {}),
|
|
60
|
+
...(openApiMetadata?.tags?.length
|
|
61
|
+
? { tags: [...openApiMetadata.tags] }
|
|
62
|
+
: {}),
|
|
63
|
+
...(openApiMetadata?.deprecated !== undefined
|
|
64
|
+
? { deprecated: openApiMetadata.deprecated }
|
|
65
|
+
: {}),
|
|
66
|
+
...(openApiMetadata?.parameters?.length
|
|
67
|
+
? { parameters: [...openApiMetadata.parameters] }
|
|
68
|
+
: {}),
|
|
69
|
+
...(openApiMetadata?.requestBody
|
|
70
|
+
? { requestBody: openApiMetadata.requestBody }
|
|
71
|
+
: {}),
|
|
72
|
+
...(openApiMetadata?.security?.length
|
|
73
|
+
? { security: [...openApiMetadata.security] }
|
|
74
|
+
: {}),
|
|
75
|
+
...(openApiMetadata?.servers?.length
|
|
76
|
+
? { servers: [...openApiMetadata.servers] }
|
|
77
|
+
: {}),
|
|
78
|
+
};
|
|
79
|
+
return {
|
|
80
|
+
method,
|
|
81
|
+
path: openApiPath,
|
|
82
|
+
operation,
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=routeConverter.core.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routeConverter.core.js","sourceRoot":"","sources":["../../src/openApiRouting/routeConverter.core.ts"],"names":[],"mappings":"AAGA;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACjC,MAAM,eAAe,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;YAC/C,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACrD,MAAM,IAAI,KAAK,CACb,4BAA4B,OAAO,iCAAiC;oBAClE,mDAAmD,CACtD,CAAC;YACJ,CAAC;YACD,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC5B,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC;YACjC,CAAC;YACD,OAAO,OAAO,CAAC;QACjB,CAAC,CAAC,CAAC;QAEH,OAAO,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACnC,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,KAAK;IACL,KAAK;IACL,MAAM;IACN,QAAQ;IACR,SAAS;IACT,MAAM;IACN,OAAO;IACP,OAAO;CACC,CAAC;AAEX;;GAEG;AACH,MAAM,UAAU,qBAAqB,CACnC,MAAc,EACd,IAAY,EACZ,QAAwB;IAExB,MAAM,WAAW,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,eAAe,GAAG,QAAQ,EAAE,OAAO,CAAC;IAE1C,MAAM,SAAS,GAAqB;QAClC,SAAS,EAAE,eAAe,EAAE,SAAS;YACnC,CAAC,CAAC;gBACE,KAAK,EAAE;oBACL,WAAW,EAAE,IAAI;oBACjB,GAAG,CAAE,eAAe,CAAC,SAAS,CAAC,KAAK,CAAY,IAAI,EAAE,CAAC;iBACxD;aACF;YACH,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE;QACpC,GAAG,CAAC,eAAe,EAAE,WAAW;YAC9B,CAAC,CAAC,EAAE,WAAW,EAAE,eAAe,CAAC,WAAW,EAAE;YAC9C,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,eAAe,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzE,GAAG,CAAC,eAAe,EAAE,WAAW;YAC9B,CAAC,CAAC,EAAE,WAAW,EAAE,eAAe,CAAC,WAAW,EAAE;YAC9C,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,eAAe,EAAE,IAAI,EAAE,MAAM;YAC/B,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,eAAe,CAAC,IAAI,CAAC,EAAE;YACrC,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,eAAe,EAAE,UAAU,KAAK,SAAS;YAC3C,CAAC,CAAC,EAAE,UAAU,EAAE,eAAe,CAAC,UAAU,EAAE;YAC5C,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,eAAe,EAAE,UAAU,EAAE,MAAM;YACrC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,GAAG,eAAe,CAAC,UAAU,CAAC,EAAE;YACjD,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,eAAe,EAAE,WAAW;YAC9B,CAAC,CAAC,EAAE,WAAW,EAAE,eAAe,CAAC,WAAW,EAAE;YAC9C,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,eAAe,EAAE,QAAQ,EAAE,MAAM;YACnC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,eAAe,CAAC,QAAQ,CAAC,EAAE;YAC7C,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,eAAe,EAAE,OAAO,EAAE,MAAM;YAClC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,eAAe,CAAC,OAAO,CAAC,EAAE;YAC3C,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;IAEF,OAAO;QACL,MAAM;QACN,IAAI,EAAE,WAAW;QACjB,SAAS;KACV,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { OpenAPIRequestBody } from "../openApiTypes/openApiTypes.core.js";
|
|
2
|
+
/**
|
|
3
|
+
* Metadata attached to a route for OpenAPI generation.
|
|
4
|
+
*/
|
|
5
|
+
export interface RouteOpenAPIMetadata {
|
|
6
|
+
readonly operationId?: string;
|
|
7
|
+
readonly summary?: string;
|
|
8
|
+
readonly description?: string;
|
|
9
|
+
readonly tags?: readonly string[];
|
|
10
|
+
readonly deprecated?: boolean;
|
|
11
|
+
readonly parameters?: readonly RouteParameterMetadata[];
|
|
12
|
+
readonly requestBody?: OpenAPIRequestBody;
|
|
13
|
+
readonly responses?: Record<string, unknown>;
|
|
14
|
+
readonly security?: readonly Record<string, readonly string[]>[];
|
|
15
|
+
readonly servers?: readonly {
|
|
16
|
+
readonly url: string;
|
|
17
|
+
readonly description?: string;
|
|
18
|
+
}[];
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Parameter metadata for OpenAPI generation.
|
|
22
|
+
*/
|
|
23
|
+
export interface RouteParameterMetadata {
|
|
24
|
+
readonly name: string;
|
|
25
|
+
readonly in: "query" | "header" | "path" | "cookie";
|
|
26
|
+
readonly description?: string;
|
|
27
|
+
readonly required?: boolean;
|
|
28
|
+
readonly deprecated?: boolean;
|
|
29
|
+
readonly schema?: unknown;
|
|
30
|
+
readonly example?: unknown;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Route metadata container.
|
|
34
|
+
*/
|
|
35
|
+
export interface RouteMetadata {
|
|
36
|
+
readonly openapi?: RouteOpenAPIMetadata;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=routeMetadata.type.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routeMetadata.type.d.ts","sourceRoot":"","sources":["../../src/openApiRouting/routeMetadata.type.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAE/E;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAE9B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAE1B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAE9B,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAElC,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAE9B,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,sBAAsB,EAAE,CAAC;IAExD,QAAQ,CAAC,WAAW,CAAC,EAAE,kBAAkB,CAAC;IAE1C,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE7C,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,EAAE,CAAC;IAEjE,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS;QAC1B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;KAC/B,EAAE,CAAC;CACL;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,QAAQ,CAAC,EAAE,EAAE,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC;IAEpD,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAE9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAE5B,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAE9B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAE1B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,oBAAoB,CAAC;CACzC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routeMetadata.type.js","sourceRoot":"","sources":["../../src/openApiRouting/routeMetadata.type.ts"],"names":[],"mappings":""}
|