diff --git a/package-lock.json b/package-lock.json index 1b431395..49ba13af 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,17 +14,17 @@ } }, "@babel/core": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.4.4.tgz", - "integrity": "sha512-lQgGX3FPRgbz2SKmhMtYgJvVzGZrmjaF4apZ2bLwofAKiSjxU0drPh4S/VasyYXwaTs+A1gvQ45BN8SQJzHsQQ==", + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.4.5.tgz", + "integrity": "sha512-OvjIh6aqXtlsA8ujtGKfC7LYWksYSX8yQcM8Ay3LuvVeQ63lcOKgoZWVqcpFwkd29aYU9rVx7jxhfhiEDV9MZA==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", "@babel/generator": "^7.4.4", "@babel/helpers": "^7.4.4", - "@babel/parser": "^7.4.4", + "@babel/parser": "^7.4.5", "@babel/template": "^7.4.4", - "@babel/traverse": "^7.4.4", + "@babel/traverse": "^7.4.5", "@babel/types": "^7.4.4", "convert-source-map": "^1.1.0", "debug": "^4.1.0", @@ -35,6 +35,12 @@ "source-map": "^0.5.0" }, "dependencies": { + "@babel/parser": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.4.5.tgz", + "integrity": "sha512-9mUqkL1FF5T7f0WDFfAoDdiMVPWsdD1gZYzSnaXsxUCUqzuch/8of9G3VUSNiZmMBoRxT3neyVsqeiL/ZPcjew==", + "dev": true + }, "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", @@ -157,9 +163,9 @@ } }, "@babel/runtime": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.4.4.tgz", - "integrity": "sha512-w0+uT71b6Yi7i5SE0co4NioIpSYS6lLiXvCzWzGSKvpK5vdQtCbICHMj+gbAKAOtxiV6HsVh/MBdaF9EQ6faSg==", + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.4.5.tgz", + "integrity": "sha512-TuI4qpWZP6lGOGIuGWtp9sPluqYICmbk8T/1vpSysqJxRPkudh/ofFWyqdcMsDf2s7KvDL4/YHgKyvcS3g9CJQ==", "requires": { "regenerator-runtime": "^0.13.2" } @@ -176,22 +182,28 @@ } }, "@babel/traverse": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.4.4.tgz", - "integrity": "sha512-Gw6qqkw/e6AGzlyj9KnkabJX7VcubqPtkUQVAwkc0wUMldr3A/hezNB3Rc5eIvId95iSGkGIOe5hh1kMKf951A==", + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.4.5.tgz", + "integrity": "sha512-Vc+qjynwkjRmIFGxy0KYoPj4FdVDxLej89kMHFsWScq999uX+pwcX4v9mWRjW0KcAYTPAuVQl2LKP1wEVLsp+A==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", "@babel/generator": "^7.4.4", "@babel/helper-function-name": "^7.1.0", "@babel/helper-split-export-declaration": "^7.4.4", - "@babel/parser": "^7.4.4", + "@babel/parser": "^7.4.5", "@babel/types": "^7.4.4", "debug": "^4.1.0", "globals": "^11.1.0", "lodash": "^4.17.11" }, "dependencies": { + "@babel/parser": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.4.5.tgz", + "integrity": "sha512-9mUqkL1FF5T7f0WDFfAoDdiMVPWsdD1gZYzSnaXsxUCUqzuch/8of9G3VUSNiZmMBoRxT3neyVsqeiL/ZPcjew==", + "dev": true + }, "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", @@ -433,9 +445,9 @@ "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==" }, "@open-rpc/examples": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@open-rpc/examples/-/examples-1.3.2.tgz", - "integrity": "sha512-7mqpGhsLK08vOHOn+YY8UZgzWG/AIbbVfIrN3i/ppzLgnts6xJXwjPqOsYWjG3rCX2TG8G1tNTTbfXSlwWXUBA==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@open-rpc/examples/-/examples-1.3.3.tgz", + "integrity": "sha512-vmYLCBaromMVbcKQ32TsYVHkTiD6UtIvToK9hzbe+Z83ThX/JQr/4TqQOmtICsHAD4uW5afg+rtzZd6comUnzg==", "dev": true }, "@open-rpc/meta-schema": { @@ -444,13 +456,12 @@ "integrity": "sha512-lkz4yOEBIjB22vod0P44bmOkAqUZLdbRGPOTURIk/SgYhKNOtXpREEsJMTGWmAVpNtLgPqgkArGzdhFnKYQYpw==" }, "@open-rpc/schema-utils-js": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/@open-rpc/schema-utils-js/-/schema-utils-js-1.10.0.tgz", - "integrity": "sha512-AkZDkCZZS50u4uRkKCkB4w9yq0zA+ESzo2bZvJbJSFwLrBn5KT+CqgrrzHf1VYW4AxzQ0nh/7iqZKKidWsV5cw==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@open-rpc/schema-utils-js/-/schema-utils-js-1.9.0.tgz", + "integrity": "sha512-k1qF+IMqcHf0gH8E37xu6mlB1v60WNYX0uAWerP6eu3teAGjeE3s+R42yepgDtkcdSaUpun6PGDMf7dbfgceIg==", "requires": { "@open-rpc/meta-schema": "^1.3.1", "ajv": "^6.10.0", - "detect-node": "^2.0.4", "fs-extra": "^7.0.1", "is-url": "^1.2.4", "json-schema-ref-parser": "^6.0.3", @@ -458,9 +469,9 @@ } }, "@open-rpc/typings": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@open-rpc/typings/-/typings-1.0.4.tgz", - "integrity": "sha512-LoK/Vff0TvsETNUlnxcOsrV5lsLfZihPfmqb1AB4OZ9In+t5YpG4OYDnuL1pRVdx2swUOLSiC8ACGoJpqSfbIQ==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@open-rpc/typings/-/typings-1.2.1.tgz", + "integrity": "sha512-ojJA4Qn2e5+BONyM4oSPg+9Unk8pPLntdsfnycfgsjxvVqPNLGptBhGXKMzAuiHm0sepenbnJ5EiMMCRBd15zg==", "requires": { "@open-rpc/meta-schema": "^1.3.2", "@open-rpc/schema-utils-js": "^1.8.0", @@ -483,9 +494,9 @@ } }, "@types/babel__core": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.1.tgz", - "integrity": "sha512-+hjBtgcFPYyCTo0A15+nxrCVJL7aC6Acg87TXd5OW3QhHswdrOLoles+ldL2Uk8q++7yIfl4tURtztccdeeyOw==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.2.tgz", + "integrity": "sha512-cfCCrFmiGY/yq0NuKNxIQvZFy9kY/1immpSpTngOnyIbD4+eJOG5mxphhHDv3CHL9GltO4GcKr54kGBg3RNdbg==", "dev": true, "requires": { "@babel/parser": "^7.1.0", @@ -578,9 +589,9 @@ } }, "@types/jest": { - "version": "24.0.13", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-24.0.13.tgz", - "integrity": "sha512-3m6RPnO35r7Dg+uMLj1+xfZaOgIHHHut61djNjzwExXN4/Pm9has9C6I1KMYSfz7mahDhWUOVg4HW/nZdv5Pww==", + "version": "24.0.11", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-24.0.11.tgz", + "integrity": "sha512-2kLuPC5FDnWIDvaJBzsGTBQaBbnDweznicvK7UGYzlIJP4RJR2a4A/ByLUXEyEgag6jz8eHdlWExGDtH3EYUXQ==", "dev": true, "requires": { "@types/jest-diff": "*" @@ -598,9 +609,9 @@ "integrity": "sha512-Il2DtDVRGDcqjDtE+rF8iqg1CArehSK84HZJCT7AMITlyXRBpuPhqGLDQMowraqqu1coEaimg4ZOqggt6L6L+A==" }, "@types/lodash": { - "version": "4.14.132", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.132.tgz", - "integrity": "sha512-RNUU1rrh85NgUJcjOOr96YXr+RHwInGbaQCZmlitqOaCKXffj8bh+Zxwuq5rjDy5OgzFldDVoqk4pyLEDiwxIw==" + "version": "4.14.123", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.123.tgz", + "integrity": "sha512-pQvPkc4Nltyx7G1Ww45OjVqUsJP4UsZm+GWJpigXgkikZqJgRm4c48g027o6tdgubWHwFRF15iFd+Y4Pmqv6+Q==" }, "@types/minimatch": { "version": "3.0.3", @@ -626,9 +637,9 @@ "integrity": "sha512-leUNzbFTMX94TWaIKz8N15Chu55F9QSH+INKayQr5xpkasBQBRF3qQXfo3/dOnMU/dEIit+Y/SU8HyOjq++GwA==" }, "@types/prettier": { - "version": "1.16.3", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-1.16.3.tgz", - "integrity": "sha512-5Ksgx9H/Yjz6oamDbmDZstWlJGPTao7shNfambjf8o7OkHxDwAi0AJLQcFwS9pDKI4gQPdiKZXze3nT1eCOViQ==" + "version": "1.16.4", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-1.16.4.tgz", + "integrity": "sha512-MG7ExKBo7AQ5UrL1awyYLNinNM/kyXgE4iP4Ul9fB+T7n768Z5Xem8IZeP6Bna0xze8gkDly49Rgge2HOEw4xA==" }, "@types/stack-utils": { "version": "1.0.1", @@ -1278,9 +1289,9 @@ } }, "commander": { - "version": "2.20.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", - "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==" + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", + "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==" }, "component-emitter": { "version": "1.3.0", @@ -1471,11 +1482,6 @@ "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=", "dev": true }, - "detect-node": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz", - "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==" - }, "diff": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", @@ -1850,9 +1856,9 @@ "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" }, "fast-glob": { - "version": "2.2.6", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.6.tgz", - "integrity": "sha512-0BvMaZc1k9F+MeWWMe8pL6YltFzZYcJsYU7D4JyDA6PAczaXvxqQQ/z+mDF7/4Mw01DeUc+i3CTKajnkANkV4w==", + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", + "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", "requires": { "@mrmlnc/readdir-enhanced": "^2.2.1", "@nodelib/fs.stat": "^1.1.2", @@ -3121,9 +3127,9 @@ } }, "istanbul-reports": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.4.tgz", - "integrity": "sha512-QCHGyZEK0bfi9GR215QSm+NJwFKEShbtc7tfbUdLAEzn3kKhLDDZqvljn8rPZM9v8CEOhzL1nlYoO4r1ryl67w==", + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.6.tgz", + "integrity": "sha512-SKi4rnMyLBKe0Jy2uUdx28h8oG7ph2PPuQPvIAh31d+Ci+lSiEu4C+h3oBPuJ9+mPKhOyW0M8gY4U5NM1WLeXA==", "dev": true, "requires": { "handlebars": "^4.1.2" @@ -3135,13 +3141,13 @@ "integrity": "sha512-Cu/kb+4HiNSejAPhSaN1VukdNTTi/r4/e+yykqjlG/IW+1gZH5b4+Bq3whDX4tvbYugta3r8KTMUiqT3fIGxuQ==" }, "jest": { - "version": "24.8.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-24.8.0.tgz", - "integrity": "sha512-o0HM90RKFRNWmAWvlyV8i5jGZ97pFwkeVoGvPW1EtLTgJc2+jcuqcbbqcSZLE/3f2S5pt0y2ZBETuhpWNl1Reg==", + "version": "24.5.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-24.5.0.tgz", + "integrity": "sha512-lxL+Fq5/RH7inxxmfS2aZLCf8MsS+YCUBfeiNO6BWz/MmjhDGaIEA/2bzEf9q4Q0X+mtFHiinHFvQ0u+RvW/qQ==", "dev": true, "requires": { "import-local": "^2.0.0", - "jest-cli": "^24.8.0" + "jest-cli": "^24.5.0" }, "dependencies": { "camelcase": { @@ -4443,9 +4449,9 @@ } }, "nan": { - "version": "2.13.2", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.13.2.tgz", - "integrity": "sha512-TghvYc72wlMGMVMluVo9WRJc0mB8KxxF/gZ4YYFy7V2ZQX9l7rgbPg7vjS9mt6U5HXODVFVI2bOduCzwOMv/lw==", + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", "dev": true, "optional": true }, @@ -4557,9 +4563,9 @@ }, "dependencies": { "resolve": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.1.tgz", - "integrity": "sha512-KuIe4mf++td/eFb6wkaPbMDnP6kObCaEtIDuHOUED6MNUo4K670KZUHuuvYPZDxNF0WVLw49n06M2m2dXphEzA==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.0.tgz", + "integrity": "sha512-WL2pBDjqT6pGUNSUzMw00o4T7If+z4H2x3Gz893WoUQ5KW8Vr9txp00ykiP16VBaZF5+j/OcXJHZ9+PCvdiDKw==", "dev": true, "requires": { "path-parse": "^1.0.6" @@ -5033,9 +5039,9 @@ "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" }, "prompts": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.0.4.tgz", - "integrity": "sha512-HTzM3UWp/99A0gk51gAegwo1QRYA7xjcZufMNe33rCclFszUYAuHe1fIN/3ZmiHeGPkUsNaRyQm1hHOfM0PKxA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.1.0.tgz", + "integrity": "sha512-+x5TozgqYdOwWsQFZizE/Tra3fKvAoy037kOyU6cgz84n8f6zxngLOV4O32kTwt9FcLCxAqw0P/c8rOr9y+Gfg==", "dev": true, "requires": { "kleur": "^3.0.2", @@ -5102,7 +5108,7 @@ "string-to-stream": "^1.1.0", "typescript": "~2.8.3", "typescript-json-schema": "github:quicktype/typescript-json-schema#d16083d29c8b6702c666a981fa6b21113300c059", - "unicode-properties": "github:quicktype/unicode-properties#d5fddfea1ef9d05c6479a979e225476063e13f52", + "unicode-properties": "github:quicktype/unicode-properties#dist", "universal-analytics": "^0.4.16", "urijs": "^1.19.1", "uuid": "^3.2.1" @@ -6088,9 +6094,9 @@ "dev": true }, "ts-jest": { - "version": "24.0.2", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-24.0.2.tgz", - "integrity": "sha512-h6ZCZiA1EQgjczxq+uGLXQlNgeg02WWJBbeT8j6nyIBRQdglqbvzDoHahTEIiS6Eor6x8mK6PfZ7brQ9Q6tzHw==", + "version": "24.0.0", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-24.0.0.tgz", + "integrity": "sha512-o8BO3TkMREpAATaFTrXkovMsCpBl2z4NDBoLJuWZcJJj1ijI49UnvDMfVpj+iogn/Jl8Pbhuei5nc/Ti+frEHw==", "dev": true, "requires": { "bs-logger": "0.x", @@ -6192,9 +6198,9 @@ "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" }, "typescript": { - "version": "3.4.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.5.tgz", - "integrity": "sha512-YycBxUb49UUhdNMU5aJ7z5Ej2XGmaIBL0x34vZ82fn3hGvD+bgrMrVDpatgz2f7YxUMJxMkbWxJZeAvDxVe7Vw==", + "version": "3.3.3333", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.3.3333.tgz", + "integrity": "sha512-JjSKsAfuHBE/fB2oZ8NxtRTk5iGcg6hkYXMnZ3Wc+b2RSqejEqTaem11mHASMnFilHrax3sLK0GDzcJrekZYLw==", "dev": true }, "typescript-json-schema": { @@ -6227,6 +6233,14 @@ "requires": { "commander": "~2.20.0", "source-map": "~0.6.1" + }, + "dependencies": { + "commander": { + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", + "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==", + "optional": true + } } }, "uid2": { @@ -6241,7 +6255,7 @@ }, "unicode-properties": { "version": "github:quicktype/unicode-properties#d5fddfea1ef9d05c6479a979e225476063e13f52", - "from": "github:quicktype/unicode-properties#d5fddfea1ef9d05c6479a979e225476063e13f52", + "from": "github:quicktype/unicode-properties#dist", "requires": { "brfs": "^1.4.0", "unicode-trie": "^0.3.0" diff --git a/package.json b/package.json index 00e41d90..bc98b07c 100644 --- a/package.json +++ b/package.json @@ -27,22 +27,22 @@ "author": "", "license": "Apache-2.0", "dependencies": { - "@iarna/toml": "^2.2.3", - "@open-rpc/schema-utils-js": "^1.9.0", - "@open-rpc/typings": "^1.0.4", - "commander": "^2.19.0", - "fs-extra": "^7.0.1", - "lodash": "^4.17.11" + "@iarna/toml": "2.2.3", + "@open-rpc/schema-utils-js": "1.9.0", + "@open-rpc/typings": "^1.2.1", + "commander": "2.19.0", + "fs-extra": "7.0.1", + "lodash": "4.17.11" }, "devDependencies": { - "@open-rpc/examples": "^1.3.1", - "@open-rpc/meta-schema": "^1.3.2", - "@types/fs-extra": "^7.0.0", - "@types/jest": "^24.0.11", - "@types/lodash": "^4.14.123", - "jest": "^24.5.0", - "ts-jest": "^24.0.0", - "tslint": "^5.16.0", - "typescript": "^3.3.3333" + "@open-rpc/examples": "^1.3.3", + "@open-rpc/meta-schema": "1.3.2", + "@types/fs-extra": "7.0.0", + "@types/jest": "24.0.11", + "@types/lodash": "4.14.123", + "jest": "24.5.0", + "ts-jest": "24.0.0", + "tslint": "5.16.0", + "typescript": "3.3.3333" } } diff --git a/templates/rust/templated/client.template.ts b/templates/rust/templated/client.template.ts index 07e0bf1e..1388b560 100644 --- a/templates/rust/templated/client.template.ts +++ b/templates/rust/templated/client.template.ts @@ -1,4 +1,5 @@ import { template } from "lodash"; +import { OpenRPCTypingsSupportedLanguages } from "@open-rpc/typings"; export default template(` #[macro_use] @@ -11,12 +12,10 @@ use autorand::Random; #[cfg(test)] mod test_harness; -<%= methodTypings.getAllUniqueTypings("rust") %> +<%= methodTypings.toString("rust", { includeSchemaTypings: true, includeMethodAliasTypings: false }) %> jsonrpc_client!(pub struct <%= className %> { -<% openrpcDocument.methods.forEach((method) => { %> -<%= methodTypings.getFunctionSignature(method, "rust") %> -<% }); %> + <%= methodTypings.toString("rust", { includeSchemaTypings: false, includeMethodAliasTypings: true }) %> }); #[cfg(test)] @@ -27,32 +26,21 @@ mod tests { use futures::Future; <% openrpcDocument.methods.forEach((method) => { %> + <% var typeNames = methodTypings.getTypingNames("rust", method); %> #[test] #[allow(non_snake_case)] - fn <%= method.name + "_test" %> () { - //- method quety template start - let method = <%= '"' + method.name + '"' %>.into(); - //- method query template end + fn <%= method.name %>_test () { + let method = "<%= method.name %>".into(); - //- params query template start let mut params = Vec::new(); - //-- loop over params start - <% const typingsForMethod = methodTypings.getTypingsForMethod(method, "rust") %> - <% typingsForMethod.params.forEach((param) => { %> - <% const paramName = param.typeName + "_value" %> - let <%= paramName %> = <%= param.typeName + "::random()" %>; + <% typeNames.params.forEach((paramTypeName) => { const paramName = paramTypeName + "_value" %> + let <%= paramName %> = <%= paramTypeName %>::random(); let serialized = serde_json::to_value(&<%= paramName %>).unwrap(); params.push(serialized); - <% }); %> - //-- loop over params end - //- params query template end - - //- result query template start - let result = <%= typingsForMethod.result.typeName + "::random()" %>; - // transcode result to workaround Some(Null) -> Null serialization detail loss + <% }); %> + let result = <%= typeNames.result %>::random(); let result_serialized = serde_json::to_vec(&result).unwrap(); - let result: <%= typingsForMethod.result.typeName %> = serde_json::from_slice(&result_serialized).unwrap(); - //- result query template end + let result: <%= typeNames.result %> = serde_json::from_slice(&result_serialized).unwrap(); let transport = MockTransport { method, @@ -60,16 +48,11 @@ mod tests { result: serde_json::to_value(&result).unwrap(), }; - let mut client = <%= className + "::new(transport);" %> + let mut client = <%= className %>::new(transport); let received_result = client.<%= method.name %>( - //- loop over params start - <% typingsForMethod.params.forEach((param) => { %> - <%= param.typeName + "_value" %>, - <% }); %> - //- loop over params end + <%= typeNames.params.map((n) => n + "_value").join(", ") %> ).wait().unwrap(); - // transcode result to workaround Some(Null) -> Null serialization detail loss let result_s = assert_eq!(result, received_result); } diff --git a/templates/typescript/static/tslint.json b/templates/typescript/static/tslint.json index abc7aa2b..665ff9c0 100644 --- a/templates/typescript/static/tslint.json +++ b/templates/typescript/static/tslint.json @@ -1,21 +1,23 @@ { - "defaultSeverity": "error", - "extends": [ - "tslint:recommended" - ], - "jsRules": {}, - "rules": { - "max-line-length": false, - "class-name": false, - "max-classes-per-file": false, - "object-literal-sort-keys": false, - "object-literal-key-quotes": false, - "ordered-imports": false, - "indent": [ - true, - "spaces", - 2 - ] - }, - "rulesDirectory": [] -} \ No newline at end of file + "defaultSeverity": "error", + "extends": [ + "tslint:recommended" + ], + "jsRules": {}, + "rules": { + "max-line-length": false, + "class-name": false, + "variable-name": [false], + "max-classes-per-file": false, + "interface-name": [true, "never-prefix"], + "object-literal-sort-keys": false, + "object-literal-key-quotes": false, + "ordered-imports": false, + "indent": [ + true, + "spaces", + 2 + ] + }, + "rulesDirectory": [] +} diff --git a/templates/typescript/templated/exported-class.template.ts b/templates/typescript/templated/exported-class.template.ts index b1914cf8..f03b4951 100644 --- a/templates/typescript/templated/exported-class.template.ts +++ b/templates/typescript/templated/exported-class.template.ts @@ -8,9 +8,9 @@ import _ from "lodash"; import { OpenRPC, MethodObject, ContentDescriptorObject } from "@open-rpc/meta-schema"; import { MethodCallValidator } from "@open-rpc/schema-utils-js"; -<%= methodTypings.getAllUniqueTypings("typescript") %> +<%= methodTypings.toString("typescript") %> -interface IOptions { +export interface Options { transport: { type: "websocket" | "http" | "https"; host: string; @@ -23,7 +23,7 @@ export default class <%= className %> { private validator: MethodCallValidator; private openrpcDocument: OpenRPC; - constructor(options: IOptions) { + constructor(options: Options) { this.openrpcDocument = <%= JSON.stringify(openrpcDocument) %>; if (options.transport === undefined || options.transport.type === undefined) { @@ -67,8 +67,8 @@ export default class <%= className %> { /** * <%= method.summary %> */ - <%= methodTypings.getFunctionSignature(method, "typescript") %> { - return this.request("<%= method.name %>", Array.from(arguments)); + public <%= method.name %>: <%= methodTypings.getTypingNames("typescript", method).method %> = (...params) => { + return this.request("<%= method.name %>", params); } <% }); %> }