fansunited-sdk-esm 1.41.0 → 1.42.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.
@@ -0,0 +1,4 @@
1
+ import { LocalCacheInterface } from "../Interfaces/GlobalInterfaces";
2
+ export default class LocalCacheInstanceFactory {
3
+ createLocalCacheInstance: (idSchema: string) => LocalCacheInterface;
4
+ }
@@ -1,3 +1,42 @@
1
+ import IdMappingModel from "../../IdMapping/Models/IdMappingModel";
2
+ import CompetitionBasicModel from "../../Namespaces/Football/Models/Competition/CompetitionBasicModel";
3
+ import CompetitionFilters from "../../Namespaces/Football/Models/Competition/CompetitionFilters";
4
+ import FootballCountryModel from "../../Namespaces/Football/Models/Country/FootballCountryModel";
5
+ import ProfileCountryModel from "../../Namespaces/Profile/Models/ProfileCountryModel";
6
+ import ProfileModel from "../../Namespaces/Profile/Models/ProfileModel";
7
+ import ProfileStatsModel from "../../Namespaces/Profile/Models/Stats/ProfileStatsModel";
8
+ import { ExpirationType } from "../LocalStorage";
1
9
  export interface FiltersInterface {
2
10
  constructFiltersUrl?: () => string;
3
11
  }
12
+ export interface LocalCacheInterface {
13
+ clearData: () => void;
14
+ getEntityById: (ids: string | string[], type: string, schema: string) => IdMappingModel;
15
+ getEntity: (ids: string | string[], type: string, schema: string) => IdMappingModel | IdMappingModel[];
16
+ getIdsByType: (typeIdsObj: any, configSchema: string, toSchema: string) => any;
17
+ checkForExistingIdObjs: (idsObj: any, toSchema: string) => any;
18
+ addIdMapping: (idMapping: IdMappingModel) => void;
19
+ addIdMappings: (idMappings: IdMappingModel[]) => void;
20
+ addTopIdMappings: (topIdMappings: IdMappingModel[]) => void;
21
+ setOwnProfile: (profile: ProfileModel) => void;
22
+ getOwnProfile: () => ProfileModel;
23
+ getProfileCountries: () => ProfileCountryModel[];
24
+ setProfileCountries: (countries: ProfileCountryModel[]) => void;
25
+ getProfileStats: () => ProfileStatsModel;
26
+ setProfileStats: (stats: ProfileStatsModel) => void;
27
+ getProfileBadges: () => string[];
28
+ setProfileBadges: (badges: string[]) => void;
29
+ getFootballCountries: () => FootballCountryModel[];
30
+ setFootballCountries: (countries: FootballCountryModel[]) => void;
31
+ getCompetitions: (filters?: CompetitionFilters) => CompetitionBasicModel[];
32
+ setCompetitions: (competitions: CompetitionBasicModel[]) => void;
33
+ getCompetitionsLength: () => number;
34
+ getClientFeatures: () => {
35
+ [key: string]: any;
36
+ };
37
+ setClientFeatures: (features: {
38
+ [key: string]: any;
39
+ }) => void;
40
+ deleteClientFeatures: () => void;
41
+ getExpiration: (namespace: string, type: ExpirationType) => number;
42
+ }
@@ -1,4 +1,3 @@
1
- import SDKConfigurationModel from "../Configurator/Models/SDKConfiguraitonModel";
2
1
  import ProfileModel from "../Namespaces/Profile/Models/ProfileModel";
3
2
  import FootballCountryModel from "../Namespaces/Football/Models/Country/FootballCountryModel";
4
3
  import ProfileCountryModel from "../Namespaces/Profile/Models/ProfileCountryModel";
@@ -6,18 +5,19 @@ import CompetitionBasicModel from "../Namespaces/Football/Models/Competition/Com
6
5
  import CompetitionFilters from "../Namespaces/Football/Models/Competition/CompetitionFilters";
7
6
  import ProfileStatsModel from "../Namespaces/Profile/Models/Stats/ProfileStatsModel";
8
7
  import IdMappingModel from "../IdMapping/Models/IdMappingModel";
