diff --git a/compiler-rs/Cargo.lock b/compiler-rs/Cargo.lock index 2d50ee7e09..e12dbba3f4 100644 --- a/compiler-rs/Cargo.lock +++ b/compiler-rs/Cargo.lock @@ -28,9 +28,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.15" +version = "0.6.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526" +checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" dependencies = [ "anstyle", "anstyle-parse", @@ -43,43 +43,44 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.8" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" +checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" [[package]] name = "anstyle-parse" -version = "0.2.5" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb" +checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a" +checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.4" +version = "3.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8" +checksum = "ca3534e77181a9cc07539ad51f2141fe32f6c3ffd4df76db8ad92346b003ae4e" dependencies = [ "anstyle", - "windows-sys 0.52.0", + "once_cell", + "windows-sys 0.59.0", ] [[package]] name = "anyhow" -version = "1.0.87" +version = "1.0.97" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10f00e1f6e58a40e807377c75c6a7f97bf9044fab57816f2414e6f5f4499d7b8" +checksum = "dcfed56ad506cb2c684a14971b8861fdc3baaaae314b9e5f9bb532cbe3ba7a4f" [[package]] name = "arcstr" @@ -113,33 +114,27 @@ dependencies = [ [[package]] name = "bitflags" -version = "2.6.0" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" +checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd" [[package]] name = "bumpalo" -version = "3.16.0" +version = "3.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" - -[[package]] -name = "byteorder" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" +checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" [[package]] name = "bytes" -version = "1.8.0" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ac0150caa2ae65ca5bd83f25c7de183dea78d4d366469f148435e2acfbad0da" +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" [[package]] name = "cc" -version = "1.1.18" +version = "1.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b62ac837cdb5cb22e10a256099b4fc502b1dfe560cb282963a974d7abd80e476" +checksum = "be714c154be609ec7f5dad223a33bf1482fff90472de28f7362806e6d4832b8c" dependencies = [ "shlex", ] @@ -152,9 +147,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "clap" -version = "4.5.17" +version = "4.5.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e5a21b8495e732f1b3c364c9949b201ca7bae518c502c80256c96ad79eaf6ac" +checksum = "6088f3ae8c3608d19260cd7445411865a485688711b78b5be70d78cd96136f83" dependencies = [ "clap_builder", "clap_derive", @@ -162,9 +157,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.17" +version = "4.5.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cf2dd12af7a047ad9d6da2b6b249759a22a7abc0f474c1dae1777afa4b21a73" +checksum = "22a7ef7f676155edfb82daa97f99441f3ebf4a58d5e32f295a56259f1b6facc8" dependencies = [ "anstream", "anstyle", @@ -174,9 +169,9 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.13" +version = "4.5.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "501d359d5f3dcaf6ecdeee48833ae73ec6e42723a1e52419c79abf9507eec0a0" +checksum = "09176aae279615badda0765c0c0b3f6ed53f4709118af73cf4655d85d1530cd7" dependencies = [ "heck", "proc-macro2", @@ -186,9 +181,9 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.7.2" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" +checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "clients_schema" @@ -226,9 +221,9 @@ dependencies = [ [[package]] name = "colorchoice" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" +checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" [[package]] name = "compiler-wasm-lib" @@ -243,6 +238,18 @@ dependencies = [ "wasm-bindgen-test", ] +[[package]] +name = "console" +version = "0.15.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "054ccb5b10f9f2cbf51eb355ca1d05c2d279ce1804688d0db74b4733a5aeafd8" +dependencies = [ + "encode_unicode", + "libc", + "once_cell", + "windows-sys 0.59.0", +] + [[package]] name = "console_error_panic_hook" version = "0.1.7" @@ -264,9 +271,9 @@ dependencies = [ [[package]] name = "core_maths" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3b02505ccb8c50b0aa21ace0fc08c3e53adebd4e58caa18a36152803c7709a3" +checksum = "77745e017f5edba1a9c1d854f6f3a52dac8a12dd5af5d2f54aecf61e43d80d30" dependencies = [ "libm", ] @@ -335,15 +342,21 @@ dependencies = [ [[package]] name = "either" -version = "1.13.0" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" + +[[package]] +name = "encode_unicode" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" +checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" [[package]] name = "env_filter" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f2c92ceda6ceec50f43169f9ee8424fe2db276791afde7b2cd8bc084cb376ab" +checksum = "186e05a59d4c50738528153b83b0b0194d3a29507dfec16eccd4b342903397d0" dependencies = [ "log", "regex", @@ -351,22 +364,22 @@ dependencies = [ [[package]] name = "env_logger" -version = "0.11.5" +version = "0.11.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13fa619b91fb2381732789fc5de83b45675e882f66623b7d8cb4f643017018d" +checksum = "c3716d7a920fb4fac5d84e9d4bce8ceb321e9414b4409da61b07b75c1e3d0697" dependencies = [ "anstream", "anstyle", "env_filter", - "humantime", + "jiff", "log", ] [[package]] name = "equivalent" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "figlet-rs" @@ -382,7 +395,19 @@ checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ "cfg-if", "libc", - "wasi", + "wasi 0.11.0+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a49c392881ce6d5c3b8cb70f98717b7c07aabbdff06687b9030dbfbe2725f8" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.13.3+wasi-0.2.2", + "windows-targets", ] [[package]] @@ -393,9 +418,9 @@ checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" [[package]] name = "hashbrown" -version = "0.14.5" +version = "0.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" +checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" [[package]] name = "heck" @@ -403,12 +428,6 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" -[[package]] -name = "hermit-abi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" - [[package]] name = "hostname" version = "0.3.1" @@ -431,12 +450,6 @@ dependencies = [ "windows", ] -[[package]] -name = "humantime" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" - [[package]] name = "icu_collections" version = "1.5.0" @@ -513,15 +526,29 @@ checksum = "f739ee737260d955e330bc83fdeaaf1631f7fb7ed218761d3c04bb13bb7d79df" [[package]] name = "indexmap" -version = "2.5.0" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5" +checksum = "3954d50fe15b02142bf25d3b8bdadb634ec3948f103d04ffe3031bc8fe9d7058" dependencies = [ "equivalent", "hashbrown", "serde", ] +[[package]] +name = "insta" +version = "1.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50259abbaa67d11d2bcafc7ba1d094ed7a0c70e3ce893f0d0997f73558cb3084" +dependencies = [ + "console", + "linked-hash-map", + "once_cell", + "pin-project", + "serde", + "similar", +] + [[package]] name = "is_terminal_polyfill" version = "1.70.1" @@ -539,16 +566,41 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.11" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" + +[[package]] +name = "jiff" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" +checksum = "d699bc6dfc879fb1bf9bdff0d4c56f0884fc6f0d0eb0fba397a6d00cd9a6b85e" +dependencies = [ + "jiff-static", + "log", + "portable-atomic", + "portable-atomic-util", + "serde", +] + +[[package]] +name = "jiff-static" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d16e75759ee0aa64c57a56acbf43916987b20c77373cb7e808979e02b93c9f9" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] [[package]] name = "js-sys" -version = "0.3.70" +version = "0.3.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a" +checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" dependencies = [ + "once_cell", "wasm-bindgen", ] @@ -560,15 +612,15 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.166" +version = "0.2.170" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2ccc108bbc0b1331bd061864e7cd823c0cab660bbe6970e66e2c0614decde36" +checksum = "875b3680cb2f8f71bdcf9a30f38d48282f5d3c95cbf9b3fa57269bb5d5c06828" [[package]] name = "libm" -version = "0.2.8" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" +checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa" [[package]] name = "libyml" @@ -576,11 +628,17 @@ version = "0.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1303532258de1fbe263b4daaaba0e17e3d502b8de57b7845928b92398fb4afd1" +[[package]] +name = "linked-hash-map" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" + [[package]] name = "litemap" -version = "0.7.3" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "643cb0b8d4fcc284004d5fd0d67ccf61dfffadb7f75e1e71bc420f4688a3a704" +checksum = "23fb14cb19457329c82206317a5663005a4d404783dc74f4252769b0d5f42856" [[package]] name = "lock_api" @@ -594,9 +652,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.22" +version = "0.4.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" +checksum = "30bde2b3dc3671ae49d8e2e9f044c7c005836e7a023ee57cffa25ab82764bb9e" [[package]] name = "match_cfg" @@ -612,9 +670,9 @@ checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] name = "minicov" -version = "0.3.5" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c71e683cd655513b99affab7d317deb690528255a0d5f717f1024093c12b169" +checksum = "f27fe9f1cc3c22e1687f9446c2083c4c5fc7f0bcf1c7a86bdbded14985895b4b" dependencies = [ "cc", "walkdir", @@ -622,22 +680,21 @@ dependencies = [ [[package]] name = "miniz_oxide" -version = "0.8.0" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" +checksum = "8e3e04debbb59698c15bacbb6d93584a8c0ca9cc3213cb423d31f760d8843ce5" dependencies = [ "adler2", ] [[package]] name = "mio" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" +checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" dependencies = [ - "hermit-abi", "libc", - "wasi", + "wasi 0.11.0+wasi-snapshot-preview1", "windows-sys 0.52.0", ] @@ -659,18 +716,18 @@ checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" [[package]] name = "object" -version = "0.36.5" +version = "0.36.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e" +checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" dependencies = [ "memchr", ] [[package]] name = "once_cell" -version = "1.19.0" +version = "1.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +checksum = "cde51589ab56b20a6f686b2c68f7a0bd6add753d697abf720d63f8db3ab7b1ad" [[package]] name = "openapi_to_clients_schema" @@ -680,6 +737,7 @@ dependencies = [ "clients_schema", "convert_case", "indexmap", + "insta", "openapiv3", "serde_ignored", "serde_json", @@ -728,11 +786,46 @@ dependencies = [ "windows-targets", ] +[[package]] +name = "pin-project" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "pin-project-lite" -version = "0.2.14" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + +[[package]] +name = "portable-atomic" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "350e9b48cbc6b0e028b0473b114454c6316e57336ee184ceab6e53f72c178b3e" + +[[package]] +name = "portable-atomic-util" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" +checksum = "d8a2f0d8d040d7848a709caf78912debcc3f33ee4b3cac47d73d1e1069e83507" +dependencies = [ + "portable-atomic", +] [[package]] name = "powerfmt" @@ -742,27 +835,27 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "ppv-lite86" -version = "0.2.20" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" dependencies = [ "zerocopy", ] [[package]] name = "proc-macro2" -version = "1.0.86" +version = "1.0.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" +checksum = "a31971752e70b8b2686d7e46ec17fb38dad4051d94024c88df49b667caea9c84" dependencies = [ "unicode-ident", ] [[package]] name = "quote" -version = "1.0.37" +version = "1.0.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" +checksum = "c1f1914ce909e1658d9907913b4b91947430c7d9be598b15a1912935b8c04801" dependencies = [ "proc-macro2", ] @@ -794,14 +887,14 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom", + "getrandom 0.2.15", ] [[package]] name = "redox_syscall" -version = "0.5.7" +version = "0.5.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" +checksum = "0b8c0c260b63a8219631167be35e6a988e9554dbd323f8bd08439c8ed1302bd1" dependencies = [ "bitflags", ] @@ -869,11 +962,17 @@ version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" +[[package]] +name = "rustversion" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2" + [[package]] name = "ryu" -version = "1.0.18" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" [[package]] name = "same-file" @@ -884,12 +983,6 @@ dependencies = [ "winapi-util", ] -[[package]] -name = "scoped-tls" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" - [[package]] name = "scopeguard" version = "1.2.0" @@ -898,9 +991,9 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "serde" -version = "1.0.210" +version = "1.0.219" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" +checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" dependencies = [ "serde_derive", ] @@ -916,9 +1009,9 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.210" +version = "1.0.219" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" +checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" dependencies = [ "proc-macro2", "quote", @@ -927,18 +1020,18 @@ dependencies = [ [[package]] name = "serde_ignored" -version = "0.1.10" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8e319a36d1b52126a0d608f24e93b2d81297091818cd70625fcf50a15d84ddf" +checksum = "566da67d80e92e009728b3731ff0e5360cb181432b8ca73ea30bb1d170700d76" dependencies = [ "serde", ] [[package]] name = "serde_json" -version = "1.0.128" +version = "1.0.140" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" +checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" dependencies = [ "itoa", "memchr", @@ -948,9 +1041,9 @@ dependencies = [ [[package]] name = "serde_path_to_error" -version = "0.1.16" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af99884400da37c88f5e9146b7f1fd0fbcae8f6eec4e9da38b67d05486f814a6" +checksum = "59fab13f937fa393d08645bf3a84bdfe86e296747b506ada67bb15f10f218b2a" dependencies = [ "itoa", "serde", @@ -999,17 +1092,23 @@ dependencies = [ "libc", ] +[[package]] +name = "similar" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbbb5d9659141646ae647b42fe094daf6c6192d1620870b449d9557f748b2daa" + [[package]] name = "smallvec" -version = "1.13.2" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" +checksum = "7fcf8323ef1faaee30a44a340193b1ac6814fd9b7b4e88e9d4519a3e4abe1cfd" [[package]] name = "socket2" -version = "0.5.7" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" +checksum = "c970269d99b64e60ec3bd6ad27270092a5394c4e309314b18ae3fe575695fbe8" dependencies = [ "libc", "windows-sys 0.52.0", @@ -1029,9 +1128,9 @@ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "syn" -version = "2.0.77" +version = "2.0.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed" +checksum = "b09a44accad81e1ba1cd74a32461ba89dee89095ba17b32f5d03683b1b1fc2a0" dependencies = [ "proc-macro2", "quote", @@ -1067,9 +1166,9 @@ dependencies = [ [[package]] name = "time" -version = "0.3.36" +version = "0.3.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" +checksum = "dad298b01a40a23aac4580b67e3dbedb7cc8402f3592d7f49469de2ea4aecdd8" dependencies = [ "deranged", "num-conv", @@ -1080,9 +1179,9 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" +checksum = "765c97a5b985b7c11d7bc27fa927dc4fe6af3a6dfb021d28deb60d3bf51e76ef" [[package]] name = "tinystr" @@ -1095,9 +1194,9 @@ dependencies = [ [[package]] name = "tokio" -version = "1.41.1" +version = "1.44.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22cfb5bee7a6a52939ca9224d6ac897bb669134078daa8735560897f69de4d33" +checksum = "9975ea0f48b5aa3972bf2d888c238182458437cc2a19374b81b25cdf1023fb3a" dependencies = [ "backtrace", "bytes", @@ -1113,9 +1212,9 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" +checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" dependencies = [ "proc-macro2", "quote", @@ -1124,9 +1223,9 @@ dependencies = [ [[package]] name = "tracing" -version = "0.1.40" +version = "0.1.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" dependencies = [ "pin-project-lite", "tracing-attributes", @@ -1135,9 +1234,9 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.27" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" dependencies = [ "proc-macro2", "quote", @@ -1146,9 +1245,9 @@ dependencies = [ [[package]] name = "tracing-core" -version = "0.1.32" +version = "0.1.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" dependencies = [ "once_cell", "valuable", @@ -1167,9 +1266,9 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.18" +version = "0.3.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" +checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" dependencies = [ "nu-ansi-term", "sharded-slab", @@ -1181,15 +1280,15 @@ dependencies = [ [[package]] name = "unicode-ident" -version = "1.0.12" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" [[package]] name = "unicode-segmentation" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" [[package]] name = "utf8_iter" @@ -1205,18 +1304,18 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.11.0" +version = "1.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8c5f0a0af699448548ad1a2fbf920fb4bee257eae39953ba95cb84891a0446a" +checksum = "e0f540e3240398cce6128b64ba83fdbdd86129c16a3aa1a3a252efd66eb3d587" dependencies = [ - "getrandom", + "getrandom 0.3.1", ] [[package]] name = "valuable" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" +checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" [[package]] name = "version_check" @@ -1267,26 +1366,35 @@ version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +[[package]] +name = "wasi" +version = "0.13.3+wasi-0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26816d2e1a4a36a2940b96c5296ce403917633dff8f3440e9b236ed6f6bacad2" +dependencies = [ + "wit-bindgen-rt", +] + [[package]] name = "wasm-bindgen" -version = "0.2.93" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5" +checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" dependencies = [ "cfg-if", "once_cell", + "rustversion", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.93" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b" +checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" dependencies = [ "bumpalo", "log", - "once_cell", "proc-macro2", "quote", "syn", @@ -1295,21 +1403,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.43" +version = "0.4.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61e9300f63a621e96ed275155c108eb6f843b6a26d053f122ab69724559dc8ed" +checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" dependencies = [ "cfg-if", "js-sys", + "once_cell", "wasm-bindgen", "web-sys", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.93" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf" +checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -1317,9 +1426,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.93" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" +checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" dependencies = [ "proc-macro2", "quote", @@ -1330,20 +1439,21 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.93" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484" +checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +dependencies = [ + "unicode-ident", +] [[package]] name = "wasm-bindgen-test" -version = "0.3.43" +version = "0.3.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68497a05fb21143a08a7d24fc81763384a3072ee43c44e86aad1744d6adef9d9" +checksum = "66c8d5e33ca3b6d9fa3b4676d774c5778031d27a578c2b007f905acf816152c3" dependencies = [ - "console_error_panic_hook", "js-sys", "minicov", - "scoped-tls", "wasm-bindgen", "wasm-bindgen-futures", "wasm-bindgen-test-macro", @@ -1351,9 +1461,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-test-macro" -version = "0.3.43" +version = "0.3.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b8220be1fa9e4c889b30fd207d4906657e7e90b12e0e6b0c8b8d8709f5de021" +checksum = "17d5042cc5fa009658f9a7333ef24291b1291a25b6382dd68862a7f3b969f69b" dependencies = [ "proc-macro2", "quote", @@ -1362,9 +1472,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.70" +version = "0.3.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26fdeaafd9bd129f65e7c031593c24d62186301e0c72c8978fa1678be7d532c0" +checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" dependencies = [ "js-sys", "wasm-bindgen", @@ -1502,6 +1612,15 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" +[[package]] +name = "wit-bindgen-rt" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3268f3d866458b787f390cf61f4bbb563b922d091359f9608842999eaee3943c" +dependencies = [ + "bitflags", +] + [[package]] name = "writeable" version = "0.5.5" @@ -1510,9 +1629,9 @@ checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" [[package]] name = "yoke" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c5b1314b079b0930c31e3af543d8ee1757b1951ae1e1565ec704403a7240ca5" +checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" dependencies = [ "serde", "stable_deref_trait", @@ -1522,9 +1641,9 @@ dependencies = [ [[package]] name = "yoke-derive" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28cc31741b18cb6f1d5ff12f5b7523e3d6eb0852bbbad19d73905511d9849b95" +checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" dependencies = [ "proc-macro2", "quote", @@ -1534,19 +1653,18 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.7.35" +version = "0.8.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +checksum = "fd97444d05a4328b90e75e503a34bad781f14e28a823ad3557f0750df1ebcbc6" dependencies = [ - "byteorder", "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.35" +version = "0.8.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +checksum = "6352c01d0edd5db859a63e2605f4ea3183ddbd15e2c4a9e7d32184df75e4f154" dependencies = [ "proc-macro2", "quote", @@ -1555,18 +1673,18 @@ dependencies = [ [[package]] name = "zerofrom" -version = "0.1.4" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91ec111ce797d0e0784a1116d0ddcdbea84322cd79e5d5ad173daeba4f93ab55" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" dependencies = [ "zerofrom-derive", ] [[package]] name = "zerofrom-derive" -version = "0.1.4" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ea7b4a3637ea8669cedf0f1fd5c286a17f3de97b8dd5a70a6c167a1730e63a5" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", diff --git a/compiler-rs/openapi_to_clients_schema/Cargo.toml b/compiler-rs/openapi_to_clients_schema/Cargo.toml index 4ecbaa258f..e2dd896c38 100644 --- a/compiler-rs/openapi_to_clients_schema/Cargo.toml +++ b/compiler-rs/openapi_to_clients_schema/Cargo.toml @@ -20,6 +20,13 @@ convert_case = { workspace = true } tracing = { workspace = true } tracing-subscriber = { workspace = true } +[dev-dependencies] +insta = { version = "1.41.1", features = ["json", "serde"] } + +[profile.dev.package] +insta.opt-level = 3 +similar.opt-level = 3 + # Some json schema implementations #boon = "0.3.1" #jsonschema-transpiler = "1.10.0" diff --git a/compiler-rs/openapi_to_clients_schema/fixtures/kibana.serverless.yaml b/compiler-rs/openapi_to_clients_schema/fixtures/kibana.serverless.yaml new file mode 100644 index 0000000000..8a64750c73 --- /dev/null +++ b/compiler-rs/openapi_to_clients_schema/fixtures/kibana.serverless.yaml @@ -0,0 +1,319 @@ +openapi: 3.0.3 +info: + contact: + name: Kibana Team + description: | + The Kibana REST APIs for Elastic serverless enable you to manage resources + such as connectors, data views, and saved objects. The API calls are + stateless. Each request that you make happens in isolation from other calls + and must include all of the necessary information for Kibana to fulfill the + request. API requests return JSON output, which is a format that is + machine-readable and works well for automation. + + To interact with Kibana APIs, use the following operations: + + - GET: Fetches the information. + - POST: Adds new information. + - PUT: Updates the existing information. + - DELETE: Removes the information. + + You can prepend any Kibana API endpoint with `kbn:` and run the request in + **Dev Tools → Console**. For example: + + ``` + GET kbn:/api/data_views + ``` + + ## Documentation source and versions + + This documentation is derived from the `main` branch of the [kibana](https://github.com/elastic/kibana) repository. + It is provided under license [Attribution-NonCommercial-NoDerivatives 4.0 International](https://creativecommons.org/licenses/by-nc-nd/4.0/). + title: Kibana Serverless APIs + version: 1.0.2 + x-doc-license: + name: Attribution-NonCommercial-NoDerivatives 4.0 International + url: https://creativecommons.org/licenses/by-nc-nd/4.0/ + x-feedbackLink: + label: Feedback + url: https://github.com/elastic/docs-content/issues/new?assignees=&labels=feedback%2Ccommunity&projects=&template=api-feedback.yaml&title=%5BFeedback%5D%3A+ +servers: + - url: https://{kibana_url} + variables: + kibana_url: + default: localhost:5601 +paths: + /api/status: + get: + operationId: SystemStatus + parameters: + - description: The version of the API to use + in: header + name: elastic-api-version + schema: + default: '2023-10-31' + enum: + - '2023-10-31' + type: string + - description: Set to "true" to get the response in v7 format. + in: query + name: v7format + required: false + schema: + type: boolean + - description: Set to "true" to get the response in v8 format. + in: query + name: v8format + required: false + schema: + type: boolean + responses: + '200': + content: + application/json; Elastic-Api-Version=2023-10-31: + schema: + $ref: '#/components/schemas/Kibana_HTTP_APIs_core_status_response' + description: Overall status is OK and Kibana should be functioning normally. + summary: Get Kibana's current status + tags: + - system +components: + schemas: + Kibana_HTTP_APIs_core_status_redactedResponse: + additionalProperties: false + description: A minimal representation of Kibana's operational status. + properties: + status: + additionalProperties: false + properties: + overall: + additionalProperties: false + properties: + level: + description: + Service status levels as human and machine readable + values. + enum: [available, degraded, unavailable, critical] + type: string + required: [level] + type: object + required: [overall] + type: object + required: [status] + type: object + Kibana_HTTP_APIs_core_status_response: + additionalProperties: false + description: Kibana's operational status as well as a detailed breakdown of plugin statuses indication of various loads (like event loop utilization and network traffic) at time of request. + type: object + properties: + metrics: + additionalProperties: false + description: Metric groups collected by Kibana. + type: object + properties: + collection_interval_in_millis: + description: The interval at which metrics should be collected. + type: number + elasticsearch_client: + additionalProperties: false + description: Current network metrics of Kibana's Elasticsearch client. + type: object + properties: + totalActiveSockets: + description: Count of network sockets currently in use. + type: number + totalIdleSockets: + description: Count of network sockets currently idle. + type: number + totalQueuedRequests: + description: Count of requests not yet assigned to sockets. + type: number + required: + - totalActiveSockets + - totalIdleSockets + - totalQueuedRequests + last_updated: + description: The time metrics were collected. + type: string + required: + - elasticsearch_client + - last_updated + - collection_interval_in_millis + name: + description: Kibana instance name. + type: string + status: + additionalProperties: false + type: object + properties: + core: + additionalProperties: false + description: Statuses of core Kibana services. + type: object + properties: + elasticsearch: + additionalProperties: false + type: object + properties: + detail: + description: Human readable detail of the service status. + type: string + documentationUrl: + description: A URL to further documentation regarding this service. + type: string + level: + description: Service status levels as human and machine readable values. + enum: + - available + - degraded + - unavailable + - critical + type: string + meta: + additionalProperties: true + description: An unstructured set of extra metadata about this service. + type: object + summary: + description: A human readable summary of the service status. + type: string + required: + - level + - summary + - meta + savedObjects: + additionalProperties: false + type: object + properties: + detail: + description: Human readable detail of the service status. + type: string + documentationUrl: + description: A URL to further documentation regarding this service. + type: string + level: + description: Service status levels as human and machine readable values. + enum: + - available + - degraded + - unavailable + - critical + type: string + meta: + additionalProperties: true + description: An unstructured set of extra metadata about this service. + type: object + summary: + description: A human readable summary of the service status. + type: string + required: + - level + - summary + - meta + required: + - elasticsearch + - savedObjects + overall: + additionalProperties: false + type: object + properties: + detail: + description: Human readable detail of the service status. + type: string + documentationUrl: + description: A URL to further documentation regarding this service. + type: string + level: + description: Service status levels as human and machine readable values. + enum: + - available + - degraded + - unavailable + - critical + type: string + meta: + additionalProperties: true + description: An unstructured set of extra metadata about this service. + type: object + summary: + description: A human readable summary of the service status. + type: string + required: + - level + - summary + - meta + plugins: + additionalProperties: + additionalProperties: false + type: object + properties: + detail: + description: Human readable detail of the service status. + type: string + documentationUrl: + description: A URL to further documentation regarding this service. + type: string + level: + description: Service status levels as human and machine readable values. + enum: + - available + - degraded + - unavailable + - critical + type: string + meta: + additionalProperties: true + description: An unstructured set of extra metadata about this service. + type: object + summary: + description: A human readable summary of the service status. + type: string + required: + - level + - summary + - meta + description: A dynamic mapping of plugin ID to plugin status. + type: object + required: + - overall + - core + - plugins + uuid: + description: Unique, generated Kibana instance UUID. This UUID should persist even if the Kibana process restarts. + type: string + version: + additionalProperties: false + type: object + properties: + build_date: + description: The date and time of this build. + type: string + build_flavor: + description: The build flavour determines configuration and behavior of Kibana. On premise users will almost always run the "traditional" flavour, while other flavours are reserved for Elastic-specific use cases. + enum: + - serverless + - traditional + type: string + build_hash: + description: A unique hash value representing the git commit of this Kibana build. + type: string + build_number: + description: A monotonically increasing number, each subsequent build will have a higher number. + type: number + build_snapshot: + description: Whether this build is a snapshot build. + type: boolean + number: + description: A semantic version number. + type: string + required: + - number + - build_hash + - build_number + - build_snapshot + - build_flavor + - build_date + required: + - name + - uuid + - version + - status + - metrics diff --git a/compiler-rs/openapi_to_clients_schema/src/endpoints.rs b/compiler-rs/openapi_to_clients_schema/src/endpoints.rs index 468c24678e..6d07c11853 100644 --- a/compiler-rs/openapi_to_clients_schema/src/endpoints.rs +++ b/compiler-rs/openapi_to_clients_schema/src/endpoints.rs @@ -15,4 +15,173 @@ // specific language governing permissions and limitations // under the License. -// TODO +use clients_schema::{ + builtins, BaseType, Body, Endpoint, InstanceOf, NoBody, Property, Request, TypeDefinition, TypeName, UrlTemplate, + ValueOf, +}; +use openapiv3::{ReferenceOr, StatusCode}; + +use crate::types::{self, Types}; +use tracing::info; + +pub fn generate_endpoint( + id: &str, + path: &openapiv3::ReferenceOr, + types: &mut Types, +) -> anyhow::Result { + info!("Generating endpoint for {id}"); + match path { + ReferenceOr::Item(path_item) => { + if let Some(operation) = &path_item.get { + generate_get_endpoint(id, &operation, types) + } else { + Err(anyhow::anyhow!("No get operation found for endpoint {}", id)) + } + } + _ => Err(anyhow::anyhow!("No description found for endpoint {}", id)), + } +} + +fn generate_get_endpoint(id: &str, operation: &openapiv3::Operation, types: &mut Types) -> anyhow::Result { + use convert_case::{Case, Casing}; + + let default_name = operation.operation_id.as_deref().unwrap_or_default(); + let name = format!("_global.{}", default_name.to_case(Case::Snake)); + let description = operation.summary.as_deref().unwrap_or_default().to_string(); + + let response = generate_get_response(&operation); + let response_media_type = if response.is_some() { + vec!["application/json".to_string()] + } else { + vec![] + }; + let request = generate_get_request(&operation, types)?; + let urls = vec![UrlTemplate { + path: id.to_string(), + methods: vec!["GET".to_string()], + deprecation: None, + }]; + + Ok(Endpoint { + name, + description, + doc_url: None, + doc_id: None, + ext_doc_id: None, + ext_doc_url: None, + deprecation: None, + availability: None, + doc_tag: None, + request: Some(request), + request_body_required: false, + response, + urls, + request_media_type: vec![], + response_media_type, + privileges: None, + }) +} + +fn generate_get_response(operation: &openapiv3::Operation) -> Option { + let openapi_response: &ReferenceOr = + operation.responses.responses.get(&StatusCode::Code(200))?; + let response_typename = match openapi_response { + ReferenceOr::Reference { reference } => types::ref_to_typename(reference), + ReferenceOr::Item(response) => match response.content.values().next()?.schema.as_ref()? { + ReferenceOr::Reference { reference } => types::ref_to_typename(reference), + ReferenceOr::Item(schema) => panic!("complex schema not expected {:?}", schema.schema_kind), + }, + }; + Some(response_typename) +} + +fn generate_get_request(operation: &openapiv3::Operation, types: &mut Types) -> anyhow::Result { + let mut query = vec![]; + for parameter in &operation.parameters { + match parameter { + ReferenceOr::Reference { .. } => panic!("expected parameter to be inlined"), + ReferenceOr::Item(parameter) => { + match ¶meter { + openapiv3::Parameter::Query { parameter_data, .. } => { + let type_ = match ¶meter_data.format { + openapiv3::ParameterSchemaOrContent::Schema(ref_or_schema) => match ref_or_schema { + ReferenceOr::Item(item) => match &item.schema_kind { + openapiv3::SchemaKind::Type(type_) => convert_builtin_type(type_)?, + _ => return Err(anyhow::anyhow!("unexpected schema kind")), + }, + ReferenceOr::Reference { reference } => { + return Err(anyhow::anyhow!("unexpected ReferenceOr::Reference({})", reference)) + } + }, + openapiv3::ParameterSchemaOrContent::Content(content) => { + return Err(anyhow::anyhow!("unexpected Content({:?})", content)) + } + }; + + query.push(Property { + name: parameter_data.name.clone(), + typ: ValueOf::InstanceOf(InstanceOf::new(type_)), + description: parameter_data.description.clone(), + required: parameter_data.required, + doc_url: None, + doc_id: None, + ext_doc_url: None, + ext_doc_id: None, + server_default: None, + deprecation: None, + availability: None, + codegen_name: None, + aliases: vec![], + container_property: false, + es_quirk: None, + }); + } + _ => (), + }; + } + } + } + let request = Request { + base: BaseType { + name: TypeName { + namespace: "_global".into(), + name: "SystemStatusRequest".into(), + }, + description: None, + doc_url: None, + doc_id: None, + ext_doc_url: None, + ext_doc_id: None, + deprecation: None, + es_quirk: None, + variant_name: None, + codegen_names: vec![], + spec_location: None, + }, + generics: vec![], + inherits: None, + implements: vec![], + path: vec![], + query, + body: Body::NoBody(NoBody {}), + behaviors: vec![], + attached_behaviors: vec![], + }; + types.add("SystemStatusRequest", TypeDefinition::Request(request.clone())); + Ok(request.base.name.clone()) +} + +fn convert_builtin_type(type_: &openapiv3::Type) -> anyhow::Result { + Ok(match type_ { + openapiv3::Type::Boolean(_) => builtins::BOOLEAN.clone(), + openapiv3::Type::Integer(_) => builtins::INTEGER.clone(), + openapiv3::Type::Number(variant) => match &variant.format { + openapiv3::VariantOrUnknownOrEmpty::Item(number_type) => match number_type { + openapiv3::NumberFormat::Float => builtins::FLOAT.clone(), + openapiv3::NumberFormat::Double => builtins::DOUBLE.clone(), + }, + _ => builtins::DOUBLE.clone(), + }, + _ => return Err(anyhow::anyhow!("unexpected type {:?}", type_)), + }) +} diff --git a/compiler-rs/openapi_to_clients_schema/src/lib.rs b/compiler-rs/openapi_to_clients_schema/src/lib.rs index ca763ab2cc..2c4dfd0c7c 100644 --- a/compiler-rs/openapi_to_clients_schema/src/lib.rs +++ b/compiler-rs/openapi_to_clients_schema/src/lib.rs @@ -21,27 +21,30 @@ pub mod types; use std::convert::Into; +use anyhow::Error; use clients_schema::IndexedModel; use openapi::OpenAPI; use tracing::warn; +use types::Types; /// Generate a schema.json from an OpenAPI schema pub fn generate(open_api: &OpenAPI) -> anyhow::Result { let mut json_schema = clients_schema::IndexedModel::default(); - generate_types(open_api, &mut json_schema)?; + let mut schema_types = generate_types(open_api)?; + generate_endpoints(open_api, &mut json_schema, &mut schema_types)?; - // endpoints - // for (id, path) in &open_api.paths.paths { - // let endpoint = generate_endpoint(open_api, id, path)?; - // json_schema.endpoints.push(endpoint); - // } + json_schema.types = schema_types + .types() + .into_iter() + .map(|t| (t.name().clone(), t)) + .collect(); Ok(json_schema) } /// Generate all types from OpenAPI components -fn generate_types(open_api: &OpenAPI, model: &mut IndexedModel) -> anyhow::Result<()> { +fn generate_types(open_api: &OpenAPI) -> anyhow::Result { if let Some(ref components) = open_api.components { let mut types = types::Types::default(); for (id, schema) in &components.schemas { @@ -52,7 +55,16 @@ fn generate_types(open_api: &OpenAPI, model: &mut IndexedModel) -> anyhow::Resul } } let _ = types.check_tracker(); // TODO: actually fail - model.types = types.types().into_iter().map(|t| (t.name().clone(), t)).collect(); + Ok(types) + } else { + Err(Error::msg("No components found")) + } +} + +fn generate_endpoints(open_api: &OpenAPI, json_schema: &mut IndexedModel, types: &mut Types) -> anyhow::Result<()> { + for (id, path) in &open_api.paths.paths { + let endpoint = endpoints::generate_endpoint(id, path, types)?; + json_schema.endpoints.push(endpoint); } Ok(()) diff --git a/compiler-rs/openapi_to_clients_schema/src/main.rs b/compiler-rs/openapi_to_clients_schema/src/main.rs index 1f7c2be6d7..2b0fc349fe 100644 --- a/compiler-rs/openapi_to_clients_schema/src/main.rs +++ b/compiler-rs/openapi_to_clients_schema/src/main.rs @@ -34,6 +34,17 @@ fn main() -> anyhow::Result<()> { _ => return Err(anyhow::anyhow!("expected a single argument")), }; + let open_api = read_openapi_schema(path)?; + let sch_json = openapi_to_clients_schema::generate(&OpenAPI(open_api))?; + + let dest = PathBuf::from(path).with_extension("schema.json"); + let output = std::fs::File::create(dest)?; + serde_json::to_writer_pretty(output, &sch_json)?; + + Ok(()) +} + +fn read_openapi_schema(path: &str) -> anyhow::Result { info!("Loading OpenAPI from {path}"); let data = std::fs::read_to_string(path)?; @@ -46,27 +57,30 @@ fn main() -> anyhow::Result<()> { serde_ignored::deserialize(&mut deser, |path| { unused.insert(path.to_string()); }) - .map_err(From::from) + .map_err(Into::into) } Some(ext) if ext == "yml" || ext == "yaml" => { let deser = serde_yml::Deserializer::from_str(&data); serde_ignored::deserialize(deser, |path| { unused.insert(path.to_string()); }) - .map_err(From::from) + .map_err(Into::into) } _ => Err(anyhow::anyhow!(format!("Unsupported file extension {:?}", path))), - }?; + }; if !unused.is_empty() { - println!("Unused fields in the OpenAPI schema: {:?}", unused); + let message = format!("Unused fields in the OpenAPI schema: {:?}", unused); + return Err(anyhow::anyhow!(message)); } - let sch_json = openapi_to_clients_schema::generate(&OpenAPI(open_api))?; - - let dest = PathBuf::from(path).with_extension("schema.json"); - let output = std::fs::File::create(dest)?; - serde_json::to_writer_pretty(output, &sch_json)?; + open_api +} +#[test] +fn test_kibana_conversion() -> anyhow::Result<()> { + let open_api = read_openapi_schema("fixtures/kibana.serverless.yaml")?; + let sch_json = openapi_to_clients_schema::generate(&OpenAPI(open_api))?; + insta::assert_json_snapshot!(sch_json); Ok(()) } diff --git a/compiler-rs/openapi_to_clients_schema/src/snapshots/openapi_to_clients_schema__kibana_conversion.snap b/compiler-rs/openapi_to_clients_schema/src/snapshots/openapi_to_clients_schema__kibana_conversion.snap new file mode 100644 index 0000000000..162b51ddaf --- /dev/null +++ b/compiler-rs/openapi_to_clients_schema/src/snapshots/openapi_to_clients_schema__kibana_conversion.snap @@ -0,0 +1,1197 @@ +--- +source: openapi_to_clients_schema/src/main.rs +expression: sch_json +--- +{ + "endpoints": [ + { + "name": "_global.system_status", + "description": "Get Kibana's current status", + "request": { + "namespace": "_global", + "name": "SystemStatusRequest" + }, + "requestBodyRequired": false, + "response": { + "namespace": "_global", + "name": "KibanaHttpApIsCoreStatusResponse" + }, + "urls": [ + { + "path": "/api/status", + "methods": [ + "GET" + ] + } + ], + "responseMediaType": [ + "application/json" + ] + } + ], + "types": [ + { + "kind": "interface", + "name": { + "namespace": "_global", + "name": "KibanaHttpApIsCoreStatusRedactedResponse" + }, + "description": "A minimal representation of Kibana's operational status.", + "behaviors": [ + { + "type": { + "namespace": "_spec_utils", + "name": "AdditionalProperties" + }, + "generics": [ + { + "kind": "instance_of", + "type": { + "namespace": "_builtins", + "name": "UserDefined" + } + } + ] + } + ], + "properties": [ + { + "name": "status", + "type": { + "kind": "instance_of", + "type": { + "namespace": "_global", + "name": "KibanaHttpApIsCoreStatusRedactedResponseStatus" + } + }, + "required": true + } + ] + }, + { + "kind": "interface", + "name": { + "namespace": "_global", + "name": "KibanaHttpApIsCoreStatusRedactedResponseStatus" + }, + "behaviors": [ + { + "type": { + "namespace": "_spec_utils", + "name": "AdditionalProperties" + }, + "generics": [ + { + "kind": "instance_of", + "type": { + "namespace": "_builtins", + "name": "UserDefined" + } + } + ] + } + ], + "properties": [ + { + "name": "overall", + "type": { + "kind": "instance_of", + "type": { + "namespace": "_global", + "name": "KibanaHttpApIsCoreStatusRedactedResponseStatusOverall" + } + }, + "required": true + } + ] + }, + { + "kind": "interface", + "name": { + "namespace": "_global", + "name": "KibanaHttpApIsCoreStatusRedactedResponseStatusOverall" + }, + "behaviors": [ + { + "type": { + "namespace": "_spec_utils", + "name": "AdditionalProperties" + }, + "generics": [ + { + "kind": "instance_of", + "type": { + "namespace": "_builtins", + "name": "UserDefined" + } + } + ] + } + ], + "properties": [ + { + "name": "level", + "type": { + "kind": "instance_of", + "type": { + "namespace": "_global", + "name": "KibanaHttpApIsCoreStatusRedactedResponseStatusOverallLevel" + } + }, + "required": true + } + ] + }, + { + "kind": "enum", + "name": { + "namespace": "_global", + "name": "KibanaHttpApIsCoreStatusRedactedResponseStatusOverallLevel" + }, + "description": "Service status levels as human and machine readable values.", + "isOpen": false, + "members": [ + { + "name": "available" + }, + { + "name": "degraded" + }, + { + "name": "unavailable" + }, + { + "name": "critical" + } + ] + }, + { + "kind": "interface", + "name": { + "namespace": "_global", + "name": "KibanaHttpApIsCoreStatusResponse" + }, + "description": "Kibana's operational status as well as a detailed breakdown of plugin statuses indication of various loads (like event loop utilization and network traffic) at time of request.", + "behaviors": [ + { + "type": { + "namespace": "_spec_utils", + "name": "AdditionalProperties" + }, + "generics": [ + { + "kind": "instance_of", + "type": { + "namespace": "_builtins", + "name": "UserDefined" + } + } + ] + } + ], + "properties": [ + { + "name": "metrics", + "type": { + "kind": "instance_of", + "type": { + "namespace": "_global", + "name": "KibanaHttpApIsCoreStatusResponseMetrics" + } + }, + "required": true + }, + { + "name": "name", + "type": { + "kind": "instance_of", + "type": { + "namespace": "_builtins", + "name": "string" + } + }, + "required": true + }, + { + "name": "status", + "type": { + "kind": "instance_of", + "type": { + "namespace": "_global", + "name": "KibanaHttpApIsCoreStatusResponseStatus" + } + }, + "required": true + }, + { + "name": "uuid", + "type": { + "kind": "instance_of", + "type": { + "namespace": "_builtins", + "name": "string" + } + }, + "required": true + }, + { + "name": "version", + "type": { + "kind": "instance_of", + "type": { + "namespace": "_global", + "name": "KibanaHttpApIsCoreStatusResponseVersion" + } + }, + "required": true + } + ] + }, + { + "kind": "interface", + "name": { + "namespace": "_global", + "name": "KibanaHttpApIsCoreStatusResponseMetrics" + }, + "description": "Metric groups collected by Kibana.", + "behaviors": [ + { + "type": { + "namespace": "_spec_utils", + "name": "AdditionalProperties" + }, + "generics": [ + { + "kind": "instance_of", + "type": { + "namespace": "_builtins", + "name": "UserDefined" + } + } + ] + } + ], + "properties": [ + { + "name": "collection_interval_in_millis", + "type": { + "kind": "instance_of", + "type": { + "namespace": "_builtins", + "name": "double" + } + }, + "required": true + }, + { + "name": "elasticsearch_client", + "type": { + "kind": "instance_of", + "type": { + "namespace": "_global", + "name": "KibanaHttpApIsCoreStatusResponseMetricsElasticsearchClient" + } + }, + "required": true + }, + { + "name": "last_updated", + "type": { + "kind": "instance_of", + "type": { + "namespace": "_builtins", + "name": "string" + } + }, + "required": true + } + ] + }, + { + "kind": "interface", + "name": { + "namespace": "_global", + "name": "KibanaHttpApIsCoreStatusResponseMetricsElasticsearchClient" + }, + "description": "Current network metrics of Kibana's Elasticsearch client.", + "behaviors": [ + { + "type": { + "namespace": "_spec_utils", + "name": "AdditionalProperties" + }, + "generics": [ + { + "kind": "instance_of", + "type": { + "namespace": "_builtins", + "name": "UserDefined" + } + } + ] + } + ], + "properties": [ + { + "name": "totalActiveSockets", + "type": { + "kind": "instance_of", + "type": { + "namespace": "_builtins", + "name": "double" + } + }, + "required": true + }, + { + "name": "totalIdleSockets", + "type": { + "kind": "instance_of", + "type": { + "namespace": "_builtins", + "name": "double" + } + }, + "required": true + }, + { + "name": "totalQueuedRequests", + "type": { + "kind": "instance_of", + "type": { + "namespace": "_builtins", + "name": "double" + } + }, + "required": true + } + ] + }, + { + "kind": "interface", + "name": { + "namespace": "_global", + "name": "KibanaHttpApIsCoreStatusResponseStatus" + }, + "behaviors": [ + { + "type": { + "namespace": "_spec_utils", + "name": "AdditionalProperties" + }, + "generics": [ + { + "kind": "instance_of", + "type": { + "namespace": "_builtins", + "name": "UserDefined" + } + } + ] + } + ], + "properties": [ + { + "name": "core", + "type": { + "kind": "instance_of", + "type": { + "namespace": "_global", + "name": "KibanaHttpApIsCoreStatusResponseStatusCore" + } + }, + "required": true + }, + { + "name": "overall", + "type": { + "kind": "instance_of", + "type": { + "namespace": "_global", + "name": "KibanaHttpApIsCoreStatusResponseStatusOverall" + } + }, + "required": true + }, + { + "name": "plugins", + "type": { + "kind": "instance_of", + "type": { + "namespace": "_global", + "name": "KibanaHttpApIsCoreStatusResponseStatusPlugins" + } + }, + "required": true + } + ] + }, + { + "kind": "interface", + "name": { + "namespace": "_global", + "name": "KibanaHttpApIsCoreStatusResponseStatusCore" + }, + "description": "Statuses of core Kibana services.", + "behaviors": [ + { + "type": { + "namespace": "_spec_utils", + "name": "AdditionalProperties" + }, + "generics": [ + { + "kind": "instance_of", + "type": { + "namespace": "_builtins", + "name": "UserDefined" + } + } + ] + } + ], + "properties": [ + { + "name": "elasticsearch", + "type": { + "kind": "instance_of", + "type": { + "namespace": "_global", + "name": "KibanaHttpApIsCoreStatusResponseStatusCoreElasticsearch" + } + }, + "required": true + }, + { + "name": "savedObjects", + "type": { + "kind": "instance_of", + "type": { + "namespace": "_global", + "name": "KibanaHttpApIsCoreStatusResponseStatusCoreSavedObjects" + } + }, + "required": true + } + ] + }, + { + "kind": "interface", + "name": { + "namespace": "_global", + "name": "KibanaHttpApIsCoreStatusResponseStatusCoreElasticsearch" + }, + "behaviors": [ + { + "type": { + "namespace": "_spec_utils", + "name": "AdditionalProperties" + }, + "generics": [ + { + "kind": "instance_of", + "type": { + "namespace": "_builtins", + "name": "UserDefined" + } + } + ] + } + ], + "properties": [ + { + "name": "detail", + "type": { + "kind": "instance_of", + "type": { + "namespace": "_builtins", + "name": "string" + } + }, + "required": false + }, + { + "name": "documentationUrl", + "type": { + "kind": "instance_of", + "type": { + "namespace": "_builtins", + "name": "string" + } + }, + "required": false + }, + { + "name": "level", + "type": { + "kind": "instance_of", + "type": { + "namespace": "_global", + "name": "KibanaHttpApIsCoreStatusResponseStatusCoreElasticsearchLevel" + } + }, + "required": true + }, + { + "name": "meta", + "type": { + "kind": "instance_of", + "type": { + "namespace": "_global", + "name": "KibanaHttpApIsCoreStatusResponseStatusCoreElasticsearchMeta" + } + }, + "required": true + }, + { + "name": "summary", + "type": { + "kind": "instance_of", + "type": { + "namespace": "_builtins", + "name": "string" + } + }, + "required": true + } + ] + }, + { + "kind": "enum", + "name": { + "namespace": "_global", + "name": "KibanaHttpApIsCoreStatusResponseStatusCoreElasticsearchLevel" + }, + "description": "Service status levels as human and machine readable values.", + "isOpen": false, + "members": [ + { + "name": "available" + }, + { + "name": "degraded" + }, + { + "name": "unavailable" + }, + { + "name": "critical" + } + ] + }, + { + "kind": "type_alias", + "name": { + "namespace": "_global", + "name": "KibanaHttpApIsCoreStatusResponseStatusCoreElasticsearchMeta" + }, + "description": "An unstructured set of extra metadata about this service.", + "type": { + "kind": "instance_of", + "type": { + "namespace": "_builtins", + "name": "Dictionary" + }, + "generics": [ + { + "kind": "instance_of", + "type": { + "namespace": "_builtins", + "name": "string" + } + }, + { + "kind": "instance_of", + "type": { + "namespace": "_builtins", + "name": "UserDefined" + } + } + ] + } + }, + { + "kind": "interface", + "name": { + "namespace": "_global", + "name": "KibanaHttpApIsCoreStatusResponseStatusCoreSavedObjects" + }, + "behaviors": [ + { + "type": { + "namespace": "_spec_utils", + "name": "AdditionalProperties" + }, + "generics": [ + { + "kind": "instance_of", + "type": { + "namespace": "_builtins", + "name": "UserDefined" + } + } + ] + } + ], + "properties": [ + { + "name": "detail", + "type": { + "kind": "instance_of", + "type": { + "namespace": "_builtins", + "name": "string" + } + }, + "required": false + }, + { + "name": "documentationUrl", + "type": { + "kind": "instance_of", + "type": { + "namespace": "_builtins", + "name": "string" + } + }, + "required": false + }, + { + "name": "level", + "type": { + "kind": "instance_of", + "type": { + "namespace": "_global", + "name": "KibanaHttpApIsCoreStatusResponseStatusCoreSavedObjectsLevel" + } + }, + "required": true + }, + { + "name": "meta", + "type": { + "kind": "instance_of", + "type": { + "namespace": "_global", + "name": "KibanaHttpApIsCoreStatusResponseStatusCoreSavedObjectsMeta" + } + }, + "required": true + }, + { + "name": "summary", + "type": { + "kind": "instance_of", + "type": { + "namespace": "_builtins", + "name": "string" + } + }, + "required": true + } + ] + }, + { + "kind": "enum", + "name": { + "namespace": "_global", + "name": "KibanaHttpApIsCoreStatusResponseStatusCoreSavedObjectsLevel" + }, + "description": "Service status levels as human and machine readable values.", + "isOpen": false, + "members": [ + { + "name": "available" + }, + { + "name": "degraded" + }, + { + "name": "unavailable" + }, + { + "name": "critical" + } + ] + }, + { + "kind": "type_alias", + "name": { + "namespace": "_global", + "name": "KibanaHttpApIsCoreStatusResponseStatusCoreSavedObjectsMeta" + }, + "description": "An unstructured set of extra metadata about this service.", + "type": { + "kind": "instance_of", + "type": { + "namespace": "_builtins", + "name": "Dictionary" + }, + "generics": [ + { + "kind": "instance_of", + "type": { + "namespace": "_builtins", + "name": "string" + } + }, + { + "kind": "instance_of", + "type": { + "namespace": "_builtins", + "name": "UserDefined" + } + } + ] + } + }, + { + "kind": "interface", + "name": { + "namespace": "_global", + "name": "KibanaHttpApIsCoreStatusResponseStatusOverall" + }, + "behaviors": [ + { + "type": { + "namespace": "_spec_utils", + "name": "AdditionalProperties" + }, + "generics": [ + { + "kind": "instance_of", + "type": { + "namespace": "_builtins", + "name": "UserDefined" + } + } + ] + } + ], + "properties": [ + { + "name": "detail", + "type": { + "kind": "instance_of", + "type": { + "namespace": "_builtins", + "name": "string" + } + }, + "required": false + }, + { + "name": "documentationUrl", + "type": { + "kind": "instance_of", + "type": { + "namespace": "_builtins", + "name": "string" + } + }, + "required": false + }, + { + "name": "level", + "type": { + "kind": "instance_of", + "type": { + "namespace": "_global", + "name": "KibanaHttpApIsCoreStatusResponseStatusOverallLevel" + } + }, + "required": true + }, + { + "name": "meta", + "type": { + "kind": "instance_of", + "type": { + "namespace": "_global", + "name": "KibanaHttpApIsCoreStatusResponseStatusOverallMeta" + } + }, + "required": true + }, + { + "name": "summary", + "type": { + "kind": "instance_of", + "type": { + "namespace": "_builtins", + "name": "string" + } + }, + "required": true + } + ] + }, + { + "kind": "enum", + "name": { + "namespace": "_global", + "name": "KibanaHttpApIsCoreStatusResponseStatusOverallLevel" + }, + "description": "Service status levels as human and machine readable values.", + "isOpen": false, + "members": [ + { + "name": "available" + }, + { + "name": "degraded" + }, + { + "name": "unavailable" + }, + { + "name": "critical" + } + ] + }, + { + "kind": "type_alias", + "name": { + "namespace": "_global", + "name": "KibanaHttpApIsCoreStatusResponseStatusOverallMeta" + }, + "description": "An unstructured set of extra metadata about this service.", + "type": { + "kind": "instance_of", + "type": { + "namespace": "_builtins", + "name": "Dictionary" + }, + "generics": [ + { + "kind": "instance_of", + "type": { + "namespace": "_builtins", + "name": "string" + } + }, + { + "kind": "instance_of", + "type": { + "namespace": "_builtins", + "name": "UserDefined" + } + } + ] + } + }, + { + "kind": "type_alias", + "name": { + "namespace": "_global", + "name": "KibanaHttpApIsCoreStatusResponseStatusPlugins" + }, + "description": "A dynamic mapping of plugin ID to plugin status.", + "type": { + "kind": "instance_of", + "type": { + "namespace": "_builtins", + "name": "Dictionary" + }, + "generics": [ + { + "kind": "instance_of", + "type": { + "namespace": "_builtins", + "name": "string" + } + }, + { + "kind": "instance_of", + "type": { + "namespace": "_global", + "name": "KibanaHttpApIsCoreStatusResponseStatusPluginsValue" + } + } + ] + } + }, + { + "kind": "interface", + "name": { + "namespace": "_global", + "name": "KibanaHttpApIsCoreStatusResponseStatusPluginsValue" + }, + "behaviors": [ + { + "type": { + "namespace": "_spec_utils", + "name": "AdditionalProperties" + }, + "generics": [ + { + "kind": "instance_of", + "type": { + "namespace": "_builtins", + "name": "UserDefined" + } + } + ] + } + ], + "properties": [ + { + "name": "detail", + "type": { + "kind": "instance_of", + "type": { + "namespace": "_builtins", + "name": "string" + } + }, + "required": false + }, + { + "name": "documentationUrl", + "type": { + "kind": "instance_of", + "type": { + "namespace": "_builtins", + "name": "string" + } + }, + "required": false + }, + { + "name": "level", + "type": { + "kind": "instance_of", + "type": { + "namespace": "_global", + "name": "KibanaHttpApIsCoreStatusResponseStatusPluginsValueLevel" + } + }, + "required": true + }, + { + "name": "meta", + "type": { + "kind": "instance_of", + "type": { + "namespace": "_global", + "name": "KibanaHttpApIsCoreStatusResponseStatusPluginsValueMeta" + } + }, + "required": true + }, + { + "name": "summary", + "type": { + "kind": "instance_of", + "type": { + "namespace": "_builtins", + "name": "string" + } + }, + "required": true + } + ] + }, + { + "kind": "enum", + "name": { + "namespace": "_global", + "name": "KibanaHttpApIsCoreStatusResponseStatusPluginsValueLevel" + }, + "description": "Service status levels as human and machine readable values.", + "isOpen": false, + "members": [ + { + "name": "available" + }, + { + "name": "degraded" + }, + { + "name": "unavailable" + }, + { + "name": "critical" + } + ] + }, + { + "kind": "type_alias", + "name": { + "namespace": "_global", + "name": "KibanaHttpApIsCoreStatusResponseStatusPluginsValueMeta" + }, + "description": "An unstructured set of extra metadata about this service.", + "type": { + "kind": "instance_of", + "type": { + "namespace": "_builtins", + "name": "Dictionary" + }, + "generics": [ + { + "kind": "instance_of", + "type": { + "namespace": "_builtins", + "name": "string" + } + }, + { + "kind": "instance_of", + "type": { + "namespace": "_builtins", + "name": "UserDefined" + } + } + ] + } + }, + { + "kind": "interface", + "name": { + "namespace": "_global", + "name": "KibanaHttpApIsCoreStatusResponseVersion" + }, + "behaviors": [ + { + "type": { + "namespace": "_spec_utils", + "name": "AdditionalProperties" + }, + "generics": [ + { + "kind": "instance_of", + "type": { + "namespace": "_builtins", + "name": "UserDefined" + } + } + ] + } + ], + "properties": [ + { + "name": "build_date", + "type": { + "kind": "instance_of", + "type": { + "namespace": "_builtins", + "name": "string" + } + }, + "required": true + }, + { + "name": "build_flavor", + "type": { + "kind": "instance_of", + "type": { + "namespace": "_global", + "name": "KibanaHttpApIsCoreStatusResponseVersionBuildFlavor" + } + }, + "required": true + }, + { + "name": "build_hash", + "type": { + "kind": "instance_of", + "type": { + "namespace": "_builtins", + "name": "string" + } + }, + "required": true + }, + { + "name": "build_number", + "type": { + "kind": "instance_of", + "type": { + "namespace": "_builtins", + "name": "double" + } + }, + "required": true + }, + { + "name": "build_snapshot", + "type": { + "kind": "instance_of", + "type": { + "namespace": "_builtins", + "name": "boolean" + } + }, + "required": true + }, + { + "name": "number", + "type": { + "kind": "instance_of", + "type": { + "namespace": "_builtins", + "name": "string" + } + }, + "required": true + } + ] + }, + { + "kind": "enum", + "name": { + "namespace": "_global", + "name": "KibanaHttpApIsCoreStatusResponseVersionBuildFlavor" + }, + "description": "The build flavour determines configuration and behavior of Kibana. On premise users will almost always run the \"traditional\" flavour, while other flavours are reserved for Elastic-specific use cases.", + "isOpen": false, + "members": [ + { + "name": "serverless" + }, + { + "name": "traditional" + } + ] + }, + { + "kind": "request", + "name": { + "namespace": "_global", + "name": "SystemStatusRequest" + }, + "inherits": null, + "path": [], + "query": [ + { + "name": "v7format", + "type": { + "kind": "instance_of", + "type": { + "namespace": "_builtins", + "name": "boolean" + } + }, + "required": false, + "description": "Set to \"true\" to get the response in v7 format." + }, + { + "name": "v8format", + "type": { + "kind": "instance_of", + "type": { + "namespace": "_builtins", + "name": "boolean" + } + }, + "required": false, + "description": "Set to \"true\" to get the response in v8 format." + } + ], + "body": { + "kind": "no_body" + } + } + ] +} diff --git a/compiler-rs/openapi_to_clients_schema/src/types.rs b/compiler-rs/openapi_to_clients_schema/src/types.rs index 6d341465b3..d079626c94 100644 --- a/compiler-rs/openapi_to_clients_schema/src/types.rs +++ b/compiler-rs/openapi_to_clients_schema/src/types.rs @@ -55,7 +55,7 @@ impl Types { let mut failed = false; for id in self.tracker.iter() { if !self.types.contains_key(id) { - error!("Type '{id}' tracked but but not generated."); + error!("Type '{id}' tracked but not generated."); failed = true; } } @@ -532,7 +532,7 @@ fn id_to_typename(id: &str) -> TypeName { } } -fn ref_to_typename(ref_id: &str) -> TypeName { +pub fn ref_to_typename(ref_id: &str) -> TypeName { let id = ref_id.trim_start_matches("#/components/schemas/"); id_to_typename(id) }