@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.
Files changed (374) hide show
  1. package/dist/index.d.ts +1 -0
  2. package/dist/index.js +1 -0
  3. package/dist/organisations-seo/index.d.ts +4 -0
  4. package/dist/organisations-seo/index.js +2 -0
  5. package/dist/programmes-seo/index.d.ts +6 -0
  6. package/dist/programmes-seo/index.js +2 -0
  7. package/dist/scholarships-seo/index.d.ts +5 -0
  8. package/dist/scholarships-seo/index.js +3 -0
  9. package/dist/sitemap-generator-seo/index.d.ts +13 -0
  10. package/dist/sitemap-generator-seo/index.js +4 -0
  11. package/dist/src/common/FilterKeyValuesMap.d.ts +2 -0
  12. package/dist/src/common/FilterKeyValuesMap.js +1 -0
  13. package/dist/src/common/IDependencies.d.ts +4 -0
  14. package/dist/src/common/IDependencies.js +1 -0
  15. package/dist/src/common/IDocumentationManager.d.ts +5 -0
  16. package/dist/src/common/IDocumentationManager.js +1 -0
  17. package/dist/src/common/IPresenter.d.ts +6 -0
  18. package/dist/src/common/IPresenter.js +1 -0
  19. package/dist/src/common/IRule.d.ts +8 -0
  20. package/dist/src/common/IRule.js +1 -0
  21. package/dist/src/common/ISearchApplicationState.d.ts +4 -0
  22. package/dist/src/common/ISearchApplicationState.js +1 -0
  23. package/dist/src/common/ISearchDependencies.d.ts +7 -0
  24. package/dist/src/common/ISearchDependencies.js +1 -0
  25. package/dist/src/common/ISearchIndexabilityManager.d.ts +4 -0
  26. package/dist/src/common/ISearchIndexabilityManager.js +1 -0
  27. package/dist/src/common/ISeoDependencies.d.ts +3 -0
  28. package/dist/src/common/ISeoDependencies.js +1 -0
  29. package/dist/src/common/ISeoFilterState.d.ts +5 -0
  30. package/dist/src/common/ISeoFilterState.js +1 -0
  31. package/dist/src/common/ISeoIndexabilityPolicy.d.ts +7 -0
  32. package/dist/src/common/ISeoIndexabilityPolicy.js +1 -0
  33. package/dist/src/common/ISeoInfoBase.d.ts +8 -0
  34. package/dist/src/common/ISeoInfoBase.js +1 -0
  35. package/dist/src/common/ISitemapDependencies.d.ts +5 -0
  36. package/dist/src/common/ISitemapDependencies.js +1 -0
  37. package/dist/src/common/ISitemapUrlGenerator.d.ts +7 -0
  38. package/dist/src/common/ISitemapUrlGenerator.js +1 -0
  39. package/dist/src/common/index.d.ts +5 -0
  40. package/dist/src/common/index.js +5 -0
  41. package/dist/src/common/policies/BaseSeoIndexabilityPolicy.d.ts +26 -0
  42. package/dist/src/common/policies/BaseSeoIndexabilityPolicy.js +56 -0
  43. package/dist/src/common/rules/BaseFilterKeyValueRule.d.ts +11 -0
  44. package/dist/src/common/rules/BaseFilterKeyValueRule.js +28 -0
  45. package/dist/src/common/rules/IndexablePageNumberRule.d.ts +9 -0
  46. package/dist/src/common/rules/IndexablePageNumberRule.js +17 -0
  47. package/dist/src/common/rules/NoFiltersSelectedRule.d.ts +9 -0
  48. package/dist/src/common/rules/NoFiltersSelectedRule.js +17 -0
  49. package/dist/src/common/rules/OnlineAttendanceRule.d.ts +6 -0
  50. package/dist/src/common/rules/OnlineAttendanceRule.js +14 -0
  51. package/dist/src/common/rules/OnlyFiltersSelectedRule.d.ts +12 -0
  52. package/dist/src/common/rules/OnlyFiltersSelectedRule.js +30 -0
  53. package/dist/src/common/rules/SingleValueSelectedForFilterRule.d.ts +12 -0
  54. package/dist/src/common/rules/SingleValueSelectedForFilterRule.js +24 -0
  55. package/dist/src/enums/DependencyTypes.d.ts +4 -0
  56. package/dist/src/enums/DependencyTypes.js +5 -0
  57. package/dist/src/enums/FilterCombinations.d.ts +52 -0
  58. package/dist/src/enums/FilterCombinations.js +53 -0
  59. package/dist/src/enums/SortingOptions.d.ts +4 -0
  60. package/dist/src/enums/SortingOptions.js +5 -0
  61. package/dist/src/errors/DependencyMissingError.d.ts +3 -0
  62. package/dist/src/errors/DependencyMissingError.js +5 -0
  63. package/dist/src/errors/InvalidDependencyTypeError.d.ts +3 -0
  64. package/dist/src/errors/InvalidDependencyTypeError.js +5 -0
  65. package/dist/src/errors/InvalidFilterValueError.d.ts +4 -0
  66. package/dist/src/errors/InvalidFilterValueError.js +5 -0
  67. package/dist/src/organisations/IOrganisationSearchApplicationState.d.ts +5 -0
  68. package/dist/src/organisations/IOrganisationSearchApplicationState.js +1 -0
  69. package/dist/src/organisations/ISeoSortingState.d.ts +4 -0
  70. package/dist/src/organisations/ISeoSortingState.js +1 -0
  71. package/dist/src/organisations/SearchIndexabilityManager.d.ts +12 -0
  72. package/dist/src/organisations/SearchIndexabilityManager.js +42 -0
  73. package/dist/src/organisations/index.d.ts +4 -0
  74. package/dist/src/organisations/index.js +4 -0
  75. package/dist/src/organisations/policies/OrganisationsSeoIndexabilityPolicy.d.ts +19 -0
  76. package/dist/src/organisations/policies/OrganisationsSeoIndexabilityPolicy.js +49 -0
  77. package/dist/src/organisations/policies/RankedOrganisationsSeoIndexabilityPolicy.d.ts +9 -0
  78. package/dist/src/organisations/policies/RankedOrganisationsSeoIndexabilityPolicy.js +22 -0
  79. package/dist/src/organisations/policies/index.d.ts +18 -0
  80. package/dist/src/organisations/policies/index.js +18 -0
  81. package/dist/src/organisations/policies/our-picks/Area.d.ts +13 -0
  82. package/dist/src/organisations/policies/our-picks/Area.js +35 -0
  83. package/dist/src/organisations/policies/our-picks/AreaAttendance.d.ts +15 -0
  84. package/dist/src/organisations/policies/our-picks/AreaAttendance.js +45 -0
  85. package/dist/src/organisations/policies/our-picks/Attendance.d.ts +14 -0
  86. package/dist/src/organisations/policies/our-picks/Attendance.js +33 -0
  87. package/dist/src/organisations/policies/our-picks/Continent.d.ts +13 -0
  88. package/dist/src/organisations/policies/our-picks/Continent.js +31 -0
  89. package/dist/src/organisations/policies/our-picks/Country.d.ts +13 -0
  90. package/dist/src/organisations/policies/our-picks/Country.js +28 -0
  91. package/dist/src/organisations/policies/our-picks/CountryAttendance.d.ts +15 -0
  92. package/dist/src/organisations/policies/our-picks/CountryAttendance.js +43 -0
  93. package/dist/src/organisations/policies/our-picks/Unfiltered.d.ts +12 -0
  94. package/dist/src/organisations/policies/our-picks/Unfiltered.js +16 -0
  95. package/dist/src/organisations/policies/ranked/RankedArea.d.ts +13 -0
  96. package/dist/src/organisations/policies/ranked/RankedArea.js +36 -0
  97. package/dist/src/organisations/policies/ranked/RankedAreaDiscipline.d.ts +14 -0
  98. package/dist/src/organisations/policies/ranked/RankedAreaDiscipline.js +44 -0
  99. package/dist/src/organisations/policies/ranked/RankedAttendance.d.ts +14 -0
  100. package/dist/src/organisations/policies/ranked/RankedAttendance.js +34 -0
  101. package/dist/src/organisations/policies/ranked/RankedAttendanceDiscipline.d.ts +14 -0
  102. package/dist/src/organisations/policies/ranked/RankedAttendanceDiscipline.js +42 -0
  103. package/dist/src/organisations/policies/ranked/RankedContinent.d.ts +13 -0
  104. package/dist/src/organisations/policies/ranked/RankedContinent.js +32 -0
  105. package/dist/src/organisations/policies/ranked/RankedContinentAttendance.d.ts +15 -0
  106. package/dist/src/organisations/policies/ranked/RankedContinentAttendance.js +44 -0
  107. package/dist/src/organisations/policies/ranked/RankedCountry.d.ts +13 -0
  108. package/dist/src/organisations/policies/ranked/RankedCountry.js +29 -0
  109. package/dist/src/organisations/policies/ranked/RankedCountryAttendance.d.ts +14 -0
  110. package/dist/src/organisations/policies/ranked/RankedCountryAttendance.js +42 -0
  111. package/dist/src/organisations/policies/ranked/RankedCountryDiscipline.d.ts +13 -0
  112. package/dist/src/organisations/policies/ranked/RankedCountryDiscipline.js +40 -0
  113. package/dist/src/organisations/policies/ranked/RankedDiscipline.d.ts +13 -0
  114. package/dist/src/organisations/policies/ranked/RankedDiscipline.js +32 -0
  115. package/dist/src/organisations/policies/ranked/RankedUnfiltered.d.ts +12 -0
  116. package/dist/src/organisations/policies/ranked/RankedUnfiltered.js +21 -0
  117. package/dist/src/organisations/rules/AtLeastSevenResultsRule.d.ts +15 -0
  118. package/dist/src/organisations/rules/AtLeastSevenResultsRule.js +30 -0
  119. package/dist/src/organisations/rules/AtLeastTwoRankedResultsRule.d.ts +13 -0
  120. package/dist/src/organisations/rules/AtLeastTwoRankedResultsRule.js +26 -0
  121. package/dist/src/organisations/rules/BaseSearchVolumeOrganisationsRule.d.ts +14 -0
  122. package/dist/src/organisations/rules/BaseSearchVolumeOrganisationsRule.js +33 -0
  123. package/dist/src/organisations/rules/ContinentIsEuropeRule.d.ts +6 -0
  124. package/dist/src/organisations/rules/ContinentIsEuropeRule.js +15 -0
  125. package/dist/src/organisations/rules/NoFiltersSelectedRule.d.ts +9 -0
  126. package/dist/src/organisations/rules/NoFiltersSelectedRule.js +17 -0
  127. package/dist/src/organisations/rules/SearchVolumeAreasAttendanceRule.d.ts +6 -0
  128. package/dist/src/organisations/rules/SearchVolumeAreasAttendanceRule.js +17 -0
  129. package/dist/src/organisations/rules/SearchVolumeAreasDisciplineRule.d.ts +6 -0
  130. package/dist/src/organisations/rules/SearchVolumeAreasDisciplineRule.js +18 -0
  131. package/dist/src/organisations/rules/SearchVolumeCountriesAttendanceRule.d.ts +6 -0
  132. package/dist/src/organisations/rules/SearchVolumeCountriesAttendanceRule.js +17 -0
  133. package/dist/src/organisations/types/IOrganisationSearchDependencies.d.ts +9 -0
  134. package/dist/src/organisations/types/IOrganisationSearchDependencies.js +1 -0
  135. package/dist/src/organisations/types/IOrganisationsSeoDependencies.d.ts +3 -0
  136. package/dist/src/organisations/types/IOrganisationsSeoDependencies.js +1 -0
  137. package/dist/src/organisations/types/IOrganisationsSitemapDependencies.d.ts +9 -0
  138. package/dist/src/organisations/types/IOrganisationsSitemapDependencies.js +1 -0
  139. package/dist/src/organisations/types.d.ts +6 -0
  140. package/dist/src/organisations/types.js +6 -0
  141. package/dist/src/presenters/AreaPresenter.d.ts +12 -0
  142. package/dist/src/presenters/AreaPresenter.js +35 -0
  143. package/dist/src/presenters/AttendancePresenter.d.ts +11 -0
  144. package/dist/src/presenters/AttendancePresenter.js +23 -0
  145. package/dist/src/presenters/ContinentPresenter.d.ts +12 -0
  146. package/dist/src/presenters/ContinentPresenter.js +33 -0
  147. package/dist/src/presenters/CountryPresenter.d.ts +12 -0
  148. package/dist/src/presenters/CountryPresenter.js +38 -0
  149. package/dist/src/presenters/DegreePresenter.d.ts +12 -0
  150. package/dist/src/presenters/DegreePresenter.js +50 -0
  151. package/dist/src/presenters/DisciplinePresenter.d.ts +12 -0
  152. package/dist/src/presenters/DisciplinePresenter.js +33 -0
  153. package/dist/src/presenters/DurationPresenter.d.ts +15 -0
  154. package/dist/src/presenters/DurationPresenter.js +47 -0
  155. package/dist/src/presenters/EducationalFormPresenter.d.ts +12 -0
  156. package/dist/src/presenters/EducationalFormPresenter.js +45 -0
  157. package/dist/src/presenters/FormatPresenter.d.ts +11 -0
  158. package/dist/src/presenters/FormatPresenter.js +24 -0
  159. package/dist/src/presenters/SpecialProgrammesPresenter.d.ts +11 -0
  160. package/dist/src/presenters/SpecialProgrammesPresenter.js +27 -0
  161. package/dist/src/presenters/TuitionFeePresenter.d.ts +11 -0
  162. package/dist/src/presenters/TuitionFeePresenter.js +23 -0
  163. package/dist/src/presenters/fragments/IAreaFragment.d.ts +4 -0
  164. package/dist/src/presenters/fragments/IAreaFragment.js +1 -0
  165. package/dist/src/presenters/fragments/ICountryFragment.d.ts +4 -0
  166. package/dist/src/presenters/fragments/ICountryFragment.js +1 -0
  167. package/dist/src/presenters/fragments/IFragment.d.ts +4 -0
  168. package/dist/src/presenters/fragments/IFragment.js +1 -0
  169. package/dist/src/programmes/BaseProgrammeFilterKeyValueRule.d.ts +6 -0
  170. package/dist/src/programmes/BaseProgrammeFilterKeyValueRule.js +6 -0
  171. package/dist/src/programmes/BaseProgrammeRule.d.ts +10 -0
  172. package/dist/src/programmes/BaseProgrammeRule.js +5 -0
  173. package/dist/src/programmes/IProgrammeRule.d.ts +5 -0
  174. package/dist/src/programmes/IProgrammeRule.js +1 -0
  175. package/dist/src/programmes/ProgrammesBaseIndexabilityPolicy.d.ts +15 -0
  176. package/dist/src/programmes/ProgrammesBaseIndexabilityPolicy.js +42 -0
  177. package/dist/src/programmes/SearchIndexabilityManager.d.ts +12 -0
  178. package/dist/src/programmes/SearchIndexabilityManager.js +58 -0
  179. package/dist/src/programmes/policies/Area.d.ts +15 -0
  180. package/dist/src/programmes/policies/Area.js +40 -0
  181. package/dist/src/programmes/policies/Attendance.d.ts +16 -0
  182. package/dist/src/programmes/policies/Attendance.js +38 -0
  183. package/dist/src/programmes/policies/AttendanceDegree.d.ts +17 -0
  184. package/dist/src/programmes/policies/AttendanceDegree.js +48 -0
  185. package/dist/src/programmes/policies/Continent.d.ts +15 -0
  186. package/dist/src/programmes/policies/Continent.js +36 -0
  187. package/dist/src/programmes/policies/ContinentTuitionFee.d.ts +16 -0
  188. package/dist/src/programmes/policies/ContinentTuitionFee.js +46 -0
  189. package/dist/src/programmes/policies/Country.d.ts +15 -0
  190. package/dist/src/programmes/policies/Country.js +33 -0
  191. package/dist/src/programmes/policies/CountryAttendance.d.ts +16 -0
  192. package/dist/src/programmes/policies/CountryAttendance.js +46 -0
  193. package/dist/src/programmes/policies/CountryAttendanceDegree.d.ts +17 -0
  194. package/dist/src/programmes/policies/CountryAttendanceDegree.js +55 -0
  195. package/dist/src/programmes/policies/CountryDegree.d.ts +16 -0
  196. package/dist/src/programmes/policies/CountryDegree.js +46 -0
  197. package/dist/src/programmes/policies/CountryDuration.d.ts +16 -0
  198. package/dist/src/programmes/policies/CountryDuration.js +46 -0
  199. package/dist/src/programmes/policies/CountryDurationDegree.d.ts +17 -0
  200. package/dist/src/programmes/policies/CountryDurationDegree.js +55 -0
  201. package/dist/src/programmes/policies/CountryEducationalForm.d.ts +16 -0
  202. package/dist/src/programmes/policies/CountryEducationalForm.js +47 -0
  203. package/dist/src/programmes/policies/CountryFormat.d.ts +16 -0
  204. package/dist/src/programmes/policies/CountryFormat.js +46 -0
  205. package/dist/src/programmes/policies/CountryTuitionFee.d.ts +16 -0
  206. package/dist/src/programmes/policies/CountryTuitionFee.js +46 -0
  207. package/dist/src/programmes/policies/Degree.d.ts +15 -0
  208. package/dist/src/programmes/policies/Degree.js +38 -0
  209. package/dist/src/programmes/policies/DegreeAttendanceDiscipline.d.ts +16 -0
  210. package/dist/src/programmes/policies/DegreeAttendanceDiscipline.js +63 -0
  211. package/dist/src/programmes/policies/DegreeCountryAttendance.d.ts +16 -0
  212. package/dist/src/programmes/policies/DegreeCountryAttendance.js +88 -0
  213. package/dist/src/programmes/policies/DegreeCountryDiscipline.d.ts +16 -0
  214. package/dist/src/programmes/policies/DegreeCountryDiscipline.js +71 -0
  215. package/dist/src/programmes/policies/DegreeCountryTuitionFee.d.ts +16 -0
  216. package/dist/src/programmes/policies/DegreeCountryTuitionFee.js +73 -0
  217. package/dist/src/programmes/policies/Discipline.d.ts +15 -0
  218. package/dist/src/programmes/policies/Discipline.js +36 -0
  219. package/dist/src/programmes/policies/DisciplineArea.d.ts +15 -0
  220. package/dist/src/programmes/policies/DisciplineArea.js +46 -0
  221. package/dist/src/programmes/policies/DisciplineAttendance.d.ts +16 -0
  222. package/dist/src/programmes/policies/DisciplineAttendance.js +46 -0
  223. package/dist/src/programmes/policies/DisciplineContinent.d.ts +15 -0
  224. package/dist/src/programmes/policies/DisciplineContinent.js +44 -0
  225. package/dist/src/programmes/policies/DisciplineCountry.d.ts +15 -0
  226. package/dist/src/programmes/policies/DisciplineCountry.js +44 -0
  227. package/dist/src/programmes/policies/DisciplineCountryEducationalForm.d.ts +16 -0
  228. package/dist/src/programmes/policies/DisciplineCountryEducationalForm.js +53 -0
  229. package/dist/src/programmes/policies/DisciplineDegree.d.ts +16 -0
  230. package/dist/src/programmes/policies/DisciplineDegree.js +46 -0
  231. package/dist/src/programmes/policies/DisciplineDuration.d.ts +16 -0
  232. package/dist/src/programmes/policies/DisciplineDuration.js +46 -0
  233. package/dist/src/programmes/policies/DisciplineEducationalForm.d.ts +16 -0
  234. package/dist/src/programmes/policies/DisciplineEducationalForm.js +47 -0
  235. package/dist/src/programmes/policies/DisciplineFormat.d.ts +16 -0
  236. package/dist/src/programmes/policies/DisciplineFormat.js +46 -0
  237. package/dist/src/programmes/policies/DisciplineTuitionFee.d.ts +16 -0
  238. package/dist/src/programmes/policies/DisciplineTuitionFee.js +46 -0
  239. package/dist/src/programmes/policies/DisciplineTuitionFeeAttendance.d.ts +17 -0
  240. package/dist/src/programmes/policies/DisciplineTuitionFeeAttendance.js +54 -0
  241. package/dist/src/programmes/policies/SpecialProgrammes.d.ts +16 -0
  242. package/dist/src/programmes/policies/SpecialProgrammes.js +38 -0
  243. package/dist/src/programmes/policies/TuitionFee.d.ts +15 -0
  244. package/dist/src/programmes/policies/TuitionFee.js +32 -0
  245. package/dist/src/programmes/policies/Unfiltered.d.ts +13 -0
  246. package/dist/src/programmes/policies/Unfiltered.js +19 -0
  247. package/dist/src/programmes/policies/index.d.ts +34 -0
  248. package/dist/src/programmes/policies/index.js +34 -0
  249. package/dist/src/programmes/rules/AffordableTuitionFeeRule.d.ts +6 -0
  250. package/dist/src/programmes/rules/AffordableTuitionFeeRule.js +17 -0
  251. package/dist/src/programmes/rules/AtLeastSevenResultsRule.d.ts +15 -0
  252. package/dist/src/programmes/rules/AtLeastSevenResultsRule.js +30 -0
  253. package/dist/src/programmes/rules/DegreeAttendanceDisciplineRule.d.ts +11 -0
  254. package/dist/src/programmes/rules/DegreeAttendanceDisciplineRule.js +44 -0
  255. package/dist/src/programmes/rules/DegreeAttendanceDisciplineSpecificRule.d.ts +11 -0
  256. package/dist/src/programmes/rules/DegreeAttendanceDisciplineSpecificRule.js +39 -0
  257. package/dist/src/programmes/rules/DegreeCountryAttendanceSpecificRule.d.ts +14 -0
  258. package/dist/src/programmes/rules/DegreeCountryAttendanceSpecificRule.js +76 -0
  259. package/dist/src/programmes/rules/DegreeCountryDisciplineSpecificRule.d.ts +11 -0
  260. package/dist/src/programmes/rules/DegreeCountryDisciplineSpecificRule.js +76 -0
  261. package/dist/src/programmes/rules/DegreeCountryTuitionFeeSpecificRule.d.ts +12 -0
  262. package/dist/src/programmes/rules/DegreeCountryTuitionFeeSpecificRule.js +62 -0
  263. package/dist/src/programmes/rules/DegreeDisciplineRule.d.ts +16 -0
  264. package/dist/src/programmes/rules/DegreeDisciplineRule.js +189 -0
  265. package/dist/src/programmes/rules/ErasmusOrJointSpecialProgrammesRule.d.ts +9 -0
  266. package/dist/src/programmes/rules/ErasmusOrJointSpecialProgrammesRule.js +28 -0
  267. package/dist/src/programmes/rules/IndexableDegreeRule.d.ts +10 -0
  268. package/dist/src/programmes/rules/IndexableDegreeRule.js +53 -0
  269. package/dist/src/programmes/rules/IndexableDurationRule.d.ts +12 -0
  270. package/dist/src/programmes/rules/IndexableDurationRule.js +37 -0
  271. package/dist/src/programmes/rules/IndexableEducationalFormRule.d.ts +10 -0
  272. package/dist/src/programmes/rules/IndexableEducationalFormRule.js +34 -0
  273. package/dist/src/programmes/rules/IndexablePageNumberRule.d.ts +9 -0
  274. package/dist/src/programmes/rules/IndexablePageNumberRule.js +17 -0
  275. package/dist/src/programmes/rules/MbaDegreeRule.d.ts +6 -0
  276. package/dist/src/programmes/rules/MbaDegreeRule.js +15 -0
  277. package/dist/src/programmes/rules/MbaOrMscDegreeRule.d.ts +9 -0
  278. package/dist/src/programmes/rules/MbaOrMscDegreeRule.js +26 -0
  279. package/dist/src/programmes/rules/NotDistanceLearningPortalRule.d.ts +11 -0
  280. package/dist/src/programmes/rules/NotDistanceLearningPortalRule.js +28 -0
  281. package/dist/src/programmes/rules/OneYearDurationRule.d.ts +6 -0
  282. package/dist/src/programmes/rules/OneYearDurationRule.js +15 -0
  283. package/dist/src/programmes/rules/PartTimeFormatRule.d.ts +6 -0
  284. package/dist/src/programmes/rules/PartTimeFormatRule.js +15 -0
  285. package/dist/src/programmes/types/IProgrammeSearchApplicationState.d.ts +4 -0
  286. package/dist/src/programmes/types/IProgrammeSearchApplicationState.js +1 -0
  287. package/dist/src/programmes/types/IProgrammeSearchDependencies.d.ts +7 -0
  288. package/dist/src/programmes/types/IProgrammeSearchDependencies.js +1 -0
  289. package/dist/src/programmes/types/IProgrammeSearchSitemapDependencies.d.ts +5 -0
  290. package/dist/src/programmes/types/IProgrammeSearchSitemapDependencies.js +1 -0
  291. package/dist/src/programmes/types/IProgrammeSeoDependencies.d.ts +3 -0
  292. package/dist/src/programmes/types/IProgrammeSeoDependencies.js +1 -0
  293. package/dist/src/programmes/types/IProgrammeSitemapDependencies.d.ts +7 -0
  294. package/dist/src/programmes/types/IProgrammeSitemapDependencies.js +1 -0
  295. package/dist/src/programmes/types/IProgrammeSitemapUrlGenerator.d.ts +5 -0
  296. package/dist/src/programmes/types/IProgrammeSitemapUrlGenerator.js +1 -0
  297. package/dist/src/scholarships/SearchIndexabilityManager.d.ts +11 -0
  298. package/dist/src/scholarships/SearchIndexabilityManager.js +33 -0
  299. package/dist/src/scholarships/index.d.ts +3 -0
  300. package/dist/src/scholarships/index.js +3 -0
  301. package/dist/src/scholarships/policies/Area.d.ts +13 -0
  302. package/dist/src/scholarships/policies/Area.js +37 -0
  303. package/dist/src/scholarships/policies/Country.d.ts +12 -0
  304. package/dist/src/scholarships/policies/Country.js +31 -0
  305. package/dist/src/scholarships/policies/Discipline.d.ts +12 -0
  306. package/dist/src/scholarships/policies/Discipline.js +31 -0
  307. package/dist/src/scholarships/policies/DisciplineCountry.d.ts +12 -0
  308. package/dist/src/scholarships/policies/DisciplineCountry.js +39 -0
  309. package/dist/src/scholarships/policies/ScholarshipSeoIndexabilityPolicy.d.ts +7 -0
  310. package/dist/src/scholarships/policies/ScholarshipSeoIndexabilityPolicy.js +7 -0
  311. package/dist/src/scholarships/policies/Unfiltered.d.ts +10 -0
  312. package/dist/src/scholarships/policies/Unfiltered.js +16 -0
  313. package/dist/src/scholarships/policies/UniversityCountry.d.ts +11 -0
  314. package/dist/src/scholarships/policies/UniversityCountry.js +41 -0
  315. package/dist/src/scholarships/rules/ExceptAustaliaAreasRule.d.ts +14 -0
  316. package/dist/src/scholarships/rules/ExceptAustaliaAreasRule.js +42 -0
  317. package/dist/src/scholarships/rules/SearchVolumeAreasRule.d.ts +12 -0
  318. package/dist/src/scholarships/rules/SearchVolumeAreasRule.js +32 -0
  319. package/dist/src/scholarships/rules/SearchVolumeCountriesDisciplinesRule.d.ts +14 -0
  320. package/dist/src/scholarships/rules/SearchVolumeCountriesDisciplinesRule.js +43 -0
  321. package/dist/src/scholarships/rules/SearchVolumeCountriesRule.d.ts +12 -0
  322. package/dist/src/scholarships/rules/SearchVolumeCountriesRule.js +32 -0
  323. package/dist/src/scholarships/rules/SearchVolumeDisciplinesRule.d.ts +12 -0
  324. package/dist/src/scholarships/rules/SearchVolumeDisciplinesRule.js +32 -0
  325. package/dist/src/scholarships/rules/files/search-volume.json +39334 -0
  326. package/dist/src/scholarships/types/IScholarshipSeoDependencies.d.ts +3 -0
  327. package/dist/src/scholarships/types/IScholarshipSeoDependencies.js +1 -0
  328. package/dist/src/scholarships/types/IScholarshipSitemapDependencies.d.ts +5 -0
  329. package/dist/src/scholarships/types/IScholarshipSitemapDependencies.js +1 -0
  330. package/dist/src/scholarships/types.d.ts +5 -0
  331. package/dist/src/scholarships/types.js +5 -0
  332. package/dist/src/sitemap-generator/BaseSitemapUrlGeneratorManager.d.ts +14 -0
  333. package/dist/src/sitemap-generator/BaseSitemapUrlGeneratorManager.js +26 -0
  334. package/dist/src/sitemap-generator/IOrganisation.d.ts +6 -0
  335. package/dist/src/sitemap-generator/IOrganisation.js +1 -0
  336. package/dist/src/sitemap-generator/IOrganisationsClient.d.ts +4 -0
  337. package/dist/src/sitemap-generator/IOrganisationsClient.js +1 -0
  338. package/dist/src/sitemap-generator/IRankingApiClient.d.ts +4 -0
  339. package/dist/src/sitemap-generator/IRankingApiClient.js +1 -0
  340. package/dist/src/sitemap-generator/ISearchApiClient.d.ts +5 -0
  341. package/dist/src/sitemap-generator/ISearchApiClient.js +1 -0
  342. package/dist/src/sitemap-generator/ISitemapUrlGeneratorManager.d.ts +9 -0
  343. package/dist/src/sitemap-generator/ISitemapUrlGeneratorManager.js +1 -0
  344. package/dist/src/sitemap-generator/OrganisationsSitemapUrlGeneratorManager.d.ts +14 -0
  345. package/dist/src/sitemap-generator/OrganisationsSitemapUrlGeneratorManager.js +51 -0
  346. package/dist/src/sitemap-generator/ProgrammesSitemapUrlGeneratorManager.d.ts +12 -0
  347. package/dist/src/sitemap-generator/ProgrammesSitemapUrlGeneratorManager.js +77 -0
  348. package/dist/src/sitemap-generator/ScholarshipsSitemapUrlGeneratorManager.d.ts +9 -0
  349. package/dist/src/sitemap-generator/ScholarshipsSitemapUrlGeneratorManager.js +28 -0
  350. package/dist/src/sitemap-generator/index.d.ts +0 -0
  351. package/dist/src/sitemap-generator/index.js +1 -0
  352. package/dist/src/structured-data/ProgrammeStructuredDataFactory.d.ts +18 -0
  353. package/dist/src/structured-data/ProgrammeStructuredDataFactory.js +91 -0
  354. package/dist/src/structured-data/SearchStructuredDataFactory.d.ts +34 -0
  355. package/dist/src/structured-data/SearchStructuredDataFactory.js +144 -0
  356. package/dist/src/structured-data/dto/BreadcrumbDTO.d.ts +5 -0
  357. package/dist/src/structured-data/dto/BreadcrumbDTO.js +1 -0
  358. package/dist/src/structured-data/dto/EntityDTO.d.ts +7 -0
  359. package/dist/src/structured-data/dto/EntityDTO.js +1 -0
  360. package/dist/src/structured-data/dto/FAQItemDto.d.ts +4 -0
  361. package/dist/src/structured-data/dto/FAQItemDto.js +1 -0
  362. package/dist/src/structured-data/dto/OfferDTO.d.ts +5 -0
  363. package/dist/src/structured-data/dto/OfferDTO.js +1 -0
  364. package/dist/src/structured-data/dto/ReviewRatingDTO.d.ts +4 -0
  365. package/dist/src/structured-data/dto/ReviewRatingDTO.js +1 -0
  366. package/dist/src/structured-data/dto/index.d.ts +5 -0
  367. package/dist/src/structured-data/dto/index.js +5 -0
  368. package/dist/src/structured-data/index.d.ts +2 -0
  369. package/dist/src/structured-data/index.js +2 -0
  370. package/dist/src/structured-data/interface/StructuredDataCurrencyConversionService.d.ts +3 -0
  371. package/dist/src/structured-data/interface/StructuredDataCurrencyConversionService.js +1 -0
  372. package/dist/structured-data-seo/index.d.ts +1 -0
  373. package/dist/structured-data-seo/index.js +1 -0
  374. package/package.json +2 -2
