@lgriffin/esi.ts 9.6.0 → 9.7.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 (83) hide show
  1. package/CHANGELOG.md +417 -388
  2. package/LICENSE +26 -26
  3. package/README.md +1037 -1030
  4. package/dist/clients/AllianceClient.d.ts +2 -0
  5. package/dist/clients/AllianceClient.d.ts.map +1 -1
  6. package/dist/clients/AssetsClient.d.ts +2 -0
  7. package/dist/clients/AssetsClient.d.ts.map +1 -1
  8. package/dist/clients/BaseEsiClient.d.ts +1 -0
  9. package/dist/clients/BaseEsiClient.d.ts.map +1 -1
  10. package/dist/clients/CalendarClient.d.ts +2 -0
  11. package/dist/clients/CalendarClient.d.ts.map +1 -1
  12. package/dist/clients/CharacterClient.d.ts +8 -0
  13. package/dist/clients/CharacterClient.d.ts.map +1 -1
  14. package/dist/clients/ClonesClient.d.ts +1 -0
  15. package/dist/clients/ClonesClient.d.ts.map +1 -1
  16. package/dist/clients/ContactsClient.d.ts +6 -0
  17. package/dist/clients/ContactsClient.d.ts.map +1 -1
  18. package/dist/clients/ContractsClient.d.ts +3 -0
  19. package/dist/clients/ContractsClient.d.ts.map +1 -1
  20. package/dist/clients/CorporationsClient.d.ts +17 -0
  21. package/dist/clients/CorporationsClient.d.ts.map +1 -1
  22. package/dist/clients/FittingsClient.d.ts +1 -0
  23. package/dist/clients/FittingsClient.d.ts.map +1 -1
  24. package/dist/clients/FleetClient.d.ts +2 -0
  25. package/dist/clients/FleetClient.d.ts.map +1 -1
  26. package/dist/clients/IndustryClient.d.ts +8 -0
  27. package/dist/clients/IndustryClient.d.ts.map +1 -1
  28. package/dist/clients/KillmailsClient.d.ts +2 -0
  29. package/dist/clients/KillmailsClient.d.ts.map +1 -1
  30. package/dist/clients/LoyaltyClient.d.ts +2 -0
  31. package/dist/clients/LoyaltyClient.d.ts.map +1 -1
  32. package/dist/clients/MailClient.d.ts +5 -0
  33. package/dist/clients/MailClient.d.ts.map +1 -1
  34. package/dist/clients/MarketClient.d.ts +6 -0
  35. package/dist/clients/MarketClient.d.ts.map +1 -1
  36. package/dist/clients/PiClient.d.ts +2 -0
  37. package/dist/clients/PiClient.d.ts.map +1 -1
  38. package/dist/clients/SkillsClient.d.ts +1 -0
  39. package/dist/clients/SkillsClient.d.ts.map +1 -1
  40. package/dist/clients/WalletClient.d.ts +4 -0
  41. package/dist/clients/WalletClient.d.ts.map +1 -1
  42. package/dist/clients/WarsClient.d.ts +2 -0
  43. package/dist/clients/WarsClient.d.ts.map +1 -1
  44. package/dist/core/ApiClient.d.ts +4 -0
  45. package/dist/core/ApiClient.d.ts.map +1 -1
  46. package/dist/core/ApiClientBuilder.d.ts +3 -1
  47. package/dist/core/ApiClientBuilder.d.ts.map +1 -1
  48. package/dist/core/constants.d.ts +2 -2
  49. package/dist/core/endpoints/EndpointDefinition.d.ts +2 -2
  50. package/dist/core/endpoints/EndpointDefinition.d.ts.map +1 -1
  51. package/dist/core/endpoints/createClient.d.ts +2 -2
  52. package/dist/core/endpoints/createClient.d.ts.map +1 -1
  53. package/dist/core/logger/NoopLogger.d.ts +3 -0
  54. package/dist/core/logger/NoopLogger.d.ts.map +1 -0
  55. package/dist/core/pagination/AsyncPaginationIterator.d.ts +1 -0
  56. package/dist/core/pagination/AsyncPaginationIterator.d.ts.map +1 -1
  57. package/dist/core/rateLimiter/RateLimiter.d.ts +6 -0
  58. package/dist/core/rateLimiter/RateLimiter.d.ts.map +1 -1
  59. package/dist/core/requestPipeline/headers.d.ts.map +1 -1
  60. package/dist/core/requestPipeline/statusHandling.d.ts.map +1 -1
  61. package/dist/errors.js.map +1 -1
  62. package/dist/errors.mjs.map +1 -1
  63. package/dist/index.d.ts +4 -3
  64. package/dist/index.d.ts.map +1 -1
  65. package/dist/index.js +644 -27
  66. package/dist/index.js.map +1 -1
  67. package/dist/index.mjs +642 -27
  68. package/dist/index.mjs.map +1 -1
  69. package/dist/schemas/common.d.ts +11 -1
  70. package/dist/schemas/common.d.ts.map +1 -1
  71. package/dist/schemas/index.js +6 -1
  72. package/dist/schemas/index.js.map +1 -1
  73. package/dist/schemas/index.mjs +6 -1
  74. package/dist/schemas/index.mjs.map +1 -1
  75. package/dist/sde/index.js.map +1 -1
  76. package/dist/sde/index.mjs.map +1 -1
  77. package/dist/sde/memory.js.map +1 -1
  78. package/dist/sde/memory.mjs.map +1 -1
  79. package/dist/testing/index.js.map +1 -1
  80. package/dist/testing/index.mjs.map +1 -1
  81. package/dist/types/generated/esi-spec.generated.d.ts +12 -12
  82. package/dist/types/generated/esi-spec.generated.d.ts.map +1 -1
  83. package/package.json +303 -289
