@lgriffin/esi.ts 7.4.0 → 9.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (348) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/README.md +100 -24
  3. package/dist/EsiClient.d.ts +3 -0
  4. package/dist/EsiClient.d.ts.map +1 -1
  5. package/dist/EsiClientBuilder.d.ts +1 -0
  6. package/dist/EsiClientBuilder.d.ts.map +1 -1
  7. package/dist/clients/AllianceClient.d.ts +3 -0
  8. package/dist/clients/AllianceClient.d.ts.map +1 -1
  9. package/dist/clients/BaseEsiClient.d.ts +1 -1
  10. package/dist/clients/BaseEsiClient.d.ts.map +1 -1
  11. package/dist/clients/CalendarClient.d.ts +3 -0
  12. package/dist/clients/CalendarClient.d.ts.map +1 -1
  13. package/dist/clients/CharacterClient.d.ts +10 -2
  14. package/dist/clients/CharacterClient.d.ts.map +1 -1
  15. package/dist/clients/ClonesClient.d.ts +2 -0
  16. package/dist/clients/ClonesClient.d.ts.map +1 -1
  17. package/dist/clients/ContactsClient.d.ts +7 -0
  18. package/dist/clients/ContactsClient.d.ts.map +1 -1
  19. package/dist/clients/CorporationsClient.d.ts +18 -0
  20. package/dist/clients/CorporationsClient.d.ts.map +1 -1
  21. package/dist/clients/FittingsClient.d.ts +2 -0
  22. package/dist/clients/FittingsClient.d.ts.map +1 -1
  23. package/dist/clients/FleetClient.d.ts +3 -0
  24. package/dist/clients/FleetClient.d.ts.map +1 -1
  25. package/dist/clients/IndustryClient.d.ts +9 -0
  26. package/dist/clients/IndustryClient.d.ts.map +1 -1
  27. package/dist/clients/LoyaltyClient.d.ts +3 -0
  28. package/dist/clients/LoyaltyClient.d.ts.map +1 -1
  29. package/dist/clients/MailClient.d.ts +6 -0
  30. package/dist/clients/MailClient.d.ts.map +1 -1
  31. package/dist/clients/MarketClient.d.ts +13 -22
  32. package/dist/clients/MarketClient.d.ts.map +1 -1
  33. package/dist/clients/PiClient.d.ts +3 -0
  34. package/dist/clients/PiClient.d.ts.map +1 -1
  35. package/dist/clients/SkillsClient.d.ts +2 -0
  36. package/dist/clients/SkillsClient.d.ts.map +1 -1
  37. package/dist/clients/WalletClient.d.ts +1 -0
  38. package/dist/clients/WalletClient.d.ts.map +1 -1
  39. package/dist/clients/WarsClient.d.ts +3 -0
  40. package/dist/clients/WarsClient.d.ts.map +1 -1
  41. package/dist/config/jest/globalSetup.d.ts.map +1 -1
  42. package/dist/config/jest/globalTeardown.d.ts.map +1 -1
  43. package/dist/core/ApiClient.d.ts +14 -6
  44. package/dist/core/ApiClient.d.ts.map +1 -1
  45. package/dist/core/ApiRequestHandler.d.ts +3 -11
  46. package/dist/core/ApiRequestHandler.d.ts.map +1 -1
  47. package/dist/core/IDeduplicator.d.ts +6 -0
  48. package/dist/core/IDeduplicator.d.ts.map +1 -0
  49. package/dist/core/IRetryStrategy.d.ts +5 -0
  50. package/dist/core/IRetryStrategy.d.ts.map +1 -0
  51. package/dist/core/RequestDeduplicator.d.ts +2 -1
  52. package/dist/core/RequestDeduplicator.d.ts.map +1 -1
  53. package/dist/core/RetryStrategy.d.ts +19 -0
  54. package/dist/core/RetryStrategy.d.ts.map +1 -0
  55. package/dist/core/circuitBreaker/CircuitBreaker.d.ts +11 -1
  56. package/dist/core/circuitBreaker/CircuitBreaker.d.ts.map +1 -1
  57. package/dist/core/circuitBreaker/ICircuitBreaker.d.ts +23 -0
  58. package/dist/core/circuitBreaker/ICircuitBreaker.d.ts.map +1 -0
  59. package/dist/core/configureApiClient.d.ts +18 -0
  60. package/dist/core/configureApiClient.d.ts.map +1 -0
  61. package/dist/core/endpoints/EndpointDefinition.d.ts +2 -0
  62. package/dist/core/endpoints/EndpointDefinition.d.ts.map +1 -1
  63. package/dist/core/endpoints/calendarEndpoints.d.ts +1 -1
  64. package/dist/core/endpoints/characterEndpoints.d.ts +3 -3
  65. package/dist/core/endpoints/contactEndpoints.d.ts +7 -3
  66. package/dist/core/endpoints/contactEndpoints.d.ts.map +1 -1
  67. package/dist/core/endpoints/corporationEndpoints.d.ts +4 -1
  68. package/dist/core/endpoints/corporationEndpoints.d.ts.map +1 -1
  69. package/dist/core/endpoints/createClient.d.ts +18 -1
  70. package/dist/core/endpoints/createClient.d.ts.map +1 -1
  71. package/dist/core/endpoints/dogmaEndpoints.d.ts +17 -0
  72. package/dist/core/endpoints/dogmaEndpoints.d.ts.map +1 -1
  73. package/dist/core/endpoints/esi-scopes.generated.d.ts +1 -1
  74. package/dist/core/endpoints/esi-scopes.generated.d.ts.map +1 -1
  75. package/dist/core/endpoints/fleetEndpoints.d.ts +5 -0
  76. package/dist/core/endpoints/fleetEndpoints.d.ts.map +1 -1
  77. package/dist/core/endpoints/mailEndpoints.d.ts +13 -0
  78. package/dist/core/endpoints/mailEndpoints.d.ts.map +1 -1
  79. package/dist/core/endpoints/marketEndpoints.d.ts +29 -48
  80. package/dist/core/endpoints/marketEndpoints.d.ts.map +1 -1
  81. package/dist/core/endpoints/piEndpoints.d.ts +3 -0
  82. package/dist/core/endpoints/piEndpoints.d.ts.map +1 -1
  83. package/dist/core/endpoints/universeEndpoints.d.ts +13 -2
  84. package/dist/core/endpoints/universeEndpoints.d.ts.map +1 -1
  85. package/dist/core/endpoints/walletEndpoints.d.ts +4 -0
  86. package/dist/core/endpoints/walletEndpoints.d.ts.map +1 -1
  87. package/dist/core/logger/logger.d.ts +2 -1
  88. package/dist/core/logger/logger.d.ts.map +1 -1
  89. package/dist/core/pagination/AsyncPaginationIterator.d.ts +4 -1
  90. package/dist/core/pagination/AsyncPaginationIterator.d.ts.map +1 -1
  91. package/dist/core/pagination/CursorPaginationHandler.d.ts +15 -6
  92. package/dist/core/pagination/CursorPaginationHandler.d.ts.map +1 -1
  93. package/dist/core/pagination/PaginationHandler.d.ts +7 -6
  94. package/dist/core/pagination/PaginationHandler.d.ts.map +1 -1
  95. package/dist/core/rateLimiter/RateLimiter.d.ts +8 -2
  96. package/dist/core/rateLimiter/RateLimiter.d.ts.map +1 -1
  97. package/dist/core/requestPipeline/cachePolicy.d.ts +31 -0
  98. package/dist/core/requestPipeline/cachePolicy.d.ts.map +1 -0
  99. package/dist/core/requestPipeline/dependencies.d.ts +10 -0
  100. package/dist/core/requestPipeline/dependencies.d.ts.map +1 -0
  101. package/dist/core/requestPipeline/fetchExecution.d.ts +28 -0
  102. package/dist/core/requestPipeline/fetchExecution.d.ts.map +1 -0
  103. package/dist/core/requestPipeline/headers.d.ts +11 -0
  104. package/dist/core/requestPipeline/headers.d.ts.map +1 -0
  105. package/dist/core/requestPipeline/index.d.ts +10 -0
  106. package/dist/core/requestPipeline/index.d.ts.map +1 -0
  107. package/dist/core/requestPipeline/middlewareBridge.d.ts +15 -0
  108. package/dist/core/requestPipeline/middlewareBridge.d.ts.map +1 -0
  109. package/dist/core/requestPipeline/paginationOrchestration.d.ts +15 -0
  110. package/dist/core/requestPipeline/paginationOrchestration.d.ts.map +1 -0
  111. package/dist/core/requestPipeline/statusHandling.d.ts +18 -0
  112. package/dist/core/requestPipeline/statusHandling.d.ts.map +1 -0
  113. package/dist/core/util/error.d.ts +6 -1
  114. package/dist/core/util/error.d.ts.map +1 -1
  115. package/dist/errors.d.ts +4 -0
  116. package/dist/errors.d.ts.map +1 -0
  117. package/dist/errors.js +196 -0
  118. package/dist/errors.js.map +1 -0
  119. package/dist/errors.mjs +146 -0
  120. package/dist/errors.mjs.map +1 -0
  121. package/dist/index.d.ts +9 -2
  122. package/dist/index.d.ts.map +1 -1
  123. package/dist/index.js +9937 -176
  124. package/dist/index.js.map +1 -0
  125. package/dist/index.mjs +9834 -0
  126. package/dist/index.mjs.map +1 -0
  127. package/dist/schemas/calendar.d.ts +1 -1
  128. package/dist/schemas/character.d.ts +1 -10
  129. package/dist/schemas/character.d.ts.map +1 -1
  130. package/dist/schemas/common.d.ts +9 -0
  131. package/dist/schemas/common.d.ts.map +1 -1
  132. package/dist/schemas/contacts.d.ts +2 -1
  133. package/dist/schemas/contacts.d.ts.map +1 -1
  134. package/dist/schemas/corporation.d.ts +4 -9
  135. package/dist/schemas/corporation.d.ts.map +1 -1
  136. package/dist/schemas/dogma.d.ts +17 -0
  137. package/dist/schemas/dogma.d.ts.map +1 -1
  138. package/dist/schemas/fleet.d.ts +1 -0
  139. package/dist/schemas/fleet.d.ts.map +1 -1
  140. package/dist/schemas/index.js +2085 -46
  141. package/dist/schemas/index.js.map +1 -0
  142. package/dist/schemas/index.mjs +1914 -0
  143. package/dist/schemas/index.mjs.map +1 -0
  144. package/dist/schemas/market.d.ts +91 -4
  145. package/dist/schemas/market.d.ts.map +1 -1
  146. package/dist/schemas/pi.d.ts +3 -0
  147. package/dist/schemas/pi.d.ts.map +1 -1
  148. package/dist/schemas/sovereignty.d.ts +2 -0
  149. package/dist/schemas/sovereignty.d.ts.map +1 -1
  150. package/dist/schemas/universe.d.ts +11 -2
  151. package/dist/schemas/universe.d.ts.map +1 -1
  152. package/dist/schemas/wallet.d.ts +2 -0
  153. package/dist/schemas/wallet.d.ts.map +1 -1
  154. package/dist/testing/TestDataFactory.d.ts.map +1 -1
  155. package/dist/testing/index.d.ts +2 -0
  156. package/dist/testing/index.d.ts.map +1 -0
  157. package/dist/testing/index.js +935 -0
  158. package/dist/testing/index.js.map +1 -0
  159. package/dist/testing/index.mjs +898 -0
  160. package/dist/testing/index.mjs.map +1 -0
  161. package/dist/types/character.d.ts +2 -1
  162. package/dist/types/character.d.ts.map +1 -1
  163. package/dist/types/generated/esi-spec.generated.d.ts +3 -3
  164. package/dist/types/generated/esi-spec.generated.d.ts.map +1 -1
  165. package/dist/types/generated/spec-alignment.check.d.ts +9 -0
  166. package/dist/types/generated/spec-alignment.check.d.ts.map +1 -1
  167. package/dist/types/market.d.ts +7 -1
  168. package/dist/types/market.d.ts.map +1 -1
  169. package/package.json +33 -6
  170. package/dist/EsiClient.js +0 -251
  171. package/dist/EsiClientBuilder.js +0 -217
  172. package/dist/clients/AccessListsClient.js +0 -20
  173. package/dist/clients/AllianceClient.js +0 -72
  174. package/dist/clients/AssetsClient.js +0 -81
  175. package/dist/clients/BaseEsiClient.js +0 -40
  176. package/dist/clients/CalendarClient.js +0 -54
  177. package/dist/clients/CharacterClient.js +0 -149
  178. package/dist/clients/ClonesClient.js +0 -31
  179. package/dist/clients/ContactsClient.js +0 -104
  180. package/dist/clients/ContractsClient.js +0 -111
  181. package/dist/clients/CorporationsClient.js +0 -227
  182. package/dist/clients/DogmaClient.js +0 -55
  183. package/dist/clients/FactionClient.js +0 -79
  184. package/dist/clients/FittingsClient.js +0 -42
  185. package/dist/clients/FleetClient.js +0 -162
  186. package/dist/clients/FreelanceJobsClient.js +0 -76
  187. package/dist/clients/IncursionsClient.js +0 -19
  188. package/dist/clients/IndustryClient.js +0 -88
  189. package/dist/clients/InsuranceClient.js +0 -19
  190. package/dist/clients/KillmailsClient.js +0 -47
  191. package/dist/clients/LocationClient.js +0 -41
  192. package/dist/clients/LoyaltyClient.js +0 -30
  193. package/dist/clients/MailClient.js +0 -108
  194. package/dist/clients/MarketClient.js +0 -131
  195. package/dist/clients/MercenaryClient.js +0 -27
  196. package/dist/clients/MetaClient.js +0 -56
  197. package/dist/clients/PiClient.js +0 -51
  198. package/dist/clients/RouteClient.js +0 -24
  199. package/dist/clients/SearchClient.js +0 -22
  200. package/dist/clients/SkillsClient.js +0 -41
  201. package/dist/clients/SkyhooksClient.js +0 -35
  202. package/dist/clients/SovereigntyClient.js +0 -27
  203. package/dist/clients/StatusClient.js +0 -19
  204. package/dist/clients/UiClient.js +0 -58
  205. package/dist/clients/UniverseClient.js +0 -277
  206. package/dist/clients/WalletClient.js +0 -82
  207. package/dist/clients/WarsClient.js +0 -37
  208. package/dist/config/configManager.js +0 -47
  209. package/dist/config/jest/globalSetup.js +0 -7
  210. package/dist/config/jest/globalTeardown.js +0 -7
  211. package/dist/config/jest/jest.setup.js +0 -29
  212. package/dist/core/ApiClient.js +0 -123
  213. package/dist/core/ApiClientBuilder.js +0 -54
  214. package/dist/core/ApiRequestHandler.js +0 -444
  215. package/dist/core/BatchRequestHandler.js +0 -66
  216. package/dist/core/ClientRegistry.js +0 -116
  217. package/dist/core/EsiDiagnostics.js +0 -47
  218. package/dist/core/RequestDeduplicator.js +0 -26
  219. package/dist/core/cache/ETagCacheManager.js +0 -184
  220. package/dist/core/cache/ICache.js +0 -2
  221. package/dist/core/circuitBreaker/CircuitBreaker.js +0 -156
  222. package/dist/core/constants.js +0 -7
  223. package/dist/core/endpoints/EndpointDefinition.js +0 -2
  224. package/dist/core/endpoints/accessListEndpoints.js +0 -13
  225. package/dist/core/endpoints/allianceEndpoints.js +0 -34
  226. package/dist/core/endpoints/assetEndpoints.js +0 -51
  227. package/dist/core/endpoints/buildEndpointPath.js +0 -44
  228. package/dist/core/endpoints/calendarEndpoints.js +0 -35
  229. package/dist/core/endpoints/characterEndpoints.js +0 -104
  230. package/dist/core/endpoints/cloneEndpoints.js +0 -21
  231. package/dist/core/endpoints/contactEndpoints.js +0 -72
  232. package/dist/core/endpoints/contractEndpoints.js +0 -70
  233. package/dist/core/endpoints/corporationEndpoints.js +0 -161
  234. package/dist/core/endpoints/createClient.js +0 -175
  235. package/dist/core/endpoints/dogmaEndpoints.js +0 -40
  236. package/dist/core/endpoints/esi-cache-ttls.generated.js +0 -133
  237. package/dist/core/endpoints/esi-rate-limit-groups.generated.js +0 -153
  238. package/dist/core/endpoints/esi-scopes.generated.js +0 -135
  239. package/dist/core/endpoints/factionEndpoints.js +0 -57
  240. package/dist/core/endpoints/fittingEndpoints.js +0 -27
  241. package/dist/core/endpoints/fleetEndpoints.js +0 -101
  242. package/dist/core/endpoints/freelanceJobsEndpoints.js +0 -51
  243. package/dist/core/endpoints/incursionEndpoints.js +0 -13
  244. package/dist/core/endpoints/industryEndpoints.js +0 -61
  245. package/dist/core/endpoints/insuranceEndpoints.js +0 -13
  246. package/dist/core/endpoints/killmailEndpoints.js +0 -28
  247. package/dist/core/endpoints/locationEndpoints.js +0 -27
  248. package/dist/core/endpoints/loyaltyEndpoints.js +0 -21
  249. package/dist/core/endpoints/mailEndpoints.js +0 -68
  250. package/dist/core/endpoints/marketEndpoints.js +0 -84
  251. package/dist/core/endpoints/mercenaryEndpoints.js +0 -19
  252. package/dist/core/endpoints/metaEndpoints.js +0 -12
  253. package/dist/core/endpoints/piEndpoints.js +0 -36
  254. package/dist/core/endpoints/routeEndpoints.js +0 -14
  255. package/dist/core/endpoints/searchEndpoints.js +0 -14
  256. package/dist/core/endpoints/skillEndpoints.js +0 -29
  257. package/dist/core/endpoints/skyhookEndpoints.js +0 -25
  258. package/dist/core/endpoints/sovereigntyEndpoints.js +0 -19
  259. package/dist/core/endpoints/statusEndpoints.js +0 -12
  260. package/dist/core/endpoints/uiEndpoints.js +0 -39
  261. package/dist/core/endpoints/universeEndpoints.js +0 -210
  262. package/dist/core/endpoints/walletEndpoints.js +0 -50
  263. package/dist/core/endpoints/warEndpoints.js +0 -28
  264. package/dist/core/logger/ILogger.js +0 -2
  265. package/dist/core/logger/logger.js +0 -16
  266. package/dist/core/logger/loggerUtil.js +0 -30
  267. package/dist/core/middleware/Middleware.js +0 -42
  268. package/dist/core/pagination/AsyncPaginationIterator.js +0 -27
  269. package/dist/core/pagination/CursorPaginationHandler.js +0 -148
  270. package/dist/core/pagination/PaginationHandler.js +0 -115
  271. package/dist/core/rateLimiter/IRateLimiter.js +0 -2
  272. package/dist/core/rateLimiter/RateLimiter.js +0 -307
  273. package/dist/core/util/error.js +0 -122
  274. package/dist/core/util/headersUtil.js +0 -37
  275. package/dist/core/util/retry.js +0 -9
  276. package/dist/core/util/sleep.js +0 -6
  277. package/dist/core/util/stringUtil.js +0 -6
  278. package/dist/core/util/testHelpers.js +0 -9
  279. package/dist/core/util/validation.js +0 -52
  280. package/dist/schemas/access-lists.js +0 -14
  281. package/dist/schemas/alliance.js +0 -28
  282. package/dist/schemas/assets.js +0 -26
  283. package/dist/schemas/calendar.js +0 -43
  284. package/dist/schemas/character.js +0 -122
  285. package/dist/schemas/clones.js +0 -21
  286. package/dist/schemas/common.js +0 -34
  287. package/dist/schemas/contacts.js +0 -15
  288. package/dist/schemas/contracts.js +0 -58
  289. package/dist/schemas/corporation.js +0 -192
  290. package/dist/schemas/dogma.js +0 -42
  291. package/dist/schemas/faction-warfare.js +0 -92
  292. package/dist/schemas/fittings.js +0 -15
  293. package/dist/schemas/fleet.js +0 -48
  294. package/dist/schemas/freelance-jobs.js +0 -99
  295. package/dist/schemas/incursions.js +0 -14
  296. package/dist/schemas/industry.js +0 -75
  297. package/dist/schemas/insurance.js +0 -12
  298. package/dist/schemas/killmails.js +0 -42
  299. package/dist/schemas/location.js +0 -20
  300. package/dist/schemas/loyalty.js +0 -20
  301. package/dist/schemas/mail.js +0 -38
  302. package/dist/schemas/market.js +0 -39
  303. package/dist/schemas/mercenary.js +0 -22
  304. package/dist/schemas/pi.js +0 -85
  305. package/dist/schemas/skills.js +0 -30
  306. package/dist/schemas/skyhooks.js +0 -30
  307. package/dist/schemas/sovereignty.js +0 -70
  308. package/dist/schemas/status.js +0 -10
  309. package/dist/schemas/universe.js +0 -245
  310. package/dist/schemas/wallet.js +0 -29
  311. package/dist/schemas/wars.js +0 -31
  312. package/dist/testing/TestDataFactory.js +0 -823
  313. package/dist/types/access-lists.js +0 -2
  314. package/dist/types/alliance.js +0 -2
  315. package/dist/types/api-responses.js +0 -73
  316. package/dist/types/assets.js +0 -2
  317. package/dist/types/branded.js +0 -6
  318. package/dist/types/calendar.js +0 -2
  319. package/dist/types/character.js +0 -2
  320. package/dist/types/clones.js +0 -2
  321. package/dist/types/common.js +0 -2
  322. package/dist/types/contacts.js +0 -2
  323. package/dist/types/contracts.js +0 -2
  324. package/dist/types/corporation.js +0 -2
  325. package/dist/types/dogma.js +0 -2
  326. package/dist/types/faction-warfare.js +0 -2
  327. package/dist/types/fittings.js +0 -2
  328. package/dist/types/fleet.js +0 -2
  329. package/dist/types/freelance-jobs.js +0 -2
  330. package/dist/types/generated/esi-spec.generated.js +0 -6
  331. package/dist/types/generated/spec-alignment.check.js +0 -14
  332. package/dist/types/incursions.js +0 -2
  333. package/dist/types/industry.js +0 -2
  334. package/dist/types/insurance.js +0 -2
  335. package/dist/types/killmails.js +0 -2
  336. package/dist/types/location.js +0 -2
  337. package/dist/types/loyalty.js +0 -2
  338. package/dist/types/mail.js +0 -2
  339. package/dist/types/market.js +0 -2
  340. package/dist/types/mercenary.js +0 -2
  341. package/dist/types/pi.js +0 -2
  342. package/dist/types/skills.js +0 -2
  343. package/dist/types/skyhooks.js +0 -2
  344. package/dist/types/sovereignty.js +0 -2
  345. package/dist/types/status.js +0 -2
  346. package/dist/types/universe.js +0 -2
  347. package/dist/types/wallet.js +0 -2
  348. package/dist/types/wars.js +0 -2
