@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.
- package/build/boilerplate.cjs +17 -0
- package/build/boilerplate.d.ts +8 -0
- package/build/boilerplate.mjs +9 -0
- package/build/constants.cjs +11 -0
- package/build/{utils/constants.d.ts → constants.d.ts} +2 -1
- package/build/constants.mjs +5 -0
- package/build/content-delivery/ContentDelivery.cjs +348 -0
- package/build/content-delivery/ContentDelivery.d.ts +8 -4
- package/build/content-delivery/ContentDelivery.mjs +342 -0
- package/build/content-delivery/cache/index.cjs +35 -0
- package/build/content-delivery/cache/index.d.ts +3 -0
- package/build/content-delivery/cache/index.mjs +3 -0
- package/build/content-delivery/cache/memory.cjs +65 -0
- package/build/content-delivery/cache/memory.d.ts +3 -0
- package/build/content-delivery/cache/memory.mjs +58 -0
- package/build/content-delivery/cache/memory.test.cjs +54 -0
- package/build/content-delivery/cache/memory.test.mjs +52 -0
- package/build/content-delivery/cache/stacked.cjs +32 -0
- package/build/content-delivery/cache/stacked.d.ts +2 -0
- package/build/content-delivery/cache/stacked.mjs +26 -0
- package/build/content-delivery/cache/type.cjs +1 -0
- package/build/content-delivery/cache/type.d.ts +8 -0
- package/build/content-delivery/cache/type.mjs +1 -0
- package/build/content-delivery/index.cjs +27 -0
- package/build/content-delivery/index.d.ts +2 -1
- package/build/content-delivery/index.mjs +2 -0
- package/build/environment.cjs +42 -0
- package/build/environment.d.ts +2 -0
- package/build/environment.mjs +36 -0
- package/build/galleries.cjs +38 -0
- package/build/galleries.d.ts +11 -0
- package/build/galleries.mjs +30 -0
- package/build/http/HttpClient.cjs +66 -0
- package/build/http/HttpClient.d.ts +20 -0
- package/build/http/HttpClient.mjs +59 -0
- package/build/http/index.cjs +10 -0
- package/build/http/index.d.ts +1 -0
- package/build/http/index.mjs +2 -0
- package/build/index.cjs +88 -0
- package/build/index.d.ts +15 -4
- package/build/index.mjs +26 -0
- package/build/intl/getLanguageDisplayName.cjs +37 -0
- package/build/intl/getLanguageDisplayName.d.ts +20 -0
- package/build/intl/getLanguageDisplayName.mjs +32 -0
- package/build/intl/getLanguageDisplayName.test.cjs +46 -0
- package/build/intl/getLanguageDisplayName.test.mjs +44 -0
- package/build/intl/index.cjs +12 -0
- package/build/intl/index.d.ts +1 -5
- package/build/intl/index.mjs +1 -0
- package/build/metadata/getAlternateLanguageLinks.cjs +76 -0
- package/build/{seo → metadata}/getAlternateLanguageLinks.d.ts +2 -2
- package/build/metadata/getAlternateLanguageLinks.mjs +72 -0
- package/build/metadata/getAlternateLanguageLinks.test.cjs +198 -0
- package/build/metadata/getAlternateLanguageLinks.test.mjs +196 -0
- package/build/metadata/index.cjs +12 -0
- package/build/metadata/index.d.ts +2 -0
- package/build/metadata/index.mjs +1 -0
- package/build/metadata/types.cjs +1 -0
- package/build/metadata/types.d.ts +6 -0
- package/build/metadata/types.mjs +1 -0
- package/build/newsrooms.cjs +36 -0
- package/build/newsrooms.d.ts +5 -0
- package/build/newsrooms.mjs +28 -0
- package/build/privacy-portal.cjs +28 -0
- package/build/privacy-portal.d.ts +9 -0
- package/build/privacy-portal.mjs +21 -0
- package/build/resolvable.cjs +38 -0
- package/build/resolvable.d.ts +71 -0
- package/build/resolvable.mjs +32 -0
- package/build/routing/Route.cjs +46 -0
- package/build/routing/Route.d.ts +37 -0
- package/build/routing/Route.mjs +40 -0
- package/build/routing/Router.cjs +51 -0
- package/build/routing/Router.d.ts +23 -0
- package/build/routing/Router.mjs +45 -0
- package/build/routing/Routing.cjs +24 -0
- package/build/routing/Routing.d.ts +1 -0
- package/build/routing/Routing.mjs +2 -0
- package/build/routing/UrlGenerator.cjs +13 -0
- package/build/routing/UrlGenerator.d.ts +39 -0
- package/build/routing/UrlGenerator.mjs +7 -0
- package/build/routing/index.cjs +24 -0
- package/build/routing/index.d.ts +4 -0
- package/build/routing/index.mjs +4 -0
- package/build/routing/types.cjs +1 -0
- package/build/routing/types.d.ts +14 -0
- package/build/routing/types.mjs +1 -0
- package/build/routing/utils/generateUrlFromPattern.cjs +52 -0
- package/build/routing/utils/generateUrlFromPattern.d.ts +12 -0
- package/build/routing/utils/generateUrlFromPattern.mjs +47 -0
- package/build/routing/utils/generateUrlFromPattern.test.cjs +44 -0
- package/build/routing/utils/generateUrlFromPattern.test.mjs +42 -0
- package/build/routing/utils/getShortestLocaleSlug.cjs +60 -0
- package/build/routing/utils/getShortestLocaleSlug.d.ts +11 -0
- package/build/routing/utils/getShortestLocaleSlug.mjs +53 -0
- package/build/routing/utils/getShortestLocaleSlug.test.cjs +37 -0
- package/build/routing/utils/getShortestLocaleSlug.test.mjs +35 -0
- package/build/routing/utils/index.cjs +40 -0
- package/build/routing/utils/index.d.ts +5 -0
- package/build/routing/utils/index.mjs +5 -0
- package/build/routing/utils/isNumberCode.cjs +12 -0
- package/build/routing/utils/isNumberCode.d.ts +4 -0
- package/build/routing/utils/isNumberCode.mjs +6 -0
- package/build/routing/utils/matchLocaleSlug.cjs +41 -0
- package/build/routing/utils/matchLocaleSlug.d.ts +15 -0
- package/build/routing/utils/matchLocaleSlug.mjs +34 -0
- package/build/routing/utils/matchLocaleSlug.test.cjs +43 -0
- package/build/routing/utils/matchLocaleSlug.test.mjs +40 -0
- package/build/routing/utils/normalizeUrl.cjs +9 -0
- package/build/routing/utils/normalizeUrl.d.ts +1 -0
- package/build/routing/utils/normalizeUrl.mjs +3 -0
- package/build/search.cjs +1 -0
- package/build/{types.d.ts → search.d.ts} +3 -3
- package/build/search.mjs +1 -0
- package/build/sitemap/build.cjs +33 -0
- package/build/sitemap/build.d.ts +6 -0
- package/build/sitemap/build.mjs +27 -0
- package/build/sitemap/generate.cjs +192 -0
- package/build/sitemap/generate.d.ts +37 -0
- package/build/sitemap/generate.mjs +183 -0
- package/build/sitemap/index.cjs +38 -0
- package/build/sitemap/index.d.ts +4 -0
- package/build/sitemap/index.mjs +3 -0
- package/build/sitemap/stringify.cjs +24 -0
- package/build/sitemap/stringify.d.ts +2 -0
- package/build/sitemap/stringify.mjs +18 -0
- package/build/sitemap/types.cjs +1 -0
- package/build/sitemap/types.d.ts +67 -0
- package/build/sitemap/types.mjs +1 -0
- package/build/uploads.cjs +14 -0
- package/build/{utils/getAssetsUrl.d.ts → uploads.d.ts} +1 -1
- package/build/uploads.mjs +8 -0
- package/build/uploads.test.cjs +10 -0
- package/build/uploads.test.mjs +8 -0
- package/package.json +23 -26
- package/build/content-delivery/ContentDelivery.js +0 -238
- package/build/content-delivery/ContentDelivery.js.map +0 -1
- package/build/content-delivery/index.js +0 -28
- package/build/content-delivery/index.js.map +0 -1
- package/build/data-fetching/api/index.d.ts +0 -1
- package/build/data-fetching/api/index.js +0 -6
- package/build/data-fetching/api/index.js.map +0 -1
- package/build/data-fetching/api/initContentDeliveryClient.d.ts +0 -4
- package/build/data-fetching/api/initContentDeliveryClient.js +0 -25
- package/build/data-fetching/api/initContentDeliveryClient.js.map +0 -1
- package/build/data-fetching/index.d.ts +0 -3
- package/build/data-fetching/index.js +0 -20
- package/build/data-fetching/index.js.map +0 -1
- package/build/data-fetching/lib/getAlgoliaSettings.d.ts +0 -4
- package/build/data-fetching/lib/getAlgoliaSettings.js +0 -21
- package/build/data-fetching/lib/getAlgoliaSettings.js.map +0 -1
- package/build/data-fetching/lib/getEnvVariables.d.ts +0 -4
- package/build/data-fetching/lib/getEnvVariables.js +0 -43
- package/build/data-fetching/lib/getEnvVariables.js.map +0 -1
- package/build/data-fetching/lib/index.d.ts +0 -3
- package/build/data-fetching/lib/index.js +0 -10
- package/build/data-fetching/lib/index.js.map +0 -1
- package/build/data-fetching/lib/isUuid.d.ts +0 -1
- package/build/data-fetching/lib/isUuid.js +0 -9
- package/build/data-fetching/lib/isUuid.js.map +0 -1
- package/build/data-fetching/types.d.ts +0 -13
- package/build/data-fetching/types.js +0 -3
- package/build/data-fetching/types.js.map +0 -1
- package/build/index.js +0 -21
- package/build/index.js.map +0 -1
- package/build/intl/getFallbackLocale.d.ts +0 -10
- package/build/intl/getFallbackLocale.js +0 -24
- package/build/intl/getFallbackLocale.js.map +0 -1
- package/build/intl/index.js +0 -27
- package/build/intl/index.js.map +0 -1
- package/build/intl/languages.d.ts +0 -57
- package/build/intl/languages.js +0 -191
- package/build/intl/languages.js.map +0 -1
- package/build/intl/locale.d.ts +0 -11
- package/build/intl/locale.js +0 -41
- package/build/intl/locale.js.map +0 -1
- package/build/intl/localeConfig.d.ts +0 -2
- package/build/intl/localeConfig.js +0 -22
- package/build/intl/localeConfig.js.map +0 -1
- package/build/intl/localeList.d.ts +0 -2
- package/build/intl/localeList.js +0 -114
- package/build/intl/localeList.js.map +0 -1
- package/build/intl/localeObject.d.ts +0 -51
- package/build/intl/localeObject.js +0 -98
- package/build/intl/localeObject.js.map +0 -1
- package/build/seo/getAlternateLanguageLinks.js +0 -85
- package/build/seo/getAlternateLanguageLinks.js.map +0 -1
- package/build/seo/index.d.ts +0 -2
- package/build/seo/index.js +0 -19
- package/build/seo/index.js.map +0 -1
- package/build/seo/types.d.ts +0 -4
- package/build/seo/types.js +0 -3
- package/build/seo/types.js.map +0 -1
- package/build/seo/utils/bindLanguagesWithLocales.d.ts +0 -11
- package/build/seo/utils/bindLanguagesWithLocales.js +0 -23
- package/build/seo/utils/bindLanguagesWithLocales.js.map +0 -1
- package/build/seo/utils/createAlternateLanguageLink.d.ts +0 -5
- package/build/seo/utils/createAlternateLanguageLink.js +0 -15
- package/build/seo/utils/createAlternateLanguageLink.js.map +0 -1
- package/build/seo/utils/index.d.ts +0 -2
- package/build/seo/utils/index.js +0 -8
- package/build/seo/utils/index.js.map +0 -1
- package/build/server.d.ts +0 -2
- package/build/server.js +0 -21
- package/build/server.js.map +0 -1
- package/build/types.js +0 -3
- package/build/types.js.map +0 -1
- package/build/utils/assertServerEnv.d.ts +0 -1
- package/build/utils/assertServerEnv.js +0 -10
- package/build/utils/assertServerEnv.js.map +0 -1
- package/build/utils/boilerplate.d.ts +0 -8
- package/build/utils/boilerplate.js +0 -27
- package/build/utils/boilerplate.js.map +0 -1
- package/build/utils/constants.js +0 -8
- package/build/utils/constants.js.map +0 -1
- package/build/utils/getAssetsUrl.js +0 -13
- package/build/utils/getAssetsUrl.js.map +0 -1
- package/build/utils/getDataRequestLink.d.ts +0 -3
- package/build/utils/getDataRequestLink.js +0 -12
- package/build/utils/getDataRequestLink.js.map +0 -1
- package/build/utils/getGalleryThumbnail.d.ts +0 -2
- package/build/utils/getGalleryThumbnail.js +0 -15
- package/build/utils/getGalleryThumbnail.js.map +0 -1
- package/build/utils/getLocalizedCategoryData.d.ts +0 -12
- package/build/utils/getLocalizedCategoryData.js +0 -34
- package/build/utils/getLocalizedCategoryData.js.map +0 -1
- package/build/utils/getNewsroomLogoUrl.d.ts +0 -5
- package/build/utils/getNewsroomLogoUrl.js +0 -30
- package/build/utils/getNewsroomLogoUrl.js.map +0 -1
- package/build/utils/getPrivacyPortalUrl.d.ts +0 -8
- package/build/utils/getPrivacyPortalUrl.js +0 -13
- package/build/utils/getPrivacyPortalUrl.js.map +0 -1
- package/build/utils/getStoryPublicationDate.d.ts +0 -3
- package/build/utils/getStoryPublicationDate.js +0 -14
- package/build/utils/getStoryPublicationDate.js.map +0 -1
- package/build/utils/getUploadcareGroupUrl.d.ts +0 -8
- package/build/utils/getUploadcareGroupUrl.js +0 -17
- package/build/utils/getUploadcareGroupUrl.js.map +0 -1
- package/build/utils/index.d.ts +0 -14
- package/build/utils/index.js +0 -31
- package/build/utils/index.js.map +0 -1
- package/build/utils/isEmbargoStory.d.ts +0 -6
- package/build/utils/isEmbargoStory.js +0 -9
- package/build/utils/isEmbargoStory.js.map +0 -1
- package/build/utils/isGalleryEmpty.d.ts +0 -2
- package/build/utils/isGalleryEmpty.js +0 -8
- package/build/utils/isGalleryEmpty.js.map +0 -1
- package/build/utils/sdkHelpers.d.ts +0 -32
- package/build/utils/sdkHelpers.js +0 -42
- 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 @@
|
|
|
1
|
+
export { getAlternateLanguageLinks } from "./getAlternateLanguageLinks.mjs";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";
|
|
@@ -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,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;
|