@lgriffin/esi.ts 5.1.0 → 6.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 (336) hide show
  1. package/CHANGELOG.md +60 -0
  2. package/README.md +271 -9
  3. package/dist/EsiClient.d.ts +7 -0
  4. package/dist/EsiClient.d.ts.map +1 -1
  5. package/dist/EsiClient.js +19 -0
  6. package/dist/clients/AssetsClient.d.ts +3 -0
  7. package/dist/clients/AssetsClient.d.ts.map +1 -1
  8. package/dist/clients/AssetsClient.js +6 -0
  9. package/dist/clients/BaseEsiClient.d.ts +3 -1
  10. package/dist/clients/BaseEsiClient.d.ts.map +1 -1
  11. package/dist/clients/BaseEsiClient.js +7 -0
  12. package/dist/clients/ContractsClient.d.ts +4 -0
  13. package/dist/clients/ContractsClient.d.ts.map +1 -1
  14. package/dist/clients/ContractsClient.js +9 -0
  15. package/dist/clients/KillmailsClient.d.ts +3 -0
  16. package/dist/clients/KillmailsClient.d.ts.map +1 -1
  17. package/dist/clients/KillmailsClient.js +6 -0
  18. package/dist/clients/MarketClient.d.ts +7 -0
  19. package/dist/clients/MarketClient.d.ts.map +1 -1
  20. package/dist/clients/MarketClient.js +18 -0
  21. package/dist/clients/WalletClient.d.ts +4 -0
  22. package/dist/clients/WalletClient.d.ts.map +1 -1
  23. package/dist/clients/WalletClient.js +9 -0
  24. package/dist/core/ApiClient.d.ts +10 -0
  25. package/dist/core/ApiClient.d.ts.map +1 -1
  26. package/dist/core/ApiClient.js +21 -0
  27. package/dist/core/ApiRequestHandler.d.ts +4 -1
  28. package/dist/core/ApiRequestHandler.d.ts.map +1 -1
  29. package/dist/core/ApiRequestHandler.js +116 -41
  30. package/dist/core/BatchRequestHandler.d.ts +12 -0
  31. package/dist/core/BatchRequestHandler.d.ts.map +1 -0
  32. package/dist/core/BatchRequestHandler.js +66 -0
  33. package/dist/core/constants.d.ts +2 -2
  34. package/dist/core/constants.js +1 -1
  35. package/dist/core/endpoints/EndpointDefinition.d.ts +3 -0
  36. package/dist/core/endpoints/EndpointDefinition.d.ts.map +1 -1
  37. package/dist/core/endpoints/accessListEndpoints.d.ts +16 -0
  38. package/dist/core/endpoints/accessListEndpoints.d.ts.map +1 -1
  39. package/dist/core/endpoints/accessListEndpoints.js +2 -0
  40. package/dist/core/endpoints/allianceEndpoints.d.ts +14 -0
  41. package/dist/core/endpoints/allianceEndpoints.d.ts.map +1 -1
  42. package/dist/core/endpoints/allianceEndpoints.js +3 -0
  43. package/dist/core/endpoints/assetEndpoints.d.ts +27 -0
  44. package/dist/core/endpoints/assetEndpoints.d.ts.map +1 -1
  45. package/dist/core/endpoints/assetEndpoints.js +5 -0
  46. package/dist/core/endpoints/buildEndpointPath.d.ts +7 -0
  47. package/dist/core/endpoints/buildEndpointPath.d.ts.map +1 -0
  48. package/dist/core/endpoints/buildEndpointPath.js +44 -0
  49. package/dist/core/endpoints/calendarEndpoints.d.ts +40 -0
  50. package/dist/core/endpoints/calendarEndpoints.d.ts.map +1 -1
  51. package/dist/core/endpoints/calendarEndpoints.js +5 -0
  52. package/dist/core/endpoints/characterEndpoints.d.ts +105 -0
  53. package/dist/core/endpoints/characterEndpoints.d.ts.map +1 -1
  54. package/dist/core/endpoints/characterEndpoints.js +13 -0
  55. package/dist/core/endpoints/cloneEndpoints.d.ts +21 -0
  56. package/dist/core/endpoints/cloneEndpoints.d.ts.map +1 -1
  57. package/dist/core/endpoints/cloneEndpoints.js +2 -0
  58. package/dist/core/endpoints/contactEndpoints.d.ts +49 -0
  59. package/dist/core/endpoints/contactEndpoints.d.ts.map +1 -1
  60. package/dist/core/endpoints/contactEndpoints.js +8 -0
  61. package/dist/core/endpoints/contractEndpoints.d.ts +184 -0
  62. package/dist/core/endpoints/contractEndpoints.d.ts.map +1 -1
  63. package/dist/core/endpoints/contractEndpoints.js +11 -0
  64. package/dist/core/endpoints/corporationEndpoints.d.ts +192 -0
  65. package/dist/core/endpoints/corporationEndpoints.d.ts.map +1 -1
  66. package/dist/core/endpoints/corporationEndpoints.js +18 -0
  67. package/dist/core/endpoints/createClient.d.ts.map +1 -1
  68. package/dist/core/endpoints/createClient.js +29 -43
  69. package/dist/core/endpoints/dogmaEndpoints.d.ts +38 -0
  70. package/dist/core/endpoints/dogmaEndpoints.d.ts.map +1 -1
  71. package/dist/core/endpoints/dogmaEndpoints.js +4 -0
  72. package/dist/core/endpoints/esi-cache-ttls.generated.d.ts +2 -0
  73. package/dist/core/endpoints/esi-cache-ttls.generated.d.ts.map +1 -0
  74. package/dist/core/endpoints/esi-cache-ttls.generated.js +126 -0
  75. package/dist/core/endpoints/esi-rate-limit-groups.generated.d.ts +7 -0
  76. package/dist/core/endpoints/esi-rate-limit-groups.generated.d.ts.map +1 -0
  77. package/dist/core/endpoints/esi-rate-limit-groups.generated.js +153 -0
  78. package/dist/core/endpoints/esi-scopes.generated.d.ts +3 -0
  79. package/dist/core/endpoints/esi-scopes.generated.d.ts.map +1 -0
  80. package/dist/core/endpoints/esi-scopes.generated.js +127 -0
  81. package/dist/core/endpoints/factionEndpoints.d.ts +154 -0
  82. package/dist/core/endpoints/factionEndpoints.d.ts.map +1 -1
  83. package/dist/core/endpoints/factionEndpoints.js +10 -0
  84. package/dist/core/endpoints/fittingEndpoints.d.ts +12 -0
  85. package/dist/core/endpoints/fittingEndpoints.d.ts.map +1 -1
  86. package/dist/core/endpoints/fittingEndpoints.js +3 -0
  87. package/dist/core/endpoints/fleetEndpoints.d.ts +45 -0
  88. package/dist/core/endpoints/fleetEndpoints.d.ts.map +1 -1
  89. package/dist/core/endpoints/fleetEndpoints.js +6 -0
  90. package/dist/core/endpoints/freelanceJobsEndpoints.d.ts +122 -0
  91. package/dist/core/endpoints/freelanceJobsEndpoints.d.ts.map +1 -1
  92. package/dist/core/endpoints/freelanceJobsEndpoints.js +8 -0
  93. package/dist/core/endpoints/incursionEndpoints.d.ts +15 -0
  94. package/dist/core/endpoints/incursionEndpoints.d.ts.map +1 -1
  95. package/dist/core/endpoints/incursionEndpoints.js +3 -0
  96. package/dist/core/endpoints/industryEndpoints.d.ts +103 -0
  97. package/dist/core/endpoints/industryEndpoints.d.ts.map +1 -1
  98. package/dist/core/endpoints/industryEndpoints.js +10 -0
  99. package/dist/core/endpoints/insuranceEndpoints.d.ts +9 -0
  100. package/dist/core/endpoints/insuranceEndpoints.d.ts.map +1 -1
  101. package/dist/core/endpoints/insuranceEndpoints.js +3 -0
  102. package/dist/core/endpoints/killmailEndpoints.d.ts +41 -0
  103. package/dist/core/endpoints/killmailEndpoints.d.ts.map +1 -1
  104. package/dist/core/endpoints/killmailEndpoints.js +5 -0
  105. package/dist/core/endpoints/locationEndpoints.d.ts +16 -0
  106. package/dist/core/endpoints/locationEndpoints.d.ts.map +1 -1
  107. package/dist/core/endpoints/locationEndpoints.js +4 -0
  108. package/dist/core/endpoints/loyaltyEndpoints.d.ts +17 -0
  109. package/dist/core/endpoints/loyaltyEndpoints.d.ts.map +1 -1
  110. package/dist/core/endpoints/loyaltyEndpoints.js +4 -0
  111. package/dist/core/endpoints/mailEndpoints.d.ts +35 -0
  112. package/dist/core/endpoints/mailEndpoints.d.ts.map +1 -1
  113. package/dist/core/endpoints/mailEndpoints.js +4 -0
  114. package/dist/core/endpoints/marketEndpoints.d.ts +123 -0
  115. package/dist/core/endpoints/marketEndpoints.d.ts.map +1 -1
  116. package/dist/core/endpoints/marketEndpoints.js +9 -0
  117. package/dist/core/endpoints/mercenaryEndpoints.d.ts +24 -0
  118. package/dist/core/endpoints/mercenaryEndpoints.d.ts.map +1 -1
  119. package/dist/core/endpoints/mercenaryEndpoints.js +4 -0
  120. package/dist/core/endpoints/piEndpoints.d.ts +76 -0
  121. package/dist/core/endpoints/piEndpoints.d.ts.map +1 -1
  122. package/dist/core/endpoints/piEndpoints.js +5 -0
  123. package/dist/core/endpoints/skillEndpoints.d.ts +21 -0
  124. package/dist/core/endpoints/skillEndpoints.d.ts.map +1 -1
  125. package/dist/core/endpoints/skillEndpoints.js +5 -0
  126. package/dist/core/endpoints/skyhookEndpoints.d.ts +27 -0
  127. package/dist/core/endpoints/skyhookEndpoints.d.ts.map +1 -1
  128. package/dist/core/endpoints/skyhookEndpoints.js +5 -0
  129. package/dist/core/endpoints/sovereigntyEndpoints.d.ts +37 -0
  130. package/dist/core/endpoints/sovereigntyEndpoints.d.ts.map +1 -1
  131. package/dist/core/endpoints/sovereigntyEndpoints.js +4 -0
  132. package/dist/core/endpoints/statusEndpoints.d.ts +6 -0
  133. package/dist/core/endpoints/statusEndpoints.d.ts.map +1 -1
  134. package/dist/core/endpoints/statusEndpoints.js +2 -0
  135. package/dist/core/endpoints/universeEndpoints.d.ts +272 -0
  136. package/dist/core/endpoints/universeEndpoints.d.ts.map +1 -1
  137. package/dist/core/endpoints/universeEndpoints.js +25 -0
  138. package/dist/core/endpoints/walletEndpoints.d.ts +51 -0
  139. package/dist/core/endpoints/walletEndpoints.d.ts.map +1 -1
  140. package/dist/core/endpoints/walletEndpoints.js +6 -0
  141. package/dist/core/endpoints/warEndpoints.d.ts +30 -0
  142. package/dist/core/endpoints/warEndpoints.d.ts.map +1 -1
  143. package/dist/core/endpoints/warEndpoints.js +5 -0
  144. package/dist/core/pagination/AsyncPaginationIterator.js +2 -2
  145. package/dist/core/pagination/PaginationHandler.d.ts +1 -1
  146. package/dist/core/pagination/PaginationHandler.d.ts.map +1 -1
  147. package/dist/core/pagination/PaginationHandler.js +2 -2
  148. package/dist/core/rateLimiter/IRateLimiter.d.ts +13 -3
  149. package/dist/core/rateLimiter/IRateLimiter.d.ts.map +1 -1
  150. package/dist/core/rateLimiter/RateLimiter.d.ts +24 -51
  151. package/dist/core/rateLimiter/RateLimiter.d.ts.map +1 -1
  152. package/dist/core/rateLimiter/RateLimiter.js +208 -98
  153. package/dist/core/util/error.d.ts +10 -1
  154. package/dist/core/util/error.d.ts.map +1 -1
  155. package/dist/core/util/error.js +24 -2
  156. package/dist/core/util/retry.d.ts +8 -0
  157. package/dist/core/util/retry.d.ts.map +1 -0
  158. package/dist/core/util/retry.js +9 -0
  159. package/dist/core/util/stringUtil.d.ts +2 -0
  160. package/dist/core/util/stringUtil.d.ts.map +1 -0
  161. package/dist/core/util/stringUtil.js +6 -0
  162. package/dist/index.d.ts +8 -2
  163. package/dist/index.d.ts.map +1 -1
  164. package/dist/index.js +37 -2
  165. package/dist/schemas/access-lists.d.ts +30 -0
  166. package/dist/schemas/access-lists.d.ts.map +1 -0
  167. package/dist/schemas/access-lists.js +14 -0
  168. package/dist/schemas/alliance.d.ts +30 -0
  169. package/dist/schemas/alliance.d.ts.map +1 -0
  170. package/dist/schemas/alliance.js +28 -0
  171. package/dist/schemas/assets.d.ts +28 -0
  172. package/dist/schemas/assets.d.ts.map +1 -0
  173. package/dist/schemas/assets.js +26 -0
  174. package/dist/schemas/calendar.d.ts +41 -0
  175. package/dist/schemas/calendar.d.ts.map +1 -0
  176. package/dist/schemas/calendar.js +43 -0
  177. package/dist/schemas/character.d.ts +122 -0
  178. package/dist/schemas/character.d.ts.map +1 -0
  179. package/dist/schemas/character.js +114 -0
  180. package/dist/schemas/clones.d.ts +23 -0
  181. package/dist/schemas/clones.d.ts.map +1 -0
  182. package/dist/schemas/clones.js +21 -0
  183. package/dist/schemas/common.d.ts +59 -0
  184. package/dist/schemas/common.d.ts.map +1 -0
  185. package/dist/schemas/common.js +34 -0
  186. package/dist/schemas/contacts.d.ts +18 -0
  187. package/dist/schemas/contacts.d.ts.map +1 -0
  188. package/dist/schemas/contacts.js +15 -0
  189. package/dist/schemas/contracts.d.ts +63 -0
  190. package/dist/schemas/contracts.d.ts.map +1 -0
  191. package/dist/schemas/contracts.js +58 -0
  192. package/dist/schemas/corporation.d.ts +193 -0
  193. package/dist/schemas/corporation.d.ts.map +1 -0
  194. package/dist/schemas/corporation.js +178 -0
  195. package/dist/schemas/dogma.d.ts +40 -0
  196. package/dist/schemas/dogma.d.ts.map +1 -0
  197. package/dist/schemas/dogma.js +42 -0
  198. package/dist/schemas/faction-warfare.d.ts +95 -0
  199. package/dist/schemas/faction-warfare.d.ts.map +1 -0
  200. package/dist/schemas/faction-warfare.js +92 -0
  201. package/dist/schemas/fittings.d.ts +13 -0
  202. package/dist/schemas/fittings.d.ts.map +1 -0
  203. package/dist/schemas/fittings.js +15 -0
  204. package/dist/schemas/fleet.d.ts +46 -0
  205. package/dist/schemas/fleet.d.ts.map +1 -0
  206. package/dist/schemas/fleet.js +48 -0
  207. package/dist/schemas/freelance-jobs.d.ts +141 -0
  208. package/dist/schemas/freelance-jobs.d.ts.map +1 -0
  209. package/dist/schemas/freelance-jobs.js +99 -0
  210. package/dist/schemas/incursions.d.ts +16 -0
  211. package/dist/schemas/incursions.d.ts.map +1 -0
  212. package/dist/schemas/incursions.js +14 -0
  213. package/dist/schemas/index.d.ts +33 -0
  214. package/dist/schemas/index.d.ts.map +1 -0
  215. package/dist/schemas/index.js +48 -0
  216. package/dist/schemas/industry.d.ts +73 -0
  217. package/dist/schemas/industry.d.ts.map +1 -0
  218. package/dist/schemas/industry.js +75 -0
  219. package/dist/schemas/insurance.d.ts +10 -0
  220. package/dist/schemas/insurance.d.ts.map +1 -0
  221. package/dist/schemas/insurance.js +12 -0
  222. package/dist/schemas/killmails.d.ts +38 -0
  223. package/dist/schemas/killmails.d.ts.map +1 -0
  224. package/dist/schemas/killmails.js +42 -0
  225. package/dist/schemas/location.d.ts +18 -0
  226. package/dist/schemas/location.d.ts.map +1 -0
  227. package/dist/schemas/location.js +20 -0
  228. package/dist/schemas/loyalty.d.ts +18 -0
  229. package/dist/schemas/loyalty.d.ts.map +1 -0
  230. package/dist/schemas/loyalty.js +20 -0
  231. package/dist/schemas/mail.d.ts +25 -0
  232. package/dist/schemas/mail.d.ts.map +1 -0
  233. package/dist/schemas/mail.js +29 -0
  234. package/dist/schemas/market.d.ts +29 -0
  235. package/dist/schemas/market.d.ts.map +1 -0
  236. package/dist/schemas/market.js +26 -0
  237. package/dist/schemas/mercenary.d.ts +25 -0
  238. package/dist/schemas/mercenary.d.ts.map +1 -0
  239. package/dist/schemas/mercenary.js +22 -0
  240. package/dist/schemas/pi.d.ts +77 -0
  241. package/dist/schemas/pi.d.ts.map +1 -0
  242. package/dist/schemas/pi.js +85 -0
  243. package/dist/schemas/skills.d.ts +18 -0
  244. package/dist/schemas/skills.d.ts.map +1 -0
  245. package/dist/schemas/skills.js +20 -0
  246. package/dist/schemas/skyhooks.d.ts +28 -0
  247. package/dist/schemas/skyhooks.d.ts.map +1 -0
  248. package/dist/schemas/skyhooks.js +30 -0
  249. package/dist/schemas/sovereignty.d.ts +45 -0
  250. package/dist/schemas/sovereignty.d.ts.map +1 -0
  251. package/dist/schemas/sovereignty.js +43 -0
  252. package/dist/schemas/status.d.ts +8 -0
  253. package/dist/schemas/status.d.ts.map +1 -0
  254. package/dist/schemas/status.js +10 -0
  255. package/dist/schemas/universe.d.ts +286 -0
  256. package/dist/schemas/universe.d.ts.map +1 -0
  257. package/dist/schemas/universe.js +245 -0
  258. package/dist/schemas/wallet.d.ts +27 -0
  259. package/dist/schemas/wallet.d.ts.map +1 -0
  260. package/dist/schemas/wallet.js +29 -0
  261. package/dist/schemas/wars.d.ts +27 -0
  262. package/dist/schemas/wars.d.ts.map +1 -0
  263. package/dist/schemas/wars.js +31 -0
  264. package/dist/testing/TestDataFactory.d.ts +44 -3
  265. package/dist/testing/TestDataFactory.d.ts.map +1 -1
  266. package/dist/types/access-lists.d.ts +4 -10
  267. package/dist/types/access-lists.d.ts.map +1 -1
  268. package/dist/types/alliance.d.ts +6 -24
  269. package/dist/types/alliance.d.ts.map +1 -1
  270. package/dist/types/api-responses.d.ts +1 -0
  271. package/dist/types/api-responses.d.ts.map +1 -1
  272. package/dist/types/api-responses.js +24 -0
  273. package/dist/types/assets.d.ts +5 -22
  274. package/dist/types/assets.d.ts.map +1 -1
  275. package/dist/types/calendar.d.ts +5 -23
  276. package/dist/types/calendar.d.ts.map +1 -1
  277. package/dist/types/character.d.ts +15 -104
  278. package/dist/types/character.d.ts.map +1 -1
  279. package/dist/types/clones.d.ts +3 -15
  280. package/dist/types/clones.d.ts.map +1 -1
  281. package/dist/types/common.d.ts +4 -12
  282. package/dist/types/common.d.ts.map +1 -1
  283. package/dist/types/contacts.d.ts +4 -11
  284. package/dist/types/contacts.d.ts.map +1 -1
  285. package/dist/types/contracts.d.ts +5 -39
  286. package/dist/types/contracts.d.ts.map +1 -1
  287. package/dist/types/corporation.d.ts +18 -166
  288. package/dist/types/corporation.d.ts.map +1 -1
  289. package/dist/types/dogma.d.ts +5 -38
  290. package/dist/types/dogma.d.ts.map +1 -1
  291. package/dist/types/faction-warfare.d.ts +8 -88
  292. package/dist/types/faction-warfare.d.ts.map +1 -1
  293. package/dist/types/fittings.d.ts +3 -11
  294. package/dist/types/fittings.d.ts.map +1 -1
  295. package/dist/types/fleet.d.ts +6 -34
  296. package/dist/types/fleet.d.ts.map +1 -1
  297. package/dist/types/freelance-jobs.d.ts +10 -91
  298. package/dist/types/freelance-jobs.d.ts.map +1 -1
  299. package/dist/types/generated/esi-spec.generated.d.ts +1763 -0
  300. package/dist/types/generated/esi-spec.generated.d.ts.map +1 -0
  301. package/dist/types/generated/esi-spec.generated.js +6 -0
  302. package/dist/types/incursions.d.ts +3 -10
  303. package/dist/types/incursions.d.ts.map +1 -1
  304. package/dist/types/industry.d.ts +9 -64
  305. package/dist/types/industry.d.ts.map +1 -1
  306. package/dist/types/insurance.d.ts +3 -8
  307. package/dist/types/insurance.d.ts.map +1 -1
  308. package/dist/types/killmails.d.ts +4 -36
  309. package/dist/types/killmails.d.ts.map +1 -1
  310. package/dist/types/location.d.ts +5 -16
  311. package/dist/types/location.d.ts.map +1 -1
  312. package/dist/types/loyalty.d.ts +4 -16
  313. package/dist/types/loyalty.d.ts.map +1 -1
  314. package/dist/types/mail.d.ts +4 -18
  315. package/dist/types/mail.d.ts.map +1 -1
  316. package/dist/types/market.d.ts +4 -22
  317. package/dist/types/market.d.ts.map +1 -1
  318. package/dist/types/mercenary.d.ts +4 -18
  319. package/dist/types/mercenary.d.ts.map +1 -1
  320. package/dist/types/pi.d.ts +5 -66
  321. package/dist/types/pi.d.ts.map +1 -1
  322. package/dist/types/skills.d.ts +4 -16
  323. package/dist/types/skills.d.ts.map +1 -1
  324. package/dist/types/skyhooks.d.ts +5 -26
  325. package/dist/types/skyhooks.d.ts.map +1 -1
  326. package/dist/types/sovereignty.d.ts +5 -32
  327. package/dist/types/sovereignty.d.ts.map +1 -1
  328. package/dist/types/status.d.ts +3 -6
  329. package/dist/types/status.d.ts.map +1 -1
  330. package/dist/types/universe.d.ts +26 -274
  331. package/dist/types/universe.d.ts.map +1 -1
  332. package/dist/types/wallet.d.ts +4 -25
  333. package/dist/types/wallet.d.ts.map +1 -1
  334. package/dist/types/wars.d.ts +3 -25
  335. package/dist/types/wars.d.ts.map +1 -1
  336. package/package.json +51 -46
