@johnmorrisdotca/uchusen-rockets 0.0.0-stage → 0.2.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 (340) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/LICENSE +21 -0
  3. package/LICENSES/CC-BY-4.0.txt +396 -0
  4. package/LICENSES/MIT.txt +21 -0
  5. package/NOTICE.md +66 -0
  6. package/README.md +171 -2
  7. package/dist/assets/dragon-dragon-1-apart.painted.svg +1 -0
  8. package/dist/assets/dragon-dragon-1-apart.svg +1 -0
  9. package/dist/assets/dragon-dragon-1-apart.thick.svg +1 -0
  10. package/dist/assets/dragon-dragon-1-capsule.glb +0 -0
  11. package/dist/assets/dragon-dragon-1-capsule.painted.svg +1 -0
  12. package/dist/assets/dragon-dragon-1-capsule.svg +1 -0
  13. package/dist/assets/dragon-dragon-1-capsule.thick.svg +1 -0
  14. package/dist/assets/dragon-dragon-1-trunk.glb +0 -0
  15. package/dist/assets/dragon-dragon-1-trunk.painted.svg +1 -0
  16. package/dist/assets/dragon-dragon-1-trunk.svg +1 -0
  17. package/dist/assets/dragon-dragon-1-trunk.thick.svg +1 -0
  18. package/dist/assets/dragon-dragon-1.glb +0 -0
  19. package/dist/assets/dragon-dragon-1.painted.svg +1 -0
  20. package/dist/assets/dragon-dragon-1.svg +1 -0
  21. package/dist/assets/dragon-dragon-1.thick.svg +1 -0
  22. package/dist/assets/dragon-dragon-2-apart.painted.svg +1 -0
  23. package/dist/assets/dragon-dragon-2-apart.svg +1 -0
  24. package/dist/assets/dragon-dragon-2-apart.thick.svg +1 -0
  25. package/dist/assets/dragon-dragon-2-capsule.glb +0 -0
  26. package/dist/assets/dragon-dragon-2-capsule.painted.svg +1 -0
  27. package/dist/assets/dragon-dragon-2-capsule.svg +1 -0
  28. package/dist/assets/dragon-dragon-2-capsule.thick.svg +1 -0
  29. package/dist/assets/dragon-dragon-2-trunk.glb +0 -0
  30. package/dist/assets/dragon-dragon-2-trunk.painted.svg +1 -0
  31. package/dist/assets/dragon-dragon-2-trunk.svg +1 -0
  32. package/dist/assets/dragon-dragon-2-trunk.thick.svg +1 -0
  33. package/dist/assets/dragon-dragon-2.glb +0 -0
  34. package/dist/assets/dragon-dragon-2.painted.svg +1 -0
  35. package/dist/assets/dragon-dragon-2.svg +1 -0
  36. package/dist/assets/dragon-dragon-2.thick.svg +1 -0
  37. package/dist/assets/falcon-9-block-5-apart.painted.svg +1 -0
  38. package/dist/assets/falcon-9-block-5-apart.svg +1 -0
  39. package/dist/assets/falcon-9-block-5-apart.thick.svg +1 -0
  40. package/dist/assets/falcon-9-block-5-dragon-2-apart.painted.svg +1 -0
  41. package/dist/assets/falcon-9-block-5-dragon-2-apart.svg +1 -0
  42. package/dist/assets/falcon-9-block-5-dragon-2-apart.thick.svg +1 -0
  43. package/dist/assets/falcon-9-block-5-dragon-2-capsule.glb +0 -0
  44. package/dist/assets/falcon-9-block-5-dragon-2-capsule.painted.svg +1 -0
  45. package/dist/assets/falcon-9-block-5-dragon-2-capsule.svg +1 -0
  46. package/dist/assets/falcon-9-block-5-dragon-2-capsule.thick.svg +1 -0
  47. package/dist/assets/falcon-9-block-5-dragon-2-first-stage.glb +0 -0
  48. package/dist/assets/falcon-9-block-5-dragon-2-first-stage.painted.svg +1 -0
  49. package/dist/assets/falcon-9-block-5-dragon-2-first-stage.svg +1 -0
  50. package/dist/assets/falcon-9-block-5-dragon-2-first-stage.thick.svg +1 -0
  51. package/dist/assets/falcon-9-block-5-dragon-2-second-stage.glb +0 -0
  52. package/dist/assets/falcon-9-block-5-dragon-2-second-stage.painted.svg +1 -0
  53. package/dist/assets/falcon-9-block-5-dragon-2-second-stage.svg +1 -0
  54. package/dist/assets/falcon-9-block-5-dragon-2-second-stage.thick.svg +1 -0
  55. package/dist/assets/falcon-9-block-5-dragon-2-trunk.glb +0 -0
  56. package/dist/assets/falcon-9-block-5-dragon-2-trunk.painted.svg +1 -0
  57. package/dist/assets/falcon-9-block-5-dragon-2-trunk.svg +1 -0
  58. package/dist/assets/falcon-9-block-5-dragon-2-trunk.thick.svg +1 -0
  59. package/dist/assets/falcon-9-block-5-dragon-2.glb +0 -0
  60. package/dist/assets/falcon-9-block-5-dragon-2.painted.svg +1 -0
  61. package/dist/assets/falcon-9-block-5-dragon-2.svg +1 -0
  62. package/dist/assets/falcon-9-block-5-dragon-2.thick.svg +1 -0
  63. package/dist/assets/falcon-9-block-5-fairing.glb +0 -0
  64. package/dist/assets/falcon-9-block-5-fairing.painted.svg +1 -0
  65. package/dist/assets/falcon-9-block-5-fairing.svg +1 -0
  66. package/dist/assets/falcon-9-block-5-fairing.thick.svg +1 -0
  67. package/dist/assets/falcon-9-block-5-first-stage.glb +0 -0
  68. package/dist/assets/falcon-9-block-5-first-stage.painted.svg +1 -0
  69. package/dist/assets/falcon-9-block-5-first-stage.svg +1 -0
  70. package/dist/assets/falcon-9-block-5-first-stage.thick.svg +1 -0
  71. package/dist/assets/falcon-9-block-5-second-stage.glb +0 -0
  72. package/dist/assets/falcon-9-block-5-second-stage.painted.svg +1 -0
  73. package/dist/assets/falcon-9-block-5-second-stage.svg +1 -0
  74. package/dist/assets/falcon-9-block-5-second-stage.thick.svg +1 -0
  75. package/dist/assets/falcon-9-block-5.glb +0 -0
  76. package/dist/assets/falcon-9-block-5.painted.svg +1 -0
  77. package/dist/assets/falcon-9-block-5.svg +1 -0
  78. package/dist/assets/falcon-9-block-5.thick.svg +1 -0
  79. package/dist/assets/falcon-9-ft-apart.painted.svg +1 -0
  80. package/dist/assets/falcon-9-ft-apart.svg +1 -0
  81. package/dist/assets/falcon-9-ft-apart.thick.svg +1 -0
  82. package/dist/assets/falcon-9-ft-fairing.glb +0 -0
  83. package/dist/assets/falcon-9-ft-fairing.painted.svg +1 -0
  84. package/dist/assets/falcon-9-ft-fairing.svg +1 -0
  85. package/dist/assets/falcon-9-ft-fairing.thick.svg +1 -0
  86. package/dist/assets/falcon-9-ft-first-stage.glb +0 -0
  87. package/dist/assets/falcon-9-ft-first-stage.painted.svg +1 -0
  88. package/dist/assets/falcon-9-ft-first-stage.svg +1 -0
  89. package/dist/assets/falcon-9-ft-first-stage.thick.svg +1 -0
  90. package/dist/assets/falcon-9-ft-second-stage.glb +0 -0
  91. package/dist/assets/falcon-9-ft-second-stage.painted.svg +1 -0
  92. package/dist/assets/falcon-9-ft-second-stage.svg +1 -0
  93. package/dist/assets/falcon-9-ft-second-stage.thick.svg +1 -0
  94. package/dist/assets/falcon-9-ft.glb +0 -0
  95. package/dist/assets/falcon-9-ft.painted.svg +1 -0
  96. package/dist/assets/falcon-9-ft.svg +1 -0
  97. package/dist/assets/falcon-9-ft.thick.svg +1 -0
  98. package/dist/assets/falcon-9-v1.0-apart.painted.svg +1 -0
  99. package/dist/assets/falcon-9-v1.0-apart.svg +1 -0
  100. package/dist/assets/falcon-9-v1.0-apart.thick.svg +1 -0
  101. package/dist/assets/falcon-9-v1.0-fairing.glb +0 -0
  102. package/dist/assets/falcon-9-v1.0-fairing.painted.svg +1 -0
  103. package/dist/assets/falcon-9-v1.0-fairing.svg +1 -0
  104. package/dist/assets/falcon-9-v1.0-fairing.thick.svg +1 -0
  105. package/dist/assets/falcon-9-v1.0-first-stage.glb +0 -0
  106. package/dist/assets/falcon-9-v1.0-first-stage.painted.svg +1 -0
  107. package/dist/assets/falcon-9-v1.0-first-stage.svg +1 -0
  108. package/dist/assets/falcon-9-v1.0-first-stage.thick.svg +1 -0
  109. package/dist/assets/falcon-9-v1.0-second-stage.glb +0 -0
  110. package/dist/assets/falcon-9-v1.0-second-stage.painted.svg +1 -0
  111. package/dist/assets/falcon-9-v1.0-second-stage.svg +1 -0
  112. package/dist/assets/falcon-9-v1.0-second-stage.thick.svg +1 -0
  113. package/dist/assets/falcon-9-v1.0.glb +0 -0
  114. package/dist/assets/falcon-9-v1.0.painted.svg +1 -0
  115. package/dist/assets/falcon-9-v1.0.svg +1 -0
  116. package/dist/assets/falcon-9-v1.0.thick.svg +1 -0
  117. package/dist/assets/falcon-9-v1.1-apart.painted.svg +1 -0
  118. package/dist/assets/falcon-9-v1.1-apart.svg +1 -0
  119. package/dist/assets/falcon-9-v1.1-apart.thick.svg +1 -0
  120. package/dist/assets/falcon-9-v1.1-fairing.glb +0 -0
  121. package/dist/assets/falcon-9-v1.1-fairing.painted.svg +1 -0
  122. package/dist/assets/falcon-9-v1.1-fairing.svg +1 -0
  123. package/dist/assets/falcon-9-v1.1-fairing.thick.svg +1 -0
  124. package/dist/assets/falcon-9-v1.1-first-stage.glb +0 -0
  125. package/dist/assets/falcon-9-v1.1-first-stage.painted.svg +1 -0
  126. package/dist/assets/falcon-9-v1.1-first-stage.svg +1 -0
  127. package/dist/assets/falcon-9-v1.1-first-stage.thick.svg +1 -0
  128. package/dist/assets/falcon-9-v1.1-second-stage.glb +0 -0
  129. package/dist/assets/falcon-9-v1.1-second-stage.painted.svg +1 -0
  130. package/dist/assets/falcon-9-v1.1-second-stage.svg +1 -0
  131. package/dist/assets/falcon-9-v1.1-second-stage.thick.svg +1 -0
  132. package/dist/assets/falcon-9-v1.1.glb +0 -0
  133. package/dist/assets/falcon-9-v1.1.painted.svg +1 -0
  134. package/dist/assets/falcon-9-v1.1.svg +1 -0
  135. package/dist/assets/falcon-9-v1.1.thick.svg +1 -0
  136. package/dist/assets/falcon-heavy-falcon-heavy-apart.painted.svg +1 -0
  137. package/dist/assets/falcon-heavy-falcon-heavy-apart.svg +1 -0
  138. package/dist/assets/falcon-heavy-falcon-heavy-apart.thick.svg +1 -0
  139. package/dist/assets/falcon-heavy-falcon-heavy-centre.glb +0 -0
  140. package/dist/assets/falcon-heavy-falcon-heavy-centre.painted.svg +1 -0
  141. package/dist/assets/falcon-heavy-falcon-heavy-centre.svg +1 -0
  142. package/dist/assets/falcon-heavy-falcon-heavy-centre.thick.svg +1 -0
  143. package/dist/assets/falcon-heavy-falcon-heavy-side-left.glb +0 -0
  144. package/dist/assets/falcon-heavy-falcon-heavy-side-left.painted.svg +1 -0
  145. package/dist/assets/falcon-heavy-falcon-heavy-side-left.svg +1 -0
  146. package/dist/assets/falcon-heavy-falcon-heavy-side-left.thick.svg +1 -0
  147. package/dist/assets/falcon-heavy-falcon-heavy-side-right.glb +0 -0
  148. package/dist/assets/falcon-heavy-falcon-heavy-side-right.painted.svg +1 -0
  149. package/dist/assets/falcon-heavy-falcon-heavy-side-right.svg +1 -0
  150. package/dist/assets/falcon-heavy-falcon-heavy-side-right.thick.svg +1 -0
  151. package/dist/assets/falcon-heavy-falcon-heavy.glb +0 -0
  152. package/dist/assets/falcon-heavy-falcon-heavy.painted.svg +1 -0
  153. package/dist/assets/falcon-heavy-falcon-heavy.svg +1 -0
  154. package/dist/assets/falcon-heavy-falcon-heavy.thick.svg +1 -0
  155. package/dist/assets/grasshopper-grasshopper.glb +0 -0
  156. package/dist/assets/grasshopper-grasshopper.painted.svg +1 -0
  157. package/dist/assets/grasshopper-grasshopper.svg +1 -0
  158. package/dist/assets/grasshopper-grasshopper.thick.svg +1 -0
  159. package/dist/assets/models/dragon-dragon-1-capsule.glb +0 -0
  160. package/dist/assets/models/dragon-dragon-1-trunk.glb +0 -0
  161. package/dist/assets/models/dragon-dragon-2-capsule.glb +0 -0
  162. package/dist/assets/models/dragon-dragon-2-trunk.glb +0 -0
  163. package/dist/assets/models/falcon-9-block-5-fairing.glb +0 -0
  164. package/dist/assets/models/falcon-9-block-5-first-stage.glb +0 -0
  165. package/dist/assets/models/falcon-9-block-5-second-stage.glb +0 -0
  166. package/dist/assets/models/falcon-heavy-falcon-heavy-centre.glb +0 -0
  167. package/dist/assets/models/falcon-heavy-falcon-heavy-side-left.glb +0 -0
  168. package/dist/assets/models/falcon-heavy-falcon-heavy-side-right.glb +0 -0
  169. package/dist/assets/models/grasshopper-grasshopper-vehicle.glb +0 -0
  170. package/dist/assets/models/starship-2019-ship.glb +0 -0
  171. package/dist/assets/models/starship-v1-flight1-booster.glb +0 -0
  172. package/dist/assets/models/starship-v1-flight1-ship.glb +0 -0
  173. package/dist/assets/models/starship-v3-booster.glb +0 -0
  174. package/dist/assets/models/starship-v3-ship.glb +0 -0
  175. package/dist/assets/parts/flap-aft.glb +0 -0
  176. package/dist/assets/parts/flap-aft.painted.svg +1 -0
  177. package/dist/assets/parts/flap-aft.svg +1 -0
  178. package/dist/assets/parts/flap-aft.thick.svg +1 -0
  179. package/dist/assets/parts/flap-forward.glb +0 -0
  180. package/dist/assets/parts/flap-forward.painted.svg +1 -0
  181. package/dist/assets/parts/flap-forward.svg +1 -0
  182. package/dist/assets/parts/flap-forward.thick.svg +1 -0
  183. package/dist/assets/parts/grid-fin-four.glb +0 -0
  184. package/dist/assets/parts/grid-fin-four.painted.svg +1 -0
  185. package/dist/assets/parts/grid-fin-four.svg +1 -0
  186. package/dist/assets/parts/grid-fin-four.thick.svg +1 -0
  187. package/dist/assets/parts/grid-fin-three.glb +0 -0
  188. package/dist/assets/parts/grid-fin-three.painted.svg +1 -0
  189. package/dist/assets/parts/grid-fin-three.svg +1 -0
  190. package/dist/assets/parts/grid-fin-three.thick.svg +1 -0
  191. package/dist/assets/parts/merlin-sea-level.glb +0 -0
  192. package/dist/assets/parts/merlin-sea-level.painted.svg +1 -0
  193. package/dist/assets/parts/merlin-sea-level.svg +1 -0
  194. package/dist/assets/parts/merlin-sea-level.thick.svg +1 -0
  195. package/dist/assets/parts/raptor-sea-level.glb +0 -0
  196. package/dist/assets/parts/raptor-sea-level.painted.svg +1 -0
  197. package/dist/assets/parts/raptor-sea-level.svg +1 -0
  198. package/dist/assets/parts/raptor-sea-level.thick.svg +1 -0
  199. package/dist/assets/parts/raptor-vacuum.glb +0 -0
  200. package/dist/assets/parts/raptor-vacuum.painted.svg +1 -0
  201. package/dist/assets/parts/raptor-vacuum.svg +1 -0
  202. package/dist/assets/parts/raptor-vacuum.thick.svg +1 -0
  203. package/dist/assets/starship-2019.glb +0 -0
  204. package/dist/assets/starship-2019.painted.svg +1 -0
  205. package/dist/assets/starship-2019.svg +1 -0
  206. package/dist/assets/starship-2019.thick.svg +1 -0
  207. package/dist/assets/starship-v1-apart.painted.svg +1 -0
  208. package/dist/assets/starship-v1-apart.svg +1 -0
  209. package/dist/assets/starship-v1-apart.thick.svg +1 -0
  210. package/dist/assets/starship-v1-booster.glb +0 -0
  211. package/dist/assets/starship-v1-booster.painted.svg +1 -0
  212. package/dist/assets/starship-v1-booster.svg +1 -0
  213. package/dist/assets/starship-v1-booster.thick.svg +1 -0
  214. package/dist/assets/starship-v1-flight1-apart.painted.svg +1 -0
  215. package/dist/assets/starship-v1-flight1-apart.svg +1 -0
  216. package/dist/assets/starship-v1-flight1-apart.thick.svg +1 -0
  217. package/dist/assets/starship-v1-flight1-booster.glb +0 -0
  218. package/dist/assets/starship-v1-flight1-booster.painted.svg +1 -0
  219. package/dist/assets/starship-v1-flight1-booster.svg +1 -0
  220. package/dist/assets/starship-v1-flight1-booster.thick.svg +1 -0
  221. package/dist/assets/starship-v1-flight1-ship.glb +0 -0
  222. package/dist/assets/starship-v1-flight1-ship.painted.svg +1 -0
  223. package/dist/assets/starship-v1-flight1-ship.svg +1 -0
  224. package/dist/assets/starship-v1-flight1-ship.thick.svg +1 -0
  225. package/dist/assets/starship-v1-flight1.glb +0 -0
  226. package/dist/assets/starship-v1-flight1.painted.svg +1 -0
  227. package/dist/assets/starship-v1-flight1.svg +1 -0
  228. package/dist/assets/starship-v1-flight1.thick.svg +1 -0
  229. package/dist/assets/starship-v1-ship.glb +0 -0
  230. package/dist/assets/starship-v1-ship.painted.svg +1 -0
  231. package/dist/assets/starship-v1-ship.svg +1 -0
  232. package/dist/assets/starship-v1-ship.thick.svg +1 -0
  233. package/dist/assets/starship-v1.glb +0 -0
  234. package/dist/assets/starship-v1.painted.svg +1 -0
  235. package/dist/assets/starship-v1.svg +1 -0
  236. package/dist/assets/starship-v1.thick.svg +1 -0
  237. package/dist/assets/starship-v2-apart.painted.svg +1 -0
  238. package/dist/assets/starship-v2-apart.svg +1 -0
  239. package/dist/assets/starship-v2-apart.thick.svg +1 -0
  240. package/dist/assets/starship-v2-booster.glb +0 -0
  241. package/dist/assets/starship-v2-booster.painted.svg +1 -0
  242. package/dist/assets/starship-v2-booster.svg +1 -0
  243. package/dist/assets/starship-v2-booster.thick.svg +1 -0
  244. package/dist/assets/starship-v2-ship.glb +0 -0
  245. package/dist/assets/starship-v2-ship.painted.svg +1 -0
  246. package/dist/assets/starship-v2-ship.svg +1 -0
  247. package/dist/assets/starship-v2-ship.thick.svg +1 -0
  248. package/dist/assets/starship-v2.glb +0 -0
  249. package/dist/assets/starship-v2.painted.svg +1 -0
  250. package/dist/assets/starship-v2.svg +1 -0
  251. package/dist/assets/starship-v2.thick.svg +1 -0
  252. package/dist/assets/starship-v3-apart.painted.svg +1 -0
  253. package/dist/assets/starship-v3-apart.svg +1 -0
  254. package/dist/assets/starship-v3-apart.thick.svg +1 -0
  255. package/dist/assets/starship-v3-booster.glb +0 -0
  256. package/dist/assets/starship-v3-booster.painted.svg +1 -0
  257. package/dist/assets/starship-v3-booster.svg +1 -0
  258. package/dist/assets/starship-v3-booster.thick.svg +1 -0
  259. package/dist/assets/starship-v3-ship.glb +0 -0
  260. package/dist/assets/starship-v3-ship.painted.svg +1 -0
  261. package/dist/assets/starship-v3-ship.svg +1 -0
  262. package/dist/assets/starship-v3-ship.thick.svg +1 -0
  263. package/dist/assets/starship-v3.glb +0 -0
  264. package/dist/assets/starship-v3.painted.svg +1 -0
  265. package/dist/assets/starship-v3.svg +1 -0
  266. package/dist/assets/starship-v3.thick.svg +1 -0
  267. package/dist/assets/starship-v4-apart.painted.svg +1 -0
  268. package/dist/assets/starship-v4-apart.svg +1 -0
  269. package/dist/assets/starship-v4-apart.thick.svg +1 -0
  270. package/dist/assets/starship-v4-booster.glb +0 -0
  271. package/dist/assets/starship-v4-booster.painted.svg +1 -0
  272. package/dist/assets/starship-v4-booster.svg +1 -0
  273. package/dist/assets/starship-v4-booster.thick.svg +1 -0
  274. package/dist/assets/starship-v4-ship.glb +0 -0
  275. package/dist/assets/starship-v4-ship.painted.svg +1 -0
  276. package/dist/assets/starship-v4-ship.svg +1 -0
  277. package/dist/assets/starship-v4-ship.thick.svg +1 -0
  278. package/dist/assets/starship-v4.glb +0 -0
  279. package/dist/assets/starship-v4.painted.svg +1 -0
  280. package/dist/assets/starship-v4.svg +1 -0
  281. package/dist/assets/starship-v4.thick.svg +1 -0
  282. package/dist/build/glb.d.ts +12 -0
  283. package/dist/build/glb.js +157 -0
  284. package/dist/build/index.d.ts +59 -0
  285. package/dist/build/index.js +118 -0
  286. package/dist/build/lineup.d.ts +40 -0
  287. package/dist/build/lineup.js +97 -0
  288. package/dist/crossfade.d.ts +6 -0
  289. package/dist/crossfade.js +11 -0
  290. package/dist/data/credits.d.ts +87 -0
  291. package/dist/data/credits.js +82 -0
  292. package/dist/data/dragon.d.ts +2 -0
  293. package/dist/data/dragon.js +45 -0
  294. package/dist/data/falcon.d.ts +5 -0
  295. package/dist/data/falcon.js +123 -0
  296. package/dist/data/grasshopper.d.ts +2 -0
  297. package/dist/data/grasshopper.js +21 -0
  298. package/dist/data/sources.d.ts +181 -0
  299. package/dist/data/sources.js +26 -0
  300. package/dist/data/starship.d.ts +2 -0
  301. package/dist/data/starship.js +183 -0
  302. package/dist/data/types.d.ts +48 -0
  303. package/dist/data/types.js +8 -0
  304. package/dist/draw/svg.d.ts +26 -0
  305. package/dist/draw/svg.js +262 -0
  306. package/dist/element/paint.d.ts +9 -0
  307. package/dist/element/paint.js +138 -0
  308. package/dist/element/scene.d.ts +118 -0
  309. package/dist/element/scene.js +861 -0
  310. package/dist/element.d.ts +80 -0
  311. package/dist/element.js +526 -0
  312. package/dist/fit.d.ts +43 -0
  313. package/dist/fit.js +93 -0
  314. package/dist/framing.d.ts +42 -0
  315. package/dist/framing.js +56 -0
  316. package/dist/index.d.ts +23 -0
  317. package/dist/index.js +13 -0
  318. package/dist/layout.d.ts +17 -0
  319. package/dist/layout.js +33 -0
  320. package/dist/looks.d.ts +25 -0
  321. package/dist/looks.js +36 -0
  322. package/dist/model/falcon.d.ts +49 -0
  323. package/dist/model/falcon.js +208 -0
  324. package/dist/model/materials.d.ts +113 -0
  325. package/dist/model/materials.js +19 -0
  326. package/dist/model/pieces.d.ts +91 -0
  327. package/dist/model/pieces.js +223 -0
  328. package/dist/model/registry.d.ts +8 -0
  329. package/dist/model/registry.js +104 -0
  330. package/dist/model/starship.d.ts +67 -0
  331. package/dist/model/starship.js +503 -0
  332. package/dist/parts.d.ts +45 -0
  333. package/dist/parts.js +1 -0
  334. package/dist/react.d.ts +314 -0
  335. package/dist/react.js +8 -0
  336. package/dist/rockets.d.ts +27 -0
  337. package/dist/rockets.js +36 -0
  338. package/dist/tilt.d.ts +21 -0
  339. package/dist/tilt.js +23 -0
  340. package/package.json +66 -4
