/Src/Newtonsoft.Json.Schema/Infrastructure/Constants.cs

https://github.com/JamesNK/Newtonsoft.Json.Schema · C# · 161 lines · 144 code · 14 blank · 3 comment · 1 complexity · 02d5bb2f5735a69ac8f87dea1cbddc1f MD5 · raw file

  1. #region License
  2. // Copyright (c) Newtonsoft. All Rights Reserved.
  3. // License: https://raw.github.com/JamesNK/Newtonsoft.Json.Schema/master/LICENSE.md
  4. #endregion
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Globalization;
  8. using System.Linq;
  9. namespace Newtonsoft.Json.Schema.Infrastructure
  10. {
  11. internal static class Constants
  12. {
  13. public static readonly List<JsonToken> NumberTokens = new List<JsonToken> { JsonToken.Integer, JsonToken.Float };
  14. public static readonly List<JsonToken> SchemaTokens = new List<JsonToken> { JsonToken.StartObject, JsonToken.Boolean };
  15. public static readonly List<JsonToken> ItemsTokens = new List<JsonToken> { JsonToken.StartArray, JsonToken.StartObject, JsonToken.Boolean };
  16. public static readonly List<JsonToken> ItemsDraft4Tokens = new List<JsonToken> { JsonToken.StartArray, JsonToken.StartObject };
  17. public static readonly List<JsonToken> DependencyTokens = new List<JsonToken> { JsonToken.StartObject, JsonToken.StartArray, JsonToken.String, JsonToken.Boolean };
  18. public static readonly List<JsonToken> DependencyDraft4Tokens = new List<JsonToken> { JsonToken.StartObject, JsonToken.StartArray, JsonToken.String };
  19. public static readonly List<JsonToken> MaximumMinimumTokens = new List<JsonToken> { JsonToken.Integer, JsonToken.Float, JsonToken.Boolean };
  20. public static class PropertyNames
  21. {
  22. public const string Type = "type";
  23. public const string Properties = "properties";
  24. public const string Items = "items";
  25. public const string AdditionalItems = "additionalItems";
  26. public const string UnevaluatedItems = "unevaluatedItems";
  27. public const string Required = "required";
  28. public const string PatternProperties = "patternProperties";
  29. public const string AdditionalProperties = "additionalProperties";
  30. public const string UnevaluatedProperties = "unevaluatedProperties";
  31. public const string Requires = "requires";
  32. public const string Dependencies = "dependencies";
  33. public const string DependentSchemas = "dependentSchemas";
  34. public const string DependentRequired = "dependentRequired";
  35. public const string Minimum = "minimum";
  36. public const string Maximum = "maximum";
  37. public const string ExclusiveMinimum = "exclusiveMinimum";
  38. public const string ExclusiveMaximum = "exclusiveMaximum";
  39. public const string MinimumItems = "minItems";
  40. public const string MaximumItems = "maxItems";
  41. public const string MinimumContains = "minContains";
  42. public const string MaximumContains = "maxContains";
  43. public const string Pattern = "pattern";
  44. public const string MaximumLength = "maxLength";
  45. public const string MinimumLength = "minLength";
  46. public const string Enum = "enum";
  47. public const string Title = "title";
  48. public const string Description = "description";
  49. public const string Format = "format";
  50. public const string Default = "default";
  51. public const string Transient = "transient";
  52. public const string DivisibleBy = "divisibleBy";
  53. public const string MultipleOf = "multipleOf";
  54. public const string Hidden = "hidden";
  55. public const string Disallow = "disallow";
  56. public const string Extends = "extends";
  57. public const string Id = "$id";
  58. public const string Anchor = "$anchor";
  59. public const string IdDraft4 = "id";
  60. public const string UniqueItems = "uniqueItems";
  61. public const string MinimumProperties = "minProperties";
  62. public const string MaximumProperties = "maxProperties";
  63. // todo - rename class and this prop
  64. public const string PropertyNamesSchema = "propertyNames";
  65. public const string Const = "const";
  66. public const string Contains = "contains";
  67. public const string ContentEncoding = "contentEncoding";
  68. public const string ContentMediaType = "contentMediaType";
  69. public const string ReadOnly = "readOnly";
  70. public const string WriteOnly = "writeOnly";
  71. public const string AnyOf = "anyOf";
  72. public const string AllOf = "allOf";
  73. public const string OneOf = "oneOf";
  74. public const string Not = "not";
  75. public const string If = "if";
  76. public const string Then = "then";
  77. public const string Else = "else";
  78. public const string Ref = "$ref";
  79. public const string RecursiveRef = "$recursiveRef";
  80. public const string RecursiveAnchor = "$recursiveAnchor";
  81. public const string Schema = "$schema";
  82. public const string Definitions = "definitions";
  83. public const string Defs = "$defs";
  84. public static bool IsDefinition(string name)
  85. {
  86. return string.Equals(name, Definitions, StringComparison.Ordinal)
  87. || string.Equals(name, Defs, StringComparison.Ordinal);
  88. }
  89. }
  90. public static class Formats
  91. {
  92. public const string Draft3Hostname = "host-name";
  93. public const string Draft3IPv4 = "ip-address";
  94. public const string Hostname = "hostname";
  95. public const string DateTime = "date-time";
  96. public const string Date = "date";
  97. public const string Time = "time";
  98. public const string UtcMilliseconds = "utc-millisec";
  99. public const string Regex = "regex";
  100. public const string Color = "color";
  101. public const string Style = "style";
  102. public const string Phone = "phone";
  103. public const string Uri = "uri";
  104. public const string UriReference = "uri-reference";
  105. public const string UriTemplate = "uri-template";
  106. public const string JsonPointer = "json-pointer";
  107. public const string IPv6 = "ipv6";
  108. public const string IPv4 = "ipv4";
  109. public const string Email = "email";
  110. public const string Duration = "duration";
  111. }
  112. public static class Types
  113. {
  114. public const string String = "string";
  115. public const string Object = "object";
  116. public const string Integer = "integer";
  117. public const string Number = "number";
  118. public const string Null = "null";
  119. public const string Boolean = "boolean";
  120. public const string Array = "array";
  121. public const string Any = "any";
  122. }
  123. public static class ContentEncodings
  124. {
  125. public const string Base64 = "base64";
  126. }
  127. public static readonly IDictionary<string, JSchemaType> JSchemaTypeMapping = new Dictionary<string, JSchemaType>(StringComparer.Ordinal)
  128. {
  129. { Types.String, JSchemaType.String },
  130. { Types.Object, JSchemaType.Object },
  131. { Types.Integer, JSchemaType.Integer },
  132. { Types.Number, JSchemaType.Number },
  133. { Types.Null, JSchemaType.Null },
  134. { Types.Boolean, JSchemaType.Boolean },
  135. { Types.Array, JSchemaType.Array }
  136. };
  137. public const JSchemaType AnyType = JSchemaType.Array | JSchemaType.Object | JSchemaType.Boolean | JSchemaType.Integer | JSchemaType.Null | JSchemaType.Number | JSchemaType.String;
  138. public static class SchemaVersions
  139. {
  140. public static readonly Uri Draft3 = new Uri("http://json-schema.org/draft-03/schema#");
  141. public static readonly Uri Draft4 = new Uri("http://json-schema.org/draft-04/schema#");
  142. public static readonly Uri Draft6 = new Uri("http://json-schema.org/draft-06/schema#");
  143. public static readonly Uri Draft7 = new Uri("http://json-schema.org/draft-07/schema#");
  144. public static readonly Uri Draft2019_09 = new Uri("https://json-schema.org/draft/2019-09/schema");
  145. }
  146. }
  147. }