@studyportals/fawkes 6.0.1-1 → 6.0.1-2
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/sitemap-generator-seo/index.d.ts +13 -13
- package/dist/sitemap-generator-seo/index.js +4 -5
- package/dist/src/common/IRankingApiClient.d.ts +3 -0
- package/dist/src/common/ISitemapDependencies.d.ts +0 -2
- package/dist/src/common/ISitemapUrlGenerator.d.ts +1 -1
- package/dist/src/organisations/rules/OnlineAttendanceRule.d.ts +0 -1
- package/dist/src/organisations/rules/OnlineAttendanceRule.js +0 -3
- package/dist/src/organisations/types/IOrganisationsSitemapDependencies.d.ts +2 -0
- package/dist/src/programmes/ProgrammesBaseIndexabilityPolicy.d.ts +4 -1
- package/dist/src/programmes/policies/Area.d.ts +2 -0
- package/dist/src/programmes/policies/Area.js +1 -0
- package/dist/src/programmes/policies/Attendance.d.ts +2 -0
- package/dist/src/programmes/policies/Attendance.js +1 -0
- package/dist/src/programmes/policies/AttendanceDegree.d.ts +2 -0
- package/dist/src/programmes/policies/AttendanceDegree.js +1 -0
- package/dist/src/programmes/policies/Continent.d.ts +2 -0
- package/dist/src/programmes/policies/Continent.js +1 -0
- package/dist/src/programmes/policies/ContinentTuitionFee.d.ts +2 -0
- package/dist/src/programmes/policies/ContinentTuitionFee.js +1 -0
- package/dist/src/programmes/policies/Country.d.ts +2 -0
- package/dist/src/programmes/policies/Country.js +1 -0
- package/dist/src/programmes/policies/CountryAttendance.d.ts +2 -0
- package/dist/src/programmes/policies/CountryAttendance.js +1 -0
- package/dist/src/programmes/policies/CountryAttendanceDegree.d.ts +2 -0
- package/dist/src/programmes/policies/CountryAttendanceDegree.js +1 -0
- package/dist/src/programmes/policies/CountryDegree.d.ts +2 -0
- package/dist/src/programmes/policies/CountryDegree.js +1 -0
- package/dist/src/programmes/policies/CountryDuration.d.ts +2 -0
- package/dist/src/programmes/policies/CountryDuration.js +1 -0
- package/dist/src/programmes/policies/CountryDurationDegree.d.ts +2 -0
- package/dist/src/programmes/policies/CountryDurationDegree.js +1 -0
- package/dist/src/programmes/policies/CountryEducationalForm.d.ts +2 -0
- package/dist/src/programmes/policies/CountryEducationalForm.js +1 -0
- package/dist/src/programmes/policies/CountryFormat.d.ts +2 -0
- package/dist/src/programmes/policies/CountryFormat.js +1 -0
- package/dist/src/programmes/policies/CountryTuitionFee.d.ts +2 -0
- package/dist/src/programmes/policies/CountryTuitionFee.js +1 -0
- package/dist/src/programmes/policies/Discipline.d.ts +2 -0
- package/dist/src/programmes/policies/Discipline.js +1 -0
- package/dist/src/programmes/policies/DisciplineArea.d.ts +2 -0
- package/dist/src/programmes/policies/DisciplineArea.js +1 -0
- package/dist/src/programmes/policies/DisciplineAttendance.d.ts +2 -0
- package/dist/src/programmes/policies/DisciplineAttendance.js +1 -0
- package/dist/src/programmes/policies/DisciplineContinent.d.ts +2 -0
- package/dist/src/programmes/policies/DisciplineContinent.js +1 -0
- package/dist/src/programmes/policies/DisciplineCountry.d.ts +2 -0
- package/dist/src/programmes/policies/DisciplineCountry.js +1 -0
- package/dist/src/programmes/policies/DisciplineCountryDegree.d.ts +2 -0
- package/dist/src/programmes/policies/DisciplineCountryDegree.js +1 -0
- package/dist/src/programmes/policies/DisciplineCountryEducationalForm.d.ts +2 -0
- package/dist/src/programmes/policies/DisciplineCountryEducationalForm.js +1 -0
- package/dist/src/programmes/policies/DisciplineDegree.d.ts +2 -0
- package/dist/src/programmes/policies/DisciplineDegree.js +1 -0
- package/dist/src/programmes/policies/DisciplineDuration.d.ts +2 -0
- package/dist/src/programmes/policies/DisciplineDuration.js +1 -0
- package/dist/src/programmes/policies/DisciplineEducationalForm.d.ts +2 -0
- package/dist/src/programmes/policies/DisciplineEducationalForm.js +1 -0
- package/dist/src/programmes/policies/DisciplineFormat.d.ts +2 -0
- package/dist/src/programmes/policies/DisciplineFormat.js +1 -0
- package/dist/src/programmes/policies/DisciplineTuitionFee.d.ts +2 -0
- package/dist/src/programmes/policies/DisciplineTuitionFee.js +1 -0
- package/dist/src/programmes/policies/DisciplineTuitionFeeAttendance.d.ts +2 -0
- package/dist/src/programmes/policies/DisciplineTuitionFeeAttendance.js +1 -0
- package/dist/src/programmes/policies/SpecialProgrammes.d.ts +2 -0
- package/dist/src/programmes/policies/SpecialProgrammes.js +1 -0
- package/dist/src/programmes/policies/TuitionFee.d.ts +2 -0
- package/dist/src/programmes/policies/TuitionFee.js +1 -0
- package/dist/src/programmes/policies/Unfiltered.d.ts +1 -0
- package/dist/src/programmes/policies/Unfiltered.js +1 -0
- package/dist/src/programmes/types/IProgrammeSearchSitemapDependencies.d.ts +4 -4
- package/dist/src/programmes/types/IProgrammeSitemapUrlGenerator.d.ts +5 -0
- package/dist/src/scholarships/policies/Area.d.ts +2 -2
- package/dist/src/scholarships/policies/Country.d.ts +2 -2
- package/dist/src/scholarships/policies/Discipline.d.ts +2 -2
- package/dist/src/scholarships/policies/DisciplineCountry.d.ts +2 -2
- package/dist/src/scholarships/policies/Unfiltered.d.ts +2 -2
- package/dist/src/scholarships/policies/UniversityCountry.d.ts +2 -2
- package/dist/src/scholarships/types/IScholarshipSeoDependencies.d.ts +3 -0
- package/dist/src/scholarships/types/IScholarshipSitemapDependencies.d.ts +5 -0
- package/dist/src/sitemap-generator/IPageNumberProvider.d.ts +3 -0
- package/dist/src/sitemap-generator/IPageNumberProvider.js +1 -0
- package/dist/src/sitemap-generator/ProgrammesSitemapUrlGeneratorManager.d.ts +5 -2
- package/dist/src/sitemap-generator/ProgrammesSitemapUrlGeneratorManager.js +25 -4
- package/dist/src/sitemap-generator/SitemapUrlGeneratorManager.d.ts +9 -0
- package/dist/src/sitemap-generator/SitemapUrlGeneratorManager.js +34 -0
- package/package.json +2 -2
- package/dist/src/common/IPolicyMetaData.d.ts +0 -6
- package/dist/src/organisations/OrganisationsRuleBasedIndexabilityPolicy.d.ts +0 -11
- package/dist/src/organisations/OrganisationsRuleBasedIndexabilityPolicy.js +0 -19
- package/dist/src/programmes/IProgrammeSearchApplicationState.d.ts +0 -4
- package/dist/src/programmes/IProgrammeSearchDependencies.d.ts +0 -7
- package/dist/src/programmes/IProgrammesSeoDependencies.d.ts +0 -2
- package/dist/src/programmes/rules/OnlineAttendanceRule.d.ts +0 -5
- package/dist/src/programmes/rules/OnlineAttendanceRule.js +0 -11
- /package/dist/src/common/{IPolicyMetaData.js → IRankingApiClient.js} +0 -0
- /package/dist/src/programmes/{IProgrammeSearchApplicationState.js → types/IProgrammeSitemapUrlGenerator.js} +0 -0
- /package/dist/src/{programmes/IProgrammeSearchDependencies.js → scholarships/types/IScholarshipSeoDependencies.js} +0 -0
- /package/dist/src/{programmes/IProgrammesSeoDependencies.js → scholarships/types/IScholarshipSitemapDependencies.js} +0 -0
|
@@ -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 {
|
|
3
|
-
import {
|
|
4
|
-
export interface IProgrammeSearchSitemapDependencies extends
|
|
2
|
+
import { IPageNumberProvider } from '../../sitemap-generator/IPageNumberProvider';
|
|
3
|
+
import { ISitemapDependencies } from '../../common/ISitemapDependencies';
|
|
4
|
+
export interface IProgrammeSearchSitemapDependencies extends ISitemapDependencies {
|
|
5
5
|
portalType: PortalType;
|
|
6
|
-
|
|
6
|
+
pageNumberProvider: IPageNumberProvider;
|
|
7
7
|
}
|
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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,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 @@
|
|
|
1
|
+
export {};
|
|
@@ -2,9 +2,12 @@ import { ISitemapUrlGenerator } from '../common/ISitemapUrlGenerator';
|
|
|
2
2
|
import { ISearchApiClient } from '../sitemap-generator/ISearchApiClient';
|
|
3
3
|
import { BaseSitemapUrlGeneratorManager } from './BaseSitemapUrlGeneratorManager';
|
|
4
4
|
import { PortalType } from '@studyportals/domain-client';
|
|
5
|
+
import { IPageNumberProvider } from './IPageNumberProvider';
|
|
6
|
+
import { FilterKey } from '@studyportals/search-filters';
|
|
7
|
+
import { IPresenter } from '../common';
|
|
5
8
|
export declare class ProgrammesSitemapUrlGeneratorManager extends BaseSitemapUrlGeneratorManager {
|
|
6
9
|
readonly portalType: PortalType;
|
|
7
10
|
readonly policies: ISitemapUrlGenerator[];
|
|
8
|
-
readonly presenters: Map<
|
|
9
|
-
constructor(portalType: PortalType, searchApiClient: ISearchApiClient);
|
|
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
|
-
|
|
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
|
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ISitemapUrlGeneratorManager } from './ISitemapUrlGeneratorManager';
|
|
2
|
+
import { FilterCombinations } from '../enums/FilterCombinations';
|
|
3
|
+
import { IOrganisationsClient } from '../sitemap-generator/IOrganisationsClient';
|
|
4
|
+
import { ISearchApiClient } from '../sitemap-generator/ISearchApiClient';
|
|
5
|
+
export declare class SitemapUrlGeneratorManager implements ISitemapUrlGeneratorManager {
|
|
6
|
+
private readonly policies;
|
|
7
|
+
constructor(searchApiClient: ISearchApiClient, organisationsClient: IOrganisationsClient);
|
|
8
|
+
generateUrls(): Promise<Map<FilterCombinations, string[]>>;
|
|
9
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { DependencyTypes } from '../enums/DependencyTypes';
|
|
2
|
+
import { Area } from '../scholarships/policies/Area';
|
|
3
|
+
import { Country } from '../scholarships/policies/Country';
|
|
4
|
+
import { Discipline } from '../scholarships/policies/Discipline';
|
|
5
|
+
import { DisciplineCountry } from '../scholarships/policies/DisciplineCountry';
|
|
6
|
+
import { UniversityCountry } from '../scholarships/policies/UniversityCountry';
|
|
7
|
+
import { Unfiltered } from '../scholarships/policies/Unfiltered';
|
|
8
|
+
export class SitemapUrlGeneratorManager {
|
|
9
|
+
policies;
|
|
10
|
+
constructor(searchApiClient, organisationsClient) {
|
|
11
|
+
const dependencies = {
|
|
12
|
+
dependencyType: DependencyTypes.SITEMAP_GENERATOR,
|
|
13
|
+
searchApiClient,
|
|
14
|
+
organisationsClient
|
|
15
|
+
};
|
|
16
|
+
this.policies = [
|
|
17
|
+
new Area(dependencies),
|
|
18
|
+
new Country(dependencies),
|
|
19
|
+
new DisciplineCountry(dependencies),
|
|
20
|
+
new Discipline(dependencies),
|
|
21
|
+
new UniversityCountry(dependencies),
|
|
22
|
+
new Unfiltered(dependencies)
|
|
23
|
+
];
|
|
24
|
+
}
|
|
25
|
+
async generateUrls() {
|
|
26
|
+
const map = new Map();
|
|
27
|
+
await Promise.all(this.policies.map(async (policy) => {
|
|
28
|
+
const filterCombination = policy.filterCombination;
|
|
29
|
+
const urls = await policy.generateSitemapUrls();
|
|
30
|
+
map.set(filterCombination, urls);
|
|
31
|
+
}));
|
|
32
|
+
return map;
|
|
33
|
+
}
|
|
34
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@studyportals/fawkes",
|
|
3
|
-
"version": "6.0.1-
|
|
3
|
+
"version": "6.0.1-2",
|
|
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
|
|
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",
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { PortalType } from '@studyportals/domain-client';
|
|
2
|
-
import { IOrganisationsSeoDependencies } from './types/IOrganisationsSeoDependencies';
|
|
3
|
-
import { SortingOptions } from '../enums/SortingOptions';
|
|
4
|
-
import { BaseSeoIndexabilityPolicy } from '../common/policies/BaseSeoIndexabilityPolicy';
|
|
5
|
-
export declare abstract class OrganisationsRuleBasedIndexabilityPolicy extends BaseSeoIndexabilityPolicy<IOrganisationsSeoDependencies> {
|
|
6
|
-
protected readonly indexablePortalTypes: PortalType[];
|
|
7
|
-
protected abstract readonly sortingOption: SortingOptions;
|
|
8
|
-
constructor(dependencies: IOrganisationsSeoDependencies);
|
|
9
|
-
protected isIndexable(): Promise<boolean>;
|
|
10
|
-
private matchesSortingOption;
|
|
11
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { PortalType } from '@studyportals/domain-client';
|
|
2
|
-
import { BaseSeoIndexabilityPolicy } from '../common/policies/BaseSeoIndexabilityPolicy';
|
|
3
|
-
export class OrganisationsRuleBasedIndexabilityPolicy extends BaseSeoIndexabilityPolicy {
|
|
4
|
-
indexablePortalTypes = [PortalType.MASTER];
|
|
5
|
-
constructor(dependencies) {
|
|
6
|
-
super(dependencies);
|
|
7
|
-
}
|
|
8
|
-
async isIndexable() {
|
|
9
|
-
const isIndexable = await super.isIndexable();
|
|
10
|
-
if (!isIndexable) {
|
|
11
|
-
return false;
|
|
12
|
-
}
|
|
13
|
-
return this.indexablePortalTypes.includes(this.dependencies.portalType) && this.matchesSortingOption();
|
|
14
|
-
}
|
|
15
|
-
matchesSortingOption() {
|
|
16
|
-
const dependencies = this.dependencies;
|
|
17
|
-
return dependencies.sortingState.getSelectedOption() === this.sortingOption;
|
|
18
|
-
}
|
|
19
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { ISearchDependencies } from '../common/ISearchDependencies';
|
|
2
|
-
import { IProgrammeSearchApplicationState } from './IProgrammeSearchApplicationState';
|
|
3
|
-
import { PortalType } from '@studyportals/domain-client';
|
|
4
|
-
export interface IProgrammeSearchDependencies extends ISearchDependencies {
|
|
5
|
-
portalType: PortalType;
|
|
6
|
-
applicationState: IProgrammeSearchApplicationState;
|
|
7
|
-
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { FilterKey } from '@studyportals/search-filters';
|
|
2
|
-
import { BaseFilterKeyValueRule } from '../../common/rules/BaseFilterKeyValueRule';
|
|
3
|
-
export class OnlineAttendanceRule extends BaseFilterKeyValueRule {
|
|
4
|
-
constructor() {
|
|
5
|
-
const filterKeyValues = new Map([[FilterKey.DELIVERY_METHOD, ['online']]]);
|
|
6
|
-
super(filterKeyValues);
|
|
7
|
-
}
|
|
8
|
-
getName() {
|
|
9
|
-
return 'OnlineAttendanceRule';
|
|
10
|
-
}
|
|
11
|
-
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|