@elite-dangerous-almanac/core 0.1.0-beta.1

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 (357) hide show
  1. package/LICENSE +48 -0
  2. package/PROVENANCE/SNAPSHOTS.md +36 -0
  3. package/PROVENANCE/astro/SOURCES.md +94 -0
  4. package/PROVENANCE/commodities/SOURCES.md +41 -0
  5. package/PROVENANCE/materials/SOURCES.md +69 -0
  6. package/PROVENANCE/ships/SOURCES.md +1580 -0
  7. package/README.md +148 -0
  8. package/THIRD_PARTY_NOTICES.md +202 -0
  9. package/dist/astro/codex-region-lookup.d.ts +169 -0
  10. package/dist/astro/codex-region-lookup.js +1 -0
  11. package/dist/astro/codex-region-lookup.js.map +1 -0
  12. package/dist/astro/codex-region.d.ts +149 -0
  13. package/dist/astro/codex-region.js +1 -0
  14. package/dist/astro/codex-region.js.map +1 -0
  15. package/dist/astro/galaxy-grid.d.ts +83 -0
  16. package/dist/astro/galaxy-grid.js +1 -0
  17. package/dist/astro/galaxy-grid.js.map +1 -0
  18. package/dist/astro/hand-authored-regions.d.ts +121 -0
  19. package/dist/astro/hand-authored-regions.js +1 -0
  20. package/dist/astro/hand-authored-regions.js.map +1 -0
  21. package/dist/astro/index.d.ts +140 -0
  22. package/dist/astro/index.js +1 -0
  23. package/dist/astro/index.js.map +1 -0
  24. package/dist/astro/mass-code.d.ts +55 -0
  25. package/dist/astro/mass-code.js +1 -0
  26. package/dist/astro/mass-code.js.map +1 -0
  27. package/dist/astro/naming-region-origins.d.ts +4 -0
  28. package/dist/astro/naming-region-origins.js +1 -0
  29. package/dist/astro/naming-region-origins.js.map +1 -0
  30. package/dist/astro/nebulae-all.d.ts +40 -0
  31. package/dist/astro/nebulae-all.js +1 -0
  32. package/dist/astro/nebulae-all.js.map +1 -0
  33. package/dist/astro/nebulae-planetary.d.ts +37 -0
  34. package/dist/astro/nebulae-planetary.js +1 -0
  35. package/dist/astro/nebulae-planetary.js.map +1 -0
  36. package/dist/astro/nebulae-procgen.d.ts +36 -0
  37. package/dist/astro/nebulae-procgen.js +1 -0
  38. package/dist/astro/nebulae-procgen.js.map +1 -0
  39. package/dist/astro/nebulae-real.d.ts +37 -0
  40. package/dist/astro/nebulae-real.js +1 -0
  41. package/dist/astro/nebulae-real.js.map +1 -0
  42. package/dist/astro/nebulae.d.ts +169 -0
  43. package/dist/astro/nebulae.js +1 -0
  44. package/dist/astro/nebulae.js.map +1 -0
  45. package/dist/astro/permit-locked-regions.d.ts +54 -0
  46. package/dist/astro/permit-locked-regions.js +1 -0
  47. package/dist/astro/permit-locked-regions.js.map +1 -0
  48. package/dist/astro/permit-locked-systems.d.ts +74 -0
  49. package/dist/astro/permit-locked-systems.js +1 -0
  50. package/dist/astro/permit-locked-systems.js.map +1 -0
  51. package/dist/astro/permit-locks.d.ts +130 -0
  52. package/dist/astro/permit-locks.js +1 -0
  53. package/dist/astro/permit-locks.js.map +1 -0
  54. package/dist/astro/procedural-system.d.ts +228 -0
  55. package/dist/astro/procedural-system.js +1 -0
  56. package/dist/astro/procedural-system.js.map +1 -0
  57. package/dist/astro/sector-name.d.ts +87 -0
  58. package/dist/astro/sector-name.js +1 -0
  59. package/dist/astro/sector-name.js.map +1 -0
  60. package/dist/astro/system-address-input.d.ts +76 -0
  61. package/dist/astro/system-address-input.js +1 -0
  62. package/dist/astro/system-address-input.js.map +1 -0
  63. package/dist/astro/system-address.d.ts +4 -0
  64. package/dist/astro/system-address.js +1 -0
  65. package/dist/astro/system-address.js.map +1 -0
  66. package/dist/astro/system-name.d.ts +187 -0
  67. package/dist/astro/system-name.js +1 -0
  68. package/dist/astro/system-name.js.map +1 -0
  69. package/dist/chunk-2FHHMYDC.js +1 -0
  70. package/dist/chunk-2FHHMYDC.js.map +1 -0
  71. package/dist/chunk-462OKHXR.js +1 -0
  72. package/dist/chunk-462OKHXR.js.map +1 -0
  73. package/dist/chunk-5H74FKY7.js +1 -0
  74. package/dist/chunk-5H74FKY7.js.map +1 -0
  75. package/dist/chunk-6LUEKHO5.js +1 -0
  76. package/dist/chunk-6LUEKHO5.js.map +1 -0
  77. package/dist/chunk-76XKY2Y2.js +1 -0
  78. package/dist/chunk-76XKY2Y2.js.map +1 -0
  79. package/dist/chunk-7EE5VIHR.js +1 -0
  80. package/dist/chunk-7EE5VIHR.js.map +1 -0
  81. package/dist/chunk-A3NM7SAJ.js +1 -0
  82. package/dist/chunk-A3NM7SAJ.js.map +1 -0
  83. package/dist/chunk-A6XPYSVR.js +1 -0
  84. package/dist/chunk-A6XPYSVR.js.map +1 -0
  85. package/dist/chunk-AA3K5XUE.js +1 -0
  86. package/dist/chunk-AA3K5XUE.js.map +1 -0
  87. package/dist/chunk-AVZI6VKA.js +1 -0
  88. package/dist/chunk-AVZI6VKA.js.map +1 -0
  89. package/dist/chunk-B5TT26XE.js +1 -0
  90. package/dist/chunk-B5TT26XE.js.map +1 -0
  91. package/dist/chunk-BNILZXJD.js +1 -0
  92. package/dist/chunk-BNILZXJD.js.map +1 -0
  93. package/dist/chunk-BRDQUJXV.js +1 -0
  94. package/dist/chunk-BRDQUJXV.js.map +1 -0
  95. package/dist/chunk-BTPV5CIF.js +1 -0
  96. package/dist/chunk-BTPV5CIF.js.map +1 -0
  97. package/dist/chunk-CI3ACMRA.js +1 -0
  98. package/dist/chunk-CI3ACMRA.js.map +1 -0
  99. package/dist/chunk-COE5ADYJ.js +1 -0
  100. package/dist/chunk-COE5ADYJ.js.map +1 -0
  101. package/dist/chunk-CWAX3BSH.js +1 -0
  102. package/dist/chunk-CWAX3BSH.js.map +1 -0
  103. package/dist/chunk-DACZE3HX.js +1 -0
  104. package/dist/chunk-DACZE3HX.js.map +1 -0
  105. package/dist/chunk-DURKO7JU.js +1 -0
  106. package/dist/chunk-DURKO7JU.js.map +1 -0
  107. package/dist/chunk-E45EDCYH.js +1 -0
  108. package/dist/chunk-E45EDCYH.js.map +1 -0
  109. package/dist/chunk-ELIZXUMI.js +1 -0
  110. package/dist/chunk-ELIZXUMI.js.map +1 -0
  111. package/dist/chunk-EYGVDJ2I.js +1 -0
  112. package/dist/chunk-EYGVDJ2I.js.map +1 -0
  113. package/dist/chunk-FGXWVFN6.js +1 -0
  114. package/dist/chunk-FGXWVFN6.js.map +1 -0
  115. package/dist/chunk-GJCB2Z72.js +1 -0
  116. package/dist/chunk-GJCB2Z72.js.map +1 -0
  117. package/dist/chunk-HI7FCS3G.js +1 -0
  118. package/dist/chunk-HI7FCS3G.js.map +1 -0
  119. package/dist/chunk-HKXXFIRI.js +1 -0
  120. package/dist/chunk-HKXXFIRI.js.map +1 -0
  121. package/dist/chunk-HTB52N6S.js +1 -0
  122. package/dist/chunk-HTB52N6S.js.map +1 -0
  123. package/dist/chunk-I7PIDRMU.js +1 -0
  124. package/dist/chunk-I7PIDRMU.js.map +1 -0
  125. package/dist/chunk-IH4NXKVW.js +1 -0
  126. package/dist/chunk-IH4NXKVW.js.map +1 -0
  127. package/dist/chunk-INNFH37U.js +1 -0
  128. package/dist/chunk-INNFH37U.js.map +1 -0
  129. package/dist/chunk-J2PNZQY4.js +1 -0
  130. package/dist/chunk-J2PNZQY4.js.map +1 -0
  131. package/dist/chunk-JQG4C67D.js +1 -0
  132. package/dist/chunk-JQG4C67D.js.map +1 -0
  133. package/dist/chunk-JTQVWIGL.js +1 -0
  134. package/dist/chunk-JTQVWIGL.js.map +1 -0
  135. package/dist/chunk-JWJ7RSZC.js +1 -0
  136. package/dist/chunk-JWJ7RSZC.js.map +1 -0
  137. package/dist/chunk-K3AMV27L.js +1 -0
  138. package/dist/chunk-K3AMV27L.js.map +1 -0
  139. package/dist/chunk-K7F6WC4T.js +1 -0
  140. package/dist/chunk-K7F6WC4T.js.map +1 -0
  141. package/dist/chunk-K7L7SMIR.js +1 -0
  142. package/dist/chunk-K7L7SMIR.js.map +1 -0
  143. package/dist/chunk-KG4EWDZZ.js +1 -0
  144. package/dist/chunk-KG4EWDZZ.js.map +1 -0
  145. package/dist/chunk-KMFUCORC.js +1 -0
  146. package/dist/chunk-KMFUCORC.js.map +1 -0
  147. package/dist/chunk-L2ZZXEZM.js +1 -0
  148. package/dist/chunk-L2ZZXEZM.js.map +1 -0
  149. package/dist/chunk-L747RVPO.js +1 -0
  150. package/dist/chunk-L747RVPO.js.map +1 -0
  151. package/dist/chunk-MFV4VZFP.js +1 -0
  152. package/dist/chunk-MFV4VZFP.js.map +1 -0
  153. package/dist/chunk-NWPK6Q3S.js +1 -0
  154. package/dist/chunk-NWPK6Q3S.js.map +1 -0
  155. package/dist/chunk-PMJG7PHU.js +1 -0
  156. package/dist/chunk-PMJG7PHU.js.map +1 -0
  157. package/dist/chunk-PP2VSA6M.js +1 -0
  158. package/dist/chunk-PP2VSA6M.js.map +1 -0
  159. package/dist/chunk-Q22LXT53.js +1 -0
  160. package/dist/chunk-Q22LXT53.js.map +1 -0
  161. package/dist/chunk-Q5MR36RW.js +1 -0
  162. package/dist/chunk-Q5MR36RW.js.map +1 -0
  163. package/dist/chunk-Q5XOGATC.js +1 -0
  164. package/dist/chunk-Q5XOGATC.js.map +1 -0
  165. package/dist/chunk-QTDBO7R2.js +1 -0
  166. package/dist/chunk-QTDBO7R2.js.map +1 -0
  167. package/dist/chunk-R4OD62HV.js +1 -0
  168. package/dist/chunk-R4OD62HV.js.map +1 -0
  169. package/dist/chunk-RD73TFGS.js +1 -0
  170. package/dist/chunk-RD73TFGS.js.map +1 -0
  171. package/dist/chunk-RIT6MOO5.js +1 -0
  172. package/dist/chunk-RIT6MOO5.js.map +1 -0
  173. package/dist/chunk-RVSXKQHE.js +1 -0
  174. package/dist/chunk-RVSXKQHE.js.map +1 -0
  175. package/dist/chunk-S4DBNX2B.js +1 -0
  176. package/dist/chunk-S4DBNX2B.js.map +1 -0
  177. package/dist/chunk-S4UWCHL6.js +1 -0
  178. package/dist/chunk-S4UWCHL6.js.map +1 -0
  179. package/dist/chunk-SQS7672E.js +1 -0
  180. package/dist/chunk-SQS7672E.js.map +1 -0
  181. package/dist/chunk-TLNHETGC.js +1 -0
  182. package/dist/chunk-TLNHETGC.js.map +1 -0
  183. package/dist/chunk-U6TMCYA6.js +1 -0
  184. package/dist/chunk-U6TMCYA6.js.map +1 -0
  185. package/dist/chunk-V4C6FIE2.js +1 -0
  186. package/dist/chunk-V4C6FIE2.js.map +1 -0
  187. package/dist/chunk-VXVUEF5U.js +1 -0
  188. package/dist/chunk-VXVUEF5U.js.map +1 -0
  189. package/dist/chunk-VZXL5KBR.js +1 -0
  190. package/dist/chunk-VZXL5KBR.js.map +1 -0
  191. package/dist/chunk-VZZ2XIRE.js +1 -0
  192. package/dist/chunk-VZZ2XIRE.js.map +1 -0
  193. package/dist/chunk-WV5YM7H5.js +1 -0
  194. package/dist/chunk-WV5YM7H5.js.map +1 -0
  195. package/dist/chunk-Y2MUIE5W.js +1 -0
  196. package/dist/chunk-Y2MUIE5W.js.map +1 -0
  197. package/dist/chunk-Z43DN4PY.js +1 -0
  198. package/dist/chunk-Z43DN4PY.js.map +1 -0
  199. package/dist/chunk-Z4GTTB7I.js +1 -0
  200. package/dist/chunk-Z4GTTB7I.js.map +1 -0
  201. package/dist/chunk-Z4OUB4SJ.js +1 -0
  202. package/dist/chunk-Z4OUB4SJ.js.map +1 -0
  203. package/dist/chunk-ZFT56QFR.js +1 -0
  204. package/dist/chunk-ZFT56QFR.js.map +1 -0
  205. package/dist/chunk-ZNCXENNB.js +1 -0
  206. package/dist/chunk-ZNCXENNB.js.map +1 -0
  207. package/dist/commodities/commodities-all.d.ts +25 -0
  208. package/dist/commodities/commodities-all.js +1 -0
  209. package/dist/commodities/commodities-all.js.map +1 -0
  210. package/dist/commodities/commodities-rare.d.ts +34 -0
  211. package/dist/commodities/commodities-rare.js +1 -0
  212. package/dist/commodities/commodities-rare.js.map +1 -0
  213. package/dist/commodities/commodities-standard.d.ts +34 -0
  214. package/dist/commodities/commodities-standard.js +1 -0
  215. package/dist/commodities/commodities-standard.js.map +1 -0
  216. package/dist/commodities/commodities.d.ts +142 -0
  217. package/dist/commodities/commodities.js +1 -0
  218. package/dist/commodities/commodities.js.map +1 -0
  219. package/dist/commodities/index.d.ts +30 -0
  220. package/dist/commodities/index.js +1 -0
  221. package/dist/commodities/index.js.map +1 -0
  222. package/dist/galactic-position-shLkm4Qg.d.ts +30 -0
  223. package/dist/materials/index.d.ts +47 -0
  224. package/dist/materials/index.js +1 -0
  225. package/dist/materials/index.js.map +1 -0
  226. package/dist/materials/materials-all.d.ts +26 -0
  227. package/dist/materials/materials-all.js +1 -0
  228. package/dist/materials/materials-all.js.map +1 -0
  229. package/dist/materials/materials-encoded.d.ts +31 -0
  230. package/dist/materials/materials-encoded.js +1 -0
  231. package/dist/materials/materials-encoded.js.map +1 -0
  232. package/dist/materials/materials-manufactured.d.ts +32 -0
  233. package/dist/materials/materials-manufactured.js +1 -0
  234. package/dist/materials/materials-manufactured.js.map +1 -0
  235. package/dist/materials/materials-raw.d.ts +31 -0
  236. package/dist/materials/materials-raw.js +1 -0
  237. package/dist/materials/materials-raw.js.map +1 -0
  238. package/dist/materials/materials.d.ts +277 -0
  239. package/dist/materials/materials.js +1 -0
  240. package/dist/materials/materials.js.map +1 -0
  241. package/dist/materials/micro-resources-all.d.ts +28 -0
  242. package/dist/materials/micro-resources-all.js +1 -0
  243. package/dist/materials/micro-resources-all.js.map +1 -0
  244. package/dist/materials/micro-resources-component.d.ts +29 -0
  245. package/dist/materials/micro-resources-component.js +1 -0
  246. package/dist/materials/micro-resources-component.js.map +1 -0
  247. package/dist/materials/micro-resources-consumable.d.ts +29 -0
  248. package/dist/materials/micro-resources-consumable.js +1 -0
  249. package/dist/materials/micro-resources-consumable.js.map +1 -0
  250. package/dist/materials/micro-resources-data.d.ts +29 -0
  251. package/dist/materials/micro-resources-data.js +1 -0
  252. package/dist/materials/micro-resources-data.js.map +1 -0
  253. package/dist/materials/micro-resources-item.d.ts +29 -0
  254. package/dist/materials/micro-resources-item.js +1 -0
  255. package/dist/materials/micro-resources-item.js.map +1 -0
  256. package/dist/materials/micro-resources.d.ts +136 -0
  257. package/dist/materials/micro-resources.js +1 -0
  258. package/dist/materials/micro-resources.js.map +1 -0
  259. package/dist/ship-loadout-Ba63RDf-.d.ts +1059 -0
  260. package/dist/ships/ammunition.d.ts +107 -0
  261. package/dist/ships/ammunition.js +1 -0
  262. package/dist/ships/ammunition.js.map +1 -0
  263. package/dist/ships/armour.d.ts +134 -0
  264. package/dist/ships/armour.js +1 -0
  265. package/dist/ships/armour.js.map +1 -0
  266. package/dist/ships/blueprint-costs.d.ts +128 -0
  267. package/dist/ships/blueprint-costs.js +1 -0
  268. package/dist/ships/blueprint-costs.js.map +1 -0
  269. package/dist/ships/blueprint-journal.d.ts +116 -0
  270. package/dist/ships/blueprint-journal.js +1 -0
  271. package/dist/ships/blueprint-journal.js.map +1 -0
  272. package/dist/ships/blueprints.d.ts +103 -0
  273. package/dist/ships/blueprints.js +1 -0
  274. package/dist/ships/blueprints.js.map +1 -0
  275. package/dist/ships/decorative-modifications.d.ts +176 -0
  276. package/dist/ships/decorative-modifications.js +1 -0
  277. package/dist/ships/decorative-modifications.js.map +1 -0
  278. package/dist/ships/engineering-options.d.ts +246 -0
  279. package/dist/ships/engineering-options.js +1 -0
  280. package/dist/ships/engineering-options.js.map +1 -0
  281. package/dist/ships/engineering.d.ts +229 -0
  282. package/dist/ships/engineering.js +1 -0
  283. package/dist/ships/engineering.js.map +1 -0
  284. package/dist/ships/experimental-effect-costs.d.ts +56 -0
  285. package/dist/ships/experimental-effect-costs.js +1 -0
  286. package/dist/ships/experimental-effect-costs.js.map +1 -0
  287. package/dist/ships/experimental-effects.d.ts +62 -0
  288. package/dist/ships/experimental-effects.js +1 -0
  289. package/dist/ships/experimental-effects.js.map +1 -0
  290. package/dist/ships/index.d.ts +205 -0
  291. package/dist/ships/index.js +1 -0
  292. package/dist/ships/index.js.map +1 -0
  293. package/dist/ships/jump-range.d.ts +115 -0
  294. package/dist/ships/jump-range.js +1 -0
  295. package/dist/ships/jump-range.js.map +1 -0
  296. package/dist/ships/loadout-calculations.d.ts +109 -0
  297. package/dist/ships/loadout-calculations.js +1 -0
  298. package/dist/ships/loadout-calculations.js.map +1 -0
  299. package/dist/ships/loadout-validation.d.ts +80 -0
  300. package/dist/ships/loadout-validation.js +1 -0
  301. package/dist/ships/loadout-validation.js.map +1 -0
  302. package/dist/ships/module-capabilities.d.ts +205 -0
  303. package/dist/ships/module-capabilities.js +1 -0
  304. package/dist/ships/module-capabilities.js.map +1 -0
  305. package/dist/ships/modules-all.d.ts +43 -0
  306. package/dist/ships/modules-all.js +1 -0
  307. package/dist/ships/modules-all.js.map +1 -0
  308. package/dist/ships/modules-core.d.ts +40 -0
  309. package/dist/ships/modules-core.js +1 -0
  310. package/dist/ships/modules-core.js.map +1 -0
  311. package/dist/ships/modules-hardpoint.d.ts +42 -0
  312. package/dist/ships/modules-hardpoint.js +1 -0
  313. package/dist/ships/modules-hardpoint.js.map +1 -0
  314. package/dist/ships/modules-internal.d.ts +40 -0
  315. package/dist/ships/modules-internal.js +1 -0
  316. package/dist/ships/modules-internal.js.map +1 -0
  317. package/dist/ships/modules-utility.d.ts +40 -0
  318. package/dist/ships/modules-utility.js +1 -0
  319. package/dist/ships/modules-utility.js.map +1 -0
  320. package/dist/ships/modules.d.ts +755 -0
  321. package/dist/ships/modules.js +1 -0
  322. package/dist/ships/modules.js.map +1 -0
  323. package/dist/ships/power.d.ts +168 -0
  324. package/dist/ships/power.js +1 -0
  325. package/dist/ships/power.js.map +1 -0
  326. package/dist/ships/pre-engineered-stats.d.ts +147 -0
  327. package/dist/ships/pre-engineered-stats.js +1 -0
  328. package/dist/ships/pre-engineered-stats.js.map +1 -0
  329. package/dist/ships/pre-engineered.d.ts +215 -0
  330. package/dist/ships/pre-engineered.js +1 -0
  331. package/dist/ships/pre-engineered.js.map +1 -0
  332. package/dist/ships/resistances.d.ts +208 -0
  333. package/dist/ships/resistances.js +1 -0
  334. package/dist/ships/resistances.js.map +1 -0
  335. package/dist/ships/shields.d.ts +221 -0
  336. package/dist/ships/shields.js +1 -0
  337. package/dist/ships/shields.js.map +1 -0
  338. package/dist/ships/ship-loadout.d.ts +16 -0
  339. package/dist/ships/ship-loadout.js +1 -0
  340. package/dist/ships/ship-loadout.js.map +1 -0
  341. package/dist/ships/ships.d.ts +191 -0
  342. package/dist/ships/ships.js +1 -0
  343. package/dist/ships/ships.js.map +1 -0
  344. package/dist/ships/slef.d.ts +318 -0
  345. package/dist/ships/slef.js +1 -0
  346. package/dist/ships/slef.js.map +1 -0
  347. package/dist/ships/slots.d.ts +418 -0
  348. package/dist/ships/slots.js +1 -0
  349. package/dist/ships/slots.js.map +1 -0
  350. package/dist/ships/source-purchase.d.ts +132 -0
  351. package/dist/ships/source-purchase.js +1 -0
  352. package/dist/ships/source-purchase.js.map +1 -0
  353. package/dist/ships/weapons.d.ts +380 -0
  354. package/dist/ships/weapons.js +1 -0
  355. package/dist/ships/weapons.js.map +1 -0
  356. package/dist/system-address-DYsN1qOT.d.ts +313 -0
  357. package/package.json +375 -0
