@studyportals/domain-client 3.17.1 → 3.18.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.
- package/.eslintignore +3 -0
- package/.eslintrc.js +13 -0
- package/.github/dependabot.yml +17 -0
- package/.github/stale.yml +10 -0
- package/.mocharc.yml +3 -0
- package/.nycrc +15 -0
- package/README.md +117 -0
- package/{index.d.ts → bin/index.d.ts} +73 -73
- package/{index.js → bin/index.js} +53 -53
- package/bin/package.json +55 -0
- package/{src → bin/src}/domain-client.d.ts +14 -14
- package/{src → bin/src}/domain-client.js +60 -60
- package/{src → bin/src}/exceptions/bad-request-exception.d.ts +2 -2
- package/{src → bin/src}/exceptions/bad-request-exception.js +6 -6
- package/{src → bin/src}/exceptions/client-exception.d.ts +2 -2
- package/{src → bin/src}/exceptions/client-exception.js +6 -6
- package/{src → bin/src}/exceptions/internal-server-exception.d.ts +2 -2
- package/{src → bin/src}/exceptions/internal-server-exception.js +6 -6
- package/{src → bin/src}/exceptions/not-found-exception.d.ts +2 -2
- package/{src → bin/src}/exceptions/not-found-exception.js +6 -6
- package/{src → bin/src}/exceptions/property-not-available-exception.d.ts +2 -2
- package/{src → bin/src}/exceptions/property-not-available-exception.js +6 -6
- package/{src → bin/src}/factories/DateFactory.d.ts +5 -5
- package/{src → bin/src}/factories/DateFactory.js +9 -9
- package/{src → bin/src}/factories/InternalLinkFactory.d.ts +9 -9
- package/{src → bin/src}/factories/InternalLinkFactory.js +19 -19
- package/{src → bin/src}/i-api-response.d.ts +6 -6
- package/bin/src/i-api-response.js +3 -0
- package/{src → bin/src}/i-class-factory.d.ts +4 -4
- package/{src/models/bestfit-programme/i-living-cost.js → bin/src/i-class-factory.js} +3 -3
- package/{src → bin/src}/i-model-description.d.ts +7 -7
- package/{src → bin/src}/i-model-description.js +9 -9
- package/{src → bin/src}/model-client.d.ts +16 -16
- package/{src → bin/src}/model-client.js +45 -45
- package/{src → bin/src}/model-factory.d.ts +11 -11
- package/{src → bin/src}/model-factory.js +71 -71
- package/{src → bin/src}/models/bestfit-programme/bestfit-programme-client.d.ts +7 -7
- package/{src → bin/src}/models/bestfit-programme/bestfit-programme-client.js +16 -16
- package/{src → bin/src}/models/bestfit-programme/i-best-fit-programme.d.ts +82 -82
- package/bin/src/models/bestfit-programme/i-best-fit-programme.js +3 -0
- package/{src → bin/src}/models/bestfit-programme/i-city.d.ts +14 -14
- package/{src/models/common → bin/src/models/bestfit-programme}/i-city.js +2 -2
- package/{src → bin/src}/models/bestfit-programme/i-living-cost.d.ts +20 -20
- package/bin/src/models/bestfit-programme/i-living-cost.js +3 -0
- package/{src → bin/src}/models/common/i-city.d.ts +14 -14
- package/{src/models/bestfit-programme → bin/src/models/common}/i-city.js +2 -2
- package/{src → bin/src}/models/common/i-country.d.ts +20 -20
- package/{src/models/programme-card/i-cover.js → bin/src/models/common/i-country.js} +3 -3
- package/{src → bin/src}/models/common/i-english-requirements.d.ts +44 -44
- package/{src/models/bestfit-programme/i-best-fit-programme.js → bin/src/models/common/i-english-requirements.js} +3 -3
- package/{src → bin/src}/models/common/i-g-p-a-requirement.d.ts +20 -20
- package/bin/src/models/common/i-g-p-a-requirement.js +3 -0
- package/{src/models/dotdigital-programme → bin/src/models/common}/i-internal-link.d.ts +28 -28
- package/bin/src/models/common/i-internal-link.js +3 -0
- package/{src/models/programme-card → bin/src/models/common}/i-logo.d.ts +14 -14
- package/{src/models/programme-card → bin/src/models/common}/i-logo.js +2 -2
- package/{src/models/programme-card → bin/src/models/common}/i-tuition-fee.d.ts +50 -50
- package/bin/src/models/common/i-tuition-fee.js +3 -0
- package/{src → bin/src}/models/compare-programme/compare-programme-client.d.ts +7 -7
- package/{src → bin/src}/models/compare-programme/compare-programme-client.js +16 -16
- package/{src → bin/src}/models/compare-programme/i-compare-programme.d.ts +108 -108
- package/bin/src/models/compare-programme/i-compare-programme.js +3 -0
- package/{src → bin/src}/models/dotdigital-organisation/dotdigital-organisation-client.d.ts +7 -7
- package/{src → bin/src}/models/dotdigital-organisation/dotdigital-organisation-client.js +16 -16
- package/{src → bin/src}/models/dotdigital-organisation/i-dot-digital-organisation.d.ts +35 -35
- package/bin/src/models/dotdigital-organisation/i-dot-digital-organisation.js +3 -0
- package/{src → bin/src}/models/dotdigital-organisation/i-review.d.ts +7 -7
- package/bin/src/models/dotdigital-organisation/i-review.js +3 -0
- package/{src → bin/src}/models/dotdigital-programme/dotdigital-programme-client.d.ts +7 -7
- package/{src → bin/src}/models/dotdigital-programme/dotdigital-programme-client.js +16 -16
- package/{src → bin/src}/models/dotdigital-programme/i-dot-digital-programme.d.ts +101 -101
- package/bin/src/models/dotdigital-programme/i-dot-digital-programme.js +3 -0
- package/{src/models/common → bin/src/models/dotdigital-programme}/i-internal-link.d.ts +28 -28
- package/bin/src/models/dotdigital-programme/i-internal-link.js +3 -0
- package/{src → bin/src}/models/programme-card/i-click-tracking-data.d.ts +5 -5
- package/bin/src/models/programme-card/i-click-tracking-data.js +3 -0
- package/{src → bin/src}/models/programme-card/i-cover.d.ts +14 -14
- package/bin/src/models/programme-card/i-cover.js +3 -0
- package/{src → bin/src}/models/programme-card/i-deadline.d.ts +20 -20
- package/{src/models/dotdigital-organisation/i-review.js → bin/src/models/programme-card/i-deadline.js} +3 -3
- package/{src → bin/src}/models/programme-card/i-duration.d.ts +40 -40
- package/bin/src/models/programme-card/i-duration.js +3 -0
- package/{src → bin/src}/models/programme-card/i-internal-link.d.ts +28 -28
- package/bin/src/models/programme-card/i-internal-link.js +3 -0
- package/{src → bin/src}/models/programme-card/i-link.d.ts +22 -22
- package/{src → bin/src}/models/programme-card/i-link.js +2 -2
- package/{src → bin/src}/models/programme-card/i-location.d.ts +12 -12
- package/bin/src/models/programme-card/i-location.js +3 -0
- package/{src/models/common → bin/src/models/programme-card}/i-logo.d.ts +14 -14
- package/{src/models/common → bin/src/models/programme-card}/i-logo.js +2 -2
- package/{src → bin/src}/models/programme-card/i-optional-link.d.ts +23 -23
- package/bin/src/models/programme-card/i-optional-link.js +3 -0
- package/{src → bin/src}/models/programme-card/i-programme-card.d.ts +178 -178
- package/{src/i-api-response.js → bin/src/models/programme-card/i-programme-card.js} +3 -3
- package/{src → bin/src}/models/programme-card/i-start-date.d.ts +33 -33
- package/{src/models/common/i-country.js → bin/src/models/programme-card/i-start-date.js} +3 -3
- package/{src → bin/src}/models/programme-card/i-timing.d.ts +45 -45
- package/bin/src/models/programme-card/i-timing.js +3 -0
- package/{src → bin/src}/models/programme-card/i-tracked-link.d.ts +29 -29
- package/bin/src/models/programme-card/i-tracked-link.js +3 -0
- package/{src → bin/src}/models/programme-card/i-tracking.d.ts +46 -46
- package/bin/src/models/programme-card/i-tracking.js +3 -0
- package/{src/models/common → bin/src/models/programme-card}/i-tuition-fee.d.ts +50 -50
- package/bin/src/models/programme-card/i-tuition-fee.js +3 -0
- package/{src → bin/src}/models/programme-card/programme-card-client.d.ts +7 -7
- package/{src → bin/src}/models/programme-card/programme-card-client.js +16 -16
- package/{src → bin/src}/models/ranking-cards/i-ranking-card.d.ts +63 -63
- package/bin/src/models/ranking-cards/i-ranking-card.js +3 -0
- package/{src → bin/src}/models/ranking-cards/i-ranking-cards.d.ts +15 -15
- package/bin/src/models/ranking-cards/i-ranking-cards.js +3 -0
- package/{src → bin/src}/models/ranking-cards/i-ranking.d.ts +18 -18
- package/bin/src/models/ranking-cards/i-ranking.js +3 -0
- package/{src → bin/src}/models/ranking-cards/public-ranking-cards-client.d.ts +7 -7
- package/{src → bin/src}/models/ranking-cards/public-ranking-cards-client.js +16 -16
- package/{src → bin/src}/models/scholarship-card/i-scholarship-card.d.ts +14 -46
- package/{src/i-class-factory.js → bin/src/models/scholarship-card/i-scholarship-card.js} +3 -3
- package/{src → bin/src}/models/scholarship-card/public-scholarship-card-client.d.ts +7 -7
- package/{src → bin/src}/models/scholarship-card/public-scholarship-card-client.js +16 -16
- package/{src → bin/src}/models/search-country-faq/i-search-country-faq.d.ts +18 -18
- package/bin/src/models/search-country-faq/i-search-country-faq.js +3 -0
- package/{src → bin/src}/models/search-country-faq/public-search-country-faq-client.d.ts +7 -7
- package/{src → bin/src}/models/search-country-faq/public-search-country-faq-client.js +16 -16
- package/{src → bin/src}/models/search-discipline/i-search-discipline.d.ts +26 -26
- package/bin/src/models/search-discipline/i-search-discipline.js +3 -0
- package/{src → bin/src}/models/search-discipline/public-search-discipline-client.d.ts +7 -7
- package/{src → bin/src}/models/search-discipline/public-search-discipline-client.js +16 -16
- package/{src → bin/src}/models/search-projection/i-geo-targeting-configuration.d.ts +38 -38
- package/bin/src/models/search-projection/i-geo-targeting-configuration.js +3 -0
- package/{src → bin/src}/models/search-projection/i-geo-targeting-values.d.ts +30 -30
- package/bin/src/models/search-projection/i-geo-targeting-values.js +3 -0
- package/{src → bin/src}/models/search-projection/i-organisation-values.d.ts +40 -40
- package/bin/src/models/search-projection/i-organisation-values.js +3 -0
- package/{src → bin/src}/models/search-projection/i-premium-values.d.ts +35 -35
- package/bin/src/models/search-projection/i-premium-values.js +3 -0
- package/{src → bin/src}/models/search-projection/i-search-projection.d.ts +180 -180
- package/bin/src/models/search-projection/i-search-projection.js +3 -0
- package/{src → bin/src}/models/search-projection/i-tuition-values.d.ts +50 -50
- package/bin/src/models/search-projection/i-tuition-values.js +3 -0
- package/{src → bin/src}/models/search-projection/search-projection-client.d.ts +7 -7
- package/{src → bin/src}/models/search-projection/search-projection-client.js +16 -16
- package/{src → bin/src}/models/sitemap-articles-info/i-sitemap-article-info.d.ts +14 -14
- package/bin/src/models/sitemap-articles-info/i-sitemap-article-info.js +3 -0
- package/{src → bin/src}/models/sitemap-articles-info/sitemap-articles-info-client.d.ts +7 -7
- package/{src → bin/src}/models/sitemap-articles-info/sitemap-articles-info-client.js +16 -16
- package/{src → bin/src}/models/sitemap-cities-info/i-sitemap-city-info.d.ts +14 -14
- package/bin/src/models/sitemap-cities-info/i-sitemap-city-info.js +3 -0
- package/{src → bin/src}/models/sitemap-cities-info/sitemap-cities-info-client.d.ts +7 -7
- package/{src → bin/src}/models/sitemap-cities-info/sitemap-cities-info-client.js +16 -16
- package/{src → bin/src}/models/sitemap-countries-info/i-sitemap-country-info.d.ts +14 -14
- package/bin/src/models/sitemap-countries-info/i-sitemap-country-info.js +3 -0
- package/{src → bin/src}/models/sitemap-countries-info/sitemap-countries-info-client.d.ts +7 -7
- package/{src → bin/src}/models/sitemap-countries-info/sitemap-countries-info-client.js +16 -16
- package/{src → bin/src}/models/sitemap-country-degree-info/i-degree-info.d.ts +14 -14
- package/bin/src/models/sitemap-country-degree-info/i-degree-info.js +3 -0
- package/{src → bin/src}/models/sitemap-country-degree-info/i-sitemap-country-degree-info.d.ts +11 -11
- package/bin/src/models/sitemap-country-degree-info/i-sitemap-country-degree-info.js +3 -0
- package/{src → bin/src}/models/sitemap-country-degree-info/sitemap-country-degree-info-client.d.ts +7 -7
- package/{src → bin/src}/models/sitemap-country-degree-info/sitemap-country-degree-info-client.js +16 -16
- package/{src → bin/src}/models/sitemap-disciplines-info/i-sitemap-discipline-info.d.ts +14 -14
- package/bin/src/models/sitemap-disciplines-info/i-sitemap-discipline-info.js +3 -0
- package/{src → bin/src}/models/sitemap-disciplines-info/sitemap-disciplines-info-client.d.ts +7 -7
- package/{src → bin/src}/models/sitemap-disciplines-info/sitemap-disciplines-info-client.js +16 -16
- package/{src → bin/src}/models/sitemap-organisations-info/i-sitemap-organisation-info.d.ts +26 -26
- package/bin/src/models/sitemap-organisations-info/i-sitemap-organisation-info.js +3 -0
- package/{src → bin/src}/models/sitemap-organisations-info/sitemap-organisations-info-client.d.ts +7 -7
- package/{src → bin/src}/models/sitemap-organisations-info/sitemap-organisations-info-client.js +16 -16
- package/{src → bin/src}/models/sitemap-programme-info/i-sitemap-programme-info.d.ts +26 -26
- package/bin/src/models/sitemap-programme-info/i-sitemap-programme-info.js +3 -0
- package/{src → bin/src}/models/sitemap-programme-info/sitemap-programme-info-client.d.ts +7 -7
- package/{src → bin/src}/models/sitemap-programme-info/sitemap-programme-info-client.js +16 -16
- package/{src → bin/src}/models/sitemap-rankings-info/i-sitemap-rankings-info.d.ts +14 -14
- package/bin/src/models/sitemap-rankings-info/i-sitemap-rankings-info.js +3 -0
- package/{src → bin/src}/models/sitemap-rankings-info/sitemap-rankings-info-client.d.ts +7 -7
- package/{src → bin/src}/models/sitemap-rankings-info/sitemap-rankings-info-client.js +16 -16
- package/{src → bin/src}/types/portal-map.d.ts +2 -2
- package/bin/src/types/portal-map.js +3 -0
- package/{src → bin/src}/types/portal-type.d.ts +7 -7
- package/{src → bin/src}/types/portal-type.js +11 -11
- package/{src → bin/src}/types.d.ts +4 -4
- package/{src → bin/src}/types.js +2 -2
- package/index.ts +147 -0
- package/package.json +55 -55
- package/src/domain-client.ts +70 -0
- package/src/exceptions/bad-request-exception.ts +2 -0
- package/src/exceptions/client-exception.ts +2 -0
- package/src/exceptions/internal-server-exception.ts +2 -0
- package/src/exceptions/not-found-exception.ts +2 -0
- package/src/exceptions/property-not-available-exception.ts +2 -0
- package/src/factories/DateFactory.ts +8 -0
- package/src/factories/InternalLinkFactory.ts +27 -0
- package/src/i-api-response.ts +7 -0
- package/src/i-class-factory.ts +5 -0
- package/src/i-model-description.ts +13 -0
- package/src/model-client.ts +77 -0
- package/src/model-factory.ts +94 -0
- package/src/models/bestfit-programme/bestfit-programme-client.ts +16 -0
- package/src/models/bestfit-programme/i-best-fit-programme.ts +102 -0
- package/src/models/bestfit-programme/i-city.ts +16 -0
- package/src/models/bestfit-programme/i-living-cost.ts +23 -0
- package/src/models/common/i-city.ts +16 -0
- package/src/models/common/i-country.ts +23 -0
- package/src/models/common/i-english-requirements.ts +56 -0
- package/src/models/common/i-g-p-a-requirement.ts +23 -0
- package/src/models/common/i-internal-link.ts +32 -0
- package/src/models/common/i-logo.ts +16 -0
- package/src/models/common/i-tuition-fee.ts +57 -0
- package/src/models/compare-programme/compare-programme-client.ts +16 -0
- package/src/models/compare-programme/i-compare-programme.ts +126 -0
- package/src/models/dotdigital-organisation/dotdigital-organisation-client.ts +16 -0
- package/src/models/dotdigital-organisation/i-dot-digital-organisation.ts +62 -0
- package/src/models/dotdigital-organisation/i-review.ts +12 -0
- package/src/models/dotdigital-programme/dotdigital-programme-client.ts +16 -0
- package/src/models/dotdigital-programme/i-dot-digital-programme.ts +122 -0
- package/src/models/dotdigital-programme/i-internal-link.ts +32 -0
- package/src/models/programme-card/i-click-tracking-data.ts +8 -0
- package/src/models/programme-card/i-cover.ts +16 -0
- package/src/models/programme-card/i-deadline.ts +23 -0
- package/src/models/programme-card/i-duration.ts +46 -0
- package/src/models/programme-card/i-internal-link.ts +32 -0
- package/src/models/programme-card/i-link.ts +25 -0
- package/src/models/programme-card/i-location.ts +22 -0
- package/src/models/programme-card/i-logo.ts +16 -0
- package/src/models/programme-card/i-optional-link.ts +27 -0
- package/src/models/programme-card/i-programme-card.ts +212 -0
- package/src/models/programme-card/i-start-date.ts +39 -0
- package/src/models/programme-card/i-timing.ts +53 -0
- package/src/models/programme-card/i-tracked-link.ts +34 -0
- package/src/models/programme-card/i-tracking.ts +55 -0
- package/src/models/programme-card/i-tuition-fee.ts +57 -0
- package/src/models/programme-card/programme-card-client.ts +16 -0
- package/src/models/ranking-cards/i-ranking-card.ts +74 -0
- package/src/models/ranking-cards/i-ranking-cards.ts +18 -0
- package/src/models/ranking-cards/i-ranking.ts +22 -0
- package/src/models/ranking-cards/public-ranking-cards-client.ts +16 -0
- package/src/models/scholarship-card/i-scholarship-card.ts +26 -0
- package/src/models/scholarship-card/public-scholarship-card-client.ts +16 -0
- package/src/models/search-country-faq/i-search-country-faq.ts +22 -0
- package/src/models/search-country-faq/public-search-country-faq-client.ts +16 -0
- package/src/models/search-discipline/i-search-discipline.ts +32 -0
- package/src/models/search-discipline/public-search-discipline-client.ts +16 -0
- package/src/models/search-projection/i-geo-targeting-configuration.ts +44 -0
- package/src/models/search-projection/i-geo-targeting-values.ts +38 -0
- package/src/models/search-projection/i-organisation-values.ts +46 -0
- package/src/models/search-projection/i-premium-values.ts +43 -0
- package/src/models/search-projection/i-search-projection.ts +216 -0
- package/src/models/search-projection/i-tuition-values.ts +63 -0
- package/src/models/search-projection/search-projection-client.ts +16 -0
- package/src/models/sitemap-articles-info/i-sitemap-article-info.ts +17 -0
- package/src/models/sitemap-articles-info/sitemap-articles-info-client.ts +16 -0
- package/src/models/sitemap-cities-info/i-sitemap-city-info.ts +17 -0
- package/src/models/sitemap-cities-info/sitemap-cities-info-client.ts +16 -0
- package/src/models/sitemap-countries-info/i-sitemap-country-info.ts +17 -0
- package/src/models/sitemap-countries-info/sitemap-countries-info-client.ts +16 -0
- package/src/models/sitemap-country-degree-info/i-degree-info.ts +17 -0
- package/src/models/sitemap-country-degree-info/i-sitemap-country-degree-info.ts +14 -0
- package/src/models/sitemap-country-degree-info/sitemap-country-degree-info-client.ts +16 -0
- package/src/models/sitemap-disciplines-info/i-sitemap-discipline-info.ts +17 -0
- package/src/models/sitemap-disciplines-info/sitemap-disciplines-info-client.ts +16 -0
- package/src/models/sitemap-organisations-info/i-sitemap-organisation-info.ts +32 -0
- package/src/models/sitemap-organisations-info/sitemap-organisations-info-client.ts +16 -0
- package/src/models/sitemap-programme-info/i-sitemap-programme-info.ts +32 -0
- package/src/models/sitemap-programme-info/sitemap-programme-info-client.ts +16 -0
- package/src/models/sitemap-rankings-info/i-sitemap-rankings-info.ts +17 -0
- package/src/models/sitemap-rankings-info/sitemap-rankings-info-client.ts +16 -0
- package/src/types/portal-map.ts +3 -0
- package/src/types/portal-type.ts +7 -0
- package/src/types.ts +4 -0
- package/tsconfig.json +40 -0
- package/src/models/common/i-english-requirements.js +0 -3
- package/src/models/common/i-g-p-a-requirement.js +0 -3
- package/src/models/common/i-internal-link.js +0 -3
- package/src/models/common/i-tuition-fee.js +0 -3
- package/src/models/compare-programme/i-compare-programme.js +0 -3
- package/src/models/dotdigital-organisation/i-dot-digital-organisation.js +0 -3
- package/src/models/dotdigital-programme/i-dot-digital-programme.js +0 -3
- package/src/models/dotdigital-programme/i-internal-link.js +0 -3
- package/src/models/programme-card/i-click-tracking-data.js +0 -3
- package/src/models/programme-card/i-deadline.js +0 -3
- package/src/models/programme-card/i-duration.js +0 -3
- package/src/models/programme-card/i-internal-link.js +0 -3
- package/src/models/programme-card/i-location.js +0 -3
- package/src/models/programme-card/i-optional-link.js +0 -3
- package/src/models/programme-card/i-programme-card.js +0 -3
- package/src/models/programme-card/i-start-date.js +0 -3
- package/src/models/programme-card/i-timing.js +0 -3
- package/src/models/programme-card/i-tracked-link.js +0 -3
- package/src/models/programme-card/i-tracking.js +0 -3
- package/src/models/programme-card/i-tuition-fee.js +0 -3
- package/src/models/ranking-cards/i-ranking-card.js +0 -3
- package/src/models/ranking-cards/i-ranking-cards.js +0 -3
- package/src/models/ranking-cards/i-ranking.js +0 -3
- package/src/models/scholarship-card/i-scholarship-card.js +0 -3
- package/src/models/search-country-faq/i-search-country-faq.js +0 -3
- package/src/models/search-discipline/i-search-discipline.js +0 -3
- package/src/models/search-projection/i-geo-targeting-configuration.js +0 -3
- package/src/models/search-projection/i-geo-targeting-values.js +0 -3
- package/src/models/search-projection/i-organisation-values.js +0 -3
- package/src/models/search-projection/i-premium-values.js +0 -3
- package/src/models/search-projection/i-search-projection.js +0 -3
- package/src/models/search-projection/i-tuition-values.js +0 -3
- package/src/models/sitemap-articles-info/i-sitemap-article-info.js +0 -3
- package/src/models/sitemap-cities-info/i-sitemap-city-info.js +0 -3
- package/src/models/sitemap-countries-info/i-sitemap-country-info.js +0 -3
- package/src/models/sitemap-country-degree-info/i-degree-info.js +0 -3
- package/src/models/sitemap-country-degree-info/i-sitemap-country-degree-info.js +0 -3
- package/src/models/sitemap-disciplines-info/i-sitemap-discipline-info.js +0 -3
- package/src/models/sitemap-organisations-info/i-sitemap-organisation-info.js +0 -3
- package/src/models/sitemap-programme-info/i-sitemap-programme-info.js +0 -3
- package/src/models/sitemap-rankings-info/i-sitemap-rankings-info.js +0 -3
- package/src/types/portal-map.js +0 -3
- /package/{index.js.map → bin/index.js.map} +0 -0
- /package/{src → bin/src}/domain-client.js.map +0 -0
- /package/{src → bin/src}/exceptions/bad-request-exception.js.map +0 -0
- /package/{src → bin/src}/exceptions/client-exception.js.map +0 -0
- /package/{src → bin/src}/exceptions/internal-server-exception.js.map +0 -0
- /package/{src → bin/src}/exceptions/not-found-exception.js.map +0 -0
- /package/{src → bin/src}/exceptions/property-not-available-exception.js.map +0 -0
- /package/{src → bin/src}/factories/DateFactory.js.map +0 -0
- /package/{src → bin/src}/factories/InternalLinkFactory.js.map +0 -0
- /package/{src → bin/src}/i-api-response.js.map +0 -0
- /package/{src → bin/src}/i-class-factory.js.map +0 -0
- /package/{src → bin/src}/i-model-description.js.map +0 -0
- /package/{src → bin/src}/model-client.js.map +0 -0
- /package/{src → bin/src}/model-factory.js.map +0 -0
- /package/{src → bin/src}/models/bestfit-programme/bestfit-programme-client.js.map +0 -0
- /package/{src → bin/src}/models/bestfit-programme/i-best-fit-programme.js.map +0 -0
- /package/{src → bin/src}/models/bestfit-programme/i-city.js.map +0 -0
- /package/{src → bin/src}/models/bestfit-programme/i-living-cost.js.map +0 -0
- /package/{src → bin/src}/models/common/i-city.js.map +0 -0
- /package/{src → bin/src}/models/common/i-country.js.map +0 -0
- /package/{src → bin/src}/models/common/i-english-requirements.js.map +0 -0
- /package/{src → bin/src}/models/common/i-g-p-a-requirement.js.map +0 -0
- /package/{src → bin/src}/models/common/i-internal-link.js.map +0 -0
- /package/{src → bin/src}/models/common/i-logo.js.map +0 -0
- /package/{src → bin/src}/models/common/i-tuition-fee.js.map +0 -0
- /package/{src → bin/src}/models/compare-programme/compare-programme-client.js.map +0 -0
- /package/{src → bin/src}/models/compare-programme/i-compare-programme.js.map +0 -0
- /package/{src → bin/src}/models/dotdigital-organisation/dotdigital-organisation-client.js.map +0 -0
- /package/{src → bin/src}/models/dotdigital-organisation/i-dot-digital-organisation.js.map +0 -0
- /package/{src → bin/src}/models/dotdigital-organisation/i-review.js.map +0 -0
- /package/{src → bin/src}/models/dotdigital-programme/dotdigital-programme-client.js.map +0 -0
- /package/{src → bin/src}/models/dotdigital-programme/i-dot-digital-programme.js.map +0 -0
- /package/{src → bin/src}/models/dotdigital-programme/i-internal-link.js.map +0 -0
- /package/{src → bin/src}/models/programme-card/i-click-tracking-data.js.map +0 -0
- /package/{src → bin/src}/models/programme-card/i-cover.js.map +0 -0
- /package/{src → bin/src}/models/programme-card/i-deadline.js.map +0 -0
- /package/{src → bin/src}/models/programme-card/i-duration.js.map +0 -0
- /package/{src → bin/src}/models/programme-card/i-internal-link.js.map +0 -0
- /package/{src → bin/src}/models/programme-card/i-link.js.map +0 -0
- /package/{src → bin/src}/models/programme-card/i-location.js.map +0 -0
- /package/{src → bin/src}/models/programme-card/i-logo.js.map +0 -0
- /package/{src → bin/src}/models/programme-card/i-optional-link.js.map +0 -0
- /package/{src → bin/src}/models/programme-card/i-programme-card.js.map +0 -0
- /package/{src → bin/src}/models/programme-card/i-start-date.js.map +0 -0
- /package/{src → bin/src}/models/programme-card/i-timing.js.map +0 -0
- /package/{src → bin/src}/models/programme-card/i-tracked-link.js.map +0 -0
- /package/{src → bin/src}/models/programme-card/i-tracking.js.map +0 -0
- /package/{src → bin/src}/models/programme-card/i-tuition-fee.js.map +0 -0
- /package/{src → bin/src}/models/programme-card/programme-card-client.js.map +0 -0
- /package/{src → bin/src}/models/ranking-cards/i-ranking-card.js.map +0 -0
- /package/{src → bin/src}/models/ranking-cards/i-ranking-cards.js.map +0 -0
- /package/{src → bin/src}/models/ranking-cards/i-ranking.js.map +0 -0
- /package/{src → bin/src}/models/ranking-cards/public-ranking-cards-client.js.map +0 -0
- /package/{src → bin/src}/models/scholarship-card/i-scholarship-card.js.map +0 -0
- /package/{src → bin/src}/models/scholarship-card/public-scholarship-card-client.js.map +0 -0
- /package/{src → bin/src}/models/search-country-faq/i-search-country-faq.js.map +0 -0
- /package/{src → bin/src}/models/search-country-faq/public-search-country-faq-client.js.map +0 -0
- /package/{src → bin/src}/models/search-discipline/i-search-discipline.js.map +0 -0
- /package/{src → bin/src}/models/search-discipline/public-search-discipline-client.js.map +0 -0
- /package/{src → bin/src}/models/search-projection/i-geo-targeting-configuration.js.map +0 -0
- /package/{src → bin/src}/models/search-projection/i-geo-targeting-values.js.map +0 -0
- /package/{src → bin/src}/models/search-projection/i-organisation-values.js.map +0 -0
- /package/{src → bin/src}/models/search-projection/i-premium-values.js.map +0 -0
- /package/{src → bin/src}/models/search-projection/i-search-projection.js.map +0 -0
- /package/{src → bin/src}/models/search-projection/i-tuition-values.js.map +0 -0
- /package/{src → bin/src}/models/search-projection/search-projection-client.js.map +0 -0
- /package/{src → bin/src}/models/sitemap-articles-info/i-sitemap-article-info.js.map +0 -0
- /package/{src → bin/src}/models/sitemap-articles-info/sitemap-articles-info-client.js.map +0 -0
- /package/{src → bin/src}/models/sitemap-cities-info/i-sitemap-city-info.js.map +0 -0
- /package/{src → bin/src}/models/sitemap-cities-info/sitemap-cities-info-client.js.map +0 -0
- /package/{src → bin/src}/models/sitemap-countries-info/i-sitemap-country-info.js.map +0 -0
- /package/{src → bin/src}/models/sitemap-countries-info/sitemap-countries-info-client.js.map +0 -0
- /package/{src → bin/src}/models/sitemap-country-degree-info/i-degree-info.js.map +0 -0
- /package/{src → bin/src}/models/sitemap-country-degree-info/i-sitemap-country-degree-info.js.map +0 -0
- /package/{src → bin/src}/models/sitemap-country-degree-info/sitemap-country-degree-info-client.js.map +0 -0
- /package/{src → bin/src}/models/sitemap-disciplines-info/i-sitemap-discipline-info.js.map +0 -0
- /package/{src → bin/src}/models/sitemap-disciplines-info/sitemap-disciplines-info-client.js.map +0 -0
- /package/{src → bin/src}/models/sitemap-organisations-info/i-sitemap-organisation-info.js.map +0 -0
- /package/{src → bin/src}/models/sitemap-organisations-info/sitemap-organisations-info-client.js.map +0 -0
- /package/{src → bin/src}/models/sitemap-programme-info/i-sitemap-programme-info.js.map +0 -0
- /package/{src → bin/src}/models/sitemap-programme-info/sitemap-programme-info-client.js.map +0 -0
- /package/{src → bin/src}/models/sitemap-rankings-info/i-sitemap-rankings-info.js.map +0 -0
- /package/{src → bin/src}/models/sitemap-rankings-info/sitemap-rankings-info-client.js.map +0 -0
- /package/{src → bin/src}/types/portal-map.js.map +0 -0
- /package/{src → bin/src}/types/portal-type.js.map +0 -0
- /package/{src → bin/src}/types.js.map +0 -0
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.PortalType = void 0;
|
|
4
|
-
var PortalType;
|
|
5
|
-
(function (PortalType) {
|
|
6
|
-
PortalType["MASTER"] = "master";
|
|
7
|
-
PortalType["BACHELOR"] = "bachelor";
|
|
8
|
-
PortalType["PHD"] = "phd";
|
|
9
|
-
PortalType["SHORT"] = "short";
|
|
10
|
-
PortalType["DISTANCE_LEARNING"] = "distance_learning";
|
|
11
|
-
})(PortalType = exports.PortalType || (exports.PortalType = {}));
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PortalType = void 0;
|
|
4
|
+
var PortalType;
|
|
5
|
+
(function (PortalType) {
|
|
6
|
+
PortalType["MASTER"] = "master";
|
|
7
|
+
PortalType["BACHELOR"] = "bachelor";
|
|
8
|
+
PortalType["PHD"] = "phd";
|
|
9
|
+
PortalType["SHORT"] = "short";
|
|
10
|
+
PortalType["DISTANCE_LEARNING"] = "distance_learning";
|
|
11
|
+
})(PortalType = exports.PortalType || (exports.PortalType = {}));
|
|
12
12
|
//# sourceMappingURL=portal-type.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type Model = Record<string, Callable>;
|
|
2
|
-
export type Callable = () => CallableReturnType | CallableReturnType[];
|
|
3
|
-
export type CallableReturnType = AcceptedType | Model;
|
|
4
|
-
export type AcceptedType = string | string[] | number | number[] | boolean | null | Date;
|
|
1
|
+
export type Model = Record<string, Callable>;
|
|
2
|
+
export type Callable = () => CallableReturnType | CallableReturnType[];
|
|
3
|
+
export type CallableReturnType = AcceptedType | Model;
|
|
4
|
+
export type AcceptedType = string | string[] | number | number[] | boolean | null | Date;
|
package/{src → bin/src}/types.js
RENAMED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
//# sourceMappingURL=types.js.map
|
package/index.ts
ADDED
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import { BadRequestException } from "./src/exceptions/bad-request-exception"
|
|
2
|
+
import { ClientException } from "./src/exceptions/client-exception"
|
|
3
|
+
import { InternalServerException } from "./src/exceptions/internal-server-exception"
|
|
4
|
+
import { NotFoundException } from "./src/exceptions/not-found-exception"
|
|
5
|
+
import { PropertyNotAvailableException } from "./src/exceptions/property-not-available-exception"
|
|
6
|
+
import { ICover } from "./src/models/programme-card/i-cover";
|
|
7
|
+
import { ILink } from "./src/models/programme-card/i-link";
|
|
8
|
+
import { IOptionalLink } from "./src/models/programme-card/i-optional-link";
|
|
9
|
+
import { ILocation } from "./src/models/programme-card/i-location";
|
|
10
|
+
import { IClickTrackingData } from "./src/models/programme-card/i-click-tracking-data";
|
|
11
|
+
import { ITracking } from "./src/models/programme-card/i-tracking";
|
|
12
|
+
import { IDuration } from "./src/models/programme-card/i-duration";
|
|
13
|
+
import { IDeadline } from "./src/models/programme-card/i-deadline";
|
|
14
|
+
import { IStartDate } from "./src/models/programme-card/i-start-date";
|
|
15
|
+
import { ITiming } from "./src/models/programme-card/i-timing";
|
|
16
|
+
import { ITrackedLink } from "./src/models/programme-card/i-tracked-link";
|
|
17
|
+
import { IProgrammeCard } from "./src/models/programme-card/i-programme-card";
|
|
18
|
+
import { ProgrammeCardClient } from "./src/models/programme-card/programme-card-client";
|
|
19
|
+
import { ITuitionValues } from "./src/models/search-projection/i-tuition-values";
|
|
20
|
+
import { IPremiumValues } from "./src/models/search-projection/i-premium-values";
|
|
21
|
+
import { IOrganisationValues } from "./src/models/search-projection/i-organisation-values";
|
|
22
|
+
import { IGeoTargetingConfiguration } from "./src/models/search-projection/i-geo-targeting-configuration";
|
|
23
|
+
import { IGeoTargetingValues } from "./src/models/search-projection/i-geo-targeting-values";
|
|
24
|
+
import { ISearchProjection } from "./src/models/search-projection/i-search-projection";
|
|
25
|
+
import { SearchProjectionClient } from "./src/models/search-projection/search-projection-client";
|
|
26
|
+
import { ILivingCost } from "./src/models/bestfit-programme/i-living-cost";
|
|
27
|
+
import { IGPARequirement } from "./src/models/common/i-g-p-a-requirement";
|
|
28
|
+
import { IBestFitProgramme } from "./src/models/bestfit-programme/i-best-fit-programme";
|
|
29
|
+
import { BestfitProgrammeClient } from "./src/models/bestfit-programme/bestfit-programme-client";
|
|
30
|
+
import { ILogo } from "./src/models/common/i-logo";
|
|
31
|
+
import { ITuitionFee } from "./src/models/common/i-tuition-fee";
|
|
32
|
+
import { IEnglishRequirements } from "./src/models/common/i-english-requirements";
|
|
33
|
+
import { IInternalLink } from "./src/models/dotdigital-programme/i-internal-link";
|
|
34
|
+
import { IDotDigitalProgramme } from "./src/models/dotdigital-programme/i-dot-digital-programme";
|
|
35
|
+
import { DotdigitalProgrammeClient } from "./src/models/dotdigital-programme/dotdigital-programme-client";
|
|
36
|
+
import { ISitemapProgrammeInfo } from "./src/models/sitemap-programme-info/i-sitemap-programme-info";
|
|
37
|
+
import { SitemapProgrammeInfoClient } from "./src/models/sitemap-programme-info/sitemap-programme-info-client";
|
|
38
|
+
import { ISearchCountryFaq } from "./src/models/search-country-faq/i-search-country-faq";
|
|
39
|
+
import { PublicSearchCountryFaqClient } from "./src/models/search-country-faq/public-search-country-faq-client";
|
|
40
|
+
import { ISitemapCountryInfo } from "./src/models/sitemap-countries-info/i-sitemap-country-info";
|
|
41
|
+
import { SitemapCountriesInfoClient } from "./src/models/sitemap-countries-info/sitemap-countries-info-client";
|
|
42
|
+
import { IDegreeInfo } from "./src/models/sitemap-country-degree-info/i-degree-info";
|
|
43
|
+
import { ISitemapCountryDegreeInfo } from "./src/models/sitemap-country-degree-info/i-sitemap-country-degree-info";
|
|
44
|
+
import { SitemapCountryDegreeInfoClient } from "./src/models/sitemap-country-degree-info/sitemap-country-degree-info-client";
|
|
45
|
+
import { ISearchDiscipline } from "./src/models/search-discipline/i-search-discipline";
|
|
46
|
+
import { PublicSearchDisciplineClient } from "./src/models/search-discipline/public-search-discipline-client";
|
|
47
|
+
import { ISitemapDisciplineInfo } from "./src/models/sitemap-disciplines-info/i-sitemap-discipline-info";
|
|
48
|
+
import { SitemapDisciplinesInfoClient } from "./src/models/sitemap-disciplines-info/sitemap-disciplines-info-client";
|
|
49
|
+
import { ICountry } from "./src/models/common/i-country";
|
|
50
|
+
import { ICity } from "./src/models/common/i-city";
|
|
51
|
+
import { IReview } from "./src/models/dotdigital-organisation/i-review";
|
|
52
|
+
import { IDotDigitalOrganisation } from "./src/models/dotdigital-organisation/i-dot-digital-organisation";
|
|
53
|
+
import { DotdigitalOrganisationClient } from "./src/models/dotdigital-organisation/dotdigital-organisation-client";
|
|
54
|
+
import { ISitemapOrganisationInfo } from "./src/models/sitemap-organisations-info/i-sitemap-organisation-info";
|
|
55
|
+
import { SitemapOrganisationsInfoClient } from "./src/models/sitemap-organisations-info/sitemap-organisations-info-client";
|
|
56
|
+
import { ISitemapRankingsInfo } from "./src/models/sitemap-rankings-info/i-sitemap-rankings-info";
|
|
57
|
+
import { SitemapRankingsInfoClient } from "./src/models/sitemap-rankings-info/sitemap-rankings-info-client";
|
|
58
|
+
import { ISitemapArticleInfo } from "./src/models/sitemap-articles-info/i-sitemap-article-info";
|
|
59
|
+
import { SitemapArticlesInfoClient } from "./src/models/sitemap-articles-info/sitemap-articles-info-client";
|
|
60
|
+
import { ISitemapCityInfo } from "./src/models/sitemap-cities-info/i-sitemap-city-info";
|
|
61
|
+
import { SitemapCitiesInfoClient } from "./src/models/sitemap-cities-info/sitemap-cities-info-client";
|
|
62
|
+
import { IScholarshipCard } from "./src/models/scholarship-card/i-scholarship-card";
|
|
63
|
+
import { PublicScholarshipCardClient } from "./src/models/scholarship-card/public-scholarship-card-client";
|
|
64
|
+
import { IRankingCards } from './src/models/ranking-cards/i-ranking-cards';
|
|
65
|
+
import { IRankingCard } from './src/models/ranking-cards/i-ranking-card';
|
|
66
|
+
import { IRanking } from './src/models/ranking-cards/i-ranking';
|
|
67
|
+
import { PublicRankingCardsClient } from './src/models/ranking-cards/public-ranking-cards-client';
|
|
68
|
+
import { PortalType } from "./src/types/portal-type";
|
|
69
|
+
import { PortalMap } from "./src/types/portal-map";
|
|
70
|
+
import { ModelClient } from "./src/model-client";
|
|
71
|
+
import { ICompareProgramme } from "./src/models/compare-programme/i-compare-programme"
|
|
72
|
+
import { CompareProgrammeClient } from "./src/models/compare-programme/compare-programme-client"
|
|
73
|
+
|
|
74
|
+
export {
|
|
75
|
+
BadRequestException,
|
|
76
|
+
ClientException,
|
|
77
|
+
InternalServerException,
|
|
78
|
+
NotFoundException,
|
|
79
|
+
PropertyNotAvailableException,
|
|
80
|
+
ICover,
|
|
81
|
+
ILink,
|
|
82
|
+
IOptionalLink,
|
|
83
|
+
ILocation,
|
|
84
|
+
IClickTrackingData,
|
|
85
|
+
ITracking,
|
|
86
|
+
IDuration,
|
|
87
|
+
IDeadline,
|
|
88
|
+
IStartDate,
|
|
89
|
+
ITiming,
|
|
90
|
+
ITrackedLink,
|
|
91
|
+
IProgrammeCard,
|
|
92
|
+
ProgrammeCardClient,
|
|
93
|
+
ITuitionValues,
|
|
94
|
+
IPremiumValues,
|
|
95
|
+
IOrganisationValues,
|
|
96
|
+
IGeoTargetingConfiguration,
|
|
97
|
+
IGeoTargetingValues,
|
|
98
|
+
ISearchProjection,
|
|
99
|
+
SearchProjectionClient,
|
|
100
|
+
ILivingCost,
|
|
101
|
+
IGPARequirement,
|
|
102
|
+
IBestFitProgramme,
|
|
103
|
+
BestfitProgrammeClient,
|
|
104
|
+
ILogo,
|
|
105
|
+
ITuitionFee,
|
|
106
|
+
IEnglishRequirements,
|
|
107
|
+
IInternalLink,
|
|
108
|
+
IDotDigitalProgramme,
|
|
109
|
+
DotdigitalProgrammeClient,
|
|
110
|
+
ISitemapProgrammeInfo,
|
|
111
|
+
SitemapProgrammeInfoClient,
|
|
112
|
+
ISearchCountryFaq,
|
|
113
|
+
PublicSearchCountryFaqClient,
|
|
114
|
+
ISitemapCountryInfo,
|
|
115
|
+
SitemapCountriesInfoClient,
|
|
116
|
+
IDegreeInfo,
|
|
117
|
+
ISitemapCountryDegreeInfo,
|
|
118
|
+
SitemapCountryDegreeInfoClient,
|
|
119
|
+
ISearchDiscipline,
|
|
120
|
+
PublicSearchDisciplineClient,
|
|
121
|
+
ISitemapDisciplineInfo,
|
|
122
|
+
SitemapDisciplinesInfoClient,
|
|
123
|
+
ICountry,
|
|
124
|
+
ICity,
|
|
125
|
+
IReview,
|
|
126
|
+
IDotDigitalOrganisation,
|
|
127
|
+
DotdigitalOrganisationClient,
|
|
128
|
+
ISitemapOrganisationInfo,
|
|
129
|
+
SitemapOrganisationsInfoClient,
|
|
130
|
+
ISitemapRankingsInfo,
|
|
131
|
+
SitemapRankingsInfoClient,
|
|
132
|
+
ISitemapArticleInfo,
|
|
133
|
+
SitemapArticlesInfoClient,
|
|
134
|
+
ISitemapCityInfo,
|
|
135
|
+
SitemapCitiesInfoClient,
|
|
136
|
+
IScholarshipCard,
|
|
137
|
+
PublicScholarshipCardClient,
|
|
138
|
+
IRankingCards,
|
|
139
|
+
IRankingCard,
|
|
140
|
+
IRanking,
|
|
141
|
+
PublicRankingCardsClient,
|
|
142
|
+
ICompareProgramme,
|
|
143
|
+
CompareProgrammeClient,
|
|
144
|
+
PortalType,
|
|
145
|
+
PortalMap,
|
|
146
|
+
ModelClient
|
|
147
|
+
}
|
package/package.json
CHANGED
|
@@ -1,55 +1,55 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@studyportals/domain-client",
|
|
3
|
-
"version": "3.
|
|
4
|
-
"description": "Responsible for fetching data from the Domain API",
|
|
5
|
-
"main": "bin/index.js",
|
|
6
|
-
"author": "StudyPortals B.V.",
|
|
7
|
-
"contributors": [
|
|
8
|
-
"braaibander <danny@studyportals.com>"
|
|
9
|
-
],
|
|
10
|
-
"license": "BSD-3-Clause",
|
|
11
|
-
"scripts": {
|
|
12
|
-
"test": "mocha --reporter spec \"tests/**/*.test.ts\"",
|
|
13
|
-
"coverage": "nyc mocha --reporter dot \"tests/**/*.test.ts\"",
|
|
14
|
-
"lint": "eslint . --ext .ts --max-warnings=0",
|
|
15
|
-
"lint:fix": "eslint . --ext .ts --fix",
|
|
16
|
-
"pre-push": "npm run test && npm run coverage && npm run lint",
|
|
17
|
-
"prepare-dist": "npm run test && rm -fR bin && npx tsc && cp package.json bin/package.json && rm -fR bin/tests",
|
|
18
|
-
"publish-beta": "npm version prerelease --preid=beta && npm run prepare-dist && npm publish ./bin --tag beta",
|
|
19
|
-
"publish-major": "npm version major && npm run prepare-dist && npm publish ./bin",
|
|
20
|
-
"publish-minor": "npm version minor && npm run prepare-dist && npm publish ./bin",
|
|
21
|
-
"publish-patch": "npm version patch && npm run prepare-dist && npm publish ./bin",
|
|
22
|
-
"publish-current": "npm run prepare-dist && npm publish ./bin"
|
|
23
|
-
},
|
|
24
|
-
"husky": {
|
|
25
|
-
"hooks": {
|
|
26
|
-
"pre-push": "npm run pre-push"
|
|
27
|
-
}
|
|
28
|
-
},
|
|
29
|
-
"dependencies": {
|
|
30
|
-
"axios": "^0.21.0"
|
|
31
|
-
},
|
|
32
|
-
"devDependencies": {
|
|
33
|
-
"@studyportals/code-style": "^1.8.1",
|
|
34
|
-
"@testdeck/mocha": "^0.3.3",
|
|
35
|
-
"@types/axios": "^0.14.0",
|
|
36
|
-
"@types/mocha": "^10.0.0",
|
|
37
|
-
"@types/moxios": "^0.4.9",
|
|
38
|
-
"@types/node": "^14.14.8",
|
|
39
|
-
"@types/reflect-metadata": "^0.1.0",
|
|
40
|
-
"@typescript-eslint/eslint-plugin": "^4.8.1",
|
|
41
|
-
"@typescript-eslint/parser": "^4.8.1",
|
|
42
|
-
"eslint": "^7.13.0",
|
|
43
|
-
"eslint-plugin-import": "^2.22.1",
|
|
44
|
-
"eslint-plugin-mocha": "^10.1.0",
|
|
45
|
-
"husky": "^4.3.0",
|
|
46
|
-
"mocha": "^10.1.0",
|
|
47
|
-
"moxios": "^0.4.0",
|
|
48
|
-
"nyc": "^15.1.0",
|
|
49
|
-
"source-map-support": "^0.5.19",
|
|
50
|
-
"ts-node": "^10.9.1",
|
|
51
|
-
"tslint": "^6.1.3",
|
|
52
|
-
"typemoq": "^2.1.0",
|
|
53
|
-
"typescript": "^4.9.3"
|
|
54
|
-
}
|
|
55
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "@studyportals/domain-client",
|
|
3
|
+
"version": "3.18.0",
|
|
4
|
+
"description": "Responsible for fetching data from the Domain API",
|
|
5
|
+
"main": "bin/index.js",
|
|
6
|
+
"author": "StudyPortals B.V.",
|
|
7
|
+
"contributors": [
|
|
8
|
+
"braaibander <danny@studyportals.com>"
|
|
9
|
+
],
|
|
10
|
+
"license": "BSD-3-Clause",
|
|
11
|
+
"scripts": {
|
|
12
|
+
"test": "mocha --reporter spec \"tests/**/*.test.ts\"",
|
|
13
|
+
"coverage": "nyc mocha --reporter dot \"tests/**/*.test.ts\"",
|
|
14
|
+
"lint": "eslint . --ext .ts --max-warnings=0",
|
|
15
|
+
"lint:fix": "eslint . --ext .ts --fix",
|
|
16
|
+
"pre-push": "npm run test && npm run coverage && npm run lint",
|
|
17
|
+
"prepare-dist": "npm run test && rm -fR bin && npx tsc && cp package.json bin/package.json && rm -fR bin/tests",
|
|
18
|
+
"publish-beta": "npm version prerelease --preid=beta && npm run prepare-dist && npm publish ./bin --tag beta",
|
|
19
|
+
"publish-major": "npm version major && npm run prepare-dist && npm publish ./bin",
|
|
20
|
+
"publish-minor": "npm version minor && npm run prepare-dist && npm publish ./bin",
|
|
21
|
+
"publish-patch": "npm version patch && npm run prepare-dist && npm publish ./bin",
|
|
22
|
+
"publish-current": "npm run prepare-dist && npm publish ./bin"
|
|
23
|
+
},
|
|
24
|
+
"husky": {
|
|
25
|
+
"hooks": {
|
|
26
|
+
"pre-push": "npm run pre-push"
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
"dependencies": {
|
|
30
|
+
"axios": "^0.21.0"
|
|
31
|
+
},
|
|
32
|
+
"devDependencies": {
|
|
33
|
+
"@studyportals/code-style": "^1.8.1",
|
|
34
|
+
"@testdeck/mocha": "^0.3.3",
|
|
35
|
+
"@types/axios": "^0.14.0",
|
|
36
|
+
"@types/mocha": "^10.0.0",
|
|
37
|
+
"@types/moxios": "^0.4.9",
|
|
38
|
+
"@types/node": "^14.14.8",
|
|
39
|
+
"@types/reflect-metadata": "^0.1.0",
|
|
40
|
+
"@typescript-eslint/eslint-plugin": "^4.8.1",
|
|
41
|
+
"@typescript-eslint/parser": "^4.8.1",
|
|
42
|
+
"eslint": "^7.13.0",
|
|
43
|
+
"eslint-plugin-import": "^2.22.1",
|
|
44
|
+
"eslint-plugin-mocha": "^10.1.0",
|
|
45
|
+
"husky": "^4.3.0",
|
|
46
|
+
"mocha": "^10.1.0",
|
|
47
|
+
"moxios": "^0.4.0",
|
|
48
|
+
"nyc": "^15.1.0",
|
|
49
|
+
"source-map-support": "^0.5.19",
|
|
50
|
+
"ts-node": "^10.9.1",
|
|
51
|
+
"tslint": "^6.1.3",
|
|
52
|
+
"typemoq": "^2.1.0",
|
|
53
|
+
"typescript": "^4.9.3"
|
|
54
|
+
}
|
|
55
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import Axios, { AxiosRequestConfig } from "axios";
|
|
2
|
+
|
|
3
|
+
import { BadRequestException } from "./exceptions/bad-request-exception";
|
|
4
|
+
import { InternalServerException } from "./exceptions/internal-server-exception";
|
|
5
|
+
import { NotFoundException } from "./exceptions/not-found-exception";
|
|
6
|
+
import { IApiResponse } from "./i-api-response";
|
|
7
|
+
import { IModelDescription } from "./i-model-description";
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
export class DomainClient {
|
|
11
|
+
|
|
12
|
+
constructor(
|
|
13
|
+
public readonly baseUrl: string,
|
|
14
|
+
public readonly apiKey: string | undefined,
|
|
15
|
+
public readonly model: string,
|
|
16
|
+
public readonly version: string,
|
|
17
|
+
public readonly isPublic: boolean,
|
|
18
|
+
public readonly seed: number
|
|
19
|
+
) {
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
public async doRequest(ids: number[]): Promise<IModelDescription[]> {
|
|
23
|
+
const url = this.buildUrl(ids);
|
|
24
|
+
const config: AxiosRequestConfig = { baseURL: this.baseUrl }
|
|
25
|
+
if (this.apiKey !== undefined) {
|
|
26
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
27
|
+
config["headers"] = {'x-api-key': this.apiKey}
|
|
28
|
+
}
|
|
29
|
+
const axiosResponse = await Axios.get(url, config);
|
|
30
|
+
const response = axiosResponse.data as IApiResponse;
|
|
31
|
+
this.handleErrors(response);
|
|
32
|
+
|
|
33
|
+
const models: IModelDescription[] = [];
|
|
34
|
+
for (const id of ids) {
|
|
35
|
+
const modelData = response.data[id];
|
|
36
|
+
if (!modelData) {
|
|
37
|
+
continue;
|
|
38
|
+
}
|
|
39
|
+
models.push(modelData);
|
|
40
|
+
}
|
|
41
|
+
return models;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
private handleErrors(response: IApiResponse): void {
|
|
45
|
+
if (!response.status) {
|
|
46
|
+
throw new InternalServerException(response.message);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
if (response.status === 400) {
|
|
50
|
+
throw new BadRequestException(response.message);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
if (response.status === 404) {
|
|
54
|
+
throw new NotFoundException(response.message);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
private buildUrl(ids: number[]): string {
|
|
59
|
+
const publicPrefix = this.shouldAddPublicPrefix() ? 'public/' : '';
|
|
60
|
+
let query = `${publicPrefix}${this.model}/${this.version}/?seed=${this.seed}`;
|
|
61
|
+
for (const id of ids) {
|
|
62
|
+
query += `&id=${id}`;
|
|
63
|
+
}
|
|
64
|
+
return query;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
private shouldAddPublicPrefix(): boolean {
|
|
68
|
+
return this.isPublic && this.apiKey === undefined;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { IClassFactory } from "../i-class-factory";
|
|
2
|
+
import { CallableReturnType, Model } from "../types";
|
|
3
|
+
|
|
4
|
+
export class DateFactory implements IClassFactory {
|
|
5
|
+
public create(data: Model, parameters: string[]): CallableReturnType {
|
|
6
|
+
return new Date(parameters[0]);
|
|
7
|
+
}
|
|
8
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { IClassFactory } from "../i-class-factory";
|
|
2
|
+
import { PortalType } from "../types/portal-type";
|
|
3
|
+
import { CallableReturnType, Model } from "../types";
|
|
4
|
+
import { PortalMap } from "../types/portal-map";
|
|
5
|
+
|
|
6
|
+
export class InternalLinkFactory implements IClassFactory {
|
|
7
|
+
private portalMap: PortalMap;
|
|
8
|
+
|
|
9
|
+
constructor(portalMap: PortalMap) {
|
|
10
|
+
this.portalMap = portalMap;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
public create(link: Model): CallableReturnType {
|
|
14
|
+
const portalBaseUrl = this.getPortalBaseUrl(link.getPortalType() as PortalType);
|
|
15
|
+
|
|
16
|
+
const path = link['getUrl']() as string;
|
|
17
|
+
link['getUrl'] = (): string => portalBaseUrl + path;
|
|
18
|
+
|
|
19
|
+
return link;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
private getPortalBaseUrl(portalType: PortalType): string {
|
|
23
|
+
const url = this.portalMap.get(portalType);
|
|
24
|
+
return url || '';
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { AcceptedType } from "./types";
|
|
2
|
+
|
|
3
|
+
export interface IModelDescription {
|
|
4
|
+
class: string;
|
|
5
|
+
func: Record<string, AcceptedType | IModelDescription>;
|
|
6
|
+
parameters?: any[];
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
// eslint-disable-next-line
|
|
10
|
+
export function isModelDescription(arg: any): arg is IModelDescription {
|
|
11
|
+
// eslint-disable-next-line
|
|
12
|
+
return arg && arg.class && (arg.func || arg.parameters);
|
|
13
|
+
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { DomainClient } from "./domain-client";
|
|
2
|
+
import { ClientException } from "./exceptions/client-exception";
|
|
3
|
+
import { IModelDescription } from "./i-model-description";
|
|
4
|
+
import { ModelFactory } from "./model-factory";
|
|
5
|
+
import { PortalMap } from "./types/portal-map";
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
export abstract class ModelClient<T> {
|
|
9
|
+
private readonly domainClient: DomainClient | null;
|
|
10
|
+
private readonly modelFactory: ModelFactory<T>;
|
|
11
|
+
|
|
12
|
+
constructor(
|
|
13
|
+
baseUrl?: string,
|
|
14
|
+
apiKey?: string,
|
|
15
|
+
seed?: number,
|
|
16
|
+
portalMap?: PortalMap
|
|
17
|
+
) {
|
|
18
|
+
if (!baseUrl || !seed) {
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
this.modelFactory = new ModelFactory<T>(portalMap);
|
|
23
|
+
this.domainClient = new DomainClient(
|
|
24
|
+
baseUrl,
|
|
25
|
+
apiKey,
|
|
26
|
+
this.getModelName(),
|
|
27
|
+
this.getVersion(),
|
|
28
|
+
this.isPublic(),
|
|
29
|
+
seed
|
|
30
|
+
);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
public async fetch(id: number): Promise<T> {
|
|
34
|
+
const modelDescriptions = await this.fetchDescription(id);
|
|
35
|
+
return this.modelFactory.fromDescription(modelDescriptions);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
public async fetchDescription(id: number): Promise<IModelDescription> {
|
|
39
|
+
if (!this.domainClient) {
|
|
40
|
+
throw new ClientException(
|
|
41
|
+
"Offline mode active: did you provide all parameters " +
|
|
42
|
+
"in the constructor?"
|
|
43
|
+
);
|
|
44
|
+
}
|
|
45
|
+
const result = await this.domainClient.doRequest([id]);
|
|
46
|
+
return result[0];
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
public async fetchMultiple(ids: number[]): Promise<T[]> {
|
|
50
|
+
const descriptions = await this.fetchMultipleDescriptions(ids);
|
|
51
|
+
return this.modelFactory.fromDescriptions(descriptions);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
public async fetchMultipleDescriptions(ids: number[]): Promise<IModelDescription[]> {
|
|
55
|
+
if (!this.domainClient) {
|
|
56
|
+
throw new ClientException(
|
|
57
|
+
'Offline mode active: did you provide all parameters ' +
|
|
58
|
+
'in the constructor?'
|
|
59
|
+
);
|
|
60
|
+
}
|
|
61
|
+
return await this.domainClient.doRequest(ids);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
public fromDescription(description: IModelDescription): T {
|
|
65
|
+
return this.modelFactory.fromDescription(description);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
public fromDescriptions(descriptions: IModelDescription[]): T[] {
|
|
69
|
+
return this.modelFactory.fromDescriptions(descriptions);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
protected abstract getModelName(): string;
|
|
73
|
+
|
|
74
|
+
protected abstract getVersion(): string;
|
|
75
|
+
|
|
76
|
+
public abstract isPublic(): boolean;
|
|
77
|
+
}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { InternalLinkFactory } from "./factories/InternalLinkFactory";
|
|
2
|
+
import { DateFactory } from "./factories/DateFactory";
|
|
3
|
+
import { IClassFactory } from "./i-class-factory";
|
|
4
|
+
import { IModelDescription, isModelDescription } from "./i-model-description";
|
|
5
|
+
import { PropertyNotAvailableException } from "./exceptions/property-not-available-exception";
|
|
6
|
+
import { Callable, CallableReturnType, Model } from "./types";
|
|
7
|
+
import { PortalMap } from "./types/portal-map";
|
|
8
|
+
import { PortalType } from "./types/portal-type";
|
|
9
|
+
|
|
10
|
+
export class ModelFactory<T> {
|
|
11
|
+
|
|
12
|
+
private customClassFactories: Map<string, IClassFactory>;
|
|
13
|
+
|
|
14
|
+
constructor(portalMap: PortalMap = new Map<PortalType, string>()) {
|
|
15
|
+
const factories = new Map<string, IClassFactory>();
|
|
16
|
+
factories.set('IInternalLink', new InternalLinkFactory(portalMap));
|
|
17
|
+
factories.set('SerializableDateTime', new DateFactory());
|
|
18
|
+
|
|
19
|
+
this.customClassFactories = factories;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
public fromDescription(data: IModelDescription): T {
|
|
23
|
+
return this.unpackClass(data) as unknown as T;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
public fromDescriptions(data: IModelDescription[]): T[] {
|
|
27
|
+
const models: T[] = [];
|
|
28
|
+
for (const modelDescription of data) {
|
|
29
|
+
models.push(this.unpackClass(modelDescription) as unknown as T);
|
|
30
|
+
}
|
|
31
|
+
return models;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
private unpackClass(data: IModelDescription): CallableReturnType {
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
const unpacked: Model = {};
|
|
38
|
+
for (const functionName in data.func) {
|
|
39
|
+
unpacked[functionName] = this.getCallable(functionName, data);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
const factory = this.customClassFactories.get(data.class);
|
|
43
|
+
if (factory !== undefined) {
|
|
44
|
+
return factory.create(unpacked, data.parameters);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
return unpacked;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
private getCallable(
|
|
51
|
+
functionName: string,
|
|
52
|
+
data: IModelDescription
|
|
53
|
+
): Callable {
|
|
54
|
+
const propertyName = functionName.substr(3);
|
|
55
|
+
const canShowFunction = 'canShow' + propertyName;
|
|
56
|
+
|
|
57
|
+
const value: unknown = data.func[functionName];
|
|
58
|
+
let returnValue: CallableReturnType|CallableReturnType[];
|
|
59
|
+
|
|
60
|
+
if (isModelDescription(value)) {
|
|
61
|
+
returnValue = this.unpackClass(value);
|
|
62
|
+
} else if (Array.isArray(value)) {
|
|
63
|
+
returnValue = this.unpackArray(value);
|
|
64
|
+
} else {
|
|
65
|
+
returnValue = value as CallableReturnType;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
if (canShowFunction in data.func) {
|
|
69
|
+
return (): any => {
|
|
70
|
+
if (data.func[canShowFunction] === false) {
|
|
71
|
+
throw new PropertyNotAvailableException(
|
|
72
|
+
`Property '${propertyName}' not available`
|
|
73
|
+
);
|
|
74
|
+
}
|
|
75
|
+
return returnValue;
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
return (): any => {
|
|
79
|
+
return returnValue;
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
private unpackArray(list: any[]): CallableReturnType[] {
|
|
84
|
+
return list.map(
|
|
85
|
+
item => {
|
|
86
|
+
if (isModelDescription(item)) {
|
|
87
|
+
return this.unpackClass(item)
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
return item as CallableReturnType;
|
|
91
|
+
}
|
|
92
|
+
);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { IBestFitProgramme } from "../../..";
|
|
2
|
+
import { ModelClient } from "../../model-client";
|
|
3
|
+
|
|
4
|
+
export class BestfitProgrammeClient extends ModelClient<IBestFitProgramme> {
|
|
5
|
+
protected getModelName(): string {
|
|
6
|
+
return 'bestfit-programme';
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
protected getVersion(): string {
|
|
10
|
+
return 'v1';
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
public isPublic(): boolean {
|
|
14
|
+
return false;
|
|
15
|
+
}
|
|
16
|
+
}
|