@prezly/theme-kit-core 7.1.0 → 8.0.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 (250) 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 +65 -0
  14. package/build/content-delivery/cache/memory.d.ts +3 -0
  15. package/build/content-delivery/cache/memory.mjs +58 -0
  16. package/build/content-delivery/cache/memory.test.cjs +54 -0
  17. package/build/content-delivery/cache/memory.test.mjs +52 -0
  18. package/build/content-delivery/cache/stacked.cjs +32 -0
  19. package/build/content-delivery/cache/stacked.d.ts +2 -0
  20. package/build/content-delivery/cache/stacked.mjs +26 -0
  21. package/build/content-delivery/cache/type.cjs +1 -0
  22. package/build/content-delivery/cache/type.d.ts +8 -0
  23. package/build/content-delivery/cache/type.mjs +1 -0
  24. package/build/content-delivery/index.cjs +27 -0
  25. package/build/content-delivery/index.d.ts +2 -1
  26. package/build/content-delivery/index.mjs +2 -0
  27. package/build/environment.cjs +42 -0
  28. package/build/environment.d.ts +2 -0
  29. package/build/environment.mjs +36 -0
  30. package/build/galleries.cjs +38 -0
  31. package/build/galleries.d.ts +11 -0
  32. package/build/galleries.mjs +30 -0
  33. package/build/http/HttpClient.cjs +66 -0
  34. package/build/http/HttpClient.d.ts +20 -0
  35. package/build/http/HttpClient.mjs +59 -0
  36. package/build/http/index.cjs +10 -0
  37. package/build/http/index.d.ts +1 -0
  38. package/build/http/index.mjs +2 -0
  39. package/build/index.cjs +88 -0
  40. package/build/index.d.ts +15 -4
  41. package/build/index.mjs +26 -0
  42. package/build/intl/getLanguageDisplayName.cjs +37 -0
  43. package/build/intl/getLanguageDisplayName.d.ts +20 -0
  44. package/build/intl/getLanguageDisplayName.mjs +32 -0
  45. package/build/intl/getLanguageDisplayName.test.cjs +46 -0
  46. package/build/intl/getLanguageDisplayName.test.mjs +44 -0
  47. package/build/intl/index.cjs +12 -0
  48. package/build/intl/index.d.ts +1 -5
  49. package/build/intl/index.mjs +1 -0
  50. package/build/metadata/getAlternateLanguageLinks.cjs +76 -0
  51. package/build/{seo → metadata}/getAlternateLanguageLinks.d.ts +2 -2
  52. package/build/metadata/getAlternateLanguageLinks.mjs +72 -0
  53. package/build/metadata/getAlternateLanguageLinks.test.cjs +198 -0
  54. package/build/metadata/getAlternateLanguageLinks.test.mjs +196 -0
  55. package/build/metadata/index.cjs +12 -0
  56. package/build/metadata/index.d.ts +2 -0
  57. package/build/metadata/index.mjs +1 -0
  58. package/build/metadata/types.cjs +1 -0
  59. package/build/metadata/types.d.ts +6 -0
  60. package/build/metadata/types.mjs +1 -0
  61. package/build/newsrooms.cjs +36 -0
  62. package/build/newsrooms.d.ts +5 -0
  63. package/build/newsrooms.mjs +28 -0
  64. package/build/privacy-portal.cjs +28 -0
  65. package/build/privacy-portal.d.ts +9 -0
  66. package/build/privacy-portal.mjs +21 -0
  67. package/build/resolvable.cjs +38 -0
  68. package/build/resolvable.d.ts +71 -0
  69. package/build/resolvable.mjs +32 -0
  70. package/build/routing/Route.cjs +46 -0
  71. package/build/routing/Route.d.ts +37 -0
  72. package/build/routing/Route.mjs +40 -0
  73. package/build/routing/Router.cjs +51 -0
  74. package/build/routing/Router.d.ts +23 -0
  75. package/build/routing/Router.mjs +45 -0
  76. package/build/routing/Routing.cjs +24 -0
  77. package/build/routing/Routing.d.ts +1 -0
  78. package/build/routing/Routing.mjs +2 -0
  79. package/build/routing/UrlGenerator.cjs +13 -0
  80. package/build/routing/UrlGenerator.d.ts +39 -0
  81. package/build/routing/UrlGenerator.mjs +7 -0
  82. package/build/routing/index.cjs +24 -0
  83. package/build/routing/index.d.ts +4 -0
  84. package/build/routing/index.mjs +4 -0
  85. package/build/routing/types.cjs +1 -0
  86. package/build/routing/types.d.ts +14 -0
  87. package/build/routing/types.mjs +1 -0
  88. package/build/routing/utils/generateUrlFromPattern.cjs +52 -0
  89. package/build/routing/utils/generateUrlFromPattern.d.ts +12 -0
  90. package/build/routing/utils/generateUrlFromPattern.mjs +47 -0
  91. package/build/routing/utils/generateUrlFromPattern.test.cjs +44 -0
  92. package/build/routing/utils/generateUrlFromPattern.test.mjs +42 -0
  93. package/build/routing/utils/getShortestLocaleSlug.cjs +60 -0
  94. package/build/routing/utils/getShortestLocaleSlug.d.ts +11 -0
  95. package/build/routing/utils/getShortestLocaleSlug.mjs +53 -0
  96. package/build/routing/utils/getShortestLocaleSlug.test.cjs +37 -0
  97. package/build/routing/utils/getShortestLocaleSlug.test.mjs +35 -0
  98. package/build/routing/utils/index.cjs +40 -0
  99. package/build/routing/utils/index.d.ts +5 -0
  100. package/build/routing/utils/index.mjs +5 -0
  101. package/build/routing/utils/isNumberCode.cjs +12 -0
  102. package/build/routing/utils/isNumberCode.d.ts +4 -0
  103. package/build/routing/utils/isNumberCode.mjs +6 -0
  104. package/build/routing/utils/matchLocaleSlug.cjs +41 -0
  105. package/build/routing/utils/matchLocaleSlug.d.ts +15 -0
  106. package/build/routing/utils/matchLocaleSlug.mjs +34 -0
  107. package/build/routing/utils/matchLocaleSlug.test.cjs +43 -0
  108. package/build/routing/utils/matchLocaleSlug.test.mjs +40 -0
  109. package/build/routing/utils/normalizeUrl.cjs +9 -0
  110. package/build/routing/utils/normalizeUrl.d.ts +1 -0
  111. package/build/routing/utils/normalizeUrl.mjs +3 -0
  112. package/build/search.cjs +1 -0
  113. package/build/{types.d.ts → search.d.ts} +3 -3
  114. package/build/search.mjs +1 -0
  115. package/build/sitemap/build.cjs +33 -0
  116. package/build/sitemap/build.d.ts +6 -0
  117. package/build/sitemap/build.mjs +27 -0
  118. package/build/sitemap/generate.cjs +192 -0
  119. package/build/sitemap/generate.d.ts +37 -0
  120. package/build/sitemap/generate.mjs +183 -0
  121. package/build/sitemap/index.cjs +38 -0
  122. package/build/sitemap/index.d.ts +4 -0
  123. package/build/sitemap/index.mjs +3 -0
  124. package/build/sitemap/stringify.cjs +24 -0
  125. package/build/sitemap/stringify.d.ts +2 -0
  126. package/build/sitemap/stringify.mjs +18 -0
  127. package/build/sitemap/types.cjs +1 -0
  128. package/build/sitemap/types.d.ts +67 -0
  129. package/build/sitemap/types.mjs +1 -0
  130. package/build/uploads.cjs +14 -0
  131. package/build/{utils/getAssetsUrl.d.ts → uploads.d.ts} +1 -1
  132. package/build/uploads.mjs +8 -0
  133. package/build/uploads.test.cjs +10 -0
  134. package/build/uploads.test.mjs +8 -0
  135. package/package.json +23 -26
  136. package/build/content-delivery/ContentDelivery.js +0 -238
  137. package/build/content-delivery/ContentDelivery.js.map +0 -1
  138. package/build/content-delivery/index.js +0 -28
  139. package/build/content-delivery/index.js.map +0 -1
  140. package/build/data-fetching/api/index.d.ts +0 -1
  141. package/build/data-fetching/api/index.js +0 -6
  142. package/build/data-fetching/api/index.js.map +0 -1
  143. package/build/data-fetching/api/initContentDeliveryClient.d.ts +0 -4
  144. package/build/data-fetching/api/initContentDeliveryClient.js +0 -25
  145. package/build/data-fetching/api/initContentDeliveryClient.js.map +0 -1
  146. package/build/data-fetching/index.d.ts +0 -3
  147. package/build/data-fetching/index.js +0 -20
  148. package/build/data-fetching/index.js.map +0 -1
  149. package/build/data-fetching/lib/getAlgoliaSettings.d.ts +0 -4
  150. package/build/data-fetching/lib/getAlgoliaSettings.js +0 -21
  151. package/build/data-fetching/lib/getAlgoliaSettings.js.map +0 -1
  152. package/build/data-fetching/lib/getEnvVariables.d.ts +0 -4
  153. package/build/data-fetching/lib/getEnvVariables.js +0 -43
  154. package/build/data-fetching/lib/getEnvVariables.js.map +0 -1
  155. package/build/data-fetching/lib/index.d.ts +0 -3
  156. package/build/data-fetching/lib/index.js +0 -10
  157. package/build/data-fetching/lib/index.js.map +0 -1
  158. package/build/data-fetching/lib/isUuid.d.ts +0 -1
  159. package/build/data-fetching/lib/isUuid.js +0 -9
  160. package/build/data-fetching/lib/isUuid.js.map +0 -1
  161. package/build/data-fetching/types.d.ts +0 -13
  162. package/build/data-fetching/types.js +0 -3
  163. package/build/data-fetching/types.js.map +0 -1
  164. package/build/index.js +0 -21
  165. package/build/index.js.map +0 -1
  166. package/build/intl/getFallbackLocale.d.ts +0 -10
  167. package/build/intl/getFallbackLocale.js +0 -24
  168. package/build/intl/getFallbackLocale.js.map +0 -1
  169. package/build/intl/index.js +0 -27
  170. package/build/intl/index.js.map +0 -1
  171. package/build/intl/languages.d.ts +0 -57
  172. package/build/intl/languages.js +0 -191
  173. package/build/intl/languages.js.map +0 -1
  174. package/build/intl/locale.d.ts +0 -11
  175. package/build/intl/locale.js +0 -41
  176. package/build/intl/locale.js.map +0 -1
  177. package/build/intl/localeConfig.d.ts +0 -2
  178. package/build/intl/localeConfig.js +0 -22
  179. package/build/intl/localeConfig.js.map +0 -1
  180. package/build/intl/localeList.d.ts +0 -2
  181. package/build/intl/localeList.js +0 -114
  182. package/build/intl/localeList.js.map +0 -1
  183. package/build/intl/localeObject.d.ts +0 -51
  184. package/build/intl/localeObject.js +0 -98
  185. package/build/intl/localeObject.js.map +0 -1
  186. package/build/seo/getAlternateLanguageLinks.js +0 -85
  187. package/build/seo/getAlternateLanguageLinks.js.map +0 -1
  188. package/build/seo/index.d.ts +0 -2
  189. package/build/seo/index.js +0 -19
  190. package/build/seo/index.js.map +0 -1
  191. package/build/seo/types.d.ts +0 -4
  192. package/build/seo/types.js +0 -3
  193. package/build/seo/types.js.map +0 -1
  194. package/build/seo/utils/bindLanguagesWithLocales.d.ts +0 -11
  195. package/build/seo/utils/bindLanguagesWithLocales.js +0 -23
  196. package/build/seo/utils/bindLanguagesWithLocales.js.map +0 -1
  197. package/build/seo/utils/createAlternateLanguageLink.d.ts +0 -5
  198. package/build/seo/utils/createAlternateLanguageLink.js +0 -15
  199. package/build/seo/utils/createAlternateLanguageLink.js.map +0 -1
  200. package/build/seo/utils/index.d.ts +0 -2
  201. package/build/seo/utils/index.js +0 -8
  202. package/build/seo/utils/index.js.map +0 -1
  203. package/build/server.d.ts +0 -2
  204. package/build/server.js +0 -21
  205. package/build/server.js.map +0 -1
  206. package/build/types.js +0 -3
  207. package/build/types.js.map +0 -1
  208. package/build/utils/assertServerEnv.d.ts +0 -1
  209. package/build/utils/assertServerEnv.js +0 -10
  210. package/build/utils/assertServerEnv.js.map +0 -1
  211. package/build/utils/boilerplate.d.ts +0 -8
  212. package/build/utils/boilerplate.js +0 -27
  213. package/build/utils/boilerplate.js.map +0 -1
  214. package/build/utils/constants.js +0 -8
  215. package/build/utils/constants.js.map +0 -1
  216. package/build/utils/getAssetsUrl.js +0 -13
  217. package/build/utils/getAssetsUrl.js.map +0 -1
  218. package/build/utils/getDataRequestLink.d.ts +0 -3
  219. package/build/utils/getDataRequestLink.js +0 -12
  220. package/build/utils/getDataRequestLink.js.map +0 -1
  221. package/build/utils/getGalleryThumbnail.d.ts +0 -2
  222. package/build/utils/getGalleryThumbnail.js +0 -15
  223. package/build/utils/getGalleryThumbnail.js.map +0 -1
  224. package/build/utils/getLocalizedCategoryData.d.ts +0 -12
  225. package/build/utils/getLocalizedCategoryData.js +0 -34
  226. package/build/utils/getLocalizedCategoryData.js.map +0 -1
  227. package/build/utils/getNewsroomLogoUrl.d.ts +0 -5
  228. package/build/utils/getNewsroomLogoUrl.js +0 -30
  229. package/build/utils/getNewsroomLogoUrl.js.map +0 -1
  230. package/build/utils/getPrivacyPortalUrl.d.ts +0 -8
  231. package/build/utils/getPrivacyPortalUrl.js +0 -13
  232. package/build/utils/getPrivacyPortalUrl.js.map +0 -1
  233. package/build/utils/getStoryPublicationDate.d.ts +0 -3
  234. package/build/utils/getStoryPublicationDate.js +0 -14
  235. package/build/utils/getStoryPublicationDate.js.map +0 -1
  236. package/build/utils/getUploadcareGroupUrl.d.ts +0 -8
  237. package/build/utils/getUploadcareGroupUrl.js +0 -17
  238. package/build/utils/getUploadcareGroupUrl.js.map +0 -1
  239. package/build/utils/index.d.ts +0 -14
  240. package/build/utils/index.js +0 -31
  241. package/build/utils/index.js.map +0 -1
  242. package/build/utils/isEmbargoStory.d.ts +0 -6
  243. package/build/utils/isEmbargoStory.js +0 -9
  244. package/build/utils/isEmbargoStory.js.map +0 -1
  245. package/build/utils/isGalleryEmpty.d.ts +0 -2
  246. package/build/utils/isGalleryEmpty.js +0 -8
  247. package/build/utils/isGalleryEmpty.js.map +0 -1
  248. package/build/utils/sdkHelpers.d.ts +0 -32
  249. package/build/utils/sdkHelpers.js +0 -42
  250. package/build/utils/sdkHelpers.js.map +0 -1
