@elite-dangerous-almanac/core 0.2.7 → 0.2.9

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 (266) hide show
  1. package/PROVENANCE/astro/SOURCES.md +13 -12
  2. package/PROVENANCE/commodities/SOURCES.md +50 -6
  3. package/PROVENANCE/equipment/SOURCES.md +229 -29
  4. package/PROVENANCE/i18n/SOURCES.md +328 -73
  5. package/PROVENANCE/ships/SOURCES.md +352 -216
  6. package/README.md +30 -7
  7. package/THIRD_PARTY_NOTICES.md +12 -1
  8. package/dist/astro/body-rings.d.ts +2 -2
  9. package/dist/astro/codex-region-lookup.d.ts +1 -1
  10. package/dist/astro/codex-region-lookup.js +1 -1
  11. package/dist/astro/hand-authored-regions.d.ts +1 -1
  12. package/dist/astro/index.d.ts +1 -1
  13. package/dist/astro/index.js +1 -1
  14. package/dist/astro/naming-region-origins.d.ts +1 -1
  15. package/dist/astro/naming-region-origins.js +1 -1
  16. package/dist/astro/nebulae-all.d.ts +4 -6
  17. package/dist/astro/nebulae-all.js +1 -1
  18. package/dist/astro/nebulae-all.js.map +1 -1
  19. package/dist/astro/nebulae-planetary.d.ts +4 -5
  20. package/dist/astro/nebulae-planetary.js +1 -1
  21. package/dist/astro/nebulae-procgen.d.ts +3 -3
  22. package/dist/astro/nebulae-real.d.ts +3 -3
  23. package/dist/astro/nebulae.d.ts +8 -8
  24. package/dist/astro/permit-locked-regions.d.ts +2 -2
  25. package/dist/astro/permit-locked-systems.d.ts +1 -1
  26. package/dist/astro/permit-locks.d.ts +2 -2
  27. package/dist/astro/procedural-system.d.ts +3 -3
  28. package/dist/astro/procedural-system.js +1 -1
  29. package/dist/astro/system-address.d.ts +1 -1
  30. package/dist/astro/system-address.js +1 -1
  31. package/dist/astro/system-name.js +1 -1
  32. package/dist/{chunk-XSLPWM5N.js → chunk-2J6NNI3Y.js} +1 -1
  33. package/dist/{chunk-DWRNXUAX.js → chunk-2KIZN3BY.js} +1 -1
  34. package/dist/{chunk-J7BM5NGK.js → chunk-2TY42PTF.js} +1 -1
  35. package/dist/{chunk-MVBVXK3G.js → chunk-3GNYPM6J.js} +1 -1
  36. package/dist/{chunk-MVBVXK3G.js.map → chunk-3GNYPM6J.js.map} +1 -1
  37. package/dist/{chunk-773VO2GK.js → chunk-4T3TTYUT.js} +1 -1
  38. package/dist/{chunk-773VO2GK.js.map → chunk-4T3TTYUT.js.map} +1 -1
  39. package/dist/chunk-7C7NJWCF.js +1 -0
  40. package/dist/chunk-7C7NJWCF.js.map +1 -0
  41. package/dist/{chunk-FMA36V6A.js → chunk-7Y5EK2VO.js} +1 -1
  42. package/dist/{chunk-FMA36V6A.js.map → chunk-7Y5EK2VO.js.map} +1 -1
  43. package/dist/chunk-AC3U7LRK.js +1 -0
  44. package/dist/{chunk-MGRDB2BZ.js.map → chunk-AC3U7LRK.js.map} +1 -1
  45. package/dist/{chunk-BJU27V6C.js → chunk-AUBV6S7V.js} +1 -1
  46. package/dist/{chunk-BJU27V6C.js.map → chunk-AUBV6S7V.js.map} +1 -1
  47. package/dist/{chunk-DI5RXSJR.js → chunk-BVLBS2QY.js} +1 -1
  48. package/dist/{chunk-DI5RXSJR.js.map → chunk-BVLBS2QY.js.map} +1 -1
  49. package/dist/chunk-C3YZ5KTA.js +1 -0
  50. package/dist/chunk-C3YZ5KTA.js.map +1 -0
  51. package/dist/{chunk-6UNAD74Z.js → chunk-C4FUV6GF.js} +1 -1
  52. package/dist/{chunk-6UNAD74Z.js.map → chunk-C4FUV6GF.js.map} +1 -1
  53. package/dist/chunk-CEF7SMB2.js +1 -0
  54. package/dist/chunk-CEF7SMB2.js.map +1 -0
  55. package/dist/chunk-E2HDF6PJ.js +1 -0
  56. package/dist/chunk-E2HDF6PJ.js.map +1 -0
  57. package/dist/{chunk-OFZGNWBT.js → chunk-ETREYN5U.js} +1 -1
  58. package/dist/{chunk-OFZGNWBT.js.map → chunk-ETREYN5U.js.map} +1 -1
  59. package/dist/{chunk-KBCA4GEZ.js → chunk-FP2TQJZP.js} +1 -1
  60. package/dist/{chunk-F7VWRDSL.js → chunk-G7WARJ3X.js} +1 -1
  61. package/dist/chunk-G7WARJ3X.js.map +1 -0
  62. package/dist/{chunk-Z4OUB4SJ.js → chunk-GLTCCDN5.js} +1 -1
  63. package/dist/{chunk-Z4OUB4SJ.js.map → chunk-GLTCCDN5.js.map} +1 -1
  64. package/dist/chunk-GVNTKCVF.js +1 -0
  65. package/dist/chunk-GVNTKCVF.js.map +1 -0
  66. package/dist/{chunk-Q6YDPREF.js → chunk-GZLD7RTK.js} +1 -1
  67. package/dist/{chunk-Q6YDPREF.js.map → chunk-GZLD7RTK.js.map} +1 -1
  68. package/dist/chunk-HIJR7DOC.js +1 -0
  69. package/dist/chunk-HIJR7DOC.js.map +1 -0
  70. package/dist/{chunk-ETWMPMZP.js → chunk-K5JK3XQB.js} +1 -1
  71. package/dist/{chunk-GRIK3EDH.js → chunk-KY7KSPU6.js} +1 -1
  72. package/dist/{chunk-GRIK3EDH.js.map → chunk-KY7KSPU6.js.map} +1 -1
  73. package/dist/{chunk-EHFHRQEP.js → chunk-M4STXLXO.js} +1 -1
  74. package/dist/{chunk-EHFHRQEP.js.map → chunk-M4STXLXO.js.map} +1 -1
  75. package/dist/{chunk-NZXSIHAW.js → chunk-OSMBAFRW.js} +1 -1
  76. package/dist/{chunk-NZXSIHAW.js.map → chunk-OSMBAFRW.js.map} +1 -1
  77. package/dist/chunk-PIU24HRN.js +1 -0
  78. package/dist/chunk-PIU24HRN.js.map +1 -0
  79. package/dist/{chunk-ELT3FEA4.js → chunk-PKKBYBL4.js} +1 -1
  80. package/dist/{chunk-ELT3FEA4.js.map → chunk-PKKBYBL4.js.map} +1 -1
  81. package/dist/{chunk-6HMIF2RJ.js → chunk-Q647OXON.js} +1 -1
  82. package/dist/{chunk-6HMIF2RJ.js.map → chunk-Q647OXON.js.map} +1 -1
  83. package/dist/{chunk-BMQM4JBL.js → chunk-QPT2WJYN.js} +1 -1
  84. package/dist/{chunk-BMQM4JBL.js.map → chunk-QPT2WJYN.js.map} +1 -1
  85. package/dist/{chunk-A6OINYNP.js → chunk-R2AEZYX7.js} +1 -1
  86. package/dist/chunk-RA4YJBU5.js +1 -0
  87. package/dist/chunk-RA4YJBU5.js.map +1 -0
  88. package/dist/{chunk-MRLUWHGI.js → chunk-RJ3ZLQRB.js} +1 -1
  89. package/dist/{chunk-MRLUWHGI.js.map → chunk-RJ3ZLQRB.js.map} +1 -1
  90. package/dist/chunk-SFEQXUIA.js +1 -0
  91. package/dist/chunk-SIL356HB.js +1 -0
  92. package/dist/chunk-SIL356HB.js.map +1 -0
  93. package/dist/chunk-SS7HVNP5.js +1 -0
  94. package/dist/chunk-SS7HVNP5.js.map +1 -0
  95. package/dist/chunk-TRGHPX2O.js +1 -0
  96. package/dist/chunk-TRGHPX2O.js.map +1 -0
  97. package/dist/{chunk-GMTAFUAG.js → chunk-TYRH73MO.js} +1 -1
  98. package/dist/{chunk-GMTAFUAG.js.map → chunk-TYRH73MO.js.map} +1 -1
  99. package/dist/{chunk-7TVFV3VO.js → chunk-U3IRMXMR.js} +1 -1
  100. package/dist/{chunk-A7IVMYNF.js → chunk-U73MBQ45.js} +1 -1
  101. package/dist/{chunk-A7IVMYNF.js.map → chunk-U73MBQ45.js.map} +1 -1
  102. package/dist/{chunk-IZIIGK3W.js → chunk-UE22QU7A.js} +1 -1
  103. package/dist/{chunk-IZIIGK3W.js.map → chunk-UE22QU7A.js.map} +1 -1
  104. package/dist/{chunk-DBDCOHI4.js → chunk-UI5RROGI.js} +1 -1
  105. package/dist/{chunk-DBDCOHI4.js.map → chunk-UI5RROGI.js.map} +1 -1
  106. package/dist/chunk-URRPEUIK.js +1 -0
  107. package/dist/{chunk-QJECDMQQ.js.map → chunk-URRPEUIK.js.map} +1 -1
  108. package/dist/chunk-UTWZZOSA.js +1 -0
  109. package/dist/chunk-UTWZZOSA.js.map +1 -0
  110. package/dist/{chunk-ZEN5K3GE.js → chunk-UVX7RCMP.js} +1 -1
  111. package/dist/{chunk-ZEN5K3GE.js.map → chunk-UVX7RCMP.js.map} +1 -1
  112. package/dist/{chunk-7ATBEOVC.js → chunk-WG4DPXJI.js} +1 -1
  113. package/dist/{chunk-XFDMCPDW.js → chunk-WZIBBJHA.js} +1 -1
  114. package/dist/{chunk-XFDMCPDW.js.map → chunk-WZIBBJHA.js.map} +1 -1
  115. package/dist/{chunk-7S7ZTZZY.js → chunk-X3MXPE7G.js} +1 -1
  116. package/dist/{chunk-7S7ZTZZY.js.map → chunk-X3MXPE7G.js.map} +1 -1
  117. package/dist/{chunk-SD6GNFDX.js → chunk-YBE5M27G.js} +1 -1
  118. package/dist/{chunk-SD6GNFDX.js.map → chunk-YBE5M27G.js.map} +1 -1
  119. package/dist/chunk-ZBUTGTZ3.js +1 -0
  120. package/dist/chunk-ZBUTGTZ3.js.map +1 -0
  121. package/dist/commodities/commodities-all.d.ts +2 -2
  122. package/dist/commodities/commodities-all.js +1 -1
  123. package/dist/commodities/commodities-rare.d.ts +3 -4
  124. package/dist/commodities/commodities-rare.js +1 -1
  125. package/dist/commodities/commodities-standard.d.ts +7 -7
  126. package/dist/commodities/commodities-standard.js +1 -1
  127. package/dist/commodities/commodities.d.ts +12 -12
  128. package/dist/commodities/commodities.js +1 -1
  129. package/dist/commodities/index.js +1 -1
  130. package/dist/equipment/engineering.d.ts +58 -1
  131. package/dist/equipment/engineering.js +1 -1
  132. package/dist/equipment/index.d.ts +14 -3
  133. package/dist/equipment/index.js +1 -1
  134. package/dist/equipment/modification-journal.js +1 -1
  135. package/dist/equipment/modifications.d.ts +43 -11
  136. package/dist/equipment/modifications.js +1 -1
  137. package/dist/equipment/suits.d.ts +2 -115
  138. package/dist/equipment/suits.js +1 -1
  139. package/dist/equipment/tools.d.ts +102 -0
  140. package/dist/equipment/tools.js +1 -0
  141. package/dist/equipment/tools.js.map +1 -0
  142. package/dist/equipment/upgrade-costs.d.ts +2 -3
  143. package/dist/equipment/upgrade-costs.js +1 -1
  144. package/dist/equipment/weapons.d.ts +2 -121
  145. package/dist/equipment/weapons.js +1 -1
  146. package/dist/i18n/blueprints.d.ts +2 -3
  147. package/dist/i18n/blueprints.js +1 -1
  148. package/dist/i18n/commodities.d.ts +36 -0
  149. package/dist/i18n/commodities.js +1 -0
  150. package/dist/i18n/commodities.js.map +1 -0
  151. package/dist/i18n/experimental-effect-descriptions.d.ts +5 -6
  152. package/dist/i18n/experimental-effect-descriptions.js +1 -1
  153. package/dist/i18n/experimental-effects.d.ts +2 -3
  154. package/dist/i18n/experimental-effects.js +1 -1
  155. package/dist/i18n/index.d.ts +87 -1
  156. package/dist/i18n/index.js +1 -1
  157. package/dist/i18n/materials.d.ts +2 -4
  158. package/dist/i18n/materials.js +1 -1
  159. package/dist/i18n/micro-resources.d.ts +2 -4
  160. package/dist/i18n/micro-resources.js +1 -1
  161. package/dist/i18n/module-families.d.ts +3 -5
  162. package/dist/i18n/module-families.js +1 -1
  163. package/dist/i18n/modules.d.ts +3 -6
  164. package/dist/i18n/modules.js +1 -1
  165. package/dist/i18n/personal-modifications.d.ts +66 -0
  166. package/dist/i18n/personal-modifications.js +1 -0
  167. package/dist/i18n/personal-modifications.js.map +1 -0
  168. package/dist/i18n/personal-tools.d.ts +33 -0
  169. package/dist/i18n/personal-tools.js +1 -0
  170. package/dist/i18n/personal-tools.js.map +1 -0
  171. package/dist/i18n/personal-weapons.d.ts +32 -0
  172. package/dist/i18n/personal-weapons.js +1 -0
  173. package/dist/i18n/personal-weapons.js.map +1 -0
  174. package/dist/i18n/pre-engineered.d.ts +1 -1
  175. package/dist/i18n/slots.d.ts +2 -2
  176. package/dist/i18n/suits.d.ts +89 -0
  177. package/dist/i18n/suits.js +1 -0
  178. package/dist/i18n/suits.js.map +1 -0
  179. package/dist/materials/index.d.ts +4 -3
  180. package/dist/materials/index.js +1 -1
  181. package/dist/materials/materials-all.d.ts +2 -2
  182. package/dist/materials/materials-all.js +1 -1
  183. package/dist/materials/materials-raw.d.ts +3 -4
  184. package/dist/materials/materials-raw.js +1 -1
  185. package/dist/materials/materials.d.ts +18 -15
  186. package/dist/materials/materials.js +1 -1
  187. package/dist/materials/micro-resources-all.d.ts +2 -2
  188. package/dist/materials/micro-resources-all.js +1 -1
  189. package/dist/materials/micro-resources-component.d.ts +2 -2
  190. package/dist/materials/micro-resources-consumable.d.ts +2 -2
  191. package/dist/materials/micro-resources-data.d.ts +2 -2
  192. package/dist/materials/micro-resources-item.d.ts +2 -2
  193. package/dist/materials/micro-resources.d.ts +17 -14
  194. package/dist/materials/micro-resources.js +1 -1
  195. package/dist/ships/ammunition.d.ts +4 -4
  196. package/dist/ships/blueprint-costs.d.ts +13 -13
  197. package/dist/ships/blueprint-costs.js +1 -1
  198. package/dist/ships/blueprint-journal.d.ts +3 -3
  199. package/dist/ships/blueprint-journal.js +1 -1
  200. package/dist/ships/blueprints.d.ts +3 -3
  201. package/dist/ships/build-metrics.d.ts +2 -1
  202. package/dist/ships/build-metrics.js +1 -1
  203. package/dist/ships/default-loadouts.d.ts +2 -3
  204. package/dist/ships/default-loadouts.js +1 -1
  205. package/dist/ships/engineering-options.d.ts +29 -32
  206. package/dist/ships/engineering-options.js +1 -1
  207. package/dist/ships/engineering.d.ts +1 -2
  208. package/dist/ships/engineering.js +1 -1
  209. package/dist/ships/experimental-effect-costs.d.ts +1 -1
  210. package/dist/ships/gunsights.d.ts +3 -3
  211. package/dist/ships/heat.d.ts +1 -1
  212. package/dist/ships/index.d.ts +4 -5
  213. package/dist/ships/index.js +1 -1
  214. package/dist/ships/loadout-validation.d.ts +8 -3
  215. package/dist/ships/loadout-validation.js +1 -1
  216. package/dist/ships/module-families.d.ts +1 -1
  217. package/dist/ships/modules-all.d.ts +2 -3
  218. package/dist/ships/modules-all.js +1 -1
  219. package/dist/ships/modules-core.d.ts +3 -3
  220. package/dist/ships/modules-hardpoint.d.ts +4 -5
  221. package/dist/ships/modules-hardpoint.js +1 -1
  222. package/dist/ships/modules-internal.d.ts +19 -9
  223. package/dist/ships/modules-internal.js +1 -1
  224. package/dist/ships/modules-utility.d.ts +3 -4
  225. package/dist/ships/modules-utility.js +1 -1
  226. package/dist/ships/modules.d.ts +31 -25
  227. package/dist/ships/modules.js +1 -1
  228. package/dist/ships/pre-engineered-stats.d.ts +1 -1
  229. package/dist/ships/pre-engineered-stats.js +1 -1
  230. package/dist/ships/pre-engineered.d.ts +9 -10
  231. package/dist/ships/pre-engineered.js +1 -1
  232. package/dist/ships/ship-loadout.d.ts +13 -7
  233. package/dist/ships/ship-loadout.js +1 -1
  234. package/dist/ships/ships.d.ts +1 -2
  235. package/dist/ships/ships.js +1 -1
  236. package/dist/ships/slots.d.ts +5 -5
  237. package/dist/suits-B37rAORs.d.ts +414 -0
  238. package/dist/{system-address-cyJaeZIS.d.ts → system-address-DmzXRD48.d.ts} +6 -4
  239. package/package.json +25 -1
  240. package/dist/chunk-4U7KYQGK.js +0 -1
  241. package/dist/chunk-4U7KYQGK.js.map +0 -1
  242. package/dist/chunk-6GJHUWMO.js +0 -1
  243. package/dist/chunk-6GJHUWMO.js.map +0 -1
  244. package/dist/chunk-77TT4K53.js +0 -1
  245. package/dist/chunk-B7EYTZRK.js +0 -1
  246. package/dist/chunk-B7EYTZRK.js.map +0 -1
  247. package/dist/chunk-C5HG4GJI.js +0 -1
  248. package/dist/chunk-C5HG4GJI.js.map +0 -1
  249. package/dist/chunk-F7VWRDSL.js.map +0 -1
  250. package/dist/chunk-KLC5XT6F.js +0 -1
  251. package/dist/chunk-KLC5XT6F.js.map +0 -1
  252. package/dist/chunk-MGRDB2BZ.js +0 -1
  253. package/dist/chunk-QJECDMQQ.js +0 -1
  254. package/dist/chunk-TSEDU73T.js +0 -1
  255. package/dist/chunk-TSEDU73T.js.map +0 -1
  256. package/dist/chunk-XRGECU7S.js +0 -1
  257. package/dist/chunk-XRGECU7S.js.map +0 -1
  258. /package/dist/{chunk-XSLPWM5N.js.map → chunk-2J6NNI3Y.js.map} +0 -0
  259. /package/dist/{chunk-DWRNXUAX.js.map → chunk-2KIZN3BY.js.map} +0 -0
  260. /package/dist/{chunk-J7BM5NGK.js.map → chunk-2TY42PTF.js.map} +0 -0
  261. /package/dist/{chunk-KBCA4GEZ.js.map → chunk-FP2TQJZP.js.map} +0 -0
  262. /package/dist/{chunk-ETWMPMZP.js.map → chunk-K5JK3XQB.js.map} +0 -0
  263. /package/dist/{chunk-A6OINYNP.js.map → chunk-R2AEZYX7.js.map} +0 -0
  264. /package/dist/{chunk-77TT4K53.js.map → chunk-SFEQXUIA.js.map} +0 -0
  265. /package/dist/{chunk-7TVFV3VO.js.map → chunk-U3IRMXMR.js.map} +0 -0
  266. /package/dist/{chunk-7ATBEOVC.js.map → chunk-WG4DPXJI.js.map} +0 -0