package/dist/index.mjs CHANGED
@@ -73,6 +73,7 @@ var ApiClient = class {
73
73
  validateRequest = false;
74
74
  language;
75
75
  compatibilityDate;
76
+ fetchFn = null;
76
77
  getTimeout() {
77
78
  return this.timeout;
78
79
  }
@@ -127,6 +128,12 @@ var ApiClient = class {
127
128
  setValidateRequest(validate) {
128
129
  this.validateRequest = validate;
129
130
  }
131
+ getFetch() {
132
+ return this.fetchFn ?? globalThis.fetch;
133
+ }
134
+ setFetch(fn) {
135
+ this.fetchFn = fn;
136
+ }
130
137
  getMiddleware() {
131
138
  return this.middleware;
132
139
  }
@@ -549,7 +556,7 @@ function buildCacheKey(url, client, requiresAuth = false) {
549
556
 
550
557
  // src/core/constants.ts
551
558
  var PACKAGE_NAME = "esi.ts";
552
- var PACKAGE_VERSION = "9.2.0";
559
+ var PACKAGE_VERSION = "9.7.0";
553
560
  var USER_AGENT = `${PACKAGE_NAME}/${PACKAGE_VERSION}`;
554
561
  var COMPATIBILITY_DATE = "2026-05-19";
555
562
 
@@ -575,7 +582,10 @@ function buildRequestHeaders(client, url, method, requiresAuth, useETag, body, r
575
582
  const authHeader = client.getAuthorizationHeader();
576
583
  if (!authHeader) {
577
584
  throw buildError(
578
- "Authorization header is required but not provided",
585
+ [
586
+ "Authorization header is required for this endpoint but no access token is configured",
587
+ "Fix: set ESI_ACCESS_TOKEN in your environment (see .env.example), or call client.setAccessToken(token), or pass accessToken to the EsiClient constructor"
588
+ ].join(" \u2014 "),
579
589
  "NO_AUTH_TOKEN"
580
590
  );
581
591
  }
@@ -861,9 +871,15 @@ function handleErrorResponse(client, response, url, parsed, useETag, resolveCach
861
871
  if (response.status === 420 || response.status === 429) {
862
872
  logWarn(`Rate limited (${response.status}) on ${url}`);
863
873
  }
874
+ let message = errorMessage;
875
+ if (response.status === 401) {
876
+ message = `${errorMessage} \u2014 the access token was missing, expired, or lacks the required ESI scope. Fix: verify ESI_ACCESS_TOKEN, or configure onTokenRefresh for automatic refresh on 401`;
877
+ } else if (response.status === 403) {
878
+ message = `${errorMessage} \u2014 your access token does not have the OAuth scopes required for this endpoint. Check the scopes on your EVE SSO application`;
879
+ }
864
880
  throw new EsiError(
865
881
  response.status,
866
- errorMessage,
882
+ message,
867
883
  url,
868
884
  parsed.requestId ?? void 0
869
885
  );
@@ -1228,7 +1244,7 @@ async function executeSingleFetch(client, endpoint, method, body, requiresAuth,
1228
1244
  options.signal = controller.signal;
1229
1245
  let response;
1230
1246
  try {
1231
- response = await fetch(url, options);
1247
+ response = await client.getFetch()(url, options);
1232
1248
  } catch (err) {
1233
1249
  clearTimeout(timer);
1234
1250
  if (cb) {
@@ -1613,6 +1629,20 @@ function buildMeta(response) {
1613
1629
  group: response.headers["x-ratelimit-group"] ?? null
1614
1630
  };
1615
1631
  }
1632
+ if (response.headers["etag"]) meta.etag = response.headers["etag"];
1633
+ if (response.headers["x-pages"])
1634
+ meta.pages = parseInt(response.headers["x-pages"], 10);
1635
+ if (response.headers["expires"]) meta.expires = response.headers["expires"];
1636
+ if (response.headers["x-esi-error-limit-remain"])
1637
+ meta.errorLimitRemain = parseInt(
1638
+ response.headers["x-esi-error-limit-remain"],
1639
+ 10
1640
+ );
1641
+ if (response.headers["x-esi-error-limit-reset"])
1642
+ meta.errorLimitReset = parseInt(
1643
+ response.headers["x-esi-error-limit-reset"],
1644
+ 10
1645
+ );
1616
1646
  return meta;
1617
1647
  }
1618
1648
  function createClient(apiClient, endpoints, options) {
@@ -1777,6 +1807,55 @@ function validatePageBody(body, schema, url, validate) {
1777
1807
  }
1778
1808
  return result.data;
1779
1809
  }
1810
+ async function fetchAllPages(client, endpoint, method, requiresAuth = false, body, templatePath, responseSchema, concurrency = 8) {
1811
+ const validate = client.getValidateResponse();
1812
+ const firstResponse = await handleSinglePageRequest(
1813
+ client,
1814
+ endpoint,
1815
+ method,
1816
+ body,
1817
+ requiresAuth,
1818
+ templatePath
1819
+ );
1820
+ const firstBody = validatePageBody(
1821
+ firstResponse.body,
1822
+ responseSchema,
1823
+ `${client.getLink()}/${endpoint}`,
1824
+ validate
1825
+ );
1826
+ const totalPages = parseInt(firstResponse.headers["x-pages"] || "1", 10);
1827
+ const result = extractArray(firstBody);
1828
+ if (totalPages <= 1) return result;
1829
+ const remaining = Array.from({ length: totalPages - 1 }, (_, i) => i + 2);
1830
+ for (let i = 0; i < remaining.length; i += concurrency) {
1831
+ const batch = remaining.slice(i, i + concurrency);
1832
+ const pages = await Promise.all(
1833
+ batch.map(async (page) => {
1834
+ const sep = endpoint.includes("?") ? "&" : "?";
1835
+ const pagedEndpoint = `${endpoint}${sep}page=${page}`;
1836
+ logInfo(`Fetching page ${page}/${totalPages}: ${pagedEndpoint}`);
1837
+ const response = await handleSinglePageRequest(
1838
+ client,
1839
+ pagedEndpoint,
1840
+ method,
1841
+ body,
1842
+ requiresAuth,
1843
+ templatePath
1844
+ );
1845
+ return validatePageBody(
1846
+ response.body,
1847
+ responseSchema,
1848
+ `${client.getLink()}/${pagedEndpoint}`,
1849
+ validate
1850
+ );
1851
+ })
1852
+ );
1853
+ for (const pageBody of pages) {
1854
+ result.push(...extractArray(pageBody));
1855
+ }
1856
+ }
1857
+ return result;
1858
+ }
1780
1859
  async function* fetchPages(client, endpoint, method, requiresAuth = false, body, templatePath, responseSchema) {
1781
1860
  const validate = client.getValidateResponse();
1782
1861
  const firstResponse = await handleSinglePageRequest(
@@ -1848,6 +1927,24 @@ var BaseEsiClient = class {
1848
1927
  def.responseSchema
1849
1928
  );
1850
1929
  }
1930
+ fetchAllEndpoint(endpointName, args, concurrency) {
1931
+ const def = this._endpoints[endpointName];
1932
+ const { path, body } = buildEndpointPath(
1933
+ def,
1934
+ args,
1935
+ this._client.getDatasource()
1936
+ );
1937
+ return fetchAllPages(
1938
+ this._client,
1939
+ path,
1940
+ def.method,
1941
+ def.requiresAuth,
1942
+ body,
1943
+ def.path,
1944
+ def.responseSchema,
1945
+ concurrency
1946
+ );
1947
+ }
1851
1948
  withMetadata() {
1852
1949
  if (!this._metaApi) {
1853
1950
  this._metaApi = createClient(this._client, this._endpoints, {
@@ -2054,9 +2151,7 @@ var AllianceClient = class extends BaseEsiClient {
2054
2151
  logWarn(
2055
2152
  "AllianceClient.getContacts() is deprecated. Use ContactsClient.getAllianceContacts() instead. Planned removal in next major version."
2056
2153
  );
2057
- return this.contactApi.getAllianceContacts(
2058
- allianceId
2059
- );
2154
+ return this.contactApi.getAllianceContacts(allianceId);
2060
2155
  }
2061
2156
  /**
2062
2157
  * Retrieve custom contact labels for an alliance.
@@ -2098,6 +2193,16 @@ var AllianceClient = class extends BaseEsiClient {
2098
2193
  getAlliances() {
2099
2194
  return this.api.getAlliances();
2100
2195
  }
2196
+ fetchAllAlliances(concurrency) {
2197
+ return this.fetchAllEndpoint("getAlliances", [], concurrency);
2198
+ }
2199
+ fetchAllCorporations(allianceId, concurrency) {
2200
+ return this.fetchAllEndpoint(
2201
+ "getCorporations",
2202
+ [allianceId],
2203
+ concurrency
2204
+ );
2205
+ }
2101
2206
  streamAlliances() {
2102
2207
  return this.streamEndpoint("getAlliances");
2103
2208
  }
@@ -2206,10 +2311,7 @@ var AssetsClient = class extends BaseEsiClient {
2206
2311
  * @requires Authentication
2207
2312
  */
2208
2313
  postCharacterAssetLocations(characterId, itemIds) {
2209
- return this.api.postCharacterAssetLocations(
2210
- characterId,
2211
- itemIds
2212
- );
2314
+ return this.api.postCharacterAssetLocations(characterId, itemIds);
2213
2315
  }
2214
2316
  /**
2215
2317
  * Look up the names of specific assets owned by a character via a bulk POST request.
@@ -2260,6 +2362,20 @@ var AssetsClient = class extends BaseEsiClient {
2260
2362
  itemIds
2261
2363
  );
2262
2364
  }
2365
+ fetchAllCharacterAssets(characterId, concurrency) {
2366
+ return this.fetchAllEndpoint(
2367
+ "getCharacterAssets",
2368
+ [characterId],
2369
+ concurrency
2370
+ );
2371
+ }
2372
+ fetchAllCorporationAssets(corporationId, concurrency) {
2373
+ return this.fetchAllEndpoint(
2374
+ "getCorporationAssets",
2375
+ [corporationId],
2376
+ concurrency
2377
+ );
2378
+ }
2263
2379
  streamCharacterAssets(characterId) {
2264
2380
  return this.streamEndpoint(
2265
2381
  "getCharacterAssets",
@@ -2403,6 +2519,20 @@ var CalendarClient = class extends BaseEsiClient {
2403
2519
  getEventAttendees(characterId, eventId) {
2404
2520
  return this.api.getEventAttendees(characterId, eventId);
2405
2521
  }
2522
+ fetchAllCalendarEvents(characterId, concurrency) {
2523
+ return this.fetchAllEndpoint(
2524
+ "getCalendarEvents",
2525
+ [characterId],
2526
+ concurrency
2527
+ );
2528
+ }
2529
+ fetchAllEventAttendees(characterId, eventId, concurrency) {
2530
+ return this.fetchAllEndpoint(
2531
+ "getEventAttendees",
2532
+ [characterId, eventId],
2533
+ concurrency
2534
+ );
2535
+ }
2406
2536
  streamCalendarEvents(characterId) {
2407
2537
  return this.streamEndpoint("getCalendarEvents", characterId);
2408
2538
  }
@@ -2562,7 +2692,12 @@ var EsiResponseMetaSchema = z11.looseObject({
2562
2692
  date: z11.string().optional(),
2563
2693
  contentLanguage: z11.string().optional(),
2564
2694
  rateLimit: RateLimitMetaSchema.optional(),
2565
- responseTimeMs: z11.number().optional()
2695
+ responseTimeMs: z11.number().optional(),
2696
+ etag: z11.string().optional(),
2697
+ pages: z11.number().optional(),
2698
+ expires: z11.string().optional(),
2699
+ errorLimitRemain: z11.number().optional(),
2700
+ errorLimitReset: z11.number().optional()
2566
2701
  });
2567
2702
  function esiResponse(dataSchema) {
2568
2703
  return z11.object({
@@ -2817,6 +2952,62 @@ var CharacterClient = class extends BaseEsiClient {
2817
2952
  postCharacterAffiliation(characters) {
2818
2953
  return this.api.postCharacterAffiliation(characters);
2819
2954
  }
2955
+ fetchAllCharacterAgentsResearch(characterId, concurrency) {
2956
+ return this.fetchAllEndpoint(
2957
+ "getAgentsResearch",
2958
+ [characterId],
2959
+ concurrency
2960
+ );
2961
+ }
2962
+ fetchAllCharacterBlueprints(characterId, concurrency) {
2963
+ return this.fetchAllEndpoint(
2964
+ "getBlueprints",
2965
+ [characterId],
2966
+ concurrency
2967
+ );
2968
+ }
2969
+ fetchAllCharacterCorporationHistory(characterId, concurrency) {
2970
+ return this.fetchAllEndpoint(
2971
+ "getCorporationHistory",
2972
+ [characterId],
2973
+ concurrency
2974
+ );
2975
+ }
2976
+ fetchAllCharacterMedals(characterId, concurrency) {
2977
+ return this.fetchAllEndpoint(
2978
+ "getMedals",
2979
+ [characterId],
2980
+ concurrency
2981
+ );
2982
+ }
2983
+ fetchAllCharacterNotifications(characterId, concurrency) {
2984
+ return this.fetchAllEndpoint(
2985
+ "getNotifications",
2986
+ [characterId],
2987
+ concurrency
2988
+ );
2989
+ }
2990
+ fetchAllCharacterNotificationsContacts(characterId, concurrency) {
2991
+ return this.fetchAllEndpoint(
2992
+ "getContactNotifications",
2993
+ [characterId],
2994
+ concurrency
2995
+ );
2996
+ }
2997
+ fetchAllCharacterStandings(characterId, concurrency) {
2998
+ return this.fetchAllEndpoint(
2999
+ "getStandings",
3000
+ [characterId],
3001
+ concurrency
3002
+ );
3003
+ }
3004
+ fetchAllCharacterTitles(characterId, concurrency) {
3005
+ return this.fetchAllEndpoint(
3006
+ "getTitles",
3007
+ [characterId],
3008
+ concurrency
3009
+ );
3010
+ }
2820
3011
  streamCharacterAgentsResearch(characterId) {
2821
3012
  return this.streamEndpoint("getAgentsResearch", characterId);
2822
3013
  }
@@ -2915,6 +3106,13 @@ var ClonesClient = class extends BaseEsiClient {
2915
3106
  getImplants(characterId) {
2916
3107
  return this.api.getImplants(characterId);
2917
3108
  }
3109
+ fetchAllImplants(characterId, concurrency) {
3110
+ return this.fetchAllEndpoint(
3111
+ "getImplants",
3112
+ [characterId],
3113
+ concurrency
3114
+ );
3115
+ }
2918
3116
  streamImplants(characterId) {
2919
3117
  return this.streamEndpoint("getImplants", characterId);
2920
3118
  }
@@ -3025,6 +3223,48 @@ var ContactsClient = class extends BaseEsiClient {
3025
3223
  getCorporationContactLabels(corporationId) {
3026
3224
  return this.api.getCorporationContactLabels(corporationId);
3027
3225
  }
3226
+ fetchAllAllianceContacts(allianceId, concurrency) {
3227
+ return this.fetchAllEndpoint(
3228
+ "getAllianceContacts",
3229
+ [allianceId],
3230
+ concurrency
3231
+ );
3232
+ }
3233
+ fetchAllAllianceContactLabels(allianceId, concurrency) {
3234
+ return this.fetchAllEndpoint(
3235
+ "getAllianceContactLabels",
3236
+ [allianceId],
3237
+ concurrency
3238
+ );
3239
+ }
3240
+ fetchAllCharacterContacts(characterId, concurrency) {
3241
+ return this.fetchAllEndpoint(
3242
+ "getCharacterContacts",
3243
+ [characterId],
3244
+ concurrency
3245
+ );
3246
+ }
3247
+ fetchAllCharacterContactLabels(characterId, concurrency) {
3248
+ return this.fetchAllEndpoint(
3249
+ "getCharacterContactLabels",
3250
+ [characterId],
3251
+ concurrency
3252
+ );
3253
+ }
3254
+ fetchAllCorporationContacts(corporationId, concurrency) {
3255
+ return this.fetchAllEndpoint(
3256
+ "getCorporationContacts",
3257
+ [corporationId],
3258
+ concurrency
3259
+ );
3260
+ }
3261
+ fetchAllCorporationContactLabels(corporationId, concurrency) {
3262
+ return this.fetchAllEndpoint(
3263
+ "getCorporationContactLabels",
3264
+ [corporationId],
3265
+ concurrency
3266
+ );
3267
+ }
3028
3268
  streamAllianceContacts(allianceId) {
3029
3269
  return this.streamEndpoint("getAllianceContacts", allianceId);
3030
3270
  }
@@ -3209,10 +3449,7 @@ var ContractsClient = class extends BaseEsiClient {
3209
3449
  * @requires Authentication
3210
3450
  */
3211
3451
  getCharacterContractBids(characterId, contractId) {
3212
- return this.api.getCharacterContractBids(
3213
- characterId,
3214
- contractId
3215
- );
3452
+ return this.api.getCharacterContractBids(characterId, contractId);
3216
3453
  }
3217
3454
  /**
3218
3455
  * Retrieve the items included in a contract owned by a character.
@@ -3223,10 +3460,7 @@ var ContractsClient = class extends BaseEsiClient {
3223
3460
  * @requires Authentication
3224
3461
  */
3225
3462
  getCharacterContractItems(characterId, contractId) {
3226
- return this.api.getCharacterContractItems(
3227
- characterId,
3228
- contractId
3229
- );
3463
+ return this.api.getCharacterContractItems(characterId, contractId);
3230
3464
  }
3231
3465
  /**
3232
3466
  * Retrieve publicly available contracts in a specific region.
@@ -3274,10 +3508,7 @@ var ContractsClient = class extends BaseEsiClient {
3274
3508
  * @requires Authentication
3275
3509
  */
3276
3510
  getCorporationContractBids(corporationId, contractId) {
3277
- return this.api.getCorporationContractBids(
3278
- corporationId,
3279
- contractId
3280
- );
3511
+ return this.api.getCorporationContractBids(corporationId, contractId);
3281
3512
  }
3282
3513
  /**
3283
3514
  * Retrieve the items included in a contract owned by a corporation.
@@ -3288,9 +3519,27 @@ var ContractsClient = class extends BaseEsiClient {
3288
3519
  * @requires Authentication
3289
3520
  */
3290
3521
  getCorporationContractItems(corporationId, contractId) {
3291
- return this.api.getCorporationContractItems(
3292
- corporationId,
3293
- contractId
3522
+ return this.api.getCorporationContractItems(corporationId, contractId);
3523
+ }
3524
+ fetchAllPublicContracts(regionId, concurrency) {
3525
+ return this.fetchAllEndpoint(
3526
+ "getPublicContracts",
3527
+ [regionId],
3528
+ concurrency
3529
+ );
3530
+ }
3531
+ fetchAllCharacterContracts(characterId, concurrency) {
3532
+ return this.fetchAllEndpoint(
3533
+ "getCharacterContracts",
3534
+ [characterId],
3535
+ concurrency
3536
+ );
3537
+ }
3538
+ fetchAllCorporationContracts(corporationId, concurrency) {
3539
+ return this.fetchAllEndpoint(
3540
+ "getCorporationContracts",
3541
+ [corporationId],
3542
+ concurrency
3294
3543
  );
3295
3544
  }
3296
3545
  streamPublicContracts(regionId) {
@@ -3889,6 +4138,121 @@ var CorporationsClient = class extends BaseEsiClient {
3889
4138
  getNpcCorporations() {
3890
4139
  return this.api.getNpcCorporations();
3891
4140
  }
4141
+ fetchAllCorporationAllianceHistory(corporationId, concurrency) {
4142
+ return this.fetchAllEndpoint(
4143
+ "getCorporationAllianceHistory",
4144
+ [corporationId],
4145
+ concurrency
4146
+ );
4147
+ }
4148
+ fetchAllCorporationBlueprints(corporationId, concurrency) {
4149
+ return this.fetchAllEndpoint(
4150
+ "getCorporationBlueprints",
4151
+ [corporationId],
4152
+ concurrency
4153
+ );
4154
+ }
4155
+ fetchAllCorporationAlscLogs(corporationId, concurrency) {
4156
+ return this.fetchAllEndpoint(
4157
+ "getCorporationAlscLogs",
4158
+ [corporationId],
4159
+ concurrency
4160
+ );
4161
+ }
4162
+ fetchAllCorporationFacilities(corporationId, concurrency) {
4163
+ return this.fetchAllEndpoint(
4164
+ "getCorporationFacilities",
4165
+ [corporationId],
4166
+ concurrency
4167
+ );
4168
+ }
4169
+ fetchAllCorporationMedals(corporationId, concurrency) {
4170
+ return this.fetchAllEndpoint(
4171
+ "getCorporationMedals",
4172
+ [corporationId],
4173
+ concurrency
4174
+ );
4175
+ }
4176
+ fetchAllCorporationIssuedMedals(corporationId, concurrency) {
4177
+ return this.fetchAllEndpoint(
4178
+ "getCorporationIssuedMedals",
4179
+ [corporationId],
4180
+ concurrency
4181
+ );
4182
+ }
4183
+ fetchAllCorporationMembers(corporationId, concurrency) {
4184
+ return this.fetchAllEndpoint(
4185
+ "getCorporationMembers",
4186
+ [corporationId],
4187
+ concurrency
4188
+ );
4189
+ }
4190
+ fetchAllCorporationMemberTitles(corporationId, concurrency) {
4191
+ return this.fetchAllEndpoint(
4192
+ "getCorporationMembersTitles",
4193
+ [corporationId],
4194
+ concurrency
4195
+ );
4196
+ }
4197
+ fetchAllCorporationMemberTracking(corporationId, concurrency) {
4198
+ return this.fetchAllEndpoint(
4199
+ "getCorporationMemberTracking",
4200
+ [corporationId],
4201
+ concurrency
4202
+ );
4203
+ }
4204
+ fetchAllCorporationRoles(corporationId, concurrency) {
4205
+ return this.fetchAllEndpoint(
4206
+ "getCorporationMemberRoles",
4207
+ [corporationId],
4208
+ concurrency
4209
+ );
4210
+ }
4211
+ fetchAllCorporationRolesHistory(corporationId, concurrency) {
4212
+ return this.fetchAllEndpoint(
4213
+ "getCorporationMemberRolesHistory",
4214
+ [corporationId],
4215
+ concurrency
4216
+ );
4217
+ }
4218
+ fetchAllCorporationShareholders(corporationId, concurrency) {
4219
+ return this.fetchAllEndpoint(
4220
+ "getCorporationShareholders",
4221
+ [corporationId],
4222
+ concurrency
4223
+ );
4224
+ }
4225
+ fetchAllCorporationStandings(corporationId, concurrency) {
4226
+ return this.fetchAllEndpoint(
4227
+ "getCorporationStandings",
4228
+ [corporationId],
4229
+ concurrency
4230
+ );
4231
+ }
4232
+ fetchAllCorporationStarbases(corporationId, concurrency) {
4233
+ return this.fetchAllEndpoint(
4234
+ "getCorporationStarbases",
4235
+ [corporationId],
4236
+ concurrency
4237
+ );
4238
+ }
4239
+ fetchAllCorporationStructures(corporationId, concurrency) {
4240
+ return this.fetchAllEndpoint(
4241
+ "getCorporationStructures",
4242
+ [corporationId],
4243
+ concurrency
4244
+ );
4245
+ }
4246
+ fetchAllCorporationTitles(corporationId, concurrency) {
4247
+ return this.fetchAllEndpoint(
4248
+ "getCorporationTitles",
4249
+ [corporationId],
4250
+ concurrency
4251
+ );
4252
+ }
4253
+ fetchAllNpcCorporations(concurrency) {
4254
+ return this.fetchAllEndpoint("getNpcCorporations", [], concurrency);
4255
+ }
3892
4256
  streamCorporationAllianceHistory(corporationId) {
3893
4257
  return this.streamEndpoint(
3894
4258
  "getCorporationAllianceHistory",
@@ -4571,6 +4935,13 @@ var FittingsClient = class extends BaseEsiClient {
4571
4935
  deleteFitting(characterId, fittingId) {
4572
4936
  return this.api.deleteFitting(characterId, fittingId);
4573
4937
  }
4938
+ fetchAllFittings(characterId, concurrency) {
4939
+ return this.fetchAllEndpoint(
4940
+ "getFittings",
4941
+ [characterId],
4942
+ concurrency
4943
+ );
4944
+ }
4574
4945
  streamFittings(characterId) {
4575
4946
  return this.streamEndpoint("getFittings", characterId);
4576
4947
  }
@@ -4895,6 +5266,20 @@ var FleetClient = class extends BaseEsiClient {
4895
5266
  createFleetSquad(fleetId, wingId) {
4896
5267
  return this.api.createFleetSquad(fleetId, wingId);
4897
5268
  }
5269
+ fetchAllFleetMembers(fleetId, concurrency) {
5270
+ return this.fetchAllEndpoint(
5271
+ "getFleetMembers",
5272
+ [fleetId],
5273
+ concurrency
5274
+ );
5275
+ }
5276
+ fetchAllFleetWings(fleetId, concurrency) {
5277
+ return this.fetchAllEndpoint(
5278
+ "getFleetWings",
5279
+ [fleetId],
5280
+ concurrency
5281
+ );
5282
+ }
4898
5283
  streamFleetMembers(fleetId) {
4899
5284
  return this.streamEndpoint("getFleetMembers", fleetId);
4900
5285
  }
@@ -5163,6 +5548,62 @@ var IndustryClient = class extends BaseEsiClient {
5163
5548
  getIndustrySystems() {
5164
5549
  return this.api.getIndustrySystems();
5165
5550
  }
5551
+ fetchAllCharacterIndustryJobs(characterId, concurrency) {
5552
+ return this.fetchAllEndpoint(
5553
+ "getCharacterIndustryJobs",
5554
+ [characterId],
5555
+ concurrency
5556
+ );
5557
+ }
5558
+ fetchAllCharacterMiningLedger(characterId, concurrency) {
5559
+ return this.fetchAllEndpoint(
5560
+ "getCharacterMiningLedger",
5561
+ [characterId],
5562
+ concurrency
5563
+ );
5564
+ }
5565
+ fetchAllCorporationIndustryJobs(corporationId, concurrency) {
5566
+ return this.fetchAllEndpoint(
5567
+ "getCorporationIndustryJobs",
5568
+ [corporationId],
5569
+ concurrency
5570
+ );
5571
+ }
5572
+ fetchAllMoonExtractionTimers(corporationId, concurrency) {
5573
+ return this.fetchAllEndpoint(
5574
+ "getMoonExtractionTimers",
5575
+ [corporationId],
5576
+ concurrency
5577
+ );
5578
+ }
5579
+ fetchAllCorporationMiningObservers(corporationId, concurrency) {
5580
+ return this.fetchAllEndpoint(
5581
+ "getCorporationMiningObservers",
5582
+ [corporationId],
5583
+ concurrency
5584
+ );
5585
+ }
5586
+ fetchAllCorporationMiningObserver(corporationId, observerId, concurrency) {
5587
+ return this.fetchAllEndpoint(
5588
+ "getCorporationMiningObserver",
5589
+ [corporationId, observerId],
5590
+ concurrency
5591
+ );
5592
+ }
5593
+ fetchAllIndustryFacilities(concurrency) {
5594
+ return this.fetchAllEndpoint(
5595
+ "getIndustryFacilities",
5596
+ [],
5597
+ concurrency
5598
+ );
5599
+ }
5600
+ fetchAllIndustrySystems(concurrency) {
5601
+ return this.fetchAllEndpoint(
5602
+ "getIndustrySystems",
5603
+ [],
5604
+ concurrency
5605
+ );
5606
+ }
5166
5607
  streamCharacterIndustryJobs(characterId) {
5167
5608
  return this.streamEndpoint(
5168
5609
  "getCharacterIndustryJobs",
@@ -5353,6 +5794,20 @@ var KillmailsClient = class extends BaseEsiClient {
5353
5794
  getKillmail(killmailId, killmailHash) {
5354
5795
  return this.api.getKillmail(killmailId, killmailHash);
5355
5796
  }
5797
+ fetchAllCharacterRecentKillmails(characterId, concurrency) {
5798
+ return this.fetchAllEndpoint(
5799
+ "getCharacterRecentKillmails",
5800
+ [characterId],
5801
+ concurrency
5802
+ );
5803
+ }
5804
+ fetchAllCorporationRecentKillmails(corporationId, concurrency) {
5805
+ return this.fetchAllEndpoint(
5806
+ "getCorporationRecentKillmails",
5807
+ [corporationId],
5808
+ concurrency
5809
+ );
5810
+ }
5356
5811
  streamCharacterRecentKillmails(characterId) {
5357
5812
  return this.streamEndpoint(
5358
5813
  "getCharacterRecentKillmails",
@@ -5516,6 +5971,20 @@ var LoyaltyClient = class extends BaseEsiClient {
5516
5971
  getLoyaltyStoreOffers(corporationId) {
5517
5972
  return this.api.getLoyaltyStoreOffers(corporationId);
5518
5973
  }
5974
+ fetchAllLoyaltyPoints(characterId, concurrency) {
5975
+ return this.fetchAllEndpoint(
5976
+ "getLoyaltyPoints",
5977
+ [characterId],
5978
+ concurrency
5979
+ );
5980
+ }
5981
+ fetchAllLoyaltyStoreOffers(corporationId, concurrency) {
5982
+ return this.fetchAllEndpoint(
5983
+ "getLoyaltyStoreOffers",
5984
+ [corporationId],
5985
+ concurrency
5986
+ );
5987
+ }
5519
5988
  streamLoyaltyPoints(characterId) {
5520
5989
  return this.streamEndpoint("getLoyaltyPoints", characterId);
5521
5990
  }
@@ -5753,6 +6222,20 @@ var MailClient = class extends BaseEsiClient {
5753
6222
  getMailingLists(characterId) {
5754
6223
  return this.api.getMailingLists(characterId);
5755
6224
  }
6225
+ fetchAllMailHeaders(characterId, concurrency) {
6226
+ return this.fetchAllEndpoint(
6227
+ "getCharacterMailHeaders",
6228
+ [characterId],
6229
+ concurrency
6230
+ );
6231
+ }
6232
+ fetchAllMailingLists(characterId, concurrency) {
6233
+ return this.fetchAllEndpoint(
6234
+ "getMailingLists",
6235
+ [characterId],
6236
+ concurrency
6237
+ );
6238
+ }
5756
6239
  streamMailHeaders(characterId) {
5757
6240
  return this.streamEndpoint(
5758
6241
  "getCharacterMailHeaders",
@@ -6077,6 +6560,48 @@ var MarketClient = class extends BaseEsiClient {
6077
6560
  getMarketOrdersInStructure(structureId) {
6078
6561
  return this.api.getMarketOrdersInStructure(structureId);
6079
6562
  }
6563
+ fetchAllMarketOrders(regionId, concurrency) {
6564
+ return this.fetchAllEndpoint(
6565
+ "getMarketOrders",
6566
+ [regionId, "all"],
6567
+ concurrency
6568
+ );
6569
+ }
6570
+ fetchAllMarketTypes(regionId, concurrency) {
6571
+ return this.fetchAllEndpoint(
6572
+ "getMarketTypes",
6573
+ [regionId],
6574
+ concurrency
6575
+ );
6576
+ }
6577
+ fetchAllCharacterOrderHistory(characterId, concurrency) {
6578
+ return this.fetchAllEndpoint(
6579
+ "getCharacterOrderHistory",
6580
+ [characterId],
6581
+ concurrency
6582
+ );
6583
+ }
6584
+ fetchAllCorporationOrders(corporationId, concurrency) {
6585
+ return this.fetchAllEndpoint(
6586
+ "getCorporationOrders",
6587
+ [corporationId],
6588
+ concurrency
6589
+ );
6590
+ }
6591
+ fetchAllCorporationOrderHistory(corporationId, concurrency) {
6592
+ return this.fetchAllEndpoint(
6593
+ "getCorporationOrderHistory",
6594
+ [corporationId],
6595
+ concurrency
6596
+ );
6597
+ }
6598
+ fetchAllMarketOrdersInStructure(structureId, concurrency) {
6599
+ return this.fetchAllEndpoint(
6600
+ "getMarketOrdersInStructure",
6601
+ [structureId],
6602
+ concurrency
6603
+ );
6604
+ }
6080
6605
  streamMarketOrders(regionId) {
6081
6606
  return this.streamEndpoint("getMarketOrders", regionId, "all");
6082
6607
  }
@@ -6529,6 +7054,20 @@ var PiClient = class extends BaseEsiClient {
6529
7054
  getSchematicInformation(schematicId) {
6530
7055
  return this.api.getSchematicInformation(schematicId);
6531
7056
  }
7057
+ fetchAllColonies(characterId, concurrency) {
7058
+ return this.fetchAllEndpoint(
7059
+ "getColonies",
7060
+ [characterId],
7061
+ concurrency
7062
+ );
7063
+ }
7064
+ fetchAllCorporationCustomsOffices(corporationId, concurrency) {
7065
+ return this.fetchAllEndpoint(
7066
+ "getCorporationCustomsOffices",
7067
+ [corporationId],
7068
+ concurrency
7069
+ );
7070
+ }
6532
7071
  streamColonies(characterId) {
6533
7072
  return this.streamEndpoint("getColonies", characterId);
6534
7073
  }
@@ -6701,6 +7240,13 @@ var CharacterSkillsClient = class extends BaseEsiClient {
6701
7240
  getCharacterSkills(characterId) {
6702
7241
  return this.api.getCharacterSkills(characterId);
6703
7242
  }
7243
+ fetchAllCharacterSkillQueue(characterId, concurrency) {
7244
+ return this.fetchAllEndpoint(
7245
+ "getCharacterSkillQueue",
7246
+ [characterId],
7247
+ concurrency
7248
+ );
7249
+ }
6704
7250
  streamCharacterSkillQueue(characterId) {
6705
7251
  return this.streamEndpoint(
6706
7252
  "getCharacterSkillQueue",
@@ -7585,6 +8131,34 @@ var WalletClient = class extends BaseEsiClient {
7585
8131
  getCorporationWalletTransactions(corporationId, division) {
7586
8132
  return this.api.getCorporationWalletTransactions(corporationId, division);
7587
8133
  }
8134
+ fetchAllCharacterWalletJournal(characterId, concurrency) {
8135
+ return this.fetchAllEndpoint(
8136
+ "getCharacterWalletJournal",
8137
+ [characterId],
8138
+ concurrency
8139
+ );
8140
+ }
8141
+ fetchAllCorporationWalletJournal(corporationId, division, concurrency) {
8142
+ return this.fetchAllEndpoint(
8143
+ "getCorporationWalletJournal",
8144
+ [corporationId, division],
8145
+ concurrency
8146
+ );
8147
+ }
8148
+ fetchAllCharacterWalletTransactions(characterId, concurrency) {
8149
+ return this.fetchAllEndpoint(
8150
+ "getCharacterWalletTransactions",
8151
+ [characterId],
8152
+ concurrency
8153
+ );
8154
+ }
8155
+ fetchAllCorporationWalletTransactions(corporationId, division, concurrency) {
8156
+ return this.fetchAllEndpoint(
8157
+ "getCorporationWalletTransactions",
8158
+ [corporationId, division],
8159
+ concurrency
8160
+ );
8161
+ }
7588
8162
  streamCharacterWalletJournal(characterId) {
7589
8163
  return this.streamEndpoint(
7590
8164
  "getCharacterWalletJournal",
@@ -7701,6 +8275,16 @@ var WarsClient = class extends BaseEsiClient {
7701
8275
  getWarKillmails(warId) {
7702
8276
  return this.api.getWarKillmails(warId);
7703
8277
  }
8278
+ fetchAllWars(concurrency) {
8279
+ return this.fetchAllEndpoint("getWars", [], concurrency);
8280
+ }
8281
+ fetchAllWarKillmails(warId, concurrency) {
8282
+ return this.fetchAllEndpoint(
8283
+ "getWarKillmails",
8284
+ [warId],
8285
+ concurrency
8286
+ );
8287
+ }
7704
8288
  streamWars() {
7705
8289
  return this.streamEndpoint("getWars");
7706
8290
  }
@@ -9332,6 +9916,7 @@ var RateLimiter = class _RateLimiter {
9332
9916
  minDelayMs;
9333
9917
  decelerationThreshold;
9334
9918
  userKeyExtractor;
9919
+ endpointOverrides;
9335
9920
  lastRequestTime = 0;
9336
9921
  minDelayChain = Promise.resolve();
9337
9922
  isTestMode = false;
@@ -9345,6 +9930,7 @@ var RateLimiter = class _RateLimiter {
9345
9930
  this.minDelayMs = config?.minDelayMs ?? 50;
9346
9931
  this.decelerationThreshold = config?.decelerationThreshold ?? 0.2;
9347
9932
  this.userKeyExtractor = config?.userKeyExtractor;
9933
+ this.endpointOverrides = config?.endpointOverrides ?? {};
9348
9934
  if (this.userKeyExtractor) {
9349
9935
  this.userBuckets = /* @__PURE__ */ new Map();
9350
9936
  }
@@ -9387,6 +9973,14 @@ var RateLimiter = class _RateLimiter {
9387
9973
  if (!templatePath || !method) return void 0;
9388
9974
  const normalized = templatePath.replace(/\/$/, "").replace(/\{(\w+)\}/g, (_, name) => `{${camelToSnake(name)}}`);
9389
9975
  const key = `${method}:${normalized}`;
9976
+ const override = this.endpointOverrides[key];
9977
+ if (override) {
9978
+ return {
9979
+ group: `endpoint:${key}`,
9980
+ maxTokens: override.maxTokens,
9981
+ windowSizeMs: override.windowSizeMs
9982
+ };
9983
+ }
9390
9984
  return esiRateLimitGroups[key];
9391
9985
  }
9392
9986
  resolveUserSet(requestHeaders) {
@@ -10251,6 +10845,7 @@ var ApiClientBuilder = class {
10251
10845
  cache;
10252
10846
  circuitBreaker;
10253
10847
  _timeout;
10848
+ _fetch;
10254
10849
  setClientId(clientId) {
10255
10850
  this.clientId = clientId;
10256
10851
  return this;
@@ -10279,12 +10874,17 @@ var ApiClientBuilder = class {
10279
10874
  this._timeout = timeout;
10280
10875
  return this;
10281
10876
  }
10877
+ setFetch(fn) {
10878
+ this._fetch = fn;
10879
+ return this;
10880
+ }
10282
10881
  build() {
10283
10882
  const client = new ApiClient(this.clientId, this.link, this.accessToken);
10284
10883
  client.setRateLimiter(this.rateLimiter ?? new RateLimiter());
10285
10884
  if (this.cache) client.setCache(this.cache);
10286
10885
  if (this.circuitBreaker) client.setCircuitBreaker(this.circuitBreaker);
10287
10886
  if (this._timeout !== void 0) client.setTimeout(this._timeout);
10887
+ if (this._fetch) client.setFetch(this._fetch);
10288
10888
  return client;
10289
10889
  }
10290
10890
  };
@@ -10420,6 +11020,19 @@ var esiEndpointScopes = {
10420
11020
  "GET:universe/structures/{structure_id}": ["esi-universe.read_structures.v1"]
10421
11021
  };
10422
11022
 
11023
+ // src/core/logger/NoopLogger.ts
11024
+ var noop = () => {
11025
+ };
11026
+ var noopLogger = {
11027
+ info: noop,
11028
+ warn: noop,
11029
+ error: noop,
11030
+ debug: noop
11031
+ };
11032
+ function createNoopLogger() {
11033
+ return noopLogger;
11034
+ }
11035
+
10423
11036
  // src/types/branded.ts
10424
11037
  function brand(value) {
10425
11038
  return value;
@@ -10688,8 +11301,10 @@ export {
10688
11301
  brand,
10689
11302
  buildEndpointPath,
10690
11303
  configureApiClient,
11304
+ createNoopLogger,
10691
11305
  esiEndpointScopes,
10692
11306
  fetchAllCursorPages,
11307
+ fetchAllPages,
10693
11308
  fetchPages,
10694
11309
  getDefaultClient,
10695
11310
  isCircuitOpen,