@studyportals/fawkes 8.7.2 → 9.0.1-0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/README.md +176 -176
  2. package/dist/sitemap-generator-seo/index.d.ts +1 -1
  3. package/dist/src/common/FilterKeyToFilterTypeMap.d.ts +2 -0
  4. package/dist/src/common/FilterKeyToFilterTypeMap.js +14 -0
  5. package/dist/src/common/FilterTypeMap.d.ts +2 -0
  6. package/dist/src/common/FilterTypeMap.js +1 -0
  7. package/dist/src/organisations/SearchIndexabilityManager.js +1 -2
  8. package/dist/src/organisations/policies/RankedOrganisationsSeoIndexabilityPolicy.js +1 -1
  9. package/dist/src/organisations/policies/index.d.ts +0 -1
  10. package/dist/src/organisations/policies/index.js +0 -1
  11. package/dist/src/organisations/policies/our-picks/AreaAttendance.d.ts +1 -1
  12. package/dist/src/organisations/policies/our-picks/AreaAttendance.js +16 -14
  13. package/dist/src/organisations/policies/our-picks/CountryAttendance.js +15 -13
  14. package/dist/src/organisations/policies/ranked/RankedArea.js +1 -1
  15. package/dist/src/organisations/policies/ranked/RankedAreaDiscipline.d.ts +1 -0
  16. package/dist/src/organisations/policies/ranked/RankedAreaDiscipline.js +1 -0
  17. package/dist/src/organisations/policies/ranked/RankedAttendance.js +3 -1
  18. package/dist/src/organisations/policies/ranked/RankedAttendanceDiscipline.js +2 -1
  19. package/dist/src/organisations/policies/ranked/RankedContinent.js +3 -1
  20. package/dist/src/organisations/policies/ranked/RankedContinentAttendance.js +15 -13
  21. package/dist/src/organisations/policies/ranked/RankedCountry.js +3 -1
  22. package/dist/src/organisations/policies/ranked/RankedCountryAttendance.js +1 -0
  23. package/dist/src/organisations/policies/ranked/RankedCountryDiscipline.js +30 -14
  24. package/dist/src/organisations/policies/ranked/RankedDiscipline.js +14 -8
  25. package/dist/src/organisations/policies/ranked/RankedUnfiltered.js +10 -4
  26. package/dist/src/organisations/rules/MinimumAmountOfRankedResultsRule.d.ts +3 -4
  27. package/dist/src/organisations/rules/MinimumAmountOfRankedResultsRule.js +12 -8
  28. package/dist/src/organisations/types/IOrganisationsSitemapDependencies.d.ts +0 -2
  29. package/dist/src/programmes/policies/CountryAttendanceDegree.js +1 -1
  30. package/dist/src/programmes/policies/CountryDurationDegree.js +1 -1
  31. package/dist/src/programmes/policies/CountryEducationalForm.js +1 -1
  32. package/dist/src/programmes/policies/DegreeAttendanceTuitionFee.d.ts +1 -1
  33. package/dist/src/programmes/policies/DegreeAttendanceTuitionFee.js +6 -6
  34. package/dist/src/programmes/policies/DegreeContinentTuitionFee.d.ts +1 -1
  35. package/dist/src/programmes/policies/DegreeContinentTuitionFee.js +6 -6
  36. package/dist/src/programmes/policies/DegreeFormatTuitionFee.js +5 -5
  37. package/dist/src/programmes/policies/DisciplineCountryEducationalForm.js +1 -1
  38. package/dist/src/programmes/policies/DisciplineEducationalForm.js +1 -1
  39. package/dist/src/scholarships/SearchIndexabilityManager.d.ts +2 -1
  40. package/dist/src/scholarships/SearchIndexabilityManager.js +3 -2
  41. package/dist/src/scholarships/policies/Area.d.ts +4 -5
  42. package/dist/src/scholarships/policies/Area.js +14 -7
  43. package/dist/src/scholarships/policies/DisciplineCountry.d.ts +4 -4
  44. package/dist/src/scholarships/policies/DisciplineCountry.js +15 -6
  45. package/dist/src/scholarships/policies/ScholarshipSeoIndexabilityPolicy.d.ts +2 -0
  46. package/dist/src/scholarships/policies/ScholarshipSeoIndexabilityPolicy.js +4 -0
  47. package/dist/src/scholarships/policies/UniversityCountry.d.ts +5 -3
  48. package/dist/src/scholarships/policies/UniversityCountry.js +17 -5
  49. package/dist/src/scholarships/rules/NotOnPortalsRule.d.ts +12 -0
  50. package/dist/src/scholarships/rules/NotOnPortalsRule.js +24 -0
  51. package/dist/src/scholarships/rules/OnlyCountriesDisciplineCountryRule.d.ts +13 -0
  52. package/dist/src/scholarships/rules/OnlyCountriesDisciplineCountryRule.js +40 -0
  53. package/dist/src/scholarships/types/IScholarshipSearchDependencies.d.ts +5 -0
  54. package/dist/src/scholarships/types/IScholarshipSearchDependencies.js +1 -0
  55. package/dist/src/scholarships/types/IScholarshipSeoDependencies.d.ts +2 -2
  56. package/dist/src/scholarships/types/IScholarshipSitemapDependencies.d.ts +2 -0
  57. package/dist/src/sitemap-generator/ISearchApiClient.d.ts +1 -0
  58. package/dist/src/sitemap-generator/OrganisationsSitemapUrlGeneratorManager.d.ts +1 -2
  59. package/dist/src/sitemap-generator/OrganisationsSitemapUrlGeneratorManager.js +2 -4
  60. package/dist/src/sitemap-generator/ScholarshipsSitemapUrlGeneratorManager.d.ts +2 -1
  61. package/dist/src/sitemap-generator/ScholarshipsSitemapUrlGeneratorManager.js +3 -2
  62. package/package.json +106 -105
