@lgriffin/esi.ts 9.7.0 → 10.0.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 (216) hide show
  1. package/CHANGELOG.md +370 -0
  2. package/README.md +168 -231
  3. package/dist/EsiClient.d.ts +4 -0
  4. package/dist/EsiClient.d.ts.map +1 -1
  5. package/dist/EsiClientBuilder.d.ts.map +1 -1
  6. package/dist/auth/EsiTokenManager.d.ts +200 -0
  7. package/dist/auth/EsiTokenManager.d.ts.map +1 -0
  8. package/dist/auth/EveSsoClient.d.ts +88 -0
  9. package/dist/auth/EveSsoClient.d.ts.map +1 -0
  10. package/dist/auth/errors.d.ts +42 -0
  11. package/dist/auth/errors.d.ts.map +1 -0
  12. package/dist/auth/index.d.ts +14 -0
  13. package/dist/auth/index.d.ts.map +1 -0
  14. package/dist/auth/jwt.d.ts +43 -0
  15. package/dist/auth/jwt.d.ts.map +1 -0
  16. package/dist/auth/pkce.d.ts +21 -0
  17. package/dist/auth/pkce.d.ts.map +1 -0
  18. package/dist/auth/storage/FileTokenStorage.d.ts +44 -0
  19. package/dist/auth/storage/FileTokenStorage.d.ts.map +1 -0
  20. package/dist/auth/storage/MemoryTokenStorage.d.ts +18 -0
  21. package/dist/auth/storage/MemoryTokenStorage.d.ts.map +1 -0
  22. package/dist/auth/types.d.ts +42 -0
  23. package/dist/auth/types.d.ts.map +1 -0
  24. package/dist/chunk-3ZI5A37L.mjs +1065 -0
  25. package/dist/chunk-3ZI5A37L.mjs.map +1 -0
  26. package/dist/chunk-7A72QFDF.mjs +416 -0
  27. package/dist/chunk-7A72QFDF.mjs.map +1 -0
  28. package/dist/chunk-BBSHKVPI.js +71 -0
  29. package/dist/chunk-BBSHKVPI.js.map +1 -0
  30. package/dist/chunk-HPSACXX3.js +416 -0
  31. package/dist/chunk-HPSACXX3.js.map +1 -0
  32. package/dist/chunk-JIW4BXLP.mjs +17 -0
  33. package/dist/chunk-JIW4BXLP.mjs.map +1 -0
  34. package/dist/chunk-MSJHIJXA.js +1065 -0
  35. package/dist/chunk-MSJHIJXA.js.map +1 -0
  36. package/dist/chunk-PZ5AY32C.js +10 -0
  37. package/dist/chunk-PZ5AY32C.js.map +1 -0
  38. package/dist/chunk-R7D7M2LQ.mjs +71 -0
  39. package/dist/chunk-R7D7M2LQ.mjs.map +1 -0
  40. package/dist/chunk-SAQBXXTM.js +2614 -0
  41. package/dist/chunk-SAQBXXTM.js.map +1 -0
  42. package/dist/chunk-VZS32UQ3.mjs +2614 -0
  43. package/dist/chunk-VZS32UQ3.mjs.map +1 -0
  44. package/dist/clients/AllianceClient.d.ts.map +1 -1
  45. package/dist/clients/ContractsClient.d.ts +12 -9
  46. package/dist/clients/ContractsClient.d.ts.map +1 -1
  47. package/dist/clients/CorporationProjectsClient.d.ts +22 -12
  48. package/dist/clients/CorporationProjectsClient.d.ts.map +1 -1
  49. package/dist/clients/FactionClient.d.ts +4 -4
  50. package/dist/clients/FactionClient.d.ts.map +1 -1
  51. package/dist/clients/FreelanceJobsClient.d.ts +3 -3
  52. package/dist/clients/FreelanceJobsClient.d.ts.map +1 -1
  53. package/dist/clients/IndustryClient.d.ts +4 -4
  54. package/dist/clients/IndustryClient.d.ts.map +1 -1
  55. package/dist/clients/MailClient.d.ts +4 -4
  56. package/dist/clients/MailClient.d.ts.map +1 -1
  57. package/dist/clients/MetaClient.d.ts +3 -2
  58. package/dist/clients/MetaClient.d.ts.map +1 -1
  59. package/dist/clients/WalletClient.d.ts +4 -4
  60. package/dist/clients/WalletClient.d.ts.map +1 -1
  61. package/dist/core/ApiClient.d.ts +4 -0
  62. package/dist/core/ApiClient.d.ts.map +1 -1
  63. package/dist/core/ApiRequestHandler.d.ts.map +1 -1
  64. package/dist/core/BatchRequestHandler.d.ts.map +1 -1
  65. package/dist/core/RequestDeduplicator.d.ts +2 -0
  66. package/dist/core/RequestDeduplicator.d.ts.map +1 -1
  67. package/dist/core/RetryStrategy.d.ts +2 -0
  68. package/dist/core/RetryStrategy.d.ts.map +1 -1
  69. package/dist/core/cache/ETagCacheManager.d.ts +4 -0
  70. package/dist/core/cache/ETagCacheManager.d.ts.map +1 -1
  71. package/dist/core/circuitBreaker/CircuitBreaker.d.ts +3 -0
  72. package/dist/core/circuitBreaker/CircuitBreaker.d.ts.map +1 -1
  73. package/dist/core/configureApiClient.d.ts.map +1 -1
  74. package/dist/core/constants.d.ts +2 -2
  75. package/dist/core/constants.d.ts.map +1 -1
  76. package/dist/core/endpoints/calendarEndpoints.d.ts +7 -7
  77. package/dist/core/endpoints/characterEndpoints.d.ts +2 -2
  78. package/dist/core/endpoints/cloneEndpoints.d.ts +2 -2
  79. package/dist/core/endpoints/contractEndpoints.d.ts +15 -22
  80. package/dist/core/endpoints/contractEndpoints.d.ts.map +1 -1
  81. package/dist/core/endpoints/corporationEndpoints.d.ts +19 -22
  82. package/dist/core/endpoints/corporationEndpoints.d.ts.map +1 -1
  83. package/dist/core/endpoints/corporationProjectEndpoints.d.ts +75 -23
  84. package/dist/core/endpoints/corporationProjectEndpoints.d.ts.map +1 -1
  85. package/dist/core/endpoints/createClient.d.ts.map +1 -1
  86. package/dist/core/endpoints/dogmaEndpoints.d.ts +2 -2
  87. package/dist/core/endpoints/factionEndpoints.d.ts +36 -36
  88. package/dist/core/endpoints/factionEndpoints.d.ts.map +1 -1
  89. package/dist/core/endpoints/fleetEndpoints.d.ts +1 -1
  90. package/dist/core/endpoints/freelanceJobsEndpoints.d.ts +131 -122
  91. package/dist/core/endpoints/freelanceJobsEndpoints.d.ts.map +1 -1
  92. package/dist/core/endpoints/industryEndpoints.d.ts +6 -6
  93. package/dist/core/endpoints/industryEndpoints.d.ts.map +1 -1
  94. package/dist/core/endpoints/mailEndpoints.d.ts +3 -5
  95. package/dist/core/endpoints/mailEndpoints.d.ts.map +1 -1
  96. package/dist/core/endpoints/mercenaryEndpoints.d.ts +1 -1
  97. package/dist/core/endpoints/metaEndpoints.d.ts +5 -1
  98. package/dist/core/endpoints/metaEndpoints.d.ts.map +1 -1
  99. package/dist/core/endpoints/piEndpoints.d.ts +2 -2
  100. package/dist/core/endpoints/statusEndpoints.d.ts +1 -1
  101. package/dist/core/endpoints/universeEndpoints.d.ts +22 -22
  102. package/dist/core/endpoints/walletEndpoints.d.ts +2 -3
  103. package/dist/core/endpoints/walletEndpoints.d.ts.map +1 -1
  104. package/dist/core/logger/DefaultLogger.d.ts +31 -0
  105. package/dist/core/logger/DefaultLogger.d.ts.map +1 -0
  106. package/dist/core/logger/ILogger.d.ts +14 -4
  107. package/dist/core/logger/ILogger.d.ts.map +1 -1
  108. package/dist/core/logger/NoopLogger.d.ts +4 -0
  109. package/dist/core/logger/NoopLogger.d.ts.map +1 -1
  110. package/dist/core/logger/clientLog.d.ts +11 -0
  111. package/dist/core/logger/clientLog.d.ts.map +1 -0
  112. package/dist/core/logger/logger.d.ts +11 -3
  113. package/dist/core/logger/logger.d.ts.map +1 -1
  114. package/dist/core/logger/loggerUtil.d.ts +8 -6
  115. package/dist/core/logger/loggerUtil.d.ts.map +1 -1
  116. package/dist/core/logger/resolveLogger.d.ts +10 -0
  117. package/dist/core/logger/resolveLogger.d.ts.map +1 -0
  118. package/dist/core/pagination/AsyncPaginationIterator.d.ts.map +1 -1
  119. package/dist/core/pagination/CursorPaginationHandler.d.ts.map +1 -1
  120. package/dist/core/pagination/PaginationHandler.d.ts.map +1 -1
  121. package/dist/core/rateLimiter/RateLimiter.d.ts.map +1 -1
  122. package/dist/core/requestPipeline/cachePolicy.d.ts +14 -0
  123. package/dist/core/requestPipeline/cachePolicy.d.ts.map +1 -1
  124. package/dist/core/requestPipeline/fetchExecution.d.ts +1 -1
  125. package/dist/core/requestPipeline/fetchExecution.d.ts.map +1 -1
  126. package/dist/core/requestPipeline/headers.d.ts.map +1 -1
  127. package/dist/core/requestPipeline/index.d.ts +2 -2
  128. package/dist/core/requestPipeline/index.d.ts.map +1 -1
  129. package/dist/core/requestPipeline/paginationOrchestration.d.ts.map +1 -1
  130. package/dist/core/requestPipeline/statusHandling.d.ts +8 -2
  131. package/dist/core/requestPipeline/statusHandling.d.ts.map +1 -1
  132. package/dist/core/util/concurrency.d.ts +29 -0
  133. package/dist/core/util/concurrency.d.ts.map +1 -0
  134. package/dist/errors.d.ts +1 -0
  135. package/dist/errors.d.ts.map +1 -1
  136. package/dist/errors.js +53 -195
  137. package/dist/errors.js.map +1 -1
  138. package/dist/errors.mjs +37 -129
  139. package/dist/errors.mjs.map +1 -1
  140. package/dist/index.d.ts +6 -2
  141. package/dist/index.d.ts.map +1 -1
  142. package/dist/index.js +1972 -3472
  143. package/dist/index.js.map +1 -1
  144. package/dist/index.mjs +1606 -2995
  145. package/dist/index.mjs.map +1 -1
  146. package/dist/schemas/calendar.d.ts +9 -7
  147. package/dist/schemas/calendar.d.ts.map +1 -1
  148. package/dist/schemas/character.d.ts +2 -2
  149. package/dist/schemas/clones.d.ts +2 -2
  150. package/dist/schemas/contracts.d.ts +69 -6
  151. package/dist/schemas/contracts.d.ts.map +1 -1
  152. package/dist/schemas/corporation-projects.d.ts +96 -9
  153. package/dist/schemas/corporation-projects.d.ts.map +1 -1
  154. package/dist/schemas/corporation.d.ts +34 -22
  155. package/dist/schemas/corporation.d.ts.map +1 -1
  156. package/dist/schemas/dogma.d.ts +2 -2
  157. package/dist/schemas/faction-warfare.d.ts +125 -12
  158. package/dist/schemas/faction-warfare.d.ts.map +1 -1
  159. package/dist/schemas/fleet.d.ts +1 -1
  160. package/dist/schemas/freelance-jobs.d.ts +52 -22
  161. package/dist/schemas/freelance-jobs.d.ts.map +1 -1
  162. package/dist/schemas/index.js +420 -2479
  163. package/dist/schemas/index.js.map +1 -1
  164. package/dist/schemas/index.mjs +225 -2065
  165. package/dist/schemas/index.mjs.map +1 -1
  166. package/dist/schemas/industry.d.ts +33 -0
  167. package/dist/schemas/industry.d.ts.map +1 -1
  168. package/dist/schemas/mail.d.ts +24 -5
  169. package/dist/schemas/mail.d.ts.map +1 -1
  170. package/dist/schemas/mercenary.d.ts +1 -1
  171. package/dist/schemas/meta.d.ts +12 -1
  172. package/dist/schemas/meta.d.ts.map +1 -1
  173. package/dist/schemas/pi.d.ts +2 -2
  174. package/dist/schemas/status.d.ts +1 -1
  175. package/dist/schemas/universe.d.ts +22 -22
  176. package/dist/schemas/universe.d.ts.map +1 -1
  177. package/dist/schemas/wallet.d.ts +16 -0
  178. package/dist/schemas/wallet.d.ts.map +1 -1
  179. package/dist/sde/SdeDataProvider.d.ts.map +1 -1
  180. package/dist/sde/index.js +95 -1162
  181. package/dist/sde/index.js.map +1 -1
  182. package/dist/sde/index.mjs +73 -1091
  183. package/dist/sde/index.mjs.map +1 -1
  184. package/dist/sde/ingestion/SdeExtractor.d.ts.map +1 -1
  185. package/dist/sde/ingestion/metadata.d.ts +13 -0
  186. package/dist/sde/ingestion/metadata.d.ts.map +1 -0
  187. package/dist/sde/memory.js +21 -1095
  188. package/dist/sde/memory.js.map +1 -1
  189. package/dist/sde/memory.mjs +13 -1051
  190. package/dist/sde/memory.mjs.map +1 -1
  191. package/dist/sde/optionalPeers.d.ts +25 -0
  192. package/dist/sde/optionalPeers.d.ts.map +1 -0
  193. package/dist/testing/TestDataFactory.d.ts +28 -1
  194. package/dist/testing/TestDataFactory.d.ts.map +1 -1
  195. package/dist/testing/index.js +116 -125
  196. package/dist/testing/index.js.map +1 -1
  197. package/dist/testing/index.mjs +110 -82
  198. package/dist/testing/index.mjs.map +1 -1
  199. package/dist/types/contracts.d.ts +4 -1
  200. package/dist/types/contracts.d.ts.map +1 -1
  201. package/dist/types/corporation-projects.d.ts +5 -1
  202. package/dist/types/corporation-projects.d.ts.map +1 -1
  203. package/dist/types/faction-warfare.d.ts +9 -1
  204. package/dist/types/faction-warfare.d.ts.map +1 -1
  205. package/dist/types/freelance-jobs.d.ts +2 -1
  206. package/dist/types/freelance-jobs.d.ts.map +1 -1
  207. package/dist/types/generated/spec-alignment.check.d.ts +2 -2
  208. package/dist/types/industry.d.ts +2 -1
  209. package/dist/types/industry.d.ts.map +1 -1
  210. package/dist/types/mail.d.ts +2 -1
  211. package/dist/types/mail.d.ts.map +1 -1
  212. package/dist/types/meta.d.ts +2 -1
  213. package/dist/types/meta.d.ts.map +1 -1
  214. package/dist/types/wallet.d.ts +2 -1
  215. package/dist/types/wallet.d.ts.map +1 -1
  216. package/package.json +46 -23
