@studyportals/fawkes 8.7.2-22 → 8.7.2-23

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.
@@ -24,21 +24,20 @@ export class RankedAttendanceDiscipline extends RankedOrganisationsSeoIndexabili
24
24
  async generateUrls() {
25
25
  const attendanceFragments = AttendancePresenter.getInstance().getFragments();
26
26
  const disciplineFragments = DisciplinePresenter.getInstance().getFragments();
27
- // Create array of promises for all combinations to parallelize API calls
28
- const promises = attendanceFragments.flatMap(attendance => disciplineFragments.map(async (discipline) => {
29
- const filterKeyValues = new Map([
30
- [FilterKey.DELIVERY_METHOD, [attendance.id]],
31
- [FilterKey.DISCIPLINES, [discipline.id]],
32
- ]);
33
- const result = await this.checkRulesForSitemap(filterKeyValues);
34
- if (result) {
35
- return this.getPathWithSortingOption(`${attendance.path}/${discipline.path}`);
27
+ const paths = [];
28
+ // Process sequentially to respect API rate limits
29
+ for (const attendance of attendanceFragments) {
30
+ for (const discipline of disciplineFragments) {
31
+ const filterKeyValues = new Map([
32
+ [FilterKey.DELIVERY_METHOD, [attendance.id]],
33
+ [FilterKey.DISCIPLINES, [discipline.id]],
34
+ ]);
35
+ const result = await this.checkRulesForSitemap(filterKeyValues);
36
+ if (result) {
37
+ paths.push(this.getPathWithSortingOption(`${attendance.path}/${discipline.path}`));
38
+ }
36
39
  }
37
- return null;
38
- }));
39
- // Wait for all promises to resolve in parallel
40
- const results = await Promise.all(promises);
41
- // Filter out null values and return paths
42
- return results.filter((path) => path !== null);
40
+ }
41
+ return paths;
43
42
  }
44
43
  }
@@ -21,22 +21,21 @@ export class RankedCountryAttendance extends RankedOrganisationsSeoIndexabilityP
21
21
  async generateUrls() {
22
22
  const countryFragments = CountryPresenter.getInstance().getFragments();
23
23
  const attendanceFragments = AttendancePresenter.getInstance().getFragments();
24
- // Create array of promises for all combinations to parallelize API calls
25
- const promises = countryFragments.flatMap(country => attendanceFragments.map(async (attendance) => {
26
- const filterKeyValues = new Map([
27
- [FilterKey.COUNTRY, [country.id]],
28
- [FilterKey.DELIVERY_METHOD, [attendance.id]]
29
- ]);
30
- const result = await this.checkRulesForSitemap(filterKeyValues);
31
- if (result) {
32
- return this.getPathWithSortingOption(`${attendance.path}/${country.path}`);
24
+ const paths = [];
25
+ // Process sequentially to respect API rate limits
26
+ for (const country of countryFragments) {
27
+ for (const attendance of attendanceFragments) {
28
+ const filterKeyValues = new Map([
29
+ [FilterKey.COUNTRY, [country.id]],
30
+ [FilterKey.DELIVERY_METHOD, [attendance.id]]
31
+ ]);
32
+ const result = await this.checkRulesForSitemap(filterKeyValues);
33
+ if (result) {
34
+ paths.push(this.getPathWithSortingOption(`${attendance.path}/${country.path}`));
35
+ }
33
36
  }
34
- return null;
35
- }));
36
- // Wait for all promises to resolve in parallel
37
- const results = await Promise.all(promises);
38
- // Filter out null values and return paths
39
- return results.filter((path) => path !== null);
37
+ }
38
+ return paths;
40
39
  }
41
40
  get filterCombination() {
42
41
  return FilterCombinations.RANKED_COUNTRY_ATTENDANCE;
@@ -20,22 +20,21 @@ export class RankedCountryDiscipline extends RankedOrganisationsSeoIndexabilityP
20
20
  try {
21
21
  const countryFragments = CountryPresenter.getInstance().getFragments();
22
22
  const disciplineFragments = DisciplinePresenter.getInstance().getFragments();
23
- // Create array of promises for all combinations to parallelize API calls
24
- const promises = countryFragments.flatMap(country => disciplineFragments.map(async (discipline) => {
25
- const filterKeyValues = new Map([
26
- [FilterKey.COUNTRY, [country.id]],
27
- [FilterKey.DISCIPLINES, [discipline.id]]
28
- ]);
29
- const result = await this.checkRulesForSitemap(filterKeyValues);
30
- if (result) {
31
- return this.getPathWithSortingOption(`${country.path}/${discipline.path}`);
23
+ const paths = [];
24
+ // Process sequentially to respect API rate limits
25
+ for (const country of countryFragments) {
26
+ for (const discipline of disciplineFragments) {
27
+ const filterKeyValues = new Map([
28
+ [FilterKey.COUNTRY, [country.id]],
29
+ [FilterKey.DISCIPLINES, [discipline.id]]
30
+ ]);
31
+ const result = await this.checkRulesForSitemap(filterKeyValues);
32
+ if (result) {
33
+ paths.push(this.getPathWithSortingOption(`${country.path}/${discipline.path}`));
34
+ }
32
35
  }
33
- return null;
34
- }));
35
- // Wait for all promises to resolve in parallel
36
- const results = await Promise.all(promises);
37
- // Filter out null values and return paths
38
- return results.filter((path) => path !== null);
36
+ }
37
+ return paths;
39
38
  }
40
39
  catch (error) {
41
40
  console.error('Error generating URLs for RankedCountryDiscipline:', error);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@studyportals/fawkes",
3
- "version": "8.7.2-22",
3
+ "version": "8.7.2-23",
4
4
  "description": "A package to centralize SEO related logic for SBLP and Sitemap Generator.",
5
5
  "files": [
6
6
  "./dist"