@autonoelle/wsg-active 0.1.0

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 (110) hide show
  1. package/README.md +169 -0
  2. package/dist/activeRestClient.d.ts +30 -0
  3. package/dist/activeRestClient.d.ts.map +1 -0
  4. package/dist/activeRestClient.js +130 -0
  5. package/dist/activeRestClient.js.map +1 -0
  6. package/dist/args.d.ts +33 -0
  7. package/dist/args.d.ts.map +1 -0
  8. package/dist/args.js +83 -0
  9. package/dist/args.js.map +1 -0
  10. package/dist/commands/account.d.ts +23 -0
  11. package/dist/commands/account.d.ts.map +1 -0
  12. package/dist/commands/account.js +322 -0
  13. package/dist/commands/account.js.map +1 -0
  14. package/dist/commands/auth.d.ts +8 -0
  15. package/dist/commands/auth.d.ts.map +1 -0
  16. package/dist/commands/auth.js +30 -0
  17. package/dist/commands/auth.js.map +1 -0
  18. package/dist/commands/battleMap.d.ts +4 -0
  19. package/dist/commands/battleMap.d.ts.map +1 -0
  20. package/dist/commands/battleMap.js +146 -0
  21. package/dist/commands/battleMap.js.map +1 -0
  22. package/dist/commands/config.d.ts +11 -0
  23. package/dist/commands/config.d.ts.map +1 -0
  24. package/dist/commands/config.js +125 -0
  25. package/dist/commands/config.js.map +1 -0
  26. package/dist/commands/discovery.d.ts +2 -0
  27. package/dist/commands/discovery.d.ts.map +1 -0
  28. package/dist/commands/discovery.js +109 -0
  29. package/dist/commands/discovery.js.map +1 -0
  30. package/dist/commands/functions.d.ts +26 -0
  31. package/dist/commands/functions.d.ts.map +1 -0
  32. package/dist/commands/functions.js +237 -0
  33. package/dist/commands/functions.js.map +1 -0
  34. package/dist/commands/mission.d.ts +7 -0
  35. package/dist/commands/mission.d.ts.map +1 -0
  36. package/dist/commands/mission.js +217 -0
  37. package/dist/commands/mission.js.map +1 -0
  38. package/dist/commands/session.d.ts +7 -0
  39. package/dist/commands/session.d.ts.map +1 -0
  40. package/dist/commands/session.js +17 -0
  41. package/dist/commands/session.js.map +1 -0
  42. package/dist/commands/shipPipe.d.ts +11 -0
  43. package/dist/commands/shipPipe.d.ts.map +1 -0
  44. package/dist/commands/shipPipe.js +127 -0
  45. package/dist/commands/shipPipe.js.map +1 -0
  46. package/dist/commands/snapshot.d.ts +33 -0
  47. package/dist/commands/snapshot.d.ts.map +1 -0
  48. package/dist/commands/snapshot.js +308 -0
  49. package/dist/commands/snapshot.js.map +1 -0
  50. package/dist/commands/store.d.ts +32 -0
  51. package/dist/commands/store.d.ts.map +1 -0
  52. package/dist/commands/store.js +212 -0
  53. package/dist/commands/store.js.map +1 -0
  54. package/dist/configTypes.d.ts +131 -0
  55. package/dist/configTypes.d.ts.map +1 -0
  56. package/dist/configTypes.js +152 -0
  57. package/dist/configTypes.js.map +1 -0
  58. package/dist/errors.d.ts +21 -0
  59. package/dist/errors.d.ts.map +1 -0
  60. package/dist/errors.js +42 -0
  61. package/dist/errors.js.map +1 -0
  62. package/dist/gameDataClient.d.ts +15 -0
  63. package/dist/gameDataClient.d.ts.map +1 -0
  64. package/dist/gameDataClient.js +63 -0
  65. package/dist/gameDataClient.js.map +1 -0
  66. package/dist/graphqlClient.d.ts +32 -0
  67. package/dist/graphqlClient.d.ts.map +1 -0
  68. package/dist/graphqlClient.js +106 -0
  69. package/dist/graphqlClient.js.map +1 -0
  70. package/dist/index.d.ts +3 -0
  71. package/dist/index.d.ts.map +1 -0
  72. package/dist/index.js +712 -0
  73. package/dist/index.js.map +1 -0
  74. package/dist/output.d.ts +24 -0
  75. package/dist/output.d.ts.map +1 -0
  76. package/dist/output.js +39 -0
  77. package/dist/output.js.map +1 -0
  78. package/dist/security.d.ts +3 -0
  79. package/dist/security.d.ts.map +1 -0
  80. package/dist/security.js +41 -0
  81. package/dist/security.js.map +1 -0
  82. package/dist/tests/clients.test.d.ts +2 -0
  83. package/dist/tests/clients.test.d.ts.map +1 -0
  84. package/dist/tests/clients.test.js +31 -0
  85. package/dist/tests/clients.test.js.map +1 -0
  86. package/dist/tests/security.test.d.ts +2 -0
  87. package/dist/tests/security.test.d.ts.map +1 -0
  88. package/dist/tests/security.test.js +26 -0
  89. package/dist/tests/security.test.js.map +1 -0
  90. package/dist/tests/shipPipe.test.d.ts +2 -0
  91. package/dist/tests/shipPipe.test.d.ts.map +1 -0
  92. package/dist/tests/shipPipe.test.js +31 -0
  93. package/dist/tests/shipPipe.test.js.map +1 -0
  94. package/dist/tests/validation.test.d.ts +2 -0
  95. package/dist/tests/validation.test.d.ts.map +1 -0
  96. package/dist/tests/validation.test.js +58 -0
  97. package/dist/tests/validation.test.js.map +1 -0
  98. package/dist/tests/writeWorkflow.test.d.ts +2 -0
  99. package/dist/tests/writeWorkflow.test.d.ts.map +1 -0
  100. package/dist/tests/writeWorkflow.test.js +22 -0
  101. package/dist/tests/writeWorkflow.test.js.map +1 -0
  102. package/dist/validation.d.ts +18 -0
  103. package/dist/validation.d.ts.map +1 -0
  104. package/dist/validation.js +328 -0
  105. package/dist/validation.js.map +1 -0
  106. package/dist/writeWorkflow.d.ts +16 -0
  107. package/dist/writeWorkflow.d.ts.map +1 -0
  108. package/dist/writeWorkflow.js +135 -0
  109. package/dist/writeWorkflow.js.map +1 -0
  110. package/package.json +31 -0