@@ -1,76 +1,14 @@
1
- // src/core/logger/logger.ts
2
- import pino from "pino";
3
- var pinoLogger = pino({ level: process.env.ESI_LOG_LEVEL || "warn" });
4
-
5
- // src/core/util/error.ts
6
- var SENSITIVE_PARAMS = [
7
- "token",
8
- "access_token",
9
- "api_key",
10
- "refresh_token",
11
- "client_secret",
12
- "code",
13
- "key",
14
- "secret",
15
- "auth",
16
- "password",
17
- "bearer"
18
- ];
19
- function sanitizeUrl(url) {
20
- if (!url) return url;
21
- try {
22
- const parsed = new URL(url);
23
- for (const param of SENSITIVE_PARAMS) {
24
- if (parsed.searchParams.has(param)) {
25
- parsed.searchParams.set(param, "[REDACTED]");
26
- }
27
- }
28
- return parsed.toString();
29
- } catch {
30
- const qIndex = url.indexOf("?");
31
- return qIndex >= 0 ? url.substring(0, qIndex) + "?[params-redacted]" : url;
32
- }
33
- }
34
- var EsiError = class extends Error {
35
- constructor(statusCode, message, url, requestId) {
36
- super(message);
37
- this.statusCode = statusCode;
38
- this.requestId = requestId;
39
- this.name = "EsiError";
40
- this.url = sanitizeUrl(url);
41
- }
42
- statusCode;
43
- requestId;
44
- url;
45
- isRateLimited() {
46
- return this.statusCode === 420 || this.statusCode === 429;
47
- }
48
- isNotFound() {
49
- return this.statusCode === 404;
50
- }
51
- isUnauthorized() {
52
- return this.statusCode === 401;
53
- }
54
- isForbidden() {
55
- return this.statusCode === 403;
56
- }
57
- isServerError() {
58
- return this.statusCode >= 500;
59
- }
60
- isTimeout() {
61
- return this.statusCode === 0;
62
- }
63
- get retryable() {
64
- return this.statusCode === 0 || this.statusCode === 420 || this.statusCode === 429 || this.statusCode === 502 || this.statusCode === 503 || this.statusCode === 504;
65
- }
66
- };
1
+ import {
2
+ EsiError
3
+ } from "../chunk-7A72QFDF.mjs";
4
+ import "../chunk-JIW4BXLP.mjs";
67
5
 
68
6
  // src/testing/TestDataFactory.ts
