@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
@@ -1,121 +1,2 @@
1
- import { EquipmentGrade } from './suits.js';
2
-
3
- /**
4
- * Odyssey handheld weapons, their journal identifiers and grade-dependent damage.
5
- *
6
- * @packageDocumentation
7
- */
8
-
9
- /** A weapon manufacturer's shared Pioneer grade-upgrade recipe. */
10
- type WeaponUpgradeGroup = 'karma' | 'takada' | 'manticore';
11
- /** Technology suffix used to disambiguate personal-weapon modification recipes. */
12
- type PersonalWeaponEngineeringType = 'kinetic' | 'laser' | 'plasma';
13
- /** A handheld weapon's form factor. */
14
- type PersonalWeaponClass = 'pistol' | 'carbine' | 'rifle' | 'shotgun' | 'sniper' | 'launcher';
15
- /** Which suit weapon slot accepts the weapon. */
16
- type PersonalWeaponSlot = 'primary' | 'secondary';
17
- /** The damage family relevant to resistances and some modification recipes. */
18
- type PersonalDamageType = 'kinetic' | 'thermal' | 'plasma' | 'explosive';
19
- /** A handheld weapon firing cycle. */
20
- type PersonalFireMode = 'automatic' | 'semi-automatic' | 'burst';
21
- /** Grade-dependent stats for one handheld weapon. */
22
- interface PersonalWeaponGrade {
23
- /** Damage per projectile or pellet. */
24
- readonly damage: number;
25
- /** Permanent engineering-modification slots available, from `0` through `4`. */
26
- readonly modificationSlots: number;
27
- }
28
- /** One handheld weapon sold by Pioneer Supplies. */
29
- interface PersonalWeapon {
30
- /** Frontier item id reported by journal loadout events. */
31
- readonly symbol: string;
32
- /** English display name. */
33
- readonly name: string;
34
- /** Manufacturer recipe family used for grade upgrades. */
35
- readonly upgradeGroup: WeaponUpgradeGroup;
36
- /** Recipe suffix used when the journal omits a modification's weapon technology. */
37
- readonly engineeringType: PersonalWeaponEngineeringType;
38
- /** Weapon form factor. */
39
- readonly class: PersonalWeaponClass;
40
- /** Suit slot this weapon occupies. */
41
- readonly slot: PersonalWeaponSlot;
42
- /** Base damage family. */
43
- readonly damageType: PersonalDamageType;
44
- /** Firing cycle. */
45
- readonly fireMode: PersonalFireMode;
46
- /** Shots per second. */
47
- readonly rateOfFire: number;
48
- /** Rounds loaded in one magazine. */
49
- readonly magazineSize: number;
50
- /** Spare rounds carried before suit-capacity changes. */
51
- readonly reserveAmmo: number;
52
- /** Headshot damage multiplier (`2` means 200%). */
53
- readonly headshotMultiplier: number;
54
- /** Nominal effective range in metres. */
55
- readonly effectiveRange: number;
56
- /**
57
- * Grade records keyed by `"1"` through `"5"` — every weapon carries all five,
58
- * unlike {@link Suit.grades}, and `equipment.test.ts` pins that. Read one through
59
- * {@link getPersonalWeaponGrade} to get the same nullable answer suits give.
60
- */
61
- readonly grades: Readonly<Record<`${EquipmentGrade}`, PersonalWeaponGrade>>;
62
- }
63
- /**
64
- * All eleven handheld weapons in catalogue order.
65
- *
66
- * @example
67
- * ```ts
68
- * import { PERSONAL_WEAPONS } from '@elite-dangerous-almanac/core/equipment/weapons';
69
- * PERSONAL_WEAPONS.length; // -> 11
70
- * ```
71
- */
72
- declare const PERSONAL_WEAPONS: readonly PersonalWeapon[];
73
- /**
74
- * Look up a handheld weapon by its Frontier journal symbol, case-insensitively.
75
- *
76
- * @param symbol - Journal item id such as `"wpn_m_assaultrifle_kinetic_fauto"`,
77
- * matched case-insensitively after trimming surrounding whitespace.
78
- * @returns The frozen weapon record, or `null` when unknown.
79
- * @throws {TypeError} If `symbol` is present and not a string. A nullish symbol is a
80
- * miss, answered like an unrecognised one.
81
- * @example
82
- * ```ts
83
- * import { getPersonalWeaponBySymbol } from '@elite-dangerous-almanac/core/equipment/weapons';
84
- * getPersonalWeaponBySymbol('wpn_m_assaultrifle_kinetic_fauto')?.name; // -> 'Karma AR-50'
85
- * ```
86
- */
87
- declare function getPersonalWeaponBySymbol(symbol: string): PersonalWeapon | null;
88
- /**
89
- * Look up a handheld weapon by display name, case-insensitively.
90
- *
91
- * @param name - English display name such as `"Karma AR-50"`; surrounding
92
- * whitespace is ignored.
93
- * @returns The frozen weapon record, or `null` when unknown.
94
- * @throws {TypeError} If `name` is present and not a string. A nullish name is a miss,
95
- * answered like an unrecognised one.
96
- * @example
97
- * ```ts
98
- * import { getPersonalWeaponByName } from '@elite-dangerous-almanac/core/equipment/weapons';
99
- * getPersonalWeaponByName('Karma AR-50')?.symbol; // -> 'wpn_m_assaultrifle_kinetic_fauto'
100
- * ```
101
- */
102
- declare function getPersonalWeaponByName(name: string): PersonalWeapon | null;
103
- /**
104
- * Read one handheld weapon's stats at a grade.
105
- *
106
- * @param weapon - A catalogue weapon record.
107
- * @param grade - Integer grade `1`–`5`.
108
- * @returns The frozen grade record, or `null` when the record carries no such grade.
109
- * Every catalogued weapon carries all five, so the `null` is the same promise
110
- * {@link getSuitGrade} makes rather than an outcome the shipped catalogue produces —
111
- * write the two the same way and neither can surprise you.
112
- * @throws {RangeError} If `grade` is not an integer from 1 through 5.
113
- * @example
114
- * ```ts
115
- * import { PERSONAL_WEAPONS, getPersonalWeaponGrade } from '@elite-dangerous-almanac/core/equipment/weapons';
116
- * getPersonalWeaponGrade(PERSONAL_WEAPONS[0]!, 5)?.modificationSlots; // -> 4
117
- * ```
118
- */
119
- declare function getPersonalWeaponGrade(weapon: PersonalWeapon, grade: number): PersonalWeaponGrade | null;
120
-
121
- export { PERSONAL_WEAPONS, type PersonalDamageType, type PersonalFireMode, type PersonalWeapon, type PersonalWeaponClass, type PersonalWeaponEngineeringType, type PersonalWeaponGrade, type PersonalWeaponSlot, type WeaponUpgradeGroup, getPersonalWeaponByName, getPersonalWeaponBySymbol, getPersonalWeaponGrade };
1
+ import './engineering.js';
2
+ export { P as PERSONAL_WEAPONS, a as PersonalDamageType, b as PersonalFireMode, e as PersonalWeapon, f as PersonalWeaponClass, g as PersonalWeaponEngineeringType, h as PersonalWeaponGrade, i as PersonalWeaponMetrics, j as PersonalWeaponSlot, R as ReloadTime, k as ScopeMagnification, W as WeaponUpgradeGroup, n as getPersonalWeaponByName, o as getPersonalWeaponBySymbol, p as getPersonalWeaponGrade, u as personalWeaponMetrics } from '../suits-B37rAORs.js';
@@ -1 +1 @@
1
- export{PERSONAL_WEAPONS,getPersonalWeaponByName,getPersonalWeaponBySymbol,getPersonalWeaponGrade}from"../chunk-6GJHUWMO.js"; //# sourceMappingURL=weapons.js.map
1
+ export{PERSONAL_WEAPONS,getPersonalWeaponByName,getPersonalWeaponBySymbol,getPersonalWeaponGrade,personalWeaponMetrics}from"../chunk-PIU24HRN.js"; //# sourceMappingURL=weapons.js.map
@@ -4,9 +4,8 @@
4
4
  *
