@lgriffin/esi.ts 7.4.0 → 9.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 (348) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/README.md +100 -24
  3. package/dist/EsiClient.d.ts +3 -0
  4. package/dist/EsiClient.d.ts.map +1 -1
  5. package/dist/EsiClientBuilder.d.ts +1 -0
  6. package/dist/EsiClientBuilder.d.ts.map +1 -1
  7. package/dist/clients/AllianceClient.d.ts +3 -0
  8. package/dist/clients/AllianceClient.d.ts.map +1 -1
  9. package/dist/clients/BaseEsiClient.d.ts +1 -1
  10. package/dist/clients/BaseEsiClient.d.ts.map +1 -1
  11. package/dist/clients/CalendarClient.d.ts +3 -0
  12. package/dist/clients/CalendarClient.d.ts.map +1 -1
  13. package/dist/clients/CharacterClient.d.ts +10 -2
  14. package/dist/clients/CharacterClient.d.ts.map +1 -1
  15. package/dist/clients/ClonesClient.d.ts +2 -0
  16. package/dist/clients/ClonesClient.d.ts.map +1 -1
  17. package/dist/clients/ContactsClient.d.ts +7 -0
  18. package/dist/clients/ContactsClient.d.ts.map +1 -1
  19. package/dist/clients/CorporationsClient.d.ts +18 -0
  20. package/dist/clients/CorporationsClient.d.ts.map +1 -1
  21. package/dist/clients/FittingsClient.d.ts +2 -0
  22. package/dist/clients/FittingsClient.d.ts.map +1 -1
  23. package/dist/clients/FleetClient.d.ts +3 -0
  24. package/dist/clients/FleetClient.d.ts.map +1 -1
  25. package/dist/clients/IndustryClient.d.ts +9 -0
  26. package/dist/clients/IndustryClient.d.ts.map +1 -1
  27. package/dist/clients/LoyaltyClient.d.ts +3 -0
  28. package/dist/clients/LoyaltyClient.d.ts.map +1 -1
  29. package/dist/clients/MailClient.d.ts +6 -0
  30. package/dist/clients/MailClient.d.ts.map +1 -1
  31. package/dist/clients/MarketClient.d.ts +13 -22
  32. package/dist/clients/MarketClient.d.ts.map +1 -1
  33. package/dist/clients/PiClient.d.ts +3 -0
  34. package/dist/clients/PiClient.d.ts.map +1 -1
  35. package/dist/clients/SkillsClient.d.ts +2 -0
  36. package/dist/clients/SkillsClient.d.ts.map +1 -1
  37. package/dist/clients/WalletClient.d.ts +1 -0
  38. package/dist/clients/WalletClient.d.ts.map +1 -1
  39. package/dist/clients/WarsClient.d.ts +3 -0
  40. package/dist/clients/WarsClient.d.ts.map +1 -1
  41. package/dist/config/jest/globalSetup.d.ts.map +1 -1
  42. package/dist/config/jest/globalTeardown.d.ts.map +1 -1
  43. package/dist/core/ApiClient.d.ts +14 -6
  44. package/dist/core/ApiClient.d.ts.map +1 -1
  45. package/dist/core/ApiRequestHandler.d.ts +3 -11
  46. package/dist/core/ApiRequestHandler.d.ts.map +1 -1
  47. package/dist/core/IDeduplicator.d.ts +6 -0
  48. package/dist/core/IDeduplicator.d.ts.map +1 -0
  49. package/dist/core/IRetryStrategy.d.ts +5 -0
  50. package/dist/core/IRetryStrategy.d.ts.map +1 -0
  51. package/dist/core/RequestDeduplicator.d.ts +2 -1
  52. package/dist/core/RequestDeduplicator.d.ts.map +1 -1
  53. package/dist/core/RetryStrategy.d.ts +19 -0
  54. package/dist/core/RetryStrategy.d.ts.map +1 -0
  55. package/dist/core/circuitBreaker/CircuitBreaker.d.ts +11 -1
  56. package/dist/core/circuitBreaker/CircuitBreaker.d.ts.map +1 -1
  57. package/dist/core/circuitBreaker/ICircuitBreaker.d.ts +23 -0
  58. package/dist/core/circuitBreaker/ICircuitBreaker.d.ts.map +1 -0
  59. package/dist/core/configureApiClient.d.ts +18 -0
  60. package/dist/core/configureApiClient.d.ts.map +1 -0
  61. package/dist/core/endpoints/EndpointDefinition.d.ts +2 -0
  62. package/dist/core/endpoints/EndpointDefinition.d.ts.map +1 -1
  63. package/dist/core/endpoints/calendarEndpoints.d.ts +1 -1
  64. package/dist/core/endpoints/characterEndpoints.d.ts +3 -3
  65. package/dist/core/endpoints/contactEndpoints.d.ts +7 -3
  66. package/dist/core/endpoints/contactEndpoints.d.ts.map +1 -1
  67. package/dist/core/endpoints/corporationEndpoints.d.ts +4 -1
  68. package/dist/core/endpoints/corporationEndpoints.d.ts.map +1 -1
  69. package/dist/core/endpoints/createClient.d.ts +18 -1
  70. package/dist/core/endpoints/createClient.d.ts.map +1 -1
  71. package/dist/core/endpoints/dogmaEndpoints.d.ts +17 -0
  72. package/dist/core/endpoints/dogmaEndpoints.d.ts.map +1 -1
  73. package/dist/core/endpoints/esi-scopes.generated.d.ts +1 -1
  74. package/dist/core/endpoints/esi-scopes.generated.d.ts.map +1 -1
  75. package/dist/core/endpoints/fleetEndpoints.d.ts +5 -0
  76. package/dist/core/endpoints/fleetEndpoints.d.ts.map +1 -1
  77. package/dist/core/endpoints/mailEndpoints.d.ts +13 -0
  78. package/dist/core/endpoints/mailEndpoints.d.ts.map +1 -1
  79. package/dist/core/endpoints/marketEndpoints.d.ts +29 -48
  80. package/dist/core/endpoints/marketEndpoints.d.ts.map +1 -1
  81. package/dist/core/endpoints/piEndpoints.d.ts +3 -0
  82. package/dist/core/endpoints/piEndpoints.d.ts.map +1 -1
  83. package/dist/core/endpoints/universeEndpoints.d.ts +13 -2
  84. package/dist/core/endpoints/universeEndpoints.d.ts.map +1 -1
  85. package/dist/core/endpoints/walletEndpoints.d.ts +4 -0
  86. package/dist/core/endpoints/walletEndpoints.d.ts.map +1 -1
  87. package/dist/core/logger/logger.d.ts +2 -1
  88. package/dist/core/logger/logger.d.ts.map +1 -1
  89. package/dist/core/pagination/AsyncPaginationIterator.d.ts +4 -1
  90. package/dist/core/pagination/AsyncPaginationIterator.d.ts.map +1 -1
  91. package/dist/core/pagination/CursorPaginationHandler.d.ts +15 -6
  92. package/dist/core/pagination/CursorPaginationHandler.d.ts.map +1 -1
  93. package/dist/core/pagination/PaginationHandler.d.ts +7 -6
  94. package/dist/core/pagination/PaginationHandler.d.ts.map +1 -1
  95. package/dist/core/rateLimiter/RateLimiter.d.ts +8 -2
  96. package/dist/core/rateLimiter/RateLimiter.d.ts.map +1 -1
  97. package/dist/core/requestPipeline/cachePolicy.d.ts +31 -0
  98. package/dist/core/requestPipeline/cachePolicy.d.ts.map +1 -0
  99. package/dist/core/requestPipeline/dependencies.d.ts +10 -0
  100. package/dist/core/requestPipeline/dependencies.d.ts.map +1 -0
  101. package/dist/core/requestPipeline/fetchExecution.d.ts +28 -0
  102. package/dist/core/requestPipeline/fetchExecution.d.ts.map +1 -0
  103. package/dist/core/requestPipeline/headers.d.ts +11 -0
  104. package/dist/core/requestPipeline/headers.d.ts.map +1 -0
  105. package/dist/core/requestPipeline/index.d.ts +10 -0
  106. package/dist/core/requestPipeline/index.d.ts.map +1 -0
  107. package/dist/core/requestPipeline/middlewareBridge.d.ts +15 -0
  108. package/dist/core/requestPipeline/middlewareBridge.d.ts.map +1 -0
  109. package/dist/core/requestPipeline/paginationOrchestration.d.ts +15 -0
  110. package/dist/core/requestPipeline/paginationOrchestration.d.ts.map +1 -0
  111. package/dist/core/requestPipeline/statusHandling.d.ts +18 -0
  112. package/dist/core/requestPipeline/statusHandling.d.ts.map +1 -0
  113. package/dist/core/util/error.d.ts +6 -1
  114. package/dist/core/util/error.d.ts.map +1 -1
  115. package/dist/errors.d.ts +4 -0
  116. package/dist/errors.d.ts.map +1 -0
  117. package/dist/errors.js +196 -0
  118. package/dist/errors.js.map +1 -0
  119. package/dist/errors.mjs +146 -0
  120. package/dist/errors.mjs.map +1 -0
  121. package/dist/index.d.ts +9 -2
  122. package/dist/index.d.ts.map +1 -1
  123. package/dist/index.js +9937 -176
  124. package/dist/index.js.map +1 -0
  125. package/dist/index.mjs +9834 -0
  126. package/dist/index.mjs.map +1 -0
  127. package/dist/schemas/calendar.d.ts +1 -1
  128. package/dist/schemas/character.d.ts +1 -10
  129. package/dist/schemas/character.d.ts.map +1 -1
  130. package/dist/schemas/common.d.ts +9 -0
  131. package/dist/schemas/common.d.ts.map +1 -1
  132. package/dist/schemas/contacts.d.ts +2 -1
  133. package/dist/schemas/contacts.d.ts.map +1 -1
  134. package/dist/schemas/corporation.d.ts +4 -9
  135. package/dist/schemas/corporation.d.ts.map +1 -1
  136. package/dist/schemas/dogma.d.ts +17 -0
  137. package/dist/schemas/dogma.d.ts.map +1 -1
  138. package/dist/schemas/fleet.d.ts +1 -0
  139. package/dist/schemas/fleet.d.ts.map +1 -1
  140. package/dist/schemas/index.js +2085 -46
  141. package/dist/schemas/index.js.map +1 -0
  142. package/dist/schemas/index.mjs +1914 -0
  143. package/dist/schemas/index.mjs.map +1 -0
  144. package/dist/schemas/market.d.ts +91 -4
  145. package/dist/schemas/market.d.ts.map +1 -1
  146. package/dist/schemas/pi.d.ts +3 -0
  147. package/dist/schemas/pi.d.ts.map +1 -1
  148. package/dist/schemas/sovereignty.d.ts +2 -0
  149. package/dist/schemas/sovereignty.d.ts.map +1 -1
  150. package/dist/schemas/universe.d.ts +11 -2
  151. package/dist/schemas/universe.d.ts.map +1 -1
  152. package/dist/schemas/wallet.d.ts +2 -0
  153. package/dist/schemas/wallet.d.ts.map +1 -1
  154. package/dist/testing/TestDataFactory.d.ts.map +1 -1
  155. package/dist/testing/index.d.ts +2 -0
  156. package/dist/testing/index.d.ts.map +1 -0
  157. package/dist/testing/index.js +935 -0
  158. package/dist/testing/index.js.map +1 -0
  159. package/dist/testing/index.mjs +898 -0
  160. package/dist/testing/index.mjs.map +1 -0
  161. package/dist/types/character.d.ts +2 -1
  162. package/dist/types/character.d.ts.map +1 -1
  163. package/dist/types/generated/esi-spec.generated.d.ts +3 -3
  164. package/dist/types/generated/esi-spec.generated.d.ts.map +1 -1
  165. package/dist/types/generated/spec-alignment.check.d.ts +9 -0
  166. package/dist/types/generated/spec-alignment.check.d.ts.map +1 -1
  167. package/dist/types/market.d.ts +7 -1
  168. package/dist/types/market.d.ts.map +1 -1
  169. package/package.json +33 -6
  170. package/dist/EsiClient.js +0 -251
  171. package/dist/EsiClientBuilder.js +0 -217
  172. package/dist/clients/AccessListsClient.js +0 -20
  173. package/dist/clients/AllianceClient.js +0 -72
  174. package/dist/clients/AssetsClient.js +0 -81
  175. package/dist/clients/BaseEsiClient.js +0 -40
  176. package/dist/clients/CalendarClient.js +0 -54
  177. package/dist/clients/CharacterClient.js +0 -149
  178. package/dist/clients/ClonesClient.js +0 -31
  179. package/dist/clients/ContactsClient.js +0 -104
  180. package/dist/clients/ContractsClient.js +0 -111
  181. package/dist/clients/CorporationsClient.js +0 -227
  182. package/dist/clients/DogmaClient.js +0 -55
  183. package/dist/clients/FactionClient.js +0 -79
  184. package/dist/clients/FittingsClient.js +0 -42
  185. package/dist/clients/FleetClient.js +0 -162
  186. package/dist/clients/FreelanceJobsClient.js +0 -76
  187. package/dist/clients/IncursionsClient.js +0 -19
  188. package/dist/clients/IndustryClient.js +0 -88
  189. package/dist/clients/InsuranceClient.js +0 -19
  190. package/dist/clients/KillmailsClient.js +0 -47
  191. package/dist/clients/LocationClient.js +0 -41
  192. package/dist/clients/LoyaltyClient.js +0 -30
  193. package/dist/clients/MailClient.js +0 -108
  194. package/dist/clients/MarketClient.js +0 -131
  195. package/dist/clients/MercenaryClient.js +0 -27
  196. package/dist/clients/MetaClient.js +0 -56
  197. package/dist/clients/PiClient.js +0 -51
  198. package/dist/clients/RouteClient.js +0 -24
  199. package/dist/clients/SearchClient.js +0 -22
  200. package/dist/clients/SkillsClient.js +0 -41
  201. package/dist/clients/SkyhooksClient.js +0 -35
  202. package/dist/clients/SovereigntyClient.js +0 -27
  203. package/dist/clients/StatusClient.js +0 -19
  204. package/dist/clients/UiClient.js +0 -58
  205. package/dist/clients/UniverseClient.js +0 -277
  206. package/dist/clients/WalletClient.js +0 -82
  207. package/dist/clients/WarsClient.js +0 -37
  208. package/dist/config/configManager.js +0 -47
  209. package/dist/config/jest/globalSetup.js +0 -7
  210. package/dist/config/jest/globalTeardown.js +0 -7
  211. package/dist/config/jest/jest.setup.js +0 -29
  212. package/dist/core/ApiClient.js +0 -123
  213. package/dist/core/ApiClientBuilder.js +0 -54
  214. package/dist/core/ApiRequestHandler.js +0 -444
  215. package/dist/core/BatchRequestHandler.js +0 -66
  216. package/dist/core/ClientRegistry.js +0 -116
  217. package/dist/core/EsiDiagnostics.js +0 -47
  218. package/dist/core/RequestDeduplicator.js +0 -26
  219. package/dist/core/cache/ETagCacheManager.js +0 -184
  220. package/dist/core/cache/ICache.js +0 -2
  221. package/dist/core/circuitBreaker/CircuitBreaker.js +0 -156
  222. package/dist/core/constants.js +0 -7
  223. package/dist/core/endpoints/EndpointDefinition.js +0 -2
  224. package/dist/core/endpoints/accessListEndpoints.js +0 -13
  225. package/dist/core/endpoints/allianceEndpoints.js +0 -34
  226. package/dist/core/endpoints/assetEndpoints.js +0 -51
  227. package/dist/core/endpoints/buildEndpointPath.js +0 -44
  228. package/dist/core/endpoints/calendarEndpoints.js +0 -35
  229. package/dist/core/endpoints/characterEndpoints.js +0 -104
  230. package/dist/core/endpoints/cloneEndpoints.js +0 -21
  231. package/dist/core/endpoints/contactEndpoints.js +0 -72
  232. package/dist/core/endpoints/contractEndpoints.js +0 -70
  233. package/dist/core/endpoints/corporationEndpoints.js +0 -161
  234. package/dist/core/endpoints/createClient.js +0 -175
  235. package/dist/core/endpoints/dogmaEndpoints.js +0 -40
  236. package/dist/core/endpoints/esi-cache-ttls.generated.js +0 -133
  237. package/dist/core/endpoints/esi-rate-limit-groups.generated.js +0 -153
  238. package/dist/core/endpoints/esi-scopes.generated.js +0 -135
  239. package/dist/core/endpoints/factionEndpoints.js +0 -57
  240. package/dist/core/endpoints/fittingEndpoints.js +0 -27
  241. package/dist/core/endpoints/fleetEndpoints.js +0 -101
  242. package/dist/core/endpoints/freelanceJobsEndpoints.js +0 -51
  243. package/dist/core/endpoints/incursionEndpoints.js +0 -13
  244. package/dist/core/endpoints/industryEndpoints.js +0 -61
  245. package/dist/core/endpoints/insuranceEndpoints.js +0 -13
  246. package/dist/core/endpoints/killmailEndpoints.js +0 -28
  247. package/dist/core/endpoints/locationEndpoints.js +0 -27
  248. package/dist/core/endpoints/loyaltyEndpoints.js +0 -21
  249. package/dist/core/endpoints/mailEndpoints.js +0 -68
  250. package/dist/core/endpoints/marketEndpoints.js +0 -84
  251. package/dist/core/endpoints/mercenaryEndpoints.js +0 -19
  252. package/dist/core/endpoints/metaEndpoints.js +0 -12
  253. package/dist/core/endpoints/piEndpoints.js +0 -36
  254. package/dist/core/endpoints/routeEndpoints.js +0 -14
  255. package/dist/core/endpoints/searchEndpoints.js +0 -14
  256. package/dist/core/endpoints/skillEndpoints.js +0 -29
  257. package/dist/core/endpoints/skyhookEndpoints.js +0 -25
  258. package/dist/core/endpoints/sovereigntyEndpoints.js +0 -19
  259. package/dist/core/endpoints/statusEndpoints.js +0 -12
  260. package/dist/core/endpoints/uiEndpoints.js +0 -39
  261. package/dist/core/endpoints/universeEndpoints.js +0 -210
  262. package/dist/core/endpoints/walletEndpoints.js +0 -50
  263. package/dist/core/endpoints/warEndpoints.js +0 -28
  264. package/dist/core/logger/ILogger.js +0 -2
  265. package/dist/core/logger/logger.js +0 -16
  266. package/dist/core/logger/loggerUtil.js +0 -30
  267. package/dist/core/middleware/Middleware.js +0 -42
  268. package/dist/core/pagination/AsyncPaginationIterator.js +0 -27
  269. package/dist/core/pagination/CursorPaginationHandler.js +0 -148
  270. package/dist/core/pagination/PaginationHandler.js +0 -115
  271. package/dist/core/rateLimiter/IRateLimiter.js +0 -2
  272. package/dist/core/rateLimiter/RateLimiter.js +0 -307
  273. package/dist/core/util/error.js +0 -122
  274. package/dist/core/util/headersUtil.js +0 -37
  275. package/dist/core/util/retry.js +0 -9
  276. package/dist/core/util/sleep.js +0 -6
  277. package/dist/core/util/stringUtil.js +0 -6
  278. package/dist/core/util/testHelpers.js +0 -9
  279. package/dist/core/util/validation.js +0 -52
  280. package/dist/schemas/access-lists.js +0 -14
  281. package/dist/schemas/alliance.js +0 -28
  282. package/dist/schemas/assets.js +0 -26
  283. package/dist/schemas/calendar.js +0 -43
  284. package/dist/schemas/character.js +0 -122
  285. package/dist/schemas/clones.js +0 -21
  286. package/dist/schemas/common.js +0 -34
  287. package/dist/schemas/contacts.js +0 -15
  288. package/dist/schemas/contracts.js +0 -58
  289. package/dist/schemas/corporation.js +0 -192
  290. package/dist/schemas/dogma.js +0 -42
  291. package/dist/schemas/faction-warfare.js +0 -92
  292. package/dist/schemas/fittings.js +0 -15
  293. package/dist/schemas/fleet.js +0 -48
  294. package/dist/schemas/freelance-jobs.js +0 -99
  295. package/dist/schemas/incursions.js +0 -14
  296. package/dist/schemas/industry.js +0 -75
  297. package/dist/schemas/insurance.js +0 -12
  298. package/dist/schemas/killmails.js +0 -42
  299. package/dist/schemas/location.js +0 -20
  300. package/dist/schemas/loyalty.js +0 -20
  301. package/dist/schemas/mail.js +0 -38
  302. package/dist/schemas/market.js +0 -39
  303. package/dist/schemas/mercenary.js +0 -22
  304. package/dist/schemas/pi.js +0 -85
  305. package/dist/schemas/skills.js +0 -30
  306. package/dist/schemas/skyhooks.js +0 -30
  307. package/dist/schemas/sovereignty.js +0 -70
  308. package/dist/schemas/status.js +0 -10
  309. package/dist/schemas/universe.js +0 -245
  310. package/dist/schemas/wallet.js +0 -29
  311. package/dist/schemas/wars.js +0 -31
  312. package/dist/testing/TestDataFactory.js +0 -823
  313. package/dist/types/access-lists.js +0 -2
  314. package/dist/types/alliance.js +0 -2
  315. package/dist/types/api-responses.js +0 -73
  316. package/dist/types/assets.js +0 -2
  317. package/dist/types/branded.js +0 -6
  318. package/dist/types/calendar.js +0 -2
  319. package/dist/types/character.js +0 -2
  320. package/dist/types/clones.js +0 -2
  321. package/dist/types/common.js +0 -2
  322. package/dist/types/contacts.js +0 -2
  323. package/dist/types/contracts.js +0 -2
  324. package/dist/types/corporation.js +0 -2
  325. package/dist/types/dogma.js +0 -2
  326. package/dist/types/faction-warfare.js +0 -2
  327. package/dist/types/fittings.js +0 -2
  328. package/dist/types/fleet.js +0 -2
  329. package/dist/types/freelance-jobs.js +0 -2
  330. package/dist/types/generated/esi-spec.generated.js +0 -6
  331. package/dist/types/generated/spec-alignment.check.js +0 -14
  332. package/dist/types/incursions.js +0 -2
  333. package/dist/types/industry.js +0 -2
  334. package/dist/types/insurance.js +0 -2
  335. package/dist/types/killmails.js +0 -2
  336. package/dist/types/location.js +0 -2
  337. package/dist/types/loyalty.js +0 -2
  338. package/dist/types/mail.js +0 -2
  339. package/dist/types/market.js +0 -2
  340. package/dist/types/mercenary.js +0 -2
  341. package/dist/types/pi.js +0 -2
  342. package/dist/types/skills.js +0 -2
  343. package/dist/types/skyhooks.js +0 -2
  344. package/dist/types/sovereignty.js +0 -2
  345. package/dist/types/status.js +0 -2
  346. package/dist/types/universe.js +0 -2
  347. package/dist/types/wallet.js +0 -2
  348. package/dist/types/wars.js +0 -2