@@ -0,0 +1,13 @@
1
+ import { IRule } from "../../common/IRule";
2
+ import { ISearchDependencies } from "../../common/ISearchDependencies";
3
+ import { FilterKeyValuesMap } from "../../../sitemap-generator-seo";
4
+ export declare class OnlyCountriesDisciplineCountryRule implements IRule {
5
+ private readonly countryFilterKey;
6
+ private readonly allowedCountryIsos;
7
+ private allowedCountryIds?;
8
+ getName(): string;
9
+ forSearch(dependencies: ISearchDependencies): Promise<boolean>;
10
+ forSitemapGenerator(filterKeyValues: FilterKeyValuesMap): Promise<boolean>;
11
+ private getAllowedCountryIds;
12
+ getDescription(): string;
13
+ }
@@ -0,0 +1,40 @@
1
+ import { FilterKey } from "@studyportals/search-filters/server-side";
2
+ import { CountryPresenter } from "../../presenters/CountryPresenter";
3
+ export class OnlyCountriesDisciplineCountryRule {
4
+ countryFilterKey = FilterKey.COUNTRY;
5
+ allowedCountryIsos = ['AU', 'CA', 'CN', 'FR', 'DE', 'IN', 'IE', 'IT', 'JP', 'MY', 'NL', 'NZ', 'SG', 'KR', 'CH', 'GB', 'US'];
6
+ allowedCountryIds;
7
+ getName() {
8
+ return 'OnlyCountriesDisciplineCountryRule';
9
+ }
10
+ forSearch(dependencies) {
11
+ const selectedCountry = dependencies.seoInfoBase.getFilterOptionValueBy(this.countryFilterKey, dependencies.filterState);
12
+ if (!selectedCountry) {
13
+ return Promise.resolve(false);
14
+ }
15
+ return Promise.resolve(this.getAllowedCountryIds().has(selectedCountry));
16
+ }
17
+ forSitemapGenerator(filterKeyValues) {
18
+ const selectedCountries = filterKeyValues.get(FilterKey.COUNTRY);
19
+ if (!selectedCountries || selectedCountries.length !== 1) {
20
+ return Promise.resolve(false);
21
+ }
22
+ const selectedCountry = selectedCountries[0];
23
+ if (!selectedCountry) {
24
+ return Promise.resolve(false);
25
+ }
26
+ return Promise.resolve(this.getAllowedCountryIds().has(selectedCountry));
27
+ }
28
+ getAllowedCountryIds() {
29
+ if (!this.allowedCountryIds) {
30
+ this.allowedCountryIds = new Set(CountryPresenter.getInstance()
31
+ .getFragments()
32
+ .filter((country) => this.allowedCountryIsos.includes(country.iso))
33
+ .map((country) => country.id));
34
+ }
35
+ return this.allowedCountryIds;
36
+ }
37
+ getDescription() {
38
+ return 'Country is one of the allowed countries for discipline and country pages';
39
+ }
40
+ }
@@ -0,0 +1,5 @@
1
+ import { ISearchDependencies } from '../../common/ISearchDependencies';
2
+ import { PortalType } from '@studyportals/domain-client';
3
+ export interface IScholarshipSearchDependencies extends ISearchDependencies {
4
+ portalType?: PortalType;
5
+ }
@@ -1,3 +1,3 @@
1
- import { ISearchDependencies } from '../../common/ISearchDependencies';
1
+ import { IScholarshipSearchDependencies } from './IScholarshipSearchDependencies';
2
2
  import { IScholarshipSitemapDependencies } from './IScholarshipSitemapDependencies';
