@studyportals/fawkes 4.0.1-3 → 4.0.1-5
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/dist/src/common/IPolicyMetaData.d.ts +4 -0
- package/dist/src/common/IPolicyMetaData.js +1 -0
- package/dist/src/common/ISeoIndexabilityPolicy.d.ts +2 -1
- package/dist/src/common/ISitemapUrlGenerator.d.ts +4 -1
- package/dist/src/common/policies/BaseSeoIndexabilityPolicy.d.ts +6 -2
- package/dist/src/common/policies/BaseSeoIndexabilityPolicy.js +12 -2
- package/dist/src/organisations/SearchIndexabilityManager.js +18 -18
- package/dist/src/organisations/policies/OrganisationsSeoIndexabilityPolicy.d.ts +0 -1
- package/dist/src/organisations/policies/OrganisationsSeoIndexabilityPolicy.js +0 -3
- package/dist/src/organisations/policies/ranked/RankedArea.d.ts +1 -1
- package/dist/src/organisations/policies/ranked/RankedArea.js +2 -2
- package/dist/src/organisations/policies/ranked/RankedAreaDiscipline.d.ts +1 -1
- package/dist/src/organisations/policies/ranked/RankedAreaDiscipline.js +2 -2
- package/dist/src/organisations/policies/ranked/RankedAttendance.d.ts +1 -1
- package/dist/src/organisations/policies/ranked/RankedAttendance.js +2 -2
- package/dist/src/organisations/policies/ranked/RankedAttendanceDiscipline.d.ts +1 -1
- package/dist/src/organisations/policies/ranked/RankedAttendanceDiscipline.js +2 -2
- package/dist/src/organisations/policies/ranked/RankedContinent.d.ts +1 -1
- package/dist/src/organisations/policies/ranked/RankedContinent.js +2 -2
- package/dist/src/organisations/policies/ranked/RankedContinentAttendance.d.ts +1 -1
- package/dist/src/organisations/policies/ranked/RankedContinentAttendance.js +2 -2
- package/dist/src/organisations/policies/ranked/RankedCountry.d.ts +1 -1
- package/dist/src/organisations/policies/ranked/RankedCountry.js +2 -2
- package/dist/src/organisations/policies/ranked/RankedCountryAttendance.d.ts +1 -1
- package/dist/src/organisations/policies/ranked/RankedCountryAttendance.js +2 -2
- package/dist/src/organisations/policies/ranked/RankedCountryDiscipline.d.ts +1 -1
- package/dist/src/organisations/policies/ranked/RankedCountryDiscipline.js +2 -2
- package/dist/src/organisations/policies/ranked/RankedDiscipline.d.ts +1 -1
- package/dist/src/organisations/policies/ranked/RankedDiscipline.js +2 -2
- package/dist/src/organisations/policies/ranked/RankedUnfiltered.d.ts +1 -1
- package/dist/src/organisations/policies/ranked/RankedUnfiltered.js +2 -2
- package/dist/src/scholarships/SearchIndexabilityManager.js +6 -6
- package/dist/src/sitemap-generator/OrganisationsSitemapUrlGeneratorManager.js +18 -18
- package/dist/src/sitemap-generator/ScholarshipsSitemapUrlGeneratorManager.js +6 -6
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import { FilterCombinations } from '../enums/FilterCombinations';
|
|
2
|
-
|
|
2
|
+
import { IRule } from './IRule';
|
|
3
|
+
import { IPolicyMetaData } from './IPolicyMetaData';
|
|
4
|
+
export interface ISitemapUrlGenerator extends IPolicyMetaData {
|
|
3
5
|
filterCombination: FilterCombinations;
|
|
4
6
|
generateSitemapUrls(): Promise<string[]>;
|
|
7
|
+
getAllRules(): IRule[];
|
|
5
8
|
}
|
|
@@ -6,9 +6,11 @@ import { ISeoIndexabilityPolicy } from '../ISeoIndexabilityPolicy';
|
|
|
6
6
|
import { ISitemapUrlGenerator } from '../ISitemapUrlGenerator';
|
|
7
7
|
import { FilterCombinations } from '../../../sitemap-generator-seo';
|
|
8
8
|
export declare abstract class BaseSeoIndexabilityPolicy<TDependencies extends IDependencies> implements ISeoIndexabilityPolicy, ISitemapUrlGenerator {
|
|
9
|
+
readonly name: string;
|
|
10
|
+
readonly description: string;
|
|
9
11
|
protected readonly dependencies: TDependencies;
|
|
10
12
|
protected abstract readonly rules: IRule[];
|
|
11
|
-
constructor(dependencies: TDependencies);
|
|
13
|
+
constructor(name: string, description: string, dependencies: TDependencies);
|
|
12
14
|
abstract get filterCombination(): FilterCombinations;
|
|
13
15
|
protected abstract generateUrls(): Promise<string[]>;
|
|
14
16
|
shouldIndex(): Promise<boolean>;
|
|
@@ -18,5 +20,7 @@ export declare abstract class BaseSeoIndexabilityPolicy<TDependencies extends ID
|
|
|
18
20
|
protected checkRulesForSitemap(filterKeyValues: FilterKeyValuesMap): Promise<boolean>;
|
|
19
21
|
protected isIndexabilityPolicyDependencies(): boolean;
|
|
20
22
|
protected isSitemapUrlGeneratorDependencies(): boolean;
|
|
21
|
-
|
|
23
|
+
getAllRules(): IRule[];
|
|
24
|
+
getName(): string;
|
|
25
|
+
getDescription(): string;
|
|
22
26
|
}
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import { InvalidDependencyTypeError } from '../../errors/InvalidDependencyTypeError';
|
|
2
2
|
import { DependencyTypes } from '../../enums/DependencyTypes';
|
|
3
3
|
export class BaseSeoIndexabilityPolicy {
|
|
4
|
+
name;
|
|
5
|
+
description;
|
|
4
6
|
dependencies;
|
|
5
|
-
constructor(dependencies) {
|
|
7
|
+
constructor(name, description, dependencies) {
|
|
8
|
+
this.name = name;
|
|
9
|
+
this.description = description;
|
|
6
10
|
this.dependencies = dependencies;
|
|
7
11
|
}
|
|
8
12
|
async shouldIndex() {
|
|
@@ -44,7 +48,13 @@ export class BaseSeoIndexabilityPolicy {
|
|
|
44
48
|
isSitemapUrlGeneratorDependencies() {
|
|
45
49
|
return this.dependencies.dependencyType === DependencyTypes.SITEMAP_GENERATOR;
|
|
46
50
|
}
|
|
47
|
-
|
|
51
|
+
getAllRules() {
|
|
48
52
|
return this.rules;
|
|
49
53
|
}
|
|
54
|
+
getName() {
|
|
55
|
+
return this.name;
|
|
56
|
+
}
|
|
57
|
+
getDescription() {
|
|
58
|
+
return this.description;
|
|
59
|
+
}
|
|
50
60
|
}
|
|
@@ -12,24 +12,24 @@ export class SearchIndexabilityManager {
|
|
|
12
12
|
portalType
|
|
13
13
|
};
|
|
14
14
|
this.policies = [
|
|
15
|
-
new Area(dependencies),
|
|
16
|
-
new AreaAttendance(dependencies),
|
|
17
|
-
new Attendance(dependencies),
|
|
18
|
-
new Continent(dependencies),
|
|
19
|
-
new Country(dependencies),
|
|
20
|
-
new CountryAttendance(dependencies),
|
|
21
|
-
new Unfiltered(dependencies),
|
|
22
|
-
new RankedArea(dependencies),
|
|
23
|
-
new RankedAreaDiscipline(dependencies),
|
|
24
|
-
new RankedAttendance(dependencies),
|
|
25
|
-
new RankedAttendanceDiscipline(dependencies),
|
|
26
|
-
new RankedContinent(dependencies),
|
|
27
|
-
new RankedContinentAttendance(dependencies),
|
|
28
|
-
new RankedCountry(dependencies),
|
|
29
|
-
new RankedCountryAttendance(dependencies),
|
|
30
|
-
new RankedCountryDiscipline(dependencies),
|
|
31
|
-
new RankedDiscipline(dependencies),
|
|
32
|
-
new RankedUnfiltered(dependencies)
|
|
15
|
+
new Area("Area Policy", "Controls indexing of pages filtered by geographic areas, ensuring only SEO-valuable regional content with sufficient search volume is indexed.", dependencies),
|
|
16
|
+
new AreaAttendance("Area Attendance Policy", "Manages indexability for pages filtered by both geographic area and attendance type, optimizing for region-specific study format combinations.", dependencies),
|
|
17
|
+
new Attendance("Attendance Policy", "Determines indexing rules for pages filtered by study format (online, on-campus, etc.), prioritizing formats with demonstrated search demand.", dependencies),
|
|
18
|
+
new Continent("Continent Policy", "Governs indexing of continent-level filtered pages, applying rules to index only continental regions with sufficient search volume and content density.", dependencies),
|
|
19
|
+
new Country("Country Policy", "Manages indexing of country-specific pages, applying rules to index only countries with adequate search demand and relevant content availability.", dependencies),
|
|
20
|
+
new CountryAttendance("Country Attendance Policy", "Regulates indexability for pages combining country and attendance type filters, optimizing for country-specific study format pages.", dependencies),
|
|
21
|
+
new Unfiltered("Unfiltered Policy", "Defines indexability rules for unfiltered pages, managing crawl budget by ensuring only high-value aggregate pages are included in the sitemap.", dependencies),
|
|
22
|
+
new RankedArea("Ranked Area Policy", "Controls indexing for ranking-sorted pages filtered by geographic areas, optimizing for region-specific content with quality-based result ordering.", dependencies),
|
|
23
|
+
new RankedAreaDiscipline("Ranked Area Discipline Policy", "Governs indexability for ranking-sorted pages filtered by both area and discipline, prioritizing field-specific regional content with quality ordering.", dependencies),
|
|
24
|
+
new RankedAttendance("Ranked Attendance Policy", "Determines which ranking-sorted pages filtered by attendance type qualify for indexing based on format-specific search patterns.", dependencies),
|
|
25
|
+
new RankedAttendanceDiscipline("Ranked Attendance Discipline Policy", "Manages indexing for ranking-sorted pages at the intersection of attendance type and academic discipline filters.", dependencies),
|
|
26
|
+
new RankedContinent("Ranked Continent Policy", "Regulates indexability of ranking-sorted continent-level filtered pages, prioritizing high-value continental views with quality-based sorting.", dependencies),
|
|
27
|
+
new RankedContinentAttendance("Ranked Continent Attendance Policy", "Controls indexing for ranking-sorted pages combining continent and attendance filters, optimizing for continental study format combinations.", dependencies),
|
|
28
|
+
new RankedCountry("Ranked Country Policy", "Manages indexability of ranking-sorted country-specific pages, applying rules to prioritize countries where quality-based sorting adds search value.", dependencies),
|
|
29
|
+
new RankedCountryAttendance("Ranked Country Attendance Policy", "Governs indexing for ranking-sorted pages filtered by both country and attendance type, optimizing for country-specific study format combinations with quality sorting.", dependencies),
|
|
30
|
+
new RankedCountryDiscipline("Ranked Country Discipline Policy", "Determines which ranking-sorted pages at the intersection of country and discipline filters qualify for indexing based on search value.", dependencies),
|
|
31
|
+
new RankedDiscipline("Ranked Discipline Policy", "Regulates indexability of ranking-sorted discipline-specific pages, prioritizing academic fields where quality-based sorting enhances user experience.", dependencies),
|
|
32
|
+
new RankedUnfiltered("Ranked Unfiltered Policy", "Defines indexing rules for ranking-sorted unfiltered pages, managing SEO strategy for quality-ordered aggregate views of the content database.", dependencies)
|
|
33
33
|
];
|
|
34
34
|
}
|
|
35
35
|
async shouldIndex() {
|
|
@@ -5,7 +5,6 @@ import { SortingOptions } from '../../enums/SortingOptions';
|
|
|
5
5
|
export declare abstract class OrganisationsSeoIndexabilityPolicy extends BaseSeoIndexabilityPolicy<IOrganisationsSeoDependencies> {
|
|
6
6
|
protected readonly indexablePortalTypes: PortalType[];
|
|
7
7
|
protected abstract readonly sortingOption: SortingOptions;
|
|
8
|
-
constructor(dependencies: IOrganisationsSeoDependencies);
|
|
9
8
|
generateSitemapUrls(): Promise<string[]>;
|
|
10
9
|
protected isIndexable(): Promise<boolean>;
|
|
11
10
|
protected getPathWithSortingOption(path: string): string;
|
|
@@ -3,9 +3,6 @@ import { BaseSeoIndexabilityPolicy } from '../../common/policies/BaseSeoIndexabi
|
|
|
3
3
|
import { SortingOptions } from '../../enums/SortingOptions';
|
|
4
4
|
export class OrganisationsSeoIndexabilityPolicy extends BaseSeoIndexabilityPolicy {
|
|
5
5
|
indexablePortalTypes = [PortalType.MASTER];
|
|
6
|
-
constructor(dependencies) {
|
|
7
|
-
super(dependencies);
|
|
8
|
-
}
|
|
9
6
|
async generateSitemapUrls() {
|
|
10
7
|
if (this.indexablePortalTypes.includes(this.dependencies.portalType)) {
|
|
11
8
|
return super.generateSitemapUrls();
|
|
@@ -5,7 +5,7 @@ import { RankedOrganisationsSeoIndexabilityPolicy } from '../RankedOrganisations
|
|
|
5
5
|
import { IOrganisationsSeoDependencies } from '../../../organisations/types/IOrganisationsSeoDependencies';
|
|
6
6
|
export declare class RankedArea extends RankedOrganisationsSeoIndexabilityPolicy {
|
|
7
7
|
protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule)[];
|
|
8
|
-
constructor(dependencies: IOrganisationsSeoDependencies);
|
|
8
|
+
constructor(name: string, description: string, dependencies: IOrganisationsSeoDependencies);
|
|
9
9
|
protected generateUrls(): Promise<string[]>;
|
|
10
10
|
get filterCombination(): FilterCombinations;
|
|
11
11
|
}
|
|
@@ -10,8 +10,8 @@ export class RankedArea extends RankedOrganisationsSeoIndexabilityPolicy {
|
|
|
10
10
|
new SingleValueSelectedForFilterRule(FilterKey.COUNTRY),
|
|
11
11
|
new OnlyFiltersSelectedRule([FilterKey.AREA, FilterKey.COUNTRY])
|
|
12
12
|
];
|
|
13
|
-
constructor(dependencies) {
|
|
14
|
-
super(dependencies);
|
|
13
|
+
constructor(name, description, dependencies) {
|
|
14
|
+
super(name, description, dependencies);
|
|
15
15
|
this.addRankedResultsCountRule();
|
|
16
16
|
}
|
|
17
17
|
async generateUrls() {
|
|
@@ -6,7 +6,7 @@ import { RankedOrganisationsSeoIndexabilityPolicy } from '../RankedOrganisations
|
|
|
6
6
|
import { IOrganisationsSeoDependencies } from '../../../organisations/types/IOrganisationsSeoDependencies';
|
|
7
7
|
export declare class RankedAreaDiscipline extends RankedOrganisationsSeoIndexabilityPolicy {
|
|
8
8
|
protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule | SearchVolumeAreasDisciplineRule)[];
|
|
9
|
-
constructor(dependencies: IOrganisationsSeoDependencies);
|
|
9
|
+
constructor(name: string, description: string, dependencies: IOrganisationsSeoDependencies);
|
|
10
10
|
get filterCombination(): FilterCombinations;
|
|
11
11
|
protected generateUrls(): Promise<string[]>;
|
|
12
12
|
}
|
|
@@ -14,8 +14,8 @@ export class RankedAreaDiscipline extends RankedOrganisationsSeoIndexabilityPoli
|
|
|
14
14
|
new OnlyFiltersSelectedRule([FilterKey.AREA, FilterKey.COUNTRY, FilterKey.DISCIPLINES]),
|
|
15
15
|
new SearchVolumeAreasDisciplineRule()
|
|
16
16
|
];
|
|
17
|
-
constructor(dependencies) {
|
|
18
|
-
super(dependencies);
|
|
17
|
+
constructor(name, description, dependencies) {
|
|
18
|
+
super(name, description, dependencies);
|
|
19
19
|
this.addRankedResultsCountRule();
|
|
20
20
|
}
|
|
21
21
|
get filterCombination() {
|
|
@@ -6,7 +6,7 @@ import { RankedOrganisationsSeoIndexabilityPolicy } from '../RankedOrganisations
|
|
|
6
6
|
import { IOrganisationsSeoDependencies } from '../../../organisations/types/IOrganisationsSeoDependencies';
|
|
7
7
|
export declare class RankedAttendance extends RankedOrganisationsSeoIndexabilityPolicy {
|
|
8
8
|
protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule | OnlineAttendanceRule)[];
|
|
9
|
-
constructor(dependencies: IOrganisationsSeoDependencies);
|
|
9
|
+
constructor(name: string, description: string, dependencies: IOrganisationsSeoDependencies);
|
|
10
10
|
protected generateUrls(): Promise<string[]>;
|
|
11
11
|
get filterCombination(): FilterCombinations;
|
|
12
12
|
}
|
|
@@ -11,8 +11,8 @@ export class RankedAttendance extends RankedOrganisationsSeoIndexabilityPolicy {
|
|
|
11
11
|
new OnlyFiltersSelectedRule([FilterKey.DELIVERY_METHOD]),
|
|
12
12
|
new OnlineAttendanceRule()
|
|
13
13
|
];
|
|
14
|
-
constructor(dependencies) {
|
|
15
|
-
super(dependencies);
|
|
14
|
+
constructor(name, description, dependencies) {
|
|
15
|
+
super(name, description, dependencies);
|
|
16
16
|
this.addRankedResultsCountRule();
|
|
17
17
|
}
|
|
18
18
|
async generateUrls() {
|
|
@@ -6,7 +6,7 @@ import { RankedOrganisationsSeoIndexabilityPolicy } from '../RankedOrganisations
|
|
|
6
6
|
import { IOrganisationsSeoDependencies } from '../../../organisations/types/IOrganisationsSeoDependencies';
|
|
7
7
|
export declare class RankedAttendanceDiscipline extends RankedOrganisationsSeoIndexabilityPolicy {
|
|
8
8
|
protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule | OnlineAttendanceRule)[];
|
|
9
|
-
constructor(dependencies: IOrganisationsSeoDependencies);
|
|
9
|
+
constructor(name: string, description: string, dependencies: IOrganisationsSeoDependencies);
|
|
10
10
|
get filterCombination(): FilterCombinations;
|
|
11
11
|
protected generateUrls(): Promise<string[]>;
|
|
12
12
|
}
|
|
@@ -13,8 +13,8 @@ export class RankedAttendanceDiscipline extends RankedOrganisationsSeoIndexabili
|
|
|
13
13
|
new OnlyFiltersSelectedRule([FilterKey.DELIVERY_METHOD, FilterKey.DISCIPLINES]),
|
|
14
14
|
new OnlineAttendanceRule()
|
|
15
15
|
];
|
|
16
|
-
constructor(dependencies) {
|
|
17
|
-
super(dependencies);
|
|
16
|
+
constructor(name, description, dependencies) {
|
|
17
|
+
super(name, description, dependencies);
|
|
18
18
|
this.addRankedResultsCountRule();
|
|
19
19
|
}
|
|
20
20
|
get filterCombination() {
|
|
@@ -5,7 +5,7 @@ import { RankedOrganisationsSeoIndexabilityPolicy } from '../RankedOrganisations
|
|
|
5
5
|
import { IOrganisationsSeoDependencies } from '../../../organisations/types/IOrganisationsSeoDependencies';
|
|
6
6
|
export declare class RankedContinent extends RankedOrganisationsSeoIndexabilityPolicy {
|
|
7
7
|
protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule)[];
|
|
8
|
-
constructor(dependencies: IOrganisationsSeoDependencies);
|
|
8
|
+
constructor(name: string, description: string, dependencies: IOrganisationsSeoDependencies);
|
|
9
9
|
protected generateUrls(): Promise<string[]>;
|
|
10
10
|
get filterCombination(): FilterCombinations;
|
|
11
11
|
}
|
|
@@ -9,8 +9,8 @@ export class RankedContinent extends RankedOrganisationsSeoIndexabilityPolicy {
|
|
|
9
9
|
new SingleValueSelectedForFilterRule(FilterKey.CONTINENT),
|
|
10
10
|
new OnlyFiltersSelectedRule([FilterKey.CONTINENT])
|
|
11
11
|
];
|
|
12
|
-
constructor(dependencies) {
|
|
13
|
-
super(dependencies);
|
|
12
|
+
constructor(name, description, dependencies) {
|
|
13
|
+
super(name, description, dependencies);
|
|
14
14
|
this.addRankedResultsCountRule();
|
|
15
15
|
}
|
|
16
16
|
async generateUrls() {
|
|
@@ -7,7 +7,7 @@ import { RankedOrganisationsSeoIndexabilityPolicy } from '../RankedOrganisations
|
|
|
7
7
|
import { IOrganisationsSeoDependencies } from '../../../organisations/types/IOrganisationsSeoDependencies';
|
|
8
8
|
export declare class RankedContinentAttendance extends RankedOrganisationsSeoIndexabilityPolicy {
|
|
9
9
|
protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule | OnlineAttendanceRule | ContinentIsEuropeRule)[];
|
|
10
|
-
constructor(dependencies: IOrganisationsSeoDependencies);
|
|
10
|
+
constructor(name: string, description: string, dependencies: IOrganisationsSeoDependencies);
|
|
11
11
|
protected generateUrls(): Promise<string[]>;
|
|
12
12
|
get filterCombination(): FilterCombinations;
|
|
13
13
|
}
|
|
@@ -15,8 +15,8 @@ export class RankedContinentAttendance extends RankedOrganisationsSeoIndexabilit
|
|
|
15
15
|
new ContinentIsEuropeRule(),
|
|
16
16
|
new OnlineAttendanceRule()
|
|
17
17
|
];
|
|
18
|
-
constructor(dependencies) {
|
|
19
|
-
super(dependencies);
|
|
18
|
+
constructor(name, description, dependencies) {
|
|
19
|
+
super(name, description, dependencies);
|
|
20
20
|
this.addRankedResultsCountRule();
|
|
21
21
|
}
|
|
22
22
|
async generateUrls() {
|
|
@@ -5,7 +5,7 @@ import { RankedOrganisationsSeoIndexabilityPolicy } from '../RankedOrganisations
|
|
|
5
5
|
import { IOrganisationsSeoDependencies } from '../../../organisations/types/IOrganisationsSeoDependencies';
|
|
6
6
|
export declare class RankedCountry extends RankedOrganisationsSeoIndexabilityPolicy {
|
|
7
7
|
protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule)[];
|
|
8
|
-
constructor(dependencies: IOrganisationsSeoDependencies);
|
|
8
|
+
constructor(name: string, description: string, dependencies: IOrganisationsSeoDependencies);
|
|
9
9
|
protected generateUrls(): Promise<string[]>;
|
|
10
10
|
get filterCombination(): FilterCombinations;
|
|
11
11
|
}
|
|
@@ -6,8 +6,8 @@ import { CountryPresenter } from '../../../presenters/CountryPresenter';
|
|
|
6
6
|
import { RankedOrganisationsSeoIndexabilityPolicy } from '../RankedOrganisationsSeoIndexabilityPolicy';
|
|
7
7
|
export class RankedCountry extends RankedOrganisationsSeoIndexabilityPolicy {
|
|
8
8
|
rules = [new SingleValueSelectedForFilterRule(FilterKey.COUNTRY), new OnlyFiltersSelectedRule([FilterKey.COUNTRY])];
|
|
9
|
-
constructor(dependencies) {
|
|
10
|
-
super(dependencies);
|
|
9
|
+
constructor(name, description, dependencies) {
|
|
10
|
+
super(name, description, dependencies);
|
|
11
11
|
this.addRankedResultsCountRule();
|
|
12
12
|
}
|
|
13
13
|
async generateUrls() {
|
|
@@ -6,7 +6,7 @@ import { RankedOrganisationsSeoIndexabilityPolicy } from '../RankedOrganisations
|
|
|
6
6
|
import { IOrganisationsSeoDependencies } from '../../../organisations/types/IOrganisationsSeoDependencies';
|
|
7
7
|
export declare class RankedCountryAttendance extends RankedOrganisationsSeoIndexabilityPolicy {
|
|
8
8
|
protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule | OnlineAttendanceRule)[];
|
|
9
|
-
constructor(dependencies: IOrganisationsSeoDependencies);
|
|
9
|
+
constructor(name: string, description: string, dependencies: IOrganisationsSeoDependencies);
|
|
10
10
|
protected generateUrls(): Promise<string[]>;
|
|
11
11
|
get filterCombination(): FilterCombinations;
|
|
12
12
|
}
|
|
@@ -13,8 +13,8 @@ export class RankedCountryAttendance extends RankedOrganisationsSeoIndexabilityP
|
|
|
13
13
|
new OnlyFiltersSelectedRule([FilterKey.COUNTRY, FilterKey.DELIVERY_METHOD]),
|
|
14
14
|
new OnlineAttendanceRule()
|
|
15
15
|
];
|
|
16
|
-
constructor(dependencies) {
|
|
17
|
-
super(dependencies);
|
|
16
|
+
constructor(name, description, dependencies) {
|
|
17
|
+
super(name, description, dependencies);
|
|
18
18
|
this.addRankedResultsCountRule();
|
|
19
19
|
}
|
|
20
20
|
async generateUrls() {
|
|
@@ -5,7 +5,7 @@ import { RankedOrganisationsSeoIndexabilityPolicy } from '../RankedOrganisations
|
|
|
5
5
|
import { IOrganisationsSeoDependencies } from '../../../organisations/types/IOrganisationsSeoDependencies';
|
|
6
6
|
export declare class RankedCountryDiscipline extends RankedOrganisationsSeoIndexabilityPolicy {
|
|
7
7
|
protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule)[];
|
|
8
|
-
constructor(dependencies: IOrganisationsSeoDependencies);
|
|
8
|
+
constructor(name: string, description: string, dependencies: IOrganisationsSeoDependencies);
|
|
9
9
|
protected generateUrls(): Promise<string[]>;
|
|
10
10
|
get filterCombination(): FilterCombinations;
|
|
11
11
|
}
|
|
@@ -11,8 +11,8 @@ export class RankedCountryDiscipline extends RankedOrganisationsSeoIndexabilityP
|
|
|
11
11
|
new SingleValueSelectedForFilterRule(FilterKey.DISCIPLINES),
|
|
12
12
|
new OnlyFiltersSelectedRule([FilterKey.COUNTRY, FilterKey.DISCIPLINES])
|
|
13
13
|
];
|
|
14
|
-
constructor(dependencies) {
|
|
15
|
-
super(dependencies);
|
|
14
|
+
constructor(name, description, dependencies) {
|
|
15
|
+
super(name, description, dependencies);
|
|
16
16
|
this.addRankedResultsCountRule();
|
|
17
17
|
}
|
|
18
18
|
async generateUrls() {
|
|
@@ -5,7 +5,7 @@ import { RankedOrganisationsSeoIndexabilityPolicy } from '../RankedOrganisations
|
|
|
5
5
|
import { IOrganisationsSeoDependencies } from '../../../organisations/types/IOrganisationsSeoDependencies';
|
|
6
6
|
export declare class RankedDiscipline extends RankedOrganisationsSeoIndexabilityPolicy {
|
|
7
7
|
protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule)[];
|
|
8
|
-
constructor(dependencies: IOrganisationsSeoDependencies);
|
|
8
|
+
constructor(name: string, description: string, dependencies: IOrganisationsSeoDependencies);
|
|
9
9
|
protected generateUrls(): Promise<string[]>;
|
|
10
10
|
get filterCombination(): FilterCombinations;
|
|
11
11
|
}
|
|
@@ -9,8 +9,8 @@ export class RankedDiscipline extends RankedOrganisationsSeoIndexabilityPolicy {
|
|
|
9
9
|
new SingleValueSelectedForFilterRule(FilterKey.DISCIPLINES),
|
|
10
10
|
new OnlyFiltersSelectedRule([FilterKey.DISCIPLINES])
|
|
11
11
|
];
|
|
12
|
-
constructor(dependencies) {
|
|
13
|
-
super(dependencies);
|
|
12
|
+
constructor(name, description, dependencies) {
|
|
13
|
+
super(name, description, dependencies);
|
|
14
14
|
this.addRankedResultsCountRule();
|
|
15
15
|
}
|
|
16
16
|
async generateUrls() {
|
|
@@ -4,7 +4,7 @@ import { RankedOrganisationsSeoIndexabilityPolicy } from '../RankedOrganisations
|
|
|
4
4
|
import { IOrganisationsSeoDependencies } from '../../../organisations/types/IOrganisationsSeoDependencies';
|
|
5
5
|
export declare class RankedUnfiltered extends RankedOrganisationsSeoIndexabilityPolicy {
|
|
6
6
|
protected readonly rules: NoFiltersSelectedRule[];
|
|
7
|
-
constructor(dependencies: IOrganisationsSeoDependencies);
|
|
7
|
+
constructor(name: string, description: string, dependencies: IOrganisationsSeoDependencies);
|
|
8
8
|
protected generateUrls(): Promise<string[]>;
|
|
9
9
|
get filterCombination(): FilterCombinations;
|
|
10
10
|
}
|
|
@@ -3,8 +3,8 @@ import { NoFiltersSelectedRule } from '../../../common/rules/NoFiltersSelectedRu
|
|
|
3
3
|
import { RankedOrganisationsSeoIndexabilityPolicy } from '../RankedOrganisationsSeoIndexabilityPolicy';
|
|
4
4
|
export class RankedUnfiltered extends RankedOrganisationsSeoIndexabilityPolicy {
|
|
5
5
|
rules = [new NoFiltersSelectedRule()];
|
|
6
|
-
constructor(dependencies) {
|
|
7
|
-
super(dependencies);
|
|
6
|
+
constructor(name, description, dependencies) {
|
|
7
|
+
super(name, description, dependencies);
|
|
8
8
|
this.addRankedResultsCountRule();
|
|
9
9
|
}
|
|
10
10
|
async generateUrls() {
|
|
@@ -15,12 +15,12 @@ export class SearchIndexabilityManager {
|
|
|
15
15
|
applicationState
|
|
16
16
|
};
|
|
17
17
|
this.policies = [
|
|
18
|
-
new Area(dependencies),
|
|
19
|
-
new Country(dependencies),
|
|
20
|
-
new DisciplineCountry(dependencies),
|
|
21
|
-
new Discipline(dependencies),
|
|
22
|
-
new UniversityCountry(dependencies),
|
|
23
|
-
new Unfiltered(dependencies)
|
|
18
|
+
new Area("Area Policy", "Controls indexing of pages filtered by geographic areas, ensuring only SEO-valuable regional content with sufficient search volume is indexed while respecting country associations.", dependencies),
|
|
19
|
+
new Country("Country Policy", "Manages indexing of country-specific pages, applying rules to index only countries with adequate search demand and relevant content availability.", dependencies),
|
|
20
|
+
new DisciplineCountry("Discipline Country Policy", "Governs indexability for pages at the intersection of academic disciplines and countries, optimizing SEO for field-specific content within national contexts.", dependencies),
|
|
21
|
+
new Discipline("Discipline Policy", "Determines which discipline-filtered pages qualify for indexing based on search volume thresholds and content availability within specific academic fields.", dependencies),
|
|
22
|
+
new UniversityCountry("University Country Policy", "Regulates indexing for pages filtered by both university and country, prioritizing institution-specific content within national boundaries that meets SEO criteria.", dependencies),
|
|
23
|
+
new Unfiltered("Unfiltered Policy", "Defines indexability rules for unfiltered pages, managing crawl budget by ensuring only high-value aggregate pages are included in the sitemap.", dependencies)
|
|
24
24
|
];
|
|
25
25
|
}
|
|
26
26
|
async shouldIndex() {
|
|
@@ -13,24 +13,24 @@ export class OrganisationsSitemapUrlGeneratorManager extends BaseSitemapUrlGener
|
|
|
13
13
|
rankingApiClient
|
|
14
14
|
};
|
|
15
15
|
this.policies = [
|
|
16
|
-
new Area(dependencies),
|
|
17
|
-
new AreaAttendance(dependencies),
|
|
18
|
-
new Attendance(dependencies),
|
|
19
|
-
new Continent(dependencies),
|
|
20
|
-
new Country(dependencies),
|
|
21
|
-
new CountryAttendance(dependencies),
|
|
22
|
-
new Unfiltered(dependencies),
|
|
23
|
-
new RankedArea(dependencies),
|
|
24
|
-
new RankedAreaDiscipline(dependencies),
|
|
25
|
-
new RankedAttendance(dependencies),
|
|
26
|
-
new RankedAttendanceDiscipline(dependencies),
|
|
27
|
-
new RankedContinent(dependencies),
|
|
28
|
-
new RankedContinentAttendance(dependencies),
|
|
29
|
-
new RankedCountry(dependencies),
|
|
30
|
-
new RankedCountryAttendance(dependencies),
|
|
31
|
-
new RankedCountryDiscipline(dependencies),
|
|
32
|
-
new RankedDiscipline(dependencies),
|
|
33
|
-
new RankedUnfiltered(dependencies)
|
|
16
|
+
new Area("Area Policy", "Controls indexing of pages filtered by geographic areas, ensuring only SEO-valuable regional content with sufficient search volume is indexed.", dependencies),
|
|
17
|
+
new AreaAttendance("Area Attendance Policy", "Manages indexability for pages filtered by both geographic area and attendance type, optimizing for region-specific study format combinations.", dependencies),
|
|
18
|
+
new Attendance("Attendance Policy", "Determines indexing rules for pages filtered by study format (online, on-campus, etc.), prioritizing formats with demonstrated search demand.", dependencies),
|
|
19
|
+
new Continent("Continent Policy", "Governs indexing of continent-level filtered pages, applying rules to index only continental regions with sufficient search volume and content density.", dependencies),
|
|
20
|
+
new Country("Country Policy", "Manages indexing of country-specific pages, applying rules to index only countries with adequate search demand and relevant content availability.", dependencies),
|
|
21
|
+
new CountryAttendance("Country Attendance Policy", "Regulates indexability for pages combining country and attendance type filters, optimizing for country-specific study format pages.", dependencies),
|
|
22
|
+
new Unfiltered("Unfiltered Policy", "Defines indexability rules for unfiltered pages, managing crawl budget by ensuring only high-value aggregate pages are included in the sitemap.", dependencies),
|
|
23
|
+
new RankedArea("Ranked Area Policy", "Controls indexing for ranking-sorted pages filtered by geographic areas, optimizing for region-specific content with quality-based result ordering.", dependencies),
|
|
24
|
+
new RankedAreaDiscipline("Ranked Area Discipline Policy", "Governs indexability for ranking-sorted pages filtered by both area and discipline, prioritizing field-specific regional content with quality ordering.", dependencies),
|
|
25
|
+
new RankedAttendance("Ranked Attendance Policy", "Determines which ranking-sorted pages filtered by attendance type qualify for indexing based on format-specific search patterns.", dependencies),
|
|
26
|
+
new RankedAttendanceDiscipline("Ranked Attendance Discipline Policy", "Manages indexing for ranking-sorted pages at the intersection of attendance type and academic discipline filters.", dependencies),
|
|
27
|
+
new RankedContinent("Ranked Continent Policy", "Regulates indexability of ranking-sorted continent-level filtered pages, prioritizing high-value continental views with quality-based sorting.", dependencies),
|
|
28
|
+
new RankedContinentAttendance("Ranked Continent Attendance Policy", "Controls indexing for ranking-sorted pages combining continent and attendance filters, optimizing for continental study format combinations.", dependencies),
|
|
29
|
+
new RankedCountry("Ranked Country Policy", "Manages indexability of ranking-sorted country-specific pages, applying rules to prioritize countries where quality-based sorting adds search value.", dependencies),
|
|
30
|
+
new RankedCountryAttendance("Ranked Country Attendance Policy", "Governs indexing for ranking-sorted pages filtered by both country and attendance type, optimizing for country-specific study format combinations with quality sorting.", dependencies),
|
|
31
|
+
new RankedCountryDiscipline("Ranked Country Discipline Policy", "Determines which ranking-sorted pages at the intersection of country and discipline filters qualify for indexing based on search value.", dependencies),
|
|
32
|
+
new RankedDiscipline("Ranked Discipline Policy", "Regulates indexability of ranking-sorted discipline-specific pages, prioritizing academic fields where quality-based sorting enhances user experience.", dependencies),
|
|
33
|
+
new RankedUnfiltered("Ranked Unfiltered Policy", "Defines indexing rules for ranking-sorted unfiltered pages, managing SEO strategy for quality-ordered aggregate views of the content database.", dependencies)
|
|
34
34
|
];
|
|
35
35
|
}
|
|
36
36
|
}
|
|
@@ -16,12 +16,12 @@ export class ScholarshipsSitemapUrlGeneratorManager extends BaseSitemapUrlGenera
|
|
|
16
16
|
organisationsClient
|
|
17
17
|
};
|
|
18
18
|
this.policies = [
|
|
19
|
-
new Area(dependencies),
|
|
20
|
-
new Country(dependencies),
|
|
21
|
-
new DisciplineCountry(dependencies),
|
|
22
|
-
new Discipline(dependencies),
|
|
23
|
-
new UniversityCountry(dependencies),
|
|
24
|
-
new Unfiltered(dependencies)
|
|
19
|
+
new Area("Area Policy", "Controls indexing of pages filtered by geographic areas, ensuring only SEO-valuable regional content with sufficient search volume is indexed.", dependencies),
|
|
20
|
+
new Country("Country Policy", "Manages indexing of country-specific pages, applying rules to index only countries with adequate search demand and relevant content availability.", dependencies),
|
|
21
|
+
new DisciplineCountry("Discipline Country Policy", "Governs indexability for pages at the intersection of academic disciplines and countries, optimizing SEO for field-specific content within national contexts.", dependencies),
|
|
22
|
+
new Discipline("Discipline Policy", "Determines which discipline-filtered pages qualify for indexing based on search volume thresholds and content availability within specific academic fields.", dependencies),
|
|
23
|
+
new UniversityCountry("University Country Policy", "Regulates indexing for pages filtered by both university and country, prioritizing institution-specific content within national boundaries that meets SEO criteria.", dependencies),
|
|
24
|
+
new Unfiltered("Unfiltered Policy", "Defines indexability rules for unfiltered pages, managing crawl budget by ensuring only high-value aggregate pages are included in the sitemap.", dependencies)
|
|
25
25
|
];
|
|
26
26
|
}
|
|
27
27
|
}
|