@@ -0,0 +1,205 @@
1
+ import { OutfittingModuleStats } from './modules.js';
2
+ import './engineering-options.js';
3
+ import './slots.js';
4
+
5
+ /**
6
+ * Data-free capability guards for sparse outfitting-module records.
7
+ *
8
+ * {@link OutfittingModule} represents every outfitting family, so its performance
9
+ * fields are optional. These guards narrow only the stat group a calculation needs;
10
+ * they do not infer identity from a symbol or require an unrelated family label.
11
+ * Each exported stat interface contains only its required numeric fields, so consumers
12
+ * can also accept the smallest useful calculation input without fabricating module
13
+ * identity. A successful guard narrows a catalogue record to the intersection of that
14
+ * record and the stat interface.
15
+ *
16
+ * @example
17
+ * ```ts
18
+ * import {
19
+ * hasFrameShiftDriveJumpStats,
20
+ * hasWeaponDamageStats,
21
+ * type FrameShiftDriveJumpStats,
22
+ * } from '@elite-dangerous-almanac/core/ships/module-capabilities';
23
+ * import { getModuleBySymbol } from '@elite-dangerous-almanac/core/ships/modules';
24
+ * import { weaponMetrics } from '@elite-dangerous-almanac/core/ships/weapons';
25
+ *
26
+ * declare const journalItem: string;
27
+ *
28
+ * const module = getModuleBySymbol(journalItem);
29
+ * if (hasFrameShiftDriveJumpStats(module)) module.maxFuel; // required, in tonnes
30
+ * if (hasWeaponDamageStats(module)) weaponMetrics(module);
31
+ *
32
+ * const customDrive: FrameShiftDriveJumpStats = {
33
+ * optMass: 1050,
34
+ * maxFuel: 5,
35
+ * fuelMul: 0.012,
36
+ * fuelPower: 2.45,
37
+ * }; // no identity fields required
38
+ * ```
39
+ *
40
+ * @packageDocumentation
41
+ */
42
+
43
+ /** Complete frame-shift-drive constants required by jump and fuel calculations. */
44
+ interface FrameShiftDriveJumpStats {
45
+ /** Optimised mass, in tonnes. Positive for every catalogued drive. */
46
+ readonly optMass: number;
47
+ /** Maximum fuel consumed by one jump, in tonnes. Positive. */
48
+ readonly maxFuel: number;
49
+ /** Rating-dependent linear fuel constant. Positive. */
50
+ readonly fuelMul: number;
51
+ /** Size-dependent fuel exponent. Positive. */
52
+ readonly fuelPower: number;
53
+ }
54
+ /** Complete power-plant output and heat-efficiency capability. */
55
+ interface PowerGenerationStats {
56
+ /** Power generated, in megawatts. Non-negative. */
57
+ readonly powerCapacity: number;
58
+ /** Dimensionless heat-efficiency factor; positive, and lower runs cooler. */
59
+ readonly heatEfficiency: number;
60
+ }
61
+ /** All three power-distributor capacitor capacities and recharge rates. */
62
+ interface PowerDistributorStats {
63
+ /** WEP capacitor capacity, in megajoules. Non-negative. */
64
+ readonly weaponsCapacity: number;
65
+ /** WEP recharge rate, in megajoules per second. Non-negative. */
66
+ readonly weaponsRecharge: number;
67
+ /** ENG capacitor capacity, in megajoules. Non-negative. */
68
+ readonly enginesCapacity: number;
69
+ /** ENG recharge rate, in megajoules per second. Non-negative. */
70
+ readonly enginesRecharge: number;
71
+ /** SYS capacitor capacity, in megajoules. Non-negative. */
72
+ readonly systemsCapacity: number;
73
+ /** SYS recharge rate, in megajoules per second. Non-negative. */
74
+ readonly systemsRecharge: number;
75
+ }
76
+ /** A complete three-point performance curve over hull mass. */
77
+ interface MassCurveStats {
78
+ /** Optimised hull mass, in tonnes. Positive. */
79
+ readonly optMass: number;
80
+ /** Minimum curve mass, in tonnes. Positive. */
81
+ readonly minMass: number;
82
+ /** Maximum curve mass, in tonnes. Positive. */
83
+ readonly maxMass: number;
84
+ /** Dimensionless performance multiplier at `optMass`. Positive. */
85
+ readonly optMultiplier: number;
86
+ /** Dimensionless minimum performance multiplier, reached at `maxMass`. Positive. */
87
+ readonly minMultiplier: number;
88
+ /** Dimensionless maximum performance multiplier, reached at `minMass`. Positive. */
89
+ readonly maxMultiplier: number;
90
+ }
91
+ /** Both shield regeneration rates exposed by a generator. */
92
+ interface ShieldRegenerationStats {
93
+ /** Normal regeneration rate, in megajoules per second. Non-negative. */
94
+ readonly shieldRegenRate: number;
95
+ /** Broken-shield regeneration rate, in megajoules per second. Non-negative. */
96
+ readonly shieldBrokenRegenRate: number;
97
+ }
98
+ /** The concrete damage capability shared by hardpoint weapons and tools. */
99
+ interface WeaponDamageStats {
100
+ /** Damage per round, or per second for continuous-fire weapons. Non-negative. */
101
+ readonly damage: number;
102
+ }
103
+ /**
104
+ * Test for complete frame-shift-drive jump constants.
105
+ *
106
+ * @param module - A catalogue result or custom sparse record, including `null`.
107
+ * @returns Whether all fields in {@link FrameShiftDriveJumpStats} are numeric.
108
+ * @example
109
+ * ```ts
110
+ * import type { OutfittingModuleStats } from '@elite-dangerous-almanac/core/ships/modules';
111
+ * import { singleJumpRange } from '@elite-dangerous-almanac/core/ships/jump-range';
112
+ * import { hasFrameShiftDriveJumpStats } from '@elite-dangerous-almanac/core/ships/module-capabilities';
113
+ *
114
+ * declare const record: OutfittingModuleStats | null;
115
+ *
116
+ * if (hasFrameShiftDriveJumpStats(record)) singleJumpRange(500, record.maxFuel, record);
117
+ * ```
118
+ */
119
+ declare function hasFrameShiftDriveJumpStats<T extends OutfittingModuleStats>(module: T | null | undefined): module is T & FrameShiftDriveJumpStats;
120
+ /**
121
+ * Test for complete power-generation stats.
122
+ *
123
+ * @param module - A catalogue result or custom sparse record, including `null`.
124
+ * @returns Whether both fields in {@link PowerGenerationStats} are numeric.
125
+ * @example
126
+ * ```ts
127
+ * import type { OutfittingModule } from '@elite-dangerous-almanac/core/ships/modules';
128
+ * declare const record: OutfittingModule | null;
129
+ *
130
+ * import { hasPowerGenerationStats } from '@elite-dangerous-almanac/core/ships/module-capabilities';
131
+ *
132
+ * if (hasPowerGenerationStats(record)) record.powerCapacity; // MW
133
+ * ```
134
+ */
135
+ declare function hasPowerGenerationStats<T extends OutfittingModuleStats>(module: T | null | undefined): module is T & PowerGenerationStats;
136
+ /**
137
+ * Test for all three power-distributor capacitor stat pairs.
138
+ *
139
+ * @param module - A catalogue result or custom sparse record, including `null`.
140
+ * @returns Whether every field in {@link PowerDistributorStats} is numeric.
141
+ * @example
142
+ * ```ts
143
+ * import type { OutfittingModule } from '@elite-dangerous-almanac/core/ships/modules';
144
+ * declare const record: OutfittingModule | null;
145
+ *
146
+ * import { hasPowerDistributorStats } from '@elite-dangerous-almanac/core/ships/module-capabilities';
147
+ *
148
+ * if (hasPowerDistributorStats(record)) record.weaponsRecharge; // MJ/s
149
+ * ```
150
+ */
151
+ declare function hasPowerDistributorStats<T extends OutfittingModuleStats>(module: T | null | undefined): module is T & PowerDistributorStats;
152
+ /**
153
+ * Test for a complete three-point hull-mass performance curve.
154
+ *
155
+ * @param module - A catalogue result or custom sparse record, including `null`.
156
+ * @returns Whether every field in {@link MassCurveStats} is numeric. Both thrusters
157
+ * and shield generators satisfy this capability.
158
+ * @example
159
+ * ```ts
160
+ * import type { OutfittingModule } from '@elite-dangerous-almanac/core/ships/modules';
161
+ * declare const record: OutfittingModule | null;
162
+ *
163
+ * import { hasMassCurveStats } from '@elite-dangerous-almanac/core/ships/module-capabilities';
164
+ *
165
+ * if (hasMassCurveStats(record)) record.optMultiplier; // dimensionless
166
+ * ```
167
+ */
168
+ declare function hasMassCurveStats<T extends OutfittingModuleStats>(module: T | null | undefined): module is T & MassCurveStats;
169
+ /**
170
+ * Test for both shield regeneration rates.
171
+ *
172
+ * @param module - A catalogue result or custom sparse record, including `null`.
173
+ * @returns Whether both fields in {@link ShieldRegenerationStats} are numeric.
174
+ * @example
175
+ * ```ts
176
+ * import type { OutfittingModule } from '@elite-dangerous-almanac/core/ships/modules';
177
+ * declare const record: OutfittingModule | null;
178
+ *
179
+ * import { hasShieldRegenerationStats } from '@elite-dangerous-almanac/core/ships/module-capabilities';
180
+ *
181
+ * if (hasShieldRegenerationStats(record)) record.shieldRegenRate; // MJ/s
182
+ * ```
183
+ */
184
+ declare function hasShieldRegenerationStats<T extends OutfittingModuleStats>(module: T | null | undefined): module is T & ShieldRegenerationStats;
185
+ /**
186
+ * Test for a concrete weapon/tool damage figure.
187
+ *
188
+ * @param module - A catalogue result or custom sparse record, including `null`.
189
+ * @returns Whether `damage` is numeric, narrowing to {@link WeaponDamageStats}.
190
+ * Other firing fields stay optional because continuous-fire and ammunition-free
191
+ * weapons legitimately omit different stats.
192
+ * @example
193
+ * ```ts
194
+ * import type { OutfittingModule } from '@elite-dangerous-almanac/core/ships/modules';
195
+ * declare const record: OutfittingModule | null;
196
+ *
197
+ * import { hasWeaponDamageStats } from '@elite-dangerous-almanac/core/ships/module-capabilities';
198
+ * import { weaponMetrics } from '@elite-dangerous-almanac/core/ships/weapons';
199
+ *
200
+ * if (hasWeaponDamageStats(record)) weaponMetrics(record);
201
+ * ```
202
+ */
203
+ declare function hasWeaponDamageStats<T extends OutfittingModuleStats>(module: T | null | undefined): module is T & WeaponDamageStats;
204
+
205
+ export { type FrameShiftDriveJumpStats, type MassCurveStats, type PowerDistributorStats, type PowerGenerationStats, type ShieldRegenerationStats, type WeaponDamageStats, hasFrameShiftDriveJumpStats, hasMassCurveStats, hasPowerDistributorStats, hasPowerGenerationStats, hasShieldRegenerationStats, hasWeaponDamageStats };
@@ -0,0 +1 @@
1
+ export{hasFrameShiftDriveJumpStats,hasMassCurveStats,hasPowerDistributorStats,hasPowerGenerationStats,hasShieldRegenerationStats,hasWeaponDamageStats}from"../chunk-JTQVWIGL.js";//# sourceMappingURL=module-capabilities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"O"}
@@ -0,0 +1,43 @@
1
+ import { OutfittingModule } from './modules.js';
2
+ import './engineering-options.js';
3
+ import './slots.js';
4
+
5
+ /**
6
+ * The **complete** outfitting catalogue: standard, internal, hardpoint and utility
7
+ * modules in one array.
8
+ *
9
+ * @remarks
10
+ * **This module pulls in every module catalogue** — it exists for consumers that
11
+ * really do want to search all 1199 modules (a "resolve any module id" lookup, say).
12
+ * If you only need one category, import that catalogue's module
13
+ * (`./modules-core`, `./modules-internal`, `./modules-hardpoint`,
14
+ * `./modules-utility`) and nothing else gets bundled.
15
+ *
16
+ * Identity primarily from EDCD FDevIDs (`outfitting.csv`), with supplemental module
17
+ * identities documented in the source record; stats from EDCD/coriolis-data and EDSY,
18
+ * joined on `symbol`. See [`data/ships/SOURCES.md`](https://github.com/DarkSession/Elite-Dangerous-Almanac/blob/main/data/ships/SOURCES.md).
19
+ *
20
+ * @packageDocumentation
21
+ */
22
+
23
+ /**
24
+ * Every outfitting module — the concatenation of `CORE_MODULES`,
25
+ * `INTERNAL_MODULES`, `HARDPOINT_MODULES` and `UTILITY_MODULES`, in that order
26
+ * (each in Frontier's registry order).
27
+ *
28
+ * @remarks
29
+ * Filter on {@link OutfittingModule.category} to narrow it down after the fact —
30
+ * though importing the single catalogue you need is cheaper, since it keeps the
31
+ * others out of your bundle entirely.
32
+ *
33
+ * @example
34
+ * ```ts
35
+ * import { ALL_MODULES } from '@elite-dangerous-almanac/core/ships/modules-all';
36
+ *
37
+ * ALL_MODULES.length; // -> 1199
38
+ * ALL_MODULES.filter((m) => m.category === 'utility').length; // -> 35
39
+ * ```
40
+ */
41
+ declare const ALL_MODULES: readonly OutfittingModule[];
42
+
43
+ export { ALL_MODULES };
@@ -0,0 +1 @@
1
+ export{ALL_MODULES}from"../chunk-CWAX3BSH.js"; //# sourceMappingURL=modules-all.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"O"}
@@ -0,0 +1,40 @@
1
+ import { OutfittingModule } from './modules.js';
2
+ import './engineering-options.js';
3
+ import './slots.js';
4
+
5
+ /**
6
+ * The **core internal** modules — the `core` outfitting category: the eight slots
7
+ * every hull must fill (armour, power plant, thrusters, frame shift drive, life
8
+ * support, power distributor, sensors, fuel tank).
9
+ *
10
+ * The armour variants here are the one ship-specific module, so this is also where
11
+ * `getBulkheadsForShip` from `./modules` finds a hull's bulkheads. The other categories
12
+ * live in `./modules-internal`, `./modules-hardpoint` and `./modules-utility`, so
13
+ * importing this module never bundles them.
14
+ *
15
+ * Identity from EDCD FDevIDs (`outfitting.csv`), stats from EDCD/coriolis-data,
16
+ * joined on `symbol`; see [`data/ships/SOURCES.md`](https://github.com/DarkSession/Elite-Dangerous-Almanac/blob/main/data/ships/SOURCES.md).
17
+ *
18
+ * @packageDocumentation
19
+ */
20
+
21
+ /**
22
+ * All 521 core internal modules, in Frontier's registry order.
23
+ *
24
+ * @remarks
25
+ * Every record has `category: 'core'`, added from the file it was read from
26
+ * rather than repeated on every record. To keep the other three categories out of
27
+ * your bundle, search this array directly — `CORE_MODULES.find((m) =>
28
+ * m.symbol.toLowerCase() === wanted)`, lower-cased because a journal's symbols are —
29
+ * rather than with the lookups in `./modules`, which default to all 1199 modules.
30
+ *
31
+ * @example
32
+ * ```ts
33
+ * import { CORE_MODULES } from '@elite-dangerous-almanac/core/ships/modules-core';
34
+ *
35
+ * CORE_MODULES.length; // -> 521
36
+ * ```
37
+ */
38
+ declare const CORE_MODULES: readonly OutfittingModule[];
39
+
40
+ export { CORE_MODULES };
@@ -0,0 +1 @@
1
+ export{CORE_MODULES}from"../chunk-K3AMV27L.js"; //# sourceMappingURL=modules-core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"O"}
@@ -0,0 +1,42 @@
1
+ import { OutfittingModule } from './modules.js';
2
+ import './engineering-options.js';
3
+ import './slots.js';
4
+
5
+ /**
6
+ * The **hardpoint** modules — the `hardpoint` outfitting category: the weapons and
7
+ * tools mounted on a hardpoint (lasers, multi-cannons, missile and mine launchers,
8
+ * mining lasers, the various Thargoid/Guardian hardpoints, …).
9
+ *
10
+ * These are the modules that carry a {@link OutfittingModule.mount}
11
+ * (Fixed / Gimballed / Turreted) and, for launchers, a
12
+ * {@link OutfittingModule.guidance}. The other categories live in
13
+ * `./modules-core`, `./modules-internal` and `./modules-utility`, so importing
14
+ * this module never bundles them.
15
+ *
16
+ * Identity from EDCD FDevIDs (`outfitting.csv`), stats from EDCD/coriolis-data,
17
+ * joined on `symbol`; see [`data/ships/SOURCES.md`](https://github.com/DarkSession/Elite-Dangerous-Almanac/blob/main/data/ships/SOURCES.md).
18
+ *
19
+ * @packageDocumentation
20
+ */
21
+
22
+ /**
23
+ * All 159 hardpoint modules, in Frontier's registry order.
24
+ *
25
+ * @remarks
26
+ * Every record has `category: 'hardpoint'`, added from the file it was read from
27
+ * rather than repeated on every record. To keep the other three categories out of
28
+ * your bundle, search this array directly — `HARDPOINT_MODULES.find((m) =>
29
+ * m.symbol.toLowerCase() === wanted)`, lower-cased because a journal's symbols are —
30
+ * rather than with the lookups in `./modules`, which default to all 1199 modules.
31
+ *
32
+ * @example
33
+ * ```ts
34
+ * import { HARDPOINT_MODULES } from '@elite-dangerous-almanac/core/ships/modules-hardpoint';
35
+ *
36
+ * HARDPOINT_MODULES.length; // -> 159
37
+ * HARDPOINT_MODULES.filter((m) => m.mount === 'Turreted').length; // turreted variants
38
+ * ```
39
+ */
40
+ declare const HARDPOINT_MODULES: readonly OutfittingModule[];
41
+
42
+ export { HARDPOINT_MODULES };
@@ -0,0 +1 @@
1
+ export{HARDPOINT_MODULES}from"../chunk-A6XPYSVR.js"; //# sourceMappingURL=modules-hardpoint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"O"}
@@ -0,0 +1,40 @@
1
+ import { OutfittingModule } from './modules.js';
2
+ import './engineering-options.js';
3
+ import './slots.js';
4
+
5
+ /**
6
+ * The **optional internal** modules — the `internal` outfitting category:
7
+ * everything that fills an optional internal slot (cargo racks, shield generators,
8
+ * fuel scoops, refineries, passenger cabins, limpet and planetary controllers,
9
+ * hull/module reinforcement, …).
10
+ *
11
+ * The other categories live in `./modules-core`, `./modules-hardpoint` and
12
+ * `./modules-utility`, so importing this module never bundles them.
13
+ *
14
+ * Identity primarily from EDCD FDevIDs (`outfitting.csv`), with six bundle-granted
15
+ * Vessel Hangar variants from a public CAPI capture; stats from EDCD/coriolis-data and
16
+ * EDSY, joined on `symbol`. See [`data/ships/SOURCES.md`](https://github.com/DarkSession/Elite-Dangerous-Almanac/blob/main/data/ships/SOURCES.md).
17
+ *
18
+ * @packageDocumentation
19
+ */
20
+
21
+ /**
22
+ * All 484 optional internal modules, in registry order.
23
+ *
24
+ * @remarks
25
+ * Every record has `category: 'internal'`, added from the file it was read from
26
+ * rather than repeated on every record. To keep the other three categories out of
27
+ * your bundle, search this array directly — `INTERNAL_MODULES.find((m) =>
28
+ * m.symbol.toLowerCase() === wanted)`, lower-cased because a journal's symbols are —
29
+ * rather than with the lookups in `./modules`, which default to all 1199 modules.
30
+ *
31
+ * @example
32
+ * ```ts
33
+ * import { INTERNAL_MODULES } from '@elite-dangerous-almanac/core/ships/modules-internal';
34
+ *
35
+ * INTERNAL_MODULES.length; // -> 484
36
+ * ```
37
+ */
38
+ declare const INTERNAL_MODULES: readonly OutfittingModule[];
39
+
40
+ export { INTERNAL_MODULES };
@@ -0,0 +1 @@
1
+ export{INTERNAL_MODULES}from"../chunk-Y2MUIE5W.js"; //# sourceMappingURL=modules-internal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"O"}
@@ -0,0 +1,40 @@
1
+ import { OutfittingModule } from './modules.js';
2
+ import './engineering-options.js';
3
+ import './slots.js';
4
+
5
+ /**
6
+ * The **utility-mount** modules — the `utility` outfitting category: the small
7
+ * utility-slot fittings (chaff and heat-sink launchers, point defence, shield
8
+ * boosters, kill warrant / manifest / wake scanners, the xeno and Shutdown Field
9
+ * scanners, …).
10
+ *
11
+ * The smallest catalogue. The other categories live in `./modules-core`,
12
+ * `./modules-internal` and `./modules-hardpoint`, so importing this module never
13
+ * bundles them.
14
+ *
15
+ * Identity from EDCD FDevIDs (`outfitting.csv`), stats from EDCD/coriolis-data,
16
+ * joined on `symbol`; see [`data/ships/SOURCES.md`](https://github.com/DarkSession/Elite-Dangerous-Almanac/blob/main/data/ships/SOURCES.md).
17
+ *
18
+ * @packageDocumentation
19
+ */
20
+
21
+ /**
22
+ * All 35 utility-mount modules, in Frontier's registry order.
23
+ *
24
+ * @remarks
25
+ * Every record has `category: 'utility'`, added from the file it was read from
26
+ * rather than repeated on every record. To keep the other three categories out of
27
+ * your bundle, search this array directly — `UTILITY_MODULES.find((m) =>
28
+ * m.symbol.toLowerCase() === wanted)`, lower-cased because a journal's symbols are —
29
+ * rather than with the lookups in `./modules`, which default to all 1199 modules.
30
+ *
31
+ * @example
32
+ * ```ts
33
+ * import { UTILITY_MODULES } from '@elite-dangerous-almanac/core/ships/modules-utility';
34
+ *
35
+ * UTILITY_MODULES.length; // -> 35
36
+ * ```
37
+ */
38
+ declare const UTILITY_MODULES: readonly OutfittingModule[];
39
+
40
+ export { UTILITY_MODULES };
@@ -0,0 +1 @@
1
+ export{UTILITY_MODULES}from"../chunk-A3NM7SAJ.js"; //# sourceMappingURL=modules-utility.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"O"}