3
- export type IScholarshipSeoDependencies = ISearchDependencies | IScholarshipSitemapDependencies;
3
+ export type IScholarshipSeoDependencies = IScholarshipSearchDependencies | IScholarshipSitemapDependencies;
@@ -1,5 +1,7 @@
1
1
  import { ISitemapDependencies } from '../../common/ISitemapDependencies';
2
2
  import { IOrganisationsClient } from '../../sitemap-generator/IOrganisationsClient';
3
+ import { PortalType } from '@studyportals/domain-client';
3
4
  export interface IScholarshipSitemapDependencies extends ISitemapDependencies {
4
5
  organisationsClient: IOrganisationsClient;
6
+ portalType?: PortalType;
5
7
  }
@@ -11,4 +11,5 @@ export interface ISearchApiClient {
11
11
  }[]>;
12
12
  getProgrammeCount?(filterKeyValues: FilterKeyValuesMap): Promise<number>;
13
13
  getCount(filterKeyValues: FilterKeyValuesMap): Promise<number>;
14
+ getCountWithRankings?(filterKeyValues: FilterKeyValuesMap): Promise<number>;
14
15
  }
@@ -3,12 +3,11 @@ import { IOrganisationsClient } from '../sitemap-generator/IOrganisationsClient'
3
3
  import { ISearchApiClient } from '../sitemap-generator/ISearchApiClient';
4
4
  import { BaseSitemapUrlGeneratorManager } from './BaseSitemapUrlGeneratorManager';
5
5
  import { PortalType } from '@studyportals/domain-client';
6
- import { IRankingApiClient } from './IRankingApiClient';
7
6
  import { FilterKey } from '@studyportals/search-filters/server-side';
8
7
  import { IPresenter } from '../common';
9
8
  export declare class OrganisationsSitemapUrlGeneratorManager extends BaseSitemapUrlGeneratorManager {
10
9
  readonly portalType: PortalType;
11
10
  readonly policies: ISitemapUrlGenerator[];
12
11
  readonly presenters: Map<FilterKey, IPresenter>;
13
- constructor(portalType: PortalType, searchApiClient: ISearchApiClient, organisationsClient: IOrganisationsClient, rankingApiClient: IRankingApiClient);
12
+ constructor(portalType: PortalType, searchApiClient: ISearchApiClient, organisationsClient: IOrganisationsClient);
14
13
  }
@@ -1,6 +1,6 @@
1
1
  import { DependencyTypes } from '../enums/DependencyTypes';
2
2
  import { BaseSitemapUrlGeneratorManager } from './BaseSitemapUrlGeneratorManager';
3
- import { Area, AreaAttendance, Attendance, Continent, Country, CountryCity, CountryAttendance, RankedArea, RankedAreaDiscipline, RankedAttendance, RankedAttendanceDiscipline, RankedContinent, RankedContinentAttendance, RankedCountry, RankedCountryAttendance, RankedCountryDiscipline, RankedDiscipline, RankedUnfiltered, Unfiltered } from '../organisations/policies';
3
+ import { Area, AreaAttendance, Attendance, Continent, Country, CountryCity, CountryAttendance, RankedArea, RankedAttendance, RankedAttendanceDiscipline, RankedContinent, RankedContinentAttendance, RankedCountry, RankedCountryAttendance, RankedCountryDiscipline, RankedDiscipline, RankedUnfiltered, Unfiltered } from '../organisations/policies';
4
4
  import { AreaPresenter } from '../presenters/AreaPresenter';