5
5
  * @param blueprintSymbol - Frontier's blueprint id, such as `"FSD_LongRange"`. Matching ignores
6
6
  * case and surrounding whitespace.
7
- * @param locale - A BCP 47 language or regional tag, such as `"de"`, `"de-DE"` or
8
- * `"en-GB"`. Matching is case-insensitive; underscores are accepted in place of
9
- * hyphens. A regional tag falls back to its language after an exact-locale miss.
7
+ * @param locale - A BCP 47 language or regional tag, such as `"de"` or `"de-DE"`; see
8
+ * {@link GameLocale} for how a tag is matched.
10
9
  * @returns The localized blueprint name; the canonical `Blueprint.name` for any English
11
10
  * tag; or `null` when the id is unknown, the locale is
12
11
  * unsupported, or the pinned source carries no value for that blueprint and locale.
@@ -1 +1 @@
1
- export{getBlueprintName}from"../chunk-DBDCOHI4.js"; //# sourceMappingURL=blueprints.js.map
1
+ export{getBlueprintName}from"../chunk-UI5RROGI.js"; //# sourceMappingURL=blueprints.js.map
@@ -0,0 +1,36 @@
1
+ /** Localized market-commodity display names, isolated from commodity metadata. */
2
+ /**
3
+ * Look up a market commodity's source-backed display name for a locale.
4
+ *
5
+ * @param symbol - Frontier's commodity symbol, such as `"LavianBrandy"`. Matching
6
+ * ignores case and surrounding whitespace, so the lower-cased form a market or journal
7
+ * line reports resolves too.
8
+ * @param locale - A BCP 47 language or regional tag, such as `"de"` or `"de-DE"`; see
9
+ * {@link GameLocale} for how a tag is matched.
10
+ * @returns The localized commodity name; the canonical `Commodity.name` for any English
11
+ * tag; or `null` when the symbol is unknown or the locale is not one of the six this
12
+ * catalogue stores.
13
+ * @remarks
14
+ * Standard and rare commodities share this one lookup, as they share one symbol space.
15
+ * All six stored locales are complete for this dataset, so a supported locale always
16
+ * answers. This function bundles names only, not categories or the `rare` flag.
17
+ *
18
+ * **This is a heavy `i18n` dataset**: six locales for every good in both commodity
19
+ * catalogues is ~101 KiB minified (~27 KiB gzipped). It has its own module so an application that
20
+ * never shows a translated commodity name does not pay for it — import it from
21
+ * `core/i18n/commodities` rather than the `core/i18n` barrel if you want that boundary
22
+ * to be explicit.
23
+ * @throws {TypeError} If `symbol` is present and not a string, or `locale` is not a
24
+ * string. A nullish `symbol` is a lookup miss and returns `null`.
25
+ * @example
26
+ * ```ts
27
+ * import { getCommodityName } from '@elite-dangerous-almanac/core/i18n/commodities';
28
+ *
29
+ * getCommodityName('LavianBrandy', 'de-DE'); // -> 'Lave-Brandy'
30
+ * getCommodityName('platinum', 'ru'); // -> 'Платина'
31
+ * getCommodityName('platinum', 'it'); // -> null
32
+ * ```
33
+ */
34
+ declare function getCommodityName(symbol: string, locale: string): string | null;
35
+
36
+ export { getCommodityName };
@@ -0,0 +1 @@
1
+ export{getCommodityName}from"../chunk-TRGHPX2O.js"; //# sourceMappingURL=commodities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"O"}
@@ -9,12 +9,11 @@
9
9
  * question — it names the damage split or behaviour the `modifiers` list cannot
