@studyportals/fawkes 8.0.1-0 → 8.0.1-1
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/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/organisations-seo/index.d.ts +4 -0
- package/dist/organisations-seo/index.js +2 -0
- package/dist/programmes-seo/index.d.ts +6 -0
- package/dist/programmes-seo/index.js +2 -0
- package/dist/scholarships-seo/index.d.ts +5 -0
- package/dist/scholarships-seo/index.js +3 -0
- package/dist/sitemap-generator-seo/index.d.ts +13 -0
- package/dist/sitemap-generator-seo/index.js +4 -0
- package/dist/src/common/FilterKeyValuesMap.d.ts +2 -0
- package/dist/src/common/FilterKeyValuesMap.js +1 -0
- package/dist/src/common/IDependencies.d.ts +4 -0
- package/dist/src/common/IDependencies.js +1 -0
- package/dist/src/common/IDocumentationManager.d.ts +5 -0
- package/dist/src/common/IDocumentationManager.js +1 -0
- package/dist/src/common/IPresenter.d.ts +6 -0
- package/dist/src/common/IPresenter.js +1 -0
- package/dist/src/common/IRule.d.ts +8 -0
- package/dist/src/common/IRule.js +1 -0
- package/dist/src/common/ISearchApplicationState.d.ts +4 -0
- package/dist/src/common/ISearchApplicationState.js +1 -0
- package/dist/src/common/ISearchDependencies.d.ts +7 -0
- package/dist/src/common/ISearchDependencies.js +1 -0
- package/dist/src/common/ISearchIndexabilityManager.d.ts +4 -0
- package/dist/src/common/ISearchIndexabilityManager.js +1 -0
- package/dist/src/common/ISeoDependencies.d.ts +3 -0
- package/dist/src/common/ISeoDependencies.js +1 -0
- package/dist/src/common/ISeoFilterState.d.ts +5 -0
- package/dist/src/common/ISeoFilterState.js +1 -0
- package/dist/src/common/ISeoIndexabilityPolicy.d.ts +7 -0
- package/dist/src/common/ISeoIndexabilityPolicy.js +1 -0
- package/dist/src/common/ISeoInfoBase.d.ts +8 -0
- package/dist/src/common/ISeoInfoBase.js +1 -0
- package/dist/src/common/ISitemapDependencies.d.ts +5 -0
- package/dist/src/common/ISitemapDependencies.js +1 -0
- package/dist/src/common/ISitemapUrlGenerator.d.ts +7 -0
- package/dist/src/common/ISitemapUrlGenerator.js +1 -0
- package/dist/src/common/index.d.ts +5 -0
- package/dist/src/common/index.js +5 -0
- package/dist/src/common/policies/BaseSeoIndexabilityPolicy.d.ts +26 -0
- package/dist/src/common/policies/BaseSeoIndexabilityPolicy.js +56 -0
- package/dist/src/common/rules/BaseFilterKeyValueRule.d.ts +11 -0
- package/dist/src/common/rules/BaseFilterKeyValueRule.js +28 -0
- package/dist/src/common/rules/IndexablePageNumberRule.d.ts +9 -0
- package/dist/src/common/rules/IndexablePageNumberRule.js +17 -0
- package/dist/src/common/rules/NoFiltersSelectedRule.d.ts +9 -0
- package/dist/src/common/rules/NoFiltersSelectedRule.js +17 -0
- package/dist/src/common/rules/OnlineAttendanceRule.d.ts +6 -0
- package/dist/src/common/rules/OnlineAttendanceRule.js +14 -0
- package/dist/src/common/rules/OnlyFiltersSelectedRule.d.ts +12 -0
- package/dist/src/common/rules/OnlyFiltersSelectedRule.js +30 -0
- package/dist/src/common/rules/SingleValueSelectedForFilterRule.d.ts +12 -0
- package/dist/src/common/rules/SingleValueSelectedForFilterRule.js +24 -0
- package/dist/src/enums/DependencyTypes.d.ts +4 -0
- package/dist/src/enums/DependencyTypes.js +5 -0
- package/dist/src/enums/FilterCombinations.d.ts +52 -0
- package/dist/src/enums/FilterCombinations.js +53 -0
- package/dist/src/enums/SortingOptions.d.ts +4 -0
- package/dist/src/enums/SortingOptions.js +5 -0
- package/dist/src/errors/DependencyMissingError.d.ts +3 -0
- package/dist/src/errors/DependencyMissingError.js +5 -0
- package/dist/src/errors/InvalidDependencyTypeError.d.ts +3 -0
- package/dist/src/errors/InvalidDependencyTypeError.js +5 -0
- package/dist/src/errors/InvalidFilterValueError.d.ts +4 -0
- package/dist/src/errors/InvalidFilterValueError.js +5 -0
- package/dist/src/organisations/IOrganisationSearchApplicationState.d.ts +5 -0
- package/dist/src/organisations/IOrganisationSearchApplicationState.js +1 -0
- package/dist/src/organisations/ISeoSortingState.d.ts +4 -0
- package/dist/src/organisations/ISeoSortingState.js +1 -0
- package/dist/src/organisations/SearchIndexabilityManager.d.ts +12 -0
- package/dist/src/organisations/SearchIndexabilityManager.js +42 -0
- package/dist/src/organisations/index.d.ts +4 -0
- package/dist/src/organisations/index.js +4 -0
- package/dist/src/organisations/policies/OrganisationsSeoIndexabilityPolicy.d.ts +19 -0
- package/dist/src/organisations/policies/OrganisationsSeoIndexabilityPolicy.js +49 -0
- package/dist/src/organisations/policies/RankedOrganisationsSeoIndexabilityPolicy.d.ts +9 -0
- package/dist/src/organisations/policies/RankedOrganisationsSeoIndexabilityPolicy.js +22 -0
- package/dist/src/organisations/policies/index.d.ts +18 -0
- package/dist/src/organisations/policies/index.js +18 -0
- package/dist/src/organisations/policies/our-picks/Area.d.ts +13 -0
- package/dist/src/organisations/policies/our-picks/Area.js +35 -0
- package/dist/src/organisations/policies/our-picks/AreaAttendance.d.ts +15 -0
- package/dist/src/organisations/policies/our-picks/AreaAttendance.js +45 -0
- package/dist/src/organisations/policies/our-picks/Attendance.d.ts +14 -0
- package/dist/src/organisations/policies/our-picks/Attendance.js +33 -0
- package/dist/src/organisations/policies/our-picks/Continent.d.ts +13 -0
- package/dist/src/organisations/policies/our-picks/Continent.js +31 -0
- package/dist/src/organisations/policies/our-picks/Country.d.ts +13 -0
- package/dist/src/organisations/policies/our-picks/Country.js +28 -0
- package/dist/src/organisations/policies/our-picks/CountryAttendance.d.ts +15 -0
- package/dist/src/organisations/policies/our-picks/CountryAttendance.js +43 -0
- package/dist/src/organisations/policies/our-picks/Unfiltered.d.ts +12 -0
- package/dist/src/organisations/policies/our-picks/Unfiltered.js +16 -0
- package/dist/src/organisations/policies/ranked/RankedArea.d.ts +13 -0
- package/dist/src/organisations/policies/ranked/RankedArea.js +36 -0
- package/dist/src/organisations/policies/ranked/RankedAreaDiscipline.d.ts +14 -0
- package/dist/src/organisations/policies/ranked/RankedAreaDiscipline.js +44 -0
- package/dist/src/organisations/policies/ranked/RankedAttendance.d.ts +14 -0
- package/dist/src/organisations/policies/ranked/RankedAttendance.js +34 -0
- package/dist/src/organisations/policies/ranked/RankedAttendanceDiscipline.d.ts +14 -0
- package/dist/src/organisations/policies/ranked/RankedAttendanceDiscipline.js +42 -0
- package/dist/src/organisations/policies/ranked/RankedContinent.d.ts +13 -0
- package/dist/src/organisations/policies/ranked/RankedContinent.js +32 -0
- package/dist/src/organisations/policies/ranked/RankedContinentAttendance.d.ts +15 -0
- package/dist/src/organisations/policies/ranked/RankedContinentAttendance.js +44 -0
- package/dist/src/organisations/policies/ranked/RankedCountry.d.ts +13 -0
- package/dist/src/organisations/policies/ranked/RankedCountry.js +29 -0
- package/dist/src/organisations/policies/ranked/RankedCountryAttendance.d.ts +14 -0
- package/dist/src/organisations/policies/ranked/RankedCountryAttendance.js +42 -0
- package/dist/src/organisations/policies/ranked/RankedCountryDiscipline.d.ts +13 -0
- package/dist/src/organisations/policies/ranked/RankedCountryDiscipline.js +40 -0
- package/dist/src/organisations/policies/ranked/RankedDiscipline.d.ts +13 -0
- package/dist/src/organisations/policies/ranked/RankedDiscipline.js +32 -0
- package/dist/src/organisations/policies/ranked/RankedUnfiltered.d.ts +12 -0
- package/dist/src/organisations/policies/ranked/RankedUnfiltered.js +21 -0
- package/dist/src/organisations/rules/AtLeastSevenResultsRule.d.ts +15 -0
- package/dist/src/organisations/rules/AtLeastSevenResultsRule.js +30 -0
- package/dist/src/organisations/rules/AtLeastTwoRankedResultsRule.d.ts +13 -0
- package/dist/src/organisations/rules/AtLeastTwoRankedResultsRule.js +26 -0
- package/dist/src/organisations/rules/BaseSearchVolumeOrganisationsRule.d.ts +14 -0
- package/dist/src/organisations/rules/BaseSearchVolumeOrganisationsRule.js +33 -0
- package/dist/src/organisations/rules/ContinentIsEuropeRule.d.ts +6 -0
- package/dist/src/organisations/rules/ContinentIsEuropeRule.js +15 -0
- package/dist/src/organisations/rules/NoFiltersSelectedRule.d.ts +9 -0
- package/dist/src/organisations/rules/NoFiltersSelectedRule.js +17 -0
- package/dist/src/organisations/rules/SearchVolumeAreasAttendanceRule.d.ts +6 -0
- package/dist/src/organisations/rules/SearchVolumeAreasAttendanceRule.js +17 -0
- package/dist/src/organisations/rules/SearchVolumeAreasDisciplineRule.d.ts +6 -0
- package/dist/src/organisations/rules/SearchVolumeAreasDisciplineRule.js +18 -0
- package/dist/src/organisations/rules/SearchVolumeCountriesAttendanceRule.d.ts +6 -0
- package/dist/src/organisations/rules/SearchVolumeCountriesAttendanceRule.js +17 -0
- package/dist/src/organisations/types/IOrganisationSearchDependencies.d.ts +9 -0
- package/dist/src/organisations/types/IOrganisationSearchDependencies.js +1 -0
- package/dist/src/organisations/types/IOrganisationsSeoDependencies.d.ts +3 -0
- package/dist/src/organisations/types/IOrganisationsSeoDependencies.js +1 -0
- package/dist/src/organisations/types/IOrganisationsSitemapDependencies.d.ts +9 -0
- package/dist/src/organisations/types/IOrganisationsSitemapDependencies.js +1 -0
- package/dist/src/organisations/types.d.ts +6 -0
- package/dist/src/organisations/types.js +6 -0
- package/dist/src/presenters/AreaPresenter.d.ts +12 -0
- package/dist/src/presenters/AreaPresenter.js +35 -0
- package/dist/src/presenters/AttendancePresenter.d.ts +11 -0
- package/dist/src/presenters/AttendancePresenter.js +23 -0
- package/dist/src/presenters/ContinentPresenter.d.ts +12 -0
- package/dist/src/presenters/ContinentPresenter.js +33 -0
- package/dist/src/presenters/CountryPresenter.d.ts +12 -0
- package/dist/src/presenters/CountryPresenter.js +38 -0
- package/dist/src/presenters/DegreePresenter.d.ts +12 -0
- package/dist/src/presenters/DegreePresenter.js +50 -0
- package/dist/src/presenters/DisciplinePresenter.d.ts +12 -0
- package/dist/src/presenters/DisciplinePresenter.js +33 -0
- package/dist/src/presenters/DurationPresenter.d.ts +15 -0
- package/dist/src/presenters/DurationPresenter.js +47 -0
- package/dist/src/presenters/EducationalFormPresenter.d.ts +12 -0
- package/dist/src/presenters/EducationalFormPresenter.js +45 -0
- package/dist/src/presenters/FormatPresenter.d.ts +11 -0
- package/dist/src/presenters/FormatPresenter.js +24 -0
- package/dist/src/presenters/SpecialProgrammesPresenter.d.ts +11 -0
- package/dist/src/presenters/SpecialProgrammesPresenter.js +27 -0
- package/dist/src/presenters/TuitionFeePresenter.d.ts +11 -0
- package/dist/src/presenters/TuitionFeePresenter.js +23 -0
- package/dist/src/presenters/fragments/IAreaFragment.d.ts +4 -0
- package/dist/src/presenters/fragments/IAreaFragment.js +1 -0
- package/dist/src/presenters/fragments/ICountryFragment.d.ts +4 -0
- package/dist/src/presenters/fragments/ICountryFragment.js +1 -0
- package/dist/src/presenters/fragments/IFragment.d.ts +4 -0
- package/dist/src/presenters/fragments/IFragment.js +1 -0
- package/dist/src/programmes/BaseProgrammeFilterKeyValueRule.d.ts +6 -0
- package/dist/src/programmes/BaseProgrammeFilterKeyValueRule.js +6 -0
- package/dist/src/programmes/BaseProgrammeRule.d.ts +10 -0
- package/dist/src/programmes/BaseProgrammeRule.js +5 -0
- package/dist/src/programmes/IProgrammeRule.d.ts +5 -0
- package/dist/src/programmes/IProgrammeRule.js +1 -0
- package/dist/src/programmes/ProgrammesBaseIndexabilityPolicy.d.ts +15 -0
- package/dist/src/programmes/ProgrammesBaseIndexabilityPolicy.js +42 -0
- package/dist/src/programmes/SearchIndexabilityManager.d.ts +12 -0
- package/dist/src/programmes/SearchIndexabilityManager.js +58 -0
- package/dist/src/programmes/policies/Area.d.ts +15 -0
- package/dist/src/programmes/policies/Area.js +40 -0
- package/dist/src/programmes/policies/Attendance.d.ts +16 -0
- package/dist/src/programmes/policies/Attendance.js +38 -0
- package/dist/src/programmes/policies/AttendanceDegree.d.ts +17 -0
- package/dist/src/programmes/policies/AttendanceDegree.js +48 -0
- package/dist/src/programmes/policies/Continent.d.ts +15 -0
- package/dist/src/programmes/policies/Continent.js +36 -0
- package/dist/src/programmes/policies/ContinentTuitionFee.d.ts +16 -0
- package/dist/src/programmes/policies/ContinentTuitionFee.js +46 -0
- package/dist/src/programmes/policies/Country.d.ts +15 -0
- package/dist/src/programmes/policies/Country.js +33 -0
- package/dist/src/programmes/policies/CountryAttendance.d.ts +16 -0
- package/dist/src/programmes/policies/CountryAttendance.js +46 -0
- package/dist/src/programmes/policies/CountryAttendanceDegree.d.ts +17 -0
- package/dist/src/programmes/policies/CountryAttendanceDegree.js +55 -0
- package/dist/src/programmes/policies/CountryDegree.d.ts +16 -0
- package/dist/src/programmes/policies/CountryDegree.js +46 -0
- package/dist/src/programmes/policies/CountryDuration.d.ts +16 -0
- package/dist/src/programmes/policies/CountryDuration.js +46 -0
- package/dist/src/programmes/policies/CountryDurationDegree.d.ts +17 -0
- package/dist/src/programmes/policies/CountryDurationDegree.js +55 -0
- package/dist/src/programmes/policies/CountryEducationalForm.d.ts +16 -0
- package/dist/src/programmes/policies/CountryEducationalForm.js +47 -0
- package/dist/src/programmes/policies/CountryFormat.d.ts +16 -0
- package/dist/src/programmes/policies/CountryFormat.js +46 -0
- package/dist/src/programmes/policies/CountryTuitionFee.d.ts +16 -0
- package/dist/src/programmes/policies/CountryTuitionFee.js +46 -0
- package/dist/src/programmes/policies/Degree.d.ts +15 -0
- package/dist/src/programmes/policies/Degree.js +38 -0
- package/dist/src/programmes/policies/DegreeAttendanceDiscipline.d.ts +16 -0
- package/dist/src/programmes/policies/DegreeAttendanceDiscipline.js +63 -0
- package/dist/src/programmes/policies/DegreeCountryAttendance.d.ts +16 -0
- package/dist/src/programmes/policies/DegreeCountryAttendance.js +88 -0
- package/dist/src/programmes/policies/DegreeCountryDiscipline.d.ts +16 -0
- package/dist/src/programmes/policies/DegreeCountryDiscipline.js +71 -0
- package/dist/src/programmes/policies/DegreeCountryTuitionFee.d.ts +16 -0
- package/dist/src/programmes/policies/DegreeCountryTuitionFee.js +73 -0
- package/dist/src/programmes/policies/Discipline.d.ts +15 -0
- package/dist/src/programmes/policies/Discipline.js +36 -0
- package/dist/src/programmes/policies/DisciplineArea.d.ts +15 -0
- package/dist/src/programmes/policies/DisciplineArea.js +46 -0
- package/dist/src/programmes/policies/DisciplineAttendance.d.ts +16 -0
- package/dist/src/programmes/policies/DisciplineAttendance.js +46 -0
- package/dist/src/programmes/policies/DisciplineContinent.d.ts +15 -0
- package/dist/src/programmes/policies/DisciplineContinent.js +44 -0
- package/dist/src/programmes/policies/DisciplineCountry.d.ts +15 -0
- package/dist/src/programmes/policies/DisciplineCountry.js +44 -0
- package/dist/src/programmes/policies/DisciplineCountryEducationalForm.d.ts +16 -0
- package/dist/src/programmes/policies/DisciplineCountryEducationalForm.js +53 -0
- package/dist/src/programmes/policies/DisciplineDegree.d.ts +16 -0
- package/dist/src/programmes/policies/DisciplineDegree.js +46 -0
- package/dist/src/programmes/policies/DisciplineDuration.d.ts +16 -0
- package/dist/src/programmes/policies/DisciplineDuration.js +46 -0
- package/dist/src/programmes/policies/DisciplineEducationalForm.d.ts +16 -0
- package/dist/src/programmes/policies/DisciplineEducationalForm.js +47 -0
- package/dist/src/programmes/policies/DisciplineFormat.d.ts +16 -0
- package/dist/src/programmes/policies/DisciplineFormat.js +46 -0
- package/dist/src/programmes/policies/DisciplineTuitionFee.d.ts +16 -0
- package/dist/src/programmes/policies/DisciplineTuitionFee.js +46 -0
- package/dist/src/programmes/policies/DisciplineTuitionFeeAttendance.d.ts +17 -0
- package/dist/src/programmes/policies/DisciplineTuitionFeeAttendance.js +54 -0
- package/dist/src/programmes/policies/SpecialProgrammes.d.ts +16 -0
- package/dist/src/programmes/policies/SpecialProgrammes.js +38 -0
- package/dist/src/programmes/policies/TuitionFee.d.ts +15 -0
- package/dist/src/programmes/policies/TuitionFee.js +32 -0
- package/dist/src/programmes/policies/Unfiltered.d.ts +13 -0
- package/dist/src/programmes/policies/Unfiltered.js +19 -0
- package/dist/src/programmes/policies/index.d.ts +34 -0
- package/dist/src/programmes/policies/index.js +34 -0
- package/dist/src/programmes/rules/AffordableTuitionFeeRule.d.ts +6 -0
- package/dist/src/programmes/rules/AffordableTuitionFeeRule.js +17 -0
- package/dist/src/programmes/rules/AtLeastSevenResultsRule.d.ts +15 -0
- package/dist/src/programmes/rules/AtLeastSevenResultsRule.js +30 -0
- package/dist/src/programmes/rules/DegreeAttendanceDisciplineRule.d.ts +11 -0
- package/dist/src/programmes/rules/DegreeAttendanceDisciplineRule.js +44 -0
- package/dist/src/programmes/rules/DegreeAttendanceDisciplineSpecificRule.d.ts +11 -0
- package/dist/src/programmes/rules/DegreeAttendanceDisciplineSpecificRule.js +39 -0
- package/dist/src/programmes/rules/DegreeCountryAttendanceSpecificRule.d.ts +14 -0
- package/dist/src/programmes/rules/DegreeCountryAttendanceSpecificRule.js +76 -0
- package/dist/src/programmes/rules/DegreeCountryDisciplineSpecificRule.d.ts +11 -0
- package/dist/src/programmes/rules/DegreeCountryDisciplineSpecificRule.js +76 -0
- package/dist/src/programmes/rules/DegreeCountryTuitionFeeSpecificRule.d.ts +12 -0
- package/dist/src/programmes/rules/DegreeCountryTuitionFeeSpecificRule.js +62 -0
- package/dist/src/programmes/rules/DegreeDisciplineRule.d.ts +16 -0
- package/dist/src/programmes/rules/DegreeDisciplineRule.js +189 -0
- package/dist/src/programmes/rules/ErasmusOrJointSpecialProgrammesRule.d.ts +9 -0
- package/dist/src/programmes/rules/ErasmusOrJointSpecialProgrammesRule.js +28 -0
- package/dist/src/programmes/rules/IndexableDegreeRule.d.ts +10 -0
- package/dist/src/programmes/rules/IndexableDegreeRule.js +53 -0
- package/dist/src/programmes/rules/IndexableDurationRule.d.ts +12 -0
- package/dist/src/programmes/rules/IndexableDurationRule.js +37 -0
- package/dist/src/programmes/rules/IndexableEducationalFormRule.d.ts +10 -0
- package/dist/src/programmes/rules/IndexableEducationalFormRule.js +34 -0
- package/dist/src/programmes/rules/IndexablePageNumberRule.d.ts +9 -0
- package/dist/src/programmes/rules/IndexablePageNumberRule.js +17 -0
- package/dist/src/programmes/rules/MbaDegreeRule.d.ts +6 -0
- package/dist/src/programmes/rules/MbaDegreeRule.js +15 -0
- package/dist/src/programmes/rules/MbaOrMscDegreeRule.d.ts +9 -0
- package/dist/src/programmes/rules/MbaOrMscDegreeRule.js +26 -0
- package/dist/src/programmes/rules/NotDistanceLearningPortalRule.d.ts +11 -0
- package/dist/src/programmes/rules/NotDistanceLearningPortalRule.js +28 -0
- package/dist/src/programmes/rules/OneYearDurationRule.d.ts +6 -0
- package/dist/src/programmes/rules/OneYearDurationRule.js +15 -0
- package/dist/src/programmes/rules/PartTimeFormatRule.d.ts +6 -0
- package/dist/src/programmes/rules/PartTimeFormatRule.js +15 -0
- package/dist/src/programmes/types/IProgrammeSearchApplicationState.d.ts +4 -0
- package/dist/src/programmes/types/IProgrammeSearchApplicationState.js +1 -0
- package/dist/src/programmes/types/IProgrammeSearchDependencies.d.ts +7 -0
- package/dist/src/programmes/types/IProgrammeSearchDependencies.js +1 -0
- package/dist/src/programmes/types/IProgrammeSearchSitemapDependencies.d.ts +5 -0
- package/dist/src/programmes/types/IProgrammeSearchSitemapDependencies.js +1 -0
- package/dist/src/programmes/types/IProgrammeSeoDependencies.d.ts +3 -0
- package/dist/src/programmes/types/IProgrammeSeoDependencies.js +1 -0
- package/dist/src/programmes/types/IProgrammeSitemapDependencies.d.ts +7 -0
- package/dist/src/programmes/types/IProgrammeSitemapDependencies.js +1 -0
- package/dist/src/programmes/types/IProgrammeSitemapUrlGenerator.d.ts +5 -0
- package/dist/src/programmes/types/IProgrammeSitemapUrlGenerator.js +1 -0
- package/dist/src/scholarships/SearchIndexabilityManager.d.ts +11 -0
- package/dist/src/scholarships/SearchIndexabilityManager.js +33 -0
- package/dist/src/scholarships/index.d.ts +3 -0
- package/dist/src/scholarships/index.js +3 -0
- package/dist/src/scholarships/policies/Area.d.ts +13 -0
- package/dist/src/scholarships/policies/Area.js +37 -0
- package/dist/src/scholarships/policies/Country.d.ts +12 -0
- package/dist/src/scholarships/policies/Country.js +31 -0
- package/dist/src/scholarships/policies/Discipline.d.ts +12 -0
- package/dist/src/scholarships/policies/Discipline.js +31 -0
- package/dist/src/scholarships/policies/DisciplineCountry.d.ts +12 -0
- package/dist/src/scholarships/policies/DisciplineCountry.js +39 -0
- package/dist/src/scholarships/policies/ScholarshipSeoIndexabilityPolicy.d.ts +7 -0
- package/dist/src/scholarships/policies/ScholarshipSeoIndexabilityPolicy.js +7 -0
- package/dist/src/scholarships/policies/Unfiltered.d.ts +10 -0
- package/dist/src/scholarships/policies/Unfiltered.js +16 -0
- package/dist/src/scholarships/policies/UniversityCountry.d.ts +11 -0
- package/dist/src/scholarships/policies/UniversityCountry.js +41 -0
- package/dist/src/scholarships/rules/ExceptAustaliaAreasRule.d.ts +14 -0
- package/dist/src/scholarships/rules/ExceptAustaliaAreasRule.js +42 -0
- package/dist/src/scholarships/rules/SearchVolumeAreasRule.d.ts +12 -0
- package/dist/src/scholarships/rules/SearchVolumeAreasRule.js +32 -0
- package/dist/src/scholarships/rules/SearchVolumeCountriesDisciplinesRule.d.ts +14 -0
- package/dist/src/scholarships/rules/SearchVolumeCountriesDisciplinesRule.js +43 -0
- package/dist/src/scholarships/rules/SearchVolumeCountriesRule.d.ts +12 -0
- package/dist/src/scholarships/rules/SearchVolumeCountriesRule.js +32 -0
- package/dist/src/scholarships/rules/SearchVolumeDisciplinesRule.d.ts +12 -0
- package/dist/src/scholarships/rules/SearchVolumeDisciplinesRule.js +32 -0
- package/dist/src/scholarships/rules/files/search-volume.json +39334 -0
- package/dist/src/scholarships/types/IScholarshipSeoDependencies.d.ts +3 -0
- package/dist/src/scholarships/types/IScholarshipSeoDependencies.js +1 -0
- package/dist/src/scholarships/types/IScholarshipSitemapDependencies.d.ts +5 -0
- package/dist/src/scholarships/types/IScholarshipSitemapDependencies.js +1 -0
- package/dist/src/scholarships/types.d.ts +5 -0
- package/dist/src/scholarships/types.js +5 -0
- package/dist/src/sitemap-generator/BaseSitemapUrlGeneratorManager.d.ts +14 -0
- package/dist/src/sitemap-generator/BaseSitemapUrlGeneratorManager.js +26 -0
- package/dist/src/sitemap-generator/IOrganisation.d.ts +6 -0
- package/dist/src/sitemap-generator/IOrganisation.js +1 -0
- package/dist/src/sitemap-generator/IOrganisationsClient.d.ts +4 -0
- package/dist/src/sitemap-generator/IOrganisationsClient.js +1 -0
- package/dist/src/sitemap-generator/IRankingApiClient.d.ts +4 -0
- package/dist/src/sitemap-generator/IRankingApiClient.js +1 -0
- package/dist/src/sitemap-generator/ISearchApiClient.d.ts +5 -0
- package/dist/src/sitemap-generator/ISearchApiClient.js +1 -0
- package/dist/src/sitemap-generator/ISitemapUrlGeneratorManager.d.ts +9 -0
- package/dist/src/sitemap-generator/ISitemapUrlGeneratorManager.js +1 -0
- package/dist/src/sitemap-generator/OrganisationsSitemapUrlGeneratorManager.d.ts +14 -0
- package/dist/src/sitemap-generator/OrganisationsSitemapUrlGeneratorManager.js +51 -0
- package/dist/src/sitemap-generator/ProgrammesSitemapUrlGeneratorManager.d.ts +12 -0
- package/dist/src/sitemap-generator/ProgrammesSitemapUrlGeneratorManager.js +77 -0
- package/dist/src/sitemap-generator/ScholarshipsSitemapUrlGeneratorManager.d.ts +9 -0
- package/dist/src/sitemap-generator/ScholarshipsSitemapUrlGeneratorManager.js +28 -0
- package/dist/src/sitemap-generator/index.d.ts +0 -0
- package/dist/src/sitemap-generator/index.js +1 -0
- package/dist/src/structured-data/ProgrammeStructuredDataFactory.d.ts +18 -0
- package/dist/src/structured-data/ProgrammeStructuredDataFactory.js +91 -0
- package/dist/src/structured-data/SearchStructuredDataFactory.d.ts +34 -0
- package/dist/src/structured-data/SearchStructuredDataFactory.js +144 -0
- package/dist/src/structured-data/dto/BreadcrumbDTO.d.ts +5 -0
- package/dist/src/structured-data/dto/BreadcrumbDTO.js +1 -0
- package/dist/src/structured-data/dto/EntityDTO.d.ts +7 -0
- package/dist/src/structured-data/dto/EntityDTO.js +1 -0
- package/dist/src/structured-data/dto/FAQItemDto.d.ts +4 -0
- package/dist/src/structured-data/dto/FAQItemDto.js +1 -0
- package/dist/src/structured-data/dto/OfferDTO.d.ts +5 -0
- package/dist/src/structured-data/dto/OfferDTO.js +1 -0
- package/dist/src/structured-data/dto/ReviewRatingDTO.d.ts +4 -0
- package/dist/src/structured-data/dto/ReviewRatingDTO.js +1 -0
- package/dist/src/structured-data/dto/index.d.ts +5 -0
- package/dist/src/structured-data/dto/index.js +5 -0
- package/dist/src/structured-data/index.d.ts +2 -0
- package/dist/src/structured-data/index.js +2 -0
- package/dist/src/structured-data/interface/StructuredDataCurrencyConversionService.d.ts +3 -0
- package/dist/src/structured-data/interface/StructuredDataCurrencyConversionService.js +1 -0
- package/dist/structured-data-seo/index.d.ts +1 -0
- package/dist/structured-data-seo/index.js +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { FilterKey } from '@studyportals/search-filters';
|
|
2
|
+
import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
|
|
3
|
+
import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
|
|
4
|
+
import { FilterCombinations } from '../../enums/FilterCombinations';
|
|
5
|
+
import { ProgrammesBaseIndexabilityPolicy } from '../ProgrammesBaseIndexabilityPolicy';
|
|
6
|
+
import { ContinentPresenter } from '../../presenters/ContinentPresenter';
|
|
7
|
+
export class Continent extends ProgrammesBaseIndexabilityPolicy {
|
|
8
|
+
name = 'Continent Policy';
|
|
9
|
+
description = 'Governs indexing of continent-level filtered pages.';
|
|
10
|
+
filterKeys = [FilterKey.CONTINENT];
|
|
11
|
+
rules = [
|
|
12
|
+
new SingleValueSelectedForFilterRule(FilterKey.CONTINENT),
|
|
13
|
+
new OnlyFiltersSelectedRule([FilterKey.CONTINENT])
|
|
14
|
+
];
|
|
15
|
+
constructor(dependencies) {
|
|
16
|
+
super(dependencies);
|
|
17
|
+
this.initateBaseRules();
|
|
18
|
+
}
|
|
19
|
+
async generateUrls() {
|
|
20
|
+
const continentFragments = ContinentPresenter.getInstance().getFragments();
|
|
21
|
+
const paths = [];
|
|
22
|
+
for (const pageNumber of this.indexablePageNumbers) {
|
|
23
|
+
for (const continent of continentFragments) {
|
|
24
|
+
const filterKeyValues = new Map([[FilterKey.CONTINENT, [continent.id]]]);
|
|
25
|
+
const result = await this.checkRulesForSitemapWithPageNumber(filterKeyValues, pageNumber);
|
|
26
|
+
if (result) {
|
|
27
|
+
paths.push(this.getPathWithPageNumber(continent.path, pageNumber));
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return paths;
|
|
32
|
+
}
|
|
33
|
+
get filterCombination() {
|
|
34
|
+
return FilterCombinations.CONTINENT;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { FilterKey } from '@studyportals/search-filters';
|
|
2
|
+
import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
|
|
3
|
+
import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
|
|
4
|
+
import { FilterCombinations } from '../../enums/FilterCombinations';
|
|
5
|
+
import { AffordableTuitionFeeRule } from '../rules/AffordableTuitionFeeRule';
|
|
6
|
+
import { ProgrammesBaseIndexabilityPolicy } from '../ProgrammesBaseIndexabilityPolicy';
|
|
7
|
+
import { IProgrammeSeoDependencies } from '../types/IProgrammeSeoDependencies';
|
|
8
|
+
export declare class ContinentTuitionFee extends ProgrammesBaseIndexabilityPolicy {
|
|
9
|
+
readonly name: string;
|
|
10
|
+
readonly description: string;
|
|
11
|
+
readonly filterKeys: FilterKey[];
|
|
12
|
+
protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule | AffordableTuitionFeeRule)[];
|
|
13
|
+
constructor(dependencies: IProgrammeSeoDependencies);
|
|
14
|
+
protected generateUrls(): Promise<string[]>;
|
|
15
|
+
get filterCombination(): FilterCombinations;
|
|
16
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { FilterKey } from '@studyportals/search-filters';
|
|
2
|
+
import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
|
|
3
|
+
import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
|
|
4
|
+
import { FilterCombinations } from '../../enums/FilterCombinations';
|
|
5
|
+
import { AffordableTuitionFeeRule } from '../rules/AffordableTuitionFeeRule';
|
|
6
|
+
import { ProgrammesBaseIndexabilityPolicy } from '../ProgrammesBaseIndexabilityPolicy';
|
|
7
|
+
import { ContinentPresenter } from '../../presenters/ContinentPresenter';
|
|
8
|
+
import { TuitionFeePresenter } from '../../presenters/TuitionFeePresenter';
|
|
9
|
+
export class ContinentTuitionFee extends ProgrammesBaseIndexabilityPolicy {
|
|
10
|
+
name = 'Continent Tuition Fee Policy';
|
|
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];
|
|
13
|
+
rules = [
|
|
14
|
+
new SingleValueSelectedForFilterRule(FilterKey.CONTINENT),
|
|
15
|
+
new SingleValueSelectedForFilterRule(FilterKey.TUITION_FEE),
|
|
16
|
+
new OnlyFiltersSelectedRule([FilterKey.CONTINENT, FilterKey.TUITION_FEE]),
|
|
17
|
+
new AffordableTuitionFeeRule()
|
|
18
|
+
];
|
|
19
|
+
constructor(dependencies) {
|
|
20
|
+
super(dependencies);
|
|
21
|
+
this.initateBaseRules();
|
|
22
|
+
}
|
|
23
|
+
async generateUrls() {
|
|
24
|
+
const continentFragments = ContinentPresenter.getInstance().getFragments();
|
|
25
|
+
const tuitionFeeFragments = TuitionFeePresenter.getInstance().getFragments();
|
|
26
|
+
const paths = [];
|
|
27
|
+
for (const pageNumber of this.indexablePageNumbers) {
|
|
28
|
+
for (const continent of continentFragments) {
|
|
29
|
+
for (const tuitionFee of tuitionFeeFragments) {
|
|
30
|
+
const filterKeyValues = new Map([
|
|
31
|
+
[FilterKey.CONTINENT, [continent.id]],
|
|
32
|
+
[FilterKey.TUITION_FEE, [tuitionFee.id]]
|
|
33
|
+
]);
|
|
34
|
+
const result = await this.checkRulesForSitemapWithPageNumber(filterKeyValues, pageNumber);
|
|
35
|
+
if (result) {
|
|
36
|
+
paths.push(this.getPathWithPageNumber(`${tuitionFee.path}/${continent.path}`, pageNumber));
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return paths;
|
|
42
|
+
}
|
|
43
|
+
get filterCombination() {
|
|
44
|
+
return FilterCombinations.CONTINENT_TUITION_FEE;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { FilterKey } from '@studyportals/search-filters';
|
|
2
|
+
import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
|
|
3
|
+
import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
|
|
4
|
+
import { FilterCombinations } from '../../enums/FilterCombinations';
|
|
5
|
+
import { ProgrammesBaseIndexabilityPolicy } from '../ProgrammesBaseIndexabilityPolicy';
|
|
6
|
+
import { IProgrammeSeoDependencies } from '../types/IProgrammeSeoDependencies';
|
|
7
|
+
export declare class Country extends ProgrammesBaseIndexabilityPolicy {
|
|
8
|
+
readonly name: string;
|
|
9
|
+
readonly description: string;
|
|
10
|
+
readonly filterKeys: FilterKey[];
|
|
11
|
+
protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule)[];
|
|
12
|
+
constructor(dependencies: IProgrammeSeoDependencies);
|
|
13
|
+
protected generateUrls(): Promise<string[]>;
|
|
14
|
+
get filterCombination(): FilterCombinations;
|
|
15
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { FilterKey } from '@studyportals/search-filters';
|
|
2
|
+
import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
|
|
3
|
+
import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
|
|
4
|
+
import { FilterCombinations } from '../../enums/FilterCombinations';
|
|
5
|
+
import { ProgrammesBaseIndexabilityPolicy } from '../ProgrammesBaseIndexabilityPolicy';
|
|
6
|
+
import { CountryPresenter } from '../../presenters/CountryPresenter';
|
|
7
|
+
export class Country extends ProgrammesBaseIndexabilityPolicy {
|
|
8
|
+
name = 'Country Policy';
|
|
9
|
+
description = 'Governs indexing of country-level filtered pages.';
|
|
10
|
+
filterKeys = [FilterKey.COUNTRY];
|
|
11
|
+
rules = [new SingleValueSelectedForFilterRule(FilterKey.COUNTRY), new OnlyFiltersSelectedRule([FilterKey.COUNTRY])];
|
|
12
|
+
constructor(dependencies) {
|
|
13
|
+
super(dependencies);
|
|
14
|
+
this.initateBaseRules();
|
|
15
|
+
}
|
|
16
|
+
async generateUrls() {
|
|
17
|
+
const countryFragments = CountryPresenter.getInstance().getFragments();
|
|
18
|
+
const paths = [];
|
|
19
|
+
for (const pageNumber of this.indexablePageNumbers) {
|
|
20
|
+
for (const country of countryFragments) {
|
|
21
|
+
const filterKeyValues = new Map([[FilterKey.COUNTRY, [country.id]]]);
|
|
22
|
+
const result = await this.checkRulesForSitemapWithPageNumber(filterKeyValues, pageNumber);
|
|
23
|
+
if (result) {
|
|
24
|
+
paths.push(this.getPathWithPageNumber(country.path, pageNumber));
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return paths;
|
|
29
|
+
}
|
|
30
|
+
get filterCombination() {
|
|
31
|
+
return FilterCombinations.COUNTRY;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { FilterKey } from '@studyportals/search-filters';
|
|
2
|
+
import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
|
|
3
|
+
import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
|
|
4
|
+
import { FilterCombinations } from '../../enums/FilterCombinations';
|
|
5
|
+
import { OnlineAttendanceRule } from '../../common/rules/OnlineAttendanceRule';
|
|
6
|
+
import { ProgrammesBaseIndexabilityPolicy } from '../ProgrammesBaseIndexabilityPolicy';
|
|
7
|
+
import { IProgrammeSeoDependencies } from '../types/IProgrammeSeoDependencies';
|
|
8
|
+
export declare class CountryAttendance extends ProgrammesBaseIndexabilityPolicy {
|
|
9
|
+
readonly name: string;
|
|
10
|
+
readonly description: string;
|
|
11
|
+
readonly filterKeys: FilterKey[];
|
|
12
|
+
protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule | OnlineAttendanceRule)[];
|
|
13
|
+
constructor(dependencies: IProgrammeSeoDependencies);
|
|
14
|
+
protected generateUrls(): Promise<string[]>;
|
|
15
|
+
get filterCombination(): FilterCombinations;
|
|
16
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { FilterKey } from '@studyportals/search-filters';
|
|
2
|
+
import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
|
|
3
|
+
import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
|
|
4
|
+
import { FilterCombinations } from '../../enums/FilterCombinations';
|
|
5
|
+
import { OnlineAttendanceRule } from '../../common/rules/OnlineAttendanceRule';
|
|
6
|
+
import { ProgrammesBaseIndexabilityPolicy } from '../ProgrammesBaseIndexabilityPolicy';
|
|
7
|
+
import { CountryPresenter } from '../../presenters/CountryPresenter';
|
|
8
|
+
import { AttendancePresenter } from '../../presenters/AttendancePresenter';
|
|
9
|
+
export class CountryAttendance extends ProgrammesBaseIndexabilityPolicy {
|
|
10
|
+
name = 'Country Attendance Policy';
|
|
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];
|
|
13
|
+
rules = [
|
|
14
|
+
new SingleValueSelectedForFilterRule(FilterKey.COUNTRY),
|
|
15
|
+
new SingleValueSelectedForFilterRule(FilterKey.DELIVERY_METHOD),
|
|
16
|
+
new OnlyFiltersSelectedRule([FilterKey.COUNTRY, FilterKey.DELIVERY_METHOD]),
|
|
17
|
+
new OnlineAttendanceRule()
|
|
18
|
+
];
|
|
19
|
+
constructor(dependencies) {
|
|
20
|
+
super(dependencies);
|
|
21
|
+
this.initateBaseRules();
|
|
22
|
+
}
|
|
23
|
+
async generateUrls() {
|
|
24
|
+
const countryFragments = CountryPresenter.getInstance().getFragments();
|
|
25
|
+
const attendanceFragments = AttendancePresenter.getInstance().getFragments();
|
|
26
|
+
const paths = [];
|
|
27
|
+
for (const pageNumber of this.indexablePageNumbers) {
|
|
28
|
+
for (const country of countryFragments) {
|
|
29
|
+
for (const attendance of attendanceFragments) {
|
|
30
|
+
const filterKeyValues = new Map([
|
|
31
|
+
[FilterKey.COUNTRY, [country.id]],
|
|
32
|
+
[FilterKey.DELIVERY_METHOD, [attendance.id]]
|
|
33
|
+
]);
|
|
34
|
+
const result = await this.checkRulesForSitemapWithPageNumber(filterKeyValues, pageNumber);
|
|
35
|
+
if (result) {
|
|
36
|
+
paths.push(this.getPathWithPageNumber(`${attendance.path}/${country.path}`, pageNumber));
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return paths;
|
|
42
|
+
}
|
|
43
|
+
get filterCombination() {
|
|
44
|
+
return FilterCombinations.COUNTRY_ATTENDANCE;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { FilterKey } from '@studyportals/search-filters';
|
|
2
|
+
import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
|
|
3
|
+
import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
|
|
4
|
+
import { FilterCombinations } from '../../enums/FilterCombinations';
|
|
5
|
+
import { MbaDegreeRule } from '../rules/MbaDegreeRule';
|
|
6
|
+
import { OnlineAttendanceRule } from '../../common/rules/OnlineAttendanceRule';
|
|
7
|
+
import { ProgrammesBaseIndexabilityPolicy } from '../ProgrammesBaseIndexabilityPolicy';
|
|
8
|
+
import { IProgrammeSeoDependencies } from '../types/IProgrammeSeoDependencies';
|
|
9
|
+
export declare class CountryAttendanceDegree extends ProgrammesBaseIndexabilityPolicy {
|
|
10
|
+
readonly name: string;
|
|
11
|
+
readonly description: string;
|
|
12
|
+
readonly filterKeys: FilterKey[];
|
|
13
|
+
protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule | OnlineAttendanceRule | MbaDegreeRule)[];
|
|
14
|
+
constructor(dependencies: IProgrammeSeoDependencies);
|
|
15
|
+
protected generateUrls(): Promise<string[]>;
|
|
16
|
+
get filterCombination(): FilterCombinations;
|
|
17
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { FilterKey } from '@studyportals/search-filters';
|
|
2
|
+
import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
|
|
3
|
+
import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
|
|
4
|
+
import { FilterCombinations } from '../../enums/FilterCombinations';
|
|
5
|
+
import { MbaDegreeRule } from '../rules/MbaDegreeRule';
|
|
6
|
+
import { OnlineAttendanceRule } from '../../common/rules/OnlineAttendanceRule';
|
|
7
|
+
import { ProgrammesBaseIndexabilityPolicy } from '../ProgrammesBaseIndexabilityPolicy';
|
|
8
|
+
import { CountryPresenter } from '../../presenters/CountryPresenter';
|
|
9
|
+
import { AttendancePresenter } from '../../presenters/AttendancePresenter';
|
|
10
|
+
import { DegreePresenter } from '../../presenters/DegreePresenter';
|
|
11
|
+
export class CountryAttendanceDegree extends ProgrammesBaseIndexabilityPolicy {
|
|
12
|
+
name = 'Country Attendance Degree Policy';
|
|
13
|
+
description = `Determines indexing rules for pages filtered by country,
|
|
14
|
+
study format (online, on-campus, etc.), and degree type.`;
|
|
15
|
+
filterKeys = [FilterKey.COUNTRY, FilterKey.DELIVERY_METHOD, FilterKey.DEGREE_TYPE];
|
|
16
|
+
rules = [
|
|
17
|
+
new SingleValueSelectedForFilterRule(FilterKey.COUNTRY),
|
|
18
|
+
new SingleValueSelectedForFilterRule(FilterKey.DELIVERY_METHOD),
|
|
19
|
+
new SingleValueSelectedForFilterRule(FilterKey.DEGREE_TYPE),
|
|
20
|
+
new OnlyFiltersSelectedRule([FilterKey.COUNTRY, FilterKey.DELIVERY_METHOD, FilterKey.DEGREE_TYPE]),
|
|
21
|
+
new OnlineAttendanceRule(),
|
|
22
|
+
new MbaDegreeRule()
|
|
23
|
+
];
|
|
24
|
+
constructor(dependencies) {
|
|
25
|
+
super(dependencies);
|
|
26
|
+
this.initateBaseRules();
|
|
27
|
+
}
|
|
28
|
+
async generateUrls() {
|
|
29
|
+
const countryFragments = CountryPresenter.getInstance().getFragments();
|
|
30
|
+
const attendanceFragments = AttendancePresenter.getInstance().getFragments();
|
|
31
|
+
const degreeFragments = DegreePresenter.getInstance().getFragments();
|
|
32
|
+
const paths = [];
|
|
33
|
+
for (const pageNumber of this.indexablePageNumbers) {
|
|
34
|
+
for (const country of countryFragments) {
|
|
35
|
+
for (const attendance of attendanceFragments) {
|
|
36
|
+
for (const degree of degreeFragments) {
|
|
37
|
+
const filterKeyValues = new Map([
|
|
38
|
+
[FilterKey.COUNTRY, [country.id]],
|
|
39
|
+
[FilterKey.DELIVERY_METHOD, [attendance.id]],
|
|
40
|
+
[FilterKey.DEGREE_TYPE, [degree.id]]
|
|
41
|
+
]);
|
|
42
|
+
const result = await this.checkRulesForSitemapWithPageNumber(filterKeyValues, pageNumber);
|
|
43
|
+
if (result) {
|
|
44
|
+
paths.push(this.getPathWithPageNumber(`${degree.path}/${attendance.path}/${country.path}`, pageNumber));
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return paths;
|
|
51
|
+
}
|
|
52
|
+
get filterCombination() {
|
|
53
|
+
return FilterCombinations.COUNTRY_ATTENDANCE_DEGREE;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { FilterKey } from '@studyportals/search-filters';
|
|
2
|
+
import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
|
|
3
|
+
import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
|
|
4
|
+
import { FilterCombinations } from '../../enums/FilterCombinations';
|
|
5
|
+
import { IndexableDegreeRule } from '../rules/IndexableDegreeRule';
|
|
6
|
+
import { ProgrammesBaseIndexabilityPolicy } from '../ProgrammesBaseIndexabilityPolicy';
|
|
7
|
+
import { IProgrammeSeoDependencies } from '../types/IProgrammeSeoDependencies';
|
|
8
|
+
export declare class CountryDegree extends ProgrammesBaseIndexabilityPolicy {
|
|
9
|
+
readonly name: string;
|
|
10
|
+
readonly description: string;
|
|
11
|
+
readonly filterKeys: FilterKey[];
|
|
12
|
+
protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule | IndexableDegreeRule)[];
|
|
13
|
+
constructor(dependencies: IProgrammeSeoDependencies);
|
|
14
|
+
protected generateUrls(): Promise<string[]>;
|
|
15
|
+
get filterCombination(): FilterCombinations;
|
|
16
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { FilterKey } from '@studyportals/search-filters';
|
|
2
|
+
import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
|
|
3
|
+
import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
|
|
4
|
+
import { FilterCombinations } from '../../enums/FilterCombinations';
|
|
5
|
+
import { IndexableDegreeRule } from '../rules/IndexableDegreeRule';
|
|
6
|
+
import { ProgrammesBaseIndexabilityPolicy } from '../ProgrammesBaseIndexabilityPolicy';
|
|
7
|
+
import { CountryPresenter } from '../../presenters/CountryPresenter';
|
|
8
|
+
import { DegreePresenter } from '../../presenters/DegreePresenter';
|
|
9
|
+
export class CountryDegree extends ProgrammesBaseIndexabilityPolicy {
|
|
10
|
+
name = 'Country Degree Policy';
|
|
11
|
+
description = 'Determines indexing rules for pages filtered by both country, and degree type.';
|
|
12
|
+
filterKeys = [FilterKey.COUNTRY, FilterKey.DEGREE_TYPE];
|
|
13
|
+
rules = [
|
|
14
|
+
new SingleValueSelectedForFilterRule(FilterKey.COUNTRY),
|
|
15
|
+
new SingleValueSelectedForFilterRule(FilterKey.DEGREE_TYPE),
|
|
16
|
+
new OnlyFiltersSelectedRule([FilterKey.COUNTRY, FilterKey.DEGREE_TYPE]),
|
|
17
|
+
new IndexableDegreeRule()
|
|
18
|
+
];
|
|
19
|
+
constructor(dependencies) {
|
|
20
|
+
super(dependencies);
|
|
21
|
+
this.initateBaseRules();
|
|
22
|
+
}
|
|
23
|
+
async generateUrls() {
|
|
24
|
+
const countryFragments = CountryPresenter.getInstance().getFragments();
|
|
25
|
+
const degreeFragments = DegreePresenter.getInstance().getFragments();
|
|
26
|
+
const paths = [];
|
|
27
|
+
for (const pageNumber of this.indexablePageNumbers) {
|
|
28
|
+
for (const country of countryFragments) {
|
|
29
|
+
for (const degree of degreeFragments) {
|
|
30
|
+
const filterKeyValues = new Map([
|
|
31
|
+
[FilterKey.COUNTRY, [country.id]],
|
|
32
|
+
[FilterKey.DEGREE_TYPE, [degree.id]]
|
|
33
|
+
]);
|
|
34
|
+
const result = await this.checkRulesForSitemapWithPageNumber(filterKeyValues, pageNumber);
|
|
35
|
+
if (result) {
|
|
36
|
+
paths.push(this.getPathWithPageNumber(`${degree.path}/${country.path}`, pageNumber));
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return paths;
|
|
42
|
+
}
|
|
43
|
+
get filterCombination() {
|
|
44
|
+
return FilterCombinations.COUNTRY_DEGREE;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { FilterKey } from '@studyportals/search-filters';
|
|
2
|
+
import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
|
|
3
|
+
import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
|
|
4
|
+
import { FilterCombinations } from '../../enums/FilterCombinations';
|
|
5
|
+
import { IndexableDurationRule } from '../rules/IndexableDurationRule';
|
|
6
|
+
import { ProgrammesBaseIndexabilityPolicy } from '../ProgrammesBaseIndexabilityPolicy';
|
|
7
|
+
import { IProgrammeSeoDependencies } from '../types/IProgrammeSeoDependencies';
|
|
8
|
+
export declare class CountryDuration extends ProgrammesBaseIndexabilityPolicy {
|
|
9
|
+
readonly name: string;
|
|
10
|
+
readonly description: string;
|
|
11
|
+
readonly filterKeys: FilterKey[];
|
|
12
|
+
protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule | IndexableDurationRule)[];
|
|
13
|
+
constructor(dependencies: IProgrammeSeoDependencies);
|
|
14
|
+
protected generateUrls(): Promise<string[]>;
|
|
15
|
+
get filterCombination(): FilterCombinations;
|
|
16
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { FilterKey } from '@studyportals/search-filters';
|
|
2
|
+
import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
|
|
3
|
+
import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
|
|
4
|
+
import { FilterCombinations } from '../../enums/FilterCombinations';
|
|
5
|
+
import { IndexableDurationRule } from '../rules/IndexableDurationRule';
|
|
6
|
+
import { ProgrammesBaseIndexabilityPolicy } from '../ProgrammesBaseIndexabilityPolicy';
|
|
7
|
+
import { CountryPresenter } from '../../presenters/CountryPresenter';
|
|
8
|
+
import { DurationPresenter } from '../../presenters/DurationPresenter';
|
|
9
|
+
export class CountryDuration extends ProgrammesBaseIndexabilityPolicy {
|
|
10
|
+
name = 'Country Duration Policy';
|
|
11
|
+
description = 'Determines indexing rules for pages filtered by both country, and duration (1 year, 2 years, etc.).';
|
|
12
|
+
filterKeys = [FilterKey.COUNTRY, FilterKey.DURATION];
|
|
13
|
+
rules = [
|
|
14
|
+
new SingleValueSelectedForFilterRule(FilterKey.COUNTRY),
|
|
15
|
+
new SingleValueSelectedForFilterRule(FilterKey.DURATION),
|
|
16
|
+
new OnlyFiltersSelectedRule([FilterKey.COUNTRY, FilterKey.DURATION]),
|
|
17
|
+
new IndexableDurationRule()
|
|
18
|
+
];
|
|
19
|
+
constructor(dependencies) {
|
|
20
|
+
super(dependencies);
|
|
21
|
+
this.initateBaseRules();
|
|
22
|
+
}
|
|
23
|
+
async generateUrls() {
|
|
24
|
+
const countryFragments = CountryPresenter.getInstance().getFragments();
|
|
25
|
+
const durationFragments = DurationPresenter.getInstance().getFragments();
|
|
26
|
+
const paths = [];
|
|
27
|
+
for (const pageNumber of this.indexablePageNumbers) {
|
|
28
|
+
for (const country of countryFragments) {
|
|
29
|
+
for (const duration of durationFragments) {
|
|
30
|
+
const filterKeyValues = new Map([
|
|
31
|
+
[FilterKey.COUNTRY, [country.id]],
|
|
32
|
+
[FilterKey.DURATION, [duration.id]]
|
|
33
|
+
]);
|
|
34
|
+
const result = await this.checkRulesForSitemapWithPageNumber(filterKeyValues, pageNumber);
|
|
35
|
+
if (result) {
|
|
36
|
+
paths.push(this.getPathWithPageNumber(`${duration.path}/${country.path}`, pageNumber));
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return paths;
|
|
42
|
+
}
|
|
43
|
+
get filterCombination() {
|
|
44
|
+
return FilterCombinations.COUNTRY_DURATION;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { FilterKey } from '@studyportals/search-filters';
|
|
2
|
+
import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
|
|
3
|
+
import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
|
|
4
|
+
import { FilterCombinations } from '../../enums/FilterCombinations';
|
|
5
|
+
import { OneYearDurationRule } from '../rules/OneYearDurationRule';
|
|
6
|
+
import { MbaOrMscDegreeRule } from '../rules/MbaOrMscDegreeRule';
|
|
7
|
+
import { ProgrammesBaseIndexabilityPolicy } from '../ProgrammesBaseIndexabilityPolicy';
|
|
8
|
+
import { IProgrammeSeoDependencies } from '../types/IProgrammeSeoDependencies';
|
|
9
|
+
export declare class CountryDurationDegree extends ProgrammesBaseIndexabilityPolicy {
|
|
10
|
+
readonly name: string;
|
|
11
|
+
readonly description: string;
|
|
12
|
+
readonly filterKeys: FilterKey[];
|
|
13
|
+
protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule | OneYearDurationRule | MbaOrMscDegreeRule)[];
|
|
14
|
+
constructor(dependencies: IProgrammeSeoDependencies);
|
|
15
|
+
protected generateUrls(): Promise<string[]>;
|
|
16
|
+
get filterCombination(): FilterCombinations;
|
|
17
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { FilterKey } from '@studyportals/search-filters';
|
|
2
|
+
import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
|
|
3
|
+
import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
|
|
4
|
+
import { FilterCombinations } from '../../enums/FilterCombinations';
|
|
5
|
+
import { OneYearDurationRule } from '../rules/OneYearDurationRule';
|
|
6
|
+
import { MbaOrMscDegreeRule } from '../rules/MbaOrMscDegreeRule';
|
|
7
|
+
import { ProgrammesBaseIndexabilityPolicy } from '../ProgrammesBaseIndexabilityPolicy';
|
|
8
|
+
import { CountryPresenter } from '../../presenters/CountryPresenter';
|
|
9
|
+
import { DegreePresenter } from '../../presenters/DegreePresenter';
|
|
10
|
+
import { DurationPresenter } from '../../presenters/DurationPresenter';
|
|
11
|
+
export class CountryDurationDegree extends ProgrammesBaseIndexabilityPolicy {
|
|
12
|
+
name = 'Country Duration Degree Policy';
|
|
13
|
+
description = `Determines indexing rules for pages filtered by country,
|
|
14
|
+
duration (1 year, 2 years, etc.), and degree type.`;
|
|
15
|
+
filterKeys = [FilterKey.COUNTRY, FilterKey.DURATION, FilterKey.DEGREE_TYPE];
|
|
16
|
+
rules = [
|
|
17
|
+
new SingleValueSelectedForFilterRule(FilterKey.COUNTRY),
|
|
18
|
+
new SingleValueSelectedForFilterRule(FilterKey.DURATION),
|
|
19
|
+
new SingleValueSelectedForFilterRule(FilterKey.DEGREE_TYPE),
|
|
20
|
+
new OnlyFiltersSelectedRule([FilterKey.COUNTRY, FilterKey.DURATION, FilterKey.DEGREE_TYPE]),
|
|
21
|
+
new MbaOrMscDegreeRule(),
|
|
22
|
+
new OneYearDurationRule()
|
|
23
|
+
];
|
|
24
|
+
constructor(dependencies) {
|
|
25
|
+
super(dependencies);
|
|
26
|
+
this.initateBaseRules();
|
|
27
|
+
}
|
|
28
|
+
async generateUrls() {
|
|
29
|
+
const countryFragments = CountryPresenter.getInstance().getFragments();
|
|
30
|
+
const degreeFragments = DegreePresenter.getInstance().getFragments();
|
|
31
|
+
const durationFragments = DurationPresenter.getInstance().getFragments();
|
|
32
|
+
const paths = [];
|
|
33
|
+
for (const pageNumber of this.indexablePageNumbers) {
|
|
34
|
+
for (const country of countryFragments) {
|
|
35
|
+
for (const duration of durationFragments) {
|
|
36
|
+
for (const degree of degreeFragments) {
|
|
37
|
+
const filterKeyValues = new Map([
|
|
38
|
+
[FilterKey.COUNTRY, [country.id]],
|
|
39
|
+
[FilterKey.DURATION, [duration.id]],
|
|
40
|
+
[FilterKey.DEGREE_TYPE, [degree.id]]
|
|
41
|
+
]);
|
|
42
|
+
const result = await this.checkRulesForSitemapWithPageNumber(filterKeyValues, pageNumber);
|
|
43
|
+
if (result) {
|
|
44
|
+
paths.push(this.getPathWithPageNumber(`${degree.path}/${duration.path}/${country.path}`, pageNumber));
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return paths;
|
|
51
|
+
}
|
|
52
|
+
get filterCombination() {
|
|
53
|
+
return FilterCombinations.COUNTRY_DURATION_DEGREE;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { FilterKey } from '@studyportals/search-filters';
|
|
2
|
+
import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
|
|
3
|
+
import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
|
|
4
|
+
import { FilterCombinations } from '../../enums/FilterCombinations';
|
|
5
|
+
import { IndexableEducationalFormRule } from '../rules/IndexableEducationalFormRule';
|
|
6
|
+
import { ProgrammesBaseIndexabilityPolicy } from '../ProgrammesBaseIndexabilityPolicy';
|
|
7
|
+
import { IProgrammeSeoDependencies } from '../types/IProgrammeSeoDependencies';
|
|
8
|
+
export declare class CountryEducationalForm extends ProgrammesBaseIndexabilityPolicy {
|
|
9
|
+
readonly name: string;
|
|
10
|
+
readonly description: string;
|
|
11
|
+
readonly filterKeys: FilterKey[];
|
|
12
|
+
protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule | IndexableEducationalFormRule)[];
|
|
13
|
+
constructor(dependencies: IProgrammeSeoDependencies);
|
|
14
|
+
protected generateUrls(): Promise<string[]>;
|
|
15
|
+
get filterCombination(): FilterCombinations;
|
|
16
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { FilterKey } from '@studyportals/search-filters';
|
|
2
|
+
import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
|
|
3
|
+
import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
|
|
4
|
+
import { FilterCombinations } from '../../enums/FilterCombinations';
|
|
5
|
+
import { IndexableEducationalFormRule } from '../rules/IndexableEducationalFormRule';
|
|
6
|
+
import { ProgrammesBaseIndexabilityPolicy } from '../ProgrammesBaseIndexabilityPolicy';
|
|
7
|
+
import { CountryPresenter } from '../../presenters/CountryPresenter';
|
|
8
|
+
import { EducationalFormPresenter } from '../../presenters/EducationalFormPresenter';
|
|
9
|
+
export class CountryEducationalForm extends ProgrammesBaseIndexabilityPolicy {
|
|
10
|
+
name = 'Country Educational Form Policy';
|
|
11
|
+
description = `Determines indexing rules for pages filtered by both country,
|
|
12
|
+
and educational form (academic, semester, summer school, etc.).`;
|
|
13
|
+
filterKeys = [FilterKey.COUNTRY, FilterKey.EDUCATIONAL_FORM];
|
|
14
|
+
rules = [
|
|
15
|
+
new SingleValueSelectedForFilterRule(FilterKey.COUNTRY),
|
|
16
|
+
new SingleValueSelectedForFilterRule(FilterKey.EDUCATIONAL_FORM),
|
|
17
|
+
new OnlyFiltersSelectedRule([FilterKey.COUNTRY, FilterKey.EDUCATIONAL_FORM]),
|
|
18
|
+
new IndexableEducationalFormRule()
|
|
19
|
+
];
|
|
20
|
+
constructor(dependencies) {
|
|
21
|
+
super(dependencies);
|
|
22
|
+
this.initateBaseRules();
|
|
23
|
+
}
|
|
24
|
+
async generateUrls() {
|
|
25
|
+
const countryFragments = CountryPresenter.getInstance().getFragments();
|
|
26
|
+
const educationalFormFragments = EducationalFormPresenter.getInstance().getFragments();
|
|
27
|
+
const paths = [];
|
|
28
|
+
for (const pageNumber of this.indexablePageNumbers) {
|
|
29
|
+
for (const country of countryFragments) {
|
|
30
|
+
for (const form of educationalFormFragments) {
|
|
31
|
+
const filterKeyValues = new Map([
|
|
32
|
+
[FilterKey.COUNTRY, [country.id]],
|
|
33
|
+
[FilterKey.EDUCATIONAL_FORM, [form.id]]
|
|
34
|
+
]);
|
|
35
|
+
const result = await this.checkRulesForSitemapWithPageNumber(filterKeyValues, pageNumber);
|
|
36
|
+
if (result) {
|
|
37
|
+
paths.push(this.getPathWithPageNumber(`${country.path}/${form.path}`, pageNumber));
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return paths;
|
|
43
|
+
}
|
|
44
|
+
get filterCombination() {
|
|
45
|
+
return FilterCombinations.COUNTRY_EDUCATIONAL_FORM;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { FilterKey } from '@studyportals/search-filters';
|
|
2
|
+
import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
|
|
3
|
+
import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
|
|
4
|
+
import { FilterCombinations } from '../../enums/FilterCombinations';
|
|
5
|
+
import { PartTimeFormatRule } from '../rules/PartTimeFormatRule';
|
|
6
|
+
import { ProgrammesBaseIndexabilityPolicy } from '../ProgrammesBaseIndexabilityPolicy';
|
|
7
|
+
import { IProgrammeSeoDependencies } from '../types/IProgrammeSeoDependencies';
|
|
8
|
+
export declare class CountryFormat extends ProgrammesBaseIndexabilityPolicy {
|
|
9
|
+
readonly name: string;
|
|
10
|
+
readonly description: string;
|
|
11
|
+
readonly filterKeys: FilterKey[];
|
|
12
|
+
protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule | PartTimeFormatRule)[];
|
|
13
|
+
constructor(dependencies: IProgrammeSeoDependencies);
|
|
14
|
+
protected generateUrls(): Promise<string[]>;
|
|
15
|
+
get filterCombination(): FilterCombinations;
|
|
16
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { FilterKey } from '@studyportals/search-filters';
|
|
2
|
+
import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
|
|
3
|
+
import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
|
|
4
|
+
import { FilterCombinations } from '../../enums/FilterCombinations';
|
|
5
|
+
import { PartTimeFormatRule } from '../rules/PartTimeFormatRule';
|
|
6
|
+
import { ProgrammesBaseIndexabilityPolicy } from '../ProgrammesBaseIndexabilityPolicy';
|
|
7
|
+
import { CountryPresenter } from '../../presenters/CountryPresenter';
|
|
8
|
+
import { FormatPresenter } from '../../presenters/FormatPresenter';
|
|
9
|
+
export class CountryFormat extends ProgrammesBaseIndexabilityPolicy {
|
|
10
|
+
name = 'Country Format Policy';
|
|
11
|
+
description = 'Determines indexing rules for pages filtered by both country, and attendance type (part-time or fulltime).';
|
|
12
|
+
filterKeys = [FilterKey.COUNTRY, FilterKey.ATTENDANCE];
|
|
13
|
+
rules = [
|
|
14
|
+
new SingleValueSelectedForFilterRule(FilterKey.COUNTRY),
|
|
15
|
+
new SingleValueSelectedForFilterRule(FilterKey.ATTENDANCE),
|
|
16
|
+
new OnlyFiltersSelectedRule([FilterKey.COUNTRY, FilterKey.ATTENDANCE]),
|
|
17
|
+
new PartTimeFormatRule()
|
|
18
|
+
];
|
|
19
|
+
constructor(dependencies) {
|
|
20
|
+
super(dependencies);
|
|
21
|
+
this.initateBaseRules();
|
|
22
|
+
}
|
|
23
|
+
async generateUrls() {
|
|
24
|
+
const countryFragments = CountryPresenter.getInstance().getFragments();
|
|
25
|
+
const formatFragments = FormatPresenter.getInstance().getFragments();
|
|
26
|
+
const paths = [];
|
|
27
|
+
for (const pageNumber of this.indexablePageNumbers) {
|
|
28
|
+
for (const country of countryFragments) {
|
|
29
|
+
for (const format of formatFragments) {
|
|
30
|
+
const filterKeyValues = new Map([
|
|
31
|
+
[FilterKey.COUNTRY, [country.id]],
|
|
32
|
+
[FilterKey.ATTENDANCE, [format.id]]
|
|
33
|
+
]);
|
|
34
|
+
const result = await this.checkRulesForSitemapWithPageNumber(filterKeyValues, pageNumber);
|
|
35
|
+
if (result) {
|
|
36
|
+
paths.push(this.getPathWithPageNumber(`${country.path}/${format.path}`, pageNumber));
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return paths;
|
|
42
|
+
}
|
|
43
|
+
get filterCombination() {
|
|
44
|
+
return FilterCombinations.COUNTRY_FORMAT;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { FilterKey } from '@studyportals/search-filters';
|
|
2
|
+
import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
|
|
3
|
+
import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
|
|
4
|
+
import { FilterCombinations } from '../../enums/FilterCombinations';
|
|
5
|
+
import { AffordableTuitionFeeRule } from '../rules/AffordableTuitionFeeRule';
|
|
6
|
+
import { ProgrammesBaseIndexabilityPolicy } from '../ProgrammesBaseIndexabilityPolicy';
|
|
7
|
+
import { IProgrammeSeoDependencies } from '../types/IProgrammeSeoDependencies';
|
|
8
|
+
export declare class CountryTuitionFee extends ProgrammesBaseIndexabilityPolicy {
|
|
9
|
+
readonly name: string;
|
|
10
|
+
readonly description: string;
|
|
11
|
+
readonly filterKeys: FilterKey[];
|
|
12
|
+
protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule | AffordableTuitionFeeRule)[];
|
|
13
|
+
constructor(dependencies: IProgrammeSeoDependencies);
|
|
14
|
+
protected generateUrls(): Promise<string[]>;
|
|
15
|
+
get filterCombination(): FilterCombinations;
|
|
16
|
+
}
|