5
5
  import { AttendancePresenter } from '../presenters/AttendancePresenter';
6
6
  import { ContinentPresenter } from '../presenters/ContinentPresenter';
@@ -12,7 +12,7 @@ export class OrganisationsSitemapUrlGeneratorManager extends BaseSitemapUrlGener
12
12
  portalType;
13
13
  policies;
14
14
  presenters = new Map();
15
- constructor(portalType, searchApiClient, organisationsClient, rankingApiClient) {
15
+ constructor(portalType, searchApiClient, organisationsClient) {
16
16
  super();
17
17
  this.portalType = portalType;
18
18
  const dependencies = {
@@ -20,7 +20,6 @@ export class OrganisationsSitemapUrlGeneratorManager extends BaseSitemapUrlGener
20
20
  portalType,
21
21
  searchApiClient,
22
22
  organisationsClient,
23
- rankingApiClient
24
23
  };
25
24
  this.policies = [
26
25
  new CountryCity(dependencies),
@@ -33,7 +32,6 @@ export class OrganisationsSitemapUrlGeneratorManager extends BaseSitemapUrlGener
33
32
  new CountryAttendance(dependencies),
34
33
  new Unfiltered(dependencies),
35
34
  new RankedArea(dependencies),
36
- new RankedAreaDiscipline(dependencies),
37
35
  new RankedAttendance(dependencies),
38
36
  new RankedAttendanceDiscipline(dependencies),
39
37
  new RankedContinent(dependencies),
@@ -1,9 +1,10 @@
1
1
  import { ISitemapUrlGenerator } from '../common/ISitemapUrlGenerator';
2
2
  import { IOrganisationsClient } from '../sitemap-generator/IOrganisationsClient';
3
3
  import { ISearchApiClient } from '../sitemap-generator/ISearchApiClient';
4
+ import { PortalType } from '@studyportals/domain-client';
4
5
  import { BaseSitemapUrlGeneratorManager } from './BaseSitemapUrlGeneratorManager';
5
6
  export declare class ScholarshipsSitemapUrlGeneratorManager extends BaseSitemapUrlGeneratorManager {
6
7
  readonly policies: ISitemapUrlGenerator[];
7
8
  readonly presenters: Map<any, any>;
8
- constructor(searchApiClient: ISearchApiClient, organisationsClient: IOrganisationsClient);
9
+ constructor(searchApiClient: ISearchApiClient, organisationsClient: IOrganisationsClient, portalType?: PortalType);
9
10
  }
@@ -9,12 +9,13 @@ import { BaseSitemapUrlGeneratorManager } from './BaseSitemapUrlGeneratorManager
9
9
  export class ScholarshipsSitemapUrlGeneratorManager extends BaseSitemapUrlGeneratorManager {
10
10
  policies;
11
11
  presenters = new Map();
12
- constructor(searchApiClient, organisationsClient) {
12
+ constructor(searchApiClient, organisationsClient, portalType) {
13
13
  super();
14
14
  const dependencies = {
15
15
  dependencyType: DependencyTypes.SITEMAP_GENERATOR,
16
16
  searchApiClient,
17
- organisationsClient
17
+ organisationsClient,
18
+ portalType
18
19
  };
19
20
  this.policies = [
20
21
  new Area(dependencies),
package/package.json CHANGED
@@ -1,105 +1,106 @@
1
- {
2
- "name": "@studyportals/fawkes",
3
- "version": "8.7.2",
4
- "description": "A package to centralize SEO related logic for SBLP and Sitemap Generator.",
5
- "files": [
6
- "./dist"
7
- ],
8
- "scripts": {
9
- "prepush": "npm run test",
10
- "precommit": "npm run lint",
11
- "compile": "npx tsc && tsc-alias && rm -r ./dist/tests",
12
- "build": "npm run clean && npm run compile",
13
- "clean": "rimraf \"!(node_modules)/**/dist\"",
14
- "prepare-deployment": "npm run test && npm run build",
15
- "publish-major": "npm run prepare-deployment && npm version major && npm publish",
16
- "publish-beta": "npm run prepare-deployment && npm version prerelease && npm publish --tag beta --access=public",
17
- "publish-patch": "npm run prepare-deployment && npm version patch && npm publish",
18
- "publish-minor": "npm run prepare-deployment && npm version minor && npm publish",
19
- "prepare": "husky install",
20
- "test": "vitest run --coverage",
21
- "test:dev": "vitest --coverage tests/programmes",
22
- "lint": "eslint . --ext .ts",
23
- "lint:fix": "eslint . --ext .ts --fix",
24
- "prettier:fix": "npx prettier --use-tabs --ignore-path .gitignore --write ."
25
- },
26
- "exports": {
27
- "./organisations-search-seo": {
28
- "import": "./dist/organisations-seo/index.js",
29
- "require": "./dist/organisations-seo/index.js",
30
- "types": "./dist/organisations-seo/index.d.ts"
31
- },
32
- "./programmes-search-seo": {
33
- "import": "./dist/programmes-seo/index.js",
34
- "require": "./dist/programmes-seo/index.js",
35
- "types": "./dist/programmes-seo/index.d.ts"
36
- },
37
- "./scholarships-search-seo": {
38
- "import": "./dist/scholarships-seo/index.js",
39
- "require": "./dist/scholarships-seo/index.js",
40
- "types": "./dist/scholarships-seo/index.d.ts"
41
- },
42
- "./sitemap-generator-seo": {
43
- "import": "./dist/sitemap-generator-seo/index.js",
44
- "require": "./dist/sitemap-generator-seo/index.js",
45
- "types": "./dist/sitemap-generator-seo/index.d.ts"
46
- },
47
- "./structured-data-seo": {
48
- "import": "./dist/structured-data-seo/index.js",
49
- "require": "./dist/structured-data-seo/index.js",
50
- "types": "./dist/structured-data-seo/index.d.ts"
51
- }
52
- },
53
- "typesVersions": {
54
- "*": {
55
- "organisations-search-seo": [
56
- "dist/organisations-seo/index.d.ts"
57
- ],
58
- "programmes-search-seo": [
59
- "dist/programmes-seo/index.d.ts"
60
- ],
61
- "scholarships-search-seo": [
62
- "dist/scholarships-seo/index.d.ts"
63
- ],
64
- "sitemap-generator-seo": [
65
- "dist/sitemap-generator-seo/index.d.ts"
66
- ],
67
- "structured-data-seo": [
68
- "dist/structured-data-seo/index.d.ts"
69
- ],
70
- "*": [
71
- "dist/index.d.ts"
72
- ]
73
- }
74
- },
75
- "author": "The Jedi Council",
76
- "license": "ISC",
77
- "devDependencies": {
78
- "@adobe/structured-data-validator": "^1.4.1",
79
- "@studyportals/code-style": "^2.2.1",
80
- "@studyportals/webpack-helper": "^6.0.6",
81
- "@vitest/coverage-istanbul": "^2.1.8",
82
- "husky": "^8.0.3",
83
- "jsdom": "^26.0.0",
84
- "prettier": "^3.5.3",
85
- "schema-dts": "^1.1.5",
86
- "ts-loader": "^9.5.2",
87
- "tsc-alias": "^1.8.11",
88
- "typemoq": "^2.1.0",
89
- "typescript": "^5.7.3",
90
- "vitest": "^2.1.8"
91
- },
92
- "dependencies": {
93
- "@studyportals/domain-client": "^8.2.0",
94
- "@studyportals/ranking-api-interface": "^1.3.12",
95
- "@studyportals/search-filters": "^6.3.1",
96
- "@studyportals/static-domain-data": "^6.1.0"
97
- },
98
- "optionalDependencies": {
99
- "@rollup/rollup-linux-x64-gnu": "4.24.0"
100
- },
101
- "engines": {
102
- "node": ">=18 <=24",
103
- "npm": ">=8 <=11"
104
- }
105
- }
1
+ {
2
+ "name": "@studyportals/fawkes",
3
+ "version": "9.0.1-0",
4
+ "description": "A package to centralize SEO related logic for SBLP and Sitemap Generator.",
5
+ "files": [
6
+ "./dist"
7
+ ],
8
+ "scripts": {
9
+ "prepush": "npm run test",
10
+ "precommit": "npm run lint",
11
+ "compile": "npx tsc && tsc-alias && rm -r ./dist/tests",
12
+ "build": "npm run clean && npm run compile",
13
+ "clean": "rimraf \"!(node_modules)/**/dist\"",
14
+ "prepare-deployment": "npm run test && npm run build",
15
+ "publish-major": "npm run prepare-deployment && npm version major && npm publish",
16
+ "publish-beta": "npm run prepare-deployment && npm version prerelease && npm publish --tag beta --access=public",
17
+ "publish-patch": "npm run prepare-deployment && npm version patch && npm publish",
18
+ "publish-minor": "npm run prepare-deployment && npm version minor && npm publish",
19
+ "prepare": "husky install",
20
+ "test": "vitest run --coverage",
21
+ "test:dev": "vitest --coverage tests/programmes",
22
+ "lint": "eslint . --ext .ts",
23
+ "lint:fix": "eslint . --ext .ts --fix",
24
+ "prettier:fix": "npx prettier --use-tabs --ignore-path .gitignore --write ."
25
+ },
26
+ "exports": {
27
+ "./organisations-search-seo": {
28
+ "import": "./dist/organisations-seo/index.js",
29
+ "require": "./dist/organisations-seo/index.js",
30
+ "types": "./dist/organisations-seo/index.d.ts"
31
+ },
32
+ "./programmes-search-seo": {
33
+ "import": "./dist/programmes-seo/index.js",
34
+ "require": "./dist/programmes-seo/index.js",
35
+ "types": "./dist/programmes-seo/index.d.ts"
36
+ },
37
+ "./scholarships-search-seo": {
38
+ "import": "./dist/scholarships-seo/index.js",
39
+ "require": "./dist/scholarships-seo/index.js",
40
+ "types": "./dist/scholarships-seo/index.d.ts"
41
+ },
42
+ "./sitemap-generator-seo": {
43
+ "import": "./dist/sitemap-generator-seo/index.js",
44
+ "require": "./dist/sitemap-generator-seo/index.js",
45
+ "types": "./dist/sitemap-generator-seo/index.d.ts"
46
+ },
47
+ "./structured-data-seo": {
48
+ "import": "./dist/structured-data-seo/index.js",
49
+ "require": "./dist/structured-data-seo/index.js",
50
+ "types": "./dist/structured-data-seo/index.d.ts"
51
+ }
52
+ },
53
+ "typesVersions": {
54
+ "*": {
55
+ "organisations-search-seo": [
56
+ "dist/organisations-seo/index.d.ts"
57
+ ],
58
+ "programmes-search-seo": [
59
+ "dist/programmes-seo/index.d.ts"
60
+ ],
61
+ "scholarships-search-seo": [
62
+ "dist/scholarships-seo/index.d.ts"
63
+ ],
64
+ "sitemap-generator-seo": [
65
+ "dist/sitemap-generator-seo/index.d.ts"
66
+ ],
67
+ "structured-data-seo": [
68
+ "dist/structured-data-seo/index.d.ts"
69
+ ],
70
+ "*": [
71
+ "dist/index.d.ts"
72
+ ]
73
+ }
74
+ },
75
+ "author": "The Jedi Council",
76
+ "license": "ISC",
77
+ "devDependencies": {
78
+ "@adobe/structured-data-validator": "^1.4.1",
79
+ "@studyportals/code-style": "^2.2.1",
80
+ "@studyportals/webpack-helper": "^6.0.6",
81
+ "@vitest/coverage-istanbul": "^2.1.8",
82
+ "husky": "^8.0.3",
83
+ "jsdom": "^26.0.0",
84
+ "prettier": "^3.5.3",
85
+ "schema-dts": "^1.1.5",
86
+ "ts-loader": "^9.5.2",
87
+ "tsc-alias": "^1.8.11",
88
+ "typemoq": "^2.1.0",
89
+ "typescript": "^5.7.3",
90
+ "vitest": "^2.1.8"
91
+ },
92
+ "dependencies": {
93
+ "@studyportals/domain-client": "^8.1.0",
94
+ "@studyportals/ranking-api-interface": "^2.4.0",
95
+ "@studyportals/search-api-interface": "5.9.3-0",
96
+ "@studyportals/search-filters": "^6.3.1",
97
+ "@studyportals/static-domain-data": "^6.1.0"
98
+ },
99
+ "optionalDependencies": {
100
+ "@rollup/rollup-linux-x64-gnu": "4.24.0"
101
+ },
102
+ "engines": {
103
+ "node": ">=18 <=24",
104
+ "npm": ">=8 <=11"
105
+ }
106
+ }