@lycoristech/azurdata 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +25 -0
- package/README.md +123 -0
- package/data/.gitkeep +0 -0
- package/data/id-map.json +3530 -0
- package/data/ship-list.json +4478 -0
- package/data/ships.json +143282 -0
- package/data/version.json +5 -0
- package/dist/cjs/client/AzurData.js +69 -0
- package/dist/cjs/client/fetcher.js +121 -0
- package/dist/cjs/client/index.js +7 -0
- package/dist/cjs/client/ships.js +80 -0
- package/dist/cjs/config.js +14 -0
- package/dist/cjs/index.js +6 -0
- package/dist/cjs/ingest/files.js +134 -0
- package/dist/cjs/ingest/index.js +18 -0
- package/dist/cjs/ingest/upstream.js +12 -0
- package/dist/cjs/normalize/construction.js +186 -0
- package/dist/cjs/normalize/identity.js +131 -0
- package/dist/cjs/normalize/index.js +25 -0
- package/dist/cjs/normalize/misc.js +31 -0
- package/dist/cjs/normalize/retrofit.js +21 -0
- package/dist/cjs/normalize/ship.js +406 -0
- package/dist/cjs/normalize/skills.js +194 -0
- package/dist/cjs/normalize/skins.js +141 -0
- package/dist/cjs/normalize/slots.js +35 -0
- package/dist/cjs/normalize/stats.js +182 -0
- package/dist/cjs/output/index.js +20 -0
- package/dist/cjs/output/writeIdMap.js +52 -0
- package/dist/cjs/output/writeShipList.js +31 -0
- package/dist/cjs/output/writeShips.js +33 -0
- package/dist/cjs/output/writeVersion.js +23 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/schema/output/index.js +17 -0
- package/dist/cjs/schema/output/ship.js +169 -0
- package/dist/cjs/schema/raw/attributeInfoByType.js +11 -0
- package/dist/cjs/schema/raw/equipDataByType.js +12 -0
- package/dist/cjs/schema/raw/fleetTechGroup.js +10 -0
- package/dist/cjs/schema/raw/fleetTechShipClass.js +15 -0
- package/dist/cjs/schema/raw/fleetTechShipTemplate.js +20 -0
- package/dist/cjs/schema/raw/index.js +38 -0
- package/dist/cjs/schema/raw/shipDataBlueprint.js +11 -0
- package/dist/cjs/schema/raw/shipDataBreakout.js +17 -0
- package/dist/cjs/schema/raw/shipDataByStar.js +10 -0
- package/dist/cjs/schema/raw/shipDataByType.js +13 -0
- package/dist/cjs/schema/raw/shipDataCreateExchange.js +10 -0
- package/dist/cjs/schema/raw/shipDataGroup.js +22 -0
- package/dist/cjs/schema/raw/shipDataStatistics.js +24 -0
- package/dist/cjs/schema/raw/shipDataStrengthen.js +12 -0
- package/dist/cjs/schema/raw/shipDataTemplate.js +26 -0
- package/dist/cjs/schema/raw/shipDataTrans.js +13 -0
- package/dist/cjs/schema/raw/shipSkinTemplate.js +23 -0
- package/dist/cjs/schema/raw/shipSkinWords.js +11 -0
- package/dist/cjs/schema/raw/shopTemplate.js +14 -0
- package/dist/cjs/schema/raw/skillDataDisplay.js +11 -0
- package/dist/cjs/schema/raw/skillDataTemplate.js +17 -0
- package/dist/cjs/schema/raw/transformDataTemplate.js +18 -0
- package/dist/cjs/schema/raw/voiceActorCn.js +11 -0
- package/dist/cjs/translate/enums.js +131 -0
- package/dist/cjs/translate/index.js +19 -0
- package/dist/cjs/translate/lookups.js +63 -0
- package/dist/cjs/translate/strings.js +98 -0
- package/dist/client/AzurData.d.ts +25 -0
- package/dist/client/AzurData.d.ts.map +1 -0
- package/dist/client/AzurData.js +63 -0
- package/dist/client/AzurData.js.map +1 -0
- package/dist/client/fetcher.d.ts +25 -0
- package/dist/client/fetcher.d.ts.map +1 -0
- package/dist/client/fetcher.js +116 -0
- package/dist/client/fetcher.js.map +1 -0
- package/dist/client/index.d.ts +4 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +3 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/ships.d.ts +20 -0
- package/dist/client/ships.d.ts.map +1 -0
- package/dist/client/ships.js +74 -0
- package/dist/client/ships.js.map +1 -0
- package/dist/config.d.ts +5 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +12 -0
- package/dist/config.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/ingest/files.d.ts +25 -0
- package/dist/ingest/files.d.ts.map +1 -0
- package/dist/ingest/files.js +108 -0
- package/dist/ingest/files.js.map +1 -0
- package/dist/ingest/index.d.ts +3 -0
- package/dist/ingest/index.d.ts.map +1 -0
- package/dist/ingest/index.js +3 -0
- package/dist/ingest/index.js.map +1 -0
- package/dist/ingest/upstream.d.ts +4 -0
- package/dist/ingest/upstream.d.ts.map +1 -0
- package/dist/ingest/upstream.js +6 -0
- package/dist/ingest/upstream.js.map +1 -0
- package/dist/normalize/construction.d.ts +30 -0
- package/dist/normalize/construction.d.ts.map +1 -0
- package/dist/normalize/construction.js +184 -0
- package/dist/normalize/construction.js.map +1 -0
- package/dist/normalize/identity.d.ts +47 -0
- package/dist/normalize/identity.d.ts.map +1 -0
- package/dist/normalize/identity.js +129 -0
- package/dist/normalize/identity.js.map +1 -0
- package/dist/normalize/index.d.ts +10 -0
- package/dist/normalize/index.d.ts.map +1 -0
- package/dist/normalize/index.js +10 -0
- package/dist/normalize/index.js.map +1 -0
- package/dist/normalize/misc.d.ts +15 -0
- package/dist/normalize/misc.d.ts.map +1 -0
- package/dist/normalize/misc.js +29 -0
- package/dist/normalize/misc.js.map +1 -0
- package/dist/normalize/retrofit.d.ts +14 -0
- package/dist/normalize/retrofit.d.ts.map +1 -0
- package/dist/normalize/retrofit.js +19 -0
- package/dist/normalize/retrofit.js.map +1 -0
- package/dist/normalize/ship.d.ts +67 -0
- package/dist/normalize/ship.d.ts.map +1 -0
- package/dist/normalize/ship.js +369 -0
- package/dist/normalize/ship.js.map +1 -0
- package/dist/normalize/skills.d.ts +20 -0
- package/dist/normalize/skills.d.ts.map +1 -0
- package/dist/normalize/skills.js +192 -0
- package/dist/normalize/skills.js.map +1 -0
- package/dist/normalize/skins.d.ts +14 -0
- package/dist/normalize/skins.d.ts.map +1 -0
- package/dist/normalize/skins.js +139 -0
- package/dist/normalize/skins.js.map +1 -0
- package/dist/normalize/slots.d.ts +14 -0
- package/dist/normalize/slots.d.ts.map +1 -0
- package/dist/normalize/slots.js +33 -0
- package/dist/normalize/slots.js.map +1 -0
- package/dist/normalize/stats.d.ts +19 -0
- package/dist/normalize/stats.d.ts.map +1 -0
- package/dist/normalize/stats.js +180 -0
- package/dist/normalize/stats.js.map +1 -0
- package/dist/output/index.d.ts +5 -0
- package/dist/output/index.d.ts.map +1 -0
- package/dist/output/index.js +5 -0
- package/dist/output/index.js.map +1 -0
- package/dist/output/writeIdMap.d.ts +16 -0
- package/dist/output/writeIdMap.d.ts.map +1 -0
- package/dist/output/writeIdMap.js +47 -0
- package/dist/output/writeIdMap.js.map +1 -0
- package/dist/output/writeShipList.d.ts +9 -0
- package/dist/output/writeShipList.d.ts.map +1 -0
- package/dist/output/writeShipList.js +26 -0
- package/dist/output/writeShipList.js.map +1 -0
- package/dist/output/writeShips.d.ts +15 -0
- package/dist/output/writeShips.d.ts.map +1 -0
- package/dist/output/writeShips.js +28 -0
- package/dist/output/writeShips.js.map +1 -0
- package/dist/output/writeVersion.d.ts +11 -0
- package/dist/output/writeVersion.d.ts.map +1 -0
- package/dist/output/writeVersion.js +18 -0
- package/dist/output/writeVersion.js.map +1 -0
- package/dist/schema/output/index.d.ts +2 -0
- package/dist/schema/output/index.d.ts.map +1 -0
- package/dist/schema/output/index.js +2 -0
- package/dist/schema/output/index.js.map +1 -0
- package/dist/schema/output/ship.d.ts +977 -0
- package/dist/schema/output/ship.d.ts.map +1 -0
- package/dist/schema/output/ship.js +167 -0
- package/dist/schema/output/ship.js.map +1 -0
- package/dist/schema/raw/attributeInfoByType.d.ts +25 -0
- package/dist/schema/raw/attributeInfoByType.d.ts.map +1 -0
- package/dist/schema/raw/attributeInfoByType.js +9 -0
- package/dist/schema/raw/attributeInfoByType.js.map +1 -0
- package/dist/schema/raw/equipDataByType.d.ts +31 -0
- package/dist/schema/raw/equipDataByType.d.ts.map +1 -0
- package/dist/schema/raw/equipDataByType.js +10 -0
- package/dist/schema/raw/equipDataByType.js.map +1 -0
- package/dist/schema/raw/fleetTechGroup.d.ts +19 -0
- package/dist/schema/raw/fleetTechGroup.d.ts.map +1 -0
- package/dist/schema/raw/fleetTechGroup.js +8 -0
- package/dist/schema/raw/fleetTechGroup.js.map +1 -0
- package/dist/schema/raw/fleetTechShipClass.d.ts +49 -0
- package/dist/schema/raw/fleetTechShipClass.d.ts.map +1 -0
- package/dist/schema/raw/fleetTechShipClass.js +13 -0
- package/dist/schema/raw/fleetTechShipClass.js.map +1 -0
- package/dist/schema/raw/fleetTechShipTemplate.d.ts +79 -0
- package/dist/schema/raw/fleetTechShipTemplate.d.ts.map +1 -0
- package/dist/schema/raw/fleetTechShipTemplate.js +18 -0
- package/dist/schema/raw/fleetTechShipTemplate.js.map +1 -0
- package/dist/schema/raw/index.d.ts +23 -0
- package/dist/schema/raw/index.d.ts.map +1 -0
- package/dist/schema/raw/index.js +23 -0
- package/dist/schema/raw/index.js.map +1 -0
- package/dist/schema/raw/shipDataBlueprint.d.ts +25 -0
- package/dist/schema/raw/shipDataBlueprint.d.ts.map +1 -0
- package/dist/schema/raw/shipDataBlueprint.js +9 -0
- package/dist/schema/raw/shipDataBlueprint.js.map +1 -0
- package/dist/schema/raw/shipDataBreakout.d.ts +61 -0
- package/dist/schema/raw/shipDataBreakout.d.ts.map +1 -0
- package/dist/schema/raw/shipDataBreakout.js +15 -0
- package/dist/schema/raw/shipDataBreakout.js.map +1 -0
- package/dist/schema/raw/shipDataByStar.d.ts +19 -0
- package/dist/schema/raw/shipDataByStar.d.ts.map +1 -0
- package/dist/schema/raw/shipDataByStar.js +8 -0
- package/dist/schema/raw/shipDataByStar.js.map +1 -0
- package/dist/schema/raw/shipDataByType.d.ts +37 -0
- package/dist/schema/raw/shipDataByType.d.ts.map +1 -0
- package/dist/schema/raw/shipDataByType.js +11 -0
- package/dist/schema/raw/shipDataByType.js.map +1 -0
- package/dist/schema/raw/shipDataCreateExchange.d.ts +19 -0
- package/dist/schema/raw/shipDataCreateExchange.d.ts.map +1 -0
- package/dist/schema/raw/shipDataCreateExchange.js +8 -0
- package/dist/schema/raw/shipDataCreateExchange.js.map +1 -0
- package/dist/schema/raw/shipDataGroup.d.ts +79 -0
- package/dist/schema/raw/shipDataGroup.d.ts.map +1 -0
- package/dist/schema/raw/shipDataGroup.js +20 -0
- package/dist/schema/raw/shipDataGroup.js.map +1 -0
- package/dist/schema/raw/shipDataStatistics.d.ts +103 -0
- package/dist/schema/raw/shipDataStatistics.d.ts.map +1 -0
- package/dist/schema/raw/shipDataStatistics.js +22 -0
- package/dist/schema/raw/shipDataStatistics.js.map +1 -0
- package/dist/schema/raw/shipDataStrengthen.d.ts +31 -0
- package/dist/schema/raw/shipDataStrengthen.d.ts.map +1 -0
- package/dist/schema/raw/shipDataStrengthen.js +10 -0
- package/dist/schema/raw/shipDataStrengthen.js.map +1 -0
- package/dist/schema/raw/shipDataTemplate.d.ts +115 -0
- package/dist/schema/raw/shipDataTemplate.d.ts.map +1 -0
- package/dist/schema/raw/shipDataTemplate.js +24 -0
- package/dist/schema/raw/shipDataTemplate.js.map +1 -0
- package/dist/schema/raw/shipDataTrans.d.ts +37 -0
- package/dist/schema/raw/shipDataTrans.d.ts.map +1 -0
- package/dist/schema/raw/shipDataTrans.js +11 -0
- package/dist/schema/raw/shipDataTrans.js.map +1 -0
- package/dist/schema/raw/shipSkinTemplate.d.ts +97 -0
- package/dist/schema/raw/shipSkinTemplate.d.ts.map +1 -0
- package/dist/schema/raw/shipSkinTemplate.js +21 -0
- package/dist/schema/raw/shipSkinTemplate.js.map +1 -0
- package/dist/schema/raw/shipSkinWords.d.ts +25 -0
- package/dist/schema/raw/shipSkinWords.d.ts.map +1 -0
- package/dist/schema/raw/shipSkinWords.js +9 -0
- package/dist/schema/raw/shipSkinWords.js.map +1 -0
- package/dist/schema/raw/shopTemplate.d.ts +43 -0
- package/dist/schema/raw/shopTemplate.d.ts.map +1 -0
- package/dist/schema/raw/shopTemplate.js +12 -0
- package/dist/schema/raw/shopTemplate.js.map +1 -0
- package/dist/schema/raw/skillDataDisplay.d.ts +25 -0
- package/dist/schema/raw/skillDataDisplay.d.ts.map +1 -0
- package/dist/schema/raw/skillDataDisplay.js +9 -0
- package/dist/schema/raw/skillDataDisplay.js.map +1 -0
- package/dist/schema/raw/skillDataTemplate.d.ts +61 -0
- package/dist/schema/raw/skillDataTemplate.d.ts.map +1 -0
- package/dist/schema/raw/skillDataTemplate.js +15 -0
- package/dist/schema/raw/skillDataTemplate.js.map +1 -0
- package/dist/schema/raw/transformDataTemplate.d.ts +67 -0
- package/dist/schema/raw/transformDataTemplate.d.ts.map +1 -0
- package/dist/schema/raw/transformDataTemplate.js +16 -0
- package/dist/schema/raw/transformDataTemplate.js.map +1 -0
- package/dist/schema/raw/voiceActorCn.d.ts +25 -0
- package/dist/schema/raw/voiceActorCn.d.ts.map +1 -0
- package/dist/schema/raw/voiceActorCn.js +9 -0
- package/dist/schema/raw/voiceActorCn.js.map +1 -0
- package/dist/translate/enums.d.ts +34 -0
- package/dist/translate/enums.d.ts.map +1 -0
- package/dist/translate/enums.js +126 -0
- package/dist/translate/enums.js.map +1 -0
- package/dist/translate/index.d.ts +4 -0
- package/dist/translate/index.d.ts.map +1 -0
- package/dist/translate/index.js +4 -0
- package/dist/translate/index.js.map +1 -0
- package/dist/translate/lookups.d.ts +37 -0
- package/dist/translate/lookups.d.ts.map +1 -0
- package/dist/translate/lookups.js +61 -0
- package/dist/translate/lookups.js.map +1 -0
- package/dist/translate/strings.d.ts +40 -0
- package/dist/translate/strings.d.ts.map +1 -0
- package/dist/translate/strings.js +92 -0
- package/dist/translate/strings.js.map +1 -0
- package/package.json +37 -0
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import Fuse from "fuse.js";
|
|
2
|
+
export class Ships {
|
|
3
|
+
data;
|
|
4
|
+
idMap;
|
|
5
|
+
fuse;
|
|
6
|
+
constructor(options) {
|
|
7
|
+
this.data = options.data;
|
|
8
|
+
this.idMap = options.idMap;
|
|
9
|
+
this.fuse = new Fuse(Object.values(options.data), {
|
|
10
|
+
keys: [
|
|
11
|
+
{ name: "names.en", weight: 3 },
|
|
12
|
+
{ name: "names.code", weight: 2 },
|
|
13
|
+
{ name: "names.jp", weight: 1 },
|
|
14
|
+
{ name: "names.cn", weight: 1 },
|
|
15
|
+
],
|
|
16
|
+
threshold: options.fuseThreshold ?? 0.4,
|
|
17
|
+
includeScore: true,
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
// Primary getter. Accepts:
|
|
21
|
+
// - canonical group_type: "20212"
|
|
22
|
+
// - legacy 3-digit code: "115" (via idMap)
|
|
23
|
+
// - any name in idMap (case-insensitive)
|
|
24
|
+
// - fuzzy match via fuse.js
|
|
25
|
+
get(nameOrId) {
|
|
26
|
+
if (typeof nameOrId !== "string" || nameOrId.length === 0)
|
|
27
|
+
return undefined;
|
|
28
|
+
// 1. Direct id hit
|
|
29
|
+
if (this.data[nameOrId])
|
|
30
|
+
return this.data[nameOrId];
|
|
31
|
+
// 2. Exact id-map hit (case sensitive first)
|
|
32
|
+
const directId = this.idMap[nameOrId];
|
|
33
|
+
if (directId && this.data[directId])
|
|
34
|
+
return this.data[directId];
|
|
35
|
+
// 3. Case-insensitive id-map hit
|
|
36
|
+
// Build a lowercased copy lazily
|
|
37
|
+
const lower = nameOrId.toLowerCase();
|
|
38
|
+
const ciIdMap = this.getCiIdMap();
|
|
39
|
+
const ciId = ciIdMap[lower];
|
|
40
|
+
if (ciId && this.data[ciId])
|
|
41
|
+
return this.data[ciId];
|
|
42
|
+
// 4. Fuse.js fuzzy
|
|
43
|
+
const results = this.fuse.search(nameOrId, { limit: 1 });
|
|
44
|
+
if (results.length > 0 && results[0].score !== undefined && results[0].score < 0.5) {
|
|
45
|
+
return results[0].item;
|
|
46
|
+
}
|
|
47
|
+
return undefined;
|
|
48
|
+
}
|
|
49
|
+
_ciIdMap;
|
|
50
|
+
getCiIdMap() {
|
|
51
|
+
if (!this._ciIdMap) {
|
|
52
|
+
this._ciIdMap = {};
|
|
53
|
+
for (const [k, v] of Object.entries(this.idMap)) {
|
|
54
|
+
this._ciIdMap[k.toLowerCase()] = v;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return this._ciIdMap;
|
|
58
|
+
}
|
|
59
|
+
getAll() {
|
|
60
|
+
return Object.values(this.data);
|
|
61
|
+
}
|
|
62
|
+
getById(id) {
|
|
63
|
+
return this.data[id];
|
|
64
|
+
}
|
|
65
|
+
count() {
|
|
66
|
+
return Object.keys(this.data).length;
|
|
67
|
+
}
|
|
68
|
+
// Search multiple matches
|
|
69
|
+
search(query, limit = 10) {
|
|
70
|
+
const results = this.fuse.search(query, { limit });
|
|
71
|
+
return results.map(r => r.item);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=ships.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ships.js","sourceRoot":"","sources":["../../src/client/ships.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare const IMAGE_BASE_URL = "https://raw.githubusercontent.com/iujab/azurlane-images/main";
|
|
2
|
+
export declare const PAINTINGS_URL = "https://raw.githubusercontent.com/iujab/azurlane-images/main/paintings";
|
|
3
|
+
export declare const THUMBNAILS_URL = "https://raw.githubusercontent.com/iujab/azurlane-images/main/thumbnails";
|
|
4
|
+
export declare const DATA_BASE_URL = "https://raw.githubusercontent.com/iujab/AzurAPI/main/data";
|
|
5
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,cAAc,iEAAqF,CAAC;AACjH,eAAO,MAAM,aAAa,2EAAgC,CAAC;AAC3D,eAAO,MAAM,cAAc,4EAAiC,CAAC;AAI7D,eAAO,MAAM,aAAa,8DAAwF,CAAC"}
|
package/dist/config.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// Central config for GitHub URLs.
|
|
2
|
+
const GITHUB_USER = "iujab";
|
|
3
|
+
const GITHUB_BRANCH = "main";
|
|
4
|
+
// Image URLs (azurlane-images repo)
|
|
5
|
+
const IMAGES_REPO = "azurlane-images";
|
|
6
|
+
export const IMAGE_BASE_URL = `https://raw.githubusercontent.com/${GITHUB_USER}/${IMAGES_REPO}/${GITHUB_BRANCH}`;
|
|
7
|
+
export const PAINTINGS_URL = `${IMAGE_BASE_URL}/paintings`;
|
|
8
|
+
export const THUMBNAILS_URL = `${IMAGE_BASE_URL}/thumbnails`;
|
|
9
|
+
// Data URLs (azurdata repo — for runtime fetch)
|
|
10
|
+
const DATA_REPO = "AzurAPI";
|
|
11
|
+
export const DATA_BASE_URL = `https://raw.githubusercontent.com/${GITHUB_USER}/${DATA_REPO}/${GITHUB_BRANCH}/data`;
|
|
12
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAClC,MAAM,WAAW,GAAG,OAAO,CAAC;AAC5B,MAAM,aAAa,GAAG,MAAM,CAAC;AAE7B,oCAAoC;AACpC,MAAM,WAAW,GAAG,iBAAiB,CAAC;AACtC,MAAM,CAAC,MAAM,cAAc,GAAG,qCAAqC,WAAW,IAAI,WAAW,IAAI,aAAa,EAAE,CAAC;AACjH,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,cAAc,YAAY,CAAC;AAC3D,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,cAAc,aAAa,CAAC;AAE7D,gDAAgD;AAChD,MAAM,SAAS,GAAG,SAAS,CAAC;AAC5B,MAAM,CAAC,MAAM,aAAa,GAAG,qCAAqC,WAAW,IAAI,SAAS,IAAI,aAAa,OAAO,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,eAAe,EAAE,KAAK,mBAAmB,EAAE,KAAK,EAAE,KAAK,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC1I,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAkD,KAAK,EAAwC,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
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";
|
|
2
|
+
import { type Region } from "./upstream.js";
|
|
3
|
+
export declare function loadShipDataTemplate(region?: Region): ShipDataTemplate;
|
|
4
|
+
export declare function loadShipDataStatistics(region?: Region): ShipDataStatistics;
|
|
5
|
+
export declare function loadShipDataBreakout(region?: Region): ShipDataBreakout;
|
|
6
|
+
export declare function loadShipSkinWords(region?: Region): ShipSkinWords;
|
|
7
|
+
export declare function loadShopTemplate(region?: Region): ShopTemplate;
|
|
8
|
+
export declare function loadShipDataStrengthen(region?: Region): ShipDataStrengthen;
|
|
9
|
+
export declare function loadShipDataBlueprint(region?: Region): ShipDataBlueprint;
|
|
10
|
+
export declare function loadShipDataTrans(region?: Region): ShipDataTrans;
|
|
11
|
+
export declare function loadShipDataGroup(region?: Region): ShipDataGroup;
|
|
12
|
+
export declare function loadShipSkinTemplate(region?: Region): ShipSkinTemplate;
|
|
13
|
+
export declare function loadTransformDataTemplate(region?: Region): TransformDataTemplate;
|
|
14
|
+
export declare function loadFleetTechShipTemplate(region?: Region): FleetTechShipTemplate;
|
|
15
|
+
export declare function loadFleetTechShipClass(region?: Region): FleetTechShipClass;
|
|
16
|
+
export declare function loadFleetTechGroup(region?: Region): FleetTechGroup;
|
|
17
|
+
export declare function loadShipDataByType(region?: Region): ShipDataByType;
|
|
18
|
+
export declare function loadShipDataByStar(region?: Region): ShipDataByStar;
|
|
19
|
+
export declare function loadSkillDataTemplate(region?: Region): SkillDataTemplate;
|
|
20
|
+
export declare function loadSkillDataDisplay(region?: Region): SkillDataDisplay;
|
|
21
|
+
export declare function loadVoiceActorCn(region?: Region): VoiceActorCn;
|
|
22
|
+
export declare function loadEquipDataByType(region?: Region): EquipDataByType;
|
|
23
|
+
export declare function loadShipDataCreateExchange(region?: Region): ShipDataCreateExchange;
|
|
24
|
+
export declare function loadAttributeInfoByType(region?: Region): AttributeInfoByType;
|
|
25
|
+
//# sourceMappingURL=files.d.ts.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,108 @@
|
|
|
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";
|
|
3
|
+
import { regionPath } from "./upstream.js";
|
|
4
|
+
function readJsonFile(filePath) {
|
|
5
|
+
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;
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
// File missing or unreadable — treat as empty
|
|
21
|
+
return {};
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
function loadFile(schema, filePath) {
|
|
25
|
+
const data = readJsonFile(filePath);
|
|
26
|
+
// Empty object stub — return as-is (valid empty record)
|
|
27
|
+
if (data !== null && typeof data === "object" && !Array.isArray(data) && Object.keys(data).length === 0) {
|
|
28
|
+
return {};
|
|
29
|
+
}
|
|
30
|
+
const result = schema.safeParse(data);
|
|
31
|
+
if (!result.success) {
|
|
32
|
+
throw new Error(`Zod parse failed for file: ${filePath}\n${result.error.message}`);
|
|
33
|
+
}
|
|
34
|
+
return result.data;
|
|
35
|
+
}
|
|
36
|
+
// ---------------------------------------------------------------------------
|
|
37
|
+
// sharecfgdata/ files
|
|
38
|
+
// ---------------------------------------------------------------------------
|
|
39
|
+
export function loadShipDataTemplate(region = "EN") {
|
|
40
|
+
return loadFile(ShipDataTemplateSchema, regionPath(region, "sharecfgdata", "ship_data_template.json"));
|
|
41
|
+
}
|
|
42
|
+
export function loadShipDataStatistics(region = "EN") {
|
|
43
|
+
return loadFile(ShipDataStatisticsSchema, regionPath(region, "sharecfgdata", "ship_data_statistics.json"));
|
|
44
|
+
}
|
|
45
|
+
export function loadShipDataBreakout(region = "EN") {
|
|
46
|
+
return loadFile(ShipDataBreakoutSchema, regionPath(region, "sharecfgdata", "ship_data_breakout.json"));
|
|
47
|
+
}
|
|
48
|
+
export function loadShipSkinWords(region = "EN") {
|
|
49
|
+
return loadFile(ShipSkinWordsSchema, regionPath(region, "sharecfgdata", "ship_skin_words.json"));
|
|
50
|
+
}
|
|
51
|
+
export function loadShopTemplate(region = "EN") {
|
|
52
|
+
return loadFile(ShopTemplateSchema, regionPath(region, "sharecfgdata", "shop_template.json"));
|
|
53
|
+
}
|
|
54
|
+
// ---------------------------------------------------------------------------
|
|
55
|
+
// ShareCfg/ files
|
|
56
|
+
// ---------------------------------------------------------------------------
|
|
57
|
+
export function loadShipDataStrengthen(region = "EN") {
|
|
58
|
+
return loadFile(ShipDataStrengthenSchema, regionPath(region, "ShareCfg", "ship_data_strengthen.json"));
|
|
59
|
+
}
|
|
60
|
+
export function loadShipDataBlueprint(region = "EN") {
|
|
61
|
+
return loadFile(ShipDataBlueprintSchema, regionPath(region, "ShareCfg", "ship_data_blueprint.json"));
|
|
62
|
+
}
|
|
63
|
+
export function loadShipDataTrans(region = "EN") {
|
|
64
|
+
return loadFile(ShipDataTransSchema, regionPath(region, "ShareCfg", "ship_data_trans.json"));
|
|
65
|
+
}
|
|
66
|
+
export function loadShipDataGroup(region = "EN") {
|
|
67
|
+
return loadFile(ShipDataGroupSchema, regionPath(region, "ShareCfg", "ship_data_group.json"));
|
|
68
|
+
}
|
|
69
|
+
export function loadShipSkinTemplate(region = "EN") {
|
|
70
|
+
return loadFile(ShipSkinTemplateSchema, regionPath(region, "ShareCfg", "ship_skin_template.json"));
|
|
71
|
+
}
|
|
72
|
+
export function loadTransformDataTemplate(region = "EN") {
|
|
73
|
+
return loadFile(TransformDataTemplateSchema, regionPath(region, "ShareCfg", "transform_data_template.json"));
|
|
74
|
+
}
|
|
75
|
+
export function loadFleetTechShipTemplate(region = "EN") {
|
|
76
|
+
return loadFile(FleetTechShipTemplateSchema, regionPath(region, "ShareCfg", "fleet_tech_ship_template.json"));
|
|
77
|
+
}
|
|
78
|
+
export function loadFleetTechShipClass(region = "EN") {
|
|
79
|
+
return loadFile(FleetTechShipClassSchema, regionPath(region, "ShareCfg", "fleet_tech_ship_class.json"));
|
|
80
|
+
}
|
|
81
|
+
export function loadFleetTechGroup(region = "EN") {
|
|
82
|
+
return loadFile(FleetTechGroupSchema, regionPath(region, "ShareCfg", "fleet_tech_group.json"));
|
|
83
|
+
}
|
|
84
|
+
export function loadShipDataByType(region = "EN") {
|
|
85
|
+
return loadFile(ShipDataByTypeSchema, regionPath(region, "ShareCfg", "ship_data_by_type.json"));
|
|
86
|
+
}
|
|
87
|
+
export function loadShipDataByStar(region = "EN") {
|
|
88
|
+
return loadFile(ShipDataByStarSchema, regionPath(region, "ShareCfg", "ship_data_by_star.json"));
|
|
89
|
+
}
|
|
90
|
+
export function loadSkillDataTemplate(region = "EN") {
|
|
91
|
+
return loadFile(SkillDataTemplateSchema, regionPath(region, "ShareCfg", "skill_data_template.json"));
|
|
92
|
+
}
|
|
93
|
+
export function loadSkillDataDisplay(region = "EN") {
|
|
94
|
+
return loadFile(SkillDataDisplaySchema, regionPath(region, "ShareCfg", "skill_data_display.json"));
|
|
95
|
+
}
|
|
96
|
+
export function loadVoiceActorCn(region = "EN") {
|
|
97
|
+
return loadFile(VoiceActorCnSchema, regionPath(region, "ShareCfg", "voice_actor_CN.json"));
|
|
98
|
+
}
|
|
99
|
+
export function loadEquipDataByType(region = "EN") {
|
|
100
|
+
return loadFile(EquipDataByTypeSchema, regionPath(region, "ShareCfg", "equip_data_by_type.json"));
|
|
101
|
+
}
|
|
102
|
+
export function loadShipDataCreateExchange(region = "EN") {
|
|
103
|
+
return loadFile(ShipDataCreateExchangeSchema, regionPath(region, "ShareCfg", "ship_data_create_exchange.json"));
|
|
104
|
+
}
|
|
105
|
+
export function loadAttributeInfoByType(region = "EN") {
|
|
106
|
+
return loadFile(AttributeInfoByTypeSchema, regionPath(region, "ShareCfg", "attribute_info_by_type.json"));
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=files.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"files.js","sourceRoot":"","sources":["../../src/ingest/files.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ingest/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ingest/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upstream.d.ts","sourceRoot":"","sources":["../../src/ingest/upstream.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,aAAa,QAAwD,CAAC;AAEnF,MAAM,MAAM,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAEtD,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAExE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upstream.js","sourceRoot":"","sources":["../../src/ingest/upstream.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,wBAAwB,CAAC,CAAC;AAInF,MAAM,UAAU,UAAU,CAAC,MAAc,EAAE,GAAG,QAAkB;IAC9D,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC;AACvD,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { Ship } from "../schema/output/ship.js";
|
|
2
|
+
import type { ShipDataGroupValue, FleetTechShipTemplate, ShipDataCreateExchange, ShipDataByType, ShipDataByStar } from "../schema/raw/index.js";
|
|
3
|
+
import type { Lookups } from "../translate/lookups.js";
|
|
4
|
+
export interface ConstructionInputs {
|
|
5
|
+
groupType: string;
|
|
6
|
+
/** Pre-resolved ship_data_group row */
|
|
7
|
+
groupRow: ShipDataGroupValue;
|
|
8
|
+
lb3RowId: string;
|
|
9
|
+
/** from ship_data_template[lb3].type */
|
|
10
|
+
shipType: number;
|
|
11
|
+
/** star_max from template */
|
|
12
|
+
starMax: number;
|
|
13
|
+
/** star count at LB0 — used for medal scrap calculation */
|
|
14
|
+
initialStar: number;
|
|
15
|
+
fleetTechShipTemplate: FleetTechShipTemplate;
|
|
16
|
+
shipDataCreateExchange: ShipDataCreateExchange;
|
|
17
|
+
shipDataByType: ShipDataByType;
|
|
18
|
+
shipDataByStar: ShipDataByStar;
|
|
19
|
+
lookups: Lookups;
|
|
20
|
+
/** Optional seed from data/overrides/construction-times.json */
|
|
21
|
+
constructionTimeOverride?: string;
|
|
22
|
+
}
|
|
23
|
+
export interface ConstructionOutput {
|
|
24
|
+
construction?: Ship["construction"];
|
|
25
|
+
scrapValue?: Ship["scrapValue"];
|
|
26
|
+
fleetTech?: Ship["fleetTech"];
|
|
27
|
+
obtainedFrom?: Ship["obtainedFrom"];
|
|
28
|
+
}
|
|
29
|
+
export declare function normalizeConstruction(inputs: ConstructionInputs): ConstructionOutput;
|
|
30
|
+
//# sourceMappingURL=construction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"construction.d.ts","sourceRoot":"","sources":["../../src/normalize/construction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,KAAK,EACV,kBAAkB,EAClB,qBAAqB,EACrB,sBAAsB,EACtB,cAAc,EACd,cAAc,EACf,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAOvD,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,wCAAwC;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,6BAA6B;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,2DAA2D;IAC3D,WAAW,EAAE,MAAM,CAAC;IACpB,qBAAqB,EAAE,qBAAqB,CAAC;IAC7C,sBAAsB,EAAE,sBAAsB,CAAC;IAC/C,cAAc,EAAE,cAAc,CAAC;IAC/B,cAAc,EAAE,cAAc,CAAC;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,gEAAgE;IAChE,wBAAwB,CAAC,EAAE,MAAM,CAAC;CACnC;AAED,MAAM,WAAW,kBAAkB;IACjC,YAAY,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IACpC,UAAU,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IAChC,SAAS,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IAC9B,YAAY,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;CACrC;AAkBD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,kBAAkB,GAAG,kBAAkB,CAyNpF"}
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
import { FLEET_TECH_STAT_MAP } from "../translate/enums.js";
|
|
2
|
+
// ---------------------------------------------------------------------------
|
|
3
|
+
// Internal helpers
|
|
4
|
+
// ---------------------------------------------------------------------------
|
|
5
|
+
/**
|
|
6
|
+
* Flatten all string tokens from a description entry tuple.
|
|
7
|
+
* description entries are [string, unknown, number?] tuples.
|
|
8
|
+
*/
|
|
9
|
+
function descEntryText(entry) {
|
|
10
|
+
return entry[0];
|
|
11
|
+
}
|
|
12
|
+
// ---------------------------------------------------------------------------
|
|
13
|
+
// Main
|
|
14
|
+
// ---------------------------------------------------------------------------
|
|
15
|
+
export function normalizeConstruction(inputs) {
|
|
16
|
+
const { groupType, groupRow, lb3RowId, shipType, initialStar, fleetTechShipTemplate, shipDataCreateExchange, shipDataByType, shipDataByStar, lookups, constructionTimeOverride, } = inputs;
|
|
17
|
+
const result = {};
|
|
18
|
+
// -------------------------------------------------------------------------
|
|
19
|
+
// 1. construction.availableIn
|
|
20
|
+
// -------------------------------------------------------------------------
|
|
21
|
+
const descriptions = groupRow.description ?? [];
|
|
22
|
+
let lightFlag = false;
|
|
23
|
+
let heavyFlag = false;
|
|
24
|
+
let aviationFlag = false;
|
|
25
|
+
let limitedFlag = false;
|
|
26
|
+
for (const entry of descriptions) {
|
|
27
|
+
const text = descEntryText(entry);
|
|
28
|
+
const lower = text.toLowerCase();
|
|
29
|
+
if (lower.includes("light construction") ||
|
|
30
|
+
(lower.includes("light") && lower.includes("construction"))) {
|
|
31
|
+
lightFlag = true;
|
|
32
|
+
}
|
|
33
|
+
if (lower.includes("heavy construction") ||
|
|
34
|
+
(lower.includes("heavy") && lower.includes("construction"))) {
|
|
35
|
+
heavyFlag = true;
|
|
36
|
+
}
|
|
37
|
+
if (lower.includes("special construction") ||
|
|
38
|
+
(lower.includes("aviation") && lower.includes("construction"))) {
|
|
39
|
+
aviationFlag = true;
|
|
40
|
+
}
|
|
41
|
+
if (lower.startsWith("event:") ||
|
|
42
|
+
lower === "limited build") {
|
|
43
|
+
limitedFlag = true;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
// exchange: true if lb3RowId appears as a value in any exchange_ship_id array
|
|
47
|
+
let exchangeFlag = false;
|
|
48
|
+
const lb3RowIdNum = Number(lb3RowId);
|
|
49
|
+
for (const exchangeRow of Object.values(shipDataCreateExchange)) {
|
|
50
|
+
if (exchangeRow === undefined)
|
|
51
|
+
continue;
|
|
52
|
+
const ids = exchangeRow.exchange_ship_id ?? [];
|
|
53
|
+
if (ids.includes(lb3RowIdNum)) {
|
|
54
|
+
exchangeFlag = true;
|
|
55
|
+
break;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
const anyAvailableIn = lightFlag || heavyFlag || aviationFlag || limitedFlag || exchangeFlag;
|
|
59
|
+
const hasConstructionTime = constructionTimeOverride !== undefined;
|
|
60
|
+
if (anyAvailableIn || hasConstructionTime) {
|
|
61
|
+
const availableIn = anyAvailableIn
|
|
62
|
+
? {
|
|
63
|
+
light: lightFlag,
|
|
64
|
+
heavy: heavyFlag,
|
|
65
|
+
aviation: aviationFlag,
|
|
66
|
+
limited: limitedFlag,
|
|
67
|
+
exchange: exchangeFlag,
|
|
68
|
+
}
|
|
69
|
+
: undefined;
|
|
70
|
+
result.construction = {
|
|
71
|
+
...(hasConstructionTime ? { constructionTime: constructionTimeOverride } : {}),
|
|
72
|
+
...(availableIn !== undefined ? { availableIn } : {}),
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
// -------------------------------------------------------------------------
|
|
76
|
+
// 2. scrapValue
|
|
77
|
+
// -------------------------------------------------------------------------
|
|
78
|
+
const typeRow = shipDataByType[String(shipType)];
|
|
79
|
+
const goldRatio = typeRow?.distory_resource_gold_ratio ?? 0;
|
|
80
|
+
const fixGold = typeRow?.fix_resource_gold ?? 0;
|
|
81
|
+
const coin = Math.floor(goldRatio * 120 + fixGold);
|
|
82
|
+
// medal: from ship_data_by_star[initialStar].destory_item — find item_id === 15001
|
|
83
|
+
const starRow = shipDataByStar[String(initialStar)];
|
|
84
|
+
const destroyItems = starRow?.destory_item ?? [];
|
|
85
|
+
let medal = 0;
|
|
86
|
+
for (const [, itemId, qty] of destroyItems) {
|
|
87
|
+
if (itemId === 15001) {
|
|
88
|
+
medal = qty;
|
|
89
|
+
break;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
if (coin > 0 || medal > 0) {
|
|
93
|
+
result.scrapValue = { coin, oil: 0, medal };
|
|
94
|
+
}
|
|
95
|
+
// -------------------------------------------------------------------------
|
|
96
|
+
// 3. fleetTech
|
|
97
|
+
// -------------------------------------------------------------------------
|
|
98
|
+
const techRow = fleetTechShipTemplate[groupType];
|
|
99
|
+
if (techRow !== undefined) {
|
|
100
|
+
const collection = techRow.pt_get;
|
|
101
|
+
const maxLimitBreak = techRow.pt_upgrage;
|
|
102
|
+
const maxLevel = techRow.pt_level;
|
|
103
|
+
const total = collection + maxLimitBreak + maxLevel;
|
|
104
|
+
const techPoints = {
|
|
105
|
+
collection,
|
|
106
|
+
maxLimitBreak,
|
|
107
|
+
maxLevel,
|
|
108
|
+
total,
|
|
109
|
+
};
|
|
110
|
+
// collection bonus
|
|
111
|
+
let collectionBonus;
|
|
112
|
+
if (techRow.add_get_attr !== 0 && techRow.add_get_value !== 0) {
|
|
113
|
+
collectionBonus = {
|
|
114
|
+
stat: FLEET_TECH_STAT_MAP[techRow.add_get_attr] ?? "unknown",
|
|
115
|
+
bonus: techRow.add_get_value,
|
|
116
|
+
applicable: techRow.add_get_shiptype.map((id) => lookups.hullTypeName(id)),
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
// maxLevel bonus
|
|
120
|
+
let maxLevelBonus;
|
|
121
|
+
if (techRow.add_level_attr !== 0 && techRow.add_level_value !== 0) {
|
|
122
|
+
maxLevelBonus = {
|
|
123
|
+
stat: FLEET_TECH_STAT_MAP[techRow.add_level_attr] ?? "unknown",
|
|
124
|
+
bonus: techRow.add_level_value,
|
|
125
|
+
applicable: techRow.add_level_shiptype.map((id) => lookups.hullTypeName(id)),
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
result.fleetTech = {
|
|
129
|
+
techPoints,
|
|
130
|
+
statsBonus: {
|
|
131
|
+
...(collectionBonus !== undefined ? { collection: collectionBonus } : {}),
|
|
132
|
+
...(maxLevelBonus !== undefined ? { maxLevel: maxLevelBonus } : {}),
|
|
133
|
+
},
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
// -------------------------------------------------------------------------
|
|
137
|
+
// 4. obtainedFrom
|
|
138
|
+
// -------------------------------------------------------------------------
|
|
139
|
+
const mapPrefixes = ["explore chapter", "exploring stage"];
|
|
140
|
+
const fromMaps = [];
|
|
141
|
+
let firstNonMapText;
|
|
142
|
+
for (const entry of descriptions) {
|
|
143
|
+
const text = descEntryText(entry);
|
|
144
|
+
const lower = text.toLowerCase();
|
|
145
|
+
const isMap = mapPrefixes.some((prefix) => lower.startsWith(prefix));
|
|
146
|
+
if (isMap) {
|
|
147
|
+
// Extract the stage code using a regex: match Chapter/Stage followed by digits/dashes
|
|
148
|
+
const match = /\b(?:Chapter|Stage)\s+([0-9\-SEX\s]+)/i.exec(text);
|
|
149
|
+
if (match !== null && match[1] !== undefined) {
|
|
150
|
+
fromMaps.push(`Chapter ${match[1].trim()}`);
|
|
151
|
+
}
|
|
152
|
+
else {
|
|
153
|
+
// Fallback: take last whitespace-separated token
|
|
154
|
+
const tokens = text.trim().split(/\s+/);
|
|
155
|
+
const last = tokens[tokens.length - 1];
|
|
156
|
+
if (last !== undefined) {
|
|
157
|
+
fromMaps.push(last);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
else if (firstNonMapText === undefined) {
|
|
162
|
+
firstNonMapText = text;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
let obtainedFromStr;
|
|
166
|
+
if (firstNonMapText !== undefined) {
|
|
167
|
+
obtainedFromStr = firstNonMapText;
|
|
168
|
+
}
|
|
169
|
+
else if (fromMaps.length > 0) {
|
|
170
|
+
obtainedFromStr = "Map Drop";
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
obtainedFromStr = "Unknown";
|
|
174
|
+
}
|
|
175
|
+
const shouldEmitObtainedFrom = fromMaps.length > 0 || obtainedFromStr !== "Unknown";
|
|
176
|
+
if (shouldEmitObtainedFrom) {
|
|
177
|
+
result.obtainedFrom = {
|
|
178
|
+
...(fromMaps.length > 0 ? { fromMaps } : {}),
|
|
179
|
+
obtainedFrom: obtainedFromStr,
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
return result;
|
|
183
|
+
}
|
|
184
|
+
//# sourceMappingURL=construction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"construction.js","sourceRoot":"","sources":["../../src/normalize/construction.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
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";
|
|
3
|
+
import type { Lookups } from "../translate/lookups.js";
|
|
4
|
+
export interface IdentityInputs {
|
|
5
|
+
groupType: string;
|
|
6
|
+
/** The LB0..LB3 row IDs for this group. Primary row is the max-LB one (suffix 4). */
|
|
7
|
+
rowIds: string[];
|
|
8
|
+
en: {
|
|
9
|
+
template: ShipDataTemplate;
|
|
10
|
+
statistics: ShipDataStatistics;
|
|
11
|
+
group: ShipDataGroup;
|
|
12
|
+
blueprint: ShipDataBlueprint;
|
|
13
|
+
fleetTechShipTemplate: FleetTechShipTemplate;
|
|
14
|
+
fleetTechShipClass: FleetTechShipClass;
|
|
15
|
+
shipDataByType: ShipDataByType;
|
|
16
|
+
};
|
|
17
|
+
cn?: {
|
|
18
|
+
statistics: ShipDataStatistics;
|
|
19
|
+
};
|
|
20
|
+
jp?: {
|
|
21
|
+
statistics: ShipDataStatistics;
|
|
22
|
+
};
|
|
23
|
+
/** Caller determines whether the group exists in EN. */
|
|
24
|
+
isEnReleased: boolean;
|
|
25
|
+
/** Whether this ship belongs to the research/blueprint category. */
|
|
26
|
+
isResearch: boolean;
|
|
27
|
+
/** blueprint_version value for research ships (drives Decisive vs Priority). */
|
|
28
|
+
blueprintVersion?: number;
|
|
29
|
+
/** Pre-resolved group row from ship_data_group (caller looks up by group_type). */
|
|
30
|
+
groupRow: ShipDataGroupValue;
|
|
31
|
+
/** Lookups helper for class/hull/equip name resolution. */
|
|
32
|
+
lookups: Lookups;
|
|
33
|
+
}
|
|
34
|
+
export interface IdentityOutput {
|
|
35
|
+
id: string;
|
|
36
|
+
names: Ship["names"];
|
|
37
|
+
rarity: Ship["rarity"];
|
|
38
|
+
stars: Ship["stars"];
|
|
39
|
+
class: string;
|
|
40
|
+
hullType: string;
|
|
41
|
+
nationality: string;
|
|
42
|
+
wikiUrl?: string;
|
|
43
|
+
thumbnail: string;
|
|
44
|
+
isEnReleased?: boolean;
|
|
45
|
+
}
|
|
46
|
+
export declare function normalizeIdentity(inputs: IdentityInputs): IdentityOutput;
|
|
47
|
+
//# sourceMappingURL=identity.d.ts.map
|
|
@@ -0,0 +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"}
|