@studyportals/fawkes 6.0.1-1 → 6.0.1-3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. package/dist/sitemap-generator-seo/index.d.ts +13 -13
  2. package/dist/sitemap-generator-seo/index.js +4 -5
  3. package/dist/src/common/ISitemapDependencies.d.ts +0 -2
  4. package/dist/src/common/ISitemapUrlGenerator.d.ts +1 -1
  5. package/dist/src/organisations/types/IOrganisationsSitemapDependencies.d.ts +2 -0
  6. package/dist/src/programmes/ProgrammesBaseIndexabilityPolicy.d.ts +4 -1
  7. package/dist/src/programmes/policies/Area.d.ts +2 -0
  8. package/dist/src/programmes/policies/Area.js +1 -0
  9. package/dist/src/programmes/policies/Attendance.d.ts +2 -0
  10. package/dist/src/programmes/policies/Attendance.js +1 -0
  11. package/dist/src/programmes/policies/AttendanceDegree.d.ts +2 -0
  12. package/dist/src/programmes/policies/AttendanceDegree.js +1 -0
  13. package/dist/src/programmes/policies/Continent.d.ts +2 -0
  14. package/dist/src/programmes/policies/Continent.js +1 -0
  15. package/dist/src/programmes/policies/ContinentTuitionFee.d.ts +2 -0
  16. package/dist/src/programmes/policies/ContinentTuitionFee.js +1 -0
  17. package/dist/src/programmes/policies/Country.d.ts +2 -0
  18. package/dist/src/programmes/policies/Country.js +1 -0
  19. package/dist/src/programmes/policies/CountryAttendance.d.ts +2 -0
  20. package/dist/src/programmes/policies/CountryAttendance.js +1 -0
  21. package/dist/src/programmes/policies/CountryAttendanceDegree.d.ts +2 -0
  22. package/dist/src/programmes/policies/CountryAttendanceDegree.js +1 -0
  23. package/dist/src/programmes/policies/CountryDegree.d.ts +2 -0
  24. package/dist/src/programmes/policies/CountryDegree.js +1 -0
  25. package/dist/src/programmes/policies/CountryDuration.d.ts +2 -0
  26. package/dist/src/programmes/policies/CountryDuration.js +1 -0
  27. package/dist/src/programmes/policies/CountryDurationDegree.d.ts +2 -0
  28. package/dist/src/programmes/policies/CountryDurationDegree.js +1 -0
  29. package/dist/src/programmes/policies/CountryEducationalForm.d.ts +2 -0
  30. package/dist/src/programmes/policies/CountryEducationalForm.js +1 -0
  31. package/dist/src/programmes/policies/CountryFormat.d.ts +2 -0
  32. package/dist/src/programmes/policies/CountryFormat.js +1 -0
  33. package/dist/src/programmes/policies/CountryTuitionFee.d.ts +2 -0
  34. package/dist/src/programmes/policies/CountryTuitionFee.js +1 -0
  35. package/dist/src/programmes/policies/Discipline.d.ts +2 -0
  36. package/dist/src/programmes/policies/Discipline.js +1 -0
  37. package/dist/src/programmes/policies/DisciplineArea.d.ts +2 -0
  38. package/dist/src/programmes/policies/DisciplineArea.js +1 -0
  39. package/dist/src/programmes/policies/DisciplineAttendance.d.ts +2 -0
  40. package/dist/src/programmes/policies/DisciplineAttendance.js +1 -0
  41. package/dist/src/programmes/policies/DisciplineContinent.d.ts +2 -0
  42. package/dist/src/programmes/policies/DisciplineContinent.js +1 -0
  43. package/dist/src/programmes/policies/DisciplineCountry.d.ts +2 -0
  44. package/dist/src/programmes/policies/DisciplineCountry.js +1 -0
  45. package/dist/src/programmes/policies/DisciplineCountryDegree.d.ts +2 -0
  46. package/dist/src/programmes/policies/DisciplineCountryDegree.js +1 -0
  47. package/dist/src/programmes/policies/DisciplineCountryEducationalForm.d.ts +2 -0
  48. package/dist/src/programmes/policies/DisciplineCountryEducationalForm.js +1 -0
  49. package/dist/src/programmes/policies/DisciplineDegree.d.ts +2 -0
  50. package/dist/src/programmes/policies/DisciplineDegree.js +1 -0
  51. package/dist/src/programmes/policies/DisciplineDuration.d.ts +2 -0
  52. package/dist/src/programmes/policies/DisciplineDuration.js +1 -0
  53. package/dist/src/programmes/policies/DisciplineEducationalForm.d.ts +2 -0
  54. package/dist/src/programmes/policies/DisciplineEducationalForm.js +1 -0
  55. package/dist/src/programmes/policies/DisciplineFormat.d.ts +2 -0
  56. package/dist/src/programmes/policies/DisciplineFormat.js +1 -0
  57. package/dist/src/programmes/policies/DisciplineTuitionFee.d.ts +2 -0
  58. package/dist/src/programmes/policies/DisciplineTuitionFee.js +1 -0
  59. package/dist/src/programmes/policies/DisciplineTuitionFeeAttendance.d.ts +2 -0
  60. package/dist/src/programmes/policies/DisciplineTuitionFeeAttendance.js +1 -0
  61. package/dist/src/programmes/policies/SpecialProgrammes.d.ts +2 -0
  62. package/dist/src/programmes/policies/SpecialProgrammes.js +1 -0
  63. package/dist/src/programmes/policies/TuitionFee.d.ts +2 -0
  64. package/dist/src/programmes/policies/TuitionFee.js +1 -0
  65. package/dist/src/programmes/policies/Unfiltered.d.ts +1 -0
  66. package/dist/src/programmes/policies/Unfiltered.js +1 -0
  67. package/dist/src/programmes/types/IProgrammeSearchSitemapDependencies.d.ts +4 -4
  68. package/dist/src/programmes/types/IProgrammeSitemapUrlGenerator.d.ts +5 -0
  69. package/dist/src/programmes/types/IProgrammeSitemapUrlGenerator.js +1 -0
  70. package/dist/src/scholarships/policies/Area.d.ts +2 -2
  71. package/dist/src/scholarships/policies/Country.d.ts +2 -2
  72. package/dist/src/scholarships/policies/Discipline.d.ts +2 -2
  73. package/dist/src/scholarships/policies/DisciplineCountry.d.ts +2 -2
  74. package/dist/src/scholarships/policies/Unfiltered.d.ts +2 -2
  75. package/dist/src/scholarships/policies/UniversityCountry.d.ts +2 -2
  76. package/dist/src/scholarships/types/IScholarshipSeoDependencies.d.ts +3 -0
  77. package/dist/src/scholarships/types/IScholarshipSeoDependencies.js +1 -0
  78. package/dist/src/scholarships/types/IScholarshipSitemapDependencies.d.ts +5 -0
  79. package/dist/src/scholarships/types/IScholarshipSitemapDependencies.js +1 -0
  80. package/dist/src/sitemap-generator/IPageNumberProvider.d.ts +3 -0
  81. package/dist/src/sitemap-generator/IPageNumberProvider.js +1 -0
  82. package/dist/src/sitemap-generator/ProgrammesSitemapUrlGeneratorManager.d.ts +7 -4
  83. package/dist/src/sitemap-generator/ProgrammesSitemapUrlGeneratorManager.js +25 -4
  84. package/package.json +2 -2
