@prezly/theme-kit-nextjs 2.0.0-0 → 2.0.0-2

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 (95) hide show
  1. package/README.md +8 -13
  2. package/build/@types/global.d.js +1 -0
  3. package/build/adapter-nextjs/api-handlers/fetchGalleries.js +26 -18
  4. package/build/adapter-nextjs/api-handlers/fetchStories.js +36 -20
  5. package/build/adapter-nextjs/api-handlers/index.js +2 -3
  6. package/build/adapter-nextjs/getNewsroomServerSideProps.js +15 -10
  7. package/build/adapter-nextjs/getNewsroomStaticProps.js +14 -10
  8. package/build/adapter-nextjs/index.js +6 -7
  9. package/build/adapter-nextjs/page-props/category.js +115 -91
  10. package/build/adapter-nextjs/page-props/gallery.js +85 -61
  11. package/build/adapter-nextjs/page-props/galleryAlbum.js +61 -44
  12. package/build/adapter-nextjs/page-props/home.js +81 -62
  13. package/build/adapter-nextjs/page-props/index.js +8 -9
  14. package/build/adapter-nextjs/page-props/lib/types.js +1 -2
  15. package/build/adapter-nextjs/page-props/search.js +23 -24
  16. package/build/adapter-nextjs/page-props/sitemap/SitemapBuilder.js +28 -45
  17. package/build/adapter-nextjs/page-props/sitemap/createPaths.js +12 -14
  18. package/build/adapter-nextjs/page-props/sitemap/getServerSideProps.js +32 -30
  19. package/build/adapter-nextjs/page-props/sitemap/index.js +4 -5
  20. package/build/adapter-nextjs/page-props/sitemap/types.js +1 -2
  21. package/build/adapter-nextjs/page-props/story.js +74 -55
  22. package/build/adapter-nextjs/page-props/storyPreview.js +26 -21
  23. package/build/adapter-nextjs/processRequest.js +33 -20
  24. package/build/adapter-nextjs/processStaticRequest.js +18 -11
  25. package/build/components-nextjs/PageSeo/PageSeo.js +81 -71
  26. package/build/components-nextjs/PageSeo/index.js +2 -3
  27. package/build/components-nextjs/PageSeo/lib/getAbsoluteUrl.js +4 -5
  28. package/build/components-nextjs/PageSeo/lib/types.js +1 -2
  29. package/build/components-nextjs/StorySeo/StorySeo.js +67 -41
  30. package/build/components-nextjs/StorySeo/index.js +1 -2
  31. package/build/components-nextjs/document.js +29 -19
  32. package/build/components-nextjs/index.js +3 -4
  33. package/build/data-fetching/api/PrezlyApi.js +205 -185
  34. package/build/data-fetching/api/getPrezlyApi.js +20 -16
  35. package/build/data-fetching/api/index.js +1 -2
  36. package/build/data-fetching/api/queries.js +71 -34
  37. package/build/data-fetching/index.js +3 -4
  38. package/build/data-fetching/lib/getAlgoliaSettings.js +21 -17
  39. package/build/data-fetching/lib/getEnvVariables.js +33 -29
  40. package/build/data-fetching/lib/index.js +4 -5
  41. package/build/data-fetching/lib/isSdkError.js +2 -3
  42. package/build/data-fetching/lib/isUuid.js +2 -3
  43. package/build/data-fetching/types.js +1 -2
  44. package/build/index.js +9 -10
  45. package/build/infinite-loading/index.js +4 -5
  46. package/build/infinite-loading/types.js +1 -2
  47. package/build/infinite-loading/useInfiniteGalleriesLoading.js +41 -32
  48. package/build/infinite-loading/useInfiniteLoading.js +48 -37
  49. package/build/infinite-loading/useInfiniteStoriesLoading.js +54 -44
  50. package/build/intl/index.d.ts +1 -1
  51. package/build/intl/index.js +4 -5
  52. package/build/intl/index.js.map +1 -1
  53. package/build/intl/languages.js +135 -97
  54. package/build/intl/languages.js.map +1 -1
  55. package/build/intl/locale.d.ts +0 -1
  56. package/build/intl/locale.js +47 -97
  57. package/build/intl/locale.js.map +1 -1
  58. package/build/intl/localeConfig.d.ts +3 -1
  59. package/build/intl/localeConfig.js +20 -13
  60. package/build/intl/localeConfig.js.map +1 -1
  61. package/build/intl/localeList.js +1 -108
  62. package/build/intl/localeObject.js +79 -74
  63. package/build/intl/localeObject.js.map +1 -1
  64. package/build/newsroom-context/context.js +34 -20
  65. package/build/newsroom-context/hooks/index.js +11 -12
  66. package/build/newsroom-context/hooks/useAlgoliaSettings.js +4 -5
  67. package/build/newsroom-context/hooks/useCategories.js +4 -5
  68. package/build/newsroom-context/hooks/useCompanyInformation.js +4 -5
  69. package/build/newsroom-context/hooks/useCurrentCategory.js +4 -5
  70. package/build/newsroom-context/hooks/useCurrentLocale.js +4 -5
  71. package/build/newsroom-context/hooks/useCurrentStory.js +4 -5
  72. package/build/newsroom-context/hooks/useGetLinkLocaleSlug.js +15 -15
  73. package/build/newsroom-context/hooks/useGetTranslationUrl.js +48 -44
  74. package/build/newsroom-context/hooks/useLanguages.js +4 -5
  75. package/build/newsroom-context/hooks/useNewsroom.js +4 -5
  76. package/build/newsroom-context/hooks/useNewsroomContext.js +9 -10
  77. package/build/newsroom-context/index.js +2 -3
  78. package/build/sentry/client.js +3 -4
  79. package/build/sentry/common.js +25 -24
  80. package/build/sentry/index.js +2 -3
  81. package/build/sentry/server.js +3 -4
  82. package/build/types.js +1 -2
  83. package/build/utils/boilerplate.js +4 -13
  84. package/build/utils/constants.js +1 -2
  85. package/build/utils/getAssetsUrl.js +3 -4
  86. package/build/utils/getDataRequestLink.js +5 -7
  87. package/build/utils/getLocalizedCategoryData.js +30 -24
  88. package/build/utils/getNewsroomLogoUrl.js +12 -13
  89. package/build/utils/getPrivacyPortalUrl.js +10 -8
  90. package/build/utils/getStoryPublicationDate.js +8 -9
  91. package/build/utils/getUploadcareGroupUrl.js +4 -5
  92. package/build/utils/index.js +10 -11
  93. package/build/utils/isEmbargoStory.js +2 -3
  94. package/package.json +17 -2
  95. package/build/tsconfig.tsbuildinfo +0 -1
