From f10047af0da404c8b1e4d2131153ee1de53a9a4a Mon Sep 17 00:00:00 2001 From: Heiko Mathes Date: Mon, 5 Jun 2017 01:39:19 +0200 Subject: [PATCH 1/8] :construction: Start rudimentary method-support --- package-lock.json | 760 ++++++++++++++++++++++++++++++++++ typescript-json-schema.d.ts | 17 + typescript-json-schema.js | 158 +++++-- typescript-json-schema.js.map | 2 +- typescript-json-schema.ts | 66 +++ 5 files changed, 969 insertions(+), 34 deletions(-) create mode 100644 package-lock.json diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 00000000..fe1ea349 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,760 @@ +{ + "name": "typescript-json-schema", + "version": "0.12.0", + "lockfileVersion": 1, + "dependencies": { + "@types/assertion-error": { + "version": "1.0.30", + "resolved": "https://registry.npmjs.org/@types/assertion-error/-/assertion-error-1.0.30.tgz", + "integrity": "sha1-89DV2i7Ie1FOMNs/+aAYh7VhnCk=", + "dev": true + }, + "@types/chai": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-3.5.2.tgz", + "integrity": "sha1-wRzSgX06QBt7oPWkIPNcVhObHB4=", + "dev": true + }, + "@types/glob": { + "version": "5.0.30", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-5.0.30.tgz", + "integrity": "sha1-ECZAnFYlqGiQdGAoCNCCsoZ7ilE=", + "dev": true + }, + "@types/json-stable-stringify": { + "version": "1.0.31", + "resolved": "https://registry.npmjs.org/@types/json-stable-stringify/-/json-stable-stringify-1.0.31.tgz", + "integrity": "sha1-tse8UH9SZ+iM0oObOsais5tlOjI=", + "dev": true + }, + "@types/minimatch": { + "version": "2.0.29", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-2.0.29.tgz", + "integrity": "sha1-UALhT3Xi1x5WQoHfBDHIwbSio2o=", + "dev": true + }, + "@types/mocha": { + "version": "2.2.41", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-2.2.41.tgz", + "integrity": "sha1-4nzwgXFT658nE7LT9saPHhw8pgg=", + "dev": true + }, + "@types/node": { + "version": "7.0.27", + "resolved": "https://registry.npmjs.org/@types/node/-/node-7.0.27.tgz", + "integrity": "sha512-2QMiuVOEye2yKmMwE1V96C9HSShmT0WSm6dv2WjacvePEjQNNJGAerTO5hdYhj5lpdK5MW+FVxmyzDhr4omIdw==", + "dev": true + }, + "ajv": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.1.5.tgz", + "integrity": "sha1-hzSTG2AfANT+73xlc4130bZdH2g=", + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "assertion-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.0.2.tgz", + "integrity": "sha1-E8pRXYYgbaC6xm6DTdOX2HWBCUw=", + "dev": true + }, + "babel-code-frame": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.22.0.tgz", + "integrity": "sha1-AnYgvuVnqIwyVhV05/0IAdMxGOQ=", + "dev": true + }, + "balanced-match": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=" + }, + "brace-expansion": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.7.tgz", + "integrity": "sha1-Pv/DxQ4ABTH7cg6v+A8K6O8jz1k=" + }, + "browser-stdout": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz", + "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=", + "dev": true + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" + }, + "chai": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.0.1.tgz", + "integrity": "sha1-nkHoCOF6fxCAdyHirFpYnVuwkII=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", + "dev": true + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dependencies": { + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=" + } + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + }, + "colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "dev": true + }, + "commander": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "cross-spawn": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", + "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=" + }, + "debug": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.0.tgz", + "integrity": "sha1-vFlryr52F/Edn6FTYe3tVgi4SZs=", + "dev": true + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, + "deep-eql": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-2.0.2.tgz", + "integrity": "sha1-sbrAblbwp2d3aG1Qyf63XC7XZ5o=", + "dev": true, + "dependencies": { + "type-detect": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-3.0.0.tgz", + "integrity": "sha1-RtDMhVOrt7E6NSsNbeov1Y8tm1U=", + "dev": true + } + } + }, + "diff": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.2.0.tgz", + "integrity": "sha1-yc45Okt8vQsFinJck98pkCeGj/k=", + "dev": true + }, + "error-ex": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=" + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "execa": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.5.1.tgz", + "integrity": "sha1-3j+4XLjW6RyFvLzrFkWBeFy1ezY=" + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=" + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "get-caller-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=" + }, + "get-func-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", + "dev": true + }, + "get-stream": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", + "integrity": "sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4=" + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==" + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" + }, + "graceful-readlink": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", + "dev": true + }, + "growl": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz", + "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=", + "dev": true + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "hosted-git-info": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.4.2.tgz", + "integrity": "sha1-AHa59GonBQbduq6lZJaJdGBhKmc=" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=" + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=" + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=" + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "js-tokens": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.1.tgz", + "integrity": "sha1-COnxMkhKLEWjCQfp3E1VZ7fxFNc=", + "dev": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=" + }, + "json3": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", + "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", + "dev": true + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=" + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=" + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=" + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=" + }, + "lodash._baseassign": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", + "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", + "dev": true + }, + "lodash._basecopy": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", + "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", + "dev": true + }, + "lodash._basecreate": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz", + "integrity": "sha1-G8ZhYU2qf8MRt9A78WgGoCE8+CE=", + "dev": true + }, + "lodash._getnative": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", + "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", + "dev": true + }, + "lodash._isiterateecall": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", + "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", + "dev": true + }, + "lodash.create": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lodash.create/-/lodash.create-3.1.1.tgz", + "integrity": "sha1-1/KEnw29p+BGgruM1yqwIkYd6+c=", + "dev": true + }, + "lodash.isarguments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", + "dev": true + }, + "lodash.isarray": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", + "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", + "dev": true + }, + "lodash.keys": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", + "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", + "dev": true + }, + "lru-cache": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.0.2.tgz", + "integrity": "sha1-HRdnnAac2l0ECZGgnbwsDbN35V4=" + }, + "mem": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=" + }, + "mimic-fn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", + "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=" + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==" + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true + }, + "mocha": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-3.4.2.tgz", + "integrity": "sha1-0O9NMyEm2/GNDWQMmzgt1IvpdZQ=", + "dev": true, + "dependencies": { + "glob": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", + "integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=", + "dev": true + } + } + }, + "ms": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", + "dev": true + }, + "normalize-package-data": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.3.8.tgz", + "integrity": "sha1-2Bntoqne29H/pWPqQHHZNngilbs=" + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=" + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=" + }, + "os-locale": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.0.0.tgz", + "integrity": "sha1-FZGN7VEFIrge565aMJ1U9jn8OaQ=" + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + }, + "p-limit": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", + "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=" + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=" + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=" + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + }, + "path-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "dev": true + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=" + }, + "pathval": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz", + "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=", + "dev": true + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=" + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=" + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=" + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" + }, + "resolve": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.3.3.tgz", + "integrity": "sha1-ZVkHw0aahoDcLeOidaj91paR8OU=", + "dev": true + }, + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=" + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + }, + "source-map": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", + "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=", + "dev": true + }, + "source-map-support": { + "version": "0.4.15", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.15.tgz", + "integrity": "sha1-AyAt9lwG0r2MfsI2KhkwVv7407E=", + "dev": true + }, + "spdx-correct": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", + "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=" + }, + "spdx-expression-parse": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", + "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=" + }, + "spdx-license-ids": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", + "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=" + }, + "string-width": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.0.0.tgz", + "integrity": "sha1-Y1xUNsxypuDDh87KJ41OLuxSaH4=", + "dependencies": { + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + } + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=" + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" + }, + "supports-color": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.2.tgz", + "integrity": "sha1-cqJiiU2dQIuVbKBf83su2KbiotU=", + "dev": true + }, + "tslib": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.7.1.tgz", + "integrity": "sha1-vIAEFkaRkjp5/oN4u+s9ogF1OOw=", + "dev": true + }, + "tslint": { + "version": "5.4.2", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.4.2.tgz", + "integrity": "sha1-YJtmQMwEJPSjlamt9ow3VWPFScc=", + "dev": true + }, + "tsutils": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.3.0.tgz", + "integrity": "sha1-luZh18I2PzGtyJkqxnu+e3/BdeU=", + "dev": true + }, + "type-detect": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.3.tgz", + "integrity": "sha1-Dj8mcLRAmbC0bChNE2p+9Jx0wuo=", + "dev": true + }, + "typescript": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.1.6.tgz", + "integrity": "sha1-QMfm6eXaeWG3cYtVUF+crJSHpgc=" + }, + "validate-npm-package-license": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", + "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=" + }, + "which": { + "version": "1.2.14", + "resolved": "https://registry.npmjs.org/which/-/which-1.2.14.tgz", + "integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=" + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dependencies": { + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=" + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + }, + "yargs": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.1.tgz", + "integrity": "sha1-Qg73XoQMFFeoCtzKm8b6OEneUao=" + }, + "yargs-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", + "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=" + } + } +} diff --git a/typescript-json-schema.d.ts b/typescript-json-schema.d.ts index b3e200b1..3d90a3e1 100644 --- a/typescript-json-schema.d.ts +++ b/typescript-json-schema.d.ts @@ -20,6 +20,14 @@ export declare type Args = { }; export declare type PartialArgs = Partial; export declare type PrimitiveType = number | boolean | string | null; +export declare type TypeArgument = { + type?: string; + typeArguments?: TypeArgument[]; +}; +export declare type Parameter = TypeArgument & { + name: string; + optional: boolean; +}; export declare type Definition = { $ref?: string; description?: string; @@ -28,6 +36,7 @@ export declare type Definition = { anyOf?: Definition[]; title?: string; type?: string | string[]; + typeArguments?: TypeArgument[]; definitions?: { [key: string]: any; }; @@ -44,6 +53,7 @@ export declare type Definition = { propertyOrder?: string[]; properties?: {}; defaultProperties?: string[]; + parameters?: Parameter[]; typeof?: "function"; }; export declare class JsonSchemaGenerator { @@ -55,6 +65,8 @@ export declare class JsonSchemaGenerator { private tc; private reffedDefinitions; private userValidationKeywords; + private typeNamesById; + private typeNamesUsed; constructor(allSymbols: { [name: string]: ts.Type; }, userSymbols: { @@ -74,15 +86,20 @@ export declare class JsonSchemaGenerator { private getDefinitionForProperty(prop, tc, node); private getEnumDefinition(clazzType, tc, definition); private getUnionDefinition(unionType, prop, tc, unionModifier, definition); + private typeIsTypeReference(type); + private getTypeDescription(type?); + private getMethodDefinition(methodType, definition); private getClassDefinition(clazzType, tc, definition); private simpleTypesAllowedProperties; private addSimpleType(def, type); private makeNullable(def); + private getTypeName(typ, tc); private getTypeDefinition(typ, tc, asRef?, unionModifier?, prop?, reffedType?); setSchemaOverride(symbolName: string, schema: Definition): void; getSchemaForSymbol(symbolName: string, includeReffedDefinitions?: boolean): Definition; getSchemaForSymbols(symbols: string[]): Definition; getUserSymbols(): string[]; + getMainFileSymbols(program: ts.Program): string[]; } export declare function getProgramFromFiles(files: string[], compilerOptions?: ts.CompilerOptions): ts.Program; export declare function buildGenerator(program: ts.Program, args?: PartialArgs): JsonSchemaGenerator | null; diff --git a/typescript-json-schema.js b/typescript-json-schema.js index 754013a7..c0ef0d30 100644 --- a/typescript-json-schema.js +++ b/typescript-json-schema.js @@ -61,7 +61,7 @@ function unique(arr) { } var r = []; for (var k in temp) { - if (temp.hasOwnProperty(k)) { + if (Object.prototype.hasOwnProperty.call(temp, k)) { r.push(k); } } @@ -72,6 +72,8 @@ var JsonSchemaGenerator = (function () { if (args === void 0) { args = getDefaultArgs(); } this.args = args; this.reffedDefinitions = {}; + this.typeNamesById = {}; + this.typeNamesUsed = {}; this.simpleTypesAllowedProperties = { type: true, description: true @@ -157,7 +159,7 @@ var JsonSchemaGenerator = (function () { definition.items = fixedTypes; definition.minItems = fixedTypes.length; definition.additionalItems = { - "anyOf": fixedTypes + anyOf: fixedTypes }; } else { @@ -229,8 +231,9 @@ var JsonSchemaGenerator = (function () { if (definition.hasOwnProperty("ignore")) { return null; } - var initial = prop.valueDeclaration.initializer; - if (initial) { + var valDecl = prop.valueDeclaration; + if (valDecl && valDecl.initializer) { + var initial = valDecl.initializer; if (initial.expression) { console.warn("initializer is expression for property " + propertyName); } @@ -391,6 +394,49 @@ var JsonSchemaGenerator = (function () { } return definition; }; + JsonSchemaGenerator.prototype.typeIsTypeReference = function (type) { + return type.kind === ts.SyntaxKind.TypeReference; + }; + JsonSchemaGenerator.prototype.getTypeDescription = function (type) { + var _this = this; + var typeObject = {}; + if (!type) { + return typeObject; + } + if (this.typeIsTypeReference(type)) { + typeObject.type = type.typeName.getText(); + if (type.typeArguments) { + typeObject.typeArguments = type.typeArguments.map(function (typeArgument) { + return _this.getTypeDescription(typeArgument); + }); + } + } + if (type.kind === ts.SyntaxKind.StringKeyword) { + typeObject.type = "string"; + } + return typeObject; + }; + JsonSchemaGenerator.prototype.getMethodDefinition = function (methodType, definition) { + var _this = this; + var declaration = methodType.getSymbol().getDeclarations()[0]; + definition.parameters = declaration.parameters.sort(function (param1, param2) { + return param1.pos - param2.pos; + }) + .map(function (parameter) { + var typeObject = _this.getTypeDescription(parameter.type); + return { + name: parameter.name.getText(), + type: typeObject.type, + typeArguments: typeObject.typeArguments, + optional: (parameter.questionToken && parameter.questionToken.kind === ts.SyntaxKind.QuestionToken) ? true : false, + }; + }); + var returnType = this.getTypeDescription(declaration.type); + definition.type = returnType.type; + definition.typeArguments = returnType.typeArguments; + delete definition.description; + return definition; + }; JsonSchemaGenerator.prototype.getClassDefinition = function (clazzType, tc, definition) { var _this = this; var node = clazzType.getSymbol().getDeclarations()[0]; @@ -402,35 +448,36 @@ var JsonSchemaGenerator = (function () { var props = tc.getPropertiesOfType(clazzType); var fullName = tc.typeToString(clazzType, undefined, ts.TypeFormatFlags.UseFullyQualifiedType); var modifierFlags = ts.getCombinedModifierFlags(node); - if (props.length === 0 && clazz.members && clazz.members.length === 1 && clazz.members[0].kind === ts.SyntaxKind.IndexSignature) { - var indexSignature = clazz.members[0]; - if (indexSignature.parameters.length !== 1) { - throw "Not supported: IndexSignatureDeclaration parameters.length != 1"; - } - var indexSymbol = indexSignature.parameters[0].symbol; - var indexType = tc.getTypeOfSymbolAtLocation(indexSymbol, node); - var isStringIndexed = (indexType.flags === ts.TypeFlags.String); - if (indexType.flags !== ts.TypeFlags.Number && !isStringIndexed) { - throw "Not supported: IndexSignatureDeclaration with index symbol other than a number or a string"; - } - var typ = tc.getTypeAtLocation(indexSignature.type); - var def = this.getTypeDefinition(typ, tc, undefined, "anyOf"); - if (isStringIndexed) { - definition.type = "object"; - definition.additionalProperties = def; - } - else { - definition.type = "array"; - definition.items = def; - } - } - else if (modifierFlags & ts.ModifierFlags.Abstract) { + if (modifierFlags & ts.ModifierFlags.Abstract) { var oneOf = this.inheritingTypes[fullName].map(function (typename) { return _this.getTypeDefinition(_this.allSymbols[typename], tc); }); definition.oneOf = oneOf; } else { + var indexSignatures = clazz.members.filter(function (x) { return x.kind === ts.SyntaxKind.IndexSignature; }); + if (indexSignatures.length === 1) { + var indexSignature = indexSignatures[0]; + if (indexSignature.parameters.length !== 1) { + throw "Not supported: IndexSignatureDeclaration parameters.length != 1"; + } + var indexSymbol = indexSignature.parameters[0].symbol; + var indexType = tc.getTypeOfSymbolAtLocation(indexSymbol, node); + var isStringIndexed = (indexType.flags === ts.TypeFlags.String); + if (indexType.flags !== ts.TypeFlags.Number && !isStringIndexed) { + throw "Not supported: IndexSignatureDeclaration with index symbol other than a number or a string"; + } + var typ = tc.getTypeAtLocation(indexSignature.type); + var def = this.getTypeDefinition(typ, tc, undefined, "anyOf"); + if (isStringIndexed) { + definition.type = "object"; + definition.additionalProperties = def; + } + else { + definition.type = "array"; + definition.items = def; + } + } var propertyDefinitions = props.reduce(function (all, prop) { var propertyName = prop.getName(); var propDef = _this.getDefinitionForProperty(prop, tc, node); @@ -439,8 +486,12 @@ var JsonSchemaGenerator = (function () { } return all; }, {}); - definition.type = "object"; - definition.properties = propertyDefinitions; + if (definition.type === undefined) { + definition.type = "object"; + } + if (definition.type === "object" && Object.keys(propertyDefinitions).length > 0) { + definition.properties = propertyDefinitions; + } if (this.args.useDefaultProperties) { definition.defaultProperties = []; } @@ -514,6 +565,25 @@ var JsonSchemaGenerator = (function () { } return def; }; + JsonSchemaGenerator.prototype.getTypeName = function (typ, tc) { + var id = typ.id; + if (this.typeNamesById[id]) { + return this.typeNamesById[id]; + } + var baseName = tc.typeToString(typ, undefined, ts.TypeFormatFlags.UseFullyQualifiedType); + var name = baseName; + if (this.typeNamesUsed[name]) { + for (var i = 1; true; ++i) { + name = baseName + "_" + i; + if (!this.typeNamesUsed[name]) { + break; + } + } + } + this.typeNamesById[id] = name; + this.typeNamesUsed[name] = true; + return name; + }; JsonSchemaGenerator.prototype.getTypeDefinition = function (typ, tc, asRef, unionModifier, prop, reffedType) { if (asRef === void 0) { asRef = this.args.useRef; } if (unionModifier === void 0) { unionModifier = "anyOf"; } @@ -541,11 +611,11 @@ var JsonSchemaGenerator = (function () { reffedType).replace(REGEX_FILE_NAME, ""); } else if (asRef) { - fullTypeName = tc.typeToString(typ, undefined, ts.TypeFormatFlags.UseFullyQualifiedType); + fullTypeName = this.getTypeName(typ, tc); } if (asRef) { returnedDefinition = { - "$ref": "#/definitions/" + fullTypeName + $ref: "#/definitions/" + fullTypeName }; } var otherAnnotations = {}; @@ -593,6 +663,9 @@ var JsonSchemaGenerator = (function () { definition.type = "object"; definition.properties = {}; } + else if (symbol && symbol.getDeclarations()[0].kind === ts.SyntaxKind.MethodSignature) { + this.getMethodDefinition(typ, definition); + } else { this.getClassDefinition(typ, tc, definition); } @@ -620,7 +693,7 @@ var JsonSchemaGenerator = (function () { }; JsonSchemaGenerator.prototype.getSchemaForSymbols = function (symbols) { var root = { - "$schema": "http://json-schema.org/draft-04/schema#", + $schema: "http://json-schema.org/draft-04/schema#", definitions: {} }; for (var i = 0; i < symbols.length; i++) { @@ -632,6 +705,25 @@ var JsonSchemaGenerator = (function () { JsonSchemaGenerator.prototype.getUserSymbols = function () { return Object.keys(this.userSymbols); }; + JsonSchemaGenerator.prototype.getMainFileSymbols = function (program) { + var _this = this; + var files = program.getSourceFiles().filter(function (file) { return !file.isDeclarationFile; }); + if (files.length) { + var mainFile_1 = files[0]; + return Object.keys(this.userSymbols).filter(function (key) { + var symbol = _this.userSymbols[key].getSymbol(); + if (!symbol || !symbol.declarations || !symbol.declarations.length) { + return false; + } + var node = symbol.declarations[0]; + while (node && node.parent) { + node = node.parent; + } + return node === mainFile_1; + }); + } + return []; + }; return JsonSchemaGenerator; }()); JsonSchemaGenerator.validationKeywords = { @@ -736,7 +828,7 @@ function generateSchema(program, fullTypeName, args) { } var definition; if (fullTypeName === "*") { - definition = generator.getSchemaForSymbols(generator.getUserSymbols()); + definition = generator.getSchemaForSymbols(generator.getMainFileSymbols(program)); } else { definition = generator.getSchemaForSymbol(fullTypeName); diff --git a/typescript-json-schema.js.map b/typescript-json-schema.js.map index a5eb0a82..7e800eb9 100644 --- a/typescript-json-schema.js.map +++ b/typescript-json-schema.js.map @@ -1 +1 @@ -{"version":3,"file":"typescript-json-schema.js","sourceRoot":"","sources":["typescript-json-schema.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"typescript-json-schema.js","sourceRoot":"","sources":["typescript-json-schema.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/typescript-json-schema.ts b/typescript-json-schema.ts index 86cb801a..1734c0fe 100644 --- a/typescript-json-schema.ts +++ b/typescript-json-schema.ts @@ -51,6 +51,16 @@ export type PartialArgs = Partial; export type PrimitiveType = number | boolean | string | null; +export type TypeArgument = { + type?: string, + typeArguments?: TypeArgument[] +}; + +export type Parameter = TypeArgument & { + name: string, + optional: boolean +}; + export type Definition = { $ref?: string, description?: string, @@ -59,6 +69,7 @@ export type Definition = { anyOf?: Definition[], title?: string, type?: string | string[], + typeArguments?: TypeArgument[], definitions?: {[key: string]: any}, format?: string, items?: Definition, @@ -73,6 +84,7 @@ export type Definition = { propertyOrder?: string[], properties?: {}, defaultProperties?: string[], + parameters?: Parameter[] typeof?: "function" }; @@ -502,6 +514,58 @@ export class JsonSchemaGenerator { return definition; } + private typeIsTypeReference(type: ts.TypeNode): type is ts.TypeReferenceNode { + return type.kind === ts.SyntaxKind.TypeReference; + } + + private getTypeDescription(type?: ts.TypeNode): TypeArgument { + const typeObject: TypeArgument = {}; + if (!type) { + return typeObject; + } + + if (this.typeIsTypeReference(type)) { + typeObject.type = type.typeName.getText(); + + if (type.typeArguments) { + typeObject.typeArguments = type.typeArguments.map((typeArgument) => { + return this.getTypeDescription(typeArgument); + }); + } + } + + if (type.kind === ts.SyntaxKind.StringKeyword) { + typeObject.type = "string"; + } + + return typeObject; + } + + private getMethodDefinition(methodType: ts.Type, definition: Definition): Definition { + const declaration: ts.MethodDeclaration = methodType.getSymbol().getDeclarations()[0]; + + definition.parameters = declaration.parameters.sort((param1, param2) => { + return param1.pos - param2.pos; + }) + .map((parameter: ts.ParameterDeclaration) => { + const typeObject = this.getTypeDescription(parameter.type); + return { + name: parameter.name.getText(), + type: typeObject.type, + typeArguments: typeObject.typeArguments, + optional: (parameter.questionToken && parameter.questionToken.kind === ts.SyntaxKind.QuestionToken) ? true : false, + }; + }); + + const returnType = this.getTypeDescription(declaration.type); + definition.type = returnType.type; + definition.typeArguments = returnType.typeArguments; + + // The description describes the return-type, which is misleading, because one would expect it to describe the method itsef + delete definition.description; + return definition; + } + private getClassDefinition(clazzType: ts.Type, tc: ts.TypeChecker, definition: Definition): Definition { const node = clazzType.getSymbol().getDeclarations()[0]; if (this.args.useTypeOfKeyword && node.kind === ts.SyntaxKind.FunctionType) { @@ -766,6 +830,8 @@ export class JsonSchemaGenerator { // {} is TypeLiteral with no members. Need special case because it doesn't have declarations. definition.type = "object"; definition.properties = {}; + } else if (symbol && symbol.getDeclarations()[0].kind === ts.SyntaxKind.MethodSignature) { + this.getMethodDefinition(typ, definition); } else { this.getClassDefinition(typ, tc, definition); } From 36d24379a12a156786a5e372c4d14616ffce36b0 Mon Sep 17 00:00:00 2001 From: Heiko Mathes Date: Mon, 5 Jun 2017 01:54:51 +0200 Subject: [PATCH 2/8] :construction: Add basic type-arguments and returntype --- typescript-json-schema.d.ts | 2 ++ typescript-json-schema.js | 17 +++++++++++++---- typescript-json-schema.js.map | 2 +- typescript-json-schema.ts | 20 ++++++++++++++------ 4 files changed, 30 insertions(+), 11 deletions(-) diff --git a/typescript-json-schema.d.ts b/typescript-json-schema.d.ts index 3d90a3e1..ed9cdd24 100644 --- a/typescript-json-schema.d.ts +++ b/typescript-json-schema.d.ts @@ -54,6 +54,8 @@ export declare type Definition = { properties?: {}; defaultProperties?: string[]; parameters?: Parameter[]; + returnType?: string; + returnTypeArguments?: TypeArgument[]; typeof?: "function"; }; export declare class JsonSchemaGenerator { diff --git a/typescript-json-schema.js b/typescript-json-schema.js index c0ef0d30..53b53931 100644 --- a/typescript-json-schema.js +++ b/typescript-json-schema.js @@ -399,7 +399,9 @@ var JsonSchemaGenerator = (function () { }; JsonSchemaGenerator.prototype.getTypeDescription = function (type) { var _this = this; - var typeObject = {}; + var typeObject = { + type: "undefined" + }; if (!type) { return typeObject; } @@ -411,9 +413,15 @@ var JsonSchemaGenerator = (function () { }); } } - if (type.kind === ts.SyntaxKind.StringKeyword) { + else if (type.kind === ts.SyntaxKind.StringKeyword) { typeObject.type = "string"; } + else if (type.kind === ts.SyntaxKind.NumberKeyword) { + typeObject.type = "number"; + } + else if (type.kind === ts.SyntaxKind.BooleanKeyword) { + typeObject.type = "boolean"; + } return typeObject; }; JsonSchemaGenerator.prototype.getMethodDefinition = function (methodType, definition) { @@ -432,8 +440,9 @@ var JsonSchemaGenerator = (function () { }; }); var returnType = this.getTypeDescription(declaration.type); - definition.type = returnType.type; - definition.typeArguments = returnType.typeArguments; + definition.type = "function"; + definition.returnType = returnType.type; + definition.returnTypeArguments = returnType.typeArguments; delete definition.description; return definition; }; diff --git a/typescript-json-schema.js.map b/typescript-json-schema.js.map index 7e800eb9..2b42a9b5 100644 --- a/typescript-json-schema.js.map +++ b/typescript-json-schema.js.map @@ -1 +1 @@ -{"version":3,"file":"typescript-json-schema.js","sourceRoot":"","sources":["typescript-json-schema.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"typescript-json-schema.js","sourceRoot":"","sources":["typescript-json-schema.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/typescript-json-schema.ts b/typescript-json-schema.ts index 1734c0fe..22ff2ca2 100644 --- a/typescript-json-schema.ts +++ b/typescript-json-schema.ts @@ -85,6 +85,8 @@ export type Definition = { properties?: {}, defaultProperties?: string[], parameters?: Parameter[] + returnType?: string, + returnTypeArguments?: TypeArgument[], typeof?: "function" }; @@ -519,7 +521,10 @@ export class JsonSchemaGenerator { } private getTypeDescription(type?: ts.TypeNode): TypeArgument { - const typeObject: TypeArgument = {}; + const typeObject: TypeArgument = { + type: "undefined" + }; + if (!type) { return typeObject; } @@ -532,10 +537,12 @@ export class JsonSchemaGenerator { return this.getTypeDescription(typeArgument); }); } - } - - if (type.kind === ts.SyntaxKind.StringKeyword) { + } else if (type.kind === ts.SyntaxKind.StringKeyword) { typeObject.type = "string"; + } else if (type.kind === ts.SyntaxKind.NumberKeyword) { + typeObject.type = "number"; + } else if (type.kind === ts.SyntaxKind.BooleanKeyword) { + typeObject.type = "boolean"; } return typeObject; @@ -558,8 +565,9 @@ export class JsonSchemaGenerator { }); const returnType = this.getTypeDescription(declaration.type); - definition.type = returnType.type; - definition.typeArguments = returnType.typeArguments; + definition.type = "function"; + definition.returnType = returnType.type; + definition.returnTypeArguments = returnType.typeArguments; // The description describes the return-type, which is misleading, because one would expect it to describe the method itsef delete definition.description; From 07eeb2d2aeca424fba2b0327b6c4f9a304ef8e03 Mon Sep 17 00:00:00 2001 From: Heiko Mathes Date: Mon, 5 Jun 2017 02:10:37 +0200 Subject: [PATCH 3/8] :sparkles: Make function be upper case --- typescript-json-schema.js | 2 +- typescript-json-schema.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/typescript-json-schema.js b/typescript-json-schema.js index 53b53931..e0d936f9 100644 --- a/typescript-json-schema.js +++ b/typescript-json-schema.js @@ -440,7 +440,7 @@ var JsonSchemaGenerator = (function () { }; }); var returnType = this.getTypeDescription(declaration.type); - definition.type = "function"; + definition.type = "Function"; definition.returnType = returnType.type; definition.returnTypeArguments = returnType.typeArguments; delete definition.description; diff --git a/typescript-json-schema.ts b/typescript-json-schema.ts index 22ff2ca2..7964edfc 100644 --- a/typescript-json-schema.ts +++ b/typescript-json-schema.ts @@ -565,7 +565,7 @@ export class JsonSchemaGenerator { }); const returnType = this.getTypeDescription(declaration.type); - definition.type = "function"; + definition.type = "Function"; definition.returnType = returnType.type; definition.returnTypeArguments = returnType.typeArguments; From 7a718620281c29440b676375c6c8c65b96ace40d Mon Sep 17 00:00:00 2001 From: Heiko Mathes Date: Mon, 5 Jun 2017 03:13:25 +0200 Subject: [PATCH 4/8] :rotating_light: add Test for method --- test/programs/method/main.ts | 3 +++ test/programs/method/schema.json | 17 +++++++++++++++++ test/schema.test.ts | 2 ++ typescript-json-schema.ts | 24 ++++++++++++++---------- 4 files changed, 36 insertions(+), 10 deletions(-) create mode 100644 test/programs/method/main.ts create mode 100644 test/programs/method/schema.json diff --git a/test/programs/method/main.ts b/test/programs/method/main.ts new file mode 100644 index 00000000..76e521cb --- /dev/null +++ b/test/programs/method/main.ts @@ -0,0 +1,3 @@ +interface MyObject { + setTime?(d: Date): boolean; +} diff --git a/test/programs/method/schema.json b/test/programs/method/schema.json new file mode 100644 index 00000000..d6537333 --- /dev/null +++ b/test/programs/method/schema.json @@ -0,0 +1,17 @@ +{ + "type": "object", + "properties": { + "setTime": { + "parameters": [ + { + "name": "d", + "type": "Date", + "optional": false + } + ], + "type": "object", + "returnType": "boolean" + } + }, + "$schema": "http://json-schema.org/draft-04/schema#" +} diff --git a/test/schema.test.ts b/test/schema.test.ts index ba9e01ad..960d8bc6 100644 --- a/test/schema.test.ts +++ b/test/schema.test.ts @@ -82,6 +82,8 @@ describe("schema", () => { // not supported right now // assertSchema("module-interface-deep", "main.ts", "Def"); + assertSchema("method", "main.ts", "MyObject"); + assertSchema("enums-string", "main.ts", "MyObject"); assertSchema("enums-number", "main.ts", "MyObject"); assertSchema("enums-number-initialized", "main.ts", "Enum"); diff --git a/typescript-json-schema.ts b/typescript-json-schema.ts index 7964edfc..699829a9 100644 --- a/typescript-json-schema.ts +++ b/typescript-json-schema.ts @@ -521,9 +521,7 @@ export class JsonSchemaGenerator { } private getTypeDescription(type?: ts.TypeNode): TypeArgument { - const typeObject: TypeArgument = { - type: "undefined" - }; + const typeObject: TypeArgument = {}; if (!type) { return typeObject; @@ -532,7 +530,7 @@ export class JsonSchemaGenerator { if (this.typeIsTypeReference(type)) { typeObject.type = type.typeName.getText(); - if (type.typeArguments) { + if (type.typeArguments && type.typeArguments.length > 0) { typeObject.typeArguments = type.typeArguments.map((typeArgument) => { return this.getTypeDescription(typeArgument); }); @@ -555,19 +553,25 @@ export class JsonSchemaGenerator { return param1.pos - param2.pos; }) .map((parameter: ts.ParameterDeclaration) => { - const typeObject = this.getTypeDescription(parameter.type); - return { + const typeObject: TypeArgument = this.getTypeDescription(parameter.type); + const parameterObject: Parameter = { name: parameter.name.getText(), type: typeObject.type, - typeArguments: typeObject.typeArguments, optional: (parameter.questionToken && parameter.questionToken.kind === ts.SyntaxKind.QuestionToken) ? true : false, }; + if (typeObject.typeArguments) { + parameterObject.typeArguments = typeObject.typeArguments; + } + return parameterObject; }); - const returnType = this.getTypeDescription(declaration.type); - definition.type = "Function"; + const returnType: TypeArgument = this.getTypeDescription(declaration.type); + definition.type = "object"; definition.returnType = returnType.type; - definition.returnTypeArguments = returnType.typeArguments; + + if (returnType.typeArguments) { + definition.returnTypeArguments = returnType.typeArguments; + } // The description describes the return-type, which is misleading, because one would expect it to describe the method itsef delete definition.description; From cb6f7658dc6e77ff5d6674ef71b06659bd3ea5ad Mon Sep 17 00:00:00 2001 From: Heiko Mathes Date: Mon, 5 Jun 2017 03:16:34 +0200 Subject: [PATCH 5/8] :fire: Reset files, that shouldn't have been commited back to master --- package-lock.json | 760 ---------------------------------- typescript-json-schema.d.ts | 19 - typescript-json-schema.js | 167 ++------ typescript-json-schema.js.map | 2 +- 4 files changed, 34 insertions(+), 914 deletions(-) delete mode 100644 package-lock.json diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index fe1ea349..00000000 --- a/package-lock.json +++ /dev/null @@ -1,760 +0,0 @@ -{ - "name": "typescript-json-schema", - "version": "0.12.0", - "lockfileVersion": 1, - "dependencies": { - "@types/assertion-error": { - "version": "1.0.30", - "resolved": "https://registry.npmjs.org/@types/assertion-error/-/assertion-error-1.0.30.tgz", - "integrity": "sha1-89DV2i7Ie1FOMNs/+aAYh7VhnCk=", - "dev": true - }, - "@types/chai": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-3.5.2.tgz", - "integrity": "sha1-wRzSgX06QBt7oPWkIPNcVhObHB4=", - "dev": true - }, - "@types/glob": { - "version": "5.0.30", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-5.0.30.tgz", - "integrity": "sha1-ECZAnFYlqGiQdGAoCNCCsoZ7ilE=", - "dev": true - }, - "@types/json-stable-stringify": { - "version": "1.0.31", - "resolved": "https://registry.npmjs.org/@types/json-stable-stringify/-/json-stable-stringify-1.0.31.tgz", - "integrity": "sha1-tse8UH9SZ+iM0oObOsais5tlOjI=", - "dev": true - }, - "@types/minimatch": { - "version": "2.0.29", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-2.0.29.tgz", - "integrity": "sha1-UALhT3Xi1x5WQoHfBDHIwbSio2o=", - "dev": true - }, - "@types/mocha": { - "version": "2.2.41", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-2.2.41.tgz", - "integrity": "sha1-4nzwgXFT658nE7LT9saPHhw8pgg=", - "dev": true - }, - "@types/node": { - "version": "7.0.27", - "resolved": "https://registry.npmjs.org/@types/node/-/node-7.0.27.tgz", - "integrity": "sha512-2QMiuVOEye2yKmMwE1V96C9HSShmT0WSm6dv2WjacvePEjQNNJGAerTO5hdYhj5lpdK5MW+FVxmyzDhr4omIdw==", - "dev": true - }, - "ajv": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.1.5.tgz", - "integrity": "sha1-hzSTG2AfANT+73xlc4130bZdH2g=", - "dev": true - }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "assertion-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.0.2.tgz", - "integrity": "sha1-E8pRXYYgbaC6xm6DTdOX2HWBCUw=", - "dev": true - }, - "babel-code-frame": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.22.0.tgz", - "integrity": "sha1-AnYgvuVnqIwyVhV05/0IAdMxGOQ=", - "dev": true - }, - "balanced-match": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=" - }, - "brace-expansion": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.7.tgz", - "integrity": "sha1-Pv/DxQ4ABTH7cg6v+A8K6O8jz1k=" - }, - "browser-stdout": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz", - "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=", - "dev": true - }, - "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" - }, - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" - }, - "chai": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.0.1.tgz", - "integrity": "sha1-nkHoCOF6fxCAdyHirFpYnVuwkII=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", - "dev": true - }, - "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "dependencies": { - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=" - } - } - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "dev": true - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" - }, - "colors": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", - "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", - "dev": true - }, - "commander": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", - "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "cross-spawn": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", - "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=" - }, - "debug": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.0.tgz", - "integrity": "sha1-vFlryr52F/Edn6FTYe3tVgi4SZs=", - "dev": true - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" - }, - "deep-eql": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-2.0.2.tgz", - "integrity": "sha1-sbrAblbwp2d3aG1Qyf63XC7XZ5o=", - "dev": true, - "dependencies": { - "type-detect": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-3.0.0.tgz", - "integrity": "sha1-RtDMhVOrt7E6NSsNbeov1Y8tm1U=", - "dev": true - } - } - }, - "diff": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.2.0.tgz", - "integrity": "sha1-yc45Okt8vQsFinJck98pkCeGj/k=", - "dev": true - }, - "error-ex": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", - "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=" - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", - "dev": true - }, - "execa": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.5.1.tgz", - "integrity": "sha1-3j+4XLjW6RyFvLzrFkWBeFy1ezY=" - }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=" - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "get-caller-file": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", - "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=" - }, - "get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", - "dev": true - }, - "get-stream": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", - "integrity": "sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4=" - }, - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==" - }, - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" - }, - "graceful-readlink": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", - "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", - "dev": true - }, - "growl": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz", - "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=", - "dev": true - }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "hosted-git-info": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.4.2.tgz", - "integrity": "sha1-AHa59GonBQbduq6lZJaJdGBhKmc=" - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=" - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - }, - "invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" - }, - "is-builtin-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=" - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=" - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" - }, - "js-tokens": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.1.tgz", - "integrity": "sha1-COnxMkhKLEWjCQfp3E1VZ7fxFNc=", - "dev": true - }, - "json-stable-stringify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", - "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=" - }, - "json3": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", - "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", - "dev": true - }, - "jsonify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=" - }, - "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=" - }, - "load-json-file": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", - "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=" - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=" - }, - "lodash._baseassign": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", - "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", - "dev": true - }, - "lodash._basecopy": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", - "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", - "dev": true - }, - "lodash._basecreate": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz", - "integrity": "sha1-G8ZhYU2qf8MRt9A78WgGoCE8+CE=", - "dev": true - }, - "lodash._getnative": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", - "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", - "dev": true - }, - "lodash._isiterateecall": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", - "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", - "dev": true - }, - "lodash.create": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/lodash.create/-/lodash.create-3.1.1.tgz", - "integrity": "sha1-1/KEnw29p+BGgruM1yqwIkYd6+c=", - "dev": true - }, - "lodash.isarguments": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", - "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", - "dev": true - }, - "lodash.isarray": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", - "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", - "dev": true - }, - "lodash.keys": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", - "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", - "dev": true - }, - "lru-cache": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.0.2.tgz", - "integrity": "sha1-HRdnnAac2l0ECZGgnbwsDbN35V4=" - }, - "mem": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", - "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=" - }, - "mimic-fn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", - "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=" - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==" - }, - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true - }, - "mocha": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-3.4.2.tgz", - "integrity": "sha1-0O9NMyEm2/GNDWQMmzgt1IvpdZQ=", - "dev": true, - "dependencies": { - "glob": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", - "integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=", - "dev": true - } - } - }, - "ms": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", - "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", - "dev": true - }, - "normalize-package-data": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.3.8.tgz", - "integrity": "sha1-2Bntoqne29H/pWPqQHHZNngilbs=" - }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=" - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=" - }, - "os-locale": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.0.0.tgz", - "integrity": "sha1-FZGN7VEFIrge565aMJ1U9jn8OaQ=" - }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" - }, - "p-limit": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", - "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=" - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=" - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=" - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" - }, - "path-parse": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", - "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", - "dev": true - }, - "path-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", - "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=" - }, - "pathval": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz", - "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=", - "dev": true - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=" - }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" - }, - "read-pkg": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", - "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=" - }, - "read-pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", - "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=" - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" - }, - "require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" - }, - "resolve": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.3.3.tgz", - "integrity": "sha1-ZVkHw0aahoDcLeOidaj91paR8OU=", - "dev": true - }, - "semver": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=" - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" - }, - "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" - }, - "source-map": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", - "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=", - "dev": true - }, - "source-map-support": { - "version": "0.4.15", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.15.tgz", - "integrity": "sha1-AyAt9lwG0r2MfsI2KhkwVv7407E=", - "dev": true - }, - "spdx-correct": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", - "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=" - }, - "spdx-expression-parse": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", - "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=" - }, - "spdx-license-ids": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", - "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=" - }, - "string-width": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.0.0.tgz", - "integrity": "sha1-Y1xUNsxypuDDh87KJ41OLuxSaH4=", - "dependencies": { - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" - } - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=" - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" - }, - "strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" - }, - "supports-color": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.2.tgz", - "integrity": "sha1-cqJiiU2dQIuVbKBf83su2KbiotU=", - "dev": true - }, - "tslib": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.7.1.tgz", - "integrity": "sha1-vIAEFkaRkjp5/oN4u+s9ogF1OOw=", - "dev": true - }, - "tslint": { - "version": "5.4.2", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.4.2.tgz", - "integrity": "sha1-YJtmQMwEJPSjlamt9ow3VWPFScc=", - "dev": true - }, - "tsutils": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.3.0.tgz", - "integrity": "sha1-luZh18I2PzGtyJkqxnu+e3/BdeU=", - "dev": true - }, - "type-detect": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.3.tgz", - "integrity": "sha1-Dj8mcLRAmbC0bChNE2p+9Jx0wuo=", - "dev": true - }, - "typescript": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.1.6.tgz", - "integrity": "sha1-QMfm6eXaeWG3cYtVUF+crJSHpgc=" - }, - "validate-npm-package-license": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", - "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=" - }, - "which": { - "version": "1.2.14", - "resolved": "https://registry.npmjs.org/which/-/which-1.2.14.tgz", - "integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=" - }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" - }, - "wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", - "dependencies": { - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=" - } - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" - }, - "yargs": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.1.tgz", - "integrity": "sha1-Qg73XoQMFFeoCtzKm8b6OEneUao=" - }, - "yargs-parser": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", - "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=" - } - } -} diff --git a/typescript-json-schema.d.ts b/typescript-json-schema.d.ts index ed9cdd24..b3e200b1 100644 --- a/typescript-json-schema.d.ts +++ b/typescript-json-schema.d.ts @@ -20,14 +20,6 @@ export declare type Args = { }; export declare type PartialArgs = Partial; export declare type PrimitiveType = number | boolean | string | null; -export declare type TypeArgument = { - type?: string; - typeArguments?: TypeArgument[]; -}; -export declare type Parameter = TypeArgument & { - name: string; - optional: boolean; -}; export declare type Definition = { $ref?: string; description?: string; @@ -36,7 +28,6 @@ export declare type Definition = { anyOf?: Definition[]; title?: string; type?: string | string[]; - typeArguments?: TypeArgument[]; definitions?: { [key: string]: any; }; @@ -53,9 +44,6 @@ export declare type Definition = { propertyOrder?: string[]; properties?: {}; defaultProperties?: string[]; - parameters?: Parameter[]; - returnType?: string; - returnTypeArguments?: TypeArgument[]; typeof?: "function"; }; export declare class JsonSchemaGenerator { @@ -67,8 +55,6 @@ export declare class JsonSchemaGenerator { private tc; private reffedDefinitions; private userValidationKeywords; - private typeNamesById; - private typeNamesUsed; constructor(allSymbols: { [name: string]: ts.Type; }, userSymbols: { @@ -88,20 +74,15 @@ export declare class JsonSchemaGenerator { private getDefinitionForProperty(prop, tc, node); private getEnumDefinition(clazzType, tc, definition); private getUnionDefinition(unionType, prop, tc, unionModifier, definition); - private typeIsTypeReference(type); - private getTypeDescription(type?); - private getMethodDefinition(methodType, definition); private getClassDefinition(clazzType, tc, definition); private simpleTypesAllowedProperties; private addSimpleType(def, type); private makeNullable(def); - private getTypeName(typ, tc); private getTypeDefinition(typ, tc, asRef?, unionModifier?, prop?, reffedType?); setSchemaOverride(symbolName: string, schema: Definition): void; getSchemaForSymbol(symbolName: string, includeReffedDefinitions?: boolean): Definition; getSchemaForSymbols(symbols: string[]): Definition; getUserSymbols(): string[]; - getMainFileSymbols(program: ts.Program): string[]; } export declare function getProgramFromFiles(files: string[], compilerOptions?: ts.CompilerOptions): ts.Program; export declare function buildGenerator(program: ts.Program, args?: PartialArgs): JsonSchemaGenerator | null; diff --git a/typescript-json-schema.js b/typescript-json-schema.js index e0d936f9..754013a7 100644 --- a/typescript-json-schema.js +++ b/typescript-json-schema.js @@ -61,7 +61,7 @@ function unique(arr) { } var r = []; for (var k in temp) { - if (Object.prototype.hasOwnProperty.call(temp, k)) { + if (temp.hasOwnProperty(k)) { r.push(k); } } @@ -72,8 +72,6 @@ var JsonSchemaGenerator = (function () { if (args === void 0) { args = getDefaultArgs(); } this.args = args; this.reffedDefinitions = {}; - this.typeNamesById = {}; - this.typeNamesUsed = {}; this.simpleTypesAllowedProperties = { type: true, description: true @@ -159,7 +157,7 @@ var JsonSchemaGenerator = (function () { definition.items = fixedTypes; definition.minItems = fixedTypes.length; definition.additionalItems = { - anyOf: fixedTypes + "anyOf": fixedTypes }; } else { @@ -231,9 +229,8 @@ var JsonSchemaGenerator = (function () { if (definition.hasOwnProperty("ignore")) { return null; } - var valDecl = prop.valueDeclaration; - if (valDecl && valDecl.initializer) { - var initial = valDecl.initializer; + var initial = prop.valueDeclaration.initializer; + if (initial) { if (initial.expression) { console.warn("initializer is expression for property " + propertyName); } @@ -394,58 +391,6 @@ var JsonSchemaGenerator = (function () { } return definition; }; - JsonSchemaGenerator.prototype.typeIsTypeReference = function (type) { - return type.kind === ts.SyntaxKind.TypeReference; - }; - JsonSchemaGenerator.prototype.getTypeDescription = function (type) { - var _this = this; - var typeObject = { - type: "undefined" - }; - if (!type) { - return typeObject; - } - if (this.typeIsTypeReference(type)) { - typeObject.type = type.typeName.getText(); - if (type.typeArguments) { - typeObject.typeArguments = type.typeArguments.map(function (typeArgument) { - return _this.getTypeDescription(typeArgument); - }); - } - } - else if (type.kind === ts.SyntaxKind.StringKeyword) { - typeObject.type = "string"; - } - else if (type.kind === ts.SyntaxKind.NumberKeyword) { - typeObject.type = "number"; - } - else if (type.kind === ts.SyntaxKind.BooleanKeyword) { - typeObject.type = "boolean"; - } - return typeObject; - }; - JsonSchemaGenerator.prototype.getMethodDefinition = function (methodType, definition) { - var _this = this; - var declaration = methodType.getSymbol().getDeclarations()[0]; - definition.parameters = declaration.parameters.sort(function (param1, param2) { - return param1.pos - param2.pos; - }) - .map(function (parameter) { - var typeObject = _this.getTypeDescription(parameter.type); - return { - name: parameter.name.getText(), - type: typeObject.type, - typeArguments: typeObject.typeArguments, - optional: (parameter.questionToken && parameter.questionToken.kind === ts.SyntaxKind.QuestionToken) ? true : false, - }; - }); - var returnType = this.getTypeDescription(declaration.type); - definition.type = "Function"; - definition.returnType = returnType.type; - definition.returnTypeArguments = returnType.typeArguments; - delete definition.description; - return definition; - }; JsonSchemaGenerator.prototype.getClassDefinition = function (clazzType, tc, definition) { var _this = this; var node = clazzType.getSymbol().getDeclarations()[0]; @@ -457,36 +402,35 @@ var JsonSchemaGenerator = (function () { var props = tc.getPropertiesOfType(clazzType); var fullName = tc.typeToString(clazzType, undefined, ts.TypeFormatFlags.UseFullyQualifiedType); var modifierFlags = ts.getCombinedModifierFlags(node); - if (modifierFlags & ts.ModifierFlags.Abstract) { + if (props.length === 0 && clazz.members && clazz.members.length === 1 && clazz.members[0].kind === ts.SyntaxKind.IndexSignature) { + var indexSignature = clazz.members[0]; + if (indexSignature.parameters.length !== 1) { + throw "Not supported: IndexSignatureDeclaration parameters.length != 1"; + } + var indexSymbol = indexSignature.parameters[0].symbol; + var indexType = tc.getTypeOfSymbolAtLocation(indexSymbol, node); + var isStringIndexed = (indexType.flags === ts.TypeFlags.String); + if (indexType.flags !== ts.TypeFlags.Number && !isStringIndexed) { + throw "Not supported: IndexSignatureDeclaration with index symbol other than a number or a string"; + } + var typ = tc.getTypeAtLocation(indexSignature.type); + var def = this.getTypeDefinition(typ, tc, undefined, "anyOf"); + if (isStringIndexed) { + definition.type = "object"; + definition.additionalProperties = def; + } + else { + definition.type = "array"; + definition.items = def; + } + } + else if (modifierFlags & ts.ModifierFlags.Abstract) { var oneOf = this.inheritingTypes[fullName].map(function (typename) { return _this.getTypeDefinition(_this.allSymbols[typename], tc); }); definition.oneOf = oneOf; } else { - var indexSignatures = clazz.members.filter(function (x) { return x.kind === ts.SyntaxKind.IndexSignature; }); - if (indexSignatures.length === 1) { - var indexSignature = indexSignatures[0]; - if (indexSignature.parameters.length !== 1) { - throw "Not supported: IndexSignatureDeclaration parameters.length != 1"; - } - var indexSymbol = indexSignature.parameters[0].symbol; - var indexType = tc.getTypeOfSymbolAtLocation(indexSymbol, node); - var isStringIndexed = (indexType.flags === ts.TypeFlags.String); - if (indexType.flags !== ts.TypeFlags.Number && !isStringIndexed) { - throw "Not supported: IndexSignatureDeclaration with index symbol other than a number or a string"; - } - var typ = tc.getTypeAtLocation(indexSignature.type); - var def = this.getTypeDefinition(typ, tc, undefined, "anyOf"); - if (isStringIndexed) { - definition.type = "object"; - definition.additionalProperties = def; - } - else { - definition.type = "array"; - definition.items = def; - } - } var propertyDefinitions = props.reduce(function (all, prop) { var propertyName = prop.getName(); var propDef = _this.getDefinitionForProperty(prop, tc, node); @@ -495,12 +439,8 @@ var JsonSchemaGenerator = (function () { } return all; }, {}); - if (definition.type === undefined) { - definition.type = "object"; - } - if (definition.type === "object" && Object.keys(propertyDefinitions).length > 0) { - definition.properties = propertyDefinitions; - } + definition.type = "object"; + definition.properties = propertyDefinitions; if (this.args.useDefaultProperties) { definition.defaultProperties = []; } @@ -574,25 +514,6 @@ var JsonSchemaGenerator = (function () { } return def; }; - JsonSchemaGenerator.prototype.getTypeName = function (typ, tc) { - var id = typ.id; - if (this.typeNamesById[id]) { - return this.typeNamesById[id]; - } - var baseName = tc.typeToString(typ, undefined, ts.TypeFormatFlags.UseFullyQualifiedType); - var name = baseName; - if (this.typeNamesUsed[name]) { - for (var i = 1; true; ++i) { - name = baseName + "_" + i; - if (!this.typeNamesUsed[name]) { - break; - } - } - } - this.typeNamesById[id] = name; - this.typeNamesUsed[name] = true; - return name; - }; JsonSchemaGenerator.prototype.getTypeDefinition = function (typ, tc, asRef, unionModifier, prop, reffedType) { if (asRef === void 0) { asRef = this.args.useRef; } if (unionModifier === void 0) { unionModifier = "anyOf"; } @@ -620,11 +541,11 @@ var JsonSchemaGenerator = (function () { reffedType).replace(REGEX_FILE_NAME, ""); } else if (asRef) { - fullTypeName = this.getTypeName(typ, tc); + fullTypeName = tc.typeToString(typ, undefined, ts.TypeFormatFlags.UseFullyQualifiedType); } if (asRef) { returnedDefinition = { - $ref: "#/definitions/" + fullTypeName + "$ref": "#/definitions/" + fullTypeName }; } var otherAnnotations = {}; @@ -672,9 +593,6 @@ var JsonSchemaGenerator = (function () { definition.type = "object"; definition.properties = {}; } - else if (symbol && symbol.getDeclarations()[0].kind === ts.SyntaxKind.MethodSignature) { - this.getMethodDefinition(typ, definition); - } else { this.getClassDefinition(typ, tc, definition); } @@ -702,7 +620,7 @@ var JsonSchemaGenerator = (function () { }; JsonSchemaGenerator.prototype.getSchemaForSymbols = function (symbols) { var root = { - $schema: "http://json-schema.org/draft-04/schema#", + "$schema": "http://json-schema.org/draft-04/schema#", definitions: {} }; for (var i = 0; i < symbols.length; i++) { @@ -714,25 +632,6 @@ var JsonSchemaGenerator = (function () { JsonSchemaGenerator.prototype.getUserSymbols = function () { return Object.keys(this.userSymbols); }; - JsonSchemaGenerator.prototype.getMainFileSymbols = function (program) { - var _this = this; - var files = program.getSourceFiles().filter(function (file) { return !file.isDeclarationFile; }); - if (files.length) { - var mainFile_1 = files[0]; - return Object.keys(this.userSymbols).filter(function (key) { - var symbol = _this.userSymbols[key].getSymbol(); - if (!symbol || !symbol.declarations || !symbol.declarations.length) { - return false; - } - var node = symbol.declarations[0]; - while (node && node.parent) { - node = node.parent; - } - return node === mainFile_1; - }); - } - return []; - }; return JsonSchemaGenerator; }()); JsonSchemaGenerator.validationKeywords = { @@ -837,7 +736,7 @@ function generateSchema(program, fullTypeName, args) { } var definition; if (fullTypeName === "*") { - definition = generator.getSchemaForSymbols(generator.getMainFileSymbols(program)); + definition = generator.getSchemaForSymbols(generator.getUserSymbols()); } else { definition = generator.getSchemaForSymbol(fullTypeName); diff --git a/typescript-json-schema.js.map b/typescript-json-schema.js.map index 2b42a9b5..a5eb0a82 100644 --- a/typescript-json-schema.js.map +++ b/typescript-json-schema.js.map @@ -1 +1 @@ -{"version":3,"file":"typescript-json-schema.js","sourceRoot":"","sources":["typescript-json-schema.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"typescript-json-schema.js","sourceRoot":"","sources":["typescript-json-schema.ts"],"names":[],"mappings":"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"} \ No newline at end of file From 5920297c082a8b6faa491bf36b2f6f266468eb26 Mon Sep 17 00:00:00 2001 From: Heiko Mathes Date: Mon, 5 Jun 2017 04:25:30 +0200 Subject: [PATCH 6/8] :muscle: creating worst-case test-scenario --- test/programs/method/main.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/programs/method/main.ts b/test/programs/method/main.ts index 76e521cb..8f206dfd 100644 --- a/test/programs/method/main.ts +++ b/test/programs/method/main.ts @@ -1,3 +1,3 @@ interface MyObject { - setTime?(d: Date): boolean; + setTime? & {name: {first: string, last: string}}, T2>(d: {name: string, test: number} | {test: number}, someParam?: T2): Array; } From 3a5e509b34ee33a1bc4da98315961e119226a6d6 Mon Sep 17 00:00:00 2001 From: Heiko Mathes Date: Mon, 5 Jun 2017 06:52:45 +0200 Subject: [PATCH 7/8] :construction: Improve method-tests --- test/programs/method-extreme/main.ts | 3 + test/programs/method-extreme/schema.json | 93 ++++++++++++++ test/programs/method-simple/main.ts | 3 + .../{method => method-simple}/schema.json | 9 +- test/programs/method/main.ts | 3 - test/schema.test.ts | 3 +- typescript-json-schema.ts | 119 +++++++++++++++--- 7 files changed, 210 insertions(+), 23 deletions(-) create mode 100644 test/programs/method-extreme/main.ts create mode 100644 test/programs/method-extreme/schema.json create mode 100644 test/programs/method-simple/main.ts rename test/programs/{method => method-simple}/schema.json (64%) delete mode 100644 test/programs/method/main.ts diff --git a/test/programs/method-extreme/main.ts b/test/programs/method-extreme/main.ts new file mode 100644 index 00000000..f4b16fdf --- /dev/null +++ b/test/programs/method-extreme/main.ts @@ -0,0 +1,3 @@ +interface MyObject { + setTime? & {name: {first: string, last: string}}, T2>(d: {name: string, test: number} | {name: {first: string, last: string}}, someParam?: T2): Array; +} diff --git a/test/programs/method-extreme/schema.json b/test/programs/method-extreme/schema.json new file mode 100644 index 00000000..59917697 --- /dev/null +++ b/test/programs/method-extreme/schema.json @@ -0,0 +1,93 @@ +{ + "type": "object", + "properties": { + "setTime": { + "parameters": [ + { + "name": "d", + "type": "union", + "typeArguments": [ + { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "test": { + "type": "number" + } + } + }, + { + "type": "object", + "properties": { + "name": { + "type": "object", + "properties": { + "first": { + "type": "string" + }, + "last": { + "type": "string" + } + } + } + } + } + ] + }, + { + "name": "someParam", + "optional": true, + "type": "T2" + } + ], + "typeParameters": [ + { + "name": "T", + "constraint": { + "type": "intersection", + "typeArguments": [ + { + "type": "Array", + "typeArguments": [ + { + "type": "string" + } + ] + }, + { + "type": "object", + "properties": { + "name": { + "type": "object", + "properties": { + "first": { + "type": "string" + }, + "last": { + "type": "string" + } + } + } + } + } + ] + } + }, + { + "name": "T2" + } + ], + "type": "object", + "returnType": "Array", + "returnTypeArguments": [ + { + "type": "T" + } + ], + "optional": true + } + }, + "$schema": "http://json-schema.org/draft-04/schema#" +} diff --git a/test/programs/method-simple/main.ts b/test/programs/method-simple/main.ts new file mode 100644 index 00000000..ec91ce8c --- /dev/null +++ b/test/programs/method-simple/main.ts @@ -0,0 +1,3 @@ +interface MyObject { + setTime(d: string): void; +} diff --git a/test/programs/method/schema.json b/test/programs/method-simple/schema.json similarity index 64% rename from test/programs/method/schema.json rename to test/programs/method-simple/schema.json index d6537333..299fc6c8 100644 --- a/test/programs/method/schema.json +++ b/test/programs/method-simple/schema.json @@ -5,13 +5,14 @@ "parameters": [ { "name": "d", - "type": "Date", - "optional": false + "type": "string" } ], - "type": "object", - "returnType": "boolean" + "type": "object" } }, + "required": [ + "setTime" + ], "$schema": "http://json-schema.org/draft-04/schema#" } diff --git a/test/programs/method/main.ts b/test/programs/method/main.ts deleted file mode 100644 index 8f206dfd..00000000 --- a/test/programs/method/main.ts +++ /dev/null @@ -1,3 +0,0 @@ -interface MyObject { - setTime? & {name: {first: string, last: string}}, T2>(d: {name: string, test: number} | {test: number}, someParam?: T2): Array; -} diff --git a/test/schema.test.ts b/test/schema.test.ts index 960d8bc6..d45087d9 100644 --- a/test/schema.test.ts +++ b/test/schema.test.ts @@ -82,7 +82,8 @@ describe("schema", () => { // not supported right now // assertSchema("module-interface-deep", "main.ts", "Def"); - assertSchema("method", "main.ts", "MyObject"); + assertSchema("method-extreme", "main.ts", "MyObject"); + assertSchema("method-simple", "main.ts", "MyObject"); assertSchema("enums-string", "main.ts", "MyObject"); assertSchema("enums-number", "main.ts", "MyObject"); diff --git a/typescript-json-schema.ts b/typescript-json-schema.ts index 699829a9..5594fab5 100644 --- a/typescript-json-schema.ts +++ b/typescript-json-schema.ts @@ -53,12 +53,14 @@ export type PrimitiveType = number | boolean | string | null; export type TypeArgument = { type?: string, - typeArguments?: TypeArgument[] + typeArguments?: TypeArgument[], + properties?: {}, + constraint?: TypeArgument }; export type Parameter = TypeArgument & { name: string, - optional: boolean + optional?: boolean }; export type Definition = { @@ -87,8 +89,10 @@ export type Definition = { parameters?: Parameter[] returnType?: string, returnTypeArguments?: TypeArgument[], + typeParameters?: TypeArgument[], + optional?: boolean, - typeof?: "function" + typeof?: "function"; }; function extend(target: any, ..._: any[]) { @@ -516,22 +520,74 @@ export class JsonSchemaGenerator { return definition; } - private typeIsTypeReference(type: ts.TypeNode): type is ts.TypeReferenceNode { + private typeIsTypeReference(type: ts.Node): type is ts.TypeReferenceNode { return type.kind === ts.SyntaxKind.TypeReference; } - private getTypeDescription(type?: ts.TypeNode): TypeArgument { + private typeIsUnionType(type: ts.Node): type is ts.UnionTypeNode { + return type.kind === ts.SyntaxKind.UnionType; + } + + private typeIsIntersectionType(type: ts.Node): type is ts.IntersectionTypeNode { + return type.kind === ts.SyntaxKind.IntersectionType; + } + + private typeIsTypeLiteral(type: ts.Node): type is ts.TypeLiteralNode { + return type.kind === ts.SyntaxKind.TypeLiteral; + } + + private typeElementIsPropertySignature(type: ts.Node): type is ts.PropertySignature { + return type.kind === ts.SyntaxKind.PropertySignature; + } + + private declarationIsPrameterDeclaration(declaration: ts.Declaration): declaration is ts.ParameterDeclaration { + return declaration.kind === ts.SyntaxKind.Parameter; + } + + private declarationIsTypeParameterDeclaration(declaration: ts.Declaration): declaration is ts.TypeParameterDeclaration { + return declaration.kind === ts.SyntaxKind.TypeParameter; + } + + private getLiteralType(typeMembers: Array): any { + const literalType = {}; + if (!typeMembers || typeMembers.length === 0) { + return literalType; + } + + for (let i = 0; i < typeMembers.length; i++) { + const typeMember: ts.TypeElement = typeMembers[i]; + if (this.typeElementIsPropertySignature(typeMember)) { + literalType[typeMember.name.getText()] = this.getTypeDescription(typeMember.type); + } + } + + return literalType; + } + + private getTypeDescription(type?: ts.Node): TypeArgument { const typeObject: TypeArgument = {}; if (!type) { return typeObject; } + if (this.typeIsUnionType(type)) { + typeObject.type = "union"; + typeObject.typeArguments = type.types.map((subType: ts.TypeNode) => { + return this.getTypeDescription(subType); + }); + } + if (this.typeIsIntersectionType(type)) { + typeObject.type = "intersection"; + typeObject.typeArguments = type.types.map((subType: ts.TypeNode) => { + return this.getTypeDescription(subType); + }); + } if (this.typeIsTypeReference(type)) { typeObject.type = type.typeName.getText(); if (type.typeArguments && type.typeArguments.length > 0) { - typeObject.typeArguments = type.typeArguments.map((typeArgument) => { + typeObject.typeArguments = type.typeArguments.map((typeArgument: ts.TypeNode) => { return this.getTypeDescription(typeArgument); }); } @@ -541,38 +597,71 @@ export class JsonSchemaGenerator { typeObject.type = "number"; } else if (type.kind === ts.SyntaxKind.BooleanKeyword) { typeObject.type = "boolean"; + } else if (this.typeIsTypeLiteral(type)) { + typeObject.type = "object"; + typeObject.properties = this.getLiteralType(type.members); } return typeObject; } - private getMethodDefinition(methodType: ts.Type, definition: Definition): Definition { - const declaration: ts.MethodDeclaration = methodType.getSymbol().getDeclarations()[0]; - - definition.parameters = declaration.parameters.sort((param1, param2) => { + private getMethodParameters(parameters: ts.NodeArray): Array { + return parameters.sort((param1, param2) => { return param1.pos - param2.pos; }) - .map((parameter: ts.ParameterDeclaration) => { - const typeObject: TypeArgument = this.getTypeDescription(parameter.type); + .map((parameter: ts.Declaration) => { + let typeObject: TypeArgument = {}; + if (this.declarationIsPrameterDeclaration(parameter)) { + typeObject = this.getTypeDescription(parameter.type); + } else if (this.declarationIsTypeParameterDeclaration(parameter)) { + typeObject = this.getTypeDescription(parameter); + } else { + return {name: "__name_not_found__"}; + } + const parameterObject: Parameter = { name: parameter.name.getText(), - type: typeObject.type, - optional: (parameter.questionToken && parameter.questionToken.kind === ts.SyntaxKind.QuestionToken) ? true : false, }; + + if (this.declarationIsPrameterDeclaration(parameter) && parameter.questionToken && parameter.questionToken.kind === ts.SyntaxKind.QuestionToken) { + parameterObject.optional = true; + } + + if (this.declarationIsTypeParameterDeclaration(parameter) && parameter.constraint) { + parameterObject.constraint = this.getTypeDescription(parameter.constraint); + } + + if (typeObject.type) { + parameterObject.type = typeObject.type; + } if (typeObject.typeArguments) { parameterObject.typeArguments = typeObject.typeArguments; } return parameterObject; }); + } + + private getMethodDefinition(methodType: ts.Type, definition: Definition): Definition { + const declaration: ts.MethodDeclaration = methodType.getSymbol().getDeclarations()[0]; + + definition.parameters = this.getMethodParameters(declaration.parameters); + if (declaration.typeParameters) { + definition.typeParameters = this.getMethodParameters(declaration.typeParameters); + } const returnType: TypeArgument = this.getTypeDescription(declaration.type); definition.type = "object"; - definition.returnType = returnType.type; + if (returnType.type) { + definition.returnType = returnType.type; + } if (returnType.typeArguments) { definition.returnTypeArguments = returnType.typeArguments; } + if (declaration.questionToken && declaration.questionToken.kind === ts.SyntaxKind.QuestionToken) { + definition.optional = true; + } // The description describes the return-type, which is misleading, because one would expect it to describe the method itsef delete definition.description; return definition; From 5b0929fb45359a3f80dad6aa1773db90a01380ff Mon Sep 17 00:00:00 2001 From: Heiko Mathes Date: Mon, 5 Jun 2017 07:15:25 +0200 Subject: [PATCH 8/8] :package: cleanup code --- typescript-json-schema.ts | 93 ++++++++++++++++++--------------------- 1 file changed, 43 insertions(+), 50 deletions(-) diff --git a/typescript-json-schema.ts b/typescript-json-schema.ts index 5594fab5..05710b81 100644 --- a/typescript-json-schema.ts +++ b/typescript-json-schema.ts @@ -92,7 +92,7 @@ export type Definition = { typeParameters?: TypeArgument[], optional?: boolean, - typeof?: "function"; + typeof?: "function" }; function extend(target: any, ..._: any[]) { @@ -548,22 +548,6 @@ export class JsonSchemaGenerator { return declaration.kind === ts.SyntaxKind.TypeParameter; } - private getLiteralType(typeMembers: Array): any { - const literalType = {}; - if (!typeMembers || typeMembers.length === 0) { - return literalType; - } - - for (let i = 0; i < typeMembers.length; i++) { - const typeMember: ts.TypeElement = typeMembers[i]; - if (this.typeElementIsPropertySignature(typeMember)) { - literalType[typeMember.name.getText()] = this.getTypeDescription(typeMember.type); - } - } - - return literalType; - } - private getTypeDescription(type?: ts.Node): TypeArgument { const typeObject: TypeArgument = {}; @@ -576,16 +560,13 @@ export class JsonSchemaGenerator { typeObject.typeArguments = type.types.map((subType: ts.TypeNode) => { return this.getTypeDescription(subType); }); - } - if (this.typeIsIntersectionType(type)) { + } else if (this.typeIsIntersectionType(type)) { typeObject.type = "intersection"; typeObject.typeArguments = type.types.map((subType: ts.TypeNode) => { return this.getTypeDescription(subType); }); - } - if (this.typeIsTypeReference(type)) { + } else if (this.typeIsTypeReference(type)) { typeObject.type = type.typeName.getText(); - if (type.typeArguments && type.typeArguments.length > 0) { typeObject.typeArguments = type.typeArguments.map((typeArgument: ts.TypeNode) => { return this.getTypeDescription(typeArgument); @@ -599,7 +580,13 @@ export class JsonSchemaGenerator { typeObject.type = "boolean"; } else if (this.typeIsTypeLiteral(type)) { typeObject.type = "object"; - typeObject.properties = this.getLiteralType(type.members); + typeObject.properties = {}; + for (let i = 0; i < type.members.length; i++) { + const typeMember: ts.TypeElement = type.members[i]; + if (this.typeElementIsPropertySignature(typeMember)) { + typeObject.properties[typeMember.name.getText()] = this.getTypeDescription(typeMember.type); + } + } } return typeObject; @@ -610,47 +597,53 @@ export class JsonSchemaGenerator { return param1.pos - param2.pos; }) .map((parameter: ts.Declaration) => { - let typeObject: TypeArgument = {}; - if (this.declarationIsPrameterDeclaration(parameter)) { - typeObject = this.getTypeDescription(parameter.type); - } else if (this.declarationIsTypeParameterDeclaration(parameter)) { - typeObject = this.getTypeDescription(parameter); - } else { - return {name: "__name_not_found__"}; - } + return this.getMethodParameter(parameter); + }); + } - const parameterObject: Parameter = { - name: parameter.name.getText(), - }; + private getMethodParameter(parameter: ts.Declaration) { + let typeObject: TypeArgument = {}; + if (this.declarationIsPrameterDeclaration(parameter)) { + typeObject = this.getTypeDescription(parameter.type); + } else if (this.declarationIsTypeParameterDeclaration(parameter)) { + typeObject = this.getTypeDescription(parameter); + } else { + return {name: "__name_not_found__"}; + } - if (this.declarationIsPrameterDeclaration(parameter) && parameter.questionToken && parameter.questionToken.kind === ts.SyntaxKind.QuestionToken) { - parameterObject.optional = true; - } + const parameterObject: Parameter = { + name: parameter.name.getText(), + }; - if (this.declarationIsTypeParameterDeclaration(parameter) && parameter.constraint) { - parameterObject.constraint = this.getTypeDescription(parameter.constraint); - } + if (this.declarationIsPrameterDeclaration(parameter) && parameter.questionToken && parameter.questionToken.kind === ts.SyntaxKind.QuestionToken) { + parameterObject.optional = true; + } - if (typeObject.type) { - parameterObject.type = typeObject.type; - } - if (typeObject.typeArguments) { - parameterObject.typeArguments = typeObject.typeArguments; - } - return parameterObject; - }); + if (this.declarationIsTypeParameterDeclaration(parameter) && parameter.constraint) { + parameterObject.constraint = this.getTypeDescription(parameter.constraint); + } + + if (typeObject.type) { + parameterObject.type = typeObject.type; + } + + if (typeObject.typeArguments) { + parameterObject.typeArguments = typeObject.typeArguments; + } + + return parameterObject; } private getMethodDefinition(methodType: ts.Type, definition: Definition): Definition { - const declaration: ts.MethodDeclaration = methodType.getSymbol().getDeclarations()[0]; + definition.type = "object"; + const declaration: ts.MethodDeclaration = methodType.getSymbol().getDeclarations()[0]; definition.parameters = this.getMethodParameters(declaration.parameters); if (declaration.typeParameters) { definition.typeParameters = this.getMethodParameters(declaration.typeParameters); } const returnType: TypeArgument = this.getTypeDescription(declaration.type); - definition.type = "object"; if (returnType.type) { definition.returnType = returnType.type; }