@prezly/theme-kit-nextjs 3.2.3-0 → 3.2.3-1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/build/components-nextjs/PageSeo/PageSeo.js +7 -1
  2. package/build/components-nextjs/PageSeo/PageSeo.js.map +1 -1
  3. package/build/intl/getFallbackLocale.d.ts +5 -3
  4. package/build/intl/getFallbackLocale.js +10 -7
  5. package/build/intl/getFallbackLocale.js.map +1 -1
  6. package/build/intl/locale.d.ts +3 -9
  7. package/build/intl/localeObject.d.ts +3 -3
  8. package/build/intl/localeObject.js +5 -5
  9. package/build/intl/localeObject.js.map +1 -1
  10. package/build/seo/getAlternateLanguageLinks.d.ts +1 -1
  11. package/build/seo/getAlternateLanguageLinks.js +72 -37
  12. package/build/seo/getAlternateLanguageLinks.js.map +1 -1
  13. package/build/seo/utils/bindLanguagesWithLocales.d.ts +11 -0
  14. package/build/seo/utils/bindLanguagesWithLocales.js +23 -0
  15. package/build/seo/utils/bindLanguagesWithLocales.js.map +1 -0
  16. package/build/seo/utils/createAlternateLanguageLink.d.ts +1 -1
  17. package/build/seo/utils/createAlternateLanguageLink.js +3 -3
  18. package/build/seo/utils/createAlternateLanguageLink.js.map +1 -1
  19. package/build/tsconfig.tsbuildinfo +1 -1
  20. package/package.json +1 -1
  21. package/src/components-nextjs/PageSeo/PageSeo.tsx +13 -10
  22. package/src/intl/getFallbackLocale.ts +8 -5
  23. package/src/intl/locale.ts +3 -3
  24. package/src/intl/localeObject.ts +5 -5
  25. package/src/seo/getAlternateLanguageLinks.test.ts +37 -23
  26. package/src/seo/getAlternateLanguageLinks.ts +90 -47
  27. package/src/seo/utils/bindLanguagesWithLocales.ts +31 -0
  28. package/src/seo/utils/createAlternateLanguageLink.ts +3 -4
  29. package/build/seo/utils/getDefaultHrefLang.d.ts +0 -11
  30. package/build/seo/utils/getDefaultHrefLang.js +0 -28
  31. package/build/seo/utils/getDefaultHrefLang.js.map +0 -1
  32. package/build/seo/utils/mapLanguagesToLocales.d.ts +0 -4
  33. package/build/seo/utils/mapLanguagesToLocales.js +0 -24
  34. package/build/seo/utils/mapLanguagesToLocales.js.map +0 -1
  35. package/src/seo/utils/getDefaultHrefLang.ts +0 -57
  36. package/src/seo/utils/mapLanguagesToLocales.ts +0 -28
@@ -40,7 +40,13 @@ function PageSeo({ title, description, imageUrl, canonical, openGraph, twitter,
40
40
  return [];
41
41
  }
42
42
  const usedLanguages = (0, intl_1.getUsedLanguages)(languages);
43
- return (0, seo_1.getAlternateLanguageLinks)(usedLanguages, getTranslationUrl, (locale, translationUrl) => (0, getAbsoluteUrl_1.getAbsoluteUrl)(translationUrl, site.url, currentStory && translationUrl !== '/' ? false : getLinkLocaleSlug(locale)));
43
+ return (0, seo_1.getAlternateLanguageLinks)(usedLanguages, (locale) => {
44
+ const translationUrl = getTranslationUrl(locale);
45
+ if (!translationUrl) {
46
+ return undefined;
47
+ }
48
+ return (0, getAbsoluteUrl_1.getAbsoluteUrl)(translationUrl, site.url, currentStory && translationUrl !== '/' ? false : getLinkLocaleSlug(locale));
49
+ });
44
50
  }, [currentStory, getLinkLocaleSlug, getTranslationUrl, languages, site.url]);