@@ -1,9 +1,14 @@
1
- import { DUMMY_DEFAULT_LOCALE } from './locale';
2
- import { LocaleObject } from './localeObject';
1
+ import { DUMMY_DEFAULT_LOCALE } from "./localeConfig.js";
2
+ import { LocaleObject } from "./localeObject.js";
3
3
  function isOnlyCulture(culture, languages) {
4
- const numberOfLanguages = languages.filter(({ locale: { language_code } }) => language_code === culture.language_code).length;
5
- return numberOfLanguages === 1;
4
+ const numberOfLanguages = languages.filter(({
5
+ locale: {
6
+ language_code
7
+ }
8
+ }) => language_code === culture.language_code).length;
9
+ return numberOfLanguages === 1;
6
10
  }
11
+
7
12
  /**
8
13
  * @returns the display name of the locale in its native language
9
14
  *
@@ -17,107 +22,135 @@ function isOnlyCulture(culture, languages) {
17
22
  * - -> English (Global), English (UK), Spanish
18
23
  */
19
24
  export function getLanguageDisplayName(language, languages) {
20
- const { locale } = language;
21
- if (isOnlyCulture(locale, languages)) {
22
- const cultureNameIndex = locale.native_name.indexOf('(');
23
- if (cultureNameIndex !== -1) {
24
- return locale.native_name.slice(0, cultureNameIndex - 1);
25
- }
25
+ const {
26
+ locale
27
+ } = language;
28
+ if (isOnlyCulture(locale, languages)) {
29
+ const cultureNameIndex = locale.native_name.indexOf('(');
30
+ if (cultureNameIndex !== -1) {
31
+ return locale.native_name.slice(0, cultureNameIndex - 1);
26
32
  }
27
- return locale.native_name;
33
+ }
34
+ return locale.native_name;
28
35
  }
36
+
29
37
  /**
30
38
  * @returns Language set as default in the Newsroom Settings.
31
39
  */
32
40
  export function getDefaultLanguage(languages) {
33
- return languages.find(({ is_default }) => is_default) || languages[0];
41
+ return languages.find(({
42
+ is_default
43
+ }) => is_default) || languages[0];
34
44
  }
45
+
35
46
  /**
36
47
  * @returns Only languages having at least one published story
37
48
  */
38
49
  export function getUsedLanguages(languages) {
39
- return languages.filter((language) => language.public_stories_count > 0);
50
+ return languages.filter(language => language.public_stories_count > 0);
40
51
  }
41
52
  export function getLanguageByExactLocaleCode(languages, locale) {
42
- const localeCode = locale.toUnderscoreCode();
43
- return languages.find(({ code }) => code === localeCode);
53
+ const localeCode = locale.toUnderscoreCode();
54
+ return languages.find(({
55
+ code
56
+ }) => code === localeCode);
44
57
  }
58
+
45
59
  // See https://github.com/prezly/prezly/blob/master/lib/model/CulturePeer.php#L123
46
60
  export function getLanguageByNeutralLocaleCode(languages, locale) {
47
- const neutralLanguageCode = locale.toNeutralLanguageCode();
48
- // Prefer default language
49
- const defaultLanguage = getDefaultLanguage(languages);
50
- // TODO: This doesn't align with other methods logic
51
- if (defaultLanguage.code === locale.toUnderscoreCode()) {
52
- return defaultLanguage;
53
- }
54
- // Try to look in used cultures first (giving priority to used ones)
55
- const usedLanguages = getUsedLanguages(languages);
56
- const usedLanguage = usedLanguages.find(({ code }) => LocaleObject.fromAnyCode(code).toNeutralLanguageCode() === neutralLanguageCode);
57
- if (usedLanguage) {
58
- return usedLanguage;
59
- }
60
- // Search in all languages
61
- return languages.find(({ code }) => LocaleObject.fromAnyCode(code).toNeutralLanguageCode() === neutralLanguageCode);
61
+ const neutralLanguageCode = locale.toNeutralLanguageCode();
62
+
63
+ // Prefer default language
64
+ const defaultLanguage = getDefaultLanguage(languages);
65
+ // TODO: This doesn't align with other methods logic
66
+ if (defaultLanguage.code === locale.toUnderscoreCode()) {
67
+ return defaultLanguage;
68
+ }
69
+
70
+ // Try to look in used cultures first (giving priority to used ones)
71
+ const usedLanguages = getUsedLanguages(languages);
72
+ const usedLanguage = usedLanguages.find(({
73
+ code
74
+ }) => LocaleObject.fromAnyCode(code).toNeutralLanguageCode() === neutralLanguageCode);
75
+ if (usedLanguage) {
76
+ return usedLanguage;
77
+ }
78
+
79
+ // Search in all languages
80
+ return languages.find(({
81
+ code
82
+ }) => LocaleObject.fromAnyCode(code).toNeutralLanguageCode() === neutralLanguageCode);
62
83
  }
84
+
63
85
  // See https://github.com/prezly/prezly/blob/master/lib/model/CulturePeer.php#L159
64
86
  export function getLanguageByShortRegionCode(languages, locale) {
65
- const shortRegionCode = locale.toRegionCode();
66
- // Prefer default language
67
- const defaultLanguage = getDefaultLanguage(languages);
68
- if (LocaleObject.fromAnyCode(defaultLanguage.code).toRegionCode() === shortRegionCode) {
69
- return defaultLanguage;
70
- }
71
- // Try to look in used cultures first (giving priority to used ones)
72
- const usedLanguages = getUsedLanguages(languages);
73
- const usedLanguage = usedLanguages.find(({ code }) => LocaleObject.fromAnyCode(code).toRegionCode() === shortRegionCode);
74
- if (usedLanguage) {
75
- return usedLanguage;
76
- }
77
- // Search in all languages
78
- return languages.find(({ code }) => LocaleObject.fromAnyCode(code).toRegionCode() === shortRegionCode);
87
+ const shortRegionCode = locale.toRegionCode();
88
+
89
+ // Prefer default language
90
+ const defaultLanguage = getDefaultLanguage(languages);
91
+ if (LocaleObject.fromAnyCode(defaultLanguage.code).toRegionCode() === shortRegionCode) {
92
+ return defaultLanguage;
93
+ }
94
+
95
+ // Try to look in used cultures first (giving priority to used ones)
96
+ const usedLanguages = getUsedLanguages(languages);
97
+ const usedLanguage = usedLanguages.find(({
98
+ code
99
+ }) => LocaleObject.fromAnyCode(code).toRegionCode() === shortRegionCode);
100
+ if (usedLanguage) {
101
+ return usedLanguage;
102
+ }
103
+
104
+ // Search in all languages
105
+ return languages.find(({
106
+ code
107
+ }) => LocaleObject.fromAnyCode(code).toRegionCode() === shortRegionCode);
79
108
  }
109
+
80
110
  /**
81
111
  * Retrieve a culture with fallback to legacy codes support.
82
112
  * Pulled from https://github.com/prezly/prezly/blob/de9900d9890a33502780494aa3fb85c9a732b3c3/lib/model/CulturePeer.php#L91-L114
83
113
  */
84
114
  export function getLanguageFromNextLocaleIsoCode(languages, nextLocaleIsoCode) {
85
- const defaultLanguage = getDefaultLanguage(languages);
86
- if (!nextLocaleIsoCode || nextLocaleIsoCode === DUMMY_DEFAULT_LOCALE) {
87
- return defaultLanguage;
88
- }
89
- const locale = LocaleObject.fromAnyCode(nextLocaleIsoCode);
90
- let targetLanguage;
91
- if (nextLocaleIsoCode.length >= 2 && nextLocaleIsoCode.length <= 4) {
92
- // The order of methods here is reversed from `getShortestLocaleCode`, so that the logic "unwraps" the possible variants with no collisions
93
- targetLanguage =
94
- getLanguageByExactLocaleCode(languages, locale) ||
95
- getLanguageByShortRegionCode(languages, locale) ||
96
- getLanguageByNeutralLocaleCode(languages, locale);
97
- }
98
- else {
99
- targetLanguage = getLanguageByExactLocaleCode(languages, locale);
100
- }
101
- return targetLanguage;
115
+ const defaultLanguage = getDefaultLanguage(languages);
116
+ if (!nextLocaleIsoCode || nextLocaleIsoCode === DUMMY_DEFAULT_LOCALE) {
117
+ return defaultLanguage;
118
+ }
119
+ const locale = LocaleObject.fromAnyCode(nextLocaleIsoCode);
120
+ let targetLanguage;
121
+ if (nextLocaleIsoCode.length >= 2 && nextLocaleIsoCode.length <= 4) {
122
+ // The order of methods here is reversed from `getShortestLocaleCode`, so that the logic "unwraps" the possible variants with no collisions
123
+ targetLanguage = getLanguageByExactLocaleCode(languages, locale) || getLanguageByShortRegionCode(languages, locale) || getLanguageByNeutralLocaleCode(languages, locale);
124
+ } else {
125
+ targetLanguage = getLanguageByExactLocaleCode(languages, locale);
126
+ }
127
+ return targetLanguage;
102
128
  }
103
129
  export function getLanguageFromStory(languages, story) {
104
- const { code: storyLocaleCode } = story.culture;
105
- return languages.find(({ code }) => code === storyLocaleCode);
130
+ const {
131
+ code: storyLocaleCode
132
+ } = story.culture;
133
+ return languages.find(({
134
+ code
135
+ }) => code === storyLocaleCode);
106
136
  }
137
+
107
138
  /**
108
139
  * Extracts company information for the selected locale
109
140
  */
110
141
  export function getCompanyInformation(languages, locale) {
111
- const currentLanguage = getLanguageByExactLocaleCode(languages, locale) || getDefaultLanguage(languages);
112
- return currentLanguage.company_information;
142
+ const currentLanguage = getLanguageByExactLocaleCode(languages, locale) || getDefaultLanguage(languages);
143
+ return currentLanguage.company_information;
113
144
  }
145
+
114
146
  /**
115
147
  * Get newsroom notifications for the selected locale
116
148
  */
117
149
  export function getNotifications(languages, locale) {
118
- const currentLanguage = getLanguageByExactLocaleCode(languages, locale) || getDefaultLanguage(languages);
119
- return currentLanguage.notifications;
150
+ const currentLanguage = getLanguageByExactLocaleCode(languages, locale) || getDefaultLanguage(languages);
151
+ return currentLanguage.notifications;
120
152
  }
153
+
121
154
  /**
122
155
  * Get the shortest locale code possible from full locale code
123
156
  * First: try shorting to neutral language code (there should be no locales with the same language code)
@@ -127,33 +160,38 @@ export function getNotifications(languages, locale) {
127
160
  * @param locale A LocaleObject constructed from FULL locale code (taken straight from the selected language)
128
161
  */
129
162
  export function getShortestLocaleCode(languages, locale) {
130
- const localeCode = locale.toUnderscoreCode();
131
- const defaultLanguage = getDefaultLanguage(languages);
132
- // If it's a default locale, return false (no locale needed in URL)
133
- if (localeCode === defaultLanguage.code) {
134
- return false;
135
- }
136
- // Try shorting to neutral language code
137
- const neutralLanguageCode = locale.toNeutralLanguageCode();
138
- const matchingLanguagesByNeutralCode = languages.filter(({ code }) => LocaleObject.fromAnyCode(code).toNeutralLanguageCode() === neutralLanguageCode ||
139
- code === neutralLanguageCode);
140
- if (matchingLanguagesByNeutralCode.length === 1) {
141
- return neutralLanguageCode;
142
- }
143
- // Try shorting to region code
144
- const shortRegionCode = locale.toRegionCode();
145
- const matchingLanguagesByRegionCode = languages.filter(({ code }) => LocaleObject.fromAnyCode(code).toRegionCode() === shortRegionCode);
146
- // Prevent collision with neutral language codes
147
- const lowerCasedShortRegionCode = shortRegionCode.toLowerCase();
148
- const mathchingNeutralLanguagesByRegionCode = languages.filter(({ code }) => LocaleObject.fromAnyCode(code).toNeutralLanguageCode() === lowerCasedShortRegionCode ||
149
- code === lowerCasedShortRegionCode);
150
- if (matchingLanguagesByRegionCode.length === 1 &&
151
- // If there are 2 or more matching neutral languages, it means that there are no languages that can be shortened to neutral code
152
- mathchingNeutralLanguagesByRegionCode.length !== 1 &&
153
- // We don't want just numbers in our region code
154
- Number.isNaN(Number(shortRegionCode))) {
155
- return shortRegionCode;
156
- }
157
- return localeCode;
158
- }
159
- //# sourceMappingURL=languages.js.map
163
+ const localeCode = locale.toUnderscoreCode();
164
+ const defaultLanguage = getDefaultLanguage(languages);
165
+ // If it's a default locale, return false (no locale needed in URL)
166
+ if (localeCode === defaultLanguage.code) {
167
+ return false;
168
+ }
169
+
170
+ // Try shorting to neutral language code
171
+ const neutralLanguageCode = locale.toNeutralLanguageCode();
172
+ const matchingLanguagesByNeutralCode = languages.filter(({
173
+ code
174
+ }) => LocaleObject.fromAnyCode(code).toNeutralLanguageCode() === neutralLanguageCode || code === neutralLanguageCode);
175
+ if (matchingLanguagesByNeutralCode.length === 1) {
176
+ return neutralLanguageCode;
177
+ }
178
+
179
+ // Try shorting to region code
180
+ const shortRegionCode = locale.toRegionCode();
181
+ const matchingLanguagesByRegionCode = languages.filter(({
182
+ code
183
+ }) => LocaleObject.fromAnyCode(code).toRegionCode() === shortRegionCode);
184
+ // Prevent collision with neutral language codes
185
+ const lowerCasedShortRegionCode = shortRegionCode.toLowerCase();
186
+ const mathchingNeutralLanguagesByRegionCode = languages.filter(({
187
+ code
188
+ }) => LocaleObject.fromAnyCode(code).toNeutralLanguageCode() === lowerCasedShortRegionCode || code === lowerCasedShortRegionCode);
189
+ if (matchingLanguagesByRegionCode.length === 1 &&
190
+ // If there are 2 or more matching neutral languages, it means that there are no languages that can be shortened to neutral code
191
+ mathchingNeutralLanguagesByRegionCode.length !== 1 &&
192
+ // We don't want just numbers in our region code
193
+ Number.isNaN(Number(shortRegionCode))) {
194
+ return shortRegionCode;
195
+ }
196
+ return localeCode;
197
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"languages.js","sourceRoot":"","sources":["../../src/intl/languages.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"languages.js","sourceRoot":"","sources":["../../src/intl/languages.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,6 @@ import type { Redirect } from 'next';
3
3
  import type { ParsedUrlQuery } from 'querystring';
4
4
  import { LocaleObject } from './localeObject';
5
5
  export declare const DEFAULT_LOCALE = "en";
6
- export declare const DUMMY_DEFAULT_LOCALE = "qps-ploc";
7
6
  /**
8
7
  * Use this function to determine which translations file you should load from `@prezly/themes-intl-mesages` package.
9
8
  * See https://github.com/prezly/theme-nextjs-bea/blob/main/utils/lang.ts for a usage example.
@@ -1,113 +1,63 @@
1
1
  import { stringify } from 'querystring';
2
- import { LocaleObject } from './localeObject';
2
+ import { DUMMY_DEFAULT_LOCALE } from "./localeConfig.js";
3
+ import { LocaleObject } from "./localeObject.js";
3
4
  export const DEFAULT_LOCALE = 'en';
4
- // We use pseudo locale used for localization testing, to reliably determine if we need to fallback to the default newsroom language
5
- export const DUMMY_DEFAULT_LOCALE = 'qps-ploc';
5
+
6
6
  /**
7
7
  * This a list of locales that Prezly has translations for. Each code represents a language file in the `@prezly/themes-intl-messages` package.
8
8
  * See https://github.com/prezly/themes-intl-messages for more info.
9
9
  */
10
- const SUPPORTED_LOCALES = [
11
- 'af',
12
- 'ar',
13
- 'az',
14
- 'be',
15
- 'bg',
16
- 'cs',
17
- 'da',
18
- 'de',
19
- 'el',
20
- 'en',
21
- 'es',
22
- 'et',
23
- 'fi',
24
- 'fil',
25
- 'fr',
26
- 'ga',
27
- 'he',
28
- 'hi',
29
- 'hr',
30
- 'hu',
31
- 'id',
32
- 'it',
33
- 'ja',
34
- 'kk',
35
- 'ko',
36
- 'lt',
37
- 'lv',
38
- 'mt',
39
- 'nl',
40
- 'no',
41
- 'pl',
42
- 'pt-BR',
43
- 'pt',
44
- 'ro',
45
- 'ru',
46
- 'sk',
47
- 'sl',
48
- 'sv',
49
- 'sw',
50
- 'th',
51
- 'tr',
52
- 'uk',
53
- 'ur',
54
- 'uz',
55
- 'vi',
56
- 'zh-CN',
57
- 'zh-TW',
58
- ];
10
+ const SUPPORTED_LOCALES = ['af', 'ar', 'az', 'be', 'bg', 'cs', 'da', 'de', 'el', 'en', 'es', 'et', 'fi', 'fil', 'fr', 'ga', 'he', 'hi', 'hr', 'hu', 'id', 'it', 'ja', 'kk', 'ko', 'lt', 'lv', 'mt', 'nl', 'no', 'pl', 'pt-BR', 'pt', 'ro', 'ru', 'sk', 'sl', 'sv', 'sw', 'th', 'tr', 'uk', 'ur', 'uz', 'vi', 'zh-CN', 'zh-TW'];
11
+
59
12
  /**
60
13
  * Use this function to determine which translations file you should load from `@prezly/themes-intl-mesages` package.
61
14
  * See https://github.com/prezly/theme-nextjs-bea/blob/main/utils/lang.ts for a usage example.
62
15
  */
63
16
  export function getSupportedLocaleIsoCode(locale) {
64
- const localeIsoCode = locale.toHyphenCode();
65
- const isSupportedLocale = localeIsoCode.length >= 2 && SUPPORTED_LOCALES.includes(localeIsoCode);
66
- if (isSupportedLocale) {
67
- return localeIsoCode;
68
- }
69
- const language = locale.toNeutralLanguageCode();
70
- const isSupportedLanguage = SUPPORTED_LOCALES.includes(language);
71
- if (isSupportedLanguage) {
72
- return language;
73
- }
74
- // Custom mapping for Chinese locales
75
- if (localeIsoCode.toLowerCase() === 'zh-hant') {
76
- return 'zh-TW';
77
- }
78
- if (localeIsoCode.toLowerCase() === 'zh-hk') {
79
- return 'zh-CN';
80
- }
81
- // This code should never be reached, because locale code check is happening in `LocaleObject.fromAnyCode`
82
- // eslint-disable-next-line no-console
83
- console.warn('Unsupported locale provided. Please use `LocaleObject.fromAnyCode` to ensure you are using a correct language code');
84
- return DEFAULT_LOCALE;
17
+ const localeIsoCode = locale.toHyphenCode();
18
+ const isSupportedLocale = localeIsoCode.length >= 2 && SUPPORTED_LOCALES.includes(localeIsoCode);
19
+ if (isSupportedLocale) {
20
+ return localeIsoCode;
21
+ }
22
+ const language = locale.toNeutralLanguageCode();
23
+ const isSupportedLanguage = SUPPORTED_LOCALES.includes(language);
24
+ if (isSupportedLanguage) {
25
+ return language;
26
+ }
27
+
28
+ // Custom mapping for Chinese locales
29
+ if (localeIsoCode.toLowerCase() === 'zh-hant') {
30
+ return 'zh-TW';
31
+ }
32
+ if (localeIsoCode.toLowerCase() === 'zh-hk') {
33
+ return 'zh-CN';
34
+ }
35
+
36
+ // This code should never be reached, because locale code check is happening in `LocaleObject.fromAnyCode`
37
+ // eslint-disable-next-line no-console
38
+ console.warn('Unsupported locale provided. Please use `LocaleObject.fromAnyCode` to ensure you are using a correct language code');
39
+ return DEFAULT_LOCALE;
85
40
  }
86
41
  export function getRedirectToCanonicalLocale(shortestLocaleCode, nextLocaleIsoCode, redirectPath, query) {
87
- // No need to redirect if no particular locale was requested by the application
88
- if (!nextLocaleIsoCode || nextLocaleIsoCode === DUMMY_DEFAULT_LOCALE) {
89
- return undefined;
90
- }
91
- const shortestLocaleSlug = shortestLocaleCode
92
- ? LocaleObject.fromAnyCode(shortestLocaleCode).toUrlSlug()
93
- : shortestLocaleCode;
94
- if (shortestLocaleSlug !== nextLocaleIsoCode) {
95
- const prefixedPath = redirectPath && !redirectPath.startsWith('/') ? `/${redirectPath}` : redirectPath;
96
- const urlQuery = query ? `?${stringify(query)}` : '';
97
- return {
98
- destination: shortestLocaleSlug
99
- ? `/${shortestLocaleSlug}${prefixedPath}${urlQuery}`
100
- : `${prefixedPath}${urlQuery}`,
101
- permanent: false,
102
- };
103
- }
42
+ // No need to redirect if no particular locale was requested by the application
43
+ if (!nextLocaleIsoCode || nextLocaleIsoCode === DUMMY_DEFAULT_LOCALE) {
104
44
  return undefined;
45
+ }
46
+ const shortestLocaleSlug = shortestLocaleCode ? LocaleObject.fromAnyCode(shortestLocaleCode).toUrlSlug() : shortestLocaleCode;
47
+ if (shortestLocaleSlug !== nextLocaleIsoCode) {
48
+ const prefixedPath = redirectPath && !redirectPath.startsWith('/') ? `/${redirectPath}` : redirectPath;
49
+ const urlQuery = query ? `?${stringify(query)}` : '';
50
+ return {
51
+ destination: shortestLocaleSlug ? `/${shortestLocaleSlug}${prefixedPath}${urlQuery}` : `${prefixedPath}${urlQuery}`,
52
+ permanent: false
53
+ };
54
+ }
55
+ return undefined;
105
56
  }
106
57
  export function getLocaleDirection(locale) {
107
- const neutralLanguageCode = locale.toNeutralLanguageCode();
108
- if (['ar', 'he', 'ur'].includes(neutralLanguageCode)) {
109
- return 'rtl';
110
- }
111
- return 'ltr';
112
- }
113
- //# sourceMappingURL=locale.js.map
58
+ const neutralLanguageCode = locale.toNeutralLanguageCode();
59
+ if (['ar', 'he', 'ur'].includes(neutralLanguageCode)) {
60
+ return 'rtl';
61
+ }
62
+ return 'ltr';
63
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"locale.js","sourceRoot":"","sources":["../../src/intl/locale.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"locale.js","sourceRoot":"","sources":["../../src/intl/locale.ts"],"names":[],"mappings":"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"}
@@ -1 +1,3 @@
1
- export declare const localeConfig: string[];
1
+ import type { I18NConfig } from 'next/dist/server/config-shared';
2
+ export declare const DUMMY_DEFAULT_LOCALE = "qps-ploc";
3
+ export declare const localeConfig: I18NConfig;
@@ -3,17 +3,24 @@
3
3
  * Together with permutation performed lower in the code,
4
4
  * the exported list represents all of the possible locale codes that Next.js theme application might accept.
5
5
  */
6
- import { localeList } from './localeList';
7
- const lowercaseLocales = localeList.map((l) => l.toLowerCase());
6
+ import { localeList } from "./localeList.js";
7
+ const lowercaseLocales = localeList.map(l => l.toLowerCase());
8
+
9
+ // We use pseudo locale used for localization testing, to reliably determine if we need to fallback to the default newsroom language
10
+ export const DUMMY_DEFAULT_LOCALE = 'qps-ploc';
11
+
8
12
  // Get all permutations for the shorter locale codes supported by Prezly (e.g. short region codes and neutral language codes)
9
- const lowercaseLocalPermutations = Array.from(new Set([
10
- ...lowercaseLocales,
11
- ...lowercaseLocales.map((code) => code.split('-')[0]),
12
- ...lowercaseLocales
13
- .map((code) => code.split('-')[1])
14
- .filter(Boolean)
15
- // Remove number-only codes from possible permutations (like `419` for `es-419`)
16
- .filter((code) => Number.isNaN(Number(code))),
17
- ])).sort();
18
- export const localeConfig = lowercaseLocalPermutations;
19
- //# sourceMappingURL=localeConfig.js.map
13
+ const lowercaseLocalPermutations = Array.from(new Set([...lowercaseLocales, ...lowercaseLocales.map(code => code.split('-')[0]), ...lowercaseLocales.map(code => code.split('-')[1]).filter(Boolean)
14
+ // Remove number-only codes from possible permutations (like `419` for `es-419`)
15
+ .filter(code => Number.isNaN(Number(code)))])).sort();
16
+ export const localeConfig = {
17
+ // These are all the locales you want to support in
18
+ // your application
19
+ locales: [DUMMY_DEFAULT_LOCALE, ...lowercaseLocalPermutations],
20
+ // This is the default locale you want to be used when visiting
21
+ // a non-locale prefixed path e.g. `/media`
22
+ // We use Pseudo locale used for localization testing, to reliably determine if we need to fallback to the default newsroom language
23
+ defaultLocale: DUMMY_DEFAULT_LOCALE,
24
+ // Default locale detection is disabled, since the locales would be determined by Prezly API
25
+ localeDetection: false
26
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"localeConfig.js","sourceRoot":"","sources":["../../src/intl/localeConfig.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,gBAAgB,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AAEhE,6HAA6H;AAC7H,MAAM,0BAA0B,GAAG,KAAK,CAAC,IAAI,CACzC,IAAI,GAAG,CAAC;IACJ,GAAG,gBAAgB;IACnB,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACrD,GAAG,gBAAgB;SACd,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;SACjC,MAAM,CAAC,OAAO,CAAC;QAChB,gFAAgF;SAC/E,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;CACpD,CAAC,CACL,CAAC,IAAI,EAAE,CAAC;AAET,MAAM,CAAC,MAAM,YAAY,GAAG,0BAA0B,CAAC"}
1
+ {"version":3,"file":"localeConfig.js","sourceRoot":"","sources":["../../src/intl/localeConfig.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,gBAAgB,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AAEhE,oIAAoI;AACpI,MAAM,CAAC,MAAM,oBAAoB,GAAG,UAAU,CAAC;AAE/C,6HAA6H;AAC7H,MAAM,0BAA0B,GAAG,KAAK,CAAC,IAAI,CACzC,IAAI,GAAG,CAAC;IACJ,GAAG,gBAAgB;IACnB,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACrD,GAAG,gBAAgB;SACd,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;SACjC,MAAM,CAAC,OAAO,CAAC;QAChB,gFAAgF;SAC/E,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;CACpD,CAAC,CACL,CAAC,IAAI,EAAE,CAAC;AAET,MAAM,CAAC,MAAM,YAAY,GAAe;IACpC,mDAAmD;IACnD,mBAAmB;IACnB,OAAO,EAAE,CAAC,oBAAoB,EAAE,GAAG,0BAA0B,CAAC;IAC9D,+DAA+D;IAC/D,2CAA2C;IAC3C,oIAAoI;IACpI,aAAa,EAAE,oBAAoB;IACnC,4FAA4F;IAC5F,eAAe,EAAE,KAAK;CACzB,CAAC"}