@studyportals/fawkes 7.4.2-2 → 8.0.1-0

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.
Files changed (389) hide show
  1. package/README.md +176 -176
  2. package/package.json +2 -1
  3. package/dist/index.d.ts +0 -1
  4. package/dist/index.js +0 -1
  5. package/dist/organisations-seo/index.d.ts +0 -4
  6. package/dist/organisations-seo/index.js +0 -2
  7. package/dist/programmes-seo/index.d.ts +0 -6
  8. package/dist/programmes-seo/index.js +0 -2
  9. package/dist/scholarships-seo/index.d.ts +0 -5
  10. package/dist/scholarships-seo/index.js +0 -3
  11. package/dist/sitemap-generator-seo/index.d.ts +0 -13
  12. package/dist/sitemap-generator-seo/index.js +0 -4
  13. package/dist/src/common/FilterKeyValuesMap.d.ts +0 -2
  14. package/dist/src/common/FilterKeyValuesMap.js +0 -1
  15. package/dist/src/common/IDependencies.d.ts +0 -4
  16. package/dist/src/common/IDependencies.js +0 -1
  17. package/dist/src/common/IDocumentationManager.d.ts +0 -5
  18. package/dist/src/common/IDocumentationManager.js +0 -1
  19. package/dist/src/common/IPresenter.d.ts +0 -6
  20. package/dist/src/common/IPresenter.js +0 -1
  21. package/dist/src/common/IRule.d.ts +0 -8
  22. package/dist/src/common/IRule.js +0 -1
  23. package/dist/src/common/ISearchApplicationState.d.ts +0 -4
  24. package/dist/src/common/ISearchApplicationState.js +0 -1
  25. package/dist/src/common/ISearchDependencies.d.ts +0 -7
  26. package/dist/src/common/ISearchDependencies.js +0 -1
  27. package/dist/src/common/ISearchIndexabilityManager.d.ts +0 -4
  28. package/dist/src/common/ISearchIndexabilityManager.js +0 -1
  29. package/dist/src/common/ISeoDependencies.d.ts +0 -3
  30. package/dist/src/common/ISeoDependencies.js +0 -1
  31. package/dist/src/common/ISeoFilterState.d.ts +0 -5
  32. package/dist/src/common/ISeoFilterState.js +0 -1
  33. package/dist/src/common/ISeoIndexabilityPolicy.d.ts +0 -7
  34. package/dist/src/common/ISeoIndexabilityPolicy.js +0 -1
  35. package/dist/src/common/ISeoInfoBase.d.ts +0 -8
  36. package/dist/src/common/ISeoInfoBase.js +0 -1
  37. package/dist/src/common/ISitemapDependencies.d.ts +0 -5
  38. package/dist/src/common/ISitemapDependencies.js +0 -1
  39. package/dist/src/common/ISitemapUrlGenerator.d.ts +0 -7
  40. package/dist/src/common/ISitemapUrlGenerator.js +0 -1
  41. package/dist/src/common/index.d.ts +0 -5
  42. package/dist/src/common/index.js +0 -5
  43. package/dist/src/common/policies/BaseSeoIndexabilityPolicy.d.ts +0 -26
  44. package/dist/src/common/policies/BaseSeoIndexabilityPolicy.js +0 -56
  45. package/dist/src/common/rules/BaseFilterKeyValueRule.d.ts +0 -11
  46. package/dist/src/common/rules/BaseFilterKeyValueRule.js +0 -28
  47. package/dist/src/common/rules/IndexablePageNumberRule.d.ts +0 -9
  48. package/dist/src/common/rules/IndexablePageNumberRule.js +0 -17
  49. package/dist/src/common/rules/NoFiltersSelectedRule.d.ts +0 -9
  50. package/dist/src/common/rules/NoFiltersSelectedRule.js +0 -17
  51. package/dist/src/common/rules/OnlineAttendanceRule.d.ts +0 -6
  52. package/dist/src/common/rules/OnlineAttendanceRule.js +0 -14
  53. package/dist/src/common/rules/OnlyFiltersSelectedRule.d.ts +0 -12
  54. package/dist/src/common/rules/OnlyFiltersSelectedRule.js +0 -30
  55. package/dist/src/common/rules/SingleValueSelectedForFilterRule.d.ts +0 -12
  56. package/dist/src/common/rules/SingleValueSelectedForFilterRule.js +0 -24
  57. package/dist/src/enums/AttendanceFilterOptionValue.d.ts +0 -5
  58. package/dist/src/enums/AttendanceFilterOptionValue.js +0 -6
  59. package/dist/src/enums/DegreeTypeFilterOptionValue.d.ts +0 -29
  60. package/dist/src/enums/DegreeTypeFilterOptionValue.js +0 -30
  61. package/dist/src/enums/DependencyTypes.d.ts +0 -4
  62. package/dist/src/enums/DependencyTypes.js +0 -5
  63. package/dist/src/enums/DurationFilterOptionValue.d.ts +0 -16
  64. package/dist/src/enums/DurationFilterOptionValue.js +0 -17
  65. package/dist/src/enums/EducationalFormFilterOptionValue.d.ts +0 -8
  66. package/dist/src/enums/EducationalFormFilterOptionValue.js +0 -9
  67. package/dist/src/enums/FilterCombinations.d.ts +0 -52
  68. package/dist/src/enums/FilterCombinations.js +0 -53
  69. package/dist/src/enums/FilterKey.d.ts +0 -21
  70. package/dist/src/enums/FilterKey.js +0 -22
  71. package/dist/src/enums/FormatFilterOptionValue.d.ts +0 -4
  72. package/dist/src/enums/FormatFilterOptionValue.js +0 -5
  73. package/dist/src/enums/SortingOptions.d.ts +0 -4
  74. package/dist/src/enums/SortingOptions.js +0 -5
  75. package/dist/src/enums/SpecialProgrammesFilterOptionValue.d.ts +0 -5
  76. package/dist/src/enums/SpecialProgrammesFilterOptionValue.js +0 -6
  77. package/dist/src/enums/TuitionFeeFilterOptionValue.d.ts +0 -3
  78. package/dist/src/enums/TuitionFeeFilterOptionValue.js +0 -4
  79. package/dist/src/errors/DependencyMissingError.d.ts +0 -3
  80. package/dist/src/errors/DependencyMissingError.js +0 -5
  81. package/dist/src/errors/InvalidDependencyTypeError.d.ts +0 -3
  82. package/dist/src/errors/InvalidDependencyTypeError.js +0 -5
  83. package/dist/src/errors/InvalidFilterValueError.d.ts +0 -4
  84. package/dist/src/errors/InvalidFilterValueError.js +0 -5
  85. package/dist/src/organisations/IOrganisationSearchApplicationState.d.ts +0 -5
  86. package/dist/src/organisations/IOrganisationSearchApplicationState.js +0 -1
  87. package/dist/src/organisations/ISeoSortingState.d.ts +0 -4
  88. package/dist/src/organisations/ISeoSortingState.js +0 -1
  89. package/dist/src/organisations/SearchIndexabilityManager.d.ts +0 -12
  90. package/dist/src/organisations/SearchIndexabilityManager.js +0 -42
  91. package/dist/src/organisations/index.d.ts +0 -4
  92. package/dist/src/organisations/index.js +0 -4
  93. package/dist/src/organisations/policies/OrganisationsSeoIndexabilityPolicy.d.ts +0 -17
  94. package/dist/src/organisations/policies/OrganisationsSeoIndexabilityPolicy.js +0 -33
  95. package/dist/src/organisations/policies/RankedOrganisationsSeoIndexabilityPolicy.d.ts +0 -9
  96. package/dist/src/organisations/policies/RankedOrganisationsSeoIndexabilityPolicy.js +0 -22
  97. package/dist/src/organisations/policies/index.d.ts +0 -18
  98. package/dist/src/organisations/policies/index.js +0 -18
  99. package/dist/src/organisations/policies/our-picks/Area.d.ts +0 -13
  100. package/dist/src/organisations/policies/our-picks/Area.js +0 -35
  101. package/dist/src/organisations/policies/our-picks/AreaAttendance.d.ts +0 -15
  102. package/dist/src/organisations/policies/our-picks/AreaAttendance.js +0 -45
  103. package/dist/src/organisations/policies/our-picks/Attendance.d.ts +0 -14
  104. package/dist/src/organisations/policies/our-picks/Attendance.js +0 -33
  105. package/dist/src/organisations/policies/our-picks/Continent.d.ts +0 -13
  106. package/dist/src/organisations/policies/our-picks/Continent.js +0 -31
  107. package/dist/src/organisations/policies/our-picks/Country.d.ts +0 -13
  108. package/dist/src/organisations/policies/our-picks/Country.js +0 -28
  109. package/dist/src/organisations/policies/our-picks/CountryAttendance.d.ts +0 -15
  110. package/dist/src/organisations/policies/our-picks/CountryAttendance.js +0 -43
  111. package/dist/src/organisations/policies/our-picks/Unfiltered.d.ts +0 -12
  112. package/dist/src/organisations/policies/our-picks/Unfiltered.js +0 -16
  113. package/dist/src/organisations/policies/ranked/RankedArea.d.ts +0 -13
  114. package/dist/src/organisations/policies/ranked/RankedArea.js +0 -37
  115. package/dist/src/organisations/policies/ranked/RankedAreaDiscipline.d.ts +0 -14
  116. package/dist/src/organisations/policies/ranked/RankedAreaDiscipline.js +0 -45
  117. package/dist/src/organisations/policies/ranked/RankedAttendance.d.ts +0 -14
  118. package/dist/src/organisations/policies/ranked/RankedAttendance.js +0 -35
  119. package/dist/src/organisations/policies/ranked/RankedAttendanceDiscipline.d.ts +0 -14
  120. package/dist/src/organisations/policies/ranked/RankedAttendanceDiscipline.js +0 -43
  121. package/dist/src/organisations/policies/ranked/RankedContinent.d.ts +0 -13
  122. package/dist/src/organisations/policies/ranked/RankedContinent.js +0 -33
  123. package/dist/src/organisations/policies/ranked/RankedContinentAttendance.d.ts +0 -15
  124. package/dist/src/organisations/policies/ranked/RankedContinentAttendance.js +0 -45
  125. package/dist/src/organisations/policies/ranked/RankedCountry.d.ts +0 -13
  126. package/dist/src/organisations/policies/ranked/RankedCountry.js +0 -30
  127. package/dist/src/organisations/policies/ranked/RankedCountryAttendance.d.ts +0 -14
  128. package/dist/src/organisations/policies/ranked/RankedCountryAttendance.js +0 -43
  129. package/dist/src/organisations/policies/ranked/RankedCountryDiscipline.d.ts +0 -13
  130. package/dist/src/organisations/policies/ranked/RankedCountryDiscipline.js +0 -41
  131. package/dist/src/organisations/policies/ranked/RankedDiscipline.d.ts +0 -13
  132. package/dist/src/organisations/policies/ranked/RankedDiscipline.js +0 -33
  133. package/dist/src/organisations/policies/ranked/RankedUnfiltered.d.ts +0 -12
  134. package/dist/src/organisations/policies/ranked/RankedUnfiltered.js +0 -22
  135. package/dist/src/organisations/rules/AtLeastTwoRankedResultsRule.d.ts +0 -13
  136. package/dist/src/organisations/rules/AtLeastTwoRankedResultsRule.js +0 -26
  137. package/dist/src/organisations/rules/BaseSearchVolumeOrganisationsRule.d.ts +0 -14
  138. package/dist/src/organisations/rules/BaseSearchVolumeOrganisationsRule.js +0 -33
  139. package/dist/src/organisations/rules/ContinentIsEuropeRule.d.ts +0 -6
  140. package/dist/src/organisations/rules/ContinentIsEuropeRule.js +0 -15
  141. package/dist/src/organisations/rules/NoFiltersSelectedRule.d.ts +0 -9
  142. package/dist/src/organisations/rules/NoFiltersSelectedRule.js +0 -17
  143. package/dist/src/organisations/rules/SearchVolumeAreasAttendanceRule.d.ts +0 -6
  144. package/dist/src/organisations/rules/SearchVolumeAreasAttendanceRule.js +0 -17
  145. package/dist/src/organisations/rules/SearchVolumeAreasDisciplineRule.d.ts +0 -6
  146. package/dist/src/organisations/rules/SearchVolumeAreasDisciplineRule.js +0 -18
  147. package/dist/src/organisations/rules/SearchVolumeCountriesAttendanceRule.d.ts +0 -6
  148. package/dist/src/organisations/rules/SearchVolumeCountriesAttendanceRule.js +0 -17
  149. package/dist/src/organisations/types/IOrganisationSearchDependencies.d.ts +0 -9
  150. package/dist/src/organisations/types/IOrganisationSearchDependencies.js +0 -1
  151. package/dist/src/organisations/types/IOrganisationsSeoDependencies.d.ts +0 -3
  152. package/dist/src/organisations/types/IOrganisationsSeoDependencies.js +0 -1
  153. package/dist/src/organisations/types/IOrganisationsSitemapDependencies.d.ts +0 -9
  154. package/dist/src/organisations/types/IOrganisationsSitemapDependencies.js +0 -1
  155. package/dist/src/organisations/types.d.ts +0 -6
  156. package/dist/src/organisations/types.js +0 -6
  157. package/dist/src/presenters/AreaPresenter.d.ts +0 -12
  158. package/dist/src/presenters/AreaPresenter.js +0 -35
  159. package/dist/src/presenters/AttendancePresenter.d.ts +0 -11
  160. package/dist/src/presenters/AttendancePresenter.js +0 -23
  161. package/dist/src/presenters/ContinentPresenter.d.ts +0 -12
  162. package/dist/src/presenters/ContinentPresenter.js +0 -33
  163. package/dist/src/presenters/CountryPresenter.d.ts +0 -12
  164. package/dist/src/presenters/CountryPresenter.js +0 -38
  165. package/dist/src/presenters/DegreePresenter.d.ts +0 -12
  166. package/dist/src/presenters/DegreePresenter.js +0 -51
  167. package/dist/src/presenters/DisciplinePresenter.d.ts +0 -12
  168. package/dist/src/presenters/DisciplinePresenter.js +0 -33
  169. package/dist/src/presenters/DurationPresenter.d.ts +0 -16
  170. package/dist/src/presenters/DurationPresenter.js +0 -48
  171. package/dist/src/presenters/EducationalFormPresenter.d.ts +0 -12
  172. package/dist/src/presenters/EducationalFormPresenter.js +0 -46
  173. package/dist/src/presenters/FormatPresenter.d.ts +0 -11
  174. package/dist/src/presenters/FormatPresenter.js +0 -25
  175. package/dist/src/presenters/SpecialProgrammesPresenter.d.ts +0 -11
  176. package/dist/src/presenters/SpecialProgrammesPresenter.js +0 -28
  177. package/dist/src/presenters/TuitionFeePresenter.d.ts +0 -11
  178. package/dist/src/presenters/TuitionFeePresenter.js +0 -24
  179. package/dist/src/presenters/fragments/IAreaFragment.d.ts +0 -4
  180. package/dist/src/presenters/fragments/IAreaFragment.js +0 -1
  181. package/dist/src/presenters/fragments/ICountryFragment.d.ts +0 -4
  182. package/dist/src/presenters/fragments/ICountryFragment.js +0 -1
  183. package/dist/src/presenters/fragments/IFragment.d.ts +0 -4
  184. package/dist/src/presenters/fragments/IFragment.js +0 -1
  185. package/dist/src/programmes/BaseProgrammeFilterKeyValueRule.d.ts +0 -6
  186. package/dist/src/programmes/BaseProgrammeFilterKeyValueRule.js +0 -6
  187. package/dist/src/programmes/BaseProgrammeRule.d.ts +0 -10
  188. package/dist/src/programmes/BaseProgrammeRule.js +0 -5
  189. package/dist/src/programmes/IProgrammeRule.d.ts +0 -5
  190. package/dist/src/programmes/IProgrammeRule.js +0 -1
  191. package/dist/src/programmes/ProgrammesBaseIndexabilityPolicy.d.ts +0 -15
  192. package/dist/src/programmes/ProgrammesBaseIndexabilityPolicy.js +0 -42
  193. package/dist/src/programmes/SearchIndexabilityManager.d.ts +0 -12
  194. package/dist/src/programmes/SearchIndexabilityManager.js +0 -58
  195. package/dist/src/programmes/policies/Area.d.ts +0 -15
  196. package/dist/src/programmes/policies/Area.js +0 -40
  197. package/dist/src/programmes/policies/Attendance.d.ts +0 -16
  198. package/dist/src/programmes/policies/Attendance.js +0 -38
  199. package/dist/src/programmes/policies/AttendanceDegree.d.ts +0 -17
  200. package/dist/src/programmes/policies/AttendanceDegree.js +0 -48
  201. package/dist/src/programmes/policies/Continent.d.ts +0 -15
  202. package/dist/src/programmes/policies/Continent.js +0 -36
  203. package/dist/src/programmes/policies/ContinentTuitionFee.d.ts +0 -16
  204. package/dist/src/programmes/policies/ContinentTuitionFee.js +0 -46
  205. package/dist/src/programmes/policies/Country.d.ts +0 -15
  206. package/dist/src/programmes/policies/Country.js +0 -33
  207. package/dist/src/programmes/policies/CountryAttendance.d.ts +0 -16
  208. package/dist/src/programmes/policies/CountryAttendance.js +0 -46
  209. package/dist/src/programmes/policies/CountryAttendanceDegree.d.ts +0 -17
  210. package/dist/src/programmes/policies/CountryAttendanceDegree.js +0 -55
  211. package/dist/src/programmes/policies/CountryDegree.d.ts +0 -16
  212. package/dist/src/programmes/policies/CountryDegree.js +0 -46
  213. package/dist/src/programmes/policies/CountryDuration.d.ts +0 -16
  214. package/dist/src/programmes/policies/CountryDuration.js +0 -46
  215. package/dist/src/programmes/policies/CountryDurationDegree.d.ts +0 -17
  216. package/dist/src/programmes/policies/CountryDurationDegree.js +0 -55
  217. package/dist/src/programmes/policies/CountryEducationalForm.d.ts +0 -16
  218. package/dist/src/programmes/policies/CountryEducationalForm.js +0 -47
  219. package/dist/src/programmes/policies/CountryFormat.d.ts +0 -16
  220. package/dist/src/programmes/policies/CountryFormat.js +0 -46
  221. package/dist/src/programmes/policies/CountryTuitionFee.d.ts +0 -16
  222. package/dist/src/programmes/policies/CountryTuitionFee.js +0 -46
  223. package/dist/src/programmes/policies/Degree.d.ts +0 -15
  224. package/dist/src/programmes/policies/Degree.js +0 -38
  225. package/dist/src/programmes/policies/DegreeAttendanceDiscipline.d.ts +0 -16
  226. package/dist/src/programmes/policies/DegreeAttendanceDiscipline.js +0 -63
  227. package/dist/src/programmes/policies/DegreeCountryAttendance.d.ts +0 -16
  228. package/dist/src/programmes/policies/DegreeCountryAttendance.js +0 -88
  229. package/dist/src/programmes/policies/DegreeCountryDiscipline.d.ts +0 -16
  230. package/dist/src/programmes/policies/DegreeCountryDiscipline.js +0 -71
  231. package/dist/src/programmes/policies/DegreeCountryTuitionFee.d.ts +0 -16
  232. package/dist/src/programmes/policies/DegreeCountryTuitionFee.js +0 -73
  233. package/dist/src/programmes/policies/Discipline.d.ts +0 -15
  234. package/dist/src/programmes/policies/Discipline.js +0 -36
  235. package/dist/src/programmes/policies/DisciplineArea.d.ts +0 -15
  236. package/dist/src/programmes/policies/DisciplineArea.js +0 -46
  237. package/dist/src/programmes/policies/DisciplineAttendance.d.ts +0 -16
  238. package/dist/src/programmes/policies/DisciplineAttendance.js +0 -46
  239. package/dist/src/programmes/policies/DisciplineContinent.d.ts +0 -15
  240. package/dist/src/programmes/policies/DisciplineContinent.js +0 -44
  241. package/dist/src/programmes/policies/DisciplineCountry.d.ts +0 -15
  242. package/dist/src/programmes/policies/DisciplineCountry.js +0 -44
  243. package/dist/src/programmes/policies/DisciplineCountryEducationalForm.d.ts +0 -16
  244. package/dist/src/programmes/policies/DisciplineCountryEducationalForm.js +0 -53
  245. package/dist/src/programmes/policies/DisciplineDegree.d.ts +0 -16
  246. package/dist/src/programmes/policies/DisciplineDegree.js +0 -46
  247. package/dist/src/programmes/policies/DisciplineDuration.d.ts +0 -16
  248. package/dist/src/programmes/policies/DisciplineDuration.js +0 -46
  249. package/dist/src/programmes/policies/DisciplineEducationalForm.d.ts +0 -16
  250. package/dist/src/programmes/policies/DisciplineEducationalForm.js +0 -47
  251. package/dist/src/programmes/policies/DisciplineFormat.d.ts +0 -16
  252. package/dist/src/programmes/policies/DisciplineFormat.js +0 -46
  253. package/dist/src/programmes/policies/DisciplineTuitionFee.d.ts +0 -16
  254. package/dist/src/programmes/policies/DisciplineTuitionFee.js +0 -46
  255. package/dist/src/programmes/policies/DisciplineTuitionFeeAttendance.d.ts +0 -17
  256. package/dist/src/programmes/policies/DisciplineTuitionFeeAttendance.js +0 -54
  257. package/dist/src/programmes/policies/SpecialProgrammes.d.ts +0 -16
  258. package/dist/src/programmes/policies/SpecialProgrammes.js +0 -38
  259. package/dist/src/programmes/policies/TuitionFee.d.ts +0 -15
  260. package/dist/src/programmes/policies/TuitionFee.js +0 -32
  261. package/dist/src/programmes/policies/Unfiltered.d.ts +0 -13
  262. package/dist/src/programmes/policies/Unfiltered.js +0 -19
  263. package/dist/src/programmes/policies/index.d.ts +0 -34
  264. package/dist/src/programmes/policies/index.js +0 -34
  265. package/dist/src/programmes/rules/AffordableTuitionFeeRule.d.ts +0 -6
  266. package/dist/src/programmes/rules/AffordableTuitionFeeRule.js +0 -17
  267. package/dist/src/programmes/rules/AtLeastSevenResultsRule.d.ts +0 -15
  268. package/dist/src/programmes/rules/AtLeastSevenResultsRule.js +0 -30
  269. package/dist/src/programmes/rules/DegreeAttendanceDisciplineRule.d.ts +0 -11
  270. package/dist/src/programmes/rules/DegreeAttendanceDisciplineRule.js +0 -44
  271. package/dist/src/programmes/rules/DegreeAttendanceDisciplineSpecificRule.d.ts +0 -11
  272. package/dist/src/programmes/rules/DegreeAttendanceDisciplineSpecificRule.js +0 -39
  273. package/dist/src/programmes/rules/DegreeCountryAttendanceSpecificRule.d.ts +0 -14
  274. package/dist/src/programmes/rules/DegreeCountryAttendanceSpecificRule.js +0 -77
  275. package/dist/src/programmes/rules/DegreeCountryDisciplineSpecificRule.d.ts +0 -11
  276. package/dist/src/programmes/rules/DegreeCountryDisciplineSpecificRule.js +0 -76
  277. package/dist/src/programmes/rules/DegreeCountryTuitionFeeSpecificRule.d.ts +0 -12
  278. package/dist/src/programmes/rules/DegreeCountryTuitionFeeSpecificRule.js +0 -62
  279. package/dist/src/programmes/rules/DegreeDisciplineRule.d.ts +0 -16
  280. package/dist/src/programmes/rules/DegreeDisciplineRule.js +0 -189
  281. package/dist/src/programmes/rules/ErasmusOrJointSpecialProgrammesRule.d.ts +0 -9
  282. package/dist/src/programmes/rules/ErasmusOrJointSpecialProgrammesRule.js +0 -28
  283. package/dist/src/programmes/rules/IndexableDegreeRule.d.ts +0 -10
  284. package/dist/src/programmes/rules/IndexableDegreeRule.js +0 -53
  285. package/dist/src/programmes/rules/IndexableDurationRule.d.ts +0 -12
  286. package/dist/src/programmes/rules/IndexableDurationRule.js +0 -37
  287. package/dist/src/programmes/rules/IndexableEducationalFormRule.d.ts +0 -10
  288. package/dist/src/programmes/rules/IndexableEducationalFormRule.js +0 -34
  289. package/dist/src/programmes/rules/IndexablePageNumberRule.d.ts +0 -9
  290. package/dist/src/programmes/rules/IndexablePageNumberRule.js +0 -17
  291. package/dist/src/programmes/rules/MbaDegreeRule.d.ts +0 -6
  292. package/dist/src/programmes/rules/MbaDegreeRule.js +0 -15
  293. package/dist/src/programmes/rules/MbaOrMscDegreeRule.d.ts +0 -9
  294. package/dist/src/programmes/rules/MbaOrMscDegreeRule.js +0 -26
  295. package/dist/src/programmes/rules/NotDistanceLearningPortalRule.d.ts +0 -11
  296. package/dist/src/programmes/rules/NotDistanceLearningPortalRule.js +0 -28
  297. package/dist/src/programmes/rules/OneYearDurationRule.d.ts +0 -6
  298. package/dist/src/programmes/rules/OneYearDurationRule.js +0 -15
  299. package/dist/src/programmes/rules/PartTimeFormatRule.d.ts +0 -6
  300. package/dist/src/programmes/rules/PartTimeFormatRule.js +0 -15
  301. package/dist/src/programmes/types/IProgrammeSearchApplicationState.d.ts +0 -4
  302. package/dist/src/programmes/types/IProgrammeSearchApplicationState.js +0 -1
  303. package/dist/src/programmes/types/IProgrammeSearchDependencies.d.ts +0 -7
  304. package/dist/src/programmes/types/IProgrammeSearchDependencies.js +0 -1
  305. package/dist/src/programmes/types/IProgrammeSearchSitemapDependencies.d.ts +0 -5
  306. package/dist/src/programmes/types/IProgrammeSearchSitemapDependencies.js +0 -1
  307. package/dist/src/programmes/types/IProgrammeSeoDependencies.d.ts +0 -3
  308. package/dist/src/programmes/types/IProgrammeSeoDependencies.js +0 -1
  309. package/dist/src/programmes/types/IProgrammeSitemapDependencies.d.ts +0 -7
  310. package/dist/src/programmes/types/IProgrammeSitemapDependencies.js +0 -1
  311. package/dist/src/programmes/types/IProgrammeSitemapUrlGenerator.d.ts +0 -5
  312. package/dist/src/programmes/types/IProgrammeSitemapUrlGenerator.js +0 -1
  313. package/dist/src/scholarships/SearchIndexabilityManager.d.ts +0 -11
  314. package/dist/src/scholarships/SearchIndexabilityManager.js +0 -33
  315. package/dist/src/scholarships/index.d.ts +0 -3
  316. package/dist/src/scholarships/index.js +0 -3
  317. package/dist/src/scholarships/policies/Area.d.ts +0 -13
  318. package/dist/src/scholarships/policies/Area.js +0 -37
  319. package/dist/src/scholarships/policies/Country.d.ts +0 -12
  320. package/dist/src/scholarships/policies/Country.js +0 -31
  321. package/dist/src/scholarships/policies/Discipline.d.ts +0 -12
  322. package/dist/src/scholarships/policies/Discipline.js +0 -31
  323. package/dist/src/scholarships/policies/DisciplineCountry.d.ts +0 -12
  324. package/dist/src/scholarships/policies/DisciplineCountry.js +0 -39
  325. package/dist/src/scholarships/policies/ScholarshipSeoIndexabilityPolicy.d.ts +0 -7
  326. package/dist/src/scholarships/policies/ScholarshipSeoIndexabilityPolicy.js +0 -7
  327. package/dist/src/scholarships/policies/Unfiltered.d.ts +0 -10
  328. package/dist/src/scholarships/policies/Unfiltered.js +0 -16
  329. package/dist/src/scholarships/policies/UniversityCountry.d.ts +0 -11
  330. package/dist/src/scholarships/policies/UniversityCountry.js +0 -41
  331. package/dist/src/scholarships/rules/ExceptAustaliaAreasRule.d.ts +0 -14
  332. package/dist/src/scholarships/rules/ExceptAustaliaAreasRule.js +0 -42
  333. package/dist/src/scholarships/rules/SearchVolumeAreasRule.d.ts +0 -12
  334. package/dist/src/scholarships/rules/SearchVolumeAreasRule.js +0 -32
  335. package/dist/src/scholarships/rules/SearchVolumeCountriesDisciplinesRule.d.ts +0 -14
  336. package/dist/src/scholarships/rules/SearchVolumeCountriesDisciplinesRule.js +0 -43
  337. package/dist/src/scholarships/rules/SearchVolumeCountriesRule.d.ts +0 -12
  338. package/dist/src/scholarships/rules/SearchVolumeCountriesRule.js +0 -32
  339. package/dist/src/scholarships/rules/SearchVolumeDisciplinesRule.d.ts +0 -12
  340. package/dist/src/scholarships/rules/SearchVolumeDisciplinesRule.js +0 -32
  341. package/dist/src/scholarships/rules/files/search-volume.json +0 -39334
  342. package/dist/src/scholarships/types/IScholarshipSeoDependencies.d.ts +0 -3
  343. package/dist/src/scholarships/types/IScholarshipSeoDependencies.js +0 -1
  344. package/dist/src/scholarships/types/IScholarshipSitemapDependencies.d.ts +0 -5
  345. package/dist/src/scholarships/types/IScholarshipSitemapDependencies.js +0 -1
  346. package/dist/src/scholarships/types.d.ts +0 -5
  347. package/dist/src/scholarships/types.js +0 -5
  348. package/dist/src/sitemap-generator/BaseSitemapUrlGeneratorManager.d.ts +0 -14
  349. package/dist/src/sitemap-generator/BaseSitemapUrlGeneratorManager.js +0 -26
  350. package/dist/src/sitemap-generator/IOrganisation.d.ts +0 -6
  351. package/dist/src/sitemap-generator/IOrganisation.js +0 -1
  352. package/dist/src/sitemap-generator/IOrganisationsClient.d.ts +0 -4
  353. package/dist/src/sitemap-generator/IOrganisationsClient.js +0 -1
  354. package/dist/src/sitemap-generator/IRankingApiClient.d.ts +0 -4
  355. package/dist/src/sitemap-generator/IRankingApiClient.js +0 -1
  356. package/dist/src/sitemap-generator/ISearchApiClient.d.ts +0 -5
  357. package/dist/src/sitemap-generator/ISearchApiClient.js +0 -1
  358. package/dist/src/sitemap-generator/ISitemapUrlGeneratorManager.d.ts +0 -9
  359. package/dist/src/sitemap-generator/ISitemapUrlGeneratorManager.js +0 -1
  360. package/dist/src/sitemap-generator/OrganisationsSitemapUrlGeneratorManager.d.ts +0 -14
  361. package/dist/src/sitemap-generator/OrganisationsSitemapUrlGeneratorManager.js +0 -51
  362. package/dist/src/sitemap-generator/ProgrammesSitemapUrlGeneratorManager.d.ts +0 -12
  363. package/dist/src/sitemap-generator/ProgrammesSitemapUrlGeneratorManager.js +0 -77
  364. package/dist/src/sitemap-generator/ScholarshipsSitemapUrlGeneratorManager.d.ts +0 -9
  365. package/dist/src/sitemap-generator/ScholarshipsSitemapUrlGeneratorManager.js +0 -28
  366. package/dist/src/sitemap-generator/index.d.ts +0 -0
  367. package/dist/src/sitemap-generator/index.js +0 -1
  368. package/dist/src/structured-data/ProgrammeStructuredDataFactory.d.ts +0 -18
  369. package/dist/src/structured-data/ProgrammeStructuredDataFactory.js +0 -91
  370. package/dist/src/structured-data/SearchStructuredDataFactory.d.ts +0 -34
  371. package/dist/src/structured-data/SearchStructuredDataFactory.js +0 -144
  372. package/dist/src/structured-data/dto/BreadcrumbDTO.d.ts +0 -5
  373. package/dist/src/structured-data/dto/BreadcrumbDTO.js +0 -1
  374. package/dist/src/structured-data/dto/EntityDTO.d.ts +0 -7
  375. package/dist/src/structured-data/dto/EntityDTO.js +0 -1
  376. package/dist/src/structured-data/dto/FAQItemDto.d.ts +0 -4
  377. package/dist/src/structured-data/dto/FAQItemDto.js +0 -1
  378. package/dist/src/structured-data/dto/OfferDTO.d.ts +0 -5
  379. package/dist/src/structured-data/dto/OfferDTO.js +0 -1
  380. package/dist/src/structured-data/dto/ReviewRatingDTO.d.ts +0 -4
  381. package/dist/src/structured-data/dto/ReviewRatingDTO.js +0 -1
  382. package/dist/src/structured-data/dto/index.d.ts +0 -5
  383. package/dist/src/structured-data/dto/index.js +0 -5
  384. package/dist/src/structured-data/index.d.ts +0 -2
  385. package/dist/src/structured-data/index.js +0 -2
  386. package/dist/src/structured-data/interface/StructuredDataCurrencyConversionService.d.ts +0 -3
  387. package/dist/src/structured-data/interface/StructuredDataCurrencyConversionService.js +0 -1
  388. package/dist/structured-data-seo/index.d.ts +0 -1
  389. package/dist/structured-data-seo/index.js +0 -1