@@ -1,13 +1,13 @@
1
- import { IOrganisationsClient } from '../src/sitemap-generator/IOrganisationsClient';
2
- import { IOrganisation } from '../src/sitemap-generator/IOrganisation';
3
- import { IRankingApiClient } from '../src/sitemap-generator/IRankingApiClient';
4
- import { ISearchApiClient } from '../src/sitemap-generator/ISearchApiClient';
5
- import { ISitemapUrlGeneratorManager } from '../src/sitemap-generator/ISitemapUrlGeneratorManager';
6
- import { OrganisationsSitemapUrlGeneratorManager } from '../src/sitemap-generator/OrganisationsSitemapUrlGeneratorManager';
7
- import { ScholarshipsSitemapUrlGeneratorManager } from '../src/sitemap-generator/ScholarshipsSitemapUrlGeneratorManager';
8
- import { ProgrammesSitemapUrlGeneratorManager } from '../src/sitemap-generator/ProgrammesSitemapUrlGeneratorManager';
9
- import { FilterCombinations } from '../src/enums/FilterCombinations';
10
- import { ISitemapUrlGenerator } from '../src/common/ISitemapUrlGenerator';
11
- import { FilterKeyValuesMap } from '../src/common/FilterKeyValuesMap';
12
- import { IPresenter } from '../src/common';
13
- export { IOrganisationsClient, IOrganisation, IRankingApiClient, ISearchApiClient, ISitemapUrlGeneratorManager, OrganisationsSitemapUrlGeneratorManager, ScholarshipsSitemapUrlGeneratorManager, ProgrammesSitemapUrlGeneratorManager, FilterCombinations, ISitemapUrlGenerator, FilterKeyValuesMap, IPresenter };
1
+ export { IOrganisationsClient } from '../src/sitemap-generator/IOrganisationsClient';
2
+ export { IOrganisation } from '../src/sitemap-generator/IOrganisation';
3
+ export { IRankingApiClient } from '../src/sitemap-generator/IRankingApiClient';
4
+ export { ISearchApiClient } from '../src/sitemap-generator/ISearchApiClient';
5
+ export { ISitemapUrlGeneratorManager } from '../src/sitemap-generator/ISitemapUrlGeneratorManager';
6
+ export { OrganisationsSitemapUrlGeneratorManager } from '../src/sitemap-generator/OrganisationsSitemapUrlGeneratorManager';
7
+ export { ScholarshipsSitemapUrlGeneratorManager } from '../src/sitemap-generator/ScholarshipsSitemapUrlGeneratorManager';
8
+ export { ProgrammesSitemapUrlGeneratorManager } from '../src/sitemap-generator/ProgrammesSitemapUrlGeneratorManager';
9
+ export { FilterCombinations } from '../src/enums/FilterCombinations';
10
+ export { ISitemapUrlGenerator } from '../src/common/ISitemapUrlGenerator';
11
+ export { FilterKeyValuesMap } from '../src/common/FilterKeyValuesMap';
12
+ export { IPresenter } from '../src/common';
13
+ export { IProgrammeSitemapUrlGenerator } from '../src/programmes/types/IProgrammeSitemapUrlGenerator';
@@ -1,5 +1,4 @@
1
- import { OrganisationsSitemapUrlGeneratorManager } from '../src/sitemap-generator/OrganisationsSitemapUrlGeneratorManager';
2
- import { ScholarshipsSitemapUrlGeneratorManager } from '../src/sitemap-generator/ScholarshipsSitemapUrlGeneratorManager';
3
- import { ProgrammesSitemapUrlGeneratorManager } from '../src/sitemap-generator/ProgrammesSitemapUrlGeneratorManager';
4
- import { FilterCombinations } from '../src/enums/FilterCombinations';
5
- export { OrganisationsSitemapUrlGeneratorManager, ScholarshipsSitemapUrlGeneratorManager, ProgrammesSitemapUrlGeneratorManager, FilterCombinations };
1
+ export { OrganisationsSitemapUrlGeneratorManager } from '../src/sitemap-generator/OrganisationsSitemapUrlGeneratorManager';
2
+ export { ScholarshipsSitemapUrlGeneratorManager } from '../src/sitemap-generator/ScholarshipsSitemapUrlGeneratorManager';
3
+ export { ProgrammesSitemapUrlGeneratorManager } from '../src/sitemap-generator/ProgrammesSitemapUrlGeneratorManager';
4
+ export { FilterCombinations } from '../src/enums/FilterCombinations';
@@ -1,7 +1,5 @@
1
1
  import { IDependencies } from '../common/IDependencies';
2
2
  import { ISearchApiClient } from '../sitemap-generator/ISearchApiClient';
3
- import { IOrganisationsClient } from '../sitemap-generator/IOrganisationsClient';
4
3
  export interface ISitemapDependencies extends IDependencies {
5
4
  searchApiClient: ISearchApiClient;
6
- organisationsClient: IOrganisationsClient;
7
5
  }
@@ -1,7 +1,7 @@
1
1
  import { FilterCombinations } from '../enums/FilterCombinations';
2
2
  import { IRule } from './IRule';
3
3
  export interface ISitemapUrlGenerator {
4
- filterCombination: FilterCombinations;
4
+ readonly filterCombination: FilterCombinations;
5
5
  generateSitemapUrls(): Promise<string[]>;
6
6
  getAllRules(): IRule[];
7
7
  }
@@ -1,7 +1,9 @@
1
1
  import { ISitemapDependencies } from '../../common/ISitemapDependencies';
2
2
  import { IRankingApiClient } from '../../sitemap-generator/IRankingApiClient';
3
3
  import { PortalType } from '@studyportals/domain-client';
4
+ import { IOrganisationsClient } from '../../sitemap-generator/IOrganisationsClient';
4
5
  export interface IOrganisationsSitemapDependencies extends ISitemapDependencies {
6
+ organisationsClient: IOrganisationsClient;
5
7
  portalType: PortalType;
6
8
  rankingApiClient: IRankingApiClient;
7
9
  }
@@ -1,5 +1,8 @@
1
1
  import { BaseSeoIndexabilityPolicy } from '../common/policies/BaseSeoIndexabilityPolicy';
2
2
  import { IProgrammeSeoDependencies } from './types/IProgrammeSeoDependencies';