10
10
  * express — and the two are deliberately not the same string.
11
11
  *
12
- * **This is the heaviest `i18n` dataset**: six locales of prose for all 86 effects is
13
- * ~129 KiB minified (~25 KiB gzipped), more than module names cost. Every other lookup
14
- * on this subpath carries short display names. It has its own module so an application
15
- * that never shows an effect description does not pay for it — import it from
16
- * `core/i18n/experimental-effect-descriptions` rather than the `core/i18n` barrel if
17
- * you want that boundary to be explicit.
12
+ * **This is a heavy `i18n` dataset**: six locales of prose for every effect is ~129 KiB
13
+ * minified (~25 KiB gzipped), more than module names cost. It has its own module so an
14
+ * application that never shows an effect description does not pay for it import it
15
+ * from `core/i18n/experimental-effect-descriptions` rather than the `core/i18n` barrel
16
+ * if you want that boundary to be explicit.
18
17
  *
19
18
  * @param experimentalEffectSymbol - Frontier's experimental-effect id. Matching ignores case and
20
19
  * surrounding whitespace.
@@ -1 +1 @@
1
- export{getExperimentalEffectDescription}from"../chunk-MRLUWHGI.js"; //# sourceMappingURL=experimental-effect-descriptions.js.map
1
+ export{getExperimentalEffectDescription}from"../chunk-RJ3ZLQRB.js"; //# sourceMappingURL=experimental-effect-descriptions.js.map
@@ -4,9 +4,8 @@
4
4
  *
5
5
  * @param experimentalEffectSymbol - Frontier's experimental-effect id, such as
6
6
  * `"special_concordant_sequence"`. Matching ignores case and surrounding whitespace.
7
- * @param locale - A BCP 47 language or regional tag, such as `"de"`, `"de-DE"` or
8
- * `"en-GB"`. Matching is case-insensitive; underscores are accepted in place of
9
- * hyphens. A regional tag falls back to its language after an exact-locale miss.
7
+ * @param locale - A BCP 47 language or regional tag, such as `"de"` or `"de-DE"`; see
8
+ * {@link GameLocale} for how a tag is matched.
10
9
  * @returns The localized effect name; the canonical `ExperimentalEffect.name` for any
11
10
  * English tag; or `null` when
12
11
  * the id is unknown, the locale is unsupported, or the pinned source carries no value
