@lycoristech/azurapi 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 (273) hide show
  1. package/LICENSE +25 -0
  2. package/README.md +113 -0
  3. package/data/id-map.json +3530 -0
  4. package/data/ship-list.json +4478 -0
  5. package/data/ships.json +143282 -0
  6. package/data/version.json +5 -0
  7. package/dist/cjs/client/AzurData.js +69 -0
  8. package/dist/cjs/client/fetcher.js +121 -0
  9. package/dist/cjs/client/index.js +7 -0
  10. package/dist/cjs/client/ships.js +80 -0
  11. package/dist/cjs/config.js +14 -0
  12. package/dist/cjs/index.js +6 -0
  13. package/dist/cjs/ingest/files.js +134 -0
  14. package/dist/cjs/ingest/index.js +18 -0
  15. package/dist/cjs/ingest/upstream.js +12 -0
  16. package/dist/cjs/normalize/construction.js +186 -0
  17. package/dist/cjs/normalize/identity.js +131 -0
  18. package/dist/cjs/normalize/index.js +25 -0
  19. package/dist/cjs/normalize/misc.js +31 -0
  20. package/dist/cjs/normalize/retrofit.js +21 -0
  21. package/dist/cjs/normalize/ship.js +406 -0
  22. package/dist/cjs/normalize/skills.js +194 -0
  23. package/dist/cjs/normalize/skins.js +141 -0
  24. package/dist/cjs/normalize/slots.js +35 -0
  25. package/dist/cjs/normalize/stats.js +182 -0
  26. package/dist/cjs/output/index.js +20 -0
  27. package/dist/cjs/output/writeIdMap.js +52 -0
  28. package/dist/cjs/output/writeShipList.js +31 -0
  29. package/dist/cjs/output/writeShips.js +33 -0
  30. package/dist/cjs/output/writeVersion.js +23 -0
  31. package/dist/cjs/package.json +1 -0
  32. package/dist/cjs/schema/output/index.js +17 -0
  33. package/dist/cjs/schema/output/ship.js +169 -0
  34. package/dist/cjs/schema/raw/attributeInfoByType.js +11 -0
  35. package/dist/cjs/schema/raw/equipDataByType.js +12 -0
  36. package/dist/cjs/schema/raw/fleetTechGroup.js +10 -0
  37. package/dist/cjs/schema/raw/fleetTechShipClass.js +15 -0
  38. package/dist/cjs/schema/raw/fleetTechShipTemplate.js +20 -0
  39. package/dist/cjs/schema/raw/index.js +38 -0
  40. package/dist/cjs/schema/raw/shipDataBlueprint.js +11 -0
  41. package/dist/cjs/schema/raw/shipDataBreakout.js +17 -0
  42. package/dist/cjs/schema/raw/shipDataByStar.js +10 -0
  43. package/dist/cjs/schema/raw/shipDataByType.js +13 -0
  44. package/dist/cjs/schema/raw/shipDataCreateExchange.js +10 -0
  45. package/dist/cjs/schema/raw/shipDataGroup.js +22 -0
  46. package/dist/cjs/schema/raw/shipDataStatistics.js +24 -0
  47. package/dist/cjs/schema/raw/shipDataStrengthen.js +12 -0
  48. package/dist/cjs/schema/raw/shipDataTemplate.js +26 -0
  49. package/dist/cjs/schema/raw/shipDataTrans.js +13 -0
  50. package/dist/cjs/schema/raw/shipSkinTemplate.js +23 -0
  51. package/dist/cjs/schema/raw/shipSkinWords.js +11 -0
  52. package/dist/cjs/schema/raw/shopTemplate.js +14 -0
  53. package/dist/cjs/schema/raw/skillDataDisplay.js +11 -0
  54. package/dist/cjs/schema/raw/skillDataTemplate.js +17 -0
  55. package/dist/cjs/schema/raw/transformDataTemplate.js +18 -0
  56. package/dist/cjs/schema/raw/voiceActorCn.js +11 -0
  57. package/dist/cjs/translate/enums.js +131 -0
  58. package/dist/cjs/translate/index.js +19 -0
  59. package/dist/cjs/translate/lookups.js +63 -0
  60. package/dist/cjs/translate/strings.js +98 -0
  61. package/dist/client/AzurData.d.ts +25 -0
  62. package/dist/client/AzurData.d.ts.map +1 -0
  63. package/dist/client/AzurData.js +63 -0
  64. package/dist/client/AzurData.js.map +1 -0
  65. package/dist/client/fetcher.d.ts +25 -0
  66. package/dist/client/fetcher.d.ts.map +1 -0
  67. package/dist/client/fetcher.js +116 -0
  68. package/dist/client/fetcher.js.map +1 -0
  69. package/dist/client/index.d.ts +4 -0
  70. package/dist/client/index.d.ts.map +1 -0
  71. package/dist/client/index.js +3 -0
  72. package/dist/client/index.js.map +1 -0
  73. package/dist/client/ships.d.ts +20 -0
  74. package/dist/client/ships.d.ts.map +1 -0
  75. package/dist/client/ships.js +74 -0
  76. package/dist/client/ships.js.map +1 -0
  77. package/dist/config.d.ts +5 -0
  78. package/dist/config.d.ts.map +1 -0
  79. package/dist/config.js +12 -0
  80. package/dist/config.js.map +1 -0
  81. package/dist/index.d.ts +3 -0
  82. package/dist/index.d.ts.map +1 -0
  83. package/dist/index.js +2 -0
  84. package/dist/index.js.map +1 -0
  85. package/dist/ingest/files.d.ts +25 -0
  86. package/dist/ingest/files.d.ts.map +1 -0
  87. package/dist/ingest/files.js +108 -0
  88. package/dist/ingest/files.js.map +1 -0
  89. package/dist/ingest/index.d.ts +3 -0
  90. package/dist/ingest/index.d.ts.map +1 -0
  91. package/dist/ingest/index.js +3 -0
  92. package/dist/ingest/index.js.map +1 -0
  93. package/dist/ingest/upstream.d.ts +4 -0
  94. package/dist/ingest/upstream.d.ts.map +1 -0
  95. package/dist/ingest/upstream.js +6 -0
  96. package/dist/ingest/upstream.js.map +1 -0
  97. package/dist/normalize/construction.d.ts +30 -0
  98. package/dist/normalize/construction.d.ts.map +1 -0
  99. package/dist/normalize/construction.js +184 -0
  100. package/dist/normalize/construction.js.map +1 -0
  101. package/dist/normalize/identity.d.ts +47 -0
  102. package/dist/normalize/identity.d.ts.map +1 -0
  103. package/dist/normalize/identity.js +129 -0
  104. package/dist/normalize/identity.js.map +1 -0
  105. package/dist/normalize/index.d.ts +10 -0
  106. package/dist/normalize/index.d.ts.map +1 -0
  107. package/dist/normalize/index.js +10 -0
  108. package/dist/normalize/index.js.map +1 -0
  109. package/dist/normalize/misc.d.ts +15 -0
  110. package/dist/normalize/misc.d.ts.map +1 -0
  111. package/dist/normalize/misc.js +29 -0
  112. package/dist/normalize/misc.js.map +1 -0
  113. package/dist/normalize/retrofit.d.ts +14 -0
  114. package/dist/normalize/retrofit.d.ts.map +1 -0
  115. package/dist/normalize/retrofit.js +19 -0
  116. package/dist/normalize/retrofit.js.map +1 -0
  117. package/dist/normalize/ship.d.ts +67 -0
  118. package/dist/normalize/ship.d.ts.map +1 -0
  119. package/dist/normalize/ship.js +369 -0
  120. package/dist/normalize/ship.js.map +1 -0
  121. package/dist/normalize/skills.d.ts +20 -0
  122. package/dist/normalize/skills.d.ts.map +1 -0
  123. package/dist/normalize/skills.js +192 -0
  124. package/dist/normalize/skills.js.map +1 -0
  125. package/dist/normalize/skins.d.ts +14 -0
  126. package/dist/normalize/skins.d.ts.map +1 -0
  127. package/dist/normalize/skins.js +139 -0
  128. package/dist/normalize/skins.js.map +1 -0
  129. package/dist/normalize/slots.d.ts +14 -0
  130. package/dist/normalize/slots.d.ts.map +1 -0
  131. package/dist/normalize/slots.js +33 -0
  132. package/dist/normalize/slots.js.map +1 -0
  133. package/dist/normalize/stats.d.ts +19 -0
  134. package/dist/normalize/stats.d.ts.map +1 -0
  135. package/dist/normalize/stats.js +180 -0
  136. package/dist/normalize/stats.js.map +1 -0
  137. package/dist/output/index.d.ts +5 -0
  138. package/dist/output/index.d.ts.map +1 -0
  139. package/dist/output/index.js +5 -0
  140. package/dist/output/index.js.map +1 -0
  141. package/dist/output/writeIdMap.d.ts +16 -0
  142. package/dist/output/writeIdMap.d.ts.map +1 -0
  143. package/dist/output/writeIdMap.js +47 -0
  144. package/dist/output/writeIdMap.js.map +1 -0
  145. package/dist/output/writeShipList.d.ts +9 -0
  146. package/dist/output/writeShipList.d.ts.map +1 -0
  147. package/dist/output/writeShipList.js +26 -0
  148. package/dist/output/writeShipList.js.map +1 -0
  149. package/dist/output/writeShips.d.ts +15 -0
  150. package/dist/output/writeShips.d.ts.map +1 -0
  151. package/dist/output/writeShips.js +28 -0
  152. package/dist/output/writeShips.js.map +1 -0
  153. package/dist/output/writeVersion.d.ts +11 -0
  154. package/dist/output/writeVersion.d.ts.map +1 -0
  155. package/dist/output/writeVersion.js +18 -0
  156. package/dist/output/writeVersion.js.map +1 -0
  157. package/dist/schema/output/index.d.ts +2 -0
  158. package/dist/schema/output/index.d.ts.map +1 -0
  159. package/dist/schema/output/index.js +2 -0
  160. package/dist/schema/output/index.js.map +1 -0
  161. package/dist/schema/output/ship.d.ts +977 -0
  162. package/dist/schema/output/ship.d.ts.map +1 -0
  163. package/dist/schema/output/ship.js +167 -0
  164. package/dist/schema/output/ship.js.map +1 -0
  165. package/dist/schema/raw/attributeInfoByType.d.ts +25 -0
  166. package/dist/schema/raw/attributeInfoByType.d.ts.map +1 -0
  167. package/dist/schema/raw/attributeInfoByType.js +9 -0
  168. package/dist/schema/raw/attributeInfoByType.js.map +1 -0
  169. package/dist/schema/raw/equipDataByType.d.ts +31 -0
  170. package/dist/schema/raw/equipDataByType.d.ts.map +1 -0
  171. package/dist/schema/raw/equipDataByType.js +10 -0
  172. package/dist/schema/raw/equipDataByType.js.map +1 -0
  173. package/dist/schema/raw/fleetTechGroup.d.ts +19 -0
  174. package/dist/schema/raw/fleetTechGroup.d.ts.map +1 -0
  175. package/dist/schema/raw/fleetTechGroup.js +8 -0
  176. package/dist/schema/raw/fleetTechGroup.js.map +1 -0
  177. package/dist/schema/raw/fleetTechShipClass.d.ts +49 -0
  178. package/dist/schema/raw/fleetTechShipClass.d.ts.map +1 -0
  179. package/dist/schema/raw/fleetTechShipClass.js +13 -0
  180. package/dist/schema/raw/fleetTechShipClass.js.map +1 -0
  181. package/dist/schema/raw/fleetTechShipTemplate.d.ts +79 -0
  182. package/dist/schema/raw/fleetTechShipTemplate.d.ts.map +1 -0
  183. package/dist/schema/raw/fleetTechShipTemplate.js +18 -0
  184. package/dist/schema/raw/fleetTechShipTemplate.js.map +1 -0
  185. package/dist/schema/raw/index.d.ts +23 -0
  186. package/dist/schema/raw/index.d.ts.map +1 -0
  187. package/dist/schema/raw/index.js +23 -0
  188. package/dist/schema/raw/index.js.map +1 -0
  189. package/dist/schema/raw/shipDataBlueprint.d.ts +25 -0
  190. package/dist/schema/raw/shipDataBlueprint.d.ts.map +1 -0
  191. package/dist/schema/raw/shipDataBlueprint.js +9 -0
  192. package/dist/schema/raw/shipDataBlueprint.js.map +1 -0
  193. package/dist/schema/raw/shipDataBreakout.d.ts +61 -0
  194. package/dist/schema/raw/shipDataBreakout.d.ts.map +1 -0
  195. package/dist/schema/raw/shipDataBreakout.js +15 -0
  196. package/dist/schema/raw/shipDataBreakout.js.map +1 -0
  197. package/dist/schema/raw/shipDataByStar.d.ts +19 -0
  198. package/dist/schema/raw/shipDataByStar.d.ts.map +1 -0
  199. package/dist/schema/raw/shipDataByStar.js +8 -0
  200. package/dist/schema/raw/shipDataByStar.js.map +1 -0
  201. package/dist/schema/raw/shipDataByType.d.ts +37 -0
  202. package/dist/schema/raw/shipDataByType.d.ts.map +1 -0
  203. package/dist/schema/raw/shipDataByType.js +11 -0
  204. package/dist/schema/raw/shipDataByType.js.map +1 -0
  205. package/dist/schema/raw/shipDataCreateExchange.d.ts +19 -0
  206. package/dist/schema/raw/shipDataCreateExchange.d.ts.map +1 -0
  207. package/dist/schema/raw/shipDataCreateExchange.js +8 -0
  208. package/dist/schema/raw/shipDataCreateExchange.js.map +1 -0
  209. package/dist/schema/raw/shipDataGroup.d.ts +79 -0
  210. package/dist/schema/raw/shipDataGroup.d.ts.map +1 -0
  211. package/dist/schema/raw/shipDataGroup.js +20 -0
  212. package/dist/schema/raw/shipDataGroup.js.map +1 -0
  213. package/dist/schema/raw/shipDataStatistics.d.ts +103 -0
  214. package/dist/schema/raw/shipDataStatistics.d.ts.map +1 -0
  215. package/dist/schema/raw/shipDataStatistics.js +22 -0
  216. package/dist/schema/raw/shipDataStatistics.js.map +1 -0
  217. package/dist/schema/raw/shipDataStrengthen.d.ts +31 -0
  218. package/dist/schema/raw/shipDataStrengthen.d.ts.map +1 -0
  219. package/dist/schema/raw/shipDataStrengthen.js +10 -0
  220. package/dist/schema/raw/shipDataStrengthen.js.map +1 -0
  221. package/dist/schema/raw/shipDataTemplate.d.ts +115 -0
  222. package/dist/schema/raw/shipDataTemplate.d.ts.map +1 -0
  223. package/dist/schema/raw/shipDataTemplate.js +24 -0
  224. package/dist/schema/raw/shipDataTemplate.js.map +1 -0
  225. package/dist/schema/raw/shipDataTrans.d.ts +37 -0
  226. package/dist/schema/raw/shipDataTrans.d.ts.map +1 -0
  227. package/dist/schema/raw/shipDataTrans.js +11 -0
  228. package/dist/schema/raw/shipDataTrans.js.map +1 -0
  229. package/dist/schema/raw/shipSkinTemplate.d.ts +97 -0
  230. package/dist/schema/raw/shipSkinTemplate.d.ts.map +1 -0
  231. package/dist/schema/raw/shipSkinTemplate.js +21 -0
  232. package/dist/schema/raw/shipSkinTemplate.js.map +1 -0
  233. package/dist/schema/raw/shipSkinWords.d.ts +25 -0
  234. package/dist/schema/raw/shipSkinWords.d.ts.map +1 -0
  235. package/dist/schema/raw/shipSkinWords.js +9 -0
  236. package/dist/schema/raw/shipSkinWords.js.map +1 -0
  237. package/dist/schema/raw/shopTemplate.d.ts +43 -0
  238. package/dist/schema/raw/shopTemplate.d.ts.map +1 -0
  239. package/dist/schema/raw/shopTemplate.js +12 -0
  240. package/dist/schema/raw/shopTemplate.js.map +1 -0
  241. package/dist/schema/raw/skillDataDisplay.d.ts +25 -0
  242. package/dist/schema/raw/skillDataDisplay.d.ts.map +1 -0
  243. package/dist/schema/raw/skillDataDisplay.js +9 -0
  244. package/dist/schema/raw/skillDataDisplay.js.map +1 -0
  245. package/dist/schema/raw/skillDataTemplate.d.ts +61 -0
  246. package/dist/schema/raw/skillDataTemplate.d.ts.map +1 -0
  247. package/dist/schema/raw/skillDataTemplate.js +15 -0
  248. package/dist/schema/raw/skillDataTemplate.js.map +1 -0
  249. package/dist/schema/raw/transformDataTemplate.d.ts +67 -0
  250. package/dist/schema/raw/transformDataTemplate.d.ts.map +1 -0
  251. package/dist/schema/raw/transformDataTemplate.js +16 -0
  252. package/dist/schema/raw/transformDataTemplate.js.map +1 -0
  253. package/dist/schema/raw/voiceActorCn.d.ts +25 -0
  254. package/dist/schema/raw/voiceActorCn.d.ts.map +1 -0
  255. package/dist/schema/raw/voiceActorCn.js +9 -0
  256. package/dist/schema/raw/voiceActorCn.js.map +1 -0
  257. package/dist/translate/enums.d.ts +34 -0
  258. package/dist/translate/enums.d.ts.map +1 -0
  259. package/dist/translate/enums.js +126 -0
  260. package/dist/translate/enums.js.map +1 -0
  261. package/dist/translate/index.d.ts +4 -0
  262. package/dist/translate/index.d.ts.map +1 -0
  263. package/dist/translate/index.js +4 -0
  264. package/dist/translate/index.js.map +1 -0
  265. package/dist/translate/lookups.d.ts +37 -0
  266. package/dist/translate/lookups.d.ts.map +1 -0
  267. package/dist/translate/lookups.js +61 -0
  268. package/dist/translate/lookups.js.map +1 -0
  269. package/dist/translate/strings.d.ts +40 -0
  270. package/dist/translate/strings.d.ts.map +1 -0
  271. package/dist/translate/strings.js +92 -0
  272. package/dist/translate/strings.js.map +1 -0
  273. package/package.json +40 -0