@@ -0,0 +1,898 @@
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
+ };
67
+
68
+ // src/testing/TestDataFactory.ts
69
+ var TestDataFactory = class {
70
+ // Alliance test data
71
+ static createAllianceInfo(overrides = {}) {
72
+ return {
73
+ alliance_id: 99005338,
74
+ name: "Goonswarm Federation",
75
+ ticker: "CONDI",
76
+ creator_id: 1689391488,
77
+ creator_corporation_id: 1344654522,
78
+ executor_corporation_id: 1344654522,
79
+ date_founded: "2010-06-01T00:00:00Z",
80
+ faction_id: 500001,
81
+ ...overrides
82
+ };
83
+ }
84
+ static createAllianceContact(overrides = {}) {
85
+ return {
86
+ contact_id: 1689391488,
87
+ contact_type: "character",
88
+ standing: 10,
89
+ label_ids: [1, 2],
90
+ ...overrides
91
+ };
92
+ }
93
+ static createAllianceContactLabel(overrides = {}) {
94
+ return {
95
+ label_id: 1,
96
+ label_name: "Friendly",
97
+ ...overrides
98
+ };
99
+ }
100
+ // Character test data
101
+ static createCharacterInfo(overrides = {}) {
102
+ return {
103
+ character_id: 1689391488,
104
+ name: "Test Character",
105
+ corporation_id: 1344654522,
106
+ alliance_id: 99005338,
107
+ bloodline_id: 4,
108
+ race_id: 1,
109
+ gender: "male",
110
+ birthday: "2003-05-06T00:00:00Z",
111
+ description: "A test character for BDD scenarios",
112
+ security_status: 5,
113
+ title: "Test Pilot",
114
+ ...overrides
115
+ };
116
+ }
117
+ static createCharacterPortrait(characterId = 1689391488) {
118
+ return {
119
+ px64x64: `https://images.evetech.net/characters/${characterId}/portrait?size=64`,
120
+ px128x128: `https://images.evetech.net/characters/${characterId}/portrait?size=128`,
121
+ px256x256: `https://images.evetech.net/characters/${characterId}/portrait?size=256`,
122
+ px512x512: `https://images.evetech.net/characters/${characterId}/portrait?size=512`
123
+ };
124
+ }
125
+ static createCharacterAttributes(overrides = {}) {
126
+ return {
127
+ charisma: 20,
128
+ intelligence: 24,
129
+ memory: 21,
130
+ perception: 23,
131
+ willpower: 22,
132
+ bonus_remaps: 2,
133
+ last_remap_date: "2023-01-01T00:00:00Z",
134
+ accrued_remap_cooldown_date: "2024-01-01T00:00:00Z",
135
+ ...overrides
136
+ };
137
+ }
138
+ static createCharacterSkill(overrides = {}) {
139
+ return {
140
+ skill_id: 3300,
141
+ skillpoints_in_skill: 256e3,
142
+ trained_skill_level: 5,
143
+ active_skill_level: 5,
144
+ ...overrides
145
+ };
146
+ }
147
+ static createCharacterRoles(overrides = {}) {
148
+ return {
149
+ roles: ["Director"],
150
+ roles_at_base: [],
151
+ roles_at_hq: ["Director"],
152
+ roles_at_other: [],
153
+ ...overrides
154
+ };
155
+ }
156
+ static createCorporationHistoryEntry(overrides = {}) {
157
+ return {
158
+ corporation_id: 1344654522,
159
+ is_deleted: false,
160
+ record_id: 1,
161
+ start_date: "2020-01-01T00:00:00Z",
162
+ ...overrides
163
+ };
164
+ }
165
+ static createCharacterMedal(overrides = {}) {
166
+ return {
167
+ medal_id: 1,
168
+ title: "Test Medal",
169
+ description: "A test medal for demonstration",
170
+ corporation_id: 1344654522,
171
+ date: "2023-01-01T00:00:00Z",
172
+ issuer_id: 1689391489,
173
+ reason: "Outstanding service",
174
+ ...overrides
175
+ };
176
+ }
177
+ static createCharacterNotification(overrides = {}) {
178
+ return {
179
+ notification_id: 1000001,
180
+ sender_id: 1689391489,
181
+ sender_type: "character",
182
+ text: "Test notification",
183
+ timestamp: "2024-01-15T12:00:00Z",
184
+ type: "AllWarDeclaredMsg",
185
+ is_read: false,
186
+ ...overrides
187
+ };
188
+ }
189
+ // Market test data
190
+ static createMarketPrice(overrides = {}) {
191
+ return {
192
+ type_id: 34,
193
+ average_price: 4.5,
194
+ adjusted_price: 4.55,
195
+ ...overrides
196
+ };
197
+ }
198
+ static createMarketHistory(overrides = {}) {
199
+ return {
200
+ date: "2024-01-15",
201
+ volume: 1e9,
202
+ order_count: 2500,
203
+ lowest: 4.2,
204
+ highest: 4.8,
205
+ average: 4.5,
206
+ ...overrides
207
+ };
208
+ }
209
+ static createCharacterMarketOrder(overrides = {}) {
210
+ return {
211
+ order_id: 5000000001,
212
+ type_id: 34,
213
+ region_id: 10000002,
214
+ location_id: 60003760,
215
+ range: "region",
216
+ volume_total: 1e6,
217
+ volume_remain: 75e4,
218
+ min_volume: 1,
219
+ price: 4.5,
220
+ is_buy_order: true,
221
+ is_corporation: false,
222
+ duration: 90,
223
+ issued: "2024-01-15T12:00:00Z",
224
+ ...overrides
225
+ };
226
+ }
227
+ static createCharacterOrderHistory(overrides = {}) {
228
+ return {
229
+ order_id: 5000000001,
230
+ type_id: 34,
231
+ region_id: 10000002,
232
+ location_id: 60003760,
233
+ range: "region",
234
+ volume_total: 1e6,
235
+ volume_remain: 0,
236
+ min_volume: 1,
237
+ price: 4.5,
238
+ is_buy_order: true,
239
+ is_corporation: false,
240
+ duration: 90,
241
+ issued: "2024-01-10T12:00:00Z",
242
+ state: "expired",
243
+ ...overrides
244
+ };
245
+ }
246
+ // Universe test data
247
+ static createSolarSystem(overrides = {}) {
248
+ return {
249
+ system_id: 30000142,
250
+ name: "Jita",
251
+ constellation_id: 20000020,
252
+ security_status: 0.9459991455078125,
253
+ star_id: 40000001,
254
+ stargates: [50000001, 50000002],
255
+ stations: [60003760, 60003761],
256
+ planets: [
257
+ { planet_id: 40000001, moons: [40000002, 40000003] },
258
+ { planet_id: 40000004, moons: [40000005] }
259
+ ],
260
+ ...overrides
261
+ };
262
+ }
263
+ static createStation(overrides = {}) {
264
+ return {
265
+ station_id: 60003760,
266
+ name: "Jita IV - Moon 4 - Caldari Navy Assembly Plant",
267
+ owner: 1000035,
268
+ type_id: 52678,
269
+ race_id: 1,
270
+ system_id: 30000142,
271
+ reprocessing_efficiency: 0.5,
272
+ reprocessing_stations_take: 0.05,
273
+ max_dockable_ship_volume: 5e7,
274
+ office_rental_cost: 1e7,
275
+ services: [
276
+ "bounty-missions",
277
+ "courier-missions",
278
+ "interbus",
279
+ "reprocessing-plant",
280
+ "market",
281
+ "stock-exchange"
282
+ ],
283
+ ...overrides
284
+ };
285
+ }
286
+ static createStructure(overrides = {}) {
287
+ return {
288
+ structure_id: 1021975535893,
289
+ name: "Test Citadel",
290
+ owner_id: 1689391488,
291
+ solar_system_id: 30000142,
292
+ type_id: 35832,
293
+ position: { x: 1e9, y: 2e9, z: 3e9 },
294
+ ...overrides
295
+ };
296
+ }
297
+ static createItemType(overrides = {}) {
298
+ return {
299
+ type_id: 34,
300
+ name: "Tritanium",
301
+ description: "The most common ore type in the known universe.",
302
+ group_id: 18,
303
+ category_id: 4,
304
+ market_group_id: 1857,
305
+ mass: 1,
306
+ volume: 0.01,
307
+ capacity: 0,
308
+ portion_size: 1,
309
+ radius: 1,
310
+ published: true,
311
+ ...overrides
312
+ };
313
+ }
314
+ static createItemGroup(overrides = {}) {
315
+ return {
316
+ group_id: 18,
317
+ name: "Mineral",
318
+ category_id: 4,
319
+ published: true,
320
+ types: [34, 35, 36, 37, 38, 39, 40, 11399],
321
+ ...overrides
322
+ };
323
+ }
324
+ static createStar(overrides = {}) {
325
+ return {
326
+ star_id: 40000001,
327
+ name: "Jita - Star",
328
+ type_id: 3802,
329
+ solar_system_id: 30000142,
330
+ age: 46e8,
331
+ luminosity: 0.06575,
332
+ radius: 6214e4,
333
+ spectral_class: "K2 V",
334
+ temperature: 4567,
335
+ ...overrides
336
+ };
337
+ }
338
+ static createPlanet(overrides = {}) {
339
+ return {
340
+ planet_id: 40000004,
341
+ name: "Jita IV",
342
+ type_id: 11,
343
+ system_id: 30000142,
344
+ position: { x: 15e10, y: 0, z: 0 },
345
+ ...overrides
346
+ };
347
+ }
348
+ static createSearchResults(overrides = {}) {
349
+ return {
350
+ systems: [],
351
+ stations: [],
352
+ structures: [],
353
+ characters: [],
354
+ corporations: [],
355
+ alliances: [],
356
+ ...overrides
357
+ };
358
+ }
359
+ static createEntityName(overrides = {}) {
360
+ return {
361
+ id: 30000142,
362
+ name: "Jita",
363
+ category: "solar_system",
364
+ ...overrides
365
+ };
366
+ }
367
+ // Corporation test data
368
+ static createCorporationMemberRoles(overrides = {}) {
369
+ return {
370
+ character_id: 1689391488,
371
+ roles: ["Director", "Personnel_Manager"],
372
+ grantable_roles: ["Hangar_Take_1", "Hangar_Take_2"],
373
+ roles_at_hq: ["Director"],
374
+ roles_at_base: [],
375
+ roles_at_other: [],
376
+ ...overrides
377
+ };
378
+ }
379
+ static createCorporationAsset(overrides = {}) {
380
+ return {
381
+ item_id: 1000000000001,
382
+ type_id: 587,
383
+ quantity: 100,
384
+ location_id: 60003760,
385
+ location_flag: "CorpSAG1",
386
+ location_type: "station",
387
+ ...overrides
388
+ };
389
+ }
390
+ static createCorporationStructure(overrides = {}) {
391
+ return {
392
+ structure_id: 1021975535893,
393
+ type_id: 35832,
394
+ system_id: 30000142,
395
+ profile_id: 101853,
396
+ fuel_expires: "2024-02-01T12:00:00Z",
397
+ state_timer_start: "2024-01-15T12:00:00Z",
398
+ state_timer_end: "2024-01-22T12:00:00Z",
399
+ state: "shield_vulnerable",
400
+ ...overrides
401
+ };
402
+ }
403
+ static createCorporationWallet(overrides = {}) {
404
+ return {
405
+ division: 1,
406
+ balance: 1e9,
407
+ ...overrides
408
+ };
409
+ }
410
+ static createWalletJournalEntry(overrides = {}) {
411
+ return {
412
+ id: 1000000001,
413
+ date: "2024-01-15T12:00:00Z",
414
+ ref_type: "market_transaction",
415
+ first_party_id: 1344654522,
416
+ amount: 1e6,
417
+ balance: 1e9,
418
+ reason: "Market transaction",
419
+ description: "Sold items on market",
420
+ ...overrides
421
+ };
422
+ }
423
+ // Fleet test data
424
+ static createFleetInfo(overrides = {}) {
425
+ return {
426
+ fleet_id: 1234567890,
427
+ fleet_boss_id: 1689391488,
428
+ is_free_move: false,
429
+ is_registered: true,
430
+ is_voice_enabled: true,
431
+ motd: "Fleet operations in progress",
432
+ ...overrides
433
+ };
434
+ }
435
+ static createFleetMember(overrides = {}) {
436
+ return {
437
+ character_id: 1689391488,
438
+ role: "fleet_commander",
439
+ ship_type_id: 17918,
440
+ solar_system_id: 30000142,
441
+ station_id: 60003760,
442
+ ...overrides
443
+ };
444
+ }
445
+ static createFleetWing(overrides = {}) {
446
+ return {
447
+ wing_id: 987654321,
448
+ name: "Wing 1",
449
+ squads: [{ squad_id: 123456789, name: "Squad 1" }],
450
+ ...overrides
451
+ };
452
+ }
453
+ // Industry test data
454
+ static createIndustryJob(overrides = {}) {
455
+ return {
456
+ job_id: 1000001,
457
+ installer_id: 1689391488,
458
+ facility_id: 60003760,
459
+ activity_id: 1,
460
+ blueprint_id: 1000000001,
461
+ blueprint_type_id: 17918,
462
+ product_type_id: 17918,
463
+ runs: 1,
464
+ status: "active",
465
+ start_date: "2024-01-15T12:00:00Z",
466
+ end_date: "2024-01-16T12:00:00Z",
467
+ ...overrides
468
+ };
469
+ }
470
+ static createBlueprint(overrides = {}) {
471
+ return {
472
+ item_id: 1000000001,
473
+ type_id: 17918,
474
+ location_id: 60003760,
475
+ location_flag: "Hangar",
476
+ quantity: -2,
477
+ time_efficiency: 10,
478
+ material_efficiency: 10,
479
+ runs: 100,
480
+ ...overrides
481
+ };
482
+ }
483
+ static createCharacterAsset(overrides = {}) {
484
+ return {
485
+ item_id: 1000000002,
486
+ type_id: 34,
487
+ quantity: 1e6,
488
+ location_id: 60003760,
489
+ location_flag: "Hangar",
490
+ location_type: "station",
491
+ ...overrides
492
+ };
493
+ }
494
+ static createCharacterLocation(overrides = {}) {
495
+ return {
496
+ solar_system_id: 30000142,
497
+ station_id: 60003760,
498
+ structure_id: void 0,
499
+ ...overrides
500
+ };
501
+ }
502
+ static createCharacterSkills(overrides = {}) {
503
+ return {
504
+ skills: [
505
+ {
506
+ skill_id: 3300,
507
+ skillpoints_in_skill: 256e3,
508
+ trained_skill_level: 5,
509
+ active_skill_level: 5
510
+ },
511
+ {
512
+ skill_id: 3301,
513
+ skillpoints_in_skill: 128e3,
514
+ trained_skill_level: 4,
515
+ active_skill_level: 4
516
+ }
517
+ ],
518
+ total_sp: 384e3,
519
+ unallocated_sp: 0,
520
+ ...overrides
521
+ };
522
+ }
523
+ // Corporation test data
524
+ static createCorporationInfo(overrides = {}) {
525
+ return {
526
+ corporation_id: 1344654522,
527
+ name: "GoonWaffe",
528
+ ticker: "GEWNS",
529
+ ceo_id: 1689391488,
530
+ creator_id: 1689391488,
531
+ member_count: 15e3,
532
+ tax_rate: 0.1,
533
+ alliance_id: 99005338,
534
+ date_founded: "2003-05-06T00:00:00Z",
535
+ description: "The founding corporation of Goonswarm Federation",
536
+ home_station_id: 60003760,
537
+ shares: 1e3,
538
+ // eslint-disable-next-line sonarjs/no-clear-text-protocols
539
+ url: "http://www.goonfleet.com/",
540
+ faction_id: 500001,
541
+ war_eligible: true,
542
+ ...overrides
543
+ };
544
+ }
545
+ // Market test data
546
+ static createMarketOrder(overrides = {}) {
547
+ return {
548
+ order_id: 123456789,
549
+ type_id: 34,
550
+ // Tritanium
551
+ location_id: 60003760,
552
+ // Jita 4-4
553
+ volume_total: 1e6,
554
+ volume_remain: 5e5,
555
+ min_volume: 1,
556
+ price: 5.5,
557
+ is_buy_order: false,
558
+ system_id: 30000142,
559
+ duration: 90,
560
+ issued: "2023-12-01T12:00:00Z",
561
+ range: "region",
562
+ ...overrides
563
+ };
564
+ }
565
+ // Wallet test data
566
+ static createWalletTransaction(overrides = {}) {
567
+ return {
568
+ transaction_id: 123456789,
569
+ date: "2023-12-01T12:00:00Z",
570
+ type_id: 34,
571
+ location_id: 60003760,
572
+ unit_price: 5.5,
573
+ quantity: 1e3,
574
+ client_id: 1689391488,
575
+ is_buy: false,
576
+ is_personal: true,
577
+ journal_ref_id: 987654321,
578
+ ...overrides
579
+ };
580
+ }
581
+ // Contract test data
582
+ static createContract(overrides = {}) {
583
+ return {
584
+ contract_id: 123456789,
585
+ issuer_id: 1689391488,
586
+ issuer_corporation_id: 1344654522,
587
+ assignee_id: 987654321,
588
+ start_location_id: 60003760,
589
+ end_location_id: 60008494,
590
+ type: "courier",
591
+ status: "outstanding",
592
+ title: "Test Courier Contract",
593
+ for_corporation: false,
594
+ availability: "public",
595
+ date_issued: "2023-12-01T12:00:00Z",
596
+ date_expired: "2023-12-08T12:00:00Z",
597
+ days_to_complete: 3,
598
+ price: 1e6,
599
+ reward: 5e5,
600
+ collateral: 1e7,
601
+ volume: 1e3,
602
+ ...overrides
603
+ };
604
+ }
605
+ // Sovereignty test data (Equinox)
606
+ static createSovereigntySystem(overrides = {}) {
607
+ return {
608
+ solar_systems: [
609
+ {
610
+ solar_system_id: 30000142,
611
+ claim: {
612
+ alliance: {
613
+ alliance_id: 99005338,
614
+ corporation_id: 1344654522,
615
+ claimed_since: "2020-10-08T00:38:16Z",
616
+ is_capital_system: false,
617
+ development: {
618
+ activity_defense_multiplier: 4.5,
619
+ military_level: 5,
620
+ industrial_level: 3,
621
+ strategic_level: 1
622
+ }
623
+ }
624
+ }
625
+ }
626
+ ],
627
+ ...overrides
628
+ };
629
+ }
630
+ static createSovereigntyHub(overrides = {}) {
631
+ return {
632
+ structure_id: 100000001,
633
+ system_id: 30000142,
634
+ corporation_id: 98000002,
635
+ alliance_id: 99000006,
636
+ online: true,
637
+ remaining_reagents: 500,
638
+ installed_upgrades: [1, 2, 3],
639
+ ...overrides
640
+ };
641
+ }
642
+ static createOrbitalSkyhook(overrides = {}) {
643
+ return {
644
+ structure_id: 200000001,
645
+ system_id: 30000142,
646
+ corporation_id: 98000002,
647
+ alliance_id: 99000006,
648
+ online: true,
649
+ reagent_silo_capacity: 1e3,
650
+ reagent_silo_level: 750,
651
+ ...overrides
652
+ };
653
+ }
654
+ static createRaidableSkyhook(overrides = {}) {
655
+ return {
656
+ structure_id: 200000001,
657
+ system_id: 30000142,
658
+ corporation_id: 98000002,
659
+ alliance_id: 99000006,
660
+ raidable_at: "2026-05-20T12:00:00Z",
661
+ is_raidable: true,
662
+ ...overrides
663
+ };
664
+ }
665
+ static createMercenaryDen(overrides = {}) {
666
+ return {
667
+ den_id: 5001,
668
+ system_id: 30000142,
669
+ constellation_id: 20000125,
670
+ region_id: 10000002,
671
+ development_level: 3,
672
+ anarchy_level: 2,
673
+ active_operations: 1,
674
+ ...overrides
675
+ };
676
+ }
677
+ static createMercenaryTacticalOperation(overrides = {}) {
678
+ return {
679
+ operation_id: 7001,
680
+ den_id: 5001,
681
+ system_id: 30000142,
682
+ site_type: "assault",
683
+ status: "active",
684
+ started_at: "2026-05-20T10:00:00Z",
685
+ expires_at: "2026-05-20T22:00:00Z",
686
+ ...overrides
687
+ };
688
+ }
689
+ static createAccessListEntry(overrides = {}) {
690
+ return {
691
+ entity_id: 1689391488,
692
+ entity_type: "character",
693
+ access_type: "allowed",
694
+ ...overrides
695
+ };
696
+ }
697
+ // Error test data
698
+ static createError(statusCode, message) {
699
+ const defaultMessages = {
700
+ 400: "Bad request",
701
+ 401: "Unauthorized",
702
+ 403: "Forbidden",
703
+ 404: "Resource not found",
704
+ 429: "Rate limit exceeded",
705
+ 500: "Internal server error",
706
+ 503: "Service unavailable"
707
+ };
708
+ return new EsiError(
709
+ statusCode,
710
+ // eslint-disable-next-line security/detect-object-injection
711
+ message || defaultMessages[statusCode] || "Unknown error"
712
+ );
713
+ }
714
+ // Test scenarios
715
+ static createTestScenarios() {
716
+ return {
717
+ alliances: [
718
+ { id: 99005338, name: "Goonswarm Federation", ticker: "CONDI" },
719
+ { id: 99000001, name: "Test Alliance Please Ignore", ticker: "TEST" },
720
+ { id: 99000002, name: "Brave Collective", ticker: "BRAVE" },
721
+ { id: 99000003, name: "Pandemic Legion", ticker: "PL" },
722
+ { id: 99000004, name: "Northern Coalition.", ticker: "NC." }
723
+ ],
724
+ characters: [
725
+ {
726
+ id: 1689391488,
727
+ name: "Test Character",
728
+ corp: 1344654522,
729
+ alliance: 99005338
730
+ },
731
+ {
732
+ id: 123456789,
733
+ name: "Demo Pilot",
734
+ corp: 987654321,
735
+ alliance: 99000001
736
+ },
737
+ {
738
+ id: 111111111,
739
+ name: "Alpha Tester",
740
+ corp: 222222222,
741
+ alliance: 99000002
742
+ },
743
+ {
744
+ id: 333333333,
745
+ name: "Beta User",
746
+ corp: 444444444,
747
+ alliance: 99000003
748
+ },
749
+ {
750
+ id: 555555555,
751
+ name: "Gamma Pilot",
752
+ corp: 666666666,
753
+ alliance: 99000004
754
+ }
755
+ ],
756
+ corporations: [
757
+ {
758
+ id: 1344654522,
759
+ name: "GoonWaffe",
760
+ ticker: "GEWNS",
761
+ alliance: 99005338
762
+ },
763
+ {
764
+ id: 987654321,
765
+ name: "Test Corp Please Ignore",
766
+ ticker: "TCPI",
767
+ alliance: 99000001
768
+ },
769
+ {
770
+ id: 222222222,
771
+ name: "Brave Newbies Inc.",
772
+ ticker: "BNI",
773
+ alliance: 99000002
774
+ },
775
+ {
776
+ id: 444444444,
777
+ name: "Sniggerdly",
778
+ ticker: "SNIGG",
779
+ alliance: 99000003
780
+ },
781
+ {
782
+ id: 666666666,
783
+ name: "Tactical Narcotics Team",
784
+ ticker: "TNT",
785
+ alliance: 99000004
786
+ }
787
+ ],
788
+ errorScenarios: [
789
+ { statusCode: 0, label: "network_error", probability: 0.1 },
790
+ { statusCode: 429, label: "rate_limited", probability: 0.05 },
791
+ { statusCode: 500, label: "server_error", probability: 0.02 },
792
+ { statusCode: 504, label: "timeout", probability: 0.03 },
793
+ { statusCode: 404, label: "not_found", probability: 0.01 }
794
+ ]
795
+ };
796
+ }
797
+ // Performance test data
798
+ static createPerformanceTestData(size = "medium") {
799
+ const sizes = {
800
+ small: { alliances: 5, characters: 20, corporations: 10 },
801
+ medium: { alliances: 20, characters: 100, corporations: 50 },
802
+ large: { alliances: 100, characters: 1e3, corporations: 500 }
803
+ };
804
+ const config = sizes[size];
805
+ const data = {
806
+ alliances: [],
807
+ characters: [],
808
+ corporations: []
809
+ };
810
+ for (let i = 1; i <= config.alliances; i++) {
811
+ data.alliances.push(
812
+ this.createAllianceInfo({
813
+ alliance_id: 99e6 + i,
814
+ name: `Test Alliance ${i}`,
815
+ ticker: `TST${i.toString().padStart(2, "0")}`,
816
+ creator_id: 1e6 + i
817
+ })
818
+ );
819
+ }
820
+ for (let i = 1; i <= config.corporations; i++) {
821
+ const allianceIndex = Math.floor(
822
+ (i - 1) / (config.corporations / config.alliances)
823
+ );
824
+ data.corporations.push(
825
+ this.createCorporationInfo({
826
+ corporation_id: 2e6 + i,
827
+ name: `Test Corporation ${i}`,
828
+ ticker: `TC${i.toString().padStart(3, "0")}`,
829
+ // eslint-disable-next-line security/detect-object-injection
830
+ alliance_id: data.alliances[allianceIndex]?.alliance_id,
831
+ ceo_id: 3e6 + i
832
+ })
833
+ );
834
+ }
835
+ for (let i = 1; i <= config.characters; i++) {
836
+ const corpIndex = Math.floor(
837
+ (i - 1) / (config.characters / config.corporations)
838
+ );
839
+ const corp = data.corporations[corpIndex];
840
+ data.characters.push(
841
+ this.createCharacterInfo({
842
+ character_id: 3e6 + i,
843
+ name: `Test Character ${i}`,
844
+ corporation_id: corp?.corporation_id || 2000001,
845
+ alliance_id: corp?.alliance_id
846
+ })
847
+ );
848
+ }
849
+ return data;
850
+ }
851
+ // Realistic test data with relationships
852
+ static createRealisticTestData() {
853
+ const goonswarm = this.createAllianceInfo({
854
+ alliance_id: 99005338,
855
+ name: "Goonswarm Federation",
856
+ ticker: "CONDI",
857
+ creator_id: 1689391488,
858
+ creator_corporation_id: 1344654522,
859
+ executor_corporation_id: 1344654522,
860
+ date_founded: "2010-06-01T00:00:00Z"
861
+ });
862
+ const goonwaffe = this.createCorporationInfo({
863
+ corporation_id: 1344654522,
864
+ name: "GoonWaffe",
865
+ ticker: "GEWNS",
866
+ alliance_id: 99005338,
867
+ ceo_id: 1689391488,
868
+ creator_id: 1689391488,
869
+ member_count: 15e3,
870
+ date_founded: "2003-05-06T00:00:00Z"
871
+ });
872
+ const testCharacter = this.createCharacterInfo({
873
+ character_id: 1689391488,
874
+ name: "The Mittani",
875
+ corporation_id: 1344654522,
876
+ alliance_id: 99005338,
877
+ birthday: "2003-05-06T00:00:00Z"
878
+ });
879
+ return {
880
+ alliances: [goonswarm],
881
+ corporations: [goonwaffe],
882
+ characters: [testCharacter],
883
+ relationships: {
884
+ allianceExecutor: { alliance: 99005338, corporation: 1344654522 },
885
+ corporationCEO: { corporation: 1344654522, character: 1689391488 },
886
+ characterMembership: {
887
+ character: 1689391488,
888
+ corporation: 1344654522,
889
+ alliance: 99005338
890
+ }
891
+ }
892
+ };
893
+ }
894
+ };
895
+ export {
896
+ TestDataFactory
897
+ };
898
+ //# sourceMappingURL=index.mjs.map