@prezly/theme-kit-core 7.1.0 → 8.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (248) hide show
  1. package/build/boilerplate.cjs +17 -0
  2. package/build/boilerplate.d.ts +8 -0
  3. package/build/boilerplate.mjs +9 -0
  4. package/build/constants.cjs +11 -0
  5. package/build/{utils/constants.d.ts → constants.d.ts} +2 -1
  6. package/build/constants.mjs +5 -0
  7. package/build/content-delivery/ContentDelivery.cjs +348 -0
  8. package/build/content-delivery/ContentDelivery.d.ts +8 -4
  9. package/build/content-delivery/ContentDelivery.mjs +342 -0
  10. package/build/content-delivery/cache/index.cjs +35 -0
  11. package/build/content-delivery/cache/index.d.ts +3 -0
  12. package/build/content-delivery/cache/index.mjs +3 -0
  13. package/build/content-delivery/cache/memory.cjs +64 -0
  14. package/build/content-delivery/cache/memory.d.ts +2 -0
  15. package/build/content-delivery/cache/memory.mjs +58 -0
  16. package/build/content-delivery/cache/stacked.cjs +32 -0
  17. package/build/content-delivery/cache/stacked.d.ts +2 -0
  18. package/build/content-delivery/cache/stacked.mjs +26 -0
  19. package/build/content-delivery/cache/type.cjs +1 -0
  20. package/build/content-delivery/cache/type.d.ts +8 -0
  21. package/build/content-delivery/cache/type.mjs +1 -0
  22. package/build/content-delivery/index.cjs +27 -0
  23. package/build/content-delivery/index.d.ts +2 -1
  24. package/build/content-delivery/index.mjs +2 -0
  25. package/build/environment.cjs +42 -0
  26. package/build/environment.d.ts +2 -0
  27. package/build/environment.mjs +36 -0
  28. package/build/galleries.cjs +38 -0
  29. package/build/galleries.d.ts +11 -0
  30. package/build/galleries.mjs +30 -0
  31. package/build/http/HttpClient.cjs +66 -0
  32. package/build/http/HttpClient.d.ts +20 -0
  33. package/build/http/HttpClient.mjs +59 -0
  34. package/build/http/index.cjs +10 -0
  35. package/build/http/index.d.ts +1 -0
  36. package/build/http/index.mjs +2 -0
  37. package/build/index.cjs +88 -0
  38. package/build/index.d.ts +15 -4
  39. package/build/index.mjs +26 -0
  40. package/build/intl/getLanguageDisplayName.cjs +37 -0
  41. package/build/intl/getLanguageDisplayName.d.ts +20 -0
  42. package/build/intl/getLanguageDisplayName.mjs +32 -0
  43. package/build/intl/getLanguageDisplayName.test.cjs +46 -0
  44. package/build/intl/getLanguageDisplayName.test.mjs +44 -0
  45. package/build/intl/index.cjs +12 -0
  46. package/build/intl/index.d.ts +1 -5
  47. package/build/intl/index.mjs +1 -0
  48. package/build/metadata/getAlternateLanguageLinks.cjs +76 -0
  49. package/build/{seo → metadata}/getAlternateLanguageLinks.d.ts +2 -2
  50. package/build/metadata/getAlternateLanguageLinks.mjs +72 -0
  51. package/build/metadata/getAlternateLanguageLinks.test.cjs +198 -0
  52. package/build/metadata/getAlternateLanguageLinks.test.mjs +196 -0
  53. package/build/metadata/index.cjs +12 -0
  54. package/build/metadata/index.d.ts +2 -0
  55. package/build/metadata/index.mjs +1 -0
  56. package/build/metadata/types.cjs +1 -0
  57. package/build/metadata/types.d.ts +6 -0
  58. package/build/metadata/types.mjs +1 -0
  59. package/build/newsrooms.cjs +36 -0
  60. package/build/newsrooms.d.ts +5 -0
  61. package/build/newsrooms.mjs +28 -0
  62. package/build/privacy-portal.cjs +28 -0
  63. package/build/privacy-portal.d.ts +9 -0
  64. package/build/privacy-portal.mjs +21 -0
  65. package/build/resolvable.cjs +38 -0
  66. package/build/resolvable.d.ts +71 -0
  67. package/build/resolvable.mjs +32 -0
  68. package/build/routing/Route.cjs +46 -0
  69. package/build/routing/Route.d.ts +37 -0
  70. package/build/routing/Route.mjs +40 -0
  71. package/build/routing/Router.cjs +51 -0
  72. package/build/routing/Router.d.ts +23 -0
  73. package/build/routing/Router.mjs +45 -0
  74. package/build/routing/Routing.cjs +24 -0
  75. package/build/routing/Routing.d.ts +1 -0
  76. package/build/routing/Routing.mjs +2 -0
  77. package/build/routing/UrlGenerator.cjs +13 -0
  78. package/build/routing/UrlGenerator.d.ts +39 -0
  79. package/build/routing/UrlGenerator.mjs +7 -0
  80. package/build/routing/index.cjs +24 -0
  81. package/build/routing/index.d.ts +4 -0
  82. package/build/routing/index.mjs +4 -0
  83. package/build/routing/types.cjs +1 -0
  84. package/build/routing/types.d.ts +14 -0
  85. package/build/routing/types.mjs +1 -0
  86. package/build/routing/utils/generateUrlFromPattern.cjs +52 -0
  87. package/build/routing/utils/generateUrlFromPattern.d.ts +12 -0
  88. package/build/routing/utils/generateUrlFromPattern.mjs +47 -0
  89. package/build/routing/utils/generateUrlFromPattern.test.cjs +44 -0
  90. package/build/routing/utils/generateUrlFromPattern.test.mjs +42 -0
  91. package/build/routing/utils/getShortestLocaleSlug.cjs +60 -0
  92. package/build/routing/utils/getShortestLocaleSlug.d.ts +11 -0
  93. package/build/routing/utils/getShortestLocaleSlug.mjs +53 -0
  94. package/build/routing/utils/getShortestLocaleSlug.test.cjs +37 -0
  95. package/build/routing/utils/getShortestLocaleSlug.test.mjs +35 -0
  96. package/build/routing/utils/index.cjs +40 -0
  97. package/build/routing/utils/index.d.ts +5 -0
  98. package/build/routing/utils/index.mjs +5 -0
  99. package/build/routing/utils/isNumberCode.cjs +12 -0
  100. package/build/routing/utils/isNumberCode.d.ts +4 -0
  101. package/build/routing/utils/isNumberCode.mjs +6 -0
  102. package/build/routing/utils/matchLocaleSlug.cjs +41 -0
  103. package/build/routing/utils/matchLocaleSlug.d.ts +15 -0
  104. package/build/routing/utils/matchLocaleSlug.mjs +34 -0
  105. package/build/routing/utils/matchLocaleSlug.test.cjs +43 -0
  106. package/build/routing/utils/matchLocaleSlug.test.mjs +40 -0
  107. package/build/routing/utils/normalizeUrl.cjs +9 -0
  108. package/build/routing/utils/normalizeUrl.d.ts +1 -0
  109. package/build/routing/utils/normalizeUrl.mjs +3 -0
  110. package/build/search.cjs +1 -0
  111. package/build/{types.d.ts → search.d.ts} +3 -3
  112. package/build/search.mjs +1 -0
  113. package/build/sitemap/build.cjs +33 -0
  114. package/build/sitemap/build.d.ts +6 -0
  115. package/build/sitemap/build.mjs +27 -0
  116. package/build/sitemap/generate.cjs +192 -0
  117. package/build/sitemap/generate.d.ts +37 -0
  118. package/build/sitemap/generate.mjs +183 -0
  119. package/build/sitemap/index.cjs +38 -0
  120. package/build/sitemap/index.d.ts +4 -0
  121. package/build/sitemap/index.mjs +3 -0
  122. package/build/sitemap/stringify.cjs +24 -0
  123. package/build/sitemap/stringify.d.ts +2 -0
  124. package/build/sitemap/stringify.mjs +18 -0
  125. package/build/sitemap/types.cjs +1 -0
  126. package/build/sitemap/types.d.ts +67 -0
  127. package/build/sitemap/types.mjs +1 -0
  128. package/build/uploads.cjs +14 -0
  129. package/build/{utils/getAssetsUrl.d.ts → uploads.d.ts} +1 -1
  130. package/build/uploads.mjs +8 -0
  131. package/build/uploads.test.cjs +10 -0
  132. package/build/uploads.test.mjs +8 -0
  133. package/package.json +23 -26
  134. package/build/content-delivery/ContentDelivery.js +0 -238
  135. package/build/content-delivery/ContentDelivery.js.map +0 -1
  136. package/build/content-delivery/index.js +0 -28
  137. package/build/content-delivery/index.js.map +0 -1
  138. package/build/data-fetching/api/index.d.ts +0 -1
  139. package/build/data-fetching/api/index.js +0 -6
  140. package/build/data-fetching/api/index.js.map +0 -1
  141. package/build/data-fetching/api/initContentDeliveryClient.d.ts +0 -4
  142. package/build/data-fetching/api/initContentDeliveryClient.js +0 -25
  143. package/build/data-fetching/api/initContentDeliveryClient.js.map +0 -1
  144. package/build/data-fetching/index.d.ts +0 -3
  145. package/build/data-fetching/index.js +0 -20
  146. package/build/data-fetching/index.js.map +0 -1
  147. package/build/data-fetching/lib/getAlgoliaSettings.d.ts +0 -4
  148. package/build/data-fetching/lib/getAlgoliaSettings.js +0 -21
  149. package/build/data-fetching/lib/getAlgoliaSettings.js.map +0 -1
  150. package/build/data-fetching/lib/getEnvVariables.d.ts +0 -4
  151. package/build/data-fetching/lib/getEnvVariables.js +0 -43
  152. package/build/data-fetching/lib/getEnvVariables.js.map +0 -1
  153. package/build/data-fetching/lib/index.d.ts +0 -3
  154. package/build/data-fetching/lib/index.js +0 -10
  155. package/build/data-fetching/lib/index.js.map +0 -1
  156. package/build/data-fetching/lib/isUuid.d.ts +0 -1
  157. package/build/data-fetching/lib/isUuid.js +0 -9
  158. package/build/data-fetching/lib/isUuid.js.map +0 -1
  159. package/build/data-fetching/types.d.ts +0 -13
  160. package/build/data-fetching/types.js +0 -3
  161. package/build/data-fetching/types.js.map +0 -1
  162. package/build/index.js +0 -21
  163. package/build/index.js.map +0 -1
  164. package/build/intl/getFallbackLocale.d.ts +0 -10
  165. package/build/intl/getFallbackLocale.js +0 -24
  166. package/build/intl/getFallbackLocale.js.map +0 -1
  167. package/build/intl/index.js +0 -27
  168. package/build/intl/index.js.map +0 -1
  169. package/build/intl/languages.d.ts +0 -57
  170. package/build/intl/languages.js +0 -191
  171. package/build/intl/languages.js.map +0 -1
  172. package/build/intl/locale.d.ts +0 -11
  173. package/build/intl/locale.js +0 -41
  174. package/build/intl/locale.js.map +0 -1
  175. package/build/intl/localeConfig.d.ts +0 -2
  176. package/build/intl/localeConfig.js +0 -22
  177. package/build/intl/localeConfig.js.map +0 -1
  178. package/build/intl/localeList.d.ts +0 -2
  179. package/build/intl/localeList.js +0 -114
  180. package/build/intl/localeList.js.map +0 -1
  181. package/build/intl/localeObject.d.ts +0 -51
  182. package/build/intl/localeObject.js +0 -98
  183. package/build/intl/localeObject.js.map +0 -1
  184. package/build/seo/getAlternateLanguageLinks.js +0 -85
  185. package/build/seo/getAlternateLanguageLinks.js.map +0 -1
  186. package/build/seo/index.d.ts +0 -2
  187. package/build/seo/index.js +0 -19
  188. package/build/seo/index.js.map +0 -1
  189. package/build/seo/types.d.ts +0 -4
  190. package/build/seo/types.js +0 -3
  191. package/build/seo/types.js.map +0 -1
  192. package/build/seo/utils/bindLanguagesWithLocales.d.ts +0 -11
  193. package/build/seo/utils/bindLanguagesWithLocales.js +0 -23
  194. package/build/seo/utils/bindLanguagesWithLocales.js.map +0 -1
  195. package/build/seo/utils/createAlternateLanguageLink.d.ts +0 -5
  196. package/build/seo/utils/createAlternateLanguageLink.js +0 -15
  197. package/build/seo/utils/createAlternateLanguageLink.js.map +0 -1
  198. package/build/seo/utils/index.d.ts +0 -2
  199. package/build/seo/utils/index.js +0 -8
  200. package/build/seo/utils/index.js.map +0 -1
  201. package/build/server.d.ts +0 -2
  202. package/build/server.js +0 -21
  203. package/build/server.js.map +0 -1
  204. package/build/types.js +0 -3
  205. package/build/types.js.map +0 -1
  206. package/build/utils/assertServerEnv.d.ts +0 -1
  207. package/build/utils/assertServerEnv.js +0 -10
  208. package/build/utils/assertServerEnv.js.map +0 -1
  209. package/build/utils/boilerplate.d.ts +0 -8
  210. package/build/utils/boilerplate.js +0 -27
  211. package/build/utils/boilerplate.js.map +0 -1
  212. package/build/utils/constants.js +0 -8
  213. package/build/utils/constants.js.map +0 -1
  214. package/build/utils/getAssetsUrl.js +0 -13
  215. package/build/utils/getAssetsUrl.js.map +0 -1
  216. package/build/utils/getDataRequestLink.d.ts +0 -3
  217. package/build/utils/getDataRequestLink.js +0 -12
  218. package/build/utils/getDataRequestLink.js.map +0 -1
  219. package/build/utils/getGalleryThumbnail.d.ts +0 -2
  220. package/build/utils/getGalleryThumbnail.js +0 -15
  221. package/build/utils/getGalleryThumbnail.js.map +0 -1
  222. package/build/utils/getLocalizedCategoryData.d.ts +0 -12
  223. package/build/utils/getLocalizedCategoryData.js +0 -34
  224. package/build/utils/getLocalizedCategoryData.js.map +0 -1
  225. package/build/utils/getNewsroomLogoUrl.d.ts +0 -5
  226. package/build/utils/getNewsroomLogoUrl.js +0 -30
  227. package/build/utils/getNewsroomLogoUrl.js.map +0 -1
  228. package/build/utils/getPrivacyPortalUrl.d.ts +0 -8
  229. package/build/utils/getPrivacyPortalUrl.js +0 -13
  230. package/build/utils/getPrivacyPortalUrl.js.map +0 -1
  231. package/build/utils/getStoryPublicationDate.d.ts +0 -3
  232. package/build/utils/getStoryPublicationDate.js +0 -14
  233. package/build/utils/getStoryPublicationDate.js.map +0 -1
  234. package/build/utils/getUploadcareGroupUrl.d.ts +0 -8
  235. package/build/utils/getUploadcareGroupUrl.js +0 -17
  236. package/build/utils/getUploadcareGroupUrl.js.map +0 -1
  237. package/build/utils/index.d.ts +0 -14
  238. package/build/utils/index.js +0 -31
  239. package/build/utils/index.js.map +0 -1
  240. package/build/utils/isEmbargoStory.d.ts +0 -6
  241. package/build/utils/isEmbargoStory.js +0 -9
  242. package/build/utils/isEmbargoStory.js.map +0 -1
  243. package/build/utils/isGalleryEmpty.d.ts +0 -2
  244. package/build/utils/isGalleryEmpty.js +0 -8
  245. package/build/utils/isGalleryEmpty.js.map +0 -1
  246. package/build/utils/sdkHelpers.d.ts +0 -32
  247. package/build/utils/sdkHelpers.js +0 -42
  248. package/build/utils/sdkHelpers.js.map +0 -1
