@foxglove/schemas 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (310) hide show
  1. package/.github/workflows/ci.yml +7 -1
  2. package/README.md +45 -2
  3. package/dist/cjs/schemas/typescript/CameraCalibration.js +1 -1
  4. package/dist/cjs/schemas/typescript/CameraCalibration.js.map +1 -1
  5. package/dist/cjs/schemas/typescript/CircleAnnotation.js +1 -1
  6. package/dist/cjs/schemas/typescript/CircleAnnotation.js.map +1 -1
  7. package/dist/cjs/schemas/typescript/Color.js +1 -1
  8. package/dist/cjs/schemas/typescript/Color.js.map +1 -1
  9. package/dist/cjs/schemas/typescript/CompressedImage.js +1 -1
  10. package/dist/cjs/schemas/typescript/CompressedImage.js.map +1 -1
  11. package/dist/cjs/schemas/typescript/FrameTransform.d.ts +6 -3
  12. package/dist/cjs/schemas/typescript/FrameTransform.d.ts.map +1 -1
  13. package/dist/cjs/schemas/typescript/FrameTransform.js +1 -1
  14. package/dist/cjs/schemas/typescript/FrameTransform.js.map +1 -1
  15. package/dist/cjs/schemas/typescript/GeoJSON.js +1 -1
  16. package/dist/cjs/schemas/typescript/GeoJSON.js.map +1 -1
  17. package/dist/cjs/schemas/typescript/Grid.js +1 -1
  18. package/dist/cjs/schemas/typescript/Grid.js.map +1 -1
  19. package/dist/cjs/schemas/typescript/ImageAnnotations.js +1 -1
  20. package/dist/cjs/schemas/typescript/ImageAnnotations.js.map +1 -1
  21. package/dist/cjs/schemas/typescript/LaserScan.js +1 -1
  22. package/dist/cjs/schemas/typescript/LaserScan.js.map +1 -1
  23. package/dist/cjs/schemas/typescript/LocationFix.js +1 -1
  24. package/dist/cjs/schemas/typescript/LocationFix.js.map +1 -1
  25. package/dist/cjs/schemas/typescript/Log.js +1 -1
  26. package/dist/cjs/schemas/typescript/Log.js.map +1 -1
  27. package/dist/cjs/schemas/typescript/LogLevel.js +1 -1
  28. package/dist/cjs/schemas/typescript/LogLevel.js.map +1 -1
  29. package/dist/cjs/schemas/typescript/NumericType.js +1 -1
  30. package/dist/cjs/schemas/typescript/NumericType.js.map +1 -1
  31. package/dist/cjs/schemas/typescript/PackedElementField.js +1 -1
  32. package/dist/cjs/schemas/typescript/PackedElementField.js.map +1 -1
  33. package/dist/cjs/schemas/typescript/Point2.js +1 -1
  34. package/dist/cjs/schemas/typescript/Point2.js.map +1 -1
  35. package/dist/cjs/schemas/typescript/Point3.js +1 -1
  36. package/dist/cjs/schemas/typescript/Point3.js.map +1 -1
  37. package/dist/cjs/schemas/typescript/PointCloud.js +1 -1
  38. package/dist/cjs/schemas/typescript/PointCloud.js.map +1 -1
  39. package/dist/cjs/schemas/typescript/PointsAnnotation.js +1 -1
  40. package/dist/cjs/schemas/typescript/PointsAnnotation.js.map +1 -1
  41. package/dist/cjs/schemas/typescript/PointsAnnotationType.js +1 -1
  42. package/dist/cjs/schemas/typescript/PointsAnnotationType.js.map +1 -1
  43. package/dist/cjs/schemas/typescript/Pose.js +1 -1
  44. package/dist/cjs/schemas/typescript/Pose.js.map +1 -1
  45. package/dist/cjs/schemas/typescript/PoseInFrame.js +1 -1
  46. package/dist/cjs/schemas/typescript/PoseInFrame.js.map +1 -1
  47. package/dist/cjs/schemas/typescript/PosesInFrame.js +1 -1
  48. package/dist/cjs/schemas/typescript/PositionCovarianceType.js +1 -1
  49. package/dist/cjs/schemas/typescript/PositionCovarianceType.js.map +1 -1
  50. package/dist/cjs/schemas/typescript/Quaternion.js +1 -1
  51. package/dist/cjs/schemas/typescript/Quaternion.js.map +1 -1
  52. package/dist/cjs/schemas/typescript/RawImage.js +1 -1
  53. package/dist/cjs/schemas/typescript/RawImage.js.map +1 -1
  54. package/dist/cjs/schemas/typescript/Vector2.js +1 -1
  55. package/dist/cjs/schemas/typescript/Vector2.js.map +1 -1
  56. package/dist/cjs/schemas/typescript/Vector3.js +1 -1
  57. package/dist/cjs/schemas/typescript/Vector3.js.map +1 -1
  58. package/dist/cjs/schemas/typescript/index.d.ts +0 -1
  59. package/dist/cjs/schemas/typescript/index.d.ts.map +1 -1
  60. package/dist/cjs/schemas/typescript/index.js +0 -1
  61. package/dist/cjs/schemas/typescript/index.js.map +1 -1
  62. package/dist/cjs/scripts/updateGeneratedFiles.js +17 -4
  63. package/dist/cjs/scripts/updateGeneratedFiles.js.map +1 -1
  64. package/dist/cjs/src/generateJsonSchema.d.ts.map +1 -1
  65. package/dist/cjs/src/generateJsonSchema.js +4 -3
  66. package/dist/cjs/src/generateJsonSchema.js.map +1 -1
  67. package/dist/cjs/src/generateJsonSchema.test.js +6 -8
  68. package/dist/cjs/src/generateJsonSchema.test.js.map +1 -1
  69. package/dist/cjs/src/generateMarkdown.d.ts +3 -0
  70. package/dist/cjs/src/generateMarkdown.d.ts.map +1 -0
  71. package/dist/cjs/src/generateMarkdown.js +78 -0
  72. package/dist/cjs/src/generateMarkdown.js.map +1 -0
  73. package/dist/cjs/src/generateProto.js +1 -1
  74. package/dist/cjs/src/generateProto.js.map +1 -1
  75. package/dist/cjs/src/generateProto.test.js +1 -1
  76. package/dist/cjs/src/generateRos.d.ts.map +1 -1
  77. package/dist/cjs/src/generateRos.js +3 -1
  78. package/dist/cjs/src/generateRos.js.map +1 -1
  79. package/dist/cjs/src/generateRos.test.js +451 -431
  80. package/dist/cjs/src/generateRos.test.js.map +1 -1
  81. package/dist/cjs/src/generateTypeScript.js +1 -1
  82. package/dist/cjs/src/generateTypeScript.js.map +1 -1
  83. package/dist/cjs/src/generateTypeScript.test.js +2 -2
  84. package/dist/cjs/src/schemas.d.ts +0 -1
  85. package/dist/cjs/src/schemas.d.ts.map +1 -1
  86. package/dist/cjs/src/schemas.js +8 -26
  87. package/dist/cjs/src/schemas.js.map +1 -1
  88. package/dist/esm/schemas/typescript/CameraCalibration.js +1 -1
  89. package/dist/esm/schemas/typescript/CameraCalibration.js.map +1 -1
  90. package/dist/esm/schemas/typescript/CircleAnnotation.js +1 -1
  91. package/dist/esm/schemas/typescript/CircleAnnotation.js.map +1 -1
  92. package/dist/esm/schemas/typescript/Color.js +1 -1
  93. package/dist/esm/schemas/typescript/Color.js.map +1 -1
  94. package/dist/esm/schemas/typescript/CompressedImage.js +1 -1
  95. package/dist/esm/schemas/typescript/CompressedImage.js.map +1 -1
  96. package/dist/esm/schemas/typescript/FrameTransform.d.ts +6 -3
  97. package/dist/esm/schemas/typescript/FrameTransform.d.ts.map +1 -1
  98. package/dist/esm/schemas/typescript/FrameTransform.js +1 -1
  99. package/dist/esm/schemas/typescript/FrameTransform.js.map +1 -1
  100. package/dist/esm/schemas/typescript/GeoJSON.js +1 -1
  101. package/dist/esm/schemas/typescript/GeoJSON.js.map +1 -1
  102. package/dist/esm/schemas/typescript/Grid.js +1 -1
  103. package/dist/esm/schemas/typescript/Grid.js.map +1 -1
  104. package/dist/esm/schemas/typescript/ImageAnnotations.js +1 -1
  105. package/dist/esm/schemas/typescript/ImageAnnotations.js.map +1 -1
  106. package/dist/esm/schemas/typescript/LaserScan.js +1 -1
  107. package/dist/esm/schemas/typescript/LaserScan.js.map +1 -1
  108. package/dist/esm/schemas/typescript/LocationFix.js +1 -1
  109. package/dist/esm/schemas/typescript/LocationFix.js.map +1 -1
  110. package/dist/esm/schemas/typescript/Log.js +1 -1
  111. package/dist/esm/schemas/typescript/Log.js.map +1 -1
  112. package/dist/esm/schemas/typescript/LogLevel.js +1 -1
  113. package/dist/esm/schemas/typescript/LogLevel.js.map +1 -1
  114. package/dist/esm/schemas/typescript/NumericType.js +1 -1
  115. package/dist/esm/schemas/typescript/NumericType.js.map +1 -1
  116. package/dist/esm/schemas/typescript/PackedElementField.js +1 -1
  117. package/dist/esm/schemas/typescript/PackedElementField.js.map +1 -1
  118. package/dist/esm/schemas/typescript/Point2.js +1 -1
  119. package/dist/esm/schemas/typescript/Point2.js.map +1 -1
  120. package/dist/esm/schemas/typescript/Point3.js +1 -1
  121. package/dist/esm/schemas/typescript/Point3.js.map +1 -1
  122. package/dist/esm/schemas/typescript/PointCloud.js +1 -1
  123. package/dist/esm/schemas/typescript/PointCloud.js.map +1 -1
  124. package/dist/esm/schemas/typescript/PointsAnnotation.js +1 -1
  125. package/dist/esm/schemas/typescript/PointsAnnotation.js.map +1 -1
  126. package/dist/esm/schemas/typescript/PointsAnnotationType.js +1 -1
  127. package/dist/esm/schemas/typescript/PointsAnnotationType.js.map +1 -1
  128. package/dist/esm/schemas/typescript/Pose.js +1 -1
  129. package/dist/esm/schemas/typescript/Pose.js.map +1 -1
  130. package/dist/esm/schemas/typescript/PoseInFrame.js +1 -1
  131. package/dist/esm/schemas/typescript/PoseInFrame.js.map +1 -1
  132. package/dist/esm/schemas/typescript/PosesInFrame.js +1 -1
  133. package/dist/esm/schemas/typescript/PositionCovarianceType.js +1 -1
  134. package/dist/esm/schemas/typescript/PositionCovarianceType.js.map +1 -1
  135. package/dist/esm/schemas/typescript/Quaternion.js +1 -1
  136. package/dist/esm/schemas/typescript/Quaternion.js.map +1 -1
  137. package/dist/esm/schemas/typescript/RawImage.js +1 -1
  138. package/dist/esm/schemas/typescript/RawImage.js.map +1 -1
  139. package/dist/esm/schemas/typescript/Vector2.js +1 -1
  140. package/dist/esm/schemas/typescript/Vector2.js.map +1 -1
  141. package/dist/esm/schemas/typescript/Vector3.js +1 -1
  142. package/dist/esm/schemas/typescript/Vector3.js.map +1 -1
  143. package/dist/esm/schemas/typescript/index.d.ts +0 -1
  144. package/dist/esm/schemas/typescript/index.d.ts.map +1 -1
  145. package/dist/esm/schemas/typescript/index.js +0 -1
  146. package/dist/esm/schemas/typescript/index.js.map +1 -1
  147. package/dist/esm/scripts/updateGeneratedFiles.js +17 -4
  148. package/dist/esm/scripts/updateGeneratedFiles.js.map +1 -1
  149. package/dist/esm/src/generateJsonSchema.d.ts.map +1 -1
  150. package/dist/esm/src/generateJsonSchema.js +4 -3
  151. package/dist/esm/src/generateJsonSchema.js.map +1 -1
  152. package/dist/esm/src/generateJsonSchema.test.js +6 -8
  153. package/dist/esm/src/generateJsonSchema.test.js.map +1 -1
  154. package/dist/esm/src/generateMarkdown.d.ts +3 -0
  155. package/dist/esm/src/generateMarkdown.d.ts.map +1 -0
  156. package/dist/esm/src/generateMarkdown.js +74 -0
  157. package/dist/esm/src/generateMarkdown.js.map +1 -0
  158. package/dist/esm/src/generateProto.js +1 -1
  159. package/dist/esm/src/generateProto.js.map +1 -1
  160. package/dist/esm/src/generateProto.test.js +1 -1
  161. package/dist/esm/src/generateRos.d.ts.map +1 -1
  162. package/dist/esm/src/generateRos.js +3 -1
  163. package/dist/esm/src/generateRos.js.map +1 -1
  164. package/dist/esm/src/generateRos.test.js +451 -431
  165. package/dist/esm/src/generateRos.test.js.map +1 -1
  166. package/dist/esm/src/generateTypeScript.js +1 -1
  167. package/dist/esm/src/generateTypeScript.js.map +1 -1
  168. package/dist/esm/src/generateTypeScript.test.js +2 -2
  169. package/dist/esm/src/schemas.d.ts +0 -1
  170. package/dist/esm/src/schemas.d.ts.map +1 -1
  171. package/dist/esm/src/schemas.js +8 -26
  172. package/dist/esm/src/schemas.js.map +1 -1
  173. package/package.json +2 -2
  174. package/schemas/README.md +1683 -0
  175. package/schemas/jsonschema/CameraCalibration.json +2 -2
  176. package/schemas/jsonschema/CircleAnnotation.json +5 -8
  177. package/schemas/jsonschema/Color.json +2 -2
  178. package/schemas/jsonschema/CompressedImage.json +2 -2
  179. package/schemas/jsonschema/FrameTransform.json +37 -63
  180. package/schemas/jsonschema/GeoJSON.json +2 -2
  181. package/schemas/jsonschema/Grid.json +8 -13
  182. package/schemas/jsonschema/ImageAnnotations.json +11 -19
  183. package/schemas/jsonschema/LaserScan.json +5 -8
  184. package/schemas/jsonschema/LocationFix.json +3 -3
  185. package/schemas/jsonschema/Log.json +3 -3
  186. package/schemas/jsonschema/PackedElementField.json +3 -3
  187. package/schemas/jsonschema/Point2.json +2 -2
  188. package/schemas/jsonschema/Point3.json +2 -2
  189. package/schemas/jsonschema/PointCloud.json +7 -11
  190. package/schemas/jsonschema/PointsAnnotation.json +6 -9
  191. package/schemas/jsonschema/Pose.json +4 -6
  192. package/schemas/jsonschema/PoseInFrame.json +5 -8
  193. package/schemas/jsonschema/PosesInFrame.json +5 -8
  194. package/schemas/jsonschema/Quaternion.json +2 -2
  195. package/schemas/jsonschema/RawImage.json +2 -2
  196. package/schemas/jsonschema/Vector2.json +2 -2
  197. package/schemas/jsonschema/Vector3.json +2 -2
  198. package/schemas/proto/foxglove/CameraCalibration.proto +1 -1
  199. package/schemas/proto/foxglove/CircleAnnotation.proto +1 -1
  200. package/schemas/proto/foxglove/Color.proto +1 -1
  201. package/schemas/proto/foxglove/CompressedImage.proto +1 -1
  202. package/schemas/proto/foxglove/FrameTransform.proto +8 -4
  203. package/schemas/proto/foxglove/GeoJSON.proto +1 -1
  204. package/schemas/proto/foxglove/Grid.proto +1 -1
  205. package/schemas/proto/foxglove/ImageAnnotations.proto +1 -1
  206. package/schemas/proto/foxglove/LaserScan.proto +1 -1
  207. package/schemas/proto/foxglove/LocationFix.proto +1 -1
  208. package/schemas/proto/foxglove/Log.proto +1 -1
  209. package/schemas/proto/foxglove/PackedElementField.proto +1 -1
  210. package/schemas/proto/foxglove/Point2.proto +1 -1
  211. package/schemas/proto/foxglove/Point3.proto +1 -1
  212. package/schemas/proto/foxglove/PointCloud.proto +1 -1
  213. package/schemas/proto/foxglove/PointsAnnotation.proto +1 -1
  214. package/schemas/proto/foxglove/Pose.proto +1 -1
  215. package/schemas/proto/foxglove/PoseInFrame.proto +1 -1
  216. package/schemas/proto/foxglove/PosesInFrame.proto +1 -1
  217. package/schemas/proto/foxglove/Quaternion.proto +1 -1
  218. package/schemas/proto/foxglove/RawImage.proto +1 -1
  219. package/schemas/proto/foxglove/Vector2.proto +1 -1
  220. package/schemas/proto/foxglove/Vector3.proto +1 -1
  221. package/schemas/ros1/CameraCalibration.msg +4 -1
  222. package/schemas/ros1/CircleAnnotation.msg +4 -1
  223. package/schemas/ros1/Color.msg +4 -1
  224. package/schemas/ros1/CompressedImage.msg +4 -1
  225. package/schemas/ros1/FrameTransform.msg +9 -3
  226. package/schemas/ros1/GeoJSON.msg +4 -1
  227. package/schemas/ros1/Grid.msg +4 -1
  228. package/schemas/ros1/ImageAnnotations.msg +4 -1
  229. package/schemas/ros1/LaserScan.msg +4 -1
  230. package/schemas/ros1/LocationFix.msg +4 -1
  231. package/schemas/ros1/Log.msg +4 -1
  232. package/schemas/ros1/PackedElementField.msg +4 -1
  233. package/schemas/ros1/Point2.msg +4 -1
  234. package/schemas/ros1/PointCloud.msg +4 -1
  235. package/schemas/ros1/PointsAnnotation.msg +4 -1
  236. package/schemas/ros1/PoseInFrame.msg +4 -1
  237. package/schemas/ros1/PosesInFrame.msg +4 -1
  238. package/schemas/ros1/RawImage.msg +4 -1
  239. package/schemas/ros1/Vector2.msg +4 -1
  240. package/schemas/ros2/CameraCalibration.msg +4 -1
  241. package/schemas/ros2/CircleAnnotation.msg +4 -1
  242. package/schemas/ros2/Color.msg +4 -1
  243. package/schemas/ros2/CompressedImage.msg +4 -1
  244. package/schemas/ros2/FrameTransform.msg +9 -3
  245. package/schemas/ros2/GeoJSON.msg +4 -1
  246. package/schemas/ros2/Grid.msg +4 -1
  247. package/schemas/ros2/ImageAnnotations.msg +4 -1
  248. package/schemas/ros2/LaserScan.msg +4 -1
  249. package/schemas/ros2/LocationFix.msg +4 -1
  250. package/schemas/ros2/Log.msg +4 -1
  251. package/schemas/ros2/PackedElementField.msg +4 -1
  252. package/schemas/ros2/Point2.msg +4 -1
  253. package/schemas/ros2/PointCloud.msg +4 -1
  254. package/schemas/ros2/PointsAnnotation.msg +4 -1
  255. package/schemas/ros2/PoseInFrame.msg +4 -1
  256. package/schemas/ros2/PosesInFrame.msg +4 -1
  257. package/schemas/ros2/RawImage.msg +4 -1
  258. package/schemas/ros2/Vector2.msg +4 -1
  259. package/schemas/typescript/CameraCalibration.ts +1 -1
  260. package/schemas/typescript/CircleAnnotation.ts +1 -1
  261. package/schemas/typescript/Color.ts +1 -1
  262. package/schemas/typescript/CompressedImage.ts +1 -1
  263. package/schemas/typescript/FrameTransform.ts +8 -4
  264. package/schemas/typescript/GeoJSON.ts +1 -1
  265. package/schemas/typescript/Grid.ts +1 -1
  266. package/schemas/typescript/ImageAnnotations.ts +1 -1
  267. package/schemas/typescript/LaserScan.ts +1 -1
  268. package/schemas/typescript/LocationFix.ts +1 -1
  269. package/schemas/typescript/Log.ts +1 -1
  270. package/schemas/typescript/LogLevel.ts +1 -1
  271. package/schemas/typescript/NumericType.ts +1 -1
  272. package/schemas/typescript/PackedElementField.ts +1 -1
  273. package/schemas/typescript/Point2.ts +1 -1
  274. package/schemas/typescript/Point3.ts +1 -1
  275. package/schemas/typescript/PointCloud.ts +1 -1
  276. package/schemas/typescript/PointsAnnotation.ts +1 -1
  277. package/schemas/typescript/PointsAnnotationType.ts +1 -1
  278. package/schemas/typescript/Pose.ts +1 -1
  279. package/schemas/typescript/PoseInFrame.ts +1 -1
  280. package/schemas/typescript/PosesInFrame.ts +1 -1
  281. package/schemas/typescript/PositionCovarianceType.ts +1 -1
  282. package/schemas/typescript/Quaternion.ts +1 -1
  283. package/schemas/typescript/RawImage.ts +1 -1
  284. package/schemas/typescript/Vector2.ts +1 -1
  285. package/schemas/typescript/Vector3.ts +1 -1
  286. package/schemas/typescript/index.ts +0 -1
  287. package/scripts/updateGeneratedFiles.ts +21 -10
  288. package/src/generateJsonSchema.test.ts +6 -8
  289. package/src/generateJsonSchema.ts +4 -3
  290. package/src/generateMarkdown.ts +86 -0
  291. package/src/generateProto.test.ts +1 -1
  292. package/src/generateProto.ts +1 -1
  293. package/src/generateRos.test.ts +451 -431
  294. package/src/generateRos.ts +4 -1
  295. package/src/generateTypeScript.test.ts +2 -2
  296. package/src/generateTypeScript.ts +1 -1
  297. package/src/schemas.ts +8 -27
  298. package/dist/cjs/schemas/typescript/Transform.d.ts +0 -13
  299. package/dist/cjs/schemas/typescript/Transform.d.ts.map +0 -1
  300. package/dist/cjs/schemas/typescript/Transform.js +0 -4
  301. package/dist/cjs/schemas/typescript/Transform.js.map +0 -1
  302. package/dist/esm/schemas/typescript/Transform.d.ts +0 -13
  303. package/dist/esm/schemas/typescript/Transform.d.ts.map +0 -1
  304. package/dist/esm/schemas/typescript/Transform.js +0 -3
  305. package/dist/esm/schemas/typescript/Transform.js.map +0 -1
  306. package/schemas/jsonschema/Transform.json +0 -68
  307. package/schemas/proto/foxglove/Transform.proto +0 -21
  308. package/schemas/ros1/Transform.msg +0 -10
  309. package/schemas/ros2/Transform.msg +0 -10
  310. package/schemas/typescript/Transform.ts +0 -17
