@techspokes/typescript-wsdl-client 0.13.0 → 0.14.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/dist/compiler/schemaCompiler.d.ts +32 -0
- package/dist/compiler/schemaCompiler.d.ts.map +1 -1
- package/dist/compiler/schemaCompiler.js +90 -3
- package/dist/gateway/generateGateway.d.ts.map +1 -1
- package/dist/gateway/generateGateway.js +4 -0
- package/dist/gateway/generators.d.ts +2 -0
- package/dist/gateway/generators.d.ts.map +1 -1
- package/dist/gateway/generators.js +35 -2
- package/dist/gateway/helpers.d.ts +5 -0
- package/dist/gateway/helpers.d.ts.map +1 -1
- package/dist/gateway/helpers.js +21 -0
- package/dist/openapi/generatePaths.d.ts.map +1 -1
- package/dist/openapi/generatePaths.js +14 -1
- package/dist/test/generators.d.ts.map +1 -1
- package/dist/test/generators.js +15 -1
- package/docs/architecture.md +2 -2
- package/docs/concepts.md +11 -1
- package/docs/generated-code.md +3 -0
- package/docs/testing.md +2 -1
- package/package.json +1 -1
|
@@ -92,6 +92,37 @@ export type CompiledAlias = {
|
|
|
92
92
|
jsdoc?: string;
|
|
93
93
|
doc?: string;
|
|
94
94
|
};
|
|
95
|
+
export type CompiledWsdlPartDoc = {
|
|
96
|
+
name?: string;
|
|
97
|
+
element?: QName;
|
|
98
|
+
type?: QName;
|
|
99
|
+
doc?: string;
|
|
100
|
+
};
|
|
101
|
+
export type CompiledWsdlMessageDoc = {
|
|
102
|
+
name: string;
|
|
103
|
+
doc?: string;
|
|
104
|
+
parts?: CompiledWsdlPartDoc[];
|
|
105
|
+
};
|
|
106
|
+
export type CompiledWsdlBindingDoc = {
|
|
107
|
+
name: string;
|
|
108
|
+
type?: QName;
|
|
109
|
+
doc?: string;
|
|
110
|
+
};
|
|
111
|
+
export type CompiledWsdlPortDoc = {
|
|
112
|
+
name: string;
|
|
113
|
+
binding?: QName;
|
|
114
|
+
doc?: string;
|
|
115
|
+
};
|
|
116
|
+
export type CompiledWsdlServiceDoc = {
|
|
117
|
+
name: string;
|
|
118
|
+
doc?: string;
|
|
119
|
+
ports?: CompiledWsdlPortDoc[];
|
|
120
|
+
};
|
|
121
|
+
export type CompiledWsdlDocs = {
|
|
122
|
+
bindings?: CompiledWsdlBindingDoc[];
|
|
123
|
+
messages?: CompiledWsdlMessageDoc[];
|
|
124
|
+
services?: CompiledWsdlServiceDoc[];
|
|
125
|
+
};
|
|
95
126
|
/**
|
|
96
127
|
* Complete compiled catalog with all types, aliases, operations and metadata
|
|
97
128
|
*
|
|
@@ -128,6 +159,7 @@ export type CompiledCatalog = {
|
|
|
128
159
|
wsdlTargetNS: string;
|
|
129
160
|
wsdlUri: string;
|
|
130
161
|
serviceName?: string;
|
|
162
|
+
wsdlDocs?: CompiledWsdlDocs;
|
|
131
163
|
};
|
|
132
164
|
/**
|
|
133
165
|
* Compile a WSDL catalog into an internal representation (CompiledCatalog).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemaCompiler.d.ts","sourceRoot":"","sources":["../../src/compiler/schemaCompiler.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"schemaCompiler.d.ts","sourceRoot":"","sources":["../../src/compiler/schemaCompiler.ts"],"names":[],"mappings":"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"}
|
|
@@ -684,6 +684,8 @@ export function compileCatalog(cat, options) {
|
|
|
684
684
|
const defs = cat.wsdlXml["wsdl:definitions"] || cat.wsdlXml["definitions"];
|
|
685
685
|
const tns = defs?.["@_targetNamespace"] || "";
|
|
686
686
|
const bindingDefs = normalizeArray(defs?.["wsdl:binding"] || defs?.["binding"]);
|
|
687
|
+
const msgDefs = normalizeArray(defs?.["wsdl:message"] || defs?.["message"]);
|
|
688
|
+
const serviceDefs = normalizeArray(defs?.["wsdl:service"] || defs?.["service"]);
|
|
687
689
|
const soapBinding = bindingDefs.find(b => Object.keys(b).some(k => k === "soap:binding" || k === "soap12:binding")) || bindingDefs[0];
|
|
688
690
|
if (!soapBinding) {
|
|
689
691
|
throw new WsdlCompilationError("No SOAP binding found in the WSDL document.", {
|
|
@@ -712,7 +714,6 @@ export function compileCatalog(cat, options) {
|
|
|
712
714
|
const action = soapOp?.["@_soapAction"] || soapOp?.["@_soapActionURI"] || soapOp?.["@_soapActionUrl"] || "";
|
|
713
715
|
bOps.set(name, action);
|
|
714
716
|
}
|
|
715
|
-
const msgDefs = normalizeArray(defs?.["wsdl:message"] || defs?.["message"]);
|
|
716
717
|
const findMessage = (qstr) => {
|
|
717
718
|
if (!qstr)
|
|
718
719
|
return undefined;
|
|
@@ -731,6 +732,85 @@ export function compileCatalog(cat, options) {
|
|
|
731
732
|
const q = resolveQName(el, tns, cat.prefixMap);
|
|
732
733
|
return { ns: q.ns, local: q.local };
|
|
733
734
|
};
|
|
735
|
+
const messageDocs = msgDefs
|
|
736
|
+
.map((msg) => {
|
|
737
|
+
const name = msg?.["@_name"];
|
|
738
|
+
if (!name)
|
|
739
|
+
return undefined;
|
|
740
|
+
const doc = extractDirectDocumentation(msg);
|
|
741
|
+
const parts = getChildrenWithLocalName(msg, "part")
|
|
742
|
+
.map((part) => {
|
|
743
|
+
const partName = part?.["@_name"];
|
|
744
|
+
const partElement = part?.["@_element"];
|
|
745
|
+
const partType = part?.["@_type"];
|
|
746
|
+
const partDoc = extractDirectDocumentation(part);
|
|
747
|
+
const element = partElement ? resolveQName(partElement, tns, cat.prefixMap) : undefined;
|
|
748
|
+
const type = partType ? resolveQName(partType, tns, cat.prefixMap) : undefined;
|
|
749
|
+
if (!partName && !element && !type && !partDoc)
|
|
750
|
+
return undefined;
|
|
751
|
+
return {
|
|
752
|
+
...(partName ? { name: partName } : {}),
|
|
753
|
+
...(element ? { element: { ns: element.ns, local: element.local } } : {}),
|
|
754
|
+
...(type ? { type: { ns: type.ns, local: type.local } } : {}),
|
|
755
|
+
...(partDoc ? { doc: partDoc } : {}),
|
|
756
|
+
};
|
|
757
|
+
})
|
|
758
|
+
.filter((x) => x != null)
|
|
759
|
+
.sort((a, b) => (a.name ?? "").localeCompare(b.name ?? ""));
|
|
760
|
+
return {
|
|
761
|
+
name,
|
|
762
|
+
...(doc ? { doc } : {}),
|
|
763
|
+
...(parts.length ? { parts } : {}),
|
|
764
|
+
};
|
|
765
|
+
})
|
|
766
|
+
.filter((x) => x != null)
|
|
767
|
+
.sort((a, b) => a.name.localeCompare(b.name));
|
|
768
|
+
const bindingDocs = bindingDefs
|
|
769
|
+
.map((binding) => {
|
|
770
|
+
const name = binding?.["@_name"];
|
|
771
|
+
if (!name)
|
|
772
|
+
return undefined;
|
|
773
|
+
const typeLabel = binding?.["@_type"];
|
|
774
|
+
const type = typeLabel ? resolveQName(typeLabel, tns, cat.prefixMap) : undefined;
|
|
775
|
+
const doc = extractDirectDocumentation(binding);
|
|
776
|
+
return {
|
|
777
|
+
name,
|
|
778
|
+
...(type ? { type: { ns: type.ns, local: type.local } } : {}),
|
|
779
|
+
...(doc ? { doc } : {}),
|
|
780
|
+
};
|
|
781
|
+
})
|
|
782
|
+
.filter((x) => x != null)
|
|
783
|
+
.sort((a, b) => a.name.localeCompare(b.name));
|
|
784
|
+
const serviceDocs = serviceDefs
|
|
785
|
+
.map((service) => {
|
|
786
|
+
const name = service?.["@_name"];
|
|
787
|
+
if (!name)
|
|
788
|
+
return undefined;
|
|
789
|
+
const doc = extractDirectDocumentation(service);
|
|
790
|
+
const ports = getChildrenWithLocalName(service, "port")
|
|
791
|
+
.map((port) => {
|
|
792
|
+
const portName = port?.["@_name"];
|
|
793
|
+
const bindingLabel = port?.["@_binding"];
|
|
794
|
+
const binding = bindingLabel ? resolveQName(bindingLabel, tns, cat.prefixMap) : undefined;
|
|
795
|
+
const portDoc = extractDirectDocumentation(port);
|
|
796
|
+
if (!portName)
|
|
797
|
+
return undefined;
|
|
798
|
+
return {
|
|
799
|
+
name: portName,
|
|
800
|
+
...(binding ? { binding: { ns: binding.ns, local: binding.local } } : {}),
|
|
801
|
+
...(portDoc ? { doc: portDoc } : {}),
|
|
802
|
+
};
|
|
803
|
+
})
|
|
804
|
+
.filter((x) => x != null)
|
|
805
|
+
.sort((a, b) => a.name.localeCompare(b.name));
|
|
806
|
+
return {
|
|
807
|
+
name,
|
|
808
|
+
...(doc ? { doc } : {}),
|
|
809
|
+
...(ports.length ? { ports } : {}),
|
|
810
|
+
};
|
|
811
|
+
})
|
|
812
|
+
.filter((x) => x != null)
|
|
813
|
+
.sort((a, b) => a.name.localeCompare(b.name));
|
|
734
814
|
// build operations list
|
|
735
815
|
const ops = (pOps
|
|
736
816
|
.map(po => {
|
|
@@ -761,7 +841,6 @@ export function compileCatalog(cat, options) {
|
|
|
761
841
|
// --- Service discovery (for client naming) ---
|
|
762
842
|
let serviceName;
|
|
763
843
|
const soapBindingName = soapBinding?.["@_name"];
|
|
764
|
-
const serviceDefs = normalizeArray(defs?.["wsdl:service"] || defs?.["service"]);
|
|
765
844
|
const serviceUsingBinding = serviceDefs.find(s => {
|
|
766
845
|
const ports = getChildrenWithLocalName(s, "port");
|
|
767
846
|
return ports.some(p => {
|
|
@@ -773,6 +852,13 @@ export function compileCatalog(cat, options) {
|
|
|
773
852
|
});
|
|
774
853
|
});
|
|
775
854
|
serviceName = serviceUsingBinding?.["@_name"] || serviceDefs[0]?.["@_name"];
|
|
855
|
+
const wsdlDocs = (bindingDocs.length || messageDocs.length || serviceDocs.length)
|
|
856
|
+
? {
|
|
857
|
+
...(bindingDocs.length ? { bindings: bindingDocs } : {}),
|
|
858
|
+
...(messageDocs.length ? { messages: messageDocs } : {}),
|
|
859
|
+
...(serviceDocs.length ? { services: serviceDocs } : {}),
|
|
860
|
+
}
|
|
861
|
+
: undefined;
|
|
776
862
|
return {
|
|
777
863
|
options: options,
|
|
778
864
|
types: typesList,
|
|
@@ -781,6 +867,7 @@ export function compileCatalog(cat, options) {
|
|
|
781
867
|
operations: ops,
|
|
782
868
|
wsdlTargetNS: defs?.["@_targetNamespace"] || "",
|
|
783
869
|
serviceName,
|
|
784
|
-
wsdlUri: cat.wsdlUri
|
|
870
|
+
wsdlUri: cat.wsdlUri,
|
|
871
|
+
...(wsdlDocs ? { wsdlDocs } : {}),
|
|
785
872
|
};
|
|
786
873
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateGateway.d.ts","sourceRoot":"","sources":["../../src/gateway/generateGateway.ts"],"names":[],"mappings":"AA6CA;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,WAAW,sBAAsB;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,GAAG,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,0BAA0B,CAAC,EAAE,MAAM,EAAE,CAAC;IACtC,OAAO,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC;IAE/B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"generateGateway.d.ts","sourceRoot":"","sources":["../../src/gateway/generateGateway.ts"],"names":[],"mappings":"AA6CA;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,WAAW,sBAAsB;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,GAAG,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,0BAA0B,CAAC,EAAE,MAAM,EAAE,CAAC;IACtC,OAAO,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC;IAE/B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6JjF"}
|
|
@@ -155,12 +155,16 @@ export async function generateGateway(opts) {
|
|
|
155
155
|
const operationId = opDef?.operationId || op.operationSlug;
|
|
156
156
|
// Resolve full operation metadata from catalog
|
|
157
157
|
const resolved = resolveOperationMeta(operationId, op.operationSlug, op.method, op.path, catalog?.operations);
|
|
158
|
+
const openApiSummary = typeof opDef?.summary === "string" ? opDef.summary : undefined;
|
|
159
|
+
const openApiDescription = typeof opDef?.description === "string" ? opDef.description : undefined;
|
|
158
160
|
return {
|
|
159
161
|
...op,
|
|
160
162
|
operationId: resolved.operationId,
|
|
161
163
|
clientMethodName: resolved.clientMethodName,
|
|
162
164
|
requestTypeName: resolved.requestTypeName,
|
|
163
165
|
responseTypeName: resolved.responseTypeName,
|
|
166
|
+
summary: openApiSummary ?? resolved.summary,
|
|
167
|
+
description: openApiDescription ?? resolved.description,
|
|
164
168
|
};
|
|
165
169
|
});
|
|
166
170
|
// Step 4: Emit schemas.ts module
|
|
@@ -36,6 +36,8 @@ export interface OperationMetadata {
|
|
|
36
36
|
clientMethodName?: string;
|
|
37
37
|
requestTypeName?: string;
|
|
38
38
|
responseTypeName?: string;
|
|
39
|
+
summary?: string;
|
|
40
|
+
description?: string;
|
|
39
41
|
/** When true, response schema is omitted from route registration to avoid fast-json-stringify stack overflow on deeply nested $ref graphs */
|
|
40
42
|
skipResponseSchema?: boolean;
|
|
41
43
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generators.d.ts","sourceRoot":"","sources":["../../src/gateway/generators.ts"],"names":[],"mappings":"AAcA,OAAO,EAAC,KAAK,UAAU,EAAE,KAAK,eAAe,EAAyE,MAAM,cAAc,CAAC;AAG3I;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC5B,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,GAClB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA6BxB;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,iBAAiB;IAChC,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,6IAA6I;IAC7I,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;
|
|
1
|
+
{"version":3,"file":"generators.d.ts","sourceRoot":"","sources":["../../src/gateway/generators.ts"],"names":[],"mappings":"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"}
|
|
@@ -56,6 +56,29 @@ export function emitModelSchemas(schemas, modelsDir, versionSlug, serviceSlug) {
|
|
|
56
56
|
}
|
|
57
57
|
return schemaIdByName;
|
|
58
58
|
}
|
|
59
|
+
function normalizeDocCommentText(value) {
|
|
60
|
+
const normalized = String(value ?? "")
|
|
61
|
+
.replace(/\r\n?/g, "\n")
|
|
62
|
+
.split("\n")
|
|
63
|
+
.map(line => line.trim())
|
|
64
|
+
.filter(Boolean)
|
|
65
|
+
.join(" ")
|
|
66
|
+
.replace(/\s+/g, " ")
|
|
67
|
+
.trim();
|
|
68
|
+
if (!normalized)
|
|
69
|
+
return undefined;
|
|
70
|
+
return normalized.replace(/\*\//g, "* /");
|
|
71
|
+
}
|
|
72
|
+
function buildOperationDocLines(op) {
|
|
73
|
+
const summary = normalizeDocCommentText(op.summary);
|
|
74
|
+
const description = normalizeDocCommentText(op.description);
|
|
75
|
+
let out = "";
|
|
76
|
+
if (summary)
|
|
77
|
+
out += ` * Summary: ${summary}\n`;
|
|
78
|
+
if (description)
|
|
79
|
+
out += ` * Description: ${description}\n`;
|
|
80
|
+
return out;
|
|
81
|
+
}
|
|
59
82
|
/**
|
|
60
83
|
* Emits Fastify-compatible operation schema files
|
|
61
84
|
*
|
|
@@ -197,6 +220,8 @@ export function emitOperationSchemas(doc, opsDir, versionSlug, serviceSlug, sche
|
|
|
197
220
|
operationSlug,
|
|
198
221
|
method: lowerMethod,
|
|
199
222
|
path: p,
|
|
223
|
+
summary: normalizeDocCommentText(typeof operation.summary === "string" ? operation.summary : undefined),
|
|
224
|
+
description: normalizeDocCommentText(typeof operation.description === "string" ? operation.description : undefined),
|
|
200
225
|
skipResponseSchema,
|
|
201
226
|
});
|
|
202
227
|
}
|
|
@@ -269,8 +294,15 @@ export function emitRouteFiles(outDir, routesDir, versionSlug, serviceSlug, oper
|
|
|
269
294
|
routesTs += `import { ${fnName} } from "./routes/${routeFileBase}${suffix}";\n`;
|
|
270
295
|
// Generate individual route file
|
|
271
296
|
// Note: op.path comes from OpenAPI and already includes any base path
|
|
297
|
+
const operationDocLines = buildOperationDocLines(op);
|
|
272
298
|
let routeTs = "";
|
|
273
|
-
routeTs +=
|
|
299
|
+
routeTs += `/**
|
|
300
|
+
* Route: ${op.method.toUpperCase()} ${op.path}
|
|
301
|
+
* Operation: ${op.operationId || op.operationSlug}
|
|
302
|
+
${operationDocLines} * Auto-generated - do not edit manually.
|
|
303
|
+
*/
|
|
304
|
+
import type { FastifyInstance } from "fastify";
|
|
305
|
+
`;
|
|
274
306
|
routeTs += `import schema from "../schemas/operations/${op.operationSlug}.json" with { type: "json" };\n\n`;
|
|
275
307
|
routeTs += `export async function ${fnName}(fastify: FastifyInstance) {\n`;
|
|
276
308
|
if (op.skipResponseSchema) {
|
|
@@ -780,10 +812,11 @@ export function emitRouteFilesWithHandlers(outDir, routesDir, versionSlug, servi
|
|
|
780
812
|
const schemaLine = op.skipResponseSchema
|
|
781
813
|
? " schema: routeSchema,"
|
|
782
814
|
: " schema,";
|
|
815
|
+
const operationDocLines = buildOperationDocLines(op);
|
|
783
816
|
let routeTs = `/**
|
|
784
817
|
* Route: ${op.method.toUpperCase()} ${op.path}
|
|
785
818
|
* Operation: ${op.operationId || op.operationSlug}
|
|
786
|
-
* Request Type: ${reqTypeName}
|
|
819
|
+
${operationDocLines} * Request Type: ${reqTypeName}
|
|
787
820
|
* Response Type: ${resTypeName} (wrapped in envelope)
|
|
788
821
|
* Auto-generated - do not edit manually.
|
|
789
822
|
*/
|
|
@@ -174,6 +174,8 @@ export interface ResolvedOperationMeta {
|
|
|
174
174
|
clientMethodName: string;
|
|
175
175
|
requestTypeName?: string;
|
|
176
176
|
responseTypeName?: string;
|
|
177
|
+
summary?: string;
|
|
178
|
+
description?: string;
|
|
177
179
|
}
|
|
178
180
|
/**
|
|
179
181
|
* Options for resolving client metadata
|
|
@@ -221,6 +223,9 @@ export declare function resolveOperationMeta(operationId: string, operationSlug:
|
|
|
221
223
|
name: string;
|
|
222
224
|
inputTypeName?: string;
|
|
223
225
|
outputTypeName?: string;
|
|
226
|
+
summary?: string;
|
|
227
|
+
description?: string;
|
|
228
|
+
doc?: string;
|
|
224
229
|
}>): ResolvedOperationMeta;
|
|
225
230
|
/**
|
|
226
231
|
* Measures the $ref graph complexity of a schema component.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/gateway/helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3B,UAAU,CAAC,EAAE;QACX,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC9B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KAClC,CAAC;CACH;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAI7C;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAErD;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,GAAG,EAAE,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,GAAG,CAqBxF;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,GAAG,EACX,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC/B,OAAO,GAAE,GAAG,CAAC,MAAM,CAAa,GAC/B,GAAG,CA4GL;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,GAAG,GAAG,MAAM,CAcxD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,GAAG,EAAE,GAAG,EAAE,eAAe,GAAG,GAAG,CAiB3E;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,YAAY,CAAC,EAAE,GAAG,CAAC;IACnB,WAAW,CAAC,EAAE,GAAG,CAAC;IAClB,aAAa,CAAC,EAAE,GAAG,CAAC;CACrB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,GAAG,EACb,SAAS,EAAE,GAAG,EACd,GAAG,EAAE,eAAe,EACpB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACrC,sBAAsB,CAmFxB;AAED;;;;GAIG;AAEH;;;;;;;;;;GAUG;AACH,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/gateway/helpers.ts"],"names":[],"mappings":"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"}
|
package/dist/gateway/helpers.js
CHANGED
|
@@ -418,6 +418,8 @@ export function resolveOperationMeta(operationId, operationSlug, method, path, c
|
|
|
418
418
|
// Use catalog type names if available, otherwise derive by convention
|
|
419
419
|
const requestTypeName = catalogOp?.inputTypeName ?? pascal(operationId);
|
|
420
420
|
const responseTypeName = catalogOp?.outputTypeName ?? pascal(operationId);
|
|
421
|
+
const description = normalizeOperationText(catalogOp?.description ?? catalogOp?.doc);
|
|
422
|
+
const summary = normalizeOperationText(catalogOp?.summary) ?? deriveSummaryFromText(description);
|
|
421
423
|
return {
|
|
422
424
|
operationId,
|
|
423
425
|
operationSlug,
|
|
@@ -426,8 +428,27 @@ export function resolveOperationMeta(operationId, operationSlug, method, path, c
|
|
|
426
428
|
clientMethodName: operationId, // Client methods use the original operation name
|
|
427
429
|
requestTypeName,
|
|
428
430
|
responseTypeName,
|
|
431
|
+
...(summary ? { summary } : {}),
|
|
432
|
+
...(description ? { description } : {}),
|
|
429
433
|
};
|
|
430
434
|
}
|
|
435
|
+
function normalizeOperationText(value) {
|
|
436
|
+
const normalized = String(value ?? "")
|
|
437
|
+
.replace(/\r\n?/g, "\n")
|
|
438
|
+
.split("\n")
|
|
439
|
+
.map(line => line.trim())
|
|
440
|
+
.filter(Boolean)
|
|
441
|
+
.join(" ")
|
|
442
|
+
.replace(/\s+/g, " ")
|
|
443
|
+
.trim();
|
|
444
|
+
return normalized || undefined;
|
|
445
|
+
}
|
|
446
|
+
function deriveSummaryFromText(value) {
|
|
447
|
+
if (!value)
|
|
448
|
+
return undefined;
|
|
449
|
+
const firstSentence = value.match(/^(.+?[.!?])(?:\s|$)/);
|
|
450
|
+
return firstSentence ? firstSentence[1].trim() : value;
|
|
451
|
+
}
|
|
431
452
|
/**
|
|
432
453
|
* Measures the $ref graph complexity of a schema component.
|
|
433
454
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generatePaths.d.ts","sourceRoot":"","sources":["../../src/openapi/generatePaths.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,+BAA+B,CAAC;AACnE,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,aAAa,CAAC;AAG3C;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,gBAAgB;IAC/B,CAAC,MAAM,EAAE,MAAM,GAAG;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,eAAe;IAE9B,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;CAC1B;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,SAAS,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,SAAS,CAAC,CAAC;IAC9C,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CAC9C;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,eAAe,EAAE,IAAI,EAAE,oBAAoB,
|
|
1
|
+
{"version":3,"file":"generatePaths.d.ts","sourceRoot":"","sources":["../../src/openapi/generatePaths.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,+BAA+B,CAAC;AACnE,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,aAAa,CAAC;AAG3C;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,gBAAgB;IAC/B,CAAC,MAAM,EAAE,MAAM,GAAG;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,eAAe;IAE9B,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;CAC1B;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,SAAS,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,SAAS,CAAC,CAAC;IAC9C,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CAC9C;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,eAAe,EAAE,IAAI,EAAE,oBAAoB,uBAkElF"}
|
|
@@ -40,8 +40,14 @@ export function generatePaths(compiled, opts) {
|
|
|
40
40
|
}
|
|
41
41
|
},
|
|
42
42
|
};
|
|
43
|
-
if (override.summary)
|
|
43
|
+
if (override.summary) {
|
|
44
44
|
operationObject.summary = override.summary;
|
|
45
|
+
}
|
|
46
|
+
else if (op.doc) {
|
|
47
|
+
const derivedSummary = deriveSummaryFromDoc(op.doc);
|
|
48
|
+
if (derivedSummary)
|
|
49
|
+
operationObject.summary = derivedSummary;
|
|
50
|
+
}
|
|
45
51
|
if (override.description) {
|
|
46
52
|
operationObject.description = override.description;
|
|
47
53
|
}
|
|
@@ -61,6 +67,13 @@ export function generatePaths(compiled, opts) {
|
|
|
61
67
|
}
|
|
62
68
|
return paths;
|
|
63
69
|
}
|
|
70
|
+
function deriveSummaryFromDoc(doc) {
|
|
71
|
+
const normalized = String(doc ?? "").replace(/\s+/g, " ").trim();
|
|
72
|
+
if (!normalized)
|
|
73
|
+
return undefined;
|
|
74
|
+
const firstSentence = normalized.match(/^(.+?[.!?])(?:\s|$)/);
|
|
75
|
+
return firstSentence ? firstSentence[1].trim() : normalized;
|
|
76
|
+
}
|
|
64
77
|
function normalizeBase(base) {
|
|
65
78
|
if (!base.startsWith("/"))
|
|
66
79
|
base = "/" + base;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generators.d.ts","sourceRoot":"","sources":["../../src/test/generators.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAC,UAAU,EAAE,qBAAqB,EAAC,MAAM,uBAAuB,CAAC;AAC7E,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,eAAe,CAAC;AAGnD,+EAA+E;AAC/E,MAAM,MAAM,iBAAiB,GAAG,GAAG,CAAC,MAAM,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"generators.d.ts","sourceRoot":"","sources":["../../src/test/generators.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAC,UAAU,EAAE,qBAAqB,EAAC,MAAM,uBAAuB,CAAC;AAC7E,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,eAAe,CAAC;AAGnD,+EAA+E;AAC/E,MAAM,MAAM,iBAAiB,GAAG,GAAG,CAAC,MAAM,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC,CAAC;AAerH;;;;;GAKG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAkBzC;AAED;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,IAAI,GAAG,IAAI,GAAG,MAAM,EACjC,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,qBAAqB,EAAE,EACnC,KAAK,EAAE,iBAAiB,GACvB,MAAM,CA+CR;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,IAAI,GAAG,IAAI,GAAG,MAAM,EACjC,UAAU,EAAE,UAAU,GACrB,MAAM,CAsCR;AAED;;;;;;;GAOG;AAEH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,IAAI,GAAG,IAAI,GAAG,MAAM,EACjC,UAAU,EAAE,qBAAqB,EAAE,EACnC,KAAK,EAAE,iBAAiB,GACvB,MAAM,CA8CR;AAED;;;;;;;GAOG;AAEH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,IAAI,GAAG,IAAI,GAAG,MAAM,EACjC,UAAU,EAAE,qBAAqB,EAAE,EACnC,KAAK,EAAE,iBAAiB,GACvB,MAAM,CAiIR;AAED;;GAEG;AAEH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,IAAI,GAAG,IAAI,GAAG,MAAM,EACjC,UAAU,EAAE,qBAAqB,EAAE,EACnC,KAAK,EAAE,iBAAiB,GACvB,MAAM,CAuER;AAED;;GAEG;AAEH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,IAAI,GAAG,IAAI,GAAG,MAAM,EACjC,UAAU,EAAE,qBAAqB,EAAE,GAClC,MAAM,CAoCR;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,IAAI,GAAG,IAAI,GAAG,MAAM,GAChC,MAAM,CAgFR;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,IAAI,GAAG,IAAI,GAAG,MAAM,GAChC,MAAM,CAgDR;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,IAAI,GAAG,IAAI,GAAG,MAAM,EACjC,OAAO,EAAE,eAAe,GACvB,MAAM,GAAG,IAAI,CAkEf"}
|
package/dist/test/generators.js
CHANGED
|
@@ -10,6 +10,18 @@
|
|
|
10
10
|
*/
|
|
11
11
|
import { computeRelativeImport } from "../util/imports.js";
|
|
12
12
|
import { detectArrayWrappers, detectChildrenTypes } from "../util/catalogMeta.js";
|
|
13
|
+
function formatOperationHint(summary, description) {
|
|
14
|
+
const source = summary || description;
|
|
15
|
+
const normalized = String(source ?? "")
|
|
16
|
+
.replace(/\r\n?/g, "\n")
|
|
17
|
+
.split("\n")
|
|
18
|
+
.map(line => line.trim())
|
|
19
|
+
.filter(Boolean)
|
|
20
|
+
.join(" ")
|
|
21
|
+
.replace(/\s+/g, " ")
|
|
22
|
+
.trim();
|
|
23
|
+
return normalized || undefined;
|
|
24
|
+
}
|
|
13
25
|
/**
|
|
14
26
|
* Emits vitest.config.ts content.
|
|
15
27
|
*
|
|
@@ -152,7 +164,9 @@ export function emitRoutesTest(testDir, importsMode, operations, mocks) {
|
|
|
152
164
|
const testCases = sortedOps.map((op) => {
|
|
153
165
|
const mockData = mocks.get(op.operationId);
|
|
154
166
|
const requestPayload = JSON.stringify(mockData?.request ?? {}, null, 4).replace(/\n/g, "\n ");
|
|
155
|
-
|
|
167
|
+
const hint = formatOperationHint(op.summary, op.description);
|
|
168
|
+
const hintComment = hint ? ` // ${hint}\n` : "";
|
|
169
|
+
return `${hintComment} it("${op.method.toUpperCase()} ${op.path} returns SUCCESS envelope", async () => {
|
|
156
170
|
const app = await createTestApp();
|
|
157
171
|
try {
|
|
158
172
|
const res = await app.inject({
|
package/docs/architecture.md
CHANGED
|
@@ -83,7 +83,7 @@ CompiledCatalog {
|
|
|
83
83
|
}
|
|
84
84
|
```
|
|
85
85
|
|
|
86
|
-
`CompiledType`, type aliases, and operations may include optional `doc` fields populated from WSDL/XSD documentation nodes. Client emitters consume
|
|
86
|
+
`CompiledType`, type aliases, and operations may include optional `doc` fields populated from WSDL/XSD documentation nodes. The catalog also carries optional `wsdlDocs` arrays for WSDL bindings, messages, parts, services, and ports. Client emitters consume operation and type docs to generate comments in `types.ts`, `operations.ts`, and `client.ts`. OpenAPI emitters consume the same fields for schema/property descriptions and operation summary and description values.
|
|
87
87
|
|
|
88
88
|
Data flow through the pipeline:
|
|
89
89
|
|
|
@@ -91,7 +91,7 @@ Data flow through the pipeline:
|
|
|
91
91
|
2. generateCatalog serializes it to JSON
|
|
92
92
|
3. Client generators read types[] for TypeScript emission
|
|
93
93
|
4. OpenAPI generator reads types[] and operations[] for spec generation
|
|
94
|
-
5. Gateway generator reads the OpenAPI spec
|
|
94
|
+
5. Gateway generator reads the OpenAPI spec, then enriches operation metadata from catalog operation docs when available
|
|
95
95
|
|
|
96
96
|
## Extension Points
|
|
97
97
|
|
package/docs/concepts.md
CHANGED
|
@@ -67,7 +67,17 @@ cacheable, and reused across client, OpenAPI, and gateway generation.
|
|
|
67
67
|
Inspect types, operations, and metadata as plain JSON. The catalog is
|
|
68
68
|
automatically placed alongside generated output.
|
|
69
69
|
|
|
70
|
-
The catalog stores optional human-readable `doc` fields extracted from WSDL/XSD documentation nodes. These fields are additive metadata used by TypeScript and
|
|
70
|
+
The catalog stores optional human-readable `doc` fields extracted from WSDL/XSD documentation nodes. These fields are additive metadata used by TypeScript, OpenAPI, gateway, and generated-test emitters and do not change runtime behavior.
|
|
71
|
+
|
|
72
|
+
The catalog also stores optional `wsdlDocs` metadata for selected WSDL nodes:
|
|
73
|
+
|
|
74
|
+
- `bindings[]`
|
|
75
|
+
- `messages[]`
|
|
76
|
+
- `messages[].parts[]`
|
|
77
|
+
- `services[]`
|
|
78
|
+
- `services[].ports[]`
|
|
79
|
+
|
|
80
|
+
OpenAPI uses operation docs for both `description` and default `summary` values. `ops.json` keeps precedence when `summary` or `description` is explicitly provided.
|
|
71
81
|
|
|
72
82
|
### Catalog Locations by Command
|
|
73
83
|
|
package/docs/generated-code.md
CHANGED
|
@@ -98,7 +98,9 @@ The existing `@xsd` metadata annotations are preserved for runtime marshaling an
|
|
|
98
98
|
OpenAPI generation also propagates these docs into `description` fields:
|
|
99
99
|
|
|
100
100
|
- Operation descriptions come from `wsdl:documentation` by default
|
|
101
|
+
- Operation summaries default to the first sentence of `wsdl:documentation`
|
|
101
102
|
- `--openapi-ops-file` `description` overrides operation documentation when provided
|
|
103
|
+
- `--openapi-ops-file` `summary` overrides the default summary when provided
|
|
102
104
|
- Schema and property descriptions come from `xs:annotation/xs:documentation`
|
|
103
105
|
|
|
104
106
|
## Gateway Route Handlers
|
|
@@ -130,6 +132,7 @@ Key features of the generated handlers:
|
|
|
130
132
|
- `Body: T` generic: Fastify infers `request.body` type from the route generic, enabling IDE autocomplete and compile-time checks
|
|
131
133
|
- JSON Schema validation: the `schema` import provides Fastify with request/response validation at runtime, before the handler runs
|
|
132
134
|
- Envelope wrapping: `buildSuccessEnvelope()` wraps the raw SOAP response in the standard `{ status, message, data, error }` envelope
|
|
135
|
+
- Route file header comments include propagated operation summary and description when present
|
|
133
136
|
|
|
134
137
|
See [Gateway Guide](gateway-guide.md) for the full architecture and [CLI Reference](cli-reference.md) for generation flags.
|
|
135
138
|
|
package/docs/testing.md
CHANGED
|
@@ -40,7 +40,7 @@ Unit tests cover pure functions with no I/O or side effects:
|
|
|
40
40
|
- `errors.test.ts`: `WsdlCompilationError` construction and `toUserMessage()` formatting
|
|
41
41
|
- `schema-alignment.test.ts`: Cross-validates TypeScript types, JSON schemas, and catalog.json for consistency
|
|
42
42
|
- `mock-data.test.ts`: `generateMockPrimitive()`, `generateMockData()`, `generateAllOperationMocks()` with cycle detection and array wrapping
|
|
43
|
-
- `wsdl-documentation.test.ts`: verifies doc flow to catalog
|
|
43
|
+
- `wsdl-documentation.test.ts`: verifies doc flow to catalog `wsdlDocs`, generated TS comments, OpenAPI summary and description precedence, and gateway route comment propagation
|
|
44
44
|
|
|
45
45
|
### Writing Unit Tests
|
|
46
46
|
|
|
@@ -79,6 +79,7 @@ Always review the diff before committing updated snapshots.
|
|
|
79
79
|
- OpenAPI: `openapi.json`
|
|
80
80
|
- Gateway core: `plugin.ts`, `routes.ts`, `schemas.ts`, `runtime.ts`, `_typecheck.ts`
|
|
81
81
|
- Gateway routes: one handler per WSDL operation
|
|
82
|
+
- Gateway route comments: propagated summary and description metadata
|
|
82
83
|
- Gateway schemas: all model and operation JSON schema files
|
|
83
84
|
- File inventory: complete listing of generated files
|
|
84
85
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@techspokes/typescript-wsdl-client",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.14.0",
|
|
4
4
|
"description": "Generate type-safe TypeScript SOAP clients, OpenAPI 3.1 specs, and production-ready Fastify REST gateways from WSDL/XSD definitions.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"wsdl",
|