diff options
Diffstat (limited to 'Utilities')
3 files changed, 136 insertions, 0 deletions
diff --git a/Utilities/LibMatrix.JsonSerializerContextGenerator/EventSerializerContexts.g.cs b/Utilities/LibMatrix.JsonSerializerContextGenerator/EventSerializerContexts.g.cs new file mode 100644 index 0000000..1ca32dd --- /dev/null +++ b/Utilities/LibMatrix.JsonSerializerContextGenerator/EventSerializerContexts.g.cs @@ -0,0 +1,99 @@ +[System.Text.Json.Serialization.JsonSourceGenerationOptions(WriteIndented = true)] +[System.Text.Json.Serialization.JsonSerializable(typeof(LibMatrix.EventTypes.UnknownEventContent))] +internal partial class UnknownEventContentSerializerContext : System.Text.Json.Serialization.JsonSerializerContext { } + +[System.Text.Json.Serialization.JsonSourceGenerationOptions(WriteIndented = true)] +[System.Text.Json.Serialization.JsonSerializable(typeof(LibMatrix.EventTypes.Spec.RoomMessageEventContent))] +internal partial class RoomMessageEventContentSerializerContext : System.Text.Json.Serialization.JsonSerializerContext { } + +[System.Text.Json.Serialization.JsonSourceGenerationOptions(WriteIndented = true)] +[System.Text.Json.Serialization.JsonSerializable(typeof(LibMatrix.EventTypes.Spec.State.PresenceEventContent))] +internal partial class PresenceEventContentSerializerContext : System.Text.Json.Serialization.JsonSerializerContext { } + +[System.Text.Json.Serialization.JsonSourceGenerationOptions(WriteIndented = true)] +[System.Text.Json.Serialization.JsonSerializable(typeof(LibMatrix.EventTypes.Spec.State.RoomTypingEventContent))] +internal partial class RoomTypingEventContentSerializerContext : System.Text.Json.Serialization.JsonSerializerContext { } + +[System.Text.Json.Serialization.JsonSourceGenerationOptions(WriteIndented = true)] +[System.Text.Json.Serialization.JsonSerializable(typeof(LibMatrix.EventTypes.Spec.State.ServerPolicyRuleEventContent))] +internal partial class ServerPolicyRuleEventContentSerializerContext : System.Text.Json.Serialization.JsonSerializerContext { } + +[System.Text.Json.Serialization.JsonSourceGenerationOptions(WriteIndented = true)] +[System.Text.Json.Serialization.JsonSerializable(typeof(LibMatrix.EventTypes.Spec.State.UserPolicyRuleEventContent))] +internal partial class UserPolicyRuleEventContentSerializerContext : System.Text.Json.Serialization.JsonSerializerContext { } + +[System.Text.Json.Serialization.JsonSourceGenerationOptions(WriteIndented = true)] +[System.Text.Json.Serialization.JsonSerializable(typeof(LibMatrix.EventTypes.Spec.State.RoomPolicyRuleEventContent))] +internal partial class RoomPolicyRuleEventContentSerializerContext : System.Text.Json.Serialization.JsonSerializerContext { } + +[System.Text.Json.Serialization.JsonSourceGenerationOptions(WriteIndented = true)] +[System.Text.Json.Serialization.JsonSerializable(typeof(LibMatrix.EventTypes.Spec.State.RoomAliasEventContent))] +internal partial class RoomAliasEventContentSerializerContext : System.Text.Json.Serialization.JsonSerializerContext { } + +[System.Text.Json.Serialization.JsonSourceGenerationOptions(WriteIndented = true)] +[System.Text.Json.Serialization.JsonSerializable(typeof(LibMatrix.EventTypes.Spec.State.RoomAvatarEventContent))] +internal partial class RoomAvatarEventContentSerializerContext : System.Text.Json.Serialization.JsonSerializerContext { } + +[System.Text.Json.Serialization.JsonSourceGenerationOptions(WriteIndented = true)] +[System.Text.Json.Serialization.JsonSerializable(typeof(LibMatrix.EventTypes.Spec.State.RoomCanonicalAliasEventContent))] +internal partial class RoomCanonicalAliasEventContentSerializerContext : System.Text.Json.Serialization.JsonSerializerContext { } + +[System.Text.Json.Serialization.JsonSourceGenerationOptions(WriteIndented = true)] +[System.Text.Json.Serialization.JsonSerializable(typeof(LibMatrix.EventTypes.Spec.State.RoomCreateEventContent))] +internal partial class RoomCreateEventContentSerializerContext : System.Text.Json.Serialization.JsonSerializerContext { } + +[System.Text.Json.Serialization.JsonSourceGenerationOptions(WriteIndented = true)] +[System.Text.Json.Serialization.JsonSerializable(typeof(LibMatrix.EventTypes.Spec.State.RoomEncryptionEventContent))] +internal partial class RoomEncryptionEventContentSerializerContext : System.Text.Json.Serialization.JsonSerializerContext { } + +[System.Text.Json.Serialization.JsonSourceGenerationOptions(WriteIndented = true)] +[System.Text.Json.Serialization.JsonSerializable(typeof(LibMatrix.EventTypes.Spec.State.RoomGuestAccessEventContent))] +internal partial class RoomGuestAccessEventContentSerializerContext : System.Text.Json.Serialization.JsonSerializerContext { } + +[System.Text.Json.Serialization.JsonSourceGenerationOptions(WriteIndented = true)] +[System.Text.Json.Serialization.JsonSerializable(typeof(LibMatrix.EventTypes.Spec.State.RoomHistoryVisibilityEventContent))] +internal partial class RoomHistoryVisibilityEventContentSerializerContext : System.Text.Json.Serialization.JsonSerializerContext { } + +[System.Text.Json.Serialization.JsonSourceGenerationOptions(WriteIndented = true)] +[System.Text.Json.Serialization.JsonSerializable(typeof(LibMatrix.EventTypes.Spec.State.RoomJoinRulesEventContent))] +internal partial class RoomJoinRulesEventContentSerializerContext : System.Text.Json.Serialization.JsonSerializerContext { } + +[System.Text.Json.Serialization.JsonSourceGenerationOptions(WriteIndented = true)] +[System.Text.Json.Serialization.JsonSerializable(typeof(LibMatrix.EventTypes.Spec.State.RoomMemberEventContent))] +internal partial class RoomMemberEventContentSerializerContext : System.Text.Json.Serialization.JsonSerializerContext { } + +[System.Text.Json.Serialization.JsonSourceGenerationOptions(WriteIndented = true)] +[System.Text.Json.Serialization.JsonSerializable(typeof(LibMatrix.EventTypes.Spec.State.RoomNameEventContent))] +internal partial class RoomNameEventContentSerializerContext : System.Text.Json.Serialization.JsonSerializerContext { } + +[System.Text.Json.Serialization.JsonSourceGenerationOptions(WriteIndented = true)] +[System.Text.Json.Serialization.JsonSerializable(typeof(LibMatrix.EventTypes.Spec.State.RoomPinnedEventContent))] +internal partial class RoomPinnedEventContentSerializerContext : System.Text.Json.Serialization.JsonSerializerContext { } + +[System.Text.Json.Serialization.JsonSourceGenerationOptions(WriteIndented = true)] +[System.Text.Json.Serialization.JsonSerializable(typeof(LibMatrix.EventTypes.Spec.State.RoomPowerLevelEventContent))] +internal partial class RoomPowerLevelEventContentSerializerContext : System.Text.Json.Serialization.JsonSerializerContext { } + +[System.Text.Json.Serialization.JsonSourceGenerationOptions(WriteIndented = true)] +[System.Text.Json.Serialization.JsonSerializable(typeof(LibMatrix.EventTypes.Spec.State.RoomServerACLEventContent))] +internal partial class RoomServerACLEventContentSerializerContext : System.Text.Json.Serialization.JsonSerializerContext { } + +[System.Text.Json.Serialization.JsonSourceGenerationOptions(WriteIndented = true)] +[System.Text.Json.Serialization.JsonSerializable(typeof(LibMatrix.EventTypes.Spec.State.RoomTopicEventContent))] +internal partial class RoomTopicEventContentSerializerContext : System.Text.Json.Serialization.JsonSerializerContext { } + +[System.Text.Json.Serialization.JsonSourceGenerationOptions(WriteIndented = true)] +[System.Text.Json.Serialization.JsonSerializable(typeof(LibMatrix.EventTypes.Spec.State.SpaceChildEventContent))] +internal partial class SpaceChildEventContentSerializerContext : System.Text.Json.Serialization.JsonSerializerContext { } + +[System.Text.Json.Serialization.JsonSourceGenerationOptions(WriteIndented = true)] +[System.Text.Json.Serialization.JsonSerializable(typeof(LibMatrix.EventTypes.Spec.State.SpaceParentEventContent))] +internal partial class SpaceParentEventContentSerializerContext : System.Text.Json.Serialization.JsonSerializerContext { } + +[System.Text.Json.Serialization.JsonSourceGenerationOptions(WriteIndented = true)] +[System.Text.Json.Serialization.JsonSerializable(typeof(LibMatrix.EventTypes.Common.MjolnirShortcodeEventContent))] +internal partial class MjolnirShortcodeEventContentSerializerContext : System.Text.Json.Serialization.JsonSerializerContext { } + +[System.Text.Json.Serialization.JsonSourceGenerationOptions(WriteIndented = true)] +[System.Text.Json.Serialization.JsonSerializable(typeof(LibMatrix.EventTypes.Common.RoomEmotesEventContent))] +internal partial class RoomEmotesEventContentSerializerContext : System.Text.Json.Serialization.JsonSerializerContext { } diff --git a/Utilities/LibMatrix.JsonSerializerContextGenerator/LibMatrix.JsonSerializerContextGenerator.csproj b/Utilities/LibMatrix.JsonSerializerContextGenerator/LibMatrix.JsonSerializerContextGenerator.csproj new file mode 100644 index 0000000..b90bf20 --- /dev/null +++ b/Utilities/LibMatrix.JsonSerializerContextGenerator/LibMatrix.JsonSerializerContextGenerator.csproj @@ -0,0 +1,15 @@ +<Project Sdk="Microsoft.NET.Sdk"> + + <PropertyGroup> + <TargetFramework>net8.0</TargetFramework> + <ImplicitUsings>enable</ImplicitUsings> + <Nullable>enable</Nullable> + <OutputType>exe</OutputType> + </PropertyGroup> + + <ItemGroup> + <ProjectReference Include="..\..\ArcaneLibs\ArcaneLibs\ArcaneLibs.csproj" /> + <ProjectReference Include="..\..\LibMatrix\LibMatrix.csproj" /> + </ItemGroup> + +</Project> diff --git a/Utilities/LibMatrix.JsonSerializerContextGenerator/Program.cs b/Utilities/LibMatrix.JsonSerializerContextGenerator/Program.cs new file mode 100644 index 0000000..76d6357 --- /dev/null +++ b/Utilities/LibMatrix.JsonSerializerContextGenerator/Program.cs @@ -0,0 +1,22 @@ +using System.Reflection; +using ArcaneLibs; +using ArcaneLibs.Extensions.Streams; +using LibMatrix; +using LibMatrix.Interfaces; + +// string binary = args.Length > 1 ? args[0] : Console.ReadLine()!; + +// var asm = Assembly.LoadFrom(binary); +File.Delete("EventSerializerContexts.g.cs"); +var stream = File.OpenWrite("EventSerializerContexts.g.cs"); +var eventContentTypes = new ClassCollector<EventContent>().ResolveFromAllAccessibleAssemblies(); +stream.WriteString(string.Join('\n', eventContentTypes//.DistinctBy(x => x.Namespace) + .Select(x => $$""" + [System.Text.Json.Serialization.JsonSourceGenerationOptions(WriteIndented = true)] + [System.Text.Json.Serialization.JsonSerializable(typeof({{x.FullName}}))] + internal partial class {{x.Name}}SerializerContext : System.Text.Json.Serialization.JsonSerializerContext { } + + """))); + +await stream.FlushAsync(); +stream.Close(); \ No newline at end of file |