@@ -1,44 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.buildEndpointPath = buildEndpointPath;
4
- const validation_1 = require("../util/validation");
5
- function buildEndpointPath(def, args, datasource) {
6
- let argIndex = 0;
7
- let path = def.path;
8
- if (def.pathParams) {
9
- for (const param of def.pathParams) {
10
- const raw = args[argIndex++];
11
- const validated = (0, validation_1.validatePathParam)(param, raw);
12
- path = path.replace(`{${param}}`, encodeURIComponent(validated));
13
- }
14
- }
15
- if (def.queryParams) {
16
- const queryParts = [];
17
- for (const [paramName, queryKey] of Object.entries(def.queryParams)) {
18
- const value = args[argIndex++];
19
- if (value !== undefined) {
20
- const validated = (0, validation_1.validateQueryParam)(paramName, value);
21
- queryParts.push(`${queryKey}=${encodeURIComponent(validated)}`);
22
- }
23
- }
24
- if (queryParts.length > 0) {
25
- path += (path.includes('?') ? '&' : '?') + queryParts.join('&');
26
- }
27
- }
28
- let body = undefined;
29
- if (def.bodyBuilder) {
30
- /* eslint-disable @typescript-eslint/no-unsafe-argument */
31
- body = def.bodyBuilder(...args.slice(argIndex));
32
- /* eslint-enable @typescript-eslint/no-unsafe-argument */
33
- }
34
- else if (def.hasBody) {
35
- // eslint-disable-next-line security/detect-object-injection
36
- body = args[argIndex];
37
- }
38
- if (datasource) {
39
- path +=
40
- (path.includes('?') ? '&' : '?') +
41
- `datasource=${encodeURIComponent(datasource)}`;
42
- }
43
- return { path, body };
44
- }
@@ -1,35 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.calendarEndpoints = void 0;
4
- const zod_1 = require("zod");
5
- const calendar_1 = require("../../schemas/calendar");
6
- exports.calendarEndpoints = {
7
- getCalendarEvents: {
8
- path: 'characters/{characterId}/calendar/',
9
- method: 'GET',
10
- requiresAuth: true,
11
- pathParams: ['characterId'],
12
- responseSchema: zod_1.z.array(calendar_1.CalendarEventSchema),
13
- },
14
- getCalendarEventById: {
15
- path: 'characters/{characterId}/calendar/{eventId}/',
16
- method: 'GET',
17
- requiresAuth: true,
18
- pathParams: ['characterId', 'eventId'],
19
- responseSchema: calendar_1.CalendarEventDetailSchema,
20
- },
21
- getEventAttendees: {
22
- path: 'characters/{characterId}/calendar/{eventId}/attendees/',
23
- method: 'GET',
24
- requiresAuth: true,
25
- pathParams: ['characterId', 'eventId'],
26
- responseSchema: zod_1.z.array(calendar_1.CalendarEventAttendeeSchema),
27
- },
28
- respondToCalendarEvent: {
29
- path: 'characters/{characterId}/calendar/{eventId}/',
30
- method: 'PUT',
31
- requiresAuth: true,
32
- pathParams: ['characterId', 'eventId'],
33
- bodyBuilder: (response) => ({ response }),
34
- },
35
- };
@@ -1,104 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.characterEndpoints = void 0;
4
- const zod_1 = require("zod");
5
- const character_1 = require("../../schemas/character");
6
- exports.characterEndpoints = {
7
- getCharacterPublicInfo: {
8
- path: 'characters/{characterId}/',
9
- method: 'GET',
10
- requiresAuth: false,
11
- pathParams: ['characterId'],
12
- responseSchema: character_1.CharacterInfoSchema,
13
- },
14
- getAgentsResearch: {
15
- path: 'characters/{characterId}/agents_research/',
16
- method: 'GET',
17
- requiresAuth: true,
18
- pathParams: ['characterId'],
19
- responseSchema: zod_1.z.array(character_1.AgentResearchSchema),
20
- },
21
- getBlueprints: {
22
- path: 'characters/{characterId}/blueprints/',
23
- method: 'GET',
24
- requiresAuth: true,
25
- pathParams: ['characterId'],
26
- responseSchema: zod_1.z.array(character_1.BlueprintSchema),
27
- },
28
- getRoles: {
29
- path: 'characters/{characterId}/roles',
30
- method: 'GET',
31
- requiresAuth: true,
32
- pathParams: ['characterId'],
33
- responseSchema: character_1.CharacterRoleSchema,
34
- },
35
- getStandings: {
36
- path: 'characters/{characterId}/standings',
37
- method: 'GET',
38
- requiresAuth: true,
39
- pathParams: ['characterId'],
40
- responseSchema: zod_1.z.array(character_1.StandingSchema),
41
- },
42
- getTitles: {
43
- path: 'characters/{characterId}/titles',
44
- method: 'GET',
45
- requiresAuth: true,
46
- pathParams: ['characterId'],
47
- responseSchema: zod_1.z.array(character_1.CharacterTitleSchema),
48
- },
49
- getContactNotifications: {
50
- path: 'characters/{characterId}/notifications/contacts/',
51
- method: 'GET',
52
- requiresAuth: true,
53
- pathParams: ['characterId'],
54
- responseSchema: zod_1.z.array(character_1.ContactNotificationSchema),
55
- },
56
- getCorporationHistory: {
57
- path: 'characters/{characterId}/corporationhistory/',
58
- method: 'GET',
59
- requiresAuth: true,
60
- pathParams: ['characterId'],
61
- responseSchema: zod_1.z.array(character_1.CorporationHistorySchema),
62
- },
63
- getJumpFatigue: {
64
- path: 'characters/{characterId}/fatigue/',
65
- method: 'GET',
66
- requiresAuth: true,
67
- pathParams: ['characterId'],
68
- responseSchema: character_1.JumpFatigueSchema,
69
- },
70
- getMedals: {
71
- path: 'characters/{characterId}/medals/',
72
- method: 'GET',
73
- requiresAuth: true,
74
- pathParams: ['characterId'],
75
- responseSchema: zod_1.z.array(character_1.MedalSchema),
76
- },
77
- getNotifications: {
78
- path: 'characters/{characterId}/notifications/',
79
- method: 'GET',
80
- requiresAuth: true,
81
- pathParams: ['characterId'],
82
- responseSchema: zod_1.z.array(character_1.NotificationSchema),
83
- },
84
- getPortrait: {
85
- path: 'characters/{characterId}/portrait/',
86
- method: 'GET',
87
- requiresAuth: false,
88
- pathParams: ['characterId'],
89
- responseSchema: character_1.CharacterPortraitSchema,
90
- },
91
- postCharacterAffiliation: {
92
- path: 'characters/affiliation',
93
- method: 'POST',
94
- requiresAuth: false,
95
- hasBody: true,
96
- },
97
- calculateCspaChargeCost: {
98
- path: 'characters/{characterId}/cspa/',
99
- method: 'POST',
100
- requiresAuth: true,
101
- pathParams: ['characterId'],
102
- hasBody: true,
103
- },
104
- };
@@ -1,21 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.cloneEndpoints = void 0;
4
- const zod_1 = require("zod");
5
- const clones_1 = require("../../schemas/clones");
6
- exports.cloneEndpoints = {
7
- getClones: {
8
- path: 'characters/{characterId}/clones',
9
- method: 'GET',
10
- requiresAuth: true,
11
- pathParams: ['characterId'],
12
- responseSchema: clones_1.CloneInfoSchema,
13
- },
14
- getImplants: {
15
- path: 'characters/{characterId}/implants',
16
- method: 'GET',
17
- requiresAuth: true,
18
- pathParams: ['characterId'],
19
- responseSchema: zod_1.z.array(zod_1.z.number()),
20
- },
21
- };
@@ -1,72 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.contactEndpoints = void 0;
4
- const zod_1 = require("zod");
5
- const contacts_1 = require("../../schemas/contacts");
6
- exports.contactEndpoints = {
7
- getAllianceContacts: {
8
- path: 'alliances/{allianceId}/contacts',
9
- method: 'GET',
10
- requiresAuth: true,
11
- pathParams: ['allianceId'],
12
- responseSchema: zod_1.z.array(contacts_1.ContactSchema),
13
- },
14
- getAllianceContactLabels: {
15
- path: 'alliances/{allianceId}/contacts/labels',
16
- method: 'GET',
17
- requiresAuth: true,
18
- pathParams: ['allianceId'],
19
- responseSchema: zod_1.z.array(contacts_1.ContactLabelSchema),
20
- },
21
- getCharacterContacts: {
22
- path: 'characters/{characterId}/contacts',
23
- method: 'GET',
24
- requiresAuth: true,
25
- pathParams: ['characterId'],
26
- responseSchema: zod_1.z.array(contacts_1.ContactSchema),
27
- },
28
- getCharacterContactLabels: {
29
- path: 'characters/{characterId}/contacts/labels',
30
- method: 'GET',
31
- requiresAuth: true,
32
- pathParams: ['characterId'],
33
- responseSchema: zod_1.z.array(contacts_1.ContactLabelSchema),
34
- },
35
- getCorporationContacts: {
36
- path: 'corporations/{corporationId}/contacts',
37
- method: 'GET',
38
- requiresAuth: true,
39
- pathParams: ['corporationId'],
40
- responseSchema: zod_1.z.array(contacts_1.ContactSchema),
41
- },
42
- getCorporationContactLabels: {
43
- path: 'corporations/{corporationId}/contacts/labels',
44
- method: 'GET',
45
- requiresAuth: true,
46
- pathParams: ['corporationId'],
47
- responseSchema: zod_1.z.array(contacts_1.ContactLabelSchema),
48
- },
49
- addContacts: {
50
- path: 'characters/{characterId}/contacts',
51
- method: 'POST',
52
- requiresAuth: true,
53
- pathParams: ['characterId'],
54
- queryParams: { standing: 'standing' },
55
- bodyBuilder: (contactIds) => contactIds,
56
- },
57
- editContacts: {
58
- path: 'characters/{characterId}/contacts',
59
- method: 'PUT',
60
- requiresAuth: true,
61
- pathParams: ['characterId'],
62
- queryParams: { standing: 'standing' },
63
- bodyBuilder: (contactIds) => contactIds,
64
- },
65
- deleteCharacterContacts: {
66
- path: 'characters/{characterId}/contacts',
67
- method: 'DELETE',
68
- requiresAuth: true,
69
- pathParams: ['characterId'],
70
- queryParams: { contactIds: 'contact_ids' },
71
- },
72
- };
@@ -1,70 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.contractEndpoints = void 0;
4
- const zod_1 = require("zod");
5
- const contracts_1 = require("../../schemas/contracts");
6
- exports.contractEndpoints = {
7
- getCharacterContracts: {
8
- path: 'characters/{characterId}/contracts',
9
- method: 'GET',
10
- requiresAuth: true,
11
- pathParams: ['characterId'],
12
- responseSchema: zod_1.z.array(contracts_1.ContractSchema),
13
- },
14
- getCharacterContractBids: {
15
- path: 'characters/{characterId}/contracts/{contractId}/bids',
16
- method: 'GET',
17
- requiresAuth: true,
18
- pathParams: ['characterId', 'contractId'],
19
- responseSchema: zod_1.z.array(contracts_1.ContractBidSchema),
20
- },
21
- getCharacterContractItems: {
22
- path: 'characters/{characterId}/contracts/{contractId}/items',
23
- method: 'GET',
24
- requiresAuth: true,
25
- pathParams: ['characterId', 'contractId'],
26
- responseSchema: zod_1.z.array(contracts_1.ContractItemSchema),
27
- },
28
- getCorporationContracts: {
29
- path: 'corporations/{corporationId}/contracts',
30
- method: 'GET',
31
- requiresAuth: true,
32
- pathParams: ['corporationId'],
33
- responseSchema: zod_1.z.array(contracts_1.ContractSchema),
34
- },
35
- getCorporationContractBids: {
36
- path: 'corporations/{corporationId}/contracts/{contractId}/bids',
37
- method: 'GET',
38
- requiresAuth: true,
39
- pathParams: ['corporationId', 'contractId'],
40
- responseSchema: zod_1.z.array(contracts_1.ContractBidSchema),
41
- },
42
- getCorporationContractItems: {
43
- path: 'corporations/{corporationId}/contracts/{contractId}/items',
44
- method: 'GET',
45
- requiresAuth: true,
46
- pathParams: ['corporationId', 'contractId'],
47
- responseSchema: zod_1.z.array(contracts_1.ContractItemSchema),
48
- },
49
- getPublicContracts: {
50
- path: 'contracts/public/{regionId}',
51
- method: 'GET',
52
- requiresAuth: false,
53
- pathParams: ['regionId'],
54
- responseSchema: zod_1.z.array(contracts_1.ContractSchema),
55
- },
56
- getPublicContractBids: {
57
- path: 'contracts/public/bids/{contractId}',
58
- method: 'GET',
59
- requiresAuth: false,
60
- pathParams: ['contractId'],
61
- responseSchema: zod_1.z.array(contracts_1.ContractBidSchema),
62
- },
63
- getPublicContractItems: {
64
- path: 'contracts/public/items/{contractId}',
65
- method: 'GET',
66
- requiresAuth: false,
67
- pathParams: ['contractId'],
68
- responseSchema: zod_1.z.array(contracts_1.ContractItemSchema),
69
- },
70
- };
@@ -1,161 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.corporationEndpoints = void 0;
4
- const zod_1 = require("zod");
5
- const corporation_1 = require("../../schemas/corporation");
6
- const character_1 = require("../../schemas/character");
7
- exports.corporationEndpoints = {
8
- getCorporationInfo: {
9
- path: 'corporations/{corporationId}',
10
- method: 'GET',
11
- requiresAuth: false,
12
- pathParams: ['corporationId'],
13
- responseSchema: corporation_1.CorporationInfoSchema,
14
- },
15
- getCorporationAllianceHistory: {
16
- path: 'corporations/{corporationId}/alliancehistory',
17
- method: 'GET',
18
- requiresAuth: false,
19
- pathParams: ['corporationId'],
20
- responseSchema: zod_1.z.array(corporation_1.CorporationAllianceHistorySchema),
21
- },
22
- getCorporationBlueprints: {
23
- path: 'corporations/{corporationId}/blueprints',
24
- method: 'GET',
25
- requiresAuth: true,
26
- pathParams: ['corporationId'],
27
- responseSchema: zod_1.z.array(character_1.BlueprintSchema),
28
- },
29
- getCorporationAlscLogs: {
30
- path: 'corporations/{corporationId}/containers/logs',
31
- method: 'GET',
32
- requiresAuth: true,
33
- pathParams: ['corporationId'],
34
- responseSchema: zod_1.z.array(corporation_1.ContainerLogSchema),
35
- },
36
- getCorporationDivisions: {
37
- path: 'corporations/{corporationId}/divisions',
38
- method: 'GET',
39
- requiresAuth: true,
40
- pathParams: ['corporationId'],
41
- responseSchema: corporation_1.CorporationDivisionsSchema,
42
- },
43
- getCorporationFacilities: {
44
- path: 'corporations/{corporationId}/facilities',
45
- method: 'GET',
46
- requiresAuth: true,
47
- pathParams: ['corporationId'],
48
- responseSchema: zod_1.z.array(corporation_1.CorporationFacilitySchema),
49
- },
50
- getCorporationIcon: {
51
- path: 'corporations/{corporationId}/icons',
52
- method: 'GET',
53
- requiresAuth: false,
54
- pathParams: ['corporationId'],
55
- responseSchema: corporation_1.CorporationIconSchema,
56
- },
57
- getCorporationMedals: {
58
- path: 'corporations/{corporationId}/medals',
59
- method: 'GET',
60
- requiresAuth: true,
61
- pathParams: ['corporationId'],
62
- responseSchema: zod_1.z.array(corporation_1.CorporationMedalSchema),
63
- },
64
- getCorporationIssuedMedals: {
65
- path: 'corporations/{corporationId}/medals/issued',
66
- method: 'GET',
67
- requiresAuth: true,
68
- pathParams: ['corporationId'],
69
- responseSchema: zod_1.z.array(corporation_1.CorporationIssuedMedalSchema),
70
- },
71
- getCorporationMembers: {
72
- path: 'corporations/{corporationId}/members',
73
- method: 'GET',
74
- requiresAuth: true,
75
- pathParams: ['corporationId'],
76
- responseSchema: zod_1.z.array(zod_1.z.number()),
77
- },
78
- getCorporationMemberLimit: {
79
- path: 'corporations/{corporationId}/members/limit',
80
- method: 'GET',
81
- requiresAuth: true,
82
- pathParams: ['corporationId'],
83
- responseSchema: zod_1.z.number(),
84
- },
85
- getCorporationMembersTitles: {
86
- path: 'corporations/{corporationId}/members/titles',
87
- method: 'GET',
88
- requiresAuth: true,
89
- pathParams: ['corporationId'],
90
- responseSchema: zod_1.z.array(corporation_1.CorporationMemberTitleSchema),
91
- },
92
- getCorporationMemberTracking: {
93
- path: 'corporations/{corporationId}/membertracking',
94
- method: 'GET',
95
- requiresAuth: true,
96
- pathParams: ['corporationId'],
97
- responseSchema: zod_1.z.array(corporation_1.CorporationMemberTrackingSchema),
98
- },
99
- getCorporationMemberRoles: {
100
- path: 'corporations/{corporationId}/roles',
101
- method: 'GET',
102
- requiresAuth: true,
103
- pathParams: ['corporationId'],
104
- responseSchema: zod_1.z.array(corporation_1.CorporationMemberRoleSchema),
105
- },
106
- getCorporationMemberRolesHistory: {
107
- path: 'corporations/{corporationId}/roles/history',
108
- method: 'GET',
109
- requiresAuth: true,
110
- pathParams: ['corporationId'],
111
- responseSchema: zod_1.z.array(corporation_1.CorporationRoleHistorySchema),
112
- },
113
- getCorporationShareholders: {
114
- path: 'corporations/{corporationId}/shareholders',
115
- method: 'GET',
116
- requiresAuth: true,
117
- pathParams: ['corporationId'],
118
- responseSchema: zod_1.z.array(corporation_1.CorporationShareholderSchema),
119
- },
120
- getCorporationStandings: {
121
- path: 'corporations/{corporationId}/standings',
122
- method: 'GET',
123
- requiresAuth: true,
124
- pathParams: ['corporationId'],
125
- responseSchema: zod_1.z.array(corporation_1.CorporationStandingSchema),
126
- },
127
- getCorporationStarbases: {
128
- path: 'corporations/{corporationId}/starbases',
129
- method: 'GET',
130
- requiresAuth: true,
131
- pathParams: ['corporationId'],
132
- responseSchema: zod_1.z.array(corporation_1.CorporationStarbaseSchema),
133
- },
134
- getCorporationStarbaseDetail: {
135
- path: 'corporations/{corporationId}/starbases/{starbaseId}',
136
- method: 'GET',
137
- requiresAuth: true,
138
- pathParams: ['corporationId', 'starbaseId'],
139
- responseSchema: corporation_1.CorporationStarbaseDetailSchema,
140
- },
141
- getCorporationStructures: {
142
- path: 'corporations/{corporationId}/structures',
143
- method: 'GET',
144
- requiresAuth: true,
145
- pathParams: ['corporationId'],
146
- responseSchema: zod_1.z.array(corporation_1.CorporationStructureSchema),
147
- },
148
- getCorporationTitles: {
149
- path: 'corporations/{corporationId}/titles',
150
- method: 'GET',
151
- requiresAuth: true,
152
- pathParams: ['corporationId'],
153
- responseSchema: zod_1.z.array(corporation_1.CorporationTitleSchema),
154
- },
155
- getNpcCorporations: {
156
- path: 'corporations/npccorps',
157
- method: 'GET',
158
- requiresAuth: false,
159
- responseSchema: zod_1.z.array(zod_1.z.number()),
160
- },
161
- };
@@ -1,175 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createClient = createClient;
4
- exports.fetchAllCursorPages = fetchAllCursorPages;
5
- const ApiRequestHandler_1 = require("../ApiRequestHandler");
6
- const buildEndpointPath_1 = require("./buildEndpointPath");
7
- const headersUtil_1 = require("../util/headersUtil");
8
- const loggerUtil_1 = require("../logger/loggerUtil");
9
- const error_1 = require("../util/error");
10
- function buildMeta(response) {
11
- const meta = {
12
- headers: response.headers,
13
- fromCache: response.fromCache ?? false,
14
- stale: response.stale ?? false,
15
- };
16
- if (response.cacheHitType)
17
- meta.cacheHitType = response.cacheHitType;
18
- if (response.responseTimeMs !== undefined)
19
- meta.responseTimeMs = response.responseTimeMs;
20
- const w = (0, headersUtil_1.parseWarning)(response.headers['warning']);
21
- if (w)
22
- meta.warning = w;
23
- if (response.headers['x-esi-request-id'])
24
- meta.requestId = response.headers['x-esi-request-id'];
25
- if (response.headers['date'])
26
- meta.date = response.headers['date'];
27
- if (response.headers['content-language'])
28
- meta.contentLanguage = response.headers['content-language'];
29
- if (response.headers['x-ratelimit-remaining']) {
30
- meta.rateLimit = {
31
- remaining: parseInt(response.headers['x-ratelimit-remaining'], 10),
32
- limit: parseInt(response.headers['x-ratelimit-limit'] ?? '0', 10),
33
- used: parseInt(response.headers['x-ratelimit-used'] ?? '0', 10),
34
- group: response.headers['x-ratelimit-group'] ?? null,
35
- };
36
- }
37
- return meta;
38
- }
39
- /* eslint-disable sonarjs/cognitive-complexity */
40
- function createClient(apiClient, endpoints, options) {
41
- const client = {};
42
- const returnMetadata = options?.returnMetadata ?? false;
43
- const safeMode = options?.safeMode ?? false;
44
- for (const [methodName, def] of Object.entries(endpoints)) {
45
- // eslint-disable-next-line security/detect-object-injection
46
- client[methodName] = async (...args) => {
47
- try {
48
- if (def.deprecated) {
49
- const parts = [`Endpoint '${methodName}' is deprecated.`];
50
- if (def.deprecated.message)
51
- parts.push(def.deprecated.message);
52
- if (def.deprecated.replacedBy)
53
- parts.push(`Use '${def.deprecated.replacedBy}' instead.`);
54
- if (def.deprecated.sunsetDate)
55
- parts.push(`Sunset date: ${def.deprecated.sunsetDate}.`);
56
- (0, loggerUtil_1.logWarn)(parts.join(' '));
57
- }
58
- const built = (0, buildEndpointPath_1.buildEndpointPath)(def, args, apiClient.getDatasource());
59
- let path = built.path;
60
- const body = built.body;
61
- if (def.cursorPagination) {
62
- const lastArg = args[args.length - 1];
63
- const isCursorArg = lastArg != null &&
64
- typeof lastArg === 'object' &&
65
- ('before' in lastArg || 'after' in lastArg);
66
- const cursorOpts = isCursorArg
67
- ? lastArg
68
- : undefined;
69
- if (cursorOpts) {
70
- const parts = [];
71
- if (cursorOpts.before)
72
- parts.push(`before=${encodeURIComponent(cursorOpts.before)}`);
73
- if (cursorOpts.after)
74
- parts.push(`after=${encodeURIComponent(cursorOpts.after)}`);
75
- if (parts.length > 0) {
76
- path += (path.includes('?') ? '&' : '?') + parts.join('&');
77
- }
78
- }
79
- const response = await (0, ApiRequestHandler_1.handleRequest)(apiClient, path, def.method, body, def.requiresAuth, true, def.path);
80
- const responseBody = response.body;
81
- let data;
82
- if (Array.isArray(responseBody)) {
83
- data = responseBody;
84
- }
85
- else if (responseBody !== null && responseBody !== undefined) {
86
- data = [responseBody];
87
- }
88
- else {
89
- data = [];
90
- }
91
- const cursorResult = {
92
- data,
93
- cursors: response.cursors ?? { before: null, after: null },
94
- };
95
- if (returnMetadata || safeMode) {
96
- const meta = buildMeta(response);
97
- if (safeMode) {
98
- return { ok: true, data: cursorResult, meta };
99
- }
100
- return { data: cursorResult, meta };
101
- }
102
- return cursorResult;
103
- }
104
- const response = await (0, ApiRequestHandler_1.handleRequest)(apiClient, path, def.method, body, def.requiresAuth, true, def.path);
105
- let responseBody = response.body;
106
- if (def.responseSchema && apiClient.getValidateResponse()) {
107
- const result = def.responseSchema.safeParse(responseBody);
108
- if (!result.success) {
109
- throw new error_1.EsiValidationError(`${apiClient.getLink()}/${path}`, result.error);
110
- }
111
- responseBody = result.data;
112
- }
113
- if (safeMode) {
114
- return { ok: true, data: responseBody, meta: buildMeta(response) };
115
- }
116
- if (returnMetadata) {
117
- return { data: responseBody, meta: buildMeta(response) };
118
- }
119
- return responseBody;
120
- }
121
- catch (err) {
122
- if (safeMode) {
123
- const error = err instanceof error_1.EsiError
124
- ? err
125
- : new error_1.EsiError(0, err instanceof Error ? err.message : String(err));
126
- return { ok: false, error };
127
- }
128
- throw err;
129
- }
130
- };
131
- }
132
- return client;
133
- }
134
- /* eslint-enable sonarjs/cognitive-complexity */
135
- /**
136
- * Fetch all pages of a cursor-paginated endpoint.
137
- *
138
- * ESI returns cursor tokens in the response body. This helper follows
139
- * `after` tokens until the dataset is exhausted (empty items array).
140
- *
141
- * Usage with body-based cursors (ESI's actual format):
142
- * const allJobs = await fetchAllCursorPages(
143
- * (before, after) => client.freelanceJobs.getFreelanceJobs(before, after),
144
- * (response) => response.freelance_jobs,
145
- * (response) => response.cursor,
146
- * );
147
- *
148
- * Usage with CursorResult shape:
149
- * const all = await fetchAllCursorPages(
150
- * (before, after) => fetcher({ before, after }),
151
- * (r) => r.data,
152
- * (r) => r.cursors,
153
- * );
154
- */
155
- async function fetchAllCursorPages(fetcher, getItems, getCursor) {
156
- const allData = [];
157
- let afterToken;
158
- let hasMore = true;
159
- while (hasMore) {
160
- const response = await fetcher(undefined, afterToken);
161
- const items = getItems(response);
162
- if (!items || items.length === 0) {
163
- hasMore = false;
164
- continue;
165
- }
166
- allData.push(...items);
167
- const cursor = getCursor(response);
168
- if (!cursor.after) {
169
- hasMore = false;
170
- continue;
171
- }
172
- afterToken = cursor.after;
173
- }
174
- return allData;
175
- }