69
7
  var TestDataFactory = class {
70
8
  // Alliance test data
9
+ /** `GET /alliances/{alliance_id}`: the alliance ID is in the path, not the body. */
71
10
  static createAllianceInfo(overrides = {}) {
72
11
  return {
73
- alliance_id: 99005338,
74
12
  name: "Goonswarm Federation",
75
13
  ticker: "CONDI",
76
14
  creator_id: 1689391488,
@@ -100,7 +38,6 @@ var TestDataFactory = class {
100
38
  // Character test data
101
39
  static createCharacterInfo(overrides = {}) {
102
40
  return {
103
- character_id: 1689391488,
104
41
  name: "Test Character",
105
42
  corporation_id: 1344654522,
106
43
  alliance_id: 99005338,
@@ -171,6 +108,11 @@ var TestDataFactory = class {
171
108
  date: "2023-01-01T00:00:00Z",
172
109
  issuer_id: 1689391489,
173
110
  reason: "Outstanding service",
111
+ status: "public",
112
+ graphics: [
113
+ { part: 1, layer: 0, graphic: "caldari.1_1", color: -1 },
114
+ { part: 2, layer: 1, graphic: "caldari.2_3" }
115
+ ],
174
116
  ...overrides
175
117
  };
176
118
  }
@@ -249,6 +191,11 @@ var TestDataFactory = class {
249
191
  system_id: 30000142,
250
192
  name: "Jita",
251
193
  constellation_id: 20000020,
194
+ position: {
195
+ x: -129064861735e6,
196
+ y: 6075530691e7,
197
+ z: 11746922706e7
198
+ },
252
199
  security_status: 0.9459991455078125,
253
200
  star_id: 40000001,
254
201
  stargates: [50000001, 50000002],
@@ -268,6 +215,7 @@ var TestDataFactory = class {
268
215
  type_id: 52678,
269
216
  race_id: 1,
270
217
  system_id: 30000142,
218
+ position: { x: 3813196800, y: 101675e4, z: -230557e4 },
271
219
  reprocessing_efficiency: 0.5,
272
220
  reprocessing_stations_take: 0.05,
273
221
  max_dockable_ship_volume: 5e7,
@@ -283,9 +231,9 @@ var TestDataFactory = class {
283
231
  ...overrides
284
232
  };
285
233
  }
234
+ /** `GET /universe/structures/{structure_id}`: the ID is in the path, not the body. */
286
235
  static createStructure(overrides = {}) {
287
236
  return {
288
- structure_id: 1021975535893,
289
237
  name: "Test Citadel",
290
238
  owner_id: 1689391488,
291
239
  solar_system_id: 30000142,
@@ -294,13 +242,13 @@ var TestDataFactory = class {
294
242
  ...overrides
295
243
  };
296
244
  }
245
+ /** `GET /universe/types/{type_id}`: the category is on the group, not the type. */
297
246
  static createItemType(overrides = {}) {
298
247
  return {
299
248
  type_id: 34,
300
249
  name: "Tritanium",
301
250
  description: "The most common ore type in the known universe.",
302
251
  group_id: 18,
303
- category_id: 4,
304
252
  market_group_id: 1857,
305
253
  mass: 1,
306
254
  volume: 0.01,
@@ -321,9 +269,9 @@ var TestDataFactory = class {
321
269
  ...overrides
322
270
  };
323
271
  }
272
+ /** `GET /universe/stars/{star_id}`: the star ID is in the path, not the body. */
324
273
  static createStar(overrides = {}) {
325
274
  return {
326
- star_id: 40000001,
327
275
  name: "Jita - Star",
328
276
  type_id: 3802,
329
277
  solar_system_id: 30000142,
@@ -345,14 +293,18 @@ var TestDataFactory = class {
345
293
  ...overrides
346
294
  };
347
295
  }
296
+ /**
297
+ * `GET /characters/{character_id}/search`: one list per requested category,
298
+ * keyed by the singular category name.
299
+ */
348
300
  static createSearchResults(overrides = {}) {
349
301
  return {
350
- systems: [],
351
- stations: [],
352
- structures: [],
353
- characters: [],
354
- corporations: [],
355
- alliances: [],
302
+ solar_system: [],
303
+ station: [],
304
+ structure: [],
305
+ character: [],
306
+ corporation: [],
307
+ alliance: [],
356
308
  ...overrides
357
309
  };
358
310
  }
@@ -384,12 +336,14 @@ var TestDataFactory = class {
384
336
  location_id: 60003760,
385
337
  location_flag: "CorpSAG1",
386
338
  location_type: "station",
339
+ is_singleton: false,
387
340
  ...overrides
388
341
  };
389
342
  }
390
343
  static createCorporationStructure(overrides = {}) {
391
344
  return {
392
345
  structure_id: 1021975535893,
346
+ corporation_id: 1344654522,
393
347
  type_id: 35832,
394
348
  system_id: 30000142,
395
349
  profile_id: 101853,
@@ -421,10 +375,9 @@ var TestDataFactory = class {
421
375
  };
422
376
  }
423
377
  // Fleet test data
378
+ /** `GET /fleets/{fleet_id}`: the fleet ID is in the path, not the body. */
424
379
  static createFleetInfo(overrides = {}) {
425
380
  return {
426
- fleet_id: 1234567890,
427
- fleet_boss_id: 1689391488,
428
381
  is_free_move: false,
429
382
  is_registered: true,
430
383
  is_voice_enabled: true,
@@ -432,21 +385,31 @@ var TestDataFactory = class {
432
385
  ...overrides
433
386
  };
434
387
  }
388
+ /**
389
+ * A fleet member as `GET /fleets/{fleet_id}/members` sends it. The default
390
+ * is the fleet commander, whom ESI places in no wing or squad (-1).
391
+ */
435
392
  static createFleetMember(overrides = {}) {
436
393
  return {
437
394
  character_id: 1689391488,
395
+ join_time: "2024-01-15T18:00:00Z",
438
396
  role: "fleet_commander",
397
+ role_name: "Fleet Commander (Boss)",
439
398
  ship_type_id: 17918,
440
399
  solar_system_id: 30000142,
400
+ squad_id: -1,
441
401
  station_id: 60003760,
402
+ takes_fleet_warp: true,
403
+ wing_id: -1,
442
404
  ...overrides
443
405
  };
444
406
  }
407
+ /** A wing as `GET /fleets/{fleet_id}/wings` sends it: keyed by `id`. */
445
408
  static createFleetWing(overrides = {}) {
446
409
  return {
447
- wing_id: 987654321,
410
+ id: 2073711261968,
448
411
  name: "Wing 1",
449
- squads: [{ squad_id: 123456789, name: "Squad 1" }],
412
+ squads: [{ id: 3129411261968, name: "Squad 1" }],
450
413
  ...overrides
451
414
  };
452
415
  }
@@ -456,12 +419,40 @@ var TestDataFactory = class {
456
419
  job_id: 1000001,
457
420
  installer_id: 1689391488,
458
421
  facility_id: 60003760,
422
+ station_id: 60003760,
423
+ activity_id: 1,
424
+ blueprint_id: 1000000001,
425
+ blueprint_type_id: 17918,
426
+ blueprint_location_id: 60003760,
427
+ output_location_id: 60003760,
428
+ product_type_id: 17918,
429
+ runs: 1,
430
+ status: "active",
431
+ duration: 86400,
432
+ start_date: "2024-01-15T12:00:00Z",
433
+ end_date: "2024-01-16T12:00:00Z",
434
+ ...overrides
435
+ };
436
+ }
437
+ /**
438
+ * A corporation industry job as `GET /corporations/{corporation_id}/industry/jobs`
439
+ * sends it: placed by `location_id`, where a character job has `station_id`.
440
+ */
441
+ static createCorporationIndustryJob(overrides = {}) {
442
+ return {
443
+ job_id: 2000001,
444
+ installer_id: 1689391488,
445
+ facility_id: 1021975535893,
446
+ location_id: 1021975535893,
459
447
  activity_id: 1,
460
448
  blueprint_id: 1000000001,
461
449
  blueprint_type_id: 17918,
450
+ blueprint_location_id: 1021975535893,
451
+ output_location_id: 1021975535893,
462
452
  product_type_id: 17918,
463
453
  runs: 1,
464
454
  status: "active",
455
+ duration: 86400,
465
456
  start_date: "2024-01-15T12:00:00Z",
466
457
  end_date: "2024-01-16T12:00:00Z",
467
458
  ...overrides
@@ -488,6 +479,7 @@ var TestDataFactory = class {
488
479
  location_id: 60003760,
489
480
  location_flag: "Hangar",
490
481
  location_type: "station",
482
+ is_singleton: false,
491
483
  ...overrides
492
484
  };
493
485
  }
@@ -521,9 +513,9 @@ var TestDataFactory = class {
521
513
  };
522
514
  }
523
515
  // Corporation test data
516
+ /** `GET /corporations/{corporation_id}`: the ID is in the path, not the body. */
524
517
  static createCorporationInfo(overrides = {}) {
525
518
  return {
526
- corporation_id: 1344654522,
527
519
  name: "GoonWaffe",
528
520
  ticker: "GEWNS",
529
521
  ceo_id: 1689391488,
@@ -578,6 +570,25 @@ var TestDataFactory = class {
578
570
  ...overrides
579
571
  };
580
572
  }
573
+ /**
574
+ * A corporation wallet transaction as
575
+ * `GET /corporations/{corporation_id}/wallets/{division}/transactions` sends
576
+ * it: no is_personal.
577
+ */
578
+ static createCorporationWalletTransaction(overrides = {}) {
579
+ return {
580
+ transaction_id: 123456790,
581
+ date: "2023-12-01T12:00:00Z",
582
+ type_id: 34,
583
+ location_id: 60003760,
584
+ unit_price: 5.5,
585
+ quantity: 1e3,
586
+ client_id: 1689391488,
587
+ is_buy: true,
588
+ journal_ref_id: 987654322,
589
+ ...overrides
590
+ };
591
+ }
581
592
  // Contract test data
582
593
  static createContract(overrides = {}) {
583
594
  return {
@@ -585,6 +596,7 @@ var TestDataFactory = class {
585
596
  issuer_id: 1689391488,
586
597
  issuer_corporation_id: 1344654522,
587
598
  assignee_id: 987654321,
599
+ acceptor_id: 0,
588
600
  start_location_id: 60003760,
589
601
  end_location_id: 60008494,
590
602
  type: "courier",
@@ -602,6 +614,22 @@ var TestDataFactory = class {
602
614
  ...overrides
603
615
  };
604
616
  }
617
+ static createPublicContract(overrides = {}) {
618
+ return {
619
+ contract_id: 123456790,
620
+ issuer_id: 1689391488,
621
+ issuer_corporation_id: 1344654522,
622
+ start_location_id: 60003760,
623
+ type: "item_exchange",
624
+ title: "Test Item Exchange Contract",
625
+ for_corporation: false,
626
+ date_issued: "2023-12-01T12:00:00Z",
627
+ date_expired: "2023-12-15T12:00:00Z",
628
+ price: 5e7,
629
+ volume: 10,
630
+ ...overrides
631
+ };
632
+ }
605
633
  // Sovereignty test data (Equinox)
606
634
  static createSovereigntySystem(overrides = {}) {
607
635
  return {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/core/logger/logger.ts","../../src/core/util/error.ts","../../src/testing/TestDataFactory.ts"],"sourcesContent":["import pino from 'pino';\nimport { ILogger } from './ILogger';\n\nconst pinoLogger = pino({ level: process.env.ESI_LOG_LEVEL || 'warn' });\n\nconst logger: ILogger = {\n info: (msg: string) => {\n pinoLogger.info(msg);\n },\n warn: (msg: string) => {\n pinoLogger.warn(msg);\n },\n error: (msg: string) => {\n pinoLogger.error(msg);\n },\n debug: (msg: string) => {\n pinoLogger.debug(msg);\n },\n};\n\nexport default logger;\n","const SENSITIVE_PARAMS = [\n 'token',\n 'access_token',\n 'api_key',\n 'refresh_token',\n 'client_secret',\n 'code',\n 'key',\n 'secret',\n 'auth',\n 'password',\n 'bearer',\n];\n\nexport function sanitizeUrl(url?: string): string | undefined {\n if (!url) return url;\n try {\n const parsed = new URL(url);\n for (const param of SENSITIVE_PARAMS) {\n if (parsed.searchParams.has(param)) {\n parsed.searchParams.set(param, '[REDACTED]');\n }\n }\n return parsed.toString();\n } catch {\n const qIndex = url.indexOf('?');\n return qIndex >= 0 ? url.substring(0, qIndex) + '?[params-redacted]' : url;\n }\n}\n\nexport class EsiError extends Error {\n public readonly url?: string;\n\n constructor(\n public readonly statusCode: number,\n message: string,\n url?: string,\n public readonly requestId?: string,\n ) {\n super(message);\n this.name = 'EsiError';\n this.url = sanitizeUrl(url);\n }\n\n isRateLimited(): boolean {\n return this.statusCode === 420 || this.statusCode === 429;\n }\n\n isNotFound(): boolean {\n return this.statusCode === 404;\n }\n\n isUnauthorized(): boolean {\n return this.statusCode === 401;\n }\n\n isForbidden(): boolean {\n return this.statusCode === 403;\n }\n\n isServerError(): boolean {\n return this.statusCode >= 500;\n }\n\n isTimeout(): boolean {\n return this.statusCode === 0;\n }\n\n get retryable(): boolean {\n return (\n this.statusCode === 0 ||\n this.statusCode === 420 ||\n this.statusCode === 429 ||\n this.statusCode === 502 ||\n this.statusCode === 503 ||\n this.statusCode === 504\n );\n }\n}\n\nexport function isEsiError(error: unknown): error is EsiError {\n return error instanceof EsiError;\n}\n\nexport function isRateLimited(error: unknown): error is EsiError {\n return error instanceof EsiError && error.isRateLimited();\n}\n\nexport function isNotFound(error: unknown): error is EsiError {\n return error instanceof EsiError && error.isNotFound();\n}\n\nexport function isUnauthorized(error: unknown): error is EsiError {\n return error instanceof EsiError && error.isUnauthorized();\n}\n\nexport function isForbidden(error: unknown): error is EsiError {\n return error instanceof EsiError && error.isForbidden();\n}\n\nexport function isServerError(error: unknown): error is EsiError {\n return error instanceof EsiError && error.isServerError();\n}\n\nexport class TimeoutError extends EsiError {\n constructor(\n public readonly timeoutMs: number,\n url?: string,\n requestId?: string,\n ) {\n super(0, `Request timed out after ${timeoutMs}ms`, url, requestId);\n this.name = 'TimeoutError';\n }\n}\n\nexport function isTimeout(error: unknown): error is TimeoutError {\n return error instanceof TimeoutError;\n}\n\nexport function isRetryable(error: unknown): error is EsiError {\n return error instanceof EsiError && error.retryable;\n}\n\n// Re-export CircuitOpenError for the type guard — avoid forcing consumers\n// to import from the circuitBreaker subpath just for error checking.\nimport { CircuitOpenError } from '../circuitBreaker/CircuitBreaker';\n\nexport function isCircuitOpen(error: unknown): error is CircuitOpenError {\n return error instanceof CircuitOpenError;\n}\n\nexport const buildError = (\n message: string,\n type: string = 'ERROR',\n url?: string,\n): Error => {\n const error = new Error(`[${type}] ${message}`);\n if (url) {\n (error as Error & { url: string }).url = url;\n }\n return error;\n};\n\nexport type ValidationDirection = 'request' | 'response';\n\nexport class EsiValidationError extends EsiError {\n public readonly validationError: unknown;\n public readonly direction: ValidationDirection;\n\n constructor(\n url: string,\n zodError: unknown,\n requestId?: string,\n direction: ValidationDirection = 'response',\n ) {\n const safeUrl = sanitizeUrl(url) ?? url;\n const label = direction === 'request' ? 'Request body' : 'Response';\n super(0, `${label} validation failed for ${safeUrl}`, url, requestId);\n this.name = 'EsiValidationError';\n this.validationError = zodError;\n this.direction = direction;\n }\n}\n\nexport function isValidationError(error: unknown): error is EsiValidationError {\n return error instanceof EsiValidationError;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {\n AllianceInfo,\n CharacterInfo,\n CorporationInfo,\n AllianceContact,\n AllianceContactLabel,\n CharacterPortrait,\n CharacterAttributes,\n CharacterSkill,\n MarketOrder,\n WalletTransaction,\n Contract,\n SovereigntySystem,\n SovereigntyHub,\n OrbitalSkyhook,\n RaidableSkyhook,\n MercenaryDen,\n MercenaryTacticalOperation,\n AccessListEntry,\n} from '../types/api-responses';\nimport { EsiError } from '../core/util/error';\n\nexport class TestDataFactory {\n // Alliance test data\n static createAllianceInfo(\n overrides: Partial<AllianceInfo> = {},\n ): AllianceInfo {\n return {\n alliance_id: 99005338,\n name: 'Goonswarm Federation',\n ticker: 'CONDI',\n creator_id: 1689391488,\n creator_corporation_id: 1344654522,\n executor_corporation_id: 1344654522,\n date_founded: '2010-06-01T00:00:00Z',\n faction_id: 500001,\n ...overrides,\n };\n }\n\n static createAllianceContact(\n overrides: Partial<AllianceContact> = {},\n ): AllianceContact {\n return {\n contact_id: 1689391488,\n contact_type: 'character',\n standing: 10.0,\n label_ids: [1, 2],\n ...overrides,\n };\n }\n\n static createAllianceContactLabel(\n overrides: Partial<AllianceContactLabel> = {},\n ): AllianceContactLabel {\n return {\n label_id: 1,\n label_name: 'Friendly',\n ...overrides,\n };\n }\n\n // Character test data\n static createCharacterInfo(\n overrides: Partial<CharacterInfo> = {},\n ): CharacterInfo {\n return {\n character_id: 1689391488,\n name: 'Test Character',\n corporation_id: 1344654522,\n alliance_id: 99005338,\n bloodline_id: 4,\n race_id: 1,\n gender: 'male',\n birthday: '2003-05-06T00:00:00Z',\n description: 'A test character for BDD scenarios',\n security_status: 5.0,\n title: 'Test Pilot',\n ...overrides,\n };\n }\n\n static createCharacterPortrait(\n characterId: number = 1689391488,\n ): CharacterPortrait {\n return {\n px64x64: `https://images.evetech.net/characters/${characterId}/portrait?size=64`,\n px128x128: `https://images.evetech.net/characters/${characterId}/portrait?size=128`,\n px256x256: `https://images.evetech.net/characters/${characterId}/portrait?size=256`,\n px512x512: `https://images.evetech.net/characters/${characterId}/portrait?size=512`,\n };\n }\n\n static createCharacterAttributes(\n overrides: Partial<CharacterAttributes> = {},\n ): CharacterAttributes {\n return {\n charisma: 20,\n intelligence: 24,\n memory: 21,\n perception: 23,\n willpower: 22,\n bonus_remaps: 2,\n last_remap_date: '2023-01-01T00:00:00Z',\n accrued_remap_cooldown_date: '2024-01-01T00:00:00Z',\n ...overrides,\n };\n }\n\n static createCharacterSkill(\n overrides: Partial<CharacterSkill> = {},\n ): CharacterSkill {\n return {\n skill_id: 3300,\n skillpoints_in_skill: 256000,\n trained_skill_level: 5,\n active_skill_level: 5,\n ...overrides,\n };\n }\n\n static createCharacterRoles(overrides: Record<string, any> = {}): any {\n return {\n roles: ['Director'],\n roles_at_base: [],\n roles_at_hq: ['Director'],\n roles_at_other: [],\n ...overrides,\n };\n }\n\n static createCorporationHistoryEntry(\n overrides: Record<string, any> = {},\n ): any {\n return {\n corporation_id: 1344654522,\n is_deleted: false,\n record_id: 1,\n start_date: '2020-01-01T00:00:00Z',\n ...overrides,\n };\n }\n\n static createCharacterMedal(overrides: Record<string, any> = {}): any {\n return {\n medal_id: 1,\n title: 'Test Medal',\n description: 'A test medal for demonstration',\n corporation_id: 1344654522,\n date: '2023-01-01T00:00:00Z',\n issuer_id: 1689391489,\n reason: 'Outstanding service',\n ...overrides,\n };\n }\n\n static createCharacterNotification(overrides: Record<string, any> = {}): any {\n return {\n notification_id: 1000001,\n sender_id: 1689391489,\n sender_type: 'character',\n text: 'Test notification',\n timestamp: '2024-01-15T12:00:00Z',\n type: 'AllWarDeclaredMsg',\n is_read: false,\n ...overrides,\n };\n }\n\n // Market test data\n static createMarketPrice(overrides: Record<string, any> = {}): any {\n return {\n type_id: 34,\n average_price: 4.5,\n adjusted_price: 4.55,\n ...overrides,\n };\n }\n\n static createMarketHistory(overrides: Record<string, any> = {}): any {\n return {\n date: '2024-01-15',\n volume: 1000000000,\n order_count: 2500,\n lowest: 4.2,\n highest: 4.8,\n average: 4.5,\n ...overrides,\n };\n }\n\n static createCharacterMarketOrder(overrides: Record<string, any> = {}): any {\n return {\n order_id: 5000000001,\n type_id: 34,\n region_id: 10000002,\n location_id: 60003760,\n range: 'region',\n volume_total: 1000000,\n volume_remain: 750000,\n min_volume: 1,\n price: 4.5,\n is_buy_order: true,\n is_corporation: false,\n duration: 90,\n issued: '2024-01-15T12:00:00Z',\n ...overrides,\n };\n }\n\n static createCharacterOrderHistory(overrides: Record<string, any> = {}): any {\n return {\n order_id: 5000000001,\n type_id: 34,\n region_id: 10000002,\n location_id: 60003760,\n range: 'region',\n volume_total: 1000000,\n volume_remain: 0,\n min_volume: 1,\n price: 4.5,\n is_buy_order: true,\n is_corporation: false,\n duration: 90,\n issued: '2024-01-10T12:00:00Z',\n state: 'expired',\n ...overrides,\n };\n }\n\n // Universe test data\n static createSolarSystem(overrides: Record<string, any> = {}): any {\n return {\n system_id: 30000142,\n name: 'Jita',\n constellation_id: 20000020,\n security_status: 0.9459991455078125,\n star_id: 40000001,\n stargates: [50000001, 50000002],\n stations: [60003760, 60003761],\n planets: [\n { planet_id: 40000001, moons: [40000002, 40000003] },\n { planet_id: 40000004, moons: [40000005] },\n ],\n ...overrides,\n };\n }\n\n static createStation(overrides: Record<string, any> = {}): any {\n return {\n station_id: 60003760,\n name: 'Jita IV - Moon 4 - Caldari Navy Assembly Plant',\n owner: 1000035,\n type_id: 52678,\n race_id: 1,\n system_id: 30000142,\n reprocessing_efficiency: 0.5,\n reprocessing_stations_take: 0.05,\n max_dockable_ship_volume: 50000000,\n office_rental_cost: 10000000,\n services: [\n 'bounty-missions',\n 'courier-missions',\n 'interbus',\n 'reprocessing-plant',\n 'market',\n 'stock-exchange',\n ],\n ...overrides,\n };\n }\n\n static createStructure(overrides: Record<string, any> = {}): any {\n return {\n structure_id: 1021975535893,\n name: 'Test Citadel',\n owner_id: 1689391488,\n solar_system_id: 30000142,\n type_id: 35832,\n position: { x: 1000000000, y: 2000000000, z: 3000000000 },\n ...overrides,\n };\n }\n\n static createItemType(overrides: Record<string, any> = {}): any {\n return {\n type_id: 34,\n name: 'Tritanium',\n description: 'The most common ore type in the known universe.',\n group_id: 18,\n category_id: 4,\n market_group_id: 1857,\n mass: 1.0,\n volume: 0.01,\n capacity: 0.0,\n portion_size: 1,\n radius: 1.0,\n published: true,\n ...overrides,\n };\n }\n\n static createItemGroup(overrides: Record<string, any> = {}): any {\n return {\n group_id: 18,\n name: 'Mineral',\n category_id: 4,\n published: true,\n types: [34, 35, 36, 37, 38, 39, 40, 11399],\n ...overrides,\n };\n }\n\n static createStar(overrides: Record<string, any> = {}): any {\n return {\n star_id: 40000001,\n name: 'Jita - Star',\n type_id: 3802,\n solar_system_id: 30000142,\n age: 4600000000,\n luminosity: 0.06575,\n radius: 62140000,\n spectral_class: 'K2 V',\n temperature: 4567,\n ...overrides,\n };\n }\n\n static createPlanet(overrides: Record<string, any> = {}): any {\n return {\n planet_id: 40000004,\n name: 'Jita IV',\n type_id: 11,\n system_id: 30000142,\n position: { x: 150000000000, y: 0, z: 0 },\n ...overrides,\n };\n }\n\n static createSearchResults(overrides: Record<string, any> = {}): any {\n return {\n systems: [],\n stations: [],\n structures: [],\n characters: [],\n corporations: [],\n alliances: [],\n ...overrides,\n };\n }\n\n static createEntityName(overrides: Record<string, any> = {}): any {\n return {\n id: 30000142,\n name: 'Jita',\n category: 'solar_system',\n ...overrides,\n };\n }\n\n // Corporation test data\n static createCorporationMemberRoles(\n overrides: Record<string, any> = {},\n ): any {\n return {\n character_id: 1689391488,\n roles: ['Director', 'Personnel_Manager'],\n grantable_roles: ['Hangar_Take_1', 'Hangar_Take_2'],\n roles_at_hq: ['Director'],\n roles_at_base: [],\n roles_at_other: [],\n ...overrides,\n };\n }\n\n static createCorporationAsset(overrides: Record<string, any> = {}): any {\n return {\n item_id: 1000000000001,\n type_id: 587,\n quantity: 100,\n location_id: 60003760,\n location_flag: 'CorpSAG1',\n location_type: 'station',\n ...overrides,\n };\n }\n\n static createCorporationStructure(overrides: Record<string, any> = {}): any {\n return {\n structure_id: 1021975535893,\n type_id: 35832,\n system_id: 30000142,\n profile_id: 101853,\n fuel_expires: '2024-02-01T12:00:00Z',\n state_timer_start: '2024-01-15T12:00:00Z',\n state_timer_end: '2024-01-22T12:00:00Z',\n state: 'shield_vulnerable',\n ...overrides,\n };\n }\n\n static createCorporationWallet(overrides: Record<string, any> = {}): any {\n return {\n division: 1,\n balance: 1000000000.0,\n ...overrides,\n };\n }\n\n static createWalletJournalEntry(overrides: Record<string, any> = {}): any {\n return {\n id: 1000000001,\n date: '2024-01-15T12:00:00Z',\n ref_type: 'market_transaction',\n first_party_id: 1344654522,\n amount: 1000000.0,\n balance: 1000000000.0,\n reason: 'Market transaction',\n description: 'Sold items on market',\n ...overrides,\n };\n }\n\n // Fleet test data\n static createFleetInfo(overrides: Record<string, any> = {}): any {\n return {\n fleet_id: 1234567890,\n fleet_boss_id: 1689391488,\n is_free_move: false,\n is_registered: true,\n is_voice_enabled: true,\n motd: 'Fleet operations in progress',\n ...overrides,\n };\n }\n\n static createFleetMember(overrides: Record<string, any> = {}): any {\n return {\n character_id: 1689391488,\n role: 'fleet_commander',\n ship_type_id: 17918,\n solar_system_id: 30000142,\n station_id: 60003760,\n ...overrides,\n };\n }\n\n static createFleetWing(overrides: Record<string, any> = {}): any {\n return {\n wing_id: 987654321,\n name: 'Wing 1',\n squads: [{ squad_id: 123456789, name: 'Squad 1' }],\n ...overrides,\n };\n }\n\n // Industry test data\n static createIndustryJob(overrides: Record<string, any> = {}): any {\n return {\n job_id: 1000001,\n installer_id: 1689391488,\n facility_id: 60003760,\n activity_id: 1,\n blueprint_id: 1000000001,\n blueprint_type_id: 17918,\n product_type_id: 17918,\n runs: 1,\n status: 'active',\n start_date: '2024-01-15T12:00:00Z',\n end_date: '2024-01-16T12:00:00Z',\n ...overrides,\n };\n }\n\n static createBlueprint(overrides: Record<string, any> = {}): any {\n return {\n item_id: 1000000001,\n type_id: 17918,\n location_id: 60003760,\n location_flag: 'Hangar',\n quantity: -2,\n time_efficiency: 10,\n material_efficiency: 10,\n runs: 100,\n ...overrides,\n };\n }\n\n static createCharacterAsset(overrides: Record<string, any> = {}): any {\n return {\n item_id: 1000000002,\n type_id: 34,\n quantity: 1000000,\n location_id: 60003760,\n location_flag: 'Hangar',\n location_type: 'station',\n ...overrides,\n };\n }\n\n static createCharacterLocation(overrides: Record<string, any> = {}): any {\n return {\n solar_system_id: 30000142,\n station_id: 60003760,\n structure_id: undefined,\n ...overrides,\n };\n }\n\n static createCharacterSkills(overrides: Record<string, any> = {}): any {\n return {\n skills: [\n {\n skill_id: 3300,\n skillpoints_in_skill: 256000,\n trained_skill_level: 5,\n active_skill_level: 5,\n },\n {\n skill_id: 3301,\n skillpoints_in_skill: 128000,\n trained_skill_level: 4,\n active_skill_level: 4,\n },\n ],\n total_sp: 384000,\n unallocated_sp: 0,\n ...overrides,\n };\n }\n\n // Corporation test data\n static createCorporationInfo(\n overrides: Partial<CorporationInfo> = {},\n ): CorporationInfo {\n return {\n corporation_id: 1344654522,\n name: 'GoonWaffe',\n ticker: 'GEWNS',\n ceo_id: 1689391488,\n creator_id: 1689391488,\n member_count: 15000,\n tax_rate: 0.1,\n alliance_id: 99005338,\n date_founded: '2003-05-06T00:00:00Z',\n description: 'The founding corporation of Goonswarm Federation',\n home_station_id: 60003760,\n shares: 1000,\n // eslint-disable-next-line sonarjs/no-clear-text-protocols\n url: 'http://www.goonfleet.com/',\n faction_id: 500001,\n war_eligible: true,\n ...overrides,\n };\n }\n\n // Market test data\n static createMarketOrder(overrides: Partial<MarketOrder> = {}): MarketOrder {\n return {\n order_id: 123456789,\n type_id: 34, // Tritanium\n location_id: 60003760, // Jita 4-4\n volume_total: 1000000,\n volume_remain: 500000,\n min_volume: 1,\n price: 5.5,\n is_buy_order: false,\n system_id: 30000142,\n duration: 90,\n issued: '2023-12-01T12:00:00Z',\n range: 'region',\n ...overrides,\n };\n }\n\n // Wallet test data\n static createWalletTransaction(\n overrides: Partial<WalletTransaction> = {},\n ): WalletTransaction {\n return {\n transaction_id: 123456789,\n date: '2023-12-01T12:00:00Z',\n type_id: 34,\n location_id: 60003760,\n unit_price: 5.5,\n quantity: 1000,\n client_id: 1689391488,\n is_buy: false,\n is_personal: true,\n journal_ref_id: 987654321,\n ...overrides,\n };\n }\n\n // Contract test data\n static createContract(overrides: Partial<Contract> = {}): Contract {\n return {\n contract_id: 123456789,\n issuer_id: 1689391488,\n issuer_corporation_id: 1344654522,\n assignee_id: 987654321,\n start_location_id: 60003760,\n end_location_id: 60008494,\n type: 'courier',\n status: 'outstanding',\n title: 'Test Courier Contract',\n for_corporation: false,\n availability: 'public',\n date_issued: '2023-12-01T12:00:00Z',\n date_expired: '2023-12-08T12:00:00Z',\n days_to_complete: 3,\n price: 1000000,\n reward: 500000,\n collateral: 10000000,\n volume: 1000,\n ...overrides,\n };\n }\n\n // Sovereignty test data (Equinox)\n static createSovereigntySystem(\n overrides: Partial<SovereigntySystem> = {},\n ): SovereigntySystem {\n return {\n solar_systems: [\n {\n solar_system_id: 30000142,\n claim: {\n alliance: {\n alliance_id: 99005338,\n corporation_id: 1344654522,\n claimed_since: '2020-10-08T00:38:16Z',\n is_capital_system: false,\n development: {\n activity_defense_multiplier: 4.5,\n military_level: 5,\n industrial_level: 3,\n strategic_level: 1,\n },\n },\n },\n },\n ],\n ...overrides,\n };\n }\n\n static createSovereigntyHub(\n overrides: Partial<SovereigntyHub> = {},\n ): SovereigntyHub {\n return {\n structure_id: 100000001,\n system_id: 30000142,\n corporation_id: 98000002,\n alliance_id: 99000006,\n online: true,\n remaining_reagents: 500,\n installed_upgrades: [1, 2, 3],\n ...overrides,\n };\n }\n\n static createOrbitalSkyhook(\n overrides: Partial<OrbitalSkyhook> = {},\n ): OrbitalSkyhook {\n return {\n structure_id: 200000001,\n system_id: 30000142,\n corporation_id: 98000002,\n alliance_id: 99000006,\n online: true,\n reagent_silo_capacity: 1000,\n reagent_silo_level: 750,\n ...overrides,\n };\n }\n\n static createRaidableSkyhook(\n overrides: Partial<RaidableSkyhook> = {},\n ): RaidableSkyhook {\n return {\n structure_id: 200000001,\n system_id: 30000142,\n corporation_id: 98000002,\n alliance_id: 99000006,\n raidable_at: '2026-05-20T12:00:00Z',\n is_raidable: true,\n ...overrides,\n };\n }\n\n static createMercenaryDen(\n overrides: Partial<MercenaryDen> = {},\n ): MercenaryDen {\n return {\n den_id: 5001,\n system_id: 30000142,\n constellation_id: 20000125,\n region_id: 10000002,\n development_level: 3,\n anarchy_level: 2,\n active_operations: 1,\n ...overrides,\n };\n }\n\n static createMercenaryTacticalOperation(\n overrides: Partial<MercenaryTacticalOperation> = {},\n ): MercenaryTacticalOperation {\n return {\n operation_id: 7001,\n den_id: 5001,\n system_id: 30000142,\n site_type: 'assault',\n status: 'active',\n started_at: '2026-05-20T10:00:00Z',\n expires_at: '2026-05-20T22:00:00Z',\n ...overrides,\n };\n }\n\n static createAccessListEntry(\n overrides: Partial<AccessListEntry> = {},\n ): AccessListEntry {\n return {\n entity_id: 1689391488,\n entity_type: 'character',\n access_type: 'allowed',\n ...overrides,\n };\n }\n\n // Error test data\n static createError(statusCode: number, message?: string): EsiError {\n const defaultMessages: Record<number, string> = {\n 400: 'Bad request',\n 401: 'Unauthorized',\n 403: 'Forbidden',\n 404: 'Resource not found',\n 429: 'Rate limit exceeded',\n 500: 'Internal server error',\n 503: 'Service unavailable',\n };\n return new EsiError(\n statusCode,\n // eslint-disable-next-line security/detect-object-injection\n message || defaultMessages[statusCode] || 'Unknown error',\n );\n }\n\n // Test scenarios\n static createTestScenarios() {\n return {\n alliances: [\n { id: 99005338, name: 'Goonswarm Federation', ticker: 'CONDI' },\n { id: 99000001, name: 'Test Alliance Please Ignore', ticker: 'TEST' },\n { id: 99000002, name: 'Brave Collective', ticker: 'BRAVE' },\n { id: 99000003, name: 'Pandemic Legion', ticker: 'PL' },\n { id: 99000004, name: 'Northern Coalition.', ticker: 'NC.' },\n ],\n characters: [\n {\n id: 1689391488,\n name: 'Test Character',\n corp: 1344654522,\n alliance: 99005338,\n },\n {\n id: 123456789,\n name: 'Demo Pilot',\n corp: 987654321,\n alliance: 99000001,\n },\n {\n id: 111111111,\n name: 'Alpha Tester',\n corp: 222222222,\n alliance: 99000002,\n },\n {\n id: 333333333,\n name: 'Beta User',\n corp: 444444444,\n alliance: 99000003,\n },\n {\n id: 555555555,\n name: 'Gamma Pilot',\n corp: 666666666,\n alliance: 99000004,\n },\n ],\n corporations: [\n {\n id: 1344654522,\n name: 'GoonWaffe',\n ticker: 'GEWNS',\n alliance: 99005338,\n },\n {\n id: 987654321,\n name: 'Test Corp Please Ignore',\n ticker: 'TCPI',\n alliance: 99000001,\n },\n {\n id: 222222222,\n name: 'Brave Newbies Inc.',\n ticker: 'BNI',\n alliance: 99000002,\n },\n {\n id: 444444444,\n name: 'Sniggerdly',\n ticker: 'SNIGG',\n alliance: 99000003,\n },\n {\n id: 666666666,\n name: 'Tactical Narcotics Team',\n ticker: 'TNT',\n alliance: 99000004,\n },\n ],\n errorScenarios: [\n { statusCode: 0, label: 'network_error', probability: 0.1 },\n { statusCode: 429, label: 'rate_limited', probability: 0.05 },\n { statusCode: 500, label: 'server_error', probability: 0.02 },\n { statusCode: 504, label: 'timeout', probability: 0.03 },\n { statusCode: 404, label: 'not_found', probability: 0.01 },\n ],\n };\n }\n\n // Performance test data\n static createPerformanceTestData(\n size: 'small' | 'medium' | 'large' = 'medium',\n ) {\n const sizes = {\n small: { alliances: 5, characters: 20, corporations: 10 },\n medium: { alliances: 20, characters: 100, corporations: 50 },\n large: { alliances: 100, characters: 1000, corporations: 500 },\n };\n\n // eslint-disable-next-line security/detect-object-injection\n const config = sizes[size];\n const data = {\n alliances: [] as AllianceInfo[],\n characters: [] as CharacterInfo[],\n corporations: [] as CorporationInfo[],\n };\n\n // Generate alliances\n for (let i = 1; i <= config.alliances; i++) {\n data.alliances.push(\n this.createAllianceInfo({\n alliance_id: 99000000 + i,\n name: `Test Alliance ${i}`,\n ticker: `TST${i.toString().padStart(2, '0')}`,\n creator_id: 1000000 + i,\n }),\n );\n }\n\n // Generate corporations\n for (let i = 1; i <= config.corporations; i++) {\n const allianceIndex = Math.floor(\n (i - 1) / (config.corporations / config.alliances),\n );\n data.corporations.push(\n this.createCorporationInfo({\n corporation_id: 2000000 + i,\n name: `Test Corporation ${i}`,\n ticker: `TC${i.toString().padStart(3, '0')}`,\n // eslint-disable-next-line security/detect-object-injection\n alliance_id: data.alliances[allianceIndex]?.alliance_id,\n ceo_id: 3000000 + i,\n }),\n );\n }\n\n // Generate characters\n for (let i = 1; i <= config.characters; i++) {\n const corpIndex = Math.floor(\n (i - 1) / (config.characters / config.corporations),\n );\n // eslint-disable-next-line security/detect-object-injection\n const corp = data.corporations[corpIndex];\n data.characters.push(\n this.createCharacterInfo({\n character_id: 3000000 + i,\n name: `Test Character ${i}`,\n corporation_id: corp?.corporation_id || 2000001,\n alliance_id: corp?.alliance_id,\n }),\n );\n }\n\n return data;\n }\n\n // Realistic test data with relationships\n static createRealisticTestData() {\n const goonswarm = this.createAllianceInfo({\n alliance_id: 99005338,\n name: 'Goonswarm Federation',\n ticker: 'CONDI',\n creator_id: 1689391488,\n creator_corporation_id: 1344654522,\n executor_corporation_id: 1344654522,\n date_founded: '2010-06-01T00:00:00Z',\n });\n\n const goonwaffe = this.createCorporationInfo({\n corporation_id: 1344654522,\n name: 'GoonWaffe',\n ticker: 'GEWNS',\n alliance_id: 99005338,\n ceo_id: 1689391488,\n creator_id: 1689391488,\n member_count: 15000,\n date_founded: '2003-05-06T00:00:00Z',\n });\n\n const testCharacter = this.createCharacterInfo({\n character_id: 1689391488,\n name: 'The Mittani',\n corporation_id: 1344654522,\n alliance_id: 99005338,\n birthday: '2003-05-06T00:00:00Z',\n });\n\n return {\n alliances: [goonswarm],\n corporations: [goonwaffe],\n characters: [testCharacter],\n relationships: {\n allianceExecutor: { alliance: 99005338, corporation: 1344654522 },\n corporationCEO: { corporation: 1344654522, character: 1689391488 },\n characterMembership: {\n character: 1689391488,\n corporation: 1344654522,\n alliance: 99005338,\n },\n },\n };\n }\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../src/testing/TestDataFactory.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {\n AllianceInfo,\n CharacterInfo,\n CorporationInfo,\n AllianceContact,\n AllianceContactLabel,\n CharacterPortrait,\n CharacterAttributes,\n CharacterSkill,\n MarketOrder,\n WalletTransaction,\n CorporationWalletTransaction,\n Contract,\n PublicContract,\n SovereigntySystem,\n SovereigntyHub,\n OrbitalSkyhook,\n RaidableSkyhook,\n MercenaryDen,\n MercenaryTacticalOperation,\n AccessListEntry,\n} from '../types/api-responses';\nimport { EsiError } from '../core/util/error';\n\nexport class TestDataFactory {\n // Alliance test data\n\n /** `GET /alliances/{alliance_id}`: the alliance ID is in the path, not the body. */\n static createAllianceInfo(\n overrides: Partial<AllianceInfo> = {},\n ): AllianceInfo {\n return {\n name: 'Goonswarm Federation',\n ticker: 'CONDI',\n creator_id: 1689391488,\n creator_corporation_id: 1344654522,\n executor_corporation_id: 1344654522,\n date_founded: '2010-06-01T00:00:00Z',\n faction_id: 500001,\n ...overrides,\n };\n }\n\n static createAllianceContact(\n overrides: Partial<AllianceContact> = {},\n ): AllianceContact {\n return {\n contact_id: 1689391488,\n contact_type: 'character',\n standing: 10.0,\n label_ids: [1, 2],\n ...overrides,\n };\n }\n\n static createAllianceContactLabel(\n overrides: Partial<AllianceContactLabel> = {},\n ): AllianceContactLabel {\n return {\n label_id: 1,\n label_name: 'Friendly',\n ...overrides,\n };\n }\n\n // Character test data\n static createCharacterInfo(\n overrides: Partial<CharacterInfo> = {},\n ): CharacterInfo {\n return {\n name: 'Test Character',\n corporation_id: 1344654522,\n alliance_id: 99005338,\n bloodline_id: 4,\n race_id: 1,\n gender: 'male',\n birthday: '2003-05-06T00:00:00Z',\n description: 'A test character for BDD scenarios',\n security_status: 5.0,\n title: 'Test Pilot',\n ...overrides,\n };\n }\n\n static createCharacterPortrait(\n characterId: number = 1689391488,\n ): CharacterPortrait {\n return {\n px64x64: `https://images.evetech.net/characters/${characterId}/portrait?size=64`,\n px128x128: `https://images.evetech.net/characters/${characterId}/portrait?size=128`,\n px256x256: `https://images.evetech.net/characters/${characterId}/portrait?size=256`,\n px512x512: `https://images.evetech.net/characters/${characterId}/portrait?size=512`,\n };\n }\n\n static createCharacterAttributes(\n overrides: Partial<CharacterAttributes> = {},\n ): CharacterAttributes {\n return {\n charisma: 20,\n intelligence: 24,\n memory: 21,\n perception: 23,\n willpower: 22,\n bonus_remaps: 2,\n last_remap_date: '2023-01-01T00:00:00Z',\n accrued_remap_cooldown_date: '2024-01-01T00:00:00Z',\n ...overrides,\n };\n }\n\n static createCharacterSkill(\n overrides: Partial<CharacterSkill> = {},\n ): CharacterSkill {\n return {\n skill_id: 3300,\n skillpoints_in_skill: 256000,\n trained_skill_level: 5,\n active_skill_level: 5,\n ...overrides,\n };\n }\n\n static createCharacterRoles(overrides: Record<string, any> = {}): any {\n return {\n roles: ['Director'],\n roles_at_base: [],\n roles_at_hq: ['Director'],\n roles_at_other: [],\n ...overrides,\n };\n }\n\n static createCorporationHistoryEntry(\n overrides: Record<string, any> = {},\n ): any {\n return {\n corporation_id: 1344654522,\n is_deleted: false,\n record_id: 1,\n start_date: '2020-01-01T00:00:00Z',\n ...overrides,\n };\n }\n\n static createCharacterMedal(overrides: Record<string, any> = {}): any {\n return {\n medal_id: 1,\n title: 'Test Medal',\n description: 'A test medal for demonstration',\n corporation_id: 1344654522,\n date: '2023-01-01T00:00:00Z',\n issuer_id: 1689391489,\n reason: 'Outstanding service',\n status: 'public',\n graphics: [\n { part: 1, layer: 0, graphic: 'caldari.1_1', color: -1 },\n { part: 2, layer: 1, graphic: 'caldari.2_3' },\n ],\n ...overrides,\n };\n }\n\n static createCharacterNotification(overrides: Record<string, any> = {}): any {\n return {\n notification_id: 1000001,\n sender_id: 1689391489,\n sender_type: 'character',\n text: 'Test notification',\n timestamp: '2024-01-15T12:00:00Z',\n type: 'AllWarDeclaredMsg',\n is_read: false,\n ...overrides,\n };\n }\n\n // Market test data\n static createMarketPrice(overrides: Record<string, any> = {}): any {\n return {\n type_id: 34,\n average_price: 4.5,\n adjusted_price: 4.55,\n ...overrides,\n };\n }\n\n static createMarketHistory(overrides: Record<string, any> = {}): any {\n return {\n date: '2024-01-15',\n volume: 1000000000,\n order_count: 2500,\n lowest: 4.2,\n highest: 4.8,\n average: 4.5,\n ...overrides,\n };\n }\n\n static createCharacterMarketOrder(overrides: Record<string, any> = {}): any {\n return {\n order_id: 5000000001,\n type_id: 34,\n region_id: 10000002,\n location_id: 60003760,\n range: 'region',\n volume_total: 1000000,\n volume_remain: 750000,\n min_volume: 1,\n price: 4.5,\n is_buy_order: true,\n is_corporation: false,\n duration: 90,\n issued: '2024-01-15T12:00:00Z',\n ...overrides,\n };\n }\n\n static createCharacterOrderHistory(overrides: Record<string, any> = {}): any {\n return {\n order_id: 5000000001,\n type_id: 34,\n region_id: 10000002,\n location_id: 60003760,\n range: 'region',\n volume_total: 1000000,\n volume_remain: 0,\n min_volume: 1,\n price: 4.5,\n is_buy_order: true,\n is_corporation: false,\n duration: 90,\n issued: '2024-01-10T12:00:00Z',\n state: 'expired',\n ...overrides,\n };\n }\n\n // Universe test data\n static createSolarSystem(overrides: Record<string, any> = {}): any {\n return {\n system_id: 30000142,\n name: 'Jita',\n constellation_id: 20000020,\n position: {\n x: -129064861735000000,\n y: 60755306910000000,\n z: 117469227060000000,\n },\n security_status: 0.9459991455078125,\n star_id: 40000001,\n stargates: [50000001, 50000002],\n stations: [60003760, 60003761],\n planets: [\n { planet_id: 40000001, moons: [40000002, 40000003] },\n { planet_id: 40000004, moons: [40000005] },\n ],\n ...overrides,\n };\n }\n\n static createStation(overrides: Record<string, any> = {}): any {\n return {\n station_id: 60003760,\n name: 'Jita IV - Moon 4 - Caldari Navy Assembly Plant',\n owner: 1000035,\n type_id: 52678,\n race_id: 1,\n system_id: 30000142,\n position: { x: 3813196800, y: 1016750000, z: -2305570000 },\n reprocessing_efficiency: 0.5,\n reprocessing_stations_take: 0.05,\n max_dockable_ship_volume: 50000000,\n office_rental_cost: 10000000,\n services: [\n 'bounty-missions',\n 'courier-missions',\n 'interbus',\n 'reprocessing-plant',\n 'market',\n 'stock-exchange',\n ],\n ...overrides,\n };\n }\n\n /** `GET /universe/structures/{structure_id}`: the ID is in the path, not the body. */\n static createStructure(overrides: Record<string, any> = {}): any {\n return {\n name: 'Test Citadel',\n owner_id: 1689391488,\n solar_system_id: 30000142,\n type_id: 35832,\n position: { x: 1000000000, y: 2000000000, z: 3000000000 },\n ...overrides,\n };\n }\n\n /** `GET /universe/types/{type_id}`: the category is on the group, not the type. */\n static createItemType(overrides: Record<string, any> = {}): any {\n return {\n type_id: 34,\n name: 'Tritanium',\n description: 'The most common ore type in the known universe.',\n group_id: 18,\n market_group_id: 1857,\n mass: 1.0,\n volume: 0.01,\n capacity: 0.0,\n portion_size: 1,\n radius: 1.0,\n published: true,\n ...overrides,\n };\n }\n\n static createItemGroup(overrides: Record<string, any> = {}): any {\n return {\n group_id: 18,\n name: 'Mineral',\n category_id: 4,\n published: true,\n types: [34, 35, 36, 37, 38, 39, 40, 11399],\n ...overrides,\n };\n }\n\n /** `GET /universe/stars/{star_id}`: the star ID is in the path, not the body. */\n static createStar(overrides: Record<string, any> = {}): any {\n return {\n name: 'Jita - Star',\n type_id: 3802,\n solar_system_id: 30000142,\n age: 4600000000,\n luminosity: 0.06575,\n radius: 62140000,\n spectral_class: 'K2 V',\n temperature: 4567,\n ...overrides,\n };\n }\n\n static createPlanet(overrides: Record<string, any> = {}): any {\n return {\n planet_id: 40000004,\n name: 'Jita IV',\n type_id: 11,\n system_id: 30000142,\n position: { x: 150000000000, y: 0, z: 0 },\n ...overrides,\n };\n }\n\n /**\n * `GET /characters/{character_id}/search`: one list per requested category,\n * keyed by the singular category name.\n */\n static createSearchResults(overrides: Record<string, any> = {}): any {\n return {\n solar_system: [],\n station: [],\n structure: [],\n character: [],\n corporation: [],\n alliance: [],\n ...overrides,\n };\n }\n\n static createEntityName(overrides: Record<string, any> = {}): any {\n return {\n id: 30000142,\n name: 'Jita',\n category: 'solar_system',\n ...overrides,\n };\n }\n\n // Corporation test data\n static createCorporationMemberRoles(\n overrides: Record<string, any> = {},\n ): any {\n return {\n character_id: 1689391488,\n roles: ['Director', 'Personnel_Manager'],\n grantable_roles: ['Hangar_Take_1', 'Hangar_Take_2'],\n roles_at_hq: ['Director'],\n roles_at_base: [],\n roles_at_other: [],\n ...overrides,\n };\n }\n\n static createCorporationAsset(overrides: Record<string, any> = {}): any {\n return {\n item_id: 1000000000001,\n type_id: 587,\n quantity: 100,\n location_id: 60003760,\n location_flag: 'CorpSAG1',\n location_type: 'station',\n is_singleton: false,\n ...overrides,\n };\n }\n\n static createCorporationStructure(overrides: Record<string, any> = {}): any {\n return {\n structure_id: 1021975535893,\n corporation_id: 1344654522,\n type_id: 35832,\n system_id: 30000142,\n profile_id: 101853,\n fuel_expires: '2024-02-01T12:00:00Z',\n state_timer_start: '2024-01-15T12:00:00Z',\n state_timer_end: '2024-01-22T12:00:00Z',\n state: 'shield_vulnerable',\n ...overrides,\n };\n }\n\n static createCorporationWallet(overrides: Record<string, any> = {}): any {\n return {\n division: 1,\n balance: 1000000000.0,\n ...overrides,\n };\n }\n\n static createWalletJournalEntry(overrides: Record<string, any> = {}): any {\n return {\n id: 1000000001,\n date: '2024-01-15T12:00:00Z',\n ref_type: 'market_transaction',\n first_party_id: 1344654522,\n amount: 1000000.0,\n balance: 1000000000.0,\n reason: 'Market transaction',\n description: 'Sold items on market',\n ...overrides,\n };\n }\n\n // Fleet test data\n\n /** `GET /fleets/{fleet_id}`: the fleet ID is in the path, not the body. */\n static createFleetInfo(overrides: Record<string, any> = {}): any {\n return {\n is_free_move: false,\n is_registered: true,\n is_voice_enabled: true,\n motd: 'Fleet operations in progress',\n ...overrides,\n };\n }\n\n /**\n * A fleet member as `GET /fleets/{fleet_id}/members` sends it. The default\n * is the fleet commander, whom ESI places in no wing or squad (-1).\n */\n static createFleetMember(overrides: Record<string, any> = {}): any {\n return {\n character_id: 1689391488,\n join_time: '2024-01-15T18:00:00Z',\n role: 'fleet_commander',\n role_name: 'Fleet Commander (Boss)',\n ship_type_id: 17918,\n solar_system_id: 30000142,\n squad_id: -1,\n station_id: 60003760,\n takes_fleet_warp: true,\n wing_id: -1,\n ...overrides,\n };\n }\n\n /** A wing as `GET /fleets/{fleet_id}/wings` sends it: keyed by `id`. */\n static createFleetWing(overrides: Record<string, any> = {}): any {\n return {\n id: 2073711261968,\n name: 'Wing 1',\n squads: [{ id: 3129411261968, name: 'Squad 1' }],\n ...overrides,\n };\n }\n\n // Industry test data\n static createIndustryJob(overrides: Record<string, any> = {}): any {\n return {\n job_id: 1000001,\n installer_id: 1689391488,\n facility_id: 60003760,\n station_id: 60003760,\n activity_id: 1,\n blueprint_id: 1000000001,\n blueprint_type_id: 17918,\n blueprint_location_id: 60003760,\n output_location_id: 60003760,\n product_type_id: 17918,\n runs: 1,\n status: 'active',\n duration: 86400,\n start_date: '2024-01-15T12:00:00Z',\n end_date: '2024-01-16T12:00:00Z',\n ...overrides,\n };\n }\n\n /**\n * A corporation industry job as `GET /corporations/{corporation_id}/industry/jobs`\n * sends it: placed by `location_id`, where a character job has `station_id`.\n */\n static createCorporationIndustryJob(\n overrides: Record<string, any> = {},\n ): any {\n return {\n job_id: 2000001,\n installer_id: 1689391488,\n facility_id: 1021975535893,\n location_id: 1021975535893,\n activity_id: 1,\n blueprint_id: 1000000001,\n blueprint_type_id: 17918,\n blueprint_location_id: 1021975535893,\n output_location_id: 1021975535893,\n product_type_id: 17918,\n runs: 1,\n status: 'active',\n duration: 86400,\n start_date: '2024-01-15T12:00:00Z',\n end_date: '2024-01-16T12:00:00Z',\n ...overrides,\n };\n }\n\n static createBlueprint(overrides: Record<string, any> = {}): any {\n return {\n item_id: 1000000001,\n type_id: 17918,\n location_id: 60003760,\n location_flag: 'Hangar',\n quantity: -2,\n time_efficiency: 10,\n material_efficiency: 10,\n runs: 100,\n ...overrides,\n };\n }\n\n static createCharacterAsset(overrides: Record<string, any> = {}): any {\n return {\n item_id: 1000000002,\n type_id: 34,\n quantity: 1000000,\n location_id: 60003760,\n location_flag: 'Hangar',\n location_type: 'station',\n is_singleton: false,\n ...overrides,\n };\n }\n\n static createCharacterLocation(overrides: Record<string, any> = {}): any {\n return {\n solar_system_id: 30000142,\n station_id: 60003760,\n structure_id: undefined,\n ...overrides,\n };\n }\n\n static createCharacterSkills(overrides: Record<string, any> = {}): any {\n return {\n skills: [\n {\n skill_id: 3300,\n skillpoints_in_skill: 256000,\n trained_skill_level: 5,\n active_skill_level: 5,\n },\n {\n skill_id: 3301,\n skillpoints_in_skill: 128000,\n trained_skill_level: 4,\n active_skill_level: 4,\n },\n ],\n total_sp: 384000,\n unallocated_sp: 0,\n ...overrides,\n };\n }\n\n // Corporation test data\n\n /** `GET /corporations/{corporation_id}`: the ID is in the path, not the body. */\n static createCorporationInfo(\n overrides: Partial<CorporationInfo> = {},\n ): CorporationInfo {\n return {\n name: 'GoonWaffe',\n ticker: 'GEWNS',\n ceo_id: 1689391488,\n creator_id: 1689391488,\n member_count: 15000,\n tax_rate: 0.1,\n alliance_id: 99005338,\n date_founded: '2003-05-06T00:00:00Z',\n description: 'The founding corporation of Goonswarm Federation',\n home_station_id: 60003760,\n shares: 1000,\n // eslint-disable-next-line sonarjs/no-clear-text-protocols\n url: 'http://www.goonfleet.com/',\n faction_id: 500001,\n war_eligible: true,\n ...overrides,\n };\n }\n\n // Market test data\n static createMarketOrder(overrides: Partial<MarketOrder> = {}): MarketOrder {\n return {\n order_id: 123456789,\n type_id: 34, // Tritanium\n location_id: 60003760, // Jita 4-4\n volume_total: 1000000,\n volume_remain: 500000,\n min_volume: 1,\n price: 5.5,\n is_buy_order: false,\n system_id: 30000142,\n duration: 90,\n issued: '2023-12-01T12:00:00Z',\n range: 'region',\n ...overrides,\n };\n }\n\n // Wallet test data\n static createWalletTransaction(\n overrides: Partial<WalletTransaction> = {},\n ): WalletTransaction {\n return {\n transaction_id: 123456789,\n date: '2023-12-01T12:00:00Z',\n type_id: 34,\n location_id: 60003760,\n unit_price: 5.5,\n quantity: 1000,\n client_id: 1689391488,\n is_buy: false,\n is_personal: true,\n journal_ref_id: 987654321,\n ...overrides,\n };\n }\n\n /**\n * A corporation wallet transaction as\n * `GET /corporations/{corporation_id}/wallets/{division}/transactions` sends\n * it: no is_personal.\n */\n static createCorporationWalletTransaction(\n overrides: Partial<CorporationWalletTransaction> = {},\n ): CorporationWalletTransaction {\n return {\n transaction_id: 123456790,\n date: '2023-12-01T12:00:00Z',\n type_id: 34,\n location_id: 60003760,\n unit_price: 5.5,\n quantity: 1000,\n client_id: 1689391488,\n is_buy: true,\n journal_ref_id: 987654322,\n ...overrides,\n };\n }\n\n // Contract test data\n static createContract(overrides: Partial<Contract> = {}): Contract {\n return {\n contract_id: 123456789,\n issuer_id: 1689391488,\n issuer_corporation_id: 1344654522,\n assignee_id: 987654321,\n acceptor_id: 0,\n start_location_id: 60003760,\n end_location_id: 60008494,\n type: 'courier',\n status: 'outstanding',\n title: 'Test Courier Contract',\n for_corporation: false,\n availability: 'public',\n date_issued: '2023-12-01T12:00:00Z',\n date_expired: '2023-12-08T12:00:00Z',\n days_to_complete: 3,\n price: 1000000,\n reward: 500000,\n collateral: 10000000,\n volume: 1000,\n ...overrides,\n };\n }\n\n static createPublicContract(\n overrides: Partial<PublicContract> = {},\n ): PublicContract {\n return {\n contract_id: 123456790,\n issuer_id: 1689391488,\n issuer_corporation_id: 1344654522,\n start_location_id: 60003760,\n type: 'item_exchange',\n title: 'Test Item Exchange Contract',\n for_corporation: false,\n date_issued: '2023-12-01T12:00:00Z',\n date_expired: '2023-12-15T12:00:00Z',\n price: 50000000,\n volume: 10,\n ...overrides,\n };\n }\n\n // Sovereignty test data (Equinox)\n static createSovereigntySystem(\n overrides: Partial<SovereigntySystem> = {},\n ): SovereigntySystem {\n return {\n solar_systems: [\n {\n solar_system_id: 30000142,\n claim: {\n alliance: {\n alliance_id: 99005338,\n corporation_id: 1344654522,\n claimed_since: '2020-10-08T00:38:16Z',\n is_capital_system: false,\n development: {\n activity_defense_multiplier: 4.5,\n military_level: 5,\n industrial_level: 3,\n strategic_level: 1,\n },\n },\n },\n },\n ],\n ...overrides,\n };\n }\n\n static createSovereigntyHub(\n overrides: Partial<SovereigntyHub> = {},\n ): SovereigntyHub {\n return {\n structure_id: 100000001,\n system_id: 30000142,\n corporation_id: 98000002,\n alliance_id: 99000006,\n online: true,\n remaining_reagents: 500,\n installed_upgrades: [1, 2, 3],\n ...overrides,\n };\n }\n\n static createOrbitalSkyhook(\n overrides: Partial<OrbitalSkyhook> = {},\n ): OrbitalSkyhook {\n return {\n structure_id: 200000001,\n system_id: 30000142,\n corporation_id: 98000002,\n alliance_id: 99000006,\n online: true,\n reagent_silo_capacity: 1000,\n reagent_silo_level: 750,\n ...overrides,\n };\n }\n\n static createRaidableSkyhook(\n overrides: Partial<RaidableSkyhook> = {},\n ): RaidableSkyhook {\n return {\n structure_id: 200000001,\n system_id: 30000142,\n corporation_id: 98000002,\n alliance_id: 99000006,\n raidable_at: '2026-05-20T12:00:00Z',\n is_raidable: true,\n ...overrides,\n };\n }\n\n static createMercenaryDen(\n overrides: Partial<MercenaryDen> = {},\n ): MercenaryDen {\n return {\n den_id: 5001,\n system_id: 30000142,\n constellation_id: 20000125,\n region_id: 10000002,\n development_level: 3,\n anarchy_level: 2,\n active_operations: 1,\n ...overrides,\n };\n }\n\n static createMercenaryTacticalOperation(\n overrides: Partial<MercenaryTacticalOperation> = {},\n ): MercenaryTacticalOperation {\n return {\n operation_id: 7001,\n den_id: 5001,\n system_id: 30000142,\n site_type: 'assault',\n status: 'active',\n started_at: '2026-05-20T10:00:00Z',\n expires_at: '2026-05-20T22:00:00Z',\n ...overrides,\n };\n }\n\n static createAccessListEntry(\n overrides: Partial<AccessListEntry> = {},\n ): AccessListEntry {\n return {\n entity_id: 1689391488,\n entity_type: 'character',\n access_type: 'allowed',\n ...overrides,\n };\n }\n\n // Error test data\n static createError(statusCode: number, message?: string): EsiError {\n const defaultMessages: Record<number, string> = {\n 400: 'Bad request',\n 401: 'Unauthorized',\n 403: 'Forbidden',\n 404: 'Resource not found',\n 429: 'Rate limit exceeded',\n 500: 'Internal server error',\n 503: 'Service unavailable',\n };\n return new EsiError(\n statusCode,\n // eslint-disable-next-line security/detect-object-injection\n message || defaultMessages[statusCode] || 'Unknown error',\n );\n }\n\n // Test scenarios\n static createTestScenarios() {\n return {\n alliances: [\n { id: 99005338, name: 'Goonswarm Federation', ticker: 'CONDI' },\n { id: 99000001, name: 'Test Alliance Please Ignore', ticker: 'TEST' },\n { id: 99000002, name: 'Brave Collective', ticker: 'BRAVE' },\n { id: 99000003, name: 'Pandemic Legion', ticker: 'PL' },\n { id: 99000004, name: 'Northern Coalition.', ticker: 'NC.' },\n ],\n characters: [\n {\n id: 1689391488,\n name: 'Test Character',\n corp: 1344654522,\n alliance: 99005338,\n },\n {\n id: 123456789,\n name: 'Demo Pilot',\n corp: 987654321,\n alliance: 99000001,\n },\n {\n id: 111111111,\n name: 'Alpha Tester',\n corp: 222222222,\n alliance: 99000002,\n },\n {\n id: 333333333,\n name: 'Beta User',\n corp: 444444444,\n alliance: 99000003,\n },\n {\n id: 555555555,\n name: 'Gamma Pilot',\n corp: 666666666,\n alliance: 99000004,\n },\n ],\n corporations: [\n {\n id: 1344654522,\n name: 'GoonWaffe',\n ticker: 'GEWNS',\n alliance: 99005338,\n },\n {\n id: 987654321,\n name: 'Test Corp Please Ignore',\n ticker: 'TCPI',\n alliance: 99000001,\n },\n {\n id: 222222222,\n name: 'Brave Newbies Inc.',\n ticker: 'BNI',\n alliance: 99000002,\n },\n {\n id: 444444444,\n name: 'Sniggerdly',\n ticker: 'SNIGG',\n alliance: 99000003,\n },\n {\n id: 666666666,\n name: 'Tactical Narcotics Team',\n ticker: 'TNT',\n alliance: 99000004,\n },\n ],\n errorScenarios: [\n { statusCode: 0, label: 'network_error', probability: 0.1 },\n { statusCode: 429, label: 'rate_limited', probability: 0.05 },\n { statusCode: 500, label: 'server_error', probability: 0.02 },\n { statusCode: 504, label: 'timeout', probability: 0.03 },\n { statusCode: 404, label: 'not_found', probability: 0.01 },\n ],\n };\n }\n\n // Performance test data\n static createPerformanceTestData(\n size: 'small' | 'medium' | 'large' = 'medium',\n ) {\n const sizes = {\n small: { alliances: 5, characters: 20, corporations: 10 },\n medium: { alliances: 20, characters: 100, corporations: 50 },\n large: { alliances: 100, characters: 1000, corporations: 500 },\n };\n\n // eslint-disable-next-line security/detect-object-injection\n const config = sizes[size];\n const data = {\n alliances: [] as AllianceInfo[],\n characters: [] as CharacterInfo[],\n corporations: [] as CorporationInfo[],\n };\n\n // Generate alliances\n for (let i = 1; i <= config.alliances; i++) {\n data.alliances.push(\n this.createAllianceInfo({\n alliance_id: 99000000 + i,\n name: `Test Alliance ${i}`,\n ticker: `TST${i.toString().padStart(2, '0')}`,\n creator_id: 1000000 + i,\n }),\n );\n }\n\n // Generate corporations\n for (let i = 1; i <= config.corporations; i++) {\n const allianceIndex = Math.floor(\n (i - 1) / (config.corporations / config.alliances),\n );\n data.corporations.push(\n this.createCorporationInfo({\n corporation_id: 2000000 + i,\n name: `Test Corporation ${i}`,\n ticker: `TC${i.toString().padStart(3, '0')}`,\n // eslint-disable-next-line security/detect-object-injection\n alliance_id: data.alliances[allianceIndex]?.alliance_id,\n ceo_id: 3000000 + i,\n }),\n );\n }\n\n // Generate characters\n for (let i = 1; i <= config.characters; i++) {\n const corpIndex = Math.floor(\n (i - 1) / (config.characters / config.corporations),\n );\n // eslint-disable-next-line security/detect-object-injection\n const corp = data.corporations[corpIndex];\n data.characters.push(\n this.createCharacterInfo({\n character_id: 3000000 + i,\n name: `Test Character ${i}`,\n corporation_id: corp?.corporation_id || 2000001,\n alliance_id: corp?.alliance_id,\n }),\n );\n }\n\n return data;\n }\n\n // Realistic test data with relationships\n static createRealisticTestData() {\n const goonswarm = this.createAllianceInfo({\n alliance_id: 99005338,\n name: 'Goonswarm Federation',\n ticker: 'CONDI',\n creator_id: 1689391488,\n creator_corporation_id: 1344654522,\n executor_corporation_id: 1344654522,\n date_founded: '2010-06-01T00:00:00Z',\n });\n\n const goonwaffe = this.createCorporationInfo({\n corporation_id: 1344654522,\n name: 'GoonWaffe',\n ticker: 'GEWNS',\n alliance_id: 99005338,\n ceo_id: 1689391488,\n creator_id: 1689391488,\n member_count: 15000,\n date_founded: '2003-05-06T00:00:00Z',\n });\n\n const testCharacter = this.createCharacterInfo({\n character_id: 1689391488,\n name: 'The Mittani',\n corporation_id: 1344654522,\n alliance_id: 99005338,\n birthday: '2003-05-06T00:00:00Z',\n });\n\n return {\n alliances: [goonswarm],\n corporations: [goonwaffe],\n characters: [testCharacter],\n relationships: {\n allianceExecutor: { alliance: 99005338, corporation: 1344654522 },\n corporationCEO: { corporation: 1344654522, character: 1689391488 },\n characterMembership: {\n character: 1689391488,\n corporation: 1344654522,\n alliance: 99005338,\n },\n },\n };\n }\n}\n"],"mappings":"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","names":[]}
@@ -1,6 +1,9 @@
1
1
  import { z } from 'zod';
2
- import { ContractSchema, ContractItemSchema, ContractBidSchema } from '../schemas/contracts';
2
+ import { ContractSchema, PublicContractSchema, ContractItemSchema, PublicContractItemSchema, ContractBidSchema, PublicContractBidSchema } from '../schemas/contracts';
3
3
  export type Contract = z.infer<typeof ContractSchema>;
4
+ export type PublicContract = z.infer<typeof PublicContractSchema>;
4
5
  export type ContractItem = z.infer<typeof ContractItemSchema>;
6
+ export type PublicContractItem = z.infer<typeof PublicContractItemSchema>;
5
7
  export type ContractBid = z.infer<typeof ContractBidSchema>;
8
+ export type PublicContractBid = z.infer<typeof PublicContractBidSchema>;
6
9
  //# sourceMappingURL=contracts.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../src/types/contracts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AACtD,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC9D,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC"}
1
+ {"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../src/types/contracts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,wBAAwB,EACxB,iBAAiB,EACjB,uBAAuB,EACxB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AACtD,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAClE,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC9D,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAC1E,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC5D,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC"}
@@ -1,6 +1,10 @@
1
1
  import { z } from 'zod';
2
- import { CorporationProjectSchema, CorporationProjectContributionSchema, CorporationProjectContributorSchema } from '../schemas/corporation-projects';
2
+ import { CorporationProjectCursorSchema, CorporationProjectSummarySchema, CorporationProjectsListingSchema, CorporationProjectSchema, CorporationProjectContributionSchema, CorporationProjectContributorSchema, CorporationProjectContributorsListingSchema } from '../schemas/corporation-projects';
3
+ export type CorporationProjectCursor = z.infer<typeof CorporationProjectCursorSchema>;
4
+ export type CorporationProjectSummary = z.infer<typeof CorporationProjectSummarySchema>;
5
+ export type CorporationProjectsListing = z.infer<typeof CorporationProjectsListingSchema>;
3
6
  export type CorporationProject = z.infer<typeof CorporationProjectSchema>;
4
7
  export type CorporationProjectContribution = z.infer<typeof CorporationProjectContributionSchema>;
5
8
  export type CorporationProjectContributor = z.infer<typeof CorporationProjectContributorSchema>;
9
+ export type CorporationProjectContributorsListing = z.infer<typeof CorporationProjectContributorsListingSchema>;
6
10
  //# sourceMappingURL=corporation-projects.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"corporation-projects.d.ts","sourceRoot":"","sources":["../../src/types/corporation-projects.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,wBAAwB,EACxB,oCAAoC,EACpC,mCAAmC,EACpC,MAAM,iCAAiC,CAAC;AAEzC,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAC1E,MAAM,MAAM,8BAA8B,GAAG,CAAC,CAAC,KAAK,CAClD,OAAO,oCAAoC,CAC5C,CAAC;AACF,MAAM,MAAM,6BAA6B,GAAG,CAAC,CAAC,KAAK,CACjD,OAAO,mCAAmC,CAC3C,CAAC"}
1
+ {"version":3,"file":"corporation-projects.d.ts","sourceRoot":"","sources":["../../src/types/corporation-projects.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,8BAA8B,EAC9B,+BAA+B,EAC/B,gCAAgC,EAChC,wBAAwB,EACxB,oCAAoC,EACpC,mCAAmC,EACnC,2CAA2C,EAC5C,MAAM,iCAAiC,CAAC;AAEzC,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAC5C,OAAO,8BAA8B,CACtC,CAAC;AACF,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAC7C,OAAO,+BAA+B,CACvC,CAAC;AACF,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAC9C,OAAO,gCAAgC,CACxC,CAAC;AACF,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAC1E,MAAM,MAAM,8BAA8B,GAAG,CAAC,CAAC,KAAK,CAClD,OAAO,oCAAoC,CAC5C,CAAC;AACF,MAAM,MAAM,6BAA6B,GAAG,CAAC,CAAC,KAAK,CACjD,OAAO,mCAAmC,CAC3C,CAAC;AACF,MAAM,MAAM,qCAAqC,GAAG,CAAC,CAAC,KAAK,CACzD,OAAO,2CAA2C,CACnD,CAAC"}
@@ -1,9 +1,17 @@
1
1
  import { z } from 'zod';
2
- import { FactionWarfareStatsSchema, FactionWarfareCharacterStatsSchema, FactionWarfareSystemSchema, FactionWarfareWarSchema, FactionWarfareLeaderboardSchema, FactionWarfareCorporationStatsSchema } from '../schemas/faction-warfare';
2
+ import { FactionWarfareStatsSchema, FactionWarfareCharacterStatsSchema, FactionWarfareSystemSchema, FactionWarfareWarSchema, FactionWarfareLeaderboardSchema, FactionWarfareFactionLeaderboardSchema, FactionWarfareCharacterLeaderboardSchema, FactionWarfareCorporationLeaderboardSchema, FactionWarfareCorporationStatsSchema } from '../schemas/faction-warfare';
3
3
  export type FactionWarfareStats = z.infer<typeof FactionWarfareStatsSchema>;
4
4
  export type FactionWarfareCharacterStats = z.infer<typeof FactionWarfareCharacterStatsSchema>;
5
5
  export type FactionWarfareSystem = z.infer<typeof FactionWarfareSystemSchema>;
6
6
  export type FactionWarfareWar = z.infer<typeof FactionWarfareWarSchema>;
7
+ /**
8
+ * @deprecated Use FactionWarfareFactionLeaderboard,
9
+ * FactionWarfareCharacterLeaderboard or FactionWarfareCorporationLeaderboard.
10
+ * Each of those is assignable to this type.
11
+ */
7
12
  export type FactionWarfareLeaderboard = z.infer<typeof FactionWarfareLeaderboardSchema>;
13
+ export type FactionWarfareFactionLeaderboard = z.infer<typeof FactionWarfareFactionLeaderboardSchema>;
14
+ export type FactionWarfareCharacterLeaderboard = z.infer<typeof FactionWarfareCharacterLeaderboardSchema>;
15
+ export type FactionWarfareCorporationLeaderboard = z.infer<typeof FactionWarfareCorporationLeaderboardSchema>;
8
16
  export type FactionWarfareCorporationStats = z.infer<typeof FactionWarfareCorporationStatsSchema>;
9
17
  //# sourceMappingURL=faction-warfare.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"faction-warfare.d.ts","sourceRoot":"","sources":["../../src/types/faction-warfare.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,yBAAyB,EACzB,kCAAkC,EAClC,0BAA0B,EAC1B,uBAAuB,EACvB,+BAA+B,EAC/B,oCAAoC,EACrC,MAAM,4BAA4B,CAAC;AAEpC,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAC5E,MAAM,MAAM,4BAA4B,GAAG,CAAC,CAAC,KAAK,CAChD,OAAO,kCAAkC,CAC1C,CAAC;AACF,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAC9E,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AACxE,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAC7C,OAAO,+BAA+B,CACvC,CAAC;AACF,MAAM,MAAM,8BAA8B,GAAG,CAAC,CAAC,KAAK,CAClD,OAAO,oCAAoC,CAC5C,CAAC"}
1
+ {"version":3,"file":"faction-warfare.d.ts","sourceRoot":"","sources":["../../src/types/faction-warfare.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,yBAAyB,EACzB,kCAAkC,EAClC,0BAA0B,EAC1B,uBAAuB,EAEvB,+BAA+B,EAC/B,sCAAsC,EACtC,wCAAwC,EACxC,0CAA0C,EAC1C,oCAAoC,EACrC,MAAM,4BAA4B,CAAC;AAEpC,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAC5E,MAAM,MAAM,4BAA4B,GAAG,CAAC,CAAC,KAAK,CAChD,OAAO,kCAAkC,CAC1C,CAAC;AACF,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAC9E,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AACxE;;;;GAIG;AACH,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAE7C,OAAO,+BAA+B,CACvC,CAAC;AACF,MAAM,MAAM,gCAAgC,GAAG,CAAC,CAAC,KAAK,CACpD,OAAO,sCAAsC,CAC9C,CAAC;AACF,MAAM,MAAM,kCAAkC,GAAG,CAAC,CAAC,KAAK,CACtD,OAAO,wCAAwC,CAChD,CAAC;AACF,MAAM,MAAM,oCAAoC,GAAG,CAAC,CAAC,KAAK,CACxD,OAAO,0CAA0C,CAClD,CAAC;AACF,MAAM,MAAM,8BAA8B,GAAG,CAAC,CAAC,KAAK,CAClD,OAAO,oCAAoC,CAC5C,CAAC"}