@@ -1 +1 @@
1
- export{getExperimentalEffectName}from"../chunk-BMQM4JBL.js"; //# sourceMappingURL=experimental-effects.js.map
1
+ export{getExperimentalEffectName}from"../chunk-QPT2WJYN.js"; //# sourceMappingURL=experimental-effects.js.map
@@ -1,13 +1,97 @@
1
+ /**
2
+ * Sparse, source-backed localized display names and descriptions for Elite Dangerous
3
+ * outfitting, personal-equipment, engineering, material and market-commodity
4
+ * catalogues.
5
+ *
6
+ * Each lookup takes the identifier its owning catalogue is keyed by — a Frontier symbol,
7
+ * or the library id where the game publishes none, as for a suit tool — and a BCP 47
8
+ * locale. English is complete: for a name catalogue it is exactly the owning record's
9
+ * `name`, and for a description catalogue it is the game's own display prose, which no
10
+ * catalogue otherwise publishes.
11
+ * Other locales are intentionally sparse: the function returns `null` when its pinned
12
+ * sources carry no translation, leaving the application in control of fallback policy.
13
+ * A source-backed localized spelling can be identical to English; the lookup returns
14
+ * explicit source values verbatim but never manufactures an English fallback.
15
+ * The catalogues carry English, French, German, Portuguese, Russian and Spanish only,
16
+ * each stored under a bare language tag: a regional or script subtag is dropped
17
+ * (`de-DE` → `de`), and any other language is an unsupported locale.
18
+ *
19
+ * **How sparse, dataset by dataset.** Each column below is the percentage of that
20
+ * lookup's keys carrying a stored value for the locale, so a `0` would mean the dataset
21
+ * holds nothing in that language at all and the lookup returns `null` for every key:
22
+ * most datasets are complete in every locale, while the outfitting families the game
23
+ * does not name separately have no locale at all. Plan fallback per
24
+ * lookup rather than per application. The table is generated from the
25
+ * [`data/i18n/` catalogues](https://github.com/DarkSession/Elite-Dangerous-Almanac/tree/main/data/i18n),
26
+ * so it moves when the data does.
27
+ *
28
+ * <!-- generated by scripts/i18n-coverage.mjs -->
29
+ * | Lookup | Keys | en | de | es | fr | pt | ru |
30
+ * | --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: |
31
+ * | `getBlueprintName` | 107 | 100 | 100 | 100 | 100 | 100 | 100 |
32
+ * | `getCommodityName` | 412 | 100 | 100 | 100 | 100 | 100 | 100 |
33
+ * | `getExperimentalEffectDescription` | 86 | 100 | 100 | 100 | 100 | 100 | 100 |
34
+ * | `getExperimentalEffectName` | 86 | 100 | 100 | 100 | 100 | 100 | 100 |
35
+ * | `getMaterialName` | 146 | 100 | 100 | 100 | 100 | 100 | 100 |
36
+ * | `getMicroResourceName` | 226 | 100 | 100 | 100 | 100 | 100 | 100 |
37
+ * | `getModuleName` | 1203 | 100 | 100 | 100 | 100 | 100 | 100 |
38
+ * | `getPersonalModificationDescription` | 31 | 100 | 100 | 100 | 100 | 100 | 100 |
39
+ * | `getPersonalModificationName` | 31 | 100 | 100 | 100 | 100 | 100 | 100 |
40
+ * | `getPersonalToolName` | 4 | 100 | 100 | 100 | 100 | 100 | 100 |
41
+ * | `getPersonalWeaponDescription` | 11 | 100 | 100 | 100 | 100 | 100 | 100 |
42
+ * | `getSuitDescription` | 19 | 100 | 100 | 100 | 100 | 100 | 100 |
43
+ * | `getSuitName` | 19 | 100 | 100 | 100 | 100 | 100 | 100 |
44
+ * | `getPreEngineeredVariantName` | 76 | 100 | 92 | 89 | 89 | 100 | 100 |
45
+ * | `getOutfittingFamilyName` | 77 | 100 | 75 | 75 | 75 | 75 | 75 |
46
+ * <!-- end generated -->
47
+ *
48
+ * Each dataset lives in a separate runtime module. Import from this barrel for
49
+ * convenience or from the corresponding `i18n/*` subpath for an explicit bundle
50
+ * boundary.
51
+ *
52
+ * Structured diagnostic helpers expose their English fallback only for English
53
+ * locales and return `null` otherwise, so a UI never mistakes English prose for a
54
+ * requested translation. Stable codes and `params` remain available for applications
55
+ * that supply their own message catalogues.
56
+ *
57
+ * @example
58
+ * ```ts
59
+ * import {
60
+ * getBlueprintName,
61
+ * getMaterialName,
62
+ * getModuleName,
63
+ * getOutfittingFamilyName,
64
+ * } from '@elite-dangerous-almanac/core/i18n';
65
+ *
66
+ * getModuleName('Int_Hyperdrive_Size6_Class5', 'de'); // -> 'Frameshiftantrieb'
67
+ * getBlueprintName('FSD_LongRange', 'de-DE'); // -> 'Erhöhte FSA-Reichweite'
68
+ * getMaterialName('GridResistors', 'de'); // -> 'Gitterwiderstände'
69
+ *
70
+ * // Sparseness is per dataset, not per locale: German module names are complete,
71
+ * // while no outfitting family the game does not name separately has any.
72
+ * getOutfittingFamilyName('shieldGenerators', 'de'); // -> 'Schildgeneratoren'
73
+ * getOutfittingFamilyName('xenoScanners', 'de'); // -> null
74
+ * ```
75
+ *
76
+ * @packageDocumentation
77
+ */
1
78
  export { getModuleName } from './modules.js';
2
79
  export { getOutfittingFamilyName } from './module-families.js';
3
80
  export { getBlueprintName } from './blueprints.js';
