@prezly/theme-kit-core 4.0.0-alpha.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 (117) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +53 -0
  3. package/build/data-fetching/api/PrezlyApi.d.ts +53 -0
  4. package/build/data-fetching/api/PrezlyApi.js +169 -0
  5. package/build/data-fetching/api/PrezlyApi.js.map +1 -0
  6. package/build/data-fetching/api/getPrezlyApi.d.ts +4 -0
  7. package/build/data-fetching/api/getPrezlyApi.js +21 -0
  8. package/build/data-fetching/api/getPrezlyApi.js.map +1 -0
  9. package/build/data-fetching/api/index.d.ts +2 -0
  10. package/build/data-fetching/api/index.js +21 -0
  11. package/build/data-fetching/api/index.js.map +1 -0
  12. package/build/data-fetching/api/lib.d.ts +11 -0
  13. package/build/data-fetching/api/lib.js +20 -0
  14. package/build/data-fetching/api/lib.js.map +1 -0
  15. package/build/data-fetching/api/queries.d.ts +46 -0
  16. package/build/data-fetching/api/queries.js +56 -0
  17. package/build/data-fetching/api/queries.js.map +1 -0
  18. package/build/data-fetching/index.d.ts +3 -0
  19. package/build/data-fetching/index.js +20 -0
  20. package/build/data-fetching/index.js.map +1 -0
  21. package/build/data-fetching/lib/getAlgoliaSettings.d.ts +4 -0
  22. package/build/data-fetching/lib/getAlgoliaSettings.js +22 -0
  23. package/build/data-fetching/lib/getAlgoliaSettings.js.map +1 -0
  24. package/build/data-fetching/lib/getEnvVariables.d.ts +4 -0
  25. package/build/data-fetching/lib/getEnvVariables.js +44 -0
  26. package/build/data-fetching/lib/getEnvVariables.js.map +1 -0
  27. package/build/data-fetching/lib/index.d.ts +4 -0
  28. package/build/data-fetching/lib/index.js +12 -0
  29. package/build/data-fetching/lib/index.js.map +1 -0
  30. package/build/data-fetching/lib/isSdkError.d.ts +2 -0
  31. package/build/data-fetching/lib/isSdkError.js +8 -0
  32. package/build/data-fetching/lib/isSdkError.js.map +1 -0
  33. package/build/data-fetching/lib/isUuid.d.ts +1 -0
  34. package/build/data-fetching/lib/isUuid.js +9 -0
  35. package/build/data-fetching/lib/isUuid.js.map +1 -0
  36. package/build/data-fetching/types.d.ts +13 -0
  37. package/build/data-fetching/types.js +3 -0
  38. package/build/data-fetching/types.js.map +1 -0
  39. package/build/index.d.ts +5 -0
  40. package/build/index.js +22 -0
  41. package/build/index.js.map +1 -0
  42. package/build/intl/getFallbackLocale.d.ts +10 -0
  43. package/build/intl/getFallbackLocale.js +24 -0
  44. package/build/intl/getFallbackLocale.js.map +1 -0
  45. package/build/intl/index.d.ts +5 -0
  46. package/build/intl/index.js +27 -0
  47. package/build/intl/index.js.map +1 -0
  48. package/build/intl/languages.d.ts +44 -0
  49. package/build/intl/languages.js +148 -0
  50. package/build/intl/languages.js.map +1 -0
  51. package/build/intl/locale.d.ts +11 -0
  52. package/build/intl/locale.js +94 -0
  53. package/build/intl/locale.js.map +1 -0
  54. package/build/intl/localeConfig.d.ts +2 -0
  55. package/build/intl/localeConfig.js +20 -0
  56. package/build/intl/localeConfig.js.map +1 -0
  57. package/build/intl/localeList.d.ts +2 -0
  58. package/build/intl/localeList.js +112 -0
  59. package/build/intl/localeList.js.map +1 -0
  60. package/build/intl/localeObject.d.ts +50 -0
  61. package/build/intl/localeObject.js +98 -0
  62. package/build/intl/localeObject.js.map +1 -0
  63. package/build/seo/getAlternateLanguageLinks.d.ts +4 -0
  64. package/build/seo/getAlternateLanguageLinks.js +83 -0
  65. package/build/seo/getAlternateLanguageLinks.js.map +1 -0
  66. package/build/seo/index.d.ts +2 -0
  67. package/build/seo/index.js +19 -0
  68. package/build/seo/index.js.map +1 -0
  69. package/build/seo/types.d.ts +4 -0
  70. package/build/seo/types.js +3 -0
  71. package/build/seo/types.js.map +1 -0
  72. package/build/seo/utils/bindLanguagesWithLocales.d.ts +11 -0
  73. package/build/seo/utils/bindLanguagesWithLocales.js +23 -0
  74. package/build/seo/utils/bindLanguagesWithLocales.js.map +1 -0
  75. package/build/seo/utils/createAlternateLanguageLink.d.ts +5 -0
  76. package/build/seo/utils/createAlternateLanguageLink.js +15 -0
  77. package/build/seo/utils/createAlternateLanguageLink.js.map +1 -0
  78. package/build/seo/utils/index.d.ts +2 -0
  79. package/build/seo/utils/index.js +8 -0
  80. package/build/seo/utils/index.js.map +1 -0
  81. package/build/types.d.ts +29 -0
  82. package/build/types.js +3 -0
  83. package/build/types.js.map +1 -0
  84. package/build/utils/boilerplate.d.ts +4 -0
  85. package/build/utils/boilerplate.js +27 -0
  86. package/build/utils/boilerplate.js.map +1 -0
  87. package/build/utils/constants.d.ts +3 -0
  88. package/build/utils/constants.js +7 -0
  89. package/build/utils/constants.js.map +1 -0
  90. package/build/utils/getAssetsUrl.d.ts +5 -0
  91. package/build/utils/getAssetsUrl.js +13 -0
  92. package/build/utils/getAssetsUrl.js.map +1 -0
  93. package/build/utils/getDataRequestLink.d.ts +3 -0
  94. package/build/utils/getDataRequestLink.js +12 -0
  95. package/build/utils/getDataRequestLink.js.map +1 -0
  96. package/build/utils/getLocalizedCategoryData.d.ts +10 -0
  97. package/build/utils/getLocalizedCategoryData.js +37 -0
  98. package/build/utils/getLocalizedCategoryData.js.map +1 -0
  99. package/build/utils/getNewsroomLogoUrl.d.ts +3 -0
  100. package/build/utils/getNewsroomLogoUrl.js +22 -0
  101. package/build/utils/getNewsroomLogoUrl.js.map +1 -0
  102. package/build/utils/getPrivacyPortalUrl.d.ts +8 -0
  103. package/build/utils/getPrivacyPortalUrl.js +13 -0
  104. package/build/utils/getPrivacyPortalUrl.js.map +1 -0
  105. package/build/utils/getStoryPublicationDate.d.ts +3 -0
  106. package/build/utils/getStoryPublicationDate.js +14 -0
  107. package/build/utils/getStoryPublicationDate.js.map +1 -0
  108. package/build/utils/getUploadcareGroupUrl.d.ts +8 -0
  109. package/build/utils/getUploadcareGroupUrl.js +17 -0
  110. package/build/utils/getUploadcareGroupUrl.js.map +1 -0
  111. package/build/utils/index.d.ts +10 -0
  112. package/build/utils/index.js +27 -0
  113. package/build/utils/index.js.map +1 -0
  114. package/build/utils/isEmbargoStory.d.ts +6 -0
  115. package/build/utils/isEmbargoStory.js +8 -0
  116. package/build/utils/isEmbargoStory.js.map +1 -0
  117. package/package.json +54 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2023 Prezly
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,53 @@
1
+ # JavaScript Prezly Theme Kit
2
+
3
+ ![Version](https://img.shields.io/npm/v/@prezly/theme-kit-core)
4
+ ![License](https://img.shields.io/npm/l/@prezly/theme-kit-core)
5
+
6
+ This library is a collection of data-fetching and utility functions to abstract some of the under-the-hood logic used by Prezly sites and help developers create themes with JavaScript much faster.
7
+
8
+ The package is built with [Typescript] on top of [Prezly SDK].
9
+
10
+ ## Adding the library to your theme
11
+
12
+ ### npm
13
+
14
+ ```Shell
15
+ npm install --save @prezly/theme-kit-core
16
+ ```
17
+
18
+ ### .env
19
+
20
+ Prezly themes use two ways of getting base environment variables:
21
+ - Getting variables straight from `.env` file
22
+ - Extracting variables from HTTP headers (when hosted on the Prezly infrastructure)
23
+
24
+ For local development, and for self-hosted themes, you can only use the former option. Add these variables to your `.env` file:
25
+ ```
26
+ PREZLY_ACCESS_TOKEN=your access token
27
+ PREZLY_NEWSROOM_UUID=your site UUID
28
+ PREZLY_THEME_UUID=your theme UUID
29
+ ```
30
+
31
+ `PREZLY_THEME_UUID` variable is only reqiured for developing themes that are already hosted on Prezly infrastructure.
32
+ It determines which theme preset will be pulled from the API. For self-hosted themes, you'll want to handle the theme settings in some other way.
33
+
34
+ If you don't have these credentials, you can use one of our [testing sites credentials](https://github.com/prezly/theme-nextjs-starter#testingtoken).
35
+
36
+ ----
37
+
38
+ ## What's next
39
+
40
+ This kit is just a collection of building blocks, so it doesn't really force any page structure or guidelines on how to render the content.
41
+ You can learn more on how this kit can be used by checking the code of Prezly's themes:
42
+ - [Prezly Starter Theme](https://github.com/prezly/theme-nextjs-starter) - this is a bare-bones application created to demonstrate how to display the fetched content and recommended page structure
43
+ - [Prezly Bea Theme](https://github.com/prezly/theme-nextjs-bea) - this is our new fully-fledged theme available to all Prezly customers. It has lots of stuff on top, both in styling and in data logic.
44
+
45
+ You can also learn more about Prezly API by checking out typings in [Prezly SDK] package, and referring to the [Prezly API Docs]
46
+
47
+ ----
48
+
49
+ Brought to you by [Prezly](https://www.prezly.com/?utm_source=github&utm_campaign=@prezly/theme-kit-js).
50
+
51
+ [Prezly SDK]: https://www.npmjs.com/package/@prezly/sdk
52
+ [Prezly API Docs]: https://developers.prezly.com/docs/api
53
+ [Typescript]: https://www.typescriptlang.org
@@ -0,0 +1,53 @@
1
+ import { SortOrder } from '@prezly/sdk';
2
+ import type { Category, Newsroom, NewsroomLanguageSettings, PrezlyClient, Stories, Story } from '@prezly/sdk';
3
+ interface GetStoriesOptions {
4
+ page?: number;
5
+ pageSize?: number;
6
+ order?: `${SortOrder.Direction}`;
7
+ pinning?: boolean;
8
+ include?: (keyof Story.ExtraFields)[];
9
+ localeCode?: string;
10
+ /**
11
+ * When set to `true`, the result for the first page will include one extra story to place as highlighted story.
12
+ * This will offset each subsequent page by 1 story to account for that.
13
+ */
14
+ withHighlightedStory?: boolean;
15
+ }
16
+ interface GetGalleriesOptions {
17
+ page?: number;
18
+ pageSize?: number;
19
+ }
20
+ export declare class PrezlyApi {
21
+ protected readonly sdk: PrezlyClient;
22
+ protected readonly newsroomUuid: Newsroom['uuid'];
23
+ protected readonly themeUuid: string | undefined;
24
+ constructor(accessToken: string, newsroomUuid: Newsroom['uuid'], themeUuid?: string);
25
+ getStory(uuid: string): Promise<import("@prezly/sdk").ExtendedStory | null | undefined>;
26
+ getNewsroom(): Promise<Newsroom>;
27
+ getNewsroomContacts(): Promise<import("@prezly/sdk").NewsroomContact[]>;
28
+ getNewsroomLanguages(): Promise<NewsroomLanguageSettings[]>;
29
+ /**
30
+ * Note: this method returns ALL stories from the newsroom. It's intended to be used for sitemaps and not to display actual content.
31
+ */
32
+ getAllStories({ order, pinning }?: GetStoriesOptions): Promise<Story[]>;
33
+ getStories({ page, pageSize, order, pinning, include, localeCode, withHighlightedStory, }?: GetStoriesOptions): Promise<{
34
+ stories: Story[];
35
+ storiesTotal: number;
36
+ }>;
37
+ getStoriesFromCategory(category: Category, { page, pageSize, order, include, localeCode, }?: Omit<GetStoriesOptions, 'pinning' | 'withHighlightedStory'>): Promise<{
38
+ stories: Story[];
39
+ storiesTotal: number;
40
+ }>;
41
+ getStoryBySlug(slug: string): Promise<import("@prezly/sdk").ExtendedStory | null | undefined>;
42
+ getCategories(): Promise<Category[]>;
43
+ getCategoryBySlug(slug: string): Promise<Category | undefined>;
44
+ searchStories: Stories.Client['search'];
45
+ getGalleries({ page, pageSize }: GetGalleriesOptions): Promise<import("@prezly/sdk/dist/endpoints/NewsroomGalleries").ListResponse>;
46
+ getGallery(uuid: string): Promise<import("@prezly/sdk").NewsroomGallery | null | undefined>;
47
+ /**
48
+ * In order to prevent issues with theme preview, we only load the theme preset for a specified theme, and not the currently active one.
49
+ */
50
+ getThemePreset(): Promise<import("@prezly/sdk").NewsroomThemePreset | null>;
51
+ getNewsroomDefaultLanguage(): Promise<NewsroomLanguageSettings>;
52
+ }
53
+ export {};
@@ -0,0 +1,169 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PrezlyApi = void 0;
4
+ const sdk_1 = require("@prezly/sdk");
5
+ const intl_1 = require("../../intl");
6
+ const utils_1 = require("../../utils");
7
+ const lib_1 = require("../lib");
8
+ const lib_2 = require("./lib");
9
+ const queries_1 = require("./queries");
10
+ const CATEGORIES_SORT_ORDER = '+order';
11
+ const DEFAULT_SORT_ORDER = sdk_1.SortOrder.Direction.DESC;
12
+ const ERROR_CODE_NOT_FOUND = 404;
13
+ const ERROR_CODE_FORBIDDEN = 403;
14
+ const ERROR_CODE_GONE = 410;
15
+ class PrezlyApi {
16
+ sdk;
17
+ newsroomUuid;
18
+ themeUuid;
19
+ constructor(accessToken, newsroomUuid, themeUuid) {
20
+ const baseUrl = process.env.API_BASE_URL_OVERRIDE ?? undefined;
21
+ this.sdk = (0, sdk_1.createPrezlyClient)({
22
+ accessToken,
23
+ baseUrl,
24
+ // This returns stories created by legacy version of the editor in a format that can be displayed by the Prezly Content Renderer.
25
+ headers: { 'X-Convert-v1-To-v3': 'true' },
26
+ });
27
+ this.newsroomUuid = newsroomUuid;
28
+ this.themeUuid = themeUuid;
29
+ }
30
+ async getStory(uuid) {
31
+ if (!(0, lib_1.isUuid)(uuid)) {
32
+ return undefined;
33
+ }
34
+ try {
35
+ const story = await this.sdk.stories.get(uuid);
36
+ return story;
37
+ }
38
+ catch (error) {
39
+ if ((0, lib_1.isSdkError)(error) &&
40
+ (error.status === ERROR_CODE_NOT_FOUND ||
41
+ error.status === ERROR_CODE_GONE ||
42
+ error.status === ERROR_CODE_FORBIDDEN)) {
43
+ return null;
44
+ }
45
+ throw error;
46
+ }
47
+ }
48
+ async getNewsroom() {
49
+ return this.sdk.newsrooms.get(this.newsroomUuid);
50
+ }
51
+ async getNewsroomContacts() {
52
+ return this.sdk.newsroomContacts.search(this.newsroomUuid, {
53
+ query: JSON.stringify((0, queries_1.getContactsQuery)()),
54
+ });
55
+ }
56
+ async getNewsroomLanguages() {
57
+ return (await this.sdk.newsroomLanguages.list(this.newsroomUuid)).languages;
58
+ }
59
+ /**
60
+ * Note: this method returns ALL stories from the newsroom. It's intended to be used for sitemaps and not to display actual content.
61
+ */
62
+ async getAllStories({ order = DEFAULT_SORT_ORDER, pinning = false } = {}) {
63
+ const sortOrder = (0, queries_1.getChronologicalSortOrder)(order, pinning);
64
+ const newsroom = await this.getNewsroom();
65
+ const query = JSON.stringify((0, queries_1.getStoriesQuery)(newsroom.uuid));
66
+ const maxStories = newsroom.stories_number;
67
+ const chunkSize = 200;
68
+ const pages = Math.ceil(maxStories / chunkSize);
69
+ const storiesPromises = Array.from({ length: pages }, (_, pageIndex) => this.searchStories({
70
+ limit: chunkSize,
71
+ sortOrder,
72
+ query,
73
+ offset: pageIndex * chunkSize,
74
+ }));
75
+ const stories = (await Promise.all(storiesPromises)).flatMap((response) => response.stories);
76
+ return stories;
77
+ }
78
+ async getStories({ page = undefined, pageSize = utils_1.DEFAULT_PAGE_SIZE, order = DEFAULT_SORT_ORDER, pinning = false, include, localeCode, withHighlightedStory, } = {}) {
79
+ const sortOrder = (0, queries_1.getChronologicalSortOrder)(order, pinning);
80
+ const query = JSON.stringify((0, queries_1.getStoriesQuery)(this.newsroomUuid, undefined, localeCode));
81
+ const { offset, limit } = (0, lib_2.toPaginationParams)({ page, pageSize, withHighlightedStory });
82
+ const { stories, pagination } = await this.searchStories({
83
+ limit,
84
+ offset,
85
+ sortOrder,
86
+ query,
87
+ include,
88
+ });
89
+ const storiesTotal = pagination.matched_records_number;
90
+ return { stories, storiesTotal };
91
+ }
92
+ async getStoriesFromCategory(category, { page = undefined, pageSize = utils_1.DEFAULT_PAGE_SIZE, order = DEFAULT_SORT_ORDER, include, localeCode, } = {}) {
93
+ const sortOrder = (0, queries_1.getChronologicalSortOrder)(order);
94
+ const query = JSON.stringify((0, queries_1.getStoriesQuery)(this.newsroomUuid, category.id, localeCode));
95
+ const { offset, limit } = (0, lib_2.toPaginationParams)({ page, pageSize });
96
+ const { stories, pagination } = await this.searchStories({
97
+ limit,
98
+ offset,
99
+ sortOrder,
100
+ query,
101
+ include,
102
+ });
103
+ const storiesTotal = pagination.matched_records_number;
104
+ return { stories, storiesTotal };
105
+ }
106
+ async getStoryBySlug(slug) {
107
+ const query = JSON.stringify((0, queries_1.getSlugQuery)(this.newsroomUuid, slug));
108
+ const { stories } = await this.searchStories({
109
+ limit: 1,
110
+ query,
111
+ });
112
+ if (stories[0]) {
113
+ return this.getStory(stories[0].uuid);
114
+ }
115
+ return null;
116
+ }
117
+ async getCategories() {
118
+ const categories = await this.sdk.newsroomCategories.list(this.newsroomUuid, {
119
+ sortOrder: CATEGORIES_SORT_ORDER,
120
+ });
121
+ return Array.isArray(categories) ? categories : Object.values(categories);
122
+ }
123
+ async getCategoryBySlug(slug) {
124
+ const categories = await this.getCategories();
125
+ return categories.find((category) => Object.values(category.i18n).some((t) => t.slug === slug));
126
+ }
127
+ searchStories = (options) => this.sdk.stories.search(options);
128
+ async getGalleries({ page, pageSize }) {
129
+ const { offset, limit } = (0, lib_2.toPaginationParams)({ page, pageSize });
130
+ return this.sdk.newsroomGalleries.search(this.newsroomUuid, {
131
+ limit,
132
+ offset,
133
+ scope: (0, queries_1.getGalleriesQuery)(),
134
+ });
135
+ }
136
+ async getGallery(uuid) {
137
+ if (!(0, lib_1.isUuid)(uuid)) {
138
+ // Check for legacy number ID reference, which is also supported for back-compat.
139
+ if (Number.isNaN(Number(uuid))) {
140
+ return undefined;
141
+ }
142
+ }
143
+ try {
144
+ const gallery = await this.sdk.newsroomGalleries.get(this.newsroomUuid, uuid);
145
+ return gallery;
146
+ }
147
+ catch (error) {
148
+ if ((0, lib_1.isSdkError)(error) && error.status === 404) {
149
+ return null;
150
+ }
151
+ throw error;
152
+ }
153
+ }
154
+ /**
155
+ * In order to prevent issues with theme preview, we only load the theme preset for a specified theme, and not the currently active one.
156
+ */
157
+ async getThemePreset() {
158
+ if (this.themeUuid) {
159
+ return this.sdk.newsroomThemes.get(this.newsroomUuid, this.themeUuid);
160
+ }
161
+ return null;
162
+ }
163
+ async getNewsroomDefaultLanguage() {
164
+ const languages = await this.getNewsroomLanguages();
165
+ return (0, intl_1.getDefaultLanguage)(languages);
166
+ }
167
+ }
168
+ exports.PrezlyApi = PrezlyApi;
169
+ //# sourceMappingURL=PrezlyApi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PrezlyApi.js","sourceRoot":"","sources":["../../../src/data-fetching/api/PrezlyApi.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ /// <reference types="node" />
2
+ import type { IncomingMessage } from 'http';
3
+ import { PrezlyApi } from './PrezlyApi';
4
+ export declare function getPrezlyApi(req?: IncomingMessage): PrezlyApi;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getPrezlyApi = void 0;
4
+ const getEnvVariables_1 = require("../lib/getEnvVariables");
5
+ const PrezlyApi_1 = require("./PrezlyApi");
6
+ function getPrezlyApi(req) {
7
+ if (typeof window !== 'undefined') {
8
+ throw new Error('"getPrezlyApi" should only be used on back-end side.');
9
+ }
10
+ // `getEnvVariables` handles both cases for envs parsing - .env and request headers
11
+ const { PREZLY_ACCESS_TOKEN, PREZLY_NEWSROOM_UUID, PREZLY_THEME_UUID } = (0, getEnvVariables_1.getEnvVariables)(req);
12
+ if (!PREZLY_ACCESS_TOKEN) {
13
+ throw new Error('"PREZLY_ACCESS_TOKEN" is not set in env variables.');
14
+ }
15
+ if (!PREZLY_NEWSROOM_UUID) {
16
+ throw new Error('"PREZLY_NEWSROOM_UUID" is not set in env variables.');
17
+ }
18
+ return new PrezlyApi_1.PrezlyApi(PREZLY_ACCESS_TOKEN, PREZLY_NEWSROOM_UUID, PREZLY_THEME_UUID);
19
+ }
20
+ exports.getPrezlyApi = getPrezlyApi;
21
+ //# sourceMappingURL=getPrezlyApi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getPrezlyApi.js","sourceRoot":"","sources":["../../../src/data-fetching/api/getPrezlyApi.ts"],"names":[],"mappings":";;;AAEA,4DAAyD;AAEzD,2CAAwC;AAExC,SAAgB,YAAY,CAAC,GAAqB;IAC9C,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;QAC/B,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;KAC3E;IAED,mFAAmF;IACnF,MAAM,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,GAAG,IAAA,iCAAe,EAAC,GAAG,CAAC,CAAC;IAE9F,IAAI,CAAC,mBAAmB,EAAE;QACtB,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;KACzE;IAED,IAAI,CAAC,oBAAoB,EAAE;QACvB,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;KAC1E;IAED,OAAO,IAAI,qBAAS,CAAC,mBAAmB,EAAE,oBAAoB,EAAE,iBAAiB,CAAC,CAAC;AACvF,CAAC;AAjBD,oCAiBC"}
@@ -0,0 +1,2 @@
1
+ export * from './getPrezlyApi';
2
+ export { PrezlyApi } from './PrezlyApi';
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.PrezlyApi = void 0;
18
+ __exportStar(require("./getPrezlyApi"), exports);
19
+ var PrezlyApi_1 = require("./PrezlyApi");
20
+ Object.defineProperty(exports, "PrezlyApi", { enumerable: true, get: function () { return PrezlyApi_1.PrezlyApi; } });
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/data-fetching/api/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,iDAA+B;AAC/B,yCAAwC;AAA/B,sGAAA,SAAS,OAAA"}
@@ -0,0 +1,11 @@
1
+ export declare function toPaginationParams(params: {
2
+ page?: number;
3
+ pageSize?: number;
4
+ withHighlightedStory?: boolean;
5
+ }): {
6
+ offset: undefined;
7
+ limit: undefined;
8
+ } | {
9
+ offset: number;
10
+ limit: number;
11
+ };
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.toPaginationParams = void 0;
4
+ function toPaginationParams(params) {
5
+ const { page = 1, pageSize, withHighlightedStory = false } = params;
6
+ if (!pageSize) {
7
+ return { offset: undefined, limit: undefined };
8
+ }
9
+ const offset = pageSize * (page - 1);
10
+ const limit = pageSize;
11
+ if (withHighlightedStory && page === 1) {
12
+ return { offset: 0, limit: limit + 1 };
13
+ }
14
+ if (withHighlightedStory && page > 1) {
15
+ return { offset: offset + 1, limit };
16
+ }
17
+ return { offset, limit };
18
+ }
19
+ exports.toPaginationParams = toPaginationParams;
20
+ //# sourceMappingURL=lib.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lib.js","sourceRoot":"","sources":["../../../src/data-fetching/api/lib.ts"],"names":[],"mappings":";;;AAAA,SAAgB,kBAAkB,CAAC,MAIlC;IACG,MAAM,EAAE,IAAI,GAAG,CAAC,EAAE,QAAQ,EAAE,oBAAoB,GAAG,KAAK,EAAE,GAAG,MAAM,CAAC;IAEpE,IAAI,CAAC,QAAQ,EAAE;QACX,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;KAClD;IAED,MAAM,MAAM,GAAG,QAAQ,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;IACrC,MAAM,KAAK,GAAG,QAAQ,CAAC;IAEvB,IAAI,oBAAoB,IAAI,IAAI,KAAK,CAAC,EAAE;QACpC,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC;KAC1C;IAED,IAAI,oBAAoB,IAAI,IAAI,GAAG,CAAC,EAAE;QAClC,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC;KACxC;IAED,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;AAC7B,CAAC;AAvBD,gDAuBC"}
@@ -0,0 +1,46 @@
1
+ import { SortOrder } from '@prezly/sdk';
2
+ export declare function getSlugQuery(newsroomUuid: string, slug: string): {
3
+ $and: ({
4
+ lifecycle_status: {
5
+ $in: string[];
6
+ };
7
+ visibility?: undefined;
8
+ } | {
9
+ visibility: {
10
+ $in: string[];
11
+ };
12
+ lifecycle_status?: undefined;
13
+ } | {
14
+ 'newsroom.uuid': {
15
+ $in: string[];
16
+ };
17
+ slug?: undefined;
18
+ } | {
19
+ slug: {
20
+ $eq: string;
21
+ };
22
+ 'newsroom.uuid'?: undefined;
23
+ })[];
24
+ };
25
+ export declare function getStoriesQuery(newsroomUuid: string, categoryId?: number, localeCode?: string): any;
26
+ export declare function getChronologicalSortOrder(direction: `${SortOrder.Direction}`, pinning?: boolean): SortOrder;
27
+ export declare function getGalleriesQuery(): {
28
+ $and: ({
29
+ status: {
30
+ $eq: string;
31
+ };
32
+ images_number?: undefined;
33
+ } | {
34
+ images_number: {
35
+ $gt: number;
36
+ };
37
+ status?: undefined;
38
+ })[];
39
+ };
40
+ export declare function getContactsQuery(): {
41
+ $and: {
42
+ is_featured: {
43
+ $eq: boolean;
44
+ };
45
+ }[];
46
+ };
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getContactsQuery = exports.getGalleriesQuery = exports.getChronologicalSortOrder = exports.getStoriesQuery = exports.getSlugQuery = void 0;
4
+ const sdk_1 = require("@prezly/sdk");
5
+ const publishedAndAccessible = [
6
+ { lifecycle_status: { $in: ['published', 'embargo'] } },
7
+ { visibility: { $in: ['public', 'private', 'embargo'] } },
8
+ ];
9
+ const publishedAndPublic = [
10
+ { lifecycle_status: { $in: ['published'] } },
11
+ { visibility: { $in: ['public'] } },
12
+ ];
13
+ function getSlugQuery(newsroomUuid, slug) {
14
+ return {
15
+ $and: [
16
+ { 'newsroom.uuid': { $in: [newsroomUuid] } },
17
+ { slug: { $eq: slug } },
18
+ ...publishedAndAccessible,
19
+ ],
20
+ };
21
+ }
22
+ exports.getSlugQuery = getSlugQuery;
23
+ function getStoriesQuery(newsroomUuid, categoryId, localeCode) {
24
+ const query = {
25
+ $and: [...publishedAndPublic, { 'newsroom.uuid': { $in: [newsroomUuid] } }],
26
+ };
27
+ if (categoryId) {
28
+ query.$and.push({ 'category.id': { $any: [categoryId] } });
29
+ }
30
+ if (localeCode) {
31
+ query.$and.push({ locale: { $in: [localeCode] } });
32
+ }
33
+ return query;
34
+ }
35
+ exports.getStoriesQuery = getStoriesQuery;
36
+ function getChronologicalSortOrder(direction, pinning = false) {
37
+ const pinnedFirst = sdk_1.SortOrder.desc('is_pinned');
38
+ const chronological = direction === sdk_1.SortOrder.Direction.ASC
39
+ ? sdk_1.SortOrder.asc('published_at')
40
+ : sdk_1.SortOrder.desc('published_at');
41
+ return pinning ? sdk_1.SortOrder.combine(pinnedFirst, chronological) : chronological;
42
+ }
43
+ exports.getChronologicalSortOrder = getChronologicalSortOrder;
44
+ function getGalleriesQuery() {
45
+ return {
46
+ $and: [{ status: { $eq: 'public' } }, { images_number: { $gt: 0 } }],
47
+ };
48
+ }
49
+ exports.getGalleriesQuery = getGalleriesQuery;
50
+ function getContactsQuery() {
51
+ return {
52
+ $and: [{ is_featured: { $eq: true } }],
53
+ };
54
+ }
55
+ exports.getContactsQuery = getContactsQuery;
56
+ //# sourceMappingURL=queries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queries.js","sourceRoot":"","sources":["../../../src/data-fetching/api/queries.ts"],"names":[],"mappings":";;;AAAA,qCAAwC;AAExC,MAAM,sBAAsB,GAAG;IAC3B,EAAE,gBAAgB,EAAE,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC,EAAE,EAAE;IACvD,EAAE,UAAU,EAAE,EAAE,GAAG,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE,EAAE;CAC5D,CAAC;AAEF,MAAM,kBAAkB,GAAG;IACvB,EAAE,gBAAgB,EAAE,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE;IAC5C,EAAE,UAAU,EAAE,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE;CACtC,CAAC;AAEF,SAAgB,YAAY,CAAC,YAAoB,EAAE,IAAY;IAC3D,OAAO;QACH,IAAI,EAAE;YACF,EAAE,eAAe,EAAE,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE;YAC5C,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;YACvB,GAAG,sBAAsB;SAC5B;KACJ,CAAC;AACN,CAAC;AARD,oCAQC;AAED,SAAgB,eAAe,CAAC,YAAoB,EAAE,UAAmB,EAAE,UAAmB;IAC1F,MAAM,KAAK,GAAQ;QACf,IAAI,EAAE,CAAC,GAAG,kBAAkB,EAAE,EAAE,eAAe,EAAE,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC;KAC9E,CAAC;IAEF,IAAI,UAAU,EAAE;QACZ,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC;KAC9D;IAED,IAAI,UAAU,EAAE;QACZ,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC;KACtD;IAED,OAAO,KAAK,CAAC;AACjB,CAAC;AAdD,0CAcC;AAED,SAAgB,yBAAyB,CAAC,SAAmC,EAAE,OAAO,GAAG,KAAK;IAC1F,MAAM,WAAW,GAAG,eAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAChD,MAAM,aAAa,GACf,SAAS,KAAK,eAAS,CAAC,SAAS,CAAC,GAAG;QACjC,CAAC,CAAC,eAAS,CAAC,GAAG,CAAC,cAAc,CAAC;QAC/B,CAAC,CAAC,eAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAEzC,OAAO,OAAO,CAAC,CAAC,CAAC,eAAS,CAAC,OAAO,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;AACnF,CAAC;AARD,8DAQC;AAED,SAAgB,iBAAiB;IAC7B,OAAO;QACH,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;KACvE,CAAC;AACN,CAAC;AAJD,8CAIC;AAED,SAAgB,gBAAgB;IAC5B,OAAO;QACH,IAAI,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC;KACzC,CAAC;AACN,CAAC;AAJD,4CAIC"}
@@ -0,0 +1,3 @@
1
+ export * from './api';
2
+ export * from './lib';
3
+ export * from './types';
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./api"), exports);
18
+ __exportStar(require("./lib"), exports);
19
+ __exportStar(require("./types"), exports);
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/data-fetching/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wCAAsB;AACtB,wCAAsB;AACtB,0CAAwB"}
@@ -0,0 +1,4 @@
1
+ /// <reference types="node" />
2
+ import type { IncomingMessage } from 'http';
3
+ import type { AlgoliaSettings } from '../types';
4
+ export declare function getAlgoliaSettings(req?: IncomingMessage): AlgoliaSettings;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getAlgoliaSettings = void 0;
4
+ const getEnvVariables_1 = require("./getEnvVariables");
5
+ function getAlgoliaSettings(req) {
6
+ if (typeof window !== 'undefined') {
7
+ throw new Error('"getAlgoliaSettings" should only be used on back-end side.');
8
+ }
9
+ // `getEnvVariables` handles both cases for envs parsing - .env and request headers
10
+ const { ALGOLIA_API_KEY = '', ALGOLIA_APP_ID = 'UI4CNRAHQB', ALGOLIA_INDEX = 'public_stories_prod', } = (0, getEnvVariables_1.getEnvVariables)(req);
11
+ if (!ALGOLIA_API_KEY) {
12
+ // eslint-disable-next-line no-console
13
+ console.error('"ALGOLIA_API_KEY" is not set in env variables. Search will not be enabled');
14
+ }
15
+ return {
16
+ ALGOLIA_API_KEY,
17
+ ALGOLIA_APP_ID,
18
+ ALGOLIA_INDEX,
19
+ };
20
+ }
21
+ exports.getAlgoliaSettings = getAlgoliaSettings;
22
+ //# sourceMappingURL=getAlgoliaSettings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getAlgoliaSettings.js","sourceRoot":"","sources":["../../../src/data-fetching/lib/getAlgoliaSettings.ts"],"names":[],"mappings":";;;AAIA,uDAAoD;AAEpD,SAAgB,kBAAkB,CAAC,GAAqB;IACpD,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;QAC/B,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;KACjF;IAED,mFAAmF;IACnF,MAAM,EACF,eAAe,GAAG,EAAE,EACpB,cAAc,GAAG,YAAY,EAC7B,aAAa,GAAG,qBAAqB,GACxC,GAAG,IAAA,iCAAe,EAAC,GAAG,CAAC,CAAC;IAEzB,IAAI,CAAC,eAAe,EAAE;QAClB,sCAAsC;QACtC,OAAO,CAAC,KAAK,CAAC,2EAA2E,CAAC,CAAC;KAC9F;IAED,OAAO;QACH,eAAe;QACf,cAAc;QACd,aAAa;KAChB,CAAC;AACN,CAAC;AAtBD,gDAsBC"}
@@ -0,0 +1,4 @@
1
+ /// <reference types="node" />
2
+ import type { IncomingMessage } from 'http';
3
+ import type { PrezlyEnv } from '../types';
4
+ export declare function getEnvVariables<EnvType extends PrezlyEnv = PrezlyEnv>(req?: IncomingMessage): NodeJS.ProcessEnv & EnvType;
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getEnvVariables = void 0;
7
+ const parse_data_url_1 = __importDefault(require("parse-data-url"));
8
+ function decodeJson(json) {
9
+ try {
10
+ const decoded = JSON.parse(json);
11
+ if (decoded && typeof decoded === 'object') {
12
+ return decoded;
13
+ }
14
+ }
15
+ catch {
16
+ // passthru
17
+ }
18
+ return {};
19
+ }
20
+ function decodeHttpEnv(header) {
21
+ if (header.startsWith('data:')) {
22
+ const parsed = (0, parse_data_url_1.default)(header);
23
+ if (parsed && parsed.contentType === 'application/json') {
24
+ const data = parsed.toBuffer().toString('utf-8');
25
+ return decodeJson(data);
26
+ }
27
+ return {}; // unsupported data-uri
28
+ }
29
+ return decodeJson(header);
30
+ }
31
+ function getEnvVariables(req) {
32
+ if (typeof window !== 'undefined') {
33
+ throw new Error('"getEnvVariables" should only be used on back-end side.');
34
+ }
35
+ const headerName = (process.env.HTTP_ENV_HEADER || '').toLowerCase();
36
+ if (headerName && req) {
37
+ const header = req.headers[headerName];
38
+ const httpEnv = decodeHttpEnv(header || '');
39
+ return { ...process.env, ...httpEnv };
40
+ }
41
+ return { ...process.env };
42
+ }
43
+ exports.getEnvVariables = getEnvVariables;
44
+ //# sourceMappingURL=getEnvVariables.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getEnvVariables.js","sourceRoot":"","sources":["../../../src/data-fetching/lib/getEnvVariables.ts"],"names":[],"mappings":";;;;;;AACA,oEAA0C;AAI1C,SAAS,UAAU,CAAC,IAAY;IAC5B,IAAI;QACA,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;YACxC,OAAO,OAAO,CAAC;SAClB;KACJ;IAAC,MAAM;QACJ,WAAW;KACd;IACD,OAAO,EAAE,CAAC;AACd,CAAC;AAED,SAAS,aAAa,CAAC,MAAc;IACjC,IAAI,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;QAC5B,MAAM,MAAM,GAAG,IAAA,wBAAY,EAAC,MAAM,CAAC,CAAC;QACpC,IAAI,MAAM,IAAI,MAAM,CAAC,WAAW,KAAK,kBAAkB,EAAE;YACrD,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YACjD,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;SAC3B;QACD,OAAO,EAAE,CAAC,CAAC,uBAAuB;KACrC;IACD,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC;AAC9B,CAAC;AAED,SAAgB,eAAe,CAC3B,GAAqB;IAErB,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;QAC/B,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;KAC9E;IAED,MAAM,UAAU,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAErE,IAAI,UAAU,IAAI,GAAG,EAAE;QACnB,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,UAAU,CAAuB,CAAC;QAC7D,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;QAC5C,OAAO,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,OAAO,EAAiC,CAAC;KACxE;IAED,OAAO,EAAE,GAAG,OAAO,CAAC,GAAG,EAAiC,CAAC;AAC7D,CAAC;AAhBD,0CAgBC"}
@@ -0,0 +1,4 @@
1
+ export { getAlgoliaSettings } from './getAlgoliaSettings';
2
+ export { getEnvVariables } from './getEnvVariables';
3
+ export { isSdkError } from './isSdkError';
4
+ export { isUuid } from './isUuid';