@@ -0,0 +1,82 @@
1
+ // Whose models the painted parts are made from. Each is under Creative Commons Attribution 4.0, and each assembled rocket's credits are generated from these rows, so an author is credited exactly for
2
+ // what is used. The package's code is MIT; these assets are not: see NOTICE.md.
3
+ const LICENCE_URL = "https://creativecommons.org/licenses/by/4.0/";
4
+ export const MODEL_CREDITS = {
5
+ "clarence365-block3": {
6
+ title: "SpaceX Starship Block 3",
7
+ creator: "Clarence365",
8
+ creatorUrl: "https://sketchfab.com/clarence365",
9
+ sourceUrl: "https://sketchfab.com/3d-models/spacex-starship-block-3-6f6c6f88a3eb4b4d822fdca66733fbb2",
10
+ licence: "CC BY 4.0",
11
+ licenceUrl: LICENCE_URL,
12
+ changes: "Reduced from 913,217 triangles; logos, wordmark and serial number removed; rescaled to sourced sizes; separated into booster and ship; unseen payload bay interior removed; materials merged and renamed.",
13
+ },
14
+ "clarence365-s24b7": {
15
+ title: "Spacex Starship Ship 24 & Booster 7 V4",
16
+ creator: "clarence365",
17
+ creatorUrl: "https://sketchfab.com/clarence365",
18
+ sourceUrl: "https://sketchfab.com/3d-models/spacex-starship-ship-24-booster-7-v4-97875d14b63e4b9ca9ed425ef4253306",
19
+ licence: "CC BY 4.0",
20
+ licenceUrl: LICENCE_URL,
21
+ changes: "Reduced from 870,993 triangles; logo, serial number and engine decals removed; rescaled to sourced sizes; separated into booster and ship; unseen payload bay interior removed; materials merged and renamed.",
22
+ },
23
+ "martiandays-2019": {
24
+ title: "SpaceX Starship",
25
+ creator: "MartianDays",
26
+ creatorUrl: "https://sketchfab.com/MartianDays",
27
+ sourceUrl: "https://sketchfab.com/3d-models/spacex-starship-a8a0b69f776841a1a465cd9fb3762fd2",
28
+ licence: "CC BY 4.0",
29
+ licenceUrl: LICENCE_URL,
30
+ changes: "Rescaled to the sourced height; turned to this package's axes; material renamed. Its triangles and images are otherwise unchanged.",
31
+ },
32
+ "stanley-falcon-9": {
33
+ title: "Falcon 9 - SpaceX",
34
+ creator: "Stanley Creative",
35
+ creatorUrl: "https://sketchfab.com/Stanley_Creative",
36
+ sourceUrl: "https://sketchfab.com/3d-models/falcon-9-spacex-394f7cf52d124bbd9db69f24d1ff2f08",
37
+ licence: "CC BY 4.0",
38
+ licenceUrl: LICENCE_URL,
39
+ changes: "Reduced from 157,889 triangles; the wordmark, logos, flags and mission marks removed with the two textures that carried them; rescaled to sourced sizes; separated into first stage, second stage and fairing; materials merged and renamed.",
40
+ },
41
+ "kubaha-dragon-2": {
42
+ title: "SpaceX - Dragon 2",
43
+ creator: "KUBAHA",
44
+ creatorUrl: "https://sketchfab.com/KUBAHA",
45
+ sourceUrl: "https://sketchfab.com/3d-models/spacex-dragon-2-1b125e30a2cb442288580290536fbe5d",
46
+ licence: "CC BY 4.0",
47
+ licenceUrl: LICENCE_URL,
48
+ changes: "Reduced from 42,974 triangles; rescaled to sourced sizes; separated into capsule and trunk; materials merged and renamed.",
49
+ },
50
+ "progressth-dragon-1": {
51
+ title: "SpaceX Cargo Dragon",
52
+ creator: "ProgressTH",
53
+ creatorUrl: "https://sketchfab.com/ProgressTH",
54
+ sourceUrl: "https://sketchfab.com/3d-models/spacex-cargo-dragon-0ca8951e47b343dc8a41e23b3e9c55e5",
55
+ licence: "CC BY 4.0",
56
+ licenceUrl: LICENCE_URL,
57
+ changes: "Merged from 414 meshes; the logo decal and the hidden pressure vessel removed; rescaled to sourced sizes; stood upright; separated into capsule and trunk; materials merged and renamed.",
58
+ },
59
+ "antonio-falcon-heavy": {
60
+ title: "SpaceX Falcon Heavy(Low Poly)",
61
+ creator: "Antonio_Adams",
62
+ creatorUrl: "https://sketchfab.com/AAdams3112",
63
+ sourceUrl: "https://sketchfab.com/3d-models/spacex-falcon-heavylow-poly-0dc068a462e34258b3872085a7f592c8",
64
+ licence: "CC BY 4.0",
65
+ licenceUrl: LICENCE_URL,
66
+ changes: "The wordmark and logos painted out of its colour, roughness and normal maps, which were also resized; rescaled to sourced sizes; separated into its centre core and two side boosters by its own connected pieces.",
67
+ },
68
+ "echo3-grasshopper": {
69
+ title: "SpaceX Grasshopper",
70
+ creator: "Echo_3",
71
+ creatorUrl: "https://sketchfab.com/Echo_3",
72
+ sourceUrl: "https://sketchfab.com/3d-models/spacex-grasshopper-35c07a68cdb246c59bb425610b934bf8",
73
+ licence: "CC BY 4.0",
74
+ licenceUrl: LICENCE_URL,
75
+ changes: "The wordmark and logo removed with the texture that carried them; rescaled to the sourced height; reduced from 55,455 triangles; materials merged and renamed.",
76
+ },
77
+ };
78
+ /** One credit as a line of text. */
79
+ export function creditLine(id) {
80
+ const c = MODEL_CREDITS[id];
81
+ return `"${c.title}" by ${c.creator} (${c.sourceUrl}), ${c.licence} (${c.licenceUrl}). ${c.changes}`;
82
+ }
@@ -0,0 +1,2 @@
1
+ import { type Variant } from "./types.ts";
2
+ export declare const DRAGON_VARIANTS: readonly Variant[];
@@ -0,0 +1,45 @@
1
+ // Dragon as the sources give it. Dragon 1 and Dragon 2 are different spacecraft, not sizes of one.
2
+ import { blank } from "./types.js";
3
+ const D1 = "wikipedia-dragon-1";
4
+ const D2 = "wikipedia-dragon-2";
5
+ const m = (value, source, extra = {}) => ({ value, source, ...extra });
6
+ const said = (value, source, extra = {}) => ({ value, source, ...extra });
7
+ export const DRAGON_VARIANTS = [
8
+ {
9
+ id: "dragon-1",
10
+ rocket: "dragon",
11
+ name: "Dragon 1 (cargo, with solar wings)",
12
+ status: "flown",
13
+ firstFlight: said("2010-12-08", D1, { note: "COTS Demo Flight 1, its first orbital flight." }),
14
+ slots: ["trunk", "capsule"],
15
+ note: "The original cargo Dragon, with two solar arrays on its trunk: not the later Cargo Dragon 2. Its solar wings' span is not given by the source read here, so they are drawn from the model.",
16
+ facts: {
17
+ height: m(6.1, D1),
18
+ diameter: m(3.7, D1),
19
+ parts: {
20
+ trunk: m(2.3, D1, { note: "Aft of the heat shield. An optional extension made 4.3 m in all." }),
21
+ capsule: blank("No source read here gives the capsule alone."),
22
+ },
23
+ engines: { capsule: said("18 Draco thrusters", D1) },
24
+ more: {},
25
+ },
26
+ },
27
+ {
28
+ id: "dragon-2",
29
+ rocket: "dragon",
30
+ name: "Dragon 2 (Crew Dragon)",
31
+ status: "flown",
32
+ firstFlight: said("2019-03-02", D2, { note: "Uncrewed test flight. First crewed flight 2020-05-30; Cargo Dragon first flew 2020-12-06." }),
33
+ slots: ["trunk", "capsule"],
34
+ facts: {
35
+ height: m(8.1, D2, { note: "Capsule with trunk." }),
36
+ diameter: m(4, D2),
37
+ parts: {
38
+ trunk: blank("No source read here gives the trunk alone."),
39
+ capsule: m(4.5, D2),
40
+ },
41
+ engines: { capsule: said("16 Draco and 8 SuperDraco thrusters", D2) },
42
+ more: {},
43
+ },
44
+ },
45
+ ];
@@ -0,0 +1,5 @@
1
+ import { type Figure, type Variant } from "./types.ts";
2
+ /** How wide the second stage's vacuum engine is at the end of its nozzle extension. */
3
+ export declare const MVAC_EXIT_DIAMETER: Figure<number>;
4
+ export declare const FALCON_9_VARIANTS: readonly Variant[];
5
+ export declare const FALCON_HEAVY_VARIANTS: readonly Variant[];
@@ -0,0 +1,123 @@
1
+ // Falcon 9 and Falcon Heavy as the sources give them. r/SpaceX's SpaceX-API (Apache-2.0, archived in 2024) has one row per rocket, not per version, read from its repository's docs. A blank stays blank.
2
+ import { blank } from "./types.js";
3
+ const F9 = "wikipedia-falcon-9";
4
+ const FH = "wikipedia-falcon-heavy";
5
+ const B5 = "wikipedia-falcon-9-block-5";
6
+ const API = "r-spacex";
7
+ const m = (value, source, extra = {}) => ({ value, source, ...extra });
8
+ const said = (value, source, extra = {}) => ({ value, source, ...extra });
9
+ const num = (value, source, extra = {}) => ({ value, source, ...extra });
10
+ const FAIRING_NOTE = "The article's height is measured to the top of the payload fairing.";
11
+ const FIRST_STAGE_WITH_INTERSTAGE = m(47.7, F9, { note: "With the interstage. The stage alone is 41.2 m." });
12
+ const SECOND_STAGE = m(13.8, F9);
13
+ const FAIRING = m(13.1, API, { note: "SpaceX-API's Falcon 9 row, which gives one row for every version, 5.2 m across.", others: [{ value: 13, source: F9, note: "The Falcon 9 article rounds: 13 m long and 5.2 m in diameter." }] });
14
+ /** How wide the second stage's vacuum engine is at the end of its nozzle extension. */
15
+ export const MVAC_EXIT_DIAMETER = m(3.3, "wikipedia-merlin", { note: "The vacuum Merlin 1D's diameter in the infobox (0.92 m at sea level). The same article says the first Merlin Vacuum's niobium nozzle was 9 ft (about 2.7 m) long, and that a shorter extension flew from the Transporter-7 mission." });
16
+ export const FALCON_9_VARIANTS = [
17
+ {
18
+ id: "v1.0",
19
+ rocket: "falcon-9",
20
+ name: "Falcon 9 v1.0",
21
+ status: "flown",
22
+ firstFlight: said("2010-06-04", F9, { note: "The Dragon qualification flight." }),
23
+ slots: ["first-stage", "second-stage", "fairing"],
24
+ note: "Its nine Merlin 1C engines stood in a 3 by 3 grid. Stated with a fairing, though its height with Dragon 1 was 47.8 m. No source read here gives its parts with the interstage, so they are drawn in proportion to the whole.",
25
+ facts: {
26
+ height: m(54.9, F9, { note: FAIRING_NOTE, others: [{ value: 53, source: F9, note: "The same article's table of versions says 53 m; its infobox, with a note on how it is measured, says 54.9 m." }] }),
27
+ diameter: m(3.7, F9),
28
+ parts: {
29
+ "first-stage": m(39.6, F9, { brief: "the stage alone, without its interstage" }),
30
+ "second-stage": blank("No source read here gives it for this version."),
31
+ fairing: blank("No source read here gives it for this version."),
32
+ },
33
+ engines: { "first-stage": said("9 Merlin 1C, in a 3 by 3 grid", F9), "second-stage": said("1 Merlin 1C Vacuum", F9) },
34
+ more: { landingLegs: blank("It had none on the sources read here.", "None shown") },
35
+ },
36
+ },
37
+ {
38
+ id: "v1.1",
39
+ rocket: "falcon-9",
40
+ name: "Falcon 9 v1.1",
41
+ status: "flown",
42
+ firstFlight: said("2013-09-29", F9, { note: "CASSIOPE." }),
43
+ slots: ["first-stage", "second-stage", "fairing"],
44
+ note: "Its height with Dragon 1 was 63.4 m. No source read here gives its parts with the interstage, so they are drawn in proportion to the whole.",
45
+ facts: {
46
+ height: m(68.4, F9, { note: FAIRING_NOTE }),
47
+ diameter: m(3.7, F9),
48
+ parts: {
49
+ "first-stage": m(41.2, F9, { brief: "the stage alone, without its interstage" }),
50
+ "second-stage": blank("No source read here gives it for this version."),
51
+ fairing: blank("No source read here gives it for this version."),
52
+ },
53
+ engines: { "first-stage": said("9 Merlin 1D", F9), "second-stage": said("1 Merlin 1D Vacuum", F9) },
54
+ more: {},
55
+ },
56
+ },
57
+ {
58
+ id: "ft",
59
+ rocket: "falcon-9",
60
+ name: "Falcon 9 Full Thrust",
61
+ status: "flown",
62
+ firstFlight: said("2015-12-22", F9, { note: "OG2 Flight 2." }),
63
+ slots: ["first-stage", "second-stage", "fairing"],
64
+ note: "Blocks 3 and 4 are part of Full Thrust; Block 4 first flew on 2017-08-14, and no source read here gives it sizes of its own. So it is not listed apart.",
65
+ facts: {
66
+ height: m(69.8, F9, { note: FAIRING_NOTE, others: [{ value: 70, source: F9, note: "The same article's table of versions rounds to 70 m." }] }),
67
+ diameter: m(3.7, F9),
68
+ parts: { "first-stage": FIRST_STAGE_WITH_INTERSTAGE, "second-stage": SECOND_STAGE, fairing: FAIRING },
69
+ engines: { "first-stage": said("9 Merlin 1D+", F9), "second-stage": said("1 Merlin 1D Vacuum", F9) },
70
+ more: { landingLegs: num(4, F9) },
71
+ },
72
+ },
73
+ {
74
+ id: "block-5",
75
+ rocket: "falcon-9",
76
+ name: "Falcon 9 Block 5",
77
+ status: "flown",
78
+ firstFlight: said("2018-05-11", F9, { note: "Bangabandhu Satellite-1." }),
79
+ slots: ["first-stage", "second-stage", "fairing"],
80
+ facts: {
81
+ height: m(69.8, B5, { note: "With the payload fairing, from Block 5's own article.", others: [{ value: 70, source: F9, note: "The Falcon 9 article's table of versions rounds to 70 m." }, { value: 70, source: API, note: "SpaceX-API's Falcon 9 row says 70 m, for every version." }] }),
82
+ diameter: m(3.7, B5, { others: [{ value: 3.66, source: F9, note: "The Falcon 9 article's table of versions says 3.66 m; the infoboxes and SpaceX-API say 3.7 m." }] }),
83
+ parts: { "first-stage": FIRST_STAGE_WITH_INTERSTAGE, "second-stage": SECOND_STAGE, fairing: FAIRING },
84
+ engines: { "first-stage": said("9 Merlin 1D, upgraded", F9), "second-stage": said("1 Merlin 1D Vacuum, upgraded", F9) },
85
+ more: { landingLegs: num(4, F9) },
86
+ },
87
+ },
88
+ {
89
+ id: "block-5-dragon-2",
90
+ rocket: "falcon-9",
91
+ name: "Falcon 9 Block 5 with Dragon 2",
92
+ status: "flown",
93
+ firstFlight: said("2019-03-02", "wikipedia-dragon-2", { note: "Crew Dragon's uncrewed test flight." }),
94
+ slots: ["first-stage", "second-stage", "trunk", "capsule"],
95
+ partIds: { "first-stage": "falcon-9-block-5-first-stage", "second-stage": "falcon-9-block-5-second-stage", trunk: "dragon-dragon-2-trunk", capsule: "dragon-dragon-2-capsule" },
96
+ note: "The same parts as Falcon 9 Block 5 and Dragon 2, joined at their joints.",
97
+ facts: {
98
+ height: m(65.7, B5, { brief: "as stated; the parts add to 64.8 m", note: "Block 5's height with Dragon 2. The parts' own figures add to 64.8 m, and it is drawn to them." }),
99
+ diameter: m(3.7, F9),
100
+ parts: { "first-stage": FIRST_STAGE_WITH_INTERSTAGE, "second-stage": SECOND_STAGE, trunk: blank("No source read here gives the trunk alone."), capsule: m(4.5, "wikipedia-dragon-2") },
101
+ engines: { "first-stage": said("9 Merlin 1D, upgraded", F9), "second-stage": said("1 Merlin 1D Vacuum, upgraded", F9), capsule: said("16 Draco and 8 SuperDraco thrusters", "wikipedia-dragon-2") },
102
+ more: {},
103
+ },
104
+ },
105
+ ];
106
+ export const FALCON_HEAVY_VARIANTS = [
107
+ {
108
+ id: "falcon-heavy",
109
+ rocket: "falcon-heavy",
110
+ name: "Falcon Heavy",
111
+ status: "flown",
112
+ firstFlight: said("2018-02-06", FH, { note: "The test flight." }),
113
+ slots: ["centre", "side-left", "side-right"],
114
+ note: "The painted model is one merged mesh. Its side boosters separate by their own connected pieces, and its centre core, upper stage and fairing are one continuous shell, so they stay one part: nothing is cut to fake a separation. Low detail: a low-poly model.",
115
+ facts: {
116
+ height: m(70, FH, { others: [{ value: 70, source: API, note: "SpaceX-API says the same." }] }),
117
+ diameter: m(12.2, FH, { brief: "across the three cores; 3.7 m each" }),
118
+ parts: { centre: m(70, FH), "side-left": blank("No source read here gives a side booster's height."), "side-right": blank("No source read here gives a side booster's height.") },
119
+ engines: { centre: said("9 Merlin 1D, and 1 vacuum Merlin above", FH), "side-left": said("9 Merlin 1D", FH), "side-right": said("9 Merlin 1D", FH) },
120
+ more: { engines: num(27, FH, { note: "On the three cores." }) },
121
+ },
122
+ },
123
+ ];
@@ -0,0 +1,2 @@
1
+ import { type Variant } from "./types.ts";
2
+ export declare const GRASSHOPPER_VARIANTS: readonly Variant[];
@@ -0,0 +1,21 @@
1
+ // Grasshopper: a test vehicle, not an orbital rocket.
2
+ import { blank } from "./types.js";
3
+ const G = "wikipedia-grasshopper";
4
+ export const GRASSHOPPER_VARIANTS = [
5
+ {
6
+ id: "grasshopper",
7
+ rocket: "grasshopper",
8
+ name: "Grasshopper (test vehicle)",
9
+ status: "test-vehicle",
10
+ firstFlight: { value: "2012-09-21", source: G, brief: "a 1.8 m hop", note: "Its last flight, on 2013-10-07, reached 744 m." },
11
+ slots: ["vehicle"],
12
+ note: "An experimental vertical take-off and landing vehicle, built from a Falcon 9 v1.0 first-stage tank. It never flew to orbit. Its fixed legs and frame are drawn from the model, whose maker calls it low-poly.",
13
+ facts: {
14
+ height: { value: 32, source: G },
15
+ diameter: blank("No source read here gives its own diameter."),
16
+ parts: { vehicle: { value: 32, source: G } },
17
+ engines: { vehicle: { value: "1 Merlin 1D", source: G } },
18
+ more: {},
19
+ },
20
+ },
21
+ ];
@@ -0,0 +1,181 @@
1
+ export interface Source {
2
+ title: string;
3
+ publisher: string;
4
+ url: string;
5
+ /** The date on the source, when it has one. */
6
+ date?: string;
7
+ read: "direct" | "search" | "cited";
8
+ licence?: string;
9
+ }
10
+ export declare const SOURCES: {
11
+ readonly "wikipedia-starship": {
12
+ readonly title: "SpaceX Starship (the block table and infobox, read as raw wikitext)";
13
+ readonly publisher: "Wikipedia";
14
+ readonly url: "https://en.wikipedia.org/wiki/SpaceX_Starship";
15
+ readonly date: "2026-10-31";
16
+ readonly read: "direct";
17
+ readonly licence: "CC BY-SA 4.0";
18
+ };
19
+ readonly "wikipedia-super-heavy": {
20
+ readonly title: "SpaceX Super Heavy";
21
+ readonly publisher: "Wikipedia";
22
+ readonly url: "https://en.wikipedia.org/wiki/SpaceX_Super_Heavy";
23
+ readonly date: "2026-10-31";
24
+ readonly read: "direct";
25
+ readonly licence: "CC BY-SA 4.0";
26
+ };
27
+ readonly "wikipedia-ship": {
28
+ readonly title: "SpaceX Starship (spacecraft)";
29
+ readonly publisher: "Wikipedia";
30
+ readonly url: "https://en.wikipedia.org/wiki/SpaceX_Starship_(spacecraft)";
31
+ readonly date: "2026-10-31";
32
+ readonly read: "direct";
33
+ readonly licence: "CC BY-SA 4.0";
34
+ };
35
+ readonly "wikipedia-flight-1": {
36
+ readonly title: "Starship flight test 1";
37
+ readonly publisher: "Wikipedia";
38
+ readonly url: "https://en.wikipedia.org/wiki/Starship_flight_test_1";
39
+ readonly date: "2026-10-31";
40
+ readonly read: "direct";
41
+ readonly licence: "CC BY-SA 4.0";
42
+ };
43
+ readonly "wikipedia-launches": {
44
+ readonly title: "List of Starship launches (dates in UTC)";
45
+ readonly publisher: "Wikipedia";
46
+ readonly url: "https://en.wikipedia.org/wiki/List_of_Starship_launches";
47
+ readonly date: "2026-10-31";
48
+ readonly read: "direct";
49
+ readonly licence: "CC BY-SA 4.0";
50
+ };
51
+ readonly "wikipedia-raptor": {
52
+ readonly title: "SpaceX Raptor";
53
+ readonly publisher: "Wikipedia";
54
+ readonly url: "https://en.wikipedia.org/wiki/SpaceX_Raptor";
55
+ readonly date: "2026-10-31";
56
+ readonly read: "direct";
57
+ readonly licence: "CC BY-SA 4.0";
58
+ };
59
+ readonly "spacex-starship": {
60
+ readonly title: "Starship (vehicle page)";
61
+ readonly publisher: "SpaceX";
62
+ readonly url: "https://new.spacex.com/vehicles/starship";
63
+ readonly date: "2026-10-31";
64
+ readonly read: "search";
65
+ };
66
+ readonly "nsf-block3": {
67
+ readonly title: "The Future of the Starship Program, Block 3 and Mars";
68
+ readonly publisher: "NASASpaceflight";
69
+ readonly url: "https://www.nasaspaceflight.com/2025/05/future-starship-block-3-mars/";
70
+ readonly date: "2025-05-30";
71
+ readonly read: "cited";
72
+ };
73
+ readonly "ars-2024": {
74
+ readonly title: "Elon Musk just gave another Mars speech";
75
+ readonly publisher: "Ars Technica";
76
+ readonly url: "https://arstechnica.com/space/2024/04/elon-musk-just-gave-another-mars-speech-this-time-the-vision-seems-tangible/";
77
+ readonly date: "2024-04-08";
78
+ readonly read: "cited";
79
+ };
80
+ readonly "satnews-v3": {
81
+ readonly title: "SpaceX Debuts Starship V3";
82
+ readonly publisher: "SatNews";
83
+ readonly url: "https://satnews.com/2026/05/14/spacex-debuts-starship-v3-redefining-heavy-lift-launch-capability/";
84
+ readonly date: "2026-05-14";
85
+ readonly read: "direct";
86
+ };
87
+ readonly gunter: {
88
+ readonly title: "Starship (Super Heavy Starship, BFR, Big Falcon Rocket)";
89
+ readonly publisher: "Gunter's Space Page";
90
+ readonly url: "https://space.skyrocket.de/doc_lau/super-heavy-starship.htm";
91
+ readonly date: "2026-10-31";
92
+ readonly read: "direct";
93
+ };
94
+ readonly "newspace-v1-v4": {
95
+ readonly title: "SpaceX Starship from V1 to V4";
96
+ readonly publisher: "New Space Economy";
97
+ readonly url: "https://newspaceeconomy.ca/2026/05/28/spacex-starship-from-v1-to-v4/";
98
+ readonly date: "2026-05-28";
99
+ readonly read: "direct";
100
+ };
101
+ readonly "spacecom-mk1": {
102
+ readonly title: "SpaceX Finishes Assembling New Starship Prototype";
103
+ readonly publisher: "Space.com";
104
+ readonly url: "https://www.space.com/spacex-assembles-starship-mk1-photo.html";
105
+ readonly date: "2019-09";
106
+ readonly read: "search";
107
+ };
108
+ readonly "r-spacex": {
109
+ readonly title: "SpaceX-API, docs/rockets/v4: its Falcon 9 row in query.md and its Falcon Heavy row in all.md";
110
+ readonly publisher: "r/SpaceX (Apache-2.0, archived 2024)";
111
+ readonly url: "https://github.com/r-spacex/SpaceX-API/tree/master/docs/rockets/v4";
112
+ readonly date: "2024-08-17";
113
+ readonly read: "direct";
114
+ readonly licence: "Apache-2.0";
115
+ };
116
+ readonly "wikipedia-falcon-1": {
117
+ readonly title: "Falcon 1";
118
+ readonly publisher: "Wikipedia";
119
+ readonly url: "https://en.wikipedia.org/wiki/Falcon_1";
120
+ readonly date: "2026-10-31";
121
+ readonly read: "direct";
122
+ readonly licence: "CC BY-SA 4.0";
123
+ };
124
+ readonly "wikipedia-falcon-9": {
125
+ readonly title: "Falcon 9";
126
+ readonly publisher: "Wikipedia";
127
+ readonly url: "https://en.wikipedia.org/wiki/Falcon_9";
128
+ readonly date: "2026-10-31";
129
+ readonly read: "direct";
130
+ readonly licence: "CC BY-SA 4.0";
131
+ };
132
+ readonly "wikipedia-merlin": {
133
+ readonly title: "SpaceX Merlin (the engine infobox, read as raw wikitext)";
134
+ readonly publisher: "Wikipedia";
135
+ readonly url: "https://en.wikipedia.org/wiki/SpaceX_Merlin";
136
+ readonly date: "2026-11-01";
137
+ readonly read: "direct";
138
+ readonly licence: "CC BY-SA 4.0";
139
+ };
140
+ readonly "wikipedia-dragon-1": {
141
+ readonly title: "SpaceX Dragon 1";
142
+ readonly publisher: "Wikipedia";
143
+ readonly url: "https://en.wikipedia.org/wiki/SpaceX_Dragon_1";
144
+ readonly date: "2026-10-31";
145
+ readonly read: "direct";
146
+ readonly licence: "CC BY-SA 4.0";
147
+ };
148
+ readonly "wikipedia-dragon-2": {
149
+ readonly title: "SpaceX Dragon 2";
150
+ readonly publisher: "Wikipedia";
151
+ readonly url: "https://en.wikipedia.org/wiki/SpaceX_Dragon_2";
152
+ readonly date: "2026-10-31";
153
+ readonly read: "direct";
154
+ readonly licence: "CC BY-SA 4.0";
155
+ };
156
+ readonly "wikipedia-grasshopper": {
157
+ readonly title: "SpaceX Grasshopper";
158
+ readonly publisher: "Wikipedia";
159
+ readonly url: "https://en.wikipedia.org/wiki/SpaceX_Grasshopper";
160
+ readonly date: "2026-10-31";
161
+ readonly read: "direct";
162
+ readonly licence: "CC BY-SA 4.0";
163
+ };
164
+ readonly "wikipedia-falcon-9-block-5": {
165
+ readonly title: "Falcon 9 Block 5";
166
+ readonly publisher: "Wikipedia";
167
+ readonly url: "https://en.wikipedia.org/wiki/Falcon_9_Block_5";
168
+ readonly date: "2026-10-31";
169
+ readonly read: "direct";
170
+ readonly licence: "CC BY-SA 4.0";
171
+ };
172
+ readonly "wikipedia-falcon-heavy": {
173
+ readonly title: "Falcon Heavy";
174
+ readonly publisher: "Wikipedia";
175
+ readonly url: "https://en.wikipedia.org/wiki/Falcon_Heavy";
176
+ readonly date: "2026-10-31";
177
+ readonly read: "direct";
178
+ readonly licence: "CC BY-SA 4.0";
179
+ };
180
+ };
181
+ export type SourceId = keyof typeof SOURCES;
@@ -0,0 +1,26 @@
1
+ // Every source a figure may name. Plain facts are taken from these, and each figure says which one it came from. `read` is how this project read it: "direct" means the page itself, "search" that only
2
+ // a search engine's quote of it could be read, and "cited" that it is known through another source's citation.
3
+ export const SOURCES = {
4
+ "wikipedia-starship": { title: "SpaceX Starship (the block table and infobox, read as raw wikitext)", publisher: "Wikipedia", url: "https://en.wikipedia.org/wiki/SpaceX_Starship", date: "2026-10-31", read: "direct", licence: "CC BY-SA 4.0" },
5
+ "wikipedia-super-heavy": { title: "SpaceX Super Heavy", publisher: "Wikipedia", url: "https://en.wikipedia.org/wiki/SpaceX_Super_Heavy", date: "2026-10-31", read: "direct", licence: "CC BY-SA 4.0" },
6
+ "wikipedia-ship": { title: "SpaceX Starship (spacecraft)", publisher: "Wikipedia", url: "https://en.wikipedia.org/wiki/SpaceX_Starship_(spacecraft)", date: "2026-10-31", read: "direct", licence: "CC BY-SA 4.0" },
7
+ "wikipedia-flight-1": { title: "Starship flight test 1", publisher: "Wikipedia", url: "https://en.wikipedia.org/wiki/Starship_flight_test_1", date: "2026-10-31", read: "direct", licence: "CC BY-SA 4.0" },
8
+ "wikipedia-launches": { title: "List of Starship launches (dates in UTC)", publisher: "Wikipedia", url: "https://en.wikipedia.org/wiki/List_of_Starship_launches", date: "2026-10-31", read: "direct", licence: "CC BY-SA 4.0" },
9
+ "wikipedia-raptor": { title: "SpaceX Raptor", publisher: "Wikipedia", url: "https://en.wikipedia.org/wiki/SpaceX_Raptor", date: "2026-10-31", read: "direct", licence: "CC BY-SA 4.0" },
10
+ "spacex-starship": { title: "Starship (vehicle page)", publisher: "SpaceX", url: "https://new.spacex.com/vehicles/starship", date: "2026-10-31", read: "search" },
11
+ "nsf-block3": { title: "The Future of the Starship Program, Block 3 and Mars", publisher: "NASASpaceflight", url: "https://www.nasaspaceflight.com/2025/05/future-starship-block-3-mars/", date: "2025-05-30", read: "cited" },
12
+ "ars-2024": { title: "Elon Musk just gave another Mars speech", publisher: "Ars Technica", url: "https://arstechnica.com/space/2024/04/elon-musk-just-gave-another-mars-speech-this-time-the-vision-seems-tangible/", date: "2024-04-08", read: "cited" },
13
+ "satnews-v3": { title: "SpaceX Debuts Starship V3", publisher: "SatNews", url: "https://satnews.com/2026/05/14/spacex-debuts-starship-v3-redefining-heavy-lift-launch-capability/", date: "2026-05-14", read: "direct" },
14
+ "gunter": { title: "Starship (Super Heavy Starship, BFR, Big Falcon Rocket)", publisher: "Gunter's Space Page", url: "https://space.skyrocket.de/doc_lau/super-heavy-starship.htm", date: "2026-10-31", read: "direct" },
15
+ "newspace-v1-v4": { title: "SpaceX Starship from V1 to V4", publisher: "New Space Economy", url: "https://newspaceeconomy.ca/2026/05/28/spacex-starship-from-v1-to-v4/", date: "2026-05-28", read: "direct" },
16
+ "spacecom-mk1": { title: "SpaceX Finishes Assembling New Starship Prototype", publisher: "Space.com", url: "https://www.space.com/spacex-assembles-starship-mk1-photo.html", date: "2019-09", read: "search" },
17
+ "r-spacex": { title: "SpaceX-API, docs/rockets/v4: its Falcon 9 row in query.md and its Falcon Heavy row in all.md", publisher: "r/SpaceX (Apache-2.0, archived 2024)", url: "https://github.com/r-spacex/SpaceX-API/tree/master/docs/rockets/v4", date: "2024-08-17", read: "direct", licence: "Apache-2.0" },
18
+ "wikipedia-falcon-1": { title: "Falcon 1", publisher: "Wikipedia", url: "https://en.wikipedia.org/wiki/Falcon_1", date: "2026-10-31", read: "direct", licence: "CC BY-SA 4.0" },
19
+ "wikipedia-falcon-9": { title: "Falcon 9", publisher: "Wikipedia", url: "https://en.wikipedia.org/wiki/Falcon_9", date: "2026-10-31", read: "direct", licence: "CC BY-SA 4.0" },
20
+ "wikipedia-merlin": { title: "SpaceX Merlin (the engine infobox, read as raw wikitext)", publisher: "Wikipedia", url: "https://en.wikipedia.org/wiki/SpaceX_Merlin", date: "2026-11-01", read: "direct", licence: "CC BY-SA 4.0" },
21
+ "wikipedia-dragon-1": { title: "SpaceX Dragon 1", publisher: "Wikipedia", url: "https://en.wikipedia.org/wiki/SpaceX_Dragon_1", date: "2026-10-31", read: "direct", licence: "CC BY-SA 4.0" },
22
+ "wikipedia-dragon-2": { title: "SpaceX Dragon 2", publisher: "Wikipedia", url: "https://en.wikipedia.org/wiki/SpaceX_Dragon_2", date: "2026-10-31", read: "direct", licence: "CC BY-SA 4.0" },
23
+ "wikipedia-grasshopper": { title: "SpaceX Grasshopper", publisher: "Wikipedia", url: "https://en.wikipedia.org/wiki/SpaceX_Grasshopper", date: "2026-10-31", read: "direct", licence: "CC BY-SA 4.0" },
24
+ "wikipedia-falcon-9-block-5": { title: "Falcon 9 Block 5", publisher: "Wikipedia", url: "https://en.wikipedia.org/wiki/Falcon_9_Block_5", date: "2026-10-31", read: "direct", licence: "CC BY-SA 4.0" },
25
+ "wikipedia-falcon-heavy": { title: "Falcon Heavy", publisher: "Wikipedia", url: "https://en.wikipedia.org/wiki/Falcon_Heavy", date: "2026-10-31", read: "direct", licence: "CC BY-SA 4.0" },
26
+ };
@@ -0,0 +1,2 @@
1
+ import { type Variant } from "./types.ts";
2
+ export declare const STARSHIP_VARIANTS: readonly Variant[];