@@ -1,11 +0,0 @@
1
- import { ISeoIndexabilityPolicy } from '../common/ISeoIndexabilityPolicy';
2
- import { ISeoInfoBase } from '../common/ISeoInfoBase';
3
- import { ISeoFilterState } from '../common/ISeoFilterState';
4
- import { ISearchApplicationState } from '../common/ISearchApplicationState';
5
- import { ISearchIndexabilityManager } from '../common/ISearchIndexabilityManager';
6
- export declare class SearchIndexabilityManager implements ISearchIndexabilityManager {
7
- private policies;
8
- constructor(seoInfoBase: ISeoInfoBase, filterState: ISeoFilterState, applicationState: ISearchApplicationState);
9
- shouldIndex(): Promise<boolean>;
10
- getPolicies(): ISeoIndexabilityPolicy[];
11
- }
@@ -1,33 +0,0 @@
1
- import { Area } from './policies/Area';
2
- import { Country } from './policies/Country';
3
- import { DisciplineCountry } from './policies/DisciplineCountry';
4
- import { Discipline } from './policies/Discipline';
5
- import { UniversityCountry } from './policies/UniversityCountry';
6
- import { Unfiltered } from './policies/Unfiltered';
7
- import { DependencyTypes } from '../enums/DependencyTypes';
8
- export class SearchIndexabilityManager {
9
- policies;
10
- constructor(seoInfoBase, filterState, applicationState) {
11
- const dependencies = {
12
- dependencyType: DependencyTypes.SEARCH,
13
- seoInfoBase,
14
- filterState,
15
- applicationState
16
- };
17
- this.policies = [
18
- new Area(dependencies),
19
- new Country(dependencies),
20
- new DisciplineCountry(dependencies),
21
- new Discipline(dependencies),
22
- new UniversityCountry(dependencies),
23
- new Unfiltered(dependencies)
24
- ];
25
- }
26
- async shouldIndex() {
27
- const results = await Promise.all(this.policies.map((policy) => policy.shouldIndex()));
28
- return results.some((result) => result);
29
- }
30
- getPolicies() {
31
- return this.policies;
32
- }
33
- }
@@ -1,3 +0,0 @@
1
- import { SearchIndexabilityManager } from './SearchIndexabilityManager';
2
- import { types } from './types';
3
- export { SearchIndexabilityManager, types };
@@ -1,3 +0,0 @@
1
- import { SearchIndexabilityManager } from './SearchIndexabilityManager';
2
- import { types } from './types';
3
- export { SearchIndexabilityManager, types };
@@ -1,13 +0,0 @@
1
- import { FilterCombinations } from '../../enums/FilterCombinations';
2
- import { ExceptAustraliaAreasRule } from '../rules/ExceptAustaliaAreasRule';
3
- import { SearchVolumeAreasRule } from '../rules/SearchVolumeAreasRule';
4
- import { ScholarshipSeoIndexabilityPolicy } from './ScholarshipSeoIndexabilityPolicy';
5
- import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
6
- import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
7
- export declare class Area extends ScholarshipSeoIndexabilityPolicy {
8
- readonly name: string;
9
- readonly description: string;
10
- protected readonly baseRules: (ExceptAustraliaAreasRule | SearchVolumeAreasRule | SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule)[];
11
- get filterCombination(): FilterCombinations;
12
- protected generateUrls(): Promise<string[]>;
13
- }
@@ -1,37 +0,0 @@
1
- import { FilterKey } from "../../enums/FilterKey";
2
- import { FilterCombinations } from '../../enums/FilterCombinations';
3
- import { ExceptAustraliaAreasRule } from '../rules/ExceptAustaliaAreasRule';
4
- import { SearchVolumeAreasRule } from '../rules/SearchVolumeAreasRule';
5
- import { AreaPresenter } from '../../presenters/AreaPresenter';
6
- import { ScholarshipSeoIndexabilityPolicy } from './ScholarshipSeoIndexabilityPolicy';
7
- import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
8
- import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
9
- export class Area extends ScholarshipSeoIndexabilityPolicy {
10
- name = 'Area Policy';
11
- description = 'Controls indexing of pages filtered by geographic areas, ensuring only SEO-valuable regional content with sufficient search volume is indexed while respecting country associations.';
12
- baseRules = [
13
- new SingleValueSelectedForFilterRule(FilterKey.AREA),
14
- new SingleValueSelectedForFilterRule(FilterKey.COUNTRY),
15
- new OnlyFiltersSelectedRule([FilterKey.AREA, FilterKey.COUNTRY]),
16
- new ExceptAustraliaAreasRule(),
17
- new SearchVolumeAreasRule()
18
- ];
19
- get filterCombination() {
20
- return FilterCombinations.AREA;
21
- }
22
- async generateUrls() {
23
- const areaFragments = AreaPresenter.getInstance().getFragments();
24
- const paths = [];
25
- for (const area of areaFragments) {
26
- const filterKeyValues = new Map([
27
- [FilterKey.AREA, [area.id]],
28
- [FilterKey.COUNTRY, [area.countryId]]
29
- ]);
30
- const result = await this.checkRulesForSitemap(filterKeyValues);
31
- if (result) {
32
- paths.push(area.path);
33
- }
34
- }
35
- return paths;
36
- }
37
- }
@@ -1,12 +0,0 @@
1
- import { FilterCombinations } from '../../enums/FilterCombinations';
2
- import { SearchVolumeCountriesRule } from '../rules/SearchVolumeCountriesRule';
3
- import { ScholarshipSeoIndexabilityPolicy } from './ScholarshipSeoIndexabilityPolicy';
4
- import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
5
- import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
6
- export declare class Country extends ScholarshipSeoIndexabilityPolicy {
7
- readonly name: string;
8
- readonly description: string;
9
- protected readonly baseRules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule | SearchVolumeCountriesRule)[];
10
- get filterCombination(): FilterCombinations;
11
- protected generateUrls(): Promise<string[]>;
12
- }
@@ -1,31 +0,0 @@
1
- import { FilterKey } from "../../enums/FilterKey";
2
- import { FilterCombinations } from '../../enums/FilterCombinations';
3
- import { SearchVolumeCountriesRule } from '../rules/SearchVolumeCountriesRule';
4
- import { CountryPresenter } from '../../presenters/CountryPresenter';
5
- import { ScholarshipSeoIndexabilityPolicy } from './ScholarshipSeoIndexabilityPolicy';
6
- import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
7
- import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
8
- export class Country extends ScholarshipSeoIndexabilityPolicy {
9
- name = 'Country Policy';
10
- description = 'Manages indexing of country-specific pages, applying rules to index only countries with adequate search demand and relevant content availability.';
11
- baseRules = [
12
- new SingleValueSelectedForFilterRule(FilterKey.COUNTRY),
13
- new OnlyFiltersSelectedRule([FilterKey.COUNTRY]),
14
- new SearchVolumeCountriesRule()
15
- ];
16
- get filterCombination() {
17
- return FilterCombinations.AREA;
18
- }
19
- async generateUrls() {
20
- const countryFragments = CountryPresenter.getInstance().getFragments();
21
- const paths = [];
22
- for (const country of countryFragments) {
23
- const filterKeyValues = new Map([[FilterKey.COUNTRY, [country.id]]]);
24
- const result = await this.checkRulesForSitemap(filterKeyValues);
25
- if (result) {
26
- paths.push(country.path);
27
- }
28
- }
29
- return paths;
30
- }
31
- }
@@ -1,12 +0,0 @@
1
- import { SearchVolumeDisciplinesRule } from '../../scholarships/rules/SearchVolumeDisciplinesRule';
2
- import { FilterCombinations } from '../../enums/FilterCombinations';
3
- import { ScholarshipSeoIndexabilityPolicy } from './ScholarshipSeoIndexabilityPolicy';
4
- import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
5
- import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
6
- export declare class Discipline extends ScholarshipSeoIndexabilityPolicy {
7
- readonly name: string;
8
- readonly description: string;
9
- protected readonly baseRules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule | SearchVolumeDisciplinesRule)[];
10
- get filterCombination(): FilterCombinations;
11
- protected generateUrls(): Promise<string[]>;
12
- }
@@ -1,31 +0,0 @@
1
- import { FilterKey } from "../../enums/FilterKey";
2
- import { DisciplinePresenter } from '../../presenters/DisciplinePresenter';
3
- import { SearchVolumeDisciplinesRule } from '../../scholarships/rules/SearchVolumeDisciplinesRule';
4
- import { FilterCombinations } from '../../enums/FilterCombinations';
5
- import { ScholarshipSeoIndexabilityPolicy } from './ScholarshipSeoIndexabilityPolicy';
6
- import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
7
- import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
8
- export class Discipline extends ScholarshipSeoIndexabilityPolicy {
9
- name = 'Discipline Country Policy';
10
- description = 'Governs indexability for pages at the intersection of academic disciplines and countries, optimizing SEO for field-specific content within national contexts.';
11
- baseRules = [
12
- new SingleValueSelectedForFilterRule(FilterKey.DISCIPLINES),
13
- new OnlyFiltersSelectedRule([FilterKey.DISCIPLINES]),
14
- new SearchVolumeDisciplinesRule()
15
- ];
16
- get filterCombination() {
17
- return FilterCombinations.DISCIPLINE;
18
- }
19
- async generateUrls() {
20
- const disciplineFragments = DisciplinePresenter.getInstance().getFragments();
21
- const paths = [];
22
- for (const discipline of disciplineFragments) {
23
- const filterKeyValues = new Map([[FilterKey.DISCIPLINES, [discipline.id]]]);
24
- const result = await this.checkRulesForSitemap(filterKeyValues);
25
- if (result) {
26
- paths.push(discipline.path);
27
- }
28
- }
29
- return paths;
30
- }
31
- }
@@ -1,12 +0,0 @@
1
- import { FilterCombinations } from '../../enums/FilterCombinations';
2
- import { SearchVolumeCountriesDisciplinesRule } from '../rules/SearchVolumeCountriesDisciplinesRule';
3
- import { ScholarshipSeoIndexabilityPolicy } from './ScholarshipSeoIndexabilityPolicy';
4
- import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
5
- import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
6
- export declare class DisciplineCountry extends ScholarshipSeoIndexabilityPolicy {
7
- readonly name: string;
8
- readonly description: string;
9
- protected readonly baseRules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule | SearchVolumeCountriesDisciplinesRule)[];
10
- get filterCombination(): FilterCombinations;
11
- protected generateUrls(): Promise<string[]>;
12
- }
@@ -1,39 +0,0 @@
1
- import { FilterKey } from "../../enums/FilterKey";
2
- import { FilterCombinations } from '../../enums/FilterCombinations';
3
- import { SearchVolumeCountriesDisciplinesRule } from '../rules/SearchVolumeCountriesDisciplinesRule';
4
- import { CountryPresenter } from '../../presenters/CountryPresenter';
5
- import { DisciplinePresenter } from '../../presenters/DisciplinePresenter';
6
- import { ScholarshipSeoIndexabilityPolicy } from './ScholarshipSeoIndexabilityPolicy';
7
- import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
8
- import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
9
- export class DisciplineCountry extends ScholarshipSeoIndexabilityPolicy {
10
- name = 'Discipline Policy';
11
- description = 'Determines which discipline-filtered pages qualify for indexing based on search volume thresholds and content availability within specific academic fields.';
12
- baseRules = [
13
- new SingleValueSelectedForFilterRule(FilterKey.DISCIPLINES),
14
- new SingleValueSelectedForFilterRule(FilterKey.COUNTRY),
15
- new OnlyFiltersSelectedRule([FilterKey.DISCIPLINES, FilterKey.COUNTRY]),
16
- new SearchVolumeCountriesDisciplinesRule()
17
- ];
18
- get filterCombination() {
19
- return FilterCombinations.DISCIPLINE_COUNTRY;
20
- }
21
- async generateUrls() {
22
- const paths = [];
23
- const countryFragments = CountryPresenter.getInstance().getFragments();
24
- const disciplineFragments = DisciplinePresenter.getInstance().getFragments();
25
- for (const country of countryFragments) {
26
- for (const discipline of disciplineFragments) {
27
- const filterKeyValues = new Map([
28
- [FilterKey.COUNTRY, [country.id]],
29
- [FilterKey.DISCIPLINES, [discipline.id]]
30
- ]);
31
- const result = await this.checkRulesForSitemap(filterKeyValues);
32
- if (result) {
33
- paths.push(`${country.path}/${discipline.path}`);
34
- }
35
- }
36
- }
37
- return paths;
38
- }
39
- }
@@ -1,7 +0,0 @@
1
- import { BaseSeoIndexabilityPolicy } from '../../common/policies/BaseSeoIndexabilityPolicy';
2
- import { IScholarshipSeoDependencies } from '../types/IScholarshipSeoDependencies';
3
- import { IRule } from '../../common/IRule';
4
- export declare abstract class ScholarshipSeoIndexabilityPolicy extends BaseSeoIndexabilityPolicy<IScholarshipSeoDependencies> {
5
- protected abstract readonly baseRules: IRule[];
6
- protected get rules(): IRule[];
7
- }
@@ -1,7 +0,0 @@
1
- import { BaseSeoIndexabilityPolicy } from '../../common/policies/BaseSeoIndexabilityPolicy';
2
- import { IndexablePageNumberRule } from '../../common/rules/IndexablePageNumberRule';
3
- export class ScholarshipSeoIndexabilityPolicy extends BaseSeoIndexabilityPolicy {
4
- get rules() {
5
- return [...this.baseRules, new IndexablePageNumberRule()];
6
- }
7
- }
@@ -1,10 +0,0 @@
1
- import { FilterCombinations } from '../../enums/FilterCombinations';
2
- import { ScholarshipSeoIndexabilityPolicy } from './ScholarshipSeoIndexabilityPolicy';
3
- import { NoFiltersSelectedRule } from '../../common/rules/NoFiltersSelectedRule';
4
- export declare class Unfiltered extends ScholarshipSeoIndexabilityPolicy {
5
- readonly name: string;
6
- readonly description: string;
7
- protected readonly baseRules: NoFiltersSelectedRule[];
8
- protected generateUrls(): Promise<string[]>;
9
- get filterCombination(): FilterCombinations;
10
- }
@@ -1,16 +0,0 @@
1
- import { FilterCombinations } from '../../enums/FilterCombinations';
2
- import { ScholarshipSeoIndexabilityPolicy } from './ScholarshipSeoIndexabilityPolicy';
3
- import { NoFiltersSelectedRule } from '../../common/rules/NoFiltersSelectedRule';
4
- export class Unfiltered extends ScholarshipSeoIndexabilityPolicy {
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
- baseRules = [
8
- new NoFiltersSelectedRule()
9
- ];
10
- generateUrls() {
11
- return Promise.resolve(['']);
12
- }
13
- get filterCombination() {
14
- return FilterCombinations.UNFILTERED;
15
- }
16
- }
@@ -1,11 +0,0 @@
1
- import { FilterCombinations } from '../../enums/FilterCombinations';
2
- import { ScholarshipSeoIndexabilityPolicy } from './ScholarshipSeoIndexabilityPolicy';
3
- import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
4
- import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
5
- export declare class UniversityCountry extends ScholarshipSeoIndexabilityPolicy {
6
- readonly name: string;
7
- readonly description: string;
8
- protected readonly baseRules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule)[];
9
- get filterCombination(): FilterCombinations;
10
- protected generateUrls(): Promise<string[]>;
11
- }
@@ -1,41 +0,0 @@
1
- import { FilterKey } from "../../enums/FilterKey";
2
- import { FilterCombinations } from '../../enums/FilterCombinations';
3
- import { CountryPresenter } from '../../presenters/CountryPresenter';
4
- import { ScholarshipSeoIndexabilityPolicy } from './ScholarshipSeoIndexabilityPolicy';
5
- import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
6
- import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
7
- export class UniversityCountry extends ScholarshipSeoIndexabilityPolicy {
8
- name = 'University Country Policy';
9
- description = 'Regulates indexing for pages filtered by both university and country, prioritizing institution-specific content within national boundaries that meets SEO criteria.';
10
- baseRules = [
11
- new SingleValueSelectedForFilterRule(FilterKey.ORGANISATIONS),
12
- new SingleValueSelectedForFilterRule(FilterKey.COUNTRY),
13
- new OnlyFiltersSelectedRule([FilterKey.ORGANISATIONS, FilterKey.COUNTRY])
14
- ];
15
- get filterCombination() {
16
- return FilterCombinations.UNIVERSITY_COUNTRY;
17
- }
18
- async generateUrls() {
19
- const { searchApiClient, organisationsClient } = this.dependencies;
20
- try {
21
- const organisationIds = await searchApiClient.getOrganisationIds();
22
- const organisations = await organisationsClient.getOrganisations(organisationIds);
23
- const countries = CountryPresenter.getInstance().getFragments();
24
- const isoToPath = new Map(countries.map((country) => [country.iso, country.path]));
25
- const paths = [];
26
- for (const org of organisations) {
27
- for (const iso of org.countryIsoCodes) {
28
- const countryVirtualPath = isoToPath.get(iso.toUpperCase());
29
- if (countryVirtualPath) {
30
- paths.push(`${countryVirtualPath}/${org.virtualPath}`);
31
- }
32
- }
33
- }
34
- return paths;
35
- }
36
- catch (error) {
37
- console.error('Fawkes burned: Error when generating country/university URLs. ', error);
38
- return [];
39
- }
40
- }
41
- }
@@ -1,14 +0,0 @@
1
- import { FilterKeyValuesMap } from '../../common/FilterKeyValuesMap';
2
- import { IRule } from '../../common/IRule';
3
- import { ISearchDependencies } from '../../common/ISearchDependencies';
4
- export declare class ExceptAustraliaAreasRule implements IRule {
5
- private readonly australiaCountryId;
6
- private readonly areaFilterKey;
7
- private readonly areasPresenter;
8
- getName(): string;
9
- forSearch(dependencies: ISearchDependencies): Promise<boolean>;
10
- forSitemapGenerator(filterKeyValues: FilterKeyValuesMap): Promise<boolean>;
11
- private isNotAustralia;
12
- private doesNotBelongToAustralia;
13
- getDescription(): string;
14
- }
@@ -1,42 +0,0 @@
1
- import { AreaPresenter } from '../../presenters/AreaPresenter';
2
- import { FilterKey } from "../../enums/FilterKey";
3
- export class ExceptAustraliaAreasRule {
4
- australiaCountryId = 202;
5
- areaFilterKey = FilterKey.AREA;
6
- areasPresenter = AreaPresenter.getInstance();
7
- getName() {
8
- return 'ExceptAustraliaAreasRule';
9
- }
10
- forSearch(dependencies) {
11
- const selectedArea = dependencies.seoInfoBase.getFilterOptionValueBy(this.areaFilterKey, dependencies.filterState);
12
- if (!selectedArea) {
13
- return Promise.resolve(false);
14
- }
15
- return Promise.resolve(this.doesNotBelongToAustralia(selectedArea));
16
- }
17
- forSitemapGenerator(filterKeyValues) {
18
- const selectedCountries = filterKeyValues.get(FilterKey.COUNTRY);
19
- if (!selectedCountries || selectedCountries.length !== 1) {
20
- return Promise.resolve(false);
21
- }
22
- const selectedCountry = selectedCountries[0];
23
- if (!selectedCountry) {
24
- return Promise.resolve(false);
25
- }
26
- return Promise.resolve(this.isNotAustralia(selectedCountry));
27
- }
28
- isNotAustralia(countryId) {
29
- return countryId !== this.australiaCountryId.toString();
30
- }
31
- doesNotBelongToAustralia(filterId) {
32
- const areas = this.areasPresenter.getFragments();
33
- const foundArea = areas.find((area) => area.id === filterId);
34
- if (!foundArea) {
35
- return false;
36
- }
37
- return foundArea.countryId !== this.australiaCountryId.toString();
38
- }
39
- getDescription() {
40
- return 'Area does not belong to Australia';
41
- }
42
- }
@@ -1,12 +0,0 @@
1
- import { FilterKeyValuesMap } from '../../common/FilterKeyValuesMap';
2
- import { IRule } from '../../common/IRule';
3
- import { ISearchDependencies } from '../../common/ISearchDependencies';
4
- export declare class SearchVolumeAreasRule implements IRule {
5
- private readonly areaFilterKey;
6
- private readonly areasWithNoSearchVolume;
7
- getName(): string;
8
- forSearch(dependencies: ISearchDependencies): Promise<boolean>;
9
- forSitemapGenerator(filterKeyValues: FilterKeyValuesMap): Promise<boolean>;
10
- private hasSearchVolume;
11
- getDescription(): string;
12
- }
@@ -1,32 +0,0 @@
1
- import { FilterKey } from "../../enums/FilterKey";
2
- export class SearchVolumeAreasRule {
3
- areaFilterKey = FilterKey.AREA;
4
- areasWithNoSearchVolume = [3579, 995];
5
- getName() {
6
- return 'SearchVolumeAreasRule';
7
- }
8
- forSearch(dependencies) {
9
- const selectedArea = dependencies.seoInfoBase.getFilterOptionValueBy(this.areaFilterKey, dependencies.filterState);
10
- if (!selectedArea) {
11
- return Promise.resolve(false);
12
- }
13
- return Promise.resolve(this.hasSearchVolume(selectedArea));
14
- }
15
- forSitemapGenerator(filterKeyValues) {
16
- const selectedAreas = filterKeyValues.get(FilterKey.AREA);
17
- if (!selectedAreas || selectedAreas.length !== 1) {
18
- return Promise.resolve(false);
19
- }
20
- const selectedArea = selectedAreas[0];
21
- if (!selectedArea) {
22
- return Promise.resolve(false);
23
- }
24
- return Promise.resolve(this.hasSearchVolume(selectedArea));
25
- }
26
- hasSearchVolume(areaId) {
27
- return !this.areasWithNoSearchVolume.includes(Number(areaId));
28
- }
29
- getDescription() {
30
- return `Search volume is not available for the areas with id ${this.areasWithNoSearchVolume.join(', ')}`;
31
- }
32
- }
@@ -1,14 +0,0 @@
1
- import { IRule } from '../../common/IRule';
2
- import { ISearchDependencies } from '../../common/ISearchDependencies';
3
- import { FilterKeyValuesMap } from '../../common/FilterKeyValuesMap';
4
- export declare class SearchVolumeCountriesDisciplinesRule implements IRule {
5
- private readonly countryFilterKey;
6
- private readonly disciplineFilterKey;
7
- private readonly combinationsWithSearchVolume;
8
- constructor();
9
- getName(): string;
10
- forSearch(dependencies: ISearchDependencies): Promise<boolean>;
11
- forSitemapGenerator(filterKeyValues: FilterKeyValuesMap): Promise<boolean>;
12
- private hasSearchVolume;
13
- getDescription(): string;
14
- }
@@ -1,43 +0,0 @@
1
- import searchVolume from './files/search-volume.json';
2
- import { FilterKey } from "../../enums/FilterKey";
3
- export class SearchVolumeCountriesDisciplinesRule {
4
- countryFilterKey = FilterKey.COUNTRY;
5
- disciplineFilterKey = FilterKey.DISCIPLINES;
6
- combinationsWithSearchVolume;
7
- constructor() {
8
- this.combinationsWithSearchVolume = new Set(searchVolume.map(({ ci, di }) => `${ci},${di}`));
9
- }
10
- getName() {
11
- return 'SearchVolumeCountriesDisciplinesRule';
12
- }
13
- forSearch(dependencies) {
14
- const selectedCountry = dependencies.seoInfoBase.getFilterOptionValueBy(this.countryFilterKey, dependencies.filterState);
15
- const selectedDiscipline = dependencies.seoInfoBase.getFilterOptionValueBy(this.disciplineFilterKey, dependencies.filterState);
16
- if (!selectedCountry || !selectedDiscipline) {
17
- return Promise.resolve(false);
18
- }
19
- return Promise.resolve(this.hasSearchVolume(selectedCountry, selectedDiscipline));
20
- }
21
- forSitemapGenerator(filterKeyValues) {
22
- const selectedCountries = filterKeyValues.get(FilterKey.COUNTRY);
23
- if (!selectedCountries || selectedCountries.length !== 1) {
24
- return Promise.resolve(false);
25
- }
26
- const selectedDisciplines = filterKeyValues.get(FilterKey.DISCIPLINES);
27
- if (!selectedDisciplines || selectedDisciplines.length !== 1) {
28
- return Promise.resolve(false);
29
- }
30
- const selectedCountry = selectedCountries[0];
31
- const selectedDiscipline = selectedDisciplines[0];
32
- if (!selectedCountry || !selectedDiscipline) {
33
- return Promise.resolve(false);
34
- }
35
- return Promise.resolve(this.hasSearchVolume(selectedCountry, selectedDiscipline));
36
- }
37
- hasSearchVolume(countryId, disciplineId) {
38
- return this.combinationsWithSearchVolume.has(`${countryId},${disciplineId}`);
39
- }
40
- getDescription() {
41
- return 'Search volume is available for the selected country and discipline';
42
- }
43
- }
@@ -1,12 +0,0 @@
1
- import { FilterKeyValuesMap } from '../../common/FilterKeyValuesMap';
2
- import { IRule } from '../../common/IRule';
3
- import { ISearchDependencies } from '../../common/ISearchDependencies';
4
- export declare class SearchVolumeCountriesRule implements IRule {
5
- private readonly countryFilterKey;
6
- private readonly countriesWithNoSearchVolume;
7
- getName(): string;
8
- forSearch(dependencies: ISearchDependencies): Promise<boolean>;
9
- forSitemapGenerator(filterKeyValues: FilterKeyValuesMap): Promise<boolean>;
10
- private hasSearchVolume;
11
- getDescription(): string;
12
- }
@@ -1,32 +0,0 @@
1
- import { FilterKey } from "../../enums/FilterKey";
2
- export class SearchVolumeCountriesRule {
3
- countryFilterKey = FilterKey.COUNTRY;
4
- countriesWithNoSearchVolume = [122, 107, 18];
5
- getName() {
6
- return 'SearchVolumeCountriesRule';
7
- }
8
- forSearch(dependencies) {
9
- const selectedCountry = dependencies.seoInfoBase.getFilterOptionValueBy(this.countryFilterKey, dependencies.filterState);
10
- if (!selectedCountry) {
11
- return Promise.resolve(false);
12
- }
13
- return Promise.resolve(this.hasSearchVolume(selectedCountry));
14
- }
15
- forSitemapGenerator(filterKeyValues) {
16
- const selectedCountries = filterKeyValues.get(FilterKey.COUNTRY);
17
- if (!selectedCountries || selectedCountries.length !== 1) {
18
- return Promise.resolve(false);
19
- }
20
- const selectedCountry = selectedCountries[0];
21
- if (!selectedCountry) {
22
- return Promise.resolve(false);
23
- }
24
- return Promise.resolve(this.hasSearchVolume(selectedCountry));
25
- }
26
- hasSearchVolume(countryId) {
27
- return !this.countriesWithNoSearchVolume.includes(Number(countryId));
28
- }
29
- getDescription() {
30
- return `Search volume is not available for the countries with id ${this.countriesWithNoSearchVolume.join(', ')}`;
31
- }
32
- }
@@ -1,12 +0,0 @@
1
- import { FilterKeyValuesMap } from '../../common/FilterKeyValuesMap';
2
- import { IRule } from '../../common/IRule';
3
- import { ISearchDependencies } from '../../common/ISearchDependencies';
4
- export declare class SearchVolumeDisciplinesRule implements IRule {
5
- private readonly disciplineFilterKey;
6
- private readonly disciplinesWithNoSearchVolume;
7
- getName(): string;
8
- forSearch(dependencies: ISearchDependencies): Promise<boolean>;
9
- forSitemapGenerator(filterKeyValues: FilterKeyValuesMap): Promise<boolean>;
10
- private hasSearchVolume;
11
- getDescription(): string;
12
- }
@@ -1,32 +0,0 @@
1
- import { FilterKey } from "../../enums/FilterKey";
2
- export class SearchVolumeDisciplinesRule {
3
- disciplineFilterKey = FilterKey.DISCIPLINES;
4
- disciplinesWithNoSearchVolume = [243, 415, 405, 379, 269, 413, 408, 274, 411, 401, 381, 390, 410, 412, 130];
5
- getName() {
6
- return 'SearchVolumeDisciplinesRule';
7
- }
8
- forSearch(dependencies) {
9
- const selectedDiscipline = dependencies.seoInfoBase.getFilterOptionValueBy(this.disciplineFilterKey, dependencies.filterState);
10
- if (!selectedDiscipline) {
11
- return Promise.resolve(false);
12
- }
13
- return Promise.resolve(this.hasSearchVolume(selectedDiscipline));
14
- }
15
- forSitemapGenerator(filterKeyValues) {
16
- const selectedDisciplines = filterKeyValues.get(FilterKey.DISCIPLINES);
17
- if (!selectedDisciplines || selectedDisciplines.length !== 1) {
18
- return Promise.resolve(false);
19
- }
20
- const selectedDiscipline = selectedDisciplines[0];
21
- if (!selectedDiscipline) {
22
- return Promise.resolve(false);
23
- }
24
- return Promise.resolve(this.hasSearchVolume(selectedDiscipline));
25
- }
26
- hasSearchVolume(disciplineId) {
27
- return !this.disciplinesWithNoSearchVolume.includes(Number(disciplineId));
28
- }
29
- getDescription() {
30
- return `Search volume is not available for the disciplines with id ${this.disciplinesWithNoSearchVolume.join(', ')}`;
31
- }
32
- }