diff --git a/package-lock.json b/package-lock.json index eb2bee7..96667fb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,17 +9,17 @@ "version": "0.0.0-development", "license": "Apache-2.0", "dependencies": { - "@json-schema-tools/referencer": "^1.1.2", - "@json-schema-tools/titleizer": "^1.0.8", - "@json-schema-tools/traverse": "^1.10.1", + "@json-schema-tools/referencer": "^1.1.3", + "@json-schema-tools/titleizer": "^1.0.9", + "@json-schema-tools/traverse": "^1.10.4", "lodash.camelcase": "^4.3.0", "lodash.deburr": "^4.1.0", "lodash.snakecase": "^4.1.1", "lodash.trim": "^4.5.1" }, "devDependencies": { - "@json-schema-tools/dereferencer": "^1.5.7", - "@json-schema-tools/meta-schema": "^1.7.0", + "@json-schema-tools/dereferencer": "^1.6.3", + "@json-schema-tools/meta-schema": "^1.7.5", "@types/jest": "^29.2.0", "@types/lodash.camelcase": "^4.3.7", "@types/lodash.deburr": "^4.1.7", @@ -1179,26 +1179,26 @@ "dev": true }, "node_modules/@json-schema-tools/dereferencer": { - "version": "1.5.7", - "resolved": "https://registry.npmjs.org/@json-schema-tools/dereferencer/-/dereferencer-1.5.7.tgz", - "integrity": "sha512-7oIkXhPGiG5ucKBWOGTE9zMQ8i01QklP0Mue+bDLakEmG+TvGJqL+SZepqIYdtYvikQsO6bhCuSSv0VD4cQ0rg==", + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/@json-schema-tools/dereferencer/-/dereferencer-1.6.3.tgz", + "integrity": "sha512-NoQkj6hx9Joqbd/GZAOHSGtE6R+OzlnOcDfyidmx8e/CUv1Q+Z6/fmZo2wwCQWiwP1pnGYc95iKwp8M7XlV7wQ==", "dev": true, "dependencies": { - "@json-schema-tools/reference-resolver": "^1.2.5", - "@json-schema-tools/traverse": "^1.10.0", + "@json-schema-tools/reference-resolver": "^1.2.6", + "@json-schema-tools/traverse": "^1.10.4", "fast-safe-stringify": "^2.1.1" } }, "node_modules/@json-schema-tools/meta-schema": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/@json-schema-tools/meta-schema/-/meta-schema-1.7.4.tgz", - "integrity": "sha512-Lc1Vxps4NHZNEme8LWq7dCnhNjrQBMvTs7/Tb4ru7or1398ADt9zO1hxbaw+5/OLitcCvQtL7ZDJ9d1n2u/rWg==", + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/@json-schema-tools/meta-schema/-/meta-schema-1.7.5.tgz", + "integrity": "sha512-8Hy6tuMC2BQdK7O4ilLovFB9t0j5o0L/sQTuWeg2CNYpITmPiFTRiG7Yb/jYd483D8784kxLFJ0dT+T4O2hNmw==", "dev": true }, "node_modules/@json-schema-tools/reference-resolver": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/@json-schema-tools/reference-resolver/-/reference-resolver-1.2.5.tgz", - "integrity": "sha512-xNQgX/ABnwvbIeexL5Czv08lXjHAL80HEUogza7E19eIL/EXD8HM4FvxG1JuTGyi5fA+sSP64C9pabELizcBBw==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@json-schema-tools/reference-resolver/-/reference-resolver-1.2.6.tgz", + "integrity": "sha512-4QZu5ROb5EpLSvV+buzk8WR30W+dffSNaKqD3VGFYJ3y0BLDi2OHoSz5e6NKcLYTyUYXV8IKxocNOszeVBJI4Q==", "dev": true, "dependencies": { "@json-schema-spec/json-pointer": "^0.1.2", @@ -1206,25 +1206,25 @@ } }, "node_modules/@json-schema-tools/referencer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@json-schema-tools/referencer/-/referencer-1.1.2.tgz", - "integrity": "sha512-hfpRmK7eqOMJdvAy0kNyO0ZlXCN2vR5P44cSy0Xo1VnVPLI8OO86NA1c3SjazxoGNgZSkbOknPx/WMXG3swQNg==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@json-schema-tools/referencer/-/referencer-1.1.3.tgz", + "integrity": "sha512-p2JU7GpHn1kMyP7gnB2Wnki+OnifsSi75Uj5PxqIg2pT4fqh+BM3rEEZKpaET4xv0ZszG46CCI9eEvs68v2rXg==", "dependencies": { - "@json-schema-tools/traverse": "^1.10.1" + "@json-schema-tools/traverse": "^1.10.4" } }, "node_modules/@json-schema-tools/titleizer": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@json-schema-tools/titleizer/-/titleizer-1.0.8.tgz", - "integrity": "sha512-xgsg7ghVhd+9ZrhpmakNJUMmp+R+1mB6n4zn4iRg6P47GTfN04L/GR7mjC8LvO+XaZxbIzE6EzvHeZ5+nmhjJA==", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@json-schema-tools/titleizer/-/titleizer-1.0.9.tgz", + "integrity": "sha512-Gwg3YTP5P+3Q+OnvEcthTnsup3AsEkxZCrRLXoWppdjtSzRnsWxtvmpKdGLbVcocPC7Sh3aqJ7Arp85Ii6q2GA==", "dependencies": { - "@json-schema-tools/traverse": "^1.10.1" + "@json-schema-tools/traverse": "^1.10.4" } }, "node_modules/@json-schema-tools/traverse": { - "version": "1.10.3", - "resolved": "https://registry.npmjs.org/@json-schema-tools/traverse/-/traverse-1.10.3.tgz", - "integrity": "sha512-1F8m574UObc3HuJoGGdmiOe2Ft9ObVypEKoniREs5v2G03wF/nb3YRTYFjKmI0z4S5NkdJwPFRwo7MjTjkI7Qg==" + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/@json-schema-tools/traverse/-/traverse-1.10.4.tgz", + "integrity": "sha512-9e42zjhLIxzBONroNC4SGsTqdB877tzwH2S6lqgTav9K24kWJR9vNieeMVSuyqnY8FlclH21D8wsm/tuD9WA9Q==" }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", @@ -3113,9 +3113,9 @@ } }, "node_modules/isomorphic-fetch/node_modules/node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", "dev": true, "dependencies": { "whatwg-url": "^5.0.0" @@ -3132,28 +3132,6 @@ } } }, - "node_modules/isomorphic-fetch/node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true - }, - "node_modules/isomorphic-fetch/node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dev": true - }, - "node_modules/isomorphic-fetch/node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dev": true, - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, "node_modules/istanbul-lib-coverage": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", @@ -4886,6 +4864,12 @@ "node": ">=8.0" } }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true + }, "node_modules/ts-jest": { "version": "29.1.2", "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.2.tgz", @@ -5130,12 +5114,28 @@ "node": ">= 8" } }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true + }, "node_modules/whatwg-fetch": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz", - "integrity": "sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==", + "version": "3.6.20", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz", + "integrity": "sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==", "dev": true }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -6129,26 +6129,26 @@ "dev": true }, "@json-schema-tools/dereferencer": { - "version": "1.5.7", - "resolved": "https://registry.npmjs.org/@json-schema-tools/dereferencer/-/dereferencer-1.5.7.tgz", - "integrity": "sha512-7oIkXhPGiG5ucKBWOGTE9zMQ8i01QklP0Mue+bDLakEmG+TvGJqL+SZepqIYdtYvikQsO6bhCuSSv0VD4cQ0rg==", + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/@json-schema-tools/dereferencer/-/dereferencer-1.6.3.tgz", + "integrity": "sha512-NoQkj6hx9Joqbd/GZAOHSGtE6R+OzlnOcDfyidmx8e/CUv1Q+Z6/fmZo2wwCQWiwP1pnGYc95iKwp8M7XlV7wQ==", "dev": true, "requires": { - "@json-schema-tools/reference-resolver": "^1.2.5", - "@json-schema-tools/traverse": "^1.10.0", + "@json-schema-tools/reference-resolver": "^1.2.6", + "@json-schema-tools/traverse": "^1.10.4", "fast-safe-stringify": "^2.1.1" } }, "@json-schema-tools/meta-schema": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/@json-schema-tools/meta-schema/-/meta-schema-1.7.4.tgz", - "integrity": "sha512-Lc1Vxps4NHZNEme8LWq7dCnhNjrQBMvTs7/Tb4ru7or1398ADt9zO1hxbaw+5/OLitcCvQtL7ZDJ9d1n2u/rWg==", + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/@json-schema-tools/meta-schema/-/meta-schema-1.7.5.tgz", + "integrity": "sha512-8Hy6tuMC2BQdK7O4ilLovFB9t0j5o0L/sQTuWeg2CNYpITmPiFTRiG7Yb/jYd483D8784kxLFJ0dT+T4O2hNmw==", "dev": true }, "@json-schema-tools/reference-resolver": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/@json-schema-tools/reference-resolver/-/reference-resolver-1.2.5.tgz", - "integrity": "sha512-xNQgX/ABnwvbIeexL5Czv08lXjHAL80HEUogza7E19eIL/EXD8HM4FvxG1JuTGyi5fA+sSP64C9pabELizcBBw==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@json-schema-tools/reference-resolver/-/reference-resolver-1.2.6.tgz", + "integrity": "sha512-4QZu5ROb5EpLSvV+buzk8WR30W+dffSNaKqD3VGFYJ3y0BLDi2OHoSz5e6NKcLYTyUYXV8IKxocNOszeVBJI4Q==", "dev": true, "requires": { "@json-schema-spec/json-pointer": "^0.1.2", @@ -6156,25 +6156,25 @@ } }, "@json-schema-tools/referencer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@json-schema-tools/referencer/-/referencer-1.1.2.tgz", - "integrity": "sha512-hfpRmK7eqOMJdvAy0kNyO0ZlXCN2vR5P44cSy0Xo1VnVPLI8OO86NA1c3SjazxoGNgZSkbOknPx/WMXG3swQNg==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@json-schema-tools/referencer/-/referencer-1.1.3.tgz", + "integrity": "sha512-p2JU7GpHn1kMyP7gnB2Wnki+OnifsSi75Uj5PxqIg2pT4fqh+BM3rEEZKpaET4xv0ZszG46CCI9eEvs68v2rXg==", "requires": { - "@json-schema-tools/traverse": "^1.10.1" + "@json-schema-tools/traverse": "^1.10.4" } }, "@json-schema-tools/titleizer": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@json-schema-tools/titleizer/-/titleizer-1.0.8.tgz", - "integrity": "sha512-xgsg7ghVhd+9ZrhpmakNJUMmp+R+1mB6n4zn4iRg6P47GTfN04L/GR7mjC8LvO+XaZxbIzE6EzvHeZ5+nmhjJA==", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@json-schema-tools/titleizer/-/titleizer-1.0.9.tgz", + "integrity": "sha512-Gwg3YTP5P+3Q+OnvEcthTnsup3AsEkxZCrRLXoWppdjtSzRnsWxtvmpKdGLbVcocPC7Sh3aqJ7Arp85Ii6q2GA==", "requires": { - "@json-schema-tools/traverse": "^1.10.1" + "@json-schema-tools/traverse": "^1.10.4" } }, "@json-schema-tools/traverse": { - "version": "1.10.3", - "resolved": "https://registry.npmjs.org/@json-schema-tools/traverse/-/traverse-1.10.3.tgz", - "integrity": "sha512-1F8m574UObc3HuJoGGdmiOe2Ft9ObVypEKoniREs5v2G03wF/nb3YRTYFjKmI0z4S5NkdJwPFRwo7MjTjkI7Qg==" + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/@json-schema-tools/traverse/-/traverse-1.10.4.tgz", + "integrity": "sha512-9e42zjhLIxzBONroNC4SGsTqdB877tzwH2S6lqgTav9K24kWJR9vNieeMVSuyqnY8FlclH21D8wsm/tuD9WA9Q==" }, "@nodelib/fs.scandir": { "version": "2.1.5", @@ -7567,35 +7567,13 @@ }, "dependencies": { "node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", "dev": true, "requires": { "whatwg-url": "^5.0.0" } - }, - "tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true - }, - "webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dev": true - }, - "whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dev": true, - "requires": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } } } }, @@ -8880,6 +8858,12 @@ "is-number": "^7.0.0" } }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true + }, "ts-jest": { "version": "29.1.2", "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.2.tgz", @@ -9033,12 +9017,28 @@ "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==", "dev": true }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true + }, "whatwg-fetch": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz", - "integrity": "sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==", + "version": "3.6.20", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz", + "integrity": "sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==", "dev": true }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, "which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", diff --git a/package.json b/package.json index 26dd55e..70d57f9 100644 --- a/package.json +++ b/package.json @@ -27,8 +27,8 @@ "!build/**/*.test.*" ], "devDependencies": { - "@json-schema-tools/dereferencer": "^1.5.7", - "@json-schema-tools/meta-schema": "^1.7.0", + "@json-schema-tools/dereferencer": "^1.6.3", + "@json-schema-tools/meta-schema": "^1.7.5", "@types/jest": "^29.2.0", "@types/lodash.camelcase": "^4.3.7", "@types/lodash.deburr": "^4.1.7", @@ -46,9 +46,9 @@ "typescript": "^5.4.5" }, "dependencies": { - "@json-schema-tools/referencer": "^1.1.2", - "@json-schema-tools/titleizer": "^1.0.8", - "@json-schema-tools/traverse": "^1.10.1", + "@json-schema-tools/referencer": "^1.1.3", + "@json-schema-tools/titleizer": "^1.0.9", + "@json-schema-tools/traverse": "^1.10.4", "lodash.camelcase": "^4.3.0", "lodash.deburr": "^4.1.0", "lodash.snakecase": "^4.1.1", diff --git a/src/integration-tests/expecteds/go/openrpc.go b/src/integration-tests/expecteds/go/openrpc.go index c0b4723..3b0727a 100644 --- a/src/integration-tests/expecteds/go/openrpc.go +++ b/src/integration-tests/expecteds/go/openrpc.go @@ -255,7 +255,16 @@ func (o DependenciesSet) MarshalJSON() ([]byte, error) { } type Dependencies map[string]interface{} type Enum []AlwaysTrue -type SimpleTypes interface{} +type SimpleTypes string +const ( + SimpleTypesEnum0 SimpleTypes = "array" + SimpleTypesEnum1 SimpleTypes = "boolean" + SimpleTypesEnum2 SimpleTypes = "integer" + SimpleTypesEnum3 SimpleTypes = "null" + SimpleTypesEnum4 SimpleTypes = "number" + SimpleTypesEnum5 SimpleTypes = "object" + SimpleTypesEnum6 SimpleTypes = "string" +) type ArrayOfSimpleTypes []SimpleTypes type Type struct { SimpleTypes *SimpleTypes @@ -727,4 +736,4 @@ type OpenrpcDocument struct { Methods *Methods `json:"methods"` Components *Components `json:"components,omitempty"` Schema *MetaSchema `json:"$schema,omitempty"` -} \ No newline at end of file +} diff --git a/src/integration-tests/expecteds/py/openrpc.py b/src/integration-tests/expecteds/py/openrpc.py index 49fc75c..e546d48 100644 --- a/src/integration-tests/expecteds/py/openrpc.py +++ b/src/integration-tests/expecteds/py/openrpc.py @@ -206,7 +206,14 @@ class MethodObjectParamStructure(Enum): Enum = NewType("Enum", List[AlwaysTrue]) -SimpleTypes = NewType("SimpleTypes", Any) +class SimpleTypes(Enum): + Array = 0 + Boolean = 1 + Integer = 2 + Null = 3 + Number = 4 + Object = 5 + String = 6 ArrayOfSimpleTypes = NewType("ArrayOfSimpleTypes", List[SimpleTypes]) @@ -425,4 +432,4 @@ class OpenrpcDocument(TypedDict): servers: Optional[Servers] methods: undefined components: Optional[Components] - $schema: Optional[MetaSchema] \ No newline at end of file + $schema: Optional[MetaSchema] diff --git a/src/integration-tests/expecteds/rs/openrpc.rs b/src/integration-tests/expecteds/rs/openrpc.rs index e07ff5b..70ecd83 100644 --- a/src/integration-tests/expecteds/rs/openrpc.rs +++ b/src/integration-tests/expecteds/rs/openrpc.rs @@ -278,7 +278,23 @@ pub enum DependenciesSet { } pub type Dependencies = HashMap; pub type Enum = Vec; -pub type SimpleTypes = serde_json::Value; +#[derive(Serialize, Deserialize, Clone, Debug, Eq, PartialEq)] +pub enum SimpleTypes { + #[serde(rename = "array")] + Array, + #[serde(rename = "boolean")] + Boolean, + #[serde(rename = "integer")] + Integer, + #[serde(rename = "null")] + Null, + #[serde(rename = "number")] + Number, + #[serde(rename = "object")] + Object, + #[serde(rename = "string")] + String, +} pub type ArrayOfSimpleTypes = Vec; #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] #[serde(untagged)] @@ -642,4 +658,4 @@ pub struct OpenrpcDocument { pub components: Option, #[serde(rename = "$schema", skip_serializing_if = "Option::is_none")] pub schema: Option, -} \ No newline at end of file +} diff --git a/src/integration-tests/expecteds/ts/openrpc.ts b/src/integration-tests/expecteds/ts/openrpc.ts index 7187433..2d5904e 100644 --- a/src/integration-tests/expecteds/ts/openrpc.ts +++ b/src/integration-tests/expecteds/ts/openrpc.ts @@ -161,7 +161,7 @@ export interface PatternProperties { [key: string]: any; } export type DependenciesSet = JSONSchema | StringArray; export interface Dependencies { [key: string]: any; } export type Enum = AlwaysTrue[]; -export type SimpleTypes = any; +export type SimpleTypes = "array" | "boolean" | "integer" | "null" | "number" | "object" | "string"; export type ArrayOfSimpleTypes = SimpleTypes[]; export type Type = SimpleTypes | ArrayOfSimpleTypes; export type Format = string; @@ -378,4 +378,4 @@ export interface OpenrpcDocument { components?: Components; $schema?: MetaSchema; [regex: string]: SpecificationExtension | any; -} \ No newline at end of file +} diff --git a/src/integration-tests/runner.test.ts b/src/integration-tests/runner.test.ts index 24c2c4c..92c205d 100644 --- a/src/integration-tests/runner.test.ts +++ b/src/integration-tests/runner.test.ts @@ -37,10 +37,10 @@ const getTestCaseBase = async (names: string[], languages: string[]): Promise { - if (language !== "ts") { return; } + // if (language !== "ts") { return; } names.forEach((name) => { - if (name !== "json-schema") { return; } + // if (name !== "boolean-schemas") { return; } promises.push(readFile(`${testCaseDir}/${name}.json`, "utf8") .then((fileContents) => { @@ -69,14 +69,21 @@ const addExpectedTypings = async (tcs: TestCase[]): Promise => { }; const derefTestCases = async (tcs: TestCase[]): Promise => { - const derefPromises: any[] = []; - - tcs.forEach((tc) => { - const dereffer = new Dereferencer(tc.schema); - derefPromises.push(dereffer.resolve().then((s) => tc.schema = s)); - }); + for (const tc of tcs) { + let s = tc.schema as JSONSchema[]; + const wasArray = tc.schema instanceof Array; + if (wasArray === false) { + s = [s]; + } + tc.schema = await Promise.all(s.map((_s) => { + const dereffer = new Dereferencer(_s); + return dereffer.resolve(); + })); - await Promise.all(derefPromises); + if (wasArray === false) { + tc.schema = tc.schema[0]; + } + } return tcs; }; diff --git a/src/integration-tests/test-cases/openrpc.json b/src/integration-tests/test-cases/openrpc.json index 66e7414..751c1f7 100644 --- a/src/integration-tests/test-cases/openrpc.json +++ b/src/integration-tests/test-cases/openrpc.json @@ -1,701 +1,3 @@ { - "$schema": "https://meta.json-schema.tools/", - "$id": "https://meta.open-rpc.org/", - "title": "openrpcDocument", - "type": "object", - "required": [ - "info", - "methods", - "openrpc" - ], - "additionalProperties": false, - "patternProperties": { - "^x-": { - "$ref": "#/definitions/specificationExtension" - } - }, - "properties": { - "openrpc": { - "title": "openrpc", - "type": "string", - "enum": [ - "1.3.2", - "1.3.1", - "1.3.0", - "1.2.6", - "1.2.5", - "1.2.4", - "1.2.3", - "1.2.2", - "1.2.1", - "1.2.0", - "1.1.12", - "1.1.11", - "1.1.10", - "1.1.9", - "1.1.8", - "1.1.7", - "1.1.6", - "1.1.5", - "1.1.4", - "1.1.3", - "1.1.2", - "1.1.1", - "1.1.0", - "1.0.0", - "1.0.0-rc1", - "1.0.0-rc0" - ] - }, - "info": { - "$ref": "#/definitions/infoObject" - }, - "externalDocs": { - "$ref": "#/definitions/externalDocumentationObject" - }, - "servers": { - "title": "servers", - "type": "array", - "additionalItems": false, - "items": { - "$ref": "#/definitions/serverObject" - } - }, - "methods": { - "title": "methods", - "type": "array", - "additionalItems": false, - "items": { - "title": "methodOrReference", - "oneOf": [ - { - "$ref": "#/definitions/methodObject" - }, - { - "$ref": "#/definitions/referenceObject" - } - ] - } - }, - "components": { - "title": "components", - "type": "object", - "properties": { - "schemas": { - "title": "schemaComponents", - "type": "object", - "patternProperties": { - "[0-z]+": { - "$ref": "#/definitions/JSONSchema" - } - } - }, - "links": { - "title": "linkComponents", - "type": "object", - "patternProperties": { - "[0-z]+": { - "$ref": "#/definitions/linkObject" - } - } - }, - "errors": { - "title": "errorComponents", - "type": "object", - "patternProperties": { - "[0-z]+": { - "$ref": "#/definitions/errorObject" - } - } - }, - "examples": { - "title": "exampleComponents", - "type": "object", - "patternProperties": { - "[0-z]+": { - "$ref": "#/definitions/exampleObject" - } - } - }, - "examplePairings": { - "title": "examplePairingComponents", - "type": "object", - "patternProperties": { - "[0-z]+": { - "$ref": "#/definitions/examplePairingObject" - } - } - }, - "contentDescriptors": { - "title": "contentDescriptorComponents", - "type": "object", - "patternProperties": { - "[0-z]+": { - "$ref": "#/definitions/contentDescriptorObject" - } - } - }, - "tags": { - "title": "tagComponents", - "type": "object", - "patternProperties": { - "[0-z]+": { - "$ref": "#/definitions/tagObject" - } - } - } - } - }, - "$schema": { - "title": "metaSchema", - "description": "JSON Schema URI (used by some editors)", - "type": "string", - "default": "https://meta.open-rpc.org/" - } - }, - "definitions": { - "specificationExtension": { - "title": "specificationExtension" - }, - "JSONSchema": { - "$ref": "https://raw.githubusercontent.com/json-schema-tools/meta-schema/1.5.9/src/schema.json" - }, - "referenceObject": { - "title": "referenceObject", - "type": "object", - "additionalProperties": false, - "required": [ - "$ref" - ], - "properties": { - "$ref": { - "$ref": "https://raw.githubusercontent.com/json-schema-tools/meta-schema/1.5.9/src/schema.json#/definitions/JSONSchemaObject/properties/$ref" - } - } - }, - "errorObject": { - "title": "errorObject", - "type": "object", - "description": "Defines an application level error.", - "additionalProperties": false, - "required": [ - "code", - "message" - ], - "properties": { - "code": { - "title": "errorObjectCode", - "description": "A Number that indicates the error type that occurred. This MUST be an integer. The error codes from and including -32768 to -32000 are reserved for pre-defined errors. These pre-defined errors SHOULD be assumed to be returned from any JSON-RPC api.", - "type": "integer" - }, - "message": { - "title": "errorObjectMessage", - "description": "A String providing a short description of the error. The message SHOULD be limited to a concise single sentence.", - "type": "string" - }, - "data": { - "title": "errorObjectData", - "description": "A Primitive or Structured value that contains additional information about the error. This may be omitted. The value of this member is defined by the Server (e.g. detailed error information, nested errors etc.)." - } - } - }, - "licenseObject": { - "title": "licenseObject", - "type": "object", - "additionalProperties": false, - "properties": { - "name": { - "title": "licenseObjectName", - "type": "string" - }, - "url": { - "title": "licenseObjectUrl", - "type": "string" - } - }, - "patternProperties": { - "^x-": { - "$ref": "#/definitions/specificationExtension" - } - } - }, - "contactObject": { - "title": "contactObject", - "type": "object", - "additionalProperties": false, - "properties": { - "name": { - "title": "contactObjectName", - "type": "string" - }, - "email": { - "title": "contactObjectEmail", - "type": "string" - }, - "url": { - "title": "contactObjectUrl", - "type": "string" - } - }, - "patternProperties": { - "^x-": { - "$ref": "#/definitions/specificationExtension" - } - } - }, - "infoObject": { - "title": "infoObject", - "type": "object", - "additionalProperties": false, - "required": [ - "title", - "version" - ], - "properties": { - "title": { - "title": "infoObjectProperties", - "type": "string" - }, - "description": { - "title": "infoObjectDescription", - "type": "string" - }, - "termsOfService": { - "title": "infoObjectTermsOfService", - "type": "string", - "format": "uri" - }, - "version": { - "title": "infoObjectVersion", - "type": "string" - }, - "contact": { - "$ref": "#/definitions/contactObject" - }, - "license": { - "$ref": "#/definitions/licenseObject" - } - }, - "patternProperties": { - "^x-": { - "$ref": "#/definitions/specificationExtension" - } - } - }, - "serverObject": { - "title": "serverObject", - "type": "object", - "required": [ - "url" - ], - "additionalProperties": false, - "properties": { - "url": { - "title": "serverObjectUrl", - "type": "string", - "format": "uri" - }, - "name": { - "title": "serverObjectName", - "type": "string" - }, - "description": { - "title": "serverObjectDescription", - "type": "string" - }, - "summary": { - "title": "serverObjectSummary", - "type": "string" - }, - "variables": { - "title": "serverObjectVariables", - "type": "object", - "patternProperties": { - "[0-z]+": { - "title": "serverObjectVariable", - "type": "object", - "required": [ - "default" - ], - "properties": { - "default": { - "title": "serverObjectVariableDefault", - "type": "string" - }, - "description": { - "title": "serverObjectVariableDescription", - "type": "string" - }, - "enum": { - "title": "serverObjectVariableEnum", - "type": "array", - "items": { - "title": "serverObjectVariableEnumItem", - "type": "string" - } - } - } - } - } - } - }, - "patternProperties": { - "^x-": { - "$ref": "#/definitions/specificationExtension" - } - } - }, - "linkObject": { - "title": "linkObject", - "type": "object", - "additionalProperties": false, - "properties": { - "name": { - "title": "linkObjectName", - "type": "string", - "minLength": 1 - }, - "summary": { - "title": "linkObjectSummary", - "type": "string" - }, - "method": { - "title": "linkObjectMethod", - "type": "string" - }, - "description": { - "title": "linkObjectDescription", - "type": "string" - }, - "params": { - "title": "linkObjectParams" - }, - "server": { - "title": "linkObjectServer", - "$ref": "#/definitions/serverObject" - } - }, - "patternProperties": { - "^x-": { - "$ref": "#/definitions/specificationExtension" - } - } - }, - "externalDocumentationObject": { - "title": "externalDocumentationObject", - "type": "object", - "additionalProperties": false, - "description": "information about external documentation", - "required": [ - "url" - ], - "properties": { - "description": { - "title": "externalDocumentationObjectDescription", - "type": "string" - }, - "url": { - "title": "externalDocumentationObjectUrl", - "type": "string", - "format": "uri" - } - }, - "patternProperties": { - "^x-": { - "$ref": "#/definitions/specificationExtension" - } - } - }, - "methodObject": { - "title": "methodObject", - "type": "object", - "required": [ - "name", - "params" - ], - "additionalProperties": false, - "properties": { - "name": { - "title": "methodObjectName", - "description": "The cannonical name for the method. The name MUST be unique within the methods array.", - "type": "string", - "minLength": 1 - }, - "description": { - "title": "methodObjectDescription", - "description": "A verbose explanation of the method behavior. GitHub Flavored Markdown syntax MAY be used for rich text representation.", - "type": "string" - }, - "summary": { - "title": "methodObjectSummary", - "description": "A short summary of what the method does.", - "type": "string" - }, - "servers": { - "title": "servers", - "type": "array", - "additionalItems": false, - "items": { - "$ref": "#/definitions/serverObject" - } - }, - "tags": { - "title": "methodObjectTags", - "type": "array", - "items": { - "title": "tagOrReference", - "oneOf": [ - { - "$ref": "#/definitions/tagObject" - }, - { - "$ref": "#/definitions/referenceObject" - } - ] - } - }, - "paramStructure": { - "title": "methodObjectParamStructure", - "type": "string", - "description": "Format the server expects the params. Defaults to 'either'.", - "enum": [ - "by-position", - "by-name", - "either" - ], - "default": "either" - }, - "params": { - "title": "methodObjectParams", - "type": "array", - "items": { - "title": "contentDescriptorOrReference", - "oneOf": [ - { - "$ref": "#/definitions/contentDescriptorObject" - }, - { - "$ref": "#/definitions/referenceObject" - } - ] - } - }, - "result": { - "title": "methodObjectResult", - "oneOf": [ - { - "$ref": "#/definitions/contentDescriptorObject" - }, - { - "$ref": "#/definitions/referenceObject" - } - ] - }, - "errors": { - "title": "methodObjectErrors", - "description": "Defines an application level error.", - "type": "array", - "items": { - "title": "errorOrReference", - "oneOf": [ - { - "$ref": "#/definitions/errorObject" - }, - { - "$ref": "#/definitions/referenceObject" - } - ] - } - }, - "links": { - "title": "methodObjectLinks", - "type": "array", - "items": { - "title": "linkOrReference", - "oneOf": [ - { - "$ref": "#/definitions/linkObject" - }, - { - "$ref": "#/definitions/referenceObject" - } - ] - } - }, - "examples": { - "title": "methodObjectExamples", - "type": "array", - "items": { - "title": "examplePairingOrReference", - "oneOf": [ - { - "$ref": "#/definitions/examplePairingObject" - }, - { - "$ref": "#/definitions/referenceObject" - } - ] - } - }, - "deprecated": { - "title": "methodObjectDeprecated", - "type": "boolean", - "default": false - }, - "externalDocs": { - "$ref": "#/definitions/externalDocumentationObject" - } - }, - "patternProperties": { - "^x-": { - "$ref": "#/definitions/specificationExtension" - } - } - }, - "tagObject": { - "title": "tagObject", - "type": "object", - "additionalProperties": false, - "required": [ - "name" - ], - "properties": { - "name": { - "title": "tagObjectName", - "type": "string", - "minLength": 1 - }, - "description": { - "title": "tagObjectDescription", - "type": "string" - }, - "externalDocs": { - "$ref": "#/definitions/externalDocumentationObject" - } - }, - "patternProperties": { - "^x-": { - "$ref": "#/definitions/specificationExtension" - } - } - }, - "exampleObject": { - "title": "exampleObject", - "type": "object", - "required": [ - "name", - "value" - ], - "properties": { - "summary": { - "title": "exampleObjectSummary", - "type": "string" - }, - "value": { - "title": "exampleObjectValue" - }, - "description": { - "title": "exampleObjectDescription", - "type": "string" - }, - "name": { - "title": "exampleObjectName", - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-": { - "$ref": "#/definitions/specificationExtension" - } - } - }, - "examplePairingObject": { - "title": "examplePairingObject", - "type": "object", - "required": [ - "name", - "params" - ], - "properties": { - "name": { - "title": "examplePairingObjectName", - "type": "string", - "minLength": 1 - }, - "description": { - "title": "examplePairingObjectDescription", - "type": "string" - }, - "params": { - "title": "examplePairingObjectParams", - "type": "array", - "items": { - "title": "exampleOrReference", - "oneOf": [ - { - "$ref": "#/definitions/exampleObject" - }, - { - "$ref": "#/definitions/referenceObject" - } - ] - } - }, - "result": { - "title": "examplePairingObjectResult", - "oneOf": [ - { - "$ref": "#/definitions/exampleObject" - }, - { - "$ref": "#/definitions/referenceObject" - } - ] - } - } - }, - "contentDescriptorObject": { - "title": "contentDescriptorObject", - "type": "object", - "additionalProperties": false, - "required": [ - "name", - "schema" - ], - "properties": { - "name": { - "title": "contentDescriptorObjectName", - "type": "string", - "minLength": 1 - }, - "description": { - "title": "contentDescriptorObjectDescription", - "type": "string" - }, - "summary": { - "title": "contentDescriptorObjectSummary", - "type": "string" - }, - "schema": { - "$ref": "#/definitions/JSONSchema" - }, - "required": { - "title": "contentDescriptorObjectRequired", - "type": "boolean", - "default": false - }, - "deprecated": { - "title": "contentDescriptorObjectDeprecated", - "type": "boolean", - "default": false - } - }, - "patternProperties": { - "^x-": { - "$ref": "#/definitions/specificationExtension" - } - } - } - } -} \ No newline at end of file + "$ref": "https://meta.open-rpc.org" +}