45
51
  return ((0, jsx_runtime_1.jsx)(next_seo_1.NextSeo, { title: pageTitle, description: pageDescription, canonical: canonicalUrl, noindex: nextSeoProps.noindex ?? !site.is_indexable, nofollow: nextSeoProps.nofollow ?? !site.is_indexable, openGraph: {
46
52
  url: canonicalUrl,
@@ -1 +1 @@
1
- {"version":3,"file":"PageSeo.js","sourceRoot":"","sources":["../../../src/components-nextjs/PageSeo/PageSeo.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PageSeo.js","sourceRoot":"","sources":["../../../src/components-nextjs/PageSeo/PageSeo.tsx"],"names":[],"mappings":"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"}
@@ -1,8 +1,10 @@
1
1
  import type { LangCode } from './locale';
2
2
  import { LocaleObject } from './localeObject';
3
3
  /**
4
- * Fallback locales for each language.
5
- * For example, a story has no en(global) locale, then we can take some fallback locale from here.
4
+ * Fallback locales for each region independent locale.
5
+ * For example, a story has en-CA en-AU and en-GB locales. As you can see there is no region independent locale.
6
+ * We will use a list of possible fallbacks to determine region independent locale alias.
7
+ * In the provided example the result will be en-GB since it is defined in the localeFallback list
8
+ * If the list will be en-CA en-AU and en-US then the result will be en-US since it is the first one and hence takes precedence.
6
9
  */
7
- export declare const localeFallback: Record<LangCode, LocaleObject[]>;
8
10
  export declare function getFallbackLocale(langCode: LangCode, availableLocales: LocaleObject[]): LocaleObject | undefined;
@@ -1,17 +1,20 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getFallbackLocale = exports.localeFallback = void 0;
3
+ exports.getFallbackLocale = void 0;
4
4
  const localeObject_1 = require("./localeObject");
5
- /**
6
- * Fallback locales for each language.
7
- * For example, a story has no en(global) locale, then we can take some fallback locale from here.
8
- */
9
- exports.localeFallback = {
5
+ const localeFallback = {
10
6
  en: [localeObject_1.LocaleObject.fromAnyCode('en-US'), localeObject_1.LocaleObject.fromAnyCode('en-GB')],
11
7
  fr: [localeObject_1.LocaleObject.fromAnyCode('fr-FR'), localeObject_1.LocaleObject.fromAnyCode('fr-CA')],
12
8
  };
9
+ /**
10
+ * Fallback locales for each region independent locale.
11
+ * For example, a story has en-CA en-AU and en-GB locales. As you can see there is no region independent locale.
12
+ * We will use a list of possible fallbacks to determine region independent locale alias.
13
+ * In the provided example the result will be en-GB since it is defined in the localeFallback list
14
+ * If the list will be en-CA en-AU and en-US then the result will be en-US since it is the first one and hence takes precedence.
15
+ */
13
16
  function getFallbackLocale(langCode, availableLocales) {
14
- const fallbacks = exports.localeFallback[langCode];
17
+ const fallbacks = localeFallback[langCode];
15
18
  if (!fallbacks) {
16
19
  return undefined;
17
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"getFallbackLocale.js","sourceRoot":"","sources":["../../src/intl/getFallbackLocale.ts"],"names":[],"mappings":";;;AACA,iDAA8C;AAE9C;;;GAGG;AACU,QAAA,cAAc,GAAqC;IAC5D,EAAE,EAAE,CAAC,2BAAY,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,2BAAY,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAC1E,EAAE,EAAE,CAAC,2BAAY,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,2BAAY,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;CAC7E,CAAC;AAEF,SAAgB,iBAAiB,CAC7B,QAAkB,EAClB,gBAAgC;IAEhC,MAAM,SAAS,GAAG,sBAAc,CAAC,QAAQ,CAAC,CAAC;IAE3C,IAAI,CAAC,SAAS,EAAE;QACZ,OAAO,SAAS,CAAC;KACpB;IAED,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAC/B,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAC7E,CAAC;AACN,CAAC;AAbD,8CAaC"}
1
+ {"version":3,"file":"getFallbackLocale.js","sourceRoot":"","sources":["../../src/intl/getFallbackLocale.ts"],"names":[],"mappings":";;;AACA,iDAA8C;AAE9C,MAAM,cAAc,GAAqC;IACrD,EAAE,EAAE,CAAC,2BAAY,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,2BAAY,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAC1E,EAAE,EAAE,CAAC,2BAAY,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,2BAAY,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;CAC7E,CAAC;AAEF;;;;;;GAMG;AACH,SAAgB,iBAAiB,CAC7B,QAAkB,EAClB,gBAAgC;IAEhC,MAAM,SAAS,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IAE3C,IAAI,CAAC,SAAS,EAAE;QACZ,OAAO,SAAS,CAAC;KACpB;IAED,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAC/B,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAC7E,CAAC;AACN,CAAC;AAbD,8CAaC"}
@@ -4,15 +4,9 @@ import type { ParsedUrlQuery } from 'querystring';
4
4
  import { LocaleObject } from './localeObject';
5
5
  export declare const DEFAULT_LOCALE = "en";
6
6
  export declare const DUMMY_DEFAULT_LOCALE = "qps-ploc";
7
- export type LangCode = string & {
8
- __BRAND__?: 'langCode';
9
- };
10
- export type RegionCode = string & {
11
- __BRAND__?: 'regionCode';
12
- };
13
- export type LocaleCode = string & {
14
- __BRAND__?: 'localeCode';
15
- };
7
+ export type LangCode = string;
8
+ export type RegionCode = string;
9
+ export type LocaleCode = string;
16
10
  /**
17
11
  * Use this function to determine which translations file you should load from `@prezly/themes-intl-mesages` package.
18
12
  * See https://github.com/prezly/theme-nextjs-bea/blob/main/utils/lang.ts for a usage example.
@@ -10,10 +10,10 @@ export declare class LocaleObject {
10
10
  */
11
11
  private localeCode;
12
12
  /**
13
- * Whether the locale is global (without region/culture part).
14
- * I.E. `en` is global, while `en-US` is not.
13
+ * Whether the locale is region independent (without region/culture part).
14
+ * I.E. `en` is region independent, while `en-US` is not.
15
15
  */
16
- isGlobal: boolean;
16
+ isRegionIndependent: boolean;
17
17
  private constructor();
18
18
  /**
19
19
  * @param localeCode Locale code in any of the formats below.
@@ -17,23 +17,23 @@ class LocaleObject {
17
17
  */
18
18
  localeCode;
19
19
  /**
20
- * Whether the locale is global (without region/culture part).
21
- * I.E. `en` is global, while `en-US` is not.
20
+ * Whether the locale is region independent (without region/culture part).
21
+ * I.E. `en` is region independent, while `en-US` is not.
22
22
  */
23
- isGlobal;
23
+ isRegionIndependent;
24
24
  constructor(localeCode) {
25
25
  if (!/^([a-z]{2,3})(-[a-z\d]{1,4})?$/i.test(localeCode)) {
26
26
  throw new Error('Invalid locale code provided!');
27
27
  }
28
28
  const [language, region] = localeCode.split('-');
29
29
  if (region) {
30
- this.isGlobal = false;
30
+ this.isRegionIndependent = false;
31
31
  // Workaround for `zh-Hant` locale, which is the only locale with non-uppercase region part
32
32
  const regionSuffix = region === 'hant' ? 'Hant' : region.toUpperCase();
33
33
  this.localeCode = [language, regionSuffix].join('-');
34
34
  }
35
35
  else {
36
- this.isGlobal = true;
36
+ this.isRegionIndependent = true;
37
37
  this.localeCode = language;
38
38
  }
39
39
  }
@@ -1 +1 @@
1
- {"version":3,"file":"localeObject.js","sourceRoot":"","sources":["../../src/intl/localeObject.ts"],"names":[],"mappings":";;;;;;AAAA,kEAA0C;AAE1C;;;;GAIG;AACH,MAAa,YAAY;IACrB;;;OAGG;IACK,UAAU,CAAS;IAE3B;;;OAGG;IACI,QAAQ,CAAU;IAEzB,YAAoB,UAAkB;QAClC,IAAI,CAAC,iCAAiC,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YACrD,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;SACpD;QAED,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAEjD,IAAI,MAAM,EAAE;YACR,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;YACtB,2FAA2F;YAC3F,MAAM,YAAY,GAAG,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YAEvE,IAAI,CAAC,UAAU,GAAG,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SACxD;aAAM;YACH,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC;SAC9B;IACL,CAAC;IAED;;;;;;OAMG;IACI,MAAM,CAAC,WAAW,CAAC,UAAkB;QACxC,MAAM,aAAa,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACjE,MAAM,SAAS,GAAG,sBAAY,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC;QAEtE,IAAI,CAAC,SAAS,EAAE;YACZ,MAAM,IAAI,KAAK,CAAC,sCAAsC,aAAa,GAAG,CAAC,CAAC;SAC3E;QAED,OAAO,IAAI,YAAY,CAAC,SAAS,CAAC,CAAC;IACvC,CAAC;IAED;;OAEG;IACI,YAAY;QACf,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;IAED;;OAEG;IACI,gBAAgB;QACnB,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC7C,CAAC;IAED;;OAEG;IACI,SAAS;QACZ,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;IACzC,CAAC;IAED;;OAEG;IACI,qBAAqB;QACxB,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAE9C,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED;;OAEG;IACI,YAAY;QACf,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAEtD,IAAI,CAAC,MAAM,EAAE;YACT,OAAO,QAAQ,CAAC,WAAW,EAAE,CAAC;SACjC;QAED,OAAO,MAAM,CAAC,WAAW,EAAE,CAAC;IAChC,CAAC;IAED;;OAEG;IACI,OAAO,CAAC,aAA2B;QACtC,OAAO,aAAa,CAAC,YAAY,EAAE,KAAK,IAAI,CAAC,UAAU,CAAC;IAC5D,CAAC;CACJ;AAnGD,oCAmGC"}
1
+ {"version":3,"file":"localeObject.js","sourceRoot":"","sources":["../../src/intl/localeObject.ts"],"names":[],"mappings":";;;;;;AAAA,kEAA0C;AAE1C;;;;GAIG;AACH,MAAa,YAAY;IACrB;;;OAGG;IACK,UAAU,CAAS;IAE3B;;;OAGG;IACI,mBAAmB,CAAU;IAEpC,YAAoB,UAAkB;QAClC,IAAI,CAAC,iCAAiC,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YACrD,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;SACpD;QAED,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAEjD,IAAI,MAAM,EAAE;YACR,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;YACjC,2FAA2F;YAC3F,MAAM,YAAY,GAAG,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YAEvE,IAAI,CAAC,UAAU,GAAG,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SACxD;aAAM;YACH,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;YAChC,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC;SAC9B;IACL,CAAC;IAED;;;;;;OAMG;IACI,MAAM,CAAC,WAAW,CAAC,UAAkB;QACxC,MAAM,aAAa,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACjE,MAAM,SAAS,GAAG,sBAAY,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC;QAEtE,IAAI,CAAC,SAAS,EAAE;YACZ,MAAM,IAAI,KAAK,CAAC,sCAAsC,aAAa,GAAG,CAAC,CAAC;SAC3E;QAED,OAAO,IAAI,YAAY,CAAC,SAAS,CAAC,CAAC;IACvC,CAAC;IAED;;OAEG;IACI,YAAY;QACf,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;IAED;;OAEG;IACI,gBAAgB;QACnB,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC7C,CAAC;IAED;;OAEG;IACI,SAAS;QACZ,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;IACzC,CAAC;IAED;;OAEG;IACI,qBAAqB;QACxB,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAE9C,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED;;OAEG;IACI,YAAY;QACf,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAEtD,IAAI,CAAC,MAAM,EAAE;YACT,OAAO,QAAQ,CAAC,WAAW,EAAE,CAAC;SACjC;QAED,OAAO,MAAM,CAAC,WAAW,EAAE,CAAC;IAChC,CAAC;IAED;;OAEG;IACI,OAAO,CAAC,aAA2B;QACtC,OAAO,aAAa,CAAC,YAAY,EAAE,KAAK,IAAI,CAAC,UAAU,CAAC;IAC5D,CAAC;CACJ;AAnGD,oCAmGC"}
@@ -1,4 +1,4 @@
1
1
  import type { NewsroomLanguageSettings } from '@prezly/sdk';
2
2
  import type { AlternateLanguageLink } from '../components-nextjs/PageSeo';
3
3
  import type { LocaleObject } from '../intl';
4
- export declare function getAlternateLanguageLinks(languages: NewsroomLanguageSettings[], getTranslationUrl: (locale: LocaleObject) => string | undefined, createHref: (locale: LocaleObject, translationUrl: string) => string): AlternateLanguageLink[];
4
+ export declare function getAlternateLanguageLinks(availableLanguages: NewsroomLanguageSettings[], generateTranslationUrl: (locale: LocaleObject) => string | undefined): AlternateLanguageLink[];
@@ -2,48 +2,83 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getAlternateLanguageLinks = void 0;
4
4
  const intl_1 = require("../intl");
5
+ const bindLanguagesWithLocales_1 = require("./utils/bindLanguagesWithLocales");
5
6
  const createAlternateLanguageLink_1 = require("./utils/createAlternateLanguageLink");
6
- const getDefaultHrefLang_1 = require("./utils/getDefaultHrefLang");
7
- const mapLanguagesToLocales_1 = require("./utils/mapLanguagesToLocales");
8
- function getAlternateLanguageLinks(languages, getTranslationUrl, createHref) {
9
- const alternateLanguageFallbackGlobalLinks = [];
10
- const alternateLanguageLocales = [];
11
- const [localesByLangCode, defaultLangLocale] = (0, mapLanguagesToLocales_1.mapLanguagesToLocales)(languages);
12
- localesByLangCode.forEach((locales, globalLocaleCode) => {
13
- let hasGlobalLocale = false;
14
- locales.forEach((locale) => {
15
- alternateLanguageLocales.push(locale);
16
- if (!hasGlobalLocale && locale.isGlobal) {
17
- hasGlobalLocale = true;
7
+ function getAlternateLanguageLinks(availableLanguages, generateTranslationUrl) {
8
+ const languagesWithLocales = (0, bindLanguagesWithLocales_1.bindLanguagesWithLocales)(availableLanguages);
9
+ const hrefLangLinks = [];
10
+ function pushLocaleToLinks(locale, hrefLang) {
11
+ const link = (0, createAlternateLanguageLink_1.createAlternateLanguageLink)(locale, generateTranslationUrl);
12
+ if (!link) {
13
+ return;
14
+ }
15
+ if (hrefLang) {
16
+ hrefLangLinks.push({ ...link, hrefLang });
17
+ }
18
+ else {
19
+ hrefLangLinks.push(link);
20
+ }
21
+ }
22
+ function populateDirectLinks() {
23
+ languagesWithLocales.forEach((binds) => binds.forEach(({ locale }) => pushLocaleToLinks(locale)));
24
+ }
25
+ function populateRegionIndependentLinks() {
26
+ languagesWithLocales.forEach((binds, regionIndependentLocaleCode) => {
27
+ // When there is no region independent locale of provided locales
28
+ // we still need something as a region independent locale
29
+ const localesArray = Array.from(binds.values()).map(({ locale }) => locale);
30
+ const hasRegionIndependentLocale = localesArray.some((locale) => locale.isRegionIndependent);
31
+ if (hasRegionIndependentLocale) {
32
+ return;
18
33
  }
19
- });
20
- if (!hasGlobalLocale) {
21
- const localesArray = Array.from(locales.values());
22
- const fallback = (0, intl_1.getFallbackLocale)(globalLocaleCode, localesArray) ?? localesArray.at(0);
34
+ // Try to find some possible fallback for the regionIndependentLocaleCode from hardcoded list
35
+ // We try to find fallback from provided translations of current regionIndependentLocaleCode
36
+ // If there is no defined fallback in the list we will use just first translation as a region independent translation
37
+ const fallback = (0, intl_1.getFallbackLocale)(regionIndependentLocaleCode, localesArray) ?? localesArray.at(0);
23
38
  if (fallback) {
24
- const fallbackLink = (0, createAlternateLanguageLink_1.createAlternateLanguageLink)(fallback, getTranslationUrl, createHref);
25
- if (fallbackLink) {
26
- alternateLanguageFallbackGlobalLinks.push({
27
- ...fallbackLink,
28
- hrefLang: globalLocaleCode,
29
- });
30
- }
39
+ pushLocaleToLinks(fallback, regionIndependentLocaleCode);
31
40
  }
41
+ });
42
+ }
43
+ function populateDefault() {
44
+ // We use english locale as fallback since English is the most common language
45
+ const engFallback = 'en';
46
+ const defaultHrefLang = 'x-default';
47
+ let isDefaultAddedToLinks = false;
48
+ // First we try to find region independent english locale (en)
49
+ // If the story has just region independent `en` translation we will use it as default hreflang
50
+ languagesWithLocales.forEach((binds) => binds.forEach(({ locale }) => {
51
+ if (locale.isRegionIndependent && locale.toNeutralLanguageCode() === engFallback) {
52
+ pushLocaleToLinks(locale, defaultHrefLang);
53
+ isDefaultAddedToLinks = true;
54
+ }
55
+ }));
56
+ if (!isDefaultAddedToLinks) {
57
+ // If there is no explicit region independent `en` translation for this story
58
+ // we will try to find some link that already has `en` fallback
59
+ const fallbackFromRegionIndependentLocales = hrefLangLinks.find((alternate) => alternate.hrefLang === engFallback);
60
+ if (fallbackFromRegionIndependentLocales) {
61
+ hrefLangLinks.push({
62
+ ...fallbackFromRegionIndependentLocales,
63
+ hrefLang: defaultHrefLang,
64
+ });
65
+ isDefaultAddedToLinks = true;
66
+ }
67
+ }
68
+ if (!isDefaultAddedToLinks) {
69
+ // If there is no english locale at all we will use is_default language (provided from server)
70
+ languagesWithLocales.forEach((binds) => binds.forEach(({ locale, language }) => {
71
+ if (language.is_default) {
72
+ pushLocaleToLinks(locale, defaultHrefLang);
73
+ isDefaultAddedToLinks = true;
74
+ }
75
+ }));
32
76
  }
33
- });
34
- let languageAlternates = alternateLanguageLocales.map((locale) => (0, createAlternateLanguageLink_1.createAlternateLanguageLink)(locale, getTranslationUrl, createHref));
35
- languageAlternates = languageAlternates.concat(alternateLanguageFallbackGlobalLinks);
36
- const xDefault = (0, getDefaultHrefLang_1.getDefaultHrefLang)({
37
- alternateLanguageLocales,
38
- alternateLanguageFallbackGlobalLinks,
39
- defaultLangLocale,
40
- getTranslationUrl,
41
- createHref,
42
- });
43
- languageAlternates.push(xDefault);
44
- return languageAlternates
45
- .filter((link) => Boolean(link))
46
- .sort((a, b) => a.hrefLang.localeCompare(b.hrefLang));
77
+ }
78
+ populateDirectLinks();
79
+ populateRegionIndependentLinks();
80
+ populateDefault();
81
+ return hrefLangLinks.sort((a, b) => a.hrefLang.localeCompare(b.hrefLang));
47
82
  }
48
83
  exports.getAlternateLanguageLinks = getAlternateLanguageLinks;
49
84
  //# sourceMappingURL=getAlternateLanguageLinks.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getAlternateLanguageLinks.js","sourceRoot":"","sources":["../../src/seo/getAlternateLanguageLinks.ts"],"names":[],"mappings":";;;AAIA,kCAA4C;AAE5C,qFAAkF;AAClF,mEAAgE;AAChE,yEAAsE;AAEtE,SAAgB,yBAAyB,CACrC,SAAqC,EACrC,iBAA+D,EAC/D,UAAoE;IAEpE,MAAM,oCAAoC,GAA4B,EAAE,CAAC;IACzE,MAAM,wBAAwB,GAAmB,EAAE,CAAC;IACpD,MAAM,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,GAAG,IAAA,6CAAqB,EAAC,SAAS,CAAC,CAAC;IAEhF,iBAAiB,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,gBAAgB,EAAE,EAAE;QACpD,IAAI,eAAe,GAAG,KAAK,CAAC;QAE5B,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YACvB,wBAAwB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAEtC,IAAI,CAAC,eAAe,IAAI,MAAM,CAAC,QAAQ,EAAE;gBACrC,eAAe,GAAG,IAAI,CAAC;aAC1B;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,eAAe,EAAE;YAClB,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;YAClD,MAAM,QAAQ,GACV,IAAA,wBAAiB,EAAC,gBAAgB,EAAE,YAAY,CAAC,IAAI,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAE5E,IAAI,QAAQ,EAAE;gBACV,MAAM,YAAY,GAAG,IAAA,yDAA2B,EAC5C,QAAQ,EACR,iBAAiB,EACjB,UAAU,CACb,CAAC;gBAEF,IAAI,YAAY,EAAE;oBACd,oCAAoC,CAAC,IAAI,CAAC;wBACtC,GAAG,YAAY;wBACf,QAAQ,EAAE,gBAAgB;qBAC7B,CAAC,CAAC;iBACN;aACJ;SACJ;IACL,CAAC,CAAC,CAAC;IAEH,IAAI,kBAAkB,GAA6C,wBAAwB,CAAC,GAAG,CAC3F,CAAC,MAAM,EAAE,EAAE,CAAC,IAAA,yDAA2B,EAAC,MAAM,EAAE,iBAAiB,EAAE,UAAU,CAAC,CACjF,CAAC;IAEF,kBAAkB,GAAG,kBAAkB,CAAC,MAAM,CAAC,oCAAoC,CAAC,CAAC;IAErF,MAAM,QAAQ,GAAG,IAAA,uCAAkB,EAAC;QAChC,wBAAwB;QACxB,oCAAoC;QACpC,iBAAiB;QACjB,iBAAiB;QACjB,UAAU;KACb,CAAC,CAAC;IAEH,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAElC,OAAO,kBAAkB;SACpB,MAAM,CAAC,CAAC,IAAI,EAA2C,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;SACxE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC9D,CAAC;AA7DD,8DA6DC"}
1
+ {"version":3,"file":"getAlternateLanguageLinks.js","sourceRoot":"","sources":["../../src/seo/getAlternateLanguageLinks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { NewsroomLanguageSettings } from '@prezly/sdk';
2
+ import { LocaleObject } from '../../intl';
3
+ interface LocaleWithLanguage {
4
+ language: NewsroomLanguageSettings;
5
+ locale: LocaleObject;
6
+ }
7
+ /**
8
+ * Group languages by their region independent language code (e.g. "en" for "en-US" and "en-GB").
9
+ */
10
+ export declare function bindLanguagesWithLocales(languages: NewsroomLanguageSettings[]): Map<string, Map<string, LocaleWithLanguage>>;
11
+ export {};
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.bindLanguagesWithLocales = void 0;
4
+ const intl_1 = require("../../intl");
5
+ /**
6
+ * Group languages by their region independent language code (e.g. "en" for "en-US" and "en-GB").
7
+ */
8
+ function bindLanguagesWithLocales(languages) {
9
+ const localesByLangCode = new Map();
10
+ languages.forEach((language) => {
11
+ const languageLocale = intl_1.LocaleObject.fromAnyCode(language.code);
12
+ const regionIndependentLanguageCode = languageLocale.toNeutralLanguageCode();
13
+ let currentLocale = localesByLangCode.get(regionIndependentLanguageCode);
14
+ if (!currentLocale) {
15
+ currentLocale = new Map();
16
+ localesByLangCode.set(regionIndependentLanguageCode, currentLocale);
17
+ }
18
+ currentLocale.set(languageLocale.toHyphenCode(), { language, locale: languageLocale });
19
+ });
20
+ return localesByLangCode;
21
+ }
22
+ exports.bindLanguagesWithLocales = bindLanguagesWithLocales;
23
+ //# sourceMappingURL=bindLanguagesWithLocales.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bindLanguagesWithLocales.js","sourceRoot":"","sources":["../../../src/seo/utils/bindLanguagesWithLocales.ts"],"names":[],"mappings":";;;AAGA,qCAA0C;AAO1C;;GAEG;AACH,SAAgB,wBAAwB,CAAC,SAAqC;IAC1E,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAiD,CAAC;IAEnF,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;QAC3B,MAAM,cAAc,GAAG,mBAAY,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC/D,MAAM,6BAA6B,GAAG,cAAc,CAAC,qBAAqB,EAAE,CAAC;QAC7E,IAAI,aAAa,GAAG,iBAAiB,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;QAEzE,IAAI,CAAC,aAAa,EAAE;YAChB,aAAa,GAAG,IAAI,GAAG,EAAE,CAAC;YAC1B,iBAAiB,CAAC,GAAG,CAAC,6BAA6B,EAAE,aAAa,CAAC,CAAC;SACvE;QAED,aAAa,CAAC,GAAG,CAAC,cAAc,CAAC,YAAY,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC;IAC3F,CAAC,CAAC,CAAC;IAEH,OAAO,iBAAiB,CAAC;AAC7B,CAAC;AAjBD,4DAiBC"}
@@ -1,5 +1,5 @@
1
1
  import type { LocaleObject } from '../../intl';
2
- export declare function createAlternateLanguageLink(locale: LocaleObject, getTranslationUrl: (locale: LocaleObject) => string | undefined, createHref: (locale: LocaleObject, translationUrl: string) => string): {
2
+ export declare function createAlternateLanguageLink(locale: LocaleObject, generateTranslationUrl: (locale: LocaleObject) => string | undefined): {
3
3
  hrefLang: string;
4
4
  href: string;
5
5
  } | undefined;
@@ -1,14 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createAlternateLanguageLink = void 0;
4
- function createAlternateLanguageLink(locale, getTranslationUrl, createHref) {
5
- const translationUrl = getTranslationUrl(locale);
4
+ function createAlternateLanguageLink(locale, generateTranslationUrl) {
5
+ const translationUrl = generateTranslationUrl(locale);
6
6
  if (!translationUrl) {
7
7
  return undefined;
8
8
  }
9
9
  return {
10
10
  hrefLang: locale.toHyphenCode(),
11
- href: createHref(locale, translationUrl),
11
+ href: translationUrl,
12
12
  };
13
13
  }
14
14
  exports.createAlternateLanguageLink = createAlternateLanguageLink;
@@ -1 +1 @@
1
- {"version":3,"file":"createAlternateLanguageLink.js","sourceRoot":"","sources":["../../../src/seo/utils/createAlternateLanguageLink.ts"],"names":[],"mappings":";;;AAEA,SAAgB,2BAA2B,CACvC,MAAoB,EACpB,iBAA+D,EAC/D,UAAoE;IAEpE,MAAM,cAAc,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAEjD,IAAI,CAAC,cAAc,EAAE;QACjB,OAAO,SAAS,CAAC;KACpB;IAED,OAAO;QACH,QAAQ,EAAE,MAAM,CAAC,YAAY,EAAE;QAC/B,IAAI,EAAE,UAAU,CAAC,MAAM,EAAE,cAAc,CAAC;KAC3C,CAAC;AACN,CAAC;AAfD,kEAeC"}
1
+ {"version":3,"file":"createAlternateLanguageLink.js","sourceRoot":"","sources":["../../../src/seo/utils/createAlternateLanguageLink.ts"],"names":[],"mappings":";;;AAEA,SAAgB,2BAA2B,CACvC,MAAoB,EACpB,sBAAoE;IAEpE,MAAM,cAAc,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAEtD,IAAI,CAAC,cAAc,EAAE;QACjB,OAAO,SAAS,CAAC;KACpB;IAED,OAAO;QACH,QAAQ,EAAE,MAAM,CAAC,YAAY,EAAE;QAC/B,IAAI,EAAE,cAAc;KACvB,CAAC;AACN,CAAC;AAdD,kEAcC"}