4
81
  export { getExperimentalEffectName } from './experimental-effects.js';
5
82
  export { getExperimentalEffectDescription } from './experimental-effect-descriptions.js';
83
+ export { getCommodityName } from './commodities.js';
6
84
  export { getMaterialName } from './materials.js';
7
85
  export { getMicroResourceName } from './micro-resources.js';
86
+ export { getPersonalMountName, getSuitDescription, getSuitName } from './suits.js';
87
+ export { getPersonalToolName } from './personal-tools.js';
88
+ export { getPersonalWeaponDescription } from './personal-weapons.js';
89
+ export { getPersonalModificationDescription, getPersonalModificationName } from './personal-modifications.js';
8
90
  export { getLoadoutSlotName, getSlotRestrictionLabel } from './slots.js';
9
91
  export { getCalculationIssueMessage, getLoadoutEditErrorMessage, getLoadoutIssueMessage, getSlefDiagnosticMessage } from './diagnostics.js';
10
92
  export { PreEngineeredVariantIdentity, getPreEngineeredVariantName } from './pre-engineered.js';
93
+ import '../suits-B37rAORs.js';
94
+ import '../equipment/engineering.js';
11
95
  import '../ships/slots.js';
12
96
  import '../ships/loadout-calculations.js';
13
97
  import '../ships/loadout-validation.js';
@@ -28,7 +112,9 @@ import '../ships/source-purchase.js';
28
112
  * Almanac. Every other locale is sparse and source-dependent. A lookup accepts any
29
113
  * string rather than only this union so callers can pass their application locale
30
114
  * directly: a regional tag such as `de-DE` falls back to `de`, while an unsupported tag
31
- * or a missing translation returns `null`.
115
+ * or a missing translation returns `null`. Matching is case-insensitive and accepts an
116
+ * underscore in place of a hyphen; a regional or script subtag is dropped rather than
117
+ * matched, since every stored locale is a bare language tag.
32
118
  * A source may explicitly publish a localized value whose spelling equals the canonical
33
119
  * English name. Lookups return that source value verbatim; they never generate an
34
120
  * English fallback for a missing locale.
@@ -1 +1 @@
1
- export{getExperimentalEffectName}from"../chunk-BMQM4JBL.js";export{getMaterialName}from"../chunk-IZIIGK3W.js";export{getMicroResourceName}from"../chunk-XFDMCPDW.js";export{getOutfittingFamilyName}from"../chunk-SD6GNFDX.js";export{getModuleName}from"../chunk-QJECDMQQ.js";export{getPreEngineeredVariantName}from"../chunk-T7IQHFQ2.js";export{getLoadoutSlotName,getSlotRestrictionLabel}from"../chunk-ZRG35JSH.js"; export{getBlueprintName}from"../chunk-DBDCOHI4.js";export{getCalculationIssueMessage,getLoadoutEditErrorMessage,getLoadoutIssueMessage,getSlefDiagnosticMessage}from"../chunk-6G6TYW2D.js";export{getExperimentalEffectDescription}from"../chunk-MRLUWHGI.js"; //# sourceMappingURL=index.js.map
1
+ export{getPersonalModificationDescription,getPersonalModificationName}from"../chunk-SS7HVNP5.js";export{getPersonalToolName}from"../chunk-E2HDF6PJ.js";export{getPersonalWeaponDescription}from"../chunk-7C7NJWCF.js";export{getPreEngineeredVariantName}from"../chunk-T7IQHFQ2.js";export{getLoadoutSlotName,getSlotRestrictionLabel}from"../chunk-ZRG35JSH.js"; export{getPersonalMountName,getSuitDescription,getSuitName}from"../chunk-RA4YJBU5.js";export{getCalculationIssueMessage,getLoadoutEditErrorMessage,getLoadoutIssueMessage,getSlefDiagnosticMessage}from"../chunk-6G6TYW2D.js";export{getExperimentalEffectDescription}from"../chunk-RJ3ZLQRB.js";export{getExperimentalEffectName}from"../chunk-QPT2WJYN.js";export{getMaterialName}from"../chunk-UE22QU7A.js";export{getMicroResourceName}from"../chunk-WZIBBJHA.js";export{getOutfittingFamilyName}from"../chunk-YBE5M27G.js";export{getModuleName}from"../chunk-URRPEUIK.js";export{getBlueprintName}from"../chunk-UI5RROGI.js";export{getCommodityName}from"../chunk-TRGHPX2O.js"; //# sourceMappingURL=index.js.map
@@ -4,10 +4,8 @@
4
4
  *
5
5
  * @param symbol - Frontier's material symbol, such as `"GridResistors"`. Matching
6
6
  * ignores case and surrounding whitespace.
7
- * @param locale - A BCP 47 language or regional tag, such as `"de"`, `"de-DE"` or
8
- * `"en-GB"`. Matching is case-insensitive; underscores are accepted in place of
9
- * hyphens. A regional or script subtag is dropped: every stored locale is a bare
10
- * language tag.
7
+ * @param locale - A BCP 47 language or regional tag, such as `"de"` or `"de-DE"`; see
8
+ * {@link GameLocale} for how a tag is matched.
11
9
  * @returns The localized material name; the canonical `Material.name` for any English
