@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,21 @@
1
+ import { FilterCombinations } from '../../../enums/FilterCombinations';
2
+ import { NoFiltersSelectedRule } from '../../../common/rules/NoFiltersSelectedRule';
3
+ import { RankedOrganisationsSeoIndexabilityPolicy } from '../RankedOrganisationsSeoIndexabilityPolicy';
4
+ export class RankedUnfiltered extends RankedOrganisationsSeoIndexabilityPolicy {
5
+ name = 'Ranked Unfiltered Policy';
6
+ description = 'Defines indexing rules for ranking-sorted unfiltered pages, managing SEO strategy for quality-ordered aggregate views of the content database.';
7
+ baseRules = [new NoFiltersSelectedRule()];
8
+ constructor(dependencies) {
9
+ super(dependencies);
10
+ }
11
+ async generateUrls() {
12
+ const filterKeyValues = new Map([]);
13
+ if (await this.checkRulesForSitemap(filterKeyValues)) {
14
+ return [this.getPathWithSortingOption('')];
15
+ }
16
+ return [];
17
+ }
18
+ get filterCombination() {
19
+ return FilterCombinations.RANKED_UNFILTERED;
20
+ }
21
+ }
@@ -0,0 +1,15 @@
1
+ import { ISearchDependencies } from '../../common/ISearchDependencies';
2
+ import { FilterKeyValuesMap } from '../../common/FilterKeyValuesMap';
3
+ import { ISearchApiClient } from '../../sitemap-generator/ISearchApiClient';
4
+ import { IRule } from '../../common/IRule';
5
+ export declare class AtLeastSevenResultsRule implements IRule {
6
+ private readonly minimumResultsCount;
7
+ private readonly maximumPageSize;
8
+ private readonly searchApiClient?;
9
+ constructor(searchApiClient?: ISearchApiClient);
10
+ forSearch(dependencies: ISearchDependencies): Promise<boolean>;
11
+ forSitemapGeneratorWithPageNumber(filterKeyValues: FilterKeyValuesMap, pageNumber: number): Promise<boolean>;
12
+ forSitemapGenerator(): Promise<boolean>;
13
+ getName(): string;
14
+ getDescription(): string;
15
+ }
@@ -0,0 +1,30 @@
1
+ import { DependencyMissingError } from '../../errors/DependencyMissingError';
2
+ export class AtLeastSevenResultsRule {
3
+ minimumResultsCount = 7;
4
+ maximumPageSize = 20;
5
+ searchApiClient;
6
+ constructor(searchApiClient) {
7
+ this.searchApiClient = searchApiClient;
8
+ }
9
+ forSearch(dependencies) {
10
+ const { applicationState } = dependencies;
11
+ const resultCount = applicationState.getNumberOfResults();
12
+ return Promise.resolve(resultCount >= this.minimumResultsCount);
13
+ }
14
+ async forSitemapGeneratorWithPageNumber(filterKeyValues, pageNumber) {
15
+ if (!this.searchApiClient) {
16
+ throw new DependencyMissingError('SearchApiClient');
17
+ }
18
+ const count = await this.searchApiClient.getCount(filterKeyValues);
19
+ return count >= (pageNumber - 1) * this.maximumPageSize + this.minimumResultsCount;
20
+ }
21
+ forSitemapGenerator() {
22
+ throw new Error('Method not implemented.');
23
+ }
24
+ getName() {
25
+ return 'AtLeastSevenResultsRule';
26
+ }
27
+ getDescription() {
28
+ return 'Is indexable if there are at least 2 results.';
29
+ }
30
+ }
@@ -0,0 +1,13 @@
1
+ import { IRule } from '../../common/IRule';
2
+ import { IOrganisationSearchDependencies } from '../types/IOrganisationSearchDependencies';
3
+ import { FilterKeyValuesMap } from '../../common/FilterKeyValuesMap';
4
+ import { IRankingApiClient } from '../../sitemap-generator/IRankingApiClient';
5
+ export declare class AtLeastTwoRankedResultsRule implements IRule {
6
+ private readonly minimumRankedResultsCount;
7
+ private readonly rankingApiClient?;
8
+ constructor(rankingApiClient?: IRankingApiClient);
9
+ forSearch(dependencies: IOrganisationSearchDependencies): Promise<boolean>;
10
+ forSitemapGenerator(filterKeyValues: FilterKeyValuesMap): Promise<boolean>;
11
+ getName(): string;
12
+ getDescription(): string;
13
+ }
@@ -0,0 +1,26 @@
1
+ import { DependencyMissingError } from '../../errors/DependencyMissingError';
2
+ export class AtLeastTwoRankedResultsRule {
3
+ minimumRankedResultsCount = 2;
4
+ rankingApiClient;
5
+ constructor(rankingApiClient) {
6
+ this.rankingApiClient = rankingApiClient;
7
+ }
8
+ forSearch(dependencies) {
9
+ const { applicationState } = dependencies;
10
+ const rankedResultsCount = applicationState.getRankedResultsCount();
11
+ return Promise.resolve(rankedResultsCount >= this.minimumRankedResultsCount);
12
+ }
13
+ async forSitemapGenerator(filterKeyValues) {
14
+ if (!this.rankingApiClient) {
15
+ throw new DependencyMissingError('RankingApiClient');
16
+ }
17
+ const rankedResultsCount = await this.rankingApiClient.getRankedOrganisationCount(filterKeyValues);
18
+ return rankedResultsCount >= this.minimumRankedResultsCount;
19
+ }
20
+ getName() {
21
+ return 'AtLeastTwoRankedResultsRule';
22
+ }
23
+ getDescription() {
24
+ return `At least ${this.minimumRankedResultsCount} ranked results are available`;
25
+ }
26
+ }
@@ -0,0 +1,14 @@
1
+ import { FilterKeyValuesMap } from '../../common/FilterKeyValuesMap';
2
+ import { IRule } from '../../common/IRule';
3
+ import { ISearchDependencies } from '../../common/ISearchDependencies';
4
+ import { FilterKey } from '@studyportals/search-filters';
5
+ export declare abstract class BaseSearchVolumeOrganisationsRule implements IRule {
6
+ private readonly filterKey;
7
+ private readonly idsWithSearchVolume;
8
+ constructor(filterKey: FilterKey, idsWithSearchVolume: string[]);
9
+ abstract getName(): string;
10
+ forSearch(dependencies: ISearchDependencies): Promise<boolean>;
11
+ forSitemapGenerator(filterKeyValues: FilterKeyValuesMap): Promise<boolean>;
12
+ private hasSearchVolume;
13
+ getDescription(): string;
14
+ }
@@ -0,0 +1,33 @@
1
+ export class BaseSearchVolumeOrganisationsRule {
2
+ filterKey;
3
+ idsWithSearchVolume;
4
+ constructor(filterKey, idsWithSearchVolume) {
5
+ this.filterKey = filterKey;
6
+ this.idsWithSearchVolume = idsWithSearchVolume;
7
+ }
8
+ forSearch(dependencies) {
9
+ const value = dependencies.seoInfoBase.getFilterOptionValueBy(this.filterKey, dependencies.filterState);
10
+ if (!value) {
11
+ return Promise.resolve(false);
12
+ }
13
+ return Promise.resolve(this.hasSearchVolume(value));
14
+ }
15
+ forSitemapGenerator(filterKeyValues) {
16
+ const values = filterKeyValues.get(this.filterKey);
17
+ if (!values) {
18
+ return Promise.resolve(false);
19
+ }
20
+ for (const value of values) {
21
+ if (!this.idsWithSearchVolume.includes(value)) {
22
+ return Promise.resolve(false);
23
+ }
24
+ }
25
+ return Promise.resolve(true);
26
+ }
27
+ hasSearchVolume(value) {
28
+ return this.idsWithSearchVolume.includes(value);
29
+ }
30
+ getDescription() {
31
+ return `Indexable if ${this.filterKey} has search volume`;
32
+ }
33
+ }
@@ -0,0 +1,6 @@
1
+ import { BaseFilterKeyValueRule } from '../../common/rules/BaseFilterKeyValueRule';
2
+ export declare class ContinentIsEuropeRule extends BaseFilterKeyValueRule {
3
+ constructor();
4
+ getName(): string;
5
+ getDescription(): string;
6
+ }
@@ -0,0 +1,15 @@
1
+ import { FilterKey } from '@studyportals/search-filters';
2
+ import { BaseFilterKeyValueRule } from '../../common/rules/BaseFilterKeyValueRule';
3
+ export class ContinentIsEuropeRule extends BaseFilterKeyValueRule {
4
+ constructor() {
5
+ const europeId = '1';
6
+ const filterKeyValues = new Map([[FilterKey.CONTINENT, [europeId]]]);
7
+ super(filterKeyValues);
8
+ }
9
+ getName() {
10
+ return 'ContinentIsEuropeRule';
11
+ }
12
+ getDescription() {
13
+ return 'Indexable if continent is Europe';
14
+ }
15
+ }
@@ -0,0 +1,9 @@
1
+ import { IRule } from '../../common/IRule';
2
+ import { IOrganisationSearchDependencies } from '../types/IOrganisationSearchDependencies';
3
+ import { FilterKeyValuesMap } from '../../common/FilterKeyValuesMap';
4
+ export declare class NoFiltersSelectedRule implements IRule {
5
+ forSearch(dependencies: IOrganisationSearchDependencies): 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
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
8
+ forSitemapGenerator(filterKeyValues) {
9
+ throw new Error('Method not implemented.');
10
+ }
11
+ getName() {
12
+ return 'Indexable if no filters are selected.';
13
+ }
14
+ getDescription() {
15
+ throw new Error('Method not implemented.');
16
+ }
17
+ }
@@ -0,0 +1,6 @@
1
+ import { BaseSearchVolumeOrganisationsRule } from './BaseSearchVolumeOrganisationsRule';
2
+ export declare class SearchVolumeAreasAttendanceRule extends BaseSearchVolumeOrganisationsRule {
3
+ constructor();
4
+ getName(): string;
5
+ getDescription(): string;
6
+ }
@@ -0,0 +1,17 @@
1
+ import { FilterKey } from '@studyportals/search-filters';
2
+ import { BaseSearchVolumeOrganisationsRule } from './BaseSearchVolumeOrganisationsRule';
3
+ export class SearchVolumeAreasAttendanceRule extends BaseSearchVolumeOrganisationsRule {
4
+ constructor() {
5
+ const areaIdsWithSearchVolume = [
6
+ 3592, 3615, 3610, 3597, 3611, 3581, 3584, 3604, 3605, 3585, 3628, 3594, 3600, 3606, 3590, 3591, 3586, 3578, 3601, 3582, 3588, 3624,
7
+ 3616, 3598, 3596, 3583, 3626, 3587, 3613, 3589, 3614, 3621, 3609, 3595, 3623, 3625, 3618, 3619, 3627, 993, 996
8
+ ];
9
+ super(FilterKey.AREA, areaIdsWithSearchVolume.map((id) => id.toString()));
10
+ }
11
+ getName() {
12
+ return 'SearchVolumeAreasAttendanceRule';
13
+ }
14
+ getDescription() {
15
+ return 'Indexable if area has search volume';
16
+ }
17
+ }
@@ -0,0 +1,6 @@
1
+ import { BaseSearchVolumeOrganisationsRule } from './BaseSearchVolumeOrganisationsRule';
2
+ export declare class SearchVolumeAreasDisciplineRule extends BaseSearchVolumeOrganisationsRule {
3
+ constructor();
4
+ getName(): string;
5
+ getDescription(): string;
6
+ }
@@ -0,0 +1,18 @@
1
+ import { FilterKey } from '@studyportals/search-filters';
2
+ import { BaseSearchVolumeOrganisationsRule } from './BaseSearchVolumeOrganisationsRule';
3
+ export class SearchVolumeAreasDisciplineRule extends BaseSearchVolumeOrganisationsRule {
4
+ constructor() {
5
+ const areaIdsWithSearchVolume = [
6
+ 3578, 3579, 3580, 3581, 3582, 3583, 3584, 3585, 3586, 3587, 3588, 3589, 3590, 3591, 3592, 3593, 3594, 3595, 3596, 3597, 3598, 3599,
7
+ 3600, 3601, 3602, 3603, 3604, 3605, 3606, 3607, 3608, 3609, 3610, 3611, 3612, 3613, 3614, 3615, 3616, 3617, 3618, 3619, 3620, 3621,
8
+ 3622, 3623, 3624, 3625, 3626, 3627, 3628
9
+ ];
10
+ super(FilterKey.AREA, areaIdsWithSearchVolume.map((id) => id.toString()));
11
+ }
12
+ getName() {
13
+ return 'SearchVolumeAreasDisciplineRule';
14
+ }
15
+ getDescription() {
16
+ return 'Indexable if area has search volume';
17
+ }
18
+ }
@@ -0,0 +1,6 @@
1
+ import { BaseSearchVolumeOrganisationsRule } from './BaseSearchVolumeOrganisationsRule';
2
+ export declare class SearchVolumeCountriesAttendanceRule extends BaseSearchVolumeOrganisationsRule {
3
+ constructor();
4
+ getName(): string;
5
+ getDescription(): string;
6
+ }
@@ -0,0 +1,17 @@
1
+ import { FilterKey } from '@studyportals/search-filters';
2
+ import { BaseSearchVolumeOrganisationsRule } from './BaseSearchVolumeOrganisationsRule';
3
+ export class SearchVolumeCountriesAttendanceRule extends BaseSearchVolumeOrganisationsRule {
4
+ constructor() {
5
+ const countryIdsWithSearchVolume = [
6
+ 108, 30, 202, 56, 106, 24, 10, 14, 15, 69, 71, 76, 82, 151, 105, 161, 167, 112, 113, 170, 129, 131, 132, 191, 9, 11, 20, 22, 27, 28,
7
+ 121, 185, 117, 197, 212
8
+ ];
9
+ super(FilterKey.COUNTRY, countryIdsWithSearchVolume.map((id) => id.toString()));
10
+ }
11
+ getName() {
12
+ return 'SearchVolumeCountriesAttendanceRule';
13
+ }
14
+ getDescription() {
15
+ return 'Indexable if country has search volume';
16
+ }
17
+ }
@@ -0,0 +1,9 @@
1
+ import { ISeoSortingState } from '../../organisations/ISeoSortingState';
2
+ import { PortalType } from '@studyportals/domain-client';
3
+ import { IOrganisationSearchApplicationState } from '../IOrganisationSearchApplicationState';
4
+ import { ISearchDependencies } from '../../common/ISearchDependencies';
5
+ export interface IOrganisationSearchDependencies extends ISearchDependencies {
6
+ portalType: PortalType;
7
+ sortingState: ISeoSortingState;
8
+ applicationState: IOrganisationSearchApplicationState;
9
+ }
@@ -0,0 +1,3 @@
1
+ import { IOrganisationSearchDependencies } from './IOrganisationSearchDependencies';
2
+ import { IOrganisationsSitemapDependencies } from './IOrganisationsSitemapDependencies';
3
+ export type IOrganisationsSeoDependencies = IOrganisationSearchDependencies | IOrganisationsSitemapDependencies;
@@ -0,0 +1,9 @@
1
+ import { ISitemapDependencies } from '../../common/ISitemapDependencies';
2
+ import { IRankingApiClient } from '../../sitemap-generator/IRankingApiClient';
3
+ import { PortalType } from '@studyportals/domain-client';
4
+ import { IOrganisationsClient } from '../../sitemap-generator/IOrganisationsClient';
5
+ export interface IOrganisationsSitemapDependencies extends ISitemapDependencies {
6
+ organisationsClient: IOrganisationsClient;
7
+ portalType: PortalType;
8
+ rankingApiClient: IRankingApiClient;
9
+ }
@@ -0,0 +1,6 @@
1
+ export declare const types: {
2
+ SeoInfoBase: symbol;
3
+ SeoFilterState: symbol;
4
+ SeoApplicationState: symbol;
5
+ SeoSortingState: symbol;
6
+ };
@@ -0,0 +1,6 @@
1
+ export const types = {
2
+ SeoInfoBase: Symbol.for('ISeoInfoBase'),
3
+ SeoFilterState: Symbol.for('ISeoFilterState'),
4
+ SeoApplicationState: Symbol.for('IOrganisationSearchApplicationState'),
5
+ SeoSortingState: Symbol.for('ISeoSortingState')
6
+ };
@@ -0,0 +1,12 @@
1
+ import { IAreaFragment } from './fragments/IAreaFragment';
2
+ import { IPresenter } from '../common';
3
+ import { FilterKey } from '@studyportals/search-filters';
4
+ export declare class AreaPresenter implements IPresenter {
5
+ readonly filterKey: FilterKey;
6
+ private static instance;
7
+ private readonly fragments;
8
+ private constructor();
9
+ static getInstance(): AreaPresenter;
10
+ private generatePaths;
11
+ getFragments(): IAreaFragment[];
12
+ }
@@ -0,0 +1,35 @@
1
+ import { areasAll } from '@studyportals/static-domain-data/areas/areas';
2
+ import { areaGetPath } from '@studyportals/static-domain-data/areas/area-get-path';
3
+ import { FilterKey } from '@studyportals/search-filters';
4
+ export class AreaPresenter {
5
+ filterKey = FilterKey.AREA;
6
+ static instance;
7
+ fragments;
8
+ constructor() {
9
+ this.fragments = this.generatePaths();
10
+ }
11
+ static getInstance() {
12
+ if (!AreaPresenter.instance) {
13
+ AreaPresenter.instance = new AreaPresenter();
14
+ }
15
+ return AreaPresenter.instance;
16
+ }
17
+ generatePaths() {
18
+ const areas = [];
19
+ areasAll.forEach((area) => {
20
+ const path = areaGetPath(area.id);
21
+ if (path === null) {
22
+ return;
23
+ }
24
+ areas.push({
25
+ id: area.id,
26
+ path,
27
+ countryId: area.countryId
28
+ });
29
+ });
30
+ return areas;
31
+ }
32
+ getFragments() {
33
+ return this.fragments;
34
+ }
35
+ }
@@ -0,0 +1,11 @@
1
+ import { IPresenter } from '../common';
2
+ import { IFragment } from './fragments/IFragment';
3
+ import { FilterKey } from '@studyportals/search-filters';
4
+ export declare class AttendancePresenter implements IPresenter {
5
+ readonly filterKey: FilterKey;
6
+ private static instance;
7
+ private readonly fragments;
8
+ private constructor();
9
+ static getInstance(): AttendancePresenter;
10
+ getFragments(): IFragment[];
11
+ }
@@ -0,0 +1,23 @@
1
+ import { FilterKey } from '@studyportals/search-filters';
2
+ export class AttendancePresenter {
3
+ filterKey = FilterKey.DELIVERY_METHOD;
4
+ static instance;
5
+ fragments;
6
+ constructor() {
7
+ this.fragments = [
8
+ {
9
+ id: 'online',
10
+ path: 'online'
11
+ }
12
+ ];
13
+ }
14
+ static getInstance() {
15
+ if (!AttendancePresenter.instance) {
16
+ AttendancePresenter.instance = new AttendancePresenter();
17
+ }
18
+ return AttendancePresenter.instance;
19
+ }
20
+ getFragments() {
21
+ return this.fragments;
22
+ }
23
+ }
@@ -0,0 +1,12 @@
1
+ import { IFragment } from './fragments/IFragment';
2
+ import { IPresenter } from '../common';
3
+ import { FilterKey } from '@studyportals/search-filters';
4
+ export declare class ContinentPresenter implements IPresenter {
5
+ readonly filterKey: FilterKey;
6
+ private static instance;
7
+ private readonly fragments;
8
+ private constructor();
9
+ static getInstance(): ContinentPresenter;
10
+ private generatePaths;
11
+ getFragments(): IFragment[];
12
+ }
@@ -0,0 +1,33 @@
1
+ import { continentsAll } from '@studyportals/static-domain-data/continents/continents';
2
+ import { continentGetPath } from '@studyportals/static-domain-data/continents/continent-get-path';
3
+ import { FilterKey } from '@studyportals/search-filters';
4
+ export class ContinentPresenter {
5
+ filterKey = FilterKey.CONTINENT;
6
+ static instance;
7
+ fragments;
8
+ constructor() {
9
+ this.fragments = this.generatePaths();
10
+ }
11
+ static getInstance() {
12
+ if (!ContinentPresenter.instance) {
13
+ ContinentPresenter.instance = new ContinentPresenter();
14
+ }
15
+ return ContinentPresenter.instance;
16
+ }
17
+ generatePaths() {
18
+ const continents = [];
19
+ for (const continent of continentsAll) {
20
+ const path = continentGetPath(continent.id);
21
+ if (path) {
22
+ continents.push({
23
+ id: continent.id,
24
+ path
25
+ });
26
+ }
27
+ }
28
+ return continents;
29
+ }
30
+ getFragments() {
31
+ return this.fragments;
32
+ }
33
+ }
@@ -0,0 +1,12 @@
1
+ import { ICountryFragment } from './fragments/ICountryFragment';
2
+ import { IPresenter } from '../common';
3
+ import { FilterKey } from '@studyportals/search-filters';
4
+ export declare class CountryPresenter implements IPresenter {
5
+ readonly filterKey: FilterKey;
6
+ private static instance;
7
+ private readonly fragments;
8
+ private constructor();
9
+ static getInstance(): CountryPresenter;
10
+ private generatePaths;
11
+ getFragments(): ICountryFragment[];
12
+ }
@@ -0,0 +1,38 @@
1
+ import { countriesExtendedAll } from '@studyportals/static-domain-data/countries/countries-extended';
2
+ import { countryGetIsoCodePath } from '@studyportals/static-domain-data/countries/country-get-iso-path';
3
+ import { FilterKey } from '@studyportals/search-filters';
4
+ export class CountryPresenter {
5
+ filterKey = FilterKey.COUNTRY;
6
+ static instance;
7
+ fragments;
8
+ constructor() {
9
+ this.fragments = this.generatePaths();
10
+ }
11
+ static getInstance() {
12
+ if (!CountryPresenter.instance) {
13
+ CountryPresenter.instance = new CountryPresenter();
14
+ }
15
+ return CountryPresenter.instance;
16
+ }
17
+ generatePaths() {
18
+ const countries = [];
19
+ countriesExtendedAll.forEach((country) => {
20
+ if (!country.iso) {
21
+ return;
22
+ }
23
+ const path = countryGetIsoCodePath(country.iso);
24
+ if (path === null) {
25
+ return;
26
+ }
27
+ countries.push({
28
+ id: country.id,
29
+ iso: country.iso,
30
+ path
31
+ });
32
+ });
33
+ return countries;
34
+ }
35
+ getFragments() {
36
+ return this.fragments;
37
+ }
38
+ }
@@ -0,0 +1,12 @@
1
+ import { IPresenter } from '../common';
2
+ import { IFragment } from './fragments/IFragment';
3
+ import { FilterKey } from '@studyportals/search-filters';
4
+ export declare class DegreePresenter implements IPresenter {
5
+ readonly filterKey: FilterKey;
6
+ private static instance;
7
+ private readonly fragments;
8
+ private constructor();
9
+ static getInstance(): DegreePresenter;
10
+ getFragments(): IFragment[];
11
+ private formatDegreePath;
12
+ }
@@ -0,0 +1,50 @@
1
+ import { DegreeTypeFilterOptionValue, FilterKey } from '@studyportals/search-filters';
2
+ export class DegreePresenter {
3
+ filterKey = FilterKey.DEGREE_TYPE;
4
+ static instance;
5
+ fragments;
6
+ constructor() {
7
+ this.fragments = Object.values(DegreeTypeFilterOptionValue).map((degree) => {
8
+ return {
9
+ id: degree,
10
+ path: this.formatDegreePath(degree)
11
+ };
12
+ });
13
+ }
14
+ static getInstance() {
15
+ if (!DegreePresenter.instance) {
16
+ DegreePresenter.instance = new DegreePresenter();
17
+ }
18
+ return DegreePresenter.instance;
19
+ }
20
+ getFragments() {
21
+ return this.fragments;
22
+ }
23
+ formatDegreePath(degree) {
24
+ const formattedDegree = degree.toLowerCase().replace(/_/g, '-');
25
+ const pathById = new Map([
26
+ ['phd', 'ph-d'],
27
+ ['dba', 'dba'],
28
+ ['doct', 'doctorate'],
29
+ ['msc', 'msc'],
30
+ ['ma', 'ma'],
31
+ ['mba', 'mba'],
32
+ ['llm', 'llm'],
33
+ ['mphil', 'mphil'],
34
+ ['med', 'med'],
35
+ ['meng', 'meng'],
36
+ ['postgraddip', 'postgraduate-diploma'],
37
+ ['postgradcert', 'postgraduate-certificate'],
38
+ ['premaster', 'pre-master'],
39
+ ['bsc', 'bsc'],
40
+ ['ba', 'ba'],
41
+ ['bba', 'bba'],
42
+ ['ad', 'associate-degree'],
43
+ ['gcertificate', 'graduate-certificate'],
44
+ ['gdiploma', 'graduate-diploma'],
45
+ ['prebachelor', 'prebachelor'],
46
+ ['certificate', 'certificate']
47
+ ]);
48
+ return pathById.get(degree) || formattedDegree;
49
+ }
50
+ }
@@ -0,0 +1,12 @@
1
+ import { IFragment } from './fragments/IFragment';
2
+ import { IPresenter } from '../common';
3
+ import { FilterKey } from '@studyportals/search-filters';
4
+ export declare class DisciplinePresenter implements IPresenter {
5
+ readonly filterKey: FilterKey;
6
+ private static instance;
7
+ private readonly fragments;
8
+ private constructor();
9
+ static getInstance(): DisciplinePresenter;
10
+ private generatePaths;
11
+ getFragments(): IFragment[];
12
+ }
@@ -0,0 +1,33 @@
1
+ import { disciplinesAll } from '@studyportals/static-domain-data/disciplines/disciplines';
2
+ import { subdisciplinesAll } from '@studyportals/static-domain-data/disciplines/subdisciplines';
3
+ import { disciplineGetVirtualPath } from '@studyportals/static-domain-data/disciplines/discipline-get-virtual-path';
4
+ import { FilterKey } from '@studyportals/search-filters';
5
+ export class DisciplinePresenter {
6
+ filterKey = FilterKey.DISCIPLINES;
7
+ static instance;
8
+ fragments;
9
+ constructor() {
10
+ this.fragments = this.generatePaths();
11
+ }
12
+ static getInstance() {
13
+ if (!DisciplinePresenter.instance) {
14
+ DisciplinePresenter.instance = new DisciplinePresenter();
15
+ }
16
+ return DisciplinePresenter.instance;
17
+ }
18
+ generatePaths() {
19
+ const disciplines = [];
20
+ const allDisciplines = [...disciplinesAll, ...subdisciplinesAll];
21
+ allDisciplines.forEach((discipline) => {
22
+ const path = disciplineGetVirtualPath(discipline.id);
23
+ if (path === null) {
24
+ return;
25
+ }
26
+ disciplines.push({ id: discipline.id, path });
27
+ });
28
+ return disciplines;
29
+ }
30
+ getFragments() {
31
+ return this.fragments;
32
+ }
33
+ }