@lgriffin/esi.ts 1.0.0 → 2.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/DOCUMENTATION.md +106 -0
- package/LICENSE +26 -0
- package/README.md +934 -125
- package/TESTING.md +523 -0
- package/demo/examples.ts +250 -0
- package/demo/flexible-examples.ts +166 -0
- package/docs/.nojekyll +1 -0
- package/docs/assets/highlight.css +106 -0
- package/docs/assets/icons.js +18 -0
- package/docs/assets/icons.svg +1 -0
- package/docs/assets/main.js +60 -0
- package/docs/assets/navigation.js +1 -0
- package/docs/assets/search.js +1 -0
- package/docs/assets/style.css +1493 -0
- package/docs/classes/src_EsiClient.EsiClient.html +48 -0
- package/docs/classes/src_EsiClientBuilder.CustomEsiClient.html +43 -0
- package/docs/classes/src_EsiClientBuilder.EsiApiFactory.html +23 -0
- package/docs/classes/src_EsiClientBuilder.EsiClientBuilder.html +15 -0
- package/docs/classes/src_api_alliances_getAllianceById.AllianceByIdApi.html +3 -0
- package/docs/classes/src_api_alliances_getAllianceContactLabels.AllianceContactLabelsApi.html +3 -0
- package/docs/classes/src_api_alliances_getAllianceContacts.AllianceContactsApi.html +3 -0
- package/docs/classes/src_api_alliances_getAllianceCorporations.AllianceCorporationsApi.html +3 -0
- package/docs/classes/src_api_alliances_getAllianceIcons.AllianceIconsApi.html +3 -0
- package/docs/classes/src_api_alliances_getAlliances.AllAlliancesApi.html +3 -0
- package/docs/classes/src_api_assets_getCharacterAssets.GetCharacterAssetsApi.html +3 -0
- package/docs/classes/src_api_assets_getCorporationAssets.GetCorporationAssetsApi.html +3 -0
- package/docs/classes/src_api_assets_postCharacterAssetLocations.PostCharacterAssetLocationsApi.html +3 -0
- package/docs/classes/src_api_assets_postCharacterAssetNames.PostCharacterAssetNamesApi.html +3 -0
- package/docs/classes/src_api_assets_postCorporationAssetLocations.PostCorporationAssetLocationsApi.html +3 -0
- package/docs/classes/src_api_assets_postCorporationAssetNames.PostCorporationAssetNamesApi.html +3 -0
- package/docs/classes/src_api_bookmarks_getCharacterBookmarkFolders.CharacterBookmarkFoldersApi.html +3 -0
- package/docs/classes/src_api_bookmarks_getCharacterBookmarks.CharacterBookmarksApi.html +3 -0
- package/docs/classes/src_api_bookmarks_getCorporationBookmarkFolders.CorporationBookmarkFoldersApi.html +3 -0
- package/docs/classes/src_api_bookmarks_getCorporationBookmarks.CorporationBookmarksApi.html +3 -0
- package/docs/classes/src_api_calendar_getCalendarEventById.GetCalendarEventByIdApi.html +3 -0
- package/docs/classes/src_api_calendar_getCalendarEvents.GetCalendarEventsApi.html +3 -0
- package/docs/classes/src_api_calendar_getEventAttendees.GetEventAttendeesApi.html +3 -0
- package/docs/classes/src_api_calendar_respondToCalendarEvent.RespondToCalendarEventApi.html +3 -0
- package/docs/classes/src_api_characters_getAgentsResearch.GetAgentsResearchApi.html +3 -0
- package/docs/classes/src_api_characters_getBlueprints.GetBlueprintsApi.html +3 -0
- package/docs/classes/src_api_characters_getCharacterPublicInfo.GetCharacterPublicInfoApi.html +3 -0
- package/docs/classes/src_api_characters_getCharacterRoles.GetCharacterRolesApi.html +3 -0
- package/docs/classes/src_api_characters_getCharacterStandings.GetCharacterStandingsApi.html +3 -0
- package/docs/classes/src_api_characters_getCharacterTitles.GetCharacterTitlesApi.html +3 -0
- package/docs/classes/src_api_characters_getContactNotifications.GetContactNotificationsApi.html +3 -0
- package/docs/classes/src_api_characters_getCorporationHistory.GetCorporationHistoryApi.html +3 -0
- package/docs/classes/src_api_characters_getJumpFatigue.GetJumpFatigueApi.html +3 -0
- package/docs/classes/src_api_characters_getMedals.GetMedalsApi.html +3 -0
- package/docs/classes/src_api_characters_getNotifications.GetNotificationsApi.html +3 -0
- package/docs/classes/src_api_characters_getPortrait.GetPortraitApi.html +3 -0
- package/docs/classes/src_api_characters_postCSPAChargeCost.PostCspaChargeCostApi.html +3 -0
- package/docs/classes/src_api_characters_postCharacterAffiliations.PostCharacterAffiliationApi.html +3 -0
- package/docs/classes/src_api_clones_getClones.GetClonesApi.html +3 -0
- package/docs/classes/src_api_clones_getImplants.GetImplantsApi.html +3 -0
- package/docs/classes/src_api_clones_postJumpCloneActivation.PostJumpCloneActivationApi.html +3 -0
- package/docs/classes/src_api_contacts_deleteCharacterContacts.deleteCharacterContacts.html +3 -0
- package/docs/classes/src_api_contacts_getAllianceContactLabels.getAllianceContactLabels.html +3 -0
- package/docs/classes/src_api_contacts_getAllianceContacts.getAllianceContacts.html +3 -0
- package/docs/classes/src_api_contacts_getCharacterContactLabels.getCharacterContactLabels.html +3 -0
- package/docs/classes/src_api_contacts_getCharacterContacts.getCharacterContacts.html +3 -0
- package/docs/classes/src_api_contacts_getCorporationContactLabels.getCorporationContactLabels.html +3 -0
- package/docs/classes/src_api_contacts_getCorporationContacts.getCorporationContacts.html +3 -0
- package/docs/classes/src_api_contacts_postCharacterContacts.postCharacterContacts.html +3 -0
- package/docs/classes/src_api_contacts_putCharacterContacts.putCharacterContacts.html +3 -0
- package/docs/classes/src_api_contracts_getCharacterContractBids.GetCharacterContractBidsApi.html +3 -0
- package/docs/classes/src_api_contracts_getCharacterContractItems.GetCharacterContractItemsApi.html +3 -0
- package/docs/classes/src_api_contracts_getCharacterContracts.GetCharacterContractsApi.html +3 -0
- package/docs/classes/src_api_contracts_getCorporationContractBids.GetCorporationContractBidsApi.html +3 -0
- package/docs/classes/src_api_contracts_getCorporationContractItems.GetCorporationContractItemsApi.html +3 -0
- package/docs/classes/src_api_contracts_getCorporationContracts.GetCorporationContractsApi.html +3 -0
- package/docs/classes/src_api_contracts_getPublicContractBids.GetPublicContractBidsApi.html +3 -0
- package/docs/classes/src_api_contracts_getPublicContractItems.GetPublicContractItemsApi.html +3 -0
- package/docs/classes/src_api_contracts_getPublicContracts.GetPublicContractsApi.html +3 -0
- package/docs/classes/src_api_corporations_getCorporationAllianceHistory.GetCorporationAllianceHistoryApi.html +3 -0
- package/docs/classes/src_api_corporations_getCorporationAlscLogs.GetCorporationAlscLogsApi.html +3 -0
- package/docs/classes/src_api_corporations_getCorporationBlueprints.GetCorporationBlueprintsApi.html +3 -0
- package/docs/classes/src_api_corporations_getCorporationDivisions.GetCorporationDivisionsApi.html +3 -0
- package/docs/classes/src_api_corporations_getCorporationFacilities.GetCorporationFacilitiesApi.html +3 -0
- package/docs/classes/src_api_corporations_getCorporationIcon.GetCorporationIconApi.html +3 -0
- package/docs/classes/src_api_corporations_getCorporationInfo.GetCorporationInfoApi.html +3 -0
- package/docs/classes/src_api_corporations_getCorporationIssuedMedals.GetCorporationIssuedMedalsApi.html +3 -0
- package/docs/classes/src_api_corporations_getCorporationMedals.GetCorporationMedalsApi.html +3 -0
- package/docs/classes/src_api_corporations_getCorporationMemberLimit.GetCorporationMemberLimitApi.html +3 -0
- package/docs/classes/src_api_corporations_getCorporationMemberRoles.GetCorporationMemberRolesApi.html +3 -0
- package/docs/classes/src_api_corporations_getCorporationMemberRolesHistory.GetCorporationMemberRolesHistoryApi.html +3 -0
- package/docs/classes/src_api_corporations_getCorporationMemberTracking.GetCorporationMemberTrackingApi.html +3 -0
- package/docs/classes/src_api_corporations_getCorporationMembers.GetCorporationMembersApi.html +3 -0
- package/docs/classes/src_api_corporations_getCorporationMembersTitles.GetCorporationMembersTitlesApi.html +3 -0
- package/docs/classes/src_api_corporations_getCorporationProjects.GetCorporationProjectsApi.html +3 -0
- package/docs/classes/src_api_corporations_getCorporationShareholders.GetCorporationShareholdersApi.html +3 -0
- package/docs/classes/src_api_corporations_getCorporationStandings.GetCorporationStandingsApi.html +3 -0
- package/docs/classes/src_api_corporations_getCorporationStarbaseDetail.GetCorporationStarbaseDetailApi.html +3 -0
- package/docs/classes/src_api_corporations_getCorporationStarbases.GetCorporationStarbasesApi.html +3 -0
- package/docs/classes/src_api_corporations_getCorporationStructures.GetCorporationStructuresApi.html +3 -0
- package/docs/classes/src_api_corporations_getCorporationTitles.GetCorporationTitlesApi.html +3 -0
- package/docs/classes/src_api_corporations_getNpcCorporations.GetNpcCorporationsApi.html +3 -0
- package/docs/classes/src_api_dogma_getDogmaAttributeById.DogmaAttributeByIdApi.html +3 -0
- package/docs/classes/src_api_dogma_getDogmaAttributes.DogmaAttributesApi.html +3 -0
- package/docs/classes/src_api_dogma_getDogmaDynamicItemAttributes.DogmaDynamicItemApi.html +3 -0
- package/docs/classes/src_api_dogma_getDogmaEffectById.DogmaEffectByIdApi.html +3 -0
- package/docs/classes/src_api_dogma_getDogmaEffects.DogmaEffectsApi.html +3 -0
- package/docs/classes/src_api_factions_getCharacterFactionWarfareStats.GetCharacterFactionWarfareStatsApi.html +3 -0
- package/docs/classes/src_api_factions_getCharacterLeaderboards.GetCharacterLeaderboardsApi.html +3 -0
- package/docs/classes/src_api_factions_getCorporationFactionWarfareStats.GetCorporationFactionWarfareStatsApi.html +3 -0
- package/docs/classes/src_api_factions_getCorporationLeaderboards.GetCorporationLeaderboardsApi.html +3 -0
- package/docs/classes/src_api_factions_getFactionLeaderboards.GetFactionLeaderboardsApi.html +3 -0
- package/docs/classes/src_api_factions_getFactionWarfareStats.getFactionWarfareStats.html +3 -0
- package/docs/classes/src_api_factions_getFactionWarfareSystems.FactionWarfareSystemsApi.html +3 -0
- package/docs/classes/src_api_factions_getFactionWarfareWars.FactionWarfareWarsApi.html +3 -0
- package/docs/classes/src_api_fittings_deleteCharacterFitting.DeleteCharacterFittingApi.html +3 -0
- package/docs/classes/src_api_fittings_getCharacterFittings.GetCharacterFittingsApi.html +3 -0
- package/docs/classes/src_api_fittings_postCharacterFittings.PostCharacterFittingApi.html +3 -0
- package/docs/classes/src_api_fleets_deleteFleetMember.DeleteFleetMemberApi.html +3 -0
- package/docs/classes/src_api_fleets_deleteFleetSquad.DeleteFleetSquadApi.html +3 -0
- package/docs/classes/src_api_fleets_deleteFleetWing.DeleteFleetWingApi.html +3 -0
- package/docs/classes/src_api_fleets_getCharacterFleetInfo.GetCharacterFleetInfoApi.html +3 -0
- package/docs/classes/src_api_fleets_getFleetInfo.GetFleetInfoApi.html +3 -0
- package/docs/classes/src_api_fleets_getFleetMembers.GetFleetMembersApi.html +3 -0
- package/docs/classes/src_api_fleets_getFleetWings.GetFleetWingsApi.html +3 -0
- package/docs/classes/src_api_fleets_postFleetInvitation.PostFleetInvitationApi.html +3 -0
- package/docs/classes/src_api_fleets_postFleetSquad.PostFleetSquadApi.html +3 -0
- package/docs/classes/src_api_fleets_postFleetWing.PostFleetWingApi.html +3 -0
- package/docs/classes/src_api_fleets_putFleetMember.PutFleetMemberApi.html +3 -0
- package/docs/classes/src_api_fleets_putFleetSquad.PutFleetSquadApi.html +3 -0
- package/docs/classes/src_api_fleets_putFleetWing.PutFleetWingApi.html +3 -0
- package/docs/classes/src_api_fleets_updateFleet.UpdateFleetApi.html +3 -0
- package/docs/classes/src_api_incursions_getIncursions.IncursionsApi.html +3 -0
- package/docs/classes/src_api_industry_getCharacterIndustryJobs.GetCharacterIndustryJobsApi.html +3 -0
- package/docs/classes/src_api_industry_getCharacterMiningLedger.GetCharacterMiningLedgerApi.html +3 -0
- package/docs/classes/src_api_industry_getCorporationIndustryJobs.GetCorporationIndustryJobsApi.html +3 -0
- package/docs/classes/src_api_industry_getCorporationMiningObserver.GetCorporationMiningObserverApi.html +3 -0
- package/docs/classes/src_api_industry_getCorporationMiningObservers.GetCorporationMiningObserversApi.html +3 -0
- package/docs/classes/src_api_industry_getIndustryFacilities.GetIndustryFacilitiesApi.html +3 -0
- package/docs/classes/src_api_industry_getIndustrySystems.GetIndustrySystemsApi.html +3 -0
- package/docs/classes/src_api_industry_getMoonExtractionTimers.GetMoonExtractionTimersApi.html +3 -0
- package/docs/classes/src_api_insurance_getInsurancePrices.InsuranceApi.html +3 -0
- package/docs/classes/src_api_killmails_getCharacterRecentKillmails.GetCharacterRecentKillmailsApi.html +3 -0
- package/docs/classes/src_api_killmails_getCorporationRecentKillmails.GetCorporationRecentKillmailsApi.html +3 -0
- package/docs/classes/src_api_killmails_getKillmail.GetKillmailApi.html +3 -0
- package/docs/classes/src_api_location_getCharacterLocation.GetCharacterLocationApi.html +3 -0
- package/docs/classes/src_api_location_getCharacterOnline.GetCharacterOnlineApi.html +3 -0
- package/docs/classes/src_api_location_getCharacterShip.GetCharacterShipApi.html +3 -0
- package/docs/classes/src_api_loyalty_getLoyaltyPoints.GetLoyaltyPointsApi.html +3 -0
- package/docs/classes/src_api_loyalty_getLoyaltyStoreOffers.GetLoyaltyStoreOffersApi.html +3 -0
- package/docs/classes/src_api_mail_deleteCharacterMail.DeleteCharacterMailApi.html +3 -0
- package/docs/classes/src_api_mail_deleteCharacterMailLabel.DeleteCharacterMailLabelApi.html +3 -0
- package/docs/classes/src_api_mail_getCharacterMail.GetCharacterMailApi.html +3 -0
- package/docs/classes/src_api_mail_getCharacterMailHeaders.GetCharacterMailHeadersApi.html +3 -0
- package/docs/classes/src_api_mail_getCharacterMailLabels.GetCharacterMailLabelsApi.html +3 -0
- package/docs/classes/src_api_mail_getCharacterMailingLists.GetCharacterMailingListsApi.html +3 -0
- package/docs/classes/src_api_mail_postCharacterMail.PostCharacterMailApi.html +3 -0
- package/docs/classes/src_api_mail_postCharacterMailLabels.PostCharacterMailLabelsApi.html +3 -0
- package/docs/classes/src_api_mail_putCharacterMail.PutCharacterMailApi.html +3 -0
- package/docs/classes/src_api_market_getCharacterOrderHistory.getCharacterOrderHistory.html +3 -0
- package/docs/classes/src_api_market_getCharacterOrders.getCharacterOrders.html +3 -0
- package/docs/classes/src_api_market_getCorporationOrderHistory.getCorporationOrderHistory.html +3 -0
- package/docs/classes/src_api_market_getCorporationOrders.getCorporationOrders.html +3 -0
- package/docs/classes/src_api_market_getMarketGroupInformation.getMarketGroupInformation.html +3 -0
- package/docs/classes/src_api_market_getMarketGroups.getMarketGroups.html +3 -0
- package/docs/classes/src_api_market_getMarketHistory.getMarketHistory.html +3 -0
- package/docs/classes/src_api_market_getMarketOrders.getMarketOrders.html +3 -0
- package/docs/classes/src_api_market_getMarketOrdersInStructure.getMarketOrdersInStructure.html +3 -0
- package/docs/classes/src_api_market_getMarketPrices.getMarketPrices.html +3 -0
- package/docs/classes/src_api_market_getMarketTypes.getMarketTypes.html +3 -0
- package/docs/classes/src_api_meta_getSwaggerJson.GetSwaggerJsonApi.html +3 -0
- package/docs/classes/src_api_meta_getSwaggerYaml.GetSwaggerYamlApi.html +3 -0
- package/docs/classes/src_api_opportunities_getCharacterOpportunities.GetCharacterOpportunitiesApi.html +3 -0
- package/docs/classes/src_api_opportunities_getOpportunitiesGroupById.GetOpportunitiesGroupByIdApi.html +3 -0
- package/docs/classes/src_api_opportunities_getOpportunitiesGroups.GetOpportunitiesGroupsApi.html +3 -0
- package/docs/classes/src_api_opportunities_getOpportunitiesTaskById.GetOpportunitiesTaskByIdApi.html +3 -0
- package/docs/classes/src_api_opportunities_getOpportunitiesTasks.GetOpportunitiesTasksApi.html +3 -0
- package/docs/classes/src_api_pi_getColonies.GetColoniesApi.html +3 -0
- package/docs/classes/src_api_pi_getColonyLayout.GetColonyLayoutApi.html +3 -0
- package/docs/classes/src_api_pi_getCorporationCustomsOffices.GetCorporationCustomsOfficesApi.html +3 -0
- package/docs/classes/src_api_pi_getSchematicInformation.GetSchematicInformationApi.html +3 -0
- package/docs/classes/src_api_route_getRoute.RouteApi.html +3 -0
- package/docs/classes/src_api_search_getCharacterSearch.CharacterSearchApi.html +3 -0
- package/docs/classes/src_api_skills_getCharacterAttributes.GetCharacterAttributesApi.html +3 -0
- package/docs/classes/src_api_skills_getCharacterSkillQueue.GetCharacterSkillQueueApi.html +3 -0
- package/docs/classes/src_api_skills_getCharacterSkills.GetCharacterSkillsApi.html +3 -0
- package/docs/classes/src_api_sovereignty_getSovereigntyCampaigns.SovereigntyCampaignsApi.html +3 -0
- package/docs/classes/src_api_sovereignty_getSovereigntyMap.SovereigntyMapApi.html +3 -0
- package/docs/classes/src_api_sovereignty_getSovereigntyStructures.SovereigntyStructuresApi.html +3 -0
- package/docs/classes/src_api_status_getStatus.GetStatusApi.html +3 -0
- package/docs/classes/src_api_ui_postAutopilotWaypoint.PostAutopilotWaypointApi.html +3 -0
- package/docs/classes/src_api_ui_postOpenContractWindow.PostOpenContractWindowApi.html +3 -0
- package/docs/classes/src_api_ui_postOpenInformationWindow.PostOpenInformationWindowApi.html +3 -0
- package/docs/classes/src_api_ui_postOpenMarketDetailsWindow.PostOpenMarketDetailsWindowApi.html +3 -0
- package/docs/classes/src_api_ui_postOpenNewMailWindow.PostOpenNewMailWindowApi.html +3 -0
- package/docs/classes/src_api_universe_getAncestries.UniverseAncestriesApi.html +3 -0
- package/docs/classes/src_api_universe_getAsteroidBeltInfo.UniverseAsteroidBeltApi.html +3 -0
- package/docs/classes/src_api_universe_getBloodlines.UniverseBloodlinesApi.html +3 -0
- package/docs/classes/src_api_universe_getConstellationById.UniverseConstellationByIdApi.html +3 -0
- package/docs/classes/src_api_universe_getConstellations.UniverseConstellationsApi.html +3 -0
- package/docs/classes/src_api_universe_getFactions.UniverseFactionsApi.html +3 -0
- package/docs/classes/src_api_universe_getGraphicById.UniverseGraphicByIdApi.html +3 -0
- package/docs/classes/src_api_universe_getGraphics.UniverseGraphicsApi.html +3 -0
- package/docs/classes/src_api_universe_getItemCategories.UniverseCategoriesApi.html +3 -0
- package/docs/classes/src_api_universe_getItemCategoryById.UniverseCategoryByIdApi.html +3 -0
- package/docs/classes/src_api_universe_getItemGroupById.UniverseItemGroupByIdApi.html +3 -0
- package/docs/classes/src_api_universe_getItemGroups.UniverseItemGroupsApi.html +3 -0
- package/docs/classes/src_api_universe_getMoonById.UniverseMoonByIdApi.html +3 -0
- package/docs/classes/src_api_universe_getPlanetById.UniversePlanetByIdApi.html +3 -0
- package/docs/classes/src_api_universe_getRaces.UniverseRacesApi.html +3 -0
- package/docs/classes/src_api_universe_getRegionById.UniverseRegionByIdApi.html +3 -0
- package/docs/classes/src_api_universe_getStarById.UniverseStarByIdApi.html +3 -0
- package/docs/classes/src_api_universe_getStargateById.UniverseStargateByIdApi.html +3 -0
- package/docs/classes/src_api_universe_getStationById.UniverseStationByIdApi.html +3 -0
- package/docs/classes/src_api_universe_getStructureById.UniverseStructureByIdApi.html +3 -0
- package/docs/classes/src_api_universe_getStructures.UniverseStructuresApi.html +3 -0
- package/docs/classes/src_api_universe_getSystemById.UniverseSystemByIdApi.html +3 -0
- package/docs/classes/src_api_universe_getSystemJumps.UniverseSystemJumpsApi.html +3 -0
- package/docs/classes/src_api_universe_getSystemKills.UniverseSystemKillsApi.html +3 -0
- package/docs/classes/src_api_universe_getSystems.UniverseSystemsApi.html +3 -0
- package/docs/classes/src_api_universe_getTypeById.UniverseTypeByIdApi.html +3 -0
- package/docs/classes/src_api_universe_getTypes.UniverseTypesApi.html +3 -0
- package/docs/classes/src_api_universe_postBulkNamesToIds.PostBulkNamesToIdsApi.html +3 -0
- package/docs/classes/src_api_universe_postNamesAndCategories.PostNamesAndCategoriesApi.html +3 -0
- package/docs/classes/src_api_wallet_getCharacterWallet.GetCharacterWalletApi.html +3 -0
- package/docs/classes/src_api_wallet_getCharacterWalletJournal.GetCharacterWalletJournalApi.html +3 -0
- package/docs/classes/src_api_wallet_getCharacterWalletTransactions.GetCharacterWalletTransactionsApi.html +3 -0
- package/docs/classes/src_api_wallet_getCorporationWalletJournal.GetCorporationWalletJournalApi.html +3 -0
- package/docs/classes/src_api_wallet_getCorporationWalletTransactions.GetCorporationWalletTransactionsApi.html +3 -0
- package/docs/classes/src_api_wallet_getCorporationWallets.GetCorporationWalletsApi.html +3 -0
- package/docs/classes/src_api_wars_getWarById.WarByIdApi.html +3 -0
- package/docs/classes/src_api_wars_getWarKillmails.WarKillmailsApi.html +3 -0
- package/docs/classes/src_api_wars_getWars.WarsApi.html +3 -0
- package/docs/classes/src_builders_AllianceApiBuilder.AllianceApiBuilder.html +3 -0
- package/docs/classes/src_builders_AssetsApiBuilder.AssetsApiBuilder.html +3 -0
- package/docs/classes/src_builders_BookmarkApiBuilder.BookmarkApiBuilder.html +3 -0
- package/docs/classes/src_builders_CalendarApiBuilder.CalendarApiBuilder.html +3 -0
- package/docs/classes/src_builders_CharacterApiBuilder.CharacterApiBuilder.html +3 -0
- package/docs/classes/src_builders_ClonesApiBuilder.ClonesApiBuilder.html +3 -0
- package/docs/classes/src_builders_ContactsApiBuilder.ContactsApiBuilder.html +3 -0
- package/docs/classes/src_builders_ContractsApiBuilder.ContractsApiBuilder.html +3 -0
- package/docs/classes/src_builders_CorporationsApiBuilder.CorporationsApiBuilder.html +3 -0
- package/docs/classes/src_builders_DogmaApiBuilder.DogmaAPIBuilder.html +3 -0
- package/docs/classes/src_builders_FactionApiBuilder.FactionAPIBuilder.html +3 -0
- package/docs/classes/src_builders_FittingsApiBuilder.FittingsApiBuilder.html +3 -0
- package/docs/classes/src_builders_FleetApiBuilder.FleetApiBuilder.html +3 -0
- package/docs/classes/src_builders_IncursionsApiBuilder.IncursionsApiBuilder.html +3 -0
- package/docs/classes/src_builders_IndustryApiBuilder.IndustryApiBuilder.html +3 -0
- package/docs/classes/src_builders_InsuranceApiBuilder.InsuranceAPIBuilder.html +3 -0
- package/docs/classes/src_builders_KillmailsBuilder.KillmailsApiBuilder.html +3 -0
- package/docs/classes/src_builders_LocationApiBuilder.LocationApiBuilder.html +3 -0
- package/docs/classes/src_builders_LoyaltyApiBuilder.LoyaltyApiBuilder.html +3 -0
- package/docs/classes/src_builders_MailApiBuilder.MailApiBuilder.html +3 -0
- package/docs/classes/src_builders_MarketApiBuilder.MarketApiBuilder.html +3 -0
- package/docs/classes/src_builders_MetaApiBuilder.MetaApiBuilder.html +3 -0
- package/docs/classes/src_builders_OpportunitiesApiBuilder.OpportunitiesApiBuilder.html +3 -0
- package/docs/classes/src_builders_PiApiBuilder.PiApiBuilder.html +3 -0
- package/docs/classes/src_builders_RouteApiBuilder.RouteApiBuilder.html +3 -0
- package/docs/classes/src_builders_SearchApiBuilder.SearchApiBuilder.html +3 -0
- package/docs/classes/src_builders_SkillsApiBuilder.SkillsApiBuilder.html +3 -0
- package/docs/classes/src_builders_SovereigntyApiBuilder.SovereigntyApiBuilder.html +3 -0
- package/docs/classes/src_builders_StatusApiBuilder.StatusAPIBuilder.html +3 -0
- package/docs/classes/src_builders_UiApiBuilder.UiApiBuilder.html +3 -0
- package/docs/classes/src_builders_UniverseApiBuilder.UniverseAPIBuilder.html +3 -0
- package/docs/classes/src_builders_WalletApiBuilder.WalletApiBuilder.html +3 -0
- package/docs/classes/src_builders_WarsAPIBuilder.WarsAPIBuilder.html +3 -0
- package/docs/classes/src_clients_AllianceClient.AllianceClient.html +10 -0
- package/docs/classes/src_clients_AssetsClient.AssetsClient.html +8 -0
- package/docs/classes/src_clients_BookmarkClient.BookmarkClient.html +6 -0
- package/docs/classes/src_clients_CalendarClient.CalendarClient.html +6 -0
- package/docs/classes/src_clients_CharacterClient.CharacterClient.html +16 -0
- package/docs/classes/src_clients_ClonesClient.ClonesClient.html +5 -0
- package/docs/classes/src_clients_ContactsClient.ContactsClient.html +11 -0
- package/docs/classes/src_clients_ContractsClient.ContractsClient.html +11 -0
- package/docs/classes/src_clients_CorporationsClient.CorporationsClient.html +25 -0
- package/docs/classes/src_clients_DogmaClient.DogmaClient.html +7 -0
- package/docs/classes/src_clients_FactionClient.FactionClient.html +10 -0
- package/docs/classes/src_clients_FittingsClient.FittingsClient.html +5 -0
- package/docs/classes/src_clients_FleetClient.FleetClient.html +16 -0
- package/docs/classes/src_clients_IncursionsClient.IncursionsClient.html +3 -0
- package/docs/classes/src_clients_IndustryClient.IndustryClient.html +10 -0
- package/docs/classes/src_clients_InsuranceClient.InsuranceClient.html +3 -0
- package/docs/classes/src_clients_KillmailsClient.KillmailsClient.html +5 -0
- package/docs/classes/src_clients_LocationClient.LocationClient.html +5 -0
- package/docs/classes/src_clients_LoyaltyClient.LoyaltyClient.html +4 -0
- package/docs/classes/src_clients_MailClient.MailClient.html +11 -0
- package/docs/classes/src_clients_MarketClient.MarketClient.html +13 -0
- package/docs/classes/src_clients_MetaClient.MetaClient.html +6 -0
- package/docs/classes/src_clients_OpportunitiesClient.OpportunitiesClient.html +7 -0
- package/docs/classes/src_clients_PiClient.PIClient.html +6 -0
- package/docs/classes/src_clients_RouteClient.RouteClient.html +3 -0
- package/docs/classes/src_clients_SearchClient.SearchClient.html +3 -0
- package/docs/classes/src_clients_SkillsClient.CharacterSkillsClient.html +5 -0
- package/docs/classes/src_clients_SovereigntyClient.SovereigntyClient.html +5 -0
- package/docs/classes/src_clients_StatusClient.StatusClient.html +3 -0
- package/docs/classes/src_clients_UiClient.UIClient.html +7 -0
- package/docs/classes/src_clients_UniverseClient.UniverseClient.html +31 -0
- package/docs/classes/src_clients_WalletClient.WalletClient.html +8 -0
- package/docs/classes/src_clients_WarsClient.WarsClient.html +5 -0
- package/docs/classes/src_core_ApiClient.ApiClient.html +4 -0
- package/docs/classes/src_core_ApiClientBuilder.ApiClientBuilder.html +6 -0
- package/docs/classes/src_core_ApiError.ApiError.html +3 -0
- package/docs/classes/src_core_cache_ETagCacheManager.ETagCacheManager.html +22 -0
- package/docs/classes/src_core_container_Container.CircularDependencyError.html +2 -0
- package/docs/classes/src_core_container_Container.Container.html +20 -0
- package/docs/classes/src_core_errors_ApiError.ApiError.html +12 -0
- package/docs/classes/src_core_errors_ApiError.ErrorHandler.html +5 -0
- package/docs/classes/src_core_factory_ApiFactory.ApiFactory.html +20 -0
- package/docs/classes/src_core_factory_ApiFactory.ApiModule.html +6 -0
- package/docs/classes/src_core_util_headersUtil.default.html +11 -0
- package/docs/classes/src_testing_TestDataFactory.TestDataFactory.html +47 -0
- package/docs/classes/src_testing_TestHelpers.MockApiClient.html +3 -0
- package/docs/classes/src_testing_TestHelpers.TestAssertions.html +6 -0
- package/docs/classes/src_testing_TestHelpers.TestDataFactory.html +6 -0
- package/docs/classes/src_testing_TestHelpers.TestScenarios.html +5 -0
- package/docs/classes/src_types_winston_loggly_bulk.Loggly.html +2 -0
- package/docs/enums/src_core_errors_ApiError.ApiErrorType.html +11 -0
- package/docs/functions/src.displayCharacterProfile.html +2 -0
- package/docs/functions/src.getCompleteCharacterProfile.html +4 -0
- package/docs/functions/src_config_configManager.getConfig.html +1 -0
- package/docs/functions/src_config_jest_jest_setup.getClient.html +1 -0
- package/docs/functions/src_core_ApiRequestHandler.getETagCache.html +1 -0
- package/docs/functions/src_core_ApiRequestHandler.handleRequest.html +1 -0
- package/docs/functions/src_core_ApiRequestHandler.handleRequestBody.html +1 -0
- package/docs/functions/src_core_ApiRequestHandler.initializeETagCache.html +1 -0
- package/docs/functions/src_core_ApiRequestHandler.resetETagCache.html +1 -0
- package/docs/functions/src_core_container_Container.Inject.html +1 -0
- package/docs/functions/src_core_container_Container.Injectable.html +1 -0
- package/docs/functions/src_core_logger_loggerUtil.logDebug.html +1 -0
- package/docs/functions/src_core_logger_loggerUtil.logError.html +1 -0
- package/docs/functions/src_core_logger_loggerUtil.logInfo.html +1 -0
- package/docs/functions/src_core_logger_loggerUtil.logWarn.html +1 -0
- package/docs/functions/src_core_util_error.buildError.html +1 -0
- package/docs/functions/src_core_util_file.checkForConfig.html +1 -0
- package/docs/functions/src_core_util_file.getSettings.html +1 -0
- package/docs/functions/src_core_util_file.log.html +1 -0
- package/docs/functions/src_core_util_inputValidation.inputValidation.html +1 -0
- package/docs/functions/src_core_util_network.request.html +1 -0
- package/docs/functions/src_core_util_request.inputValidation.html +1 -0
- package/docs/functions/src_core_util_request.request.html +1 -0
- package/docs/functions/src_core_util_testHelpers.getBody.html +1 -0
- package/docs/functions/src_core_util_testHelpers.getHeaders.html +1 -0
- package/docs/functions/src_core_util_testHelpers.mockApiCall.html +1 -0
- package/docs/functions/src_testing_TestHelpers.createMockApiClient.html +1 -0
- package/docs/functions/src_testing_TestHelpers.getBody.html +1 -0
- package/docs/functions/src_testing_TestHelpers.getHeaders.html +1 -0
- package/docs/hierarchy.html +1 -0
- package/docs/index.html +272 -0
- package/docs/interfaces/src_EsiClient.EsiClientConfig.html +8 -0
- package/docs/interfaces/src_core_IAPIBuilder.IAPIBuilder.html +2 -0
- package/docs/interfaces/src_core_IAPIBuilder.IApiClient.html +3 -0
- package/docs/interfaces/src_core_IAPIBuilder.IApiService.html +3 -0
- package/docs/interfaces/src_core_cache_ETagCacheManager.CacheEntry.html +6 -0
- package/docs/interfaces/src_core_cache_ETagCacheManager.ETagCacheConfig.html +6 -0
- package/docs/interfaces/src_core_container_Container.ContainerConfig.html +3 -0
- package/docs/interfaces/src_core_factory_ApiFactory.ApiClientConfig.html +7 -0
- package/docs/interfaces/src_core_factory_ApiFactory.ApiModuleConfig.html +4 -0
- package/docs/interfaces/src_testing_TestHelpers.MockConfig.html +6 -0
- package/docs/interfaces/src_types_api_responses.AllianceContact.html +5 -0
- package/docs/interfaces/src_types_api_responses.AllianceContactLabel.html +3 -0
- package/docs/interfaces/src_types_api_responses.AllianceIcon.html +3 -0
- package/docs/interfaces/src_types_api_responses.AllianceInfo.html +9 -0
- package/docs/interfaces/src_types_api_responses.ApiResponse.html +4 -0
- package/docs/interfaces/src_types_api_responses.AssetLocation.html +3 -0
- package/docs/interfaces/src_types_api_responses.AssetName.html +3 -0
- package/docs/interfaces/src_types_api_responses.CharacterAsset.html +9 -0
- package/docs/interfaces/src_types_api_responses.CharacterAttributes.html +9 -0
- package/docs/interfaces/src_types_api_responses.CharacterInfo.html +13 -0
- package/docs/interfaces/src_types_api_responses.CharacterPortrait.html +5 -0
- package/docs/interfaces/src_types_api_responses.CharacterSkill.html +5 -0
- package/docs/interfaces/src_types_api_responses.ConstellationInfo.html +6 -0
- package/docs/interfaces/src_types_api_responses.Contract.html +23 -0
- package/docs/interfaces/src_types_api_responses.ContractItem.html +8 -0
- package/docs/interfaces/src_types_api_responses.CorporationInfo.html +16 -0
- package/docs/interfaces/src_types_api_responses.ErrorResponse.html +4 -0
- package/docs/interfaces/src_types_api_responses.MailLabel.html +5 -0
- package/docs/interfaces/src_types_api_responses.MailMessage.html +8 -0
- package/docs/interfaces/src_types_api_responses.MarketHistory.html +7 -0
- package/docs/interfaces/src_types_api_responses.MarketOrder.html +12 -0
- package/docs/interfaces/src_types_api_responses.PaginatedResponse.html +5 -0
- package/docs/interfaces/src_types_api_responses.RegionInfo.html +5 -0
- package/docs/interfaces/src_types_api_responses.SkillQueue.html +9 -0
- package/docs/interfaces/src_types_api_responses.SolarSystemInfo.html +10 -0
- package/docs/interfaces/src_types_api_responses.WalletJournal.html +12 -0
- package/docs/interfaces/src_types_api_responses.WalletTransaction.html +11 -0
- package/docs/interfaces/src_types_winston_loggly_bulk.LogglyOptions.html +5 -0
- package/docs/media/LICENSE +26 -0
- package/docs/modules/src.html +22 -0
- package/docs/modules/src_EsiClient.html +4 -0
- package/docs/modules/src_EsiClientBuilder.html +6 -0
- package/docs/modules/src_api_alliances_getAllianceById.html +2 -0
- package/docs/modules/src_api_alliances_getAllianceContactLabels.html +2 -0
- package/docs/modules/src_api_alliances_getAllianceContacts.html +2 -0
- package/docs/modules/src_api_alliances_getAllianceCorporations.html +2 -0
- package/docs/modules/src_api_alliances_getAllianceIcons.html +2 -0
- package/docs/modules/src_api_alliances_getAlliances.html +2 -0
- package/docs/modules/src_api_assets_getCharacterAssets.html +2 -0
- package/docs/modules/src_api_assets_getCorporationAssets.html +2 -0
- package/docs/modules/src_api_assets_postCharacterAssetLocations.html +2 -0
- package/docs/modules/src_api_assets_postCharacterAssetNames.html +2 -0
- package/docs/modules/src_api_assets_postCorporationAssetLocations.html +2 -0
- package/docs/modules/src_api_assets_postCorporationAssetNames.html +2 -0
- package/docs/modules/src_api_bookmarks_getCharacterBookmarkFolders.html +2 -0
- package/docs/modules/src_api_bookmarks_getCharacterBookmarks.html +2 -0
- package/docs/modules/src_api_bookmarks_getCorporationBookmarkFolders.html +2 -0
- package/docs/modules/src_api_bookmarks_getCorporationBookmarks.html +2 -0
- package/docs/modules/src_api_calendar_getCalendarEventById.html +2 -0
- package/docs/modules/src_api_calendar_getCalendarEvents.html +2 -0
- package/docs/modules/src_api_calendar_getEventAttendees.html +2 -0
- package/docs/modules/src_api_calendar_respondToCalendarEvent.html +2 -0
- package/docs/modules/src_api_characters_getAgentsResearch.html +2 -0
- package/docs/modules/src_api_characters_getBlueprints.html +2 -0
- package/docs/modules/src_api_characters_getCharacterPublicInfo.html +2 -0
- package/docs/modules/src_api_characters_getCharacterRoles.html +2 -0
- package/docs/modules/src_api_characters_getCharacterStandings.html +2 -0
- package/docs/modules/src_api_characters_getCharacterTitles.html +2 -0
- package/docs/modules/src_api_characters_getContactNotifications.html +2 -0
- package/docs/modules/src_api_characters_getCorporationHistory.html +2 -0
- package/docs/modules/src_api_characters_getJumpFatigue.html +2 -0
- package/docs/modules/src_api_characters_getMedals.html +2 -0
- package/docs/modules/src_api_characters_getNotifications.html +2 -0
- package/docs/modules/src_api_characters_getPortrait.html +2 -0
- package/docs/modules/src_api_characters_postCSPAChargeCost.html +2 -0
- package/docs/modules/src_api_characters_postCharacterAffiliations.html +2 -0
- package/docs/modules/src_api_clones_getClones.html +2 -0
- package/docs/modules/src_api_clones_getImplants.html +2 -0
- package/docs/modules/src_api_clones_postJumpCloneActivation.html +2 -0
- package/docs/modules/src_api_contacts_deleteCharacterContacts.html +2 -0
- package/docs/modules/src_api_contacts_getAllianceContactLabels.html +2 -0
- package/docs/modules/src_api_contacts_getAllianceContacts.html +2 -0
- package/docs/modules/src_api_contacts_getCharacterContactLabels.html +2 -0
- package/docs/modules/src_api_contacts_getCharacterContacts.html +2 -0
- package/docs/modules/src_api_contacts_getCorporationContactLabels.html +2 -0
- package/docs/modules/src_api_contacts_getCorporationContacts.html +2 -0
- package/docs/modules/src_api_contacts_postCharacterContacts.html +2 -0
- package/docs/modules/src_api_contacts_putCharacterContacts.html +2 -0
- package/docs/modules/src_api_contracts_getCharacterContractBids.html +2 -0
- package/docs/modules/src_api_contracts_getCharacterContractItems.html +2 -0
- package/docs/modules/src_api_contracts_getCharacterContracts.html +2 -0
- package/docs/modules/src_api_contracts_getCorporationContractBids.html +2 -0
- package/docs/modules/src_api_contracts_getCorporationContractItems.html +2 -0
- package/docs/modules/src_api_contracts_getCorporationContracts.html +2 -0
- package/docs/modules/src_api_contracts_getPublicContractBids.html +2 -0
- package/docs/modules/src_api_contracts_getPublicContractItems.html +2 -0
- package/docs/modules/src_api_contracts_getPublicContracts.html +2 -0
- package/docs/modules/src_api_corporations_getCorporationAllianceHistory.html +2 -0
- package/docs/modules/src_api_corporations_getCorporationAlscLogs.html +2 -0
- package/docs/modules/src_api_corporations_getCorporationBlueprints.html +2 -0
- package/docs/modules/src_api_corporations_getCorporationDivisions.html +2 -0
- package/docs/modules/src_api_corporations_getCorporationFacilities.html +2 -0
- package/docs/modules/src_api_corporations_getCorporationIcon.html +2 -0
- package/docs/modules/src_api_corporations_getCorporationInfo.html +2 -0
- package/docs/modules/src_api_corporations_getCorporationIssuedMedals.html +2 -0
- package/docs/modules/src_api_corporations_getCorporationMedals.html +2 -0
- package/docs/modules/src_api_corporations_getCorporationMemberLimit.html +2 -0
- package/docs/modules/src_api_corporations_getCorporationMemberRoles.html +2 -0
- package/docs/modules/src_api_corporations_getCorporationMemberRolesHistory.html +2 -0
- package/docs/modules/src_api_corporations_getCorporationMemberTracking.html +2 -0
- package/docs/modules/src_api_corporations_getCorporationMembers.html +2 -0
- package/docs/modules/src_api_corporations_getCorporationMembersTitles.html +2 -0
- package/docs/modules/src_api_corporations_getCorporationProjects.html +2 -0
- package/docs/modules/src_api_corporations_getCorporationShareholders.html +2 -0
- package/docs/modules/src_api_corporations_getCorporationStandings.html +2 -0
- package/docs/modules/src_api_corporations_getCorporationStarbaseDetail.html +2 -0
- package/docs/modules/src_api_corporations_getCorporationStarbases.html +2 -0
- package/docs/modules/src_api_corporations_getCorporationStructures.html +2 -0
- package/docs/modules/src_api_corporations_getCorporationTitles.html +2 -0
- package/docs/modules/src_api_corporations_getNpcCorporations.html +2 -0
- package/docs/modules/src_api_dogma_getDogmaAttributeById.html +2 -0
- package/docs/modules/src_api_dogma_getDogmaAttributes.html +2 -0
- package/docs/modules/src_api_dogma_getDogmaDynamicItemAttributes.html +2 -0
- package/docs/modules/src_api_dogma_getDogmaEffectById.html +2 -0
- package/docs/modules/src_api_dogma_getDogmaEffects.html +2 -0
- package/docs/modules/src_api_factions_getCharacterFactionWarfareStats.html +2 -0
- package/docs/modules/src_api_factions_getCharacterLeaderboards.html +2 -0
- package/docs/modules/src_api_factions_getCorporationFactionWarfareStats.html +2 -0
- package/docs/modules/src_api_factions_getCorporationLeaderboards.html +2 -0
- package/docs/modules/src_api_factions_getFactionLeaderboards.html +2 -0
- package/docs/modules/src_api_factions_getFactionWarfareStats.html +2 -0
- package/docs/modules/src_api_factions_getFactionWarfareSystems.html +2 -0
- package/docs/modules/src_api_factions_getFactionWarfareWars.html +2 -0
- package/docs/modules/src_api_fittings_deleteCharacterFitting.html +2 -0
- package/docs/modules/src_api_fittings_getCharacterFittings.html +2 -0
- package/docs/modules/src_api_fittings_postCharacterFittings.html +2 -0
- package/docs/modules/src_api_fleets_deleteFleetMember.html +2 -0
- package/docs/modules/src_api_fleets_deleteFleetSquad.html +2 -0
- package/docs/modules/src_api_fleets_deleteFleetWing.html +2 -0
- package/docs/modules/src_api_fleets_getCharacterFleetInfo.html +2 -0
- package/docs/modules/src_api_fleets_getFleetInfo.html +2 -0
- package/docs/modules/src_api_fleets_getFleetMembers.html +2 -0
- package/docs/modules/src_api_fleets_getFleetWings.html +2 -0
- package/docs/modules/src_api_fleets_postFleetInvitation.html +2 -0
- package/docs/modules/src_api_fleets_postFleetSquad.html +2 -0
- package/docs/modules/src_api_fleets_postFleetWing.html +2 -0
- package/docs/modules/src_api_fleets_putFleetMember.html +2 -0
- package/docs/modules/src_api_fleets_putFleetSquad.html +2 -0
- package/docs/modules/src_api_fleets_putFleetWing.html +2 -0
- package/docs/modules/src_api_fleets_updateFleet.html +2 -0
- package/docs/modules/src_api_incursions_getIncursions.html +2 -0
- package/docs/modules/src_api_industry_getCharacterIndustryJobs.html +2 -0
- package/docs/modules/src_api_industry_getCharacterMiningLedger.html +2 -0
- package/docs/modules/src_api_industry_getCorporationIndustryJobs.html +2 -0
- package/docs/modules/src_api_industry_getCorporationMiningObserver.html +2 -0
- package/docs/modules/src_api_industry_getCorporationMiningObservers.html +2 -0
- package/docs/modules/src_api_industry_getIndustryFacilities.html +2 -0
- package/docs/modules/src_api_industry_getIndustrySystems.html +2 -0
- package/docs/modules/src_api_industry_getMoonExtractionTimers.html +2 -0
- package/docs/modules/src_api_insurance_getInsurancePrices.html +2 -0
- package/docs/modules/src_api_killmails_getCharacterRecentKillmails.html +2 -0
- package/docs/modules/src_api_killmails_getCorporationRecentKillmails.html +2 -0
- package/docs/modules/src_api_killmails_getKillmail.html +2 -0
- package/docs/modules/src_api_location_getCharacterLocation.html +2 -0
- package/docs/modules/src_api_location_getCharacterOnline.html +2 -0
- package/docs/modules/src_api_location_getCharacterShip.html +2 -0
- package/docs/modules/src_api_loyalty_getLoyaltyPoints.html +2 -0
- package/docs/modules/src_api_loyalty_getLoyaltyStoreOffers.html +2 -0
- package/docs/modules/src_api_mail_deleteCharacterMail.html +2 -0
- package/docs/modules/src_api_mail_deleteCharacterMailLabel.html +2 -0
- package/docs/modules/src_api_mail_getCharacterMail.html +2 -0
- package/docs/modules/src_api_mail_getCharacterMailHeaders.html +2 -0
- package/docs/modules/src_api_mail_getCharacterMailLabels.html +2 -0
- package/docs/modules/src_api_mail_getCharacterMailingLists.html +2 -0
- package/docs/modules/src_api_mail_postCharacterMail.html +2 -0
- package/docs/modules/src_api_mail_postCharacterMailLabels.html +2 -0
- package/docs/modules/src_api_mail_putCharacterMail.html +2 -0
- package/docs/modules/src_api_market_getCharacterOrderHistory.html +2 -0
- package/docs/modules/src_api_market_getCharacterOrders.html +2 -0
- package/docs/modules/src_api_market_getCorporationOrderHistory.html +2 -0
- package/docs/modules/src_api_market_getCorporationOrders.html +2 -0
- package/docs/modules/src_api_market_getMarketGroupInformation.html +2 -0
- package/docs/modules/src_api_market_getMarketGroups.html +2 -0
- package/docs/modules/src_api_market_getMarketHistory.html +2 -0
- package/docs/modules/src_api_market_getMarketOrders.html +2 -0
- package/docs/modules/src_api_market_getMarketOrdersInStructure.html +2 -0
- package/docs/modules/src_api_market_getMarketPrices.html +2 -0
- package/docs/modules/src_api_market_getMarketTypes.html +2 -0
- package/docs/modules/src_api_meta_getSwaggerJson.html +2 -0
- package/docs/modules/src_api_meta_getSwaggerYaml.html +2 -0
- package/docs/modules/src_api_opportunities_getCharacterOpportunities.html +2 -0
- package/docs/modules/src_api_opportunities_getOpportunitiesGroupById.html +2 -0
- package/docs/modules/src_api_opportunities_getOpportunitiesGroups.html +2 -0
- package/docs/modules/src_api_opportunities_getOpportunitiesTaskById.html +2 -0
- package/docs/modules/src_api_opportunities_getOpportunitiesTasks.html +2 -0
- package/docs/modules/src_api_pi_getColonies.html +2 -0
- package/docs/modules/src_api_pi_getColonyLayout.html +2 -0
- package/docs/modules/src_api_pi_getCorporationCustomsOffices.html +2 -0
- package/docs/modules/src_api_pi_getSchematicInformation.html +2 -0
- package/docs/modules/src_api_route_getRoute.html +2 -0
- package/docs/modules/src_api_search_getCharacterSearch.html +2 -0
- package/docs/modules/src_api_skills_getCharacterAttributes.html +2 -0
- package/docs/modules/src_api_skills_getCharacterSkillQueue.html +2 -0
- package/docs/modules/src_api_skills_getCharacterSkills.html +2 -0
- package/docs/modules/src_api_sovereignty_getSovereigntyCampaigns.html +2 -0
- package/docs/modules/src_api_sovereignty_getSovereigntyMap.html +2 -0
- package/docs/modules/src_api_sovereignty_getSovereigntyStructures.html +2 -0
- package/docs/modules/src_api_status_getStatus.html +2 -0
- package/docs/modules/src_api_ui_postAutopilotWaypoint.html +2 -0
- package/docs/modules/src_api_ui_postOpenContractWindow.html +2 -0
- package/docs/modules/src_api_ui_postOpenInformationWindow.html +2 -0
- package/docs/modules/src_api_ui_postOpenMarketDetailsWindow.html +2 -0
- package/docs/modules/src_api_ui_postOpenNewMailWindow.html +2 -0
- package/docs/modules/src_api_universe_getAncestries.html +2 -0
- package/docs/modules/src_api_universe_getAsteroidBeltInfo.html +2 -0
- package/docs/modules/src_api_universe_getBloodlines.html +2 -0
- package/docs/modules/src_api_universe_getConstellationById.html +2 -0
- package/docs/modules/src_api_universe_getConstellations.html +2 -0
- package/docs/modules/src_api_universe_getFactions.html +2 -0
- package/docs/modules/src_api_universe_getGraphicById.html +2 -0
- package/docs/modules/src_api_universe_getGraphics.html +2 -0
- package/docs/modules/src_api_universe_getItemCategories.html +2 -0
- package/docs/modules/src_api_universe_getItemCategoryById.html +2 -0
- package/docs/modules/src_api_universe_getItemGroupById.html +2 -0
- package/docs/modules/src_api_universe_getItemGroups.html +2 -0
- package/docs/modules/src_api_universe_getMoonById.html +2 -0
- package/docs/modules/src_api_universe_getPlanetById.html +2 -0
- package/docs/modules/src_api_universe_getRaces.html +2 -0
- package/docs/modules/src_api_universe_getRegionById.html +2 -0
- package/docs/modules/src_api_universe_getStarById.html +2 -0
- package/docs/modules/src_api_universe_getStargateById.html +2 -0
- package/docs/modules/src_api_universe_getStationById.html +2 -0
- package/docs/modules/src_api_universe_getStructureById.html +2 -0
- package/docs/modules/src_api_universe_getStructures.html +2 -0
- package/docs/modules/src_api_universe_getSystemById.html +2 -0
- package/docs/modules/src_api_universe_getSystemJumps.html +2 -0
- package/docs/modules/src_api_universe_getSystemKills.html +2 -0
- package/docs/modules/src_api_universe_getSystems.html +2 -0
- package/docs/modules/src_api_universe_getTypeById.html +2 -0
- package/docs/modules/src_api_universe_getTypes.html +2 -0
- package/docs/modules/src_api_universe_postBulkNamesToIds.html +2 -0
- package/docs/modules/src_api_universe_postNamesAndCategories.html +2 -0
- package/docs/modules/src_api_wallet_getCharacterWallet.html +2 -0
- package/docs/modules/src_api_wallet_getCharacterWalletJournal.html +2 -0
- package/docs/modules/src_api_wallet_getCharacterWalletTransactions.html +2 -0
- package/docs/modules/src_api_wallet_getCorporationWalletJournal.html +2 -0
- package/docs/modules/src_api_wallet_getCorporationWalletTransactions.html +2 -0
- package/docs/modules/src_api_wallet_getCorporationWallets.html +2 -0
- package/docs/modules/src_api_wars_getWarById.html +2 -0
- package/docs/modules/src_api_wars_getWarKillmails.html +2 -0
- package/docs/modules/src_api_wars_getWars.html +2 -0
- package/docs/modules/src_builders_AllianceApiBuilder.html +2 -0
- package/docs/modules/src_builders_AssetsApiBuilder.html +2 -0
- package/docs/modules/src_builders_BookmarkApiBuilder.html +2 -0
- package/docs/modules/src_builders_CalendarApiBuilder.html +2 -0
- package/docs/modules/src_builders_CharacterApiBuilder.html +2 -0
- package/docs/modules/src_builders_ClonesApiBuilder.html +2 -0
- package/docs/modules/src_builders_ContactsApiBuilder.html +2 -0
- package/docs/modules/src_builders_ContractsApiBuilder.html +2 -0
- package/docs/modules/src_builders_CorporationsApiBuilder.html +2 -0
- package/docs/modules/src_builders_DogmaApiBuilder.html +2 -0
- package/docs/modules/src_builders_FactionApiBuilder.html +2 -0
- package/docs/modules/src_builders_FittingsApiBuilder.html +2 -0
- package/docs/modules/src_builders_FleetApiBuilder.html +2 -0
- package/docs/modules/src_builders_IncursionsApiBuilder.html +2 -0
- package/docs/modules/src_builders_IndustryApiBuilder.html +2 -0
- package/docs/modules/src_builders_InsuranceApiBuilder.html +2 -0
- package/docs/modules/src_builders_KillmailsBuilder.html +2 -0
- package/docs/modules/src_builders_LocationApiBuilder.html +2 -0
- package/docs/modules/src_builders_LoyaltyApiBuilder.html +2 -0
- package/docs/modules/src_builders_MailApiBuilder.html +2 -0
- package/docs/modules/src_builders_MarketApiBuilder.html +2 -0
- package/docs/modules/src_builders_MetaApiBuilder.html +2 -0
- package/docs/modules/src_builders_OpportunitiesApiBuilder.html +2 -0
- package/docs/modules/src_builders_PiApiBuilder.html +2 -0
- package/docs/modules/src_builders_RouteApiBuilder.html +2 -0
- package/docs/modules/src_builders_SearchApiBuilder.html +2 -0
- package/docs/modules/src_builders_SkillsApiBuilder.html +2 -0
- package/docs/modules/src_builders_SovereigntyApiBuilder.html +2 -0
- package/docs/modules/src_builders_StatusApiBuilder.html +2 -0
- package/docs/modules/src_builders_UiApiBuilder.html +2 -0
- package/docs/modules/src_builders_UniverseApiBuilder.html +2 -0
- package/docs/modules/src_builders_WalletApiBuilder.html +2 -0
- package/docs/modules/src_builders_WarsAPIBuilder.html +2 -0
- package/docs/modules/src_clients_AllianceClient.html +2 -0
- package/docs/modules/src_clients_AssetsClient.html +2 -0
- package/docs/modules/src_clients_BookmarkClient.html +2 -0
- package/docs/modules/src_clients_CalendarClient.html +2 -0
- package/docs/modules/src_clients_CharacterClient.html +2 -0
- package/docs/modules/src_clients_ClonesClient.html +2 -0
- package/docs/modules/src_clients_ContactsClient.html +2 -0
- package/docs/modules/src_clients_ContractsClient.html +2 -0
- package/docs/modules/src_clients_CorporationsClient.html +2 -0
- package/docs/modules/src_clients_DogmaClient.html +2 -0
- package/docs/modules/src_clients_FactionClient.html +2 -0
- package/docs/modules/src_clients_FittingsClient.html +2 -0
- package/docs/modules/src_clients_FleetClient.html +2 -0
- package/docs/modules/src_clients_IncursionsClient.html +2 -0
- package/docs/modules/src_clients_IndustryClient.html +2 -0
- package/docs/modules/src_clients_InsuranceClient.html +2 -0
- package/docs/modules/src_clients_KillmailsClient.html +2 -0
- package/docs/modules/src_clients_LocationClient.html +2 -0
- package/docs/modules/src_clients_LoyaltyClient.html +2 -0
- package/docs/modules/src_clients_MailClient.html +2 -0
- package/docs/modules/src_clients_MarketClient.html +2 -0
- package/docs/modules/src_clients_MetaClient.html +2 -0
- package/docs/modules/src_clients_OpportunitiesClient.html +2 -0
- package/docs/modules/src_clients_PiClient.html +2 -0
- package/docs/modules/src_clients_RouteClient.html +2 -0
- package/docs/modules/src_clients_SearchClient.html +2 -0
- package/docs/modules/src_clients_SkillsClient.html +2 -0
- package/docs/modules/src_clients_SovereigntyClient.html +2 -0
- package/docs/modules/src_clients_StatusClient.html +2 -0
- package/docs/modules/src_clients_UiClient.html +2 -0
- package/docs/modules/src_clients_UniverseClient.html +2 -0
- package/docs/modules/src_clients_WalletClient.html +2 -0
- package/docs/modules/src_clients_WarsClient.html +2 -0
- package/docs/modules/src_config_configManager.html +2 -0
- package/docs/modules/src_config_constants.html +5 -0
- package/docs/modules/src_config_jest_jest_setup.html +2 -0
- package/docs/modules/src_core_ApiClient.html +2 -0
- package/docs/modules/src_core_ApiClientBuilder.html +2 -0
- package/docs/modules/src_core_ApiError.html +2 -0
- package/docs/modules/src_core_ApiRequestHandler.html +6 -0
- package/docs/modules/src_core_IAPIBuilder.html +4 -0
- package/docs/modules/src_core_cache_ETagCacheManager.html +4 -0
- package/docs/modules/src_core_container_Container.html +9 -0
- package/docs/modules/src_core_errors_ApiError.html +4 -0
- package/docs/modules/src_core_factory_ApiFactory.html +6 -0
- package/docs/modules/src_core_logger.html +2 -0
- package/docs/modules/src_core_logger_logger.html +2 -0
- package/docs/modules/src_core_logger_loggerUtil.html +5 -0
- package/docs/modules/src_core_util_error.html +2 -0
- package/docs/modules/src_core_util_file.html +4 -0
- package/docs/modules/src_core_util_headersUtil.html +2 -0
- package/docs/modules/src_core_util_inputValidation.html +2 -0
- package/docs/modules/src_core_util_network.html +2 -0
- package/docs/modules/src_core_util_request.html +3 -0
- package/docs/modules/src_core_util_testHelpers.html +4 -0
- package/docs/modules/src_testing_TestDataFactory.html +3 -0
- package/docs/modules/src_testing_TestHelpers.html +9 -0
- package/docs/modules/src_types_api_responses.html +28 -0
- package/docs/modules/src_types_winston_loggly_bulk.html +3 -0
- package/docs/modules.html +305 -0
- package/docs/types/src_EsiClientBuilder.ApiClientType.html +1 -0
- package/docs/types/src_EsiClientBuilder.ClientInstance.html +1 -0
- package/docs/types/src_core_container_Container.AsyncFactory.html +1 -0
- package/docs/types/src_core_container_Container.Factory.html +1 -0
- package/docs/variables/src_EsiClient.esiClient-1.html +1 -0
- package/docs/variables/src_config_constants.localConfig.html +1 -0
- package/docs/variables/src_config_constants.projectConfig.html +1 -0
- package/docs/variables/src_config_constants.routes.html +1 -0
- package/docs/variables/src_config_constants.server.html +1 -0
- package/docs/variables/src_core_container_Container.container-1.html +1 -0
- package/docs/variables/src_core_factory_ApiFactory.apiFactory-1.html +1 -0
- package/docs/variables/src_core_logger_logger.default.html +1 -0
- package/jest.improved.config.cjs +46 -0
- package/jest.unit.config.cjs +4 -1
- package/output.txt +0 -0
- package/package.json +34 -13
- package/src/EsiClient.ts +351 -0
- package/src/EsiClientBuilder.ts +380 -0
- package/src/TODO +26 -21
- package/src/api/alliances/getAllianceById.ts +7 -1
- package/src/api/alliances/getAlliances.ts +2 -2
- package/src/api/characters/postCharacterAffiliations.ts +2 -1
- package/src/api/clones/postJumpCloneActivation.ts +11 -0
- package/src/api/corporations/getCorporationProjects.ts +10 -0
- package/src/api/meta/getSwaggerJson.ts +10 -0
- package/src/api/meta/getSwaggerYaml.ts +36 -0
- package/src/api/status/getStatus.ts +2 -2
- package/src/builders/AllianceApiBuilder.ts +3 -2
- package/src/builders/AssetsApiBuilder.ts +2 -1
- package/src/builders/BookmarkApiBuilder.ts +2 -1
- package/src/builders/CalendarApiBuilder.ts +2 -1
- package/src/builders/CharacterApiBuilder.ts +2 -1
- package/src/builders/ClonesApiBuilder.ts +2 -1
- package/src/builders/ContactsApiBuilder.ts +2 -1
- package/src/builders/ContractsApiBuilder.ts +2 -1
- package/src/builders/CorporationsApiBuilder.ts +2 -1
- package/src/builders/DogmaApiBuilder.ts +2 -1
- package/src/builders/FactionApiBuilder.ts +3 -2
- package/src/builders/FittingsApiBuilder.ts +2 -3
- package/src/builders/FleetApiBuilder.ts +2 -1
- package/src/builders/IncursionsApiBuilder.ts +2 -1
- package/src/builders/IndustryApiBuilder.ts +2 -1
- package/src/builders/InsuranceApiBuilder.ts +2 -1
- package/src/builders/KillmailsBuilder.ts +2 -1
- package/src/builders/LocationApiBuilder.ts +2 -1
- package/src/builders/LoyaltyApiBuilder.ts +2 -1
- package/src/builders/MailApiBuilder.ts +2 -1
- package/src/builders/MarketApiBuilder.ts +2 -1
- package/src/builders/MetaApiBuilder.ts +15 -0
- package/src/builders/OpportunitiesApiBuilder.ts +2 -1
- package/src/builders/PiApiBuilder.ts +2 -1
- package/src/builders/RouteApiBuilder.ts +2 -1
- package/src/builders/SearchApiBuilder.ts +2 -1
- package/src/builders/SkillsApiBuilder.ts +2 -1
- package/src/builders/SovereigntyApiBuilder.ts +2 -1
- package/src/builders/StatusApiBuilder.ts +2 -1
- package/src/builders/UiApiBuilder.ts +2 -1
- package/src/builders/UniverseApiBuilder.ts +2 -1
- package/src/builders/WalletApiBuilder.ts +2 -1
- package/src/builders/WarsAPIBuilder.ts +2 -1
- package/src/clients/AllianceClient.ts +23 -14
- package/src/clients/ClonesClient.ts +7 -0
- package/src/clients/CorporationsClient.ts +7 -0
- package/src/clients/MetaClient.ts +24 -0
- package/src/core/ApiRequestHandler.ts +77 -3
- package/src/core/IAPIBuilder.ts +13 -0
- package/src/core/cache/ETagCacheManager.ts +248 -0
- package/src/core/container/Container.ts +176 -0
- package/src/core/errors/ApiError.ts +153 -0
- package/src/core/factory/ApiFactory.ts +207 -0
- package/src/core/util/headersUtil.ts +12 -0
- package/src/index.ts +214 -1152
- package/src/testing/TestDataFactory.ts +742 -0
- package/src/testing/TestHelpers.ts +280 -0
- package/src/types/api-responses.ts +291 -0
- package/tests/bdd/simple-bdd-demo.test.ts +210 -0
- package/tests/bdd-scenarios/core/bdd-alliance.test.ts +210 -0
- package/tests/bdd-scenarios/core/bdd-character.test.ts +346 -0
- package/tests/bdd-scenarios/core/bdd-clones.test.ts +159 -0
- package/tests/bdd-scenarios/core/bdd-corporation-projects.test.ts +136 -0
- package/tests/bdd-scenarios/core/bdd-corporation.test.ts +388 -0
- package/tests/bdd-scenarios/core/bdd-etag-caching.test.ts +280 -0
- package/tests/bdd-scenarios/core/bdd-market.test.ts +435 -0
- package/tests/bdd-scenarios/core/bdd-meta.test.ts +131 -0
- package/tests/bdd-scenarios/core/bdd-universe.test.ts +463 -0
- package/tests/bdd-scenarios/integration/bdd-integration-workflows.test.ts +490 -0
- package/tests/bdd-scenarios/performance/bdd-performance.test.ts +463 -0
- package/tests/tdd/alliances/AllianceClient.improved.test.ts +266 -0
- package/tests/tdd/alliances/AllianceClient.test.ts +186 -15
- package/tests/tdd/alliances/getAlliances.test.ts +4 -7
- package/tests/tdd/clones/postJumpCloneActivation.test.ts +70 -0
- package/tests/tdd/contacts/ContactsClient.test.ts +267 -44
- package/tests/tdd/core/ETagCacheManager.test.ts +173 -0
- package/tests/tdd/core/ETagIntegration.test.ts +208 -0
- package/tests/tdd/corporations/CorporationsClient.test.ts +180 -9
- package/tests/tdd/corporations/getCorporationProjects.test.ts +62 -0
- package/tests/tdd/incursions/getIncursions.test.ts +148 -23
- package/tests/tdd/meta/MetaApiBuilder.test.ts +45 -0
- package/tests/tdd/meta/MetaClient.test.ts +92 -0
- package/tests/tdd/meta/getSwaggerJson.test.ts +40 -0
- package/tests/tdd/meta/getSwaggerYaml.test.ts +40 -0
- package/tests/tdd/status/StatusClient.test.ts +10 -8
- package/tests/tdd/status/getStatus.test.ts +12 -10
- package/typedoc.json +77 -0
- package/Structure.js +0 -257
- package/eslint.json +0 -13
- package/jest.bdd.config.cjs +0 -22
- package/src/config/jest/jest.bdd.setup.ts +0 -11
- package/tests/bdd/features/alliances/getAllianceById.feature +0 -6
- package/tests/bdd/features/alliances/getAllianceContactLabels.feature +0 -0
- package/tests/bdd/features/alliances/getAllianceContacts.feature +0 -0
- package/tests/bdd/features/alliances/getAllianceCorporations.feature +0 -6
- package/tests/bdd/features/alliances/getAllianceIcons.feature +0 -6
- package/tests/bdd/features/alliances/getAlliances.feature +0 -0
- package/tests/bdd/features/characters/getCharacter.feature +0 -0
- package/tests/bdd/features/characters/getCharacterAffiliation.feature +0 -0
- package/tests/bdd/features/characters/getCharacterAgentsResearch.feature +0 -0
- package/tests/bdd/features/characters/getCharacterAssetLocations.feature +0 -0
- package/tests/bdd/features/characters/getCharacterAssetNames.feature +0 -0
- package/tests/bdd/features/characters/getCharacterAssets.feature +0 -0
- package/tests/bdd/features/characters/getCharacterAttributes.feature +0 -0
- package/tests/bdd/features/characters/getCharacterBlueprints.feature +0 -0
- package/tests/bdd/features/characters/getCharacterBookmarkFolders.feature +0 -0
- package/tests/bdd/features/characters/getCharacterBookmarks.feature +0 -0
- package/tests/bdd/features/characters/getCharacterCalendarEventById.feature +0 -0
- package/tests/bdd/features/characters/getCharacterCalendarEvents.feature +0 -0
- package/tests/bdd/features/characters/getCharacterClones.feature +0 -0
- package/tests/bdd/features/characters/getCharacterContractBids.feature +0 -0
- package/tests/bdd/features/characters/getCharacterContractItems.feature +0 -0
- package/tests/bdd/features/characters/getCharacterContracts.feature +0 -0
- package/tests/bdd/features/characters/getCharacterCorporationHistory.feature +0 -0
- package/tests/bdd/features/characters/getCharacterFatigue.feature +0 -0
- package/tests/bdd/features/characters/getCharacterFittings.feature +0 -0
- package/tests/bdd/features/characters/getCharacterFleet.feature +0 -0
- package/tests/bdd/features/characters/getCharacterFwStats.feature +0 -0
- package/tests/bdd/features/characters/getCharacterImplants.feature +0 -0
- package/tests/bdd/features/characters/getCharacterIndustryJobs.feature +0 -0
- package/tests/bdd/features/characters/getCharacterKillmails.feature +0 -0
- package/tests/bdd/features/characters/getCharacterLocation.feature +0 -0
- package/tests/bdd/features/characters/getCharacterLoyaltyPoints.feature +0 -0
- package/tests/bdd/features/characters/getCharacterMail.feature +0 -0
- package/tests/bdd/features/characters/getCharacterMailById.feature +0 -0
- package/tests/bdd/features/characters/getCharacterMailLabels.feature +0 -0
- package/tests/bdd/features/characters/getCharacterMailLists.feature +0 -0
- package/tests/bdd/features/characters/getCharacterMedals.feature +0 -0
- package/tests/bdd/features/characters/getCharacterMining.feature +0 -0
- package/tests/bdd/features/characters/getCharacterNotifications.feature +0 -0
- package/tests/bdd/features/characters/getCharacterNotificationsContacts.feature +0 -0
- package/tests/bdd/features/characters/getCharacterOpportunities.feature +0 -0
- package/tests/bdd/features/characters/getCharacterOrderHistory.feature +0 -0
- package/tests/bdd/features/characters/getCharacterOrders.feature +0 -0
- package/tests/bdd/features/characters/getCharacterPlanets.feature +0 -0
- package/tests/bdd/features/characters/getCharacterPortrait.feature +0 -0
- package/tests/bdd/features/characters/getCharacterRoles.feature +0 -0
- package/tests/bdd/features/characters/getCharacterSearch.feature +0 -0
- package/tests/bdd/features/characters/getCharacterShip.feature +0 -0
- package/tests/bdd/features/characters/getCharacterSkillQueue.feature +0 -0
- package/tests/bdd/features/characters/getCharacterSkills.feature +0 -0
- package/tests/bdd/features/characters/getCharacterStandings.feature +0 -0
- package/tests/bdd/features/characters/getCharacterStats.feature +0 -0
- package/tests/bdd/features/characters/getCharacterTitles.feature +0 -0
- package/tests/bdd/features/characters/getCharacterWallet.feature +0 -0
- package/tests/bdd/features/characters/getCharacterWalletJournal.feature +0 -0
- package/tests/bdd/features/characters/getCharacterWalletTransactions.feature +0 -0
- package/tests/bdd/features/contracts/getContractBids.feature +0 -0
- package/tests/bdd/features/contracts/getContractById.feature +0 -0
- package/tests/bdd/features/contracts/getContractItems.feature +0 -0
- package/tests/bdd/features/contracts/getContracts.feature +0 -0
- package/tests/bdd/features/contracts/getPublicContractBids.feature +0 -0
- package/tests/bdd/features/contracts/getPublicContractItems.feature +0 -0
- package/tests/bdd/features/contracts/getPublicContracts.feature +0 -0
- package/tests/bdd/features/corporations/getCorporation.feature +0 -0
- package/tests/bdd/features/corporations/getCorporationAlliances.feature +0 -0
- package/tests/bdd/features/corporations/getCorporationBlueprints.feature +0 -0
- package/tests/bdd/features/corporations/getCorporationBookmarkFolders.feature +0 -0
- package/tests/bdd/features/corporations/getCorporationBookmarks.feature +0 -0
- package/tests/bdd/features/corporations/getCorporationContactLabels.feature +0 -0
- package/tests/bdd/features/corporations/getCorporationContacts.feature +0 -0
- package/tests/bdd/features/corporations/getCorporationContainerLogs.feature +0 -0
- package/tests/bdd/features/corporations/getCorporationContractBids.feature +0 -0
- package/tests/bdd/features/corporations/getCorporationContractItems.feature +0 -0
- package/tests/bdd/features/corporations/getCorporationContracts.feature +0 -0
- package/tests/bdd/features/corporations/getCorporationDivisions.feature +0 -0
- package/tests/bdd/features/corporations/getCorporationFacilities.feature +0 -0
- package/tests/bdd/features/corporations/getCorporationFwStats.feature +0 -0
- package/tests/bdd/features/corporations/getCorporationIcons.feature +0 -0
- package/tests/bdd/features/corporations/getCorporationIndustryJobs.feature +0 -0
- package/tests/bdd/features/corporations/getCorporationKillmails.feature +0 -0
- package/tests/bdd/features/corporations/getCorporationMedals.feature +0 -0
- package/tests/bdd/features/corporations/getCorporationMemberLimit.feature +0 -0
- package/tests/bdd/features/corporations/getCorporationMemberTracking.feature +0 -0
- package/tests/bdd/features/corporations/getCorporationMembers.feature +0 -0
- package/tests/bdd/features/corporations/getCorporationMining.feature +0 -0
- package/tests/bdd/features/corporations/getCorporationNotifications.feature +0 -0
- package/tests/bdd/features/corporations/getCorporationOrderHistory.feature +0 -0
- package/tests/bdd/features/corporations/getCorporationOrders.feature +0 -0
- package/tests/bdd/features/corporations/getCorporationOutposts.feature +0 -0
- package/tests/bdd/features/corporations/getCorporationRoles.feature +0 -0
- package/tests/bdd/features/corporations/getCorporationShareholders.feature +0 -0
- package/tests/bdd/features/corporations/getCorporationStandings.feature +0 -0
- package/tests/bdd/features/corporations/getCorporationStarbases.feature +0 -0
- package/tests/bdd/features/corporations/getCorporationStructures.feature +0 -0
- package/tests/bdd/features/corporations/getCorporationTitles.feature +0 -0
- package/tests/bdd/features/corporations/getCorporationWalletJournal.feature +0 -0
- package/tests/bdd/features/corporations/getCorporationWalletTransactions.feature +0 -0
- package/tests/bdd/features/corporations/getCorporationWallets.feature +0 -0
- package/tests/bdd/features/dogma/getDogmaAttributeById.feature +0 -0
- package/tests/bdd/features/dogma/getDogmaAttributes.feature +0 -0
- package/tests/bdd/features/dogma/getDogmaDynamicItemAttributes.feature +0 -0
- package/tests/bdd/features/dogma/getDogmaEffectById.feature +0 -0
- package/tests/bdd/features/dogma/getDogmaEffects.feature +0 -0
- package/tests/bdd/features/factions/getFactionWarfareLeaderboards.feature +0 -6
- package/tests/bdd/features/factions/getFactionWarfareStats.feature +0 -6
- package/tests/bdd/features/factions/getFactionWarfareSystems.feature +0 -6
- package/tests/bdd/features/factions/getFactionWarfareWars.feature +0 -6
- package/tests/bdd/features/fleets/getFleetMembers.feature +0 -0
- package/tests/bdd/features/fleets/getFleetSquads.feature +0 -0
- package/tests/bdd/features/fleets/getFleetWings.feature +0 -0
- package/tests/bdd/features/fleets/getFleets.feature +0 -0
- package/tests/bdd/features/incursions/getIncursions.feature +0 -0
- package/tests/bdd/features/industry/getIndustryCorporationJobs.feature +0 -0
- package/tests/bdd/features/industry/getIndustryFacilities.feature +0 -0
- package/tests/bdd/features/industry/getIndustryJobs.feature +0 -0
- package/tests/bdd/features/industry/getIndustrySystems.feature +0 -0
- package/tests/bdd/features/insurance/getInsurancePrices.feature +0 -0
- package/tests/bdd/features/killmails/getKillmailById.feature +0 -0
- package/tests/bdd/features/killmails/getKillmails.feature +0 -0
- package/tests/bdd/features/killmails/getRecentCharacterKillmails.feature +0 -0
- package/tests/bdd/features/killmails/getRecentCorporationKillmails.feature +0 -0
- package/tests/bdd/features/location/getLocation.feature +0 -0
- package/tests/bdd/features/markets/getMarketGroupById.feature +0 -0
- package/tests/bdd/features/markets/getMarketGroups.feature +0 -0
- package/tests/bdd/features/markets/getMarketHistory.feature +0 -0
- package/tests/bdd/features/markets/getMarketOrders.feature +0 -0
- package/tests/bdd/features/markets/getMarketPrices.feature +0 -0
- package/tests/bdd/features/markets/getMarketRegionHistory.feature +0 -0
- package/tests/bdd/features/markets/getMarketRegionOrders.feature +0 -0
- package/tests/bdd/features/opportunities/getOpportunitiesGroups.feature +0 -0
- package/tests/bdd/features/opportunities/getOpportunitiesTasks.feature +0 -0
- package/tests/bdd/features/search/postSearch.feature +0 -0
- package/tests/bdd/features/sovereignty/getSovereigntyCampaigns.feature +0 -0
- package/tests/bdd/features/sovereignty/getSovereigntyMap.feature +0 -0
- package/tests/bdd/features/sovereignty/getSovereigntyStructures.feature +0 -0
- package/tests/bdd/features/ui/postUiAutopilotWaypoint.feature +0 -0
- package/tests/bdd/features/ui/postUiOpenWindowContract.feature +0 -0
- package/tests/bdd/features/ui/postUiOpenWindowInformation.feature +0 -0
- package/tests/bdd/features/ui/postUiOpenWindowMarketDetails.feature +0 -0
- package/tests/bdd/features/ui/postUiOpenWindowNewMail.feature +0 -0
- package/tests/bdd/features/universe/getAncestries.feature +0 -0
- package/tests/bdd/features/universe/getAsteroidBelt.feature +0 -0
- package/tests/bdd/features/universe/getBloodlines.feature +0 -0
- package/tests/bdd/features/universe/getCategories.feature +0 -0
- package/tests/bdd/features/universe/getCategoryById.feature +0 -0
- package/tests/bdd/features/universe/getConstellationById.feature +0 -0
- package/tests/bdd/features/universe/getConstellations.feature +0 -0
- package/tests/bdd/features/universe/getFactions.feature +0 -0
- package/tests/bdd/features/universe/getGraphicById.feature +0 -0
- package/tests/bdd/features/universe/getGraphics.feature +0 -0
- package/tests/bdd/features/universe/getGroupById.feature +0 -0
- package/tests/bdd/features/universe/getGroups.feature +0 -0
- package/tests/bdd/features/universe/getMoonById.feature +0 -0
- package/tests/bdd/features/universe/getMoons.feature +0 -0
- package/tests/bdd/features/universe/getPlanetById.feature +0 -0
- package/tests/bdd/features/universe/getPlanets.feature +0 -0
- package/tests/bdd/features/universe/getRaces.feature +0 -0
- package/tests/bdd/features/universe/getRegionById.feature +0 -0
- package/tests/bdd/features/universe/getRegions.feature +0 -0
- package/tests/bdd/features/universe/getStarById.feature +0 -0
- package/tests/bdd/features/universe/getStargateById.feature +0 -0
- package/tests/bdd/features/universe/getStargates.feature +0 -0
- package/tests/bdd/features/universe/getStars.feature +0 -0
- package/tests/bdd/features/universe/getStationById.feature +0 -0
- package/tests/bdd/features/universe/getStations.feature +0 -0
- package/tests/bdd/features/universe/getStructures.feature +0 -0
- package/tests/bdd/features/universe/getSystemById.feature +0 -0
- package/tests/bdd/features/universe/getSystemJumps.feature +0 -0
- package/tests/bdd/features/universe/getSystemKills.feature +0 -0
- package/tests/bdd/features/universe/getSystems.feature +0 -0
- package/tests/bdd/features/universe/getTypeById.feature +0 -0
- package/tests/bdd/features/universe/getTypes.feature +0 -0
- package/tests/bdd/features/universe/getWarById.feature +0 -0
- package/tests/bdd/features/universe/getWars.feature +0 -0
- package/tests/bdd/features/universe/postBulkIdsToNames.feature +0 -0
- package/tests/bdd/features/universe/postBulkNamesToIds.feature +0 -0
- package/tests/bdd/features/universe/postUniverseNames.feature +0 -0
- package/tests/bdd/features/wars/getWarById.feature +0 -0
- package/tests/bdd/features/wars/getWars.feature +0 -0
- package/tests/bdd/steps/alliances/getAllianceById.ts +0 -17
- package/tests/bdd/steps/alliances/getAllianceContactLabels.ts +0 -0
- package/tests/bdd/steps/alliances/getAllianceContacts.ts +0 -0
- package/tests/bdd/steps/alliances/getAllianceCorporations.ts +0 -18
- package/tests/bdd/steps/alliances/getAllianceIcons.ts +0 -21
- package/tests/bdd/steps/alliances/getAlliances.ts +0 -0
- package/tests/bdd/steps/characters/getCharacter.ts +0 -0
- package/tests/bdd/steps/characters/getCharacterAffiliation.ts +0 -0
- package/tests/bdd/steps/characters/getCharacterAgentsResearch.ts +0 -0
- package/tests/bdd/steps/characters/getCharacterAssetLocations.ts +0 -0
- package/tests/bdd/steps/characters/getCharacterAssetNames.ts +0 -0
- package/tests/bdd/steps/characters/getCharacterAssets.ts +0 -0
- package/tests/bdd/steps/characters/getCharacterAttributes.ts +0 -0
- package/tests/bdd/steps/characters/getCharacterBlueprints.ts +0 -0
- package/tests/bdd/steps/characters/getCharacterBookmarkFolders.ts +0 -0
- package/tests/bdd/steps/characters/getCharacterBookmarks.ts +0 -0
- package/tests/bdd/steps/characters/getCharacterCalendarEventById.ts +0 -0
- package/tests/bdd/steps/characters/getCharacterCalendarEvents.ts +0 -0
- package/tests/bdd/steps/characters/getCharacterClones.ts +0 -0
- package/tests/bdd/steps/characters/getCharacterContractBids.ts +0 -0
- package/tests/bdd/steps/characters/getCharacterContractItems.ts +0 -0
- package/tests/bdd/steps/characters/getCharacterContracts.ts +0 -0
- package/tests/bdd/steps/characters/getCharacterCorporationHistory.ts +0 -0
- package/tests/bdd/steps/characters/getCharacterFatigue.ts +0 -0
- package/tests/bdd/steps/characters/getCharacterFittings.ts +0 -0
- package/tests/bdd/steps/characters/getCharacterFleet.ts +0 -0
- package/tests/bdd/steps/characters/getCharacterFwStats.ts +0 -0
- package/tests/bdd/steps/characters/getCharacterImplants.ts +0 -0
- package/tests/bdd/steps/characters/getCharacterIndustryJobs.ts +0 -0
- package/tests/bdd/steps/characters/getCharacterKillmails.ts +0 -0
- package/tests/bdd/steps/characters/getCharacterLocation.ts +0 -0
- package/tests/bdd/steps/characters/getCharacterLoyaltyPoints.ts +0 -0
- package/tests/bdd/steps/characters/getCharacterMail.ts +0 -0
- package/tests/bdd/steps/characters/getCharacterMailById.ts +0 -0
- package/tests/bdd/steps/characters/getCharacterMailLabels.ts +0 -0
- package/tests/bdd/steps/characters/getCharacterMailLists.ts +0 -0
- package/tests/bdd/steps/characters/getCharacterMedals.ts +0 -0
- package/tests/bdd/steps/characters/getCharacterMining.ts +0 -0
- package/tests/bdd/steps/characters/getCharacterNotifications.ts +0 -0
- package/tests/bdd/steps/characters/getCharacterNotificationsContacts.ts +0 -0
- package/tests/bdd/steps/characters/getCharacterOpportunities.ts +0 -0
- package/tests/bdd/steps/characters/getCharacterOrderHistory.ts +0 -0
- package/tests/bdd/steps/characters/getCharacterOrders.ts +0 -0
- package/tests/bdd/steps/characters/getCharacterPlanets.ts +0 -0
- package/tests/bdd/steps/characters/getCharacterPortrait.ts +0 -0
- package/tests/bdd/steps/characters/getCharacterRoles.ts +0 -0
- package/tests/bdd/steps/characters/getCharacterSearch.ts +0 -0
- package/tests/bdd/steps/characters/getCharacterShip.ts +0 -0
- package/tests/bdd/steps/characters/getCharacterSkillQueue.ts +0 -0
- package/tests/bdd/steps/characters/getCharacterSkills.ts +0 -0
- package/tests/bdd/steps/characters/getCharacterStandings.ts +0 -0
- package/tests/bdd/steps/characters/getCharacterStats.ts +0 -0
- package/tests/bdd/steps/characters/getCharacterTitles.ts +0 -0
- package/tests/bdd/steps/characters/getCharacterWallet.ts +0 -0
- package/tests/bdd/steps/characters/getCharacterWalletJournal.ts +0 -0
- package/tests/bdd/steps/characters/getCharacterWalletTransactions.ts +0 -0
- package/tests/bdd/steps/contracts/getContractBids.ts +0 -0
- package/tests/bdd/steps/contracts/getContractById.ts +0 -0
- package/tests/bdd/steps/contracts/getContractItems.ts +0 -0
- package/tests/bdd/steps/contracts/getContracts.ts +0 -0
- package/tests/bdd/steps/contracts/getPublicContractBids.ts +0 -0
- package/tests/bdd/steps/contracts/getPublicContractItems.ts +0 -0
- package/tests/bdd/steps/contracts/getPublicContracts.ts +0 -0
- package/tests/bdd/steps/corporations/getCorporation.ts +0 -0
- package/tests/bdd/steps/corporations/getCorporationAlliances.ts +0 -0
- package/tests/bdd/steps/corporations/getCorporationBlueprints.ts +0 -0
- package/tests/bdd/steps/corporations/getCorporationBookmarkFolders.ts +0 -0
- package/tests/bdd/steps/corporations/getCorporationBookmarks.ts +0 -0
- package/tests/bdd/steps/corporations/getCorporationContactLabels.ts +0 -0
- package/tests/bdd/steps/corporations/getCorporationContacts.ts +0 -0
- package/tests/bdd/steps/corporations/getCorporationContainerLogs.ts +0 -0
- package/tests/bdd/steps/corporations/getCorporationContractBids.ts +0 -0
- package/tests/bdd/steps/corporations/getCorporationContractItems.ts +0 -0
- package/tests/bdd/steps/corporations/getCorporationContracts.ts +0 -0
- package/tests/bdd/steps/corporations/getCorporationDivisions.ts +0 -0
- package/tests/bdd/steps/corporations/getCorporationFacilities.ts +0 -0
- package/tests/bdd/steps/corporations/getCorporationFwStats.ts +0 -0
- package/tests/bdd/steps/corporations/getCorporationIcons.ts +0 -0
- package/tests/bdd/steps/corporations/getCorporationIndustryJobs.ts +0 -0
- package/tests/bdd/steps/corporations/getCorporationKillmails.ts +0 -0
- package/tests/bdd/steps/corporations/getCorporationMedals.ts +0 -0
- package/tests/bdd/steps/corporations/getCorporationMemberLimit.ts +0 -0
- package/tests/bdd/steps/corporations/getCorporationMemberTracking.ts +0 -0
- package/tests/bdd/steps/corporations/getCorporationMembers.ts +0 -0
- package/tests/bdd/steps/corporations/getCorporationMining.ts +0 -0
- package/tests/bdd/steps/corporations/getCorporationNotifications.ts +0 -0
- package/tests/bdd/steps/corporations/getCorporationOrderHistory.ts +0 -0
- package/tests/bdd/steps/corporations/getCorporationOrders.ts +0 -0
- package/tests/bdd/steps/corporations/getCorporationOutposts.ts +0 -0
- package/tests/bdd/steps/corporations/getCorporationRoles.ts +0 -0
- package/tests/bdd/steps/corporations/getCorporationShareholders.ts +0 -0
- package/tests/bdd/steps/corporations/getCorporationStandings.ts +0 -0
- package/tests/bdd/steps/corporations/getCorporationStarbases.ts +0 -0
- package/tests/bdd/steps/corporations/getCorporationStructures.ts +0 -0
- package/tests/bdd/steps/corporations/getCorporationTitles.ts +0 -0
- package/tests/bdd/steps/corporations/getCorporationWalletJournal.ts +0 -0
- package/tests/bdd/steps/corporations/getCorporationWalletTransactions.ts +0 -0
- package/tests/bdd/steps/corporations/getCorporationWallets.ts +0 -0
- package/tests/bdd/steps/dogma/getDogmaAttributeById.ts +0 -0
- package/tests/bdd/steps/dogma/getDogmaAttributes.ts +0 -0
- package/tests/bdd/steps/dogma/getDogmaDynamicItemAttributes.ts +0 -0
- package/tests/bdd/steps/dogma/getDogmaEffectById.ts +0 -0
- package/tests/bdd/steps/dogma/getDogmaEffects.ts +0 -0
- package/tests/bdd/steps/factions/getFactionWarfareLeaderboards.ts +0 -33
- package/tests/bdd/steps/factions/getFactionWarfareStats.ts +0 -34
- package/tests/bdd/steps/factions/getFactionWarfareSystems.ts +0 -33
- package/tests/bdd/steps/factions/getFactionWarfareWars.ts +0 -33
- package/tests/bdd/steps/fleets/getFleetMembers.ts +0 -0
- package/tests/bdd/steps/fleets/getFleetSquads.ts +0 -0
- package/tests/bdd/steps/fleets/getFleetWings.ts +0 -0
- package/tests/bdd/steps/fleets/getFleets.ts +0 -0
- package/tests/bdd/steps/incursions/getIncursions.ts +0 -0
- package/tests/bdd/steps/industry/getIndustryCorporationJobs.ts +0 -0
- package/tests/bdd/steps/industry/getIndustryFacilities.ts +0 -0
- package/tests/bdd/steps/industry/getIndustryJobs.ts +0 -0
- package/tests/bdd/steps/industry/getIndustrySystems.ts +0 -0
- package/tests/bdd/steps/insurance/getInsurancePrices.ts +0 -0
- package/tests/bdd/steps/killmails/getKillmailById.ts +0 -0
- package/tests/bdd/steps/killmails/getKillmails.ts +0 -0
- package/tests/bdd/steps/killmails/getRecentCharacterKillmails.ts +0 -0
- package/tests/bdd/steps/killmails/getRecentCorporationKillmails.ts +0 -0
- package/tests/bdd/steps/location/getLocation.ts +0 -0
- package/tests/bdd/steps/markets/getMarketGroupById.ts +0 -0
- package/tests/bdd/steps/markets/getMarketGroups.ts +0 -0
- package/tests/bdd/steps/markets/getMarketHistory.ts +0 -0
- package/tests/bdd/steps/markets/getMarketOrders.ts +0 -0
- package/tests/bdd/steps/markets/getMarketPrices.ts +0 -0
- package/tests/bdd/steps/markets/getMarketRegionHistory.ts +0 -0
- package/tests/bdd/steps/markets/getMarketRegionOrders.ts +0 -0
- package/tests/bdd/steps/opportunities/getOpportunitiesGroups.ts +0 -0
- package/tests/bdd/steps/opportunities/getOpportunitiesTasks.ts +0 -0
- package/tests/bdd/steps/search/postSearch.ts +0 -0
- package/tests/bdd/steps/sovereignty/getSovereigntyCampaigns.ts +0 -0
- package/tests/bdd/steps/sovereignty/getSovereigntyMap.ts +0 -0
- package/tests/bdd/steps/sovereignty/getSovereigntyStructures.ts +0 -0
- package/tests/bdd/steps/ui/postUiAutopilotWaypoint.ts +0 -0
- package/tests/bdd/steps/ui/postUiOpenWindowContract.ts +0 -0
- package/tests/bdd/steps/ui/postUiOpenWindowInformation.ts +0 -0
- package/tests/bdd/steps/ui/postUiOpenWindowMarketDetails.ts +0 -0
- package/tests/bdd/steps/ui/postUiOpenWindowNewMail.ts +0 -0
- package/tests/bdd/steps/universe/getAncestries.ts +0 -0
- package/tests/bdd/steps/universe/getAsteroidBelt.ts +0 -0
- package/tests/bdd/steps/universe/getBloodlines.ts +0 -0
- package/tests/bdd/steps/universe/getCategories.ts +0 -0
- package/tests/bdd/steps/universe/getCategoryById.ts +0 -0
- package/tests/bdd/steps/universe/getConstellationById.ts +0 -0
- package/tests/bdd/steps/universe/getConstellations.ts +0 -0
- package/tests/bdd/steps/universe/getFactions.ts +0 -0
- package/tests/bdd/steps/universe/getGraphicById.ts +0 -0
- package/tests/bdd/steps/universe/getGraphics.ts +0 -0
- package/tests/bdd/steps/universe/getGroupById.ts +0 -0
- package/tests/bdd/steps/universe/getGroups.ts +0 -0
- package/tests/bdd/steps/universe/getMoonById.ts +0 -0
- package/tests/bdd/steps/universe/getMoons.ts +0 -0
- package/tests/bdd/steps/universe/getPlanetById.ts +0 -0
- package/tests/bdd/steps/universe/getPlanets.ts +0 -0
- package/tests/bdd/steps/universe/getRaces.ts +0 -0
- package/tests/bdd/steps/universe/getRegionById.ts +0 -0
- package/tests/bdd/steps/universe/getRegions.ts +0 -0
- package/tests/bdd/steps/universe/getStarById.ts +0 -0
- package/tests/bdd/steps/universe/getStargateById.ts +0 -0
- package/tests/bdd/steps/universe/getStargates.ts +0 -0
- package/tests/bdd/steps/universe/getStars.ts +0 -0
- package/tests/bdd/steps/universe/getStationById.ts +0 -0
- package/tests/bdd/steps/universe/getStations.ts +0 -0
- package/tests/bdd/steps/universe/getStructures.ts +0 -0
- package/tests/bdd/steps/universe/getSystemById.ts +0 -0
- package/tests/bdd/steps/universe/getSystemJumps.ts +0 -0
- package/tests/bdd/steps/universe/getSystemKills.ts +0 -0
- package/tests/bdd/steps/universe/getSystems.ts +0 -0
- package/tests/bdd/steps/universe/getTypeById.ts +0 -0
- package/tests/bdd/steps/universe/getTypes.ts +0 -0
- package/tests/bdd/steps/universe/getWarById.ts +0 -0
- package/tests/bdd/steps/universe/getWars.ts +0 -0
- package/tests/bdd/steps/universe/postBulkIdsToNames.ts +0 -0
- package/tests/bdd/steps/universe/postBulkNamesToIds.ts +0 -0
- package/tests/bdd/steps/universe/postUniverseNames.ts +0 -0
- package/tests/bdd/steps/wars/getWarById.ts +0 -0
- package/tests/bdd/steps/wars/getWars.ts +0 -0
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
import { logInfo, logDebug, logWarn } from '../logger/loggerUtil';
|
|
2
|
+
|
|
3
|
+
export interface CacheEntry {
|
|
4
|
+
etag: string;
|
|
5
|
+
data: any;
|
|
6
|
+
headers: Record<string, string>;
|
|
7
|
+
timestamp: number;
|
|
8
|
+
ttl?: number; // Time to live in milliseconds
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export interface ETagCacheConfig {
|
|
12
|
+
maxEntries?: number;
|
|
13
|
+
defaultTtl?: number; // Default TTL in milliseconds
|
|
14
|
+
cleanupInterval?: number; // Cleanup interval in milliseconds
|
|
15
|
+
persistToStorage?: boolean;
|
|
16
|
+
storageKey?: string;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export class ETagCacheManager {
|
|
20
|
+
private cache: Map<string, CacheEntry> = new Map();
|
|
21
|
+
private config: Required<ETagCacheConfig>;
|
|
22
|
+
private cleanupTimer?: NodeJS.Timeout;
|
|
23
|
+
|
|
24
|
+
constructor(config: ETagCacheConfig = {}) {
|
|
25
|
+
this.config = {
|
|
26
|
+
maxEntries: config.maxEntries ?? 1000,
|
|
27
|
+
defaultTtl: config.defaultTtl ?? 5 * 60 * 1000, // 5 minutes default
|
|
28
|
+
cleanupInterval: config.cleanupInterval ?? 60 * 1000, // 1 minute cleanup
|
|
29
|
+
persistToStorage: config.persistToStorage ?? false,
|
|
30
|
+
storageKey: config.storageKey ?? 'esi-etag-cache'
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
if (this.config.persistToStorage) {
|
|
34
|
+
this.loadFromStorage();
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
this.startCleanupTimer();
|
|
38
|
+
logInfo(`ETag cache manager initialized with ${this.config.maxEntries} max entries`);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Get cached data if ETag matches
|
|
43
|
+
*/
|
|
44
|
+
get(url: string): CacheEntry | null {
|
|
45
|
+
const entry = this.cache.get(url);
|
|
46
|
+
|
|
47
|
+
if (!entry) {
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
// Check if entry has expired
|
|
52
|
+
if (this.isExpired(entry)) {
|
|
53
|
+
this.cache.delete(url);
|
|
54
|
+
logDebug(`Cache entry expired for ${url}`);
|
|
55
|
+
return null;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
logDebug(`Cache hit for ${url} with ETag ${entry.etag}`);
|
|
59
|
+
return entry;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Get ETag for a URL (for If-None-Match header)
|
|
64
|
+
*/
|
|
65
|
+
getETag(url: string): string | null {
|
|
66
|
+
const entry = this.get(url);
|
|
67
|
+
return entry ? entry.etag : null;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Set cache entry
|
|
72
|
+
*/
|
|
73
|
+
set(url: string, etag: string, data: any, headers: Record<string, string>, customTtl?: number): void {
|
|
74
|
+
// Remove oldest entries if cache is full
|
|
75
|
+
if (this.cache.size >= this.config.maxEntries) {
|
|
76
|
+
this.evictOldest();
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
const entry: CacheEntry = {
|
|
80
|
+
etag,
|
|
81
|
+
data,
|
|
82
|
+
headers,
|
|
83
|
+
timestamp: Date.now(),
|
|
84
|
+
ttl: customTtl ?? this.config.defaultTtl
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
this.cache.set(url, entry);
|
|
88
|
+
logDebug(`Cached response for ${url} with ETag ${etag}`);
|
|
89
|
+
|
|
90
|
+
if (this.config.persistToStorage) {
|
|
91
|
+
this.saveToStorage();
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Check if cached data exists and is valid
|
|
97
|
+
*/
|
|
98
|
+
has(url: string): boolean {
|
|
99
|
+
const entry = this.cache.get(url);
|
|
100
|
+
return entry !== undefined && !this.isExpired(entry);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Clear specific cache entry
|
|
105
|
+
*/
|
|
106
|
+
delete(url: string): boolean {
|
|
107
|
+
const deleted = this.cache.delete(url);
|
|
108
|
+
if (deleted && this.config.persistToStorage) {
|
|
109
|
+
this.saveToStorage();
|
|
110
|
+
}
|
|
111
|
+
return deleted;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* Clear all cache entries
|
|
116
|
+
*/
|
|
117
|
+
clear(): void {
|
|
118
|
+
this.cache.clear();
|
|
119
|
+
if (this.config.persistToStorage) {
|
|
120
|
+
this.saveToStorage();
|
|
121
|
+
}
|
|
122
|
+
logInfo('ETag cache cleared');
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* Get cache statistics
|
|
127
|
+
*/
|
|
128
|
+
getStats(): {
|
|
129
|
+
totalEntries: number;
|
|
130
|
+
maxEntries: number;
|
|
131
|
+
hitRate: number;
|
|
132
|
+
oldestEntry: number | null;
|
|
133
|
+
newestEntry: number | null;
|
|
134
|
+
} {
|
|
135
|
+
const entries = Array.from(this.cache.values());
|
|
136
|
+
const timestamps = entries.map(e => e.timestamp);
|
|
137
|
+
|
|
138
|
+
return {
|
|
139
|
+
totalEntries: this.cache.size,
|
|
140
|
+
maxEntries: this.config.maxEntries,
|
|
141
|
+
hitRate: 0, // Would need to track hits/misses for this
|
|
142
|
+
oldestEntry: timestamps.length > 0 ? Math.min(...timestamps) : null,
|
|
143
|
+
newestEntry: timestamps.length > 0 ? Math.max(...timestamps) : null
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* Update cache configuration
|
|
149
|
+
*/
|
|
150
|
+
updateConfig(newConfig: Partial<ETagCacheConfig>): void {
|
|
151
|
+
this.config = { ...this.config, ...newConfig };
|
|
152
|
+
logInfo('ETag cache configuration updated');
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* Cleanup expired entries
|
|
157
|
+
*/
|
|
158
|
+
cleanup(): number {
|
|
159
|
+
const beforeSize = this.cache.size;
|
|
160
|
+
const now = Date.now();
|
|
161
|
+
const expiredKeys: string[] = [];
|
|
162
|
+
|
|
163
|
+
for (const [url, entry] of this.cache.entries()) {
|
|
164
|
+
if (this.isExpired(entry)) {
|
|
165
|
+
expiredKeys.push(url);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
expiredKeys.forEach(key => this.cache.delete(key));
|
|
170
|
+
|
|
171
|
+
const cleanedCount = beforeSize - this.cache.size;
|
|
172
|
+
if (cleanedCount > 0) {
|
|
173
|
+
logDebug(`Cleaned up ${cleanedCount} expired cache entries`);
|
|
174
|
+
if (this.config.persistToStorage) {
|
|
175
|
+
this.saveToStorage();
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
return cleanedCount;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
/**
|
|
183
|
+
* Shutdown cache manager
|
|
184
|
+
*/
|
|
185
|
+
shutdown(): void {
|
|
186
|
+
if (this.cleanupTimer) {
|
|
187
|
+
clearInterval(this.cleanupTimer);
|
|
188
|
+
}
|
|
189
|
+
if (this.config.persistToStorage) {
|
|
190
|
+
this.saveToStorage();
|
|
191
|
+
}
|
|
192
|
+
logInfo('ETag cache manager shut down');
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
private isExpired(entry: CacheEntry): boolean {
|
|
196
|
+
if (!entry.ttl) return false;
|
|
197
|
+
return Date.now() - entry.timestamp > entry.ttl;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
private evictOldest(): void {
|
|
201
|
+
let oldestKey: string | null = null;
|
|
202
|
+
let oldestTime = Infinity;
|
|
203
|
+
|
|
204
|
+
for (const [key, entry] of this.cache.entries()) {
|
|
205
|
+
if (entry.timestamp < oldestTime) {
|
|
206
|
+
oldestTime = entry.timestamp;
|
|
207
|
+
oldestKey = key;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
if (oldestKey) {
|
|
212
|
+
this.cache.delete(oldestKey);
|
|
213
|
+
logDebug(`Evicted oldest cache entry: ${oldestKey}`);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
private startCleanupTimer(): void {
|
|
218
|
+
this.cleanupTimer = setInterval(() => {
|
|
219
|
+
this.cleanup();
|
|
220
|
+
}, this.config.cleanupInterval);
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
private loadFromStorage(): void {
|
|
224
|
+
try {
|
|
225
|
+
if (typeof localStorage !== 'undefined') {
|
|
226
|
+
const stored = localStorage.getItem(this.config.storageKey);
|
|
227
|
+
if (stored) {
|
|
228
|
+
const data = JSON.parse(stored);
|
|
229
|
+
this.cache = new Map(data);
|
|
230
|
+
logInfo(`Loaded ${this.cache.size} entries from storage`);
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
} catch (error) {
|
|
234
|
+
logWarn(`Failed to load cache from storage: ${error}`);
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
private saveToStorage(): void {
|
|
239
|
+
try {
|
|
240
|
+
if (typeof localStorage !== 'undefined') {
|
|
241
|
+
const data = Array.from(this.cache.entries());
|
|
242
|
+
localStorage.setItem(this.config.storageKey, JSON.stringify(data));
|
|
243
|
+
}
|
|
244
|
+
} catch (error) {
|
|
245
|
+
logWarn(`Failed to save cache to storage: ${error}`);
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
export type Factory<T = any> = () => T;
|
|
2
|
+
export type AsyncFactory<T = any> = () => Promise<T>;
|
|
3
|
+
|
|
4
|
+
export interface ContainerConfig {
|
|
5
|
+
enableLogging?: boolean;
|
|
6
|
+
enableCircularDependencyDetection?: boolean;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export class CircularDependencyError extends Error {
|
|
10
|
+
constructor(dependencyChain: string[]) {
|
|
11
|
+
super(`Circular dependency detected: ${dependencyChain.join(' -> ')}`);
|
|
12
|
+
this.name = 'CircularDependencyError';
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export class Container {
|
|
17
|
+
private dependencies = new Map<string, Factory>();
|
|
18
|
+
private singletons = new Map<string, any>();
|
|
19
|
+
private resolutionStack: string[] = [];
|
|
20
|
+
private config: ContainerConfig;
|
|
21
|
+
|
|
22
|
+
constructor(config: ContainerConfig = {}) {
|
|
23
|
+
this.config = {
|
|
24
|
+
enableLogging: false,
|
|
25
|
+
enableCircularDependencyDetection: true,
|
|
26
|
+
...config
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Register a factory function for a dependency
|
|
32
|
+
*/
|
|
33
|
+
register<T>(token: string, factory: Factory<T>, singleton: boolean = false): this {
|
|
34
|
+
if (this.config.enableLogging) {
|
|
35
|
+
console.log(`Registering dependency: ${token} (singleton: ${singleton})`);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
this.dependencies.set(token, factory);
|
|
39
|
+
|
|
40
|
+
if (singleton) {
|
|
41
|
+
// Pre-resolve singleton to catch errors early
|
|
42
|
+
this.resolve<T>(token);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
return this;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Register a singleton dependency
|
|
50
|
+
*/
|
|
51
|
+
registerSingleton<T>(token: string, factory: Factory<T>): this {
|
|
52
|
+
return this.register(token, factory, true);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Register an instance directly as a singleton
|
|
57
|
+
*/
|
|
58
|
+
registerInstance<T>(token: string, instance: T): this {
|
|
59
|
+
this.singletons.set(token, instance);
|
|
60
|
+
return this;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Resolve a dependency by token
|
|
65
|
+
*/
|
|
66
|
+
resolve<T>(token: string): T {
|
|
67
|
+
// Check if it's already a singleton instance
|
|
68
|
+
if (this.singletons.has(token)) {
|
|
69
|
+
return this.singletons.get(token) as T;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// Get the factory
|
|
73
|
+
const factory = this.dependencies.get(token);
|
|
74
|
+
if (!factory) {
|
|
75
|
+
throw new Error(`Dependency '${token}' not found. Available dependencies: ${Array.from(this.dependencies.keys()).join(', ')}`);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
// Check for circular dependencies
|
|
79
|
+
if (this.config.enableCircularDependencyDetection && this.resolutionStack.includes(token)) {
|
|
80
|
+
throw new CircularDependencyError([...this.resolutionStack, token]);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
// Add to resolution stack
|
|
84
|
+
this.resolutionStack.push(token);
|
|
85
|
+
|
|
86
|
+
try {
|
|
87
|
+
const instance = factory();
|
|
88
|
+
|
|
89
|
+
// Store as singleton if it was registered as one
|
|
90
|
+
if (this.isSingleton(token)) {
|
|
91
|
+
this.singletons.set(token, instance);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
return instance as T;
|
|
95
|
+
} finally {
|
|
96
|
+
// Remove from resolution stack
|
|
97
|
+
this.resolutionStack.pop();
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* Check if a dependency is registered
|
|
103
|
+
*/
|
|
104
|
+
has(token: string): boolean {
|
|
105
|
+
return this.dependencies.has(token) || this.singletons.has(token);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* Remove a dependency
|
|
110
|
+
*/
|
|
111
|
+
remove(token: string): boolean {
|
|
112
|
+
const hadDependency = this.dependencies.delete(token);
|
|
113
|
+
const hadSingleton = this.singletons.delete(token);
|
|
114
|
+
return hadDependency || hadSingleton;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* Clear all dependencies
|
|
119
|
+
*/
|
|
120
|
+
clear(): void {
|
|
121
|
+
this.dependencies.clear();
|
|
122
|
+
this.singletons.clear();
|
|
123
|
+
this.resolutionStack = [];
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* Get all registered dependency tokens
|
|
128
|
+
*/
|
|
129
|
+
getRegisteredTokens(): string[] {
|
|
130
|
+
const dependencyTokens = Array.from(this.dependencies.keys());
|
|
131
|
+
const singletonTokens = Array.from(this.singletons.keys());
|
|
132
|
+
return [...new Set([...dependencyTokens, ...singletonTokens])];
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* Create a child container that inherits from this one
|
|
137
|
+
*/
|
|
138
|
+
createChild(): Container {
|
|
139
|
+
const child = new Container(this.config);
|
|
140
|
+
|
|
141
|
+
// Copy dependencies (not instances)
|
|
142
|
+
for (const [token, factory] of this.dependencies) {
|
|
143
|
+
child.dependencies.set(token, factory);
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
return child;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
private isSingleton(token: string): boolean {
|
|
150
|
+
// Check if the token was registered with singleton behavior
|
|
151
|
+
// This is determined by checking if resolve was called during registration
|
|
152
|
+
return false; // For now, we'll manage this manually
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
// Global container instance
|
|
157
|
+
export const container = new Container({
|
|
158
|
+
enableLogging: process.env.NODE_ENV === 'development',
|
|
159
|
+
enableCircularDependencyDetection: true
|
|
160
|
+
});
|
|
161
|
+
|
|
162
|
+
// Dependency injection decorators (if using experimental decorators)
|
|
163
|
+
export function Injectable(token?: string) {
|
|
164
|
+
return function <T extends new (...args: any[]) => {}>(constructor: T) {
|
|
165
|
+
const dependencyToken = token || constructor.name;
|
|
166
|
+
container.register(dependencyToken, () => new constructor());
|
|
167
|
+
return constructor;
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
export function Inject(token: string) {
|
|
172
|
+
return function (target: any, propertyKey: string | symbol | undefined, parameterIndex: number) {
|
|
173
|
+
// This would require reflect-metadata for full implementation
|
|
174
|
+
// For now, it's a placeholder for future enhancement
|
|
175
|
+
};
|
|
176
|
+
}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
export enum ApiErrorType {
|
|
2
|
+
NETWORK_ERROR = 'NETWORK_ERROR',
|
|
3
|
+
AUTHENTICATION_ERROR = 'AUTHENTICATION_ERROR',
|
|
4
|
+
AUTHORIZATION_ERROR = 'AUTHORIZATION_ERROR',
|
|
5
|
+
RATE_LIMIT_ERROR = 'RATE_LIMIT_ERROR',
|
|
6
|
+
SERVER_ERROR = 'SERVER_ERROR',
|
|
7
|
+
CLIENT_ERROR = 'CLIENT_ERROR',
|
|
8
|
+
VALIDATION_ERROR = 'VALIDATION_ERROR',
|
|
9
|
+
NOT_FOUND_ERROR = 'NOT_FOUND_ERROR',
|
|
10
|
+
TIMEOUT_ERROR = 'TIMEOUT_ERROR',
|
|
11
|
+
UNKNOWN_ERROR = 'UNKNOWN_ERROR'
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export class ApiError extends Error {
|
|
15
|
+
public readonly type: ApiErrorType;
|
|
16
|
+
public readonly statusCode?: number;
|
|
17
|
+
public readonly details?: any;
|
|
18
|
+
public readonly timestamp: Date;
|
|
19
|
+
public readonly requestId?: string;
|
|
20
|
+
|
|
21
|
+
constructor(
|
|
22
|
+
message: string,
|
|
23
|
+
type: ApiErrorType = ApiErrorType.UNKNOWN_ERROR,
|
|
24
|
+
statusCode?: number,
|
|
25
|
+
details?: any,
|
|
26
|
+
requestId?: string
|
|
27
|
+
) {
|
|
28
|
+
super(message);
|
|
29
|
+
this.name = 'ApiError';
|
|
30
|
+
this.type = type;
|
|
31
|
+
this.statusCode = statusCode;
|
|
32
|
+
this.details = details;
|
|
33
|
+
this.timestamp = new Date();
|
|
34
|
+
this.requestId = requestId;
|
|
35
|
+
|
|
36
|
+
// Maintains proper stack trace for where our error was thrown (only available on V8)
|
|
37
|
+
if (Error.captureStackTrace) {
|
|
38
|
+
Error.captureStackTrace(this, ApiError);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
static fromHttpStatus(statusCode: number, message: string, details?: any, requestId?: string): ApiError {
|
|
43
|
+
let type: ApiErrorType;
|
|
44
|
+
|
|
45
|
+
switch (Math.floor(statusCode / 100)) {
|
|
46
|
+
case 4:
|
|
47
|
+
if (statusCode === 401) {
|
|
48
|
+
type = ApiErrorType.AUTHENTICATION_ERROR;
|
|
49
|
+
} else if (statusCode === 403) {
|
|
50
|
+
type = ApiErrorType.AUTHORIZATION_ERROR;
|
|
51
|
+
} else if (statusCode === 404) {
|
|
52
|
+
type = ApiErrorType.NOT_FOUND_ERROR;
|
|
53
|
+
} else if (statusCode === 429) {
|
|
54
|
+
type = ApiErrorType.RATE_LIMIT_ERROR;
|
|
55
|
+
} else {
|
|
56
|
+
type = ApiErrorType.CLIENT_ERROR;
|
|
57
|
+
}
|
|
58
|
+
break;
|
|
59
|
+
case 5:
|
|
60
|
+
type = ApiErrorType.SERVER_ERROR;
|
|
61
|
+
break;
|
|
62
|
+
default:
|
|
63
|
+
type = ApiErrorType.UNKNOWN_ERROR;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
return new ApiError(message, type, statusCode, details, requestId);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
static networkError(message: string = 'Network connection failed', details?: any): ApiError {
|
|
70
|
+
return new ApiError(message, ApiErrorType.NETWORK_ERROR, undefined, details);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
static timeoutError(message: string = 'Request timeout', details?: any): ApiError {
|
|
74
|
+
return new ApiError(message, ApiErrorType.TIMEOUT_ERROR, undefined, details);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
static validationError(message: string, details?: any): ApiError {
|
|
78
|
+
return new ApiError(message, ApiErrorType.VALIDATION_ERROR, 400, details);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
toJSON() {
|
|
82
|
+
return {
|
|
83
|
+
name: this.name,
|
|
84
|
+
message: this.message,
|
|
85
|
+
type: this.type,
|
|
86
|
+
statusCode: this.statusCode,
|
|
87
|
+
details: this.details,
|
|
88
|
+
timestamp: this.timestamp.toISOString(),
|
|
89
|
+
requestId: this.requestId,
|
|
90
|
+
stack: this.stack
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
export class ErrorHandler {
|
|
96
|
+
static handle(error: any, requestId?: string): never {
|
|
97
|
+
if (error instanceof ApiError) {
|
|
98
|
+
throw error;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
// Handle Axios/HTTP errors
|
|
102
|
+
if (error.response) {
|
|
103
|
+
const statusCode = error.response.status;
|
|
104
|
+
const message = error.response.data?.error ||
|
|
105
|
+
error.response.data?.message ||
|
|
106
|
+
error.message ||
|
|
107
|
+
`HTTP ${statusCode} Error`;
|
|
108
|
+
|
|
109
|
+
throw ApiError.fromHttpStatus(statusCode, message, error.response.data, requestId);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
// Handle network errors
|
|
113
|
+
if (error.code === 'ECONNREFUSED' || error.code === 'ENOTFOUND' || error.code === 'ECONNRESET') {
|
|
114
|
+
throw ApiError.networkError(`Network error: ${error.message}`, { code: error.code });
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
// Handle timeout errors
|
|
118
|
+
if (error.code === 'ECONNABORTED' || error.message?.includes('timeout')) {
|
|
119
|
+
throw ApiError.timeoutError(`Request timeout: ${error.message}`);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
// Default to unknown error
|
|
123
|
+
throw new ApiError(
|
|
124
|
+
error.message || 'An unknown error occurred',
|
|
125
|
+
ApiErrorType.UNKNOWN_ERROR,
|
|
126
|
+
undefined,
|
|
127
|
+
error,
|
|
128
|
+
requestId
|
|
129
|
+
);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
static isRetryable(error: ApiError): boolean {
|
|
133
|
+
return [
|
|
134
|
+
ApiErrorType.NETWORK_ERROR,
|
|
135
|
+
ApiErrorType.TIMEOUT_ERROR,
|
|
136
|
+
ApiErrorType.SERVER_ERROR,
|
|
137
|
+
ApiErrorType.RATE_LIMIT_ERROR
|
|
138
|
+
].includes(error.type);
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
static getRetryDelay(error: ApiError, attempt: number): number {
|
|
142
|
+
if (error.type === ApiErrorType.RATE_LIMIT_ERROR) {
|
|
143
|
+
// Check for Retry-After header in details
|
|
144
|
+
const retryAfter = error.details?.headers?.['retry-after'];
|
|
145
|
+
if (retryAfter) {
|
|
146
|
+
return parseInt(retryAfter) * 1000; // Convert to milliseconds
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
// Exponential backoff: 1s, 2s, 4s, 8s, etc.
|
|
151
|
+
return Math.min(1000 * Math.pow(2, attempt - 1), 30000); // Max 30 seconds
|
|
152
|
+
}
|
|
153
|
+
}
|