Fix schemars

This commit is contained in:
widberg 2026-02-19 19:21:36 -05:00
parent ed02fb6120
commit e65f750d0b
18 changed files with 69 additions and 80 deletions

60
Cargo.lock generated
View file

@ -284,10 +284,11 @@ dependencies = [
[[package]]
name = "arbitrary-int"
version = "1.3.0"
version = "2.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "825297538d77367557b912770ca3083f778a196054b3ee63b22673c4a3cae0a5"
checksum = "993a810118f8f37e9c4411c86f1c4c940a09a7ab34b7bf2d88d06f50c553fab7"
dependencies = [
"schemars",
"serde",
]
@ -739,8 +740,8 @@ dependencies = [
[[package]]
name = "bilge"
version = "0.2.0"
source = "git+https://github.com/widberg/bilge.git#8913a408b573305526865a588dc3576efa0d6ce0"
version = "0.3.0"
source = "git+https://github.com/widberg/bilge.git?branch=schemars#f0c43f988f902600d2bc1db4bb9ee240b5610c5c"
dependencies = [
"arbitrary-int",
"bilge-impl",
@ -748,11 +749,11 @@ dependencies = [
[[package]]
name = "bilge-impl"
version = "0.2.0"
source = "git+https://github.com/widberg/bilge.git#8913a408b573305526865a588dc3576efa0d6ce0"
version = "0.3.0"
source = "git+https://github.com/widberg/bilge.git?branch=schemars#f0c43f988f902600d2bc1db4bb9ee240b5610c5c"
dependencies = [
"itertools 0.11.0",
"proc-macro-error",
"proc-macro-error2",
"proc-macro2",
"quote",
"syn 2.0.98",
@ -3488,26 +3489,24 @@ dependencies = [
]
[[package]]
name = "proc-macro-error"
version = "1.0.4"
name = "proc-macro-error-attr2"
version = "2.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5"
dependencies = [
"proc-macro-error-attr",
"proc-macro2",
"quote",
"version_check",
]
[[package]]
name = "proc-macro-error-attr"
version = "1.0.4"
name = "proc-macro-error2"
version = "2.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802"
dependencies = [
"proc-macro-error-attr2",
"proc-macro2",
"quote",
"version_check",
]
[[package]]
@ -3657,26 +3656,6 @@ dependencies = [
"bitflags 2.8.0",
]
[[package]]
name = "ref-cast"
version = "1.0.24"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4a0ae411dbe946a674d89546582cea4ba2bb8defac896622d6496f14c23ba5cf"
dependencies = [
"ref-cast-impl",
]
[[package]]
name = "ref-cast-impl"
version = "1.0.24"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1165225c21bff1f3bbce98f5a1f889949bc902d3575308cc7b0de30b4f6d27c7"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.98",
]
[[package]]
name = "regex"
version = "1.11.1"
@ -3823,13 +3802,12 @@ dependencies = [
[[package]]
name = "schemars"
version = "1.0.4"
version = "0.8.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "82d20c4491bc164fa2f6c5d44565947a52ad80b9505d8e36f8d54c27c739fcd0"
checksum = "3fbf2ae1b8bc8e02df939598064d22402220cd5bbcca1c76f7d6a310974d5615"
dependencies = [
"dyn-clone",
"indexmap",
"ref-cast",
"schemars_derive",
"serde",
"serde_json",
@ -3837,9 +3815,9 @@ dependencies = [
[[package]]
name = "schemars_derive"
version = "1.0.4"
version = "0.8.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "33d020396d1d138dc19f1165df7545479dcd58d93810dc5d646a16e55abefa80"
checksum = "32e265784ad618884abaea0600a9adf15393368d840e0222d101a072f3f7534d"
dependencies = [
"proc-macro2",
"quote",

View file

@ -14,7 +14,7 @@ derive_more = { version = "2.0.1", features = ["full"] }
indicatif = "0.18.0"
pathdiff = "0.2.1"
rayon = "1.10.0"
schemars = "1.0.4"
schemars = "0.8.21"
serde_json = "1.0.96"
shadow-rs = { version = "1.1.1", default-features = false, features = ["build"] }

View file

@ -11,7 +11,7 @@ rust-version.workspace = true
absperf-minilzo-sys = "2.10.0"
arcode = "0.2.4"
bff-derive = { path = "../bff-derive" }
bilge = { git = "https://github.com/widberg/bilge.git", features = ["serde"] }
bilge = { git = "https://github.com/widberg/bilge.git", features = ["serde", "schemars"], branch = "schemars" }
binrw = "0.15.0"
const_power_of_two = "1.0.0"
ddsfile = "0.5.2"
@ -26,7 +26,7 @@ num-traits = "0.2.15"
pastey = "0.1.0"
petgraph = "0.8.1"
scanf = "2.0.0"
schemars = { version = "1.0.4", features = ["indexmap2"] }
schemars = { version = "0.8.21", features = ["indexmap2"] }
serde = { version = "1.0", features = ["derive"] }
string-interner = "0.19.0"

View file

@ -3,7 +3,8 @@ use std::borrow::Cow;
use binrw::{BinRead, BinWrite};
use derive_more::{Display, From};
use scanf::sscanf;
use schemars::{JsonSchema, Schema, SchemaGenerator, json_schema};
use schemars::schema::Schema;
use schemars::{JsonSchema, SchemaGenerator};
use serde::{Deserialize, Deserializer, Serialize, Serializer};
use crate::helpers::PascalString;
@ -149,11 +150,11 @@ impl<'de> Deserialize<'de> for Version {
}
impl JsonSchema for Version {
fn inline_schema() -> bool {
fn is_referenceable() -> bool {
true
}
fn schema_name() -> Cow<'static, str> {
fn schema_name() -> std::string::String {
"Version".into()
}
@ -161,10 +162,8 @@ impl JsonSchema for Version {
concat!(module_path!(), "::Version").into()
}
fn json_schema(_schema_generator: &mut SchemaGenerator) -> Schema {
json_schema!({
"type": "string"
})
fn json_schema(schema_generator: &mut SchemaGenerator) -> Schema {
String::json_schema(schema_generator)
}
}

View file

@ -10,7 +10,7 @@ use crate::traits::{Export, Import};
#[bitsize(32)]
#[derive(
BinRead, DebugBits, SerializeBits, BinWrite, DeserializeBits, ReferencedNames, JsonSchema,
BinRead, DebugBits, SerializeBits, BinWrite, DeserializeBits, ReferencedNames, JsonSchemaBits,
)]
struct LookupDescription {
horizon: u12,
@ -19,7 +19,7 @@ struct LookupDescription {
#[bitsize(8)]
#[derive(
BinRead, DebugBits, SerializeBits, BinWrite, DeserializeBits, ReferencedNames, JsonSchema,
BinRead, DebugBits, SerializeBits, BinWrite, DeserializeBits, ReferencedNames, JsonSchemaBits,
)]
struct AltitudePack {
odd: u4,

View file

@ -38,7 +38,7 @@ enum SubType {
#[bitsize(8)]
#[derive(
BinRead, DebugBits, SerializeBits, BinWrite, DeserializeBits, ReferencedNames, JsonSchema,
BinRead, DebugBits, SerializeBits, BinWrite, DeserializeBits, ReferencedNames, JsonSchemaBits,
)]
struct RoadType {
sub_type: SubType,

View file

@ -11,7 +11,7 @@ use crate::traits::{Export, Import};
#[bitsize(32)]
#[derive(
BinRead, DebugBits, SerializeBits, BinWrite, DeserializeBits, ReferencedNames, JsonSchema,
BinRead, DebugBits, SerializeBits, BinWrite, DeserializeBits, ReferencedNames, JsonSchemaBits,
)]
struct MaterialEnabledBitmaps {
diffuse: u1,
@ -28,7 +28,7 @@ struct MaterialEnabledBitmaps {
#[bitsize(32)]
#[derive(
BinRead, DebugBits, SerializeBits, BinWrite, DeserializeBits, ReferencedNames, JsonSchema,
BinRead, DebugBits, SerializeBits, BinWrite, DeserializeBits, ReferencedNames, JsonSchemaBits,
)]
struct MaterialRdrFlags {
padding0: u5,

View file

@ -19,7 +19,7 @@ use crate::traits::{Export, Import};
#[bitsize(8)]
#[derive(
BinRead, DebugBits, SerializeBits, BinWrite, DeserializeBits, ReferencedNames, JsonSchema,
BinRead, DebugBits, SerializeBits, BinWrite, DeserializeBits, ReferencedNames, JsonSchemaBits,
)]
struct MaterialAnimFlags {
fl_mat_play: u1,

View file

@ -166,7 +166,7 @@ impl Vertices {
#[bitsize(32)]
#[derive(
BinRead, DebugBits, SerializeBits, BinWrite, DeserializeBits, ReferencedNames, JsonSchema,
BinRead, DebugBits, SerializeBits, BinWrite, DeserializeBits, ReferencedNames, JsonSchemaBits,
)]
pub struct VertexGroupFlags {
padding: u2,

View file

@ -75,7 +75,7 @@ struct Unused8 {
#[bitsize(32)]
#[derive(
BinRead, DebugBits, SerializeBits, BinWrite, DeserializeBits, ReferencedNames, JsonSchema,
BinRead, DebugBits, SerializeBits, BinWrite, DeserializeBits, ReferencedNames, JsonSchemaBits,
)]
struct D3DFlags {
d3d_pool_default: u1,

View file

@ -20,7 +20,7 @@ use crate::traits::{Export, Import};
#[bitsize(32)]
#[derive(
BinRead, DebugBits, SerializeBits, BinWrite, DeserializeBits, ReferencedNames, JsonSchema,
BinRead, DebugBits, SerializeBits, BinWrite, DeserializeBits, ReferencedNames, JsonSchemaBits,
)]
struct ParticlesEmitterFlags {
fl_particles_loop: u1,

View file

@ -1,13 +1,19 @@
use bff_derive::ReferencedNames;
use bilge::prelude::*;
use binrw::{BinRead, BinWrite};
use schemars::JsonSchema;
use crate::class::trivial_class::TrivialClass;
#[bitsize(16)]
#[derive(
DebugBits, Clone, BinRead, SerializeBits, BinWrite, DeserializeBits, ReferencedNames, JsonSchema,
DebugBits,
Clone,
BinRead,
SerializeBits,
BinWrite,
DeserializeBits,
ReferencedNames,
JsonSchemaBits,
)]
pub struct SoundFlags {
pub paused: u1,

View file

@ -147,7 +147,7 @@ struct SeadIndex {
#[bitsize(16)]
#[derive(
BinRead, BinWrite, DebugBits, SerializeBits, DeserializeBits, ReferencedNames, JsonSchema,
BinRead, BinWrite, DebugBits, SerializeBits, DeserializeBits, ReferencedNames, JsonSchemaBits,
)]
struct ShouldDrawRelated {
index_in_draw_info_array: u3,

View file

@ -101,7 +101,7 @@ struct Edge {
#[bitsize(16)]
#[derive(
BinRead, DebugBits, SerializeBits, BinWrite, DeserializeBits, ReferencedNames, JsonSchema,
BinRead, DebugBits, SerializeBits, BinWrite, DeserializeBits, ReferencedNames, JsonSchemaBits,
)]
struct ShouldDrawRelated {
index_in_draw_info_array: u3,

View file

@ -50,7 +50,7 @@ struct Edge {
#[bitsize(16)]
#[derive(
BinRead, DebugBits, SerializeBits, BinWrite, DeserializeBits, ReferencedNames, JsonSchema,
BinRead, DebugBits, SerializeBits, BinWrite, DeserializeBits, ReferencedNames, JsonSchemaBits,
)]
struct ShouldDrawBitfield {
index_in_draw_info_array: u3,

View file

@ -25,7 +25,7 @@ impl TryFromGenericSubstitute<Self, Self> for ResourceObjectLinkHeaderV1_381_67_
#[bitsize(32)]
#[derive(
BinRead, DebugBits, SerializeBits, BinWrite, DeserializeBits, ReferencedNames, JsonSchema,
BinRead, DebugBits, SerializeBits, BinWrite, DeserializeBits, ReferencedNames, JsonSchemaBits,
)]
pub struct ObjectDatasFlagsV1_381_67_09PC {
hide: u1,
@ -53,7 +53,7 @@ pub struct ObjectDatasFlagsV1_381_67_09PC {
BinWrite,
DeserializeBits,
ReferencedNames,
JsonSchema,
JsonSchemaBits,
)]
pub struct ObjectFlagsV1_381_67_09PC {
init: u1,

View file

@ -74,22 +74,23 @@ macro_rules! bff_class {
}
}
impl schemars::JsonSchema for $class {
fn inline_schema() -> bool {
impl ::schemars::JsonSchema for $class {
fn is_referenceable() -> bool {
true
}
fn schema_name() -> std::borrow::Cow<'static, str> {
fn schema_name() -> ::std::string::String {
stringify!($class).into()
}
fn schema_id() -> std::borrow::Cow<'static, str> {
format!("{}::{}", module_path!(), stringify!($class)).into()
fn schema_id() -> ::std::borrow::Cow<'static, str> {
concat!(module_path!(), "::", stringify!($class)).into()
}
fn json_schema(_schema_generator: &mut schemars::SchemaGenerator) -> schemars::Schema {
schemars::json_schema!({
"type": "object"
fn json_schema(_schema_generator: &mut ::schemars::SchemaGenerator) -> ::schemars::schema::Schema {
::schemars::schema::Schema::Object(::schemars::schema::SchemaObject {
instance_type: ::core::option::Option::Some(::schemars::schema::InstanceType::Object.into()),
..::core::default::Default::default()
})
}
}

View file

@ -14,7 +14,8 @@ use const_power_of_two::PowerOfTwoUsize;
use derive_more::{Display, From};
use encoding_rs::WINDOWS_1252;
use num_traits::AsPrimitive;
use schemars::{JsonSchema, Schema, SchemaGenerator, json_schema};
use schemars::schema::{InstanceType, Schema, SchemaObject, SingleOrVec};
use schemars::{JsonSchema, SchemaGenerator};
use serde::{Deserialize, Deserializer, Serialize};
use string_interner::backend::BucketBackend;
use string_interner::{DefaultSymbol, StringInterner};
@ -399,11 +400,11 @@ impl<'de> Deserialize<'de> for Name {
}
impl JsonSchema for Name {
fn inline_schema() -> bool {
fn is_referenceable() -> bool {
true
}
fn schema_name() -> Cow<'static, str> {
fn schema_name() -> std::string::String {
"Name".into()
}
@ -412,8 +413,12 @@ impl JsonSchema for Name {
}
fn json_schema(_schema_generator: &mut SchemaGenerator) -> Schema {
json_schema!({
"type": ["string", "integer"]
Schema::Object(SchemaObject {
instance_type: Some(SingleOrVec::Vec(vec![
InstanceType::String,
InstanceType::Integer,
])),
..Default::default()
})
}
}