@@ -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
+ }
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.generateUrl = generateUrl;
7
+ exports.getDataRequestUrl = getDataRequestUrl;
8
+ var _themeKitIntl = require("@prezly/theme-kit-intl");
9
+ var _constants = require("./constants.cjs");
10
+ function generateUrl(newsroom, locale, options) {
11
+ var {
12
+ email,
13
+ action = 'subscribe'
14
+ } = options || {};
15
+ var {
16
+ slug
17
+ } = _themeKitIntl.Locale.from(locale);
18
+ var url = new URL("/".concat(slug, "/newsroom/").concat(newsroom.uuid, "/").concat(action), _constants.PRIVACY_PORTAL_URL);
19
+ if (email) {
20
+ url.searchParams.append('email', email);
21
+ }
22
+ return url.toString();
23
+ }
24
+ function getDataRequestUrl(newsroom, locale) {
25
+ return newsroom.custom_data_request_link || generateUrl(newsroom, locale, {
26
+ action: 'data-request'
27
+ });
28
+ }
@@ -0,0 +1,9 @@
1
+ import type { Newsroom } from '@prezly/sdk';
2
+ import { Locale } from '@prezly/theme-kit-intl';
3
+ type PrivacyPortalUrlOptions = {
4
+ email?: string;
5
+ action?: 'data-request' | 'subscribe' | 'unsubscribe';
6
+ };
7
+ export declare function generateUrl(newsroom: Pick<Newsroom, 'uuid'>, locale: Locale | Locale.AnyCode, options?: PrivacyPortalUrlOptions): string;
8
+ export declare function getDataRequestUrl(newsroom: Pick<Newsroom, 'custom_data_request_link' | 'uuid'>, locale: Locale.Code): string;
9
+ export {};
@@ -0,0 +1,21 @@
1
+ import { Locale } from '@prezly/theme-kit-intl';
2
+ import { PRIVACY_PORTAL_URL } from "./constants.mjs";
3
+ export function generateUrl(newsroom, locale, options) {
4
+ var {
5
+ email,
6
+ action = 'subscribe'
7
+ } = options || {};
8
+ var {
9
+ slug
10
+ } = Locale.from(locale);
11
+ var url = new URL("/".concat(slug, "/newsroom/").concat(newsroom.uuid, "/").concat(action), PRIVACY_PORTAL_URL);
12
+ if (email) {
13
+ url.searchParams.append('email', email);
14
+ }
15
+ return url.toString();
16
+ }
17
+ export function getDataRequestUrl(newsroom, locale) {
18
+ return newsroom.custom_data_request_link || generateUrl(newsroom, locale, {
19
+ action: 'data-request'
20
+ });
21
+ }
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.Resolvable = exports.AsyncResolvable = void 0;
7
+ /* eslint-disable @typescript-eslint/no-use-before-define,@typescript-eslint/no-redeclare */
8
+ var Resolvable;
9
+ (function (_Resolvable) {
10
+ function resolve(value) {
11
+ if (typeof value === 'function') {
12
+ return value();
13
+ }
14
+ return value;
15
+ }
16
+ _Resolvable.resolve = resolve;
17
+ })(Resolvable || (exports.Resolvable = Resolvable = {}));
18
+ var AsyncResolvable;
19
+ (function (_AsyncResolvable) {
20
+ function resolve() {
21
+ for (var _len = arguments.length, values = new Array(_len), _key = 0; _key < _len; _key++) {
22
+ values[_key] = arguments[_key];
23
+ }
24
+ if (values.length === 1) {
25
+ var [_value] = values;
26
+ return resolveAsyncOne(_value);
27
+ }
28
+ var resolutions = values.map(value => resolveAsyncOne(value));
29
+ return Promise.all(resolutions);
30
+ }
31
+ _AsyncResolvable.resolve = resolve;
32
+ })(AsyncResolvable || (exports.AsyncResolvable = AsyncResolvable = {}));
33
+ function resolveAsyncOne(value) {
34
+ if (typeof value === 'function') {
35
+ return Promise.resolve(value());
36
+ }
37
+ return value;
38
+ }
@@ -0,0 +1,71 @@
1
+ export type Resolvable<T> = T | DynamicallyResolvable<T>;
2
+ export type AsyncResolvable<T> = T | DynamicallyResolvable<T> | AsyncDynamicallyResolvable<T>;
3
+ type Awaitable<T> = T | Promise<T>;
4
+ type DynamicallyResolvable<T> = () => T;
5
+ type AsyncDynamicallyResolvable<T> = () => Promise<T>;
6
+ export declare namespace Resolvable {
7
+ type Properties<T> = {
8
+ [key in keyof T]: Resolvable<T[key]>;
9
+ };
10
+ function resolve<T>(value: T | DynamicallyResolvable<T>): T;
11
+ }
12
+ export declare namespace AsyncResolvable {
13
+ type Properties<T> = {
14
+ [key in keyof T]: AsyncResolvable<T[key]>;
15
+ };
16
+ function resolve<T>(value: T | DynamicallyResolvable<T> | AsyncDynamicallyResolvable<T>): Awaitable<T>;
17
+ function resolve<T1, T2>(...values: [AsyncResolvable<T1>, AsyncResolvable<T2>]): Promise<[T1, T2]>;
18
+ function resolve<T1, T2, T3>(...values: [AsyncResolvable<T1>, AsyncResolvable<T2>, AsyncResolvable<T3>]): Promise<[T1, T2, T3]>;
19
+ function resolve<T1, T2, T3, T4>(...values: [
20
+ AsyncResolvable<T1>,
21
+ AsyncResolvable<T2>,
22
+ AsyncResolvable<T3>,
23
+ AsyncResolvable<T4>
24
+ ]): Promise<[T1, T2, T3, T4]>;
25
+ function resolve<T1, T2, T3, T4, T5>(...values: [
26
+ AsyncResolvable<T1>,
27
+ AsyncResolvable<T2>,
28
+ AsyncResolvable<T3>,
29
+ AsyncResolvable<T4>,
30
+ AsyncResolvable<T5>
31
+ ]): Promise<[T1, T2, T3, T4, T5]>;
32
+ function resolve<T1, T2, T3, T4, T5, T6>(...values: [
33
+ AsyncResolvable<T1>,
34
+ AsyncResolvable<T2>,
35
+ AsyncResolvable<T3>,
36
+ AsyncResolvable<T4>,
37
+ AsyncResolvable<T5>,
38
+ AsyncResolvable<T6>
39
+ ]): Promise<[T1, T2, T3, T4, T5, T6]>;
40
+ function resolve<T1, T2, T3, T4, T5, T6, T7>(...values: [
41
+ AsyncResolvable<T1>,
42
+ AsyncResolvable<T2>,
43
+ AsyncResolvable<T3>,
44
+ AsyncResolvable<T4>,
45
+ AsyncResolvable<T5>,
46
+ AsyncResolvable<T6>,
47
+ AsyncResolvable<T7>
48
+ ]): Promise<[T1, T2, T3, T4, T5, T6, T7]>;
49
+ function resolve<T1, T2, T3, T4, T5, T6, T7, T8>(...values: [
50
+ AsyncResolvable<T1>,
51
+ AsyncResolvable<T2>,
52
+ AsyncResolvable<T3>,
53
+ AsyncResolvable<T4>,
54
+ AsyncResolvable<T5>,
55
+ AsyncResolvable<T6>,
56
+ AsyncResolvable<T7>,
57
+ AsyncResolvable<T8>
58
+ ]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8]>;
59
+ function resolve<T1, T2, T3, T4, T5, T6, T7, T8, T9>(...values: [
60
+ AsyncResolvable<T1>,
61
+ AsyncResolvable<T2>,
62
+ AsyncResolvable<T3>,
63
+ AsyncResolvable<T4>,
64
+ AsyncResolvable<T5>,
65
+ AsyncResolvable<T6>,
66
+ AsyncResolvable<T7>,
67
+ AsyncResolvable<T8>,
68
+ AsyncResolvable<T9>
69
+ ]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8, T9]>;
70
+ }
71
+ export {};
@@ -0,0 +1,32 @@
1
+ /* eslint-disable @typescript-eslint/no-use-before-define,@typescript-eslint/no-redeclare */
2
+ export var Resolvable;
3
+ (function (_Resolvable) {
4
+ function resolve(value) {
5
+ if (typeof value === 'function') {
6
+ return value();
7
+ }
8
+ return value;
9
+ }
10
+ _Resolvable.resolve = resolve;
11
+ })(Resolvable || (Resolvable = {}));
12
+ export var AsyncResolvable;
13
+ (function (_AsyncResolvable) {
14
+ function resolve() {
15
+ for (var _len = arguments.length, values = new Array(_len), _key = 0; _key < _len; _key++) {
16
+ values[_key] = arguments[_key];
17
+ }
18
+ if (values.length === 1) {
19
+ var [_value] = values;
20
+ return resolveAsyncOne(_value);
21
+ }
22
+ var resolutions = values.map(value => resolveAsyncOne(value));
23
+ return Promise.all(resolutions);
24
+ }
25
+ _AsyncResolvable.resolve = resolve;
26
+ })(AsyncResolvable || (AsyncResolvable = {}));
27
+ function resolveAsyncOne(value) {
28
+ if (typeof value === 'function') {
29
+ return Promise.resolve(value());
30
+ }
31
+ return value;
32
+ }
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.Route = void 0;
7
+ var _urlPattern = _interopRequireDefault(require("url-pattern"));
8
+ var _index = require("./utils/index.cjs");
9
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
+ /* eslint-disable @typescript-eslint/no-redeclare */
11
+ var Route;
12
+ (function (_Route) {
13
+ function create(pattern, rewrite) {
14
+ var {
15
+ check,
16
+ generate,
17
+ resolveLocale
18
+ } = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
19
+ var urlPattern = new _urlPattern.default(pattern);
20
+ var rewritePattern = new _urlPattern.default(rewrite);
21
+ return {
22
+ pattern,
23
+ match(path, searchParams) {
24
+ var matched = urlPattern.match(path);
25
+ if (!matched) {
26
+ return undefined;
27
+ }
28
+ if ((check === null || check === void 0 ? void 0 : check(matched, searchParams)) === false) {
29
+ return undefined;
30
+ }
31
+ return matched;
32
+ },
33
+ generate(params) {
34
+ if (generate) {
35
+ return (0, _index.normalizeUrl)(generate(urlPattern, params));
36
+ }
37
+ return (0, _index.normalizeUrl)(urlPattern.stringify(params));
38
+ },
39
+ rewrite(params) {
40
+ return rewritePattern.stringify(params);
41
+ },
42
+ resolveLocale
43
+ };
44
+ }
45
+ _Route.create = create;
46
+ })(Route || (exports.Route = Route = {}));
@@ -0,0 +1,37 @@
1
+ import type { Locale } from '@prezly/theme-kit-intl';
2
+ import UrlPattern from 'url-pattern';
3
+ import type { ExtractPathParams } from './types';
4
+ type Awaitable<T> = T | Promise<T>;
5
+ export type Route<Pattern = string, Match = unknown> = {
6
+ /**
7
+ * Route match pattern.
8
+ */
9
+ pattern: Pattern;
10
+ /**
11
+ * Match incoming request path and search params against the route definition.
12
+ */
13
+ match(path: string, searchParams: URLSearchParams): Match | undefined;
14
+ /**
15
+ * Low-level route URL generator.
16
+ * Unaware of newsroom locales and how to shorten locale slugs.
17
+ */
18
+ generate(params: Match): `/${string}`;
19
+ /**
20
+ * Rewrite external route URL to the internal unambiguous pages layout URL.
21
+ */
22
+ rewrite(params: Match): string;
23
+ /**
24
+ * Manually resolve locale code from the request parameters,
25
+ * if the stock logic is not suitable for the current route.
26
+ */
27
+ resolveLocale?(params: Match): Awaitable<Locale.Code | undefined>;
28
+ };
29
+ export declare namespace Route {
30
+ interface Options<Pattern extends string, Match> {
31
+ check?(match: Match, searchParams: URLSearchParams): boolean;
32
+ generate?(pattern: UrlPattern, params: ExtractPathParams<Pattern>): `/${string}`;
33
+ resolveLocale?: Route<Pattern, Match>['resolveLocale'];
34
+ }
35
+ function create<Pattern extends `/${string}` | `(/:${string})/${string}`, Match extends ExtractPathParams<Pattern>>(pattern: Pattern, rewrite: string, { check, generate, resolveLocale }?: Options<Pattern, Match>): Route<Pattern, Match>;
36
+ }
37
+ export {};
@@ -0,0 +1,40 @@
1
+ /* eslint-disable @typescript-eslint/no-redeclare */
2
+
3
+ import UrlPattern from 'url-pattern';
4
+ import { normalizeUrl } from "./utils/index.mjs";
5
+ export var Route;
6
+ (function (_Route) {
7
+ function create(pattern, rewrite) {
8
+ var {
9
+ check,
10
+ generate,
11
+ resolveLocale
12
+ } = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
13
+ var urlPattern = new UrlPattern(pattern);
14
+ var rewritePattern = new UrlPattern(rewrite);
15
+ return {
16
+ pattern,
17
+ match(path, searchParams) {
18
+ var matched = urlPattern.match(path);
19
+ if (!matched) {
20
+ return undefined;
21
+ }
22
+ if ((check === null || check === void 0 ? void 0 : check(matched, searchParams)) === false) {
23
+ return undefined;
24
+ }
25
+ return matched;
26
+ },
27
+ generate(params) {
28
+ if (generate) {
29
+ return normalizeUrl(generate(urlPattern, params));
30
+ }
31
+ return normalizeUrl(urlPattern.stringify(params));
32
+ },
33
+ rewrite(params) {
34
+ return rewritePattern.stringify(params);
35
+ },
36
+ resolveLocale
37
+ };
38
+ }
39
+ _Route.create = create;
40
+ })(Route || (Route = {}));
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.Router = void 0;
7
+ var _isNotUndefined = require("@technically/is-not-undefined");
8
+ var Router;
9
+ (function (_Router) {
10
+ function create(routes) {
11
+ return {
12
+ routes,
13
+ match(path, searchParams, _ref) {
14
+ var {
15
+ isSupportedLocale
16
+ } = _ref;
17
+ var matches = Object.values(routes).map(route => {
18
+ var params = route.match(path, searchParams);
19
+ if (params) {
20
+ return {
21
+ params: params,
22
+ route
23
+ };
24
+ }
25
+ return undefined;
26
+ });
27
+ var [first] = matches.filter(_isNotUndefined.isNotUndefined).filter(_ref2 => {
28
+ var {
29
+ params
30
+ } = _ref2;
31
+ if ('localeSlug' in params && typeof params.localeSlug === 'string') {
32
+ return isSupportedLocale(params.localeSlug);
33
+ }
34
+ return true;
35
+ });
36
+ return first;
37
+ },
38
+ generate(routeName) {
39
+ var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
40
+ return routes[routeName].generate(params);
41
+ },
42
+ dump() {
43
+ return Object.fromEntries(Object.entries(routes).map(_ref3 => {
44
+ var [routeName, route] = _ref3;
45
+ return [routeName, route.pattern];
46
+ }));
47
+ }
48
+ };
49
+ }
50
+ _Router.create = create;
51
+ })(Router || (exports.Router = Router = {}));
@@ -0,0 +1,23 @@
1
+ import type { Route } from './Route';
2
+ export type RoutesMap<T extends Route = Route> = Record<string, T>;
3
+ type Maybe<T> = T | undefined;
4
+ export interface Router<Routes extends RoutesMap = RoutesMap> {
5
+ routes: Routes;
6
+ match(path: string, searchParams: URLSearchParams, context: Router.MatchContext): {
7
+ [RouteName in keyof Routes]: Routes[RouteName] extends Route<infer Pattern, infer Match> ? Maybe<{
8
+ params: Match;
9
+ route: Route<Pattern, Match>;
10
+ }> : undefined;
11
+ }[keyof Routes];
12
+ generate<RouteName extends keyof Routes>(routeName: RouteName, ...params: Routes[RouteName] extends Route<string, infer Match> ? {} extends Match ? [Match] | [] : [Match] : never): `/${string}`;
13
+ dump(): {
14
+ [RouteName in keyof Routes]: Routes[RouteName]['pattern'];
15
+ };
16
+ }
17
+ export declare namespace Router {
18
+ interface MatchContext {
19
+ isSupportedLocale(code: string): boolean;
20
+ }
21
+ function create<Routes extends RoutesMap>(routes: Routes): Router<Routes>;
22
+ }
23
+ export {};
@@ -0,0 +1,45 @@
1
+ import { isNotUndefined } from '@technically/is-not-undefined';
2
+ export var Router;
3
+ (function (_Router) {
4
+ function create(routes) {
5
+ return {
6
+ routes,
7
+ match(path, searchParams, _ref) {
8
+ var {
9
+ isSupportedLocale
10
+ } = _ref;
11
+ var matches = Object.values(routes).map(route => {
12
+ var params = route.match(path, searchParams);
13
+ if (params) {
14
+ return {
15
+ params: params,
16
+ route
17
+ };
18
+ }
19
+ return undefined;
20
+ });
21
+ var [first] = matches.filter(isNotUndefined).filter(_ref2 => {
22
+ var {
23
+ params
24
+ } = _ref2;
25
+ if ('localeSlug' in params && typeof params.localeSlug === 'string') {
26
+ return isSupportedLocale(params.localeSlug);
27
+ }
28
+ return true;
29
+ });
30
+ return first;
31
+ },
32
+ generate(routeName) {
33
+ var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
34
+ return routes[routeName].generate(params);
35
+ },
36
+ dump() {
37
+ return Object.fromEntries(Object.entries(routes).map(_ref3 => {
38
+ var [routeName, route] = _ref3;
39
+ return [routeName, route.pattern];
40
+ }));
41
+ }
42
+ };
43
+ }
44
+ _Router.create = create;
45
+ })(Router || (Router = {}));
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "generateUrlFromPattern", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _index.generateUrlFromPattern;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "getShortestLocaleSlug", {
13
+ enumerable: true,
14
+ get: function get() {
15
+ return _index.getShortestLocaleSlug;
16
+ }
17
+ });
18
+ Object.defineProperty(exports, "matchLocaleSlug", {
19
+ enumerable: true,
20
+ get: function get() {
21
+ return _index.matchLocaleSlug;
22
+ }
23
+ });
24
+ var _index = require("./utils/index.cjs");
@@ -0,0 +1 @@
1
+ export { generateUrlFromPattern, getShortestLocaleSlug, matchLocaleSlug } from './utils';
@@ -0,0 +1,2 @@
1
+ // To be publicly exported via `Routing` ES namespace object
2
+ export { generateUrlFromPattern, getShortestLocaleSlug, matchLocaleSlug } from "./utils/index.mjs";
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.UrlGenerator = void 0;
7
+ /* eslint-disable @typescript-eslint/no-redeclare */
8
+ /**
9
+ * Construct a type based on `Router.generate()`, but:
10
+ * - required `localeSlug` can be replaced with required `localeCode`
11
+ * - optional `localeSlug` can be replaced with optional `localeCode`
12
+ */
13
+ var UrlGenerator;
@@ -0,0 +1,39 @@
1
+ import type { Route } from './Route';
2
+ import type { Router } from './Router';
3
+ type WithLocaleCode<T> = T extends {
4
+ localeSlug: string;
5
+ } ? Omit<T, 'localeSlug'> & {
6
+ localeCode: string;
7
+ } : T extends {
8
+ localeSlug?: string;
9
+ } ? Omit<T, 'localeSlug'> & {
10
+ localeCode?: string;
11
+ } : T;
12
+ /**
13
+ * Construct a type based on `Router.generate()`, but:
14
+ * - required `localeSlug` can be replaced with required `localeCode`
15
+ * - optional `localeSlug` can be replaced with optional `localeCode`
16
+ */
17
+ export type UrlGenerator<T> = T extends Router<infer Routes> ? <RouteName extends keyof Routes>(routeName: RouteName, ...params: Routes[RouteName] extends Route<string, infer Match> ? {} extends Match ? [WithLocaleCode<Match>] | [Match] | [] : [WithLocaleCode<Match>] | [Match] : never) => `/${string}` : never;
18
+ export declare namespace UrlGenerator {
19
+ /**
20
+ * Construct a type based on `Router.generate()`, but:
21
+ * - expected to generate absolute URLs instead of relative ones
22
+ * - required `localeSlug` can be replaced with required `localeCode`
23
+ * - optional `localeSlug` can be replaced with optional `localeCode`
24
+ *
25
+ * This is the same as UrlGenerator<T>, but for absolute URLs.
26
+ * @see UrlGenerator.
27
+ */
28
+ type Absolute<T> = T extends Router<infer Routes> ? <RouteName extends keyof Routes>(routeName: RouteName, ...params: Routes[RouteName] extends Route<string, infer Match> ? {} extends Match ? [WithLocaleCode<Match>] | [Match] | [] : [WithLocaleCode<Match>] | [Match] : never) => `http://${string}` | `https://${string}` : never;
29
+ type Params<T> = T extends Router<infer Routes> ? {
30
+ [RouteName in keyof Routes]: Routes[RouteName] extends Route<string, infer Match> ? {} extends Match ? {
31
+ routeName: RouteName;
32
+ params?: WithLocaleCode<Match> | Match;
33
+ } : {
34
+ routeName: RouteName;
35
+ params: WithLocaleCode<Match> | Match;
36
+ } : never;
37
+ }[keyof Routes] : never;
38
+ }
39
+ export {};
@@ -0,0 +1,7 @@
1
+ /* eslint-disable @typescript-eslint/no-redeclare */
2
+ /**
3
+ * Construct a type based on `Router.generate()`, but:
4
+ * - required `localeSlug` can be replaced with required `localeCode`
5
+ * - optional `localeSlug` can be replaced with optional `localeCode`
6
+ */
7
+ export var UrlGenerator;