release-status.schema.json 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235
  1. {
  2. "$schema": "https://json-schema.org/draft/2020-12/schema",
  3. "$id": "https://github.com/flyfish-dev/file-viewer/releases/download/v2.0.1/release-status.schema.json",
  4. "title": "Flyfish File Viewer release status",
  5. "type": "object",
  6. "additionalProperties": false,
  7. "required": [
  8. "schemaVersion",
  9. "generatedAt",
  10. "version",
  11. "sourcePolicy",
  12. "openSourcePolicy",
  13. "sourceBaseline",
  14. "local",
  15. "sourceRemote",
  16. "openSourceMain",
  17. "githubRelease",
  18. "componentRepositories",
  19. "npmPackages",
  20. "gaps",
  21. "gapSummary",
  22. "gapDetails",
  23. "nextActions"
  24. ],
  25. "properties": {
  26. "schemaVersion": {
  27. "type": "integer",
  28. "const": 1
  29. },
  30. "generatedAt": {
  31. "type": "string"
  32. },
  33. "version": {
  34. "type": "string"
  35. },
  36. "sourcePolicy": {
  37. "type": "string",
  38. "const": "private-complete-original-workspace"
  39. },
  40. "openSourcePolicy": {
  41. "type": "string",
  42. "const": "public-open-source-main-repository"
  43. },
  44. "sourceBaseline": {
  45. "type": "object",
  46. "additionalProperties": false,
  47. "required": [
  48. "repository",
  49. "branch",
  50. "policy",
  51. "authoritativeCommit",
  52. "localBranch",
  53. "localCommit",
  54. "inSync",
  55. "note"
  56. ],
  57. "properties": {
  58. "repository": { "type": "string" },
  59. "branch": { "type": "string", "const": "main" },
  60. "policy": { "type": "string", "const": "private-complete-original-workspace" },
  61. "authoritativeCommit": { "type": "string" },
  62. "localBranch": { "type": "string" },
  63. "localCommit": { "type": "string" },
  64. "inSync": { "type": "boolean" },
  65. "note": { "type": "string" }
  66. }
  67. },
  68. "local": {
  69. "type": "object",
  70. "additionalProperties": false,
  71. "required": ["branch", "commit", "shortCommit", "dirty"],
  72. "properties": {
  73. "branch": { "type": "string" },
  74. "commit": { "type": "string" },
  75. "shortCommit": { "type": "string" },
  76. "dirty": { "type": "boolean" }
  77. }
  78. },
  79. "sourceRemote": {
  80. "$ref": "#/$defs/remoteHead"
  81. },
  82. "openSourceMain": {
  83. "type": "object",
  84. "additionalProperties": false,
  85. "required": [
  86. "github",
  87. "gitee",
  88. "inSync",
  89. "syncMode",
  90. "treeChecked",
  91. "referenceTree",
  92. "giteeTree",
  93. "treeError",
  94. "reportHashNote"
  95. ],
  96. "properties": {
  97. "github": { "$ref": "#/$defs/remoteHead" },
  98. "gitee": { "$ref": "#/$defs/remoteHead" },
  99. "inSync": { "type": "boolean" },
  100. "syncMode": {
  101. "type": "string",
  102. "enum": ["commit", "tree", "stale", "missing", "unchecked"]
  103. },
  104. "treeChecked": { "type": "boolean" },
  105. "referenceTree": { "type": "string" },
  106. "giteeTree": { "type": "string" },
  107. "treeError": { "type": "string" },
  108. "reportHashNote": { "type": "string" }
  109. }
  110. },
  111. "githubRelease": {
  112. "type": "object",
  113. "additionalProperties": false,
  114. "required": ["ok", "tag", "url", "assetCount", "hasManifest", "hasStatus", "hasSchema", "error"],
  115. "properties": {
  116. "ok": { "type": "boolean" },
  117. "tag": { "type": "string" },
  118. "url": { "type": "string" },
  119. "assetCount": { "type": "integer" },
  120. "hasManifest": { "type": "boolean" },
  121. "hasStatus": { "type": "boolean" },
  122. "hasSchema": { "type": "boolean" },
  123. "error": { "type": "string" }
  124. }
  125. },
  126. "componentRepositories": {
  127. "type": "array",
  128. "items": {
  129. "type": "object",
  130. "additionalProperties": false,
  131. "required": ["id", "packageName", "github", "gitee"],
  132. "properties": {
  133. "id": { "type": "string" },
  134. "packageName": { "type": "string" },
  135. "github": { "$ref": "#/$defs/remoteHead" },
  136. "gitee": { "$ref": "#/$defs/remoteHead" }
  137. }
  138. }
  139. },
  140. "npmPackages": {
  141. "type": "array",
  142. "items": {
  143. "type": "object",
  144. "additionalProperties": false,
  145. "required": ["packageName", "expectedVersion", "publishedVersion", "ok", "error"],
  146. "properties": {
  147. "packageName": { "type": "string" },
  148. "expectedVersion": { "type": "string" },
  149. "publishedVersion": { "type": ["string", "null"] },
  150. "ok": { "type": "boolean" },
  151. "error": { "type": "string" }
  152. }
  153. }
  154. },
  155. "gaps": {
  156. "type": "array",
  157. "items": { "type": "string" }
  158. },
  159. "gapSummary": {
  160. "type": "object",
  161. "additionalProperties": false,
  162. "required": [
  163. "total",
  164. "externalBlockers",
  165. "localActionable",
  166. "byChannel",
  167. "externalBlockerChannels",
  168. "localActionableChannels"
  169. ],
  170. "properties": {
  171. "total": { "type": "integer" },
  172. "externalBlockers": { "type": "integer" },
  173. "localActionable": { "type": "integer" },
  174. "byChannel": {
  175. "type": "object",
  176. "additionalProperties": { "type": "integer" }
  177. },
  178. "externalBlockerChannels": {
  179. "type": "array",
  180. "items": { "type": "string" }
  181. },
  182. "localActionableChannels": {
  183. "type": "array",
  184. "items": { "type": "string" }
  185. }
  186. }
  187. },
  188. "gapDetails": {
  189. "type": "array",
  190. "items": { "$ref": "#/$defs/gapDetail" }
  191. },
  192. "nextActions": {
  193. "type": "array",
  194. "items": { "type": "string" }
  195. }
  196. },
  197. "$defs": {
  198. "remoteHead": {
  199. "type": "object",
  200. "additionalProperties": false,
  201. "required": ["url", "branch", "ok", "hash", "error"],
  202. "properties": {
  203. "url": { "type": "string" },
  204. "branch": { "type": "string" },
  205. "ok": { "type": "boolean" },
  206. "hash": { "type": "string" },
  207. "error": { "type": "string" }
  208. }
  209. },
  210. "gapDetail": {
  211. "type": "object",
  212. "additionalProperties": false,
  213. "required": ["id", "channel", "scope", "externalBlocker", "message", "nextAction"],
  214. "properties": {
  215. "id": { "type": "string" },
  216. "channel": {
  217. "type": "string",
  218. "enum": [
  219. "source-worktree",
  220. "source-remote",
  221. "github",
  222. "github-release",
  223. "gitee",
  224. "npm",
  225. "unknown"
  226. ]
  227. },
  228. "scope": { "type": "string" },
  229. "externalBlocker": { "type": "boolean" },
  230. "message": { "type": "string" },
  231. "nextAction": { "type": "string" }
  232. }
  233. }
  234. }
  235. }