Skip to content

Commit 70cacd2

Browse files
authored
Merge pull request #82 from svandriel/feature/eslint-fixes
ESlint fixes plus other minor improvements
2 parents d4efe27 + c530e61 commit 70cacd2

File tree

2 files changed

+87
-94
lines changed

2 files changed

+87
-94
lines changed

src/generator.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -280,7 +280,7 @@ export async function generate(
280280
namedImports: [
281281
{ name: "Client", alias: "SoapClient" },
282282
{ name: "createClientAsync", alias: "soapCreateClientAsync" },
283-
{ name: "IExOptions", alias: "ISoapExOptions" }
283+
{ name: "IExOptions", alias: "ISoapExOptions" },
284284
],
285285
});
286286
clientFile.addImportDeclarations(clientImports);

src/parser.ts

Lines changed: 86 additions & 93 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,14 @@ interface ParserOptions {
1111
modelNamePreffix: string;
1212
modelNameSuffix: string;
1313
maxRecursiveDefinitionName: number;
14-
caseInsensitiveNames: boolean
14+
caseInsensitiveNames: boolean;
1515
}
1616

1717
const defaultOptions: ParserOptions = {
1818
modelNamePreffix: "",
1919
modelNameSuffix: "",
2020
maxRecursiveDefinitionName: 64,
21-
caseInsensitiveNames: false
21+
caseInsensitiveNames: false,
2222
};
2323