12
10
  * tag; or `null` when the symbol is unknown or the locale is not one of the six this
13
11
  * catalogue stores.
@@ -1 +1 @@
1
- export{getMaterialName}from"../chunk-IZIIGK3W.js"; //# sourceMappingURL=materials.js.map
1
+ export{getMaterialName}from"../chunk-UE22QU7A.js"; //# sourceMappingURL=materials.js.map
@@ -4,10 +4,8 @@
4
4
  *
5
5
  * @param symbol - Frontier's micro-resource symbol, such as `"graphene"`. Matching
6
6
  * ignores case and surrounding whitespace.
7
- * @param locale - A BCP 47 language or regional tag, such as `"de"`, `"de-DE"` or
8
- * `"en-GB"`. Matching is case-insensitive; underscores are accepted in place of
9
- * hyphens. A regional or script subtag is dropped: every stored locale is a bare
10
- * language tag.
7
+ * @param locale - A BCP 47 language or regional tag, such as `"de"` or `"de-DE"`; see
8
+ * {@link GameLocale} for how a tag is matched.
11
9
  * @returns The localized micro-resource name; the canonical `MicroResource.name` for
12
10
  * any English tag; or `null` when the symbol is unknown or the locale is not one of the
13
11
  * six this catalogue stores.
@@ -1 +1 @@
1
- export{getMicroResourceName}from"../chunk-XFDMCPDW.js"; //# sourceMappingURL=micro-resources.js.map
1
+ export{getMicroResourceName}from"../chunk-WZIBBJHA.js"; //# sourceMappingURL=micro-resources.js.map
@@ -4,17 +4,15 @@
4
4
  *
5
5
  * @param familyId - The stable family id carried by `OutfittingModuleIdentity.familyId`,
6
6
  * such as `"shieldGenerators"`. Matching ignores case and surrounding whitespace.
7
- * @param locale - A BCP 47 language or regional tag, such as `"de"`, `"de-DE"` or
8
- * `"en-GB"`. Matching is case-insensitive; underscores are accepted in place of
9
- * hyphens. A regional or script subtag is dropped: every stored locale is a bare
10
- * language tag.
7
+ * @param locale - A BCP 47 language or regional tag, such as `"de"` or `"de-DE"`; see
8
+ * {@link GameLocale} for how a tag is matched.
11
9
  * @returns The localized family name; the canonical `OUTFITTING_FAMILIES` name for any
12
10
  * English tag; or `null` when the family is unknown, the locale is unsupported, or the
13
11
  * pinned source carries no category label for that family and locale.
14
12
  * @remarks
15
13
  * Every module carries a family, so an outfitting list can group and label every choice
16
14
  * `ShipLoadout.modulesForSlot()` returns from this lookup alone. The table bundles no
17
- * module stats. Missing translations never silently fall back to English: 19 of the 77
15
+ * module stats. Missing translations never silently fall back to English: some
18
16
  * families have no source-backed label in any locale, tracked by
