Skip to content

dderevjanik/wsdl-tsclient

Repository files navigation

WSDL TSClient

license Known Vulnerabilities npm-version

Example how to generate and use wsdl-tsclient: wsdl-tsclient-example

Generate a soap client with typescript definitions from a WSDL file.

This library uses ts-morph to generate typescript code and soap for runtime. Inspired by Java wsimport and openapi-generator.

NOTE: Add soap to your npm runtime dependencies (npm i soap).

Install

npm i wsdl-tsclient

or install it with -g to have CLI globally available.

npm i -g wsdl-tsclient

or you can use npx to run it without installing

npx wsdl-tsclient ./path/to/wsdl.wsdl -o ./generated/

Usage

You can check example repository wsdl-tsclient-example

Generate client using CLI

Easiest way to generate client from is to use CLI. You need to provide only path to .wsdl file and path to output directory (-o param). If you want to generate only typescript types (no runtime code) for node-soap, you can pass --emitDefinitionsOnly param.

wsdl-tsclient ./soap.wsdl -o ./generated

wsdl-tsclient ./resources/**/*.wsdl -o ./generated - using glob

you can also use npx

npx wsdl-tsclient ./soap.wsdl -o ./generated

wsdl-tsclient [options] [path] Options: --help Show help [boolean] -v, --version Show version number [boolean] -o Output directory for generated TypeScript client [string] [required] --emitDefinitionsOnly Generate definitions only (interfaces and types) [boolean] --modelNamePreffix Prefix for generated interface names[string] --modelNameSuffix Suffix for generated interface names[string] --modelPropertyNaming Property naming convention ('camelCase' or 'PascalCase') [string] --caseInsensitiveNames Parse WSDL definitions case-insensitively [boolean] --useWsdlTypeNames Use wsdl schema type names instead of parameter names for generated interface names [boolean] --maxRecursiveDefinitionName Maximum count of definitions with the same name but increased suffix. Will throw an error if exceeded. [number] --esm Generate imports with .js suffix [boolean] --quiet Suppress all logs [boolean] --verbose Print verbose logs [boolean] --no-color Logs without colors [boolean] Examples: wsdl-tsclient file.wsdl -o ./generated/ wsdl-tsclient ./res/**/*.wsdl -o ./generated/

Generate client programmatically

import { generateClient } from "wsdl-tsclient"; parseAndGenerate("./path/to/MyWsdl.wsdl", "./generated/");

Using generated client in your project

Note: Make sure you have soap package in your runtime dependencies (npm i soap)

import { createClientAsync } from "./generated/MyWsdl"; const client = await createClientAsync("./path/to/wsdl.wsdl"); client.CallSoapMethodAsync();

Setting basic auth

import soap from "soap"; import { createClientAsync } from "./generated/MyWsdl"; const client = await createClientAsync("./path/to/wsdl.wsdl"); const basicAuth = new soap.BasicAuthSecurity(auth.username, auth.password); client.setSecurity(basicAuth); client.CallSoapMethodAsync();

for more information about the use of the client, read more about soap

How it works

overview

Develpoment

  • Clone the repository
  • Install dependencies npm i
  • Run tests npm test

License

The source code is licensed under the MIT license

Contributors

Contributors