2424
type VisitedDefinition = {
@@ -45,7 +45,7 @@ const NODE_SOAP_PARSED_TYPES: { [type: string]: string } = {
4545
date: "Date",
4646
};
4747

48-
function toPrimitedType(type: string): string {
48+
function toPrimitiveType(type: string): string {
4949
const index = type.indexOf(":");
5050
if (index >= 0) {
5151
type = type.substring(index + 1);
@@ -78,7 +78,6 @@ function parseDefinition(
7878
nonCollisionDefName = parsedWsdl.findNonCollisionDefinitionName(defName);
7979
} catch (err) {
8080
const e = new Error(`Error for finding non-collision definition name for ${stack.join(".")}.${name}`);
81-
e.stack.split("\n").slice(0, 2).join("\n") + "\n" + err.stack;
8281
throw e;
8382
}
8483
const definition: Definition = {
@@ -119,7 +118,7 @@ function parseDefinition(
119118
name: stripedPropName,
120119
sourceName: propName,
121120
description: type,
122-
type: toPrimitedType(type),
121+
type: toPrimitiveType(type),
123122
isArray: true,
124123
});
125124
} else if (type instanceof ComplexTypeElement) {
@@ -166,68 +165,64 @@ function parseDefinition(
166165
const e = new Error(
167166
`Error while parsing Subdefinition for '${stack.join(".")}.${name}'`
168167
);
169-
e.stack.split("\n").slice(0, 2).join("\n") + "\n" + err.stack;
170168
throw e;
171169
}
172170
}
173171
}
172+
} else if (typeof type === "string") {
173+
// primitive type
174+
definition.properties.push({
175+
kind: "PRIMITIVE",
176+
name: propName,
177+
sourceName: propName,
178+
description: type,
179+
type: toPrimitiveType(type),
180+
isArray: false,
181+
});
182+
} else if (type instanceof ComplexTypeElement) {
183+
// TODO: Finish complex type parsing by updating node-soap
184+
definition.properties.push({
185+
kind: "PRIMITIVE",
186+
name: propName,
187+
sourceName: propName,
188+
description: "ComplexType are not supported yet",
189+
type: "any",
190+
isArray: false,
191+
});
192+
Logger.warn(`Cannot parse ComplexType '${stack.join(".")}.${name}' - using 'any' type`);
174193
} else {
175-
if (typeof type === "string") {
176-
// primitive type
177-
definition.properties.push({
178-
kind: "PRIMITIVE",
179-
name: propName,
180-
sourceName: propName,
181-
description: type,
182-
type: toPrimitedType(type),
183-
isArray: false,
184-
});
185-
} else if (type instanceof ComplexTypeElement) {
186-
// TODO: Finish complex type parsing by updating node-soap
194+
// With sub-type
195+
const reference = findReferenceDefiniton(visitedDefs, type);
196+
if (reference) {
197+
// By referencing already declared definition, we will avoid circular references
187198
definition.properties.push({
188-
kind: "PRIMITIVE",
199+
kind: "REFERENCE",
189200
name: propName,
190201
sourceName: propName,
191-
description: "ComplexType are not supported yet",
192-
type: "any",
202+
description: "",
203+
ref: reference.definition,
193204
isArray: false,
194205
});
195-
Logger.warn(`Cannot parse ComplexType '${stack.join(".")}.${name}' - using 'any' type`);
196206
} else {
197-
// With sub-type
198-
const reference = findReferenceDefiniton(visitedDefs, type);
199-
if (reference) {
200-
// By referencing already declared definition, we will avoid circular references
207+
try {
208+
const subDefinition = parseDefinition(
209+
parsedWsdl,
210+
options,
211+
propName,
212+
type,
213+
[...stack, propName],
214+
visitedDefs
215+
);
201216
definition.properties.push({
202217
kind: "REFERENCE",
203218
name: propName,
204219
sourceName: propName,
205-
description: "",
206-
ref: reference.definition,
220+
ref: subDefinition,
207221
isArray: false,
208222
});
209-
} else {
210-
try {
211-
const subDefinition = parseDefinition(
212-
parsedWsdl,
213-
options,
214-
propName,
215-
type,
216-
[...stack, propName],
217-
visitedDefs
218-
);
219-
definition.properties.push({
220-
kind: "REFERENCE",
221-
name: propName,
222-
sourceName: propName,
223-
ref: subDefinition,
224-
isArray: false,
225-
});
226-
} catch (err) {
227-
const e = new Error(`Error while parsing Subdefinition for ${stack.join(".")}.${name}`);
228-
e.stack.split("\n").slice(0, 2).join("\n") + "\n" + err.stack;
229-
throw e;
230-
}
223+
} catch (err) {
224+
const e = new Error(`Error while parsing Subdefinition for ${stack.join(".")}.${name}`);
225+
throw e;
231226
}
232227
}
233228
}
@@ -267,7 +262,7 @@ export async function parseWsdl(wsdlPath: string, options: Partial<ParserOptions
267262
maxStack: options.maxRecursiveDefinitionName,
268263
caseInsensitiveNames: options.caseInsensitiveNames,
269264
modelNamePreffix: options.modelNamePreffix,
270-
modelNameSuffix: options.modelNameSuffix
265+
modelNameSuffix: options.modelNameSuffix,
271266
});
272267
const filename = path.basename(wsdlPath);
273268
parsedWsdl.name = changeCase(stripExtension(filename), {
@@ -278,7 +273,6 @@ export async function parseWsdl(wsdlPath: string, options: Partial<ParserOptions
278273

279274
const visitedDefinitions: Array<VisitedDefinition> = [];
280275

281-
const allMethods: Method[] = [];
282276
const allPorts: Port[] = [];
283277
const services: Service[] = [];
284278
for (const [serviceName, service] of Object.entries(wsdl.definitions.services)) {
@@ -306,28 +300,28 @@ export async function parseWsdl(wsdlPath: string, options: Partial<ParserOptions
306300
const type = parsedWsdl.findDefinition(
307301
inputMessage.element.$type ?? inputMessage.element.$name
308302
);
309-
inputDefinition = type
310-
? type
311-
: parseDefinition(
312-
parsedWsdl,
313-
mergedOptions,
314-
typeName,
315-
inputMessage.parts,
316-
[typeName],
317-
visitedDefinitions
318-
);
303+
inputDefinition =
304+
type ??
305+
parseDefinition(
306+
parsedWsdl,
307+
mergedOptions,
308+
typeName,
309+
inputMessage.parts,
310+
[typeName],
311+
visitedDefinitions
312+
);
319313
} else if (inputMessage.parts) {
320314
const type = parsedWsdl.findDefinition(paramName);
321-
inputDefinition = type
322-
? type
323-
: parseDefinition(
324-
parsedWsdl,
325-
mergedOptions,
326-
paramName,
327-
inputMessage.parts,
328-
[paramName],
329-
visitedDefinitions
330-
);
315+
inputDefinition =
316+
type ??
317+
parseDefinition(
318+
parsedWsdl,
319+
mergedOptions,
320+
paramName,
321+
inputMessage.parts,
322+
[paramName],
323+
visitedDefinitions
324+
);
331325
} else {
332326
Logger.debug(
333327
`Method '${serviceName}.${portName}.${methodName}' doesn't have any input defined`
@@ -342,28 +336,28 @@ export async function parseWsdl(wsdlPath: string, options: Partial<ParserOptions
342336
// TODO: if `$type` not defined, inline type into function declartion (do not create definition file) - wsimport
343337
const typeName = outputMessage.element.$type ?? outputMessage.element.$name;
344338
const type = parsedWsdl.findDefinition(typeName);
345-
outputDefinition = type
346-
? type
347-
: parseDefinition(
348-
parsedWsdl,
349-
mergedOptions,
350-
typeName,
351-
outputMessage.parts,
352-
[typeName],
353-
visitedDefinitions
354-
);
339+
outputDefinition =
340+
type ??
341+
parseDefinition(
342+
parsedWsdl,
343+
mergedOptions,
344+
typeName,
345+
outputMessage.parts,
346+
[typeName],
347+
visitedDefinitions
348+
);
355349
} else {
356350
const type = parsedWsdl.findDefinition(paramName);
357-
outputDefinition = type
358-
? type
359-
: parseDefinition(
360-
parsedWsdl,
361-
mergedOptions,
362-
paramName,
363-
outputMessage.parts,
364-
[paramName],
365-
visitedDefinitions
366-
);
351+
outputDefinition =
352+
type ??
353+
parseDefinition(
354+
parsedWsdl,
355+
mergedOptions,
356+
paramName,
357+
outputMessage.parts,
358+
[paramName],
359+
visitedDefinitions
360+
);
367361
}
368362
}
369363

@@ -377,7 +371,6 @@ export async function parseWsdl(wsdlPath: string, options: Partial<ParserOptions
377371
returnDefinition: outputDefinition, // TODO: Use string from generated definition files
378372
};
379373
portMethods.push(portMethod);
380-
allMethods.push(portMethod);
381374
}
382375

383376
const servicePort: Port = {

0 commit comments

Comments
 (0)