@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,62 @@
|
|
|
1
|
+
import { FilterKey } from '@studyportals/search-filters';
|
|
2
|
+
import { DegreeTypeFilterOptionValue } from '@studyportals/search-filters';
|
|
3
|
+
import { TuitionFeeFilterOptionValue } from '@studyportals/search-filters';
|
|
4
|
+
import { BaseProgrammeRule } from '../BaseProgrammeRule';
|
|
5
|
+
export class DegreeCountryTuitionFeeSpecificRule extends BaseProgrammeRule {
|
|
6
|
+
validDegreeValues = [DegreeTypeFilterOptionValue.MBA, DegreeTypeFilterOptionValue.LLM];
|
|
7
|
+
tuitionFeeValue = TuitionFeeFilterOptionValue.ZERO_TO_TWO_THOUSAND_FIVE_HUNDRED;
|
|
8
|
+
validCombinations = {
|
|
9
|
+
[DegreeTypeFilterOptionValue.LLM]: ['82', '30', '108', '56']
|
|
10
|
+
};
|
|
11
|
+
getName() {
|
|
12
|
+
return 'DegreeCountryTuitionFeeSpecificRule';
|
|
13
|
+
}
|
|
14
|
+
getDescription() {
|
|
15
|
+
return 'Indexes: mba & llm + all countries + affordable tuition (0-2500)';
|
|
16
|
+
}
|
|
17
|
+
forSearch(dependencies) {
|
|
18
|
+
const { seoInfoBase, filterState } = dependencies;
|
|
19
|
+
const degreeTypeValue = seoInfoBase.getFilterOptionValueBy(FilterKey.DEGREE_TYPE, filterState);
|
|
20
|
+
const countryValue = seoInfoBase.getFilterOptionValueBy(FilterKey.COUNTRY, filterState);
|
|
21
|
+
const tuitionFeeValue = seoInfoBase.getFilterOptionValueBy(FilterKey.TUITION_FEE, filterState);
|
|
22
|
+
if (!countryValue || !tuitionFeeValue || !degreeTypeValue) {
|
|
23
|
+
return Promise.resolve(false);
|
|
24
|
+
}
|
|
25
|
+
if (degreeTypeValue === DegreeTypeFilterOptionValue.MBA && tuitionFeeValue === this.tuitionFeeValue) {
|
|
26
|
+
return Promise.resolve(true);
|
|
27
|
+
}
|
|
28
|
+
const allowedCountries = this.validCombinations[degreeTypeValue];
|
|
29
|
+
if (!allowedCountries) {
|
|
30
|
+
return Promise.resolve(false);
|
|
31
|
+
}
|
|
32
|
+
if (allowedCountries.includes(countryValue) && this.validDegreeValues.includes(degreeTypeValue) && tuitionFeeValue === this.tuitionFeeValue) {
|
|
33
|
+
return Promise.resolve(tuitionFeeValue === this.tuitionFeeValue);
|
|
34
|
+
}
|
|
35
|
+
return Promise.resolve(false);
|
|
36
|
+
}
|
|
37
|
+
forSitemapGenerator(filterKeyValues) {
|
|
38
|
+
const degreeTypeValues = filterKeyValues.get(FilterKey.DEGREE_TYPE);
|
|
39
|
+
const countryValues = filterKeyValues.get(FilterKey.COUNTRY);
|
|
40
|
+
const tuitionFeeValues = filterKeyValues.get(FilterKey.TUITION_FEE);
|
|
41
|
+
if (!degreeTypeValues?.length || !countryValues?.length || !tuitionFeeValues?.length) {
|
|
42
|
+
return Promise.resolve(false);
|
|
43
|
+
}
|
|
44
|
+
const degreeTypeValue = degreeTypeValues[0];
|
|
45
|
+
const tuitionFeeValue = tuitionFeeValues[0];
|
|
46
|
+
const countryValue = countryValues[0];
|
|
47
|
+
if (!countryValue || !tuitionFeeValue || !degreeTypeValue) {
|
|
48
|
+
return Promise.resolve(false);
|
|
49
|
+
}
|
|
50
|
+
if (degreeTypeValue === DegreeTypeFilterOptionValue.MBA && tuitionFeeValue === this.tuitionFeeValue) {
|
|
51
|
+
return Promise.resolve(true);
|
|
52
|
+
}
|
|
53
|
+
const allowedCountries = this.validCombinations[degreeTypeValue];
|
|
54
|
+
if (!allowedCountries) {
|
|
55
|
+
return Promise.resolve(false);
|
|
56
|
+
}
|
|
57
|
+
if (allowedCountries.includes(countryValue) && this.validDegreeValues.includes(degreeTypeValue) && tuitionFeeValue === this.tuitionFeeValue) {
|
|
58
|
+
return Promise.resolve(tuitionFeeValue === this.tuitionFeeValue);
|
|
59
|
+
}
|
|
60
|
+
return Promise.resolve(false);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ISearchDependencies } from '../../common/ISearchDependencies';
|
|
2
|
+
import { FilterKeyValuesMap } from '../../common/FilterKeyValuesMap';
|
|
3
|
+
import { BaseProgrammeRule } from '../BaseProgrammeRule';
|
|
4
|
+
export declare class DegreeDisciplineRule extends BaseProgrammeRule {
|
|
5
|
+
private readonly degreesAcceptingAllDisciplines;
|
|
6
|
+
private readonly allIndexableDegrees;
|
|
7
|
+
private readonly lawDisciplineIds;
|
|
8
|
+
private readonly masterOfPhilosophyDisciplineIds;
|
|
9
|
+
private readonly educationDisciplineIds;
|
|
10
|
+
private readonly engineeringDisciplineIds;
|
|
11
|
+
private readonly postgraduateDiplomaDisciplineIds;
|
|
12
|
+
getName(): string;
|
|
13
|
+
getDescription(): string;
|
|
14
|
+
forSearch(dependencies: ISearchDependencies): Promise<boolean>;
|
|
15
|
+
forSitemapGenerator(filterKeyValues: FilterKeyValuesMap): Promise<boolean>;
|
|
16
|
+
}
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
import { FilterKey } from '@studyportals/search-filters';
|
|
2
|
+
import { DegreeTypeFilterOptionValue } from '@studyportals/search-filters';
|
|
3
|
+
import { BaseProgrammeRule } from '../BaseProgrammeRule';
|
|
4
|
+
export class DegreeDisciplineRule extends BaseProgrammeRule {
|
|
5
|
+
degreesAcceptingAllDisciplines = [
|
|
6
|
+
DegreeTypeFilterOptionValue.MA,
|
|
7
|
+
DegreeTypeFilterOptionValue.MSC,
|
|
8
|
+
DegreeTypeFilterOptionValue.MBA
|
|
9
|
+
];
|
|
10
|
+
allIndexableDegrees = [
|
|
11
|
+
DegreeTypeFilterOptionValue.MA,
|
|
12
|
+
DegreeTypeFilterOptionValue.MSC,
|
|
13
|
+
DegreeTypeFilterOptionValue.MBA,
|
|
14
|
+
DegreeTypeFilterOptionValue.LLM,
|
|
15
|
+
DegreeTypeFilterOptionValue.MPHIL,
|
|
16
|
+
DegreeTypeFilterOptionValue.MED,
|
|
17
|
+
DegreeTypeFilterOptionValue.MENG,
|
|
18
|
+
DegreeTypeFilterOptionValue.POSTGRADIP
|
|
19
|
+
];
|
|
20
|
+
lawDisciplineIds = [
|
|
21
|
+
'6', // Law (main discipline)
|
|
22
|
+
'219', // Business Law
|
|
23
|
+
'114', // Civil & Private Law
|
|
24
|
+
'341', // Criminal Justice
|
|
25
|
+
'109', // Criminal Law
|
|
26
|
+
'48', // European Law
|
|
27
|
+
'85', // International Law
|
|
28
|
+
'220', // Legal Studies
|
|
29
|
+
'221', // Master of Laws (LLM)
|
|
30
|
+
'49', // Patent & Intellectual Property Law
|
|
31
|
+
'115', // Public Law
|
|
32
|
+
'247',
|
|
33
|
+
'278',
|
|
34
|
+
'87',
|
|
35
|
+
'323',
|
|
36
|
+
'108',
|
|
37
|
+
'362',
|
|
38
|
+
'241',
|
|
39
|
+
'127'
|
|
40
|
+
];
|
|
41
|
+
masterOfPhilosophyDisciplineIds = [
|
|
42
|
+
'118',
|
|
43
|
+
'23',
|
|
44
|
+
'335',
|
|
45
|
+
'71',
|
|
46
|
+
'281',
|
|
47
|
+
'4',
|
|
48
|
+
'8',
|
|
49
|
+
'293',
|
|
50
|
+
'272',
|
|
51
|
+
'330',
|
|
52
|
+
'87',
|
|
53
|
+
'111',
|
|
54
|
+
'6',
|
|
55
|
+
'332',
|
|
56
|
+
'40',
|
|
57
|
+
'308',
|
|
58
|
+
'224',
|
|
59
|
+
'113',
|
|
60
|
+
'84',
|
|
61
|
+
'38',
|
|
62
|
+
'79',
|
|
63
|
+
'278',
|
|
64
|
+
'80'
|
|
65
|
+
];
|
|
66
|
+
educationDisciplineIds = [
|
|
67
|
+
'289', // Education & Training (main discipline)
|
|
68
|
+
'290', // Adult Education
|
|
69
|
+
'360', // Art Education
|
|
70
|
+
'291', // Coaching
|
|
71
|
+
'292', // School Counselling
|
|
72
|
+
'333', // Early Childhood Education
|
|
73
|
+
'8', // Education
|
|
74
|
+
'349', // Educational Leadership
|
|
75
|
+
'293', // Educational Psychology
|
|
76
|
+
'98', // Educational Research
|
|
77
|
+
'371', // Health Education
|
|
78
|
+
'363', // Higher Education
|
|
79
|
+
'355', // Instructional Design
|
|
80
|
+
'370', // Literacy Education
|
|
81
|
+
'348', // Primary Education
|
|
82
|
+
'97', // Special Education
|
|
83
|
+
'359', // Secondary Education
|
|
84
|
+
'345', // STEM Education
|
|
85
|
+
'295', // Teaching
|
|
86
|
+
'358' // Teaching English as a Foreign Language
|
|
87
|
+
];
|
|
88
|
+
engineeringDisciplineIds = [
|
|
89
|
+
'7', // Engineering & Technology (main discipline)
|
|
90
|
+
'24', // Computer Science & IT
|
|
91
|
+
'37', // Aerospace Engineering
|
|
92
|
+
'250', // Automotive Engineering
|
|
93
|
+
'30', // Bio & Biomedical Engineering
|
|
94
|
+
'32', // Chemical Engineering
|
|
95
|
+
'29', // Civil Engineering & Construction
|
|
96
|
+
'340', // Communications Engineering
|
|
97
|
+
'34', // Electrical Engineering
|
|
98
|
+
'83', // Electronics & Embedded Technology
|
|
99
|
+
'94', // Energy Engineering
|
|
100
|
+
'28', // Environmental Engineering
|
|
101
|
+
'251', // General Engineering & Technology
|
|
102
|
+
'26', // Industrial & Systems Engineering
|
|
103
|
+
'252', // Marine Engineering
|
|
104
|
+
'33', // Materials Science
|
|
105
|
+
'39', // Mechanical Engineering
|
|
106
|
+
'253', // Mechatronics
|
|
107
|
+
'254', // Mining, Oil & Gas
|
|
108
|
+
'367', // Nuclear Engineering
|
|
109
|
+
'255', // Robotics
|
|
110
|
+
'350', // Sound Engineering
|
|
111
|
+
'256', // Sustainable Energy
|
|
112
|
+
'257', // Transportation Engineering
|
|
113
|
+
'397', // Production and Manufacturing Engineering
|
|
114
|
+
'399' // Structural Engineering
|
|
115
|
+
];
|
|
116
|
+
postgraduateDiplomaDisciplineIds = [
|
|
117
|
+
'362', '241', '108', '133', '373', '356', '282', '311', '113', '79'
|
|
118
|
+
];
|
|
119
|
+
getName() {
|
|
120
|
+
return 'DegreeDisciplineRule';
|
|
121
|
+
}
|
|
122
|
+
getDescription() {
|
|
123
|
+
return 'Indexes: master-of-arts, master-of-science, master-of-business-administration + all disciplines; master-of-laws + law disciplines only; master-of-philosophy + specific disciplines only; master-of-education + education & training disciplines only; master-of-engineering + engineering & technology disciplines only; postgraduate-diploma + specific disciplines only';
|
|
124
|
+
}
|
|
125
|
+
forSearch(dependencies) {
|
|
126
|
+
const { seoInfoBase, filterState } = dependencies;
|
|
127
|
+
const degreeTypeValue = seoInfoBase.getFilterOptionValueBy(FilterKey.DEGREE_TYPE, filterState);
|
|
128
|
+
const disciplineValue = seoInfoBase.getFilterOptionValueBy(FilterKey.DISCIPLINES, filterState);
|
|
129
|
+
if (!degreeTypeValue || !disciplineValue) {
|
|
130
|
+
return Promise.resolve(false);
|
|
131
|
+
}
|
|
132
|
+
if (!this.allIndexableDegrees.includes(degreeTypeValue)) {
|
|
133
|
+
return Promise.resolve(false);
|
|
134
|
+
}
|
|
135
|
+
if (degreeTypeValue === DegreeTypeFilterOptionValue.LLM) {
|
|
136
|
+
return Promise.resolve(this.lawDisciplineIds.includes(disciplineValue));
|
|
137
|
+
}
|
|
138
|
+
if (degreeTypeValue === DegreeTypeFilterOptionValue.MPHIL) {
|
|
139
|
+
return Promise.resolve(this.masterOfPhilosophyDisciplineIds.includes(disciplineValue));
|
|
140
|
+
}
|
|
141
|
+
if (degreeTypeValue === DegreeTypeFilterOptionValue.MED) {
|
|
142
|
+
return Promise.resolve(this.educationDisciplineIds.includes(disciplineValue));
|
|
143
|
+
}
|
|
144
|
+
if (degreeTypeValue === DegreeTypeFilterOptionValue.MENG) {
|
|
145
|
+
return Promise.resolve(this.engineeringDisciplineIds.includes(disciplineValue));
|
|
146
|
+
}
|
|
147
|
+
if (degreeTypeValue === DegreeTypeFilterOptionValue.POSTGRADIP) {
|
|
148
|
+
return Promise.resolve(this.postgraduateDiplomaDisciplineIds.includes(disciplineValue));
|
|
149
|
+
}
|
|
150
|
+
if (this.degreesAcceptingAllDisciplines.includes(degreeTypeValue)) {
|
|
151
|
+
return Promise.resolve(true);
|
|
152
|
+
}
|
|
153
|
+
return Promise.resolve(true);
|
|
154
|
+
}
|
|
155
|
+
forSitemapGenerator(filterKeyValues) {
|
|
156
|
+
const degreeTypeValues = filterKeyValues.get(FilterKey.DEGREE_TYPE);
|
|
157
|
+
const disciplineValues = filterKeyValues.get(FilterKey.DISCIPLINES);
|
|
158
|
+
if (!degreeTypeValues?.length || !disciplineValues?.length) {
|
|
159
|
+
return Promise.resolve(false);
|
|
160
|
+
}
|
|
161
|
+
const degreeTypeValue = degreeTypeValues[0];
|
|
162
|
+
const disciplineValue = disciplineValues[0];
|
|
163
|
+
if (!degreeTypeValue || !disciplineValue) {
|
|
164
|
+
return Promise.resolve(false);
|
|
165
|
+
}
|
|
166
|
+
if (!this.allIndexableDegrees.includes(degreeTypeValue)) {
|
|
167
|
+
return Promise.resolve(false);
|
|
168
|
+
}
|
|
169
|
+
if (degreeTypeValue === DegreeTypeFilterOptionValue.LLM) {
|
|
170
|
+
return Promise.resolve(this.lawDisciplineIds.includes(disciplineValue));
|
|
171
|
+
}
|
|
172
|
+
if (degreeTypeValue === DegreeTypeFilterOptionValue.MPHIL) {
|
|
173
|
+
return Promise.resolve(this.masterOfPhilosophyDisciplineIds.includes(disciplineValue));
|
|
174
|
+
}
|
|
175
|
+
if (degreeTypeValue === DegreeTypeFilterOptionValue.MED) {
|
|
176
|
+
return Promise.resolve(this.educationDisciplineIds.includes(disciplineValue));
|
|
177
|
+
}
|
|
178
|
+
if (degreeTypeValue === DegreeTypeFilterOptionValue.MENG) {
|
|
179
|
+
return Promise.resolve(this.engineeringDisciplineIds.includes(disciplineValue));
|
|
180
|
+
}
|
|
181
|
+
if (degreeTypeValue === DegreeTypeFilterOptionValue.POSTGRADIP) {
|
|
182
|
+
return Promise.resolve(this.postgraduateDiplomaDisciplineIds.includes(disciplineValue));
|
|
183
|
+
}
|
|
184
|
+
if (this.degreesAcceptingAllDisciplines.includes(degreeTypeValue)) {
|
|
185
|
+
return Promise.resolve(true);
|
|
186
|
+
}
|
|
187
|
+
return Promise.resolve(true);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ISearchDependencies } from '../../common/ISearchDependencies';
|
|
2
|
+
import { FilterKeyValuesMap } from '../../common/FilterKeyValuesMap';
|
|
3
|
+
import { BaseProgrammeRule } from '../BaseProgrammeRule';
|
|
4
|
+
export declare class ErasmusOrJointSpecialProgrammesRule extends BaseProgrammeRule {
|
|
5
|
+
forSearch(dependencies: ISearchDependencies): Promise<boolean>;
|
|
6
|
+
forSitemapGenerator(filterKeyValues: FilterKeyValuesMap): Promise<boolean>;
|
|
7
|
+
getName(): string;
|
|
8
|
+
getDescription(): string;
|
|
9
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { FilterKey } from '@studyportals/search-filters';
|
|
2
|
+
import { SpecialProgrammesFilterOptionValue } from '@studyportals/search-filters';
|
|
3
|
+
import { BaseProgrammeRule } from '../BaseProgrammeRule';
|
|
4
|
+
export class ErasmusOrJointSpecialProgrammesRule extends BaseProgrammeRule {
|
|
5
|
+
forSearch(dependencies) {
|
|
6
|
+
const { seoInfoBase, filterState } = dependencies;
|
|
7
|
+
const selectedSpecialProgramme = seoInfoBase.getFilterOptionValueBy(FilterKey.SPECIAL_PROGRAMMES, filterState);
|
|
8
|
+
if (!selectedSpecialProgramme) {
|
|
9
|
+
return Promise.resolve(false);
|
|
10
|
+
}
|
|
11
|
+
return Promise.resolve(selectedSpecialProgramme === SpecialProgrammesFilterOptionValue.ERASMUS_MUNDUS ||
|
|
12
|
+
selectedSpecialProgramme === SpecialProgrammesFilterOptionValue.JOINT_PROGRAMMES);
|
|
13
|
+
}
|
|
14
|
+
forSitemapGenerator(filterKeyValues) {
|
|
15
|
+
const [selectedSpecialProgramme] = filterKeyValues.get(FilterKey.SPECIAL_PROGRAMMES);
|
|
16
|
+
if (!selectedSpecialProgramme) {
|
|
17
|
+
return Promise.resolve(false);
|
|
18
|
+
}
|
|
19
|
+
return Promise.resolve(selectedSpecialProgramme === SpecialProgrammesFilterOptionValue.ERASMUS_MUNDUS ||
|
|
20
|
+
selectedSpecialProgramme === SpecialProgrammesFilterOptionValue.JOINT_PROGRAMMES);
|
|
21
|
+
}
|
|
22
|
+
getName() {
|
|
23
|
+
return 'ErasmusOrJointSpecialProgrammesRule';
|
|
24
|
+
}
|
|
25
|
+
getDescription() {
|
|
26
|
+
return 'Is indexable if the selected special programme is Erasmus Mundus or Joint Programmes.';
|
|
27
|
+
}
|
|
28
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ISearchDependencies } from '../../common/ISearchDependencies';
|
|
2
|
+
import { FilterKeyValuesMap } from '../../common/FilterKeyValuesMap';
|
|
3
|
+
import { BaseProgrammeRule } from '../BaseProgrammeRule';
|
|
4
|
+
export declare class IndexableDegreeRule extends BaseProgrammeRule {
|
|
5
|
+
forSearch(dependencies: ISearchDependencies): Promise<boolean>;
|
|
6
|
+
forSitemapGenerator(filterKeyValues: FilterKeyValuesMap): Promise<boolean>;
|
|
7
|
+
getName(): string;
|
|
8
|
+
getDescription(): string;
|
|
9
|
+
private get indexableDegreeTypes();
|
|
10
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { FilterKey } from '@studyportals/search-filters';
|
|
2
|
+
import { DegreeTypeFilterOptionValue } from '@studyportals/search-filters';
|
|
3
|
+
import { BaseProgrammeRule } from '../BaseProgrammeRule';
|
|
4
|
+
export class IndexableDegreeRule extends BaseProgrammeRule {
|
|
5
|
+
forSearch(dependencies) {
|
|
6
|
+
const { seoInfoBase, filterState } = dependencies;
|
|
7
|
+
const selectedDegree = seoInfoBase.getFilterOptionValueBy(FilterKey.DEGREE_TYPE, filterState);
|
|
8
|
+
if (!selectedDegree) {
|
|
9
|
+
return Promise.resolve(false);
|
|
10
|
+
}
|
|
11
|
+
const isIndexable = this.indexableDegreeTypes.includes(selectedDegree);
|
|
12
|
+
return Promise.resolve(isIndexable);
|
|
13
|
+
}
|
|
14
|
+
forSitemapGenerator(filterKeyValues) {
|
|
15
|
+
const [selectedDegree] = filterKeyValues.get(FilterKey.DEGREE_TYPE);
|
|
16
|
+
if (!selectedDegree) {
|
|
17
|
+
return Promise.resolve(false);
|
|
18
|
+
}
|
|
19
|
+
const isIndexable = this.indexableDegreeTypes.includes(selectedDegree);
|
|
20
|
+
return Promise.resolve(isIndexable);
|
|
21
|
+
}
|
|
22
|
+
getName() {
|
|
23
|
+
return 'IndexableDegreeRule';
|
|
24
|
+
}
|
|
25
|
+
getDescription() {
|
|
26
|
+
return `Indexable if the selected degree type is one of the following: ${this.indexableDegreeTypes.join(', ')}`;
|
|
27
|
+
}
|
|
28
|
+
get indexableDegreeTypes() {
|
|
29
|
+
return [
|
|
30
|
+
DegreeTypeFilterOptionValue.DOCTORATE,
|
|
31
|
+
DegreeTypeFilterOptionValue.DBA,
|
|
32
|
+
DegreeTypeFilterOptionValue.PHD,
|
|
33
|
+
DegreeTypeFilterOptionValue.MSC,
|
|
34
|
+
DegreeTypeFilterOptionValue.MA,
|
|
35
|
+
DegreeTypeFilterOptionValue.MBA,
|
|
36
|
+
DegreeTypeFilterOptionValue.LLM,
|
|
37
|
+
DegreeTypeFilterOptionValue.MPHIL,
|
|
38
|
+
DegreeTypeFilterOptionValue.MED,
|
|
39
|
+
DegreeTypeFilterOptionValue.MENG,
|
|
40
|
+
DegreeTypeFilterOptionValue.POSTGRADIP,
|
|
41
|
+
DegreeTypeFilterOptionValue.POSTGRADCERT,
|
|
42
|
+
DegreeTypeFilterOptionValue.PREMASTER,
|
|
43
|
+
DegreeTypeFilterOptionValue.BSC,
|
|
44
|
+
DegreeTypeFilterOptionValue.BA,
|
|
45
|
+
DegreeTypeFilterOptionValue.BBA,
|
|
46
|
+
DegreeTypeFilterOptionValue.ASSOCIATE_DEGREE,
|
|
47
|
+
DegreeTypeFilterOptionValue.GRADUATE_CERTTIFICATE,
|
|
48
|
+
DegreeTypeFilterOptionValue.GRADUATE_DIPLOMA,
|
|
49
|
+
DegreeTypeFilterOptionValue.PREBACHELOR,
|
|
50
|
+
DegreeTypeFilterOptionValue.CERTIFICATE
|
|
51
|
+
];
|
|
52
|
+
}
|
|
53
|
+
}
|
|
@@ -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 IndexableDurationRule extends BaseProgrammeRule {
|
|
5
|
+
private durationPresenter;
|
|
6
|
+
constructor();
|
|
7
|
+
forSearch(dependencies: ISearchDependencies): Promise<boolean>;
|
|
8
|
+
forSitemapGenerator(filterKeyValues: FilterKeyValuesMap): Promise<boolean>;
|
|
9
|
+
getName(): string;
|
|
10
|
+
getDescription(): string;
|
|
11
|
+
private isIndexable;
|
|
12
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { FilterKey } from '@studyportals/search-filters';
|
|
2
|
+
import { BaseProgrammeRule } from '../BaseProgrammeRule';
|
|
3
|
+
import { DurationPresenter } from '../../presenters/DurationPresenter';
|
|
4
|
+
export class IndexableDurationRule extends BaseProgrammeRule {
|
|
5
|
+
durationPresenter;
|
|
6
|
+
constructor() {
|
|
7
|
+
super();
|
|
8
|
+
this.durationPresenter = DurationPresenter.getInstance();
|
|
9
|
+
}
|
|
10
|
+
forSearch(dependencies) {
|
|
11
|
+
const { seoInfoBase, filterState } = dependencies;
|
|
12
|
+
const selectedDuration = seoInfoBase.getFilterOptionValueBy(FilterKey.DURATION, filterState);
|
|
13
|
+
if (!selectedDuration) {
|
|
14
|
+
return Promise.resolve(false);
|
|
15
|
+
}
|
|
16
|
+
const isIndexable = this.isIndexable(selectedDuration);
|
|
17
|
+
return Promise.resolve(isIndexable);
|
|
18
|
+
}
|
|
19
|
+
forSitemapGenerator(filterKeyValues) {
|
|
20
|
+
const [selectedDuration] = filterKeyValues.get(FilterKey.DURATION);
|
|
21
|
+
if (!selectedDuration) {
|
|
22
|
+
return Promise.resolve(false);
|
|
23
|
+
}
|
|
24
|
+
const isIndexable = this.isIndexable(selectedDuration);
|
|
25
|
+
return Promise.resolve(isIndexable);
|
|
26
|
+
}
|
|
27
|
+
getName() {
|
|
28
|
+
return 'IndexableDurationRule';
|
|
29
|
+
}
|
|
30
|
+
getDescription() {
|
|
31
|
+
return `Indexable if duration is 1 year, 2 years, 3 years, or 4 years.`;
|
|
32
|
+
}
|
|
33
|
+
isIndexable(value) {
|
|
34
|
+
return this.durationPresenter.getFragments()
|
|
35
|
+
.some(fragment => fragment.id === value);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ISearchDependencies } from '../../common/ISearchDependencies';
|
|
2
|
+
import { FilterKeyValuesMap } from '../../common/FilterKeyValuesMap';
|
|
3
|
+
import { BaseProgrammeRule } from '../BaseProgrammeRule';
|
|
4
|
+
export declare class IndexableEducationalFormRule extends BaseProgrammeRule {
|
|
5
|
+
forSearch(dependencies: ISearchDependencies): Promise<boolean>;
|
|
6
|
+
forSitemapGenerator(filterKeyValues: FilterKeyValuesMap): Promise<boolean>;
|
|
7
|
+
getName(): string;
|
|
8
|
+
getDescription(): string;
|
|
9
|
+
private isIndexable;
|
|
10
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { FilterKey } from '@studyportals/search-filters';
|
|
2
|
+
import { EducationalFormFilterOptionValue } from '@studyportals/search-filters';
|
|
3
|
+
import { BaseProgrammeRule } from '../BaseProgrammeRule';
|
|
4
|
+
export class IndexableEducationalFormRule extends BaseProgrammeRule {
|
|
5
|
+
forSearch(dependencies) {
|
|
6
|
+
const { seoInfoBase, filterState } = dependencies;
|
|
7
|
+
const selectedEducationalForm = seoInfoBase.getFilterOptionValueBy(FilterKey.EDUCATIONAL_FORM, filterState);
|
|
8
|
+
if (!selectedEducationalForm) {
|
|
9
|
+
return Promise.resolve(false);
|
|
10
|
+
}
|
|
11
|
+
const isIndexable = this.isIndexable(selectedEducationalForm);
|
|
12
|
+
return Promise.resolve(isIndexable);
|
|
13
|
+
}
|
|
14
|
+
forSitemapGenerator(filterKeyValues) {
|
|
15
|
+
const [selectedEducationalForm] = filterKeyValues.get(FilterKey.EDUCATIONAL_FORM);
|
|
16
|
+
if (!selectedEducationalForm) {
|
|
17
|
+
return Promise.resolve(false);
|
|
18
|
+
}
|
|
19
|
+
const isIndexable = this.isIndexable(selectedEducationalForm);
|
|
20
|
+
return Promise.resolve(isIndexable);
|
|
21
|
+
}
|
|
22
|
+
getName() {
|
|
23
|
+
return 'IndexableEducationalFormRule';
|
|
24
|
+
}
|
|
25
|
+
getDescription() {
|
|
26
|
+
return `Indexable if educational form is Academic Course, Summer School, Semester Study Abroad, or Skill Professional Course.`;
|
|
27
|
+
}
|
|
28
|
+
isIndexable(value) {
|
|
29
|
+
return (value === EducationalFormFilterOptionValue.ACADEMIC_COURSE ||
|
|
30
|
+
value === EducationalFormFilterOptionValue.SUMMER_SCHOOL ||
|
|
31
|
+
value === EducationalFormFilterOptionValue.SEMESTER_STUDY_ABROAD ||
|
|
32
|
+
value === EducationalFormFilterOptionValue.SKILL_PROFESSIONAL_COURSE);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { IProgrammeSearchDependencies } from '../types/IProgrammeSearchDependencies';
|
|
2
|
+
import { BaseProgrammeRule } from '../BaseProgrammeRule';
|
|
3
|
+
export declare class IndexablePageNumberRule extends BaseProgrammeRule {
|
|
4
|
+
private commonRule;
|
|
5
|
+
forSearch(dependencies: IProgrammeSearchDependencies): Promise<boolean>;
|
|
6
|
+
forSitemapGenerator(): Promise<boolean>;
|
|
7
|
+
getName(): string;
|
|
8
|
+
getDescription(): string;
|
|
9
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { BaseProgrammeRule } from '../BaseProgrammeRule';
|
|
2
|
+
import { IndexablePageNumberRule as CommonIndexablePageNumberRule } from '../../common/rules/IndexablePageNumberRule';
|
|
3
|
+
export class IndexablePageNumberRule extends BaseProgrammeRule {
|
|
4
|
+
commonRule = new CommonIndexablePageNumberRule();
|
|
5
|
+
forSearch(dependencies) {
|
|
6
|
+
return this.commonRule.forSearch(dependencies);
|
|
7
|
+
}
|
|
8
|
+
forSitemapGenerator() {
|
|
9
|
+
return this.commonRule.forSitemapGenerator();
|
|
10
|
+
}
|
|
11
|
+
getName() {
|
|
12
|
+
return this.commonRule.getName();
|
|
13
|
+
}
|
|
14
|
+
getDescription() {
|
|
15
|
+
return this.commonRule.getDescription();
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { FilterKey } from '@studyportals/search-filters';
|
|
2
|
+
import { DegreeTypeFilterOptionValue } from '@studyportals/search-filters';
|
|
3
|
+
import { BaseProgrammeFilterKeyValueRule } from '../BaseProgrammeFilterKeyValueRule';
|
|
4
|
+
export class MbaDegreeRule extends BaseProgrammeFilterKeyValueRule {
|
|
5
|
+
constructor() {
|
|
6
|
+
const filterKeyValues = new Map([[FilterKey.DEGREE_TYPE, [DegreeTypeFilterOptionValue.MBA]]]);
|
|
7
|
+
super(filterKeyValues);
|
|
8
|
+
}
|
|
9
|
+
getName() {
|
|
10
|
+
return 'MbaDegreeRule';
|
|
11
|
+
}
|
|
12
|
+
getDescription() {
|
|
13
|
+
return 'Is indexable if the selected degree type is MBA.';
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ISearchDependencies } from '../../common/ISearchDependencies';
|
|
2
|
+
import { FilterKeyValuesMap } from '../../common/FilterKeyValuesMap';
|
|
3
|
+
import { BaseProgrammeRule } from '../BaseProgrammeRule';
|
|
4
|
+
export declare class MbaOrMscDegreeRule extends BaseProgrammeRule {
|
|
5
|
+
forSearch(dependencies: ISearchDependencies): Promise<boolean>;
|
|
6
|
+
forSitemapGenerator(filterKeyValues: FilterKeyValuesMap): Promise<boolean>;
|
|
7
|
+
getName(): string;
|
|
8
|
+
getDescription(): string;
|
|
9
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { FilterKey } from '@studyportals/search-filters';
|
|
2
|
+
import { DegreeTypeFilterOptionValue } from '@studyportals/search-filters';
|
|
3
|
+
import { BaseProgrammeRule } from '../BaseProgrammeRule';
|
|
4
|
+
export class MbaOrMscDegreeRule extends BaseProgrammeRule {
|
|
5
|
+
forSearch(dependencies) {
|
|
6
|
+
const { seoInfoBase, filterState } = dependencies;
|
|
7
|
+
const selectedDegree = seoInfoBase.getFilterOptionValueBy(FilterKey.DEGREE_TYPE, filterState);
|
|
8
|
+
if (!selectedDegree) {
|
|
9
|
+
return Promise.resolve(false);
|
|
10
|
+
}
|
|
11
|
+
return Promise.resolve(selectedDegree === DegreeTypeFilterOptionValue.MSC || selectedDegree === DegreeTypeFilterOptionValue.MBA);
|
|
12
|
+
}
|
|
13
|
+
forSitemapGenerator(filterKeyValues) {
|
|
14
|
+
const [selectedDegree] = filterKeyValues.get(FilterKey.DEGREE_TYPE);
|
|
15
|
+
if (!selectedDegree) {
|
|
16
|
+
return Promise.resolve(false);
|
|
17
|
+
}
|
|
18
|
+
return Promise.resolve(selectedDegree === DegreeTypeFilterOptionValue.MSC || selectedDegree === DegreeTypeFilterOptionValue.MBA);
|
|
19
|
+
}
|
|
20
|
+
getName() {
|
|
21
|
+
return 'MbaOrMscDegreeRule';
|
|
22
|
+
}
|
|
23
|
+
getDescription() {
|
|
24
|
+
return 'Is indexable if the selected degree type is MBA or MSc.';
|
|
25
|
+
}
|
|
26
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { IProgrammeSearchDependencies } from '../types/IProgrammeSearchDependencies';
|
|
2
|
+
import { PortalType } from '@studyportals/domain-client';
|
|
3
|
+
import { BaseProgrammeRule } from '../BaseProgrammeRule';
|
|
4
|
+
export declare class NotDistanceLearningPortalRule extends BaseProgrammeRule {
|
|
5
|
+
private readonly portalType;
|
|
6
|
+
constructor(portalType?: PortalType);
|
|
7
|
+
forSearch(dependencies: IProgrammeSearchDependencies): Promise<boolean>;
|
|
8
|
+
forSitemapGenerator(): Promise<boolean>;
|
|
9
|
+
getName(): string;
|
|
10
|
+
getDescription(): string;
|
|
11
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { PortalType } from '@studyportals/domain-client';
|
|
2
|
+
import { DependencyMissingError } from '../../errors/DependencyMissingError';
|
|
3
|
+
import { BaseProgrammeRule } from '../BaseProgrammeRule';
|
|
4
|
+
export class NotDistanceLearningPortalRule extends BaseProgrammeRule {
|
|
5
|
+
portalType;
|
|
6
|
+
constructor(portalType) {
|
|
7
|
+
super();
|
|
8
|
+
this.portalType = portalType;
|
|
9
|
+
}
|
|
10
|
+
forSearch(dependencies) {
|
|
11
|
+
const { portalType } = dependencies;
|
|
12
|
+
const isDistanceLearning = portalType === PortalType.DISTANCE_LEARNING;
|
|
13
|
+
return Promise.resolve(!isDistanceLearning);
|
|
14
|
+
}
|
|
15
|
+
forSitemapGenerator() {
|
|
16
|
+
if (!this.portalType) {
|
|
17
|
+
throw new DependencyMissingError('PortalType');
|
|
18
|
+
}
|
|
19
|
+
const isDistanceLearning = this.portalType === PortalType.DISTANCE_LEARNING;
|
|
20
|
+
return Promise.resolve(!isDistanceLearning);
|
|
21
|
+
}
|
|
22
|
+
getName() {
|
|
23
|
+
return 'NotDistanceLearningPortalRule';
|
|
24
|
+
}
|
|
25
|
+
getDescription() {
|
|
26
|
+
return 'Is indexable if the portal type is not distance learning.';
|
|
27
|
+
}
|
|
28
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { FilterKey } from '@studyportals/search-filters';
|
|
2
|
+
import { DurationFilterOptionValue } from '@studyportals/search-filters';
|
|
3
|
+
import { BaseProgrammeFilterKeyValueRule } from '../BaseProgrammeFilterKeyValueRule';
|
|
4
|
+
export class OneYearDurationRule extends BaseProgrammeFilterKeyValueRule {
|
|
5
|
+
constructor() {
|
|
6
|
+
const filterKeyValues = new Map([[FilterKey.DURATION, [DurationFilterOptionValue.ONE_YEAR]]]);
|
|
7
|
+
super(filterKeyValues);
|
|
8
|
+
}
|
|
9
|
+
getName() {
|
|
10
|
+
return 'OneYearDurationRule';
|
|
11
|
+
}
|
|
12
|
+
getDescription() {
|
|
13
|
+
return 'Is indexable if the selected duration is 1 year.';
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { FilterKey } from '@studyportals/search-filters';
|
|
2
|
+
import { FormatFilterOptionValue } from '@studyportals/search-filters';
|
|
3
|
+
import { BaseProgrammeFilterKeyValueRule } from '../BaseProgrammeFilterKeyValueRule';
|
|
4
|
+
export class PartTimeFormatRule extends BaseProgrammeFilterKeyValueRule {
|
|
5
|
+
constructor() {
|
|
6
|
+
const filterKeyValues = new Map([[FilterKey.ATTENDANCE, [FormatFilterOptionValue.PART_TIME]]]);
|
|
7
|
+
super(filterKeyValues);
|
|
8
|
+
}
|
|
9
|
+
getName() {
|
|
10
|
+
return 'PartTimeFormatRule';
|
|
11
|
+
}
|
|
12
|
+
getDescription() {
|
|
13
|
+
return 'Is indexable if the selected format is part-time.';
|
|
14
|
+
}
|
|
15
|
+
}
|