@@ -1,4 +1,7 @@
1
- # Generated from PoseInFrame by @foxglove/schemas
1
+ # foxglove_msgs/msg/PoseInFrame
2
+ # A timestamped pose for an object or reference frame in 3D space
3
+
4
+ # Generated by https://github.com/foxglove/schemas
2
5
 
3
6
  # Timestamp of pose
4
7
  builtin_interfaces/Time timestamp
@@ -1,4 +1,7 @@
1
- # Generated from PosesInFrame by @foxglove/schemas
1
+ # foxglove_msgs/msg/PosesInFrame
2
+ # An array of timestamped poses for an object or reference frame in 3D space
3
+
4
+ # Generated by https://github.com/foxglove/schemas
2
5
 
3
6
  # Timestamp of pose
4
7
  builtin_interfaces/Time timestamp
@@ -1,4 +1,7 @@
1
- # Generated from RawImage by @foxglove/schemas
1
+ # foxglove_msgs/msg/RawImage
2
+ # A raw image
3
+
4
+ # Generated by https://github.com/foxglove/schemas
2
5
 
3
6
  # Timestamp of image
4
7
  builtin_interfaces/Time timestamp
@@ -1,4 +1,7 @@
1
- # Generated from Vector2 by @foxglove/schemas
1
+ # foxglove_msgs/msg/Vector2
2
+ # A vector in 2D space that represents a direction only
3
+
4
+ # Generated by https://github.com/foxglove/schemas
2
5
 