@@ -98,5 +98,14 @@ class ContractsClient extends BaseEsiClient_1.BaseEsiClient {
98
98
  getCorporationContractItems(corporationId, contractId) {
99
99
  return this.api.getCorporationContractItems(corporationId, contractId);
100
100
  }
101
+ streamPublicContracts(regionId) {
102
+ return this.streamEndpoint('getPublicContracts', regionId);
103
+ }
104
+ streamCharacterContracts(characterId) {
105
+ return this.streamEndpoint('getCharacterContracts', characterId);
106
+ }
107
+ streamCorporationContracts(corporationId) {
108
+ return this.streamEndpoint('getCorporationContracts', corporationId);
109
+ }
101
110
  }
102
111
  exports.ContractsClient = ContractsClient;
@@ -2,6 +2,7 @@ import { ApiClient } from '../core/ApiClient';
2
2
  import { BaseEsiClient } from './BaseEsiClient';
3
3
  import { killmailEndpoints } from '../core/endpoints/killmailEndpoints';
4
4
  import { KillmailSummary, Killmail } from '../types/api-responses';
5
+ import { PageResult } from '../core/pagination/AsyncPaginationIterator';
5
6
  export declare class KillmailsClient extends BaseEsiClient<typeof killmailEndpoints> {
6
7
  constructor(client: ApiClient);
7
8
  /**
@@ -28,5 +29,7 @@ export declare class KillmailsClient extends BaseEsiClient<typeof killmailEndpoi
28
29
  * @returns The full killmail details including victim, attackers, and items
29
30
  */
30
31
  getKillmail(killmailId: number, killmailHash: string): Promise<Killmail>;
32
+ streamCharacterRecentKillmails(characterId: number): AsyncGenerator<PageResult<KillmailSummary>, void, undefined>;
33
+ streamCorporationRecentKillmails(corporationId: number): AsyncGenerator<PageResult<KillmailSummary>, void, undefined>;
31
34
  }
