@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.
- package/CHANGELOG.md +27 -0
- package/README.md +100 -24
- package/dist/EsiClient.d.ts +3 -0
- package/dist/EsiClient.d.ts.map +1 -1
- package/dist/EsiClientBuilder.d.ts +1 -0
- package/dist/EsiClientBuilder.d.ts.map +1 -1
- package/dist/clients/AllianceClient.d.ts +3 -0
- package/dist/clients/AllianceClient.d.ts.map +1 -1
- package/dist/clients/BaseEsiClient.d.ts +1 -1
- package/dist/clients/BaseEsiClient.d.ts.map +1 -1
- package/dist/clients/CalendarClient.d.ts +3 -0
- package/dist/clients/CalendarClient.d.ts.map +1 -1
- package/dist/clients/CharacterClient.d.ts +10 -2
- package/dist/clients/CharacterClient.d.ts.map +1 -1
- package/dist/clients/ClonesClient.d.ts +2 -0
- package/dist/clients/ClonesClient.d.ts.map +1 -1
- package/dist/clients/ContactsClient.d.ts +7 -0
- package/dist/clients/ContactsClient.d.ts.map +1 -1
- package/dist/clients/CorporationsClient.d.ts +18 -0
- package/dist/clients/CorporationsClient.d.ts.map +1 -1
- package/dist/clients/FittingsClient.d.ts +2 -0
- package/dist/clients/FittingsClient.d.ts.map +1 -1
- package/dist/clients/FleetClient.d.ts +3 -0
- package/dist/clients/FleetClient.d.ts.map +1 -1
- package/dist/clients/IndustryClient.d.ts +9 -0
- package/dist/clients/IndustryClient.d.ts.map +1 -1
- package/dist/clients/LoyaltyClient.d.ts +3 -0
- package/dist/clients/LoyaltyClient.d.ts.map +1 -1
- package/dist/clients/MailClient.d.ts +6 -0
- package/dist/clients/MailClient.d.ts.map +1 -1
- package/dist/clients/MarketClient.d.ts +13 -22
- package/dist/clients/MarketClient.d.ts.map +1 -1
- package/dist/clients/PiClient.d.ts +3 -0
- package/dist/clients/PiClient.d.ts.map +1 -1
- package/dist/clients/SkillsClient.d.ts +2 -0
- package/dist/clients/SkillsClient.d.ts.map +1 -1
- package/dist/clients/WalletClient.d.ts +1 -0
- package/dist/clients/WalletClient.d.ts.map +1 -1
- package/dist/clients/WarsClient.d.ts +3 -0
- package/dist/clients/WarsClient.d.ts.map +1 -1
- package/dist/config/jest/globalSetup.d.ts.map +1 -1
- package/dist/config/jest/globalTeardown.d.ts.map +1 -1
- package/dist/core/ApiClient.d.ts +14 -6
- package/dist/core/ApiClient.d.ts.map +1 -1
- package/dist/core/ApiRequestHandler.d.ts +3 -11
- package/dist/core/ApiRequestHandler.d.ts.map +1 -1
- package/dist/core/IDeduplicator.d.ts +6 -0
- package/dist/core/IDeduplicator.d.ts.map +1 -0
- package/dist/core/IRetryStrategy.d.ts +5 -0
- package/dist/core/IRetryStrategy.d.ts.map +1 -0
- package/dist/core/RequestDeduplicator.d.ts +2 -1
- package/dist/core/RequestDeduplicator.d.ts.map +1 -1
- package/dist/core/RetryStrategy.d.ts +19 -0
- package/dist/core/RetryStrategy.d.ts.map +1 -0
- package/dist/core/circuitBreaker/CircuitBreaker.d.ts +11 -1
- package/dist/core/circuitBreaker/CircuitBreaker.d.ts.map +1 -1
- package/dist/core/circuitBreaker/ICircuitBreaker.d.ts +23 -0
- package/dist/core/circuitBreaker/ICircuitBreaker.d.ts.map +1 -0
- package/dist/core/configureApiClient.d.ts +18 -0
- package/dist/core/configureApiClient.d.ts.map +1 -0
- package/dist/core/endpoints/EndpointDefinition.d.ts +2 -0
- package/dist/core/endpoints/EndpointDefinition.d.ts.map +1 -1
- package/dist/core/endpoints/calendarEndpoints.d.ts +1 -1
- package/dist/core/endpoints/characterEndpoints.d.ts +3 -3
- package/dist/core/endpoints/contactEndpoints.d.ts +7 -3
- package/dist/core/endpoints/contactEndpoints.d.ts.map +1 -1
- package/dist/core/endpoints/corporationEndpoints.d.ts +4 -1
- package/dist/core/endpoints/corporationEndpoints.d.ts.map +1 -1
- package/dist/core/endpoints/createClient.d.ts +18 -1
- package/dist/core/endpoints/createClient.d.ts.map +1 -1
- package/dist/core/endpoints/dogmaEndpoints.d.ts +17 -0
- package/dist/core/endpoints/dogmaEndpoints.d.ts.map +1 -1
- package/dist/core/endpoints/esi-scopes.generated.d.ts +1 -1
- package/dist/core/endpoints/esi-scopes.generated.d.ts.map +1 -1
- package/dist/core/endpoints/fleetEndpoints.d.ts +5 -0
- package/dist/core/endpoints/fleetEndpoints.d.ts.map +1 -1
- package/dist/core/endpoints/mailEndpoints.d.ts +13 -0
- package/dist/core/endpoints/mailEndpoints.d.ts.map +1 -1
- package/dist/core/endpoints/marketEndpoints.d.ts +29 -48
- package/dist/core/endpoints/marketEndpoints.d.ts.map +1 -1
- package/dist/core/endpoints/piEndpoints.d.ts +3 -0
- package/dist/core/endpoints/piEndpoints.d.ts.map +1 -1
- package/dist/core/endpoints/universeEndpoints.d.ts +13 -2
- package/dist/core/endpoints/universeEndpoints.d.ts.map +1 -1
- package/dist/core/endpoints/walletEndpoints.d.ts +4 -0
- package/dist/core/endpoints/walletEndpoints.d.ts.map +1 -1
- package/dist/core/logger/logger.d.ts +2 -1
- package/dist/core/logger/logger.d.ts.map +1 -1
- package/dist/core/pagination/AsyncPaginationIterator.d.ts +4 -1
- package/dist/core/pagination/AsyncPaginationIterator.d.ts.map +1 -1
- package/dist/core/pagination/CursorPaginationHandler.d.ts +15 -6
- package/dist/core/pagination/CursorPaginationHandler.d.ts.map +1 -1
- package/dist/core/pagination/PaginationHandler.d.ts +7 -6
- package/dist/core/pagination/PaginationHandler.d.ts.map +1 -1
- package/dist/core/rateLimiter/RateLimiter.d.ts +8 -2
- package/dist/core/rateLimiter/RateLimiter.d.ts.map +1 -1
- package/dist/core/requestPipeline/cachePolicy.d.ts +31 -0
- package/dist/core/requestPipeline/cachePolicy.d.ts.map +1 -0
- package/dist/core/requestPipeline/dependencies.d.ts +10 -0
- package/dist/core/requestPipeline/dependencies.d.ts.map +1 -0
- package/dist/core/requestPipeline/fetchExecution.d.ts +28 -0
- package/dist/core/requestPipeline/fetchExecution.d.ts.map +1 -0
- package/dist/core/requestPipeline/headers.d.ts +11 -0
- package/dist/core/requestPipeline/headers.d.ts.map +1 -0
- package/dist/core/requestPipeline/index.d.ts +10 -0
- package/dist/core/requestPipeline/index.d.ts.map +1 -0
- package/dist/core/requestPipeline/middlewareBridge.d.ts +15 -0
- package/dist/core/requestPipeline/middlewareBridge.d.ts.map +1 -0
- package/dist/core/requestPipeline/paginationOrchestration.d.ts +15 -0
- package/dist/core/requestPipeline/paginationOrchestration.d.ts.map +1 -0
- package/dist/core/requestPipeline/statusHandling.d.ts +18 -0
- package/dist/core/requestPipeline/statusHandling.d.ts.map +1 -0
- package/dist/core/util/error.d.ts +6 -1
- package/dist/core/util/error.d.ts.map +1 -1
- package/dist/errors.d.ts +4 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +196 -0
- package/dist/errors.js.map +1 -0
- package/dist/errors.mjs +146 -0
- package/dist/errors.mjs.map +1 -0
- package/dist/index.d.ts +9 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9937 -176
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +9834 -0
- package/dist/index.mjs.map +1 -0
- package/dist/schemas/calendar.d.ts +1 -1
- package/dist/schemas/character.d.ts +1 -10
- package/dist/schemas/character.d.ts.map +1 -1
- package/dist/schemas/common.d.ts +9 -0
- package/dist/schemas/common.d.ts.map +1 -1
- package/dist/schemas/contacts.d.ts +2 -1
- package/dist/schemas/contacts.d.ts.map +1 -1
- package/dist/schemas/corporation.d.ts +4 -9
- package/dist/schemas/corporation.d.ts.map +1 -1
- package/dist/schemas/dogma.d.ts +17 -0
- package/dist/schemas/dogma.d.ts.map +1 -1
- package/dist/schemas/fleet.d.ts +1 -0
- package/dist/schemas/fleet.d.ts.map +1 -1
- package/dist/schemas/index.js +2085 -46
- package/dist/schemas/index.js.map +1 -0
- package/dist/schemas/index.mjs +1914 -0
- package/dist/schemas/index.mjs.map +1 -0
- package/dist/schemas/market.d.ts +91 -4
- package/dist/schemas/market.d.ts.map +1 -1
- package/dist/schemas/pi.d.ts +3 -0
- package/dist/schemas/pi.d.ts.map +1 -1
- package/dist/schemas/sovereignty.d.ts +2 -0
- package/dist/schemas/sovereignty.d.ts.map +1 -1
- package/dist/schemas/universe.d.ts +11 -2
- package/dist/schemas/universe.d.ts.map +1 -1
- package/dist/schemas/wallet.d.ts +2 -0
- package/dist/schemas/wallet.d.ts.map +1 -1
- package/dist/testing/TestDataFactory.d.ts.map +1 -1
- package/dist/testing/index.d.ts +2 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +935 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/testing/index.mjs +898 -0
- package/dist/testing/index.mjs.map +1 -0
- package/dist/types/character.d.ts +2 -1
- package/dist/types/character.d.ts.map +1 -1
- package/dist/types/generated/esi-spec.generated.d.ts +3 -3
- package/dist/types/generated/esi-spec.generated.d.ts.map +1 -1
- package/dist/types/generated/spec-alignment.check.d.ts +9 -0
- package/dist/types/generated/spec-alignment.check.d.ts.map +1 -1
- package/dist/types/market.d.ts +7 -1
- package/dist/types/market.d.ts.map +1 -1
- package/package.json +33 -6
- package/dist/EsiClient.js +0 -251
- package/dist/EsiClientBuilder.js +0 -217
- package/dist/clients/AccessListsClient.js +0 -20
- package/dist/clients/AllianceClient.js +0 -72
- package/dist/clients/AssetsClient.js +0 -81
- package/dist/clients/BaseEsiClient.js +0 -40
- package/dist/clients/CalendarClient.js +0 -54
- package/dist/clients/CharacterClient.js +0 -149
- package/dist/clients/ClonesClient.js +0 -31
- package/dist/clients/ContactsClient.js +0 -104
- package/dist/clients/ContractsClient.js +0 -111
- package/dist/clients/CorporationsClient.js +0 -227
- package/dist/clients/DogmaClient.js +0 -55
- package/dist/clients/FactionClient.js +0 -79
- package/dist/clients/FittingsClient.js +0 -42
- package/dist/clients/FleetClient.js +0 -162
- package/dist/clients/FreelanceJobsClient.js +0 -76
- package/dist/clients/IncursionsClient.js +0 -19
- package/dist/clients/IndustryClient.js +0 -88
- package/dist/clients/InsuranceClient.js +0 -19
- package/dist/clients/KillmailsClient.js +0 -47
- package/dist/clients/LocationClient.js +0 -41
- package/dist/clients/LoyaltyClient.js +0 -30
- package/dist/clients/MailClient.js +0 -108
- package/dist/clients/MarketClient.js +0 -131
- package/dist/clients/MercenaryClient.js +0 -27
- package/dist/clients/MetaClient.js +0 -56
- package/dist/clients/PiClient.js +0 -51
- package/dist/clients/RouteClient.js +0 -24
- package/dist/clients/SearchClient.js +0 -22
- package/dist/clients/SkillsClient.js +0 -41
- package/dist/clients/SkyhooksClient.js +0 -35
- package/dist/clients/SovereigntyClient.js +0 -27
- package/dist/clients/StatusClient.js +0 -19
- package/dist/clients/UiClient.js +0 -58
- package/dist/clients/UniverseClient.js +0 -277
- package/dist/clients/WalletClient.js +0 -82
- package/dist/clients/WarsClient.js +0 -37
- package/dist/config/configManager.js +0 -47
- package/dist/config/jest/globalSetup.js +0 -7
- package/dist/config/jest/globalTeardown.js +0 -7
- package/dist/config/jest/jest.setup.js +0 -29
- package/dist/core/ApiClient.js +0 -123
- package/dist/core/ApiClientBuilder.js +0 -54
- package/dist/core/ApiRequestHandler.js +0 -444
- package/dist/core/BatchRequestHandler.js +0 -66
- package/dist/core/ClientRegistry.js +0 -116
- package/dist/core/EsiDiagnostics.js +0 -47
- package/dist/core/RequestDeduplicator.js +0 -26
- package/dist/core/cache/ETagCacheManager.js +0 -184
- package/dist/core/cache/ICache.js +0 -2
- package/dist/core/circuitBreaker/CircuitBreaker.js +0 -156
- package/dist/core/constants.js +0 -7
- package/dist/core/endpoints/EndpointDefinition.js +0 -2
- package/dist/core/endpoints/accessListEndpoints.js +0 -13
- package/dist/core/endpoints/allianceEndpoints.js +0 -34
- package/dist/core/endpoints/assetEndpoints.js +0 -51
- package/dist/core/endpoints/buildEndpointPath.js +0 -44
- package/dist/core/endpoints/calendarEndpoints.js +0 -35
- package/dist/core/endpoints/characterEndpoints.js +0 -104
- package/dist/core/endpoints/cloneEndpoints.js +0 -21
- package/dist/core/endpoints/contactEndpoints.js +0 -72
- package/dist/core/endpoints/contractEndpoints.js +0 -70
- package/dist/core/endpoints/corporationEndpoints.js +0 -161
- package/dist/core/endpoints/createClient.js +0 -175
- package/dist/core/endpoints/dogmaEndpoints.js +0 -40
- package/dist/core/endpoints/esi-cache-ttls.generated.js +0 -133
- package/dist/core/endpoints/esi-rate-limit-groups.generated.js +0 -153
- package/dist/core/endpoints/esi-scopes.generated.js +0 -135
- package/dist/core/endpoints/factionEndpoints.js +0 -57
- package/dist/core/endpoints/fittingEndpoints.js +0 -27
- package/dist/core/endpoints/fleetEndpoints.js +0 -101
- package/dist/core/endpoints/freelanceJobsEndpoints.js +0 -51
- package/dist/core/endpoints/incursionEndpoints.js +0 -13
- package/dist/core/endpoints/industryEndpoints.js +0 -61
- package/dist/core/endpoints/insuranceEndpoints.js +0 -13
- package/dist/core/endpoints/killmailEndpoints.js +0 -28
- package/dist/core/endpoints/locationEndpoints.js +0 -27
- package/dist/core/endpoints/loyaltyEndpoints.js +0 -21
- package/dist/core/endpoints/mailEndpoints.js +0 -68
- package/dist/core/endpoints/marketEndpoints.js +0 -84
- package/dist/core/endpoints/mercenaryEndpoints.js +0 -19
- package/dist/core/endpoints/metaEndpoints.js +0 -12
- package/dist/core/endpoints/piEndpoints.js +0 -36
- package/dist/core/endpoints/routeEndpoints.js +0 -14
- package/dist/core/endpoints/searchEndpoints.js +0 -14
- package/dist/core/endpoints/skillEndpoints.js +0 -29
- package/dist/core/endpoints/skyhookEndpoints.js +0 -25
- package/dist/core/endpoints/sovereigntyEndpoints.js +0 -19
- package/dist/core/endpoints/statusEndpoints.js +0 -12
- package/dist/core/endpoints/uiEndpoints.js +0 -39
- package/dist/core/endpoints/universeEndpoints.js +0 -210
- package/dist/core/endpoints/walletEndpoints.js +0 -50
- package/dist/core/endpoints/warEndpoints.js +0 -28
- package/dist/core/logger/ILogger.js +0 -2
- package/dist/core/logger/logger.js +0 -16
- package/dist/core/logger/loggerUtil.js +0 -30
- package/dist/core/middleware/Middleware.js +0 -42
- package/dist/core/pagination/AsyncPaginationIterator.js +0 -27
- package/dist/core/pagination/CursorPaginationHandler.js +0 -148
- package/dist/core/pagination/PaginationHandler.js +0 -115
- package/dist/core/rateLimiter/IRateLimiter.js +0 -2
- package/dist/core/rateLimiter/RateLimiter.js +0 -307
- package/dist/core/util/error.js +0 -122
- package/dist/core/util/headersUtil.js +0 -37
- package/dist/core/util/retry.js +0 -9
- package/dist/core/util/sleep.js +0 -6
- package/dist/core/util/stringUtil.js +0 -6
- package/dist/core/util/testHelpers.js +0 -9
- package/dist/core/util/validation.js +0 -52
- package/dist/schemas/access-lists.js +0 -14
- package/dist/schemas/alliance.js +0 -28
- package/dist/schemas/assets.js +0 -26
- package/dist/schemas/calendar.js +0 -43
- package/dist/schemas/character.js +0 -122
- package/dist/schemas/clones.js +0 -21
- package/dist/schemas/common.js +0 -34
- package/dist/schemas/contacts.js +0 -15
- package/dist/schemas/contracts.js +0 -58
- package/dist/schemas/corporation.js +0 -192
- package/dist/schemas/dogma.js +0 -42
- package/dist/schemas/faction-warfare.js +0 -92
- package/dist/schemas/fittings.js +0 -15
- package/dist/schemas/fleet.js +0 -48
- package/dist/schemas/freelance-jobs.js +0 -99
- package/dist/schemas/incursions.js +0 -14
- package/dist/schemas/industry.js +0 -75
- package/dist/schemas/insurance.js +0 -12
- package/dist/schemas/killmails.js +0 -42
- package/dist/schemas/location.js +0 -20
- package/dist/schemas/loyalty.js +0 -20
- package/dist/schemas/mail.js +0 -38
- package/dist/schemas/market.js +0 -39
- package/dist/schemas/mercenary.js +0 -22
- package/dist/schemas/pi.js +0 -85
- package/dist/schemas/skills.js +0 -30
- package/dist/schemas/skyhooks.js +0 -30
- package/dist/schemas/sovereignty.js +0 -70
- package/dist/schemas/status.js +0 -10
- package/dist/schemas/universe.js +0 -245
- package/dist/schemas/wallet.js +0 -29
- package/dist/schemas/wars.js +0 -31
- package/dist/testing/TestDataFactory.js +0 -823
- package/dist/types/access-lists.js +0 -2
- package/dist/types/alliance.js +0 -2
- package/dist/types/api-responses.js +0 -73
- package/dist/types/assets.js +0 -2
- package/dist/types/branded.js +0 -6
- package/dist/types/calendar.js +0 -2
- package/dist/types/character.js +0 -2
- package/dist/types/clones.js +0 -2
- package/dist/types/common.js +0 -2
- package/dist/types/contacts.js +0 -2
- package/dist/types/contracts.js +0 -2
- package/dist/types/corporation.js +0 -2
- package/dist/types/dogma.js +0 -2
- package/dist/types/faction-warfare.js +0 -2
- package/dist/types/fittings.js +0 -2
- package/dist/types/fleet.js +0 -2
- package/dist/types/freelance-jobs.js +0 -2
- package/dist/types/generated/esi-spec.generated.js +0 -6
- package/dist/types/generated/spec-alignment.check.js +0 -14
- package/dist/types/incursions.js +0 -2
- package/dist/types/industry.js +0 -2
- package/dist/types/insurance.js +0 -2
- package/dist/types/killmails.js +0 -2
- package/dist/types/location.js +0 -2
- package/dist/types/loyalty.js +0 -2
- package/dist/types/mail.js +0 -2
- package/dist/types/market.js +0 -2
- package/dist/types/mercenary.js +0 -2
- package/dist/types/pi.js +0 -2
- package/dist/types/skills.js +0 -2
- package/dist/types/skyhooks.js +0 -2
- package/dist/types/sovereignty.js +0 -2
- package/dist/types/status.js +0 -2
- package/dist/types/universe.js +0 -2
- package/dist/types/wallet.js +0 -2
- package/dist/types/wars.js +0 -2
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.AccessListsClient = exports.MercenaryClient = exports.SkyhooksClient = exports.FreelanceJobsClient = exports.MetaClient = exports.WarsClient = exports.WalletClient = exports.UniverseClient = exports.UiClient = exports.StatusClient = exports.SovereigntyClient = exports.CharacterSkillsClient = exports.SearchClient = exports.RouteClient = exports.PiClient = exports.MarketClient = exports.MailClient = exports.LoyaltyClient = exports.LocationClient = exports.KillmailsClient = exports.InsuranceClient = exports.IndustryClient = exports.IncursionsClient = exports.FleetClient = exports.FittingsClient = exports.FactionClient = exports.DogmaClient = exports.CorporationsClient = exports.ContractsClient = exports.ContactsClient = exports.ClonesClient = exports.CharacterClient = exports.CalendarClient = exports.AssetsClient = exports.AllianceClient = void 0;
|
|
4
|
-
exports.createClientInstance = createClientInstance;
|
|
5
|
-
const AllianceClient_1 = require("../clients/AllianceClient");
|
|
6
|
-
Object.defineProperty(exports, "AllianceClient", { enumerable: true, get: function () { return AllianceClient_1.AllianceClient; } });
|
|
7
|
-
const AssetsClient_1 = require("../clients/AssetsClient");
|
|
8
|
-
Object.defineProperty(exports, "AssetsClient", { enumerable: true, get: function () { return AssetsClient_1.AssetsClient; } });
|
|
9
|
-
const CalendarClient_1 = require("../clients/CalendarClient");
|
|
10
|
-
Object.defineProperty(exports, "CalendarClient", { enumerable: true, get: function () { return CalendarClient_1.CalendarClient; } });
|
|
11
|
-
const CharacterClient_1 = require("../clients/CharacterClient");
|
|
12
|
-
Object.defineProperty(exports, "CharacterClient", { enumerable: true, get: function () { return CharacterClient_1.CharacterClient; } });
|
|
13
|
-
const ClonesClient_1 = require("../clients/ClonesClient");
|
|
14
|
-
Object.defineProperty(exports, "ClonesClient", { enumerable: true, get: function () { return ClonesClient_1.ClonesClient; } });
|
|
15
|
-
const ContactsClient_1 = require("../clients/ContactsClient");
|
|
16
|
-
Object.defineProperty(exports, "ContactsClient", { enumerable: true, get: function () { return ContactsClient_1.ContactsClient; } });
|
|
17
|
-
const ContractsClient_1 = require("../clients/ContractsClient");
|
|
18
|
-
Object.defineProperty(exports, "ContractsClient", { enumerable: true, get: function () { return ContractsClient_1.ContractsClient; } });
|
|
19
|
-
const CorporationsClient_1 = require("../clients/CorporationsClient");
|
|
20
|
-
Object.defineProperty(exports, "CorporationsClient", { enumerable: true, get: function () { return CorporationsClient_1.CorporationsClient; } });
|
|
21
|
-
const DogmaClient_1 = require("../clients/DogmaClient");
|
|
22
|
-
Object.defineProperty(exports, "DogmaClient", { enumerable: true, get: function () { return DogmaClient_1.DogmaClient; } });
|
|
23
|
-
const FactionClient_1 = require("../clients/FactionClient");
|
|
24
|
-
Object.defineProperty(exports, "FactionClient", { enumerable: true, get: function () { return FactionClient_1.FactionClient; } });
|
|
25
|
-
const FittingsClient_1 = require("../clients/FittingsClient");
|
|
26
|
-
Object.defineProperty(exports, "FittingsClient", { enumerable: true, get: function () { return FittingsClient_1.FittingsClient; } });
|
|
27
|
-
const FleetClient_1 = require("../clients/FleetClient");
|
|
28
|
-
Object.defineProperty(exports, "FleetClient", { enumerable: true, get: function () { return FleetClient_1.FleetClient; } });
|
|
29
|
-
const IncursionsClient_1 = require("../clients/IncursionsClient");
|
|
30
|
-
Object.defineProperty(exports, "IncursionsClient", { enumerable: true, get: function () { return IncursionsClient_1.IncursionsClient; } });
|
|
31
|
-
const IndustryClient_1 = require("../clients/IndustryClient");
|
|
32
|
-
Object.defineProperty(exports, "IndustryClient", { enumerable: true, get: function () { return IndustryClient_1.IndustryClient; } });
|
|
33
|
-
const InsuranceClient_1 = require("../clients/InsuranceClient");
|
|
34
|
-
Object.defineProperty(exports, "InsuranceClient", { enumerable: true, get: function () { return InsuranceClient_1.InsuranceClient; } });
|
|
35
|
-
const KillmailsClient_1 = require("../clients/KillmailsClient");
|
|
36
|
-
Object.defineProperty(exports, "KillmailsClient", { enumerable: true, get: function () { return KillmailsClient_1.KillmailsClient; } });
|
|
37
|
-
const LocationClient_1 = require("../clients/LocationClient");
|
|
38
|
-
Object.defineProperty(exports, "LocationClient", { enumerable: true, get: function () { return LocationClient_1.LocationClient; } });
|
|
39
|
-
const LoyaltyClient_1 = require("../clients/LoyaltyClient");
|
|
40
|
-
Object.defineProperty(exports, "LoyaltyClient", { enumerable: true, get: function () { return LoyaltyClient_1.LoyaltyClient; } });
|
|
41
|
-
const MailClient_1 = require("../clients/MailClient");
|
|
42
|
-
Object.defineProperty(exports, "MailClient", { enumerable: true, get: function () { return MailClient_1.MailClient; } });
|
|
43
|
-
const MarketClient_1 = require("../clients/MarketClient");
|
|
44
|
-
Object.defineProperty(exports, "MarketClient", { enumerable: true, get: function () { return MarketClient_1.MarketClient; } });
|
|
45
|
-
const PiClient_1 = require("../clients/PiClient");
|
|
46
|
-
Object.defineProperty(exports, "PiClient", { enumerable: true, get: function () { return PiClient_1.PiClient; } });
|
|
47
|
-
const RouteClient_1 = require("../clients/RouteClient");
|
|
48
|
-
Object.defineProperty(exports, "RouteClient", { enumerable: true, get: function () { return RouteClient_1.RouteClient; } });
|
|
49
|
-
const SearchClient_1 = require("../clients/SearchClient");
|
|
50
|
-
Object.defineProperty(exports, "SearchClient", { enumerable: true, get: function () { return SearchClient_1.SearchClient; } });
|
|
51
|
-
const SkillsClient_1 = require("../clients/SkillsClient");
|
|
52
|
-
Object.defineProperty(exports, "CharacterSkillsClient", { enumerable: true, get: function () { return SkillsClient_1.CharacterSkillsClient; } });
|
|
53
|
-
const SovereigntyClient_1 = require("../clients/SovereigntyClient");
|
|
54
|
-
Object.defineProperty(exports, "SovereigntyClient", { enumerable: true, get: function () { return SovereigntyClient_1.SovereigntyClient; } });
|
|
55
|
-
const StatusClient_1 = require("../clients/StatusClient");
|
|
56
|
-
Object.defineProperty(exports, "StatusClient", { enumerable: true, get: function () { return StatusClient_1.StatusClient; } });
|
|
57
|
-
const UiClient_1 = require("../clients/UiClient");
|
|
58
|
-
Object.defineProperty(exports, "UiClient", { enumerable: true, get: function () { return UiClient_1.UiClient; } });
|
|
59
|
-
const UniverseClient_1 = require("../clients/UniverseClient");
|
|
60
|
-
Object.defineProperty(exports, "UniverseClient", { enumerable: true, get: function () { return UniverseClient_1.UniverseClient; } });
|
|
61
|
-
const WalletClient_1 = require("../clients/WalletClient");
|
|
62
|
-
Object.defineProperty(exports, "WalletClient", { enumerable: true, get: function () { return WalletClient_1.WalletClient; } });
|
|
63
|
-
const WarsClient_1 = require("../clients/WarsClient");
|
|
64
|
-
Object.defineProperty(exports, "WarsClient", { enumerable: true, get: function () { return WarsClient_1.WarsClient; } });
|
|
65
|
-
const MetaClient_1 = require("../clients/MetaClient");
|
|
66
|
-
Object.defineProperty(exports, "MetaClient", { enumerable: true, get: function () { return MetaClient_1.MetaClient; } });
|
|
67
|
-
const FreelanceJobsClient_1 = require("../clients/FreelanceJobsClient");
|
|
68
|
-
Object.defineProperty(exports, "FreelanceJobsClient", { enumerable: true, get: function () { return FreelanceJobsClient_1.FreelanceJobsClient; } });
|
|
69
|
-
const SkyhooksClient_1 = require("../clients/SkyhooksClient");
|
|
70
|
-
Object.defineProperty(exports, "SkyhooksClient", { enumerable: true, get: function () { return SkyhooksClient_1.SkyhooksClient; } });
|
|
71
|
-
const MercenaryClient_1 = require("../clients/MercenaryClient");
|
|
72
|
-
Object.defineProperty(exports, "MercenaryClient", { enumerable: true, get: function () { return MercenaryClient_1.MercenaryClient; } });
|
|
73
|
-
const AccessListsClient_1 = require("../clients/AccessListsClient");
|
|
74
|
-
Object.defineProperty(exports, "AccessListsClient", { enumerable: true, get: function () { return AccessListsClient_1.AccessListsClient; } });
|
|
75
|
-
const clientFactories = {
|
|
76
|
-
alliance: AllianceClient_1.AllianceClient,
|
|
77
|
-
assets: AssetsClient_1.AssetsClient,
|
|
78
|
-
calendar: CalendarClient_1.CalendarClient,
|
|
79
|
-
characters: CharacterClient_1.CharacterClient,
|
|
80
|
-
clones: ClonesClient_1.ClonesClient,
|
|
81
|
-
contacts: ContactsClient_1.ContactsClient,
|
|
82
|
-
contracts: ContractsClient_1.ContractsClient,
|
|
83
|
-
corporations: CorporationsClient_1.CorporationsClient,
|
|
84
|
-
dogma: DogmaClient_1.DogmaClient,
|
|
85
|
-
factions: FactionClient_1.FactionClient,
|
|
86
|
-
fittings: FittingsClient_1.FittingsClient,
|
|
87
|
-
fleets: FleetClient_1.FleetClient,
|
|
88
|
-
incursions: IncursionsClient_1.IncursionsClient,
|
|
89
|
-
industry: IndustryClient_1.IndustryClient,
|
|
90
|
-
insurance: InsuranceClient_1.InsuranceClient,
|
|
91
|
-
killmails: KillmailsClient_1.KillmailsClient,
|
|
92
|
-
location: LocationClient_1.LocationClient,
|
|
93
|
-
loyalty: LoyaltyClient_1.LoyaltyClient,
|
|
94
|
-
mail: MailClient_1.MailClient,
|
|
95
|
-
market: MarketClient_1.MarketClient,
|
|
96
|
-
pi: PiClient_1.PiClient,
|
|
97
|
-
route: RouteClient_1.RouteClient,
|
|
98
|
-
search: SearchClient_1.SearchClient,
|
|
99
|
-
skills: SkillsClient_1.CharacterSkillsClient,
|
|
100
|
-
sovereignty: SovereigntyClient_1.SovereigntyClient,
|
|
101
|
-
status: StatusClient_1.StatusClient,
|
|
102
|
-
ui: UiClient_1.UiClient,
|
|
103
|
-
universe: UniverseClient_1.UniverseClient,
|
|
104
|
-
wallet: WalletClient_1.WalletClient,
|
|
105
|
-
wars: WarsClient_1.WarsClient,
|
|
106
|
-
meta: MetaClient_1.MetaClient,
|
|
107
|
-
freelanceJobs: FreelanceJobsClient_1.FreelanceJobsClient,
|
|
108
|
-
skyhooks: SkyhooksClient_1.SkyhooksClient,
|
|
109
|
-
mercenary: MercenaryClient_1.MercenaryClient,
|
|
110
|
-
accessLists: AccessListsClient_1.AccessListsClient,
|
|
111
|
-
};
|
|
112
|
-
function createClientInstance(name, apiClient) {
|
|
113
|
-
// eslint-disable-next-line security/detect-object-injection
|
|
114
|
-
return new clientFactories[name](apiClient);
|
|
115
|
-
}
|
|
116
|
-
const allClientTypes = Object.keys(clientFactories);
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.EsiDiagnostics = void 0;
|
|
4
|
-
class EsiDiagnostics {
|
|
5
|
-
apiClient;
|
|
6
|
-
etagCacheEnabled;
|
|
7
|
-
deduplicator;
|
|
8
|
-
constructor(apiClient, etagCacheEnabled, deduplicator) {
|
|
9
|
-
this.apiClient = apiClient;
|
|
10
|
-
this.etagCacheEnabled = etagCacheEnabled;
|
|
11
|
-
this.deduplicator = deduplicator;
|
|
12
|
-
}
|
|
13
|
-
getCacheStats() {
|
|
14
|
-
if (!this.etagCacheEnabled)
|
|
15
|
-
return null;
|
|
16
|
-
const cache = this.apiClient.getCache();
|
|
17
|
-
return cache ? cache.getStats() : null;
|
|
18
|
-
}
|
|
19
|
-
clearCache() {
|
|
20
|
-
const cache = this.apiClient.getCache();
|
|
21
|
-
if (cache) {
|
|
22
|
-
cache.clear();
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
updateCacheConfig(newConfig) {
|
|
26
|
-
const cache = this.apiClient.getCache();
|
|
27
|
-
if (cache) {
|
|
28
|
-
cache.updateConfig(newConfig);
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
getCircuitBreakerStats() {
|
|
32
|
-
const cb = this.apiClient.getCircuitBreaker();
|
|
33
|
-
return cb ? cb.getStats() : null;
|
|
34
|
-
}
|
|
35
|
-
resetCircuitBreaker(endpoint) {
|
|
36
|
-
const cb = this.apiClient.getCircuitBreaker();
|
|
37
|
-
if (cb) {
|
|
38
|
-
cb.reset(endpoint);
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
getDeduplicatorStats() {
|
|
42
|
-
return this.deduplicator
|
|
43
|
-
? { pendingRequests: this.deduplicator.pending }
|
|
44
|
-
: null;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
exports.EsiDiagnostics = EsiDiagnostics;
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.RequestDeduplicator = void 0;
|
|
4
|
-
const loggerUtil_1 = require("./logger/loggerUtil");
|
|
5
|
-
class RequestDeduplicator {
|
|
6
|
-
inflight = new Map();
|
|
7
|
-
async dedupe(key, execute) {
|
|
8
|
-
const existing = this.inflight.get(key);
|
|
9
|
-
if (existing) {
|
|
10
|
-
(0, loggerUtil_1.logDebug)(`[Dedup] Coalescing request: ${key}`);
|
|
11
|
-
return existing;
|
|
12
|
-
}
|
|
13
|
-
const promise = execute().finally(() => {
|
|
14
|
-
this.inflight.delete(key);
|
|
15
|
-
});
|
|
16
|
-
this.inflight.set(key, promise);
|
|
17
|
-
return promise;
|
|
18
|
-
}
|
|
19
|
-
get pending() {
|
|
20
|
-
return this.inflight.size;
|
|
21
|
-
}
|
|
22
|
-
clear() {
|
|
23
|
-
this.inflight.clear();
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
exports.RequestDeduplicator = RequestDeduplicator;
|
|
@@ -1,184 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ETagCacheManager = void 0;
|
|
4
|
-
const loggerUtil_1 = require("../logger/loggerUtil");
|
|
5
|
-
class ETagCacheManager {
|
|
6
|
-
cache = new Map();
|
|
7
|
-
config;
|
|
8
|
-
cleanupTimer;
|
|
9
|
-
hits = 0;
|
|
10
|
-
misses = 0;
|
|
11
|
-
constructor(config = {}) {
|
|
12
|
-
this.config = {
|
|
13
|
-
maxEntries: config.maxEntries ?? 1000,
|
|
14
|
-
defaultTtl: config.defaultTtl ?? 5 * 60 * 1000, // 5 minutes default
|
|
15
|
-
cleanupInterval: config.cleanupInterval ?? 60 * 1000, // 1 minute cleanup
|
|
16
|
-
};
|
|
17
|
-
this.startCleanupTimer();
|
|
18
|
-
(0, loggerUtil_1.logInfo)(`ETag cache manager initialized with ${this.config.maxEntries} max entries`);
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Get cached data if ETag matches
|
|
22
|
-
*/
|
|
23
|
-
get(url) {
|
|
24
|
-
const entry = this.cache.get(url);
|
|
25
|
-
if (!entry) {
|
|
26
|
-
this.misses++;
|
|
27
|
-
return null;
|
|
28
|
-
}
|
|
29
|
-
if (this.isExpired(entry)) {
|
|
30
|
-
this.cache.delete(url);
|
|
31
|
-
this.misses++;
|
|
32
|
-
(0, loggerUtil_1.logDebug)(`Cache entry expired for ${url}`);
|
|
33
|
-
return null;
|
|
34
|
-
}
|
|
35
|
-
this.hits++;
|
|
36
|
-
(0, loggerUtil_1.logDebug)(`Cache hit for ${url} with ETag ${entry.etag}`);
|
|
37
|
-
return entry;
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Get ETag for a URL (for If-None-Match header)
|
|
41
|
-
*/
|
|
42
|
-
getETag(url) {
|
|
43
|
-
const entry = this.get(url);
|
|
44
|
-
return entry ? entry.etag : null;
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* Set cache entry
|
|
48
|
-
*/
|
|
49
|
-
set(url, etag, data, headers, customTtl) {
|
|
50
|
-
// Remove oldest entries if cache is full
|
|
51
|
-
if (this.cache.size >= this.config.maxEntries) {
|
|
52
|
-
this.evictOldest();
|
|
53
|
-
}
|
|
54
|
-
const entry = {
|
|
55
|
-
etag,
|
|
56
|
-
data,
|
|
57
|
-
headers,
|
|
58
|
-
timestamp: Date.now(),
|
|
59
|
-
ttl: customTtl ?? this.config.defaultTtl,
|
|
60
|
-
};
|
|
61
|
-
this.cache.set(url, entry);
|
|
62
|
-
(0, loggerUtil_1.logDebug)(`Cached response for ${url} with ETag ${etag}`);
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* Check if cached data exists and is valid
|
|
66
|
-
*/
|
|
67
|
-
has(url) {
|
|
68
|
-
const entry = this.cache.get(url);
|
|
69
|
-
return entry !== undefined && !this.isExpired(entry);
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* Clear specific cache entry
|
|
73
|
-
*/
|
|
74
|
-
delete(url) {
|
|
75
|
-
return this.cache.delete(url);
|
|
76
|
-
}
|
|
77
|
-
/**
|
|
78
|
-
* Delete all cache entries whose URL contains the given path segment
|
|
79
|
-
*/
|
|
80
|
-
deleteByPath(pathSegment) {
|
|
81
|
-
let count = 0;
|
|
82
|
-
for (const key of this.cache.keys()) {
|
|
83
|
-
if (key.includes(pathSegment)) {
|
|
84
|
-
this.cache.delete(key);
|
|
85
|
-
count++;
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
if (count > 0) {
|
|
89
|
-
(0, loggerUtil_1.logDebug)(`Invalidated ${count} cache entries matching ${pathSegment}`);
|
|
90
|
-
}
|
|
91
|
-
return count;
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* Clear all cache entries
|
|
95
|
-
*/
|
|
96
|
-
clear() {
|
|
97
|
-
this.cache.clear();
|
|
98
|
-
this.hits = 0;
|
|
99
|
-
this.misses = 0;
|
|
100
|
-
(0, loggerUtil_1.logInfo)('ETag cache cleared');
|
|
101
|
-
}
|
|
102
|
-
/**
|
|
103
|
-
* Get cache statistics
|
|
104
|
-
*/
|
|
105
|
-
getStats() {
|
|
106
|
-
let oldest = Infinity;
|
|
107
|
-
let newest = -Infinity;
|
|
108
|
-
for (const entry of this.cache.values()) {
|
|
109
|
-
if (entry.timestamp < oldest)
|
|
110
|
-
oldest = entry.timestamp;
|
|
111
|
-
if (entry.timestamp > newest)
|
|
112
|
-
newest = entry.timestamp;
|
|
113
|
-
}
|
|
114
|
-
const total = this.hits + this.misses;
|
|
115
|
-
return {
|
|
116
|
-
totalEntries: this.cache.size,
|
|
117
|
-
maxEntries: this.config.maxEntries,
|
|
118
|
-
hits: this.hits,
|
|
119
|
-
misses: this.misses,
|
|
120
|
-
hitRate: total > 0 ? this.hits / total : 0,
|
|
121
|
-
oldestEntry: this.cache.size > 0 ? oldest : null,
|
|
122
|
-
newestEntry: this.cache.size > 0 ? newest : null,
|
|
123
|
-
};
|
|
124
|
-
}
|
|
125
|
-
/**
|
|
126
|
-
* Update cache configuration
|
|
127
|
-
*/
|
|
128
|
-
updateConfig(newConfig) {
|
|
129
|
-
this.config = { ...this.config, ...newConfig };
|
|
130
|
-
(0, loggerUtil_1.logInfo)('ETag cache configuration updated');
|
|
131
|
-
}
|
|
132
|
-
/**
|
|
133
|
-
* Cleanup expired entries
|
|
134
|
-
*/
|
|
135
|
-
cleanup() {
|
|
136
|
-
const beforeSize = this.cache.size;
|
|
137
|
-
for (const [url, entry] of this.cache.entries()) {
|
|
138
|
-
if (this.isExpired(entry)) {
|
|
139
|
-
this.cache.delete(url);
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
const cleanedCount = beforeSize - this.cache.size;
|
|
143
|
-
if (cleanedCount > 0) {
|
|
144
|
-
(0, loggerUtil_1.logDebug)(`Cleaned up ${cleanedCount} expired cache entries`);
|
|
145
|
-
}
|
|
146
|
-
return cleanedCount;
|
|
147
|
-
}
|
|
148
|
-
/**
|
|
149
|
-
* Shutdown cache manager
|
|
150
|
-
*/
|
|
151
|
-
shutdown() {
|
|
152
|
-
if (this.cleanupTimer) {
|
|
153
|
-
clearInterval(this.cleanupTimer);
|
|
154
|
-
}
|
|
155
|
-
(0, loggerUtil_1.logInfo)('ETag cache manager shut down');
|
|
156
|
-
}
|
|
157
|
-
isExpired(entry) {
|
|
158
|
-
if (!entry.ttl)
|
|
159
|
-
return false;
|
|
160
|
-
return Date.now() - entry.timestamp > entry.ttl;
|
|
161
|
-
}
|
|
162
|
-
evictOldest() {
|
|
163
|
-
let oldestKey = null;
|
|
164
|
-
let oldestTime = Infinity;
|
|
165
|
-
for (const [key, entry] of this.cache.entries()) {
|
|
166
|
-
if (entry.timestamp < oldestTime) {
|
|
167
|
-
oldestTime = entry.timestamp;
|
|
168
|
-
oldestKey = key;
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
if (oldestKey) {
|
|
172
|
-
this.cache.delete(oldestKey);
|
|
173
|
-
(0, loggerUtil_1.logDebug)(`Evicted oldest cache entry: ${oldestKey}`);
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
startCleanupTimer() {
|
|
177
|
-
this.cleanupTimer = setInterval(() => {
|
|
178
|
-
this.cleanup();
|
|
179
|
-
}, this.config.cleanupInterval);
|
|
180
|
-
// Don't prevent process exit (important for test runners and CLI tools)
|
|
181
|
-
this.cleanupTimer.unref();
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
exports.ETagCacheManager = ETagCacheManager;
|
|
@@ -1,156 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.CircuitOpenError = exports.CircuitBreaker = void 0;
|
|
4
|
-
const loggerUtil_1 = require("../logger/loggerUtil");
|
|
5
|
-
class CircuitBreaker {
|
|
6
|
-
circuits = new Map();
|
|
7
|
-
failureThreshold;
|
|
8
|
-
resetTimeoutMs;
|
|
9
|
-
halfOpenMaxAttempts;
|
|
10
|
-
staleThresholdMs;
|
|
11
|
-
constructor(config = {}) {
|
|
12
|
-
this.failureThreshold = config.failureThreshold ?? 5;
|
|
13
|
-
this.resetTimeoutMs = config.resetTimeoutMs ?? 30_000;
|
|
14
|
-
this.halfOpenMaxAttempts = config.halfOpenMaxAttempts ?? 1;
|
|
15
|
-
this.staleThresholdMs = config.staleThresholdMs ?? 3_600_000;
|
|
16
|
-
}
|
|
17
|
-
getKey(endpoint) {
|
|
18
|
-
return endpoint.split('?')[0];
|
|
19
|
-
}
|
|
20
|
-
getOrCreate(key) {
|
|
21
|
-
let record = this.circuits.get(key);
|
|
22
|
-
if (!record) {
|
|
23
|
-
record = {
|
|
24
|
-
state: 'closed',
|
|
25
|
-
failures: 0,
|
|
26
|
-
lastFailureTime: 0,
|
|
27
|
-
halfOpenAttempts: 0,
|
|
28
|
-
};
|
|
29
|
-
this.circuits.set(key, record);
|
|
30
|
-
}
|
|
31
|
-
return record;
|
|
32
|
-
}
|
|
33
|
-
checkCircuit(endpoint) {
|
|
34
|
-
const key = this.getKey(endpoint);
|
|
35
|
-
const record = this.getOrCreate(key);
|
|
36
|
-
if (record.state === 'closed')
|
|
37
|
-
return;
|
|
38
|
-
if (record.state === 'open') {
|
|
39
|
-
const elapsed = Date.now() - record.lastFailureTime;
|
|
40
|
-
if (elapsed >= this.resetTimeoutMs) {
|
|
41
|
-
record.state = 'half-open';
|
|
42
|
-
record.halfOpenAttempts = 0;
|
|
43
|
-
(0, loggerUtil_1.logInfo)(`Circuit half-open for ${key}, allowing probe request`);
|
|
44
|
-
return;
|
|
45
|
-
}
|
|
46
|
-
const remainingMs = this.resetTimeoutMs - elapsed;
|
|
47
|
-
throw new CircuitOpenError(key, record.failures, remainingMs);
|
|
48
|
-
}
|
|
49
|
-
if (record.state === 'half-open') {
|
|
50
|
-
if (record.halfOpenAttempts >= this.halfOpenMaxAttempts) {
|
|
51
|
-
throw new CircuitOpenError(key, record.failures, this.resetTimeoutMs);
|
|
52
|
-
}
|
|
53
|
-
record.halfOpenAttempts++;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
recordSuccess(endpoint) {
|
|
57
|
-
const key = this.getKey(endpoint);
|
|
58
|
-
const record = this.circuits.get(key);
|
|
59
|
-
if (!record)
|
|
60
|
-
return;
|
|
61
|
-
if (record.state === 'half-open') {
|
|
62
|
-
(0, loggerUtil_1.logInfo)(`Circuit closed for ${key} after successful probe`);
|
|
63
|
-
}
|
|
64
|
-
record.state = 'closed';
|
|
65
|
-
record.failures = 0;
|
|
66
|
-
record.halfOpenAttempts = 0;
|
|
67
|
-
}
|
|
68
|
-
recordFailure(endpoint, statusCode) {
|
|
69
|
-
if (statusCode < 500 && statusCode !== 420 && statusCode !== 429)
|
|
70
|
-
return;
|
|
71
|
-
const key = this.getKey(endpoint);
|
|
72
|
-
const record = this.getOrCreate(key);
|
|
73
|
-
record.failures++;
|
|
74
|
-
record.lastFailureTime = Date.now();
|
|
75
|
-
if (record.state === 'half-open') {
|
|
76
|
-
record.state = 'open';
|
|
77
|
-
(0, loggerUtil_1.logWarn)(`Circuit re-opened for ${key} after failed probe (${record.failures} failures)`);
|
|
78
|
-
return;
|
|
79
|
-
}
|
|
80
|
-
if (record.failures >= this.failureThreshold) {
|
|
81
|
-
record.state = 'open';
|
|
82
|
-
(0, loggerUtil_1.logWarn)(`Circuit opened for ${key} after ${record.failures} consecutive failures`);
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
getState(endpoint) {
|
|
86
|
-
const key = this.getKey(endpoint);
|
|
87
|
-
const record = this.circuits.get(key);
|
|
88
|
-
if (!record)
|
|
89
|
-
return 'closed';
|
|
90
|
-
if (record.state === 'open') {
|
|
91
|
-
const elapsed = Date.now() - record.lastFailureTime;
|
|
92
|
-
if (elapsed >= this.resetTimeoutMs) {
|
|
93
|
-
return 'half-open';
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
return record.state;
|
|
97
|
-
}
|
|
98
|
-
getStats() {
|
|
99
|
-
const circuits = {};
|
|
100
|
-
let openCircuits = 0;
|
|
101
|
-
for (const [key, record] of this.circuits.entries()) {
|
|
102
|
-
const state = this.getState(key);
|
|
103
|
-
// eslint-disable-next-line security/detect-object-injection
|
|
104
|
-
circuits[key] = { state, failures: record.failures };
|
|
105
|
-
if (state === 'open')
|
|
106
|
-
openCircuits++;
|
|
107
|
-
}
|
|
108
|
-
return {
|
|
109
|
-
totalCircuits: this.circuits.size,
|
|
110
|
-
openCircuits,
|
|
111
|
-
circuits,
|
|
112
|
-
};
|
|
113
|
-
}
|
|
114
|
-
reset(endpoint) {
|
|
115
|
-
if (endpoint) {
|
|
116
|
-
this.circuits.delete(this.getKey(endpoint));
|
|
117
|
-
}
|
|
118
|
-
else {
|
|
119
|
-
this.circuits.clear();
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
cleanup() {
|
|
123
|
-
const now = Date.now();
|
|
124
|
-
let cleaned = 0;
|
|
125
|
-
for (const [key, record] of this.circuits.entries()) {
|
|
126
|
-
if (record.state === 'closed' &&
|
|
127
|
-
record.failures === 0 &&
|
|
128
|
-
record.lastFailureTime > 0 &&
|
|
129
|
-
now - record.lastFailureTime > this.staleThresholdMs) {
|
|
130
|
-
this.circuits.delete(key);
|
|
131
|
-
cleaned++;
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
if (cleaned > 0) {
|
|
135
|
-
(0, loggerUtil_1.logInfo)(`Circuit breaker cleanup: removed ${cleaned} stale circuits`);
|
|
136
|
-
}
|
|
137
|
-
return cleaned;
|
|
138
|
-
}
|
|
139
|
-
shutdown() {
|
|
140
|
-
this.circuits.clear();
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
exports.CircuitBreaker = CircuitBreaker;
|
|
144
|
-
class CircuitOpenError extends Error {
|
|
145
|
-
endpoint;
|
|
146
|
-
failures;
|
|
147
|
-
retryAfterMs;
|
|
148
|
-
constructor(endpoint, failures, retryAfterMs) {
|
|
149
|
-
super(`Circuit breaker open for ${endpoint} after ${failures} failures (retry after ${Math.ceil(retryAfterMs / 1000)}s)`);
|
|
150
|
-
this.name = 'CircuitOpenError';
|
|
151
|
-
this.endpoint = endpoint;
|
|
152
|
-
this.failures = failures;
|
|
153
|
-
this.retryAfterMs = retryAfterMs;
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
exports.CircuitOpenError = CircuitOpenError;
|
package/dist/core/constants.js
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.COMPATIBILITY_DATE = exports.USER_AGENT = exports.PACKAGE_VERSION = exports.PACKAGE_NAME = void 0;
|
|
4
|
-
exports.PACKAGE_NAME = 'esi.ts';
|
|
5
|
-
exports.PACKAGE_VERSION = '7.4.0';
|
|
6
|
-
exports.USER_AGENT = `${exports.PACKAGE_NAME}/${exports.PACKAGE_VERSION}`;
|
|
7
|
-
exports.COMPATIBILITY_DATE = '2026-05-19';
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.accessListEndpoints = void 0;
|
|
4
|
-
const access_lists_1 = require("../../schemas/access-lists");
|
|
5
|
-
exports.accessListEndpoints = {
|
|
6
|
-
getAccessList: {
|
|
7
|
-
path: 'access-lists/{accessListId}',
|
|
8
|
-
method: 'GET',
|
|
9
|
-
requiresAuth: true,
|
|
10
|
-
pathParams: ['accessListId'],
|
|
11
|
-
responseSchema: access_lists_1.AccessListSchema,
|
|
12
|
-
},
|
|
13
|
-
};
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.allianceEndpoints = void 0;
|
|
4
|
-
const zod_1 = require("zod");
|
|
5
|
-
const alliance_1 = require("../../schemas/alliance");
|
|
6
|
-
exports.allianceEndpoints = {
|
|
7
|
-
getAllianceById: {
|
|
8
|
-
path: 'alliances/{allianceId}/',
|
|
9
|
-
method: 'GET',
|
|
10
|
-
requiresAuth: false,
|
|
11
|
-
pathParams: ['allianceId'],
|
|
12
|
-
responseSchema: alliance_1.AllianceInfoSchema,
|
|
13
|
-
},
|
|
14
|
-
getCorporations: {
|
|
15
|
-
path: 'alliances/{allianceId}/corporations/',
|
|
16
|
-
method: 'GET',
|
|
17
|
-
requiresAuth: false,
|
|
18
|
-
pathParams: ['allianceId'],
|
|
19
|
-
responseSchema: zod_1.z.array(zod_1.z.number()),
|
|
20
|
-
},
|
|
21
|
-
getIcons: {
|
|
22
|
-
path: 'alliances/{allianceId}/icons/',
|
|
23
|
-
method: 'GET',
|
|
24
|
-
requiresAuth: false,
|
|
25
|
-
pathParams: ['allianceId'],
|
|
26
|
-
responseSchema: alliance_1.AllianceIconSchema,
|
|
27
|
-
},
|
|
28
|
-
getAlliances: {
|
|
29
|
-
path: 'alliances',
|
|
30
|
-
method: 'GET',
|
|
31
|
-
requiresAuth: false,
|
|
32
|
-
responseSchema: zod_1.z.array(zod_1.z.number()),
|
|
33
|
-
},
|
|
34
|
-
};
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.assetEndpoints = void 0;
|
|
4
|
-
const zod_1 = require("zod");
|
|
5
|
-
const assets_1 = require("../../schemas/assets");
|
|
6
|
-
exports.assetEndpoints = {
|
|
7
|
-
getCharacterAssets: {
|
|
8
|
-
path: 'characters/{characterId}/assets/',
|
|
9
|
-
method: 'GET',
|
|
10
|
-
requiresAuth: true,
|
|
11
|
-
pathParams: ['characterId'],
|
|
12
|
-
responseSchema: zod_1.z.array(assets_1.CharacterAssetSchema),
|
|
13
|
-
},
|
|
14
|
-
getCorporationAssets: {
|
|
15
|
-
path: 'corporations/{corporationId}/assets/',
|
|
16
|
-
method: 'GET',
|
|
17
|
-
requiresAuth: true,
|
|
18
|
-
pathParams: ['corporationId'],
|
|
19
|
-
responseSchema: zod_1.z.array(assets_1.CharacterAssetSchema),
|
|
20
|
-
},
|
|
21
|
-
postCharacterAssetLocations: {
|
|
22
|
-
path: 'characters/{characterId}/assets/locations/',
|
|
23
|
-
method: 'POST',
|
|
24
|
-
requiresAuth: true,
|
|
25
|
-
pathParams: ['characterId'],
|
|
26
|
-
bodyBuilder: (itemIds) => itemIds,
|
|
27
|
-
responseSchema: zod_1.z.array(assets_1.AssetLocationSchema),
|
|
28
|
-
},
|
|
29
|
-
postCharacterAssetNames: {
|
|
30
|
-
path: 'characters/{characterId}/assets/names/',
|
|
31
|
-
method: 'POST',
|
|
32
|
-
requiresAuth: true,
|
|
33
|
-
pathParams: ['characterId'],
|
|
34
|
-
bodyBuilder: (itemIds) => itemIds,
|
|
35
|
-
responseSchema: zod_1.z.array(assets_1.AssetNameSchema),
|
|
36
|
-
},
|
|
37
|
-
postCorporationAssetLocations: {
|
|
38
|
-
path: 'corporations/{corporationId}/assets/locations/',
|
|
39
|
-
method: 'POST',
|
|
40
|
-
requiresAuth: true,
|
|
41
|
-
pathParams: ['corporationId'],
|
|
42
|
-
bodyBuilder: (itemIds) => itemIds,
|
|
43
|
-
},
|
|
44
|
-
postCorporationAssetNames: {
|
|
45
|
-
path: 'corporations/{corporationId}/assets/names/',
|
|
46
|
-
method: 'POST',
|
|
47
|
-
requiresAuth: true,
|
|
48
|
-
pathParams: ['corporationId'],
|
|
49
|
-
bodyBuilder: (itemIds) => itemIds,
|
|
50
|
-
},
|
|
51
|
-
};
|