3
6
  # x coordinate length
4
7
  float64 x
@@ -1,4 +1,4 @@
1
- // Generated from CameraCalibration by @foxglove/schemas
1
+ // Generated by https://github.com/foxglove/schemas
2
2
 
3
3
  import { Time } from "./Time";
4
4
 
@@ -1,4 +1,4 @@
1
- // Generated from CircleAnnotation by @foxglove/schemas
1
+ // Generated by https://github.com/foxglove/schemas
2
2
 
3
3
  import { Color } from "./Color";
4
4
  import { Point2 } from "./Point2";
@@ -1,4 +1,4 @@
1
- // Generated from Color by @foxglove/schemas
1
+ // Generated by https://github.com/foxglove/schemas
2
2
 
3
3
  /** A color in RGBA format */
4
4
  export type Color = {
@@ -1,4 +1,4 @@
1
- // Generated from CompressedImage by @foxglove/schemas
1
+ // Generated by https://github.com/foxglove/schemas
2
2
 
3
3
  import { Time } from "./Time";
4
4
 
@@ -1,7 +1,8 @@
1
- // Generated from FrameTransform by @foxglove/schemas
1
+ // Generated by https://github.com/foxglove/schemas
2
2
 
3
+ import { Quaternion } from "./Quaternion";
3
4
  import { Time } from "./Time";
4
- import { Transform } from "./Transform";
5
+ import { Vector3 } from "./Vector3";
5
6
 
6
7
  /** A transform between two reference frames in 3D space */
7
8
  export type FrameTransform = {
@@ -14,6 +15,9 @@ export type FrameTransform = {
14
15
  /** Name of the child frame */
15
16
  child_frame_id: string;
16
17
 
17
- /** Transform from parent frame to child frame */
18
- transform: Transform;
18
+ /** Translation component of the transform */
19
+ translation: Vector3;
20
+
21
+ /** Rotation component of the transform */
22
+ rotation: Quaternion;
19
23
  };
@@ -1,4 +1,4 @@
1
- // Generated from GeoJSON by @foxglove/schemas
1
+ // Generated by https://github.com/foxglove/schemas
2
2
 
3
3
  /** GeoJSON data for annotating maps */
4
4
  export type GeoJSON = {
@@ -1,4 +1,4 @@
1
- // Generated from Grid by @foxglove/schemas
1
+ // Generated by https://github.com/foxglove/schemas
2
2
 
3
3
  import { PackedElementField } from "./PackedElementField";
4
4
  import { Pose } from "./Pose";
@@ -1,4 +1,4 @@
1
- // Generated from ImageAnnotations by @foxglove/schemas
1
+ // Generated by https://github.com/foxglove/schemas
2
2
 
3
3
  import { CircleAnnotation } from "./CircleAnnotation";
4
4
  import { PointsAnnotation } from "./PointsAnnotation";
@@ -1,4 +1,4 @@
1
- // Generated from LaserScan by @foxglove/schemas
1
+ // Generated by https://github.com/foxglove/schemas
2
2
 
3
3
  import { Pose } from "./Pose";
4
4
  import { Time } from "./Time";
@@ -1,4 +1,4 @@
1
- // Generated from LocationFix by @foxglove/schemas
1
+ // Generated by https://github.com/foxglove/schemas
2
2
 
3
3
  import { PositionCovarianceType } from "./PositionCovarianceType";
4
4
 
@@ -1,4 +1,4 @@
1
- // Generated from Log by @foxglove/schemas
1
+ // Generated by https://github.com/foxglove/schemas
2
2
 
3
3
  import { LogLevel } from "./LogLevel";
4
4
  import { Time } from "./Time";
@@ -1,4 +1,4 @@
1
- // Generated from LogLevel by @foxglove/schemas
1
+ // Generated by https://github.com/foxglove/schemas
2
2
 
3
3
  /** Log level */
4
4
  export enum LogLevel {
@@ -1,4 +1,4 @@
1
- // Generated from NumericType by @foxglove/schemas
1
+ // Generated by https://github.com/foxglove/schemas
2
2
 
3
3
  /** Numeric type */
4
4
  export enum NumericType {
@@ -1,4 +1,4 @@
1
- // Generated from PackedElementField by @foxglove/schemas
1
+ // Generated by https://github.com/foxglove/schemas
2
2
 
3
3
  import { NumericType } from "./NumericType";
4
4
 
@@ -1,4 +1,4 @@
1
- // Generated from Point2 by @foxglove/schemas
1
+ // Generated by https://github.com/foxglove/schemas
2
2
 
3
3
  /** A point representing a position in 2D space */
4
4
  export type Point2 = {
@@ -1,4 +1,4 @@
1
- // Generated from Point3 by @foxglove/schemas
1
+ // Generated by https://github.com/foxglove/schemas
2
2
 
3
3
  /** A point representing a position in 3D space */
4
4
  export type Point3 = {
@@ -1,4 +1,4 @@
1
- // Generated from PointCloud by @foxglove/schemas
1
+ // Generated by https://github.com/foxglove/schemas
2
2
 
3
3
  import { PackedElementField } from "./PackedElementField";
4
4
  import { Pose } from "./Pose";
@@ -1,4 +1,4 @@
1
- // Generated from PointsAnnotation by @foxglove/schemas
1
+ // Generated by https://github.com/foxglove/schemas
2
2
 
3
3
  import { Color } from "./Color";
4
4
  import { Point2 } from "./Point2";
@@ -1,4 +1,4 @@
1
- // Generated from PointsAnnotationType by @foxglove/schemas
1
+ // Generated by https://github.com/foxglove/schemas
2
2
 
3
3
  /** Type of points annotation */
4
4
  export enum PointsAnnotationType {
@@ -1,4 +1,4 @@
1
- // Generated from Pose by @foxglove/schemas
1
+ // Generated by https://github.com/foxglove/schemas
2
2
 
3
3
  import { Quaternion } from "./Quaternion";
4
4
  import { Vector3 } from "./Vector3";
@@ -1,4 +1,4 @@
1
- // Generated from PoseInFrame by @foxglove/schemas
1
+ // Generated by https://github.com/foxglove/schemas
2
2
 
3
3
  import { Pose } from "./Pose";
4
4
  import { Time } from "./Time";
@@ -1,4 +1,4 @@
1
- // Generated from PosesInFrame by @foxglove/schemas
1
+ // Generated by https://github.com/foxglove/schemas
2
2
 
3
3
  import { Pose } from "./Pose";
4
4
  import { Time } from "./Time";
@@ -1,4 +1,4 @@
1
- // Generated from PositionCovarianceType by @foxglove/schemas
1
+ // Generated by https://github.com/foxglove/schemas
2
2
 
3
3
  /** Type of position covariance */
4
4
  export enum PositionCovarianceType {
@@ -1,4 +1,4 @@
1
- // Generated from Quaternion by @foxglove/schemas
1
+ // Generated by https://github.com/foxglove/schemas
2
2
 
3
3
  /** A [quaternion](https://eater.net/quaternions) representing a rotation in 3D space */
4
4
  export type Quaternion = {
@@ -1,4 +1,4 @@
1
- // Generated from RawImage by @foxglove/schemas
1
+ // Generated by https://github.com/foxglove/schemas
2
2
 
3
3
  import { Time } from "./Time";
4
4
 
@@ -1,4 +1,4 @@
1
- // Generated from Vector2 by @foxglove/schemas
1
+ // Generated by https://github.com/foxglove/schemas
2
2
 
3
3
  /** A vector in 2D space that represents a direction only */
4
4
  export type Vector2 = {
@@ -1,4 +1,4 @@
1
- // Generated from Vector3 by @foxglove/schemas
1
+ // Generated by https://github.com/foxglove/schemas
2
2
 
3
3
  /** A vector in 3D space that represents a direction only */
4
4
  export type Vector3 = {
@@ -23,6 +23,5 @@ export * from "./PosesInFrame";
23
23
  export * from "./PositionCovarianceType";
24
24
  export * from "./Quaternion";
25
25
  export * from "./RawImage";
26
- export * from "./Transform";
27
26
  export * from "./Vector2";
28
27
  export * from "./Vector3";
@@ -6,6 +6,7 @@ import { promisify } from "util";
6
6
 
7
7
  import { generateRosMsg, generateRosMsgDefinition } from "../src";
8
8
  import { generateJsonSchema } from "../src/generateJsonSchema";
9
+ import { generateMarkdown } from "../src/generateMarkdown";
9
10
  import { generateProto } from "../src/generateProto";
10
11
  import { generateTypeScript, DURATION_TS, TIME_TS } from "../src/generateTypeScript";
11
12
  import { foxgloveEnumSchemas, foxgloveMessageSchemas } from "../src/schemas";
@@ -16,7 +17,7 @@ async function logProgress(message: string, body: () => Promise<void>) {
16
17
  process.stderr.write("done\n");
17
18
  }
18
19
 
19
- async function main({ outDir }: { outDir: string }) {
20
+ async function main({ outDir, rosOutDir }: { outDir: string; rosOutDir: string }) {
20
21
  await logProgress("Removing any existing output directory", async () => {
21
22
  await promisify(rimraf)(outDir);
22
23
  });
@@ -33,27 +34,27 @@ async function main({ outDir }: { outDir: string }) {
33
34
 
34
35
  await logProgress("Generating ROS 1 msg files", async () => {
35
36
  await fs.mkdir(path.join(outDir, "ros1"), { recursive: true });
37
+ await fs.mkdir(path.join(rosOutDir, "ros1"), { recursive: true });
36
38
  for (const schema of Object.values(foxgloveMessageSchemas)) {
37
39
  if (schema.rosEquivalent != undefined) {
38
40
  continue;
39
41
  }
40
- await fs.writeFile(
41
- path.join(outDir, "ros1", `${schema.name}.msg`),
42
- generateRosMsg(generateRosMsgDefinition(schema, { rosVersion: 1 })),
43
- );
42
+ const msg = generateRosMsg(generateRosMsgDefinition(schema, { rosVersion: 1 }));
43
+ await fs.writeFile(path.join(outDir, "ros1", `${schema.name}.msg`), msg);
44
+ await fs.writeFile(path.join(rosOutDir, "ros1", `${schema.name}.msg`), msg);
44
45
  }
45
46
  });
46
47
 
47
48
  await logProgress("Generating ROS 2 msg files", async () => {
48
49
  await fs.mkdir(path.join(outDir, "ros2"), { recursive: true });
50
+ await fs.mkdir(path.join(rosOutDir, "ros2"), { recursive: true });
49
51
  for (const schema of Object.values(foxgloveMessageSchemas)) {
50
52
  if (schema.rosEquivalent != undefined) {
51
53
  continue;
52
54
  }
53
- await fs.writeFile(
54
- path.join(outDir, "ros2", `${schema.name}.msg`),
55
- generateRosMsg(generateRosMsgDefinition(schema, { rosVersion: 2 })),
56
- );
55
+ const msg = generateRosMsg(generateRosMsgDefinition(schema, { rosVersion: 2 }));
56
+ await fs.writeFile(path.join(outDir, "ros2", `${schema.name}.msg`), msg);
57
+ await fs.writeFile(path.join(rosOutDir, "ros2", `${schema.name}.msg`), msg);
57
58
  }
58
59
  });
59
60
 
@@ -96,8 +97,18 @@ async function main({ outDir }: { outDir: string }) {
96
97
  }
97
98
  await fs.writeFile(path.join(outDir, "typescript", `index.ts`), indexTS);
98
99
  });
100
+
101
+ await logProgress("Generating README.md", async () => {
102
+ await fs.writeFile(
103
+ path.join(outDir, "README.md"),
104
+ generateMarkdown(Object.values(foxgloveMessageSchemas), Object.values(foxgloveEnumSchemas)),
105
+ );
106
+ });
99
107
  }
100
108
 
101
- program.requiredOption("-o, --out-dir <dir>", "output directory").action(main);
109
+ program
110
+ .requiredOption("-o, --out-dir <dir>", "output directory")
111
+ .requiredOption("--ros-out-dir <dir>", "output directory for additional copies of ROS msgs")
112
+ .action(main);
102
113
 
103
114
  program.parseAsync().catch(console.error);
@@ -8,7 +8,7 @@ describe("generateJsonSchema", () => {
8
8
  it("generates expected JSON Schema", () => {
9
9
  expect(generateJsonSchema(exampleMessage)).toMatchInlineSnapshot(`
10
10
  Object {
11
- "$comment": "Generated from ExampleMessage by @foxglove/schemas",
11
+ "$comment": "Generated by https://github.com/foxglove/schemas",
12
12
  "description": "An example type",
13
13
  "properties": Object {
14
14
  "field_boolean": Object {
@@ -121,7 +121,7 @@ describe("generateJsonSchema", () => {
121
121
  "title": "B",
122
122
  },
123
123
  ],
124
- "title": "ExampleEnum: An example enum",
124
+ "title": "foxglove.ExampleEnum",
125
125
  },
126
126
  "field_enum_array": Object {
127
127
  "description": "An enum array field",
@@ -139,7 +139,7 @@ describe("generateJsonSchema", () => {
139
139
  "title": "B",
140
140
  },
141
141
  ],
142
- "title": "ExampleEnum: An example enum",
142
+ "title": "foxglove.ExampleEnum",
143
143
  },
144
144
  "type": "array",
145
145
  },
@@ -164,7 +164,6 @@ describe("generateJsonSchema", () => {
164
164
  "type": "array",
165
165
  },
166
166
  "field_nested": Object {
167
- "$comment": "Generated from NestedMessage by @foxglove/schemas",
168
167
  "description": "A nested field",
169
168
  "properties": Object {
170
169
  "field_enum": Object {
@@ -173,7 +172,7 @@ describe("generateJsonSchema", () => {
173
172
  "type": "integer",
174
173
  },
175
174
  },
176
- "title": "NestedMessage",
175
+ "title": "foxglove.NestedMessage",
177
176
  "type": "object",
178
177
  },
179
178
  "field_nested_array": Object {
@@ -184,7 +183,6 @@ describe("generateJsonSchema", () => {
184
183
  long
185
184
  description",
186
185
  "items": Object {
187
- "$comment": "Generated from NestedMessage by @foxglove/schemas",
188
186
  "description": "An example nested message",
189
187
  "properties": Object {
190
188
  "field_enum": Object {
@@ -193,7 +191,7 @@ describe("generateJsonSchema", () => {
193
191
  "type": "integer",
194
192
  },
195
193
  },
196
- "title": "NestedMessage",
194
+ "title": "foxglove.NestedMessage",
197
195
  "type": "object",
198
196
  },
199
197
  "type": "array",
@@ -298,7 +296,7 @@ describe("generateJsonSchema", () => {
298
296
  "type": "array",
299
297
  },
300
298
  },
301
- "title": "ExampleMessage",
299
+ "title": "foxglove.ExampleMessage",
302
300
  "type": "object",
303
301
  }
304
302
  `);
@@ -45,10 +45,11 @@ export function generateJsonSchema(schema: FoxgloveMessageSchema): Record<string
45
45
  break;
46
46
  case "nested":
47
47
  fieldType = generateJsonSchema(field.type.schema);
48
+ delete fieldType.$comment;
48
49
  break;
49
50
  case "enum":
50
51
  fieldType = {
51
- title: `${field.type.enum.name}: ${field.type.enum.description}`,
52
+ title: `foxglove.${field.type.enum.name}`,
52
53
  description: field.description,
53
54
  oneOf: field.type.enum.values.map(({ name, value, description }) => ({
54
55
  title: name,
@@ -73,9 +74,9 @@ export function generateJsonSchema(schema: FoxgloveMessageSchema): Record<string
73
74
  }
74
75
 
75
76
  return {
76
- $comment: `Generated from ${schema.name} by @foxglove/schemas`,
77
- title: schema.name,
77
+ title: `foxglove.${schema.name}`,
78
78
  description: schema.description,
79
+ $comment: "Generated by https://github.com/foxglove/schemas",
79
80
  type: "object",
80
81
  properties,
81
82
  };
@@ -0,0 +1,86 @@
1
+ import { FoxgloveEnumSchema, FoxgloveMessageSchema } from "./types";
2
+
3
+ export function generateMarkdown(
4
+ schemas: Iterable<FoxgloveMessageSchema>,
5
+ enums: Iterable<FoxgloveEnumSchema>,
6
+ ): string {
7
+ const sortedSchemas = [...schemas].sort((a, b) => a.name.localeCompare(b.name));
8
+ const sortedEnums = [...enums].sort((a, b) => a.name.localeCompare(b.name));
9
+
10
+ return [
11
+ `\
12
+ # Foxglove schemas
13
+
14
+ Generated by https://github.com/foxglove/schemas`,
15
+
16
+ "## Contents",
17
+
18
+ [
19
+ ...sortedEnums.map(({ name }) => `- [enum ${name}](#enum-${name.toLowerCase()})`),
20
+ ...sortedSchemas.map(({ name }) => `- [${name}](#${name.toLowerCase()})`),
21
+ ].join("\n"),
22
+ "----",
23
+ sortedEnums.map(
24
+ (enumSchema) => `\
25
+ ## enum ${enumSchema.name}
26
+
27
+ ${enumSchema.description}
28
+
29
+ name | value | description
30
+ ---- | ----- | -----------
31
+ ${enumSchema.values
32
+ .map((value) => `\`${value.name}\` | ${value.value} | ${value.description ?? ""}`)
33
+ .join("\n")}
34
+
35
+ `,
36
+ ),
37
+ ...sortedSchemas.map(
38
+ (schema) => `\
39
+ ## ${schema.name}
40
+
41
+ ${schema.description}
42
+
43
+ <table>
44
+ <tr>
45
+ <th>field</th>
46
+ <th>type</th>
47
+ <th>description</th>
48
+ </tr>
49
+ ${schema.fields
50
+ .map((field) => {
51
+ const arraySuffix =
52
+ typeof field.array === "number" ? `[${field.array}]` : field.array === true ? "[]" : "";
53
+ let type: string;
54
+ switch (field.type.type) {
55
+ case "enum":
56
+ type = `[enum ${field.type.enum.name}](#enum-${field.type.enum.name.toLowerCase()})`;
57
+ break;
58
+ case "nested":
59
+ type = `[${field.type.schema.name}](#${field.type.schema.name.toLowerCase()})`;
60
+ break;
61
+ case "primitive":
62
+ type = field.type.name;
63
+ break;
64
+ }
65
+ return `\
66
+ <tr>
67
+ <td><code>${field.name}</code></td>
68
+ <td>
69
+
70
+ ${type}${arraySuffix}
71
+
72
+ </td>
73
+ <td>
74
+
75
+ ${field.description}
76
+
77
+ </td>
78
+ </tr>`;
79
+ })
80
+ .join("\n")}
81
+ </table>`,
82
+ ),
83
+ ]
84
+ .flat()
85
+ .join("\n\n");
86
+ }
@@ -7,7 +7,7 @@ import { exampleEnum, exampleMessage } from "./testFixtures";
7
7
  describe("generateProto", () => {
8
8
  it("generates .proto files", () => {
9
9
  expect(generateProto(exampleMessage, [exampleEnum])).toMatchInlineSnapshot(`
10
- "// Generated from ExampleMessage by @foxglove/schemas
10
+ "// Generated by https://github.com/foxglove/schemas
11
11
 
12
12
  syntax = \\"proto3\\";
13
13
 
@@ -80,7 +80,7 @@ export function generateProto(
80
80
  )}${fields.join("\n\n")}\n}`;
81
81
 
82
82
  const outputSections = [
83
- `// Generated from ${schema.name} by @foxglove/schemas`,
83
+ `// Generated by https://github.com/foxglove/schemas`,
84
84
  'syntax = "proto3";',
85
85
 
86
86
  Array.from(imports)