9
- export type ExparationType = "profile" | "statistics" | "badges" | "features" | "ids";
10
- export default class LocalStorage {
8
+ import { LocalCacheInterface } from "./Interfaces/GlobalInterfaces";
9
+ export type ExpirationType = "profile" | "statistics" | "badges" | "features" | "ids";
10
+ export default class LocalStorage implements LocalCacheInterface {
11
11
  private idSchema;
12
12
  readonly expirationProfileTimeout: number;
13
13
  readonly expirationBadgesTimeout: number;
14
14
  readonly expirationClientFeaturesTimeout: number;
15
15
  readonly expirationFootballIdsTimeout: number;
16
- constructor(configuration: SDKConfigurationModel);
16
+ constructor(idSchema: string);
17
17
  clearData: () => void;
18
18
  getEntityById: (type?: string, id?: string) => any;
19
19
  getEntity: (ids: string | string[], type: string, schema: string) => any;
20
- getEntityByNativeId: (type?: string, id?: string) => any;
20
+ private getEntityByNativeId;
21
21
  /**
22
22
  * Returns the ids as object {id: <entity id>, exists: true/false};
23
23
  * @param idsObj
@@ -50,7 +50,7 @@ export default class LocalStorage {
50
50
  [key: string]: any;
51
51
  }) => void;
52
52
  deleteClientFeatures: () => void;
53
- getExpiration: (namespace: string, type: ExparationType) => number;
53
+ getExpiration: (namespace: string, type: ExpirationType) => number;
54
54
  /**
55
55
  * The purpose of this method is to avoid the posibility of having same competitions store in Local Storage.
56
56
  * @param competitions Cached competitions.
@@ -0,0 +1,51 @@
1
+ import { LocalCacheInterface } from "./Interfaces/GlobalInterfaces";
2
+ import ProfileModel from "../Namespaces/Profile/Models/ProfileModel";
3
+ import IdMappingModel from "../IdMapping/Models/IdMappingModel";
4
+ import CompetitionBasicModel from "../Namespaces/Football/Models/Competition/CompetitionBasicModel";
5
+ import FootballCountryModel from "../Namespaces/Football/Models/Country/FootballCountryModel";
6
+ import ProfileStatsModel from "../Namespaces/Profile/Models/Stats/ProfileStatsModel";
7
+ import ProfileCountryModel from "../Namespaces/Profile/Models/ProfileCountryModel";
8
+ import { ExpirationType } from "./LocalStorage";
9
+ import CompetitionFilters from "../Namespaces/Football/Models/Competition/CompetitionFilters";
10
+ /**
11
+ * TODO: As for now all data that is fetched from the memory cache has to be cast to concrete type.
12
+ * There is an open PR with a solution to set the value type of the NodeCache class.
13
+ * https://github.com/node-cache/node-cache/issues/273
14
+ */
15
+ export default class ServerSideCache implements LocalCacheInterface {
16
+ private static instance;
17
+ private static nodeCache;
18
+ private readonly profileTTL;
19
+ private readonly clientTTL;
20
+ private readonly profileBadgesTTL;
21
+ private idMappingsExpiration;
22
+ private idSchema;
23
+ private constructor();
24
+ static getInstance(idSchema: string): ServerSideCache;
25
+ clearData: () => void;
26
+ getEntityById: (type: string, id: string) => IdMappingModel;
27
+ getEntity: (ids: string | string[], type: string, schema: string) => IdMappingModel | IdMappingModel[];
28
+ checkForExistingIdObjs: (idsObj: any, toSchema: string) => {};
29
+ getIdsByType: (typeIdsObj: any, configSchema: string, toSchema: string) => {};
30
+ addIdMapping: (idMapping: IdMappingModel) => void;
31
+ addIdMappings: (idMappings: IdMappingModel[]) => void;
32
+ addTopIdMappings: (topIdMappings: IdMappingModel[]) => void;
33
+ setOwnProfile: (profile: ProfileModel) => boolean;
34
+ getOwnProfile: () => ProfileModel;
35
+ getProfileCountries: () => ProfileCountryModel[];
36
+ setProfileCountries: (profileCountries: ProfileCountryModel[]) => boolean;
37
+ getProfileStats: () => ProfileStatsModel;
38
+ setProfileStats: (profileStats: ProfileStatsModel) => boolean;
39
+ getProfileBadges: () => string[];
40
+ setProfileBadges: (badges: string[]) => void;
41
+ getFootballCountries: () => FootballCountryModel[];
42
+ setFootballCountries: (footballCountries: FootballCountryModel[]) => boolean;
43
+ getCompetitions: (filters?: CompetitionFilters) => any[];
44
+ setCompetitions: (competitions: CompetitionBasicModel[]) => boolean;
45
+ getCompetitionsLength: () => number;
46
+ getClientFeatures: () => unknown;
47
+ setClientFeatures: (features: Object) => boolean;
48
+ deleteClientFeatures: () => number;
49
+ getExpiration: (namespace: string, type: ExpirationType) => number;
50
+ private getKeyFromExpirationType;
51
+ }
@@ -1,11 +1,10 @@
1
1
  import SDKConfigurationModel from "../Configurator/Models/SDKConfiguraitonModel";
2
2
  export default class IdMappingFacade {
3
- private isBrowser;
4
- private localStorage;
3
+ private localCache;
5
4
  private https;
6
5
  constructor(configuration: SDKConfigurationModel);
7
6
  getEntitiesByIds: (idsObj: any, configSchema?: string, toSchema?: string) => Promise<any>;
8
- getEntityById: (ids: string | string[], type: string, schemaId: string) => Promise<any>;
7
+ getEntityById: (ids: string | string[], type: string, schemaId: string) => Promise<any[] | import("./Models/IdMappingModel").default>;
9
8
  /**
10
9
  * Checks ids if they exist in the local storage, this function requires the already checked ids object
11
10
  * @param checkedIdsObj
@@ -4,7 +4,7 @@ export default class IdMappingService {
4
4
  readonly idSchema: string;
5
5
  readonly idMappingFacade: IdMappingFacade;
6
6
  constructor(configuration: SDKConfigurationModel);
7
- getEntityIdBySchemaId: (type: string, id: string) => Promise<any>;
7
+ getEntityIdBySchemaId: (type: string, id: string) => Promise<any[] | import("./Models/IdMappingModel").default>;
8
8
  remapEntities: (entities: any, type: string) => Promise<any>;
9
9
  getEntityIdsBySchemaId: (ids: string[], type: string, toSchema?: string) => Promise<any>;
10
10
  }
@@ -1,15 +1,14 @@
1
- import LocalStorage from "../../../Global/LocalStorage";
2
1
  import FootballHttps from "../../../Https/FootballHttps";
3
2
  import IdMappingService from "../../../IdMapping/IdMappingService";
4
3
  import CompetitionBasicModel from "../Models/Competition/CompetitionBasicModel";
5
4
  import CompetitionFullModel from "../Models/Competition/CompetitionFullModel";
6
5
  import CompetitionFilters from "../Models/Competition/CompetitionFilters";
6
+ import { LocalCacheInterface } from "../../../Global/Interfaces/GlobalInterfaces";
7
7
  export default class CompetitionsFacade {
8
- private isBrowser;
9
8
  private localStorage;
10
9
  private https;
11
10
  private idMapping;
12
- constructor(localStorage: LocalStorage, https: FootballHttps, idMapping: IdMappingService);
11
+ constructor(localStorage: LocalCacheInterface, https: FootballHttps, idMapping: IdMappingService);
13
12
  getCompetitionsIdMapping: (filters?: CompetitionFilters, disableCache?: boolean) => Promise<CompetitionBasicModel[]>;
14
13
  getCompetitionsMapWithNativeIds: (competitionIds: string[]) => Promise<Map<string, CompetitionBasicModel>>;
15
14
  private getCompetitions;
@@ -1,13 +1,12 @@
1
- import LocalStorage from "../../../Global/LocalStorage";
1
+ import { LocalCacheInterface } from "../../../Global/Interfaces/GlobalInterfaces";
2
2
  import FootballHttps from "../../../Https/FootballHttps";
3
3
  import IdMappingService from "../../../IdMapping/IdMappingService";
4
4
  import FootballCountryModel from "../Models/Country/FootballCountryModel";
5
5
  export default class CountriesFacade {
6
- private isBrowser;
7
- private localStorage;
6
+ private localCache;
8
7
  private https;
9
8
  private idMapping;
10
- constructor(localStorage: LocalStorage, https: FootballHttps, idMapping: IdMappingService);
9
+ constructor(localCache: LocalCacheInterface, https: FootballHttps, idMapping: IdMappingService);
11
10
  getCountriesWithIdMapping: (disableCache?: boolean) => Promise<FootballCountryModel[]>;
12
11
  private getCountries;
13
12
  }
@@ -1,4 +1,3 @@
1
- import LocalStorage from "../../../Global/LocalStorage";
2
1
  import FootballHttps from "../../../Https/FootballHttps";
3
2
  import IdMappingService from "../../../IdMapping/IdMappingService";
4
3
  import CompetitionsFacade from "./CompetitionsFacade";
@@ -21,6 +20,7 @@ import SearchFilters from "../Models/Search/SearchFilters";
21
20
  import FootballPaginationModel from "../Models/Pagination/FootballPaginationModel";
22
21
  import SDKConfigurationModel from "../../../Configurator/Models/SDKConfiguraitonModel";
23
22
  import PlayerBasicModel from "../Models/Player/PlayerBasicModel";
23
+ import { LocalCacheInterface } from "../../../Global/Interfaces/GlobalInterfaces";
24
24
  export default class FootballFacade {
25
25
  private countriesFacade;
26
26
  competitionsFacade: CompetitionsFacade;
@@ -28,7 +28,7 @@ export default class FootballFacade {
28
28
  playerFacade: PlayerFacade;
29
29
  private matchFacade;
30
30
  private searchFacade;
31
- constructor(config: SDKConfigurationModel, localStorage: LocalStorage, https: FootballHttps, idMapping: IdMappingService);
31
+ constructor(config: SDKConfigurationModel, localCache: LocalCacheInterface, https: FootballHttps, idMapping: IdMappingService);
32
32
  getCountries: (disableCache?: boolean) => Promise<FootballCountryModel[]>;
33
33
  getCompetitions: (filters?: CompetitionFilters, disableCache?: boolean) => Promise<CompetitionBasicModel[]>;
34
34
  getCompetitionById: (id: string, disableCache?: boolean) => Promise<CompetitionFullModel>;
@@ -18,7 +18,7 @@ import FootballPaginationModel from "./Models/Pagination/FootballPaginationModel
18
18
  export default class Football {
19
19
  private https;
20
20
  private idMapping;
21
- private localStorage;
21
+ private localCache;
22
22
  footballFacade: FootballFacade;
23
23
  constructor(config: SDKConfigurationModel);
24
24
  getCountries: (disableCache?: boolean) => Promise<FootballCountryModel[]>;
@@ -8,13 +8,13 @@ import { FeaturesConfigModels } from "../../../Global/Types/GlobalTypes";
8
8
  import RankingsFilters from "../Models/Filters/RankingsFilters";
9
9
  import FootballPaginationModel from "../../Football/Models/Pagination/FootballPaginationModel";
10
10
  import ProfileHttps from "../../../Https/ProfileHttps";
11
- import LocalStorage from "../../../Global/LocalStorage";
12
11
  import HighestSuccessRateModel from "../Models/HighestSuccessRate/HighestSuccessRateModel";
13
12
  import ContestWinners from "../../TopX/Models/Games/Winners/ContestWinners";
14
13
  import EntitiesFollowsFilters from "../Models/Filters/EntitiesFollowsFilters";
15
14
  import EntitiesFollows from "../Models/EntitiesFollows/EntitiesFollows";
16
15
  import TemplateByIdModel from "../Models/Template/TemplateByIdModel";
17
16
  import HighestSuccessRateFilters from "../Models/Filters/HighestSuccessRateFilters";
17
+ import { LocalCacheInterface } from "../../../Global/Interfaces/GlobalInterfaces";
18
18
  export default class LoyaltyFacade {
19
19
  private config;
20
20
  private clientHttps;
@@ -27,7 +27,7 @@ export default class LoyaltyFacade {
27
27
  private matchQuizFacade;
28
28
  private predictorHttps;
29
29
  private errorHandlingMode;
30
- constructor(config: SDKConfigurationModel, clientHttps: ClientHttps, loyaltyHttps: LoyaltyHttps, profileHttps: ProfileHttps, localStorage: LocalStorage);
30
+ constructor(config: SDKConfigurationModel, clientHttps: ClientHttps, loyaltyHttps: LoyaltyHttps, profileHttps: ProfileHttps, localCache: LocalCacheInterface);
31
31
  getConfig: () => Promise<FeaturesConfigModels>;
32
32
  getClientBadges: () => Promise<ClientBadges>;
33
33
  getTemplates: (disableCache?: boolean) => Promise<PaginationModel>;
@@ -15,7 +15,7 @@ export default class Loyalty {
15
15
  private profileHttps;
16
16
  private loyaltyHttps;
17
17
  private loyaltyFacade;
18
- private localStorage;
18
+ private localCache;
19
19
  constructor(config: SDKConfigurationModel);
20
20
  getConfig: () => Promise<FeaturesConfigModels>;
21
21
  getClientBadges: () => Promise<ClientBadges>;
@@ -1,4 +1,3 @@
1
- import LocalStorage from "../../../Global/LocalStorage";
2
1
  import ProfileHttps from "../../../Https/ProfileHttps";
3
2
  import FollowingModel from "../Models/Following/FollowingModel";
4
3
  import InterestModel from "../Models/InterestModel";
@@ -10,11 +9,12 @@ import ProfileStatsModel from "../Models/Stats/ProfileStatsModel";
10
9
  import ActivityHttps from "../../../Https/ActivityHttps";
11
10
  import SDKIdsRemapper from "../../../Remapper/SDKIdsRemapper";
12
11
  import { ErrorHandlingModeType } from "../../../Configurator/Types/ConfiguratorTypes";
12
+ import { LocalCacheInterface } from "../../../Global/Interfaces/GlobalInterfaces";
13
13
  export default class OwnProfileBuilder {
14
14
  private idsRemapper;
15
15
  private profileHttps;
16
16
  private profileService;
17
- private localStorage;
17
+ private localCache;
18
18
  private profileFacade;
19
19
  private ownProfile;
20
20
  private modified;
@@ -22,7 +22,7 @@ export default class OwnProfileBuilder {
22
22
  private promises;
23
23
  private isFetching;
24
24
  private errorHandlingMode;
25
- constructor(idsRemapper: SDKIdsRemapper, localStorage: LocalStorage, profileHttps: ProfileHttps, activityHttps: ActivityHttps, errorHandlingMode: ErrorHandlingModeType);
25
+ constructor(idsRemapper: SDKIdsRemapper, localCache: LocalCacheInterface, profileHttps: ProfileHttps, activityHttps: ActivityHttps, errorHandlingMode: ErrorHandlingModeType);
26
26
  private getOwnProfile;
27
27
  private delay;
28
28
  private setOwnProfile;
@@ -1,4 +1,3 @@
1
- import LocalStorage from "../../../Global/LocalStorage";
2
1
  import PaginationModel from "../../../Global/Models/Pagination/PaginationModel";
3
2
  import SDKIdsRemapper from "../../../Remapper/SDKIdsRemapper";
4
3
  import ActivityHttps from "../../../Https/ActivityHttps";
@@ -8,13 +7,14 @@ import FullnessProfile from "../Models/FullnessProfile/FullnessProfile";
8
7
  import InterestModel from "../Models/InterestModel";
9
8
  import ProfileModel from "../Models/ProfileModel";
10
9
  import ProfileStatsModel from "../Models/Stats/ProfileStatsModel";
10
+ import { LocalCacheInterface } from "../../../Global/Interfaces/GlobalInterfaces";
11
11
  export default class ProfileBuilder {
12
12
  private idsRemapper;
13
13
  private profileHttps;
14
14
  private activityHttps;
15
15
  private profileFacade;
16
16
  private profileId;
17
- constructor(idsRemapper: SDKIdsRemapper, localStorage: LocalStorage, profileHttps: ProfileHttps, activityHttps: ActivityHttps);
17
+ constructor(idsRemapper: SDKIdsRemapper, localCache: LocalCacheInterface, profileHttps: ProfileHttps, activityHttps: ActivityHttps);
18
18
  setId: (id: string) => this;
19
19
  private getProfile;
20
20
  getInfo: () => Promise<ProfileModel>;
@@ -1,4 +1,3 @@
1
- import LocalStorage from "../../../Global/LocalStorage";
2
1
  import ProfileHttps from "../../../Https/ProfileHttps";
3
2
  import ProfileModel from "../Models/ProfileModel";
4
3
  import ProfileCountryModel from "../Models/ProfileCountryModel";
@@ -8,12 +7,12 @@ import PaginationModel from "../../../Global/Models/Pagination/PaginationModel";
8
7
  import ProfileStatsModel from "../Models/Stats/ProfileStatsModel";
9
8
  import ActivityHttps from "../../../Https/ActivityHttps";
10
9
  import FollowingModel from "../Models/Following/FollowingModel";
10
+ import { LocalCacheInterface } from "../../../Global/Interfaces/GlobalInterfaces";
11
11
  export default class ProfileFacade {
12
- private isBrowser;
13
- private localStorage;
12
+ private localCache;
14
13
  private profileHttps;
15
14
  private activityHttps;
16
- constructor(localStorage: LocalStorage, profileHttps: ProfileHttps, activityHttps?: ActivityHttps);
15
+ constructor(localCache: LocalCacheInterface, profileHttps: ProfileHttps, activityHttps?: ActivityHttps);
17
16
  getOwn: () => Promise<ProfileModel>;
18
17
  updateOwnProfile: () => Promise<ProfileModel>;
19
18
  getByIds: (ids: string[], disableCache?: boolean) => Promise<ProfileModel[]>;
@@ -8,7 +8,7 @@ export default class Profile {
8
8
  private footballHttps;
9
9
  private footballFacade;
10
10
  private idMapping;
11
- private localStorage;
11
+ private localCache;
12
12
  private profileFacade;
13
13
  private ownProfileBuilder;
14
14
  private profileBuilder;