@prezly/theme-kit-core 7.1.0 → 8.0.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 (248) hide show
  1. package/build/boilerplate.cjs +17 -0
  2. package/build/boilerplate.d.ts +8 -0
  3. package/build/boilerplate.mjs +9 -0
  4. package/build/constants.cjs +11 -0
  5. package/build/{utils/constants.d.ts → constants.d.ts} +2 -1
  6. package/build/constants.mjs +5 -0
  7. package/build/content-delivery/ContentDelivery.cjs +348 -0
  8. package/build/content-delivery/ContentDelivery.d.ts +8 -4
  9. package/build/content-delivery/ContentDelivery.mjs +342 -0
  10. package/build/content-delivery/cache/index.cjs +35 -0
  11. package/build/content-delivery/cache/index.d.ts +3 -0
  12. package/build/content-delivery/cache/index.mjs +3 -0
  13. package/build/content-delivery/cache/memory.cjs +64 -0
  14. package/build/content-delivery/cache/memory.d.ts +2 -0
  15. package/build/content-delivery/cache/memory.mjs +58 -0
  16. package/build/content-delivery/cache/stacked.cjs +32 -0
  17. package/build/content-delivery/cache/stacked.d.ts +2 -0
  18. package/build/content-delivery/cache/stacked.mjs +26 -0
  19. package/build/content-delivery/cache/type.cjs +1 -0
  20. package/build/content-delivery/cache/type.d.ts +8 -0
  21. package/build/content-delivery/cache/type.mjs +1 -0
  22. package/build/content-delivery/index.cjs +27 -0
  23. package/build/content-delivery/index.d.ts +2 -1
  24. package/build/content-delivery/index.mjs +2 -0
  25. package/build/environment.cjs +42 -0
  26. package/build/environment.d.ts +2 -0
  27. package/build/environment.mjs +36 -0
  28. package/build/galleries.cjs +38 -0
  29. package/build/galleries.d.ts +11 -0
  30. package/build/galleries.mjs +30 -0
  31. package/build/http/HttpClient.cjs +66 -0
  32. package/build/http/HttpClient.d.ts +20 -0
  33. package/build/http/HttpClient.mjs +59 -0
  34. package/build/http/index.cjs +10 -0
  35. package/build/http/index.d.ts +1 -0
  36. package/build/http/index.mjs +2 -0
  37. package/build/index.cjs +88 -0
  38. package/build/index.d.ts +15 -4
  39. package/build/index.mjs +26 -0
  40. package/build/intl/getLanguageDisplayName.cjs +37 -0
  41. package/build/intl/getLanguageDisplayName.d.ts +20 -0
  42. package/build/intl/getLanguageDisplayName.mjs +32 -0
  43. package/build/intl/getLanguageDisplayName.test.cjs +46 -0
  44. package/build/intl/getLanguageDisplayName.test.mjs +44 -0
  45. package/build/intl/index.cjs +12 -0
  46. package/build/intl/index.d.ts +1 -5
  47. package/build/intl/index.mjs +1 -0
  48. package/build/metadata/getAlternateLanguageLinks.cjs +76 -0
  49. package/build/{seo → metadata}/getAlternateLanguageLinks.d.ts +2 -2
  50. package/build/metadata/getAlternateLanguageLinks.mjs +72 -0
  51. package/build/metadata/getAlternateLanguageLinks.test.cjs +198 -0
  52. package/build/metadata/getAlternateLanguageLinks.test.mjs +196 -0
  53. package/build/metadata/index.cjs +12 -0
  54. package/build/metadata/index.d.ts +2 -0
  55. package/build/metadata/index.mjs +1 -0
  56. package/build/metadata/types.cjs +1 -0
  57. package/build/metadata/types.d.ts +6 -0
  58. package/build/metadata/types.mjs +1 -0
  59. package/build/newsrooms.cjs +36 -0
  60. package/build/newsrooms.d.ts +5 -0
  61. package/build/newsrooms.mjs +28 -0
  62. package/build/privacy-portal.cjs +28 -0
  63. package/build/privacy-portal.d.ts +9 -0
  64. package/build/privacy-portal.mjs +21 -0
  65. package/build/resolvable.cjs +38 -0
  66. package/build/resolvable.d.ts +71 -0
  67. package/build/resolvable.mjs +32 -0
  68. package/build/routing/Route.cjs +46 -0
  69. package/build/routing/Route.d.ts +37 -0
  70. package/build/routing/Route.mjs +40 -0
  71. package/build/routing/Router.cjs +51 -0
  72. package/build/routing/Router.d.ts +23 -0
  73. package/build/routing/Router.mjs +45 -0
  74. package/build/routing/Routing.cjs +24 -0
  75. package/build/routing/Routing.d.ts +1 -0
  76. package/build/routing/Routing.mjs +2 -0
  77. package/build/routing/UrlGenerator.cjs +13 -0
  78. package/build/routing/UrlGenerator.d.ts +39 -0
  79. package/build/routing/UrlGenerator.mjs +7 -0
  80. package/build/routing/index.cjs +24 -0
  81. package/build/routing/index.d.ts +4 -0
  82. package/build/routing/index.mjs +4 -0
  83. package/build/routing/types.cjs +1 -0
  84. package/build/routing/types.d.ts +14 -0
  85. package/build/routing/types.mjs +1 -0
  86. package/build/routing/utils/generateUrlFromPattern.cjs +52 -0
  87. package/build/routing/utils/generateUrlFromPattern.d.ts +12 -0
  88. package/build/routing/utils/generateUrlFromPattern.mjs +47 -0
  89. package/build/routing/utils/generateUrlFromPattern.test.cjs +44 -0
  90. package/build/routing/utils/generateUrlFromPattern.test.mjs +42 -0
  91. package/build/routing/utils/getShortestLocaleSlug.cjs +60 -0
  92. package/build/routing/utils/getShortestLocaleSlug.d.ts +11 -0
  93. package/build/routing/utils/getShortestLocaleSlug.mjs +53 -0
  94. package/build/routing/utils/getShortestLocaleSlug.test.cjs +37 -0
  95. package/build/routing/utils/getShortestLocaleSlug.test.mjs +35 -0
  96. package/build/routing/utils/index.cjs +40 -0
  97. package/build/routing/utils/index.d.ts +5 -0
  98. package/build/routing/utils/index.mjs +5 -0
  99. package/build/routing/utils/isNumberCode.cjs +12 -0
  100. package/build/routing/utils/isNumberCode.d.ts +4 -0
  101. package/build/routing/utils/isNumberCode.mjs +6 -0
  102. package/build/routing/utils/matchLocaleSlug.cjs +41 -0
  103. package/build/routing/utils/matchLocaleSlug.d.ts +15 -0
  104. package/build/routing/utils/matchLocaleSlug.mjs +34 -0
  105. package/build/routing/utils/matchLocaleSlug.test.cjs +43 -0
  106. package/build/routing/utils/matchLocaleSlug.test.mjs +40 -0
  107. package/build/routing/utils/normalizeUrl.cjs +9 -0
  108. package/build/routing/utils/normalizeUrl.d.ts +1 -0
  109. package/build/routing/utils/normalizeUrl.mjs +3 -0
  110. package/build/search.cjs +1 -0
  111. package/build/{types.d.ts → search.d.ts} +3 -3
  112. package/build/search.mjs +1 -0
  113. package/build/sitemap/build.cjs +33 -0
  114. package/build/sitemap/build.d.ts +6 -0
  115. package/build/sitemap/build.mjs +27 -0
  116. package/build/sitemap/generate.cjs +192 -0
  117. package/build/sitemap/generate.d.ts +37 -0
  118. package/build/sitemap/generate.mjs +183 -0
  119. package/build/sitemap/index.cjs +38 -0
  120. package/build/sitemap/index.d.ts +4 -0
  121. package/build/sitemap/index.mjs +3 -0
  122. package/build/sitemap/stringify.cjs +24 -0
  123. package/build/sitemap/stringify.d.ts +2 -0
  124. package/build/sitemap/stringify.mjs +18 -0
  125. package/build/sitemap/types.cjs +1 -0
  126. package/build/sitemap/types.d.ts +67 -0
  127. package/build/sitemap/types.mjs +1 -0
  128. package/build/uploads.cjs +14 -0
  129. package/build/{utils/getAssetsUrl.d.ts → uploads.d.ts} +1 -1
  130. package/build/uploads.mjs +8 -0
  131. package/build/uploads.test.cjs +10 -0
  132. package/build/uploads.test.mjs +8 -0
  133. package/package.json +23 -26
  134. package/build/content-delivery/ContentDelivery.js +0 -238
  135. package/build/content-delivery/ContentDelivery.js.map +0 -1
  136. package/build/content-delivery/index.js +0 -28
  137. package/build/content-delivery/index.js.map +0 -1
  138. package/build/data-fetching/api/index.d.ts +0 -1
  139. package/build/data-fetching/api/index.js +0 -6
  140. package/build/data-fetching/api/index.js.map +0 -1
  141. package/build/data-fetching/api/initContentDeliveryClient.d.ts +0 -4
  142. package/build/data-fetching/api/initContentDeliveryClient.js +0 -25
  143. package/build/data-fetching/api/initContentDeliveryClient.js.map +0 -1
  144. package/build/data-fetching/index.d.ts +0 -3
  145. package/build/data-fetching/index.js +0 -20
  146. package/build/data-fetching/index.js.map +0 -1
  147. package/build/data-fetching/lib/getAlgoliaSettings.d.ts +0 -4
  148. package/build/data-fetching/lib/getAlgoliaSettings.js +0 -21
  149. package/build/data-fetching/lib/getAlgoliaSettings.js.map +0 -1
  150. package/build/data-fetching/lib/getEnvVariables.d.ts +0 -4
  151. package/build/data-fetching/lib/getEnvVariables.js +0 -43
  152. package/build/data-fetching/lib/getEnvVariables.js.map +0 -1
  153. package/build/data-fetching/lib/index.d.ts +0 -3
  154. package/build/data-fetching/lib/index.js +0 -10
  155. package/build/data-fetching/lib/index.js.map +0 -1
  156. package/build/data-fetching/lib/isUuid.d.ts +0 -1
  157. package/build/data-fetching/lib/isUuid.js +0 -9
  158. package/build/data-fetching/lib/isUuid.js.map +0 -1
  159. package/build/data-fetching/types.d.ts +0 -13
  160. package/build/data-fetching/types.js +0 -3
  161. package/build/data-fetching/types.js.map +0 -1
  162. package/build/index.js +0 -21
  163. package/build/index.js.map +0 -1
  164. package/build/intl/getFallbackLocale.d.ts +0 -10
  165. package/build/intl/getFallbackLocale.js +0 -24
  166. package/build/intl/getFallbackLocale.js.map +0 -1
  167. package/build/intl/index.js +0 -27
  168. package/build/intl/index.js.map +0 -1
  169. package/build/intl/languages.d.ts +0 -57
  170. package/build/intl/languages.js +0 -191
  171. package/build/intl/languages.js.map +0 -1
  172. package/build/intl/locale.d.ts +0 -11
  173. package/build/intl/locale.js +0 -41
  174. package/build/intl/locale.js.map +0 -1
  175. package/build/intl/localeConfig.d.ts +0 -2
  176. package/build/intl/localeConfig.js +0 -22
  177. package/build/intl/localeConfig.js.map +0 -1
  178. package/build/intl/localeList.d.ts +0 -2
  179. package/build/intl/localeList.js +0 -114
  180. package/build/intl/localeList.js.map +0 -1
  181. package/build/intl/localeObject.d.ts +0 -51
  182. package/build/intl/localeObject.js +0 -98
  183. package/build/intl/localeObject.js.map +0 -1
  184. package/build/seo/getAlternateLanguageLinks.js +0 -85
  185. package/build/seo/getAlternateLanguageLinks.js.map +0 -1
  186. package/build/seo/index.d.ts +0 -2
  187. package/build/seo/index.js +0 -19
  188. package/build/seo/index.js.map +0 -1
  189. package/build/seo/types.d.ts +0 -4
  190. package/build/seo/types.js +0 -3
  191. package/build/seo/types.js.map +0 -1
  192. package/build/seo/utils/bindLanguagesWithLocales.d.ts +0 -11
  193. package/build/seo/utils/bindLanguagesWithLocales.js +0 -23
  194. package/build/seo/utils/bindLanguagesWithLocales.js.map +0 -1
  195. package/build/seo/utils/createAlternateLanguageLink.d.ts +0 -5
  196. package/build/seo/utils/createAlternateLanguageLink.js +0 -15
  197. package/build/seo/utils/createAlternateLanguageLink.js.map +0 -1
  198. package/build/seo/utils/index.d.ts +0 -2
  199. package/build/seo/utils/index.js +0 -8
  200. package/build/seo/utils/index.js.map +0 -1
  201. package/build/server.d.ts +0 -2
  202. package/build/server.js +0 -21
  203. package/build/server.js.map +0 -1
  204. package/build/types.js +0 -3
  205. package/build/types.js.map +0 -1
  206. package/build/utils/assertServerEnv.d.ts +0 -1
  207. package/build/utils/assertServerEnv.js +0 -10
  208. package/build/utils/assertServerEnv.js.map +0 -1
  209. package/build/utils/boilerplate.d.ts +0 -8
  210. package/build/utils/boilerplate.js +0 -27
  211. package/build/utils/boilerplate.js.map +0 -1
  212. package/build/utils/constants.js +0 -8
  213. package/build/utils/constants.js.map +0 -1
  214. package/build/utils/getAssetsUrl.js +0 -13
  215. package/build/utils/getAssetsUrl.js.map +0 -1
  216. package/build/utils/getDataRequestLink.d.ts +0 -3
  217. package/build/utils/getDataRequestLink.js +0 -12
  218. package/build/utils/getDataRequestLink.js.map +0 -1
  219. package/build/utils/getGalleryThumbnail.d.ts +0 -2
  220. package/build/utils/getGalleryThumbnail.js +0 -15
  221. package/build/utils/getGalleryThumbnail.js.map +0 -1
  222. package/build/utils/getLocalizedCategoryData.d.ts +0 -12
  223. package/build/utils/getLocalizedCategoryData.js +0 -34
  224. package/build/utils/getLocalizedCategoryData.js.map +0 -1
  225. package/build/utils/getNewsroomLogoUrl.d.ts +0 -5
  226. package/build/utils/getNewsroomLogoUrl.js +0 -30
  227. package/build/utils/getNewsroomLogoUrl.js.map +0 -1
  228. package/build/utils/getPrivacyPortalUrl.d.ts +0 -8
  229. package/build/utils/getPrivacyPortalUrl.js +0 -13
  230. package/build/utils/getPrivacyPortalUrl.js.map +0 -1
  231. package/build/utils/getStoryPublicationDate.d.ts +0 -3
  232. package/build/utils/getStoryPublicationDate.js +0 -14
  233. package/build/utils/getStoryPublicationDate.js.map +0 -1
  234. package/build/utils/getUploadcareGroupUrl.d.ts +0 -8
  235. package/build/utils/getUploadcareGroupUrl.js +0 -17
  236. package/build/utils/getUploadcareGroupUrl.js.map +0 -1
  237. package/build/utils/index.d.ts +0 -14
  238. package/build/utils/index.js +0 -31
  239. package/build/utils/index.js.map +0 -1
  240. package/build/utils/isEmbargoStory.d.ts +0 -6
  241. package/build/utils/isEmbargoStory.js +0 -9
  242. package/build/utils/isEmbargoStory.js.map +0 -1
  243. package/build/utils/isGalleryEmpty.d.ts +0 -2
  244. package/build/utils/isGalleryEmpty.js +0 -8
  245. package/build/utils/isGalleryEmpty.js.map +0 -1
  246. package/build/utils/sdkHelpers.d.ts +0 -32
  247. package/build/utils/sdkHelpers.js +0 -42
  248. package/build/utils/sdkHelpers.js.map +0 -1
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getAlternateLanguageLinks = getAlternateLanguageLinks;
7
+ var _themeKitIntl = require("@prezly/theme-kit-intl");
8
+ var _isNotUndefined = require("@technically/is-not-undefined");
9
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
10
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
11
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
12
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
13
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } /* eslint-disable @typescript-eslint/no-use-before-define */
14
+ // We use english locale as fallback since English is the most common language
15
+ var EN = 'en';
16
+ var X_DEFAULT = 'x-default';
17
+ var ALLOWED_FALLBACKS = {
18
+ ["en_US"]: 'en',
19
+ ["en_GB"]: 'en',
20
+ ["fr_FR"]: 'fr',
21
+ ["fr_CA"]: 'fr'
22
+ };
23
+ function getAlternateLanguageLinks(availableLanguages, generateTranslationUrl) {
24
+ var _links$EN;
25
+ var defaultLanguage = availableLanguages.find(lang => lang.is_default);
26
+
27
+ // Generate the translation URLs map for the exact locale codes
28
+ var translations = Object.fromEntries(availableLanguages.map(lang => [lang.code, generateTranslationUrl(lang.code)]));
29
+
30
+ // Initialize the links map with the existing translations
31
+ var links = _objectSpread({}, translations);
32
+
33
+ // Add selected languages as possible region-independent translations, if not present yet.
34
+ Object.entries(ALLOWED_FALLBACKS).forEach(_ref => {
35
+ var _links$langCode;
36
+ var [preferredFallbackLocale, langCode] = _ref;
37
+ links[langCode] = (_links$langCode = links[langCode]) !== null && _links$langCode !== void 0 ? _links$langCode : links[preferredFallbackLocale];
38
+ });
39
+
40
+ // Add any same-language version as region-independent fallback, if not present yet.
41
+ availableLanguages.forEach(lang => {
42
+ var _links$langCode2;
43
+ var {
44
+ code: localeCode,
45
+ lang: langCode
46
+ } = _themeKitIntl.Locale.from(lang.code);
47
+ links[langCode] = (_links$langCode2 = links[langCode]) !== null && _links$langCode2 !== void 0 ? _links$langCode2 : links[localeCode];
48
+ });
49
+
50
+ // Determine `x-default` version
51
+ links[X_DEFAULT] = // First we try to find region independent English locale (en)
52
+ // If the story has just region independent `en` translation we will use it as default hreflang
53
+ (_links$EN = links[EN]) !== null && _links$EN !== void 0 ? _links$EN :
54
+ // If there are no English translations at all we will use the default language (provided by the server)
55
+ defaultLanguage ? links[defaultLanguage.code] : undefined;
56
+ return Object.entries(links).map(_ref2 => {
57
+ var [hrefLang, href] = _ref2;
58
+ if (!href) {
59
+ // some of the fallbacks logic above can result in undefined Urls present in the map
60
+ return undefined;
61
+ }
62
+ if (hrefLang === X_DEFAULT) {
63
+ // `x-default` is not a valid locale code, so we can't pass it to the `Locale.from()` call.
64
+ return {
65
+ hrefLang: X_DEFAULT,
66
+ href,
67
+ type: 'x-default'
68
+ };
69
+ }
70
+ return {
71
+ hrefLang: _themeKitIntl.Locale.from(hrefLang).isoCode,
72
+ href,
73
+ type: translations[hrefLang] ? 'exact' : 'alias'
74
+ };
75
+ }).filter(_isNotUndefined.isNotUndefined).sort((a, b) => a.hrefLang.localeCompare(b.hrefLang));
76
+ }
@@ -1,4 +1,4 @@
1
1
  import type { NewsroomLanguageSettings } from '@prezly/sdk';