package/LICENSE ADDED
@@ -0,0 +1,25 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
22
+
23
+ NOTE: This license applies to the code only. Game data extracted from
24
+ Azur Lane is the property of Yostar/Manjuu/Yongshi. This project is not
25
+ affiliated with or endorsed by these companies.
package/README.md ADDED
@@ -0,0 +1,113 @@
1
+ <img src="https://github.com/iujab/azurlane-images/blob/main/banner.png" />
2
+
3
+ # AzurAPI - js
4
+
5
+ A self-maintained, current Azur Lane data library. Drop-in replacement for the `@azurapi/azurapi` package.
6
+
7
+ ## Why?
8
+
9
+ The older and amazing `@azurapi/azurapi` ecosystem is now 3+ years stale. I have fond memories starting off my computer science hobby building a discord bot using that API. Recently, when revisiting that project, I noticed that the azurapi package was years out of date, likely due to the wiki scraper method no longer being viable. This AzurAPI builds on the [AzurLaneTools/AzurLaneData](https://github.com/AzurLaneTools/AzurLaneData) and [nobbyfix/AzurLane-AssetDownloader](https://github.com/nobbyfix/AzurLane-AssetDownloader) repos so our data stays fresh within hours of each game patch.
10
+
11
+ ## Installation
12
+
13
+ ```bash
14
+ npm install @lycoristech/azurapi
15
+ ```
16
+
17
+ ## Usage
18
+
19
+ ```ts
20
+ import { AzurData } from "@lycoristech/azurapi";
21
+
22
+ const azur = new AzurData();
23
+
24
+ // Get a ship by name, ID, or fuzzy search
25
+ const belfast = azur.ships.get("Belfast");
26
+ const byId = azur.ships.get("20212");
27
+ const byCode = azur.ships.get("115");
28
+
29
+ // Get all ships
30
+ const all = azur.ships.getAll();
31
+ console.log(`${azur.ships.count()} ships loaded`);
32
+
33
+ // Fuzzy search
34
+ const results = azur.ships.search("Enterp", 5); // top 5 matches
35
+ ```
36
+
37
+ ## Migrating from @azurapi/azurapi
38
+
39
+ ```diff
40
+ - import { AzurAPI } from "@azurapi/azurapi";
41
+ + import { AzurData as AzurAPI } from "@lycoristech/azurapi";
42
+ ```
43
+
44
+ That's it. The `ships.get()` API is compatible. Ship objects match the same schema!
45
+
46
+ ## Data Freshness
47
+
48
+ Data is auto-refreshed weekly (every Monday) via GitHub Actions from [AzurLaneTools/AzurLaneData](https://github.com/AzurLaneTools/AzurLaneData) (EN + CN + JP regions). The refresh pipeline:
49
+ 1. Sparse-clones the upstream repo
50
+ 2. Normalizes raw game tables into AzurAPI-compatible JSON
51
+ 3. Runs sanity checks (schema validation, field coverage)
52
+ 4. Commits updated `data/*.json` only if data changed
53
+
54
+ You can also trigger a refresh manually from the Actions tab, or run `npm run build:data` locally.
55
+
56
+ Current data version: see [`data/version.json`](data/version.json).
57
+
58
+ ## Ship Schema
59
+
60
+ Ships have the full AzurAPI-compatible shape including:
61
+ - Identity: `id`, `names`, `rarity`, `class`, `hullType`, `nationality`
62
+ - Stats: level 100/120, with and without retrofit
63
+ - Equipment slots with min/max efficiency
64
+ - Skills with max-rank substituted descriptions
65
+ - Limit breaks, construction info, fleet tech
66
+ - Skins with metadata
67
+ - And more — see [`src/schema/output/ship.ts`](src/schema/output/ship.ts)
68
+
69
+ ## Raw JSON Access
70
+
71
+ The committed `data/ships.json` is fetchable via GitHub raw URL:
72
+
73
+ ```
74
+ https://raw.githubusercontent.com/iujab/AzurAPI/main/data/ships.json
75
+ ```
76
+
77
+ Also available: `ship-list.json` (minimal index), `id-map.json` (name→id lookup), `version.json`.
78
+
79
+ ## Development
80
+
81
+ ```bash
82
+ # Install deps
83
+ npm install
84
+
85
+ # Build data from upstream (requires upstream/ sparse checkout)
86
+ npm run build:data
87
+
88
+ # Verify data integrity
89
+ npm run verify
90
+
91
+ # Run tests
92
+ npm test
93
+
94
+ # Type check
95
+ npm run typecheck
96
+ ```
97
+
98
+ ## Asset Images
99
+
100
+ Ship paintings and thumbnails are hosted in a separate GitHub repo: [iujab/azurlane-images](https://github.com/iujab/azurlane-images). Image URLs in ship data point to raw GitHub URLs from that repo:
101
+
102
+ - **Paintings** — skin art in WebP format (`paintings/{asset_name}.webp`)
103
+ - **Thumbnails** — shipyard icons in PNG format (`thumbnails/{group_type}.png`)
104
+
105
+ ## License
106
+
107
+ MIT for the code. Game data is extracted from publicly available game files and is the property of Yostar/Manjuu/Yongshi. This project is not affiliated with or endorsed by any of these companies.
108
+
109
+ ## Acknowledgments
110
+
111
+ - [AzurLaneTools/AzurLaneData](https://github.com/AzurLaneTools/AzurLaneData) — upstream auto-updating game data
112
+ - [nobbyfix/AzurLane-AssetDownloader](https://github.com/nobbyfix/AzurLane-AssetDownloader) — game asset extraction
113
+ - [AzurAPI/azurapi-js](https://github.com/AzurAPI/azurapi-js) — the original library whose schema we replicate, and is the base inspiration for this project!❤️