- #nullable enable
- using Hive.Versioning;
- using IPA.JsonConverters;
- using IPA.Utilities;
- using System;
- using System.Collections.Generic;
- using System.Text.Json.Nodes;
- using System.Text.Json.Serialization;
- using AlmostVersionConverter = IPA.JsonConverters.AlmostVersionConverter;
- using Version = Hive.Versioning.Version;
- #if NET3
- using Net3_Proxy;
- using Array = Net3_Proxy.Array;
- #endif
-
- namespace IPA.Loader
- {
- internal class PluginManifest
- {
- [JsonPropertyName("name")]
- [JsonRequired]
- public string Name { get; init; } = null!;
-
- [JsonPropertyName("id")]
- [JsonRequired] // TODO: Originally AllowNull
- public string? Id { get; set; }
-
- [JsonPropertyName("description")]
- [JsonRequired]
- [JsonConverter(typeof(MultilineStringConverter))]
- public string Description { get; set; } = null!;
-
- [JsonPropertyName("version")]
- [JsonRequired]
- [JsonConverter(typeof(SemverVersionConverter))]
- public Version Version { get; init; } = null!;
-
- [JsonPropertyName("gameVersion")]
- [JsonRequired] // TODO: Originally DisallowNull
- [JsonConverter(typeof(AlmostVersionConverter))]
- public AlmostVersion? GameVersion { get; init; }
-
- [JsonPropertyName("author")]
- [JsonRequired]
- public string Author { get; init; } = null!;
-
- [JsonPropertyName("dependsOn")]
- [JsonRequired] // TODO: Originally DisallowNull
- public Dictionary<string, VersionRange> Dependencies { get; init; } = new();
-
- [JsonPropertyName("conflictsWith")]
- // TODO: Originally DisallowNull
- public Dictionary<string, VersionRange> Conflicts { get; init; } = new();
-
- [JsonPropertyName("features")]
- // TODO: Originally DisallowNull
- public Dictionary<string, List<JsonObject>> Features { get; init; } = new();
-
- [JsonPropertyName("loadBefore")]
- // TODO: Originally DisallowNull
- public string[] LoadBefore { get; init; } = Array.Empty<string>();
-
- [JsonPropertyName("loadAfter")]
- // TODO: Originally DisallowNull
- public string[] LoadAfter { get; init; } = Array.Empty<string>();
-
- [JsonPropertyName("icon")]
- // TODO: Originally DisallowNull
- public string? IconPath { get; init; }
-
- [JsonPropertyName("files")]
- // TODO: Originally DisallowNull
- public string[] Files { get; init; } = Array.Empty<string>();
-
- [Serializable]
- public class LinksObject
- {
- [JsonPropertyName("project-home")]
- // TODO: Originally DisallowNull
- public Uri? ProjectHome { get; init; }
-
- [JsonPropertyName("project-source")]
- // TODO: Originally DisallowNull
- public Uri? ProjectSource { get; init; }
-
- [JsonPropertyName("donate")]
- // TODO: Originally DisallowNull
- public Uri? Donate { get; init; }
- }
-
- [JsonPropertyName("links")]
- // TODO: Originally DisallowNull
- public LinksObject? Links { get; init; }
-
- [Serializable]
- public class MiscObject
- {
- [JsonPropertyName("plugin-hint")]
- // TODO: Originally DisallowNull
- public string? PluginMainHint { get; init; }
- }
-
- [JsonPropertyName("misc")]
- // TODO: Originally DisallowNull
- public MiscObject? Misc { get; init; }
- }
- }
|