32
35
  //# sourceMappingURL=KillmailsClient.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"KillmailsClient.d.ts","sourceRoot":"","sources":["../../src/clients/KillmailsClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAEnE,qBAAa,eAAgB,SAAQ,aAAa,CAAC,OAAO,iBAAiB,CAAC;gBAC9D,MAAM,EAAE,SAAS;IAI7B;;;;;;OAMG;IACH,2BAA2B,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAM5E;;;;;;OAMG;IACH,6BAA6B,CAC3B,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,eAAe,EAAE,CAAC;IAM7B;;;;;;OAMG;IACH,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;CAGzE"}
1
+ {"version":3,"file":"KillmailsClient.d.ts","sourceRoot":"","sources":["../../src/clients/KillmailsClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,4CAA4C,CAAC;AAExE,qBAAa,eAAgB,SAAQ,aAAa,CAAC,OAAO,iBAAiB,CAAC;gBAC9D,MAAM,EAAE,SAAS;IAI7B;;;;;;OAMG;IACH,2BAA2B,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAM5E;;;;;;OAMG;IACH,6BAA6B,CAC3B,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,eAAe,EAAE,CAAC;IAM7B;;;;;;OAMG;IACH,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAIxE,8BAA8B,CAC5B,WAAW,EAAE,MAAM,GAClB,cAAc,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC;IAO/D,gCAAgC,CAC9B,aAAa,EAAE,MAAM,GACpB,cAAc,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC;CAMhE"}
@@ -37,5 +37,11 @@ class KillmailsClient extends BaseEsiClient_1.BaseEsiClient {
37
37
  getKillmail(killmailId, killmailHash) {
38
38
  return this.api.getKillmail(killmailId, killmailHash);
39
39
  }
40
+ streamCharacterRecentKillmails(characterId) {
41
+ return this.streamEndpoint('getCharacterRecentKillmails', characterId);
42
+ }
43
+ streamCorporationRecentKillmails(corporationId) {
44
+ return this.streamEndpoint('getCorporationRecentKillmails', corporationId);
45
+ }
40
46
  }
41
47
  exports.KillmailsClient = KillmailsClient;
@@ -2,6 +2,7 @@ import { ApiClient } from '../core/ApiClient';
2
2
  import { BaseEsiClient } from './BaseEsiClient';
3
3
  import { marketEndpoints } from '../core/endpoints/marketEndpoints';
4
4
  import { MarketOrder, MarketHistory } from '../types/api-responses';
5
+ import { PageResult } from '../core/pagination/AsyncPaginationIterator';
5
6
  export declare class MarketClient extends BaseEsiClient<typeof marketEndpoints> {
6
7
  constructor(client: ApiClient);
7
8
  /**
@@ -94,5 +95,11 @@ export declare class MarketClient extends BaseEsiClient<typeof marketEndpoints>
94
95
  * @returns A list of active market orders in the structure
95
96
  */
96
97
  getMarketOrdersInStructure(structureId: number): Promise<MarketOrder[]>;
98
+ streamMarketOrders(regionId: number): AsyncGenerator<PageResult<MarketOrder>, void, undefined>;
99
+ streamMarketTypes(regionId: number): AsyncGenerator<PageResult<number>, void, undefined>;
100
+ streamCharacterOrderHistory(characterId: number): AsyncGenerator<PageResult<MarketOrder>, void, undefined>;
101
+ streamCorporationOrders(corporationId: number): AsyncGenerator<PageResult<MarketOrder>, void, undefined>;
102
+ streamCorporationOrderHistory(corporationId: number): AsyncGenerator<PageResult<MarketOrder>, void, undefined>;
103
+ streamMarketOrdersInStructure(structureId: number): AsyncGenerator<PageResult<MarketOrder>, void, undefined>;
97
104
  }
98
105
  //# sourceMappingURL=MarketClient.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MarketClient.d.ts","sourceRoot":"","sources":["../../src/clients/MarketClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEpE,qBAAa,YAAa,SAAQ,aAAa,CAAC,OAAO,eAAe,CAAC;gBACzD,MAAM,EAAE,SAAS;IAI7B;;;;;;OAMG;IACH,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAI/D;;;;;;OAMG;IACH,wBAAwB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAMrE;;;;;;OAMG;IACH,oBAAoB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAMnE;;;;;;OAMG;IACH,0BAA0B,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAMzE;;;;;;OAMG;IACH,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAM5E;;;;;OAKG;IACH,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAIzD;;;;;OAKG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAInD;;;;OAIG;IACH,eAAe,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAIpC;;;;;OAKG;IACH,yBAAyB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC;QACxD,eAAe,EAAE,MAAM,CAAC;QACxB,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,CAAC;IAUF;;;;OAIG;IACH,eAAe,IAAI,OAAO,CACxB;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CACvE;IAMD;;;;;OAKG;IACH,0BAA0B,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;CAKxE"}
1
+ {"version":3,"file":"MarketClient.d.ts","sourceRoot":"","sources":["../../src/clients/MarketClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,4CAA4C,CAAC;AAExE,qBAAa,YAAa,SAAQ,aAAa,CAAC,OAAO,eAAe,CAAC;gBACzD,MAAM,EAAE,SAAS;IAI7B;;;;;;OAMG;IACH,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAI/D;;;;;;OAMG;IACH,wBAAwB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAMrE;;;;;;OAMG;IACH,oBAAoB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAMnE;;;;;;OAMG;IACH,0BAA0B,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAMzE;;;;;;OAMG;IACH,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAM5E;;;;;OAKG;IACH,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAIzD;;;;;OAKG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAInD;;;;OAIG;IACH,eAAe,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAIpC;;;;;OAKG;IACH,yBAAyB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC;QACxD,eAAe,EAAE,MAAM,CAAC;QACxB,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,CAAC;IAUF;;;;OAIG;IACH,eAAe,IAAI,OAAO,CACxB;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CACvE;IAMD;;;;;OAKG;IACH,0BAA0B,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAMvE,kBAAkB,CAChB,QAAQ,EAAE,MAAM,GACf,cAAc,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC;IAI3D,iBAAiB,CACf,QAAQ,EAAE,MAAM,GACf,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC;IAItD,2BAA2B,CACzB,WAAW,EAAE,MAAM,GAClB,cAAc,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC;IAO3D,uBAAuB,CACrB,aAAa,EAAE,MAAM,GACpB,cAAc,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC;IAO3D,6BAA6B,CAC3B,aAAa,EAAE,MAAM,GACpB,cAAc,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC;IAO3D,6BAA6B,CAC3B,WAAW,EAAE,MAAM,GAClB,cAAc,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC;CAM5D"}
@@ -109,5 +109,23 @@ class MarketClient extends BaseEsiClient_1.BaseEsiClient {
109
109
  getMarketOrdersInStructure(structureId) {
110
110
  return this.api.getMarketOrdersInStructure(structureId);
111
111
  }
112
+ streamMarketOrders(regionId) {
113
+ return this.streamEndpoint('getMarketOrders', regionId, 'all');
114
+ }
115
+ streamMarketTypes(regionId) {
116
+ return this.streamEndpoint('getMarketTypes', regionId);
117
+ }
118
+ streamCharacterOrderHistory(characterId) {
119
+ return this.streamEndpoint('getCharacterOrderHistory', characterId);
120
+ }
121
+ streamCorporationOrders(corporationId) {
122
+ return this.streamEndpoint('getCorporationOrders', corporationId);
123
+ }
124
+ streamCorporationOrderHistory(corporationId) {
125
+ return this.streamEndpoint('getCorporationOrderHistory', corporationId);
126
+ }
127
+ streamMarketOrdersInStructure(structureId) {
128
+ return this.streamEndpoint('getMarketOrdersInStructure', structureId);
129
+ }
112
130
  }
113
131
  exports.MarketClient = MarketClient;
@@ -2,6 +2,7 @@ import { ApiClient } from '../core/ApiClient';
2
2
  import { BaseEsiClient } from './BaseEsiClient';
3
3
  import { walletEndpoints } from '../core/endpoints/walletEndpoints';
4
4
  import { WalletJournal, WalletTransaction } from '../types/api-responses';
5
+ import { PageResult } from '../core/pagination/AsyncPaginationIterator';
5
6
  export declare class WalletClient extends BaseEsiClient<typeof walletEndpoints> {
6
7
  constructor(client: ApiClient);
7
8
  /**
@@ -57,5 +58,8 @@ export declare class WalletClient extends BaseEsiClient<typeof walletEndpoints>
57
58
  * @requires Authentication
58
59
  */
59
60
  getCorporationWalletTransactions(corporationId: number, division: number): Promise<WalletTransaction[]>;
61
+ streamCharacterWalletJournal(characterId: number): AsyncGenerator<PageResult<WalletJournal>, void, undefined>;
62
+ streamCorporationWalletJournal(corporationId: number, division: number): AsyncGenerator<PageResult<WalletJournal>, void, undefined>;
63
+ streamCharacterWalletTransactions(characterId: number): AsyncGenerator<PageResult<WalletTransaction>, void, undefined>;
60
64
  }
61
65
  //# sourceMappingURL=WalletClient.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"WalletClient.d.ts","sourceRoot":"","sources":["../../src/clients/WalletClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE1E,qBAAa,YAAa,SAAQ,aAAa,CAAC,OAAO,eAAe,CAAC;gBACzD,MAAM,EAAE,SAAS;IAI7B;;;;;;OAMG;IACH,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIxD;;;;;;OAMG;IACH,yBAAyB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAMxE;;;;;;OAMG;IACH,8BAA8B,CAC5B,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAM/B;;;;;;OAMG;IACH,qBAAqB,CACnB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAMnD;;;;;;;OAOG;IACH,2BAA2B,CACzB,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,aAAa,EAAE,CAAC;IAO3B;;;;;;;OAOG;IACH,gCAAgC,CAC9B,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,iBAAiB,EAAE,CAAC;CAMhC"}
1
+ {"version":3,"file":"WalletClient.d.ts","sourceRoot":"","sources":["../../src/clients/WalletClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,4CAA4C,CAAC;AAExE,qBAAa,YAAa,SAAQ,aAAa,CAAC,OAAO,eAAe,CAAC;gBACzD,MAAM,EAAE,SAAS;IAI7B;;;;;;OAMG;IACH,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIxD;;;;;;OAMG;IACH,yBAAyB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAMxE;;;;;;OAMG;IACH,8BAA8B,CAC5B,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAM/B;;;;;;OAMG;IACH,qBAAqB,CACnB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAMnD;;;;;;;OAOG;IACH,2BAA2B,CACzB,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,aAAa,EAAE,CAAC;IAO3B;;;;;;;OAOG;IACH,gCAAgC,CAC9B,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAO/B,4BAA4B,CAC1B,WAAW,EAAE,MAAM,GAClB,cAAc,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC;IAO7D,8BAA8B,CAC5B,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,MAAM,GACf,cAAc,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC;IAQ7D,iCAAiC,CAC/B,WAAW,EAAE,MAAM,GAClB,cAAc,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC;CAMlE"}
@@ -69,5 +69,14 @@ class WalletClient extends BaseEsiClient_1.BaseEsiClient {
69
69
  getCorporationWalletTransactions(corporationId, division) {
70
70
  return this.api.getCorporationWalletTransactions(corporationId, division);
71
71
  }
72
+ streamCharacterWalletJournal(characterId) {
73
+ return this.streamEndpoint('getCharacterWalletJournal', characterId);
74
+ }
75
+ streamCorporationWalletJournal(corporationId, division) {
76
+ return this.streamEndpoint('getCorporationWalletJournal', corporationId, division);
77
+ }
78
+ streamCharacterWalletTransactions(characterId) {
79
+ return this.streamEndpoint('getCharacterWalletTransactions', characterId);
80
+ }
72
81
  }
73
82
  exports.WalletClient = WalletClient;
@@ -3,6 +3,7 @@ import { ICache } from './cache/ICache';
3
3
  import { IRateLimiter } from './rateLimiter/IRateLimiter';
4
4
  import { CircuitBreaker } from './circuitBreaker/CircuitBreaker';
5
5
  import { RequestDeduplicator } from './RequestDeduplicator';
6
+ import { RetryConfig } from './util/retry';
6
7
  export type EsiDatasource = 'tranquility' | 'singularity';
7
8
  export type TokenProvider = () => Promise<string>;
8
9
  export declare class ApiClient {
@@ -18,6 +19,9 @@ export declare class ApiClient {
18
19
  private circuitBreaker;
19
20
  private timeout;
20
21
  private deduplicator;
22
+ private retryConfig;
23
+ private validateResponse;
24
+ private language?;
21
25
  constructor(clientId: string, link: string, accessToken?: string | undefined);
22
26
  getTimeout(): number;
23
27
  setTimeout(timeout: number): void;
@@ -29,6 +33,10 @@ export declare class ApiClient {
29
33
  setCircuitBreaker(cb: CircuitBreaker | null): void;
30
34
  getDeduplicator(): RequestDeduplicator | null;
31
35
  setDeduplicator(dedup: RequestDeduplicator | null): void;
36
+ getRetryConfig(): RetryConfig | null;
37
+ setRetryConfig(config: RetryConfig | null): void;
38
+ getValidateResponse(): boolean;
39
+ setValidateResponse(validate: boolean): void;
32
40
  getMiddleware(): MiddlewareManager;
33
41
  addRequestInterceptor(fn: RequestInterceptor): () => void;
34
42
  addResponseInterceptor(fn: ResponseInterceptor): () => void;
@@ -36,6 +44,8 @@ export declare class ApiClient {
36
44
  getLink(): string;
37
45
  getDatasource(): EsiDatasource | undefined;
38
46
  setDatasource(datasource: EsiDatasource | undefined): void;
47
+ getLanguage(): string | undefined;
48
+ setLanguage(language: string | undefined): void;
39
49
  setAccessToken(token: string): void;
40
50
  setTokenProvider(provider: TokenProvider | undefined): void;
41
51
  hasTokenProvider(): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"ApiClient.d.ts","sourceRoot":"","sources":["../../src/core/ApiClient.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,MAAM,MAAM,aAAa,GAAG,aAAa,GAAG,aAAa,CAAC;AAE1D,MAAM,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;AAElD,qBAAa,SAAS;IAYlB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,WAAW,CAAC;IAbtB,OAAO,CAAC,UAAU,CAAC,CAAgB;IACnC,OAAO,CAAC,aAAa,CAAC,CAAgB;IACtC,OAAO,CAAC,eAAe,CAAC,CAAkB;IAC1C,OAAO,CAAC,UAAU,CAA8C;IAChE,OAAO,CAAC,KAAK,CAAuB;IACpC,OAAO,CAAC,WAAW,CAA6B;IAChD,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,YAAY,CAAoC;gBAG9C,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,WAAW,CAAC,EAAE,MAAM,YAAA;IAK9B,UAAU,IAAI,MAAM;IAIpB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIjC,QAAQ,IAAI,MAAM,GAAG,IAAI;IAIzB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAIpC,cAAc,IAAI,YAAY,GAAG,IAAI;IAIrC,cAAc,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,GAAG,IAAI;IAIlD,iBAAiB,IAAI,cAAc,GAAG,IAAI;IAI1C,iBAAiB,CAAC,EAAE,EAAE,cAAc,GAAG,IAAI,GAAG,IAAI;IAIlD,eAAe,IAAI,mBAAmB,GAAG,IAAI;IAI7C,eAAe,CAAC,KAAK,EAAE,mBAAmB,GAAG,IAAI,GAAG,IAAI;IAIxD,aAAa,IAAI,iBAAiB;IAIlC,qBAAqB,CAAC,EAAE,EAAE,kBAAkB,GAAG,MAAM,IAAI;IAIzD,sBAAsB,CAAC,EAAE,EAAE,mBAAmB,GAAG,MAAM,IAAI;IAI3D,sBAAsB,IAAI,MAAM,GAAG,SAAS;IAI5C,OAAO,IAAI,MAAM;IAIjB,aAAa,IAAI,aAAa,GAAG,SAAS;IAI1C,aAAa,CAAC,UAAU,EAAE,aAAa,GAAG,SAAS,GAAG,IAAI;IAI1D,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAInC,gBAAgB,CAAC,QAAQ,EAAE,aAAa,GAAG,SAAS,GAAG,IAAI;IAI3D,gBAAgB,IAAI,OAAO;IAIrB,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;CAuBtC"}
1
+ {"version":3,"file":"ApiClient.d.ts","sourceRoot":"","sources":["../../src/core/ApiClient.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,MAAM,aAAa,GAAG,aAAa,GAAG,aAAa,CAAC;AAE1D,MAAM,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;AAElD,qBAAa,SAAS;IAelB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,WAAW,CAAC;IAhBtB,OAAO,CAAC,UAAU,CAAC,CAAgB;IACnC,OAAO,CAAC,aAAa,CAAC,CAAgB;IACtC,OAAO,CAAC,eAAe,CAAC,CAAkB;IAC1C,OAAO,CAAC,UAAU,CAA8C;IAChE,OAAO,CAAC,KAAK,CAAuB;IACpC,OAAO,CAAC,WAAW,CAA6B;IAChD,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,YAAY,CAAoC;IACxD,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,gBAAgB,CAAiB;IACzC,OAAO,CAAC,QAAQ,CAAC,CAAS;gBAGhB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,WAAW,CAAC,EAAE,MAAM,YAAA;IAK9B,UAAU,IAAI,MAAM;IAIpB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIjC,QAAQ,IAAI,MAAM,GAAG,IAAI;IAIzB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAIpC,cAAc,IAAI,YAAY,GAAG,IAAI;IAIrC,cAAc,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,GAAG,IAAI;IAIlD,iBAAiB,IAAI,cAAc,GAAG,IAAI;IAI1C,iBAAiB,CAAC,EAAE,EAAE,cAAc,GAAG,IAAI,GAAG,IAAI;IAIlD,eAAe,IAAI,mBAAmB,GAAG,IAAI;IAI7C,eAAe,CAAC,KAAK,EAAE,mBAAmB,GAAG,IAAI,GAAG,IAAI;IAIxD,cAAc,IAAI,WAAW,GAAG,IAAI;IAIpC,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,GAAG,IAAI;IAIhD,mBAAmB,IAAI,OAAO;IAI9B,mBAAmB,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI;IAI5C,aAAa,IAAI,iBAAiB;IAIlC,qBAAqB,CAAC,EAAE,EAAE,kBAAkB,GAAG,MAAM,IAAI;IAIzD,sBAAsB,CAAC,EAAE,EAAE,mBAAmB,GAAG,MAAM,IAAI;IAI3D,sBAAsB,IAAI,MAAM,GAAG,SAAS;IAI5C,OAAO,IAAI,MAAM;IAIjB,aAAa,IAAI,aAAa,GAAG,SAAS;IAI1C,aAAa,CAAC,UAAU,EAAE,aAAa,GAAG,SAAS,GAAG,IAAI;IAI1D,WAAW,IAAI,MAAM,GAAG,SAAS;IAIjC,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAI/C,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAInC,gBAAgB,CAAC,QAAQ,EAAE,aAAa,GAAG,SAAS,GAAG,IAAI;IAI3D,gBAAgB,IAAI,OAAO;IAIrB,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;CAuBtC"}
@@ -15,6 +15,9 @@ class ApiClient {
15
15
  circuitBreaker = null;
16
16
  timeout = 30_000;
17
17
  deduplicator = null;
18
+ retryConfig = null;
19
+ validateResponse = true;
20
+ language;
18
21
  constructor(clientId, link, accessToken) {
19
22
  this.clientId = clientId;
20
23
  this.link = link;
@@ -51,6 +54,18 @@ class ApiClient {
51
54
  setDeduplicator(dedup) {
52
55
  this.deduplicator = dedup;
53
56
  }
57
+ getRetryConfig() {
58
+ return this.retryConfig;
59
+ }
60
+ setRetryConfig(config) {
61
+ this.retryConfig = config;
62
+ }
63
+ getValidateResponse() {
64
+ return this.validateResponse;
65
+ }
66
+ setValidateResponse(validate) {
67
+ this.validateResponse = validate;
68
+ }
54
69
  getMiddleware() {
55
70
  return this.middleware;
56
71
  }
@@ -72,6 +87,12 @@ class ApiClient {
72
87
  setDatasource(datasource) {
73
88
  this.datasource = datasource;
74
89
  }
90
+ getLanguage() {
91
+ return this.language;
92
+ }
93
+ setLanguage(language) {
94
+ this.language = language;
95
+ }
75
96
  setAccessToken(token) {
76
97
  this.accessToken = token;
77
98
  }
@@ -5,7 +5,10 @@ export interface EsiHandlerResponse {
5
5
  body: unknown;
6
6
  fromCache?: boolean;
7
7
  stale?: boolean;
8
+ cacheHitType?: 'spec-ttl' | 'etag-304' | 'stale-on-error';
9
+ responseTimeMs?: number;
8
10
  cursors?: CursorTokens;
9
11
  }
10
- export declare const handleRequest: (client: ApiClient, endpoint: string, method: string, body?: unknown, requiresAuth?: boolean, useETag?: boolean) => Promise<EsiHandlerResponse>;
12
+ export declare const handleSinglePageRequest: (client: ApiClient, endpoint: string, method: string, body?: unknown, requiresAuth?: boolean) => Promise<EsiHandlerResponse>;
13
+ export declare const handleRequest: (client: ApiClient, endpoint: string, method: string, body?: unknown, requiresAuth?: boolean, useETag?: boolean, templatePath?: string, requestTimeout?: number) => Promise<EsiHandlerResponse>;
11
14
  //# sourceMappingURL=ApiRequestHandler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ApiRequestHandler.d.ts","sourceRoot":"","sources":["../../src/core/ApiRequestHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAYxC,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AAKpE,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,YAAY,CAAC;CACxB;AAkkBD,eAAO,MAAM,aAAa,GACxB,QAAQ,SAAS,EACjB,UAAU,MAAM,EAChB,QAAQ,MAAM,EACd,OAAO,OAAO,EACd,eAAc,OAAe,EAC7B,UAAS,OAAc,KACtB,OAAO,CAAC,kBAAkB,CA+C5B,CAAC"}
1
+ {"version":3,"file":"ApiRequestHandler.d.ts","sourceRoot":"","sources":["../../src/core/ApiRequestHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAYxC,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AASpE,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,EAAE,UAAU,GAAG,UAAU,GAAG,gBAAgB,CAAC;IAC1D,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,YAAY,CAAC;CACxB;AA0oBD,eAAO,MAAM,uBAAuB,GAClC,QAAQ,SAAS,EACjB,UAAU,MAAM,EAChB,QAAQ,MAAM,EACd,OAAO,OAAO,EACd,eAAc,OAAe,KAC5B,OAAO,CAAC,kBAAkB,CAS5B,CAAC;AAEF,eAAO,MAAM,aAAa,GACxB,QAAQ,SAAS,EACjB,UAAU,MAAM,EAChB,QAAQ,MAAM,EACd,OAAO,OAAO,EACd,eAAc,OAAe,EAC7B,UAAS,OAAc,EACvB,eAAe,MAAM,EACrB,iBAAiB,MAAM,KACtB,OAAO,CAAC,kBAAkB,CA8F5B,CAAC"}
@@ -1,11 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.handleRequest = void 0;
3
+ exports.handleRequest = exports.handleSinglePageRequest = void 0;
4
4
  const error_1 = require("../core/util/error");
5
5
  const loggerUtil_1 = require("../core/logger/loggerUtil");
6
6
  const headersUtil_1 = require("../core/util/headersUtil");
7
7
  const PaginationHandler_1 = require("./pagination/PaginationHandler");
8
8
  const constants_1 = require("./constants");
9
+ const esi_cache_ttls_generated_1 = require("./endpoints/esi-cache-ttls.generated");
10
+ const retry_1 = require("./util/retry");
11
+ const sleep_1 = require("./util/sleep");
12
+ const CircuitBreaker_1 = require("./circuitBreaker/CircuitBreaker");
9
13
  const STATUS_MESSAGES = {
10
14
  201: 'Created',
11
15
  204: 'No Content',
@@ -38,6 +42,39 @@ function resolveCircuitBreaker(client) {
38
42
  return client.getCircuitBreaker();
39
43
  }
40
44
  // --- Pure helpers ---
45
+ const stringUtil_1 = require("./util/stringUtil");
46
+ function lookupSpecTtl(method, templatePath) {
47
+ const normalized = templatePath
48
+ .replace(/\/$/, '')
49
+ .replace(/\{(\w+)\}/g, (_, name) => `{${(0, stringUtil_1.camelToSnake)(name)}}`);
50
+ const key = `${method}:${normalized}`;
51
+ const seconds = esi_cache_ttls_generated_1.esiCacheTtls[key];
52
+ return typeof seconds === 'number' ? seconds * 1000 : undefined;
53
+ }
54
+ function trySpecAwareCacheHit(client, url, method, templatePath) {
55
+ if (method !== 'GET' || !templatePath)
56
+ return null;
57
+ const specTtlMs = lookupSpecTtl(method, templatePath);
58
+ if (!specTtlMs)
59
+ return null;
60
+ const cache = resolveCache(client);
61
+ if (!cache)
62
+ return null;
63
+ const entry = cache.get(url);
64
+ if (!entry)
65
+ return null;
66
+ const age = Date.now() - entry.timestamp;
67
+ if (age < specTtlMs) {
68
+ (0, loggerUtil_1.logDebug)(`Spec-aware cache hit for ${url} (age=${Math.round(age / 1000)}s, ttl=${Math.round(specTtlMs / 1000)}s)`);
69
+ return {
70
+ headers: entry.headers,
71
+ body: entry.data,
72
+ fromCache: true,
73
+ cacheHitType: 'spec-ttl',
74
+ };
75
+ }
76
+ return null;
77
+ }
41
78
  const parseCacheControlTtl = (headers) => {
42
79
  const cacheControl = headers['cache-control'] ?? headers['Cache-Control'];
43
80
  if (!cacheControl)
@@ -51,6 +88,10 @@ function buildRequestHeaders(client, url, method, requiresAuth, useETag, body) {
51
88
  'User-Agent': constants_1.USER_AGENT,
52
89
  'X-Compatibility-Date': constants_1.COMPATIBILITY_DATE,
53
90
  };
91
+ const language = client.getLanguage();
92
+ if (language) {
93
+ headers['Accept-Language'] = language;
94
+ }
54
95
  if (requiresAuth) {
55
96
  const authHeader = client.getAuthorizationHeader();
56
97
  if (!authHeader) {
@@ -89,6 +130,7 @@ function handleEarlyStatus(client, status, url, parsed, useETag) {
89
130
  headers: { ...cachedEntry.headers, ...parsed.raw },
90
131
  body: cachedEntry.data,
91
132
  fromCache: true,
133
+ cacheHitType: 'etag-304',
92
134
  };
93
135
  }
94
136
  }
@@ -108,6 +150,7 @@ function tryStaleCacheResponse(client, url, parsed) {
108
150
  body: cachedEntry.data,
109
151
  fromCache: true,
110
152
  stale: true,
153
+ cacheHitType: 'stale-on-error',
111
154
  };
112
155
  }
113
156
  function cacheResponse(client, url, method, endpoint, parsed, data, useETag) {
@@ -141,7 +184,7 @@ function handleCursorPagination(parsed, data) {
141
184
  };
142
185
  return { headers: parsed.raw, body: data, cursors };
143
186
  }
144
- async function handleOffsetPagination(client, endpoint, method, requiresAuth, parsed, data, body, url, useETag, pageFetch) {
187
+ async function handleOffsetPagination(client, endpoint, method, requiresAuth, parsed, data, body, url, useETag, pageFetch, templatePath) {
145
188
  const totalPages = parsed.xPages;
146
189
  if (totalPages <= 1) {
147
190
  return { headers: parsed.raw, body: data };
@@ -153,7 +196,7 @@ async function handleOffsetPagination(client, endpoint, method, requiresAuth, pa
153
196
  maxPages: Math.min(totalPages, 1000),
154
197
  stopOnEmptyPage: true,
155
198
  maxRetries: 3,
156
- }, pageFetch);
199
+ }, pageFetch, templatePath);
157
200
  cacheResponse(client, url, method, endpoint, parsed, allData, useETag);
158
201
  return { headers: parsed.raw, body: allData };
159
202
  }
@@ -222,7 +265,7 @@ function handleErrorResponse(client, response, url, parsed, useETag) {
222
265
  throw new error_1.EsiError(response.status, errorMessage, url, parsed.requestId ?? undefined);
223
266
  }
224
267
  function wrapError(error) {
225
- if (error instanceof error_1.EsiError) {
268
+ if (error instanceof error_1.EsiError || error instanceof CircuitBreaker_1.CircuitOpenError) {
226
269
  throw error;
227
270
  }
228
271
  if (error instanceof Error) {
@@ -232,7 +275,7 @@ function wrapError(error) {
232
275
  (0, loggerUtil_1.logError)(`Unexpected error: ${String(error)}`);
233
276
  throw (0, error_1.buildError)(String(error), 'ESIJS_ERROR');
234
277
  }
235
- async function executeSingleFetch(client, endpoint, method, body, requiresAuth, useETag) {
278
+ async function executeSingleFetch(client, endpoint, method, body, requiresAuth, useETag, requestTimeout, templatePath) {
236
279
  const rawUrl = `${client.getLink()}/${endpoint}`;
237
280
  const builtHeaders = buildRequestHeaders(client, rawUrl, method, requiresAuth, useETag, body);
238
281
  const req = await applyRequestMiddleware(client, rawUrl, endpoint, method, builtHeaders, body);
@@ -247,8 +290,8 @@ async function executeSingleFetch(client, endpoint, method, body, requiresAuth,
247
290
  if (cb)
248
291
  cb.checkCircuit(endpoint);
249
292
  const rateLimiter = resolveRateLimiter(client);
250
- await rateLimiter.checkRateLimit();
251
- const timeoutMs = client.getTimeout();
293
+ await rateLimiter.checkRateLimit(templatePath, method, req.headers);
294
+ const timeoutMs = requestTimeout ?? client.getTimeout();
252
295
  const controller = new AbortController();
253
296
  const timer = globalThis.setTimeout(() => controller.abort(), timeoutMs);
254
297
  options.signal = controller.signal;
@@ -259,13 +302,13 @@ async function executeSingleFetch(client, endpoint, method, body, requiresAuth,
259
302
  catch (err) {
260
303
  clearTimeout(timer);
261
304
  if (err instanceof Error && err.name === 'AbortError') {
262
- throw new error_1.EsiError(0, `Request timed out after ${timeoutMs}ms`, url);
305
+ throw new error_1.TimeoutError(timeoutMs, url);
263
306
  }
264
307
  throw err;
265
308
  }
266
309
  clearTimeout(timer);
267
310
  const parsed = (0, headersUtil_1.parseHeaders)(response.headers);
268
- rateLimiter.updateFromResponse(parsed.raw, response.status);
311
+ rateLimiter.updateFromResponse(parsed.raw, response.status, templatePath, method, req.headers);
269
312
  if (cb) {
270
313
  if (response.status >= 500 ||
271
314
  response.status === 420 ||
@@ -281,22 +324,23 @@ async function executeSingleFetch(client, endpoint, method, body, requiresAuth,
281
324
  }
282
325
  return { response, parsed, url };
283
326
  }
284
- async function fetchOnePage(client, endpoint, method, body, requiresAuth = false, useETag = false) {
285
- const { response, parsed, url } = await executeSingleFetch(client, endpoint, method, body, requiresAuth, useETag);
327
+ async function fetchOnePage(client, endpoint, method, body, requiresAuth = false, useETag = false, requestTimeout, templatePath) {
328
+ const { response, parsed, url } = await executeSingleFetch(client, endpoint, method, body, requiresAuth, useETag, requestTimeout, templatePath);
286
329
  if (!response.ok) {
287
330
  throw new error_1.EsiError(response.status, STATUS_MESSAGES[response.status] || response.statusText, url, parsed.requestId ?? undefined);
288
331
  }
289
332
  const data = await parseJsonBody(response, url);
290
333
  return { data, parsed, url };
291
334
  }
292
- const executeRequest = async (client, endpoint, method, body, requiresAuth = false, useETag = true) => {
335
+ const executeRequest = async (client, endpoint, method, body, requiresAuth = false, useETag = true, requestTimeout, templatePath) => {
293
336
  const startTime = Date.now();
294
337
  const finish = (r) => {
338
+ r.responseTimeMs = Date.now() - startTime;
295
339
  const rawUrl = `${client.getLink()}/${endpoint}`;
296
340
  return applyResponseInterceptors(client, r, rawUrl, endpoint, method, startTime);
297
341
  };
298
342
  try {
299
- const { response, parsed, url } = await executeSingleFetch(client, endpoint, method, body, requiresAuth, useETag);
343
+ const { response, parsed, url } = await executeSingleFetch(client, endpoint, method, body, requiresAuth, useETag, requestTimeout, templatePath);
300
344
  if (response.status === 201) {
301
345
  let data;
302
346
  try {
@@ -320,50 +364,81 @@ const executeRequest = async (client, endpoint, method, body, requiresAuth = fal
320
364
  if (cursorResult)
321
365
  return finish(cursorResult);
322
366
  const pageFetch = async (paginatedEndpoint) => {
323
- const result = await fetchOnePage(client, paginatedEndpoint, method, body, requiresAuth);
367
+ const result = await fetchOnePage(client, paginatedEndpoint, method, body, requiresAuth, false, requestTimeout, templatePath);
324
368
  return Array.isArray(result.data)
325
369
  ? result.data
326
370
  : [result.data];
327
371
  };
328
- const paginatedResult = await handleOffsetPagination(client, endpoint, method, requiresAuth, parsed, data, body, url, useETag, pageFetch);
372
+ const paginatedResult = await handleOffsetPagination(client, endpoint, method, requiresAuth, parsed, data, body, url, useETag, pageFetch, templatePath);
329
373
  return finish(paginatedResult);
330
374
  }
331
375
  catch (error) {
332
376
  wrapError(error);
333
377
  }
334
378
  };
335
- const handleRequest = async (client, endpoint, method, body, requiresAuth = false, useETag = true) => {
336
- const doExecute = () => executeRequest(client, endpoint, method, body, requiresAuth, useETag);
379
+ const handleSinglePageRequest = async (client, endpoint, method, body, requiresAuth = false) => {
380
+ const { data, parsed } = await fetchOnePage(client, endpoint, method, body, requiresAuth);
381
+ return { headers: parsed.raw, body: data };
382
+ };
383
+ exports.handleSinglePageRequest = handleSinglePageRequest;
384
+ const handleRequest = async (client, endpoint, method, body, requiresAuth = false, useETag = true, templatePath, requestTimeout) => {
385
+ const rawUrl = `${client.getLink()}/${endpoint}`;
386
+ const specHit = trySpecAwareCacheHit(client, rawUrl, method, templatePath);
387
+ if (specHit)
388
+ return specHit;
389
+ const doExecute = () => executeRequest(client, endpoint, method, body, requiresAuth, useETag, requestTimeout, templatePath);
337
390
  const dedup = client.getDeduplicator();
338
391
  const canDedup = dedup && method === 'GET' && !body;
339
- try {
340
- return canDedup
341
- ? await dedup.dedupe(endpoint, doExecute)
342
- : await doExecute();
343
- }
344
- catch (error) {
345
- if (error instanceof error_1.EsiError &&
346
- error.statusCode === 401 &&
347
- requiresAuth &&
348
- client.hasTokenProvider()) {
349
- (0, loggerUtil_1.logInfo)('Received 401, attempting token refresh...');
350
- try {
351
- await client.refreshToken();
352
- (0, loggerUtil_1.logInfo)('Token refreshed, retrying request');
353
- return await executeRequest(client, endpoint, method, body, requiresAuth, useETag);
392
+ const retryConfig = client.getRetryConfig();
393
+ const maxRetries = retryConfig?.maxRetries ?? 0;
394
+ const canRetryMethod = method === 'GET' || retryConfig?.retryMutations === true;
395
+ const baseDelayMs = retryConfig?.baseDelayMs ?? 1000;
396
+ const maxDelayMs = retryConfig?.maxDelayMs ?? 30000;
397
+ let lastError;
398
+ for (let attempt = 0; attempt <= maxRetries; attempt++) {
399
+ try {
400
+ return canDedup
401
+ ? await dedup.dedupe(endpoint, doExecute)
402
+ : await doExecute();
403
+ }
404
+ catch (error) {
405
+ if (error instanceof CircuitBreaker_1.CircuitOpenError) {
406
+ throw error;
354
407
  }
355
- catch (refreshError) {
356
- if (refreshError instanceof error_1.EsiError) {
357
- throw refreshError;
408
+ if (error instanceof error_1.EsiError &&
409
+ error.statusCode === 401 &&
410
+ requiresAuth &&
411
+ client.hasTokenProvider()) {
412
+ (0, loggerUtil_1.logInfo)('Received 401, attempting token refresh...');
413
+ try {
414
+ await client.refreshToken();
415
+ (0, loggerUtil_1.logInfo)('Token refreshed, retrying request');
416
+ return await executeRequest(client, endpoint, method, body, requiresAuth, useETag, requestTimeout);
417
+ }
418
+ catch (refreshError) {
419
+ if (refreshError instanceof error_1.EsiError) {
420
+ throw refreshError;
421
+ }
422
+ const msg = refreshError instanceof Error
423
+ ? refreshError.message
424
+ : String(refreshError);
425
+ (0, loggerUtil_1.logError)(`Token refresh failed: ${msg}`);
426
+ throw (0, error_1.buildError)(`Token refresh failed: ${msg}`, 'TOKEN_REFRESH_FAILED');
358
427
  }
359
- const msg = refreshError instanceof Error
360
- ? refreshError.message
361
- : String(refreshError);
362
- (0, loggerUtil_1.logError)(`Token refresh failed: ${msg}`);
363
- throw (0, error_1.buildError)(`Token refresh failed: ${msg}`, 'TOKEN_REFRESH_FAILED');
364
428
  }
429
+ if (error instanceof error_1.EsiError &&
430
+ error.retryable &&
431
+ canRetryMethod &&
432
+ attempt < maxRetries) {
433
+ const delay = (0, retry_1.retryDelay)(attempt, baseDelayMs, maxDelayMs);
434
+ (0, loggerUtil_1.logWarn)(`Request to ${endpoint} failed (${error.statusCode}), retrying in ${Math.round(delay)}ms (attempt ${attempt + 1}/${maxRetries})`);
435
+ await (0, sleep_1.sleep)(delay);
436
+ lastError = error;
437
+ continue;
438
+ }
439
+ throw error;
365
440
  }
366
- throw error;
367
441
  }
442
+ throw lastError;
368
443
  };
369
444
  exports.handleRequest = handleRequest;
@@ -0,0 +1,12 @@
1
+ import { EsiError } from './util/error';
2
+ export interface BatchOptions {
3
+ concurrency?: number;
4
+ onProgress?: (completed: number, total: number) => void;
5
+ }
6
+ export interface BatchResult<K, T> {
7
+ results: Map<K, T>;
8
+ errors: Map<K, EsiError | Error>;
9
+ }
10
+ export declare function batchFetch<K, T>(keys: K[], fetcher: (key: K) => Promise<T>, options?: BatchOptions): Promise<BatchResult<K, T>>;
11
+ export declare function batchPost<T>(ids: number[], poster: (chunk: number[]) => Promise<T[]>, chunkSize?: number): Promise<T[]>;
12
+ //# sourceMappingURL=BatchRequestHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BatchRequestHandler.d.ts","sourceRoot":"","sources":["../../src/core/BatchRequestHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAGxC,MAAM,WAAW,YAAY;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACzD;AAED,MAAM,WAAW,WAAW,CAAC,CAAC,EAAE,CAAC;IAC/B,OAAO,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACnB,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC,CAAC;CAClC;AAED,wBAAsB,UAAU,CAAC,CAAC,EAAE,CAAC,EACnC,IAAI,EAAE,CAAC,EAAE,EACT,OAAO,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,EAC/B,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAqD5B;AAED,wBAAsB,SAAS,CAAC,CAAC,EAC/B,GAAG,EAAE,MAAM,EAAE,EACb,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,CAAC,EAAE,CAAC,EACzC,SAAS,GAAE,MAAa,GACvB,OAAO,CAAC,CAAC,EAAE,CAAC,CAiBd"}
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.batchFetch = batchFetch;
4
+ exports.batchPost = batchPost;
5
+ const error_1 = require("./util/error");
6
+ const loggerUtil_1 = require("./logger/loggerUtil");
7
+ async function batchFetch(keys, fetcher, options = {}) {
8
+ const concurrency = options.concurrency ?? 20;
9
+ const results = new Map();
10
+ const errors = new Map();
11
+ let completed = 0;
12
+ let running = 0;
13
+ let index = 0;
14
+ (0, loggerUtil_1.logInfo)(`Batch fetch: ${keys.length} items, concurrency=${concurrency}`);
15
+ return new Promise((resolve) => {
16
+ function next() {
17
+ while (running < concurrency && index < keys.length) {
18
+ const currentIndex = index++;
19
+ const key = keys[currentIndex];
20
+ running++;
21
+ fetcher(key)
22
+ .then((result) => {
23
+ results.set(key, result);
24
+ })
25
+ .catch((err) => {
26
+ const error = err instanceof error_1.EsiError || err instanceof Error
27
+ ? err
28
+ : new Error(String(err));
29
+ errors.set(key, error);
30
+ })
31
+ .finally(() => {
32
+ running--;
33
+ completed++;
34
+ if (options.onProgress) {
35
+ options.onProgress(completed, keys.length);
36
+ }
37
+ if (completed === keys.length) {
38
+ (0, loggerUtil_1.logDebug)(`Batch complete: ${results.size} succeeded, ${errors.size} failed`);
39
+ resolve({ results, errors });
40
+ }
41
+ else {
42
+ next();
43
+ }
44
+ });
45
+ }
46
+ }
47
+ if (keys.length === 0) {
48
+ resolve({ results, errors });
49
+ return;
50
+ }
51
+ next();
52
+ });
53
+ }
54
+ async function batchPost(ids, poster, chunkSize = 1000) {
55
+ const chunks = [];
56
+ for (let i = 0; i < ids.length; i += chunkSize) {
57
+ chunks.push(ids.slice(i, i + chunkSize));
58
+ }
59
+ (0, loggerUtil_1.logInfo)(`Batch POST: ${ids.length} IDs in ${chunks.length} chunks of ${chunkSize}`);
60
+ const results = [];
61
+ for (const chunk of chunks) {
62
+ const chunkResult = await poster(chunk);
63
+ results.push(...chunkResult);
64
+ }
65
+ return results;
66
+ }
@@ -1,5 +1,5 @@
1
1
  export declare const PACKAGE_NAME = "esi.ts";
2
- export declare const PACKAGE_VERSION = "5.1.0";
3
- export declare const USER_AGENT = "esi.ts/5.1.0";
2
+ export declare const PACKAGE_VERSION = "5.3.0";
3
+ export declare const USER_AGENT = "esi.ts/5.3.0";
4
4
  export declare const COMPATIBILITY_DATE = "2026-05-19";
5
5
  //# sourceMappingURL=constants.d.ts.map