├── .eslintrc.json ├── .gitignore ├── .travis.yml ├── LICENSE ├── README.md ├── esm ├── index.d.ts ├── index.js ├── index.js.map ├── wsdl-to-ts.d.ts ├── wsdl-to-ts.js └── wsdl-to-ts.js.map ├── lib ├── index.js ├── index.js.map ├── wsdl-to-ts.js └── wsdl-to-ts.js.map ├── package-lock.json ├── package.json ├── src ├── index.ts └── wsdl-to-ts.ts ├── test └── index.js ├── tsconfig.json └── tslint.json /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["eslint:recommended"], 3 | "parserOptions": { 4 | "ecmaVersion": 2016 5 | }, 6 | "globals": { 7 | "require": true, 8 | "Promise": true 9 | }, 10 | "env": { 11 | "es6": true, 12 | "node": true 13 | }, 14 | "rules": { 15 | "arrow-parens": "warn", 16 | "no-console": "off", 17 | "semi": "error" 18 | } 19 | } -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | 8 | # Runtime data 9 | pids 10 | *.pid 11 | *.seed 12 | *.pid.lock 13 | 14 | # Directory for instrumented libs generated by jscoverage/JSCover 15 | lib-cov 16 | 17 | # Coverage directory used by tools like istanbul 18 | coverage 19 | 20 | # nyc test coverage 21 | .nyc_output 22 | 23 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 24 | .grunt 25 | 26 | # Bower dependency directory (https://bower.io/) 27 | bower_components 28 | 29 | # node-waf configuration 30 | .lock-wscript 31 | 32 | # Compiled binary addons (http://nodejs.org/api/addons.html) 33 | build/Release 34 | 35 | # Dependency directories 36 | node_modules/ 37 | jspm_packages/ 38 | 39 | # Typescript v1 declaration files 40 | typings/ 41 | 42 | # Optional npm cache directory 43 | .npm 44 | 45 | # Optional eslint cache 46 | .eslintcache 47 | 48 | # Optional REPL history 49 | .node_repl_history 50 | 51 | # Output of 'npm pack' 52 | *.tgz 53 | 54 | # Yarn Integrity file 55 | .yarn-integrity 56 | 57 | # dotenv environment variables file 58 | .env 59 | 60 | # other 61 | *~ 62 | /test/results 63 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | sudo: false 2 | language: node_js 3 | node_js: 4 | - "6" 5 | - "8" 6 | - "10" 7 | env: 8 | global: 9 | - BUILD_TIMEOUT=10000 10 | install: 11 | - npm ci --ignore-scripts 12 | before_install: 13 | - npm install --global npm@latest 14 | script: 15 | - npm run ci -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright 2017-2018 Tim Lundqvist 2 | 3 | Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. 4 | 5 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # wsdl-to-ts 2 | 3 | 4 | build status 6 | 7 | 8 | npm version 10 | 11 | 12 | license 14 | 15 | 16 | dependency status 18 | 19 | 20 | A CLI tool and library for nodejs to generate TypeScript typings from a WSDL service. 21 | 22 | ## Installation 23 | Installation is done either through [npm](https://npmjs.com) or [yarn](https://yarnpkg.com). 24 | 25 | ### Installation for Command Line usage 26 | 27 | To install CLI tool globally run one of the following command as root or sudo: 28 | ```sh 29 | $ npm install -g wsdl-to-ts 30 | $ yarn global add wsdl-to-ts 31 | ``` 32 | 33 | To install CLI tool for the current user one of these commands may be used (which places working directory at users `$HOME`): 34 | ```sh 35 | $ cd && npm install wsdl-to-ts 36 | $ cd && yarn add wsdl-to-ts 37 | ``` 38 | 39 | ### Installation for Library usage 40 | 41 | To install a library as a dependency to your current npm project you enter your project directory as the current directory and run one of the following commands: 42 | ```sh 43 | $ npm install --save wsdl-to-ts 44 | $ yarn add wsdl-to-ts 45 | ``` 46 | 47 | ## Usage 48 | 49 | If any more documentation is needed for library usage, other than the IDE completions; feel free to open an [issue](https://github.com/TimLuq/wsdl-to-ts/issues). Also take a look at the [type definitions](https://github.com/TimLuq/wsdl-to-ts/blob/master/esm/wsdl-to-ts.d.ts) 50 | 51 | ### Usage for Command Line 52 | 53 | Check version: 54 | ```sh 55 | $ wsdl-to-ts --version 56 | ``` 57 | 58 | Generate typings for a WSDL located on an URI at the default output directory (multiple may be done at the same time by listing more on the command line): 59 | ```sh 60 | $ cd /tmp 61 | $ wsdl-to-ts "https://www.w3schools.com/xml/tempconvert.asmx?WSDL" 62 | $ ls wsdl/**/* 63 | wsdl/TempConvert/TempConvertSoap12.ts wsdl/TempConvert/TempConvertSoap.ts 64 | ``` 65 | 66 | The output directory may be changed to any directory using the `--outdir` flag. 67 | ```sh 68 | $ wsdl-to-ts --outdir="./some/other/dir" "https://www.w3schools.com/xml/tempconvert.asmx?WSDL" 69 | ``` 70 | 71 | #### CLI flags 72 | * `--version` - Display which version you are currently executing. 73 | * `--outdir=SOME/DIR/PATH` - Sets the path which will contain the type definitions. 74 | * `--tslint=RULE0,RULE1,RULE2` - Enable specified rules in all generated files. 75 | * `--tslint=false` - Disables tslint in all generated files. 76 | * `--tslint-disable=RULE0,RULE1,RULE2` - Disable specified rules in all generated files. 77 | -------------------------------------------------------------------------------- /esm/index.d.ts: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | export {}; 3 | -------------------------------------------------------------------------------- /esm/index.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | "use strict"; 3 | import { rename, writeFile } from "fs"; 4 | import * as minimist from "minimist"; 5 | import * as mkdirp from "mkdirp"; 6 | import { mergeTypedWsdl, outputTypedWsdl, wsdl2ts } from "./wsdl-to-ts"; 7 | const opts = {}; 8 | const config = { outdir: "./wsdl", files: [], tslintDisable: ["max-line-length", "no-empty-interface"], tslintEnable: [] }; 9 | const args = minimist(process.argv.slice(2)); 10 | if (args.help) { 11 | // TODO 12 | } 13 | if (args.version) { 14 | /* tslint:disable:no-var-requires */ 15 | const pack = require("../package.json"); 16 | console.log("%s %s", "wsdl-to-ts", pack.version); 17 | process.exit(0); 18 | throw new Error("Exited"); 19 | } 20 | if (args.hasOwnProperty("tslint")) { 21 | if (args.tslint === "true") { 22 | config.tslintEnable = null; 23 | } 24 | else if (args.tslint === "false" || args.tslint === "disable") { 25 | config.tslintDisable = null; 26 | } 27 | else { 28 | config.tslintEnable = args.tslint ? args.tslint.split(",") : null; 29 | } 30 | } 31 | if (args.hasOwnProperty("tslint-disable")) { 32 | config.tslintDisable = args["tslint-disable"] ? args["tslint-disable"].split(",") : null; 33 | } 34 | if (args.outdir || args.outDir) { 35 | config.outdir = args.outdir || args.outDir; 36 | } 37 | if (args.hasOwnProperty("quote")) { 38 | if (args.quote === "false" || args.quote === "disable" || args.quote === "0") { 39 | opts.quoteProperties = false; 40 | } 41 | else if (args.quote === "true" || args.quote === "1" || !args.quote) { 42 | opts.quoteProperties = true; 43 | } 44 | } 45 | if (args._) { 46 | config.files.push.apply(config.files, args._); 47 | } 48 | if (config.files.length === 0) { 49 | console.error("No files given"); 50 | process.exit(1); 51 | throw new Error("No files"); 52 | } 53 | function mkdirpp(dir, mode) { 54 | return new Promise((resolve, reject) => { 55 | mkdirp(dir, mode || 0o755, (err, made) => { 56 | if (err) { 57 | reject(err); 58 | } 59 | else { 60 | resolve(made); 61 | } 62 | }); 63 | }); 64 | } 65 | Promise.all(config.files.map((a) => wsdl2ts(a, opts))). 66 | then((xs) => mergeTypedWsdl.apply(undefined, xs)). 67 | then(outputTypedWsdl). 68 | then((xs) => { 69 | return Promise.all(xs.map((x) => { 70 | console.log("-- %s --", x.file); 71 | console.log("%s", x.data.join("\n\n")); 72 | const file = config.outdir + "/" + x.file; 73 | const dir = file.replace(/\/[^/]+$/, ""); 74 | return mkdirpp(dir).then(() => { 75 | return new Promise((resolve, reject) => { 76 | const tsfile = file + ".ts.tmp"; 77 | const fileData = []; 78 | if (config.tslintEnable === null) { 79 | fileData.push("/* tslint:enable */"); 80 | } 81 | if (config.tslintDisable === null) { 82 | fileData.push("/* tslint:disable */"); 83 | } 84 | else if (config.tslintDisable.length !== 0) { 85 | fileData.push("/* tslint:disable:" + config.tslintDisable.join(" ") + " */"); 86 | } 87 | if (config.tslintEnable && config.tslintEnable.length !== 0) { 88 | fileData.push("/* tslint:enable:" + config.tslintEnable.join(" ") + " */"); 89 | } 90 | fileData.push(x.data.join("\n\n")); 91 | fileData.push(""); 92 | writeFile(tsfile, fileData.join("\n"), (err) => { 93 | if (err) { 94 | reject(err); 95 | } 96 | else { 97 | resolve(tsfile); 98 | } 99 | }); 100 | }); 101 | }); 102 | })); 103 | }). 104 | then((files) => Promise.all(files.map((file) => { 105 | return new Promise((resolve, reject) => { 106 | const realFile = file.replace(/\.[^.]+$/, ""); 107 | rename(file, realFile, (err) => { 108 | if (err) { 109 | reject(err); 110 | } 111 | else { 112 | resolve(realFile); 113 | } 114 | }); 115 | }); 116 | }))). 117 | catch((err) => { 118 | console.error(err); 119 | process.exitCode = 3; 120 | }); 121 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /esm/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} -------------------------------------------------------------------------------- /esm/wsdl-to-ts.d.ts: -------------------------------------------------------------------------------- 1 | import * as soap from "soap"; 2 | export declare const nsEnums: { 3 | [k: string]: boolean; 4 | }; 5 | interface ITwoDown { 6 | [k: string]: { 7 | [k: string]: T; 8 | }; 9 | } 10 | export interface IInterfaceOptions { 11 | quoteProperties?: boolean; 12 | } 13 | export interface ITypedWsdl { 14 | client: soap.Client | null; 15 | files: ITwoDown; 16 | methods: ITwoDown<{ 17 | [k: string]: string; 18 | }>; 19 | types: ITwoDown<{ 20 | [k: string]: string; 21 | }>; 22 | namespaces: ITwoDown<{ 23 | [k: string]: { 24 | [k: string]: string; 25 | }; 26 | }>; 27 | } 28 | export declare class TypeCollector { 29 | readonly ns: string; 30 | readonly registered: { 31 | [k: string]: string; 32 | }; 33 | readonly collected: { 34 | [k: string]: string; 35 | }; 36 | constructor(ns: string); 37 | registerCollected(): this; 38 | } 39 | export declare function wsdl2ts(wsdlUri: string, opts?: IInterfaceOptions): Promise; 40 | export declare function mergeTypedWsdl(a: ITypedWsdl, ...bs: ITypedWsdl[]): ITypedWsdl; 41 | export declare function outputTypedWsdl(a: ITypedWsdl): Array<{ 42 | file: string; 43 | data: string[]; 44 | }>; 45 | export {}; 46 | -------------------------------------------------------------------------------- /esm/wsdl-to-ts.js: -------------------------------------------------------------------------------- 1 | import * as soap from "soap"; 2 | // import { diffLines } from "diff"; 3 | export const nsEnums = {}; 4 | export class TypeCollector { 5 | constructor(ns) { 6 | this.ns = ns; 7 | this.registered = {}; 8 | this.collected = {}; 9 | } 10 | registerCollected() { 11 | for (const k of Object.keys(this.collected)) { 12 | if (this.collected[k]) { 13 | this.registered[k] = this.collected[k]; 14 | } 15 | else { 16 | delete this.registered[k]; 17 | } 18 | delete this.collected[k]; 19 | } 20 | return this; 21 | } 22 | } 23 | function wsdlTypeToInterfaceObj(obj, typeCollector) { 24 | const r = {}; 25 | for (const k of Object.keys(obj)) { 26 | if (k === "targetNSAlias" || k === "targetNamespace") { 27 | continue; 28 | } 29 | const isArray = k.endsWith("[]"); 30 | const k2 = isArray ? k.substring(0, k.length - 2) : k; 31 | const v = obj[k]; 32 | const t = typeof v; 33 | if (t === "string") { 34 | const vstr = v; 35 | const [typeName, superTypeClass, typeData] = vstr.indexOf("|") === -1 ? [vstr, vstr, undefined] : vstr.split("|"); 36 | const typeFullName = obj.targetNamespace ? obj.targetNamespace + "#" + typeName : typeName; 37 | let typeClass = superTypeClass === "integer" ? "number" : superTypeClass; 38 | if (nsEnums[typeFullName] || typeData) { 39 | const filter = nsEnums[typeFullName] ? 40 | () => true : 41 | (x) => x !== "length" && x !== "pattern" && x !== "maxLength" && x !== "minLength"; 42 | const tdsplit = typeData.split(",").filter(filter); 43 | if (tdsplit.length) { 44 | typeClass = "\"" + tdsplit.join("\" | \"") + "\""; 45 | } 46 | } 47 | if (isArray) { 48 | if (/^[A-Za-z0-9.]+$/.test(typeClass)) { 49 | typeClass += "[]"; 50 | } 51 | else { 52 | typeClass = "Array<" + typeClass + ">"; 53 | } 54 | } 55 | r[k2] = "/** " + typeFullName + "(" + typeData + ") */ " + typeClass + ";"; 56 | } 57 | else { 58 | const to = wsdlTypeToInterfaceObj(v, typeCollector); 59 | let tr; 60 | if (isArray) { 61 | let s = wsdlTypeToInterfaceString(to); 62 | if (typeCollector && typeCollector.ns) { 63 | if (typeCollector.registered.hasOwnProperty(k2) && typeCollector.registered[k2] === s) { 64 | s = typeCollector.ns + ".I" + k2 + ";"; 65 | } 66 | else if (typeCollector.collected.hasOwnProperty(k2)) { 67 | if (typeCollector.collected[k2] !== s) { 68 | typeCollector.collected[k2] = null; 69 | } 70 | } 71 | else { 72 | typeCollector.collected[k2] = s; 73 | } 74 | } 75 | s = s.replace(/\n/g, "\n "); 76 | if (s.startsWith("/**")) { 77 | const i = s.indexOf("*/") + 2; 78 | s = s.substring(0, i) + " Array<" + s.substring(i).trim().replace(/;$/, "") + ">;"; 79 | } 80 | else { 81 | s = s.trim().replace(/;$/, ""); 82 | if (/^[A-Za-z0-9.]+$/.test(s)) { 83 | s += "[];"; 84 | } 85 | else { 86 | s = "Array<" + s + ">;"; 87 | } 88 | } 89 | tr = s; 90 | } 91 | else { 92 | tr = to; 93 | if (typeCollector && typeCollector.ns) { 94 | const ss = wsdlTypeToInterfaceString(to); 95 | if (typeCollector.registered.hasOwnProperty(k2) && typeCollector.registered[k2] === ss) { 96 | tr = typeCollector.ns + ".I" + k2 + ";"; 97 | } 98 | else if (typeCollector.collected.hasOwnProperty(k2)) { 99 | if (typeCollector.collected[k2] !== ss) { 100 | typeCollector.collected[k2] = null; 101 | } 102 | } 103 | else { 104 | typeCollector.collected[k2] = ss; 105 | } 106 | } 107 | } 108 | r[k2] = tr; 109 | } 110 | } 111 | // console.log("wsdlTypeToInterfaceObj:", r); 112 | return r; 113 | } 114 | function wsdlTypeToInterfaceString(d, opts = {}) { 115 | const r = []; 116 | for (const k of Object.keys(d)) { 117 | const t = typeof d[k]; 118 | let p = k; 119 | if (opts.quoteProperties || (opts.quoteProperties === undefined && !/^[A-Za-z][A-Za-z0-9_-]*$/.test(k))) { 120 | p = JSON.stringify(k); 121 | } 122 | if (t === "string") { 123 | const v = d[k]; 124 | if (v.startsWith("/**")) { 125 | const i = v.indexOf("*/") + 2; 126 | r.push(v.substring(0, i)); 127 | // for types like "xsd:string" only the "string" part is used 128 | const rawtype = v.substring(i).trim(); 129 | const colon = rawtype.indexOf(":"); 130 | if (colon !== -1) { 131 | r.push(p + ": " + rawtype.substring(colon + 1)); 132 | } 133 | else { 134 | r.push(p + ": " + rawtype); 135 | } 136 | } 137 | else { 138 | r.push(p + ": " + v); 139 | } 140 | } 141 | else { 142 | r.push(p + ": " + wsdlTypeToInterfaceString(d[k], opts).replace(/\n/g, "\n ") + ";"); 143 | } 144 | } 145 | if (r.length === 0) { 146 | return "{}"; 147 | } 148 | return "{\n " + r.join("\n ") + "\n}"; 149 | } 150 | function wsdlTypeToInterface(obj, typeCollector, opts) { 151 | return wsdlTypeToInterfaceString(wsdlTypeToInterfaceObj(obj, typeCollector), opts); 152 | } 153 | export function wsdl2ts(wsdlUri, opts) { 154 | return new Promise((resolve, reject) => { 155 | soap.createClient(wsdlUri, {}, (err, client) => { 156 | if (err) { 157 | reject(err); 158 | } 159 | else { 160 | resolve(client); 161 | } 162 | }); 163 | }).then((client) => { 164 | const r = { 165 | client, 166 | files: {}, 167 | methods: {}, 168 | namespaces: {}, 169 | types: {}, 170 | }; 171 | const d = client.describe(); 172 | for (const service of Object.keys(d)) { 173 | for (const port of Object.keys(d[service])) { 174 | const collector = new TypeCollector(port + "Types"); 175 | // console.log("-- %s.%s", service, port); 176 | if (!r.types[service]) { 177 | r.types[service] = {}; 178 | r.methods[service] = {}; 179 | r.files[service] = {}; 180 | r.namespaces[service] = {}; 181 | } 182 | if (!r.types[service][port]) { 183 | r.types[service][port] = {}; 184 | r.methods[service][port] = {}; 185 | r.files[service][port] = service + "/" + port; 186 | r.namespaces[service][port] = {}; 187 | } 188 | for (let maxi = 0; maxi < 32; maxi++) { 189 | for (const method of Object.keys(d[service][port])) { 190 | // console.log("---- %s", method); 191 | wsdlTypeToInterface(d[service][port][method].input || {}, collector, opts); 192 | wsdlTypeToInterface(d[service][port][method].output || {}, collector, opts); 193 | } 194 | const reg = cloneObj(collector.registered); 195 | collector.registerCollected(); 196 | const regKeys0 = Object.keys(collector.registered); 197 | const regKeys1 = Object.keys(reg); 198 | if (regKeys0.length === regKeys1.length) { 199 | let noChange = true; 200 | for (const rk of regKeys0) { 201 | if (collector.registered[rk] !== reg[rk]) { 202 | noChange = false; 203 | break; 204 | } 205 | } 206 | if (noChange) { 207 | break; 208 | } 209 | } 210 | if (maxi === 31) { 211 | console.warn("wsdl-to-ts: Aborted nested interface changes"); 212 | } 213 | } 214 | const collectedKeys = Object.keys(collector.registered); 215 | if (collectedKeys.length) { 216 | const ns = r.namespaces[service][port][collector.ns] = {}; 217 | for (const k of collectedKeys) { 218 | ns[k] = "export interface I" + k + " " + collector.registered[k]; 219 | } 220 | } 221 | for (const method of Object.keys(d[service][port])) { 222 | r.types[service][port]["I" + method + "Input"] = 223 | wsdlTypeToInterface(d[service][port][method].input || {}, collector, opts); 224 | r.types[service][port]["I" + method + "Output"] = 225 | wsdlTypeToInterface(d[service][port][method].output || {}, collector, opts); 226 | r.methods[service][port][method] = 227 | "(input: I" + method + "Input, " + 228 | "cb: (err: any | null," + 229 | " result: I" + method + "Output," + 230 | " raw: string, " + 231 | " soapHeader: {[k: string]: any; }) => any, " + 232 | "options?: any, " + 233 | "extraHeaders?: any" + 234 | ") => void"; 235 | } 236 | } 237 | } 238 | return r; 239 | }); 240 | } 241 | function cloneObj(a) { 242 | const b = {}; 243 | for (const k of Object.keys(a)) { 244 | const t = typeof a[k]; 245 | b[k] = t === "object" ? 246 | Array.isArray(a[k]) ? a[k].slice() : cloneObj(a[k]) : a[k]; 247 | } 248 | return b; 249 | } 250 | export function mergeTypedWsdl(a, ...bs) { 251 | const x = { 252 | client: null, 253 | files: cloneObj(a.files), 254 | methods: cloneObj(a.methods), 255 | namespaces: cloneObj(a.namespaces), 256 | types: cloneObj(a.types), 257 | }; 258 | for (const b of bs) { 259 | for (const service of Object.keys(b.files)) { 260 | if (!x.files.hasOwnProperty(service)) { 261 | x.files[service] = cloneObj(b.files[service]); 262 | x.methods[service] = cloneObj(b.methods[service]); 263 | x.types[service] = cloneObj(b.types[service]); 264 | x.namespaces[service] = cloneObj(b.namespaces[service]); 265 | } 266 | else { 267 | for (const port of Object.keys(b.files[service])) { 268 | if (!x.files[service].hasOwnProperty(port)) { 269 | x.files[service][port] = b.files[service][port]; 270 | x.methods[service][port] = cloneObj(b.methods[service][port]); 271 | x.types[service][port] = cloneObj(b.types[service][port]); 272 | x.namespaces[service][port] = cloneObj(b.namespaces[service][port]); 273 | } 274 | else { 275 | x.files[service][port] = b.files[service][port]; 276 | for (const method of Object.keys(b.methods[service][port])) { 277 | x.methods[service][port][method] = b.methods[service][port][method]; 278 | } 279 | for (const type of Object.keys(b.types[service][port])) { 280 | x.types[service][port][type] = b.types[service][port][type]; 281 | } 282 | for (const ns of Object.keys(b.namespaces[service][port])) { 283 | if (!x.namespaces[service][port].hasOwnProperty(ns)) { 284 | x.namespaces[service][port][ns] = cloneObj(b.namespaces[service][port][ns]); 285 | } 286 | else { 287 | for (const nsi of Object.keys(b.namespaces[service][port][ns])) { 288 | x.namespaces[service][port][ns][nsi] = b.namespaces[service][port][ns][nsi]; 289 | } 290 | } 291 | } 292 | } 293 | } 294 | } 295 | } 296 | } 297 | return x; 298 | } 299 | export function outputTypedWsdl(a) { 300 | const r = []; 301 | for (const service of Object.keys(a.files)) { 302 | for (const port of Object.keys(a.files[service])) { 303 | const d = { file: a.files[service][port], data: [] }; 304 | if (a.types[service] && a.types[service][port]) { 305 | for (const type of Object.keys(a.types[service][port])) { 306 | d.data.push("export interface " + type + " " + a.types[service][port][type]); 307 | } 308 | } 309 | if (a.methods[service] && a.methods[service][port]) { 310 | const ms = []; 311 | for (const method of Object.keys(a.methods[service][port])) { 312 | ms.push(method + ": " + a.methods[service][port][method] + ";"); 313 | } 314 | if (ms.length) { 315 | d.data.push("export interface I" + port + "Soap {\n " + ms.join("\n ") + "\n}"); 316 | } 317 | } 318 | if (a.namespaces[service] && a.namespaces[service][port]) { 319 | for (const ns of Object.keys(a.namespaces[service][port])) { 320 | const ms = []; 321 | for (const nsi of Object.keys(a.namespaces[service][port][ns])) { 322 | ms.push(a.namespaces[service][port][ns][nsi].replace(/\n/g, "\n ")); 323 | } 324 | if (ms.length) { 325 | d.data.push("export namespace " + ns + " {\n " + ms.join("\n ") + "\n}"); 326 | } 327 | } 328 | } 329 | r.push(d); 330 | } 331 | } 332 | return r; 333 | } 334 | //# sourceMappingURL=wsdl-to-ts.js.map -------------------------------------------------------------------------------- /esm/wsdl-to-ts.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"wsdl-to-ts.js","sourceRoot":"","sources":["../src/wsdl-to-ts.ts"],"names":[],"mappings":"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"} -------------------------------------------------------------------------------- /lib/index.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | "use strict"; 3 | Object.defineProperty(exports, "__esModule", { value: true }); 4 | const fs_1 = require("fs"); 5 | const minimist = require("minimist"); 6 | const mkdirp = require("mkdirp"); 7 | const wsdl_to_ts_1 = require("./wsdl-to-ts"); 8 | const opts = {}; 9 | const config = { outdir: "./wsdl", files: [], tslintDisable: ["max-line-length", "no-empty-interface"], tslintEnable: [] }; 10 | const args = minimist(process.argv.slice(2)); 11 | if (args.help) { 12 | // TODO 13 | } 14 | if (args.version) { 15 | /* tslint:disable:no-var-requires */ 16 | const pack = require("../package.json"); 17 | console.log("%s %s", "wsdl-to-ts", pack.version); 18 | process.exit(0); 19 | throw new Error("Exited"); 20 | } 21 | if (args.hasOwnProperty("tslint")) { 22 | if (args.tslint === "true") { 23 | config.tslintEnable = null; 24 | } 25 | else if (args.tslint === "false" || args.tslint === "disable") { 26 | config.tslintDisable = null; 27 | } 28 | else { 29 | config.tslintEnable = args.tslint ? args.tslint.split(",") : null; 30 | } 31 | } 32 | if (args.hasOwnProperty("tslint-disable")) { 33 | config.tslintDisable = args["tslint-disable"] ? args["tslint-disable"].split(",") : null; 34 | } 35 | if (args.outdir || args.outDir) { 36 | config.outdir = args.outdir || args.outDir; 37 | } 38 | if (args.hasOwnProperty("quote")) { 39 | if (args.quote === "false" || args.quote === "disable" || args.quote === "0") { 40 | opts.quoteProperties = false; 41 | } 42 | else if (args.quote === "true" || args.quote === "1" || !args.quote) { 43 | opts.quoteProperties = true; 44 | } 45 | } 46 | if (args._) { 47 | config.files.push.apply(config.files, args._); 48 | } 49 | if (config.files.length === 0) { 50 | console.error("No files given"); 51 | process.exit(1); 52 | throw new Error("No files"); 53 | } 54 | function mkdirpp(dir, mode) { 55 | return new Promise((resolve, reject) => { 56 | mkdirp(dir, mode || 0o755, (err, made) => { 57 | if (err) { 58 | reject(err); 59 | } 60 | else { 61 | resolve(made); 62 | } 63 | }); 64 | }); 65 | } 66 | Promise.all(config.files.map((a) => wsdl_to_ts_1.wsdl2ts(a, opts))). 67 | then((xs) => wsdl_to_ts_1.mergeTypedWsdl.apply(undefined, xs)). 68 | then(wsdl_to_ts_1.outputTypedWsdl). 69 | then((xs) => { 70 | return Promise.all(xs.map((x) => { 71 | console.log("-- %s --", x.file); 72 | console.log("%s", x.data.join("\n\n")); 73 | const file = config.outdir + "/" + x.file; 74 | const dir = file.replace(/\/[^/]+$/, ""); 75 | return mkdirpp(dir).then(() => { 76 | return new Promise((resolve, reject) => { 77 | const tsfile = file + ".ts.tmp"; 78 | const fileData = []; 79 | if (config.tslintEnable === null) { 80 | fileData.push("/* tslint:enable */"); 81 | } 82 | if (config.tslintDisable === null) { 83 | fileData.push("/* tslint:disable */"); 84 | } 85 | else if (config.tslintDisable.length !== 0) { 86 | fileData.push("/* tslint:disable:" + config.tslintDisable.join(" ") + " */"); 87 | } 88 | if (config.tslintEnable && config.tslintEnable.length !== 0) { 89 | fileData.push("/* tslint:enable:" + config.tslintEnable.join(" ") + " */"); 90 | } 91 | fileData.push(x.data.join("\n\n")); 92 | fileData.push(""); 93 | fs_1.writeFile(tsfile, fileData.join("\n"), (err) => { 94 | if (err) { 95 | reject(err); 96 | } 97 | else { 98 | resolve(tsfile); 99 | } 100 | }); 101 | }); 102 | }); 103 | })); 104 | }). 105 | then((files) => Promise.all(files.map((file) => { 106 | return new Promise((resolve, reject) => { 107 | const realFile = file.replace(/\.[^.]+$/, ""); 108 | fs_1.rename(file, realFile, (err) => { 109 | if (err) { 110 | reject(err); 111 | } 112 | else { 113 | resolve(realFile); 114 | } 115 | }); 116 | }); 117 | }))). 118 | catch((err) => { 119 | console.error(err); 120 | process.exitCode = 3; 121 | }); 122 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /lib/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} -------------------------------------------------------------------------------- /lib/wsdl-to-ts.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const soap = require("soap"); 4 | // import { diffLines } from "diff"; 5 | exports.nsEnums = {}; 6 | class TypeCollector { 7 | constructor(ns) { 8 | this.ns = ns; 9 | this.registered = {}; 10 | this.collected = {}; 11 | } 12 | registerCollected() { 13 | for (const k of Object.keys(this.collected)) { 14 | if (this.collected[k]) { 15 | this.registered[k] = this.collected[k]; 16 | } 17 | else { 18 | delete this.registered[k]; 19 | } 20 | delete this.collected[k]; 21 | } 22 | return this; 23 | } 24 | } 25 | exports.TypeCollector = TypeCollector; 26 | function wsdlTypeToInterfaceObj(obj, typeCollector) { 27 | const r = {}; 28 | for (const k of Object.keys(obj)) { 29 | if (k === "targetNSAlias" || k === "targetNamespace") { 30 | continue; 31 | } 32 | const isArray = k.endsWith("[]"); 33 | const k2 = isArray ? k.substring(0, k.length - 2) : k; 34 | const v = obj[k]; 35 | const t = typeof v; 36 | if (t === "string") { 37 | const vstr = v; 38 | const [typeName, superTypeClass, typeData] = vstr.indexOf("|") === -1 ? [vstr, vstr, undefined] : vstr.split("|"); 39 | const typeFullName = obj.targetNamespace ? obj.targetNamespace + "#" + typeName : typeName; 40 | let typeClass = superTypeClass === "integer" ? "number" : superTypeClass; 41 | if (exports.nsEnums[typeFullName] || typeData) { 42 | const filter = exports.nsEnums[typeFullName] ? 43 | () => true : 44 | (x) => x !== "length" && x !== "pattern" && x !== "maxLength" && x !== "minLength"; 45 | const tdsplit = typeData.split(",").filter(filter); 46 | if (tdsplit.length) { 47 | typeClass = "\"" + tdsplit.join("\" | \"") + "\""; 48 | } 49 | } 50 | if (isArray) { 51 | if (/^[A-Za-z0-9.]+$/.test(typeClass)) { 52 | typeClass += "[]"; 53 | } 54 | else { 55 | typeClass = "Array<" + typeClass + ">"; 56 | } 57 | } 58 | r[k2] = "/** " + typeFullName + "(" + typeData + ") */ " + typeClass + ";"; 59 | } 60 | else { 61 | const to = wsdlTypeToInterfaceObj(v, typeCollector); 62 | let tr; 63 | if (isArray) { 64 | let s = wsdlTypeToInterfaceString(to); 65 | if (typeCollector && typeCollector.ns) { 66 | if (typeCollector.registered.hasOwnProperty(k2) && typeCollector.registered[k2] === s) { 67 | s = typeCollector.ns + ".I" + k2 + ";"; 68 | } 69 | else if (typeCollector.collected.hasOwnProperty(k2)) { 70 | if (typeCollector.collected[k2] !== s) { 71 | typeCollector.collected[k2] = null; 72 | } 73 | } 74 | else { 75 | typeCollector.collected[k2] = s; 76 | } 77 | } 78 | s = s.replace(/\n/g, "\n "); 79 | if (s.startsWith("/**")) { 80 | const i = s.indexOf("*/") + 2; 81 | s = s.substring(0, i) + " Array<" + s.substring(i).trim().replace(/;$/, "") + ">;"; 82 | } 83 | else { 84 | s = s.trim().replace(/;$/, ""); 85 | if (/^[A-Za-z0-9.]+$/.test(s)) { 86 | s += "[];"; 87 | } 88 | else { 89 | s = "Array<" + s + ">;"; 90 | } 91 | } 92 | tr = s; 93 | } 94 | else { 95 | tr = to; 96 | if (typeCollector && typeCollector.ns) { 97 | const ss = wsdlTypeToInterfaceString(to); 98 | if (typeCollector.registered.hasOwnProperty(k2) && typeCollector.registered[k2] === ss) { 99 | tr = typeCollector.ns + ".I" + k2 + ";"; 100 | } 101 | else if (typeCollector.collected.hasOwnProperty(k2)) { 102 | if (typeCollector.collected[k2] !== ss) { 103 | typeCollector.collected[k2] = null; 104 | } 105 | } 106 | else { 107 | typeCollector.collected[k2] = ss; 108 | } 109 | } 110 | } 111 | r[k2] = tr; 112 | } 113 | } 114 | // console.log("wsdlTypeToInterfaceObj:", r); 115 | return r; 116 | } 117 | function wsdlTypeToInterfaceString(d, opts = {}) { 118 | const r = []; 119 | for (const k of Object.keys(d)) { 120 | const t = typeof d[k]; 121 | let p = k; 122 | if (opts.quoteProperties || (opts.quoteProperties === undefined && !/^[A-Za-z][A-Za-z0-9_-]*$/.test(k))) { 123 | p = JSON.stringify(k); 124 | } 125 | if (t === "string") { 126 | const v = d[k]; 127 | if (v.startsWith("/**")) { 128 | const i = v.indexOf("*/") + 2; 129 | r.push(v.substring(0, i)); 130 | // for types like "xsd:string" only the "string" part is used 131 | const rawtype = v.substring(i).trim(); 132 | const colon = rawtype.indexOf(":"); 133 | if (colon !== -1) { 134 | r.push(p + ": " + rawtype.substring(colon + 1)); 135 | } 136 | else { 137 | r.push(p + ": " + rawtype); 138 | } 139 | } 140 | else { 141 | r.push(p + ": " + v); 142 | } 143 | } 144 | else { 145 | r.push(p + ": " + wsdlTypeToInterfaceString(d[k], opts).replace(/\n/g, "\n ") + ";"); 146 | } 147 | } 148 | if (r.length === 0) { 149 | return "{}"; 150 | } 151 | return "{\n " + r.join("\n ") + "\n}"; 152 | } 153 | function wsdlTypeToInterface(obj, typeCollector, opts) { 154 | return wsdlTypeToInterfaceString(wsdlTypeToInterfaceObj(obj, typeCollector), opts); 155 | } 156 | function wsdl2ts(wsdlUri, opts) { 157 | return new Promise((resolve, reject) => { 158 | soap.createClient(wsdlUri, {}, (err, client) => { 159 | if (err) { 160 | reject(err); 161 | } 162 | else { 163 | resolve(client); 164 | } 165 | }); 166 | }).then((client) => { 167 | const r = { 168 | client, 169 | files: {}, 170 | methods: {}, 171 | namespaces: {}, 172 | types: {}, 173 | }; 174 | const d = client.describe(); 175 | for (const service of Object.keys(d)) { 176 | for (const port of Object.keys(d[service])) { 177 | const collector = new TypeCollector(port + "Types"); 178 | // console.log("-- %s.%s", service, port); 179 | if (!r.types[service]) { 180 | r.types[service] = {}; 181 | r.methods[service] = {}; 182 | r.files[service] = {}; 183 | r.namespaces[service] = {}; 184 | } 185 | if (!r.types[service][port]) { 186 | r.types[service][port] = {}; 187 | r.methods[service][port] = {}; 188 | r.files[service][port] = service + "/" + port; 189 | r.namespaces[service][port] = {}; 190 | } 191 | for (let maxi = 0; maxi < 32; maxi++) { 192 | for (const method of Object.keys(d[service][port])) { 193 | // console.log("---- %s", method); 194 | wsdlTypeToInterface(d[service][port][method].input || {}, collector, opts); 195 | wsdlTypeToInterface(d[service][port][method].output || {}, collector, opts); 196 | } 197 | const reg = cloneObj(collector.registered); 198 | collector.registerCollected(); 199 | const regKeys0 = Object.keys(collector.registered); 200 | const regKeys1 = Object.keys(reg); 201 | if (regKeys0.length === regKeys1.length) { 202 | let noChange = true; 203 | for (const rk of regKeys0) { 204 | if (collector.registered[rk] !== reg[rk]) { 205 | noChange = false; 206 | break; 207 | } 208 | } 209 | if (noChange) { 210 | break; 211 | } 212 | } 213 | if (maxi === 31) { 214 | console.warn("wsdl-to-ts: Aborted nested interface changes"); 215 | } 216 | } 217 | const collectedKeys = Object.keys(collector.registered); 218 | if (collectedKeys.length) { 219 | const ns = r.namespaces[service][port][collector.ns] = {}; 220 | for (const k of collectedKeys) { 221 | ns[k] = "export interface I" + k + " " + collector.registered[k]; 222 | } 223 | } 224 | for (const method of Object.keys(d[service][port])) { 225 | r.types[service][port]["I" + method + "Input"] = 226 | wsdlTypeToInterface(d[service][port][method].input || {}, collector, opts); 227 | r.types[service][port]["I" + method + "Output"] = 228 | wsdlTypeToInterface(d[service][port][method].output || {}, collector, opts); 229 | r.methods[service][port][method] = 230 | "(input: I" + method + "Input, " + 231 | "cb: (err: any | null," + 232 | " result: I" + method + "Output," + 233 | " raw: string, " + 234 | " soapHeader: {[k: string]: any; }) => any, " + 235 | "options?: any, " + 236 | "extraHeaders?: any" + 237 | ") => void"; 238 | } 239 | } 240 | } 241 | return r; 242 | }); 243 | } 244 | exports.wsdl2ts = wsdl2ts; 245 | function cloneObj(a) { 246 | const b = {}; 247 | for (const k of Object.keys(a)) { 248 | const t = typeof a[k]; 249 | b[k] = t === "object" ? 250 | Array.isArray(a[k]) ? a[k].slice() : cloneObj(a[k]) : a[k]; 251 | } 252 | return b; 253 | } 254 | function mergeTypedWsdl(a, ...bs) { 255 | const x = { 256 | client: null, 257 | files: cloneObj(a.files), 258 | methods: cloneObj(a.methods), 259 | namespaces: cloneObj(a.namespaces), 260 | types: cloneObj(a.types), 261 | }; 262 | for (const b of bs) { 263 | for (const service of Object.keys(b.files)) { 264 | if (!x.files.hasOwnProperty(service)) { 265 | x.files[service] = cloneObj(b.files[service]); 266 | x.methods[service] = cloneObj(b.methods[service]); 267 | x.types[service] = cloneObj(b.types[service]); 268 | x.namespaces[service] = cloneObj(b.namespaces[service]); 269 | } 270 | else { 271 | for (const port of Object.keys(b.files[service])) { 272 | if (!x.files[service].hasOwnProperty(port)) { 273 | x.files[service][port] = b.files[service][port]; 274 | x.methods[service][port] = cloneObj(b.methods[service][port]); 275 | x.types[service][port] = cloneObj(b.types[service][port]); 276 | x.namespaces[service][port] = cloneObj(b.namespaces[service][port]); 277 | } 278 | else { 279 | x.files[service][port] = b.files[service][port]; 280 | for (const method of Object.keys(b.methods[service][port])) { 281 | x.methods[service][port][method] = b.methods[service][port][method]; 282 | } 283 | for (const type of Object.keys(b.types[service][port])) { 284 | x.types[service][port][type] = b.types[service][port][type]; 285 | } 286 | for (const ns of Object.keys(b.namespaces[service][port])) { 287 | if (!x.namespaces[service][port].hasOwnProperty(ns)) { 288 | x.namespaces[service][port][ns] = cloneObj(b.namespaces[service][port][ns]); 289 | } 290 | else { 291 | for (const nsi of Object.keys(b.namespaces[service][port][ns])) { 292 | x.namespaces[service][port][ns][nsi] = b.namespaces[service][port][ns][nsi]; 293 | } 294 | } 295 | } 296 | } 297 | } 298 | } 299 | } 300 | } 301 | return x; 302 | } 303 | exports.mergeTypedWsdl = mergeTypedWsdl; 304 | function outputTypedWsdl(a) { 305 | const r = []; 306 | for (const service of Object.keys(a.files)) { 307 | for (const port of Object.keys(a.files[service])) { 308 | const d = { file: a.files[service][port], data: [] }; 309 | if (a.types[service] && a.types[service][port]) { 310 | for (const type of Object.keys(a.types[service][port])) { 311 | d.data.push("export interface " + type + " " + a.types[service][port][type]); 312 | } 313 | } 314 | if (a.methods[service] && a.methods[service][port]) { 315 | const ms = []; 316 | for (const method of Object.keys(a.methods[service][port])) { 317 | ms.push(method + ": " + a.methods[service][port][method] + ";"); 318 | } 319 | if (ms.length) { 320 | d.data.push("export interface I" + port + "Soap {\n " + ms.join("\n ") + "\n}"); 321 | } 322 | } 323 | if (a.namespaces[service] && a.namespaces[service][port]) { 324 | for (const ns of Object.keys(a.namespaces[service][port])) { 325 | const ms = []; 326 | for (const nsi of Object.keys(a.namespaces[service][port][ns])) { 327 | ms.push(a.namespaces[service][port][ns][nsi].replace(/\n/g, "\n ")); 328 | } 329 | if (ms.length) { 330 | d.data.push("export namespace " + ns + " {\n " + ms.join("\n ") + "\n}"); 331 | } 332 | } 333 | } 334 | r.push(d); 335 | } 336 | } 337 | return r; 338 | } 339 | exports.outputTypedWsdl = outputTypedWsdl; 340 | //# sourceMappingURL=wsdl-to-ts.js.map -------------------------------------------------------------------------------- /lib/wsdl-to-ts.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"wsdl-to-ts.js","sourceRoot":"","sources":["../src/wsdl-to-ts.ts"],"names":[],"mappings":"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"} -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "wsdl-to-ts", 3 | "version": "0.2.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@types/bluebird": { 8 | "version": "3.5.23", 9 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/@types%2fbluebird/-/bluebird-3.5.23.tgz", 10 | "integrity": "sha512-xlehmc6RT+wMEhy9ZqeqmozVmuFzTfsaV2NlfFFWhigy7n6sjMbUUB+SZBWK78lZgWHA4DBAdQvQxUvcB8N1tw==", 11 | "dev": true 12 | }, 13 | "@types/minimist": { 14 | "version": "1.2.0", 15 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/@types%2fminimist/-/minimist-1.2.0.tgz", 16 | "integrity": "sha1-aaI6OtKcrwCX8G7aWbNh7i8GOfY=", 17 | "dev": true 18 | }, 19 | "@types/mkdirp": { 20 | "version": "0.5.2", 21 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/@types%2fmkdirp/-/mkdirp-0.5.2.tgz", 22 | "integrity": "sha512-U5icWpv7YnZYGsN4/cmh3WD2onMY0aJIiTE6+51TwJCttdHvtCYmkBNOobHlXwrJRL0nkH9jH4kD+1FAdMN4Tg==", 23 | "dev": true, 24 | "requires": { 25 | "@types/node": "*" 26 | } 27 | }, 28 | "@types/node": { 29 | "version": "10.5.3", 30 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/@types%2fnode/-/node-10.5.3.tgz", 31 | "integrity": "sha512-jQ1p+SyF/z8ygPxfSPKZKMWazlCgTBSyIaC1UCUvkLHDdxdmPQtQFk02X4WFM31Z1BKMAS3MSAK0cRP2c92n6Q==", 32 | "dev": true 33 | }, 34 | "ajv": { 35 | "version": "5.5.2", 36 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/ajv/-/ajv-5.5.2.tgz", 37 | "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", 38 | "requires": { 39 | "co": "^4.6.0", 40 | "fast-deep-equal": "^1.0.0", 41 | "fast-json-stable-stringify": "^2.0.0", 42 | "json-schema-traverse": "^0.3.0" 43 | } 44 | }, 45 | "ansi-regex": { 46 | "version": "2.1.1", 47 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/ansi-regex/-/ansi-regex-2.1.1.tgz", 48 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", 49 | "dev": true 50 | }, 51 | "ansi-styles": { 52 | "version": "2.2.1", 53 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/ansi-styles/-/ansi-styles-2.2.1.tgz", 54 | "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", 55 | "dev": true 56 | }, 57 | "argparse": { 58 | "version": "1.0.10", 59 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/argparse/-/argparse-1.0.10.tgz", 60 | "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", 61 | "dev": true, 62 | "requires": { 63 | "sprintf-js": "~1.0.2" 64 | } 65 | }, 66 | "asn1": { 67 | "version": "0.2.3", 68 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/asn1/-/asn1-0.2.3.tgz", 69 | "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=" 70 | }, 71 | "assert-plus": { 72 | "version": "1.0.0", 73 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/assert-plus/-/assert-plus-1.0.0.tgz", 74 | "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" 75 | }, 76 | "asynckit": { 77 | "version": "0.4.0", 78 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/asynckit/-/asynckit-0.4.0.tgz", 79 | "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" 80 | }, 81 | "aws-sign2": { 82 | "version": "0.7.0", 83 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/aws-sign2/-/aws-sign2-0.7.0.tgz", 84 | "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" 85 | }, 86 | "aws4": { 87 | "version": "1.7.0", 88 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/aws4/-/aws4-1.7.0.tgz", 89 | "integrity": "sha512-32NDda82rhwD9/JBCCkB+MRYDp0oSvlo2IL6rQWA10PQi7tDUM3eqMSltXmY+Oyl/7N3P3qNtAlv7X0d9bI28w==" 90 | }, 91 | "babel-code-frame": { 92 | "version": "6.26.0", 93 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/babel-code-frame/-/babel-code-frame-6.26.0.tgz", 94 | "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", 95 | "dev": true, 96 | "requires": { 97 | "chalk": "^1.1.3", 98 | "esutils": "^2.0.2", 99 | "js-tokens": "^3.0.2" 100 | }, 101 | "dependencies": { 102 | "chalk": { 103 | "version": "1.1.3", 104 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/chalk/-/chalk-1.1.3.tgz", 105 | "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", 106 | "dev": true, 107 | "requires": { 108 | "ansi-styles": "^2.2.1", 109 | "escape-string-regexp": "^1.0.2", 110 | "has-ansi": "^2.0.0", 111 | "strip-ansi": "^3.0.0", 112 | "supports-color": "^2.0.0" 113 | } 114 | } 115 | } 116 | }, 117 | "balanced-match": { 118 | "version": "1.0.0", 119 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/balanced-match/-/balanced-match-1.0.0.tgz", 120 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", 121 | "dev": true 122 | }, 123 | "bcrypt-pbkdf": { 124 | "version": "1.0.2", 125 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", 126 | "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", 127 | "optional": true, 128 | "requires": { 129 | "tweetnacl": "^0.14.3" 130 | } 131 | }, 132 | "bluebird": { 133 | "version": "3.5.1", 134 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/bluebird/-/bluebird-3.5.1.tgz", 135 | "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==" 136 | }, 137 | "brace-expansion": { 138 | "version": "1.1.11", 139 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/brace-expansion/-/brace-expansion-1.1.11.tgz", 140 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 141 | "dev": true, 142 | "requires": { 143 | "balanced-match": "^1.0.0", 144 | "concat-map": "0.0.1" 145 | } 146 | }, 147 | "buffer-from": { 148 | "version": "1.1.0", 149 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/buffer-from/-/buffer-from-1.1.0.tgz", 150 | "integrity": "sha512-c5mRlguI/Pe2dSZmpER62rSCu0ryKmWddzRYsuXc50U2/g8jMOulc31VZMa4mYx31U5xsmSOpDCgH88Vl9cDGQ==" 151 | }, 152 | "builtin-modules": { 153 | "version": "1.1.1", 154 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/builtin-modules/-/builtin-modules-1.1.1.tgz", 155 | "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", 156 | "dev": true 157 | }, 158 | "caseless": { 159 | "version": "0.12.0", 160 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/caseless/-/caseless-0.12.0.tgz", 161 | "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" 162 | }, 163 | "chalk": { 164 | "version": "2.4.1", 165 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/chalk/-/chalk-2.4.1.tgz", 166 | "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", 167 | "dev": true, 168 | "requires": { 169 | "ansi-styles": "^3.2.1", 170 | "escape-string-regexp": "^1.0.5", 171 | "supports-color": "^5.3.0" 172 | }, 173 | "dependencies": { 174 | "ansi-styles": { 175 | "version": "3.2.1", 176 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/ansi-styles/-/ansi-styles-3.2.1.tgz", 177 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 178 | "dev": true, 179 | "requires": { 180 | "color-convert": "^1.9.0" 181 | } 182 | }, 183 | "supports-color": { 184 | "version": "5.4.0", 185 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/supports-color/-/supports-color-5.4.0.tgz", 186 | "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", 187 | "dev": true, 188 | "requires": { 189 | "has-flag": "^3.0.0" 190 | } 191 | } 192 | } 193 | }, 194 | "co": { 195 | "version": "4.6.0", 196 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/co/-/co-4.6.0.tgz", 197 | "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" 198 | }, 199 | "color-convert": { 200 | "version": "1.9.2", 201 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/color-convert/-/color-convert-1.9.2.tgz", 202 | "integrity": "sha512-3NUJZdhMhcdPn8vJ9v2UQJoH0qqoGUkYTgFEPZaPjEtwmmKUfNV46zZmgB2M5M4DCEQHMaCfWHCxiBflLm04Tg==", 203 | "dev": true, 204 | "requires": { 205 | "color-name": "1.1.1" 206 | } 207 | }, 208 | "color-name": { 209 | "version": "1.1.1", 210 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/color-name/-/color-name-1.1.1.tgz", 211 | "integrity": "sha1-SxQVMEz1ACjqgWQ2Q72C6gWANok=", 212 | "dev": true 213 | }, 214 | "combined-stream": { 215 | "version": "1.0.6", 216 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/combined-stream/-/combined-stream-1.0.6.tgz", 217 | "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", 218 | "requires": { 219 | "delayed-stream": "~1.0.0" 220 | } 221 | }, 222 | "commander": { 223 | "version": "2.16.0", 224 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/commander/-/commander-2.16.0.tgz", 225 | "integrity": "sha512-sVXqklSaotK9at437sFlFpyOcJonxe0yST/AG9DkQKUdIE6IqGIMv4SfAQSKaJbSdVEJYItASCrBiVQHq1HQew==", 226 | "dev": true 227 | }, 228 | "concat-map": { 229 | "version": "0.0.1", 230 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/concat-map/-/concat-map-0.0.1.tgz", 231 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 232 | "dev": true 233 | }, 234 | "concat-stream": { 235 | "version": "1.6.2", 236 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/concat-stream/-/concat-stream-1.6.2.tgz", 237 | "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", 238 | "requires": { 239 | "buffer-from": "^1.0.0", 240 | "inherits": "^2.0.3", 241 | "readable-stream": "^2.2.2", 242 | "typedarray": "^0.0.6" 243 | } 244 | }, 245 | "core-util-is": { 246 | "version": "1.0.2", 247 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/core-util-is/-/core-util-is-1.0.2.tgz", 248 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" 249 | }, 250 | "dashdash": { 251 | "version": "1.14.1", 252 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/dashdash/-/dashdash-1.14.1.tgz", 253 | "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", 254 | "requires": { 255 | "assert-plus": "^1.0.0" 256 | } 257 | }, 258 | "debug": { 259 | "version": "2.6.9", 260 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/debug/-/debug-2.6.9.tgz", 261 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 262 | "requires": { 263 | "ms": "2.0.0" 264 | } 265 | }, 266 | "delayed-stream": { 267 | "version": "1.0.0", 268 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/delayed-stream/-/delayed-stream-1.0.0.tgz", 269 | "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" 270 | }, 271 | "depd": { 272 | "version": "1.1.2", 273 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/depd/-/depd-1.1.2.tgz", 274 | "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" 275 | }, 276 | "destroy": { 277 | "version": "1.0.4", 278 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/destroy/-/destroy-1.0.4.tgz", 279 | "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" 280 | }, 281 | "diff": { 282 | "version": "3.5.0", 283 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/diff/-/diff-3.5.0.tgz", 284 | "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", 285 | "dev": true 286 | }, 287 | "ecc-jsbn": { 288 | "version": "0.1.1", 289 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", 290 | "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", 291 | "optional": true, 292 | "requires": { 293 | "jsbn": "~0.1.0" 294 | } 295 | }, 296 | "ee-first": { 297 | "version": "1.1.1", 298 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/ee-first/-/ee-first-1.1.1.tgz", 299 | "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" 300 | }, 301 | "ejs": { 302 | "version": "2.5.9", 303 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/ejs/-/ejs-2.5.9.tgz", 304 | "integrity": "sha512-GJCAeDBKfREgkBtgrYSf9hQy9kTb3helv0zGdzqhM7iAkW8FA/ZF97VQDbwFiwIT8MQLLOe5VlPZOEvZAqtUAQ==" 305 | }, 306 | "encodeurl": { 307 | "version": "1.0.2", 308 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/encodeurl/-/encodeurl-1.0.2.tgz", 309 | "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" 310 | }, 311 | "escape-html": { 312 | "version": "1.0.3", 313 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/escape-html/-/escape-html-1.0.3.tgz", 314 | "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" 315 | }, 316 | "escape-string-regexp": { 317 | "version": "1.0.5", 318 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 319 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 320 | "dev": true 321 | }, 322 | "esprima": { 323 | "version": "4.0.1", 324 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/esprima/-/esprima-4.0.1.tgz", 325 | "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", 326 | "dev": true 327 | }, 328 | "esutils": { 329 | "version": "2.0.2", 330 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/esutils/-/esutils-2.0.2.tgz", 331 | "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", 332 | "dev": true 333 | }, 334 | "etag": { 335 | "version": "1.8.1", 336 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/etag/-/etag-1.8.1.tgz", 337 | "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" 338 | }, 339 | "extend": { 340 | "version": "3.0.2", 341 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/extend/-/extend-3.0.2.tgz", 342 | "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" 343 | }, 344 | "extsprintf": { 345 | "version": "1.3.0", 346 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/extsprintf/-/extsprintf-1.3.0.tgz", 347 | "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" 348 | }, 349 | "fast-deep-equal": { 350 | "version": "1.1.0", 351 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", 352 | "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=" 353 | }, 354 | "fast-json-stable-stringify": { 355 | "version": "2.0.0", 356 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", 357 | "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" 358 | }, 359 | "finalhandler": { 360 | "version": "1.1.1", 361 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/finalhandler/-/finalhandler-1.1.1.tgz", 362 | "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", 363 | "requires": { 364 | "debug": "2.6.9", 365 | "encodeurl": "~1.0.2", 366 | "escape-html": "~1.0.3", 367 | "on-finished": "~2.3.0", 368 | "parseurl": "~1.3.2", 369 | "statuses": "~1.4.0", 370 | "unpipe": "~1.0.0" 371 | } 372 | }, 373 | "first-chunk-stream": { 374 | "version": "0.1.0", 375 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/first-chunk-stream/-/first-chunk-stream-0.1.0.tgz", 376 | "integrity": "sha1-dV0+wU1JqG49L8wIvurVwMornAo=" 377 | }, 378 | "forever-agent": { 379 | "version": "0.6.1", 380 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/forever-agent/-/forever-agent-0.6.1.tgz", 381 | "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" 382 | }, 383 | "form-data": { 384 | "version": "2.3.2", 385 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/form-data/-/form-data-2.3.2.tgz", 386 | "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", 387 | "requires": { 388 | "asynckit": "^0.4.0", 389 | "combined-stream": "1.0.6", 390 | "mime-types": "^2.1.12" 391 | } 392 | }, 393 | "fresh": { 394 | "version": "0.5.2", 395 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/fresh/-/fresh-0.5.2.tgz", 396 | "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" 397 | }, 398 | "fs.realpath": { 399 | "version": "1.0.0", 400 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/fs.realpath/-/fs.realpath-1.0.0.tgz", 401 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 402 | "dev": true 403 | }, 404 | "getpass": { 405 | "version": "0.1.7", 406 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/getpass/-/getpass-0.1.7.tgz", 407 | "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", 408 | "requires": { 409 | "assert-plus": "^1.0.0" 410 | } 411 | }, 412 | "glob": { 413 | "version": "7.1.2", 414 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/glob/-/glob-7.1.2.tgz", 415 | "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", 416 | "dev": true, 417 | "requires": { 418 | "fs.realpath": "^1.0.0", 419 | "inflight": "^1.0.4", 420 | "inherits": "2", 421 | "minimatch": "^3.0.4", 422 | "once": "^1.3.0", 423 | "path-is-absolute": "^1.0.0" 424 | } 425 | }, 426 | "har-schema": { 427 | "version": "2.0.0", 428 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/har-schema/-/har-schema-2.0.0.tgz", 429 | "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" 430 | }, 431 | "har-validator": { 432 | "version": "5.0.3", 433 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/har-validator/-/har-validator-5.0.3.tgz", 434 | "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", 435 | "requires": { 436 | "ajv": "^5.1.0", 437 | "har-schema": "^2.0.0" 438 | } 439 | }, 440 | "has-ansi": { 441 | "version": "2.0.0", 442 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/has-ansi/-/has-ansi-2.0.0.tgz", 443 | "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", 444 | "dev": true, 445 | "requires": { 446 | "ansi-regex": "^2.0.0" 447 | } 448 | }, 449 | "has-flag": { 450 | "version": "3.0.0", 451 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/has-flag/-/has-flag-3.0.0.tgz", 452 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", 453 | "dev": true 454 | }, 455 | "http-errors": { 456 | "version": "1.6.3", 457 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/http-errors/-/http-errors-1.6.3.tgz", 458 | "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", 459 | "requires": { 460 | "depd": "~1.1.2", 461 | "inherits": "2.0.3", 462 | "setprototypeof": "1.1.0", 463 | "statuses": ">= 1.4.0 < 2" 464 | } 465 | }, 466 | "http-signature": { 467 | "version": "1.2.0", 468 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/http-signature/-/http-signature-1.2.0.tgz", 469 | "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", 470 | "requires": { 471 | "assert-plus": "^1.0.0", 472 | "jsprim": "^1.2.2", 473 | "sshpk": "^1.7.0" 474 | } 475 | }, 476 | "inflight": { 477 | "version": "1.0.6", 478 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/inflight/-/inflight-1.0.6.tgz", 479 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 480 | "dev": true, 481 | "requires": { 482 | "once": "^1.3.0", 483 | "wrappy": "1" 484 | } 485 | }, 486 | "inherits": { 487 | "version": "2.0.3", 488 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/inherits/-/inherits-2.0.3.tgz", 489 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" 490 | }, 491 | "is-typedarray": { 492 | "version": "1.0.0", 493 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/is-typedarray/-/is-typedarray-1.0.0.tgz", 494 | "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" 495 | }, 496 | "is-utf8": { 497 | "version": "0.2.1", 498 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/is-utf8/-/is-utf8-0.2.1.tgz", 499 | "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" 500 | }, 501 | "isarray": { 502 | "version": "1.0.0", 503 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/isarray/-/isarray-1.0.0.tgz", 504 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" 505 | }, 506 | "isstream": { 507 | "version": "0.1.2", 508 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/isstream/-/isstream-0.1.2.tgz", 509 | "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" 510 | }, 511 | "js-tokens": { 512 | "version": "3.0.2", 513 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/js-tokens/-/js-tokens-3.0.2.tgz", 514 | "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", 515 | "dev": true 516 | }, 517 | "js-yaml": { 518 | "version": "3.12.0", 519 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/js-yaml/-/js-yaml-3.12.0.tgz", 520 | "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==", 521 | "dev": true, 522 | "requires": { 523 | "argparse": "^1.0.7", 524 | "esprima": "^4.0.0" 525 | } 526 | }, 527 | "jsbn": { 528 | "version": "0.1.1", 529 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/jsbn/-/jsbn-0.1.1.tgz", 530 | "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", 531 | "optional": true 532 | }, 533 | "json-schema": { 534 | "version": "0.2.3", 535 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/json-schema/-/json-schema-0.2.3.tgz", 536 | "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" 537 | }, 538 | "json-schema-traverse": { 539 | "version": "0.3.1", 540 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", 541 | "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=" 542 | }, 543 | "json-stringify-safe": { 544 | "version": "5.0.1", 545 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", 546 | "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" 547 | }, 548 | "jsprim": { 549 | "version": "1.4.1", 550 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/jsprim/-/jsprim-1.4.1.tgz", 551 | "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", 552 | "requires": { 553 | "assert-plus": "1.0.0", 554 | "extsprintf": "1.3.0", 555 | "json-schema": "0.2.3", 556 | "verror": "1.10.0" 557 | } 558 | }, 559 | "lodash": { 560 | "version": "4.17.10", 561 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/lodash/-/lodash-4.17.10.tgz", 562 | "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==" 563 | }, 564 | "mime": { 565 | "version": "1.4.1", 566 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/mime/-/mime-1.4.1.tgz", 567 | "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==" 568 | }, 569 | "mime-db": { 570 | "version": "1.35.0", 571 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/mime-db/-/mime-db-1.35.0.tgz", 572 | "integrity": "sha512-JWT/IcCTsB0Io3AhWUMjRqucrHSPsSf2xKLaRldJVULioggvkJvggZ3VXNNSRkCddE6D+BUI4HEIZIA2OjwIvg==" 573 | }, 574 | "mime-types": { 575 | "version": "2.1.19", 576 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/mime-types/-/mime-types-2.1.19.tgz", 577 | "integrity": "sha512-P1tKYHVSZ6uFo26mtnve4HQFE3koh1UWVkp8YUC+ESBHe945xWSoXuHHiGarDqcEZ+whpCDnlNw5LON0kLo+sw==", 578 | "requires": { 579 | "mime-db": "~1.35.0" 580 | } 581 | }, 582 | "minimatch": { 583 | "version": "3.0.4", 584 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/minimatch/-/minimatch-3.0.4.tgz", 585 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 586 | "dev": true, 587 | "requires": { 588 | "brace-expansion": "^1.1.7" 589 | } 590 | }, 591 | "minimist": { 592 | "version": "1.2.0", 593 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/minimist/-/minimist-1.2.0.tgz", 594 | "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" 595 | }, 596 | "mkdirp": { 597 | "version": "0.5.1", 598 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/mkdirp/-/mkdirp-0.5.1.tgz", 599 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", 600 | "requires": { 601 | "minimist": "0.0.8" 602 | }, 603 | "dependencies": { 604 | "minimist": { 605 | "version": "0.0.8", 606 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/minimist/-/minimist-0.0.8.tgz", 607 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" 608 | } 609 | } 610 | }, 611 | "ms": { 612 | "version": "2.0.0", 613 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/ms/-/ms-2.0.0.tgz", 614 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 615 | }, 616 | "oauth-sign": { 617 | "version": "0.8.2", 618 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/oauth-sign/-/oauth-sign-0.8.2.tgz", 619 | "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=" 620 | }, 621 | "on-finished": { 622 | "version": "2.3.0", 623 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/on-finished/-/on-finished-2.3.0.tgz", 624 | "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", 625 | "requires": { 626 | "ee-first": "1.1.1" 627 | } 628 | }, 629 | "once": { 630 | "version": "1.4.0", 631 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/once/-/once-1.4.0.tgz", 632 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 633 | "dev": true, 634 | "requires": { 635 | "wrappy": "1" 636 | } 637 | }, 638 | "parseurl": { 639 | "version": "1.3.2", 640 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/parseurl/-/parseurl-1.3.2.tgz", 641 | "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=" 642 | }, 643 | "path-is-absolute": { 644 | "version": "1.0.1", 645 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 646 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 647 | "dev": true 648 | }, 649 | "path-parse": { 650 | "version": "1.0.5", 651 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/path-parse/-/path-parse-1.0.5.tgz", 652 | "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", 653 | "dev": true 654 | }, 655 | "performance-now": { 656 | "version": "2.1.0", 657 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/performance-now/-/performance-now-2.1.0.tgz", 658 | "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" 659 | }, 660 | "process-nextick-args": { 661 | "version": "2.0.0", 662 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/process-nextick-args/-/process-nextick-args-2.0.0.tgz", 663 | "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" 664 | }, 665 | "punycode": { 666 | "version": "1.4.1", 667 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/punycode/-/punycode-1.4.1.tgz", 668 | "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" 669 | }, 670 | "qs": { 671 | "version": "6.5.2", 672 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/qs/-/qs-6.5.2.tgz", 673 | "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" 674 | }, 675 | "range-parser": { 676 | "version": "1.2.0", 677 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/range-parser/-/range-parser-1.2.0.tgz", 678 | "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=" 679 | }, 680 | "readable-stream": { 681 | "version": "2.3.6", 682 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/readable-stream/-/readable-stream-2.3.6.tgz", 683 | "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", 684 | "requires": { 685 | "core-util-is": "~1.0.0", 686 | "inherits": "~2.0.3", 687 | "isarray": "~1.0.0", 688 | "process-nextick-args": "~2.0.0", 689 | "safe-buffer": "~5.1.1", 690 | "string_decoder": "~1.1.1", 691 | "util-deprecate": "~1.0.1" 692 | } 693 | }, 694 | "request": { 695 | "version": "2.87.0", 696 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/request/-/request-2.87.0.tgz", 697 | "integrity": "sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw==", 698 | "requires": { 699 | "aws-sign2": "~0.7.0", 700 | "aws4": "^1.6.0", 701 | "caseless": "~0.12.0", 702 | "combined-stream": "~1.0.5", 703 | "extend": "~3.0.1", 704 | "forever-agent": "~0.6.1", 705 | "form-data": "~2.3.1", 706 | "har-validator": "~5.0.3", 707 | "http-signature": "~1.2.0", 708 | "is-typedarray": "~1.0.0", 709 | "isstream": "~0.1.2", 710 | "json-stringify-safe": "~5.0.1", 711 | "mime-types": "~2.1.17", 712 | "oauth-sign": "~0.8.2", 713 | "performance-now": "^2.1.0", 714 | "qs": "~6.5.1", 715 | "safe-buffer": "^5.1.1", 716 | "tough-cookie": "~2.3.3", 717 | "tunnel-agent": "^0.6.0", 718 | "uuid": "^3.1.0" 719 | } 720 | }, 721 | "resolve": { 722 | "version": "1.8.1", 723 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/resolve/-/resolve-1.8.1.tgz", 724 | "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==", 725 | "dev": true, 726 | "requires": { 727 | "path-parse": "^1.0.5" 728 | } 729 | }, 730 | "safe-buffer": { 731 | "version": "5.1.2", 732 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/safe-buffer/-/safe-buffer-5.1.2.tgz", 733 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 734 | }, 735 | "safer-buffer": { 736 | "version": "2.1.2", 737 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/safer-buffer/-/safer-buffer-2.1.2.tgz", 738 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 739 | }, 740 | "sax": { 741 | "version": "1.2.4", 742 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/sax/-/sax-1.2.4.tgz", 743 | "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" 744 | }, 745 | "selectn": { 746 | "version": "0.9.6", 747 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/selectn/-/selectn-0.9.6.tgz", 748 | "integrity": "sha1-vYc6VW0Y+W2FFfyRUD7G/zmP+aI=" 749 | }, 750 | "semver": { 751 | "version": "5.5.0", 752 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/semver/-/semver-5.5.0.tgz", 753 | "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", 754 | "dev": true 755 | }, 756 | "send": { 757 | "version": "0.16.2", 758 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/send/-/send-0.16.2.tgz", 759 | "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", 760 | "requires": { 761 | "debug": "2.6.9", 762 | "depd": "~1.1.2", 763 | "destroy": "~1.0.4", 764 | "encodeurl": "~1.0.2", 765 | "escape-html": "~1.0.3", 766 | "etag": "~1.8.1", 767 | "fresh": "0.5.2", 768 | "http-errors": "~1.6.2", 769 | "mime": "1.4.1", 770 | "ms": "2.0.0", 771 | "on-finished": "~2.3.0", 772 | "range-parser": "~1.2.0", 773 | "statuses": "~1.4.0" 774 | } 775 | }, 776 | "serve-static": { 777 | "version": "1.13.2", 778 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/serve-static/-/serve-static-1.13.2.tgz", 779 | "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", 780 | "requires": { 781 | "encodeurl": "~1.0.2", 782 | "escape-html": "~1.0.3", 783 | "parseurl": "~1.3.2", 784 | "send": "0.16.2" 785 | } 786 | }, 787 | "setprototypeof": { 788 | "version": "1.1.0", 789 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/setprototypeof/-/setprototypeof-1.1.0.tgz", 790 | "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" 791 | }, 792 | "soap": { 793 | "version": "0.24.0", 794 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/soap/-/soap-0.24.0.tgz", 795 | "integrity": "sha512-1bGC2R+KKzC6pm8bbWZTvgryzwnGh4E4AjKnIgyClOpBpL20NcScbVXk0cg52WbueaQT0LDLDQVB1uo8sT8Mcw==", 796 | "requires": { 797 | "bluebird": "^3.5.0", 798 | "concat-stream": "^1.5.1", 799 | "debug": "^2.6.9", 800 | "ejs": "~2.5.5", 801 | "finalhandler": "^1.0.3", 802 | "lodash": "^4.17.5", 803 | "request": ">=2.9.0", 804 | "sax": ">=0.6", 805 | "selectn": "^0.9.6", 806 | "serve-static": "^1.11.1", 807 | "strip-bom": "~0.3.1", 808 | "uuid": "^3.1.0", 809 | "xml-crypto": "~0.8.0" 810 | } 811 | }, 812 | "sprintf-js": { 813 | "version": "1.0.3", 814 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/sprintf-js/-/sprintf-js-1.0.3.tgz", 815 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", 816 | "dev": true 817 | }, 818 | "sshpk": { 819 | "version": "1.14.2", 820 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/sshpk/-/sshpk-1.14.2.tgz", 821 | "integrity": "sha1-xvxhZIo9nE52T9P8306hBeSSupg=", 822 | "requires": { 823 | "asn1": "~0.2.3", 824 | "assert-plus": "^1.0.0", 825 | "bcrypt-pbkdf": "^1.0.0", 826 | "dashdash": "^1.12.0", 827 | "ecc-jsbn": "~0.1.1", 828 | "getpass": "^0.1.1", 829 | "jsbn": "~0.1.0", 830 | "safer-buffer": "^2.0.2", 831 | "tweetnacl": "~0.14.0" 832 | } 833 | }, 834 | "statuses": { 835 | "version": "1.4.0", 836 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/statuses/-/statuses-1.4.0.tgz", 837 | "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==" 838 | }, 839 | "string_decoder": { 840 | "version": "1.1.1", 841 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/string_decoder/-/string_decoder-1.1.1.tgz", 842 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 843 | "requires": { 844 | "safe-buffer": "~5.1.0" 845 | } 846 | }, 847 | "strip-ansi": { 848 | "version": "3.0.1", 849 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/strip-ansi/-/strip-ansi-3.0.1.tgz", 850 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", 851 | "dev": true, 852 | "requires": { 853 | "ansi-regex": "^2.0.0" 854 | } 855 | }, 856 | "strip-bom": { 857 | "version": "0.3.1", 858 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/strip-bom/-/strip-bom-0.3.1.tgz", 859 | "integrity": "sha1-noo57/RW/5q8LwWfXyIluw8/fKU=", 860 | "requires": { 861 | "first-chunk-stream": "^0.1.0", 862 | "is-utf8": "^0.2.0" 863 | } 864 | }, 865 | "supports-color": { 866 | "version": "2.0.0", 867 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/supports-color/-/supports-color-2.0.0.tgz", 868 | "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", 869 | "dev": true 870 | }, 871 | "tough-cookie": { 872 | "version": "2.3.4", 873 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/tough-cookie/-/tough-cookie-2.3.4.tgz", 874 | "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", 875 | "requires": { 876 | "punycode": "^1.4.1" 877 | } 878 | }, 879 | "tslib": { 880 | "version": "1.9.3", 881 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/tslib/-/tslib-1.9.3.tgz", 882 | "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", 883 | "dev": true 884 | }, 885 | "tslint": { 886 | "version": "5.11.0", 887 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/tslint/-/tslint-5.11.0.tgz", 888 | "integrity": "sha1-mPMMAurjzecAYgHkwzywi0hYHu0=", 889 | "dev": true, 890 | "requires": { 891 | "babel-code-frame": "^6.22.0", 892 | "builtin-modules": "^1.1.1", 893 | "chalk": "^2.3.0", 894 | "commander": "^2.12.1", 895 | "diff": "^3.2.0", 896 | "glob": "^7.1.1", 897 | "js-yaml": "^3.7.0", 898 | "minimatch": "^3.0.4", 899 | "resolve": "^1.3.2", 900 | "semver": "^5.3.0", 901 | "tslib": "^1.8.0", 902 | "tsutils": "^2.27.2" 903 | } 904 | }, 905 | "tsutils": { 906 | "version": "2.29.0", 907 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/tsutils/-/tsutils-2.29.0.tgz", 908 | "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", 909 | "dev": true, 910 | "requires": { 911 | "tslib": "^1.8.1" 912 | } 913 | }, 914 | "tunnel-agent": { 915 | "version": "0.6.0", 916 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/tunnel-agent/-/tunnel-agent-0.6.0.tgz", 917 | "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", 918 | "requires": { 919 | "safe-buffer": "^5.0.1" 920 | } 921 | }, 922 | "tweetnacl": { 923 | "version": "0.14.5", 924 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/tweetnacl/-/tweetnacl-0.14.5.tgz", 925 | "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", 926 | "optional": true 927 | }, 928 | "typedarray": { 929 | "version": "0.0.6", 930 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/typedarray/-/typedarray-0.0.6.tgz", 931 | "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" 932 | }, 933 | "typescript": { 934 | "version": "2.9.2", 935 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/typescript/-/typescript-2.9.2.tgz", 936 | "integrity": "sha512-Gr4p6nFNaoufRIY4NMdpQRNmgxVIGMs4Fcu/ujdYk3nAZqk7supzBE9idmvfZIlH/Cuj//dvi+019qEue9lV0w==", 937 | "dev": true 938 | }, 939 | "unpipe": { 940 | "version": "1.0.0", 941 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/unpipe/-/unpipe-1.0.0.tgz", 942 | "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" 943 | }, 944 | "util-deprecate": { 945 | "version": "1.0.2", 946 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/util-deprecate/-/util-deprecate-1.0.2.tgz", 947 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" 948 | }, 949 | "uuid": { 950 | "version": "3.3.2", 951 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/uuid/-/uuid-3.3.2.tgz", 952 | "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" 953 | }, 954 | "verror": { 955 | "version": "1.10.0", 956 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/verror/-/verror-1.10.0.tgz", 957 | "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", 958 | "requires": { 959 | "assert-plus": "^1.0.0", 960 | "core-util-is": "1.0.2", 961 | "extsprintf": "^1.2.0" 962 | } 963 | }, 964 | "wrappy": { 965 | "version": "1.0.2", 966 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/wrappy/-/wrappy-1.0.2.tgz", 967 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 968 | "dev": true 969 | }, 970 | "xml-crypto": { 971 | "version": "0.8.5", 972 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/xml-crypto/-/xml-crypto-0.8.5.tgz", 973 | "integrity": "sha1-K7z7PrM/OoKiGLgiv2craxwg5Tg=", 974 | "requires": { 975 | "xmldom": "=0.1.19", 976 | "xpath.js": ">=0.0.3" 977 | } 978 | }, 979 | "xmldom": { 980 | "version": "0.1.19", 981 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/xmldom/-/xmldom-0.1.19.tgz", 982 | "integrity": "sha1-Yx/Ad3bv2EEYvyUXGzftTQdaCrw=" 983 | }, 984 | "xpath.js": { 985 | "version": "1.1.0", 986 | "resolved": "https://registry.kase.se/yTdajDWYTVuNFFmbAjvaYeFZtOyPVJQc/xpath.js/-/xpath.js-1.1.0.tgz", 987 | "integrity": "sha512-jg+qkfS4K8E7965sqaUl8mRngXiKb3WZGfONgE18pr03FUQiuSV6G+Ej4tS55B+rIQSFEIw3phdVAQ4pPqNWfQ==" 988 | } 989 | } 990 | } 991 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "wsdl-to-ts", 3 | "version": "0.2.3", 4 | "description": "Build TypeScript typings for SOAP WSDL", 5 | "main": "lib/wsdl-to-ts.js", 6 | "module": "esm/wsdl-to-ts.js", 7 | "types": "esm/wsdl-to-ts.d.ts", 8 | "scripts": { 9 | "test": "node test/index.js", 10 | "build": "npx tsc -p tsconfig.json && npx tsc -p tsconfig.json -d --outDir esm --module es2015 --target es2016", 11 | "ci": "npm run build && npm test" 12 | }, 13 | "bin": { 14 | "wsdl-to-ts": "lib/index.js" 15 | }, 16 | "keywords": [ 17 | "soap", 18 | "typescript", 19 | "wsdl", 20 | "ts" 21 | ], 22 | "author": { 23 | "name": "TimLuq", 24 | "url": "https://github.com/TimLuq" 25 | }, 26 | "license": "ISC", 27 | "devDependencies": { 28 | "@types/bluebird": "^3.5.23", 29 | "@types/minimist": "^1.2.0", 30 | "@types/mkdirp": ">=0.5.1 <1.0.0", 31 | "@types/node": ">=6.0.0 <12.0.0", 32 | "tslint": "^5.11.0", 33 | "typescript": "^2.2.0" 34 | }, 35 | "dependencies": { 36 | "minimist": "^1.2.0", 37 | "mkdirp": ">=0.5.1 <1.0.0", 38 | "soap": ">=0.21.0 <1.0.0" 39 | }, 40 | "bugs": { 41 | "url": "https://github.com/TimLuq/wsdl-to-ts/issues" 42 | }, 43 | "repository": { 44 | "type": "git", 45 | "url": "https://github.com/TimLuq/wsdl-to-ts.git" 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | "use strict"; 3 | 4 | import { rename, writeFile } from "fs"; 5 | import * as minimist from "minimist"; 6 | import * as mkdirp from "mkdirp"; 7 | import { IInterfaceOptions, ITypedWsdl, mergeTypedWsdl, outputTypedWsdl, wsdl2ts } from "./wsdl-to-ts"; 8 | 9 | interface IConfigObject { 10 | outdir: string; 11 | files: string[]; 12 | tslintDisable: null | string[]; 13 | tslintEnable: null | string[]; 14 | } 15 | 16 | const opts: IInterfaceOptions = {}; 17 | const config: IConfigObject = { outdir: "./wsdl", files: [], tslintDisable: ["max-line-length", "no-empty-interface"], tslintEnable: [] }; 18 | 19 | const args = minimist(process.argv.slice(2)); 20 | 21 | if (args.help) { 22 | // TODO 23 | } 24 | 25 | if (args.version) { 26 | /* tslint:disable:no-var-requires */ 27 | const pack = require("../package.json"); 28 | console.log("%s %s", "wsdl-to-ts", pack.version); 29 | process.exit(0); 30 | throw new Error("Exited"); 31 | } 32 | 33 | if (args.hasOwnProperty("tslint")) { 34 | if (args.tslint === "true") { 35 | config.tslintEnable = null; 36 | } else if (args.tslint === "false" || args.tslint === "disable") { 37 | config.tslintDisable = null; 38 | } else { 39 | config.tslintEnable = args.tslint ? args.tslint.split(",") : null; 40 | } 41 | } 42 | 43 | if (args.hasOwnProperty("tslint-disable")) { 44 | config.tslintDisable = args["tslint-disable"] ? args["tslint-disable"].split(",") : null; 45 | } 46 | 47 | if (args.outdir || args.outDir) { 48 | config.outdir = args.outdir || args.outDir; 49 | } 50 | 51 | if (args.hasOwnProperty("quote")) { 52 | if (args.quote === "false" || args.quote === "disable" || args.quote === "0") { 53 | opts.quoteProperties = false; 54 | } else if (args.quote === "true" || args.quote === "1" || !args.quote) { 55 | opts.quoteProperties = true; 56 | } 57 | } 58 | 59 | if (args._) { 60 | config.files.push.apply(config.files, args._); 61 | } 62 | 63 | if (config.files.length === 0) { 64 | console.error("No files given"); 65 | process.exit(1); 66 | throw new Error("No files"); 67 | } 68 | 69 | function mkdirpp(dir: string, mode?: number): Promise { 70 | return new Promise((resolve, reject) => { 71 | mkdirp(dir, mode || 0o755, (err, made) => { 72 | if (err) { 73 | reject(err); 74 | } else { 75 | resolve(made); 76 | } 77 | }); 78 | }); 79 | } 80 | 81 | Promise.all(config.files.map((a) => wsdl2ts(a, opts))). 82 | then((xs) => mergeTypedWsdl.apply(undefined, xs)). 83 | then(outputTypedWsdl). 84 | then((xs: Array<{ file: string, data: string[] }>) => { 85 | return Promise.all(xs.map((x) => { 86 | console.log("-- %s --", x.file); 87 | console.log("%s", x.data.join("\n\n")); 88 | const file = config.outdir + "/" + x.file; 89 | const dir = file.replace(/\/[^/]+$/, ""); 90 | return mkdirpp(dir).then(() => { 91 | return new Promise((resolve, reject) => { 92 | const tsfile = file + ".ts.tmp"; 93 | const fileData: string[] = []; 94 | if (config.tslintEnable === null) { 95 | fileData.push("/* tslint:enable */"); 96 | } 97 | if (config.tslintDisable === null) { 98 | fileData.push("/* tslint:disable */"); 99 | } else if (config.tslintDisable.length !== 0) { 100 | fileData.push("/* tslint:disable:" + config.tslintDisable.join(" ") + " */"); 101 | } 102 | if (config.tslintEnable && config.tslintEnable.length !== 0) { 103 | fileData.push("/* tslint:enable:" + config.tslintEnable.join(" ") + " */"); 104 | } 105 | fileData.push(x.data.join("\n\n")); 106 | fileData.push(""); 107 | writeFile(tsfile, fileData.join("\n"), (err) => { 108 | if (err) { 109 | reject(err); 110 | } else { 111 | resolve(tsfile); 112 | } 113 | }); 114 | }); 115 | }); 116 | })); 117 | }). 118 | then((files: string[]) => Promise.all(files.map((file) => { 119 | return new Promise((resolve, reject) => { 120 | const realFile = file.replace(/\.[^.]+$/, ""); 121 | rename(file, realFile, (err) => { 122 | if (err) { 123 | reject(err); 124 | } else { 125 | resolve(realFile); 126 | } 127 | }); 128 | }); 129 | }))). 130 | catch((err) => { 131 | console.error(err); 132 | process.exitCode = 3; 133 | }); 134 | -------------------------------------------------------------------------------- /src/wsdl-to-ts.ts: -------------------------------------------------------------------------------- 1 | import * as soap from "soap"; 2 | // import { diffLines } from "diff"; 3 | 4 | export const nsEnums: { [k: string]: boolean } = {}; 5 | 6 | interface ITwoDown { 7 | [k: string]: { [k: string]: T }; 8 | } 9 | 10 | interface IInterfaceObject { 11 | [key: string]: string | IInterfaceObject; 12 | } 13 | 14 | export interface IInterfaceOptions { 15 | quoteProperties?: boolean; 16 | } 17 | 18 | export interface ITypedWsdl { 19 | client: soap.Client | null; 20 | files: ITwoDown; 21 | methods: ITwoDown<{ [k: string]: string }>; 22 | types: ITwoDown<{ [k: string]: string }>; 23 | namespaces: ITwoDown<{ [k: string]: { [k: string]: string } }>; 24 | } 25 | 26 | export class TypeCollector { 27 | 28 | public readonly registered: { [k: string]: string }; 29 | public readonly collected: { [k: string]: string }; 30 | 31 | constructor(public readonly ns: string) { 32 | this.registered = {}; 33 | this.collected = {}; 34 | } 35 | 36 | public registerCollected() { 37 | for (const k of Object.keys(this.collected)) { 38 | if (this.collected[k]) { 39 | this.registered[k] = this.collected[k]; 40 | } else { 41 | delete this.registered[k]; 42 | } 43 | delete this.collected[k]; 44 | } 45 | return this; 46 | } 47 | } 48 | 49 | function wsdlTypeToInterfaceObj(obj: IInterfaceObject, typeCollector?: TypeCollector): { [k: string]: any } { 50 | const r: { [k: string]: any } = {}; 51 | for (const k of Object.keys(obj)) { 52 | if (k === "targetNSAlias" || k === "targetNamespace") { 53 | continue; 54 | } 55 | const isArray = k.endsWith("[]"); 56 | const k2 = isArray ? k.substring(0, k.length - 2) : k; 57 | const v = obj[k]; 58 | const t = typeof v; 59 | if (t === "string") { 60 | const vstr = v as string; 61 | const [typeName, superTypeClass, typeData] = 62 | vstr.indexOf("|") === -1 ? [vstr, vstr, undefined] : vstr.split("|"); 63 | const typeFullName = obj.targetNamespace ? obj.targetNamespace + "#" + typeName : typeName; 64 | let typeClass = superTypeClass === "integer" ? "number" : superTypeClass; 65 | if (nsEnums[typeFullName] || typeData) { 66 | const filter = nsEnums[typeFullName] ? 67 | () => true : 68 | (x: string) => x !== "length" && x !== "pattern" && x !== "maxLength" && x !== "minLength"; 69 | const tdsplit = typeData.split(",").filter(filter); 70 | if (tdsplit.length) { 71 | typeClass = "\"" + tdsplit.join("\" | \"") + "\""; 72 | } 73 | } 74 | if (isArray) { 75 | if (/^[A-Za-z0-9.]+$/.test(typeClass)) { 76 | typeClass += "[]"; 77 | } else { 78 | typeClass = "Array<" + typeClass + ">"; 79 | } 80 | } 81 | r[k2] = "/** " + typeFullName + "(" + typeData + ") */ " + typeClass + ";"; 82 | } else { 83 | const to = wsdlTypeToInterfaceObj(v as IInterfaceObject, typeCollector); 84 | let tr: { [k: string]: any } | string; 85 | if (isArray) { 86 | let s = wsdlTypeToInterfaceString(to); 87 | if (typeCollector && typeCollector.ns) { 88 | if (typeCollector.registered.hasOwnProperty(k2) && typeCollector.registered[k2] === s) { 89 | s = typeCollector.ns + ".I" + k2 + ";"; 90 | } else if (typeCollector.collected.hasOwnProperty(k2)) { 91 | if (typeCollector.collected[k2] !== s) { 92 | typeCollector.collected[k2] = null; 93 | } 94 | } else { 95 | typeCollector.collected[k2] = s; 96 | } 97 | } 98 | s = s.replace(/\n/g, "\n "); 99 | 100 | if (s.startsWith("/**")) { 101 | const i = s.indexOf("*/") + 2; 102 | s = s.substring(0, i) + " Array<" + s.substring(i).trim().replace(/;$/, "") + ">;"; 103 | } else { 104 | s = s.trim().replace(/;$/, ""); 105 | if (/^[A-Za-z0-9.]+$/.test(s)) { 106 | s += "[];"; 107 | } else { 108 | s = "Array<" + s + ">;"; 109 | } 110 | } 111 | 112 | tr = s; 113 | } else { 114 | tr = to; 115 | if (typeCollector && typeCollector.ns) { 116 | const ss = wsdlTypeToInterfaceString(to); 117 | if (typeCollector.registered.hasOwnProperty(k2) && typeCollector.registered[k2] === ss) { 118 | tr = typeCollector.ns + ".I" + k2 + ";"; 119 | } else if (typeCollector.collected.hasOwnProperty(k2)) { 120 | if (typeCollector.collected[k2] !== ss) { 121 | typeCollector.collected[k2] = null; 122 | } 123 | } else { 124 | typeCollector.collected[k2] = ss; 125 | } 126 | } 127 | } 128 | r[k2] = tr; 129 | } 130 | } 131 | // console.log("wsdlTypeToInterfaceObj:", r); 132 | return r; 133 | } 134 | 135 | function wsdlTypeToInterfaceString(d: { [k: string]: any }, opts: IInterfaceOptions = {}): string { 136 | const r: string[] = []; 137 | for (const k of Object.keys(d)) { 138 | const t = typeof d[k]; 139 | let p: string = k; 140 | if (opts.quoteProperties || (opts.quoteProperties === undefined && !/^[A-Za-z][A-Za-z0-9_-]*$/.test(k))) { 141 | p = JSON.stringify(k); 142 | } 143 | if (t === "string") { 144 | const v = d[k]; 145 | if (v.startsWith("/**")) { 146 | const i = v.indexOf("*/") + 2; 147 | r.push(v.substring(0, i)); 148 | 149 | // for types like "xsd:string" only the "string" part is used 150 | const rawtype = v.substring(i).trim(); 151 | const colon = rawtype.indexOf(":"); 152 | if (colon !== -1) { 153 | r.push(p + ": " + rawtype.substring(colon + 1)); 154 | } else { 155 | r.push(p + ": " + rawtype); 156 | } 157 | } else { 158 | r.push(p + ": " + v); 159 | } 160 | } else { 161 | r.push(p + ": " + wsdlTypeToInterfaceString(d[k], opts).replace(/\n/g, "\n ") + ";"); 162 | } 163 | } 164 | if (r.length === 0) { 165 | return "{}"; 166 | } 167 | return "{\n " + r.join("\n ") + "\n}"; 168 | } 169 | 170 | function wsdlTypeToInterface(obj: { [k: string]: any }, typeCollector?: TypeCollector, opts?: IInterfaceOptions): string { 171 | return wsdlTypeToInterfaceString(wsdlTypeToInterfaceObj(obj, typeCollector), opts); 172 | } 173 | 174 | export function wsdl2ts(wsdlUri: string, opts?: IInterfaceOptions): Promise { 175 | return new Promise((resolve, reject) => { 176 | soap.createClient(wsdlUri, {}, (err, client) => { 177 | if (err) { 178 | reject(err); 179 | } else { 180 | resolve(client); 181 | } 182 | }); 183 | }).then((client) => { 184 | const r: ITypedWsdl = { 185 | client, 186 | files: {}, 187 | methods: {}, 188 | namespaces: {}, 189 | types: {}, 190 | }; 191 | const d = client.describe(); 192 | 193 | for (const service of Object.keys(d)) { 194 | for (const port of Object.keys(d[service])) { 195 | const collector = new TypeCollector(port + "Types"); 196 | // console.log("-- %s.%s", service, port); 197 | 198 | if (!r.types[service]) { 199 | r.types[service] = {}; 200 | r.methods[service] = {}; 201 | r.files[service] = {}; 202 | r.namespaces[service] = {}; 203 | } 204 | if (!r.types[service][port]) { 205 | r.types[service][port] = {}; 206 | r.methods[service][port] = {}; 207 | r.files[service][port] = service + "/" + port; 208 | r.namespaces[service][port] = {}; 209 | } 210 | 211 | for (let maxi = 0; maxi < 32; maxi++) { 212 | for (const method of Object.keys(d[service][port])) { 213 | // console.log("---- %s", method); 214 | 215 | wsdlTypeToInterface(d[service][port][method].input || {}, collector, opts); 216 | wsdlTypeToInterface(d[service][port][method].output || {}, collector, opts); 217 | } 218 | 219 | const reg = cloneObj(collector.registered); 220 | collector.registerCollected(); 221 | const regKeys0: string[] = Object.keys(collector.registered); 222 | const regKeys1: string[] = Object.keys(reg); 223 | if (regKeys0.length === regKeys1.length) { 224 | let noChange = true; 225 | for (const rk of regKeys0) { 226 | if (collector.registered[rk] !== reg[rk]) { 227 | noChange = false; 228 | break; 229 | } 230 | } 231 | if (noChange) { 232 | break; 233 | } 234 | } 235 | if (maxi === 31) { 236 | console.warn("wsdl-to-ts: Aborted nested interface changes"); 237 | } 238 | } 239 | 240 | const collectedKeys: string[] = Object.keys(collector.registered); 241 | if (collectedKeys.length) { 242 | const ns: { [k: string]: string } = r.namespaces[service][port][collector.ns] = {}; 243 | for (const k of collectedKeys) { 244 | ns[k] = "export interface I" + k + " " + collector.registered[k]; 245 | } 246 | } 247 | 248 | for (const method of Object.keys(d[service][port])) { 249 | 250 | r.types[service][port]["I" + method + "Input"] = 251 | wsdlTypeToInterface(d[service][port][method].input || {}, collector, opts); 252 | r.types[service][port]["I" + method + "Output"] = 253 | wsdlTypeToInterface(d[service][port][method].output || {}, collector, opts); 254 | r.methods[service][port][method] = 255 | "(input: I" + method + "Input, " + 256 | "cb: (err: any | null," + 257 | " result: I" + method + "Output," + 258 | " raw: string, " + 259 | " soapHeader: {[k: string]: any; }) => any, " + 260 | "options?: any, " + 261 | "extraHeaders?: any" + 262 | ") => void"; 263 | } 264 | } 265 | } 266 | 267 | return r; 268 | }); 269 | } 270 | 271 | function cloneObj(a: T): T { 272 | const b: T = {} as any; 273 | for (const k of Object.keys(a)) { 274 | const t = typeof a[k]; 275 | b[k] = t === "object" ? 276 | Array.isArray(a[k]) ? a[k].slice() : cloneObj(a[k]) : a[k]; 277 | } 278 | return b; 279 | } 280 | 281 | export function mergeTypedWsdl(a: ITypedWsdl, ...bs: ITypedWsdl[]): ITypedWsdl { 282 | const x: ITypedWsdl = { 283 | client: null, 284 | files: cloneObj(a.files), 285 | methods: cloneObj(a.methods), 286 | namespaces: cloneObj(a.namespaces), 287 | types: cloneObj(a.types), 288 | }; 289 | for (const b of bs) { 290 | for (const service of Object.keys(b.files)) { 291 | if (!x.files.hasOwnProperty(service)) { 292 | x.files[service] = cloneObj(b.files[service]); 293 | x.methods[service] = cloneObj(b.methods[service]); 294 | x.types[service] = cloneObj(b.types[service]); 295 | x.namespaces[service] = cloneObj(b.namespaces[service]); 296 | } else { 297 | for (const port of Object.keys(b.files[service])) { 298 | if (!x.files[service].hasOwnProperty(port)) { 299 | x.files[service][port] = b.files[service][port]; 300 | x.methods[service][port] = cloneObj(b.methods[service][port]); 301 | x.types[service][port] = cloneObj(b.types[service][port]); 302 | x.namespaces[service][port] = cloneObj(b.namespaces[service][port]); 303 | } else { 304 | x.files[service][port] = b.files[service][port]; 305 | for (const method of Object.keys(b.methods[service][port])) { 306 | x.methods[service][port][method] = b.methods[service][port][method]; 307 | } 308 | for (const type of Object.keys(b.types[service][port])) { 309 | x.types[service][port][type] = b.types[service][port][type]; 310 | } 311 | for (const ns of Object.keys(b.namespaces[service][port])) { 312 | if (!x.namespaces[service][port].hasOwnProperty(ns)) { 313 | x.namespaces[service][port][ns] = cloneObj(b.namespaces[service][port][ns]); 314 | } else { 315 | for (const nsi of Object.keys(b.namespaces[service][port][ns])) { 316 | x.namespaces[service][port][ns][nsi] = b.namespaces[service][port][ns][nsi]; 317 | } 318 | } 319 | } 320 | } 321 | } 322 | } 323 | } 324 | } 325 | return x; 326 | } 327 | 328 | export function outputTypedWsdl(a: ITypedWsdl): Array<{ file: string, data: string[] }> { 329 | const r: Array<{ file: string, data: string[] }> = []; 330 | for (const service of Object.keys(a.files)) { 331 | for (const port of Object.keys(a.files[service])) { 332 | const d: { file: string, data: string[] } = { file: a.files[service][port], data: [] }; 333 | if (a.types[service] && a.types[service][port]) { 334 | for (const type of Object.keys(a.types[service][port])) { 335 | d.data.push("export interface " + type + " " + a.types[service][port][type]); 336 | } 337 | } 338 | if (a.methods[service] && a.methods[service][port]) { 339 | const ms: string[] = []; 340 | for (const method of Object.keys(a.methods[service][port])) { 341 | ms.push(method + ": " + a.methods[service][port][method] + ";"); 342 | } 343 | if (ms.length) { 344 | d.data.push("export interface I" + port + "Soap {\n " + ms.join("\n ") + "\n}"); 345 | } 346 | } 347 | if (a.namespaces[service] && a.namespaces[service][port]) { 348 | for (const ns of Object.keys(a.namespaces[service][port])) { 349 | const ms: string[] = []; 350 | for (const nsi of Object.keys(a.namespaces[service][port][ns])) { 351 | ms.push(a.namespaces[service][port][ns][nsi].replace(/\n/g, "\n ")); 352 | } 353 | if (ms.length) { 354 | d.data.push("export namespace " + ns + " {\n " + ms.join("\n ") + "\n}"); 355 | } 356 | } 357 | } 358 | r.push(d); 359 | } 360 | } 361 | return r; 362 | } 363 | -------------------------------------------------------------------------------- /test/index.js: -------------------------------------------------------------------------------- 1 | const { wsdl2ts, mergeTypedWsdl, outputTypedWsdl } = require("../lib/wsdl-to-ts"); 2 | 3 | /** @type {Array.<{0: string; 1: Promise.}>} */ 4 | const testResults = []; 5 | 6 | // test simple case; disregard result 7 | 8 | const wsdl = "https://www2.agenciatributaria.gob.es" + 9 | "/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/"; 10 | const sentWsdl = wsdl + "SuministroFactEmitidas.wsdl"; 11 | const rcvdWsdl = wsdl + "SuministroFactRecibidas.wsdl"; 12 | 13 | testResults.push(["simple", Promise.all([ 14 | wsdl2ts(sentWsdl), 15 | wsdl2ts(rcvdWsdl), 16 | ]). 17 | then((xs) => mergeTypedWsdl.apply(undefined, xs)). 18 | then(outputTypedWsdl). 19 | then(() => "OK") 20 | ]); 21 | 22 | // test cases that need key excaping; write to files 23 | 24 | const sii11 = "https://www.agenciatributaria.es" + 25 | "/static_files/AEAT/Contenidos_Comunes/La_Agencia_Tributaria/Modelos_y_formularios/" + 26 | "Suministro_inmediato_informacion/FicherosSuministros/V_1_1/"; 27 | const sii11Sent = sii11 + "SuministroFactEmitidas.wsdl"; 28 | const sii11Rcvd = sii11 + "SuministroFactRecibidas.wsdl"; 29 | 30 | const { readdir, readFile, unlink, writeFile, stat } = require("fs"); 31 | const mkdirp = require("mkdirp"); 32 | 33 | /** 34 | * @param {string} dir 35 | * @returns {Promise.} 36 | */ 37 | function mkdirpP(dir) { 38 | return new Promise((resolve, reject) => { 39 | mkdirp(dir, (err, made) => { 40 | if (err) { 41 | reject(err); 42 | } else { 43 | resolve(made); 44 | } 45 | }); 46 | }); 47 | } 48 | 49 | /** 50 | * @param {string} dir 51 | * @returns {Promise.} 52 | */ 53 | function readdirP(dir) { 54 | return new Promise((resolve, reject) => { 55 | readdir(dir, "utf8", (err, files) => { 56 | if (err) { 57 | reject(err); 58 | } else { 59 | resolve(files); 60 | } 61 | }); 62 | }); 63 | } 64 | 65 | /** 66 | * @param {string} path 67 | * @returns {Promise.} 68 | */ 69 | function statP(path) { 70 | return new Promise((resolve, reject) => { 71 | stat(path, (err, stats) => { 72 | if (err) { 73 | reject(err); 74 | } else { 75 | resolve(stats); 76 | } 77 | }); 78 | }); 79 | } 80 | 81 | /** 82 | * @param {string} file 83 | * @returns {Promise.} 84 | */ 85 | function rmfileP(file) { 86 | return new Promise((resolve, reject) => { 87 | unlink(file, (err) => { 88 | if (err) { 89 | reject(err); 90 | } else { 91 | resolve(); 92 | } 93 | }); 94 | }); 95 | } 96 | 97 | /** 98 | * @param {string} file 99 | * @param {string} data 100 | * @returns {Promise.} 101 | */ 102 | function writefileP(file, data) { 103 | return new Promise((resolve, reject) => { 104 | writeFile(file, data, "utf8", (err) => { 105 | if (err) { 106 | reject(err); 107 | } else { 108 | resolve(); 109 | } 110 | }); 111 | }); 112 | } 113 | 114 | /** 115 | * @param {string} file 116 | * @returns {Promise.} 117 | */ 118 | function readfileP(file) { 119 | return new Promise((resolve, reject) => { 120 | readFile(file, "utf8", (err, data) => { 121 | if (err) { 122 | reject(err); 123 | } else { 124 | resolve(data); 125 | } 126 | }); 127 | }); 128 | } 129 | 130 | /** 131 | * @param {string} dir 132 | * @returns {Promise.} 133 | */ 134 | function requrfile(dir) { 135 | return readdirP(dir).then((files) => Promise.all(files.map((sf) => { 136 | const f = dir + "/" + sf; 137 | return statP(f).then((s) => { 138 | if (!s.isDirectory()) { 139 | return [f]; 140 | } else { 141 | return requrfile(f); 142 | } 143 | }); 144 | }))).then((fcoll) => { 145 | /** @type {string[]} */ 146 | const r = []; 147 | for (let i = 0; i < fcoll.length; i++) { 148 | r.push.apply(r, fcoll[i]); 149 | } 150 | return r; 151 | }); 152 | } 153 | 154 | /** 155 | * @param {string} dir 156 | * @param {RegExp} pattern 157 | * @returns {Promise.} 158 | */ 159 | function cleandir(dir, pattern) { 160 | return requrfile(dir).then((files) => { 161 | const fs = files.filter((f) => pattern.test(f)); 162 | if (fs.length) { 163 | return Promise.all(fs.map((f) => rmfileP(f))).then(() => undefined); 164 | } 165 | }); 166 | } 167 | 168 | testResults.push(["complex", Promise.all([ 169 | wsdl2ts(sii11Sent, { quoteProperties: true }), 170 | wsdl2ts(sii11Rcvd), 171 | ]). 172 | then((xs) => mergeTypedWsdl.apply(undefined, xs)). 173 | then(outputTypedWsdl). 174 | then((xs) => mkdirpP("test/results"). 175 | then(() => cleandir("test/results", /\.ts$/)). 176 | then(() => Promise.all(xs.map((x) => { 177 | const f = "test/results/" + x.file + ".d.ts"; 178 | return mkdirpP(f.replace(/\/[^/]+$/, "")). 179 | then(() => writefileP(f, x.data.join("\n\n"))); 180 | }))) 181 | ). 182 | then(() => "OK") 183 | ]); 184 | 185 | // test values in package.json 186 | const package = require("../package.json"); 187 | 188 | testResults.push(["valid main", !package.main ? Promise.reject("No main field in package.json") : 189 | readfileP(package.main).then(() => { 190 | if (!/^(?:.*\/)*lib\//.test(package.main)) { 191 | throw "Expected main js to be in a folder named `lib` but found: " + JSON.stringify(package.main); 192 | } 193 | if (!/\.js$/.test(package.main)) { 194 | throw "Expected main file to have file extension `.js` but found: " + JSON.stringify(package.main); 195 | } 196 | return "OK"; 197 | }) 198 | ]); 199 | 200 | testResults.push(["valid bin", !package.bin ? Promise.reject("No bin field in package.json") : 201 | !package.bin["wsdl-to-ts"] ? Promise.reject("No wsdl-to-ts property for the bin field in package.json") : 202 | readfileP(package.bin["wsdl-to-ts"]).then((d) => { 203 | const f3 = d.substring(0, 3); 204 | if (!/^(?:.*\/)*lib\//.test(package.bin["wsdl-to-ts"])) { 205 | throw "Expected bin js to be in a folder named `lib` but found: " + JSON.stringify(package.bin["wsdl-to-ts"]); 206 | } 207 | if (!/\.js$/.test(package.bin["wsdl-to-ts"])) { 208 | throw "Expected bin file to have file extension `.js` but found: " + JSON.stringify(package.bin["wsdl-to-ts"]); 209 | } 210 | if (f3 !== "#!/") { 211 | throw "Expected a hashbang sequence as the first tokens but found: " + JSON.stringify(f3) + " in " + package.bin["wsdl-to-ts"]; 212 | } 213 | return "OK"; 214 | }) 215 | ]); 216 | 217 | testResults.push(["valid module", !package.module ? Promise.reject("No module field in package.json") : 218 | readfileP(package.module).then((d) => { 219 | if (!/^export /m.test(d)) { 220 | throw "Expected at least one export in the module"; 221 | } 222 | if (!/^(?:.*\/)*esm\//.test(package.module)) { 223 | throw "Expected module js to be in a folder named `esm` but found: " + JSON.stringify(package.module); 224 | } 225 | if (!/\.m?js$/.test(package.module)) { 226 | throw "Expected module file to have file extension `.mjs` or `.js` but found: " + JSON.stringify(package.module); 227 | } 228 | return "OK"; 229 | }) 230 | ]); 231 | 232 | testResults.push(["valid types", !package.types ? Promise.reject("No types field in package.json") : 233 | readfileP(package.types).then((d) => { 234 | if (!/^export /m.test(d)) { 235 | throw "Expected at least one export in the types"; 236 | } 237 | if (!/^(?:.*\/)*esm\//.test(package.types)) { 238 | throw "Expected types source to be in a folder named `esm` but found: " + JSON.stringify(package.types); 239 | } 240 | if (!/\.d\.ts$/.test(package.types)) { 241 | throw "Expected types file to have file extension `.d.ts` but found: " + JSON.stringify(package.types); 242 | } 243 | return "OK"; 244 | }) 245 | ]); 246 | 247 | // Run the imossible test 248 | 249 | const recursiveWsdl = "https://srv6.demo-attendant.advam.com/makeBooking/webservice/booking.wsdl"; 250 | testResults.push(["recursive elements", Promise.all([ 251 | wsdl2ts(recursiveWsdl), 252 | ]). 253 | then((xs) => mergeTypedWsdl.apply(undefined, xs)). 254 | then(outputTypedWsdl). 255 | then(() => "OK", (e) => { 256 | if (e && e instanceof RangeError) { 257 | return "Expected error\n " + (e.stack || e); 258 | } 259 | throw e; 260 | }) 261 | ]); 262 | 263 | // handle results 264 | 265 | testResults.forEach((test) => { 266 | test[1].then((r) => { 267 | console.log("Test `%s`:", test[0], r); 268 | }, (e) => { 269 | console.error("Test `%s`: FAIL\n ", test[0], e); 270 | process.exitCode = 1; 271 | }); 272 | }); 273 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ES6", 4 | "module": "CommonJS", 5 | "moduleResolution": "node", 6 | "sourceMap": true, 7 | "emitDecoratorMetadata": true, 8 | "experimentalDecorators": true, 9 | "removeComments": false, 10 | "noImplicitAny": true, 11 | "noEmitOnError": true, 12 | "rootDir": "src", 13 | "outDir": "lib", 14 | "lib": [ 15 | "es6" 16 | ] 17 | }, 18 | "exclude": [ 19 | "node_modules", 20 | "lib", 21 | "esm" 22 | ] 23 | } 24 | -------------------------------------------------------------------------------- /tslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "defaultSeverity": "warn", 3 | "extends": [ 4 | "tslint:recommended" 5 | ], 6 | "jsRules": {}, 7 | "rules": { 8 | "no-namespace":false, 9 | "no-console":false, 10 | "max-classes-per-file":false, 11 | "no-bitwise": false, 12 | "variable-name": [true, "ban-keywords", "check-format", "allow-leading-underscore"], 13 | "max-line-length": false 14 | }, 15 | "rulesDirectory": [] 16 | } 17 | --------------------------------------------------------------------------------