@@ -31,7 +31,7 @@ interface DefaultLoadout {
31
31
  readonly modules: readonly DefaultLoadoutModule[];
32
32
  }
33
33
  /**
34
- * Default loadouts for all 48 player-flyable hulls, in
34
+ * Default loadouts for every player-flyable hull, in
35
35
  * {@link ships!SHIPS | SHIPS} catalogue order.
36
36
  *
37
37
  * @remarks
@@ -42,7 +42,6 @@ interface DefaultLoadout {
42
42
  * ```ts
43
43
  * import { DEFAULT_LOADOUTS } from '@elite-dangerous-almanac/core/ships/default-loadouts';
44
44
  *
45
- * DEFAULT_LOADOUTS.length; // -> 48
46
45
  * DEFAULT_LOADOUTS[0]?.modules.find((module) => module.slot === 'FrameShiftDrive')?.symbol;
47
46
  * // -> 'Int_Hyperdrive_Size2_Class1'
48
47
  * ```
@@ -60,7 +59,7 @@ declare const DEFAULT_LOADOUTS: readonly DefaultLoadout[];
60
59
  * ```ts
61
60
  * import { getDefaultLoadout } from '@elite-dangerous-almanac/core/ships/default-loadouts';
62
61
  *
63
- * getDefaultLoadout(' sidewinder ')?.modules.length; // -> 16
62
+ * getDefaultLoadout(' sidewinder ')?.symbol; // -> 'SideWinder'
64
63
  * getDefaultLoadout('not_a_ship'); // -> null
65
64
  * ```
66
65
  */