2
- import type { LocaleObject } from '../intl';
2
+ import { Locale } from '@prezly/theme-kit-intl';
3
3
  import type { AlternateLanguageLink } from './types';
4
- export declare function getAlternateLanguageLinks<Language extends Pick<NewsroomLanguageSettings, 'code' | 'is_default'>>(availableLanguages: Language[], generateTranslationUrl: (locale: LocaleObject) => string | undefined): AlternateLanguageLink[];
4
+ export declare function getAlternateLanguageLinks<Language extends Pick<NewsroomLanguageSettings, 'code' | 'is_default'>>(availableLanguages: Language[], generateTranslationUrl: (locale: Locale.Code) => string | undefined): AlternateLanguageLink[];
@@ -0,0 +1,72 @@
1
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
2
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
3
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
4
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
5
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
6
+ /* eslint-disable @typescript-eslint/no-use-before-define */
7
+
8
+ import { Locale } from '@prezly/theme-kit-intl';
9
+ import { isNotUndefined } from '@technically/is-not-undefined';
10
+ // We use english locale as fallback since English is the most common language
11
+ var EN = 'en';
12
+ var X_DEFAULT = 'x-default';
13
+ var ALLOWED_FALLBACKS = {
14
+ ["en_US"]: 'en',
15
+ ["en_GB"]: 'en',
16
+ ["fr_FR"]: 'fr',
17
+ ["fr_CA"]: 'fr'
18
+ };
19
+ export function getAlternateLanguageLinks(availableLanguages, generateTranslationUrl) {
20
+ var _links$EN;
21
+ var defaultLanguage = availableLanguages.find(lang => lang.is_default);
22
+
23
+ // Generate the translation URLs map for the exact locale codes
24
+ var translations = Object.fromEntries(availableLanguages.map(lang => [lang.code, generateTranslationUrl(lang.code)]));
25
+
26
+ // Initialize the links map with the existing translations
27
+ var links = _objectSpread({}, translations);
28
+
29
+ // Add selected languages as possible region-independent translations, if not present yet.
30
+ Object.entries(ALLOWED_FALLBACKS).forEach(_ref => {
31
+ var _links$langCode;
32
+ var [preferredFallbackLocale, langCode] = _ref;
33
+ links[langCode] = (_links$langCode = links[langCode]) !== null && _links$langCode !== void 0 ? _links$langCode : links[preferredFallbackLocale];
34
+ });
35
+
36
+ // Add any same-language version as region-independent fallback, if not present yet.
37
+ availableLanguages.forEach(lang => {
38
+ var _links$langCode2;
39
+ var {
40
+ code: localeCode,
41
+ lang: langCode
42
+ } = Locale.from(lang.code);
43
+ links[langCode] = (_links$langCode2 = links[langCode]) !== null && _links$langCode2 !== void 0 ? _links$langCode2 : links[localeCode];
44
+ });
45
+
46
+ // Determine `x-default` version
47
+ links[X_DEFAULT] = // First we try to find region independent English locale (en)
48
+ // If the story has just region independent `en` translation we will use it as default hreflang
49
+ (_links$EN = links[EN]) !== null && _links$EN !== void 0 ? _links$EN :
50
+ // If there are no English translations at all we will use the default language (provided by the server)
51
+ defaultLanguage ? links[defaultLanguage.code] : undefined;
52
+ return Object.entries(links).map(_ref2 => {
53
+ var [hrefLang, href] = _ref2;
54
+ if (!href) {
55
+ // some of the fallbacks logic above can result in undefined Urls present in the map
56
+ return undefined;
57
+ }
58
+ if (hrefLang === X_DEFAULT) {
59
+ // `x-default` is not a valid locale code, so we can't pass it to the `Locale.from()` call.
60
+ return {
61
+ hrefLang: X_DEFAULT,
62
+ href,
63
+ type: 'x-default'
64
+ };
65
+ }
66
+ return {
67
+ hrefLang: Locale.from(hrefLang).isoCode,
68
+ href,
69
+ type: translations[hrefLang] ? 'exact' : 'alias'
70
+ };
71
+ }).filter(isNotUndefined).sort((a, b) => a.hrefLang.localeCompare(b.hrefLang));
72
+ }
@@ -0,0 +1,198 @@
1
+ "use strict";
2
+
3
+ var _themeKitIntl = require("@prezly/theme-kit-intl");
4
+ var _getAlternateLanguageLinks = require("./getAlternateLanguageLinks.cjs");
5
+ function lang(code) {
6
+ var isDefault = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
7
+ return {
8
+ code,
9
+ is_default: isDefault
10
+ };
11
+ }
12
+ function getTranslationUrl(locale) {
13
+ var {
14
+ isoCode
15
+ } = _themeKitIntl.Locale.from(locale);
16
+ return "translationUrl/".concat(isoCode);
17
+ }
18
+ function generateTranslationUrl(locale) {
19
+ var translationUrl = getTranslationUrl(locale);
20
+ var {
21
+ lang: langCode
22
+ } = _themeKitIntl.Locale.from(locale);
23
+ return "http://localhost:3000/".concat(langCode, "/").concat(translationUrl);
24
+ }
25
+ describe('getAlternateLanguageLinks', () => {
26
+ it('should handle one en-GB non-default language', () => {
27
+ var links = (0, _getAlternateLanguageLinks.getAlternateLanguageLinks)([lang('en_GB')], generateTranslationUrl);
28
+ expect(links).toMatchObject([{
29
+ href: 'http://localhost:3000/en/translationUrl/en-GB',
30
+ hrefLang: 'en'
31
+ }, {
32
+ href: 'http://localhost:3000/en/translationUrl/en-GB',
33
+ hrefLang: 'en-GB'
34
+ }, {
35
+ href: 'http://localhost:3000/en/translationUrl/en-GB',
36
+ hrefLang: 'x-default'
37
+ }]);
38
+ });
39
+ it('should handle one en-GB default language', () => {
40
+ var links = (0, _getAlternateLanguageLinks.getAlternateLanguageLinks)([lang('en_GB', true)], generateTranslationUrl);
41
+ expect(links).toMatchObject([{
42
+ href: 'http://localhost:3000/en/translationUrl/en-GB',
43
+ hrefLang: 'en'
44
+ }, {
45
+ href: 'http://localhost:3000/en/translationUrl/en-GB',
46
+ hrefLang: 'en-GB'
47
+ }, {
48
+ href: 'http://localhost:3000/en/translationUrl/en-GB',
49
+ hrefLang: 'x-default'
50
+ }]);
51
+ });
52
+ it('should handle two full locales', () => {
53
+ var links = (0, _getAlternateLanguageLinks.getAlternateLanguageLinks)([lang('en_GB', true), lang('fr_FR')], generateTranslationUrl);
54
+ expect(links).toMatchObject([{
55
+ href: 'http://localhost:3000/en/translationUrl/en-GB',
56
+ hrefLang: 'en'
57
+ }, {
58
+ href: 'http://localhost:3000/en/translationUrl/en-GB',
59
+ hrefLang: 'en-GB'
60
+ }, {
61
+ href: 'http://localhost:3000/fr/translationUrl/fr-FR',
62
+ hrefLang: 'fr'
63
+ }, {
64
+ href: 'http://localhost:3000/fr/translationUrl/fr-FR',
65
+ hrefLang: 'fr-FR'
66
+ }, {
67
+ href: 'http://localhost:3000/en/translationUrl/en-GB',
68
+ hrefLang: 'x-default'
69
+ }]);
70
+ });
71
+ it('should use en-GB locale as x-default even if other locale is set as default', () => {
72
+ var links = (0, _getAlternateLanguageLinks.getAlternateLanguageLinks)([lang('en_GB'), lang('fr_FR', true)], generateTranslationUrl);
73
+ expect(links).toMatchObject([{
74
+ href: 'http://localhost:3000/en/translationUrl/en-GB',
75
+ hrefLang: 'en'
76
+ }, {
77
+ href: 'http://localhost:3000/en/translationUrl/en-GB',
78
+ hrefLang: 'en-GB'
79
+ }, {
80
+ href: 'http://localhost:3000/fr/translationUrl/fr-FR',
81
+ hrefLang: 'fr'
82
+ }, {
83
+ href: 'http://localhost:3000/fr/translationUrl/fr-FR',
84
+ hrefLang: 'fr-FR'
85
+ }, {
86
+ href: 'http://localhost:3000/en/translationUrl/en-GB',
87
+ hrefLang: 'x-default'
88
+ }]);
89
+ });
90
+ it('should use default locale as x-default when there is eng locale', () => {
91
+ var links = (0, _getAlternateLanguageLinks.getAlternateLanguageLinks)([lang('ru_RU'), lang('fr_FR', true)], generateTranslationUrl);
92
+ expect(links).toMatchObject([{
93
+ href: 'http://localhost:3000/fr/translationUrl/fr-FR',
94
+ hrefLang: 'fr'
95
+ }, {
96
+ href: 'http://localhost:3000/fr/translationUrl/fr-FR',
97
+ hrefLang: 'fr-FR'
98
+ }, {
99
+ href: 'http://localhost:3000/ru/translationUrl/ru-RU',
100
+ hrefLang: 'ru'
101
+ }, {
102
+ href: 'http://localhost:3000/ru/translationUrl/ru-RU',
103
+ hrefLang: 'ru-RU'
104
+ }, {
105
+ href: 'http://localhost:3000/fr/translationUrl/fr-FR',
106
+ hrefLang: 'x-default'
107
+ }]);
108
+ });
109
+ it('should include provided region independent locale', () => {
110
+ var links = (0, _getAlternateLanguageLinks.getAlternateLanguageLinks)([lang('en_US'), lang('fr'), lang('fr_FR', true)], generateTranslationUrl);
111
+ expect(links).toMatchObject([{
112
+ href: 'http://localhost:3000/en/translationUrl/en-US',
113
+ hrefLang: 'en'
114
+ }, {
115
+ href: 'http://localhost:3000/en/translationUrl/en-US',
116
+ hrefLang: 'en-US'
117
+ }, {
118
+ href: 'http://localhost:3000/fr/translationUrl/fr',
119
+ hrefLang: 'fr'
120
+ }, {
121
+ href: 'http://localhost:3000/fr/translationUrl/fr-FR',
122
+ hrefLang: 'fr-FR'
123
+ }, {
124
+ href: 'http://localhost:3000/en/translationUrl/en-US',
125
+ hrefLang: 'x-default'
126
+ }]);
127
+ });
128
+ it('should use provided en region independent locale as x-default', () => {
129
+ var links = (0, _getAlternateLanguageLinks.getAlternateLanguageLinks)([lang('en'), lang('en_US'), lang('fr'), lang('fr_FR')], generateTranslationUrl);
130
+ expect(links).toMatchObject([{
131
+ href: 'http://localhost:3000/en/translationUrl/en',
132
+ hrefLang: 'en'
133
+ }, {
134
+ href: 'http://localhost:3000/en/translationUrl/en-US',
135
+ hrefLang: 'en-US'
136
+ }, {
137
+ href: 'http://localhost:3000/fr/translationUrl/fr',
138
+ hrefLang: 'fr'
139
+ }, {
140
+ href: 'http://localhost:3000/fr/translationUrl/fr-FR',
141
+ hrefLang: 'fr-FR'
142
+ }, {
143
+ href: 'http://localhost:3000/en/translationUrl/en',
144
+ hrefLang: 'x-default'
145
+ }]);
146
+ });
147
+ it('should fallback en link to en-US locale when there is en-GB locale', () => {
148
+ var links = (0, _getAlternateLanguageLinks.getAlternateLanguageLinks)([lang('en_GB'), lang('en_US')], generateTranslationUrl);
149
+ expect(links).toMatchObject([{
150
+ href: 'http://localhost:3000/en/translationUrl/en-US',
151
+ hrefLang: 'en'
152
+ }, {
153
+ href: 'http://localhost:3000/en/translationUrl/en-GB',
154
+ hrefLang: 'en-GB'
155
+ }, {
156
+ href: 'http://localhost:3000/en/translationUrl/en-US',
157
+ hrefLang: 'en-US'
158
+ }, {
159
+ href: 'http://localhost:3000/en/translationUrl/en-US',
160
+ hrefLang: 'x-default'
161
+ }]);
162
+ });
163
+ it('should should omit locales if getTranslationUrl is undefined', () => {
164
+ var links = (0, _getAlternateLanguageLinks.getAlternateLanguageLinks)([lang('en_US'), lang('fr'), lang('fr_FR', true)], locale => {
165
+ var translationUrl = _themeKitIntl.Locale.isEqual(locale, 'en-US') ? undefined : getTranslationUrl(locale);
166
+ if (translationUrl) {
167
+ return generateTranslationUrl(locale);
168
+ }
169
+ return undefined;
170
+ });
171
+ expect(links).toMatchObject([{
172
+ href: 'http://localhost:3000/fr/translationUrl/fr',
173
+ hrefLang: 'fr'
174
+ }, {
175
+ href: 'http://localhost:3000/fr/translationUrl/fr-FR',
176
+ hrefLang: 'fr-FR'
177
+ }, {
178
+ href: 'http://localhost:3000/fr/translationUrl/fr-FR',
179
+ hrefLang: 'x-default'
180
+ }]);
181
+ });
182
+ it('should should not duplicate links when equal languages passed', () => {
183
+ var links = (0, _getAlternateLanguageLinks.getAlternateLanguageLinks)([lang('en_GB'), lang('en_GB'), lang('en_US'), lang('en_US')], generateTranslationUrl);
184
+ expect(links).toMatchObject([{
185
+ href: 'http://localhost:3000/en/translationUrl/en-US',
186
+ hrefLang: 'en'
187
+ }, {
188
+ href: 'http://localhost:3000/en/translationUrl/en-GB',
189
+ hrefLang: 'en-GB'
190
+ }, {
191
+ href: 'http://localhost:3000/en/translationUrl/en-US',
192
+ hrefLang: 'en-US'
193
+ }, {
194
+ href: 'http://localhost:3000/en/translationUrl/en-US',
195
+ hrefLang: 'x-default'
196
+ }]);
197
+ });
198
+ });
@@ -0,0 +1,196 @@
1
+ import { Locale } from '@prezly/theme-kit-intl';
2
+ import { getAlternateLanguageLinks } from "./getAlternateLanguageLinks.mjs";
3
+ function lang(code) {
4
+ var isDefault = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
5
+ return {
6
+ code,
7
+ is_default: isDefault
8
+ };
9
+ }
10
+ function getTranslationUrl(locale) {
11
+ var {
12
+ isoCode
13
+ } = Locale.from(locale);
14
+ return "translationUrl/".concat(isoCode);
15
+ }
16
+ function generateTranslationUrl(locale) {
17
+ var translationUrl = getTranslationUrl(locale);
18
+ var {
19
+ lang: langCode
20
+ } = Locale.from(locale);
21
+ return "http://localhost:3000/".concat(langCode, "/").concat(translationUrl);
22
+ }
23
+ describe('getAlternateLanguageLinks', () => {
24
+ it('should handle one en-GB non-default language', () => {
25
+ var links = getAlternateLanguageLinks([lang('en_GB')], generateTranslationUrl);
26
+ expect(links).toMatchObject([{
27
+ href: 'http://localhost:3000/en/translationUrl/en-GB',
28
+ hrefLang: 'en'
29
+ }, {
30
+ href: 'http://localhost:3000/en/translationUrl/en-GB',
31
+ hrefLang: 'en-GB'
32
+ }, {
33
+ href: 'http://localhost:3000/en/translationUrl/en-GB',
34
+ hrefLang: 'x-default'
35
+ }]);
36
+ });
37
+ it('should handle one en-GB default language', () => {
38
+ var links = getAlternateLanguageLinks([lang('en_GB', true)], generateTranslationUrl);
39
+ expect(links).toMatchObject([{
40
+ href: 'http://localhost:3000/en/translationUrl/en-GB',
41
+ hrefLang: 'en'
42
+ }, {
43
+ href: 'http://localhost:3000/en/translationUrl/en-GB',
44
+ hrefLang: 'en-GB'
45
+ }, {
46
+ href: 'http://localhost:3000/en/translationUrl/en-GB',
47
+ hrefLang: 'x-default'
48
+ }]);
49
+ });
50
+ it('should handle two full locales', () => {
51
+ var links = getAlternateLanguageLinks([lang('en_GB', true), lang('fr_FR')], generateTranslationUrl);
52
+ expect(links).toMatchObject([{
53
+ href: 'http://localhost:3000/en/translationUrl/en-GB',
54
+ hrefLang: 'en'
55
+ }, {
56
+ href: 'http://localhost:3000/en/translationUrl/en-GB',
57
+ hrefLang: 'en-GB'
58
+ }, {
59
+ href: 'http://localhost:3000/fr/translationUrl/fr-FR',
60
+ hrefLang: 'fr'
61
+ }, {
62
+ href: 'http://localhost:3000/fr/translationUrl/fr-FR',
63
+ hrefLang: 'fr-FR'
64
+ }, {
65
+ href: 'http://localhost:3000/en/translationUrl/en-GB',
66
+ hrefLang: 'x-default'
67
+ }]);
68
+ });
69
+ it('should use en-GB locale as x-default even if other locale is set as default', () => {
70
+ var links = getAlternateLanguageLinks([lang('en_GB'), lang('fr_FR', true)], generateTranslationUrl);
71
+ expect(links).toMatchObject([{
72
+ href: 'http://localhost:3000/en/translationUrl/en-GB',
73
+ hrefLang: 'en'
74
+ }, {
75
+ href: 'http://localhost:3000/en/translationUrl/en-GB',
76
+ hrefLang: 'en-GB'
77
+ }, {
78
+ href: 'http://localhost:3000/fr/translationUrl/fr-FR',
79
+ hrefLang: 'fr'
80
+ }, {
81
+ href: 'http://localhost:3000/fr/translationUrl/fr-FR',
82
+ hrefLang: 'fr-FR'
83
+ }, {
84
+ href: 'http://localhost:3000/en/translationUrl/en-GB',
85
+ hrefLang: 'x-default'
86
+ }]);
87
+ });
88
+ it('should use default locale as x-default when there is eng locale', () => {
89
+ var links = getAlternateLanguageLinks([lang('ru_RU'), lang('fr_FR', true)], generateTranslationUrl);
90
+ expect(links).toMatchObject([{
91
+ href: 'http://localhost:3000/fr/translationUrl/fr-FR',
92
+ hrefLang: 'fr'
93
+ }, {
94
+ href: 'http://localhost:3000/fr/translationUrl/fr-FR',
95
+ hrefLang: 'fr-FR'
96
+ }, {
97
+ href: 'http://localhost:3000/ru/translationUrl/ru-RU',
98
+ hrefLang: 'ru'
99
+ }, {
100
+ href: 'http://localhost:3000/ru/translationUrl/ru-RU',
101
+ hrefLang: 'ru-RU'
102
+ }, {
103
+ href: 'http://localhost:3000/fr/translationUrl/fr-FR',
104
+ hrefLang: 'x-default'
105
+ }]);
106
+ });
107
+ it('should include provided region independent locale', () => {
108
+ var links = getAlternateLanguageLinks([lang('en_US'), lang('fr'), lang('fr_FR', true)], generateTranslationUrl);
109
+ expect(links).toMatchObject([{
110
+ href: 'http://localhost:3000/en/translationUrl/en-US',
111
+ hrefLang: 'en'
112
+ }, {
113
+ href: 'http://localhost:3000/en/translationUrl/en-US',
114
+ hrefLang: 'en-US'
115
+ }, {
116
+ href: 'http://localhost:3000/fr/translationUrl/fr',
117
+ hrefLang: 'fr'
118
+ }, {
119
+ href: 'http://localhost:3000/fr/translationUrl/fr-FR',
120
+ hrefLang: 'fr-FR'
121
+ }, {
122
+ href: 'http://localhost:3000/en/translationUrl/en-US',
123
+ hrefLang: 'x-default'
124
+ }]);
125
+ });
126
+ it('should use provided en region independent locale as x-default', () => {
127
+ var links = getAlternateLanguageLinks([lang('en'), lang('en_US'), lang('fr'), lang('fr_FR')], generateTranslationUrl);
128
+ expect(links).toMatchObject([{
129
+ href: 'http://localhost:3000/en/translationUrl/en',
130
+ hrefLang: 'en'
131
+ }, {
132
+ href: 'http://localhost:3000/en/translationUrl/en-US',
133
+ hrefLang: 'en-US'
134
+ }, {
135
+ href: 'http://localhost:3000/fr/translationUrl/fr',
136
+ hrefLang: 'fr'
137
+ }, {
138
+ href: 'http://localhost:3000/fr/translationUrl/fr-FR',
139
+ hrefLang: 'fr-FR'
140
+ }, {
141
+ href: 'http://localhost:3000/en/translationUrl/en',
142
+ hrefLang: 'x-default'
143
+ }]);
144
+ });
145
+ it('should fallback en link to en-US locale when there is en-GB locale', () => {
146
+ var links = getAlternateLanguageLinks([lang('en_GB'), lang('en_US')], generateTranslationUrl);
147
+ expect(links).toMatchObject([{
148
+ href: 'http://localhost:3000/en/translationUrl/en-US',
149
+ hrefLang: 'en'
150
+ }, {
151
+ href: 'http://localhost:3000/en/translationUrl/en-GB',
152
+ hrefLang: 'en-GB'
153
+ }, {
154
+ href: 'http://localhost:3000/en/translationUrl/en-US',
155
+ hrefLang: 'en-US'
156
+ }, {
157
+ href: 'http://localhost:3000/en/translationUrl/en-US',
158
+ hrefLang: 'x-default'
159
+ }]);
160
+ });
161
+ it('should should omit locales if getTranslationUrl is undefined', () => {
162
+ var links = getAlternateLanguageLinks([lang('en_US'), lang('fr'), lang('fr_FR', true)], locale => {
163
+ var translationUrl = Locale.isEqual(locale, 'en-US') ? undefined : getTranslationUrl(locale);
164
+ if (translationUrl) {
165
+ return generateTranslationUrl(locale);
166
+ }
167
+ return undefined;
168
+ });
169
+ expect(links).toMatchObject([{
170
+ href: 'http://localhost:3000/fr/translationUrl/fr',
171
+ hrefLang: 'fr'
172
+ }, {
173
+ href: 'http://localhost:3000/fr/translationUrl/fr-FR',
174
+ hrefLang: 'fr-FR'
175
+ }, {
176
+ href: 'http://localhost:3000/fr/translationUrl/fr-FR',
177
+ hrefLang: 'x-default'
178
+ }]);
179
+ });
180
+ it('should should not duplicate links when equal languages passed', () => {
181
+ var links = getAlternateLanguageLinks([lang('en_GB'), lang('en_GB'), lang('en_US'), lang('en_US')], generateTranslationUrl);
182
+ expect(links).toMatchObject([{
183
+ href: 'http://localhost:3000/en/translationUrl/en-US',
184
+ hrefLang: 'en'
185
+ }, {
186
+ href: 'http://localhost:3000/en/translationUrl/en-GB',
187
+ hrefLang: 'en-GB'
188
+ }, {
189
+ href: 'http://localhost:3000/en/translationUrl/en-US',
190
+ hrefLang: 'en-US'
191
+ }, {
192
+ href: 'http://localhost:3000/en/translationUrl/en-US',
193
+ hrefLang: 'x-default'
194
+ }]);
195
+ });
196
+ });
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "getAlternateLanguageLinks", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _getAlternateLanguageLinks.getAlternateLanguageLinks;
10
+ }
11
+ });
12
+ var _getAlternateLanguageLinks = require("./getAlternateLanguageLinks.cjs");
@@ -0,0 +1,2 @@
1
+ export { getAlternateLanguageLinks } from './getAlternateLanguageLinks';
2
+ export type { AlternateLanguageLink } from './types';
@@ -0,0 +1 @@
1
+ export { getAlternateLanguageLinks } from "./getAlternateLanguageLinks.mjs";
@@ -0,0 +1 @@
1
+ "use strict";
@@ -0,0 +1,6 @@
1
+ import type { Culture } from '@prezly/sdk';
2
+ export type AlternateLanguageLink = {
3
+ href: string;
4
+ hrefLang: Culture.IsoCode | 'x-default';
5
+ type: 'exact' | 'alias' | 'x-default';
6
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getFaviconUrl = getFaviconUrl;
7
+ exports.getLogoUrl = getLogoUrl;
8
+ exports.getOgImageUrl = getOgImageUrl;
9
+ var _uploadcare = require("@prezly/uploadcare");
10
+ var _constants = require("./constants.cjs");
11
+ function getLogoUrl(newsroom, previewSize) {
12
+ if (newsroom.newsroom_logo) {
13
+ var image = _uploadcare.UploadcareImage.createFromPrezlyStoragePayload(newsroom.newsroom_logo);
14
+ if (previewSize) {
15
+ return image.preview(previewSize, previewSize).cdnUrl;
16
+ }
17
+ return image.cdnUrl;
18
+ }
19
+ return '';
20
+ }
21
+ function getFaviconUrl(newsroom) {
22
+ var previewSize = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 400;
23
+ var imageObject = newsroom.icon || newsroom.square_logo;
24
+ if (imageObject) {
25
+ var image = _uploadcare.UploadcareImage.createFromPrezlyStoragePayload(imageObject);
26
+ return image.preview(previewSize, previewSize).cdnUrl;
27
+ }
28
+ return undefined;
29
+ }
30
+ function getOgImageUrl(newsroom, locale) {
31
+ var url = "".concat(_constants.OG_IMAGE_API_URL, "/").concat(newsroom.uuid);
32
+ if (locale) {
33
+ return "".concat(url, "?locale=").concat(locale.slug);
34
+ }
35
+ return url;
36
+ }
@@ -0,0 +1,5 @@
1
+ import type { Newsroom } from '@prezly/sdk';
2
+ import type { Locale } from '@prezly/theme-kit-intl';
3
+ export declare function getLogoUrl(newsroom: Pick<Newsroom, 'newsroom_logo'>, previewSize?: number): string;
4
+ export declare function getFaviconUrl(newsroom: Pick<Newsroom, 'icon' | 'square_logo'>, previewSize?: number): string | undefined;
5
+ export declare function getOgImageUrl(newsroom: Pick<Newsroom, 'uuid'>, locale?: Locale): string;
@@ -0,0 +1,28 @@
1
+ import { UploadcareImage } from '@prezly/uploadcare';
2
+ import { OG_IMAGE_API_URL } from "./constants.mjs";
3
+ export function getLogoUrl(newsroom, previewSize) {
4
+ if (newsroom.newsroom_logo) {
5
+ var image = UploadcareImage.createFromPrezlyStoragePayload(newsroom.newsroom_logo);
6
+ if (previewSize) {
7
+ return image.preview(previewSize, previewSize).cdnUrl;
8
+ }
9
+ return image.cdnUrl;
10
+ }
11
+ return '';
12
+ }
13
+ export function getFaviconUrl(newsroom) {
14
+ var previewSize = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 400;
15
+ var imageObject = newsroom.icon || newsroom.square_logo;
16
+ if (imageObject) {
17
+ var image = UploadcareImage.createFromPrezlyStoragePayload(imageObject);
18
+ return image.preview(previewSize, previewSize).cdnUrl;
19
+ }
20
+ return undefined;
21
+ }
22
+ export function getOgImageUrl(newsroom, locale) {
23
+ var url = "".concat(OG_IMAGE_API_URL, "/").concat(newsroom.uuid);
24
+ if (locale) {
25
+ return "".concat(url, "?locale=").concat(locale.slug);
26
+ }
27
+ return url;
28
+ }