@studyportals/fawkes 8.0.1-0 → 8.0.1-2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/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 +3 -3
|
@@ -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 { ErasmusOrJointSpecialProgrammesRule } from '../rules/ErasmusOrJointSpecialProgrammesRule';
|
|
6
|
+
import { ProgrammesBaseIndexabilityPolicy } from '../ProgrammesBaseIndexabilityPolicy';
|
|
7
|
+
import { IProgrammeSeoDependencies } from '../types/IProgrammeSeoDependencies';
|
|
8
|
+
export declare class SpecialProgrammes extends ProgrammesBaseIndexabilityPolicy {
|
|
9
|
+
readonly name: string;
|
|
10
|
+
readonly description: string;
|
|
11
|
+
readonly filterKeys: FilterKey[];
|
|
12
|
+
protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule | ErasmusOrJointSpecialProgrammesRule)[];
|
|
13
|
+
constructor(dependencies: IProgrammeSeoDependencies);
|
|
14
|
+
protected generateUrls(): Promise<string[]>;
|
|
15
|
+
get filterCombination(): FilterCombinations;
|
|
16
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
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 { ErasmusOrJointSpecialProgrammesRule } from '../rules/ErasmusOrJointSpecialProgrammesRule';
|
|
6
|
+
import { ProgrammesBaseIndexabilityPolicy } from '../ProgrammesBaseIndexabilityPolicy';
|
|
7
|
+
import { SpecialProgrammesPresenter } from '../../presenters/SpecialProgrammesPresenter';
|
|
8
|
+
export class SpecialProgrammes extends ProgrammesBaseIndexabilityPolicy {
|
|
9
|
+
name = 'Special Programmes Policy';
|
|
10
|
+
description = 'Controls indexing of pages filtered by special programmes like Erasmus Mundus or Joint Programmes.';
|
|
11
|
+
filterKeys = [FilterKey.SPECIAL_PROGRAMMES];
|
|
12
|
+
rules = [
|
|
13
|
+
new SingleValueSelectedForFilterRule(FilterKey.SPECIAL_PROGRAMMES),
|
|
14
|
+
new OnlyFiltersSelectedRule([FilterKey.SPECIAL_PROGRAMMES]),
|
|
15
|
+
new ErasmusOrJointSpecialProgrammesRule()
|
|
16
|
+
];
|
|
17
|
+
constructor(dependencies) {
|
|
18
|
+
super(dependencies);
|
|
19
|
+
this.initateBaseRules();
|
|
20
|
+
}
|
|
21
|
+
async generateUrls() {
|
|
22
|
+
const specialProgrammeFragments = SpecialProgrammesPresenter.getInstance().getFragments();
|
|
23
|
+
const paths = [];
|
|
24
|
+
for (const pageNumber of this.indexablePageNumbers) {
|
|
25
|
+
for (const specialProgramme of specialProgrammeFragments) {
|
|
26
|
+
const filterKeyValues = new Map([[FilterKey.SPECIAL_PROGRAMMES, [specialProgramme.id]]]);
|
|
27
|
+
const result = await this.checkRulesForSitemapWithPageNumber(filterKeyValues, pageNumber);
|
|
28
|
+
if (result) {
|
|
29
|
+
paths.push(this.getPathWithPageNumber(specialProgramme.path, pageNumber));
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return paths;
|
|
34
|
+
}
|
|
35
|
+
get filterCombination() {
|
|
36
|
+
return FilterCombinations.SPECIAL_PROGRAMMES;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
@@ -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 TuitionFee 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,32 @@
|
|
|
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 { TuitionFeePresenter } from '../../presenters/TuitionFeePresenter';
|
|
7
|
+
export class TuitionFee extends ProgrammesBaseIndexabilityPolicy {
|
|
8
|
+
name = 'Tuition Fee Policy';
|
|
9
|
+
description = 'Controls indexing of pages filtered by tuition fee.';
|
|
10
|
+
filterKeys = [FilterKey.TUITION_FEE];
|
|
11
|
+
rules = [
|
|
12
|
+
new SingleValueSelectedForFilterRule(FilterKey.TUITION_FEE),
|
|
13
|
+
new OnlyFiltersSelectedRule([FilterKey.TUITION_FEE])
|
|
14
|
+
];
|
|
15
|
+
constructor(dependencies) {
|
|
16
|
+
super(dependencies);
|
|
17
|
+
this.initateBaseRules();
|
|
18
|
+
}
|
|
19
|
+
async generateUrls() {
|
|
20
|
+
const tuitionFeeFragments = TuitionFeePresenter.getInstance().getFragments();
|
|
21
|
+
const paths = [];
|
|
22
|
+
for (const pageNumber of this.indexablePageNumbers) {
|
|
23
|
+
for (const tuitionFee of tuitionFeeFragments) {
|
|
24
|
+
paths.push(this.getPathWithPageNumber(tuitionFee.path, pageNumber));
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
return Promise.resolve(paths);
|
|
28
|
+
}
|
|
29
|
+
get filterCombination() {
|
|
30
|
+
return FilterCombinations.TUITION_FEE;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { FilterCombinations } from '../../enums/FilterCombinations';
|
|
2
|
+
import { NoFiltersSelectedRule } from '../../common/rules/NoFiltersSelectedRule';
|
|
3
|
+
import { ProgrammesBaseIndexabilityPolicy } from '../ProgrammesBaseIndexabilityPolicy';
|
|
4
|
+
import { IProgrammeSeoDependencies } from '../types/IProgrammeSeoDependencies';
|
|
5
|
+
export declare class Unfiltered extends ProgrammesBaseIndexabilityPolicy {
|
|
6
|
+
readonly name: string;
|
|
7
|
+
readonly description: string;
|
|
8
|
+
readonly filterKeys: never[];
|
|
9
|
+
protected readonly rules: NoFiltersSelectedRule[];
|
|
10
|
+
constructor(dependencies: IProgrammeSeoDependencies);
|
|
11
|
+
generateUrls(): Promise<string[]>;
|
|
12
|
+
get filterCombination(): FilterCombinations;
|
|
13
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { FilterCombinations } from '../../enums/FilterCombinations';
|
|
2
|
+
import { NoFiltersSelectedRule } from '../../common/rules/NoFiltersSelectedRule';
|
|
3
|
+
import { ProgrammesBaseIndexabilityPolicy } from '../ProgrammesBaseIndexabilityPolicy';
|
|
4
|
+
export class Unfiltered extends ProgrammesBaseIndexabilityPolicy {
|
|
5
|
+
name = 'Unfiltered Policy';
|
|
6
|
+
description = 'Defines indexability rules for unfiltered pages, managing crawl budget by ensuring only high-value aggregate pages are included in the sitemap.';
|
|
7
|
+
filterKeys = [];
|
|
8
|
+
rules = [new NoFiltersSelectedRule()];
|
|
9
|
+
constructor(dependencies) {
|
|
10
|
+
super(dependencies);
|
|
11
|
+
this.initateBaseRules();
|
|
12
|
+
}
|
|
13
|
+
async generateUrls() {
|
|
14
|
+
return Promise.resolve(['']);
|
|
15
|
+
}
|
|
16
|
+
get filterCombination() {
|
|
17
|
+
return FilterCombinations.UNFILTERED;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export * from './Area';
|
|
2
|
+
export * from './Attendance';
|
|
3
|
+
export * from './AttendanceDegree';
|
|
4
|
+
export * from './Continent';
|
|
5
|
+
export * from './ContinentTuitionFee';
|
|
6
|
+
export * from './Country';
|
|
7
|
+
export * from './CountryAttendance';
|
|
8
|
+
export * from './CountryAttendanceDegree';
|
|
9
|
+
export * from './CountryDegree';
|
|
10
|
+
export * from './CountryDuration';
|
|
11
|
+
export * from './CountryDurationDegree';
|
|
12
|
+
export * from './CountryEducationalForm';
|
|
13
|
+
export * from './CountryFormat';
|
|
14
|
+
export * from './CountryTuitionFee';
|
|
15
|
+
export * from './DegreeAttendanceDiscipline';
|
|
16
|
+
export * from './DegreeCountryAttendance';
|
|
17
|
+
export * from './DegreeCountryDiscipline';
|
|
18
|
+
export * from './DegreeCountryTuitionFee';
|
|
19
|
+
export * from './DisciplineDegree';
|
|
20
|
+
export * from './Discipline';
|
|
21
|
+
export * from './DisciplineArea';
|
|
22
|
+
export * from './DisciplineAttendance';
|
|
23
|
+
export * from './DisciplineContinent';
|
|
24
|
+
export * from './DisciplineCountry';
|
|
25
|
+
export * from './DisciplineCountryEducationalForm';
|
|
26
|
+
export * from './DisciplineDegree';
|
|
27
|
+
export * from './DisciplineDuration';
|
|
28
|
+
export * from './DisciplineEducationalForm';
|
|
29
|
+
export * from './DisciplineFormat';
|
|
30
|
+
export * from './DisciplineTuitionFee';
|
|
31
|
+
export * from './DisciplineTuitionFeeAttendance';
|
|
32
|
+
export * from './SpecialProgrammes';
|
|
33
|
+
export * from './TuitionFee';
|
|
34
|
+
export * from './Unfiltered';
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export * from './Area';
|
|
2
|
+
export * from './Attendance';
|
|
3
|
+
export * from './AttendanceDegree';
|
|
4
|
+
export * from './Continent';
|
|
5
|
+
export * from './ContinentTuitionFee';
|
|
6
|
+
export * from './Country';
|
|
7
|
+
export * from './CountryAttendance';
|
|
8
|
+
export * from './CountryAttendanceDegree';
|
|
9
|
+
export * from './CountryDegree';
|
|
10
|
+
export * from './CountryDuration';
|
|
11
|
+
export * from './CountryDurationDegree';
|
|
12
|
+
export * from './CountryEducationalForm';
|
|
13
|
+
export * from './CountryFormat';
|
|
14
|
+
export * from './CountryTuitionFee';
|
|
15
|
+
export * from './DegreeAttendanceDiscipline';
|
|
16
|
+
export * from './DegreeCountryAttendance';
|
|
17
|
+
export * from './DegreeCountryDiscipline';
|
|
18
|
+
export * from './DegreeCountryTuitionFee';
|
|
19
|
+
export * from './DisciplineDegree';
|
|
20
|
+
export * from './Discipline';
|
|
21
|
+
export * from './DisciplineArea';
|
|
22
|
+
export * from './DisciplineAttendance';
|
|
23
|
+
export * from './DisciplineContinent';
|
|
24
|
+
export * from './DisciplineCountry';
|
|
25
|
+
export * from './DisciplineCountryEducationalForm';
|
|
26
|
+
export * from './DisciplineDegree';
|
|
27
|
+
export * from './DisciplineDuration';
|
|
28
|
+
export * from './DisciplineEducationalForm';
|
|
29
|
+
export * from './DisciplineFormat';
|
|
30
|
+
export * from './DisciplineTuitionFee';
|
|
31
|
+
export * from './DisciplineTuitionFeeAttendance';
|
|
32
|
+
export * from './SpecialProgrammes';
|
|
33
|
+
export * from './TuitionFee';
|
|
34
|
+
export * from './Unfiltered';
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { FilterKey } from '@studyportals/search-filters';
|
|
2
|
+
import { TuitionFeeFilterOptionValue } from '@studyportals/search-filters';
|
|
3
|
+
import { BaseProgrammeFilterKeyValueRule } from '../BaseProgrammeFilterKeyValueRule';
|
|
4
|
+
export class AffordableTuitionFeeRule extends BaseProgrammeFilterKeyValueRule {
|
|
5
|
+
constructor() {
|
|
6
|
+
const filterKeyValues = new Map([
|
|
7
|
+
[FilterKey.TUITION_FEE, [TuitionFeeFilterOptionValue.ZERO_TO_TWO_THOUSAND_FIVE_HUNDRED]]
|
|
8
|
+
]);
|
|
9
|
+
super(filterKeyValues);
|
|
10
|
+
}
|
|
11
|
+
getName() {
|
|
12
|
+
return 'AffordableTuitionFeeRule';
|
|
13
|
+
}
|
|
14
|
+
getDescription() {
|
|
15
|
+
return 'Is indexable if the selected tuition fee is affordable (between 0 and 2500).';
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ISearchDependencies } from '../../common/ISearchDependencies';
|
|
2
|
+
import { FilterKeyValuesMap } from '../../common/FilterKeyValuesMap';
|
|
3
|
+
import { ISearchApiClient } from '../../sitemap-generator/ISearchApiClient';
|
|
4
|
+
import { IProgrammeRule } from '../IProgrammeRule';
|
|
5
|
+
export declare class AtLeastSevenResultsRule implements IProgrammeRule {
|
|
6
|
+
private readonly minimumResultsCount;
|
|
7
|
+
private readonly maximumPageSize;
|
|
8
|
+
private readonly searchApiClient?;
|
|
9
|
+
constructor(searchApiClient?: ISearchApiClient);
|
|
10
|
+
forSearch(dependencies: ISearchDependencies): Promise<boolean>;
|
|
11
|
+
forSitemapGeneratorWithPageNumber(filterKeyValues: FilterKeyValuesMap, pageNumber: number): Promise<boolean>;
|
|
12
|
+
forSitemapGenerator(): Promise<boolean>;
|
|
13
|
+
getName(): string;
|
|
14
|
+
getDescription(): string;
|
|
15
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { DependencyMissingError } from '../../errors/DependencyMissingError';
|
|
2
|
+
export class AtLeastSevenResultsRule {
|
|
3
|
+
minimumResultsCount = 7;
|
|
4
|
+
maximumPageSize = 20;
|
|
5
|
+
searchApiClient;
|
|
6
|
+
constructor(searchApiClient) {
|
|
7
|
+
this.searchApiClient = searchApiClient;
|
|
8
|
+
}
|
|
9
|
+
forSearch(dependencies) {
|
|
10
|
+
const { applicationState } = dependencies;
|
|
11
|
+
const resultCount = applicationState.getNumberOfResults();
|
|
12
|
+
return Promise.resolve(resultCount >= this.minimumResultsCount);
|
|
13
|
+
}
|
|
14
|
+
async forSitemapGeneratorWithPageNumber(filterKeyValues, pageNumber) {
|
|
15
|
+
if (!this.searchApiClient) {
|
|
16
|
+
throw new DependencyMissingError('SearchApiClient');
|
|
17
|
+
}
|
|
18
|
+
const count = await this.searchApiClient.getCount(filterKeyValues);
|
|
19
|
+
return count >= (pageNumber - 1) * this.maximumPageSize + this.minimumResultsCount;
|
|
20
|
+
}
|
|
21
|
+
forSitemapGenerator() {
|
|
22
|
+
throw new Error('Method not implemented.');
|
|
23
|
+
}
|
|
24
|
+
getName() {
|
|
25
|
+
return 'AtLeastSevenResultsRule';
|
|
26
|
+
}
|
|
27
|
+
getDescription() {
|
|
28
|
+
return 'Is indexable if there are at least 7 results.';
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ISearchDependencies } from '../../common/ISearchDependencies';
|
|
2
|
+
import { FilterKeyValuesMap } from '../../common/FilterKeyValuesMap';
|
|
3
|
+
import { BaseProgrammeRule } from '../BaseProgrammeRule';
|
|
4
|
+
export declare class DegreeAttendanceDisciplineRule extends BaseProgrammeRule {
|
|
5
|
+
private readonly allowedDegrees;
|
|
6
|
+
private readonly attendanceValue;
|
|
7
|
+
getName(): string;
|
|
8
|
+
getDescription(): string;
|
|
9
|
+
forSearch(dependencies: ISearchDependencies): Promise<boolean>;
|
|
10
|
+
forSitemapGenerator(filterKeyValues: FilterKeyValuesMap): Promise<boolean>;
|
|
11
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { FilterKey } from '@studyportals/search-filters';
|
|
2
|
+
import { DegreeTypeFilterOptionValue } from '@studyportals/search-filters';
|
|
3
|
+
import { BaseProgrammeRule } from '../BaseProgrammeRule';
|
|
4
|
+
export class DegreeAttendanceDisciplineRule extends BaseProgrammeRule {
|
|
5
|
+
allowedDegrees = [
|
|
6
|
+
DegreeTypeFilterOptionValue.MA,
|
|
7
|
+
DegreeTypeFilterOptionValue.MSC,
|
|
8
|
+
DegreeTypeFilterOptionValue.MBA
|
|
9
|
+
].map(id => id.valueOf());
|
|
10
|
+
attendanceValue = 'online';
|
|
11
|
+
getName() {
|
|
12
|
+
return 'DegreeAttendanceDisciplineRule';
|
|
13
|
+
}
|
|
14
|
+
getDescription() {
|
|
15
|
+
return 'Indexes: master-of-arts (online) + all disciplines; master-of-science (online) + all disciplines; master-of-business-administration (online) + all disciplines';
|
|
16
|
+
}
|
|
17
|
+
forSearch(dependencies) {
|
|
18
|
+
const { seoInfoBase, filterState } = dependencies;
|
|
19
|
+
const degreeTypeValue = seoInfoBase.getFilterOptionValueBy(FilterKey.DEGREE_TYPE, filterState);
|
|
20
|
+
const attendanceValue = seoInfoBase.getFilterOptionValueBy(FilterKey.DELIVERY_METHOD, filterState);
|
|
21
|
+
const disciplineValue = seoInfoBase.getFilterOptionValueBy(FilterKey.DISCIPLINES, filterState);
|
|
22
|
+
if (!degreeTypeValue || !attendanceValue || !this.allowedDegrees.includes(degreeTypeValue) || attendanceValue !== this.attendanceValue) {
|
|
23
|
+
return Promise.resolve(true);
|
|
24
|
+
}
|
|
25
|
+
if (!disciplineValue) {
|
|
26
|
+
return Promise.resolve(false);
|
|
27
|
+
}
|
|
28
|
+
return Promise.resolve(true);
|
|
29
|
+
}
|
|
30
|
+
forSitemapGenerator(filterKeyValues) {
|
|
31
|
+
const degreeTypeValues = filterKeyValues.get(FilterKey.DEGREE_TYPE);
|
|
32
|
+
const attendanceValues = filterKeyValues.get(FilterKey.DELIVERY_METHOD);
|
|
33
|
+
const disciplineValues = filterKeyValues.get(FilterKey.DISCIPLINES);
|
|
34
|
+
if (!degreeTypeValues?.length || !attendanceValues?.length || !disciplineValues?.length) {
|
|
35
|
+
return Promise.resolve(false);
|
|
36
|
+
}
|
|
37
|
+
const degreeTypeValue = degreeTypeValues[0];
|
|
38
|
+
const attendanceValue = attendanceValues[0];
|
|
39
|
+
if (!degreeTypeValue || !attendanceValue || !this.allowedDegrees.includes(degreeTypeValue) || attendanceValue !== this.attendanceValue) {
|
|
40
|
+
return Promise.resolve(true);
|
|
41
|
+
}
|
|
42
|
+
return Promise.resolve(true);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ISearchDependencies } from '../../common/ISearchDependencies';
|
|
2
|
+
import { FilterKeyValuesMap } from '../../common/FilterKeyValuesMap';
|
|
3
|
+
import { BaseProgrammeRule } from '../BaseProgrammeRule';
|
|
4
|
+
export declare class DegreeAttendanceDisciplineSpecificRule extends BaseProgrammeRule {
|
|
5
|
+
private readonly allowedDegrees;
|
|
6
|
+
private readonly allowedAttendance;
|
|
7
|
+
getName(): string;
|
|
8
|
+
getDescription(): string;
|
|
9
|
+
forSearch(dependencies: ISearchDependencies): Promise<boolean>;
|
|
10
|
+
forSitemapGenerator(filterKeyValues: FilterKeyValuesMap): Promise<boolean>;
|
|
11
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { FilterKey } from '@studyportals/search-filters';
|
|
2
|
+
import { DegreeTypeFilterOptionValue } from '@studyportals/search-filters';
|
|
3
|
+
import { BaseProgrammeRule } from '../BaseProgrammeRule';
|
|
4
|
+
export class DegreeAttendanceDisciplineSpecificRule extends BaseProgrammeRule {
|
|
5
|
+
allowedDegrees = [
|
|
6
|
+
DegreeTypeFilterOptionValue.MSC,
|
|
7
|
+
DegreeTypeFilterOptionValue.MA,
|
|
8
|
+
DegreeTypeFilterOptionValue.MBA
|
|
9
|
+
];
|
|
10
|
+
allowedAttendance = 'online';
|
|
11
|
+
getName() {
|
|
12
|
+
return 'DegreeAttendanceDisciplineSpecificRule';
|
|
13
|
+
}
|
|
14
|
+
getDescription() {
|
|
15
|
+
return 'Only allows MSc, MA, and MBA degrees with online attendance for attendance+discipline combinations';
|
|
16
|
+
}
|
|
17
|
+
forSearch(dependencies) {
|
|
18
|
+
const { seoInfoBase, filterState } = dependencies;
|
|
19
|
+
const degreeTypeValue = seoInfoBase.getFilterOptionValueBy(FilterKey.DEGREE_TYPE, filterState);
|
|
20
|
+
const attendanceValue = seoInfoBase.getFilterOptionValueBy(FilterKey.DELIVERY_METHOD, filterState);
|
|
21
|
+
const disciplineValue = seoInfoBase.getFilterOptionValueBy(FilterKey.DISCIPLINES, filterState);
|
|
22
|
+
if (!degreeTypeValue || !attendanceValue || !disciplineValue) {
|
|
23
|
+
return Promise.resolve(false);
|
|
24
|
+
}
|
|
25
|
+
return Promise.resolve(this.allowedDegrees.includes(degreeTypeValue) &&
|
|
26
|
+
attendanceValue === this.allowedAttendance);
|
|
27
|
+
}
|
|
28
|
+
forSitemapGenerator(filterKeyValues) {
|
|
29
|
+
const degreeTypeValues = filterKeyValues.get(FilterKey.DEGREE_TYPE);
|
|
30
|
+
const attendanceValues = filterKeyValues.get(FilterKey.DELIVERY_METHOD);
|
|
31
|
+
if (!degreeTypeValues?.length || !attendanceValues?.length) {
|
|
32
|
+
return Promise.resolve(false);
|
|
33
|
+
}
|
|
34
|
+
const degreeTypeValue = degreeTypeValues[0];
|
|
35
|
+
const attendanceValue = attendanceValues[0];
|
|
36
|
+
return Promise.resolve(this.allowedDegrees.includes(degreeTypeValue) &&
|
|
37
|
+
attendanceValue === this.allowedAttendance);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ISearchDependencies } from '../../common/ISearchDependencies';
|
|
2
|
+
import { FilterKeyValuesMap } from '../../common/FilterKeyValuesMap';
|
|
3
|
+
import { BaseProgrammeRule } from '../BaseProgrammeRule';
|
|
4
|
+
export declare class DegreeCountryAttendanceSpecificRule extends BaseProgrammeRule {
|
|
5
|
+
private mba;
|
|
6
|
+
private readonly countryIdsByDegree;
|
|
7
|
+
getName(): string;
|
|
8
|
+
getDescription(): string;
|
|
9
|
+
forSearch(dependencies: ISearchDependencies): Promise<boolean>;
|
|
10
|
+
forSitemapGenerator(filterKeyValues: FilterKeyValuesMap): Promise<boolean>;
|
|
11
|
+
private isValidForMbaDegree;
|
|
12
|
+
private isValidForMphilDegree;
|
|
13
|
+
private isValidForLlmDegree;
|
|
14
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { AttendanceFilterOptionValue, FilterKey } from '@studyportals/search-filters';
|
|
2
|
+
import { DegreeTypeFilterOptionValue } from '@studyportals/search-filters';
|
|
3
|
+
import { BaseProgrammeRule } from '../BaseProgrammeRule';
|
|
4
|
+
export class DegreeCountryAttendanceSpecificRule extends BaseProgrammeRule {
|
|
5
|
+
mba = DegreeTypeFilterOptionValue.MBA.valueOf();
|
|
6
|
+
countryIdsByDegree = {
|
|
7
|
+
[DegreeTypeFilterOptionValue.LLM.valueOf()]: ['82', '30', '56', '108'],
|
|
8
|
+
[DegreeTypeFilterOptionValue.MPHIL.valueOf()]: ['82', '30', '108'],
|
|
9
|
+
};
|
|
10
|
+
getName() {
|
|
11
|
+
return 'DegreeCountryAttendanceSpecificRule';
|
|
12
|
+
}
|
|
13
|
+
getDescription() {
|
|
14
|
+
return 'Only allows MBA, LLM, and MPhil degrees for country+attendance combinations';
|
|
15
|
+
}
|
|
16
|
+
forSearch(dependencies) {
|
|
17
|
+
const { seoInfoBase, filterState } = dependencies;
|
|
18
|
+
const degreeTypeValue = seoInfoBase.getFilterOptionValueBy(FilterKey.DEGREE_TYPE, filterState);
|
|
19
|
+
const countryValue = seoInfoBase.getFilterOptionValueBy(FilterKey.COUNTRY, filterState);
|
|
20
|
+
const attendanceValue = seoInfoBase.getFilterOptionValueBy(FilterKey.DELIVERY_METHOD, filterState);
|
|
21
|
+
if (!degreeTypeValue || !countryValue || !attendanceValue) {
|
|
22
|
+
return Promise.resolve(false);
|
|
23
|
+
}
|
|
24
|
+
if (attendanceValue !== AttendanceFilterOptionValue.ONLINE) {
|
|
25
|
+
return Promise.resolve(false);
|
|
26
|
+
}
|
|
27
|
+
if (this.isValidForMbaDegree(degreeTypeValue)) {
|
|
28
|
+
return Promise.resolve(true);
|
|
29
|
+
}
|
|
30
|
+
if (this.isValidForMphilDegree(degreeTypeValue, countryValue)) {
|
|
31
|
+
return Promise.resolve(true);
|
|
32
|
+
}
|
|
33
|
+
if (this.isValidForLlmDegree(degreeTypeValue, countryValue)) {
|
|
34
|
+
return Promise.resolve(true);
|
|
35
|
+
}
|
|
36
|
+
return Promise.resolve(false);
|
|
37
|
+
}
|
|
38
|
+
forSitemapGenerator(filterKeyValues) {
|
|
39
|
+
const degreeTypeValues = filterKeyValues.get(FilterKey.DEGREE_TYPE);
|
|
40
|
+
const countryValues = filterKeyValues.get(FilterKey.COUNTRY);
|
|
41
|
+
const attendanceValues = filterKeyValues.get(FilterKey.DELIVERY_METHOD);
|
|
42
|
+
if (!degreeTypeValues?.length || !countryValues?.length || !attendanceValues?.length) {
|
|
43
|
+
return Promise.resolve(false);
|
|
44
|
+
}
|
|
45
|
+
const degreeTypeValue = degreeTypeValues[0];
|
|
46
|
+
const countryValue = countryValues[0];
|
|
47
|
+
const attendanceValue = attendanceValues[0];
|
|
48
|
+
if (!degreeTypeValue || !countryValue || !attendanceValue) {
|
|
49
|
+
return Promise.resolve(false);
|
|
50
|
+
}
|
|
51
|
+
if (attendanceValue !== AttendanceFilterOptionValue.ONLINE) {
|
|
52
|
+
return Promise.resolve(false);
|
|
53
|
+
}
|
|
54
|
+
if (this.isValidForMbaDegree(degreeTypeValue)) {
|
|
55
|
+
return Promise.resolve(true);
|
|
56
|
+
}
|
|
57
|
+
if (this.isValidForMphilDegree(degreeTypeValue, countryValue)) {
|
|
58
|
+
return Promise.resolve(true);
|
|
59
|
+
}
|
|
60
|
+
if (this.isValidForLlmDegree(degreeTypeValue, countryValue)) {
|
|
61
|
+
return Promise.resolve(true);
|
|
62
|
+
}
|
|
63
|
+
return Promise.resolve(false);
|
|
64
|
+
}
|
|
65
|
+
isValidForMbaDegree(degreeTypeValue) {
|
|
66
|
+
return degreeTypeValue === this.mba;
|
|
67
|
+
}
|
|
68
|
+
isValidForMphilDegree(degreeTypeValue, countryValue) {
|
|
69
|
+
return degreeTypeValue === DegreeTypeFilterOptionValue.MPHIL.valueOf() &&
|
|
70
|
+
this.countryIdsByDegree[DegreeTypeFilterOptionValue.MPHIL.valueOf()].includes(countryValue);
|
|
71
|
+
}
|
|
72
|
+
isValidForLlmDegree(degreeTypeValue, countryValue) {
|
|
73
|
+
return degreeTypeValue === DegreeTypeFilterOptionValue.LLM.valueOf() &&
|
|
74
|
+
this.countryIdsByDegree[DegreeTypeFilterOptionValue.LLM.valueOf()].includes(countryValue);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ISearchDependencies } from '../../common/ISearchDependencies';
|
|
2
|
+
import { FilterKeyValuesMap } from '../../common/FilterKeyValuesMap';
|
|
3
|
+
import { BaseProgrammeRule } from '../BaseProgrammeRule';
|
|
4
|
+
export declare class DegreeCountryDisciplineSpecificRule extends BaseProgrammeRule {
|
|
5
|
+
private readonly educationDisciplineIds;
|
|
6
|
+
private readonly validCombinations;
|
|
7
|
+
getName(): string;
|
|
8
|
+
getDescription(): string;
|
|
9
|
+
forSearch(dependencies: ISearchDependencies): Promise<boolean>;
|
|
10
|
+
forSitemapGenerator(filterKeyValues: FilterKeyValuesMap): Promise<boolean>;
|
|
11
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { FilterKey } from '@studyportals/search-filters';
|
|
2
|
+
import { DegreeTypeFilterOptionValue } from '@studyportals/search-filters';
|
|
3
|
+
import { BaseProgrammeRule } from '../BaseProgrammeRule';
|
|
4
|
+
export class DegreeCountryDisciplineSpecificRule extends BaseProgrammeRule {
|
|
5
|
+
educationDisciplineIds = [
|
|
6
|
+
'289', // Education & Training (main discipline)
|
|
7
|
+
'290', // Adult Education
|
|
8
|
+
'360', // Art Education
|
|
9
|
+
'291', // Coaching
|
|
10
|
+
'292', // School Counselling
|
|
11
|
+
'333', // Early Childhood Education
|
|
12
|
+
'8', // Education
|
|
13
|
+
'349', // Educational Leadership
|
|
14
|
+
'293', // Educational Psychology
|
|
15
|
+
'98', // Educational Research
|
|
16
|
+
'371', // Health Education
|
|
17
|
+
'363', // Higher Education
|
|
18
|
+
'355', // Instructional Design
|
|
19
|
+
'370', // Literacy Education
|
|
20
|
+
'348', // Primary Education
|
|
21
|
+
'97', // Special Education
|
|
22
|
+
'359', // Secondary Education
|
|
23
|
+
'345', // STEM Education
|
|
24
|
+
'295', // Teaching
|
|
25
|
+
'358' // Teaching English as a Foreign Language
|
|
26
|
+
];
|
|
27
|
+
validCombinations = {
|
|
28
|
+
[DegreeTypeFilterOptionValue.MSC]: ['82', '56', '11', '30'],
|
|
29
|
+
[DegreeTypeFilterOptionValue.MBA]: ['82', '30'],
|
|
30
|
+
[DegreeTypeFilterOptionValue.MED]: ['202', '56']
|
|
31
|
+
};
|
|
32
|
+
getName() {
|
|
33
|
+
return 'DegreeCountrySpecificRule';
|
|
34
|
+
}
|
|
35
|
+
getDescription() {
|
|
36
|
+
return 'Indexes: master-of-science (USA, Canada, Germany, UK); master-of-business-administration (USA, UK); master-of-education (Australia, Canada)';
|
|
37
|
+
}
|
|
38
|
+
forSearch(dependencies) {
|
|
39
|
+
const { seoInfoBase, filterState } = dependencies;
|
|
40
|
+
const degreeTypeValue = seoInfoBase.getFilterOptionValueBy(FilterKey.DEGREE_TYPE, filterState);
|
|
41
|
+
const countryValue = seoInfoBase.getFilterOptionValueBy(FilterKey.COUNTRY, filterState);
|
|
42
|
+
const disciplineValue = seoInfoBase.getFilterOptionValueBy(FilterKey.DISCIPLINES, filterState);
|
|
43
|
+
if (!degreeTypeValue || !countryValue || !disciplineValue) {
|
|
44
|
+
return Promise.resolve(false);
|
|
45
|
+
}
|
|
46
|
+
const allowedCountries = this.validCombinations[degreeTypeValue];
|
|
47
|
+
if (!allowedCountries) {
|
|
48
|
+
return Promise.resolve(false);
|
|
49
|
+
}
|
|
50
|
+
if (degreeTypeValue === DegreeTypeFilterOptionValue.MED) {
|
|
51
|
+
return Promise.resolve(allowedCountries.includes(countryValue) &&
|
|
52
|
+
this.educationDisciplineIds.includes(disciplineValue));
|
|
53
|
+
}
|
|
54
|
+
return Promise.resolve(allowedCountries.includes(countryValue));
|
|
55
|
+
}
|
|
56
|
+
forSitemapGenerator(filterKeyValues) {
|
|
57
|
+
const degreeTypeValues = filterKeyValues.get(FilterKey.DEGREE_TYPE);
|
|
58
|
+
const countryValues = filterKeyValues.get(FilterKey.COUNTRY);
|
|
59
|
+
const disciplineValues = filterKeyValues.get(FilterKey.DISCIPLINES);
|
|
60
|
+
if (!degreeTypeValues?.length || !countryValues?.length || !disciplineValues?.length) {
|
|
61
|
+
return Promise.resolve(false);
|
|
62
|
+
}
|
|
63
|
+
const degreeTypeValue = degreeTypeValues[0];
|
|
64
|
+
const countryValue = countryValues[0];
|
|
65
|
+
const disciplineValue = disciplineValues[0];
|
|
66
|
+
const allowedCountries = this.validCombinations[degreeTypeValue];
|
|
67
|
+
if (!allowedCountries) {
|
|
68
|
+
return Promise.resolve(false);
|
|
69
|
+
}
|
|
70
|
+
if (degreeTypeValue === DegreeTypeFilterOptionValue.MED) {
|
|
71
|
+
return Promise.resolve(allowedCountries.includes(countryValue) &&
|
|
72
|
+
this.educationDisciplineIds.includes(disciplineValue));
|
|
73
|
+
}
|
|
74
|
+
return Promise.resolve(allowedCountries.includes(countryValue));
|
|
75
|
+
}
|
|
76
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ISearchDependencies } from '../../common/ISearchDependencies';
|
|
2
|
+
import { FilterKeyValuesMap } from '../../common/FilterKeyValuesMap';
|
|
3
|
+
import { BaseProgrammeRule } from '../BaseProgrammeRule';
|
|
4
|
+
export declare class DegreeCountryTuitionFeeSpecificRule extends BaseProgrammeRule {
|
|
5
|
+
private readonly validDegreeValues;
|
|
6
|
+
private readonly tuitionFeeValue;
|
|
7
|
+
private readonly validCombinations;
|
|
8
|
+
getName(): string;
|
|
9
|
+
getDescription(): string;
|
|
10
|
+
forSearch(dependencies: ISearchDependencies): Promise<boolean>;
|
|
11
|
+
forSitemapGenerator(filterKeyValues: FilterKeyValuesMap): Promise<boolean>;
|
|
12
|
+
}
|