@lycoristech/azurapi 0.0.1 → 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.
Files changed (49) hide show
  1. package/LICENSE +1 -5
  2. package/data/ship-list.json +34 -34
  3. package/data/ships.json +2318 -2318
  4. package/data/version.json +1 -1
  5. package/dist/cjs/ingest/files.js +25 -15
  6. package/dist/cjs/normalize/identity.js +2 -2
  7. package/dist/cjs/normalize/ship.js +9 -10
  8. package/dist/cjs/normalize/stats.js +66 -8
  9. package/dist/cjs/schema/output/ship.js +1 -1
  10. package/dist/cjs/schema/raw/index.js +1 -0
  11. package/dist/cjs/schema/raw/shipDataBlueprint.js +2 -0
  12. package/dist/cjs/schema/raw/shipStrengthenBlueprint.js +22 -0
  13. package/dist/cjs/translate/enums.js +27 -17
  14. package/dist/ingest/files.d.ts +2 -1
  15. package/dist/ingest/files.d.ts.map +1 -1
  16. package/dist/ingest/files.js +25 -16
  17. package/dist/ingest/files.js.map +1 -1
  18. package/dist/normalize/identity.d.ts +0 -2
  19. package/dist/normalize/identity.d.ts.map +1 -1
  20. package/dist/normalize/identity.js +2 -2
  21. package/dist/normalize/identity.js.map +1 -1
  22. package/dist/normalize/ship.d.ts +2 -3
  23. package/dist/normalize/ship.d.ts.map +1 -1
  24. package/dist/normalize/ship.js +9 -10
  25. package/dist/normalize/ship.js.map +1 -1
  26. package/dist/normalize/stats.d.ts +5 -1
  27. package/dist/normalize/stats.d.ts.map +1 -1
  28. package/dist/normalize/stats.js +66 -8
  29. package/dist/normalize/stats.js.map +1 -1
  30. package/dist/schema/output/ship.d.ts +5 -5
  31. package/dist/schema/output/ship.js +1 -1
  32. package/dist/schema/output/ship.js.map +1 -1
  33. package/dist/schema/raw/index.d.ts +1 -0
  34. package/dist/schema/raw/index.d.ts.map +1 -1
  35. package/dist/schema/raw/index.js +1 -0
  36. package/dist/schema/raw/index.js.map +1 -1
  37. package/dist/schema/raw/shipDataBlueprint.d.ts +12 -0
  38. package/dist/schema/raw/shipDataBlueprint.d.ts.map +1 -1
  39. package/dist/schema/raw/shipDataBlueprint.js +2 -0
  40. package/dist/schema/raw/shipDataBlueprint.js.map +1 -1
  41. package/dist/schema/raw/shipStrengthenBlueprint.d.ts +46 -0
  42. package/dist/schema/raw/shipStrengthenBlueprint.d.ts.map +1 -0
  43. package/dist/schema/raw/shipStrengthenBlueprint.js +20 -0
  44. package/dist/schema/raw/shipStrengthenBlueprint.js.map +1 -0
  45. package/dist/translate/enums.d.ts +20 -10
  46. package/dist/translate/enums.d.ts.map +1 -1
  47. package/dist/translate/enums.js +27 -17
  48. package/dist/translate/enums.js.map +1 -1
  49. package/package.json +23 -1
package/data/version.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "generatedAt": "2026-04-09T22:17:20.993Z",
2
+ "generatedAt": "2026-04-11T00:14:20.550Z",
3
3
  "shipCount": 746,
4
4
  "schemaVersion": "0.0.1"
5
5
  }
@@ -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
- const raw = fs_1.default.readFileSync(filePath, "utf-8");
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
- // File missing or unreadable treat as empty
48
- return {};
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, blueprintVersion, groupRow, lookups, } = inputs;
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, blueprintVersion);
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 blueprintVersionMap = new Map();
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, blueprintVersionMap };
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 and blueprintVersion
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 the `durability` field.
10
- *
11
- * Strengthen durability mapping (0-indexed):
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
- const strengthenRow = strengthen[strengthenId];
145
- const durability = strengthenRow?.durability ?? [];
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", "pink", "gold", "yellow", "blue"]),
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
- * Rules:
23
- * - int === 6 && isResearch && blueprintVersion >= 6 → "Decisive"
24
- * - int === 6 && isResearch → "Priority"
25
- * - else → RARITY_MAP[int] || "Normal"
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, blueprintVersion) {
28
- if (rarity === 6 && isResearch) {
29
- if (blueprintVersion !== undefined && blueprintVersion >= 6) {
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 → AzurAPI color.
78
- * 1 = offensive (yellow), 2 = support (pink), 3 = defensive (blue), 0 = unset (pink).
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: "pink",
82
- 1: "yellow",
83
- 2: "pink",
84
- 3: "blue",
91
+ 0: "blue",
92
+ 1: "red",
93
+ 2: "blue",
94
+ 3: "yellow",
85
95
  };
86
- /** Look up a skill type color; falls back to "pink". */
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] ?? "pink";
98
+ return exports.SKILL_COLOR_MAP[type] ?? "blue";
89
99
  }
90
100
  // ---------------------------------------------------------------------------
91
101
  // Stat index map
@@ -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;AA8CxD,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,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"}
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"}
@@ -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
- const raw = fs.readFileSync(filePath, "utf-8");
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
- // File missing or unreadable treat as empty
21
- return {};
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
  }
@@ -1 +1 @@
1
- {"version":3,"file":"files.js","sourceRoot":"","sources":["../../src/ingest/files.ts"],"names":[],"mappings":"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"}
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,gFAAgF;IAChF,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,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,CAiJxE"}
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, blueprintVersion, groupRow, lookups, } = inputs;
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, blueprintVersion);
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":"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"}
1
+ {"version":3,"file":"identity.js","sourceRoot":"","sources":["../../src/normalize/identity.ts"],"names":[],"mappings":"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"}
@@ -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":"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"}
1
+ {"version":3,"file":"ship.d.ts","sourceRoot":"","sources":["../../src/normalize/ship.ts"],"names":[],"mappings":"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"}