@lycoristech/azurapi 0.1.0 → 0.1.2
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.
- package/README.md +24 -7
- package/data/id-map.json +608 -60
- package/data/ship-list.json +948 -126
- package/data/ships.json +26762 -2227
- package/data/version.json +2 -2
- package/dist/cjs/normalize/identity.js +33 -8
- package/dist/cjs/normalize/ship.js +30 -5
- package/dist/cjs/output/writeIdMap.js +19 -8
- package/dist/cjs/translate/enums.js +28 -16
- package/dist/normalize/identity.d.ts +18 -1
- package/dist/normalize/identity.d.ts.map +1 -1
- package/dist/normalize/identity.js +32 -8
- package/dist/normalize/identity.js.map +1 -1
- package/dist/normalize/ship.d.ts +14 -0
- package/dist/normalize/ship.d.ts.map +1 -1
- package/dist/normalize/ship.js +29 -5
- package/dist/normalize/ship.js.map +1 -1
- package/dist/output/writeIdMap.d.ts +14 -2
- package/dist/output/writeIdMap.d.ts.map +1 -1
- package/dist/output/writeIdMap.js +18 -8
- package/dist/output/writeIdMap.js.map +1 -1
- package/dist/translate/enums.d.ts +8 -1
- package/dist/translate/enums.d.ts.map +1 -1
- package/dist/translate/enums.js +28 -16
- package/dist/translate/enums.js.map +1 -1
- package/package.json +2 -1
package/data/version.json
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.resolveThumbnail = resolveThumbnail;
|
|
3
4
|
exports.normalizeIdentity = normalizeIdentity;
|
|
4
5
|
const config_js_1 = require("../config.js");
|
|
5
6
|
const enums_js_1 = require("../translate/enums.js");
|
|
@@ -11,11 +12,33 @@ const strings_js_1 = require("../translate/strings.js");
|
|
|
11
12
|
function isLikelyChinese(s) {
|
|
12
13
|
return /[\u4e00-\u9fff]/.test(s);
|
|
13
14
|
}
|
|
15
|
+
/**
|
|
16
|
+
* Pick the thumbnail filename stem for a ship.
|
|
17
|
+
*
|
|
18
|
+
* Shipyard icons in azurlane-images are named after the texture inside the
|
|
19
|
+
* bundle: historically the numeric group id (20212.png), but newer bundles use
|
|
20
|
+
* the skin's painting name (weikesibao.png, z14.png, 2B.png). Prefer the id so
|
|
21
|
+
* existing URLs stay stable, fall back to the default skin's painting name, and
|
|
22
|
+
* keep the id when nothing is known (no images clone at build time).
|
|
23
|
+
*/
|
|
24
|
+
function resolveThumbnail(groupType, defaultPainting, available) {
|
|
25
|
+
if (available === undefined)
|
|
26
|
+
return groupType;
|
|
27
|
+
const byId = available.get(groupType.toLowerCase());
|
|
28
|
+
if (byId !== undefined)
|
|
29
|
+
return byId;
|
|
30
|
+
if (defaultPainting !== undefined) {
|
|
31
|
+
const byPainting = available.get(defaultPainting.toLowerCase());
|
|
32
|
+
if (byPainting !== undefined)
|
|
33
|
+
return byPainting;
|
|
34
|
+
}
|
|
35
|
+
return groupType;
|
|
36
|
+
}
|
|
14
37
|
// ---------------------------------------------------------------------------
|
|
15
38
|
// Main
|
|
16
39
|
// ---------------------------------------------------------------------------
|
|
17
40
|
function normalizeIdentity(inputs) {
|
|
18
|
-
const { groupType, rowIds, en, cn, jp, isEnReleased, isResearch, groupRow, lookups, } = inputs;
|
|
41
|
+
const { groupType, rowIds, en, cn, jp, isEnReleased, isResearch, groupRow, lookups, availableThumbnails, } = inputs;
|
|
19
42
|
// ------------------------------------------------------------------
|
|
20
43
|
// Resolve the LB3 row ID — the row whose key ends with "4", or last entry.
|
|
21
44
|
// ------------------------------------------------------------------
|
|
@@ -35,11 +58,12 @@ function normalizeIdentity(inputs) {
|
|
|
35
58
|
let nameEn;
|
|
36
59
|
const rawName = enStats.name;
|
|
37
60
|
const rawEnglishName = enStats.english_name;
|
|
61
|
+
// Names are trimmed: upstream has trailing spaces on ~40 rows ("Foch ", "Le Malin μ ", ...)
|
|
38
62
|
if (!isLikelyChinese(rawName) && rawName.trim().length > 0) {
|
|
39
|
-
nameEn = rawName;
|
|
63
|
+
nameEn = rawName.trim();
|
|
40
64
|
}
|
|
41
65
|
else if (rawEnglishName !== undefined && rawEnglishName.trim().length > 0 && !isLikelyChinese(rawEnglishName)) {
|
|
42
|
-
nameEn = rawEnglishName;
|
|
66
|
+
nameEn = rawEnglishName.trim();
|
|
43
67
|
}
|
|
44
68
|
// else: both are Chinese/empty → nameEn stays undefined
|
|
45
69
|
// CN name: from cn.statistics matching row if it looks Chinese; else fall back
|
|
@@ -48,22 +72,22 @@ function normalizeIdentity(inputs) {
|
|
|
48
72
|
if (cn !== undefined) {
|
|
49
73
|
const cnStats = cn.statistics[lb3RowId];
|
|
50
74
|
if (cnStats !== undefined && cnStats.name.trim().length > 0 && isLikelyChinese(cnStats.name)) {
|
|
51
|
-
nameCn = cnStats.name;
|
|
75
|
+
nameCn = cnStats.name.trim();
|
|
52
76
|
}
|
|
53
77
|
}
|
|
54
78
|
if (nameCn === undefined && isLikelyChinese(rawName)) {
|
|
55
|
-
nameCn = rawName;
|
|
79
|
+
nameCn = rawName.trim();
|
|
56
80
|
}
|
|
57
81
|
// JP name: from jp.statistics matching row if provided
|
|
58
82
|
let nameJp;
|
|
59
83
|
if (jp !== undefined) {
|
|
60
84
|
const jpStats = jp.statistics[lb3RowId];
|
|
61
85
|
if (jpStats !== undefined && jpStats.name.trim().length > 0) {
|
|
62
|
-
nameJp = jpStats.name;
|
|
86
|
+
nameJp = jpStats.name.trim();
|
|
63
87
|
}
|
|
64
88
|
}
|
|
65
89
|
// Code: english_name from EN statistics
|
|
66
|
-
const nameCode = rawEnglishName !== undefined && rawEnglishName.trim().length > 0 ? rawEnglishName : undefined;
|
|
90
|
+
const nameCode = rawEnglishName !== undefined && rawEnglishName.trim().length > 0 ? rawEnglishName.trim() : undefined;
|
|
67
91
|
const names = {};
|
|
68
92
|
if (nameEn !== undefined)
|
|
69
93
|
names.en = nameEn;
|
|
@@ -106,7 +130,8 @@ function normalizeIdentity(inputs) {
|
|
|
106
130
|
// ------------------------------------------------------------------
|
|
107
131
|
// Thumbnail (shipyard icon from azurlane-images repo)
|
|
108
132
|
// ------------------------------------------------------------------
|
|
109
|
-
const
|
|
133
|
+
const defaultPainting = en.skinTemplate?.[`${groupType}0`]?.painting;
|
|
134
|
+
const thumbnail = `${config_js_1.THUMBNAILS_URL}/${resolveThumbnail(groupType, defaultPainting, availableThumbnails)}.png`;
|
|
110
135
|
// ------------------------------------------------------------------
|
|
111
136
|
// Build output
|
|
112
137
|
// ------------------------------------------------------------------
|
|
@@ -33,6 +33,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.isLimitBreakRow = isLimitBreakRow;
|
|
36
37
|
exports.buildShip = buildShip;
|
|
37
38
|
exports.buildAllShips = buildAllShips;
|
|
38
39
|
exports.createBuildContext = createBuildContext;
|
|
@@ -45,6 +46,26 @@ const construction_js_1 = require("./construction.js");
|
|
|
45
46
|
const retrofit_js_1 = require("./retrofit.js");
|
|
46
47
|
const misc_js_1 = require("./misc.js");
|
|
47
48
|
const skins_js_1 = require("./skins.js");
|
|
49
|
+
// ---------------------------------------------------------------------------
|
|
50
|
+
// Limit-break row detection
|
|
51
|
+
// ---------------------------------------------------------------------------
|
|
52
|
+
/**
|
|
53
|
+
* True when `key` is one of a group's real limit-break rows: the group_type
|
|
54
|
+
* followed by a single LB digit (1-4), e.g. 20212 -> 202121..202124.
|
|
55
|
+
*
|
|
56
|
+
* Anything else is an alt/promo form of a ship that also has real LB rows
|
|
57
|
+
* (the 900xxx block: 900004 -> Suffolk, 900465 -> Adventure Galley, ...).
|
|
58
|
+
*
|
|
59
|
+
* Do NOT filter on a "9" prefix instead: Vichya Dominion (9xxxx), Tempesta
|
|
60
|
+
* (960xxx) and META (97xxxx) ships all have their real LB rows at 9-prefixed
|
|
61
|
+
* ids. That heuristic silently dropped all 99 of them (issue #2).
|
|
62
|
+
*/
|
|
63
|
+
function isLimitBreakRow(key, groupType) {
|
|
64
|
+
if (key.length !== groupType.length + 1 || !key.startsWith(groupType))
|
|
65
|
+
return false;
|
|
66
|
+
const lb = key[key.length - 1];
|
|
67
|
+
return lb === "1" || lb === "2" || lb === "3" || lb === "4";
|
|
68
|
+
}
|
|
48
69
|
function buildIndexes(ctx) {
|
|
49
70
|
// Build groupByGroupType: scan ship_data_group and index by group_type
|
|
50
71
|
const groupByGroupType = new Map();
|
|
@@ -75,8 +96,8 @@ function buildShip(groupType, ctx, indexes) {
|
|
|
75
96
|
continue;
|
|
76
97
|
if (String(row.group_type) !== groupType)
|
|
77
98
|
continue;
|
|
78
|
-
//
|
|
79
|
-
if (key
|
|
99
|
+
// Keep only the real LB rows; skips the 900xxx alt/promo forms
|
|
100
|
+
if (!isLimitBreakRow(key, groupType))
|
|
80
101
|
continue;
|
|
81
102
|
rowIds.push(key);
|
|
82
103
|
}
|
|
@@ -146,7 +167,9 @@ function buildShip(groupType, ctx, indexes) {
|
|
|
146
167
|
fleetTechShipTemplate: ctx.en.fleetTechShipTemplate,
|
|
147
168
|
fleetTechShipClass: ctx.en.fleetTechShipClass,
|
|
148
169
|
shipDataByType: ctx.en.shipDataByType,
|
|
170
|
+
skinTemplate: ctx.en.skinTemplate,
|
|
149
171
|
},
|
|
172
|
+
availableThumbnails: ctx.availableThumbnails,
|
|
150
173
|
cn: ctx.cn !== undefined ? { statistics: ctx.cn.statistics } : undefined,
|
|
151
174
|
jp: ctx.jp !== undefined ? { statistics: ctx.jp.statistics } : undefined,
|
|
152
175
|
isEnReleased,
|
|
@@ -289,14 +312,16 @@ function buildShip(groupType, ctx, indexes) {
|
|
|
289
312
|
function buildAllShips(ctx) {
|
|
290
313
|
// Pre-build shared indexes once for O(n) total cost
|
|
291
314
|
const indexes = buildIndexes(ctx);
|
|
292
|
-
// Collect all unique group_types
|
|
315
|
+
// Collect all unique group_types that have real LB rows in the EN template
|
|
316
|
+
// (alt/promo 900xxx rows are ignored; see isLimitBreakRow)
|
|
293
317
|
const groupTypeSet = new Set();
|
|
294
318
|
for (const [key, row] of Object.entries(ctx.en.template)) {
|
|
295
319
|
if (row === undefined)
|
|
296
320
|
continue;
|
|
297
|
-
|
|
321
|
+
const groupType = String(row.group_type);
|
|
322
|
+
if (!isLimitBreakRow(key, groupType))
|
|
298
323
|
continue;
|
|
299
|
-
groupTypeSet.add(
|
|
324
|
+
groupTypeSet.add(groupType);
|
|
300
325
|
}
|
|
301
326
|
const ships = [];
|
|
302
327
|
let failCount = 0;
|
|
@@ -3,6 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.buildIdMap = buildIdMap;
|
|
6
7
|
exports.writeIdMap = writeIdMap;
|
|
7
8
|
const fs_1 = __importDefault(require("fs"));
|
|
8
9
|
const path_1 = __importDefault(require("path"));
|
|
@@ -10,27 +11,33 @@ const path_1 = __importDefault(require("path"));
|
|
|
10
11
|
// writeIdMap
|
|
11
12
|
// ---------------------------------------------------------------------------
|
|
12
13
|
/**
|
|
13
|
-
*
|
|
14
|
+
* Build the name/alias → canonical id map.
|
|
14
15
|
*
|
|
15
16
|
* Shape: Record<string, string>
|
|
16
17
|
*
|
|
17
18
|
* For each ship: emits names.en → id, names.cn → id, names.jp → id, names.code → id
|
|
18
19
|
* For each groupRow: emits padded code → group_type string (legacy AzurAPI lookup)
|
|
19
20
|
*
|
|
20
|
-
*
|
|
21
|
+
* Collisions: first-writer-wins, with ships visited in ascending numeric id order.
|
|
22
|
+
* Core factions have 5-digit ids, META 6-digit (97xxxx) and collabs 7-digit, so a
|
|
23
|
+
* shared display name resolves to the core-faction ship: "Enterprise" → USS
|
|
24
|
+
* Enterprise (10706) not HMS Enterprise (20232), "Neptune" → HMS Neptune (29901)
|
|
25
|
+
* not the Neptunia collab (1010001), likewise Fubuki and Kasumi. The other ship
|
|
26
|
+
* stays reachable through its names.code ("HMS Enterprise", "HDN Neptune", ...)
|
|
27
|
+
* or its id. Code names never shadow another ship's display name.
|
|
21
28
|
*/
|
|
22
|
-
function
|
|
29
|
+
function buildIdMap(ships, groupRows) {
|
|
23
30
|
const map = {};
|
|
31
|
+
const ordered = [...ships].sort((a, b) => Number(a.id) - Number(b.id));
|
|
24
32
|
// Collect all EN names first so we don't let names.code overwrite a real ship name
|
|
25
33
|
const enNames = new Set();
|
|
26
|
-
for (const ship of
|
|
34
|
+
for (const ship of ordered) {
|
|
27
35
|
if (ship.names.en !== undefined)
|
|
28
36
|
enNames.add(ship.names.en);
|
|
29
37
|
}
|
|
30
|
-
|
|
31
|
-
for (const ship of ships) {
|
|
38
|
+
for (const ship of ordered) {
|
|
32
39
|
const { id, names } = ship;
|
|
33
|
-
if (names.en !== undefined)
|
|
40
|
+
if (names.en !== undefined && !(names.en in map))
|
|
34
41
|
map[names.en] = id;
|
|
35
42
|
if (names.cn !== undefined && !(names.cn in map))
|
|
36
43
|
map[names.cn] = id;
|
|
@@ -45,7 +52,11 @@ function writeIdMap(ships, groupRows, outputPath = "data/id-map.json") {
|
|
|
45
52
|
const paddedCode = String(row.code).padStart(3, "0");
|
|
46
53
|
map[paddedCode] = String(row.group_type);
|
|
47
54
|
}
|
|
48
|
-
|
|
55
|
+
return map;
|
|
56
|
+
}
|
|
57
|
+
/** Write the id map (see buildIdMap) to disk. */
|
|
58
|
+
function writeIdMap(ships, groupRows, outputPath = "data/id-map.json") {
|
|
59
|
+
const json = JSON.stringify(buildIdMap(ships, groupRows), null, 2);
|
|
49
60
|
const dir = path_1.default.dirname(path_1.default.resolve(outputPath));
|
|
50
61
|
fs_1.default.mkdirSync(dir, { recursive: true });
|
|
51
62
|
fs_1.default.writeFileSync(outputPath, json, "utf-8");
|
|
@@ -36,7 +36,14 @@ function rarityName(rarity, isResearch) {
|
|
|
36
36
|
// ---------------------------------------------------------------------------
|
|
37
37
|
// Nationality
|
|
38
38
|
// ---------------------------------------------------------------------------
|
|
39
|
-
/**
|
|
39
|
+
/**
|
|
40
|
+
* Nationality int → display string. Matches Azur Lane wiki convention.
|
|
41
|
+
*
|
|
42
|
+
* Codes verified against upstream ship_data_group.json + ship_data_statistics.json
|
|
43
|
+
* (AzurLaneTools/AzurLaneData 4cca5c24, 2026-05-08) and the game's own faction list in
|
|
44
|
+
* sharecfgdata/gametip.lua (EN 9.3.384); see tests/translate/enums.test.ts.
|
|
45
|
+
* Each collab has its own code from 101 upward, in release order.
|
|
46
|
+
*/
|
|
40
47
|
exports.NATIONALITY_MAP = {
|
|
41
48
|
0: "Universal",
|
|
42
49
|
1: "Eagle Union",
|
|
@@ -50,21 +57,26 @@ exports.NATIONALITY_MAP = {
|
|
|
50
57
|
9: "Vichya Dominion",
|
|
51
58
|
10: "Iris Orthodoxy",
|
|
52
59
|
11: "Kingdom of Tulipa",
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
60
|
+
12: "Liga de Pedrería", // Valparaíso (new faction, EN 9.3.384)
|
|
61
|
+
96: "Tempesta", // MOT Royal Fortune, Golden Hind, ...
|
|
62
|
+
97: "META", // Hunter.META, Fortune.META, ...
|
|
63
|
+
98: "Universal", // Bulins
|
|
64
|
+
101: "Neptunia", // HDN Neptune, Noire, Blanc, ...
|
|
65
|
+
102: "Bilibili", // 22, 33 (CN only)
|
|
66
|
+
103: "Utawarerumono", // Kuon, Nekone, Rurutie, ... (CN/JP only)
|
|
67
|
+
104: "KizunaAI",
|
|
68
|
+
105: "Hololive", // Shirakami Fubuki, Tokino Sora, ...
|
|
69
|
+
106: "Venus Vacation", // Marie Rose, Honoka, ...
|
|
70
|
+
107: "The Idolmaster", // Haruka Amami, ...
|
|
71
|
+
108: "SSSS", // Rikka Takarada, ...
|
|
72
|
+
109: "Atelier Ryza", // Reisalin Stout, ...
|
|
73
|
+
110: "Senran Kagura", // Asuka, Ikaruga, ...
|
|
74
|
+
111: "To LOVE-Ru", // Lala Satalin Deviluke, ...
|
|
75
|
+
112: "Black Rock Shooter", // BLACK★ROCK SHOOTER, DEAD MASTER
|
|
76
|
+
113: "Atelier Yumia", // Yumia Liessfeldt, ...
|
|
77
|
+
114: "DanMachi", // Hestia, Ryu Lion
|
|
78
|
+
115: "Date A Live", // Tohka Yatogami, ...
|
|
79
|
+
117: "NieR:Automata", // A2, 2B (EN 9.3.384)
|
|
68
80
|
};
|
|
69
81
|
/** Look up a nationality code; falls back to "Universal". */
|
|
70
82
|
function nationalityName(code) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Ship } from "../schema/output/ship.js";
|
|
2
|
-
import type { ShipDataTemplate, ShipDataStatistics, ShipDataGroup, ShipDataBlueprint, FleetTechShipTemplate, FleetTechShipClass, ShipDataByType, ShipDataGroupValue } from "../schema/raw/index.js";
|
|
2
|
+
import type { ShipDataTemplate, ShipDataStatistics, ShipDataGroup, ShipDataBlueprint, FleetTechShipTemplate, FleetTechShipClass, ShipDataByType, ShipDataGroupValue, ShipSkinTemplate } from "../schema/raw/index.js";
|
|
3
3
|
import type { Lookups } from "../translate/lookups.js";
|
|
4
4
|
export interface IdentityInputs {
|
|
5
5
|
groupType: string;
|
|
@@ -13,7 +13,14 @@ export interface IdentityInputs {
|
|
|
13
13
|
fleetTechShipTemplate: FleetTechShipTemplate;
|
|
14
14
|
fleetTechShipClass: FleetTechShipClass;
|
|
15
15
|
shipDataByType: ShipDataByType;
|
|
16
|
+
/** Needed to resolve the thumbnail by the default skin's painting name. */
|
|
17
|
+
skinTemplate?: ShipSkinTemplate;
|
|
16
18
|
};
|
|
19
|
+
/**
|
|
20
|
+
* Thumbnail files present in the images repo: lowercase stem -> actual filename stem.
|
|
21
|
+
* When given, the thumbnail URL only points at a file that exists (see resolveThumbnail).
|
|
22
|
+
*/
|
|
23
|
+
availableThumbnails?: Map<string, string>;
|
|
17
24
|
cn?: {
|
|
18
25
|
statistics: ShipDataStatistics;
|
|
19
26
|
};
|
|
@@ -41,5 +48,15 @@ export interface IdentityOutput {
|
|
|
41
48
|
thumbnail: string;
|
|
42
49
|
isEnReleased?: boolean;
|
|
43
50
|
}
|
|
51
|
+
/**
|
|
52
|
+
* Pick the thumbnail filename stem for a ship.
|
|
53
|
+
*
|
|
54
|
+
* Shipyard icons in azurlane-images are named after the texture inside the
|
|
55
|
+
* bundle: historically the numeric group id (20212.png), but newer bundles use
|
|
56
|
+
* the skin's painting name (weikesibao.png, z14.png, 2B.png). Prefer the id so
|
|
57
|
+
* existing URLs stay stable, fall back to the default skin's painting name, and
|
|
58
|
+
* keep the id when nothing is known (no images clone at build time).
|
|
59
|
+
*/
|
|
60
|
+
export declare function resolveThumbnail(groupType: string, defaultPainting: string | undefined, available: Map<string, string> | undefined): string;
|
|
44
61
|
export declare function normalizeIdentity(inputs: IdentityInputs): IdentityOutput;
|
|
45
62
|
//# sourceMappingURL=identity.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../../src/normalize/identity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAErD,OAAO,KAAK,EACV,gBAAgB,EAChB,kBAAkB,EAClB,aAAa,EACb,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB,EAClB,cAAc,EACd,kBAAkB,
|
|
1
|
+
{"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../../src/normalize/identity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAErD,OAAO,KAAK,EACV,gBAAgB,EAChB,kBAAkB,EAClB,aAAa,EACb,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB,EAClB,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EACjB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAQvD,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,qFAAqF;IACrF,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,EAAE,EAAE;QACF,QAAQ,EAAE,gBAAgB,CAAC;QAC3B,UAAU,EAAE,kBAAkB,CAAC;QAC/B,KAAK,EAAE,aAAa,CAAC;QACrB,SAAS,EAAE,iBAAiB,CAAC;QAC7B,qBAAqB,EAAE,qBAAqB,CAAC;QAC7C,kBAAkB,EAAE,kBAAkB,CAAC;QACvC,cAAc,EAAE,cAAc,CAAC;QAC/B,2EAA2E;QAC3E,YAAY,CAAC,EAAE,gBAAgB,CAAC;KACjC,CAAC;IACF;;;OAGG;IACH,mBAAmB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,EAAE,CAAC,EAAE;QACH,UAAU,EAAE,kBAAkB,CAAC;KAChC,CAAC;IACF,EAAE,CAAC,EAAE;QACH,UAAU,EAAE,kBAAkB,CAAC;KAChC,CAAC;IACF,wDAAwD;IACxD,YAAY,EAAE,OAAO,CAAC;IACtB,oEAAoE;IACpE,UAAU,EAAE,OAAO,CAAC;IACpB,mFAAmF;IACnF,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,2DAA2D;IAC3D,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACrB,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IACvB,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAWD;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,MAAM,GAAG,SAAS,EACnC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,GACzC,MAAM,CASR;AAMD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,cAAc,GAAG,cAAc,CAmJxE"}
|
|
@@ -8,11 +8,33 @@ import { starsString, wikiUrlFor } from "../translate/strings.js";
|
|
|
8
8
|
function isLikelyChinese(s) {
|
|
9
9
|
return /[\u4e00-\u9fff]/.test(s);
|
|
10
10
|
}
|
|
11
|
+
/**
|
|
12
|
+
* Pick the thumbnail filename stem for a ship.
|
|
13
|
+
*
|
|
14
|
+
* Shipyard icons in azurlane-images are named after the texture inside the
|
|
15
|
+
* bundle: historically the numeric group id (20212.png), but newer bundles use
|
|
16
|
+
* the skin's painting name (weikesibao.png, z14.png, 2B.png). Prefer the id so
|
|
17
|
+
* existing URLs stay stable, fall back to the default skin's painting name, and
|
|
18
|
+
* keep the id when nothing is known (no images clone at build time).
|
|
19
|
+
*/
|
|
20
|
+
export function resolveThumbnail(groupType, defaultPainting, available) {
|
|
21
|
+
if (available === undefined)
|
|
22
|
+
return groupType;
|
|
23
|
+
const byId = available.get(groupType.toLowerCase());
|
|
24
|
+
if (byId !== undefined)
|
|
25
|
+
return byId;
|
|
26
|
+
if (defaultPainting !== undefined) {
|
|
27
|
+
const byPainting = available.get(defaultPainting.toLowerCase());
|
|
28
|
+
if (byPainting !== undefined)
|
|
29
|
+
return byPainting;
|
|
30
|
+
}
|
|
31
|
+
return groupType;
|
|
32
|
+
}
|
|
11
33
|
// ---------------------------------------------------------------------------
|
|
12
34
|
// Main
|
|
13
35
|
// ---------------------------------------------------------------------------
|
|
14
36
|
export function normalizeIdentity(inputs) {
|
|
15
|
-
const { groupType, rowIds, en, cn, jp, isEnReleased, isResearch, groupRow, lookups, } = inputs;
|
|
37
|
+
const { groupType, rowIds, en, cn, jp, isEnReleased, isResearch, groupRow, lookups, availableThumbnails, } = inputs;
|
|
16
38
|
// ------------------------------------------------------------------
|
|
17
39
|
// Resolve the LB3 row ID — the row whose key ends with "4", or last entry.
|
|
18
40
|
// ------------------------------------------------------------------
|
|
@@ -32,11 +54,12 @@ export function normalizeIdentity(inputs) {
|
|
|
32
54
|
let nameEn;
|
|
33
55
|
const rawName = enStats.name;
|
|
34
56
|
const rawEnglishName = enStats.english_name;
|
|
57
|
+
// Names are trimmed: upstream has trailing spaces on ~40 rows ("Foch ", "Le Malin μ ", ...)
|
|
35
58
|
if (!isLikelyChinese(rawName) && rawName.trim().length > 0) {
|
|
36
|
-
nameEn = rawName;
|
|
59
|
+
nameEn = rawName.trim();
|
|
37
60
|
}
|
|
38
61
|
else if (rawEnglishName !== undefined && rawEnglishName.trim().length > 0 && !isLikelyChinese(rawEnglishName)) {
|
|
39
|
-
nameEn = rawEnglishName;
|
|
62
|
+
nameEn = rawEnglishName.trim();
|
|
40
63
|
}
|
|
41
64
|
// else: both are Chinese/empty → nameEn stays undefined
|
|
42
65
|
// CN name: from cn.statistics matching row if it looks Chinese; else fall back
|
|
@@ -45,22 +68,22 @@ export function normalizeIdentity(inputs) {
|
|
|
45
68
|
if (cn !== undefined) {
|
|
46
69
|
const cnStats = cn.statistics[lb3RowId];
|
|
47
70
|
if (cnStats !== undefined && cnStats.name.trim().length > 0 && isLikelyChinese(cnStats.name)) {
|
|
48
|
-
nameCn = cnStats.name;
|
|
71
|
+
nameCn = cnStats.name.trim();
|
|
49
72
|
}
|
|
50
73
|
}
|
|
51
74
|
if (nameCn === undefined && isLikelyChinese(rawName)) {
|
|
52
|
-
nameCn = rawName;
|
|
75
|
+
nameCn = rawName.trim();
|
|
53
76
|
}
|
|
54
77
|
// JP name: from jp.statistics matching row if provided
|
|
55
78
|
let nameJp;
|
|
56
79
|
if (jp !== undefined) {
|
|
57
80
|
const jpStats = jp.statistics[lb3RowId];
|
|
58
81
|
if (jpStats !== undefined && jpStats.name.trim().length > 0) {
|
|
59
|
-
nameJp = jpStats.name;
|
|
82
|
+
nameJp = jpStats.name.trim();
|
|
60
83
|
}
|
|
61
84
|
}
|
|
62
85
|
// Code: english_name from EN statistics
|
|
63
|
-
const nameCode = rawEnglishName !== undefined && rawEnglishName.trim().length > 0 ? rawEnglishName : undefined;
|
|
86
|
+
const nameCode = rawEnglishName !== undefined && rawEnglishName.trim().length > 0 ? rawEnglishName.trim() : undefined;
|
|
64
87
|
const names = {};
|
|
65
88
|
if (nameEn !== undefined)
|
|
66
89
|
names.en = nameEn;
|
|
@@ -103,7 +126,8 @@ export function normalizeIdentity(inputs) {
|
|
|
103
126
|
// ------------------------------------------------------------------
|
|
104
127
|
// Thumbnail (shipyard icon from azurlane-images repo)
|
|
105
128
|
// ------------------------------------------------------------------
|
|
106
|
-
const
|
|
129
|
+
const defaultPainting = en.skinTemplate?.[`${groupType}0`]?.painting;
|
|
130
|
+
const thumbnail = `${THUMBNAILS_URL}/${resolveThumbnail(groupType, defaultPainting, availableThumbnails)}.png`;
|
|
107
131
|
// ------------------------------------------------------------------
|
|
108
132
|
// Build output
|
|
109
133
|
// ------------------------------------------------------------------
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"identity.js","sourceRoot":"","sources":["../../src/normalize/identity.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"identity.js","sourceRoot":"","sources":["../../src/normalize/identity.ts"],"names":[],"mappings":"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"}
|
package/dist/normalize/ship.d.ts
CHANGED
|
@@ -43,7 +43,21 @@ export interface BuildContext {
|
|
|
43
43
|
thumbnailBaseUrl?: string;
|
|
44
44
|
/** Set of available painting filenames (lowercase, no extension) for skin variant lookup. */
|
|
45
45
|
availablePaintings?: Set<string>;
|
|
46
|
+
/** Thumbnail stems present in the images repo (lowercase -> actual), for identity.thumbnail */
|
|
47
|
+
availableThumbnails?: Map<string, string>;
|
|
46
48
|
}
|
|
49
|
+
/**
|
|
50
|
+
* True when `key` is one of a group's real limit-break rows: the group_type
|
|
51
|
+
* followed by a single LB digit (1-4), e.g. 20212 -> 202121..202124.
|
|
52
|
+
*
|
|
53
|
+
* Anything else is an alt/promo form of a ship that also has real LB rows
|
|
54
|
+
* (the 900xxx block: 900004 -> Suffolk, 900465 -> Adventure Galley, ...).
|
|
55
|
+
*
|
|
56
|
+
* Do NOT filter on a "9" prefix instead: Vichya Dominion (9xxxx), Tempesta
|
|
57
|
+
* (960xxx) and META (97xxxx) ships all have their real LB rows at 9-prefixed
|
|
58
|
+
* ids. That heuristic silently dropped all 99 of them (issue #2).
|
|
59
|
+
*/
|
|
60
|
+
export declare function isLimitBreakRow(key: string, groupType: string): boolean;
|
|
47
61
|
interface BuildIndexes {
|
|
48
62
|
/** group_type (string) → group row */
|
|
49
63
|
groupByGroupType: Map<string, ShipDataGroupValue>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ship.d.ts","sourceRoot":"","sources":["../../src/normalize/ship.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAErD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,EACV,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,uBAAuB,EACvB,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,YAAY,EACZ,sBAAsB,EACtB,cAAc,EACd,cAAc,EACd,qBAAqB,EACrB,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,EACrB,eAAe,EACf,YAAY,EACZ,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAcvD,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,EAAE,EAAE;QACF,QAAQ,EAAE,gBAAgB,CAAC;QAC3B,UAAU,EAAE,kBAAkB,CAAC;QAC/B,QAAQ,EAAE,gBAAgB,CAAC;QAC3B,UAAU,EAAE,kBAAkB,CAAC;QAC/B,mBAAmB,EAAE,uBAAuB,CAAC;QAC7C,SAAS,EAAE,iBAAiB,CAAC;QAC7B,KAAK,EAAE,aAAa,CAAC;QACrB,KAAK,EAAE,aAAa,CAAC;QACrB,YAAY,EAAE,gBAAgB,CAAC;QAC/B,YAAY,EAAE,YAAY,CAAC;QAC3B,QAAQ,EAAE,sBAAsB,CAAC;QACjC,cAAc,EAAE,cAAc,CAAC;QAC/B,cAAc,EAAE,cAAc,CAAC;QAC/B,qBAAqB,EAAE,qBAAqB,CAAC;QAC7C,kBAAkB,EAAE,kBAAkB,CAAC;QACvC,iBAAiB,EAAE,iBAAiB,CAAC;QACrC,gBAAgB,EAAE,gBAAgB,CAAC;QACnC,qBAAqB,EAAE,qBAAqB,CAAC;QAC7C,eAAe,EAAE,eAAe,CAAC;QACjC,YAAY,EAAE,YAAY,CAAC;QAC3B,mBAAmB,EAAE,mBAAmB,CAAC;KAC1C,CAAC;IACF,EAAE,CAAC,EAAE;QACH,UAAU,EAAE,kBAAkB,CAAC;QAC/B,KAAK,EAAE,aAAa,CAAC;QACrB,QAAQ,EAAE,gBAAgB,CAAC;KAC5B,CAAC;IACF,EAAE,CAAC,EAAE;QACH,UAAU,EAAE,kBAAkB,CAAC;KAChC,CAAC;IACF,SAAS,CAAC,EAAE;QACV,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC3C,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAClC,CAAC;IACF,OAAO,EAAE,OAAO,CAAC;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,6FAA6F;IAC7F,kBAAkB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"ship.d.ts","sourceRoot":"","sources":["../../src/normalize/ship.ts"],"names":[],"mappings":"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"}
|
package/dist/normalize/ship.js
CHANGED
|
@@ -7,6 +7,26 @@ import { normalizeConstruction } from "./construction.js";
|
|
|
7
7
|
import { normalizeRetrofit } from "./retrofit.js";
|
|
8
8
|
import { normalizeMisc } from "./misc.js";
|
|
9
9
|
import { normalizeSkins } from "./skins.js";
|
|
10
|
+
// ---------------------------------------------------------------------------
|
|
11
|
+
// Limit-break row detection
|
|
12
|
+
// ---------------------------------------------------------------------------
|
|
13
|
+
/**
|
|
14
|
+
* True when `key` is one of a group's real limit-break rows: the group_type
|
|
15
|
+
* followed by a single LB digit (1-4), e.g. 20212 -> 202121..202124.
|
|
16
|
+
*
|
|
17
|
+
* Anything else is an alt/promo form of a ship that also has real LB rows
|
|
18
|
+
* (the 900xxx block: 900004 -> Suffolk, 900465 -> Adventure Galley, ...).
|
|
19
|
+
*
|
|
20
|
+
* Do NOT filter on a "9" prefix instead: Vichya Dominion (9xxxx), Tempesta
|
|
21
|
+
* (960xxx) and META (97xxxx) ships all have their real LB rows at 9-prefixed
|
|
22
|
+
* ids. That heuristic silently dropped all 99 of them (issue #2).
|
|
23
|
+
*/
|
|
24
|
+
export function isLimitBreakRow(key, groupType) {
|
|
25
|
+
if (key.length !== groupType.length + 1 || !key.startsWith(groupType))
|
|
26
|
+
return false;
|
|
27
|
+
const lb = key[key.length - 1];
|
|
28
|
+
return lb === "1" || lb === "2" || lb === "3" || lb === "4";
|
|
29
|
+
}
|
|
10
30
|
function buildIndexes(ctx) {
|
|
11
31
|
// Build groupByGroupType: scan ship_data_group and index by group_type
|
|
12
32
|
const groupByGroupType = new Map();
|
|
@@ -37,8 +57,8 @@ export function buildShip(groupType, ctx, indexes) {
|
|
|
37
57
|
continue;
|
|
38
58
|
if (String(row.group_type) !== groupType)
|
|
39
59
|
continue;
|
|
40
|
-
//
|
|
41
|
-
if (key
|
|
60
|
+
// Keep only the real LB rows; skips the 900xxx alt/promo forms
|
|
61
|
+
if (!isLimitBreakRow(key, groupType))
|
|
42
62
|
continue;
|
|
43
63
|
rowIds.push(key);
|
|
44
64
|
}
|
|
@@ -108,7 +128,9 @@ export function buildShip(groupType, ctx, indexes) {
|
|
|
108
128
|
fleetTechShipTemplate: ctx.en.fleetTechShipTemplate,
|
|
109
129
|
fleetTechShipClass: ctx.en.fleetTechShipClass,
|
|
110
130
|
shipDataByType: ctx.en.shipDataByType,
|
|
131
|
+
skinTemplate: ctx.en.skinTemplate,
|
|
111
132
|
},
|
|
133
|
+
availableThumbnails: ctx.availableThumbnails,
|
|
112
134
|
cn: ctx.cn !== undefined ? { statistics: ctx.cn.statistics } : undefined,
|
|
113
135
|
jp: ctx.jp !== undefined ? { statistics: ctx.jp.statistics } : undefined,
|
|
114
136
|
isEnReleased,
|
|
@@ -251,14 +273,16 @@ export function buildShip(groupType, ctx, indexes) {
|
|
|
251
273
|
export function buildAllShips(ctx) {
|
|
252
274
|
// Pre-build shared indexes once for O(n) total cost
|
|
253
275
|
const indexes = buildIndexes(ctx);
|
|
254
|
-
// Collect all unique group_types
|
|
276
|
+
// Collect all unique group_types that have real LB rows in the EN template
|
|
277
|
+
// (alt/promo 900xxx rows are ignored; see isLimitBreakRow)
|
|
255
278
|
const groupTypeSet = new Set();
|
|
256
279
|
for (const [key, row] of Object.entries(ctx.en.template)) {
|
|
257
280
|
if (row === undefined)
|
|
258
281
|
continue;
|
|
259
|
-
|
|
282
|
+
const groupType = String(row.group_type);
|
|
283
|
+
if (!isLimitBreakRow(key, groupType))
|
|
260
284
|
continue;
|
|
261
|
-
groupTypeSet.add(
|
|
285
|
+
groupTypeSet.add(groupType);
|
|
262
286
|
}
|
|
263
287
|
const ships = [];
|
|
264
288
|
let failCount = 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ship.js","sourceRoot":"","sources":["../../src/normalize/ship.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ship.js","sourceRoot":"","sources":["../../src/normalize/ship.ts"],"names":[],"mappings":"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"}
|