@@ -1 +1 @@
1
- export{DEFAULT_LOADOUTS,getDefaultLoadout}from"../chunk-GRIK3EDH.js"; //# sourceMappingURL=default-loadouts.js.map
1
+ export{DEFAULT_LOADOUTS,getDefaultLoadout}from"../chunk-KY7KSPU6.js"; //# sourceMappingURL=default-loadouts.js.map
@@ -8,20 +8,17 @@
8
8
  * this module?" is the question the game actually answers. So modules are grouped, and
9
9
  * each group lists what it offers.
10
10
  *
11
- * The catalogue groups 1000 of the 1194 modules — every stock module with an ordinary
12
- * engineering menu. The other 194 have no ordinary menu: whole families (fuel tanks,
11
+ * The catalogue groups every stock module with an ordinary engineering menu. The rest
12
+ * have no ordinary menu: whole families (fuel tanks,
13
13
  * cargo racks, passenger cabins, the repair, recon, research, decontamination and
14
14
  * multi-limpet controllers, meta-alloy and ordinary module reinforcement, the Pulse Wave
15
15
  * Analyser, the mining launchers, Shock Cannons, Nanite Torpedo Pylons, fighter and vehicle
16
16
  * hangars, docking computers and Supercruise Assist, the module stabilisers, the planetary
17
17
  * approach suites, the cargo hatch and the AX utility modules), plus the individual
18
18
  * modules denied every ordinary blueprint — every anti-xeno multi-cannon and missile rack,
19
- * the Enzyme Missile Rack, all seven mining tools, the remote-release launchers and the Mk II
20
- * Plasma Shock Accelerator. Six module symbols without a menu still have a Mercenary upgrade
21
- * route: the Enzyme Missile Rack, fixed Mining Laser, fixed Abrasion Blaster, size-5 class-2
22
- * Module Reinforcement Package, and size-5 and size-6 cargo racks. Their qualifying articles can
23
- * take grades 2–5 of their bespoke recipes through
24
- * `ships/pre-engineered`; fixed community-goal cargo racks remain final articles.
19
+ * the Enzyme Missile Rack, every mining tool, the remote-release launchers and the Mk II
20
+ * Plasma Shock Accelerator. A few module symbols without a menu still have a Mercenary
21
+ * upgrade route through `ships/pre-engineered`; {@link getEngineeringGroup} names them.
25
22
  *
26
23
  * **A group is one menu.** Where the same kind of module comes in two flavours with
27
24
  * different menus, they are two groups: a Guardian Power Plant takes only Anti-Guardian
@@ -102,8 +99,7 @@ interface EngineeringOptionGroup {
102
99
  * ```ts
103
100
  * import { ENGINEERING_OPTION_GROUPS } from '@elite-dangerous-almanac/core/ships/engineering-options';
104
101
  *
105
- * ENGINEERING_OPTION_GROUPS['beamLasers'].experimentals.length; // -> 9
106
- * ENGINEERING_OPTION_GROUPS['beamLasers'].blueprints.length; // -> 7
102
+ * ENGINEERING_OPTION_GROUPS['beamLasers'].blueprints.includes('Weapon_Efficient'); // -> true
107
103
  * ```
108
104
  */
109
105
  declare const ENGINEERING_OPTION_GROUPS: Readonly<Record<EngineeringGroupId, EngineeringOptionGroup>>;
@@ -111,11 +107,13 @@ declare const ENGINEERING_OPTION_GROUPS: Readonly<Record<EngineeringGroupId, Eng
111
107
  * The group id a module is engineered as, or `null` when this catalogue does not group
112
108
  * it.
113
109
  *
114
- * `null` means **"this stock module has no ordinary engineering menu"**. For 188 of the
115
- * 194 ungrouped modules that is the same as "has no engineering route". Six instead
116
- * retain Mercenary upgrade routes: the Enzyme Missile Rack, fixed Mining Laser and Abrasion
110
+ * `null` means **"this stock module has no ordinary engineering menu"**. For nearly every
111
+ * ungrouped module that is the same as "has no engineering route". A few instead keep a
112
+ * Mercenary upgrade route: the Enzyme Missile Rack, fixed Mining Laser and Abrasion
117
113
  * Blaster, size-5 and size-6 cargo racks, and size-5 class-2 Module Reinforcement Package
118
- * have no stock menu while their qualifying Mercenary articles retain bespoke upgrade routes.
114
+ * have no stock menu, while their qualifying Mercenary articles take grades 2–5 of their
115
+ * bespoke recipes through `ships/pre-engineered`. The fixed community-goal cargo racks are
116
+ * final articles.
119
117
  * The build corpus also contains an unsupported declaration on the Mk II Plasma Shock
120
118
  * Accelerator, which upstream denies every blueprint.
121
119
  *
@@ -184,15 +182,15 @@ declare function getBlueprintsForModule(symbol: string): readonly string[];
184
182
  * Every experimental effect in a stock module's ordinary menu — its group's list, minus
185
183
  * the effects that particular module is excluded from.
186
184
  *
187
- * Most modules take their whole group's list, but 23 are exceptions: 13 Multi-cannons
188
- * cannot take Phasing Sequence, six dumbfire racks cannot take Drag Munitions, and four
185
+ * Most modules take their whole group's list, but some are exceptions: most Multi-cannons
186
+ * cannot take Phasing Sequence, dumbfire racks cannot take Drag Munitions, and some
189
187
  * missile racks are short of Penetrator Munitions or FSD Interrupt. Those are applied
190
188
  * here, so the result is the exact set for this module.
191
189
  *
192
- * **An empty array is the common answer, and it usually means "blueprints only".** 368
193
- * of the 1000 grouped modules have no experimental slot; all sit in the 27 of 48 groups
194
- * that offer none — life support, sensors, the limpet controllers, the utility scanners,
195
- * and every Guardian group, weapons and modules alike. An ungrouped module answers empty
190
+ * **An empty array is the common answer, and it usually means "blueprints only".** Whole
191
+ * groups offer no experimental effect at all life support, sensors, the limpet
192
+ * controllers, the utility scanners, and every Guardian group, weapons and modules alike
193
+ * so every module in them answers empty. An ungrouped module answers empty
196
194
  * too; {@link getEngineeringGroup} tells the two apart.
197
195
  *
198
196
  * @param symbol - A module symbol. Leading/trailing whitespace and case are ignored.
@@ -204,10 +202,10 @@ declare function getBlueprintsForModule(symbol: string): readonly string[];
204
202
  * ```ts
205
203
  * import { getExperimentalsForModule } from '@elite-dangerous-almanac/core/ships/engineering-options';
206
204
  *
207
- * getExperimentalsForModule('Hpt_MultiCannon_Fixed_Medium').length; // -> 12
205
+ * getExperimentalsForModule('Hpt_MultiCannon_Fixed_Medium').includes('special_phasing_sequence'); // -> true
208
206
  *
209
207
  * // The small Multi-cannon is one effect short — no Phasing Sequence.
210
- * getExperimentalsForModule('Hpt_MultiCannon_Fixed_Small').length; // -> 11
208
+ * getExperimentalsForModule('Hpt_MultiCannon_Fixed_Small').includes('special_phasing_sequence'); // -> false
211
209
  *
212
210
  * // The stock Abrasion Blaster has no ordinary engineering menu.
213
211
  * getExperimentalsForModule('Hpt_Mining_AbrBlstr_Fixed_Small'); // -> []
@@ -222,19 +220,18 @@ declare function getExperimentalsForModule(symbol: string): readonly string[];
222
220
  * `Weapon_LongRange` does not offer every effect listed here, only its own group's. Use
223
221
  * {@link getExperimentalsForModule} once you know the module — that is the exact answer.
224
222
  *
225
- * The groups name 85 of the 107 blueprints in `BLUEPRINTS`. Of the other 22, 21 are
226
- * Operations keys of modules sold already engineered rather than offered in a menu (see
227
- * `ships/pre-engineered`); the last is the fixed Expanded Cargo Rack reward identity.
228
- * All 22 answer `[]` here exactly as an unknown id would, so read this function's empty answer with
223
+ * The groups do not name every id in `BLUEPRINTS`. The ones they miss are Operations keys
224
+ * of modules sold already engineered rather than offered in a menu (see
225
+ * `ships/pre-engineered`), plus the fixed Expanded Cargo Rack reward identity.
226
+ * They answer `[]` here exactly as an unknown id would, so read this function's empty answer with
229
227
  * {@link getExperimentalsForModule} rather than as a claim about the recipe.
230
228
  *
231
- * Four Operations keys **are** named by a group, because they are recipes a player applies
229
+ * Some Operations keys **are** named by a group, because they are recipes a player applies
232
230
  * rather than a purchase: the Merc-Coin blueprints published with a full grade 1–5,
233
- * `FuelScoop_Efficiency` and the three lasers' `PulseLaser_ThermalPlasmaConversion`,
234
- * `BurstLaser_ThermalPlasmaConversion` and
235
- * `BeamLaser_ThermalPlasmaConversion`. Anti-Guardian Zone Resistance answers `[]`, and there
236
- * that is the exact answer rather
237
- * than a miss: it has no experimental slot, on any of the nine groups that offer it.
231
+ * `FuelScoop_Efficiency` and the lasers' `PulseLaser_ThermalPlasmaConversion`,
232
+ * `BurstLaser_ThermalPlasmaConversion` and `BeamLaser_ThermalPlasmaConversion`.
233
+ * Anti-Guardian Zone Resistance answers `[]`, and there that is the exact answer rather
234
+ * than a miss: it has no experimental slot, on any group that offers it.
238
235
  *
239
236
  * @param blueprintSymbol - A blueprint recipe's Frontier symbol, e.g. `"Weapon_Efficient"`.
240
237
  * Leading/trailing whitespace and case are ignored.
@@ -1 +1 @@
1
- export{ENGINEERING_OPTION_GROUPS,getBlueprintsForModule,getEngineeringGroup,getExperimentalsForBlueprint,getExperimentalsForModule}from"../chunk-EHFHRQEP.js"; //# sourceMappingURL=engineering-options.js.map
1
+ export{ENGINEERING_OPTION_GROUPS,getBlueprintsForModule,getEngineeringGroup,getExperimentalsForBlueprint,getExperimentalsForModule}from"../chunk-M4STXLXO.js"; //# sourceMappingURL=engineering-options.js.map
@@ -37,8 +37,7 @@ import './slots.js';
37
37
  * Frontier exposes; {@link ShipLoadout.applyBlueprint} performs that presentation step.
38
38
  *
39
39
  * The catalogues live in `./blueprints` and `./experimental-effects`; this module
40
- * holds no data. {@link ShipLoadout.applyBlueprint} uses this calculator, then presents
41
- * its result in Frontier's journal form.
40
+ * holds no data.
42
41
  *
43
42
  * @example
44
43
  * ```ts
@@ -1 +1 @@
1
- export{computeModifiers,sumMaterials}from"../chunk-A7IVMYNF.js"; //# sourceMappingURL=engineering.js.map
1
+ export{computeModifiers,sumMaterials}from"../chunk-U73MBQ45.js"; //# sourceMappingURL=engineering.js.map
@@ -41,7 +41,7 @@ declare const EXPERIMENTAL_EFFECT_COSTS: Readonly<Record<string, readonly Engine
41
41
  *
42
42
  * @remarks
43
43
  * Materials are the whole cost: an experimental effect charges no Merc Coin, unlike the
44
- * 25 blueprints whose {@link ships/blueprint-costs!getBlueprintCost | getBlueprintCost}
44
+ * blueprints whose {@link ships/blueprint-costs!getBlueprintCost | getBlueprintCost}
45
45
  * reports a non-zero `mercCoins`.
46
46
  *
47
47
  * @param experimentalEffectSymbol - The effect id, e.g. `"special_fsd_heavy"`, matched
@@ -49,9 +49,9 @@ type ShipGunsightCatalogue = Readonly<Record<string, ShipGunsight>>;
49
49
  * by {@link ships!SHIPS | SHIPS}.
50
50
  *
51
51
  * @remarks
52
- * The map, each hull array and every offset pair are deeply frozen. It contains 48
53
- * hulls and 234 hardpoints. Importing this module adds only the compact offset map; it
54
- * does not import the ship or outfitting catalogues.
52
+ * The map, each hull array and every offset pair are deeply frozen. It covers every
53
+ * hardpoint of every player-flyable hull. Importing this module adds only the compact
54
+ * offset map; it does not import the ship or outfitting catalogues.
55
55
  *
56
56
  * @example
57
57
  * ```ts
@@ -13,7 +13,7 @@
13
13
  * settles at heatLevel = √(thermal load / heatDissipation)
14
14
  * ```
15
15
  *
16
- * Two consequences are worth stating outright, because they are what the numbers mean:
16
+ * Two consequences follow, and they are what the numbers mean:
17
17
  * a build whose thermal load stays under the hull's `heatDissipation` **always settles**
18
18
  * below heat level `1` and never overheats, however long it holds the trigger; and one
19
19
  * whose load goes over it **never settles** — heat climbs until the ship cooks, and the
@@ -28,7 +28,7 @@
28
28
  * {@link ships/default-loadouts!DEFAULT_LOADOUTS | default-loadouts} subpath carries
29
29
  * the stock modules {@link ShipLoadout.default} turns into a live build.
30
30
  * - **Modules** — the {@link OutfittingModule} type and the lookups
31
- * ({@link getModuleBySymbol} & co.), which search all 1194 modules unless you hand
31
+ * ({@link getModuleBySymbol} & co.), which search the whole catalogue unless you hand
32
32
  * them a narrower set; capability guards such as {@link hasWeaponDamageStats} narrow
33
33
  * the sparse record before stat access. The catalogues live on explicit subpaths split
34
34
  * by Frontier's four outfitting categories —
@@ -111,8 +111,8 @@
111
111
  * ```
112
112
  *
113
113
  * @example
114
- * **The lookup layer.** One small hull catalogue, and 1194 modules split by Frontier's
115
- * four outfitting categories. Lookups ignore case and surrounding whitespace.
114
+ * **The lookup layer.** One small hull catalogue, and the outfitting modules split by
115
+ * Frontier's four categories. Lookups ignore case and surrounding whitespace.
116
116
  *
117
117
  * ```ts
118
118
  * import { getShipBySymbol } from '@elite-dangerous-almanac/core/ships/ships';
@@ -121,8 +121,7 @@
121
121
  *
122
122
  * getShipBySymbol('empire_trader')?.name; // -> 'Imperial Clipper'
123
123
  *
124
- * // Pass a category to bound what you bundle; omit it to search all 1194.
125
- * CORE_MODULES.length; // -> 516
124
+ * // Pass a category to bound what you bundle; omit it to search every module.
126
125
  * getModuleBySymbol('Int_Hyperdrive_Size6_Class5', CORE_MODULES)?.name;
127
126
  * // -> 'Frame Shift Drive'
128
127
  * ```
@@ -1 +1 @@
1
- export{LoadoutEditError,ShipLoadout}from"../chunk-TSEDU73T.js";export{hasFrameShiftDriveJumpStats,hasMassCurveStats,hasPowerDistributorStats,hasPowerGenerationStats,hasShieldRegenerationStats,hasWeaponDamageStats}from"../chunk-JTQVWIGL.js";export{OUTFITTING_FAMILIES}from"../chunk-M6G3UDTX.js";export{SHIP_GUNSIGHTS,getShipGunsight,projectGunsight}from"../chunk-XSN53F7W.js";export{validateLoadout}from"../chunk-MVBVXK3G.js";export{SHIP_MODULE_LIMITS,calculateModuleLimits}from"../chunk-KPETDYQX.js";export{BuildMetrics}from"../chunk-F7VWRDSL.js"; export{SHIPS,getShipByName,getShipBySymbol,getShipSlots}from"../chunk-6UNAD74Z.js";export{getLoadoutModifier,inspectSlef,parseSlef,stringifySlef,toSlef}from"../chunk-T4MKUKYS.js";export{getSourceModuleValue,sourcePurchaseFromLoadout,sumSourceModuleValues}from"../chunk-NIURLW2F.js";export{weaponsCapacitorMetrics}from"../chunk-M4FZRDAH.js";export{armourPiercingFactor,combinedRateOfFire,damageFalloff,damagePerSecond,energyPerSecond,heatPerSecond,splitDamage,sumWeaponMetrics,sustainedDamagePerSecond,sustainedFireFactor,weaponMetrics}from"../chunk-AAU7OM47.js";export{powerBudget}from"../chunk-GGQMIQPC.js";export{getPreEngineeredJournalModifiers,getPreEngineeredModifiers,getPreEngineeredStats,identifyPreEngineeredVariant,unresolvedModifiers}from"../chunk-4U7KYQGK.js";export{getBulkheadsForShip,getModuleBySymbol,getModulesByName}from"../chunk-NZXSIHAW.js";export{PRE_ENGINEERED_MODULES,getPreEngineeredVariants,isPreEngineered}from"../chunk-BJU27V6C.js";export{shieldCapacitorMetrics}from"../chunk-XQJERZUS.js";export{cellBankSummary,shieldRecovery}from"../chunk-JMAXSXXQ.js";export{shieldMassCurveMultiplier,shieldMetrics,shieldStrength}from"../chunk-5VWACBTN.js"; export{OVERHEAT_HEAT_LEVEL,effectiveWeaponThermalLoad,equilibriumHeatLevel,heatLevelAtTime,heatMetrics,secondsToHeatLevel}from"../chunk-6HA2YIKW.js";export{frameShiftDriveMassFactor,fuelPerJump,singleJumpRange,totalRange}from"../chunk-VTMCSCXV.js";export{calculateCargoCapacity,calculateFuelCapacity,calculatePassengerCapacity,calculateUnladenMass}from"../chunk-C3LLPLLD.js"; export{mobilityCapacitorMetrics}from"../chunk-VEEBJFJ7.js";export{mobilityMetrics,thrusterMassCurveMultiplier}from"../chunk-A4QKXXZD.js"; export{BLUEPRINTS,getBlueprint,getBlueprintGrade}from"../chunk-AYAKU4YA.js"; export{distributorMetrics}from"../chunk-M2TCZKRT.js"; export{EXPERIMENTAL_EFFECTS,getExperimentalEffect}from"../chunk-77I24V6B.js";export{ammunitionCapacity}from"../chunk-AA3K5XUE.js";export{armourMetrics}from"../chunk-Q5ALV3DI.js";export{effectiveHitPoints,mapDamageTypes,stackArmourResistance,stackShieldResistance,systemsResistance}from"../chunk-F44QX47A.js"; export{computeModifiers,sumMaterials}from"../chunk-A7IVMYNF.js"; export{resolveBlueprintForModule}from"../chunk-XSLPWM5N.js";export{ENGINEERING_OPTION_GROUPS,getBlueprintsForModule,getEngineeringGroup,getExperimentalsForBlueprint,getExperimentalsForModule}from"../chunk-EHFHRQEP.js"; export{SLOT_RESTRICTION_LABELS,enumerateSlots,parseSlotName}from"../chunk-RAO35XDF.js"; //# sourceMappingURL=index.js.map
1
+ export{LoadoutEditError,ShipLoadout}from"../chunk-HIJR7DOC.js";export{validateLoadout}from"../chunk-3GNYPM6J.js";export{SHIP_MODULE_LIMITS,calculateModuleLimits}from"../chunk-KPETDYQX.js";export{hasFrameShiftDriveJumpStats,hasMassCurveStats,hasPowerDistributorStats,hasPowerGenerationStats,hasShieldRegenerationStats,hasWeaponDamageStats}from"../chunk-JTQVWIGL.js";export{OUTFITTING_FAMILIES}from"../chunk-M6G3UDTX.js";export{SHIP_GUNSIGHTS,getShipGunsight,projectGunsight}from"../chunk-XSN53F7W.js";export{BuildMetrics}from"../chunk-G7WARJ3X.js";export{weaponsCapacitorMetrics}from"../chunk-M4FZRDAH.js";export{shieldCapacitorMetrics}from"../chunk-XQJERZUS.js";export{cellBankSummary,shieldRecovery}from"../chunk-JMAXSXXQ.js"; export{getLoadoutModifier,inspectSlef,parseSlef,stringifySlef,toSlef}from"../chunk-T4MKUKYS.js";export{getSourceModuleValue,sourcePurchaseFromLoadout,sumSourceModuleValues}from"../chunk-NIURLW2F.js";export{armourPiercingFactor,combinedRateOfFire,damageFalloff,damagePerSecond,energyPerSecond,heatPerSecond,splitDamage,sumWeaponMetrics,sustainedDamagePerSecond,sustainedFireFactor,weaponMetrics}from"../chunk-AAU7OM47.js";export{getPreEngineeredJournalModifiers,getPreEngineeredModifiers,getPreEngineeredStats,identifyPreEngineeredVariant,unresolvedModifiers}from"../chunk-C3YZ5KTA.js";export{PRE_ENGINEERED_MODULES,getPreEngineeredVariants,isPreEngineered}from"../chunk-AUBV6S7V.js";export{shieldMassCurveMultiplier,shieldMetrics,shieldStrength}from"../chunk-5VWACBTN.js";export{SHIPS,getShipByName,getShipBySymbol,getShipSlots}from"../chunk-C4FUV6GF.js";export{getBulkheadsForShip,getModuleBySymbol,getModulesByName}from"../chunk-OSMBAFRW.js"; export{powerBudget}from"../chunk-GGQMIQPC.js";export{frameShiftDriveMassFactor,fuelPerJump,singleJumpRange,totalRange}from"../chunk-VTMCSCXV.js";export{calculateCargoCapacity,calculateFuelCapacity,calculatePassengerCapacity,calculateUnladenMass}from"../chunk-C3LLPLLD.js"; export{mobilityCapacitorMetrics}from"../chunk-VEEBJFJ7.js";export{mobilityMetrics,thrusterMassCurveMultiplier}from"../chunk-A4QKXXZD.js"; export{distributorMetrics}from"../chunk-M2TCZKRT.js"; export{EXPERIMENTAL_EFFECTS,getExperimentalEffect}from"../chunk-77I24V6B.js";export{OVERHEAT_HEAT_LEVEL,effectiveWeaponThermalLoad,equilibriumHeatLevel,heatLevelAtTime,heatMetrics,secondsToHeatLevel}from"../chunk-6HA2YIKW.js";export{ammunitionCapacity}from"../chunk-AA3K5XUE.js";export{armourMetrics}from"../chunk-Q5ALV3DI.js";export{effectiveHitPoints,mapDamageTypes,stackArmourResistance,stackShieldResistance,systemsResistance}from"../chunk-F44QX47A.js"; export{computeModifiers,sumMaterials}from"../chunk-U73MBQ45.js"; export{resolveBlueprintForModule}from"../chunk-2J6NNI3Y.js";export{ENGINEERING_OPTION_GROUPS,getBlueprintsForModule,getEngineeringGroup,getExperimentalsForBlueprint,getExperimentalsForModule}from"../chunk-M4STXLXO.js";export{BLUEPRINTS,getBlueprint,getBlueprintGrade}from"../chunk-AYAKU4YA.js"; export{SLOT_RESTRICTION_LABELS,enumerateSlots,parseSlotName}from"../chunk-RAO35XDF.js"; //# sourceMappingURL=index.js.map
@@ -31,7 +31,7 @@ type LoadoutIssueCode = 'duplicateSlot' | 'unknownSlot' | 'missingRequiredSlot'
31
31
  * @remarks
32
32
  * `dry` is the fit alone — hull plus modules, an empty tank and no cargo. `unladen`
33
33
  * adds a full main tank, and is the figure the game and every outfitting tool call a
34
- * ship's unladen mass; note that {@link ships!ShipLoadout.unladenMass} is the `dry`
34
+ * ship's unladen mass; {@link ships!ShipLoadout.unladenMass} is the `dry`
35
35
  * figure, because that is what a journal's `UnladenMass` states. `laden` adds a full
36
36
  * hold on top.
37
37
  *
@@ -39,8 +39,13 @@ type LoadoutIssueCode = 'duplicateSlot' | 'unknownSlot' | 'missingRequiredSlot'
39
39
  * Failing only at `laden` is a warning: the hold is the one load a pilot chooses.
40
40
  */
41
41
  type ThrusterLoad = 'dry' | 'unladen' | 'laden';
42
- /** Stable machine-readable constraint behind an `incompatibleModule` issue. */
43
- type ModuleFitConstraint = 'immutableSlot' | 'armourRequired' | 'wrongHullArmour' | 'restrictedHull' | 'restrictedMount' | 'wrongCoreType' | 'hardpointRequired' | 'utilityRequired' | 'optionalInternalRequired' | 'coreModuleInOptionalSlot' | 'oversized' | 'unknownConstraint';
42
+ /**
43
+ * Stable machine-readable constraint behind an `incompatibleModule` issue.
44
+ *
45
+ * `builtInHullModule` is the only one that does not depend on the mount: the cargo hatch
46
+ * comes with the hull and goes in no mount an editor can set.
47
+ */
48
+ type ModuleFitConstraint = 'immutableSlot' | 'builtInHullModule' | 'armourRequired' | 'wrongHullArmour' | 'restrictedHull' | 'restrictedMount' | 'wrongCoreType' | 'hardpointRequired' | 'utilityRequired' | 'optionalInternalRequired' | 'coreModuleInOptionalSlot' | 'oversized' | 'unknownConstraint';
44
49
  /**
45
50
  * One language-neutral value carried by a structured loadout diagnostic: a scalar
46
51
  * string/number, or a string list the consumer can format for its locale. Paired name
@@ -1 +1 @@
1
- export{validateLoadout}from"../chunk-MVBVXK3G.js"; //# sourceMappingURL=loadout-validation.js.map
1
+ export{validateLoadout}from"../chunk-3GNYPM6J.js"; //# sourceMappingURL=loadout-validation.js.map
@@ -32,7 +32,7 @@ type OutfittingFamilyId = 'armour' | 'powerPlants' | 'engines' | 'fsd' | 'lifeSu
32
32
  *
33
33
  * @remarks
34
34
  * The names are Frontier's own outfitting category labels where the game publishes one,
35
- * and the Almanac's descriptive name for the 19 families it does not. They are
35
+ * and the Almanac's descriptive name for the families it does not. They are
36
36
  * canonical English, not localized UI text: use
37
37
  * `getOutfittingFamilyName` for a locale.
38
38
  *
@@ -9,7 +9,7 @@ import './slots.js';
9
9
  *
10
10
  * @remarks
11
11
  * **This module pulls in every module catalogue** — it exists for consumers that
12
- * really do want to search all 1194 modules (a "resolve any module id" lookup, say).
12
+ * really do want to search every module (a "resolve any module id" lookup, say).
13
13
  * If you only need one category, import that catalogue's module
14
14
  * (`./modules-core`, `./modules-internal`, `./modules-hardpoint`,
15
15
  * `./modules-utility`) and nothing else gets bundled.
@@ -35,8 +35,7 @@ import './slots.js';
35
35
  * ```ts
36
36
  * import { ALL_MODULES } from '@elite-dangerous-almanac/core/ships/modules-all';
37
37
  *
38
- * ALL_MODULES.length; // -> 1194
39
- * ALL_MODULES.filter((m) => m.category === 'utility').length; // -> 35
38
+ * ALL_MODULES.find((m) => m.symbol === 'Hpt_PulseLaser_Fixed_Small')?.category; // -> 'hardpoint'
40
39
  * ```
41
40
  */
42
41
  declare const ALL_MODULES: readonly OutfittingModule[];
@@ -1 +1 @@
1
- export{ALL_MODULES}from"../chunk-ZEN5K3GE.js"; //# sourceMappingURL=modules-all.js.map
1
+ export{ALL_MODULES}from"../chunk-UVX7RCMP.js"; //# sourceMappingURL=modules-all.js.map
@@ -20,20 +20,20 @@ import './slots.js';
20
20
  */
21
21
 
22
22
  /**
23
- * All 516 core internal modules, in Frontier's registry order.
23
+ * Every core internal module, in Frontier's registry order.
24
24
  *
25
25
  * @remarks
26
26
  * Every record has `category: 'core'`, added from the file it was read from
27
27
  * rather than repeated on every record. To keep the other three categories out of
28
28
  * your bundle, search this array directly — `CORE_MODULES.find((m) =>
29
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 1194 modules.
30
+ * rather than with the lookups in `./modules`, which default to the whole catalogue.
31
31
  *
32
32
  * @example
33
33
  * ```ts
34
34
  * import { CORE_MODULES } from '@elite-dangerous-almanac/core/ships/modules-core';
35
35
  *
36
- * CORE_MODULES.length; // -> 516
36
+ * CORE_MODULES.find((m) => m.symbol === 'Int_Powerplant_Size3_Class5')?.rating; // -> 'A'
37
37
  * ```
38
38
  */
39
39
  declare const CORE_MODULES: readonly OutfittingModule[];
@@ -21,22 +21,21 @@ import './slots.js';
21
21
  */
22
22
 
23
23
  /**
24
- * All 159 hardpoint modules, in Frontier's registry order.
24
+ * Every hardpoint module, in Frontier's registry order.
25
25
  *
26
26
  * @remarks
27
27
  * Every record has `category: 'hardpoint'`, added from the file it was read from
28
28
  * rather than repeated on every record. To keep the other three categories out of
29
29
  * your bundle, search this array directly — `HARDPOINT_MODULES.find((m) =>
30
30
  * m.symbol.toLowerCase() === wanted)`, lower-cased because a journal's symbols are —
31
- * rather than with the lookups in `./modules`, which default to all 1194 modules.
31
+ * rather than with the lookups in `./modules`, which default to the whole catalogue.
32
32
  *
33
33
  * @example
34
34
  * ```ts
35
35
  * import { HARDPOINT_MODULES } from '@elite-dangerous-almanac/core/ships/modules-hardpoint';
36
36
  *
37
- * HARDPOINT_MODULES.length; // -> 159
38
- * HARDPOINT_MODULES.filter((m) => m.familyId === 'beamLasers').length; // -> 12
39
- * HARDPOINT_MODULES.filter((m) => m.mount === 'Turreted').length; // turreted variants
37
+ * HARDPOINT_MODULES.find((m) => m.symbol === 'Hpt_PulseLaser_Fixed_Small')?.mount; // -> 'Fixed'
38
+ * HARDPOINT_MODULES.find((m) => m.familyId === 'beamLasers')?.name; // -> 'Beam Laser'
40
39
  * ```
41
40
  */
42
41
  declare const HARDPOINT_MODULES: readonly OutfittingModule[];
@@ -1 +1 @@
1
- export{HARDPOINT_MODULES}from"../chunk-773VO2GK.js"; //# sourceMappingURL=modules-hardpoint.js.map
1
+ export{HARDPOINT_MODULES}from"../chunk-4T3TTYUT.js"; //# sourceMappingURL=modules-hardpoint.js.map
@@ -7,12 +7,14 @@ import './slots.js';
7
7
  * The **optional internal** modules — the `internal` outfitting category:
8
8
  * everything that fills an optional internal slot (cargo racks, shield generators,
9
9
  * fuel scoops, refineries, passenger cabins, limpet and planetary controllers,
10
- * hull/module reinforcement, …).
10
+ * hull/module reinforcement, …), plus the articles the registry files here that an
11
+ * optional slot does not take: the hull's own Cargo Hatch and the Guardian hybrid
12
+ * power plants and distributors, which go in a core mount.
11
13
  *
12
14
  * The other categories live in `./modules-core`, `./modules-hardpoint` and
13
15
  * `./modules-utility`, so importing this module never bundles them.
14
16
  *
15
- * Identity primarily from EDCD FDevIDs (`outfitting.csv`), with six bundle-granted
17
+ * Identity primarily from EDCD FDevIDs (`outfitting.csv`), with the bundle-granted
16
18
  * Vessel Hangar variants from a public CAPI capture; stats from EDCD/coriolis-data and
17
19
  * EDSY, joined on `symbol`. See [`data/ships/SOURCES.md`](https://github.com/DarkSession/Elite-Dangerous-Almanac/blob/main/data/ships/SOURCES.md).
18
20
  *
@@ -20,21 +22,29 @@ import './slots.js';
20
22
  */
21
23
 
22
24
  /**
23
- * All 484 optional internal modules, in registry order.
25
+ * Every module in the `internal` outfitting category, in registry order.
24
26
  *
25
27
  * @remarks
26
28
  * Every record has `category: 'internal'`, 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 `INTERNAL_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 1194 modules.
29
+ * rather than repeated on every record. **The category is the registry's filing, not a
30
+ * fitting rule**, so do not read a fit off it: `ModularCargoBayDoor` (family
31
+ * `cargoHatches`) is the hull's built-in Cargo Hatch and goes in the fixed `CargoHatch`
32
+ * mount alone; the Guardian hybrid power plants and distributors carry a core
33
+ * {@link ships!OutfittingModule.slot | slot} and fit only that core mount; and others
34
+ * here reserve a restricted mount or a named hull. Ask
35
+ * {@link ships!ShipLoadout.modulesForSlot | ShipLoadout.modulesForSlot} what a mount
36
+ * takes rather than filtering this array by size.
37
+ *
38
+ * To keep the other three categories out of your bundle, search this array directly —
39
+ * `INTERNAL_MODULES.find((m) => m.symbol.toLowerCase() === wanted)`, lower-cased because
40
+ * a journal's symbols are — rather than with the lookups in `./modules`, which default
41
+ * to the whole catalogue.
31
42
  *
32
43
  * @example
33
44
  * ```ts
34
45
  * import { INTERNAL_MODULES } from '@elite-dangerous-almanac/core/ships/modules-internal';
35
46
  *
36
- * INTERNAL_MODULES.length; // -> 484
37
- * INTERNAL_MODULES.filter((m) => m.familyId === 'cargoRacks').length; // -> 16
47
+ * INTERNAL_MODULES.find((m) => m.symbol === 'Int_CargoRack_Size1_Class1')?.familyId; // -> 'cargoRacks'
38
48
  * ```
39
49
  */
40
50
  declare const INTERNAL_MODULES: readonly OutfittingModule[];
@@ -1 +1 @@
1
- export{INTERNAL_MODULES}from"../chunk-FMA36V6A.js"; //# sourceMappingURL=modules-internal.js.map
1
+ export{INTERNAL_MODULES}from"../chunk-7Y5EK2VO.js"; //# sourceMappingURL=modules-internal.js.map
@@ -20,21 +20,20 @@ import './slots.js';
20
20
  */
21
21
 
22
22
  /**
23
- * All 35 utility-mount modules, in Frontier's registry order.
23
+ * Every utility-mount module, in Frontier's registry order.
24
24
  *
25
25
  * @remarks
26
26
  * Every record has `category: 'utility'`, added from the file it was read from
27
27
  * rather than repeated on every record. To keep the other three categories out of
28
28
  * your bundle, search this array directly — `UTILITY_MODULES.find((m) =>
29
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 1194 modules.
30
+ * rather than with the lookups in `./modules`, which default to the whole catalogue.
31
31
  *
32
32
  * @example
33
33
  * ```ts
34
34
  * import { UTILITY_MODULES } from '@elite-dangerous-almanac/core/ships/modules-utility';
35
35
  *
36
- * UTILITY_MODULES.length; // -> 35
37
- * UTILITY_MODULES.filter((m) => m.familyId === 'shieldBoosters').length; // -> 5
36
+ * UTILITY_MODULES.find((m) => m.familyId === 'shieldBoosters')?.symbol; // -> 'Hpt_ShieldBooster_Size0_Class1'
38
37
  * ```
39
38
  */
40
39
  declare const UTILITY_MODULES: readonly OutfittingModule[];
@@ -1 +1 @@
1
- export{UTILITY_MODULES}from"../chunk-ELT3FEA4.js"; //# sourceMappingURL=modules-utility.js.map
1
+ export{UTILITY_MODULES}from"../chunk-PKKBYBL4.js"; //# sourceMappingURL=modules-utility.js.map
@@ -5,12 +5,12 @@ import { ModuleSlot, SlotRestriction } from './slots.js';
5
5
  /**
6
6
  * Outfitting-module types and lookups.
7
7
  *
8
- * Elite Dangerous has ~1200 fittable modules. This module holds the
8
+ * Elite Dangerous fits ships from a large outfitting registry. This module holds the
9
9
  * {@link OutfittingModule} record shape — a module's **identity and its stats**
10
10
  * together — and the functions that find one ({@link getModuleBySymbol},
11
11
  * {@link getModulesByName}, {@link getBulkheadsForShip}).
12
12
  *
13
- * **Every lookup searches all 1194 modules by default.** A journal `Item` string does
13
+ * **Every lookup searches every module by default.** A journal `Item` string does
14
14
  * not identify its outfitting category, so callers need no category for lookup:
15
15
  *
16
16
  * ```ts
@@ -21,13 +21,16 @@ import { ModuleSlot, SlotRestriction } from './slots.js';
21
21
  * subset — any array you have filtered yourself. The catalogue is also exported split
22
22
  * by Frontier's four outfitting categories:
23
23
  *
24
- * | Module | Export | Entries |
25
- * | --- | --- | --- |
26
- * | `./modules-core` | `CORE_MODULES` | 516 |
27
- * | `./modules-internal` | `INTERNAL_MODULES` | 484 |
28
- * | `./modules-hardpoint` | `HARDPOINT_MODULES` | 159 |
29
- * | `./modules-utility` | `UTILITY_MODULES` | 35 |
30
- * | `./modules-all` | `ALL_MODULES` | 1194 (the default) |
24
+ * Sizes are each module's import graph once your bundler has minified it — the
25
+ * published package itself is not minified — before any transport compression.
26
+ *
27
+ * | Module | Export | Minified | Gzipped |
28
+ * | --- | --- | --- | --- |
29
+ * | `./modules-core` | `CORE_MODULES` | ~129 KiB | ~12 KiB |
30
+ * | `./modules-internal` | `INTERNAL_MODULES` | ~128 KiB | ~13 KiB |
31
+ * | `./modules-hardpoint` | `HARDPOINT_MODULES` | ~70 KiB | ~8 KiB |
32
+ * | `./modules-utility` | `UTILITY_MODULES` | ~10 KiB | ~2 KiB |
33
+ * | `./modules-all` | `ALL_MODULES` | ~335 KiB | ~33 KiB |
31
34
  *
32
35
  * Those four are for **listing** a category — an outfitting screen's hardpoint tab.
33
36
  * They make poor narrowing arguments: no module symbol or display name is shared
@@ -44,7 +47,7 @@ import { ModuleSlot, SlotRestriction } from './slots.js';
44
47
  *
45
48
  * @remarks
46
49
  * **This is the one default that costs real bundle weight.** A lookup imported from
47
- * here pulls all four catalogues — ~338 KiB minified (~33 KiB gzipped) — since
50
+ * here pulls all four catalogues — ~337 KiB minified (~33 KiB gzipped) — since
48
51
  * that is what it falls back to, and passing an explicit catalogue does not undo it.
49
52
  * A build that must carry only one category should import that catalogue and search
50
53
  * it directly:
@@ -73,7 +76,11 @@ import { ModuleSlot, SlotRestriction } from './slots.js';
73
76
  * which are the same seven {@link CoreSlotType}s plus armour. A fuel tank is a `core`
74
77
  * module that also fits an optional slot.
75
78
  * - `internal` — optional internals (cargo racks, shield generators, fuel scoops,
76
- * passenger cabins, limpet and planetary controllers, …).
79
+ * passenger cabins, limpet and planetary controllers, …). The registry also files two
80
+ * kinds of article here that no optional slot takes: the built-in Cargo Hatch, which
81
+ * fits the hull's own fixed `CargoHatch` mount, and the Guardian hybrid power plants
82
+ * and distributors, which carry a core {@link OutfittingModule.slot | slot} and fit
83
+ * only that core mount.
77
84
  * - `hardpoint` — the weapons and tools mounted on a hardpoint.
78
85
  * - `utility` — the small utility-mount fittings (chaff, heat sinks, point defence,
79
86
  * shield boosters, scanners).
@@ -262,7 +269,7 @@ interface OutfittingModuleIdentity {
262
269
  * the seven {@link CoreSlotType} core functions.
263
270
  *
264
271
  * @remarks
265
- * Present on every `core` module, and on the fifteen Guardian Hybrid power plants
272
+ * Present on every `core` module, and on the Guardian Hybrid power plants
266
273
  * and power distributors — which Frontier files under `internal`, but which go in
267
274
  * a core mount. Absent on everything else, because there is no one mount to name:
268
275
  * a weapon, a utility fitting or an ordinary optional internal fits any mount of
@@ -338,8 +345,8 @@ interface OutfittingModuleIdentity {
338
345
  * that no outfitting screen sells. Absent on every module a station offers.
339
346
  *
340
347
  * @remarks
341
- * The fifteen are the nine starter `*_free` fittings and the six bundle-granted
342
- * Vessel Hangars. Each is a second identity for an article the game already sells:
348
+ * They are the starter `*_free` fittings and the bundle-granted Vessel Hangars. Each
349
+ * is a second identity for an article the game already sells:
343
350
  * `Int_Engine_Size2_Class1_free` is the 2E Thrusters again, which is why
344
351
  * {@link ShipLoadout.modulesForSlot} leaves them out — a picker that offered both
345
352
  * would list "2E Thrusters" twice, once unpriced.
@@ -377,7 +384,7 @@ interface OutfittingModuleIdentity {
377
384
  * rule: a mount's restriction says which modules it takes, this says which mounts
378
385
  * a module goes in. Most restricted families bind one way only — a cargo rack fits
379
386
  * a `cargo` mount *and* any unrestricted optional — so this is present on just the
380
- * five records the game sells for one kind of mount and nowhere else:
387
+ * records the game sells for one kind of mount and nowhere else:
381
388
  *
382
389
  * | Module | Requires |
383
390
  * | --- | --- |
@@ -434,12 +441,11 @@ interface OutfittingModuleIdentity {
434
441
  * discount or markup, which is what an outfitting screen quotes at 0% discount.
435
442
  *
436
443
  * @remarks
437
- * Absent on the handful of records no registry prices: the starter `*_free`
438
- * variants, the two Community Goal Corrosion Resistant Cargo Racks, and the 1B
439
- * shield generator records no outfitting
440
- * registry carries a figure for — among them the two Corrosion Resistant Cargo
441
- * Racks no station sells, which are not free. Treat `undefined` as "unknown", never
442
- * as free — see [`data/ships/SOURCES.md`](https://github.com/DarkSession/Elite-Dangerous-Almanac/blob/main/data/ships/SOURCES.md).
444
+ * Absent on the handful of records no registry prices: the grant-only `*_free`
445
+ * articles, the Community Goal Corrosion Resistant Cargo Racks, which no station
446
+ * sells but which are not free, and the 1B shield generator. Treat `undefined` as
447
+ * "unknown", never as free; see
448
+ * [`data/ships/SOURCES.md`](https://github.com/DarkSession/Elite-Dangerous-Almanac/blob/main/data/ships/SOURCES.md).
443
449
  */
444
450
  readonly cost?: number;
445
451
  }
@@ -525,8 +531,8 @@ interface OutfittingModuleStats {
525
531
  * outfitting screen labels SCO.
526
532
  *
527
533
  * @remarks
528
- * A sparse capability flag on the 36 Overcharge drives and absent everywhere else,
529
- * including on the 31 ordinary drives of the same sizes and ratings. Read it rather
534
+ * A sparse capability flag on the Overcharge drives and absent everywhere else,
535
+ * including on the ordinary drives of the same sizes and ratings. Read it rather
530
536
  * than matching `Int_Hyperdrive_Overcharge` on the symbol: the capability is the
531
537
  * record's to state, and a pre-engineered or fitted article carries the flag
532
538
  * through while its symbol is not always the one you looked up.
@@ -601,7 +607,7 @@ interface OutfittingModuleStats {
601
607
  * @remarks
602
608
  * A sparse capability flag rather than a percentage: `true` means the protection is
603
609
  * inherent or the grade-1 blueprint grants it, while absence means it is not granted.
604
- * The two Guardian Nanite Torpedo Pylons carry it inherently; read engineered
610
+ * The Guardian Nanite Torpedo Pylons carry it inherently; read engineered
605
611
  * protection from a fitted module's {@link FittedModule.effectiveStats}.
606
612
  */
607
613
  readonly guardianZoneResistance?: boolean;
@@ -798,7 +804,7 @@ interface OutfittingModule extends OutfittingModuleIdentity, OutfittingModuleSta
798
804
  * @param symbol - The internal identifier, e.g. `"Hpt_PulseLaser_Fixed_Small"`.
799
805
  * Leading/trailing whitespace and case are ignored, so the journal's lower-cased
800
806
  * form resolves too.
801
- * @param modules - Optional subset to search instead of all 1194 modules
807
+ * @param modules - Optional subset to search instead of every module
802
808
  * `CORE_MODULES`, `INTERNAL_MODULES`, `HARDPOINT_MODULES`, `UTILITY_MODULES`, or any
803
809
  * array you have filtered yourself. Omit it unless you specifically want to exclude
804
810
  * the other categories; a symbol is unique across all four.
@@ -1 +1 @@
1
- export{getBulkheadsForShip,getModuleBySymbol,getModulesByName}from"../chunk-NZXSIHAW.js"; //# sourceMappingURL=modules.js.map
1
+ export{getBulkheadsForShip,getModuleBySymbol,getModulesByName}from"../chunk-OSMBAFRW.js"; //# sourceMappingURL=modules.js.map