@@ -0,0 +1,322 @@
1
+ import { activeCall } from '../activeRestClient.js';
2
+ import { gameDataGql } from '../gameDataClient.js';
3
+ import { CliError } from '../errors.js';
4
+ export async function summary(opts) {
5
+ const activeInfo = await loadActiveInfo(opts);
6
+ const data = asRecord(getProperty(activeInfo, 'DataStruct')) ?? {};
7
+ const ships = asRecord(getProperty(activeInfo, 'ShipInfos')) ?? {};
8
+ const equips = asRecord(getProperty(activeInfo, 'EquipInfos')) ?? {};
9
+ const pool = asRecord(getProperty(activeInfo, 'PoolStruct')) ?? {};
10
+ const battle = asRecord(getProperty(activeInfo, 'BattleInfo'));
11
+ return {
12
+ player: {
13
+ level: getProperty(data, 'level') ?? null,
14
+ exp: getProperty(data, 'exp') ?? null,
15
+ },
16
+ resources: {
17
+ oil: getProperty(data, 'oil') ?? null,
18
+ ammo: getProperty(data, 'bullet') ?? null,
19
+ steel: getProperty(data, 'fe') ?? null,
20
+ aluminum: getProperty(data, 'al') ?? null,
21
+ diamond: getProperty(data, 'diamond') ?? null,
22
+ paidDiamond: getProperty(data, 'paidDiamond') ?? null,
23
+ spoils: getProperty(data, 'spoils') ?? null,
24
+ spoilsLimit: getProperty(data, 'spoilsLimit') ?? null,
25
+ shipDrop: getProperty(data, 'shipDrop') ?? null,
26
+ exploit: getProperty(data, 'exploit') ?? null,
27
+ furniturePoint: getProperty(data, 'furniturePoint') ?? null,
28
+ expCard: getProperty(data, 'expCard') ?? null,
29
+ },
30
+ capacity: {
31
+ ships: { used: Object.keys(ships).length, max: getProperty(data, 'maxShip') ?? null },
32
+ equips: { used: Object.keys(equips).length, max: getProperty(data, 'maxEquip') ?? null },
33
+ },
34
+ counts: {
35
+ teams: countCollection(getProperty(activeInfo, 'TeamInfos')),
36
+ items: countCollection(getProperty(activeInfo, 'ItemInfos')),
37
+ tasks: countCollection(getProperty(activeInfo, 'TaskInfos')),
38
+ maps: countCollection(getProperty(activeInfo, 'MapInfos')),
39
+ expeditions: countCollection(getProperty(activeInfo, 'Expeditions')),
40
+ repairSlots: countCollection(getProperty(pool, 'repairPool')),
41
+ shipBuildSlots: countCollection(getProperty(pool, 'shipBuildPool')),
42
+ equipmentBuildSlots: countCollection(getProperty(pool, 'equipmentBuildPool')),
43
+ },
44
+ battle: {
45
+ present: battle !== undefined,
46
+ fieldCount: battle ? Object.keys(battle).length : 0,
47
+ },
48
+ };
49
+ }
50
+ export async function ownedShips(activeOpts, gameDataOpts, options = {}) {
51
+ validateOwnedShipOptions(options);
52
+ const activeInfo = await loadActiveInfo(activeOpts);
53
+ const shipRecords = collectionRecords(getProperty(activeInfo, 'ShipInfos'));
54
+ const catalog = await loadShipCatalog(gameDataOpts);
55
+ const statuses = buildShipStatuses(activeInfo);
56
+ let ships = shipRecords.map((ship) => enrichShip(ship, catalog, statuses));
57
+ ships = ships.filter((ship) => matchesShip(ship, options));
58
+ ships.sort((a, b) => Number(a.instanceId) - Number(b.instanceId));
59
+ const totalCount = ships.length;
60
+ const offset = Math.max(0, Math.floor(options.offset ?? 0));
61
+ const first = options.all ? Math.max(totalCount - offset, 0) : Math.max(0, Math.floor(options.first ?? 20));
62
+ const page = ships.slice(offset, offset + first);
63
+ const items = options.fields && options.fields.length > 0
64
+ ? page.map((ship) => pickFields(ship, options.fields))
65
+ : page;
66
+ return {
67
+ totalOwned: shipRecords.length,
68
+ totalCount,
69
+ offset,
70
+ first,
71
+ hasMore: offset + page.length < totalCount,
72
+ items,
73
+ };
74
+ }
75
+ async function loadActiveInfo(opts) {
76
+ const data = await activeCall(opts, 'ActiveUserInfoData');
77
+ const record = asRecord(data);
78
+ if (!record) {
79
+ throw new CliError('ACCOUNT_DATA_INVALID', 'ActiveUserInfoData is not an object.', {
80
+ category: 'server',
81
+ retryable: true,
82
+ });
83
+ }
84
+ return record;
85
+ }
86
+ async function loadShipCatalog(options) {
87
+ const query = `
88
+ query OwnedShipCatalog($scope: String!, $first: Int!, $after: String) {
89
+ ships(scope: $scope, first: $first, after: $after) {
90
+ pageInfo { hasNextPage endCursor }
91
+ nodes { id title shipType country evoClass evoCid release cost }
92
+ }
93
+ }
94
+ `;
95
+ const result = new Map();
96
+ let after;
97
+ for (;;) {
98
+ const data = await gameDataGql(options, query, {
99
+ scope: options.scope,
100
+ first: 100,
101
+ after,
102
+ });
103
+ const connection = asRecord(data.ships);
104
+ if (!connection) {
105
+ throw new CliError('GAMEDATA_SHIPS_MISSING', 'GameData response is missing ships.', {
106
+ category: 'graphql',
107
+ });
108
+ }
109
+ for (const node of collectionRecords(connection.nodes)) {
110
+ const id = toInt(node.id);
111
+ if (id === undefined)
112
+ continue;
113
+ result.set(id, {
114
+ id,
115
+ title: String(node.title ?? ''),
116
+ shipType: String(node.shipType ?? ''),
117
+ country: String(node.country ?? ''),
118
+ evoClass: toBool(node.evoClass) ?? false,
119
+ evoCid: toInt(node.evoCid) ?? id,
120
+ release: toBool(node.release) ?? false,
121
+ cost: toInt(node.cost) ?? 0,
122
+ });
123
+ }
124
+ const pageInfo = asRecord(connection.pageInfo);
125
+ if (pageInfo?.hasNextPage !== true || typeof pageInfo.endCursor !== 'string')
126
+ break;
127
+ after = pageInfo.endCursor;
128
+ }
129
+ return result;
130
+ }
131
+ function buildShipStatuses(activeInfo) {
132
+ const memberships = new Map();
133
+ for (const team of collectionRecords(getProperty(activeInfo, 'TeamInfos'))) {
134
+ const membership = {
135
+ id: toInt(team.id) ?? 0,
136
+ name: String(team.name ?? ''),
137
+ teamType: toInt(team.teamType) ?? 0,
138
+ station: toBool(team.station) ?? false,
139
+ };
140
+ for (const member of asArray(team.members)) {
141
+ const shipId = toInt(member);
142
+ if (shipId === undefined || shipId === 0)
143
+ continue;
144
+ const current = memberships.get(shipId) ?? [];
145
+ current.push(membership);
146
+ memberships.set(shipId, current);
147
+ }
148
+ }
149
+ const pool = asRecord(getProperty(activeInfo, 'PoolStruct')) ?? {};
150
+ const repairing = new Set(collectionRecords(getProperty(pool, 'repairPool'))
151
+ .map((item) => toInt(item.id))
152
+ .filter((id) => id !== undefined && id !== 0));
153
+ const statuses = new Map();
154
+ const allIds = new Set([...memberships.keys(), ...repairing]);
155
+ for (const id of allIds) {
156
+ const shipMemberships = memberships.get(id) ?? [];
157
+ const inExpedition = shipMemberships.some((team) => team.teamType === 2);
158
+ const stationed = shipMemberships.some((team) => team.teamType === 1 && team.station);
159
+ const isRepairing = repairing.has(id);
160
+ statuses.set(id, {
161
+ teams: shipMemberships,
162
+ repairing: isRepairing,
163
+ inExpedition,
164
+ stationed,
165
+ occupied: shipMemberships.length > 0 || isRepairing,
166
+ availableForTeamSelection: !inExpedition && !stationed && !isRepairing,
167
+ });
168
+ }
169
+ return statuses;
170
+ }
171
+ function enrichShip(ship, catalog, statuses) {
172
+ const instanceId = toInt(ship.id) ?? 0;
173
+ const cid = toInt(ship.cid) ?? 0;
174
+ const definition = catalog.get(cid);
175
+ return {
176
+ instanceId,
177
+ cid,
178
+ title: definition?.title ?? null,
179
+ customName: typeof ship.name === 'string' && ship.name ? ship.name : null,
180
+ shipType: definition?.shipType ?? null,
181
+ country: definition?.country ?? null,
182
+ level: toInt(ship.level) ?? 0,
183
+ exp: toInt(ship.exp) ?? 0,
184
+ love: toInt(ship.love) ?? 0,
185
+ locked: toBool(ship.lock) ?? false,
186
+ married: toBool(ship.marry) ?? false,
187
+ evolved: definition?.evoClass ?? null,
188
+ evoCid: definition?.evoCid ?? null,
189
+ released: definition?.release ?? null,
190
+ sixthCost: definition?.cost ?? null,
191
+ skillId: toInt(ship.nowSkill) ?? 0,
192
+ skillLevel: toInt(ship.skillLevel) ?? 0,
193
+ currentHp: toInt(ship.nowHp) ?? null,
194
+ currentOil: typeof ship.nowOil === 'number' ? ship.nowOil : null,
195
+ currentAmmo: typeof ship.nowBullet === 'number' ? ship.nowBullet : null,
196
+ status: statuses.get(instanceId) ?? {
197
+ teams: [],
198
+ repairing: false,
199
+ inExpedition: false,
200
+ stationed: false,
201
+ occupied: false,
202
+ availableForTeamSelection: true,
203
+ },
204
+ };
205
+ }
206
+ function matchesShip(ship, options) {
207
+ if (options.id !== undefined && ship.instanceId !== options.id)
208
+ return false;
209
+ if (options.cid !== undefined && ship.cid !== options.cid)
210
+ return false;
211
+ const names = [ship.title, ship.customName].filter((name) => typeof name === 'string');
212
+ if (options.title && !names.some((name) => name === options.title))
213
+ return false;
214
+ if (options.titleContains) {
215
+ const needle = options.titleContains.toLocaleLowerCase();
216
+ if (!names.some((name) => name.toLocaleLowerCase().includes(needle)))
217
+ return false;
218
+ }
219
+ if (options.shipTypes && !options.shipTypes.includes(String(ship.shipType).toUpperCase()))
220
+ return false;
221
+ if (options.countries && !options.countries.includes(String(ship.country).toUpperCase()))
222
+ return false;
223
+ if (options.levelMin !== undefined && Number(ship.level) < options.levelMin)
224
+ return false;
225
+ if (options.levelMax !== undefined && Number(ship.level) > options.levelMax)
226
+ return false;
227
+ if (options.locked !== undefined && ship.locked !== options.locked)
228
+ return false;
229
+ if (options.married !== undefined && ship.married !== options.married)
230
+ return false;
231
+ if (options.evolved !== undefined && ship.evolved !== options.evolved)
232
+ return false;
233
+ if (options.available !== undefined) {
234
+ const status = asRecord(ship.status);
235
+ if (status?.availableForTeamSelection !== options.available)
236
+ return false;
237
+ }
238
+ return true;
239
+ }
240
+ function validateOwnedShipOptions(options) {
241
+ if (options.levelMin !== undefined && options.levelMax !== undefined && options.levelMin > options.levelMax) {
242
+ throw new CliError('INVALID_LEVEL_RANGE', 'level-min cannot be greater than level-max.', {
243
+ category: 'validation',
244
+ field: 'level',
245
+ details: { current: { min: options.levelMin, max: options.levelMax }, expected: 'min <= max' },
246
+ });
247
+ }
248
+ if (options.offset !== undefined && options.offset < 0) {
249
+ throw new CliError('INVALID_OFFSET', 'offset must be zero or greater.', { category: 'usage', field: 'offset' });
250
+ }
251
+ if (options.first !== undefined && options.first < 0) {
252
+ throw new CliError('INVALID_PAGE_SIZE', 'first must be zero or greater.', { category: 'usage', field: 'first' });
253
+ }
254
+ if (options.fields) {
255
+ const supported = new Set([
256
+ 'instanceId', 'cid', 'title', 'customName', 'shipType', 'country', 'level', 'exp', 'love',
257
+ 'locked', 'married', 'evolved', 'evoCid', 'released', 'sixthCost', 'skillId', 'skillLevel',
258
+ 'currentHp', 'currentOil', 'currentAmmo', 'status',
259
+ ]);
260
+ const invalid = options.fields.filter((field) => !supported.has(field));
261
+ if (invalid.length > 0) {
262
+ throw new CliError('UNSUPPORTED_FIELDS', `Unsupported owned-ship fields: ${invalid.join(', ')}`, {
263
+ category: 'usage',
264
+ field: 'fields',
265
+ details: { invalid, supported: [...supported] },
266
+ });
267
+ }
268
+ }
269
+ }
270
+ function pickFields(value, fields) {
271
+ return Object.fromEntries(fields.map((field) => [field, value[field]]));
272
+ }
273
+ function countCollection(value) {
274
+ if (Array.isArray(value))
275
+ return value.length;
276
+ const record = asRecord(value);
277
+ return record ? Object.keys(record).length : 0;
278
+ }
279
+ function collectionRecords(value) {
280
+ if (Array.isArray(value))
281
+ return value.map(asRecord).filter((item) => Boolean(item));
282
+ const record = asRecord(value);
283
+ return record
284
+ ? Object.values(record).map(asRecord).filter((item) => Boolean(item))
285
+ : [];
286
+ }
287
+ function getProperty(value, key) {
288
+ const record = asRecord(value);
289
+ if (!record)
290
+ return undefined;
291
+ const normalized = normalizeName(key);
292
+ const match = Object.keys(record).find((item) => normalizeName(item) === normalized);
293
+ return match ? record[match] : undefined;
294
+ }
295
+ function normalizeName(value) {
296
+ return value.replace(/[-_\s]/g, '').toLowerCase();
297
+ }
298
+ function asRecord(value) {
299
+ return typeof value === 'object' && value !== null && !Array.isArray(value)
300
+ ? value
301
+ : undefined;
302
+ }
303
+ function asArray(value) {
304
+ return Array.isArray(value) ? value : [];
305
+ }
306
+ function toInt(value) {
307
+ if (typeof value === 'number' && Number.isFinite(value))
308
+ return Math.trunc(value);
309
+ if (typeof value === 'string' && /^-?\d+$/.test(value))
310
+ return Number.parseInt(value, 10);
311
+ return undefined;
312
+ }
313
+ function toBool(value) {
314
+ if (typeof value === 'boolean')
315
+ return value;
316
+ if (value === 1 || value === '1' || value === 'true')
317
+ return true;
318
+ if (value === 0 || value === '0' || value === 'false')
319
+ return false;
320
+ return undefined;
321
+ }
322
+ //# sourceMappingURL=account.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account.js","sourceRoot":"","sources":["../../src/commands/account.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { ActiveBaseOptions } from '../activeRestClient.js';
2
+ export interface LoginInput {
3
+ username: string;
4
+ password: string;
5
+ servername: string;
6
+ }
7
+ export declare function login(opts: ActiveBaseOptions, input: LoginInput): Promise<unknown>;
8
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAIhE,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,KAAK,CACzB,IAAI,EAAE,iBAAiB,EACvB,KAAK,EAAE,UAAU,GAChB,OAAO,CAAC,OAAO,CAAC,CAyBlB"}
@@ -0,0 +1,30 @@
1
+ import { activePost } from '../activeRestClient.js';
2
+ import { createHash } from 'node:crypto';
3
+ import { CliError } from '../errors.js';
4
+ export async function login(opts, input) {
5
+ const response = await activePost(opts, '/Auth/Login', {
6
+ username: input.username,
7
+ password: input.password,
8
+ servername: input.servername,
9
+ });
10
+ const userKey = response.accessToken ?? response.userKey;
11
+ if (typeof userKey !== 'string' || !userKey) {
12
+ throw new CliError('LOGIN_CREDENTIAL_MISSING', 'Login response did not contain an AutoNoelle user key.', {
13
+ category: 'authentication',
14
+ });
15
+ }
16
+ return {
17
+ authenticated: true,
18
+ credential: {
19
+ type: 'autoNoelleUserKey',
20
+ userKey,
21
+ fingerprint: createHash('sha256').update(userKey).digest('hex').slice(0, 12),
22
+ legacyResponseField: 'accessToken',
23
+ },
24
+ reuse: {
25
+ preferred: 'Set AUTO_NOELLE_USER_KEY for subsequent commands.',
26
+ alternative: 'Keep AUTO_NOELLE_USERNAME, AUTO_NOELLE_PASSWORD, and AUTO_NOELLE_SERVERNAME in the runtime environment for automatic login.',
27
+ },
28
+ };
29
+ }
30
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAQxC,MAAM,CAAC,KAAK,UAAU,KAAK,CACzB,IAAuB,EACvB,KAAiB;IAEjB,MAAM,QAAQ,GAAG,MAAM,UAAU,CAA0B,IAAI,EAAE,aAAa,EAAE;QAC9E,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,UAAU,EAAE,KAAK,CAAC,UAAU;KAC7B,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,OAAO,CAAC;IACzD,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,OAAO,EAAE,CAAC;QAC5C,MAAM,IAAI,QAAQ,CAAC,0BAA0B,EAAE,wDAAwD,EAAE;YACvG,QAAQ,EAAE,gBAAgB;SAC3B,CAAC,CAAC;IACL,CAAC;IACD,OAAO;QACL,aAAa,EAAE,IAAI;QACnB,UAAU,EAAE;YACV,IAAI,EAAE,mBAAmB;YACzB,OAAO;YACP,WAAW,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;YAC5E,mBAAmB,EAAE,aAAa;SACnC;QACD,KAAK,EAAE;YACL,SAAS,EAAE,mDAAmD;YAC9D,WAAW,EAAE,6HAA6H;SAC3I;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { GameDataOptions } from '../args.js';
2
+ export declare function validateBattleMapConfig(options: GameDataOptions, value: unknown): Promise<unknown>;
3
+ export declare function readBattleMapFile(filePath: string): Record<string, unknown>;
4
+ //# sourceMappingURL=battleMap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"battleMap.d.ts","sourceRoot":"","sources":["../../src/commands/battleMap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAMlD,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,eAAe,EACxB,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,OAAO,CAAC,CAiElB;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAE3E"}
@@ -0,0 +1,146 @@
1
+ import { gameDataGql } from '../gameDataClient.js';
2
+ import { CliError } from '../errors.js';
3
+ import { readJsonObject } from '../writeWorkflow.js';
4
+ import { validateStore } from '../validation.js';
5
+ export async function validateBattleMapConfig(options, value) {
6
+ const config = asRecord(value);
7
+ if (!config)
8
+ throw new CliError('BATTLE_MAP_CONFIG_REQUIRED', 'BattleMapConfig must be an object.', { category: 'validation' });
9
+ const structural = validateStore('BattleMapConfig', config);
10
+ const errors = [...structural.errors];
11
+ const warnings = [...structural.warnings];
12
+ const initNodeId = toInt(config.mapInitNodeId);
13
+ if (initNodeId === undefined || initNodeId <= 0)
14
+ return result(structural, errors, warnings, undefined);
15
+ const map = await findMapByInitNode(options, initNodeId);
16
+ if (!map) {
17
+ errors.push(issue('MAP_NOT_FOUND', 'error', '$.mapInitNodeId', 'No GameData map has this initial node ID.', initNodeId, 'existing EntityMap.initNodeId'));
18
+ return result(structural, errors, warnings, undefined);
19
+ }
20
+ const nodes = collectionRecords(map.nodes);
21
+ const nodeById = new Map(nodes.map((node) => [toInt(node.id) ?? 0, node]));
22
+ const configuredPairs = Array.isArray(config.nodeConfigs) ? config.nodeConfigs.map(asRecord).filter(Boolean) : [];
23
+ const configured = new Map();
24
+ for (const pair of configuredPairs) {
25
+ const key = toInt(pair.key);
26
+ const nodeConfig = asRecord(pair.value);
27
+ if (key !== undefined && nodeConfig)
28
+ configured.set(key, nodeConfig);
29
+ }
30
+ for (const nodeId of configured.keys()) {
31
+ if (!nodeById.has(nodeId))
32
+ errors.push(issue('CONFIG_NODE_NOT_IN_MAP', 'error', '$.nodeConfigs', `Configured node ${nodeId} does not belong to the selected map.`, nodeId, [...nodeById.keys()]));
33
+ }
34
+ const reachable = findReachableNodes(initNodeId, nodeById);
35
+ for (const nodeId of reachable) {
36
+ if (nodeId === initNodeId)
37
+ continue;
38
+ const node = nodeById.get(nodeId);
39
+ const nodeConfig = configured.get(nodeId);
40
+ if (!nodeConfig) {
41
+ warnings.push(issue('REACHABLE_NODE_UNCONFIGURED', 'warning', '$.nodeConfigs', `If routing selects node ${node.flag ?? nodeId}, the backend returns to port because it has no behavior configuration. This may be intentional route rejection.`, nodeId, 'BattleMapNodeConfig or an intentionally rejected route'));
42
+ continue;
43
+ }
44
+ const endpoint = nodeConfig.isEndPoint === true;
45
+ const nodeType = String(node.nodeType ?? '');
46
+ const needsBattle = ['FIGTH', 'AIR_ATTACK', 'BOSS', 'LITTLE_BOSS', 'SPECIAL_BOSS'].includes(nodeType) || node.nightAtk === true;
47
+ if (!endpoint && needsBattle && !asRecord(nodeConfig.battleConfig)) {
48
+ errors.push(issue('BATTLE_BEHAVIOR_REQUIRED', 'error', `$.nodeConfigs[${nodeId}].battleConfig`, `Combat node ${node.flag ?? nodeId} requires battleConfig.`, nodeConfig.battleConfig, 'BattleMapNodeBattleConfig'));
49
+ }
50
+ if (asRecord(nodeConfig.nodeRoundConfig) && node.roundabout !== true) {
51
+ warnings.push(issue('ROUND_CONFIG_UNUSED', 'warning', `$.nodeConfigs[${nodeId}].nodeRoundConfig`, `Node ${node.flag ?? nodeId} is not a roundabout node; nodeRoundConfig is ignored.`, nodeConfig.nodeRoundConfig, null));
52
+ }
53
+ }
54
+ const teamHp = asRecord(config.teamHPCondition);
55
+ if (teamHp) {
56
+ for (let index = 1; index <= 6; index += 1) {
57
+ if (!asRecord(teamHp[`v${index}`]))
58
+ warnings.push(issue('TEAM_HP_SLOT_MISSING', 'warning', `$.teamHPCondition.v${index}`, `Fleet position ${index} has no pre-sortie HP/repair condition.`, teamHp[`v${index}`], '{min,max}'));
59
+ }
60
+ }
61
+ return result(structural, errors, warnings, {
62
+ id: map.id,
63
+ title: map.title,
64
+ mapName: map.mapName,
65
+ initNodeId: map.initNodeId,
66
+ nodeCount: nodes.length,
67
+ reachableNodeIds: [...reachable],
68
+ configuredNodeIds: [...configured.keys()],
69
+ });
70
+ }
71
+ export function readBattleMapFile(filePath) {
72
+ return readJsonObject(filePath);
73
+ }
74
+ async function findMapByInitNode(options, initNodeId) {
75
+ const query = `query BattleMapValidation($scope: String!, $initNodeId: Int!) {
76
+ maps(scope: $scope, first: 10, where: { initNodeId: { eq: $initNodeId } }) {
77
+ nodes {
78
+ id title mapName mapType initNodeId
79
+ nodes { id flag nodeType roundabout nightAtk nodeRouter { id } }
80
+ }
81
+ }
82
+ }`;
83
+ const data = await gameDataGql(options, query, { scope: options.scope, initNodeId });
84
+ const maps = collectionRecords(asRecord(data.maps)?.nodes);
85
+ if (maps.length > 1) {
86
+ throw new CliError('MAP_LOOKUP_AMBIGUOUS', `Multiple maps use initial node ${initNodeId}.`, {
87
+ category: 'validation',
88
+ details: { maps: maps.map((map) => ({ id: map.id, title: map.title })) },
89
+ });
90
+ }
91
+ return maps[0];
92
+ }
93
+ function findReachableNodes(initNodeId, nodes) {
94
+ const reached = new Set();
95
+ const pending = [initNodeId];
96
+ while (pending.length > 0) {
97
+ const id = pending.shift();
98
+ if (reached.has(id))
99
+ continue;
100
+ reached.add(id);
101
+ const node = nodes.get(id);
102
+ if (!node)
103
+ continue;
104
+ for (const route of collectionRecords(node.nodeRouter)) {
105
+ const target = toInt(route.id);
106
+ if (target !== undefined && !reached.has(target))
107
+ pending.push(target);
108
+ }
109
+ }
110
+ return reached;
111
+ }
112
+ function result(structural, errors, warnings, map) {
113
+ return {
114
+ valid: errors.length === 0,
115
+ errors,
116
+ warnings,
117
+ structural,
118
+ map: map ?? null,
119
+ semantics: {
120
+ mapIdentity: 'BattleMapConfig.mapInitNodeId stores EntityMap.initNodeId, not EntityMap.id.',
121
+ nodeConfigs: 'Keys are GameData node IDs. A reachable node without a config causes an immediate return to port.',
122
+ hpChecks: 'Top-level teamHPCondition is checked before sortie; node-level values override non-null positions.',
123
+ enemyChecks: 'nodeBackConfig, nodeRoundConfig, and battleFormationCheck conditions are evaluated against the encountered enemy fleet.',
124
+ },
125
+ };
126
+ }
127
+ function issue(code, severity, path, message, current, expected) {
128
+ return { code, severity, path, message, current, expected };
129
+ }
130
+ function collectionRecords(value) {
131
+ if (Array.isArray(value))
132
+ return value.map(asRecord).filter((entry) => Boolean(entry));
133
+ const record = asRecord(value);
134
+ return record ? Object.values(record).map(asRecord).filter((entry) => Boolean(entry)) : [];
135
+ }
136
+ function asRecord(value) {
137
+ return typeof value === 'object' && value !== null && !Array.isArray(value) ? value : undefined;
138
+ }
139
+ function toInt(value) {
140
+ if (typeof value === 'number' && Number.isInteger(value))
141
+ return value;
142
+ if (typeof value === 'string' && /^\d+$/.test(value))
143
+ return Number.parseInt(value, 10);
144
+ return undefined;
145
+ }
146
+ //# sourceMappingURL=battleMap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"battleMap.js","sourceRoot":"","sources":["../../src/commands/battleMap.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { type ConfigTypeName } from '../configTypes.js';
2
+ import type { GraphQlOptions } from '../graphqlClient.js';
3
+ export interface ConfigWriteOptions {
4
+ dryRun?: boolean;
5
+ replace?: boolean;
6
+ expectedCurrentHash?: string;
7
+ }
8
+ export declare function listTypes(): Promise<unknown>;
9
+ export declare function getConfig(gqlOpts: GraphQlOptions, typeName: ConfigTypeName): Promise<unknown>;
10
+ export declare function setConfig(gqlOpts: GraphQlOptions, typeName: ConfigTypeName, filePath: string, options?: ConfigWriteOptions): Promise<unknown>;
11
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEjF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAU1D,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,wBAAsB,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC,CAelD;AAED,wBAAsB,SAAS,CAC7B,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,cAAc,GACvB,OAAO,CAAC,OAAO,CAAC,CAQlB;AAED,wBAAsB,SAAS,CAC7B,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,cAAc,EACxB,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,OAAO,CAAC,CAuElB"}