@lycoristech/azurdata 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (274) hide show
  1. package/LICENSE +25 -0
  2. package/README.md +123 -0
  3. package/data/.gitkeep +0 -0
  4. package/data/id-map.json +3530 -0
  5. package/data/ship-list.json +4478 -0
  6. package/data/ships.json +143282 -0
  7. package/data/version.json +5 -0
  8. package/dist/cjs/client/AzurData.js +69 -0
  9. package/dist/cjs/client/fetcher.js +121 -0
  10. package/dist/cjs/client/index.js +7 -0
  11. package/dist/cjs/client/ships.js +80 -0
  12. package/dist/cjs/config.js +14 -0
  13. package/dist/cjs/index.js +6 -0
  14. package/dist/cjs/ingest/files.js +134 -0
  15. package/dist/cjs/ingest/index.js +18 -0
  16. package/dist/cjs/ingest/upstream.js +12 -0
  17. package/dist/cjs/normalize/construction.js +186 -0
  18. package/dist/cjs/normalize/identity.js +131 -0
  19. package/dist/cjs/normalize/index.js +25 -0
  20. package/dist/cjs/normalize/misc.js +31 -0
  21. package/dist/cjs/normalize/retrofit.js +21 -0
  22. package/dist/cjs/normalize/ship.js +406 -0
  23. package/dist/cjs/normalize/skills.js +194 -0
  24. package/dist/cjs/normalize/skins.js +141 -0
  25. package/dist/cjs/normalize/slots.js +35 -0
  26. package/dist/cjs/normalize/stats.js +182 -0
  27. package/dist/cjs/output/index.js +20 -0
  28. package/dist/cjs/output/writeIdMap.js +52 -0
  29. package/dist/cjs/output/writeShipList.js +31 -0
  30. package/dist/cjs/output/writeShips.js +33 -0
  31. package/dist/cjs/output/writeVersion.js +23 -0
  32. package/dist/cjs/package.json +1 -0
  33. package/dist/cjs/schema/output/index.js +17 -0
  34. package/dist/cjs/schema/output/ship.js +169 -0
  35. package/dist/cjs/schema/raw/attributeInfoByType.js +11 -0
  36. package/dist/cjs/schema/raw/equipDataByType.js +12 -0
  37. package/dist/cjs/schema/raw/fleetTechGroup.js +10 -0
  38. package/dist/cjs/schema/raw/fleetTechShipClass.js +15 -0
  39. package/dist/cjs/schema/raw/fleetTechShipTemplate.js +20 -0
  40. package/dist/cjs/schema/raw/index.js +38 -0
  41. package/dist/cjs/schema/raw/shipDataBlueprint.js +11 -0
  42. package/dist/cjs/schema/raw/shipDataBreakout.js +17 -0
  43. package/dist/cjs/schema/raw/shipDataByStar.js +10 -0
  44. package/dist/cjs/schema/raw/shipDataByType.js +13 -0
  45. package/dist/cjs/schema/raw/shipDataCreateExchange.js +10 -0
  46. package/dist/cjs/schema/raw/shipDataGroup.js +22 -0
  47. package/dist/cjs/schema/raw/shipDataStatistics.js +24 -0
  48. package/dist/cjs/schema/raw/shipDataStrengthen.js +12 -0
  49. package/dist/cjs/schema/raw/shipDataTemplate.js +26 -0
  50. package/dist/cjs/schema/raw/shipDataTrans.js +13 -0
  51. package/dist/cjs/schema/raw/shipSkinTemplate.js +23 -0
  52. package/dist/cjs/schema/raw/shipSkinWords.js +11 -0
  53. package/dist/cjs/schema/raw/shopTemplate.js +14 -0
  54. package/dist/cjs/schema/raw/skillDataDisplay.js +11 -0
  55. package/dist/cjs/schema/raw/skillDataTemplate.js +17 -0
  56. package/dist/cjs/schema/raw/transformDataTemplate.js +18 -0
  57. package/dist/cjs/schema/raw/voiceActorCn.js +11 -0
  58. package/dist/cjs/translate/enums.js +131 -0
  59. package/dist/cjs/translate/index.js +19 -0
  60. package/dist/cjs/translate/lookups.js +63 -0
  61. package/dist/cjs/translate/strings.js +98 -0
  62. package/dist/client/AzurData.d.ts +25 -0
  63. package/dist/client/AzurData.d.ts.map +1 -0
  64. package/dist/client/AzurData.js +63 -0
  65. package/dist/client/AzurData.js.map +1 -0
  66. package/dist/client/fetcher.d.ts +25 -0
  67. package/dist/client/fetcher.d.ts.map +1 -0
  68. package/dist/client/fetcher.js +116 -0
  69. package/dist/client/fetcher.js.map +1 -0
  70. package/dist/client/index.d.ts +4 -0
  71. package/dist/client/index.d.ts.map +1 -0
  72. package/dist/client/index.js +3 -0
  73. package/dist/client/index.js.map +1 -0
  74. package/dist/client/ships.d.ts +20 -0
  75. package/dist/client/ships.d.ts.map +1 -0
  76. package/dist/client/ships.js +74 -0
  77. package/dist/client/ships.js.map +1 -0
  78. package/dist/config.d.ts +5 -0
  79. package/dist/config.d.ts.map +1 -0
  80. package/dist/config.js +12 -0
  81. package/dist/config.js.map +1 -0
  82. package/dist/index.d.ts +3 -0
  83. package/dist/index.d.ts.map +1 -0
  84. package/dist/index.js +2 -0
  85. package/dist/index.js.map +1 -0
  86. package/dist/ingest/files.d.ts +25 -0
  87. package/dist/ingest/files.d.ts.map +1 -0
  88. package/dist/ingest/files.js +108 -0
  89. package/dist/ingest/files.js.map +1 -0
  90. package/dist/ingest/index.d.ts +3 -0
  91. package/dist/ingest/index.d.ts.map +1 -0
  92. package/dist/ingest/index.js +3 -0
  93. package/dist/ingest/index.js.map +1 -0
  94. package/dist/ingest/upstream.d.ts +4 -0
  95. package/dist/ingest/upstream.d.ts.map +1 -0
  96. package/dist/ingest/upstream.js +6 -0
  97. package/dist/ingest/upstream.js.map +1 -0
  98. package/dist/normalize/construction.d.ts +30 -0
  99. package/dist/normalize/construction.d.ts.map +1 -0
  100. package/dist/normalize/construction.js +184 -0
  101. package/dist/normalize/construction.js.map +1 -0
  102. package/dist/normalize/identity.d.ts +47 -0
  103. package/dist/normalize/identity.d.ts.map +1 -0
  104. package/dist/normalize/identity.js +129 -0
  105. package/dist/normalize/identity.js.map +1 -0
  106. package/dist/normalize/index.d.ts +10 -0
  107. package/dist/normalize/index.d.ts.map +1 -0
  108. package/dist/normalize/index.js +10 -0
  109. package/dist/normalize/index.js.map +1 -0
  110. package/dist/normalize/misc.d.ts +15 -0
  111. package/dist/normalize/misc.d.ts.map +1 -0
  112. package/dist/normalize/misc.js +29 -0
  113. package/dist/normalize/misc.js.map +1 -0
  114. package/dist/normalize/retrofit.d.ts +14 -0
  115. package/dist/normalize/retrofit.d.ts.map +1 -0
  116. package/dist/normalize/retrofit.js +19 -0
  117. package/dist/normalize/retrofit.js.map +1 -0
  118. package/dist/normalize/ship.d.ts +67 -0
  119. package/dist/normalize/ship.d.ts.map +1 -0
  120. package/dist/normalize/ship.js +369 -0
  121. package/dist/normalize/ship.js.map +1 -0
  122. package/dist/normalize/skills.d.ts +20 -0
  123. package/dist/normalize/skills.d.ts.map +1 -0
  124. package/dist/normalize/skills.js +192 -0
  125. package/dist/normalize/skills.js.map +1 -0
  126. package/dist/normalize/skins.d.ts +14 -0
  127. package/dist/normalize/skins.d.ts.map +1 -0
  128. package/dist/normalize/skins.js +139 -0
  129. package/dist/normalize/skins.js.map +1 -0
  130. package/dist/normalize/slots.d.ts +14 -0
  131. package/dist/normalize/slots.d.ts.map +1 -0
  132. package/dist/normalize/slots.js +33 -0
  133. package/dist/normalize/slots.js.map +1 -0
  134. package/dist/normalize/stats.d.ts +19 -0
  135. package/dist/normalize/stats.d.ts.map +1 -0
  136. package/dist/normalize/stats.js +180 -0
  137. package/dist/normalize/stats.js.map +1 -0
  138. package/dist/output/index.d.ts +5 -0
  139. package/dist/output/index.d.ts.map +1 -0
  140. package/dist/output/index.js +5 -0
  141. package/dist/output/index.js.map +1 -0
  142. package/dist/output/writeIdMap.d.ts +16 -0
  143. package/dist/output/writeIdMap.d.ts.map +1 -0
  144. package/dist/output/writeIdMap.js +47 -0
  145. package/dist/output/writeIdMap.js.map +1 -0
  146. package/dist/output/writeShipList.d.ts +9 -0
  147. package/dist/output/writeShipList.d.ts.map +1 -0
  148. package/dist/output/writeShipList.js +26 -0
  149. package/dist/output/writeShipList.js.map +1 -0
  150. package/dist/output/writeShips.d.ts +15 -0
  151. package/dist/output/writeShips.d.ts.map +1 -0
  152. package/dist/output/writeShips.js +28 -0
  153. package/dist/output/writeShips.js.map +1 -0
  154. package/dist/output/writeVersion.d.ts +11 -0
  155. package/dist/output/writeVersion.d.ts.map +1 -0
  156. package/dist/output/writeVersion.js +18 -0
  157. package/dist/output/writeVersion.js.map +1 -0
  158. package/dist/schema/output/index.d.ts +2 -0
  159. package/dist/schema/output/index.d.ts.map +1 -0
  160. package/dist/schema/output/index.js +2 -0
  161. package/dist/schema/output/index.js.map +1 -0
  162. package/dist/schema/output/ship.d.ts +977 -0
  163. package/dist/schema/output/ship.d.ts.map +1 -0
  164. package/dist/schema/output/ship.js +167 -0
  165. package/dist/schema/output/ship.js.map +1 -0
  166. package/dist/schema/raw/attributeInfoByType.d.ts +25 -0
  167. package/dist/schema/raw/attributeInfoByType.d.ts.map +1 -0
  168. package/dist/schema/raw/attributeInfoByType.js +9 -0
  169. package/dist/schema/raw/attributeInfoByType.js.map +1 -0
  170. package/dist/schema/raw/equipDataByType.d.ts +31 -0
  171. package/dist/schema/raw/equipDataByType.d.ts.map +1 -0
  172. package/dist/schema/raw/equipDataByType.js +10 -0
  173. package/dist/schema/raw/equipDataByType.js.map +1 -0
  174. package/dist/schema/raw/fleetTechGroup.d.ts +19 -0
  175. package/dist/schema/raw/fleetTechGroup.d.ts.map +1 -0
  176. package/dist/schema/raw/fleetTechGroup.js +8 -0
  177. package/dist/schema/raw/fleetTechGroup.js.map +1 -0
  178. package/dist/schema/raw/fleetTechShipClass.d.ts +49 -0
  179. package/dist/schema/raw/fleetTechShipClass.d.ts.map +1 -0
  180. package/dist/schema/raw/fleetTechShipClass.js +13 -0
  181. package/dist/schema/raw/fleetTechShipClass.js.map +1 -0
  182. package/dist/schema/raw/fleetTechShipTemplate.d.ts +79 -0
  183. package/dist/schema/raw/fleetTechShipTemplate.d.ts.map +1 -0
  184. package/dist/schema/raw/fleetTechShipTemplate.js +18 -0
  185. package/dist/schema/raw/fleetTechShipTemplate.js.map +1 -0
  186. package/dist/schema/raw/index.d.ts +23 -0
  187. package/dist/schema/raw/index.d.ts.map +1 -0
  188. package/dist/schema/raw/index.js +23 -0
  189. package/dist/schema/raw/index.js.map +1 -0
  190. package/dist/schema/raw/shipDataBlueprint.d.ts +25 -0
  191. package/dist/schema/raw/shipDataBlueprint.d.ts.map +1 -0
  192. package/dist/schema/raw/shipDataBlueprint.js +9 -0
  193. package/dist/schema/raw/shipDataBlueprint.js.map +1 -0
  194. package/dist/schema/raw/shipDataBreakout.d.ts +61 -0
  195. package/dist/schema/raw/shipDataBreakout.d.ts.map +1 -0
  196. package/dist/schema/raw/shipDataBreakout.js +15 -0
  197. package/dist/schema/raw/shipDataBreakout.js.map +1 -0
  198. package/dist/schema/raw/shipDataByStar.d.ts +19 -0
  199. package/dist/schema/raw/shipDataByStar.d.ts.map +1 -0
  200. package/dist/schema/raw/shipDataByStar.js +8 -0
  201. package/dist/schema/raw/shipDataByStar.js.map +1 -0
  202. package/dist/schema/raw/shipDataByType.d.ts +37 -0
  203. package/dist/schema/raw/shipDataByType.d.ts.map +1 -0
  204. package/dist/schema/raw/shipDataByType.js +11 -0
  205. package/dist/schema/raw/shipDataByType.js.map +1 -0
  206. package/dist/schema/raw/shipDataCreateExchange.d.ts +19 -0
  207. package/dist/schema/raw/shipDataCreateExchange.d.ts.map +1 -0
  208. package/dist/schema/raw/shipDataCreateExchange.js +8 -0
  209. package/dist/schema/raw/shipDataCreateExchange.js.map +1 -0
  210. package/dist/schema/raw/shipDataGroup.d.ts +79 -0
  211. package/dist/schema/raw/shipDataGroup.d.ts.map +1 -0
  212. package/dist/schema/raw/shipDataGroup.js +20 -0
  213. package/dist/schema/raw/shipDataGroup.js.map +1 -0
  214. package/dist/schema/raw/shipDataStatistics.d.ts +103 -0
  215. package/dist/schema/raw/shipDataStatistics.d.ts.map +1 -0
  216. package/dist/schema/raw/shipDataStatistics.js +22 -0
  217. package/dist/schema/raw/shipDataStatistics.js.map +1 -0
  218. package/dist/schema/raw/shipDataStrengthen.d.ts +31 -0
  219. package/dist/schema/raw/shipDataStrengthen.d.ts.map +1 -0
  220. package/dist/schema/raw/shipDataStrengthen.js +10 -0
  221. package/dist/schema/raw/shipDataStrengthen.js.map +1 -0
  222. package/dist/schema/raw/shipDataTemplate.d.ts +115 -0
  223. package/dist/schema/raw/shipDataTemplate.d.ts.map +1 -0
  224. package/dist/schema/raw/shipDataTemplate.js +24 -0
  225. package/dist/schema/raw/shipDataTemplate.js.map +1 -0
  226. package/dist/schema/raw/shipDataTrans.d.ts +37 -0
  227. package/dist/schema/raw/shipDataTrans.d.ts.map +1 -0
  228. package/dist/schema/raw/shipDataTrans.js +11 -0
  229. package/dist/schema/raw/shipDataTrans.js.map +1 -0
  230. package/dist/schema/raw/shipSkinTemplate.d.ts +97 -0
  231. package/dist/schema/raw/shipSkinTemplate.d.ts.map +1 -0
  232. package/dist/schema/raw/shipSkinTemplate.js +21 -0
  233. package/dist/schema/raw/shipSkinTemplate.js.map +1 -0
  234. package/dist/schema/raw/shipSkinWords.d.ts +25 -0
  235. package/dist/schema/raw/shipSkinWords.d.ts.map +1 -0
  236. package/dist/schema/raw/shipSkinWords.js +9 -0
  237. package/dist/schema/raw/shipSkinWords.js.map +1 -0
  238. package/dist/schema/raw/shopTemplate.d.ts +43 -0
  239. package/dist/schema/raw/shopTemplate.d.ts.map +1 -0
  240. package/dist/schema/raw/shopTemplate.js +12 -0
  241. package/dist/schema/raw/shopTemplate.js.map +1 -0
  242. package/dist/schema/raw/skillDataDisplay.d.ts +25 -0
  243. package/dist/schema/raw/skillDataDisplay.d.ts.map +1 -0
  244. package/dist/schema/raw/skillDataDisplay.js +9 -0
  245. package/dist/schema/raw/skillDataDisplay.js.map +1 -0
  246. package/dist/schema/raw/skillDataTemplate.d.ts +61 -0
  247. package/dist/schema/raw/skillDataTemplate.d.ts.map +1 -0
  248. package/dist/schema/raw/skillDataTemplate.js +15 -0
  249. package/dist/schema/raw/skillDataTemplate.js.map +1 -0
  250. package/dist/schema/raw/transformDataTemplate.d.ts +67 -0
  251. package/dist/schema/raw/transformDataTemplate.d.ts.map +1 -0
  252. package/dist/schema/raw/transformDataTemplate.js +16 -0
  253. package/dist/schema/raw/transformDataTemplate.js.map +1 -0
  254. package/dist/schema/raw/voiceActorCn.d.ts +25 -0
  255. package/dist/schema/raw/voiceActorCn.d.ts.map +1 -0
  256. package/dist/schema/raw/voiceActorCn.js +9 -0
  257. package/dist/schema/raw/voiceActorCn.js.map +1 -0
  258. package/dist/translate/enums.d.ts +34 -0
  259. package/dist/translate/enums.d.ts.map +1 -0
  260. package/dist/translate/enums.js +126 -0
  261. package/dist/translate/enums.js.map +1 -0
  262. package/dist/translate/index.d.ts +4 -0
  263. package/dist/translate/index.d.ts.map +1 -0
  264. package/dist/translate/index.js +4 -0
  265. package/dist/translate/index.js.map +1 -0
  266. package/dist/translate/lookups.d.ts +37 -0
  267. package/dist/translate/lookups.d.ts.map +1 -0
  268. package/dist/translate/lookups.js +61 -0
  269. package/dist/translate/lookups.js.map +1 -0
  270. package/dist/translate/strings.d.ts +40 -0
  271. package/dist/translate/strings.d.ts.map +1 -0
  272. package/dist/translate/strings.js +92 -0
  273. package/dist/translate/strings.js.map +1 -0
  274. package/package.json +37 -0
