@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,43 @@
|
|
|
1
|
+
import { FilterCombinations } from '../../../enums/FilterCombinations';
|
|
2
|
+
import { FilterKey } from '@studyportals/search-filters';
|
|
3
|
+
import { SortingOptions } from '../../../enums/SortingOptions';
|
|
4
|
+
import { OrganisationsSeoIndexabilityPolicy } from '../../../organisations/policies/OrganisationsSeoIndexabilityPolicy';
|
|
5
|
+
import { SingleValueSelectedForFilterRule } from '../../../common/rules/SingleValueSelectedForFilterRule';
|
|
6
|
+
import { OnlyFiltersSelectedRule } from '../../../common/rules/OnlyFiltersSelectedRule';
|
|
7
|
+
import { OnlineAttendanceRule } from '../../../common/rules/OnlineAttendanceRule';
|
|
8
|
+
import { SearchVolumeCountriesAttendanceRule } from '../../../organisations/rules/SearchVolumeCountriesAttendanceRule';
|
|
9
|
+
import { CountryPresenter } from '../../../presenters/CountryPresenter';
|
|
10
|
+
import { AttendancePresenter } from '../../../presenters/AttendancePresenter';
|
|
11
|
+
export class CountryAttendance extends OrganisationsSeoIndexabilityPolicy {
|
|
12
|
+
name = 'Country Attendance Policy';
|
|
13
|
+
description = 'Regulates indexability for pages combining country and attendance type filters, optimizing for country-specific study format pages.';
|
|
14
|
+
sortingOption = SortingOptions.OUR_PICKS;
|
|
15
|
+
baseRules = [
|
|
16
|
+
new SingleValueSelectedForFilterRule(FilterKey.COUNTRY),
|
|
17
|
+
new SingleValueSelectedForFilterRule(FilterKey.DELIVERY_METHOD),
|
|
18
|
+
new OnlyFiltersSelectedRule([FilterKey.COUNTRY, FilterKey.DELIVERY_METHOD]),
|
|
19
|
+
new SearchVolumeCountriesAttendanceRule(),
|
|
20
|
+
new OnlineAttendanceRule()
|
|
21
|
+
];
|
|
22
|
+
get filterCombination() {
|
|
23
|
+
return FilterCombinations.COUNTRY_ATTENDANCE;
|
|
24
|
+
}
|
|
25
|
+
async generateUrls() {
|
|
26
|
+
const countryFragments = CountryPresenter.getInstance().getFragments();
|
|
27
|
+
const attendanceFragments = AttendancePresenter.getInstance().getFragments();
|
|
28
|
+
const paths = [];
|
|
29
|
+
for (const country of countryFragments) {
|
|
30
|
+
for (const attendance of attendanceFragments) {
|
|
31
|
+
const filterKeyValues = new Map([
|
|
32
|
+
[FilterKey.COUNTRY, [country.id]],
|
|
33
|
+
[FilterKey.DELIVERY_METHOD, [attendance.id]]
|
|
34
|
+
]);
|
|
35
|
+
const result = await this.checkRulesForSitemap(filterKeyValues);
|
|
36
|
+
if (result) {
|
|
37
|
+
paths.push(this.getPathWithSortingOption(`${attendance.path}/${country.path}`));
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return paths;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { OrganisationsSeoIndexabilityPolicy } from '../../../organisations/policies/OrganisationsSeoIndexabilityPolicy';
|
|
2
|
+
import { FilterCombinations } from '../../../enums/FilterCombinations';
|
|
3
|
+
import { SortingOptions } from '../../../enums/SortingOptions';
|
|
4
|
+
import { NoFiltersSelectedRule } from '../../../common/rules/NoFiltersSelectedRule';
|
|
5
|
+
export declare class Unfiltered extends OrganisationsSeoIndexabilityPolicy {
|
|
6
|
+
readonly name: string;
|
|
7
|
+
readonly description: string;
|
|
8
|
+
protected readonly sortingOption = SortingOptions.OUR_PICKS;
|
|
9
|
+
protected readonly baseRules: NoFiltersSelectedRule[];
|
|
10
|
+
protected generateUrls(): Promise<string[]>;
|
|
11
|
+
get filterCombination(): FilterCombinations;
|
|
12
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { OrganisationsSeoIndexabilityPolicy } from '../../../organisations/policies/OrganisationsSeoIndexabilityPolicy';
|
|
2
|
+
import { FilterCombinations } from '../../../enums/FilterCombinations';
|
|
3
|
+
import { SortingOptions } from '../../../enums/SortingOptions';
|
|
4
|
+
import { NoFiltersSelectedRule } from '../../../common/rules/NoFiltersSelectedRule';
|
|
5
|
+
export class Unfiltered extends OrganisationsSeoIndexabilityPolicy {
|
|
6
|
+
name = 'Unfiltered Policy';
|
|
7
|
+
description = 'Defines indexability rules for unfiltered pages, managing crawl budget by ensuring only high-value aggregate pages are included in the sitemap.';
|
|
8
|
+
sortingOption = SortingOptions.OUR_PICKS;
|
|
9
|
+
baseRules = [new NoFiltersSelectedRule()];
|
|
10
|
+
generateUrls() {
|
|
11
|
+
return Promise.resolve([this.getPathWithSortingOption('')]);
|
|
12
|
+
}
|
|
13
|
+
get filterCombination() {
|
|
14
|
+
return FilterCombinations.UNFILTERED;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { FilterCombinations } from '../../../enums/FilterCombinations';
|
|
2
|
+
import { SingleValueSelectedForFilterRule } from '../../../common/rules/SingleValueSelectedForFilterRule';
|
|
3
|
+
import { OnlyFiltersSelectedRule } from '../../../common/rules/OnlyFiltersSelectedRule';
|
|
4
|
+
import { RankedOrganisationsSeoIndexabilityPolicy } from '../RankedOrganisationsSeoIndexabilityPolicy';
|
|
5
|
+
import { IOrganisationsSeoDependencies } from '../../../organisations/types/IOrganisationsSeoDependencies';
|
|
6
|
+
export declare class RankedArea extends RankedOrganisationsSeoIndexabilityPolicy {
|
|
7
|
+
readonly name: string;
|
|
8
|
+
readonly description: string;
|
|
9
|
+
protected readonly baseRules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule)[];
|
|
10
|
+
constructor(dependencies: IOrganisationsSeoDependencies);
|
|
11
|
+
protected generateUrls(): Promise<string[]>;
|
|
12
|
+
get filterCombination(): FilterCombinations;
|
|
13
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { FilterCombinations } from '../../../enums/FilterCombinations';
|
|
2
|
+
import { FilterKey } from '@studyportals/search-filters';
|
|
3
|
+
import { SingleValueSelectedForFilterRule } from '../../../common/rules/SingleValueSelectedForFilterRule';
|
|
4
|
+
import { OnlyFiltersSelectedRule } from '../../../common/rules/OnlyFiltersSelectedRule';
|
|
5
|
+
import { AreaPresenter } from '../../../presenters/AreaPresenter';
|
|
6
|
+
import { RankedOrganisationsSeoIndexabilityPolicy } from '../RankedOrganisationsSeoIndexabilityPolicy';
|
|
7
|
+
export class RankedArea extends RankedOrganisationsSeoIndexabilityPolicy {
|
|
8
|
+
name = 'Ranked Area Policy';
|
|
9
|
+
description = 'Controls indexing for ranking-sorted pages filtered by geographic areas, optimizing for region-specific content with quality-based result ordering.';
|
|
10
|
+
baseRules = [
|
|
11
|
+
new SingleValueSelectedForFilterRule(FilterKey.AREA),
|
|
12
|
+
new SingleValueSelectedForFilterRule(FilterKey.COUNTRY),
|
|
13
|
+
new OnlyFiltersSelectedRule([FilterKey.AREA, FilterKey.COUNTRY])
|
|
14
|
+
];
|
|
15
|
+
constructor(dependencies) {
|
|
16
|
+
super(dependencies);
|
|
17
|
+
}
|
|
18
|
+
async generateUrls() {
|
|
19
|
+
const areaFragments = AreaPresenter.getInstance().getFragments();
|
|
20
|
+
const paths = [];
|
|
21
|
+
for (const area of areaFragments) {
|
|
22
|
+
const filterKeyValues = new Map([
|
|
23
|
+
[FilterKey.AREA, [area.id]],
|
|
24
|
+
[FilterKey.COUNTRY, [area.countryId]]
|
|
25
|
+
]);
|
|
26
|
+
const result = await this.checkRulesForSitemap(filterKeyValues);
|
|
27
|
+
if (result) {
|
|
28
|
+
paths.push(this.getPathWithSortingOption(area.path));
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return paths;
|
|
32
|
+
}
|
|
33
|
+
get filterCombination() {
|
|
34
|
+
return FilterCombinations.RANKED_AREA;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { SearchVolumeAreasDisciplineRule } from '../../../organisations/rules/SearchVolumeAreasDisciplineRule';
|
|
2
|
+
import { FilterCombinations } from '../../../enums/FilterCombinations';
|
|
3
|
+
import { SingleValueSelectedForFilterRule } from '../../../common/rules/SingleValueSelectedForFilterRule';
|
|
4
|
+
import { OnlyFiltersSelectedRule } from '../../../common/rules/OnlyFiltersSelectedRule';
|
|
5
|
+
import { RankedOrganisationsSeoIndexabilityPolicy } from '../RankedOrganisationsSeoIndexabilityPolicy';
|
|
6
|
+
import { IOrganisationsSeoDependencies } from '../../../organisations/types/IOrganisationsSeoDependencies';
|
|
7
|
+
export declare class RankedAreaDiscipline extends RankedOrganisationsSeoIndexabilityPolicy {
|
|
8
|
+
readonly name: string;
|
|
9
|
+
readonly description: string;
|
|
10
|
+
protected readonly baseRules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule | SearchVolumeAreasDisciplineRule)[];
|
|
11
|
+
constructor(dependencies: IOrganisationsSeoDependencies);
|
|
12
|
+
get filterCombination(): FilterCombinations;
|
|
13
|
+
protected generateUrls(): Promise<string[]>;
|
|
14
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { SearchVolumeAreasDisciplineRule } from '../../../organisations/rules/SearchVolumeAreasDisciplineRule';
|
|
2
|
+
import { FilterCombinations } from '../../../enums/FilterCombinations';
|
|
3
|
+
import { FilterKey } from '@studyportals/search-filters';
|
|
4
|
+
import { SingleValueSelectedForFilterRule } from '../../../common/rules/SingleValueSelectedForFilterRule';
|
|
5
|
+
import { OnlyFiltersSelectedRule } from '../../../common/rules/OnlyFiltersSelectedRule';
|
|
6
|
+
import { AreaPresenter } from '../../../presenters/AreaPresenter';
|
|
7
|
+
import { DisciplinePresenter } from '../../../presenters/DisciplinePresenter';
|
|
8
|
+
import { RankedOrganisationsSeoIndexabilityPolicy } from '../RankedOrganisationsSeoIndexabilityPolicy';
|
|
9
|
+
export class RankedAreaDiscipline extends RankedOrganisationsSeoIndexabilityPolicy {
|
|
10
|
+
name = 'Ranked Area Discipline Policy';
|
|
11
|
+
description = 'Controls indexing for ranking-sorted pages filtered by geographic areas, optimizing for region-specific content with quality-based result ordering.';
|
|
12
|
+
baseRules = [
|
|
13
|
+
new SingleValueSelectedForFilterRule(FilterKey.AREA),
|
|
14
|
+
new SingleValueSelectedForFilterRule(FilterKey.COUNTRY),
|
|
15
|
+
new SingleValueSelectedForFilterRule(FilterKey.DISCIPLINES),
|
|
16
|
+
new OnlyFiltersSelectedRule([FilterKey.AREA, FilterKey.COUNTRY, FilterKey.DISCIPLINES]),
|
|
17
|
+
new SearchVolumeAreasDisciplineRule()
|
|
18
|
+
];
|
|
19
|
+
constructor(dependencies) {
|
|
20
|
+
super(dependencies);
|
|
21
|
+
}
|
|
22
|
+
get filterCombination() {
|
|
23
|
+
return FilterCombinations.RANKED_AREA_DISCIPLINE;
|
|
24
|
+
}
|
|
25
|
+
async generateUrls() {
|
|
26
|
+
const areaFragments = AreaPresenter.getInstance().getFragments();
|
|
27
|
+
const disciplineFragments = DisciplinePresenter.getInstance().getFragments();
|
|
28
|
+
const paths = [];
|
|
29
|
+
for (const area of areaFragments) {
|
|
30
|
+
for (const discipline of disciplineFragments) {
|
|
31
|
+
const filterKeyValues = new Map([
|
|
32
|
+
[FilterKey.AREA, [area.id]],
|
|
33
|
+
[FilterKey.COUNTRY, [area.countryId]],
|
|
34
|
+
[FilterKey.DISCIPLINES, [discipline.id]]
|
|
35
|
+
]);
|
|
36
|
+
const result = await this.checkRulesForSitemap(filterKeyValues);
|
|
37
|
+
if (result) {
|
|
38
|
+
paths.push(this.getPathWithSortingOption(`${area.path}/${discipline.path}`));
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return paths;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { OnlineAttendanceRule } from '../../../common/rules/OnlineAttendanceRule';
|
|
2
|
+
import { FilterCombinations } from '../../../enums/FilterCombinations';
|
|
3
|
+
import { SingleValueSelectedForFilterRule } from '../../../common/rules/SingleValueSelectedForFilterRule';
|
|
4
|
+
import { OnlyFiltersSelectedRule } from '../../../common/rules/OnlyFiltersSelectedRule';
|
|
5
|
+
import { RankedOrganisationsSeoIndexabilityPolicy } from '../RankedOrganisationsSeoIndexabilityPolicy';
|
|
6
|
+
import { IOrganisationsSeoDependencies } from '../../../organisations/types/IOrganisationsSeoDependencies';
|
|
7
|
+
export declare class RankedAttendance extends RankedOrganisationsSeoIndexabilityPolicy {
|
|
8
|
+
readonly name: string;
|
|
9
|
+
readonly description: string;
|
|
10
|
+
protected readonly baseRules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule | OnlineAttendanceRule)[];
|
|
11
|
+
constructor(dependencies: IOrganisationsSeoDependencies);
|
|
12
|
+
protected generateUrls(): Promise<string[]>;
|
|
13
|
+
get filterCombination(): FilterCombinations;
|
|
14
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { OnlineAttendanceRule } from '../../../common/rules/OnlineAttendanceRule';
|
|
2
|
+
import { FilterCombinations } from '../../../enums/FilterCombinations';
|
|
3
|
+
import { FilterKey } from '@studyportals/search-filters';
|
|
4
|
+
import { SingleValueSelectedForFilterRule } from '../../../common/rules/SingleValueSelectedForFilterRule';
|
|
5
|
+
import { OnlyFiltersSelectedRule } from '../../../common/rules/OnlyFiltersSelectedRule';
|
|
6
|
+
import { AttendancePresenter } from '../../../presenters/AttendancePresenter';
|
|
7
|
+
import { RankedOrganisationsSeoIndexabilityPolicy } from '../RankedOrganisationsSeoIndexabilityPolicy';
|
|
8
|
+
export class RankedAttendance extends RankedOrganisationsSeoIndexabilityPolicy {
|
|
9
|
+
name = 'Ranked Attendance Policy';
|
|
10
|
+
description = 'Determines which ranking-sorted pages filtered by attendance type qualify for indexing based on format-specific search patterns.';
|
|
11
|
+
baseRules = [
|
|
12
|
+
new SingleValueSelectedForFilterRule(FilterKey.DELIVERY_METHOD),
|
|
13
|
+
new OnlyFiltersSelectedRule([FilterKey.DELIVERY_METHOD]),
|
|
14
|
+
new OnlineAttendanceRule()
|
|
15
|
+
];
|
|
16
|
+
constructor(dependencies) {
|
|
17
|
+
super(dependencies);
|
|
18
|
+
}
|
|
19
|
+
async generateUrls() {
|
|
20
|
+
const attendanceFragments = AttendancePresenter.getInstance().getFragments();
|
|
21
|
+
const paths = [];
|
|
22
|
+
for (const attendance of attendanceFragments) {
|
|
23
|
+
const filterKeyValues = new Map([[FilterKey.DELIVERY_METHOD, [attendance.id]]]);
|
|
24
|
+
const result = await this.checkRulesForSitemap(filterKeyValues);
|
|
25
|
+
if (result) {
|
|
26
|
+
paths.push(this.getPathWithSortingOption(attendance.path));
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return paths;
|
|
30
|
+
}
|
|
31
|
+
get filterCombination() {
|
|
32
|
+
return FilterCombinations.RANKED_ATTENDANCE;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { FilterCombinations } from '../../../enums/FilterCombinations';
|
|
2
|
+
import { SingleValueSelectedForFilterRule } from '../../../common/rules/SingleValueSelectedForFilterRule';
|
|
3
|
+
import { OnlyFiltersSelectedRule } from '../../../common/rules/OnlyFiltersSelectedRule';
|
|
4
|
+
import { OnlineAttendanceRule } from '../../../common/rules/OnlineAttendanceRule';
|
|
5
|
+
import { RankedOrganisationsSeoIndexabilityPolicy } from '../RankedOrganisationsSeoIndexabilityPolicy';
|
|
6
|
+
import { IOrganisationsSeoDependencies } from '../../../organisations/types/IOrganisationsSeoDependencies';
|
|
7
|
+
export declare class RankedAttendanceDiscipline extends RankedOrganisationsSeoIndexabilityPolicy {
|
|
8
|
+
readonly name: string;
|
|
9
|
+
readonly description: string;
|
|
10
|
+
protected readonly baseRules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule | OnlineAttendanceRule)[];
|
|
11
|
+
constructor(dependencies: IOrganisationsSeoDependencies);
|
|
12
|
+
get filterCombination(): FilterCombinations;
|
|
13
|
+
protected generateUrls(): Promise<string[]>;
|
|
14
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { FilterCombinations } from '../../../enums/FilterCombinations';
|
|
2
|
+
import { FilterKey } from '@studyportals/search-filters';
|
|
3
|
+
import { SingleValueSelectedForFilterRule } from '../../../common/rules/SingleValueSelectedForFilterRule';
|
|
4
|
+
import { OnlyFiltersSelectedRule } from '../../../common/rules/OnlyFiltersSelectedRule';
|
|
5
|
+
import { OnlineAttendanceRule } from '../../../common/rules/OnlineAttendanceRule';
|
|
6
|
+
import { AttendancePresenter } from '../../../presenters/AttendancePresenter';
|
|
7
|
+
import { DisciplinePresenter } from '../../../presenters/DisciplinePresenter';
|
|
8
|
+
import { RankedOrganisationsSeoIndexabilityPolicy } from '../RankedOrganisationsSeoIndexabilityPolicy';
|
|
9
|
+
export class RankedAttendanceDiscipline extends RankedOrganisationsSeoIndexabilityPolicy {
|
|
10
|
+
name = 'Ranked Attendance Discipline Policy';
|
|
11
|
+
description = 'Manages indexing for ranking-sorted pages at the intersection of attendance type and academic discipline filters.';
|
|
12
|
+
baseRules = [
|
|
13
|
+
new SingleValueSelectedForFilterRule(FilterKey.DELIVERY_METHOD),
|
|
14
|
+
new SingleValueSelectedForFilterRule(FilterKey.DISCIPLINES),
|
|
15
|
+
new OnlyFiltersSelectedRule([FilterKey.DELIVERY_METHOD, FilterKey.DISCIPLINES]),
|
|
16
|
+
new OnlineAttendanceRule()
|
|
17
|
+
];
|
|
18
|
+
constructor(dependencies) {
|
|
19
|
+
super(dependencies);
|
|
20
|
+
}
|
|
21
|
+
get filterCombination() {
|
|
22
|
+
return FilterCombinations.RANKED_ATTENDANCE_DISCIPLINE;
|
|
23
|
+
}
|
|
24
|
+
async generateUrls() {
|
|
25
|
+
const attendanceFragments = AttendancePresenter.getInstance().getFragments();
|
|
26
|
+
const disciplineFragments = DisciplinePresenter.getInstance().getFragments();
|
|
27
|
+
const paths = [];
|
|
28
|
+
for (const attendance of attendanceFragments) {
|
|
29
|
+
for (const discipline of disciplineFragments) {
|
|
30
|
+
const filterKeyValues = new Map([
|
|
31
|
+
[FilterKey.DELIVERY_METHOD, [attendance.id]],
|
|
32
|
+
[FilterKey.DISCIPLINES, [discipline.id]]
|
|
33
|
+
]);
|
|
34
|
+
const result = await this.checkRulesForSitemap(filterKeyValues);
|
|
35
|
+
if (result) {
|
|
36
|
+
paths.push(this.getPathWithSortingOption(`${attendance.path}/${discipline.path}`));
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return paths;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { FilterCombinations } from '../../../enums/FilterCombinations';
|
|
2
|
+
import { SingleValueSelectedForFilterRule } from '../../../common/rules/SingleValueSelectedForFilterRule';
|
|
3
|
+
import { OnlyFiltersSelectedRule } from '../../../common/rules/OnlyFiltersSelectedRule';
|
|
4
|
+
import { RankedOrganisationsSeoIndexabilityPolicy } from '../RankedOrganisationsSeoIndexabilityPolicy';
|
|
5
|
+
import { IOrganisationsSeoDependencies } from '../../../organisations/types/IOrganisationsSeoDependencies';
|
|
6
|
+
export declare class RankedContinent extends RankedOrganisationsSeoIndexabilityPolicy {
|
|
7
|
+
readonly name: string;
|
|
8
|
+
readonly description: string;
|
|
9
|
+
protected readonly baseRules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule)[];
|
|
10
|
+
constructor(dependencies: IOrganisationsSeoDependencies);
|
|
11
|
+
protected generateUrls(): Promise<string[]>;
|
|
12
|
+
get filterCombination(): FilterCombinations;
|
|
13
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { FilterCombinations } from '../../../enums/FilterCombinations';
|
|
2
|
+
import { FilterKey } from '@studyportals/search-filters';
|
|
3
|
+
import { SingleValueSelectedForFilterRule } from '../../../common/rules/SingleValueSelectedForFilterRule';
|
|
4
|
+
import { OnlyFiltersSelectedRule } from '../../../common/rules/OnlyFiltersSelectedRule';
|
|
5
|
+
import { ContinentPresenter } from '../../../presenters/ContinentPresenter';
|
|
6
|
+
import { RankedOrganisationsSeoIndexabilityPolicy } from '../RankedOrganisationsSeoIndexabilityPolicy';
|
|
7
|
+
export class RankedContinent extends RankedOrganisationsSeoIndexabilityPolicy {
|
|
8
|
+
name = 'Ranked Continent Policy';
|
|
9
|
+
description = 'Regulates indexability of ranking-sorted continent-level filtered pages, prioritizing high-value continental views with quality-based sorting.';
|
|
10
|
+
baseRules = [
|
|
11
|
+
new SingleValueSelectedForFilterRule(FilterKey.CONTINENT),
|
|
12
|
+
new OnlyFiltersSelectedRule([FilterKey.CONTINENT])
|
|
13
|
+
];
|
|
14
|
+
constructor(dependencies) {
|
|
15
|
+
super(dependencies);
|
|
16
|
+
}
|
|
17
|
+
async generateUrls() {
|
|
18
|
+
const continentFragments = ContinentPresenter.getInstance().getFragments();
|
|
19
|
+
const paths = [];
|
|
20
|
+
for (const continent of continentFragments) {
|
|
21
|
+
const filterKeyValues = new Map([[FilterKey.CONTINENT, [continent.id]]]);
|
|
22
|
+
const result = await this.checkRulesForSitemap(filterKeyValues);
|
|
23
|
+
if (result) {
|
|
24
|
+
paths.push(this.getPathWithSortingOption(continent.path));
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
return paths;
|
|
28
|
+
}
|
|
29
|
+
get filterCombination() {
|
|
30
|
+
return FilterCombinations.RANKED_CONTINENT;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { FilterCombinations } from '../../../enums/FilterCombinations';
|
|
2
|
+
import { SingleValueSelectedForFilterRule } from '../../../common/rules/SingleValueSelectedForFilterRule';
|
|
3
|
+
import { OnlyFiltersSelectedRule } from '../../../common/rules/OnlyFiltersSelectedRule';
|
|
4
|
+
import { OnlineAttendanceRule } from '../../../common/rules/OnlineAttendanceRule';
|
|
5
|
+
import { ContinentIsEuropeRule } from '../../../organisations/rules/ContinentIsEuropeRule';
|
|
6
|
+
import { RankedOrganisationsSeoIndexabilityPolicy } from '../RankedOrganisationsSeoIndexabilityPolicy';
|
|
7
|
+
import { IOrganisationsSeoDependencies } from '../../../organisations/types/IOrganisationsSeoDependencies';
|
|
8
|
+
export declare class RankedContinentAttendance extends RankedOrganisationsSeoIndexabilityPolicy {
|
|
9
|
+
readonly name: string;
|
|
10
|
+
readonly description: string;
|
|
11
|
+
protected readonly baseRules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule | OnlineAttendanceRule | ContinentIsEuropeRule)[];
|
|
12
|
+
constructor(dependencies: IOrganisationsSeoDependencies);
|
|
13
|
+
protected generateUrls(): Promise<string[]>;
|
|
14
|
+
get filterCombination(): FilterCombinations;
|
|
15
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { FilterCombinations } from '../../../enums/FilterCombinations';
|
|
2
|
+
import { FilterKey } from '@studyportals/search-filters';
|
|
3
|
+
import { SingleValueSelectedForFilterRule } from '../../../common/rules/SingleValueSelectedForFilterRule';
|
|
4
|
+
import { OnlyFiltersSelectedRule } from '../../../common/rules/OnlyFiltersSelectedRule';
|
|
5
|
+
import { OnlineAttendanceRule } from '../../../common/rules/OnlineAttendanceRule';
|
|
6
|
+
import { ContinentIsEuropeRule } from '../../../organisations/rules/ContinentIsEuropeRule';
|
|
7
|
+
import { ContinentPresenter } from '../../../presenters/ContinentPresenter';
|
|
8
|
+
import { AttendancePresenter } from '../../../presenters/AttendancePresenter';
|
|
9
|
+
import { RankedOrganisationsSeoIndexabilityPolicy } from '../RankedOrganisationsSeoIndexabilityPolicy';
|
|
10
|
+
export class RankedContinentAttendance extends RankedOrganisationsSeoIndexabilityPolicy {
|
|
11
|
+
name = 'Ranked Continent Attendance Policy';
|
|
12
|
+
description = 'Controls indexing for ranking-sorted pages combining continent and attendance filters, optimizing for continental study format combinations.';
|
|
13
|
+
baseRules = [
|
|
14
|
+
new SingleValueSelectedForFilterRule(FilterKey.CONTINENT),
|
|
15
|
+
new SingleValueSelectedForFilterRule(FilterKey.DELIVERY_METHOD),
|
|
16
|
+
new OnlyFiltersSelectedRule([FilterKey.CONTINENT, FilterKey.DELIVERY_METHOD]),
|
|
17
|
+
new ContinentIsEuropeRule(),
|
|
18
|
+
new OnlineAttendanceRule()
|
|
19
|
+
];
|
|
20
|
+
constructor(dependencies) {
|
|
21
|
+
super(dependencies);
|
|
22
|
+
}
|
|
23
|
+
async generateUrls() {
|
|
24
|
+
const continentFragments = ContinentPresenter.getInstance().getFragments();
|
|
25
|
+
const attendanceFragments = AttendancePresenter.getInstance().getFragments();
|
|
26
|
+
const paths = [];
|
|
27
|
+
for (const continent of continentFragments) {
|
|
28
|
+
for (const attendance of attendanceFragments) {
|
|
29
|
+
const filterKeyValues = new Map([
|
|
30
|
+
[FilterKey.CONTINENT, [continent.id]],
|
|
31
|
+
[FilterKey.DELIVERY_METHOD, [attendance.id]]
|
|
32
|
+
]);
|
|
33
|
+
const result = await this.checkRulesForSitemap(filterKeyValues);
|
|
34
|
+
if (result) {
|
|
35
|
+
paths.push(this.getPathWithSortingOption(`${attendance.path}/${continent.path}`));
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return paths;
|
|
40
|
+
}
|
|
41
|
+
get filterCombination() {
|
|
42
|
+
return FilterCombinations.RANKED_CONTINENT_ATTENDANCE;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { SingleValueSelectedForFilterRule } from '../../../common/rules/SingleValueSelectedForFilterRule';
|
|
2
|
+
import { FilterCombinations } from '../../../enums/FilterCombinations';
|
|
3
|
+
import { OnlyFiltersSelectedRule } from '../../../common/rules/OnlyFiltersSelectedRule';
|
|
4
|
+
import { RankedOrganisationsSeoIndexabilityPolicy } from '../RankedOrganisationsSeoIndexabilityPolicy';
|
|
5
|
+
import { IOrganisationsSeoDependencies } from '../../../organisations/types/IOrganisationsSeoDependencies';
|
|
6
|
+
export declare class RankedCountry extends RankedOrganisationsSeoIndexabilityPolicy {
|
|
7
|
+
readonly name: string;
|
|
8
|
+
readonly description: string;
|
|
9
|
+
protected readonly baseRules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule)[];
|
|
10
|
+
constructor(dependencies: IOrganisationsSeoDependencies);
|
|
11
|
+
protected generateUrls(): Promise<string[]>;
|
|
12
|
+
get filterCombination(): FilterCombinations;
|
|
13
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { SingleValueSelectedForFilterRule } from '../../../common/rules/SingleValueSelectedForFilterRule';
|
|
2
|
+
import { FilterCombinations } from '../../../enums/FilterCombinations';
|
|
3
|
+
import { FilterKey } from '@studyportals/search-filters';
|
|
4
|
+
import { OnlyFiltersSelectedRule } from '../../../common/rules/OnlyFiltersSelectedRule';
|
|
5
|
+
import { CountryPresenter } from '../../../presenters/CountryPresenter';
|
|
6
|
+
import { RankedOrganisationsSeoIndexabilityPolicy } from '../RankedOrganisationsSeoIndexabilityPolicy';
|
|
7
|
+
export class RankedCountry extends RankedOrganisationsSeoIndexabilityPolicy {
|
|
8
|
+
name = 'Ranked Country Policy';
|
|
9
|
+
description = 'Manages indexability of ranking-sorted country-specific pages, applying rules to prioritize countries where quality-based sorting adds search value.';
|
|
10
|
+
baseRules = [new SingleValueSelectedForFilterRule(FilterKey.COUNTRY), new OnlyFiltersSelectedRule([FilterKey.COUNTRY])];
|
|
11
|
+
constructor(dependencies) {
|
|
12
|
+
super(dependencies);
|
|
13
|
+
}
|
|
14
|
+
async generateUrls() {
|
|
15
|
+
const countryFragments = CountryPresenter.getInstance().getFragments();
|
|
16
|
+
const paths = [];
|
|
17
|
+
for (const country of countryFragments) {
|
|
18
|
+
const filterKeyValues = new Map([[FilterKey.COUNTRY, [country.id]]]);
|
|
19
|
+
const result = await this.checkRulesForSitemap(filterKeyValues);
|
|
20
|
+
if (result) {
|
|
21
|
+
paths.push(this.getPathWithSortingOption(country.path));
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return paths;
|
|
25
|
+
}
|
|
26
|
+
get filterCombination() {
|
|
27
|
+
return FilterCombinations.RANKED_COUNTRY;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { FilterCombinations } from '../../../enums/FilterCombinations';
|
|
2
|
+
import { SingleValueSelectedForFilterRule } from '../../../common/rules/SingleValueSelectedForFilterRule';
|
|
3
|
+
import { OnlyFiltersSelectedRule } from '../../../common/rules/OnlyFiltersSelectedRule';
|
|
4
|
+
import { OnlineAttendanceRule } from '../../../common/rules/OnlineAttendanceRule';
|
|
5
|
+
import { RankedOrganisationsSeoIndexabilityPolicy } from '../RankedOrganisationsSeoIndexabilityPolicy';
|
|
6
|
+
import { IOrganisationsSeoDependencies } from '../../../organisations/types/IOrganisationsSeoDependencies';
|
|
7
|
+
export declare class RankedCountryAttendance extends RankedOrganisationsSeoIndexabilityPolicy {
|
|
8
|
+
readonly name: string;
|
|
9
|
+
readonly description: string;
|
|
10
|
+
protected readonly baseRules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule | OnlineAttendanceRule)[];
|
|
11
|
+
constructor(dependencies: IOrganisationsSeoDependencies);
|
|
12
|
+
protected generateUrls(): Promise<string[]>;
|
|
13
|
+
get filterCombination(): FilterCombinations;
|
|
14
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { FilterCombinations } from '../../../enums/FilterCombinations';
|
|
2
|
+
import { FilterKey } from '@studyportals/search-filters';
|
|
3
|
+
import { SingleValueSelectedForFilterRule } from '../../../common/rules/SingleValueSelectedForFilterRule';
|
|
4
|
+
import { OnlyFiltersSelectedRule } from '../../../common/rules/OnlyFiltersSelectedRule';
|
|
5
|
+
import { OnlineAttendanceRule } from '../../../common/rules/OnlineAttendanceRule';
|
|
6
|
+
import { CountryPresenter } from '../../../presenters/CountryPresenter';
|
|
7
|
+
import { AttendancePresenter } from '../../../presenters/AttendancePresenter';
|
|
8
|
+
import { RankedOrganisationsSeoIndexabilityPolicy } from '../RankedOrganisationsSeoIndexabilityPolicy';
|
|
9
|
+
export class RankedCountryAttendance extends RankedOrganisationsSeoIndexabilityPolicy {
|
|
10
|
+
name = 'Ranked Country Attendance Policy';
|
|
11
|
+
description = 'Governs indexing for ranking-sorted pages filtered by both country and attendance type, optimizing for country-specific study format combinations with quality sorting.';
|
|
12
|
+
baseRules = [
|
|
13
|
+
new SingleValueSelectedForFilterRule(FilterKey.COUNTRY),
|
|
14
|
+
new SingleValueSelectedForFilterRule(FilterKey.DELIVERY_METHOD),
|
|
15
|
+
new OnlyFiltersSelectedRule([FilterKey.COUNTRY, FilterKey.DELIVERY_METHOD]),
|
|
16
|
+
new OnlineAttendanceRule()
|
|
17
|
+
];
|
|
18
|
+
constructor(dependencies) {
|
|
19
|
+
super(dependencies);
|
|
20
|
+
}
|
|
21
|
+
async generateUrls() {
|
|
22
|
+
const countryFragments = CountryPresenter.getInstance().getFragments();
|
|
23
|
+
const attendanceFragments = AttendancePresenter.getInstance().getFragments();
|
|
24
|
+
const paths = [];
|
|
25
|
+
for (const country of countryFragments) {
|
|
26
|
+
for (const attendance of attendanceFragments) {
|
|
27
|
+
const filterKeyValues = new Map([
|
|
28
|
+
[FilterKey.COUNTRY, [country.id]],
|
|
29
|
+
[FilterKey.DELIVERY_METHOD, [attendance.id]]
|
|
30
|
+
]);
|
|
31
|
+
const result = await this.checkRulesForSitemap(filterKeyValues);
|
|
32
|
+
if (result) {
|
|
33
|
+
paths.push(this.getPathWithSortingOption(`${attendance.path}/${country.path}`));
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return paths;
|
|
38
|
+
}
|
|
39
|
+
get filterCombination() {
|
|
40
|
+
return FilterCombinations.RANKED_COUNTRY_ATTENDANCE;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { SingleValueSelectedForFilterRule } from '../../../common/rules/SingleValueSelectedForFilterRule';
|
|
2
|
+
import { FilterCombinations } from '../../../enums/FilterCombinations';
|
|
3
|
+
import { OnlyFiltersSelectedRule } from '../../../common/rules/OnlyFiltersSelectedRule';
|
|
4
|
+
import { RankedOrganisationsSeoIndexabilityPolicy } from '../RankedOrganisationsSeoIndexabilityPolicy';
|
|
5
|
+
import { IOrganisationsSeoDependencies } from '../../../organisations/types/IOrganisationsSeoDependencies';
|
|
6
|
+
export declare class RankedCountryDiscipline extends RankedOrganisationsSeoIndexabilityPolicy {
|
|
7
|
+
readonly name: string;
|
|
8
|
+
readonly description: string;
|
|
9
|
+
protected readonly baseRules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule)[];
|
|
10
|
+
constructor(dependencies: IOrganisationsSeoDependencies);
|
|
11
|
+
protected generateUrls(): Promise<string[]>;
|
|
12
|
+
get filterCombination(): FilterCombinations;
|
|
13
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { SingleValueSelectedForFilterRule } from '../../../common/rules/SingleValueSelectedForFilterRule';
|
|
2
|
+
import { FilterCombinations } from '../../../enums/FilterCombinations';
|
|
3
|
+
import { FilterKey } from '@studyportals/search-filters';
|
|
4
|
+
import { OnlyFiltersSelectedRule } from '../../../common/rules/OnlyFiltersSelectedRule';
|
|
5
|
+
import { CountryPresenter } from '../../../presenters/CountryPresenter';
|
|
6
|
+
import { DisciplinePresenter } from '../../../presenters/DisciplinePresenter';
|
|
7
|
+
import { RankedOrganisationsSeoIndexabilityPolicy } from '../RankedOrganisationsSeoIndexabilityPolicy';
|
|
8
|
+
export class RankedCountryDiscipline extends RankedOrganisationsSeoIndexabilityPolicy {
|
|
9
|
+
name = 'Ranked Country Discipline Policy';
|
|
10
|
+
description = 'Determines which ranking-sorted pages at the intersection of country and discipline filters qualify for indexing based on search value.';
|
|
11
|
+
baseRules = [
|
|
12
|
+
new SingleValueSelectedForFilterRule(FilterKey.COUNTRY),
|
|
13
|
+
new SingleValueSelectedForFilterRule(FilterKey.DISCIPLINES),
|
|
14
|
+
new OnlyFiltersSelectedRule([FilterKey.COUNTRY, FilterKey.DISCIPLINES])
|
|
15
|
+
];
|
|
16
|
+
constructor(dependencies) {
|
|
17
|
+
super(dependencies);
|
|
18
|
+
}
|
|
19
|
+
async generateUrls() {
|
|
20
|
+
const countryFragments = CountryPresenter.getInstance().getFragments();
|
|
21
|
+
const disciplineFragments = DisciplinePresenter.getInstance().getFragments();
|
|
22
|
+
const paths = [];
|
|
23
|
+
for (const country of countryFragments) {
|
|
24
|
+
for (const discipline of disciplineFragments) {
|
|
25
|
+
const filterKeyValues = new Map([
|
|
26
|
+
[FilterKey.COUNTRY, [country.id]],
|
|
27
|
+
[FilterKey.DISCIPLINES, [discipline.id]]
|
|
28
|
+
]);
|
|
29
|
+
const result = await this.checkRulesForSitemap(filterKeyValues);
|
|
30
|
+
if (result) {
|
|
31
|
+
paths.push(this.getPathWithSortingOption(`${country.path}/${discipline.path}`));
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return paths;
|
|
36
|
+
}
|
|
37
|
+
get filterCombination() {
|
|
38
|
+
return FilterCombinations.RANKED_DISCIPLINE_COUNTRY;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { SingleValueSelectedForFilterRule } from '../../../common/rules/SingleValueSelectedForFilterRule';
|
|
2
|
+
import { FilterCombinations } from '../../../enums/FilterCombinations';
|
|
3
|
+
import { OnlyFiltersSelectedRule } from '../../../common/rules/OnlyFiltersSelectedRule';
|
|
4
|
+
import { RankedOrganisationsSeoIndexabilityPolicy } from '../RankedOrganisationsSeoIndexabilityPolicy';
|
|
5
|
+
import { IOrganisationsSeoDependencies } from '../../../organisations/types/IOrganisationsSeoDependencies';
|
|
6
|
+
export declare class RankedDiscipline extends RankedOrganisationsSeoIndexabilityPolicy {
|
|
7
|
+
readonly name: string;
|
|
8
|
+
readonly description: string;
|
|
9
|
+
protected readonly baseRules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule)[];
|
|
10
|
+
constructor(dependencies: IOrganisationsSeoDependencies);
|
|
11
|
+
protected generateUrls(): Promise<string[]>;
|
|
12
|
+
get filterCombination(): FilterCombinations;
|
|
13
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { SingleValueSelectedForFilterRule } from '../../../common/rules/SingleValueSelectedForFilterRule';
|
|
2
|
+
import { FilterCombinations } from '../../../enums/FilterCombinations';
|
|
3
|
+
import { FilterKey } from '@studyportals/search-filters';
|
|
4
|
+
import { OnlyFiltersSelectedRule } from '../../../common/rules/OnlyFiltersSelectedRule';
|
|
5
|
+
import { RankedOrganisationsSeoIndexabilityPolicy } from '../RankedOrganisationsSeoIndexabilityPolicy';
|
|
6
|
+
import { DisciplinePresenter } from '../../../presenters/DisciplinePresenter';
|
|
7
|
+
export class RankedDiscipline extends RankedOrganisationsSeoIndexabilityPolicy {
|
|
8
|
+
name = 'Ranked Discipline Policy';
|
|
9
|
+
description = 'Regulates indexability of ranking-sorted discipline-specific pages, prioritizing academic fields where quality-based sorting enhances user experience.';
|
|
10
|
+
baseRules = [
|
|
11
|
+
new SingleValueSelectedForFilterRule(FilterKey.DISCIPLINES),
|
|
12
|
+
new OnlyFiltersSelectedRule([FilterKey.DISCIPLINES])
|
|
13
|
+
];
|
|
14
|
+
constructor(dependencies) {
|
|
15
|
+
super(dependencies);
|
|
16
|
+
}
|
|
17
|
+
async generateUrls() {
|
|
18
|
+
const disciplineFragments = DisciplinePresenter.getInstance().getFragments();
|
|
19
|
+
const paths = [];
|
|
20
|
+
for (const discipline of disciplineFragments) {
|
|
21
|
+
const filterKeyValues = new Map([[FilterKey.DISCIPLINES, [discipline.id]]]);
|
|
22
|
+
const result = await this.checkRulesForSitemap(filterKeyValues);
|
|
23
|
+
if (result) {
|
|
24
|
+
paths.push(this.getPathWithSortingOption(discipline.path));
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
return paths;
|
|
28
|
+
}
|
|
29
|
+
get filterCombination() {
|
|
30
|
+
return FilterCombinations.RANKED_DISCIPLINE;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { FilterCombinations } from '../../../enums/FilterCombinations';
|
|
2
|
+
import { NoFiltersSelectedRule } from '../../../common/rules/NoFiltersSelectedRule';
|
|
3
|
+
import { RankedOrganisationsSeoIndexabilityPolicy } from '../RankedOrganisationsSeoIndexabilityPolicy';
|
|
4
|
+
import { IOrganisationsSeoDependencies } from '../../../organisations/types/IOrganisationsSeoDependencies';
|
|
5
|
+
export declare class RankedUnfiltered extends RankedOrganisationsSeoIndexabilityPolicy {
|
|
6
|
+
readonly name: string;
|
|
7
|
+
readonly description: string;
|
|
8
|
+
protected readonly baseRules: NoFiltersSelectedRule[];
|
|
9
|
+
constructor(dependencies: IOrganisationsSeoDependencies);
|
|
10
|
+
protected generateUrls(): Promise<string[]>;
|
|
11
|
+
get filterCombination(): FilterCombinations;
|
|
12
|
+
}
|