3
- export declare abstract class ProgrammesBaseIndexabilityPolicy extends BaseSeoIndexabilityPolicy<IProgrammeSeoDependencies> {
3
+ import { IProgrammeSitemapUrlGenerator } from './types/IProgrammeSitemapUrlGenerator';
4
+ import { FilterKey } from '@studyportals/search-filters';
5
+ export declare abstract class ProgrammesBaseIndexabilityPolicy extends BaseSeoIndexabilityPolicy<IProgrammeSeoDependencies> implements IProgrammeSitemapUrlGenerator {
6
+ abstract readonly filterKeys: FilterKey[];
4
7
  protected initateBaseRules(): void;
5
8
  }
@@ -1,3 +1,4 @@
1
+ import { FilterKey } from '@studyportals/search-filters';
1
2
  import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
2
3
  import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
3
4
  import { FilterCombinations } from '../../enums/FilterCombinations';
@@ -6,6 +7,7 @@ import { IProgrammeSeoDependencies } from '../types/IProgrammeSeoDependencies';
6
7
  export declare class Area extends ProgrammesBaseIndexabilityPolicy {
7
8
  readonly name: string;
8
9
  readonly description: string;
10
+ readonly filterKeys: FilterKey[];
9
11
  protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule)[];
10
12
  constructor(dependencies: IProgrammeSeoDependencies);
11
13
  protected generateUrls(): Promise<string[]>;
@@ -7,6 +7,7 @@ import { AreaPresenter } from '../../presenters/AreaPresenter';
7
7
  export class Area extends ProgrammesBaseIndexabilityPolicy {
8
8
  name = 'Area Policy';
9
9
  description = 'Controls indexing of pages filtered by geographic areas.';
10
+ filterKeys = [FilterKey.AREA];
10
11
  rules = [
11
12
  new SingleValueSelectedForFilterRule(FilterKey.AREA),
12
13
  new SingleValueSelectedForFilterRule(FilterKey.COUNTRY),
@@ -1,3 +1,4 @@
1
+ import { FilterKey } from '@studyportals/search-filters';
1
2
  import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
2
3
  import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
3
4
  import { FilterCombinations } from '../../enums/FilterCombinations';
@@ -7,6 +8,7 @@ import { IProgrammeSeoDependencies } from '../types/IProgrammeSeoDependencies';
7
8
  export declare class Attendance extends ProgrammesBaseIndexabilityPolicy {
8
9
  readonly name: string;
9
10
  readonly description: string;
11
+ readonly filterKeys: FilterKey[];
10
12
  protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule | OnlineAttendanceRule)[];
11
13
  constructor(dependencies: IProgrammeSeoDependencies);
12
14
  protected generateUrls(): Promise<string[]>;
@@ -8,6 +8,7 @@ import { AttendancePresenter } from '../../presenters/AttendancePresenter';
8
8
  export class Attendance extends ProgrammesBaseIndexabilityPolicy {
9
9
  name = 'Attendance Policy';
10
10
  description = 'Determines indexing rules for pages filtered by study format (online, on-campus, etc.).';
11
+ filterKeys = [FilterKey.DELIVERY_METHOD];
11
12
  rules = [
12
13
  new SingleValueSelectedForFilterRule(FilterKey.DELIVERY_METHOD),
13
14
  new OnlyFiltersSelectedRule([FilterKey.DELIVERY_METHOD]),
@@ -1,3 +1,4 @@
1
+ import { FilterKey } from '@studyportals/search-filters';
1
2
  import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
2
3
  import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
3
4
  import { FilterCombinations } from '../../enums/FilterCombinations';
@@ -8,6 +9,7 @@ import { IProgrammeSeoDependencies } from '../types/IProgrammeSeoDependencies';
8
9
  export declare class AttendanceDegree extends ProgrammesBaseIndexabilityPolicy {
9
10
  readonly name: string;
10
11
  readonly description: string;
12
+ readonly filterKeys: FilterKey[];
11
13
  protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule | OnlineAttendanceRule | IndexableDegreeRule)[];
12
14
  constructor(dependencies: IProgrammeSeoDependencies);
13
15
  protected generateUrls(): Promise<string[]>;
@@ -10,6 +10,7 @@ import { DegreePresenter } from '../../presenters/DegreePresenter';
10
10
  export class AttendanceDegree extends ProgrammesBaseIndexabilityPolicy {
11
11
  name = 'Attendance Degree Type Policy';
12
12
  description = 'Determines indexing rules for pages filtered by both study format (online, on-campus, etc.), and degree type prioritizing degrees and formats with demonstrated search demand.';
13
+ filterKeys = [FilterKey.DELIVERY_METHOD, FilterKey.DEGREE_TYPE];
13
14
  rules = [
14
15
  new SingleValueSelectedForFilterRule(FilterKey.DELIVERY_METHOD),
15
16
  new SingleValueSelectedForFilterRule(FilterKey.DEGREE_TYPE),
@@ -1,3 +1,4 @@
1
+ import { FilterKey } from '@studyportals/search-filters';
1
2
  import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
2
3
  import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
3
4
  import { FilterCombinations } from '../../enums/FilterCombinations';
@@ -6,6 +7,7 @@ import { IProgrammeSeoDependencies } from '../types/IProgrammeSeoDependencies';
6
7
  export declare class Continent extends ProgrammesBaseIndexabilityPolicy {
7
8
  readonly name: string;
8
9
  readonly description: string;
10
+ readonly filterKeys: FilterKey[];
9
11
  protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule)[];
10
12
  constructor(dependencies: IProgrammeSeoDependencies);
11
13
  protected generateUrls(): Promise<string[]>;
@@ -7,6 +7,7 @@ import { ContinentPresenter } from '../../presenters/ContinentPresenter';
7
7
  export class Continent extends ProgrammesBaseIndexabilityPolicy {
8
8
  name = 'Continent Policy';
9
9
  description = 'Governs indexing of continent-level filtered pages.';
10
+ filterKeys = [FilterKey.CONTINENT];
10
11
  rules = [
11
12
  new SingleValueSelectedForFilterRule(FilterKey.CONTINENT),
12
13
  new OnlyFiltersSelectedRule([FilterKey.CONTINENT])
@@ -1,3 +1,4 @@
1
+ import { FilterKey } from '@studyportals/search-filters';
1
2
  import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
2
3
  import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
3
4
  import { FilterCombinations } from '../../enums/FilterCombinations';
@@ -7,6 +8,7 @@ import { IProgrammeSeoDependencies } from '../types/IProgrammeSeoDependencies';
7
8
  export declare class ContinentTuitionFee extends ProgrammesBaseIndexabilityPolicy {
8
9
  readonly name: string;
9
10
  readonly description: string;
11
+ readonly filterKeys: FilterKey[];
10
12
  protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule | AffordableTuitionFeeRule)[];
11
13
  constructor(dependencies: IProgrammeSeoDependencies);
12
14
  protected generateUrls(): Promise<string[]>;
@@ -9,6 +9,7 @@ import { TuitionFeePresenter } from '../../presenters/TuitionFeePresenter';
9
9
  export class ContinentTuitionFee extends ProgrammesBaseIndexabilityPolicy {
10
10
  name = 'Continent Tuition Fee Policy';
11
11
  description = 'Determines indexing rules for pages filtered by both continent, and tuition fee, priotizing combinations with affordable tuition fees.';
12
+ filterKeys = [FilterKey.CONTINENT, FilterKey.TUITION_FEE];
12
13
  rules = [
13
14
  new SingleValueSelectedForFilterRule(FilterKey.CONTINENT),
14
15
  new SingleValueSelectedForFilterRule(FilterKey.TUITION_FEE),
@@ -1,3 +1,4 @@
1
+ import { FilterKey } from '@studyportals/search-filters';
1
2
  import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
2
3
  import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
3
4
  import { FilterCombinations } from '../../enums/FilterCombinations';
@@ -6,6 +7,7 @@ import { IProgrammeSeoDependencies } from '../types/IProgrammeSeoDependencies';
6
7
  export declare class Country extends ProgrammesBaseIndexabilityPolicy {
7
8
  readonly name: string;
8
9
  readonly description: string;
10
+ readonly filterKeys: FilterKey[];
9
11
  protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule)[];
10
12
  constructor(dependencies: IProgrammeSeoDependencies);
11
13
  protected generateUrls(): Promise<string[]>;
@@ -7,6 +7,7 @@ import { CountryPresenter } from '../../presenters/CountryPresenter';
7
7
  export class Country extends ProgrammesBaseIndexabilityPolicy {
8
8
  name = 'Country Policy';
9
9
  description = 'Governs indexing of country-level filtered pages.';
10
+ filterKeys = [FilterKey.COUNTRY];
10
11
  rules = [new SingleValueSelectedForFilterRule(FilterKey.COUNTRY), new OnlyFiltersSelectedRule([FilterKey.COUNTRY])];
11
12
  constructor(dependencies) {
12
13
  super(dependencies);
@@ -1,3 +1,4 @@
1
+ import { FilterKey } from '@studyportals/search-filters';
1
2
  import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
2
3
  import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
3
4
  import { FilterCombinations } from '../../enums/FilterCombinations';
@@ -7,6 +8,7 @@ import { IProgrammeSeoDependencies } from '../types/IProgrammeSeoDependencies';
7
8
  export declare class CountryAttendance extends ProgrammesBaseIndexabilityPolicy {
8
9
  readonly name: string;
9
10
  readonly description: string;
11
+ readonly filterKeys: FilterKey[];
10
12
  protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule | OnlineAttendanceRule)[];
11
13
  constructor(dependencies: IProgrammeSeoDependencies);
12
14
  protected generateUrls(): Promise<string[]>;
@@ -9,6 +9,7 @@ import { AttendancePresenter } from '../../presenters/AttendancePresenter';
9
9
  export class CountryAttendance extends ProgrammesBaseIndexabilityPolicy {
10
10
  name = 'Country Attendance Policy';
11
11
  description = 'Determines indexing rules for pages filtered by both country, and study format (online, on-campus, etc.).';
12
+ filterKeys = [FilterKey.COUNTRY, FilterKey.DELIVERY_METHOD];
12
13
  rules = [
13
14
  new SingleValueSelectedForFilterRule(FilterKey.COUNTRY),
14
15
  new SingleValueSelectedForFilterRule(FilterKey.DELIVERY_METHOD),
@@ -1,3 +1,4 @@
1
+ import { FilterKey } from '@studyportals/search-filters';
1
2
  import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
2
3
  import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
3
4
  import { FilterCombinations } from '../../enums/FilterCombinations';
@@ -8,6 +9,7 @@ import { IProgrammeSeoDependencies } from '../types/IProgrammeSeoDependencies';
8
9
  export declare class CountryAttendanceDegree extends ProgrammesBaseIndexabilityPolicy {
9
10
  readonly name: string;
10
11
  readonly description: string;
12
+ readonly filterKeys: FilterKey[];
11
13
  protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule | OnlineAttendanceRule | MbaDegreeRule)[];
12
14
  constructor(dependencies: IProgrammeSeoDependencies);
13
15
  protected generateUrls(): Promise<string[]>;
@@ -12,6 +12,7 @@ export class CountryAttendanceDegree extends ProgrammesBaseIndexabilityPolicy {
12
12
  name = 'Country Attendance Degree Policy';
13
13
  description = `Determines indexing rules for pages filtered by country,
14
14
  study format (online, on-campus, etc.), and degree type.`;
15
+ filterKeys = [FilterKey.COUNTRY, FilterKey.DELIVERY_METHOD, FilterKey.DEGREE_TYPE];
15
16
  rules = [
16
17
  new SingleValueSelectedForFilterRule(FilterKey.COUNTRY),
17
18
  new SingleValueSelectedForFilterRule(FilterKey.DELIVERY_METHOD),
@@ -1,3 +1,4 @@
1
+ import { FilterKey } from '@studyportals/search-filters';
1
2
  import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
2
3
  import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
3
4
  import { FilterCombinations } from '../../enums/FilterCombinations';
@@ -7,6 +8,7 @@ import { IProgrammeSeoDependencies } from '../types/IProgrammeSeoDependencies';
7
8
  export declare class CountryDegree extends ProgrammesBaseIndexabilityPolicy {
8
9
  readonly name: string;
9
10
  readonly description: string;
11
+ readonly filterKeys: FilterKey[];
10
12
  protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule | IndexableDegreeRule)[];
11
13
  constructor(dependencies: IProgrammeSeoDependencies);
12
14
  protected generateUrls(): Promise<string[]>;
@@ -9,6 +9,7 @@ import { DegreePresenter } from '../../presenters/DegreePresenter';
9
9
  export class CountryDegree extends ProgrammesBaseIndexabilityPolicy {
10
10
  name = 'Country Degree Policy';
11
11
  description = 'Determines indexing rules for pages filtered by both country, and degree type.';
12
+ filterKeys = [FilterKey.COUNTRY, FilterKey.DEGREE_TYPE];
12
13
  rules = [
13
14
  new SingleValueSelectedForFilterRule(FilterKey.COUNTRY),
14
15
  new SingleValueSelectedForFilterRule(FilterKey.DEGREE_TYPE),
@@ -1,3 +1,4 @@
1
+ import { FilterKey } from '@studyportals/search-filters';
1
2
  import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
2
3
  import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
3
4
  import { FilterCombinations } from '../../enums/FilterCombinations';
@@ -7,6 +8,7 @@ import { IProgrammeSeoDependencies } from '../types/IProgrammeSeoDependencies';
7
8
  export declare class CountryDuration extends ProgrammesBaseIndexabilityPolicy {
8
9
  readonly name: string;
9
10
  readonly description: string;
11
+ readonly filterKeys: FilterKey[];
10
12
  protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule | IndexableDurationRule)[];
11
13
  constructor(dependencies: IProgrammeSeoDependencies);
12
14
  protected generateUrls(): Promise<string[]>;
@@ -9,6 +9,7 @@ import { DurationPresenter } from '../../presenters/DurationPresenter';
9
9
  export class CountryDuration extends ProgrammesBaseIndexabilityPolicy {
10
10
  name = 'Country Duration Policy';
11
11
  description = 'Determines indexing rules for pages filtered by both country, and duration (1 year, 2 years, etc.).';
12
+ filterKeys = [FilterKey.COUNTRY, FilterKey.DURATION];
12
13
  rules = [
13
14
  new SingleValueSelectedForFilterRule(FilterKey.COUNTRY),
14
15
  new SingleValueSelectedForFilterRule(FilterKey.DURATION),
@@ -1,3 +1,4 @@
1
+ import { FilterKey } from '@studyportals/search-filters';
1
2
  import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
2
3
  import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
3
4
  import { FilterCombinations } from '../../enums/FilterCombinations';
@@ -8,6 +9,7 @@ import { IProgrammeSeoDependencies } from '../types/IProgrammeSeoDependencies';
8
9
  export declare class CountryDurationDegree extends ProgrammesBaseIndexabilityPolicy {
9
10
  readonly name: string;
10
11
  readonly description: string;
12
+ readonly filterKeys: FilterKey[];
11
13
  protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule | OneYearDurationRule | MbaOrMscDegreeRule)[];
12
14
  constructor(dependencies: IProgrammeSeoDependencies);
13
15
  protected generateUrls(): Promise<string[]>;
@@ -12,6 +12,7 @@ export class CountryDurationDegree extends ProgrammesBaseIndexabilityPolicy {
12
12
  name = 'Country Duration Degree Policy';
13
13
  description = `Determines indexing rules for pages filtered by country,
14
14
  duration (1 year, 2 years, etc.), and degree type.`;
15
+ filterKeys = [FilterKey.COUNTRY, FilterKey.DURATION, FilterKey.DEGREE_TYPE];
15
16
  rules = [
16
17
  new SingleValueSelectedForFilterRule(FilterKey.COUNTRY),
17
18
  new SingleValueSelectedForFilterRule(FilterKey.DURATION),
@@ -1,3 +1,4 @@
1
+ import { FilterKey } from '@studyportals/search-filters';
1
2
  import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
2
3
  import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
3
4
  import { FilterCombinations } from '../../enums/FilterCombinations';
@@ -7,6 +8,7 @@ import { IProgrammeSeoDependencies } from '../types/IProgrammeSeoDependencies';
7
8
  export declare class CountryEducationalForm extends ProgrammesBaseIndexabilityPolicy {
8
9
  readonly name: string;
9
10
  readonly description: string;
11
+ readonly filterKeys: FilterKey[];
10
12
  protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule | IndexableEducationalFormRule)[];
11
13
  constructor(dependencies: IProgrammeSeoDependencies);
12
14
  protected generateUrls(): Promise<string[]>;
@@ -10,6 +10,7 @@ export class CountryEducationalForm extends ProgrammesBaseIndexabilityPolicy {
10
10
  name = 'Country Educational Form Policy';
11
11
  description = `Determines indexing rules for pages filtered by both country,
12
12
  and educational form (academic, semester, summer school, etc.).`;
13
+ filterKeys = [FilterKey.COUNTRY, FilterKey.EDUCATIONAL_FORM];
13
14
  rules = [
14
15
  new SingleValueSelectedForFilterRule(FilterKey.COUNTRY),
15
16
  new SingleValueSelectedForFilterRule(FilterKey.EDUCATIONAL_FORM),
@@ -1,3 +1,4 @@
1
+ import { FilterKey } from '@studyportals/search-filters';
1
2
  import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
2
3
  import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
3
4
  import { FilterCombinations } from '../../enums/FilterCombinations';
@@ -7,6 +8,7 @@ import { IProgrammeSeoDependencies } from '../types/IProgrammeSeoDependencies';
7
8
  export declare class CountryFormat extends ProgrammesBaseIndexabilityPolicy {
8
9
  readonly name: string;
9
10
  readonly description: string;
11
+ readonly filterKeys: FilterKey[];
10
12
  protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule | PartTimeFormatRule)[];
11
13
  constructor(dependencies: IProgrammeSeoDependencies);
12
14
  protected generateUrls(): Promise<string[]>;
@@ -9,6 +9,7 @@ import { FormatPresenter } from '../../presenters/FormatPresenter';
9
9
  export class CountryFormat extends ProgrammesBaseIndexabilityPolicy {
10
10
  name = 'Country Format Policy';
11
11
  description = 'Determines indexing rules for pages filtered by both country, and attendance type (part-time or fulltime).';
12
+ filterKeys = [FilterKey.COUNTRY, FilterKey.ATTENDANCE];
12
13
  rules = [
13
14
  new SingleValueSelectedForFilterRule(FilterKey.COUNTRY),
14
15
  new SingleValueSelectedForFilterRule(FilterKey.ATTENDANCE),
@@ -1,3 +1,4 @@
1
+ import { FilterKey } from '@studyportals/search-filters';
1
2
  import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
2
3
  import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
3
4
  import { FilterCombinations } from '../../enums/FilterCombinations';
@@ -7,6 +8,7 @@ import { IProgrammeSeoDependencies } from '../types/IProgrammeSeoDependencies';
7
8
  export declare class CountryTuitionFee extends ProgrammesBaseIndexabilityPolicy {
8
9
  readonly name: string;
9
10
  readonly description: string;
11
+ readonly filterKeys: FilterKey[];
10
12
  protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule | AffordableTuitionFeeRule)[];
11
13
  constructor(dependencies: IProgrammeSeoDependencies);
12
14
  protected generateUrls(): Promise<string[]>;
@@ -9,6 +9,7 @@ import { TuitionFeePresenter } from '../../presenters/TuitionFeePresenter';
9
9
  export class CountryTuitionFee extends ProgrammesBaseIndexabilityPolicy {
10
10
  name = 'Country Tuition Fee Policy';
11
11
  description = 'Determines indexing rules for pages filtered by both country, and tuition fee.';
12
+ filterKeys = [FilterKey.COUNTRY, FilterKey.TUITION_FEE];
12
13
  rules = [
13
14
  new SingleValueSelectedForFilterRule(FilterKey.COUNTRY),
14
15
  new SingleValueSelectedForFilterRule(FilterKey.TUITION_FEE),
@@ -1,3 +1,4 @@
1
+ import { FilterKey } from '@studyportals/search-filters';
1
2
  import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
2
3
  import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
3
4
  import { FilterCombinations } from '../../enums/FilterCombinations';
@@ -6,6 +7,7 @@ import { IProgrammeSeoDependencies } from '../types/IProgrammeSeoDependencies';
6
7
  export declare class Discipline extends ProgrammesBaseIndexabilityPolicy {
7
8
  readonly name: string;
8
9
  readonly description: string;
10
+ readonly filterKeys: FilterKey[];
9
11
  protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule)[];
10
12
  constructor(dependencies: IProgrammeSeoDependencies);
11
13
  protected generateUrls(): Promise<string[]>;
@@ -7,6 +7,7 @@ import { DisciplinePresenter } from '../../presenters/DisciplinePresenter';
7
7
  export class Discipline extends ProgrammesBaseIndexabilityPolicy {
8
8
  name = 'Discipline Policy';
9
9
  description = 'Controls indexing of pages filtered by discipline.';
10
+ filterKeys = [FilterKey.DISCIPLINES];
10
11
  rules = [
11
12
  new SingleValueSelectedForFilterRule(FilterKey.DISCIPLINES),
12
13
  new OnlyFiltersSelectedRule([FilterKey.DISCIPLINES])
@@ -1,3 +1,4 @@
1
+ import { FilterKey } from '@studyportals/search-filters';
1
2
  import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
2
3
  import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
3
4
  import { FilterCombinations } from '../../enums/FilterCombinations';
@@ -6,6 +7,7 @@ import { IProgrammeSeoDependencies } from '../types/IProgrammeSeoDependencies';
6
7
  export declare class DisciplineArea extends ProgrammesBaseIndexabilityPolicy {
7
8
  readonly name: string;
8
9
  readonly description: string;
10
+ readonly filterKeys: FilterKey[];
9
11
  protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule)[];
10
12
  constructor(dependencies: IProgrammeSeoDependencies);
11
13
  protected generateUrls(): Promise<string[]>;
@@ -8,6 +8,7 @@ import { AreaPresenter } from '../../presenters/AreaPresenter';
8
8
  export class DisciplineArea extends ProgrammesBaseIndexabilityPolicy {
9
9
  name = 'Discipline Area Policy';
10
10
  description = 'Determines indexing rules for pages filtered by both discipline, and geographic areas.';
11
+ filterKeys = [FilterKey.DISCIPLINES, FilterKey.AREA];
11
12
  rules = [
12
13
  new SingleValueSelectedForFilterRule(FilterKey.DISCIPLINES),
13
14
  new SingleValueSelectedForFilterRule(FilterKey.AREA),
@@ -1,3 +1,4 @@
1
+ import { FilterKey } from '@studyportals/search-filters';
1
2
  import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
2
3
  import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
3
4
  import { FilterCombinations } from '../../enums/FilterCombinations';
@@ -7,6 +8,7 @@ import { IProgrammeSeoDependencies } from '../types/IProgrammeSeoDependencies';
7
8
  export declare class DisciplineAttendance extends ProgrammesBaseIndexabilityPolicy {
8
9
  readonly name: string;
9
10
  readonly description: string;
11
+ readonly filterKeys: FilterKey[];
10
12
  protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule | OnlineAttendanceRule)[];
11
13
  constructor(dependencies: IProgrammeSeoDependencies);
12
14
  protected generateUrls(): Promise<string[]>;
@@ -9,6 +9,7 @@ import { AttendancePresenter } from '../../presenters/AttendancePresenter';
9
9
  export class DisciplineAttendance extends ProgrammesBaseIndexabilityPolicy {
10
10
  name = 'Discipline Attendance Policy';
11
11
  description = 'Determines indexing rules for pages filtered by both discipline, and study format (online, on-campus, etc.).';
12
+ filterKeys = [FilterKey.DISCIPLINES, FilterKey.DELIVERY_METHOD];
12
13
  rules = [
13
14
  new SingleValueSelectedForFilterRule(FilterKey.DISCIPLINES),
14
15
  new SingleValueSelectedForFilterRule(FilterKey.DELIVERY_METHOD),
@@ -1,3 +1,4 @@
1
+ import { FilterKey } from '@studyportals/search-filters';
1
2
  import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
2
3
  import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
3
4
  import { FilterCombinations } from '../../enums/FilterCombinations';
@@ -6,6 +7,7 @@ import { IProgrammeSeoDependencies } from '../types/IProgrammeSeoDependencies';
6
7
  export declare class DisciplineContinent extends ProgrammesBaseIndexabilityPolicy {
7
8
  readonly name: string;
8
9
  readonly description: string;
10
+ readonly filterKeys: FilterKey[];
9
11
  protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule)[];
10
12
  constructor(dependencies: IProgrammeSeoDependencies);
11
13
  protected generateUrls(): Promise<string[]>;
@@ -8,6 +8,7 @@ import { ContinentPresenter } from '../../presenters/ContinentPresenter';
8
8
  export class DisciplineContinent extends ProgrammesBaseIndexabilityPolicy {
9
9
  name = 'Discipline Continent Policy';
10
10
  description = 'Determines indexing rules for pages filtered by both discipline, and continent.';
11
+ filterKeys = [FilterKey.DISCIPLINES, FilterKey.CONTINENT];
11
12
  rules = [
12
13
  new SingleValueSelectedForFilterRule(FilterKey.DISCIPLINES),
13
14
  new SingleValueSelectedForFilterRule(FilterKey.CONTINENT),
@@ -1,3 +1,4 @@
1
+ import { FilterKey } from '@studyportals/search-filters';
1
2
  import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
2
3
  import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
3
4
  import { FilterCombinations } from '../../enums/FilterCombinations';
@@ -6,6 +7,7 @@ import { IProgrammeSeoDependencies } from '../types/IProgrammeSeoDependencies';
6
7
  export declare class DisciplineCountry extends ProgrammesBaseIndexabilityPolicy {
7
8
  readonly name: string;
8
9
  readonly description: string;
10
+ readonly filterKeys: FilterKey[];
9
11
  protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule)[];
10
12
  constructor(dependencies: IProgrammeSeoDependencies);
11
13
  protected generateUrls(): Promise<string[]>;
@@ -8,6 +8,7 @@ import { CountryPresenter } from '../../presenters/CountryPresenter';
8
8
  export class DisciplineCountry extends ProgrammesBaseIndexabilityPolicy {
9
9
  name = 'Discipline Country Policy';
10
10
  description = 'Determines indexing rules for pages filtered by both discipline, and country.';
11
+ filterKeys = [FilterKey.DISCIPLINES, FilterKey.COUNTRY];
11
12
  rules = [
12
13
  new SingleValueSelectedForFilterRule(FilterKey.DISCIPLINES),
13
14
  new SingleValueSelectedForFilterRule(FilterKey.COUNTRY),
@@ -1,3 +1,4 @@
1
+ import { FilterKey } from '@studyportals/search-filters';
1
2
  import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
2
3
  import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
3
4
  import { FilterCombinations } from '../../enums/FilterCombinations';
@@ -7,6 +8,7 @@ import { IProgrammeSeoDependencies } from '../types/IProgrammeSeoDependencies';
7
8
  export declare class DisciplineCountryDegree extends ProgrammesBaseIndexabilityPolicy {
8
9
  readonly name: string;
9
10
  readonly description: string;
11
+ readonly filterKeys: FilterKey[];
10
12
  protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule | IndexableDegreeRule)[];
11
13
  constructor(dependencies: IProgrammeSeoDependencies);
12
14
  protected generateUrls(): Promise<string[]>;
@@ -11,6 +11,7 @@ export class DisciplineCountryDegree extends ProgrammesBaseIndexabilityPolicy {
11
11
  name = 'Discipline Country Degree Policy';
12
12
  description = `Determines indexing rules for pages filtered by discipline,
13
13
  country, and degree type.`;
14
+ filterKeys = [FilterKey.DISCIPLINES, FilterKey.COUNTRY, FilterKey.DEGREE_TYPE];
14
15
  rules = [
15
16
  new SingleValueSelectedForFilterRule(FilterKey.DISCIPLINES),
16
17
  new SingleValueSelectedForFilterRule(FilterKey.COUNTRY),
@@ -1,3 +1,4 @@
1
+ import { FilterKey } from '@studyportals/search-filters';
1
2
  import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
2
3
  import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
3
4
  import { FilterCombinations } from '../../enums/FilterCombinations';
@@ -7,6 +8,7 @@ import { IProgrammeSeoDependencies } from '../types/IProgrammeSeoDependencies';
7
8
  export declare class DisciplineCountryEducationalForm extends ProgrammesBaseIndexabilityPolicy {
8
9
  readonly name: string;
9
10
  readonly description: string;
11
+ readonly filterKeys: FilterKey[];
10
12
  protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule | IndexableEducationalFormRule)[];
11
13
  constructor(dependencies: IProgrammeSeoDependencies);
12
14
  protected generateUrls(): Promise<string[]>;
@@ -11,6 +11,7 @@ export class DisciplineCountryEducationalForm extends ProgrammesBaseIndexability
11
11
  name = 'Discipline Country Educational Form Policy';
12
12
  description = `Determines indexing rules for pages filtered by discipline,
13
13
  country, and educational form (academic, semester, summer school, etc.).`;
14
+ filterKeys = [FilterKey.DISCIPLINES, FilterKey.COUNTRY, FilterKey.EDUCATIONAL_FORM];
14
15
  rules = [
15
16
  new SingleValueSelectedForFilterRule(FilterKey.DISCIPLINES),
16
17
  new SingleValueSelectedForFilterRule(FilterKey.COUNTRY),
@@ -1,3 +1,4 @@
1
+ import { FilterKey } from '@studyportals/search-filters';
1
2
  import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
2
3
  import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
3
4
  import { FilterCombinations } from '../../enums/FilterCombinations';
@@ -7,6 +8,7 @@ import { IProgrammeSeoDependencies } from '../types/IProgrammeSeoDependencies';
7
8
  export declare class DisciplineDegree extends ProgrammesBaseIndexabilityPolicy {
8
9
  readonly name: string;
9
10
  readonly description: string;
11
+ readonly filterKeys: FilterKey[];
10
12
  protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule | IndexableDegreeRule)[];
11
13
  constructor(dependencies: IProgrammeSeoDependencies);
12
14
  protected generateUrls(): Promise<string[]>;
@@ -9,6 +9,7 @@ import { DegreePresenter } from '../../presenters/DegreePresenter';
9
9
  export class DisciplineDegree extends ProgrammesBaseIndexabilityPolicy {
10
10
  name = 'Discipline Degree Policy';
11
11
  description = 'Determines indexing rules for pages filtered by both discipline, and degree type.';
12
+ filterKeys = [FilterKey.DISCIPLINES, FilterKey.DEGREE_TYPE];
12
13
  rules = [
13
14
  new SingleValueSelectedForFilterRule(FilterKey.DISCIPLINES),
14
15
  new SingleValueSelectedForFilterRule(FilterKey.DEGREE_TYPE),
@@ -1,3 +1,4 @@
1
+ import { FilterKey } from '@studyportals/search-filters';
1
2
  import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
2
3
  import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
3
4
  import { FilterCombinations } from '../../enums/FilterCombinations';
@@ -7,6 +8,7 @@ import { IProgrammeSeoDependencies } from '../types/IProgrammeSeoDependencies';
7
8
  export declare class DisciplineDuration extends ProgrammesBaseIndexabilityPolicy {
8
9
  readonly name: string;
9
10
  readonly description: string;
11
+ readonly filterKeys: FilterKey[];
10
12
  protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule | IndexableDurationRule)[];
11
13
  constructor(dependencies: IProgrammeSeoDependencies);
12
14
  protected generateUrls(): Promise<string[]>;
@@ -9,6 +9,7 @@ import { DurationPresenter } from '../../presenters/DurationPresenter';
9
9
  export class DisciplineDuration extends ProgrammesBaseIndexabilityPolicy {
10
10
  name = 'Discipline Duration Policy';
11
11
  description = 'Determines indexing rules for pages filtered by both discipline, and duration (1 year, 2 years, etc.).';
12
+ filterKeys = [FilterKey.DISCIPLINES, FilterKey.DURATION];
12
13
  rules = [
13
14
  new SingleValueSelectedForFilterRule(FilterKey.DISCIPLINES),
14
15
  new SingleValueSelectedForFilterRule(FilterKey.DURATION),
@@ -1,3 +1,4 @@
1
+ import { FilterKey } from '@studyportals/search-filters';
1
2
  import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
2
3
  import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
3
4
  import { FilterCombinations } from '../../enums/FilterCombinations';
@@ -7,6 +8,7 @@ import { IProgrammeSeoDependencies } from '../types/IProgrammeSeoDependencies';
7
8
  export declare class DisciplineEducationalForm extends ProgrammesBaseIndexabilityPolicy {
8
9
  readonly name: string;
9
10
  readonly description: string;
11
+ readonly filterKeys: FilterKey[];
10
12
  protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule | IndexableEducationalFormRule)[];
11
13
  constructor(dependencies: IProgrammeSeoDependencies);
12
14
  protected generateUrls(): Promise<string[]>;
@@ -10,6 +10,7 @@ export class DisciplineEducationalForm extends ProgrammesBaseIndexabilityPolicy
10
10
  name = 'Discipline Educational Form Policy';
11
11
  description = `Determines indexing rules for pages filtered by both discipline,
12
12
  and educational form (academic, semester, summer school, etc.).`;
13
+ filterKeys = [FilterKey.DISCIPLINES, FilterKey.EDUCATIONAL_FORM];
13
14
  rules = [
14
15
  new SingleValueSelectedForFilterRule(FilterKey.DISCIPLINES),
15
16
  new SingleValueSelectedForFilterRule(FilterKey.EDUCATIONAL_FORM),
@@ -1,3 +1,4 @@
1
+ import { FilterKey } from '@studyportals/search-filters';
1
2
  import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
2
3
  import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
3
4
  import { FilterCombinations } from '../../enums/FilterCombinations';
@@ -7,6 +8,7 @@ import { IProgrammeSeoDependencies } from '../types/IProgrammeSeoDependencies';
7
8
  export declare class DisciplineFormat extends ProgrammesBaseIndexabilityPolicy {
8
9
  readonly name: string;
9
10
  readonly description: string;
11
+ readonly filterKeys: FilterKey[];
10
12
  protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule | PartTimeFormatRule)[];
11
13
  constructor(dependencies: IProgrammeSeoDependencies);
12
14
  protected generateUrls(): Promise<string[]>;
@@ -9,6 +9,7 @@ import { FormatPresenter } from '../../presenters/FormatPresenter';
9
9
  export class DisciplineFormat extends ProgrammesBaseIndexabilityPolicy {
10
10
  name = 'Discipline Format Policy';
11
11
  description = 'Determines indexing rules for pages filtered by both discipline, and attendance type (part-time or fulltime).';
12
+ filterKeys = [FilterKey.DISCIPLINES, FilterKey.ATTENDANCE];
12
13
  rules = [
13
14
  new SingleValueSelectedForFilterRule(FilterKey.DISCIPLINES),
14
15
  new SingleValueSelectedForFilterRule(FilterKey.ATTENDANCE),
@@ -1,3 +1,4 @@
1
+ import { FilterKey } from '@studyportals/search-filters';
1
2
  import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
2
3
  import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
3
4
  import { FilterCombinations } from '../../enums/FilterCombinations';
@@ -7,6 +8,7 @@ import { IProgrammeSeoDependencies } from '../types/IProgrammeSeoDependencies';
7
8
  export declare class DisciplineTuitionFee extends ProgrammesBaseIndexabilityPolicy {
8
9
  readonly name: string;
9
10
  readonly description: string;
11
+ readonly filterKeys: FilterKey[];
10
12
  protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule | AffordableTuitionFeeRule)[];
11
13
  constructor(dependencies: IProgrammeSeoDependencies);
12
14
  protected generateUrls(): Promise<string[]>;
@@ -9,6 +9,7 @@ import { TuitionFeePresenter } from '../../presenters/TuitionFeePresenter';
9
9
  export class DisciplineTuitionFee extends ProgrammesBaseIndexabilityPolicy {
10
10
  name = 'Discipline Tuition Fee Policy';
11
11
  description = 'Determines indexing rules for pages filtered by both discipline, and tuition fee.';
12
+ filterKeys = [FilterKey.DISCIPLINES, FilterKey.TUITION_FEE];
12
13
  rules = [
13
14
  new SingleValueSelectedForFilterRule(FilterKey.DISCIPLINES),
14
15
  new SingleValueSelectedForFilterRule(FilterKey.TUITION_FEE),
@@ -1,3 +1,4 @@
1
+ import { FilterKey } from '@studyportals/search-filters';
1
2
  import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
2
3
  import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
3
4
  import { FilterCombinations } from '../../enums/FilterCombinations';
@@ -8,6 +9,7 @@ import { IProgrammeSeoDependencies } from '../types/IProgrammeSeoDependencies';
8
9
  export declare class DisciplineTuitionFeeAttendance extends ProgrammesBaseIndexabilityPolicy {
9
10
  readonly name: string;
10
11
  readonly description: string;
12
+ readonly filterKeys: FilterKey[];
11
13
  protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule | OnlineAttendanceRule | AffordableTuitionFeeRule)[];
12
14
  constructor(dependencies: IProgrammeSeoDependencies);
13
15
  protected generateUrls(): Promise<string[]>;
@@ -11,6 +11,7 @@ import { TuitionFeePresenter } from '../../presenters/TuitionFeePresenter';
11
11
  export class DisciplineTuitionFeeAttendance extends ProgrammesBaseIndexabilityPolicy {
12
12
  name = 'Discipline Tuition Fee Attendance Policy';
13
13
  description = 'Determines indexing rules for pages filtered by discipline, tuition fee and study format (online, on-campus, etc.).';
14
+ filterKeys = [FilterKey.DISCIPLINES, FilterKey.TUITION_FEE, FilterKey.DELIVERY_METHOD];
14
15
  rules = [
15
16
  new SingleValueSelectedForFilterRule(FilterKey.DISCIPLINES),
16
17
  new SingleValueSelectedForFilterRule(FilterKey.TUITION_FEE),
@@ -1,3 +1,4 @@
1
+ import { FilterKey } from '@studyportals/search-filters';
1
2
  import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
2
3
  import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
3
4
  import { FilterCombinations } from '../../enums/FilterCombinations';
@@ -7,6 +8,7 @@ import { IProgrammeSeoDependencies } from '../types/IProgrammeSeoDependencies';
7
8
  export declare class SpecialProgrammes extends ProgrammesBaseIndexabilityPolicy {
8
9
  readonly name: string;
9
10
  readonly description: string;
11
+ readonly filterKeys: FilterKey[];
10
12
  protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule | ErasmusOrJointSpecialProgrammesRule)[];
11
13
  constructor(dependencies: IProgrammeSeoDependencies);
12
14
  protected generateUrls(): Promise<string[]>;
@@ -8,6 +8,7 @@ import { SpecialProgrammesPresenter } from '../../presenters/SpecialProgrammesPr
8
8
  export class SpecialProgrammes extends ProgrammesBaseIndexabilityPolicy {
9
9
  name = 'Special Programmes Policy';
10
10
  description = 'Controls indexing of pages filtered by special programmes like Erasmus Mundus or Joint Programmes.';
11
+ filterKeys = [FilterKey.SPECIAL_PROGRAMMES];
11
12
  rules = [
12
13
  new SingleValueSelectedForFilterRule(FilterKey.SPECIAL_PROGRAMMES),
13
14
  new OnlyFiltersSelectedRule([FilterKey.SPECIAL_PROGRAMMES]),
@@ -1,3 +1,4 @@
1
+ import { FilterKey } from '@studyportals/search-filters';
1
2
  import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
2
3
  import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
3
4
  import { FilterCombinations } from '../../enums/FilterCombinations';
@@ -6,6 +7,7 @@ import { IProgrammeSeoDependencies } from '../types/IProgrammeSeoDependencies';
6
7
  export declare class TuitionFee extends ProgrammesBaseIndexabilityPolicy {
7
8
  readonly name: string;
8
9
  readonly description: string;
10
+ readonly filterKeys: FilterKey[];
9
11
  protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule)[];
10
12
  constructor(dependencies: IProgrammeSeoDependencies);
11
13
  protected generateUrls(): Promise<string[]>;
@@ -7,6 +7,7 @@ import { TuitionFeePresenter } from '../../presenters/TuitionFeePresenter';
7
7
  export class TuitionFee extends ProgrammesBaseIndexabilityPolicy {
8
8
  name = 'Tuition Fee Policy';
9
9
  description = 'Controls indexing of pages filtered by tuition fee.';
10
+ filterKeys = [FilterKey.TUITION_FEE];
10
11
  rules = [
11
12
  new SingleValueSelectedForFilterRule(FilterKey.TUITION_FEE),
12
13
  new OnlyFiltersSelectedRule([FilterKey.TUITION_FEE])
@@ -5,6 +5,7 @@ import { IProgrammeSeoDependencies } from '../types/IProgrammeSeoDependencies';
5
5
  export declare class Unfiltered extends ProgrammesBaseIndexabilityPolicy {
6
6
  readonly name: string;
7
7
  readonly description: string;
8
+ readonly filterKeys: never[];
8
9
  protected readonly rules: NoFiltersSelectedRule[];
9
10
  constructor(dependencies: IProgrammeSeoDependencies);
10
11
  generateUrls(): Promise<string[]>;
@@ -4,6 +4,7 @@ import { ProgrammesBaseIndexabilityPolicy } from '../ProgrammesBaseIndexabilityP
4
4
  export class Unfiltered extends ProgrammesBaseIndexabilityPolicy {
5
5
  name = 'Unfiltered Policy';
6
6
  description = 'Defines indexability rules for unfiltered pages, managing crawl budget by ensuring only high-value aggregate pages are included in the sitemap.';
7
+ filterKeys = [];
7
8
  rules = [new NoFiltersSelectedRule()];
8
9
  constructor(dependencies) {
9
10
  super(dependencies);
@@ -1,7 +1,7 @@
1
1
  import { PortalType } from '@studyportals/domain-client';
2
- import { IProgrammeSearchDependencies } from './IProgrammeSearchDependencies';
3
- import { ISearchApiClient } from '../../../sitemap-generator-seo';
4
- export interface IProgrammeSearchSitemapDependencies extends IProgrammeSearchDependencies {
2
+ import { IPageNumberProvider } from '../../sitemap-generator/IPageNumberProvider';
3
+ import { ISitemapDependencies } from '../../common/ISitemapDependencies';
4
+ export interface IProgrammeSearchSitemapDependencies extends ISitemapDependencies {
5
5
  portalType: PortalType;
6
- searchApiClient: ISearchApiClient;
6
+ pageNumberProvider: IPageNumberProvider;
7
7
  }
@@ -0,0 +1,5 @@
1
+ import { ISitemapUrlGenerator } from '../../common/ISitemapUrlGenerator';
2
+ import { FilterKey } from '@studyportals/search-filters';
3
+ export interface IProgrammeSitemapUrlGenerator extends ISitemapUrlGenerator {
4
+ readonly filterKeys: FilterKey[];
5
+ }
@@ -2,10 +2,10 @@ import { FilterCombinations } from '../../enums/FilterCombinations';
2
2
  import { ExceptAustraliaAreasRule } from '../rules/ExceptAustaliaAreasRule';
3
3
  import { SearchVolumeAreasRule } from '../rules/SearchVolumeAreasRule';
4
4
  import { BaseSeoIndexabilityPolicy } from '../../common/policies/BaseSeoIndexabilityPolicy';
5
- import { ISeoDependencies } from '../../common/ISeoDependencies';
6
5
  import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
7
6
  import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
8
- export declare class Area extends BaseSeoIndexabilityPolicy<ISeoDependencies> {
7
+ import { IScholarshipSeoDependencies } from '../types/IScholarshipSeoDependencies';
8
+ export declare class Area extends BaseSeoIndexabilityPolicy<IScholarshipSeoDependencies> {
9
9
  readonly name: string;
10
10
  readonly description: string;
11
11
  protected readonly rules: (ExceptAustraliaAreasRule | SearchVolumeAreasRule | SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule)[];
@@ -1,10 +1,10 @@
1
1
  import { FilterCombinations } from '../../enums/FilterCombinations';
2
2
  import { SearchVolumeCountriesRule } from '../rules/SearchVolumeCountriesRule';
3
3
  import { BaseSeoIndexabilityPolicy } from '../../common/policies/BaseSeoIndexabilityPolicy';
4
- import { ISeoDependencies } from '../../common/ISeoDependencies';
5
4
  import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
6
5
  import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
7
- export declare class Country extends BaseSeoIndexabilityPolicy<ISeoDependencies> {
6
+ import { IScholarshipSeoDependencies } from '../types/IScholarshipSeoDependencies';
7
+ export declare class Country extends BaseSeoIndexabilityPolicy<IScholarshipSeoDependencies> {
8
8
  readonly name: string;
9
9
  readonly description: string;
10
10
  protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule | SearchVolumeCountriesRule)[];
@@ -1,10 +1,10 @@
1
1
  import { SearchVolumeDisciplinesRule } from '../../scholarships/rules/SearchVolumeDisciplinesRule';
2
2
  import { FilterCombinations } from '../../enums/FilterCombinations';
3
3
  import { BaseSeoIndexabilityPolicy } from '../../common/policies/BaseSeoIndexabilityPolicy';
4
- import { ISeoDependencies } from '../../common/ISeoDependencies';
5
4
  import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
6
5
  import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
7
- export declare class Discipline extends BaseSeoIndexabilityPolicy<ISeoDependencies> {
6
+ import { IScholarshipSeoDependencies } from '../types/IScholarshipSeoDependencies';
7
+ export declare class Discipline extends BaseSeoIndexabilityPolicy<IScholarshipSeoDependencies> {
8
8
  readonly name: string;
9
9
  readonly description: string;
10
10
  protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule | SearchVolumeDisciplinesRule)[];
@@ -1,10 +1,10 @@
1
1
  import { FilterCombinations } from '../../enums/FilterCombinations';
2
2
  import { SearchVolumeCountriesDisciplinesRule } from '../rules/SearchVolumeCountriesDisciplinesRule';
3
3
  import { BaseSeoIndexabilityPolicy } from '../../common/policies/BaseSeoIndexabilityPolicy';
4
- import { ISeoDependencies } from '../../common/ISeoDependencies';
5
4
  import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
6
5
  import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
7
- export declare class DisciplineCountry extends BaseSeoIndexabilityPolicy<ISeoDependencies> {
6
+ import { IScholarshipSeoDependencies } from '../types/IScholarshipSeoDependencies';
7
+ export declare class DisciplineCountry extends BaseSeoIndexabilityPolicy<IScholarshipSeoDependencies> {
8
8
  readonly name: string;
9
9
  readonly description: string;
10
10
  protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule | SearchVolumeCountriesDisciplinesRule)[];
@@ -1,8 +1,8 @@
1
1
  import { FilterCombinations } from '../../enums/FilterCombinations';
2
- import { ISeoDependencies } from '../../common/ISeoDependencies';
3
2
  import { BaseSeoIndexabilityPolicy } from '../../common/policies/BaseSeoIndexabilityPolicy';
4
3
  import { NoFiltersSelectedRule } from '../../common/rules/NoFiltersSelectedRule';
5
- export declare class Unfiltered extends BaseSeoIndexabilityPolicy<ISeoDependencies> {
4
+ import { IScholarshipSeoDependencies } from '../types/IScholarshipSeoDependencies';
5
+ export declare class Unfiltered extends BaseSeoIndexabilityPolicy<IScholarshipSeoDependencies> {
6
6
  readonly name: string;
7
7
  readonly description: string;
8
8
  protected readonly rules: NoFiltersSelectedRule[];
@@ -1,9 +1,9 @@
1
1
  import { FilterCombinations } from '../../enums/FilterCombinations';
2
- import { ISeoDependencies } from '../../common/ISeoDependencies';
3
2
  import { BaseSeoIndexabilityPolicy } from '../../common/policies/BaseSeoIndexabilityPolicy';
4
3
  import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
5
4
  import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
6
- export declare class UniversityCountry extends BaseSeoIndexabilityPolicy<ISeoDependencies> {
5
+ import { IScholarshipSeoDependencies } from '../types/IScholarshipSeoDependencies';
6
+ export declare class UniversityCountry extends BaseSeoIndexabilityPolicy<IScholarshipSeoDependencies> {
7
7
  readonly name: string;
8
8
  readonly description: string;
9
9
  protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule)[];
@@ -0,0 +1,3 @@
1
+ import { ISearchDependencies } from '../../common/ISearchDependencies';
2
+ import { IScholarshipSitemapDependencies } from './IScholarshipSitemapDependencies';
3
+ export type IScholarshipSeoDependencies = ISearchDependencies | IScholarshipSitemapDependencies;
@@ -0,0 +1,5 @@
1
+ import { ISitemapDependencies } from '../../common/ISitemapDependencies';
2
+ import { IOrganisationsClient } from '../../sitemap-generator/IOrganisationsClient';
3
+ export interface IScholarshipSitemapDependencies extends ISitemapDependencies {
4
+ organisationsClient: IOrganisationsClient;
5
+ }
@@ -0,0 +1,3 @@
1
+ export interface IPageNumberProvider {
2
+ getPageNumber(): number;
3
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -1,10 +1,13 @@
1
- import { ISitemapUrlGenerator } from '../common/ISitemapUrlGenerator';
2
1
  import { ISearchApiClient } from '../sitemap-generator/ISearchApiClient';
3
2
  import { BaseSitemapUrlGeneratorManager } from './BaseSitemapUrlGeneratorManager';
4
3
  import { PortalType } from '@studyportals/domain-client';
4
+ import { IPageNumberProvider } from './IPageNumberProvider';
5
+ import { FilterKey } from '@studyportals/search-filters';
6
+ import { IPresenter } from '../common';
7
+ import { IProgrammeSitemapUrlGenerator } from '../programmes/types/IProgrammeSitemapUrlGenerator';
5
8
  export declare class ProgrammesSitemapUrlGeneratorManager extends BaseSitemapUrlGeneratorManager {
6
9
  readonly portalType: PortalType;
7
- readonly policies: ISitemapUrlGenerator[];
8
- readonly presenters: Map<any, any>;
9
- constructor(portalType: PortalType, searchApiClient: ISearchApiClient);
10
+ readonly policies: IProgrammeSitemapUrlGenerator[];
11
+ readonly presenters: Map<FilterKey, IPresenter>;
12
+ constructor(portalType: PortalType, searchApiClient: ISearchApiClient, pageNumberProvider: IPageNumberProvider);
10
13
  }
@@ -1,20 +1,30 @@
1
1
  import { DependencyTypes } from '../enums/DependencyTypes';
2
2
  import { BaseSitemapUrlGeneratorManager } from './BaseSitemapUrlGeneratorManager';
3
3
  import { Area, Attendance, AttendanceDegree, Continent, ContinentTuitionFee, Country, CountryAttendance, Discipline, SpecialProgrammes, TuitionFee, Unfiltered, CountryAttendanceDegree, CountryDegree, CountryDuration, CountryDurationDegree, CountryEducationalForm, CountryFormat, CountryTuitionFee, DisciplineArea, DisciplineAttendance, DisciplineContinent, DisciplineCountry, DisciplineCountryDegree, DisciplineCountryEducationalForm, DisciplineDegree, DisciplineDuration, DisciplineEducationalForm, DisciplineFormat, DisciplineTuitionFee, DisciplineTuitionFeeAttendance } from '../programmes/policies';
4
+ import { FilterKey } from '@studyportals/search-filters';
5
+ import { AreaPresenter } from '../presenters/AreaPresenter';
6
+ import { AttendancePresenter } from '../presenters/AttendancePresenter';
7
+ import { DegreePresenter } from '../presenters/DegreePresenter';
8
+ import { ContinentPresenter } from '../presenters/ContinentPresenter';
9
+ import { TuitionFeePresenter } from '../presenters/TuitionFeePresenter';
10
+ import { CountryPresenter } from '../presenters/CountryPresenter';
11
+ import { DisciplinePresenter } from '../presenters/DisciplinePresenter';
12
+ import { SpecialProgrammesPresenter } from '../presenters/SpecialProgrammesPresenter';
13
+ import { DurationPresenter } from '../presenters/DurationPresenter';
14
+ import { EducationalFormPresenter } from '../presenters/EducationalFormPresenter';
15
+ import { FormatPresenter } from '../presenters/FormatPresenter';
4
16
  export class ProgrammesSitemapUrlGeneratorManager extends BaseSitemapUrlGeneratorManager {
5
17
  portalType;
6
18
  policies;
7
19
  presenters = new Map();
8
- constructor(portalType, searchApiClient) {
20
+ constructor(portalType, searchApiClient, pageNumberProvider) {
9
21
  super();
10
22
  this.portalType = portalType;
11
23
  const dependencies = {
12
24
  dependencyType: DependencyTypes.SITEMAP_GENERATOR,
13
25
  searchApiClient,
14
26
  portalType,
15
- applicationState: {}, // eslint-disable-line
16
- filterState: {}, // eslint-disable-line
17
- seoInfoBase: {} // eslint-disable-line
27
+ pageNumberProvider
18
28
  };
19
29
  this.policies = [
20
30
  new Area(dependencies),
@@ -48,5 +58,16 @@ export class ProgrammesSitemapUrlGeneratorManager extends BaseSitemapUrlGenerato
48
58
  new DisciplineTuitionFee(dependencies),
49
59
  new DisciplineTuitionFeeAttendance(dependencies)
50
60
  ];
61
+ this.presenters.set(FilterKey.AREA, AreaPresenter.getInstance());
62
+ this.presenters.set(FilterKey.DELIVERY_METHOD, AttendancePresenter.getInstance());
63
+ this.presenters.set(FilterKey.DEGREE_TYPE, DegreePresenter.getInstance());
64
+ this.presenters.set(FilterKey.CONTINENT, ContinentPresenter.getInstance());
65
+ this.presenters.set(FilterKey.TUITION_FEE, TuitionFeePresenter.getInstance());
66
+ this.presenters.set(FilterKey.COUNTRY, CountryPresenter.getInstance());
67
+ this.presenters.set(FilterKey.DISCIPLINES, DisciplinePresenter.getInstance());
68
+ this.presenters.set(FilterKey.SPECIAL_PROGRAMMES, SpecialProgrammesPresenter.getInstance());
69
+ this.presenters.set(FilterKey.DURATION, DurationPresenter.getInstance());
70
+ this.presenters.set(FilterKey.EDUCATIONAL_FORM, EducationalFormPresenter.getInstance());
71
+ this.presenters.set(FilterKey.ATTENDANCE, FormatPresenter.getInstance());
51
72
  }
52
73
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@studyportals/fawkes",
3
- "version": "6.0.1-1",
3
+ "version": "6.0.1-3",
4
4
  "description": "A package to centralize SEO related logic for SBLP and Sitemap Generator.",
5
5
  "files": [
6
6
  "./dist"
@@ -13,7 +13,7 @@
13
13
  "clean": "rimraf \"!(node_modules)/**/dist\"",
14
14
  "prepare-deployment": "npm run test && npm run build",
15
15
  "publish-major": "npm run prepare-deployment && npm version major && npm publish",
16
- "publish-beta": "npm run prepare-deployment && npm version prerelease && npm publish --tag beta --access=public --otp=123456",
16
+ "publish-beta": "npm run prepare-deployment && npm version prerelease && npm publish --tag beta --access=public",
17
17
  "prepare": "husky install",
18
18
  "test": "vitest run --coverage",
19
19
  "test:dev": "vitest --coverage",