@@ -0,0 +1 @@
1
+ export * from './scholarships-seo';
package/dist/index.js ADDED
@@ -0,0 +1 @@
1
+ export * from './scholarships-seo';
@@ -0,0 +1,4 @@
1
+ import { ISeoInfoBase } from '../src/common/ISeoInfoBase';
2
+ import { ISeoFilterState } from '../src/common/ISeoFilterState';
3
+ import { IOrganisationSearchApplicationState, SearchIndexabilityManager, ISeoSortingState, types } from '../src/organisations';
4
+ export { ISeoInfoBase, ISeoFilterState, IOrganisationSearchApplicationState, SearchIndexabilityManager, ISeoSortingState, types };
@@ -0,0 +1,2 @@
1
+ import { SearchIndexabilityManager, types } from '../src/organisations';
2
+ export { SearchIndexabilityManager, types };
@@ -0,0 +1,6 @@
1
+ import { ISeoFilterState } from '../src/common/ISeoFilterState';
2
+ import { ISeoInfoBase } from '../src/common/ISeoInfoBase';
3
+ import { IProgrammeSearchApplicationState } from '../src/programmes/types/IProgrammeSearchApplicationState';
4
+ import { ISearchIndexabilityManager } from '../src/common/ISearchIndexabilityManager';
5
+ import { SearchIndexabilityManager } from '../src/programmes/SearchIndexabilityManager';
6
+ export { ISeoFilterState, ISeoInfoBase, ISearchIndexabilityManager, IProgrammeSearchApplicationState, SearchIndexabilityManager };
@@ -0,0 +1,2 @@
1
+ import { SearchIndexabilityManager } from '../src/programmes/SearchIndexabilityManager';
2
+ export { SearchIndexabilityManager };
@@ -0,0 +1,5 @@
1
+ import { ISeoIndexabilityPolicy } from '../src/common/ISeoIndexabilityPolicy';
2
+ import { ISeoFilterState, ISearchApplicationState, ISearchIndexabilityManager, ISeoInfoBase } from '../src/common';
3
+ import { SearchIndexabilityManager } from '../src/scholarships/SearchIndexabilityManager';
4
+ import { types } from '../src/scholarships/types';
5
+ export { ISeoFilterState, ISeoIndexabilityPolicy, ISearchApplicationState, ISearchIndexabilityManager, ISeoInfoBase, SearchIndexabilityManager, types };
@@ -0,0 +1,3 @@
1
+ import { SearchIndexabilityManager } from '../src/scholarships/SearchIndexabilityManager';
2
+ import { types } from '../src/scholarships/types';
3
+ export { SearchIndexabilityManager, types };
@@ -0,0 +1,13 @@
1
+ export { IOrganisationsClient } from '../src/sitemap-generator/IOrganisationsClient';
2
+ export { IOrganisation } from '../src/sitemap-generator/IOrganisation';
3
+ export { IRankingApiClient } from '../src/sitemap-generator/IRankingApiClient';
4
+ export { ISearchApiClient } from '../src/sitemap-generator/ISearchApiClient';
5
+ export { ISitemapUrlGeneratorManager } from '../src/sitemap-generator/ISitemapUrlGeneratorManager';
6
+ export { OrganisationsSitemapUrlGeneratorManager } from '../src/sitemap-generator/OrganisationsSitemapUrlGeneratorManager';
7
+ export { ScholarshipsSitemapUrlGeneratorManager } from '../src/sitemap-generator/ScholarshipsSitemapUrlGeneratorManager';
8
+ export { ProgrammesSitemapUrlGeneratorManager } from '../src/sitemap-generator/ProgrammesSitemapUrlGeneratorManager';
9
+ export { FilterCombinations } from '../src/enums/FilterCombinations';
10
+ export { ISitemapUrlGenerator } from '../src/common/ISitemapUrlGenerator';
11
+ export { FilterKeyValuesMap } from '../src/common/FilterKeyValuesMap';
12
+ export { IPresenter } from '../src/common';
13
+ export { IProgrammeSitemapUrlGenerator } from '../src/programmes/types/IProgrammeSitemapUrlGenerator';
@@ -0,0 +1,4 @@
1
+ export { OrganisationsSitemapUrlGeneratorManager } from '../src/sitemap-generator/OrganisationsSitemapUrlGeneratorManager';
2
+ export { ScholarshipsSitemapUrlGeneratorManager } from '../src/sitemap-generator/ScholarshipsSitemapUrlGeneratorManager';
3
+ export { ProgrammesSitemapUrlGeneratorManager } from '../src/sitemap-generator/ProgrammesSitemapUrlGeneratorManager';
4
+ export { FilterCombinations } from '../src/enums/FilterCombinations';
@@ -0,0 +1,2 @@
1
+ import { FilterKey } from '@studyportals/search-filters';
2
+ export type FilterKeyValuesMap = Map<FilterKey, string[]>;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,4 @@
1
+ import { DependencyTypes } from '../enums/DependencyTypes';
2
+ export interface IDependencies {
3
+ dependencyType: DependencyTypes;
4
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,5 @@
1
+ import { ISeoIndexabilityPolicy } from './ISeoIndexabilityPolicy';
2
+ import { ISitemapUrlGenerator } from './ISitemapUrlGenerator';
3
+ export interface IDocumentationManager {
4
+ getPolicies(): ISitemapUrlGenerator[] | ISeoIndexabilityPolicy[];
5
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,6 @@
1
+ import { IFragment } from '../presenters/fragments/IFragment';
2
+ import { FilterKey } from '@studyportals/search-filters';
3
+ export interface IPresenter {
4
+ readonly filterKey: FilterKey;
5
+ getFragments(): IFragment[];
6
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,8 @@
1
+ import { FilterKeyValuesMap } from './FilterKeyValuesMap';
2
+ import { ISearchDependencies } from './ISearchDependencies';
3
+ export interface IRule {
4
+ getName(): string;
5
+ forSearch(dependencies: ISearchDependencies): Promise<boolean>;
6
+ forSitemapGenerator(filterKeyValues: FilterKeyValuesMap): Promise<boolean>;
7
+ getDescription(): string;
8
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,4 @@
1
+ export interface ISearchApplicationState {
2
+ getNumberOfResults(): number;
3
+ getPageNumber(): number;
4
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,7 @@
1
+ import { ISeoInfoBase, ISeoFilterState, ISearchApplicationState } from '../common';
2
+ import { IDependencies } from './IDependencies';
3
+ export interface ISearchDependencies extends IDependencies {
4
+ seoInfoBase: ISeoInfoBase;
5
+ filterState: ISeoFilterState;
6
+ applicationState: ISearchApplicationState;
7
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,4 @@
1
+ import { IDocumentationManager } from './IDocumentationManager';
2
+ export interface ISearchIndexabilityManager extends IDocumentationManager {
3
+ shouldIndex(): Promise<boolean>;
4
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,3 @@
1
+ import { ISearchDependencies } from '../common/ISearchDependencies';
2
+ import { ISitemapDependencies } from '../common/ISitemapDependencies';
3
+ export type ISeoDependencies = ISearchDependencies | ISitemapDependencies;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,5 @@
1
+ import { FilterKey } from '@studyportals/search-filters';
2
+ export interface ISeoFilterState {
3
+ getSelectedValuesFor(key: FilterKey): readonly string[];
4
+ getSelectedFilters(): readonly FilterKey[];
5
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,7 @@
1
+ import { IRule } from './IRule';
2
+ export interface ISeoIndexabilityPolicy {
3
+ shouldIndex(): Promise<boolean>;
4
+ getAllRules(): IRule[];
5
+ getName(): string;
6
+ getDescription(): string;
7
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,8 @@
1
+ import { FilterKey } from '@studyportals/search-filters';
2
+ import { ISeoFilterState } from './ISeoFilterState';
3
+ export interface ISeoInfoBase {
4
+ selectionOnlyFor(filterKeys: FilterKey[], filterSelectionState: ISeoFilterState): Promise<boolean>;
5
+ singleSelectionFor(filterKey: FilterKey, filterSelectionState: ISeoFilterState): Promise<boolean>;
6
+ getFilterOptionValueBy(filterKey: FilterKey, filterSelectionState: ISeoFilterState): string | null;
7
+ getSelectionTypeCount(filterSelectionState: ISeoFilterState): number;
8
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,5 @@
1
+ import { IDependencies } from '../common/IDependencies';
2
+ import { ISearchApiClient } from '../sitemap-generator/ISearchApiClient';
3
+ export interface ISitemapDependencies extends IDependencies {
4
+ searchApiClient: ISearchApiClient;
5
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,7 @@
1
+ import { FilterCombinations } from '../enums/FilterCombinations';
2
+ import { IRule } from './IRule';
3
+ export interface ISitemapUrlGenerator {
4
+ readonly filterCombination: FilterCombinations;
5
+ generateSitemapUrls(): Promise<string[]>;
6
+ getAllRules(): IRule[];
7
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,5 @@
1
+ export * from './ISeoInfoBase';
2
+ export * from './ISeoFilterState';
3
+ export * from './ISearchApplicationState';
4
+ export * from './ISearchIndexabilityManager';
5
+ export * from './IPresenter';
@@ -0,0 +1,5 @@
1
+ export * from './ISeoInfoBase';
2
+ export * from './ISeoFilterState';
3
+ export * from './ISearchApplicationState';
4
+ export * from './ISearchIndexabilityManager';
5
+ export * from './IPresenter';
@@ -0,0 +1,26 @@
1
+ import { ISearchDependencies } from '../ISearchDependencies';
2
+ import { IDependencies } from '../IDependencies';
3
+ import { IRule } from '../IRule';
4
+ import { FilterKeyValuesMap } from '../FilterKeyValuesMap';
5
+ import { ISeoIndexabilityPolicy } from '../ISeoIndexabilityPolicy';
6
+ import { ISitemapUrlGenerator } from '../ISitemapUrlGenerator';
7
+ import { FilterCombinations } from '../../enums/FilterCombinations';
8
+ export declare abstract class BaseSeoIndexabilityPolicy<TDependencies extends IDependencies> implements ISeoIndexabilityPolicy, ISitemapUrlGenerator {
9
+ abstract readonly name: string;
10
+ abstract readonly description: string;
11
+ protected readonly dependencies: TDependencies;
12
+ protected abstract readonly rules: IRule[];
13
+ constructor(dependencies: TDependencies);
14
+ abstract get filterCombination(): FilterCombinations;
15
+ protected abstract generateUrls(): Promise<string[]>;
16
+ shouldIndex(): Promise<boolean>;
17
+ generateSitemapUrls(): Promise<string[]>;
18
+ protected isIndexable(): Promise<boolean>;
19
+ protected checkRulesForSearch(dependencies: ISearchDependencies): Promise<boolean>;
20
+ checkRulesForSitemap(filterKeyValues: FilterKeyValuesMap): Promise<boolean>;
21
+ protected isIndexabilityPolicyDependencies(): boolean;
22
+ protected isSitemapUrlGeneratorDependencies(): boolean;
23
+ getAllRules(): IRule[];
24
+ getName(): string;
25
+ getDescription(): string;
26
+ }
@@ -0,0 +1,56 @@
1
+ import { InvalidDependencyTypeError } from '../../errors/InvalidDependencyTypeError';
2
+ import { DependencyTypes } from '../../enums/DependencyTypes';
3
+ export class BaseSeoIndexabilityPolicy {
4
+ dependencies;
5
+ constructor(dependencies) {
6
+ this.dependencies = dependencies;
7
+ }
8
+ async shouldIndex() {
9
+ if (!this.isIndexabilityPolicyDependencies()) {
10
+ throw new InvalidDependencyTypeError();
11
+ }
12
+ return this.isIndexable();
13
+ }
14
+ async generateSitemapUrls() {
15
+ if (!this.isSitemapUrlGeneratorDependencies()) {
16
+ throw new InvalidDependencyTypeError();
17
+ }
18
+ return await this.generateUrls();
19
+ }
20
+ async isIndexable() {
21
+ return await this.checkRulesForSearch(this.dependencies);
22
+ }
23
+ async checkRulesForSearch(dependencies) {
24
+ for (const rule of this.rules) {
25
+ const result = await rule.forSearch(dependencies);
26
+ if (!result) {
27
+ return false;
28
+ }
29
+ }
30
+ return true;
31
+ }
32
+ async checkRulesForSitemap(filterKeyValues) {
33
+ for (const rule of this.rules) {
34
+ const result = await rule.forSitemapGenerator(filterKeyValues);
35
+ if (!result) {
36
+ return false;
37
+ }
38
+ }
39
+ return true;
40
+ }
41
+ isIndexabilityPolicyDependencies() {
42
+ return this.dependencies.dependencyType === DependencyTypes.SEARCH;
43
+ }
44
+ isSitemapUrlGeneratorDependencies() {
45
+ return this.dependencies.dependencyType === DependencyTypes.SITEMAP_GENERATOR;
46
+ }
47
+ getAllRules() {
48
+ return this.rules;
49
+ }
50
+ getName() {
51
+ return this.name;
52
+ }
53
+ getDescription() {
54
+ return this.description;
55
+ }
56
+ }
@@ -0,0 +1,11 @@
1
+ import { FilterKeyValuesMap } from '../FilterKeyValuesMap';
2
+ import { IRule } from '../IRule';
3
+ import { ISearchDependencies } from '../ISearchDependencies';
4
+ export declare abstract class BaseFilterKeyValueRule implements IRule {
5
+ private readonly expectedFilterKeyValues;
6
+ constructor(expectedFilterKeyValues: FilterKeyValuesMap);
7
+ abstract getName(): string;
8
+ abstract getDescription(): string;
9
+ forSearch(dependencies: ISearchDependencies): Promise<boolean>;
10
+ forSitemapGenerator(filterKeyValues: FilterKeyValuesMap): Promise<boolean>;
11
+ }
@@ -0,0 +1,28 @@
1
+ export class BaseFilterKeyValueRule {
2
+ expectedFilterKeyValues;
3
+ constructor(expectedFilterKeyValues) {
4
+ this.expectedFilterKeyValues = expectedFilterKeyValues;
5
+ }
6
+ forSearch(dependencies) {
7
+ const { seoInfoBase, filterState } = dependencies;
8
+ for (const [key, values] of this.expectedFilterKeyValues) {
9
+ const optionValue = seoInfoBase.getFilterOptionValueBy(key, filterState);
10
+ if (!optionValue || !values.includes(optionValue)) {
11
+ return Promise.resolve(false);
12
+ }
13
+ }
14
+ return Promise.resolve(true);
15
+ }
16
+ forSitemapGenerator(filterKeyValues) {
17
+ for (const [key, values] of this.expectedFilterKeyValues) {
18
+ const filterValues = filterKeyValues.get(key);
19
+ if (!filterValues || filterValues.length !== values.length) {
20
+ return Promise.resolve(false);
21
+ }
22
+ if (!values.every((value) => filterValues.includes(value))) {
23
+ return Promise.resolve(false);
24
+ }
25
+ }
26
+ return Promise.resolve(true);
27
+ }
28
+ }
@@ -0,0 +1,9 @@
1
+ import { IRule } from '../IRule';
2
+ import { ISearchDependencies } from '../ISearchDependencies';
3
+ export declare class IndexablePageNumberRule implements IRule {
4
+ private readonly minimumPageNumber;
5
+ forSearch(dependencies: ISearchDependencies): Promise<boolean>;
6
+ forSitemapGenerator(): Promise<boolean>;
7
+ getName(): string;
8
+ getDescription(): string;
9
+ }
@@ -0,0 +1,17 @@
1
+ export class IndexablePageNumberRule {
2
+ minimumPageNumber = 1;
3
+ forSearch(dependencies) {
4
+ const { applicationState } = dependencies;
5
+ const isPageNumberIndexable = applicationState.getPageNumber() <= this.minimumPageNumber;
6
+ return Promise.resolve(isPageNumberIndexable);
7
+ }
8
+ forSitemapGenerator() {
9
+ return Promise.resolve(true);
10
+ }
11
+ getName() {
12
+ return 'IndexablePageNumberRule';
13
+ }
14
+ getDescription() {
15
+ return 'Indexable if the page number is 1';
16
+ }
17
+ }
@@ -0,0 +1,9 @@
1
+ import { IRule } from '../../common/IRule';
2
+ import { FilterKeyValuesMap } from '../../common/FilterKeyValuesMap';
3
+ import { ISearchDependencies } from '../ISearchDependencies';
4
+ export declare class NoFiltersSelectedRule implements IRule {
5
+ forSearch(dependencies: ISearchDependencies): Promise<boolean>;
6
+ forSitemapGenerator(filterKeyValues: FilterKeyValuesMap): Promise<boolean>;
7
+ getName(): string;
8
+ getDescription(): string;
9
+ }
@@ -0,0 +1,17 @@
1
+ export class NoFiltersSelectedRule {
2
+ forSearch(dependencies) {
3
+ const { filterState, seoInfoBase } = dependencies;
4
+ const selectionCount = seoInfoBase.getSelectionTypeCount(filterState);
5
+ return Promise.resolve(selectionCount === 0);
6
+ }
7
+ forSitemapGenerator(filterKeyValues) {
8
+ const filterKeys = Array.from(filterKeyValues.keys());
9
+ return Promise.resolve(filterKeys.length === 0);
10
+ }
11
+ getName() {
12
+ return 'NoFiltersSelectedRule';
13
+ }
14
+ getDescription() {
15
+ return 'No filters are selected';
16
+ }
17
+ }
@@ -0,0 +1,6 @@
1
+ import { BaseFilterKeyValueRule } from '../../common/rules/BaseFilterKeyValueRule';
2
+ export declare class OnlineAttendanceRule extends BaseFilterKeyValueRule {
3
+ constructor();
4
+ getName(): string;
5
+ getDescription(): string;
6
+ }
@@ -0,0 +1,14 @@
1
+ import { FilterKey } from '@studyportals/search-filters';
2
+ import { BaseFilterKeyValueRule } from '../../common/rules/BaseFilterKeyValueRule';
3
+ export class OnlineAttendanceRule extends BaseFilterKeyValueRule {
4
+ constructor() {
5
+ const filterKeyValues = new Map([[FilterKey.DELIVERY_METHOD, ['online']]]);
6
+ super(filterKeyValues);
7
+ }
8
+ getName() {
9
+ return 'OnlineAttendanceRule';
10
+ }
11
+ getDescription() {
12
+ return 'Is indexable if the selected delivery method is online.';
13
+ }
14
+ }
@@ -0,0 +1,12 @@
1
+ import { IRule } from '../../common/IRule';
2
+ import { FilterKey } from '@studyportals/search-filters';
3
+ import { ISearchDependencies } from '../../common/ISearchDependencies';
4
+ import { FilterKeyValuesMap } from '../FilterKeyValuesMap';
5
+ export declare class OnlyFiltersSelectedRule implements IRule {
6
+ private readonly filterKeys;
7
+ constructor(filterKeys: FilterKey[]);
8
+ getName(): string;
9
+ forSearch(dependencies: ISearchDependencies): Promise<boolean>;
10
+ forSitemapGenerator(filterKeyValues: FilterKeyValuesMap): Promise<boolean>;
11
+ getDescription(): string;
12
+ }
@@ -0,0 +1,30 @@
1
+ export class OnlyFiltersSelectedRule {
2
+ filterKeys;
3
+ constructor(filterKeys) {
4
+ this.filterKeys = filterKeys;
5
+ }
6
+ getName() {
7
+ return `OnlyFiltersSelectedRule-${this.filterKeys.join('-')}`;
8
+ }
9
+ async forSearch(dependencies) {
10
+ const seoInfoBase = dependencies.seoInfoBase;
11
+ const filterState = dependencies.filterState;
12
+ return await seoInfoBase.selectionOnlyFor(this.filterKeys, filterState);
13
+ }
14
+ forSitemapGenerator(filterKeyValues) {
15
+ const filterKeys = Array.from(filterKeyValues.keys());
16
+ if (filterKeys.length !== this.filterKeys.length) {
17
+ return Promise.resolve(false);
18
+ }
19
+ if (!filterKeys.every((filterKey) => this.filterKeys.includes(filterKey))) {
20
+ return Promise.resolve(false);
21
+ }
22
+ if (!this.filterKeys.every((filterKey) => filterKeys.includes(filterKey))) {
23
+ return Promise.resolve(false);
24
+ }
25
+ return Promise.resolve(true);
26
+ }
27
+ getDescription() {
28
+ return `Only ${this.filterKeys.join(', ')} filters are selected`;
29
+ }
30
+ }
@@ -0,0 +1,12 @@
1
+ import { IRule } from '../../common/IRule';
2
+ import { FilterKey } from '@studyportals/search-filters';
3
+ import { ISearchDependencies } from '../../common/ISearchDependencies';
4
+ import { FilterKeyValuesMap } from '../FilterKeyValuesMap';
5
+ export declare class SingleValueSelectedForFilterRule implements IRule {
6
+ private readonly filterKey;
7
+ constructor(filterKey: FilterKey);
8
+ getName(): string;
9
+ forSearch(dependencies: ISearchDependencies): Promise<boolean>;
10
+ forSitemapGenerator(filterKeyValues: FilterKeyValuesMap): Promise<boolean>;
11
+ getDescription(): string;
12
+ }
@@ -0,0 +1,24 @@
1
+ export class SingleValueSelectedForFilterRule {
2
+ filterKey;
3
+ constructor(filterKey) {
4
+ this.filterKey = filterKey;
5
+ }
6
+ getName() {
7
+ return `SingleValueSelectedForFilterRule-${this.filterKey}`;
8
+ }
9
+ async forSearch(dependencies) {
10
+ const seoInfoBase = dependencies.seoInfoBase;
11
+ const filterState = dependencies.filterState;
12
+ return await seoInfoBase.singleSelectionFor(this.filterKey, filterState);
13
+ }
14
+ forSitemapGenerator(filterKeyValues) {
15
+ const filterValues = filterKeyValues.get(this.filterKey);
16
+ if (!filterValues || filterValues.length !== 1) {
17
+ return Promise.resolve(false);
18
+ }
19
+ return Promise.resolve(true);
20
+ }
21
+ getDescription() {
22
+ return `Single value is selected for filter ${this.filterKey}`;
23
+ }
24
+ }
@@ -0,0 +1,4 @@
1
+ export declare enum DependencyTypes {
2
+ SEARCH = "search",
3
+ SITEMAP_GENERATOR = "sitemap-generator"
4
+ }
@@ -0,0 +1,5 @@
1
+ export var DependencyTypes;
2
+ (function (DependencyTypes) {
3
+ DependencyTypes["SEARCH"] = "search";
4
+ DependencyTypes["SITEMAP_GENERATOR"] = "sitemap-generator";
5
+ })(DependencyTypes || (DependencyTypes = {}));
@@ -0,0 +1,52 @@
1
+ export declare enum FilterCombinations {
2
+ AREA = "area",
3
+ AREA_ATTENDANCE = "areaAttendance",
4
+ AREA_DISCIPLINE = "areaDiscipline",
5
+ COUNTRY = "country",
6
+ DEGREE = "degree",
7
+ COUNTRY_DEGREE = "countryDegree",
8
+ COUNTRY_DURATION = "countryDuration",
9
+ COUNTRY_FORMAT = "countryFormat",
10
+ COUNTRY_TUITION_FEE = "countryTuitionFee",
11
+ COUNTRY_EDUCATIONAL_FORM = "countryEducationalForm",
12
+ COUNTRY_ATTENDANCE_DEGREE = "countryAttendanceDegree",
13
+ COUNTRY_DURATION_DEGREE = "countryDurationDegree",
14
+ DISCIPLINE_AREA = "disciplineArea",
15
+ DISCIPLINE_ATTENDANCE = "disciplineAttendance",
16
+ DISCIPLINE_COUNTRY = "disciplineCountry",
17
+ DISCIPLINE_CONTINENT = "disciplineContinent",
18
+ DISCIPLINE_DEGREE = "disciplineDegree",
19
+ DISCIPLINE_DURATION = "disciplineDuration",
20
+ DISCIPLINE_FORMAT = "disciplineFormat",
21
+ DISCIPLINE_TUITION_FEE = "disciplineTuitionFee",
22
+ DISCIPLINE_EDUCATIONAL_FORM = "disciplineEducationalForm",
23
+ DISCIPLINE_TUITION_FEE_ATTENDANCE = "disciplineTuitionFeeAttendance",
24
+ DISCIPLINE_COUNTRY_EDUCATIONAL_FORM = "disciplineCountryEducationalForm",
25
+ DEGREE_COUNTRY_DISCIPLINE = "degreeCountryDiscipline",
26
+ DEGREE_ATTENDANCE_DISCIPLINE = "degreeAttendanceDiscipline",
27
+ DEGREE_COUNTRY_TUITION_FEE = "degreeCountryTuitionFee",
28
+ DEGREE_COUNTRY_ATTENDANCE = "degreeCountryAttendance",
29
+ DISCIPLINE = "discipline",
30
+ UNFILTERED = "unfiltered",
31
+ UNIVERSITY_COUNTRY = "universityCountry",
32
+ ATTENDANCE_DISCIPLINE = "attendancedDiscipline",
33
+ ATTENDANCE_DEGREE = "attendanceDegree",
34
+ CONTINENT_ATTENDANCE = "continentAttendance",
35
+ COUNTRY_ATTENDANCE = "countryAttendance",
36
+ ATTENDANCE = "attendance",
37
+ CONTINENT = "continent",
38
+ CONTINENT_TUITION_FEE = "continentTuitionFee",
39
+ TUITION_FEE = "tuitionFee",
40
+ SPECIAL_PROGRAMMES = "specialProgrammes",
41
+ RANKED_AREA = "rankedArea",
42
+ RANKED_AREA_DISCIPLINE = "rankedAreaDiscipline",
43
+ RANKED_ATTENDANCE = "rankedAttendance",
44
+ RANKED_ATTENDANCE_DISCIPLINE = "rankedAttendancedDiscipline",
45
+ RANKED_CONTINENT = "rankedContinent",
46
+ RANKED_CONTINENT_ATTENDANCE = "rankedContinentAttendance",
47
+ RANKED_COUNTRY = "rankedCountry",
48
+ RANKED_COUNTRY_ATTENDANCE = "rankedCountryAttendance",
49
+ RANKED_DISCIPLINE_COUNTRY = "rankedDisciplineCountry",
50
+ RANKED_DISCIPLINE = "rankedDiscipline",
51
+ RANKED_UNFILTERED = "rankedUnfiltered"
52
+ }