@lycoristech/azurapi 0.0.2 → 0.0.3
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/LICENSE +1 -5
- package/data/ship-list.json +34 -34
- package/data/ships.json +2318 -2318
- package/data/version.json +1 -1
- package/dist/cjs/ingest/files.js +25 -15
- package/dist/cjs/normalize/identity.js +2 -2
- package/dist/cjs/normalize/ship.js +9 -10
- package/dist/cjs/normalize/stats.js +66 -8
- package/dist/cjs/schema/output/ship.js +1 -1
- package/dist/cjs/schema/raw/index.js +1 -0
- package/dist/cjs/schema/raw/shipDataBlueprint.js +2 -0
- package/dist/cjs/schema/raw/shipStrengthenBlueprint.js +22 -0
- package/dist/cjs/translate/enums.js +27 -17
- package/dist/ingest/files.d.ts +2 -1
- package/dist/ingest/files.d.ts.map +1 -1
- package/dist/ingest/files.js +25 -16
- package/dist/ingest/files.js.map +1 -1
- package/dist/normalize/identity.d.ts +0 -2
- package/dist/normalize/identity.d.ts.map +1 -1
- package/dist/normalize/identity.js +2 -2
- package/dist/normalize/identity.js.map +1 -1
- package/dist/normalize/ship.d.ts +2 -3
- package/dist/normalize/ship.d.ts.map +1 -1
- package/dist/normalize/ship.js +9 -10
- package/dist/normalize/ship.js.map +1 -1
- package/dist/normalize/stats.d.ts +5 -1
- package/dist/normalize/stats.d.ts.map +1 -1
- package/dist/normalize/stats.js +66 -8
- package/dist/normalize/stats.js.map +1 -1
- package/dist/schema/output/ship.d.ts +5 -5
- package/dist/schema/output/ship.js +1 -1
- package/dist/schema/output/ship.js.map +1 -1
- package/dist/schema/raw/index.d.ts +1 -0
- package/dist/schema/raw/index.d.ts.map +1 -1
- package/dist/schema/raw/index.js +1 -0
- package/dist/schema/raw/index.js.map +1 -1
- package/dist/schema/raw/shipDataBlueprint.d.ts +12 -0
- package/dist/schema/raw/shipDataBlueprint.d.ts.map +1 -1
- package/dist/schema/raw/shipDataBlueprint.js +2 -0
- package/dist/schema/raw/shipDataBlueprint.js.map +1 -1
- package/dist/schema/raw/shipStrengthenBlueprint.d.ts +46 -0
- package/dist/schema/raw/shipStrengthenBlueprint.d.ts.map +1 -0
- package/dist/schema/raw/shipStrengthenBlueprint.js +20 -0
- package/dist/schema/raw/shipStrengthenBlueprint.js.map +1 -0
- package/dist/translate/enums.d.ts +20 -10
- package/dist/translate/enums.d.ts.map +1 -1
- package/dist/translate/enums.js +27 -17
- package/dist/translate/enums.js.map +1 -1
- package/package.json +1 -1
package/data/version.json
CHANGED
package/dist/cjs/ingest/files.js
CHANGED
|
@@ -10,6 +10,7 @@ exports.loadShipSkinWords = loadShipSkinWords;
|
|
|
10
10
|
exports.loadShopTemplate = loadShopTemplate;
|
|
11
11
|
exports.loadShipDataStrengthen = loadShipDataStrengthen;
|
|
12
12
|
exports.loadShipDataBlueprint = loadShipDataBlueprint;
|
|
13
|
+
exports.loadShipStrengthenBlueprint = loadShipStrengthenBlueprint;
|
|
13
14
|
exports.loadShipDataTrans = loadShipDataTrans;
|
|
14
15
|
exports.loadShipDataGroup = loadShipDataGroup;
|
|
15
16
|
exports.loadShipSkinTemplate = loadShipSkinTemplate;
|
|
@@ -29,24 +30,30 @@ const fs_1 = __importDefault(require("fs"));
|
|
|
29
30
|
const index_js_1 = require("../schema/raw/index.js");
|
|
30
31
|
const upstream_js_1 = require("./upstream.js");
|
|
31
32
|
function readJsonFile(filePath) {
|
|
33
|
+
let raw;
|
|
32
34
|
try {
|
|
33
|
-
|
|
34
|
-
const parsed = JSON.parse(raw);
|
|
35
|
-
// Many upstream files have an "all" key containing an array of IDs
|
|
36
|
-
// (an index listing all record keys). Strip it before validation.
|
|
37
|
-
if (parsed !== null && typeof parsed === "object" && !Array.isArray(parsed)) {
|
|
38
|
-
const obj = parsed;
|
|
39
|
-
if ("all" in obj && Array.isArray(obj["all"])) {
|
|
40
|
-
const { all: _all, ...rest } = obj;
|
|
41
|
-
return rest;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
return parsed;
|
|
35
|
+
raw = fs_1.default.readFileSync(filePath, "utf-8");
|
|
45
36
|
}
|
|
46
|
-
catch {
|
|
47
|
-
|
|
48
|
-
|
|
37
|
+
catch (err) {
|
|
38
|
+
throw new Error(`azurapi ingest: failed to read ${filePath}: ${err instanceof Error ? err.message : String(err)}`);
|
|
39
|
+
}
|
|
40
|
+
let parsed;
|
|
41
|
+
try {
|
|
42
|
+
parsed = JSON.parse(raw);
|
|
49
43
|
}
|
|
44
|
+
catch (err) {
|
|
45
|
+
throw new Error(`azurapi ingest: failed to parse JSON in ${filePath}: ${err instanceof Error ? err.message : String(err)}`);
|
|
46
|
+
}
|
|
47
|
+
// Many upstream files have an "all" key containing an array of IDs
|
|
48
|
+
// (an index listing all record keys). Strip it before validation.
|
|
49
|
+
if (parsed !== null && typeof parsed === "object" && !Array.isArray(parsed)) {
|
|
50
|
+
const obj = parsed;
|
|
51
|
+
if ("all" in obj && Array.isArray(obj["all"])) {
|
|
52
|
+
const { all: _all, ...rest } = obj;
|
|
53
|
+
return rest;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return parsed;
|
|
50
57
|
}
|
|
51
58
|
function loadFile(schema, filePath) {
|
|
52
59
|
const data = readJsonFile(filePath);
|
|
@@ -87,6 +94,9 @@ function loadShipDataStrengthen(region = "EN") {
|
|
|
87
94
|
function loadShipDataBlueprint(region = "EN") {
|
|
88
95
|
return loadFile(index_js_1.ShipDataBlueprintSchema, (0, upstream_js_1.regionPath)(region, "ShareCfg", "ship_data_blueprint.json"));
|
|
89
96
|
}
|
|
97
|
+
function loadShipStrengthenBlueprint(region = "EN") {
|
|
98
|
+
return loadFile(index_js_1.ShipStrengthenBlueprintSchema, (0, upstream_js_1.regionPath)(region, "ShareCfg", "ship_strengthen_blueprint.json"));
|
|
99
|
+
}
|
|
90
100
|
function loadShipDataTrans(region = "EN") {
|
|
91
101
|
return loadFile(index_js_1.ShipDataTransSchema, (0, upstream_js_1.regionPath)(region, "ShareCfg", "ship_data_trans.json"));
|
|
92
102
|
}
|
|
@@ -15,7 +15,7 @@ function isLikelyChinese(s) {
|
|
|
15
15
|
// Main
|
|
16
16
|
// ---------------------------------------------------------------------------
|
|
17
17
|
function normalizeIdentity(inputs) {
|
|
18
|
-
const { groupType, rowIds, en, cn, jp, isEnReleased, isResearch,
|
|
18
|
+
const { groupType, rowIds, en, cn, jp, isEnReleased, isResearch, groupRow, lookups, } = inputs;
|
|
19
19
|
// ------------------------------------------------------------------
|
|
20
20
|
// Resolve the LB3 row ID — the row whose key ends with "4", or last entry.
|
|
21
21
|
// ------------------------------------------------------------------
|
|
@@ -77,7 +77,7 @@ function normalizeIdentity(inputs) {
|
|
|
77
77
|
// Rarity
|
|
78
78
|
// ------------------------------------------------------------------
|
|
79
79
|
const rarityInt = enStats.rarity;
|
|
80
|
-
const rarity = (0, enums_js_1.rarityName)(rarityInt, isResearch
|
|
80
|
+
const rarity = (0, enums_js_1.rarityName)(rarityInt, isResearch);
|
|
81
81
|
// ------------------------------------------------------------------
|
|
82
82
|
// Stars
|
|
83
83
|
// ------------------------------------------------------------------
|
|
@@ -56,14 +56,10 @@ function buildIndexes(ctx) {
|
|
|
56
56
|
// Build researchGroupTypes: blueprint keys are themselves group_types
|
|
57
57
|
// (confirmed: all 42 blueprint keys appear as group_type values in ship_data_template)
|
|
58
58
|
const researchGroupTypes = new Set();
|
|
59
|
-
const
|
|
60
|
-
for (const [key, bpRow] of Object.entries(ctx.en.blueprint)) {
|
|
59
|
+
for (const key of Object.keys(ctx.en.blueprint)) {
|
|
61
60
|
researchGroupTypes.add(key);
|
|
62
|
-
if (bpRow?.blueprint_version !== undefined) {
|
|
63
|
-
blueprintVersionMap.set(key, bpRow.blueprint_version);
|
|
64
|
-
}
|
|
65
61
|
}
|
|
66
|
-
return { groupByGroupType, researchGroupTypes
|
|
62
|
+
return { groupByGroupType, researchGroupTypes };
|
|
67
63
|
}
|
|
68
64
|
// ---------------------------------------------------------------------------
|
|
69
65
|
// buildShip
|
|
@@ -107,10 +103,9 @@ function buildShip(groupType, ctx, indexes) {
|
|
|
107
103
|
return null;
|
|
108
104
|
}
|
|
109
105
|
// -------------------------------------------------------------------------
|
|
110
|
-
// 3. Determine isResearch
|
|
106
|
+
// 3. Determine isResearch
|
|
111
107
|
// -------------------------------------------------------------------------
|
|
112
108
|
const isResearch = idx.researchGroupTypes.has(groupType);
|
|
113
|
-
const blueprintVersion = idx.blueprintVersionMap.get(groupType);
|
|
114
109
|
// -------------------------------------------------------------------------
|
|
115
110
|
// 4. Determine isEnReleased
|
|
116
111
|
// True if the LB3 statistics row has a non-empty, non-Chinese name
|
|
@@ -156,7 +151,6 @@ function buildShip(groupType, ctx, indexes) {
|
|
|
156
151
|
jp: ctx.jp !== undefined ? { statistics: ctx.jp.statistics } : undefined,
|
|
157
152
|
isEnReleased,
|
|
158
153
|
isResearch,
|
|
159
|
-
blueprintVersion,
|
|
160
154
|
groupRow,
|
|
161
155
|
lookups: ctx.lookups,
|
|
162
156
|
});
|
|
@@ -165,9 +159,12 @@ function buildShip(groupType, ctx, indexes) {
|
|
|
165
159
|
lb3RowId,
|
|
166
160
|
groupType,
|
|
167
161
|
strengthenId,
|
|
162
|
+
isResearch,
|
|
168
163
|
en: {
|
|
169
164
|
statistics: ctx.en.statistics,
|
|
170
165
|
strengthen: ctx.en.strengthen,
|
|
166
|
+
strengthenBlueprint: ctx.en.strengthenBlueprint,
|
|
167
|
+
blueprint: ctx.en.blueprint,
|
|
171
168
|
trans: ctx.en.trans,
|
|
172
169
|
transformDataTemplate: ctx.en.transformDataTemplate,
|
|
173
170
|
},
|
|
@@ -330,12 +327,13 @@ function buildAllShips(ctx) {
|
|
|
330
327
|
* This is a convenience function for scripts/build-data.ts.
|
|
331
328
|
*/
|
|
332
329
|
async function createBuildContext(options) {
|
|
333
|
-
const { loadShipDataTemplate, loadShipDataStatistics, loadShipDataBreakout, loadShipDataStrengthen, loadShipDataBlueprint, loadShipDataTrans, loadShipDataGroup, loadShipSkinTemplate, loadShopTemplate, loadShipDataCreateExchange, loadShipDataByType, loadShipDataByStar, loadFleetTechShipTemplate, loadFleetTechShipClass, loadSkillDataTemplate, loadSkillDataDisplay, loadTransformDataTemplate, loadEquipDataByType, loadVoiceActorCn, loadAttributeInfoByType, } = await Promise.resolve().then(() => __importStar(require("../ingest/files.js")));
|
|
330
|
+
const { loadShipDataTemplate, loadShipDataStatistics, loadShipDataBreakout, loadShipDataStrengthen, loadShipStrengthenBlueprint, loadShipDataBlueprint, loadShipDataTrans, loadShipDataGroup, loadShipSkinTemplate, loadShopTemplate, loadShipDataCreateExchange, loadShipDataByType, loadShipDataByStar, loadFleetTechShipTemplate, loadFleetTechShipClass, loadSkillDataTemplate, loadSkillDataDisplay, loadTransformDataTemplate, loadEquipDataByType, loadVoiceActorCn, loadAttributeInfoByType, } = await Promise.resolve().then(() => __importStar(require("../ingest/files.js")));
|
|
334
331
|
const { createLookups } = await Promise.resolve().then(() => __importStar(require("../translate/lookups.js")));
|
|
335
332
|
const enTemplate = loadShipDataTemplate("EN");
|
|
336
333
|
const enStatistics = loadShipDataStatistics("EN");
|
|
337
334
|
const enBreakout = loadShipDataBreakout("EN");
|
|
338
335
|
const enStrengthen = loadShipDataStrengthen("EN");
|
|
336
|
+
const enStrengthenBlueprint = loadShipStrengthenBlueprint("EN");
|
|
339
337
|
const enBlueprint = loadShipDataBlueprint("EN");
|
|
340
338
|
const enTrans = loadShipDataTrans("EN");
|
|
341
339
|
const enGroup = loadShipDataGroup("EN");
|
|
@@ -380,6 +378,7 @@ async function createBuildContext(options) {
|
|
|
380
378
|
statistics: enStatistics,
|
|
381
379
|
breakout: enBreakout,
|
|
382
380
|
strengthen: enStrengthen,
|
|
381
|
+
strengthenBlueprint: enStrengthenBlueprint,
|
|
383
382
|
blueprint: enBlueprint,
|
|
384
383
|
trans: enTrans,
|
|
385
384
|
group: enGroup,
|
|
@@ -6,12 +6,12 @@ const enums_js_1 = require("../translate/enums.js");
|
|
|
6
6
|
// Internal helpers
|
|
7
7
|
// ---------------------------------------------------------------------------
|
|
8
8
|
/**
|
|
9
|
-
* Build a strengthen bonus array (12 elements) from
|
|
10
|
-
*
|
|
11
|
-
*
|
|
9
|
+
* Build a strengthen bonus array (12 elements) from a 5-element durability
|
|
10
|
+
* array. Used for both `ship_data_strengthen.durability` and
|
|
11
|
+
* `ship_strengthen_blueprint.effect` — they share the same layout:
|
|
12
12
|
* [0] → firepower (attrs index 1)
|
|
13
13
|
* [1] → torpedo (attrs index 2)
|
|
14
|
-
* [2] → (unused / always 0)
|
|
14
|
+
* [2] → (unused / always 0 — would be AA)
|
|
15
15
|
* [3] → aviation (attrs index 4)
|
|
16
16
|
* [4] → reload (attrs index 5)
|
|
17
17
|
*/
|
|
@@ -23,6 +23,51 @@ function buildStrengthenBonus(durability) {
|
|
|
23
23
|
bonus[5] = durability[4] ?? 0; // reload
|
|
24
24
|
return bonus;
|
|
25
25
|
}
|
|
26
|
+
/**
|
|
27
|
+
* Resolve the max strengthen durability for a research ship from
|
|
28
|
+
* ship_data_blueprint + ship_strengthen_blueprint.
|
|
29
|
+
*
|
|
30
|
+
* The blueprint row lists:
|
|
31
|
+
* - strengthen_effect: dev-level rows 1..30 (cumulative; last entry is max)
|
|
32
|
+
* - fate_strengthen: fate-sim rows (cumulative deltas on top of dev max)
|
|
33
|
+
*
|
|
34
|
+
* Returns a 5-element array in the same layout as ship_data_strengthen.durability,
|
|
35
|
+
* or `undefined` if the blueprint entry/strengthen rows are missing.
|
|
36
|
+
*/
|
|
37
|
+
function researchDurability(groupType, blueprint, strengthenBlueprint) {
|
|
38
|
+
const bpRow = blueprint[groupType];
|
|
39
|
+
if (bpRow === undefined)
|
|
40
|
+
return undefined;
|
|
41
|
+
const effectIds = bpRow.strengthen_effect ?? [];
|
|
42
|
+
const fateIds = bpRow.fate_strengthen ?? [];
|
|
43
|
+
const lastEffectId = effectIds[effectIds.length - 1];
|
|
44
|
+
if (lastEffectId === undefined)
|
|
45
|
+
return undefined;
|
|
46
|
+
const lastEffectRow = strengthenBlueprint[String(lastEffectId)];
|
|
47
|
+
if (lastEffectRow === undefined)
|
|
48
|
+
return undefined;
|
|
49
|
+
const result = [
|
|
50
|
+
lastEffectRow.effect[0] ?? 0,
|
|
51
|
+
lastEffectRow.effect[1] ?? 0,
|
|
52
|
+
lastEffectRow.effect[2] ?? 0,
|
|
53
|
+
lastEffectRow.effect[3] ?? 0,
|
|
54
|
+
lastEffectRow.effect[4] ?? 0,
|
|
55
|
+
];
|
|
56
|
+
// Layer on any non-zero fate strengthen max (currently all zero in EN data,
|
|
57
|
+
// but handle it defensively so future fate entries flow through).
|
|
58
|
+
const lastFateId = fateIds[fateIds.length - 1];
|
|
59
|
+
if (lastFateId !== undefined) {
|
|
60
|
+
const lastFateRow = strengthenBlueprint[String(lastFateId)];
|
|
61
|
+
if (lastFateRow !== undefined) {
|
|
62
|
+
result[0] = (result[0] ?? 0) + (lastFateRow.effect[0] ?? 0);
|
|
63
|
+
result[1] = (result[1] ?? 0) + (lastFateRow.effect[1] ?? 0);
|
|
64
|
+
result[2] = (result[2] ?? 0) + (lastFateRow.effect[2] ?? 0);
|
|
65
|
+
result[3] = (result[3] ?? 0) + (lastFateRow.effect[3] ?? 0);
|
|
66
|
+
result[4] = (result[4] ?? 0) + (lastFateRow.effect[4] ?? 0);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return result;
|
|
70
|
+
}
|
|
26
71
|
/**
|
|
27
72
|
* Compute a single stat value at the given level.
|
|
28
73
|
* Formula: base + floor(growth * (level - 1) / 1000) + floor(growthExtra * max(level - 100, 0) / 1000) + strengthenBonus
|
|
@@ -126,8 +171,8 @@ function applyRetrofitDeltas(base, deltas) {
|
|
|
126
171
|
// Main
|
|
127
172
|
// ---------------------------------------------------------------------------
|
|
128
173
|
function normalizeStats(inputs) {
|
|
129
|
-
const { lb3RowId, en, groupType, strengthenId } = inputs;
|
|
130
|
-
const { statistics, strengthen, trans, transformDataTemplate } = en;
|
|
174
|
+
const { lb3RowId, en, groupType, strengthenId, isResearch } = inputs;
|
|
175
|
+
const { statistics, strengthen, strengthenBlueprint, blueprint, trans, transformDataTemplate, } = en;
|
|
131
176
|
// ------------------------------------------------------------------
|
|
132
177
|
// Get the LB3 statistics row
|
|
133
178
|
// ------------------------------------------------------------------
|
|
@@ -140,9 +185,22 @@ function normalizeStats(inputs) {
|
|
|
140
185
|
const attrsGrowthExtra = statsRow.attrs_growth_extra ?? new Array(12).fill(0);
|
|
141
186
|
// ------------------------------------------------------------------
|
|
142
187
|
// Strengthen bonus
|
|
188
|
+
//
|
|
189
|
+
// Research ships: sum the last strengthen_effect + fate_strengthen rows from
|
|
190
|
+
// ship_strengthen_blueprint.json (ship_data_strengthen for research ships
|
|
191
|
+
// either mirrors a partial/legacy value or is all-zero for newer Decisive
|
|
192
|
+
// ships — don't trust it).
|
|
193
|
+
//
|
|
194
|
+
// Non-research ships: use ship_data_strengthen[strengthen_id].durability.
|
|
143
195
|
// ------------------------------------------------------------------
|
|
144
|
-
|
|
145
|
-
|
|
196
|
+
let durability;
|
|
197
|
+
if (isResearch) {
|
|
198
|
+
durability =
|
|
199
|
+
researchDurability(groupType, blueprint, strengthenBlueprint) ?? [];
|
|
200
|
+
}
|
|
201
|
+
else {
|
|
202
|
+
durability = strengthen[strengthenId]?.durability ?? [];
|
|
203
|
+
}
|
|
146
204
|
const strengthenBonus = buildStrengthenBonus(durability);
|
|
147
205
|
// ------------------------------------------------------------------
|
|
148
206
|
// Compute stat blocks at level 100 and 120
|
|
@@ -66,7 +66,7 @@ exports.ShipSchema = zod_1.z.object({
|
|
|
66
66
|
maxEfficiency: zod_1.z.number(),
|
|
67
67
|
})),
|
|
68
68
|
skills: zod_1.z.array(zod_1.z.object({
|
|
69
|
-
color: zod_1.z.enum(["red", "
|
|
69
|
+
color: zod_1.z.enum(["red", "yellow", "blue"]),
|
|
70
70
|
// `en` is required; additional language keys are allowed as strings
|
|
71
71
|
names: zod_1.z.object({ en: zod_1.z.string() }).catchall(zod_1.z.string()),
|
|
72
72
|
description: zod_1.z.string(),
|
|
@@ -19,6 +19,7 @@ __exportStar(require("./shipDataStatistics.js"), exports);
|
|
|
19
19
|
__exportStar(require("./shipDataBreakout.js"), exports);
|
|
20
20
|
__exportStar(require("./shipSkinWords.js"), exports);
|
|
21
21
|
__exportStar(require("./shipDataStrengthen.js"), exports);
|
|
22
|
+
__exportStar(require("./shipStrengthenBlueprint.js"), exports);
|
|
22
23
|
__exportStar(require("./shipDataBlueprint.js"), exports);
|
|
23
24
|
__exportStar(require("./shipDataTrans.js"), exports);
|
|
24
25
|
__exportStar(require("./shipDataGroup.js"), exports);
|
|
@@ -6,6 +6,8 @@ const shipDataBlueprintValueSchema = zod_1.z
|
|
|
6
6
|
.object({
|
|
7
7
|
name: zod_1.z.string().optional(),
|
|
8
8
|
blueprint_version: zod_1.z.number().optional(),
|
|
9
|
+
strengthen_effect: zod_1.z.array(zod_1.z.number()).optional(),
|
|
10
|
+
fate_strengthen: zod_1.z.array(zod_1.z.number()).optional(),
|
|
9
11
|
})
|
|
10
12
|
.passthrough();
|
|
11
13
|
exports.ShipDataBlueprintSchema = zod_1.z.record(zod_1.z.string(), shipDataBlueprintValueSchema);
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ShipStrengthenBlueprintSchema = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
/**
|
|
6
|
+
* ship_strengthen_blueprint.json — per-level dev/fate strengthen rows for
|
|
7
|
+
* research ships. Keyed by a numeric row id referenced from
|
|
8
|
+
* ship_data_blueprint[group].strengthen_effect[] and fate_strengthen[].
|
|
9
|
+
*
|
|
10
|
+
* `effect` is a 5-element CUMULATIVE array with the same layout as
|
|
11
|
+
* ship_data_strengthen.durability: [firepower, torpedo, _, aviation, reload].
|
|
12
|
+
* Index 2 is unused (always 0 in current data).
|
|
13
|
+
*/
|
|
14
|
+
const shipStrengthenBlueprintValueSchema = zod_1.z
|
|
15
|
+
.object({
|
|
16
|
+
id: zod_1.z.number(),
|
|
17
|
+
lv: zod_1.z.number(),
|
|
18
|
+
need_lv: zod_1.z.number().optional(),
|
|
19
|
+
effect: zod_1.z.array(zod_1.z.number()),
|
|
20
|
+
})
|
|
21
|
+
.passthrough();
|
|
22
|
+
exports.ShipStrengthenBlueprintSchema = zod_1.z.record(zod_1.z.string(), shipStrengthenBlueprintValueSchema);
|
|
@@ -19,17 +19,17 @@ exports.RARITY_MAP = {
|
|
|
19
19
|
/**
|
|
20
20
|
* Resolve a rarity integer to its display string.
|
|
21
21
|
*
|
|
22
|
-
*
|
|
23
|
-
* -
|
|
24
|
-
* -
|
|
25
|
-
* - else
|
|
22
|
+
* Research ships are keyed off the raw `rarity` value, not `blueprint_version`:
|
|
23
|
+
* - rarity === 5 && isResearch → "Priority"
|
|
24
|
+
* - rarity === 6 && isResearch → "Decisive"
|
|
25
|
+
* - else → RARITY_MAP[rarity] ?? "Normal"
|
|
26
26
|
*/
|
|
27
|
-
function rarityName(rarity, isResearch
|
|
28
|
-
if (
|
|
29
|
-
if (
|
|
27
|
+
function rarityName(rarity, isResearch) {
|
|
28
|
+
if (isResearch) {
|
|
29
|
+
if (rarity === 5)
|
|
30
|
+
return "Priority";
|
|
31
|
+
if (rarity === 6)
|
|
30
32
|
return "Decisive";
|
|
31
|
-
}
|
|
32
|
-
return "Priority";
|
|
33
33
|
}
|
|
34
34
|
return exports.RARITY_MAP[rarity] ?? "Normal";
|
|
35
35
|
}
|
|
@@ -74,18 +74,28 @@ function nationalityName(code) {
|
|
|
74
74
|
// Skill color
|
|
75
75
|
// ---------------------------------------------------------------------------
|
|
76
76
|
/**
|
|
77
|
-
* Skill type int →
|
|
78
|
-
*
|
|
77
|
+
* Skill type int → Azur Lane in-client border color.
|
|
78
|
+
*
|
|
79
|
+
* 1 = offensive → "red"
|
|
80
|
+
* 2 = defensive → "blue"
|
|
81
|
+
* 3 = support → "yellow"
|
|
82
|
+
* 0 = unset / placeholder (legacy passives like "Repair I") → "blue"
|
|
83
|
+
*
|
|
84
|
+
* NOTE: this corrects a long-standing AzurAPI mislabeling where the map read
|
|
85
|
+
* 1 → "yellow", 2 → "pink", 3 → "blue"
|
|
86
|
+
* — the game type numbers had been bound to the wrong category names, and
|
|
87
|
+
* the "pink" sentinel was invented to paper over type 2. Consumers relying
|
|
88
|
+
* on the old labels will now see the in-game colors instead.
|
|
79
89
|
*/
|
|
80
90
|
exports.SKILL_COLOR_MAP = {
|
|
81
|
-
0: "
|
|
82
|
-
1: "
|
|
83
|
-
2: "
|
|
84
|
-
3: "
|
|
91
|
+
0: "blue",
|
|
92
|
+
1: "red",
|
|
93
|
+
2: "blue",
|
|
94
|
+
3: "yellow",
|
|
85
95
|
};
|
|
86
|
-
/** Look up a skill type color; falls back to "
|
|
96
|
+
/** Look up a skill type color; falls back to "blue" for unknown types. */
|
|
87
97
|
function skillColor(type) {
|
|
88
|
-
return exports.SKILL_COLOR_MAP[type] ?? "
|
|
98
|
+
return exports.SKILL_COLOR_MAP[type] ?? "blue";
|
|
89
99
|
}
|
|
90
100
|
// ---------------------------------------------------------------------------
|
|
91
101
|
// Stat index map
|
package/dist/ingest/files.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type ShipDataTemplate, type ShipDataStatistics, type ShipDataBreakout, type ShipSkinWords, type ShipDataStrengthen, type ShipDataBlueprint, type ShipDataTrans, type ShipDataGroup, type ShipSkinTemplate, type TransformDataTemplate, type FleetTechShipTemplate, type FleetTechShipClass, type FleetTechGroup, type ShipDataByType, type ShipDataByStar, type SkillDataTemplate, type SkillDataDisplay, type ShopTemplate, type VoiceActorCn, type EquipDataByType, type ShipDataCreateExchange, type AttributeInfoByType } from "../schema/raw/index.js";
|
|
1
|
+
import { type ShipDataTemplate, type ShipDataStatistics, type ShipDataBreakout, type ShipSkinWords, type ShipDataStrengthen, type ShipStrengthenBlueprint, type ShipDataBlueprint, type ShipDataTrans, type ShipDataGroup, type ShipSkinTemplate, type TransformDataTemplate, type FleetTechShipTemplate, type FleetTechShipClass, type FleetTechGroup, type ShipDataByType, type ShipDataByStar, type SkillDataTemplate, type SkillDataDisplay, type ShopTemplate, type VoiceActorCn, type EquipDataByType, type ShipDataCreateExchange, type AttributeInfoByType } from "../schema/raw/index.js";
|
|
2
2
|
import { type Region } from "./upstream.js";
|
|
3
3
|
export declare function loadShipDataTemplate(region?: Region): ShipDataTemplate;
|
|
4
4
|
export declare function loadShipDataStatistics(region?: Region): ShipDataStatistics;
|
|
@@ -7,6 +7,7 @@ export declare function loadShipSkinWords(region?: Region): ShipSkinWords;
|
|
|
7
7
|
export declare function loadShopTemplate(region?: Region): ShopTemplate;
|
|
8
8
|
export declare function loadShipDataStrengthen(region?: Region): ShipDataStrengthen;
|
|
9
9
|
export declare function loadShipDataBlueprint(region?: Region): ShipDataBlueprint;
|
|
10
|
+
export declare function loadShipStrengthenBlueprint(region?: Region): ShipStrengthenBlueprint;
|
|
10
11
|
export declare function loadShipDataTrans(region?: Region): ShipDataTrans;
|
|
11
12
|
export declare function loadShipDataGroup(region?: Region): ShipDataGroup;
|
|
12
13
|
export declare function loadShipSkinTemplate(region?: Region): ShipSkinTemplate;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../src/ingest/files.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,gBAAgB,EAErB,KAAK,kBAAkB,EAEvB,KAAK,gBAAgB,EAErB,KAAK,aAAa,EAElB,KAAK,kBAAkB,EAEvB,KAAK,iBAAiB,EAEtB,KAAK,aAAa,EAElB,KAAK,aAAa,EAElB,KAAK,gBAAgB,EAErB,KAAK,qBAAqB,EAE1B,KAAK,qBAAqB,EAE1B,KAAK,kBAAkB,EAEvB,KAAK,cAAc,EAEnB,KAAK,cAAc,EAEnB,KAAK,cAAc,EAEnB,KAAK,iBAAiB,EAEtB,KAAK,gBAAgB,EAErB,KAAK,YAAY,EAEjB,KAAK,YAAY,EAEjB,KAAK,eAAe,EAEpB,KAAK,sBAAsB,EAE3B,KAAK,mBAAmB,EACzB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAc,KAAK,MAAM,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../src/ingest/files.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,gBAAgB,EAErB,KAAK,kBAAkB,EAEvB,KAAK,gBAAgB,EAErB,KAAK,aAAa,EAElB,KAAK,kBAAkB,EAEvB,KAAK,uBAAuB,EAE5B,KAAK,iBAAiB,EAEtB,KAAK,aAAa,EAElB,KAAK,aAAa,EAElB,KAAK,gBAAgB,EAErB,KAAK,qBAAqB,EAE1B,KAAK,qBAAqB,EAE1B,KAAK,kBAAkB,EAEvB,KAAK,cAAc,EAEnB,KAAK,cAAc,EAEnB,KAAK,cAAc,EAEnB,KAAK,iBAAiB,EAEtB,KAAK,gBAAgB,EAErB,KAAK,YAAY,EAEjB,KAAK,YAAY,EAEjB,KAAK,eAAe,EAEpB,KAAK,sBAAsB,EAE3B,KAAK,mBAAmB,EACzB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAc,KAAK,MAAM,EAAE,MAAM,eAAe,CAAC;AA6DxD,wBAAgB,oBAAoB,CAAC,MAAM,GAAE,MAAa,GAAG,gBAAgB,CAK5E;AAED,wBAAgB,sBAAsB,CAAC,MAAM,GAAE,MAAa,GAAG,kBAAkB,CAKhF;AAED,wBAAgB,oBAAoB,CAAC,MAAM,GAAE,MAAa,GAAG,gBAAgB,CAK5E;AAED,wBAAgB,iBAAiB,CAAC,MAAM,GAAE,MAAa,GAAG,aAAa,CAKtE;AAED,wBAAgB,gBAAgB,CAAC,MAAM,GAAE,MAAa,GAAG,YAAY,CAKpE;AAMD,wBAAgB,sBAAsB,CAAC,MAAM,GAAE,MAAa,GAAG,kBAAkB,CAKhF;AAED,wBAAgB,qBAAqB,CAAC,MAAM,GAAE,MAAa,GAAG,iBAAiB,CAK9E;AAED,wBAAgB,2BAA2B,CACzC,MAAM,GAAE,MAAa,GACpB,uBAAuB,CAKzB;AAED,wBAAgB,iBAAiB,CAAC,MAAM,GAAE,MAAa,GAAG,aAAa,CAKtE;AAED,wBAAgB,iBAAiB,CAAC,MAAM,GAAE,MAAa,GAAG,aAAa,CAKtE;AAED,wBAAgB,oBAAoB,CAAC,MAAM,GAAE,MAAa,GAAG,gBAAgB,CAK5E;AAED,wBAAgB,yBAAyB,CAAC,MAAM,GAAE,MAAa,GAAG,qBAAqB,CAKtF;AAED,wBAAgB,yBAAyB,CAAC,MAAM,GAAE,MAAa,GAAG,qBAAqB,CAKtF;AAED,wBAAgB,sBAAsB,CAAC,MAAM,GAAE,MAAa,GAAG,kBAAkB,CAKhF;AAED,wBAAgB,kBAAkB,CAAC,MAAM,GAAE,MAAa,GAAG,cAAc,CAKxE;AAED,wBAAgB,kBAAkB,CAAC,MAAM,GAAE,MAAa,GAAG,cAAc,CAKxE;AAED,wBAAgB,kBAAkB,CAAC,MAAM,GAAE,MAAa,GAAG,cAAc,CAKxE;AAED,wBAAgB,qBAAqB,CAAC,MAAM,GAAE,MAAa,GAAG,iBAAiB,CAK9E;AAED,wBAAgB,oBAAoB,CAAC,MAAM,GAAE,MAAa,GAAG,gBAAgB,CAK5E;AAED,wBAAgB,gBAAgB,CAAC,MAAM,GAAE,MAAa,GAAG,YAAY,CAKpE;AAED,wBAAgB,mBAAmB,CAAC,MAAM,GAAE,MAAa,GAAG,eAAe,CAK1E;AAED,wBAAgB,0BAA0B,CAAC,MAAM,GAAE,MAAa,GAAG,sBAAsB,CAKxF;AAED,wBAAgB,uBAAuB,CAAC,MAAM,GAAE,MAAa,GAAG,mBAAmB,CAKlF"}
|
package/dist/ingest/files.js
CHANGED
|
@@ -1,25 +1,31 @@
|
|
|
1
1
|
import fs from "fs";
|
|
2
|
-
import { ShipDataTemplateSchema, ShipDataStatisticsSchema, ShipDataBreakoutSchema, ShipSkinWordsSchema, ShipDataStrengthenSchema, ShipDataBlueprintSchema, ShipDataTransSchema, ShipDataGroupSchema, ShipSkinTemplateSchema, TransformDataTemplateSchema, FleetTechShipTemplateSchema, FleetTechShipClassSchema, FleetTechGroupSchema, ShipDataByTypeSchema, ShipDataByStarSchema, SkillDataTemplateSchema, SkillDataDisplaySchema, ShopTemplateSchema, VoiceActorCnSchema, EquipDataByTypeSchema, ShipDataCreateExchangeSchema, AttributeInfoByTypeSchema, } from "../schema/raw/index.js";
|
|
2
|
+
import { ShipDataTemplateSchema, ShipDataStatisticsSchema, ShipDataBreakoutSchema, ShipSkinWordsSchema, ShipDataStrengthenSchema, ShipStrengthenBlueprintSchema, ShipDataBlueprintSchema, ShipDataTransSchema, ShipDataGroupSchema, ShipSkinTemplateSchema, TransformDataTemplateSchema, FleetTechShipTemplateSchema, FleetTechShipClassSchema, FleetTechGroupSchema, ShipDataByTypeSchema, ShipDataByStarSchema, SkillDataTemplateSchema, SkillDataDisplaySchema, ShopTemplateSchema, VoiceActorCnSchema, EquipDataByTypeSchema, ShipDataCreateExchangeSchema, AttributeInfoByTypeSchema, } from "../schema/raw/index.js";
|
|
3
3
|
import { regionPath } from "./upstream.js";
|
|
4
4
|
function readJsonFile(filePath) {
|
|
5
|
+
let raw;
|
|
5
6
|
try {
|
|
6
|
-
|
|
7
|
-
const parsed = JSON.parse(raw);
|
|
8
|
-
// Many upstream files have an "all" key containing an array of IDs
|
|
9
|
-
// (an index listing all record keys). Strip it before validation.
|
|
10
|
-
if (parsed !== null && typeof parsed === "object" && !Array.isArray(parsed)) {
|
|
11
|
-
const obj = parsed;
|
|
12
|
-
if ("all" in obj && Array.isArray(obj["all"])) {
|
|
13
|
-
const { all: _all, ...rest } = obj;
|
|
14
|
-
return rest;
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
return parsed;
|
|
7
|
+
raw = fs.readFileSync(filePath, "utf-8");
|
|
18
8
|
}
|
|
19
|
-
catch {
|
|
20
|
-
|
|
21
|
-
|
|
9
|
+
catch (err) {
|
|
10
|
+
throw new Error(`azurapi ingest: failed to read ${filePath}: ${err instanceof Error ? err.message : String(err)}`);
|
|
11
|
+
}
|
|
12
|
+
let parsed;
|
|
13
|
+
try {
|
|
14
|
+
parsed = JSON.parse(raw);
|
|
22
15
|
}
|
|
16
|
+
catch (err) {
|
|
17
|
+
throw new Error(`azurapi ingest: failed to parse JSON in ${filePath}: ${err instanceof Error ? err.message : String(err)}`);
|
|
18
|
+
}
|
|
19
|
+
// Many upstream files have an "all" key containing an array of IDs
|
|
20
|
+
// (an index listing all record keys). Strip it before validation.
|
|
21
|
+
if (parsed !== null && typeof parsed === "object" && !Array.isArray(parsed)) {
|
|
22
|
+
const obj = parsed;
|
|
23
|
+
if ("all" in obj && Array.isArray(obj["all"])) {
|
|
24
|
+
const { all: _all, ...rest } = obj;
|
|
25
|
+
return rest;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return parsed;
|
|
23
29
|
}
|
|
24
30
|
function loadFile(schema, filePath) {
|
|
25
31
|
const data = readJsonFile(filePath);
|
|
@@ -60,6 +66,9 @@ export function loadShipDataStrengthen(region = "EN") {
|
|
|
60
66
|
export function loadShipDataBlueprint(region = "EN") {
|
|
61
67
|
return loadFile(ShipDataBlueprintSchema, regionPath(region, "ShareCfg", "ship_data_blueprint.json"));
|
|
62
68
|
}
|
|
69
|
+
export function loadShipStrengthenBlueprint(region = "EN") {
|
|
70
|
+
return loadFile(ShipStrengthenBlueprintSchema, regionPath(region, "ShareCfg", "ship_strengthen_blueprint.json"));
|
|
71
|
+
}
|
|
63
72
|
export function loadShipDataTrans(region = "EN") {
|
|
64
73
|
return loadFile(ShipDataTransSchema, regionPath(region, "ShareCfg", "ship_data_trans.json"));
|
|
65
74
|
}
|
package/dist/ingest/files.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"files.js","sourceRoot":"","sources":["../../src/ingest/files.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AAGpB,OAAO,EACL,sBAAsB,EAEtB,wBAAwB,EAExB,sBAAsB,EAEtB,mBAAmB,EAEnB,wBAAwB,EAExB,uBAAuB,EAEvB,mBAAmB,EAEnB,mBAAmB,EAEnB,sBAAsB,EAEtB,2BAA2B,EAE3B,2BAA2B,EAE3B,wBAAwB,EAExB,oBAAoB,EAEpB,oBAAoB,EAEpB,oBAAoB,EAEpB,uBAAuB,EAEvB,sBAAsB,EAEtB,kBAAkB,EAElB,kBAAkB,EAElB,qBAAqB,EAErB,4BAA4B,EAE5B,yBAAyB,GAE1B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,UAAU,EAAe,MAAM,eAAe,CAAC;AAExD,SAAS,YAAY,CAAC,QAAgB;IACpC,IAAI,CAAC;QACH,
|
|
1
|
+
{"version":3,"file":"files.js","sourceRoot":"","sources":["../../src/ingest/files.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,8 +24,6 @@ export interface IdentityInputs {
|
|
|
24
24
|
isEnReleased: boolean;
|
|
25
25
|
/** Whether this ship belongs to the research/blueprint category. */
|
|
26
26
|
isResearch: boolean;
|
|
27
|
-
/** blueprint_version value for research ships (drives Decisive vs Priority). */
|
|
28
|
-
blueprintVersion?: number;
|
|
29
27
|
/** Pre-resolved group row from ship_data_group (caller looks up by group_type). */
|
|
30
28
|
groupRow: ShipDataGroupValue;
|
|
31
29
|
/** Lookups helper for class/hull/equip name resolution. */
|
|
@@ -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,EACnB,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;KAChC,CAAC;IACF,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,
|
|
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,EACnB,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;KAChC,CAAC;IACF,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;AAeD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,cAAc,GAAG,cAAc,CAgJxE"}
|
|
@@ -12,7 +12,7 @@ function isLikelyChinese(s) {
|
|
|
12
12
|
// Main
|
|
13
13
|
// ---------------------------------------------------------------------------
|
|
14
14
|
export function normalizeIdentity(inputs) {
|
|
15
|
-
const { groupType, rowIds, en, cn, jp, isEnReleased, isResearch,
|
|
15
|
+
const { groupType, rowIds, en, cn, jp, isEnReleased, isResearch, groupRow, lookups, } = inputs;
|
|
16
16
|
// ------------------------------------------------------------------
|
|
17
17
|
// Resolve the LB3 row ID — the row whose key ends with "4", or last entry.
|
|
18
18
|
// ------------------------------------------------------------------
|
|
@@ -74,7 +74,7 @@ export function normalizeIdentity(inputs) {
|
|
|
74
74
|
// Rarity
|
|
75
75
|
// ------------------------------------------------------------------
|
|
76
76
|
const rarityInt = enStats.rarity;
|
|
77
|
-
const rarity = rarityName(rarityInt, isResearch
|
|
77
|
+
const rarity = rarityName(rarityInt, isResearch);
|
|
78
78
|
// ------------------------------------------------------------------
|
|
79
79
|
// Stars
|
|
80
80
|
// ------------------------------------------------------------------
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"identity.js","sourceRoot":"","sources":["../../src/normalize/identity.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAY9C,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,yBAAyB,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
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Ship } from "../schema/output/ship.js";
|
|
2
2
|
import type { Region } from "../ingest/upstream.js";
|
|
3
|
-
import type { ShipDataTemplate, ShipDataStatistics, ShipDataBreakout, ShipDataStrengthen, ShipDataBlueprint, ShipDataTrans, ShipDataGroup, ShipSkinTemplate, ShopTemplate, ShipDataCreateExchange, ShipDataByType, ShipDataByStar, FleetTechShipTemplate, FleetTechShipClass, SkillDataTemplate, SkillDataDisplay, TransformDataTemplate, EquipDataByType, VoiceActorCn, AttributeInfoByType, ShipDataGroupValue } from "../schema/raw/index.js";
|
|
3
|
+
import type { ShipDataTemplate, ShipDataStatistics, ShipDataBreakout, ShipDataStrengthen, ShipStrengthenBlueprint, ShipDataBlueprint, ShipDataTrans, ShipDataGroup, ShipSkinTemplate, ShopTemplate, ShipDataCreateExchange, ShipDataByType, ShipDataByStar, FleetTechShipTemplate, FleetTechShipClass, SkillDataTemplate, SkillDataDisplay, TransformDataTemplate, EquipDataByType, VoiceActorCn, AttributeInfoByType, ShipDataGroupValue } from "../schema/raw/index.js";
|
|
4
4
|
import type { Lookups } from "../translate/lookups.js";
|
|
5
5
|
export interface BuildContext {
|
|
6
6
|
region: Region;
|
|
@@ -9,6 +9,7 @@ export interface BuildContext {
|
|
|
9
9
|
statistics: ShipDataStatistics;
|
|
10
10
|
breakout: ShipDataBreakout;
|
|
11
11
|
strengthen: ShipDataStrengthen;
|
|
12
|
+
strengthenBlueprint: ShipStrengthenBlueprint;
|
|
12
13
|
blueprint: ShipDataBlueprint;
|
|
13
14
|
trans: ShipDataTrans;
|
|
14
15
|
group: ShipDataGroup;
|
|
@@ -48,8 +49,6 @@ interface BuildIndexes {
|
|
|
48
49
|
groupByGroupType: Map<string, ShipDataGroupValue>;
|
|
49
50
|
/** group_type (string) → set of blueprint keys (i.e. group_type is a research ship) */
|
|
50
51
|
researchGroupTypes: Set<string>;
|
|
51
|
-
/** group_type (string) → blueprint_version */
|
|
52
|
-
blueprintVersionMap: Map<string, number>;
|
|
53
52
|
}
|
|
54
53
|
export declare function buildShip(groupType: string, ctx: BuildContext, indexes?: BuildIndexes): Ship | null;
|
|
55
54
|
export declare function buildAllShips(ctx: BuildContext): Ship[];
|
|
@@ -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,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,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;CAClC;AAMD,UAAU,YAAY;IACpB,sCAAsC;IACtC,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAClD,uFAAuF;IACvF,kBAAkB,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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"}
|