@@ -0,0 +1,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;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "Route", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _Route.Route;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "Router", {
13
+ enumerable: true,
14
+ get: function get() {
15
+ return _Router.Router;
16
+ }
17
+ });
18
+ exports.Routing = void 0;
19
+ var _Route = require("./Route.cjs");
20
+ var _Router = require("./Router.cjs");
21
+ var _Routing = _interopRequireWildcard(require("./Routing.cjs"));
22
+ exports.Routing = _Routing;
23
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
24
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
@@ -0,0 +1,4 @@
1
+ export { Route } from './Route';
2
+ export { Router, type RoutesMap } from './Router';
3
+ export * as Routing from './Routing';
4
+ export type { UrlGenerator } from './UrlGenerator';
@@ -0,0 +1,4 @@
1
+ export { Route } from "./Route.mjs";
2
+ export { Router } from "./Router.mjs";
3
+ import * as _Routing from "./Routing.mjs";
4
+ export { _Routing as Routing };
@@ -0,0 +1 @@
1
+ "use strict";
@@ -0,0 +1,14 @@
1
+ export type Awaitable<T> = T | Promise<T> | PromiseLike<T>;
2
+ export type ExtractPathParams<T extends string> = T extends `${infer _Start}(/:${infer Param})/${infer Rest}` ? {
3
+ [k in Param]?: string;
4
+ } & ExtractPathParams<Rest> : T extends `${infer _Start}(:${infer Param})/${infer Rest}` ? {
5
+ [k in Param]?: string;
6
+ } & ExtractPathParams<Rest> : T extends `${infer _Start}:${infer Param}/${infer Rest}` ? {
7
+ [k in Param]: string;
8
+ } & ExtractPathParams<Rest> : T extends `${infer _Start}(/:${infer Param})` ? {
9
+ [k in Param]?: string;
10
+ } : T extends `${infer _Start}(:${infer Param})` ? {
11
+ [k in Param]?: string;
12
+ } : T extends `${infer _Start}:${infer Param}` ? {
13
+ [k in Param]: string;
14
+ } : {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.generateUrlFromPattern = generateUrlFromPattern;
7
+ var _omitUndefined = require("@technically/omit-undefined");
8
+ var _urlPattern = _interopRequireDefault(require("url-pattern"));
9
+ var _getShortestLocaleSlug = require("./getShortestLocaleSlug.cjs");
10
+ var _normalizeUrl = require("./normalizeUrl.cjs");
11
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
13
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
14
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
15
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
16
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } /* eslint-disable @typescript-eslint/no-use-before-define */
17
+ var CACHE = new Map();
18
+ function toUrlPattern(pattern) {
19
+ var cached = CACHE.get(pattern);
20
+ if (cached) return cached;
21
+ var urlPattern = new _urlPattern.default(pattern);
22
+ CACHE.set(pattern, urlPattern);
23
+ return urlPattern;
24
+ }
25
+ function generateUrlFromPattern(pattern) {
26
+ var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
27
+ var context = arguments.length > 2 ? arguments[2] : undefined;
28
+ var urlPattern = toUrlPattern(pattern);
29
+ if (context) {
30
+ var {
31
+ localeCode
32
+ } = params;
33
+ var localeSlug = getLocaleSlug(params, context);
34
+ return (0, _normalizeUrl.normalizeUrl)(urlPattern.stringify((0, _omitUndefined.omitUndefined)(_objectSpread(_objectSpread({}, params), {}, {
35
+ localeCode,
36
+ localeSlug
37
+ }))));
38
+ }
39
+ return (0, _normalizeUrl.normalizeUrl)(urlPattern.stringify((0, _omitUndefined.omitUndefined)(params)));
40
+ }
41
+ function getLocaleSlug(params, context) {
42
+ if (params.localeSlug) {
43
+ return params.localeSlug;
44
+ }
45
+ if (params.localeCode) {
46
+ var {
47
+ toLocaleSlug = _getShortestLocaleSlug.getShortestLocaleSlug
48
+ } = context;
49
+ return toLocaleSlug(params.localeCode, context) || '';
50
+ }
51
+ return '';
52
+ }