19
17
  * [#320](https://github.com/DarkSession/Elite-Dangerous-Almanac/issues/320).
20
18
  * @throws {TypeError} If `familyId` is present and not a string, or `locale` is not a
@@ -1 +1 @@
1
- export{getOutfittingFamilyName}from"../chunk-SD6GNFDX.js"; //# sourceMappingURL=module-families.js.map
1
+ export{getOutfittingFamilyName}from"../chunk-YBE5M27G.js"; //# sourceMappingURL=module-families.js.map
@@ -4,10 +4,8 @@
4
4
  *
5
5
  * @param symbol - Frontier's module symbol, such as `"Int_Hyperdrive_Size6_Class5"`.
6
6
  * Matching ignores case and surrounding whitespace.
7
- * @param locale - A BCP 47 language or regional tag, such as `"de"`, `"de-DE"` or
8
- * `"en-GB"`. Matching is case-insensitive; underscores are accepted in place of
9
- * hyphens. A regional or script subtag is dropped: every stored locale is a bare
10
- * language tag.
7
+ * @param locale - A BCP 47 language or regional tag, such as `"de"` or `"de-DE"`; see
8
+ * {@link GameLocale} for how a tag is matched.
11
9
  * @returns The localized outfitting name; the canonical `OutfittingModule.name` for any
12
10
  * English tag; or `null` when the symbol is unknown or the locale is not one of the six
13
11
  * this catalogue stores.
@@ -16,8 +14,7 @@
16
14
  * answers. The table deduplicates modules that share one name in every locale, which is
17
15
  * finer than sharing one canonical English name: the game distinguishes the singular and
18
16
  * plural hull alloys, for instance, where English spells both the same. It does not
19
- * bundle any module stats, so this lookup avoids the 1,194-record `ALL_MODULES`
20
- * catalogue.
17
+ * bundle any module stats, so this lookup avoids the `ALL_MODULES` catalogue.
21
18
  * @throws {TypeError} If `symbol` is present and not a string, or `locale` is not a
22
19
  * string. A nullish `symbol` is a lookup miss and returns `null`.
23
20
  * @example
@@ -1 +1 @@
1
- export{getModuleName}from"../chunk-QJECDMQQ.js"; //# sourceMappingURL=modules.js.map
1
+ export{getModuleName}from"../chunk-URRPEUIK.js"; //# sourceMappingURL=modules.js.map
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Localized personal-equipment modification names and descriptions, isolated from the
3
+ * recipes' modifiers and material costs.
4
+ */
5
+ /**
6
+ * Look up an engineer-applied personal-equipment modification's source-backed display
7
+ * name for a locale.
8
+ *
9
+ * @param modificationSymbol - The recipe symbol `PERSONAL_MODIFICATIONS` is keyed by,
10
+ * such as `"suit_increasedmeleedamage"` or the technology-specific
11
+ * `"weapon_range_laser"`. A journal line writes the unsuffixed `"weapon_range"`, which
12
+ * `resolvePersonalModificationForWeapon` turns into the specific symbol. Matching
13
+ * ignores case and surrounding whitespace.
14
+ * @param locale - A BCP 47 language or regional tag, such as `"de"` or `"de-DE"`; see
15
+ * {@link GameLocale} for how a tag is matched.
16
+ * @returns The localized modification name; the canonical `PersonalModification.name`
17
+ * for any English tag; or `null` when the recipe is unknown or the locale is not one of
18
+ * the six this catalogue stores.
19
+ * @remarks
20
+ * All six stored locales are complete for this dataset, so a supported locale always
21
+ * answers. The game offers Greater Range, Headshot Damage and Improved Hip Fire Accuracy
22
+ * as one menu entry each, so the three Kinetic, Laser and Plasma recipes this repository
23
+ * keys separately share that entry's record rather than storing it three times.
24
+ * @throws {TypeError} If `modificationSymbol` is present and not a string, or `locale`
25
+ * is not a string. A nullish `modificationSymbol` is a lookup miss and returns `null`.
26
+ * @example
27
+ * ```ts
28
+ * import { getPersonalModificationName } from '@elite-dangerous-almanac/core/i18n/personal-modifications';
29
+ *
30
+ * getPersonalModificationName('suit_nightvision', 'de'); // -> 'Nachtsicht'
31
+ * getPersonalModificationName('weapon_range_laser', 'fr'); // -> 'Portée améliorée'
32
+ * getPersonalModificationName('suit_nightvision', 'it'); // -> null
33
+ * ```
34
+ */
35
+ declare function getPersonalModificationName(modificationSymbol: string, locale: string): string | null;
36
+ /**
37
+ * Look up an engineer-applied personal-equipment modification's display description —
38
+ * the prose the game shows a player, in all six stored locales.
39
+ *
40
+ * @param modificationSymbol - The recipe symbol `PERSONAL_MODIFICATIONS` is keyed by,
41
+ * exactly as {@link getPersonalModificationName} accepts. Matching ignores case and
42
+ * surrounding whitespace.
43
+ * @param locale - A BCP 47 locale. All six stored locales are complete for this dataset.
44
+ * @returns The localized description, or `null` when the recipe is unknown or the
45
+ * requested locale is not one this catalogue stores.
46
+ * @remarks
47
+ * This is display prose, not a statement of the magnitudes a recipe applies: the game
48
+ * says a modification "allows more ammo to be carried for each weapon", never how much
49
+ * more. `PersonalModification.modifiers` answers that, and the two are deliberately not
50
+ * the same string. It is also the only account of the recipes whose `modifiers` list is
51
+ * empty, whether because the recipe switches a capability on or because it moves a
52
+ * stat the panel puts no number on. English is the game's own wording rather than a
53
+ * projection of `PersonalModification.name`.
54
+ * @throws {TypeError} If a present `modificationSymbol` or `locale` is not a string.
55
+ * @example
56
+ * ```ts
57
+ * import { getPersonalModificationDescription } from '@elite-dangerous-almanac/core/i18n/personal-modifications';
58
+ *
59
+ * getPersonalModificationDescription('suit_nightvision', 'en');
60
+ * // -> 'Adds Night Vision capabilities to the suit.'
61
+ * getPersonalModificationDescription('suit_nightvision', 'ja'); // -> null
62
+ * ```
63
+ */
64
+ declare function getPersonalModificationDescription(modificationSymbol: string, locale: string): string | null;
65
+
66
+ export { getPersonalModificationDescription, getPersonalModificationName };
@@ -0,0 +1 @@
1
+ export{getPersonalModificationDescription,getPersonalModificationName}from"../chunk-SS7HVNP5.js"; //# sourceMappingURL=personal-modifications.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"O"}
@@ -0,0 +1,33 @@
1
+ /** Localized suit-tool display names, isolated from tool battery and timing stats. */
2
+ /**
3
+ * Look up a suit tool's source-backed display name for a locale.
4
+ *
5
+ * @param id - The library id `PersonalTool.id` carries, such as `"arc-cutter"`. Matching
6
+ * ignores case and surrounding whitespace.
7
+ * @param locale - A BCP 47 language or regional tag, such as `"de"` or `"de-DE"`; see
8
+ * {@link GameLocale} for how a tag is matched.
9
+ * @returns The localized tool name; the canonical `PersonalTool.name` for any English
10
+ * tag; or `null` when the tool is unknown or the locale is not one of the six this
11
+ * catalogue stores.
12
+ * @remarks
13
+ * All six stored locales are complete for this dataset, so a supported locale always
14
+ * answers. Frontier publishes no item symbol for a tool, so the library id is the only
15
+ * identifier this lookup takes — the same one `getPersonalToolById` takes.
16
+ *
17
+ * A returned value can equal the English, because the game leaves some tool names
18
+ * untranslated. Such a value is the game's own, stored verbatim; the library never
19
+ * supplies an English fallback. This lookup bundles no tool stats.
20
+ * @throws {TypeError} If `id` is present and not a string, or `locale` is not a string. A
21
+ * nullish `id` is a lookup miss and returns `null`.
22
+ * @example
23
+ * ```ts
24
+ * import { getPersonalToolName } from '@elite-dangerous-almanac/core/i18n/personal-tools';
25
+ *
26
+ * getPersonalToolName('energylink', 'de-DE'); // -> 'Energie-Link'
27
+ * getPersonalToolName('profile-analyser', 'fr'); // -> 'Analyseur de profil'
28
+ * getPersonalToolName('arc-cutter', 'it'); // -> null
29
+ * ```
30
+ */
31
+ declare function getPersonalToolName(id: string, locale: string): string | null;
32
+
33
+ export { getPersonalToolName };
@@ -0,0 +1 @@
1
+ export{getPersonalToolName}from"../chunk-E2HDF6PJ.js"; //# sourceMappingURL=personal-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"O"}
@@ -0,0 +1,32 @@
1
+ /** Localized handheld-weapon descriptions, isolated from weapon combat stats. */
2
+ /**
3
+ * Look up a handheld weapon's display description — the prose the game shows a player,
4
+ * in all six stored locales.
5
+ *
6
+ * @param symbol - Frontier's weapon symbol, such as `"wpn_s_pistol_kinetic_sauto"`.
7
+ * Matching ignores case and surrounding whitespace.
8
+ * @param locale - A BCP 47 language or regional tag, such as `"de"` or `"de-DE"`; see
9
+ * {@link GameLocale} for how a tag is matched. All six stored locales are complete for
10
+ * this dataset.
11
+ * @returns The localized description, or `null` when the weapon is unknown or the
12
+ * requested locale is not one this catalogue stores.
13
+ * @remarks
14
+ * **There is no matching name lookup, and that is not a gap.** A handheld weapon's name
15
+ * is a product name — "Karma P-15", "TK Aphelion" — that the game leaves in English in
16
+ * every locale, so `PersonalWeapon.name` is the name in all six. This is display prose
17
+ * and not a statement of the weapon's mechanics: it names no damage figure, rate of fire
18
+ * or effective range, which are the stats `PERSONAL_WEAPONS` carries.
19
+ * @throws {TypeError} If `symbol` is present and not a string, or `locale` is not a
20
+ * string. A nullish `symbol` is a lookup miss and returns `null`.
21
+ * @example
22
+ * ```ts
23
+ * import { getPersonalWeaponDescription } from '@elite-dangerous-almanac/core/i18n/personal-weapons';
24
+ *
25
+ * getPersonalWeaponDescription('wpn_m_sniper_plasma_charged', 'en');
26
+ * // -> 'A semi-automatic, long-range plasma rifle with high damage output and a low rate of fire.'
27
+ * getPersonalWeaponDescription('wpn_m_sniper_plasma_charged', 'it'); // -> null
28
+ * ```
29
+ */
30
+ declare function getPersonalWeaponDescription(symbol: string, locale: string): string | null;
31
+
32
+ export { getPersonalWeaponDescription };
@@ -0,0 +1 @@
1
+ export{getPersonalWeaponDescription}from"../chunk-7C7NJWCF.js"; //# sourceMappingURL=personal-weapons.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"O"}
@@ -20,7 +20,7 @@ interface PreEngineeredVariantIdentity {
20
20
  * because a base module and blueprint alone do not uniquely identify every reward.
21
21
  * @param locale - A BCP 47 locale. Regional tags fall back to their supported language.
22
22
  * @returns The explicit localized name, or `null` for an unknown variant or unavailable
23
- * translation. Decorative reward names currently have English values only.
23
+ * translation. Decorative reward names have English values only.
24
24
  * @throws {TypeError} If `variant` is not an object, a required identity field or a
25
25
  * non-null `experimentalEffectSymbol` value is not a string, or `locale` is not a
26
26
  * string.