@enonic/nextjs-adapter 3.3.0-B1 → 3.3.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.
- package/dist/baseMappings.d.ts +1 -0
- package/{src/baseMappings.ts → dist/baseMappings.js} +4 -14
- package/dist/baseMappings.js.map +1 -0
- package/dist/client/getClientHydratedHtml.d.ts +1 -0
- package/{src/client/getClientHydratedHtml.tsx → dist/client/getClientHydratedHtml.jsx} +3 -6
- package/dist/client/getClientHydratedHtml.jsx.map +1 -0
- package/dist/client.d.ts +1 -0
- package/dist/client.js +3 -0
- package/dist/client.js.map +1 -0
- package/dist/common/ComponentRegistry.d.ts +34 -0
- package/dist/common/ComponentRegistry.js +121 -0
- package/dist/common/ComponentRegistry.js.map +1 -0
- package/dist/common/UrlProcessor.d.ts +25 -0
- package/{src/common/UrlProcessor.ts → dist/common/UrlProcessor.js} +49 -70
- package/dist/common/UrlProcessor.js.map +1 -0
- package/dist/common/constants.d.ts +51 -0
- package/{src/common/constants.ts → dist/common/constants.js} +38 -44
- package/dist/common/constants.js.map +1 -0
- package/dist/common/env.d.ts +12 -0
- package/{src/common/env.ts → dist/common/env.js} +3 -14
- package/dist/common/env.js.map +1 -0
- package/dist/guillotine/applyProcessors.d.ts +2 -0
- package/dist/guillotine/applyProcessors.js +33 -0
- package/dist/guillotine/applyProcessors.js.map +1 -0
- package/dist/guillotine/buildComponentTree.d.ts +2 -0
- package/{src/guillotine/buildComponentTree.ts → dist/guillotine/buildComponentTree.js} +13 -25
- package/dist/guillotine/buildComponentTree.js.map +1 -0
- package/dist/guillotine/buildErrorResponse.d.ts +3 -0
- package/{src/guillotine/buildErrorResponse.ts → dist/guillotine/buildErrorResponse.js} +2 -10
- package/dist/guillotine/buildErrorResponse.js.map +1 -0
- package/dist/guillotine/buildPage.d.ts +2 -0
- package/dist/guillotine/buildPage.js +10 -0
- package/dist/guillotine/buildPage.js.map +1 -0
- package/dist/guillotine/collectComponentDescriptors.d.ts +6 -0
- package/{src/guillotine/collectComponentDescriptors.ts → dist/guillotine/collectComponentDescriptors.js} +13 -26
- package/dist/guillotine/collectComponentDescriptors.js.map +1 -0
- package/dist/guillotine/combineMultipleQueries.d.ts +2 -0
- package/{src/guillotine/combineMultipleQueries.ts → dist/guillotine/combineMultipleQueries.js} +9 -23
- package/dist/guillotine/combineMultipleQueries.js.map +1 -0
- package/dist/guillotine/createMetaData.d.ts +18 -0
- package/dist/guillotine/createMetaData.js +45 -0
- package/dist/guillotine/createMetaData.js.map +1 -0
- package/dist/guillotine/fetchContent.d.ts +9 -0
- package/dist/guillotine/fetchContent.js +222 -0
- package/dist/guillotine/fetchContent.js.map +1 -0
- package/dist/guillotine/fetchContentData.d.ts +2 -0
- package/dist/guillotine/fetchContentData.js +30 -0
- package/dist/guillotine/fetchContentData.js.map +1 -0
- package/dist/guillotine/fetchContentPathsForAllLocales.d.ts +2 -0
- package/dist/guillotine/fetchContentPathsForAllLocales.js +21 -0
- package/dist/guillotine/fetchContentPathsForAllLocales.js.map +1 -0
- package/dist/guillotine/fetchContentPathsForLocale.d.ts +2 -0
- package/dist/guillotine/fetchContentPathsForLocale.js +42 -0
- package/dist/guillotine/fetchContentPathsForLocale.js.map +1 -0
- package/dist/guillotine/fetchFromApi.d.ts +3 -0
- package/dist/guillotine/fetchFromApi.js +76 -0
- package/dist/guillotine/fetchFromApi.js.map +1 -0
- package/dist/guillotine/fetchGuillotine.d.ts +3 -0
- package/dist/guillotine/fetchGuillotine.js +75 -0
- package/dist/guillotine/fetchGuillotine.js.map +1 -0
- package/dist/guillotine/fetchMetaData.d.ts +2 -0
- package/dist/guillotine/fetchMetaData.js +33 -0
- package/dist/guillotine/fetchMetaData.js.map +1 -0
- package/dist/guillotine/getCleanContentPathArrayOrThrow400.d.ts +2 -0
- package/{src/guillotine/getCleanContentPathArrayOrThrow400.ts → dist/guillotine/getCleanContentPathArrayOrThrow400.js} +7 -9
- package/dist/guillotine/getCleanContentPathArrayOrThrow400.js.map +1 -0
- package/dist/guillotine/getComponentConfig.d.ts +2 -0
- package/{src/guillotine/getComponentConfig.ts → dist/guillotine/getComponentConfig.js} +3 -5
- package/dist/guillotine/getComponentConfig.js.map +1 -0
- package/dist/guillotine/getContentAndComponentPaths.d.ts +1 -0
- package/{src/guillotine/getContentAndComponentPaths.ts → dist/guillotine/getContentAndComponentPaths.js} +6 -5
- package/dist/guillotine/getContentAndComponentPaths.js.map +1 -0
- package/dist/guillotine/getMetaData.d.ts +2 -0
- package/{src/guillotine/getMetaData.ts → dist/guillotine/getMetaData.js} +11 -18
- package/dist/guillotine/getMetaData.js.map +1 -0
- package/dist/guillotine/getParentRegion.d.ts +2 -0
- package/{src/guillotine/getParentRegion.ts → dist/guillotine/getParentRegion.js} +9 -23
- package/dist/guillotine/getParentRegion.js.map +1 -0
- package/dist/guillotine/getQueryAndVariables.d.ts +2 -0
- package/{src/guillotine/getQueryAndVariables.ts → dist/guillotine/getQueryAndVariables.js} +7 -23
- package/dist/guillotine/getQueryAndVariables.js.map +1 -0
- package/dist/guillotine/metadata/configQuery.d.ts +2 -0
- package/dist/guillotine/metadata/configQuery.js +36 -0
- package/dist/guillotine/metadata/configQuery.js.map +1 -0
- package/dist/guillotine/metadata/richTextQuery.d.ts +1 -0
- package/{src/guillotine/metadata/richTextQuery.ts → dist/guillotine/metadata/richTextQuery.js} +6 -8
- package/dist/guillotine/metadata/richTextQuery.js.map +1 -0
- package/dist/guillotine/parseComponentPath.d.ts +2 -0
- package/{src/guillotine/parseComponentPath.ts → dist/guillotine/parseComponentPath.js} +4 -8
- package/dist/guillotine/parseComponentPath.js.map +1 -0
- package/dist/guillotine/prefixFragmentCmpPath.d.ts +1 -0
- package/{src/guillotine/prefixFragmentCmpPath.ts → dist/guillotine/prefixFragmentCmpPath.js} +5 -5
- package/dist/guillotine/prefixFragmentCmpPath.js.map +1 -0
- package/dist/guillotine/processComponentConfig.d.ts +2 -0
- package/{src/guillotine/processComponentConfig.ts → dist/guillotine/processComponentConfig.js} +4 -12
- package/dist/guillotine/processComponentConfig.js.map +1 -0
- package/dist/guillotine/restrictComponentsToPath.d.ts +2 -0
- package/{src/guillotine/restrictComponentsToPath.ts → dist/guillotine/restrictComponentsToPath.js} +9 -19
- package/dist/guillotine/restrictComponentsToPath.js.map +1 -0
- package/dist/guillotine/validateData.d.ts +2 -0
- package/dist/guillotine/validateData.js +7 -0
- package/dist/guillotine/validateData.js.map +1 -0
- package/dist/guillotine/validateNotFound.d.ts +2 -0
- package/{src/guillotine/validateNotFound.ts → dist/guillotine/validateNotFound.js} +5 -9
- package/dist/guillotine/validateNotFound.js.map +1 -0
- package/dist/guillotine/validateShortcut.d.ts +2 -0
- package/{src/guillotine/validateShortcut.ts → dist/guillotine/validateShortcut.js} +12 -20
- package/dist/guillotine/validateShortcut.js.map +1 -0
- package/dist/i18n/LocaleContext.d.ts +7 -0
- package/dist/i18n/LocaleContext.jsx +50 -0
- package/dist/i18n/LocaleContext.jsx.map +1 -0
- package/dist/i18n/i18n.d.ts +12 -0
- package/dist/i18n/i18n.js +59 -0
- package/dist/i18n/i18n.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -0
- package/dist/query/Shortcut.d.ts +1 -0
- package/{src/query/Shortcut.ts → dist/query/Shortcut.js} +1 -0
- package/dist/query/Shortcut.js.map +1 -0
- package/dist/server/getServerRenderedHtml.d.ts +1 -0
- package/dist/server/getServerRenderedHtml.js +4 -0
- package/dist/server/getServerRenderedHtml.js.map +1 -0
- package/dist/server.d.ts +5 -0
- package/dist/server.js +6 -0
- package/dist/server.js.map +1 -0
- package/{src/types/component.ts → dist/types/component.d.ts} +23 -62
- package/dist/types/component.js +2 -0
- package/dist/types/component.js.map +1 -0
- package/dist/types/componentProps.d.ts +107 -0
- package/dist/types/componentProps.js +2 -0
- package/dist/types/componentProps.js.map +1 -0
- package/dist/types/guillotine.d.ts +344 -0
- package/dist/types/guillotine.js +2 -0
- package/dist/types/guillotine.js.map +1 -0
- package/dist/types/i18n.d.ts +7 -0
- package/dist/types/i18n.js +2 -0
- package/dist/types/i18n.js.map +1 -0
- package/{src/types/index.ts → dist/types/index.d.ts} +19 -34
- package/dist/types/index.js +3 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/next.d.ts +6 -0
- package/dist/types/next.js +2 -0
- package/dist/types/next.js.map +1 -0
- package/dist/types/util.d.ts +3 -0
- package/dist/types/util.js +3 -0
- package/dist/types/util.js.map +1 -0
- package/dist/utils/addLineNumbers.d.ts +1 -0
- package/dist/utils/addLineNumbers.js +4 -0
- package/dist/utils/addLineNumbers.js.map +1 -0
- package/dist/utils/buildGuillotineRequestHeaders.d.ts +7 -0
- package/dist/utils/buildGuillotineRequestHeaders.js +16 -0
- package/dist/utils/buildGuillotineRequestHeaders.js.map +1 -0
- package/dist/utils/commonChars.d.ts +1 -0
- package/{src/utils/commonChars.ts → dist/utils/commonChars.js} +5 -4
- package/dist/utils/commonChars.js.map +1 -0
- package/dist/utils/enonicLog.d.ts +5 -0
- package/dist/utils/enonicLog.js +23 -0
- package/dist/utils/enonicLog.js.map +1 -0
- package/dist/utils/fixDoubleSlashes.d.ts +1 -0
- package/dist/utils/fixDoubleSlashes.js +4 -0
- package/dist/utils/fixDoubleSlashes.js.map +1 -0
- package/dist/utils/getAllLocales.d.ts +1 -0
- package/dist/utils/getAllLocales.js +5 -0
- package/dist/utils/getAllLocales.js.map +1 -0
- package/dist/utils/getContentApiUrl.d.ts +2 -0
- package/dist/utils/getContentApiUrl.js +15 -0
- package/dist/utils/getContentApiUrl.js.map +1 -0
- package/dist/utils/getLocaleMapping.d.ts +2 -0
- package/dist/utils/getLocaleMapping.js +19 -0
- package/dist/utils/getLocaleMapping.js.map +1 -0
- package/dist/utils/getLocaleMappingByLocale.d.ts +2 -0
- package/dist/utils/getLocaleMappingByLocale.js +13 -0
- package/dist/utils/getLocaleMappingByLocale.js.map +1 -0
- package/dist/utils/getLocaleMappingByProjectId.d.ts +2 -0
- package/dist/utils/getLocaleMappingByProjectId.js +16 -0
- package/dist/utils/getLocaleMappingByProjectId.js.map +1 -0
- package/dist/utils/getLocaleMappings.d.ts +2 -0
- package/{src/utils/getLocaleMappings.ts → dist/utils/getLocaleMappings.js} +8 -14
- package/dist/utils/getLocaleMappings.js.map +1 -0
- package/dist/utils/getRenderMode.d.ts +3 -0
- package/dist/utils/getRenderMode.js +8 -0
- package/dist/utils/getRenderMode.js.map +1 -0
- package/dist/utils/getRequestLocaleInfo.d.ts +6 -0
- package/{src/utils/getRequestLocaleInfo.ts → dist/utils/getRequestLocaleInfo.js} +12 -13
- package/dist/utils/getRequestLocaleInfo.js.map +1 -0
- package/dist/utils/getXpBaseUrl.d.ts +2 -0
- package/dist/utils/getXpBaseUrl.js +8 -0
- package/dist/utils/getXpBaseUrl.js.map +1 -0
- package/dist/utils/indent.d.ts +1 -0
- package/dist/utils/indent.js +5 -0
- package/dist/utils/indent.js.map +1 -0
- package/dist/utils/sanitizeGraphqlName.d.ts +1 -0
- package/{src/utils/sanitizeGraphqlName.ts → dist/utils/sanitizeGraphqlName.js} +3 -2
- package/dist/utils/sanitizeGraphqlName.js.map +1 -0
- package/dist/views/BaseComponent.d.ts +20 -0
- package/{src/views/BaseComponent.tsx → dist/views/BaseComponent.jsx} +49 -76
- package/dist/views/BaseComponent.jsx.map +1 -0
- package/dist/views/BaseContent.d.ts +3 -0
- package/dist/views/BaseContent.jsx +38 -0
- package/dist/views/BaseContent.jsx.map +1 -0
- package/dist/views/BaseLayout.d.ts +3 -0
- package/dist/views/BaseLayout.jsx +24 -0
- package/dist/views/BaseLayout.jsx.map +1 -0
- package/dist/views/BaseMacro.d.ts +6 -0
- package/{src/views/BaseMacro.tsx → dist/views/BaseMacro.jsx} +37 -42
- package/dist/views/BaseMacro.jsx.map +1 -0
- package/dist/views/BasePage.d.ts +3 -0
- package/dist/views/BasePage.jsx +34 -0
- package/dist/views/BasePage.jsx.map +1 -0
- package/dist/views/BasePart.d.ts +3 -0
- package/dist/views/BasePart.jsx +24 -0
- package/dist/views/BasePart.jsx.map +1 -0
- package/dist/views/Empty.d.ts +2 -0
- package/{src/views/Empty.tsx → dist/views/Empty.jsx} +1 -2
- package/dist/views/Empty.jsx.map +1 -0
- package/dist/views/Fragment.d.ts +3 -0
- package/dist/views/Fragment.jsx +30 -0
- package/dist/views/Fragment.jsx.map +1 -0
- package/dist/views/MainView.d.ts +3 -0
- package/dist/views/MainView.jsx +14 -0
- package/dist/views/MainView.jsx.map +1 -0
- package/dist/views/PropsView.d.ts +2 -0
- package/dist/views/PropsView.jsx +21 -0
- package/dist/views/PropsView.jsx.map +1 -0
- package/dist/views/Region.d.ts +6 -0
- package/{src/views/Region.tsx → dist/views/Region.jsx} +17 -41
- package/dist/views/Region.jsx.map +1 -0
- package/dist/views/RichTextView.d.ts +3 -0
- package/dist/views/RichTextView.jsx +65 -0
- package/dist/views/RichTextView.jsx.map +1 -0
- package/dist/views/SingleComponent.d.ts +4 -0
- package/dist/views/SingleComponent.jsx +10 -0
- package/dist/views/SingleComponent.jsx.map +1 -0
- package/dist/views/StaticContent.d.ts +10 -0
- package/dist/views/StaticContent.jsx +37 -0
- package/dist/views/StaticContent.jsx.map +1 -0
- package/dist/views/Text.d.ts +8 -0
- package/dist/views/Text.jsx +4 -0
- package/dist/views/Text.jsx.map +1 -0
- package/dist/views/macros/DefaultMacro.d.ts +3 -0
- package/dist/views/macros/DefaultMacro.jsx +4 -0
- package/dist/views/macros/DefaultMacro.jsx.map +1 -0
- package/dist/views/macros/DisableMacro.d.ts +3 -0
- package/dist/views/macros/DisableMacro.jsx +3 -0
- package/dist/views/macros/DisableMacro.jsx.map +1 -0
- package/package.json +20 -32
- package/src/client.ts +0 -2
- package/src/common/ComponentRegistry.ts +0 -159
- package/src/guillotine/applyProcessors.ts +0 -34
- package/src/guillotine/buildPage.ts +0 -15
- package/src/guillotine/createMetaData.ts +0 -72
- package/src/guillotine/fetchContent.ts +0 -240
- package/src/guillotine/fetchContentData.ts +0 -31
- package/src/guillotine/fetchContentPathsForAllLocales.ts +0 -21
- package/src/guillotine/fetchContentPathsForLocale.ts +0 -43
- package/src/guillotine/fetchFromApi.ts +0 -76
- package/src/guillotine/fetchGuillotine.ts +0 -76
- package/src/guillotine/fetchMetaData.ts +0 -31
- package/src/guillotine/metadata/configQuery.ts +0 -46
- package/src/guillotine/validateData.ts +0 -11
- package/src/i18n/LocaleContext.tsx +0 -59
- package/src/i18n/i18n.ts +0 -57
- package/src/index.ts +0 -42
- package/src/server/getServerRenderedHtml.ts +0 -3
- package/src/server.ts +0 -5
- package/src/types/componentProps.ts +0 -143
- package/src/types/guillotine.ts +0 -428
- package/src/types/i18n.ts +0 -8
- package/src/types/next.ts +0 -7
- package/src/types/util.ts +0 -5
- package/src/utils/addLineNumbers.ts +0 -3
- package/src/utils/buildGuillotineRequestHeaders.ts +0 -29
- package/src/utils/enonicLog.ts +0 -28
- package/src/utils/fixDoubleSlashes.ts +0 -3
- package/src/utils/getAllLocales.ts +0 -6
- package/src/utils/getContentApiUrl.ts +0 -20
- package/src/utils/getLocaleMapping.ts +0 -24
- package/src/utils/getLocaleMappingByLocale.ts +0 -19
- package/src/utils/getLocaleMappingByProjectId.ts +0 -21
- package/src/utils/getRenderMode.ts +0 -11
- package/src/utils/getXpBaseUrl.ts +0 -12
- package/src/utils/indent.ts +0 -4
- package/src/views/BaseContent.tsx +0 -47
- package/src/views/BaseLayout.tsx +0 -33
- package/src/views/BasePage.tsx +0 -42
- package/src/views/BasePart.tsx +0 -34
- package/src/views/Fragment.tsx +0 -41
- package/src/views/MainView.tsx +0 -22
- package/src/views/PropsView.tsx +0 -38
- package/src/views/RichTextView.tsx +0 -106
- package/src/views/SingleComponent.tsx +0 -19
- package/src/views/StaticContent.tsx +0 -39
- package/src/views/Text.tsx +0 -19
- package/src/views/macros/DefaultMacro.tsx +0 -9
- package/src/views/macros/DisableMacro.tsx +0 -8
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import { draftMode, headers } from 'next/headers';
|
|
11
|
+
import { ComponentRegistry } from '../common/ComponentRegistry';
|
|
12
|
+
import { PAGE_TEMPLATE_CONTENTTYPE_NAME, PAGE_TEMPLATE_FOLDER, RENDER_MODE, XP_COMPONENT_TYPE, XP_REQUEST_TYPE } from '../common/constants';
|
|
13
|
+
import { APP_NAME, APP_NAME_DASHED, IS_DEV_MODE } from '../common/env';
|
|
14
|
+
import { getContentApiUrl } from '../utils/getContentApiUrl';
|
|
15
|
+
import { getLocaleMapping } from '../utils/getLocaleMapping';
|
|
16
|
+
import { getRenderMode } from '../utils/getRenderMode';
|
|
17
|
+
import { getXpBaseUrl } from '../utils/getXpBaseUrl';
|
|
18
|
+
import { getRequestLocaleInfo } from '../utils/getRequestLocaleInfo';
|
|
19
|
+
import { buildGuillotineRequestHeaders } from '../utils/buildGuillotineRequestHeaders';
|
|
20
|
+
import { buildPage } from './buildPage';
|
|
21
|
+
import { fetchMetaData } from './fetchMetaData';
|
|
22
|
+
import { getCleanContentPathArrayOrThrow400 } from './getCleanContentPathArrayOrThrow400';
|
|
23
|
+
import { buildErrorResponse } from './buildErrorResponse';
|
|
24
|
+
import { getContentAndComponentPaths } from './getContentAndComponentPaths';
|
|
25
|
+
import { restrictComponentsToPath } from './restrictComponentsToPath';
|
|
26
|
+
import { processComponentConfig } from './processComponentConfig';
|
|
27
|
+
import { getQueryAndVariables } from './getQueryAndVariables';
|
|
28
|
+
import { collectComponentDescriptors } from './collectComponentDescriptors';
|
|
29
|
+
import { combineMultipleQueries } from './combineMultipleQueries';
|
|
30
|
+
import { fetchContentData } from './fetchContentData';
|
|
31
|
+
import { applyProcessors } from './applyProcessors';
|
|
32
|
+
import { createMetaData } from './createMetaData';
|
|
33
|
+
/**
|
|
34
|
+
* Default fetchContent function, built with params from imports.
|
|
35
|
+
* It runs custom content-type-specific guillotine calls against an XP guillotine endpoint, returns content data, error and some meta data
|
|
36
|
+
* Sends one query to the guillotine API and asks for content type, then uses the type to select a second query and variables, which is sent to the API and fetches content data.
|
|
37
|
+
* @param context object from Next, contains .query info
|
|
38
|
+
* @returns FetchContentResult object: {data?: T, error?: {code, message}}
|
|
39
|
+
*/
|
|
40
|
+
export function fetchContent(context) {
|
|
41
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
42
|
+
var _a, _b;
|
|
43
|
+
const { locale, locales, defaultLocale } = getRequestLocaleInfo(context);
|
|
44
|
+
const { isEnabled } = draftMode();
|
|
45
|
+
// we only want to read headers in draft mode, because they bail out static generation
|
|
46
|
+
if (isEnabled) {
|
|
47
|
+
const allHeaders = headers();
|
|
48
|
+
if (!context.headers) {
|
|
49
|
+
context.headers = new Headers();
|
|
50
|
+
}
|
|
51
|
+
allHeaders.forEach((value, key) => {
|
|
52
|
+
context.headers.set(key, value);
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
const outHeaders = buildGuillotineRequestHeaders({
|
|
56
|
+
context,
|
|
57
|
+
defaultLocale,
|
|
58
|
+
locale,
|
|
59
|
+
locales
|
|
60
|
+
});
|
|
61
|
+
const xpBaseUrl = getXpBaseUrl(context);
|
|
62
|
+
const contentApiUrl = getContentApiUrl(context);
|
|
63
|
+
const mapping = getLocaleMapping(context);
|
|
64
|
+
const renderMode = getRenderMode(context);
|
|
65
|
+
let requestType = XP_REQUEST_TYPE.TYPE;
|
|
66
|
+
const requestContentPath = getCleanContentPathArrayOrThrow400(context.contentPath);
|
|
67
|
+
try {
|
|
68
|
+
const [siteRelativeContentPath, componentPath] = getContentAndComponentPaths(requestContentPath);
|
|
69
|
+
if (componentPath) {
|
|
70
|
+
// set component request type because url contains component path
|
|
71
|
+
requestType = XP_REQUEST_TYPE.COMPONENT;
|
|
72
|
+
}
|
|
73
|
+
// ///////////// FIRST GUILLOTINE CALL FOR METADATA /////////////////
|
|
74
|
+
const metaResult = yield fetchMetaData(contentApiUrl, '${site}/' + siteRelativeContentPath, mapping, outHeaders);
|
|
75
|
+
// ///////////////////////////////////////////////////////////////////////
|
|
76
|
+
const { _id, _path, type } = metaResult.meta || {};
|
|
77
|
+
const contentPath = _path || siteRelativeContentPath;
|
|
78
|
+
const errorResponse = buildErrorResponse(requestType, renderMode, contentApiUrl, xpBaseUrl, locale, defaultLocale, requestContentPath, _id);
|
|
79
|
+
if (metaResult.error) {
|
|
80
|
+
console.error(metaResult.error);
|
|
81
|
+
return errorResponse(metaResult.error.code, metaResult.error.message);
|
|
82
|
+
}
|
|
83
|
+
if (!metaResult.meta) {
|
|
84
|
+
return errorResponse('404', 'No meta data found for content, most likely content does not exist');
|
|
85
|
+
}
|
|
86
|
+
else if (!type) {
|
|
87
|
+
return errorResponse('500', "Server responded with incomplete meta data: missing content 'type' attribute.");
|
|
88
|
+
}
|
|
89
|
+
else if (renderMode === RENDER_MODE.NEXT
|
|
90
|
+
&& !IS_DEV_MODE
|
|
91
|
+
&& (type === PAGE_TEMPLATE_CONTENTTYPE_NAME ||
|
|
92
|
+
type === PAGE_TEMPLATE_FOLDER)) {
|
|
93
|
+
return errorResponse('404', `Content type [${type}] is not accessible in ${renderMode} mode`);
|
|
94
|
+
}
|
|
95
|
+
const components = restrictComponentsToPath(type, metaResult.meta.components, componentPath);
|
|
96
|
+
if (componentPath && !components.length) {
|
|
97
|
+
// component was not found
|
|
98
|
+
return errorResponse('404', `Component ${componentPath} was not found`);
|
|
99
|
+
}
|
|
100
|
+
if (requestType !== XP_REQUEST_TYPE.COMPONENT && components.length > 0) {
|
|
101
|
+
requestType = XP_REQUEST_TYPE.PAGE;
|
|
102
|
+
}
|
|
103
|
+
// ////////////////////////////////////////////////// Content type established. Proceed to data call:
|
|
104
|
+
const allDescriptors = [];
|
|
105
|
+
// Add the content type query at all cases
|
|
106
|
+
const contentTypeDef = ComponentRegistry.getContentType(type);
|
|
107
|
+
const pageCmp = (components || []).find(cmp => cmp.type === XP_COMPONENT_TYPE.PAGE);
|
|
108
|
+
if (pageCmp) {
|
|
109
|
+
processComponentConfig(APP_NAME, APP_NAME_DASHED, pageCmp);
|
|
110
|
+
}
|
|
111
|
+
const contentQueryAndVars = getQueryAndVariables(type, contentPath, context, contentTypeDef === null || contentTypeDef === void 0 ? void 0 : contentTypeDef.query, (_a = pageCmp === null || pageCmp === void 0 ? void 0 : pageCmp.page) === null || _a === void 0 ? void 0 : _a.config);
|
|
112
|
+
if (contentQueryAndVars) {
|
|
113
|
+
allDescriptors.push({
|
|
114
|
+
type: contentTypeDef,
|
|
115
|
+
queryAndVariables: contentQueryAndVars
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
const commonQueryAndVars = getQueryAndVariables(type, contentPath, context, ComponentRegistry.getCommonQuery(), (_b = pageCmp === null || pageCmp === void 0 ? void 0 : pageCmp.page) === null || _b === void 0 ? void 0 : _b.config);
|
|
119
|
+
if (commonQueryAndVars) {
|
|
120
|
+
allDescriptors.push({
|
|
121
|
+
type: contentTypeDef,
|
|
122
|
+
queryAndVariables: commonQueryAndVars
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
if ((components === null || components === void 0 ? void 0 : components.length) && ComponentRegistry) {
|
|
126
|
+
for (const cmp of (components || [])) {
|
|
127
|
+
processComponentConfig(APP_NAME, APP_NAME_DASHED, cmp);
|
|
128
|
+
}
|
|
129
|
+
// Collect component queries if defined
|
|
130
|
+
const componentDescriptors = collectComponentDescriptors({
|
|
131
|
+
components,
|
|
132
|
+
xpContentPath: contentPath,
|
|
133
|
+
context
|
|
134
|
+
});
|
|
135
|
+
if (componentDescriptors.length) {
|
|
136
|
+
allDescriptors.push(...componentDescriptors);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
const { query, variables } = combineMultipleQueries(allDescriptors);
|
|
140
|
+
if (!query.trim()) {
|
|
141
|
+
return errorResponse('400', `Missing or empty query override for content type ${type}`);
|
|
142
|
+
}
|
|
143
|
+
// /////////////// SECOND GUILLOTINE CALL FOR DATA //////////////////////
|
|
144
|
+
const contentResults = yield fetchContentData(contentApiUrl, contentPath, mapping, query, variables, outHeaders);
|
|
145
|
+
// ///////////////////////////////////////////////////////////////////////////
|
|
146
|
+
if (contentResults.error) {
|
|
147
|
+
console.error(contentResults.error);
|
|
148
|
+
return errorResponse(contentResults.error.code, contentResults.error.message);
|
|
149
|
+
}
|
|
150
|
+
// Apply processors to every component
|
|
151
|
+
const datas = yield applyProcessors(allDescriptors, contentResults, context);
|
|
152
|
+
// Unwind the data back to components
|
|
153
|
+
let contentData = null, common = null;
|
|
154
|
+
let startFrom = 0;
|
|
155
|
+
if (contentQueryAndVars) {
|
|
156
|
+
const item = datas[startFrom];
|
|
157
|
+
contentData = item.status === 'fulfilled' ? item.value : item.reason;
|
|
158
|
+
startFrom++;
|
|
159
|
+
}
|
|
160
|
+
if (commonQueryAndVars) {
|
|
161
|
+
const item = datas[startFrom];
|
|
162
|
+
common = item.status === 'fulfilled' ? item.value : item.reason;
|
|
163
|
+
startFrom++;
|
|
164
|
+
}
|
|
165
|
+
for (let i = startFrom; i < datas.length; i++) {
|
|
166
|
+
// component descriptors hold references to components
|
|
167
|
+
// that will later be used for creating page regions
|
|
168
|
+
const datum = datas[i];
|
|
169
|
+
if (datum.status === 'rejected') {
|
|
170
|
+
let reason = datum.reason;
|
|
171
|
+
if (reason instanceof Error) {
|
|
172
|
+
reason = reason.message;
|
|
173
|
+
}
|
|
174
|
+
else if (typeof reason !== 'string') {
|
|
175
|
+
reason = String(reason);
|
|
176
|
+
}
|
|
177
|
+
allDescriptors[i].component.error = reason;
|
|
178
|
+
}
|
|
179
|
+
else {
|
|
180
|
+
allDescriptors[i].component.data = datum.value;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
const page = buildPage(type, components);
|
|
184
|
+
const meta = createMetaData({
|
|
185
|
+
apiUrl: contentApiUrl,
|
|
186
|
+
baseUrl: xpBaseUrl,
|
|
187
|
+
components,
|
|
188
|
+
contentPath: siteRelativeContentPath,
|
|
189
|
+
contentType: type,
|
|
190
|
+
contentId: _id,
|
|
191
|
+
defaultLocale,
|
|
192
|
+
locale,
|
|
193
|
+
pageCmp: page,
|
|
194
|
+
renderMode,
|
|
195
|
+
requestedComponentPath: componentPath,
|
|
196
|
+
requestType
|
|
197
|
+
});
|
|
198
|
+
return {
|
|
199
|
+
data: contentData,
|
|
200
|
+
common,
|
|
201
|
+
meta,
|
|
202
|
+
page
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
catch (e) {
|
|
206
|
+
console.error(e);
|
|
207
|
+
let error;
|
|
208
|
+
try {
|
|
209
|
+
error = JSON.parse(e.message);
|
|
210
|
+
}
|
|
211
|
+
catch (e2) {
|
|
212
|
+
error = {
|
|
213
|
+
code: 'Local',
|
|
214
|
+
message: e.message
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
const errorResponse = buildErrorResponse(requestType, renderMode, contentApiUrl, xpBaseUrl, locale, defaultLocale, requestContentPath);
|
|
218
|
+
return errorResponse(error.code, error.message);
|
|
219
|
+
}
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
//# sourceMappingURL=fetchContent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetchContent.js","sourceRoot":"","sources":["../../src/guillotine/fetchContent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import type { ContentApiBaseBodyVariables, ContentResult, LocaleMapping, GuillotineRequestHeaders } from '../types';
|
|
2
|
+
export declare const fetchContentData: <Content = Record<string, unknown>>(contentApiUrl: string, xpContentPath: string, mapping: LocaleMapping, query: string, variables?: ContentApiBaseBodyVariables, headers?: GuillotineRequestHeaders) => Promise<ContentResult>;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import { fetchGuillotine } from './fetchGuillotine';
|
|
11
|
+
export const fetchContentData = (contentApiUrl, xpContentPath, mapping, query, variables, headers) => __awaiter(void 0, void 0, void 0, function* () {
|
|
12
|
+
const body = { query };
|
|
13
|
+
if (variables && Object.keys(variables).length > 0) {
|
|
14
|
+
body.variables = variables;
|
|
15
|
+
}
|
|
16
|
+
const contentResults = yield fetchGuillotine(contentApiUrl, mapping, {
|
|
17
|
+
body,
|
|
18
|
+
headers
|
|
19
|
+
});
|
|
20
|
+
if (contentResults.error) {
|
|
21
|
+
return contentResults;
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
return {
|
|
25
|
+
// omit the aliases and return values
|
|
26
|
+
contents: Object.values(contentResults)
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
//# sourceMappingURL=fetchContentData.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetchContentData.js","sourceRoot":"","sources":["../../src/guillotine/fetchContentData.ts"],"names":[],"mappings":";;;;;;;;;AAEA,OAAO,EAAC,eAAe,EAAC,MAAM,mBAAmB,CAAC;AAGlD,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC5B,aAAqB,EACrB,aAAqB,EACrB,OAAsB,EACtB,KAAa,EACb,SAAuC,EACvC,OAAkC,EACZ,EAAE;IACxB,MAAM,IAAI,GAAuB,EAAC,KAAK,EAAC,CAAC;IACzC,IAAI,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC/B,CAAC;IACD,MAAM,cAAc,GAAG,MAAM,eAAe,CAAyB,aAAa,EAAE,OAAO,EAAE;QACzF,IAAI;QACJ,OAAO;KACV,CAAC,CAAC;IAEH,IAAI,cAAc,CAAC,KAAK,EAAE,CAAC;QACvB,OAAO,cAAc,CAAC;IAC1B,CAAC;SAAM,CAAC;QACJ,OAAO;YACH,qCAAqC;YACrC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC;SAC1C,CAAC;IACN,CAAC;AACL,CAAC,CAAA,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import { GET_STATIC_PATHS_QUERY } from '../common/constants';
|
|
11
|
+
import { getLocaleMappings } from '../utils/getLocaleMappings';
|
|
12
|
+
import { fetchContentPathsForLocale } from './fetchContentPathsForLocale';
|
|
13
|
+
export function fetchContentPathsForAllLocales(path_1) {
|
|
14
|
+
return __awaiter(this, arguments, void 0, function* (path, query = GET_STATIC_PATHS_QUERY, countPerLocale = 999) {
|
|
15
|
+
const promises = Object.values(getLocaleMappings()).map(config => fetchContentPathsForLocale(path, config, query, countPerLocale));
|
|
16
|
+
return Promise.all(promises).then(results => {
|
|
17
|
+
return results.reduce((all, localePaths) => all.concat(localePaths), []);
|
|
18
|
+
});
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=fetchContentPathsForAllLocales.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetchContentPathsForAllLocales.js","sourceRoot":"","sources":["../../src/guillotine/fetchContentPathsForAllLocales.ts"],"names":[],"mappings":";;;;;;;;;AAEA,OAAO,EAAC,sBAAsB,EAAC,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAC,iBAAiB,EAAC,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAC,0BAA0B,EAAC,MAAM,8BAA8B,CAAC;AAGxE,MAAM,UAAgB,8BAA8B;yDAChD,IAAY,EACZ,QAAgB,sBAAsB,EACtC,cAAc,GAAG,GAAG;QAEpB,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,GAAG,CACnD,MAAM,CAAC,EAAE,CAAC,0BAA0B,CAChC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,CACtC,CACJ,CAAC;QACF,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;YACxC,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,WAAW,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC;QAC7E,CAAC,CAAC,CAAC;IACP,CAAC;CAAA"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import { GET_STATIC_PATHS_QUERY } from '../common/constants';
|
|
11
|
+
import { getContentApiUrl } from '../utils/getContentApiUrl';
|
|
12
|
+
import { fetchGuillotine } from './fetchGuillotine';
|
|
13
|
+
export function fetchContentPathsForLocale(path_1, config_1) {
|
|
14
|
+
return __awaiter(this, arguments, void 0, function* (path, config, query = GET_STATIC_PATHS_QUERY, count = 999) {
|
|
15
|
+
const decodedPath = decodeURIComponent(path);
|
|
16
|
+
const contentApiUrl = getContentApiUrl({
|
|
17
|
+
contentPath: decodedPath,
|
|
18
|
+
locale: config.locale
|
|
19
|
+
});
|
|
20
|
+
const body = {
|
|
21
|
+
query,
|
|
22
|
+
variables: {
|
|
23
|
+
path: decodedPath,
|
|
24
|
+
pathRegex: `/content${config.site}/*`,
|
|
25
|
+
count
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
return fetchGuillotine(contentApiUrl, config, { body }).then((results) => {
|
|
29
|
+
return results.guillotine.queryDsl.reduce((prev, child) => {
|
|
30
|
+
var _a;
|
|
31
|
+
const regexp = new RegExp(`^/${((_a = child.site) === null || _a === void 0 ? void 0 : _a._name) ? `${child.site._name}/?` : ''}`);
|
|
32
|
+
const contentPath = child._path.replace(regexp, '');
|
|
33
|
+
prev.push({
|
|
34
|
+
contentPath: contentPath.split('/'),
|
|
35
|
+
locale: config.locale
|
|
36
|
+
});
|
|
37
|
+
return prev;
|
|
38
|
+
}, []);
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=fetchContentPathsForLocale.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetchContentPathsForLocale.js","sourceRoot":"","sources":["../../src/guillotine/fetchContentPathsForLocale.ts"],"names":[],"mappings":";;;;;;;;;AAGA,OAAO,EAAC,sBAAsB,EAAC,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAC,gBAAgB,EAAC,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAC,eAAe,EAAC,MAAM,mBAAmB,CAAC;AAGlD,MAAM,UAAgB,0BAA0B;yDAC5C,IAAY,EACZ,MAAqB,EACrB,QAAgB,sBAAsB,EACtC,KAAK,GAAG,GAAG;QAEX,MAAM,WAAW,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAC7C,MAAM,aAAa,GAAG,gBAAgB,CAAC;YACnC,WAAW,EAAE,WAAW;YACxB,MAAM,EAAE,MAAM,CAAC,MAAM;SACxB,CAAC,CAAC;QACH,MAAM,IAAI,GAAuB;YAC7B,KAAK;YACL,SAAS,EAAE;gBACP,IAAI,EAAE,WAAW;gBACjB,SAAS,EAAE,WAAW,MAAM,CAAC,IAAI,IAAI;gBACrC,KAAK;aACR;SACJ,CAAC;QACF,OAAO,eAAe,CAAoB,aAAa,EAAE,MAAM,EAAE,EAAC,IAAI,EAAC,CAAC,CAAC,IAAI,CAAC,CAC1E,OAAyB,EAC3B,EAAE;YACA,OAAO,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CACtC,IAAuB,EACvB,KAAU,EACZ,EAAE;;gBACA,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,KAAK,CAAA,MAAA,KAAK,CAAC,IAAI,0CAAE,KAAK,EAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACnF,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;gBACpD,IAAI,CAAC,IAAI,CAAC;oBACN,WAAW,EAAE,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC;oBACnC,MAAM,EAAE,MAAM,CAAC,MAAM;iBACxB,CAAC,CAAC;gBACH,OAAO,IAAI,CAAC;YAChB,CAAC,EAAE,EAAE,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;IACP,CAAC;CAAA"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { FetchOptions, GuillotineResponseJson, LocaleMapping } from '../types';
|
|
2
|
+
/** Generic fetch */
|
|
3
|
+
export declare function fetchFromApi<Data = Record<string, unknown>>(apiUrl: string, mapping: LocaleMapping, options?: FetchOptions): Promise<GuillotineResponseJson>;
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
/** Generic fetch */
|
|
11
|
+
export function fetchFromApi(apiUrl, mapping, options) {
|
|
12
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
13
|
+
const opts = {
|
|
14
|
+
method: (options === null || options === void 0 ? void 0 : options.method) || 'POST',
|
|
15
|
+
body: (options === null || options === void 0 ? void 0 : options.body) ? JSON.stringify(options === null || options === void 0 ? void 0 : options.body) : null,
|
|
16
|
+
headers: mergeHeaders(mapping, options === null || options === void 0 ? void 0 : options.headers),
|
|
17
|
+
next: options === null || options === void 0 ? void 0 : options.next,
|
|
18
|
+
cache: options === null || options === void 0 ? void 0 : options.cache
|
|
19
|
+
};
|
|
20
|
+
let res;
|
|
21
|
+
try {
|
|
22
|
+
res = yield fetch(apiUrl, opts);
|
|
23
|
+
}
|
|
24
|
+
catch (e) {
|
|
25
|
+
console.warn(apiUrl, e);
|
|
26
|
+
throw new Error(JSON.stringify({
|
|
27
|
+
code: 'API',
|
|
28
|
+
message: e.message
|
|
29
|
+
}));
|
|
30
|
+
}
|
|
31
|
+
if (!res.ok) {
|
|
32
|
+
throw new Error(JSON.stringify({
|
|
33
|
+
code: res.status,
|
|
34
|
+
message: `Data fetching failed (message: '${yield res.text()}')`
|
|
35
|
+
}));
|
|
36
|
+
}
|
|
37
|
+
let json;
|
|
38
|
+
try {
|
|
39
|
+
json = yield res.json();
|
|
40
|
+
}
|
|
41
|
+
catch (e) {
|
|
42
|
+
throw new Error(JSON.stringify({
|
|
43
|
+
code: 500,
|
|
44
|
+
message: `API call completed but with non-JSON data: ${JSON.stringify(yield res.text())}`
|
|
45
|
+
}));
|
|
46
|
+
}
|
|
47
|
+
if (!json) {
|
|
48
|
+
throw new Error(JSON.stringify({
|
|
49
|
+
code: 500,
|
|
50
|
+
message: `API call completed but with unexpectedly empty data: ${JSON.stringify(yield res.text())}`
|
|
51
|
+
}));
|
|
52
|
+
}
|
|
53
|
+
if (Array.isArray(json)) {
|
|
54
|
+
throw new Error(JSON.stringify({
|
|
55
|
+
code: 500,
|
|
56
|
+
message: `API call completed but with unexpected array data: ${JSON.stringify(json)}`
|
|
57
|
+
}));
|
|
58
|
+
}
|
|
59
|
+
return json;
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
function mergeHeaders(mapping, headers) {
|
|
63
|
+
const newHeaders = new Headers({
|
|
64
|
+
'Accept': 'application/json',
|
|
65
|
+
'Content-Type': 'application/json'
|
|
66
|
+
});
|
|
67
|
+
if (headers) {
|
|
68
|
+
Object.keys(headers).forEach((headersKey) => {
|
|
69
|
+
newHeaders.set(headersKey, headers[headersKey]);
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
// append last to make sure it is not overwritten
|
|
73
|
+
newHeaders.set('X-Guillotine-SiteKey', mapping.site);
|
|
74
|
+
return newHeaders;
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=fetchFromApi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetchFromApi.js","sourceRoot":"","sources":["../../src/guillotine/fetchFromApi.ts"],"names":[],"mappings":";;;;;;;;;AAEA,oBAAoB;AACpB,MAAM,UAAgB,YAAY,CAC9B,MAAc,EACd,OAAsB,EACtB,OAAsB;;QAGtB,MAAM,IAAI,GAAG;YACT,MAAM,EAAE,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,KAAI,MAAM;YACjC,IAAI,EAAE,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,EAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;YAC1D,OAAO,EAAE,YAAY,CAAC,OAAO,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,CAAC;YAChD,IAAI,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI;YACnB,KAAK,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK;SACxB,CAAC;QAEF,IAAI,GAA6B,CAAC;QAClC,IAAI,CAAC;YACD,GAAG,GAAG,MAAM,KAAK,CAAC,MAAM,EAAE,IAAmB,CAAC,CAAC;QACnD,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YACd,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;gBAC3B,IAAI,EAAE,KAAK;gBACX,OAAO,EAAE,CAAC,CAAC,OAAO;aACrB,CAAC,CAAC,CAAC;QACR,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;gBAC3B,IAAI,EAAE,GAAG,CAAC,MAAM;gBAChB,OAAO,EAAE,mCAAmC,MAAM,GAAG,CAAC,IAAI,EAAE,IAAI;aACnE,CAAC,CAAC,CAAC;QACR,CAAC;QAED,IAAI,IAAkC,CAAC;QACvC,IAAI,CAAC;YACD,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAC5B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;gBAC3B,IAAI,EAAE,GAAG;gBACT,OAAO,EAAE,8CAA8C,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE;aAC5F,CAAC,CAAC,CAAC;QACR,CAAC;QAED,IAAI,CAAC,IAAI,EAAE,CAAC;YACR,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;gBAC3B,IAAI,EAAE,GAAG;gBACT,OAAO,EAAE,wDAAwD,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE;aACtG,CAAC,CAAC,CAAC;QACR,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;gBAC3B,IAAI,EAAE,GAAG;gBACT,OAAO,EAAE,sDAAsD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;aACxF,CAAC,CAAC,CAAC;QACR,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;CAAA;AAED,SAAS,YAAY,CAAC,OAAsB,EAAE,OAAqB;IAC/D,MAAM,UAAU,GAAG,IAAI,OAAO,CAAC;QAC3B,QAAQ,EAAE,kBAAkB;QAC5B,cAAc,EAAE,kBAAkB;KACrC,CAAC,CAAC;IACH,IAAI,OAAO,EAAE,CAAC;QACV,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;YACxC,UAAU,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;IACP,CAAC;IACD,iDAAiD;IACjD,UAAU,CAAC,GAAG,CAAC,sBAAsB,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD,OAAO,UAAU,CAAC;AACtB,CAAC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { FetchOptions, GuillotineResult, LocaleMapping } from '../types';
|
|
2
|
+
/** Guillotine-specialized fetch, using the generic fetch above */
|
|
3
|
+
export declare function fetchGuillotine<Data = Record<string, unknown>>(contentApiUrl: string, mapping: LocaleMapping, options?: FetchOptions): Promise<GuillotineResult>;
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import gqlmin from 'gqlmin';
|
|
11
|
+
import { fetchFromApi } from './fetchFromApi';
|
|
12
|
+
const XP_ERROR_PATTERN = '/_/error/';
|
|
13
|
+
/** Guillotine-specialized fetch, using the generic fetch above */
|
|
14
|
+
export function fetchGuillotine(contentApiUrl, mapping, options) {
|
|
15
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
16
|
+
var _a;
|
|
17
|
+
const body = options === null || options === void 0 ? void 0 : options.body;
|
|
18
|
+
const path = (_a = body === null || body === void 0 ? void 0 : body.variables) === null || _a === void 0 ? void 0 : _a.path;
|
|
19
|
+
if (typeof body.query !== 'string' || !body.query.trim()) {
|
|
20
|
+
return {
|
|
21
|
+
error: {
|
|
22
|
+
code: '400',
|
|
23
|
+
message: `Invalid or missing query. JSON.stringify(query) = ${JSON.stringify(body.query)}`
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
// special case for not sending XP generated error paths to guillotine
|
|
29
|
+
const pathArr = path === null || path === void 0 ? void 0 : path.split(XP_ERROR_PATTERN);
|
|
30
|
+
if ((pathArr === null || pathArr === void 0 ? void 0 : pathArr.length) === 2) {
|
|
31
|
+
return {
|
|
32
|
+
error: {
|
|
33
|
+
code: pathArr[1],
|
|
34
|
+
message: `XP error URL detected`
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
// Minify the query to avoid hitting 200k space limit
|
|
40
|
+
body.query = gqlmin(body.query);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
const pathMessage = path ? JSON.stringify(path) : '';
|
|
44
|
+
return yield fetchFromApi(contentApiUrl, mapping, options)
|
|
45
|
+
.then(json => {
|
|
46
|
+
let errors = json.errors; // fetchFromApi ensures json is an object
|
|
47
|
+
if (errors) {
|
|
48
|
+
if (!Array.isArray(errors)) {
|
|
49
|
+
errors = [errors];
|
|
50
|
+
}
|
|
51
|
+
console.error(`${errors.length} error(s) when fetching data from: ${contentApiUrl}`);
|
|
52
|
+
errors.forEach(error => {
|
|
53
|
+
console.error(error);
|
|
54
|
+
});
|
|
55
|
+
return {
|
|
56
|
+
error: {
|
|
57
|
+
code: '500',
|
|
58
|
+
message: `Server responded with ${errors.length} error(s), probably from guillotine - see log.`
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
return json.data;
|
|
63
|
+
})
|
|
64
|
+
.catch((err) => {
|
|
65
|
+
console.warn(`Client-side error when trying to fetch data ${pathMessage}`, err);
|
|
66
|
+
try {
|
|
67
|
+
return { error: JSON.parse(err.message) };
|
|
68
|
+
}
|
|
69
|
+
catch (e2) {
|
|
70
|
+
return { error: { code: 'Client-side error', message: err.message } };
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=fetchGuillotine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetchGuillotine.js","sourceRoot":"","sources":["../../src/guillotine/fetchGuillotine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import { getMetaQuery, pageFragmentQuery } from './getMetaData';
|
|
11
|
+
import { fetchGuillotine } from './fetchGuillotine';
|
|
12
|
+
export const fetchMetaData = (contentApiUrl, xpContentPath, mapping, headers) => __awaiter(void 0, void 0, void 0, function* () {
|
|
13
|
+
var _a;
|
|
14
|
+
const body = {
|
|
15
|
+
query: getMetaQuery(pageFragmentQuery()),
|
|
16
|
+
variables: {
|
|
17
|
+
path: xpContentPath
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
const metaResult = yield fetchGuillotine(contentApiUrl, mapping, {
|
|
21
|
+
body,
|
|
22
|
+
headers
|
|
23
|
+
});
|
|
24
|
+
if (metaResult.error) {
|
|
25
|
+
return metaResult;
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
return {
|
|
29
|
+
meta: (_a = metaResult === null || metaResult === void 0 ? void 0 : metaResult.guillotine) === null || _a === void 0 ? void 0 : _a.get
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
//# sourceMappingURL=fetchMetaData.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetchMetaData.js","sourceRoot":"","sources":["../../src/guillotine/fetchMetaData.ts"],"names":[],"mappings":";;;;;;;;;AAGA,OAAO,EAAC,YAAY,EAAE,iBAAiB,EAAC,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAC,eAAe,EAAC,MAAM,mBAAmB,CAAC;AAGlD,MAAM,CAAC,MAAM,aAAa,GAAG,CACzB,aAAqB,EACrB,aAAqB,EACrB,OAAsB,EACtB,OAAkC,EACf,EAAE;;IACrB,MAAM,IAAI,GAAuB;QAC7B,KAAK,EAAE,YAAY,CAAC,iBAAiB,EAAE,CAAC;QACxC,SAAS,EAAE;YACP,IAAI,EAAE,aAAa;SACtB;KACJ,CAAC;IACF,MAAM,UAAU,GAAG,MAAM,eAAe,CAAa,aAAa,EAAE,OAAO,EAAE;QACzE,IAAI;QACJ,OAAO;KACV,CAAC,CAAC;IACH,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;QACnB,OAAO,UAAU,CAAC;IACtB,CAAC;SAAM,CAAC;QACJ,OAAO;YACH,IAAI,EAAE,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,UAAU,0CAAE,GAAG;SACpC,CAAC;IACN,CAAC;AACL,CAAC,CAAA,CAAC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/** Checks a site-relative contentPath as a slash-delimited string or a string array, and returns a pure site-relative path string (no double slashes, starts with a slash, does not end with one). */
|
|
2
|
+
export declare const getCleanContentPathArrayOrThrow400: (contentPath: string | string[] | undefined) => string;
|
|
@@ -1,22 +1,20 @@
|
|
|
1
1
|
/** Checks a site-relative contentPath as a slash-delimited string or a string array, and returns a pure site-relative path string (no double slashes, starts with a slash, does not end with one). */
|
|
2
|
-
export const getCleanContentPathArrayOrThrow400 = (contentPath
|
|
2
|
+
export const getCleanContentPathArrayOrThrow400 = (contentPath) => {
|
|
3
3
|
if (contentPath === undefined) {
|
|
4
4
|
return '';
|
|
5
5
|
}
|
|
6
6
|
const isArray = Array.isArray(contentPath);
|
|
7
|
-
|
|
8
7
|
if (!isArray) {
|
|
9
8
|
if (typeof contentPath !== 'string') {
|
|
10
9
|
throw Error(JSON.stringify({
|
|
11
10
|
code: 400,
|
|
12
|
-
message: `Unexpected target content _path: contentPath must be a string or pure string array (contentPath=${JSON.stringify(
|
|
13
|
-
contentPath)})`
|
|
11
|
+
message: `Unexpected target content _path: contentPath must be a string or pure string array (contentPath=${JSON.stringify(contentPath)})`
|
|
14
12
|
}));
|
|
15
13
|
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
return (contentPath).join('/');
|
|
14
|
+
return decodeURIComponent(contentPath);
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
return decodeURIComponent((contentPath).join('/'));
|
|
21
18
|
}
|
|
22
19
|
};
|
|
20
|
+
//# sourceMappingURL=getCleanContentPathArrayOrThrow400.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getCleanContentPathArrayOrThrow400.js","sourceRoot":"","sources":["../../src/guillotine/getCleanContentPathArrayOrThrow400.ts"],"names":[],"mappings":"AAAA,sMAAsM;AACtM,MAAM,CAAC,MAAM,kCAAkC,GAAG,CAAC,WAA0C,EAAU,EAAE;IACrG,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO,EAAE,CAAC;IACd,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAE3C,IAAI,CAAC,OAAO,EAAE,CAAC;QACX,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;YAClC,MAAM,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;gBACvB,IAAI,EAAE,GAAG;gBACT,OAAO,EAAE,mGAAmG,IAAI,CAAC,SAAS,CACtH,WAAW,CAAC,GAAG;aACtB,CAAC,CAAC,CAAC;QACR,CAAC;QAED,OAAO,kBAAkB,CAAC,WAAW,CAAC,CAAC;IAE3C,CAAC;SAAM,CAAC;QACJ,OAAO,kBAAkB,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACvD,CAAC;AACL,CAAC,CAAC"}
|