@@ -0,0 +1,131 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FLEET_TECH_STAT_MAP = exports.STAT_INDEX_TO_FIELD = exports.SKILL_COLOR_MAP = exports.NATIONALITY_MAP = exports.RARITY_MAP = void 0;
4
+ exports.rarityName = rarityName;
5
+ exports.nationalityName = nationalityName;
6
+ exports.skillColor = skillColor;
7
+ // ---------------------------------------------------------------------------
8
+ // Rarity
9
+ // ---------------------------------------------------------------------------
10
+ /** Maps integer rarity → AzurAPI rarity string */
11
+ exports.RARITY_MAP = {
12
+ 1: "Normal",
13
+ 2: "Normal",
14
+ 3: "Rare",
15
+ 4: "Elite",
16
+ 5: "Super Rare",
17
+ 6: "Ultra Rare",
18
+ };
19
+ /**
20
+ * Resolve a rarity integer to its display string.
21
+ *
22
+ * Rules:
23
+ * - int === 6 && isResearch && blueprintVersion >= 6 → "Decisive"
24
+ * - int === 6 && isResearch → "Priority"
25
+ * - else → RARITY_MAP[int] || "Normal"
26
+ */
27
+ function rarityName(rarity, isResearch, blueprintVersion) {
28
+ if (rarity === 6 && isResearch) {
29
+ if (blueprintVersion !== undefined && blueprintVersion >= 6) {
30
+ return "Decisive";
31
+ }
32
+ return "Priority";
33
+ }
34
+ return exports.RARITY_MAP[rarity] ?? "Normal";
35
+ }
36
+ // ---------------------------------------------------------------------------
37
+ // Nationality
38
+ // ---------------------------------------------------------------------------
39
+ /** Nationality int → display string. Matches Azur Lane wiki convention. */
40
+ exports.NATIONALITY_MAP = {
41
+ 0: "Universal",
42
+ 1: "Eagle Union",
43
+ 2: "Royal Navy",
44
+ 3: "Sakura Empire",
45
+ 4: "Iron Blood",
46
+ 5: "Dragon Empery",
47
+ 6: "Sardegna Empire",
48
+ 7: "Northern Parliament",
49
+ 8: "Iris Libre",
50
+ 9: "Vichya Dominion",
51
+ 10: "Iris Orthodoxy",
52
+ 11: "Kingdom of Tulipa",
53
+ 96: "Universal",
54
+ 97: "Tempesta",
55
+ 98: "Universal",
56
+ 101: "META",
57
+ 102: "Universal",
58
+ 103: "Universal",
59
+ 104: "Universal",
60
+ 105: "Neptunia",
61
+ 106: "KizunaAI",
62
+ 107: "Hololive",
63
+ 108: "Venus Vacation",
64
+ 109: "The Idolmaster",
65
+ 110: "SSSS",
66
+ 111: "Atelier Ryza",
67
+ 112: "Senran Kagura",
68
+ };
69
+ /** Look up a nationality code; falls back to "Universal". */
70
+ function nationalityName(code) {
71
+ return exports.NATIONALITY_MAP[code] ?? "Universal";
72
+ }
73
+ // ---------------------------------------------------------------------------
74
+ // Skill color
75
+ // ---------------------------------------------------------------------------
76
+ /**
77
+ * Skill type int → AzurAPI color.
78
+ * 1 = offensive (yellow), 2 = support (pink), 3 = defensive (blue), 0 = unset (pink).
79
+ */
80
+ exports.SKILL_COLOR_MAP = {
81
+ 0: "pink",
82
+ 1: "yellow",
83
+ 2: "pink",
84
+ 3: "blue",
85
+ };
86
+ /** Look up a skill type color; falls back to "pink". */
87
+ function skillColor(type) {
88
+ return exports.SKILL_COLOR_MAP[type] ?? "pink";
89
+ }
90
+ // ---------------------------------------------------------------------------
91
+ // Stat index map
92
+ // ---------------------------------------------------------------------------
93
+ /**
94
+ * Stat index (0..11) → AzurAPI stat field name (on StatBlock).
95
+ * Only the 10 exposed stats. armor (6) and antisub (11) are intentionally missing.
96
+ */
97
+ exports.STAT_INDEX_TO_FIELD = {
98
+ 0: "health",
99
+ 1: "firepower",
100
+ 2: "torpedo",
101
+ 3: "antiwar", // AA — keep AzurAPI typo
102
+ 4: "aviation",
103
+ 5: "reload",
104
+ 6: undefined, // armor — not in StatBlock
105
+ 7: "accuracy",
106
+ 8: "evasion",
107
+ 9: "speed",
108
+ 10: "luck",
109
+ 11: undefined, // antisub — not in StatBlock
110
+ };
111
+ // ---------------------------------------------------------------------------
112
+ // Fleet-tech stat map
113
+ // ---------------------------------------------------------------------------
114
+ /**
115
+ * Fleet-tech attribute id → display name.
116
+ * From attribute_info_by_type.json, but hard-coded to avoid a data lookup per ship.
117
+ */
118
+ exports.FLEET_TECH_STAT_MAP = {
119
+ 1: "health",
120
+ 2: "firepower",
121
+ 3: "torpedo",
122
+ 4: "antiaircraft",
123
+ 5: "aviation",
124
+ 6: "reload",
125
+ 7: "armor",
126
+ 8: "accuracy",
127
+ 9: "evasion",
128
+ 10: "speed",
129
+ 11: "luck",
130
+ 12: "antisub",
131
+ };
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./enums.js"), exports);
18
+ __exportStar(require("./lookups.js"), exports);
19
+ __exportStar(require("./strings.js"), exports);
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createLookups = createLookups;
4
+ // ---------------------------------------------------------------------------
5
+ // Factory
6
+ // ---------------------------------------------------------------------------
7
+ /** Build a Lookups helper from the raw upstream tables. */
8
+ function createLookups(inputs) {
9
+ const { fleetTechShipTemplate, fleetTechShipClass, shipDataByType, equipDataByType, skillDataTemplate, skillDataDisplay, voiceActorCn, } = inputs;
10
+ // Pre-build a code→name map for voice actors (keyed by `code` field value, not the record key)
11
+ const voiceActorByCode = new Map();
12
+ for (const entry of Object.values(voiceActorCn)) {
13
+ if (entry.code !== undefined && entry.actor_name !== undefined) {
14
+ voiceActorByCode.set(entry.code, entry.actor_name);
15
+ }
16
+ }
17
+ return {
18
+ classNameFor(groupType, fallbackFromTagList) {
19
+ const techEntry = fleetTechShipTemplate[groupType];
20
+ if (techEntry !== undefined) {
21
+ const classId = String(techEntry.class);
22
+ const classEntry = fleetTechShipClass[classId];
23
+ if (classEntry !== undefined) {
24
+ return classEntry.name;
25
+ }
26
+ }
27
+ return fallbackFromTagList ?? "Unknown";
28
+ },
29
+ hullTypeName(typeId) {
30
+ const entry = shipDataByType[String(typeId)];
31
+ return entry?.type_name ?? "Unknown";
32
+ },
33
+ equipTypeName(typeId) {
34
+ const entry = equipDataByType[String(typeId)];
35
+ if (entry === undefined)
36
+ return "Unknown";
37
+ return entry.type_name2 ?? entry.type_name ?? "Unknown";
38
+ },
39
+ skillName(id) {
40
+ const key = String(id);
41
+ const templateEntry = skillDataTemplate[key];
42
+ if (templateEntry?.name !== undefined) {
43
+ return templateEntry.name;
44
+ }
45
+ const displayEntry = skillDataDisplay[key];
46
+ if (displayEntry?.name !== undefined) {
47
+ return displayEntry.name;
48
+ }
49
+ return `Skill ${id}`;
50
+ },
51
+ voiceActorName(code) {
52
+ // Try the pre-built code→name map first (keyed by the `code` field in each record)
53
+ const byCode = voiceActorByCode.get(code);
54
+ if (byCode !== undefined)
55
+ return byCode;
56
+ // Also try looking up by record key directly (some files key by code number)
57
+ const entry = voiceActorCn[String(code)];
58
+ if (entry?.actor_name !== undefined)
59
+ return entry.actor_name;
60
+ return "Unknown";
61
+ },
62
+ };
63
+ }
@@ -0,0 +1,98 @@
1
+ "use strict";
2
+ // ---------------------------------------------------------------------------
3
+ // Placeholder substitution
4
+ // ---------------------------------------------------------------------------
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.substitutePlaceholders = substitutePlaceholders;
7
+ exports.extractMaxLevelSubstitutions = extractMaxLevelSubstitutions;
8
+ exports.starsString = starsString;
9
+ exports.wikiUrlFor = wikiUrlFor;
10
+ exports.splitLimitBreakBonuses = splitLimitBreakBonuses;
11
+ /**
12
+ * Format a raw skill description by substituting $1, $2, ... placeholders.
13
+ *
14
+ * @example
15
+ * substitutePlaceholders("Increases DMG by $1 and AoE by $2.", ["25.0%", "3.0%"])
16
+ * // → "Increases DMG by 25.0% and AoE by 3.0%."
17
+ */
18
+ function substitutePlaceholders(raw, substitutions) {
19
+ return raw.replace(/\$(\d+)/g, (_match, indexStr) => {
20
+ const idx = parseInt(indexStr, 10) - 1; // convert 1-based to 0-based
21
+ return substitutions[idx] ?? _match;
22
+ });
23
+ }
24
+ /**
25
+ * Extract the max-rank substitution value from a skill's desc_add array.
26
+ *
27
+ * The true shape of desc_add is `Array<Array<Array<string | number>>>`:
28
+ * - Outer: one entry per placeholder ($N → outer[N-1])
29
+ * - Middle: one entry per skill level (length = max_level, usually 10)
30
+ * - Inner: a tuple of [current_value, delta] or [value] — we take index 0
31
+ *
32
+ * For the max-rank value we take desc_add[n-1][maxLevel-1][0].
33
+ * If anything looks wrong, we use the last available entry, or "" as a last resort.
34
+ */
35
+ function extractMaxLevelSubstitutions(descAdd, maxLevel) {
36
+ if (!Array.isArray(descAdd))
37
+ return [];
38
+ const result = [];
39
+ for (const outerEntry of descAdd) {
40
+ // outerEntry should be an array of per-level arrays
41
+ if (!Array.isArray(outerEntry) || outerEntry.length === 0) {
42
+ result.push("");
43
+ continue;
44
+ }
45
+ // Pick the last-level entry, clamped to available entries
46
+ const levelIndex = Math.min(maxLevel - 1, outerEntry.length - 1);
47
+ const innerEntry = outerEntry[Math.max(0, levelIndex)];
48
+ if (!Array.isArray(innerEntry) || innerEntry.length === 0) {
49
+ result.push("");
50
+ continue;
51
+ }
52
+ const value = innerEntry[0];
53
+ if (value === null || value === undefined) {
54
+ result.push("");
55
+ }
56
+ else {
57
+ result.push(String(value));
58
+ }
59
+ }
60
+ return result;
61
+ }
62
+ // ---------------------------------------------------------------------------
63
+ // Stars
64
+ // ---------------------------------------------------------------------------
65
+ /**
66
+ * Convert star count 1..6 to a unicode-star string like "★★★★".
67
+ */
68
+ function starsString(count) {
69
+ return "★".repeat(Math.max(0, count));
70
+ }
71
+ // ---------------------------------------------------------------------------
72
+ // Wiki URL
73
+ // ---------------------------------------------------------------------------
74
+ /**
75
+ * Convert an EN ship name to a wiki URL.
76
+ * e.g. "Belfast" → "https://azurlane.koumakan.jp/wiki/Belfast"
77
+ */
78
+ function wikiUrlFor(name) {
79
+ return `https://azurlane.koumakan.jp/wiki/${encodeURIComponent(name)}`;
80
+ }
81
+ // ---------------------------------------------------------------------------
82
+ // Limit break bonus string splitting
83
+ // ---------------------------------------------------------------------------
84
+ /**
85
+ * Split a limit-break bonus string on "/" or "|" into bullet items. Trim whitespace.
86
+ *
87
+ * @example
88
+ * splitLimitBreakBonuses("Unlock X/Main gun +5%/+10 FP")
89
+ * // → ["Unlock X", "Main gun +5%", "+10 FP"]
90
+ *
91
+ * Returns [] for the empty string or for "None".
92
+ */
93
+ function splitLimitBreakBonuses(raw) {
94
+ const trimmed = raw.trim();
95
+ if (trimmed === "" || trimmed === "None")
96
+ return [];
97
+ return trimmed.split(/[/|]/).map((s) => s.trim()).filter((s) => s.length > 0);
98
+ }
@@ -0,0 +1,25 @@
1
+ import { Ships } from "./ships.js";
2
+ import { type FetchOptions } from "./fetcher.js";
3
+ export interface AzurDataOptions {
4
+ dataPath?: string;
5
+ }
6
+ export interface AzurDataInitOptions extends FetchOptions {
7
+ /** Fetch latest data from GitHub on startup. Default: true */
8
+ fetchLatest?: boolean;
9
+ }
10
+ export declare class AzurData {
11
+ readonly ships: Ships;
12
+ /** Sync constructor — loads baked data from disk. No network. */
13
+ constructor(options?: AzurDataOptions);
14
+ /**
15
+ * Async factory — fetches latest data from GitHub, caches locally,
16
+ * falls back to baked data if offline.
17
+ *
18
+ * ```ts
19
+ * const azur = await AzurData.init({ fetchLatest: true });
20
+ * ```
21
+ */
22
+ static init(options?: AzurDataInitOptions): Promise<AzurData>;
23
+ private static resolveDefaultDataPath;
24
+ }
25
+ //# sourceMappingURL=AzurData.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AzurData.d.ts","sourceRoot":"","sources":["../../src/client/AzurData.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAGlE,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,mBAAoB,SAAQ,YAAY;IACvD,8DAA8D;IAC9D,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAcD,qBAAa,QAAQ;IACnB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IAEtB,iEAAiE;gBACrD,OAAO,GAAE,eAAoB;IAWzC;;;;;;;OAOG;WACU,IAAI,CAAC,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAmBvE,OAAO,CAAC,MAAM,CAAC,sBAAsB;CAUtC"}
@@ -0,0 +1,63 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ import { Ships } from "./ships.js";
4
+ import { fetchLatestData } from "./fetcher.js";
5
+ function resolveThisDir() {
6
+ // CJS: __dirname is injected by Node
7
+ // ESM under tsx/ts-node: __dirname is polyfilled
8
+ // Pure ESM: falls back to cwd
9
+ try {
10
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
11
+ // @ts-ignore __dirname exists in CJS but not in ESM type defs
12
+ if (typeof __dirname === "string")
13
+ return __dirname; // eslint-disable-line no-undef
14
+ }
15
+ catch { /* not CJS */ }
16
+ return process.cwd();
17
+ }
18
+ export class AzurData {
19
+ ships;
20
+ /** Sync constructor — loads baked data from disk. No network. */
21
+ constructor(options = {}) {
22
+ const dataDir = options.dataPath ?? AzurData.resolveDefaultDataPath();
23
+ const shipsJson = JSON.parse(fs.readFileSync(path.join(dataDir, "ships.json"), "utf8"));
24
+ const idMapJson = JSON.parse(fs.readFileSync(path.join(dataDir, "id-map.json"), "utf8"));
25
+ this.ships = new Ships({ data: shipsJson, idMap: idMapJson });
26
+ }
27
+ /**
28
+ * Async factory — fetches latest data from GitHub, caches locally,
29
+ * falls back to baked data if offline.
30
+ *
31
+ * ```ts
32
+ * const azur = await AzurData.init({ fetchLatest: true });
33
+ * ```
34
+ */
35
+ static async init(options = {}) {
36
+ const { fetchLatest = true, ...fetchOpts } = options;
37
+ if (fetchLatest) {
38
+ const fetched = await fetchLatestData(fetchOpts);
39
+ if (fetched) {
40
+ const instance = Object.create(AzurData.prototype);
41
+ instance.ships = new Ships({
42
+ data: fetched.ships,
43
+ idMap: fetched.idMap,
44
+ });
45
+ return instance;
46
+ }
47
+ }
48
+ // Fallback to baked data
49
+ return new AzurData();
50
+ }
51
+ static resolveDefaultDataPath() {
52
+ const thisDir = resolveThisDir();
53
+ let candidate = thisDir;
54
+ for (let i = 0; i < 5; i++) {
55
+ const dataPath = path.resolve(candidate, "data");
56
+ if (fs.existsSync(path.join(dataPath, "ships.json")))
57
+ return dataPath;
58
+ candidate = path.resolve(candidate, "..");
59
+ }
60
+ return path.resolve(process.cwd(), "data");
61
+ }
62
+ }
63
+ //# sourceMappingURL=AzurData.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AzurData.js","sourceRoot":"","sources":["../../src/client/AzurData.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,eAAe,EAAqB,MAAM,cAAc,CAAC;AAYlE,SAAS,cAAc;IACrB,qCAAqC;IACrC,iDAAiD;IACjD,8BAA8B;IAC9B,IAAI,CAAC;QACH,6DAA6D;QAC7D,8DAA8D;QAC9D,IAAI,OAAO,SAAS,KAAK,QAAQ;YAAE,OAAO,SAAS,CAAC,CAAC,+BAA+B;IACtF,CAAC;IAAC,MAAM,CAAC,CAAC,aAAa,CAAC,CAAC;IACzB,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC;AACvB,CAAC;AAED,MAAM,OAAO,QAAQ;IACV,KAAK,CAAQ;IAEtB,iEAAiE;IACjE,YAAY,UAA2B,EAAE;QACvC,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,IAAI,QAAQ,CAAC,sBAAsB,EAAE,CAAC;QACtE,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAC1B,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,EAAE,MAAM,CAAC,CAClC,CAAC;QAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAC1B,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,EAAE,MAAM,CAAC,CACjC,CAAC;QAC5B,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAChE,CAAC;IAED;;;;;;;OAOG;IACH,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,UAA+B,EAAE;QACjD,MAAM,EAAE,WAAW,GAAG,IAAI,EAAE,GAAG,SAAS,EAAE,GAAG,OAAO,CAAC;QAErD,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,SAAS,CAAC,CAAC;YACjD,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAa,CAAC;gBAC9D,QAA6B,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC;oBAC/C,IAAI,EAAE,OAAO,CAAC,KAAK;oBACnB,KAAK,EAAE,OAAO,CAAC,KAAK;iBACrB,CAAC,CAAC;gBACH,OAAO,QAAQ,CAAC;YAClB,CAAC;QACH,CAAC;QAED,yBAAyB;QACzB,OAAO,IAAI,QAAQ,EAAE,CAAC;IACxB,CAAC;IAEO,MAAM,CAAC,sBAAsB;QACnC,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;QACjC,IAAI,SAAS,GAAG,OAAO,CAAC;QACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YACjD,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;gBAAE,OAAO,QAAQ,CAAC;YACtE,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC;IAC7C,CAAC;CACF"}
@@ -0,0 +1,25 @@
1
+ import type { Ship } from "../schema/output/ship.js";
2
+ export interface FetchOptions {
3
+ /** Directory to cache downloaded data. Default: ~/.azurdata */
4
+ cacheDir?: string;
5
+ /** Re-fetch if cache is older than this (ms). Default: 6 hours */
6
+ maxAge?: number;
7
+ /** Base URL for raw data files. Default: GitHub raw URL */
8
+ dataUrl?: string;
9
+ }
10
+ interface FetchedData {
11
+ ships: Record<string, Ship>;
12
+ idMap: Record<string, string>;
13
+ }
14
+ /**
15
+ * Fetch latest data from GitHub, with local cache and baked-data fallback.
16
+ *
17
+ * Flow:
18
+ * 1. If cache exists and is fresh (< maxAge) → load from cache
19
+ * 2. Else fetch version.json from remote → compare with cache
20
+ * 3. If remote is newer → fetch ships.json + id-map.json, write to cache
21
+ * 4. If any fetch fails → fall back to cache, then to null (caller uses baked data)
22
+ */
23
+ export declare function fetchLatestData(options?: FetchOptions): Promise<FetchedData | null>;
24
+ export {};
25
+ //# sourceMappingURL=fetcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetcher.d.ts","sourceRoot":"","sources":["../../src/client/fetcher.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAKrD,MAAM,WAAW,YAAY;IAC3B,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kEAAkE;IAClE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2DAA2D;IAC3D,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAOD,UAAU,WAAW;IACnB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B;AAED;;;;;;;;GAQG;AACH,wBAAsB,eAAe,CACnC,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAoD7B"}
@@ -0,0 +1,116 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ import os from "node:os";
4
+ import { DATA_BASE_URL } from "../config.js";
5
+ const DEFAULT_CACHE_DIR = path.join(os.homedir(), ".azurdata");
6
+ const DEFAULT_MAX_AGE = 6 * 60 * 60 * 1000; // 6 hours
7
+ /**
8
+ * Fetch latest data from GitHub, with local cache and baked-data fallback.
9
+ *
10
+ * Flow:
11
+ * 1. If cache exists and is fresh (< maxAge) → load from cache
12
+ * 2. Else fetch version.json from remote → compare with cache
13
+ * 3. If remote is newer → fetch ships.json + id-map.json, write to cache
14
+ * 4. If any fetch fails → fall back to cache, then to null (caller uses baked data)
15
+ */
16
+ export async function fetchLatestData(options = {}) {
17
+ const cacheDir = options.cacheDir ?? DEFAULT_CACHE_DIR;
18
+ const maxAge = options.maxAge ?? DEFAULT_MAX_AGE;
19
+ const baseUrl = options.dataUrl ?? DATA_BASE_URL;
20
+ // Check cache freshness
21
+ const cachedShipsPath = path.join(cacheDir, "ships.json");
22
+ const cachedIdMapPath = path.join(cacheDir, "id-map.json");
23
+ const cachedVersionPath = path.join(cacheDir, "version.json");
24
+ if (isCacheFresh(cachedVersionPath, maxAge)) {
25
+ return loadFromCache(cachedShipsPath, cachedIdMapPath);
26
+ }
27
+ // Fetch remote version
28
+ let remoteVersion = null;
29
+ try {
30
+ remoteVersion = await fetchJson(`${baseUrl}/version.json`);
31
+ }
32
+ catch {
33
+ // Network error — try cache regardless of age
34
+ return loadFromCache(cachedShipsPath, cachedIdMapPath);
35
+ }
36
+ // Compare with cached version
37
+ if (remoteVersion && isCacheUpToDate(cachedVersionPath, remoteVersion)) {
38
+ // Touch the cache file to reset maxAge timer
39
+ touchFile(cachedVersionPath);
40
+ return loadFromCache(cachedShipsPath, cachedIdMapPath);
41
+ }
42
+ // Fetch fresh data
43
+ try {
44
+ const [ships, idMap] = await Promise.all([
45
+ fetchJson(`${baseUrl}/ships.json`),
46
+ fetchJson(`${baseUrl}/id-map.json`),
47
+ ]);
48
+ if (!ships || !idMap) {
49
+ return loadFromCache(cachedShipsPath, cachedIdMapPath);
50
+ }
51
+ // Write to cache atomically
52
+ writeCache(cacheDir, {
53
+ "ships.json": ships,
54
+ "id-map.json": idMap,
55
+ "version.json": remoteVersion,
56
+ });
57
+ return { ships, idMap };
58
+ }
59
+ catch {
60
+ return loadFromCache(cachedShipsPath, cachedIdMapPath);
61
+ }
62
+ }
63
+ // ── Helpers ──────────────────────────────────────────────────────────────────
64
+ async function fetchJson(url) {
65
+ const res = await fetch(url);
66
+ if (!res.ok)
67
+ return null;
68
+ return (await res.json());
69
+ }
70
+ function isCacheFresh(versionPath, maxAge) {
71
+ try {
72
+ const stat = fs.statSync(versionPath);
73
+ return Date.now() - stat.mtimeMs < maxAge;
74
+ }
75
+ catch {
76
+ return false;
77
+ }
78
+ }
79
+ function isCacheUpToDate(versionPath, remote) {
80
+ try {
81
+ const cached = JSON.parse(fs.readFileSync(versionPath, "utf8"));
82
+ return cached.generatedAt === remote.generatedAt;
83
+ }
84
+ catch {
85
+ return false;
86
+ }
87
+ }
88
+ function touchFile(filePath) {
89
+ try {
90
+ const now = new Date();
91
+ fs.utimesSync(filePath, now, now);
92
+ }
93
+ catch { /* ignore */ }
94
+ }
95
+ function loadFromCache(shipsPath, idMapPath) {
96
+ try {
97
+ if (!fs.existsSync(shipsPath) || !fs.existsSync(idMapPath))
98
+ return null;
99
+ const ships = JSON.parse(fs.readFileSync(shipsPath, "utf8"));
100
+ const idMap = JSON.parse(fs.readFileSync(idMapPath, "utf8"));
101
+ return { ships, idMap };
102
+ }
103
+ catch {
104
+ return null;
105
+ }
106
+ }
107
+ function writeCache(cacheDir, files) {
108
+ fs.mkdirSync(cacheDir, { recursive: true });
109
+ for (const [name, data] of Object.entries(files)) {
110
+ const target = path.join(cacheDir, name);
111
+ const tmp = target + ".tmp";
112
+ fs.writeFileSync(tmp, JSON.stringify(data), "utf8");
113
+ fs.renameSync(tmp, target); // atomic on most filesystems
114
+ }
115
+ }
116
+ //# sourceMappingURL=fetcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetcher.js","sourceRoot":"","sources":["../../src/client/fetcher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export { AzurData, type AzurDataOptions, type AzurDataInitOptions } from "./AzurData.js";
2
+ export { Ships, type ShipsOptions } from "./ships.js";
3
+ export { type FetchOptions } from "./fetcher.js";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,eAAe,EAAE,KAAK,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACzF,OAAO,EAAE,KAAK,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { AzurData } from "./AzurData.js";
2
+ export { Ships } from "./ships.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAkD,MAAM,eAAe,CAAC;AACzF,OAAO,EAAE,KAAK,EAAqB,MAAM,YAAY,CAAC"}
@@ -0,0 +1,20 @@
1
+ import type { Ship } from "../schema/output/ship.js";
2
+ export interface ShipsOptions {
3
+ data: Record<string, Ship>;
4
+ idMap: Record<string, string>;
5
+ fuseThreshold?: number;
6
+ }
7
+ export declare class Ships {
8
+ private readonly data;
9
+ private readonly idMap;
10
+ private readonly fuse;
11
+ constructor(options: ShipsOptions);
12
+ get(nameOrId: string): Ship | undefined;
13
+ private _ciIdMap?;
14
+ private getCiIdMap;
15
+ getAll(): Ship[];
16
+ getById(id: string): Ship | undefined;
17
+ count(): number;
18
+ search(query: string, limit?: number): Ship[];
19
+ }
20
+ //# sourceMappingURL=ships.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ships.d.ts","sourceRoot":"","sources":["../../src/client/ships.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAErD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,qBAAa,KAAK;IAChB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAuB;IAC5C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAyB;IAC/C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAa;gBAEtB,OAAO,EAAE,YAAY;IAoBjC,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS;IAyBvC,OAAO,CAAC,QAAQ,CAAC,CAAyB;IAC1C,OAAO,CAAC,UAAU;IAUlB,MAAM,IAAI,IAAI,EAAE;IAIhB,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS;IAIrC,KAAK,IAAI,MAAM;IAKf,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,IAAI,EAAE;CAI1C"}