@enonic/nextjs-adapter 3.0.0-B1 → 3.0.0-B2
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/baseMappings.js +3 -2
- package/baseMappings.js.map +1 -0
- package/client.d.ts +1 -0
- package/client.js +3 -0
- package/client.js.map +1 -0
- package/common/ComponentRegistry.d.ts +34 -0
- package/{ComponentRegistry.js → common/ComponentRegistry.js} +26 -26
- package/common/ComponentRegistry.js.map +1 -0
- package/{UrlProcessor.d.ts → common/UrlProcessor.d.ts} +2 -2
- package/{UrlProcessor.js → common/UrlProcessor.js} +16 -8
- package/common/UrlProcessor.js.map +1 -0
- package/common/constants.d.ts +50 -0
- package/common/constants.js +79 -0
- package/common/constants.js.map +1 -0
- package/common/env.d.ts +11 -0
- package/common/env.js +28 -0
- package/common/env.js.map +1 -0
- package/guillotine/applyProcessors.d.ts +2 -0
- package/guillotine/applyProcessors.js +33 -0
- package/guillotine/applyProcessors.js.map +1 -0
- package/guillotine/buildComponentTree.d.ts +2 -0
- package/guillotine/buildComponentTree.js +45 -0
- package/guillotine/buildComponentTree.js.map +1 -0
- package/guillotine/buildErrorResponse.d.ts +3 -0
- package/guillotine/buildErrorResponse.js +26 -0
- package/guillotine/buildErrorResponse.js.map +1 -0
- package/guillotine/buildPage.d.ts +2 -0
- package/guillotine/buildPage.js +10 -0
- package/guillotine/buildPage.js.map +1 -0
- package/guillotine/collectComponentDescriptors.d.ts +6 -0
- package/guillotine/collectComponentDescriptors.js +43 -0
- package/guillotine/collectComponentDescriptors.js.map +1 -0
- package/guillotine/combineMultipleQueries.d.ts +2 -0
- package/guillotine/combineMultipleQueries.js +58 -0
- package/guillotine/combineMultipleQueries.js.map +1 -0
- package/guillotine/createMetaData.d.ts +17 -0
- package/guillotine/createMetaData.js +44 -0
- package/guillotine/createMetaData.js.map +1 -0
- package/guillotine/fetchContent.d.ts +1 -39
- package/guillotine/fetchContent.js +195 -808
- package/guillotine/fetchContent.js.map +1 -0
- package/guillotine/fetchContentData.d.ts +2 -0
- package/guillotine/fetchContentData.js +27 -0
- package/guillotine/fetchContentData.js.map +1 -0
- package/guillotine/fetchContentPathsForAllLocales.d.ts +2 -0
- package/guillotine/fetchContentPathsForAllLocales.js +21 -0
- package/guillotine/fetchContentPathsForAllLocales.js.map +1 -0
- package/guillotine/fetchContentPathsForLocale.d.ts +2 -0
- package/guillotine/fetchContentPathsForLocale.js +40 -0
- package/guillotine/fetchContentPathsForLocale.js.map +1 -0
- package/guillotine/fetchFromApi.d.ts +3 -0
- package/guillotine/fetchFromApi.js +65 -0
- package/guillotine/fetchFromApi.js.map +1 -0
- package/guillotine/fetchGuillotine.d.ts +3 -0
- package/guillotine/fetchGuillotine.js +55 -0
- package/guillotine/fetchGuillotine.js.map +1 -0
- package/guillotine/fetchMetaData.d.ts +2 -0
- package/guillotine/fetchMetaData.js +30 -0
- package/guillotine/fetchMetaData.js.map +1 -0
- package/guillotine/getCleanContentPathArrayOrThrow400.d.ts +2 -0
- package/guillotine/getCleanContentPathArrayOrThrow400.js +20 -0
- package/guillotine/getCleanContentPathArrayOrThrow400.js.map +1 -0
- package/guillotine/getComponentConfig.d.ts +2 -0
- package/guillotine/getComponentConfig.js +5 -0
- package/guillotine/getComponentConfig.js.map +1 -0
- package/guillotine/getContentAndComponentPaths.d.ts +1 -0
- package/guillotine/getContentAndComponentPaths.js +12 -0
- package/guillotine/getContentAndComponentPaths.js.map +1 -0
- package/guillotine/getMetaData.d.ts +0 -92
- package/guillotine/getMetaData.js +47 -109
- package/guillotine/getMetaData.js.map +1 -0
- package/guillotine/getParentRegion.d.ts +2 -0
- package/guillotine/getParentRegion.js +40 -0
- package/guillotine/getParentRegion.js.map +1 -0
- package/guillotine/getQueryAndVariables.d.ts +2 -0
- package/guillotine/getQueryAndVariables.js +32 -0
- package/guillotine/getQueryAndVariables.js.map +1 -0
- package/guillotine/metadata/configQuery.d.ts +2 -0
- package/guillotine/metadata/configQuery.js +36 -0
- package/guillotine/metadata/configQuery.js.map +1 -0
- package/guillotine/metadata/richTextQuery.d.ts +1 -0
- package/guillotine/metadata/richTextQuery.js +32 -0
- package/guillotine/metadata/richTextQuery.js.map +1 -0
- package/guillotine/parseComponentPath.d.ts +2 -0
- package/guillotine/parseComponentPath.js +22 -0
- package/guillotine/parseComponentPath.js.map +1 -0
- package/guillotine/prefixLayoutPath.d.ts +1 -0
- package/guillotine/prefixLayoutPath.js +13 -0
- package/guillotine/prefixLayoutPath.js.map +1 -0
- package/guillotine/processComponentConfig.d.ts +2 -0
- package/guillotine/processComponentConfig.js +30 -0
- package/guillotine/processComponentConfig.js.map +1 -0
- package/guillotine/restrictComponentsToPath.d.ts +2 -0
- package/guillotine/restrictComponentsToPath.js +35 -0
- package/guillotine/restrictComponentsToPath.js.map +1 -0
- package/guillotine/validateData.d.ts +2 -0
- package/guillotine/validateData.js +7 -0
- package/guillotine/validateData.js.map +1 -0
- package/guillotine/validateNotFound.d.ts +2 -0
- package/guillotine/validateNotFound.js +16 -0
- package/guillotine/validateNotFound.js.map +1 -0
- package/guillotine/validateShortcut.d.ts +2 -0
- package/guillotine/validateShortcut.js +29 -0
- package/guillotine/validateShortcut.js.map +1 -0
- package/i18n/LocaleContext.d.ts +2 -8
- package/i18n/LocaleContext.jsx +17 -13
- package/i18n/LocaleContext.jsx.map +1 -0
- package/i18n/i18n.d.ts +1 -3
- package/i18n/i18n.js +2 -1
- package/i18n/i18n.js.map +1 -0
- package/index.d.ts +18 -7
- package/index.js +18 -7
- package/index.js.map +1 -0
- package/package.json +63 -15
- package/query/Shortcut.js +1 -0
- package/query/Shortcut.js.map +1 -0
- package/types/component.d.ts +114 -0
- package/types/component.js +2 -0
- package/types/component.js.map +1 -0
- package/types/componentProps.d.ts +104 -0
- package/types/componentProps.js +2 -0
- package/types/componentProps.js.map +1 -0
- package/types/guillotine.d.ts +342 -0
- package/types/guillotine.js +2 -0
- package/types/guillotine.js.map +1 -0
- package/types/i18n.d.ts +7 -0
- package/types/i18n.js +2 -0
- package/types/i18n.js.map +1 -0
- package/types/index.d.ts +45 -0
- package/types/index.js +3 -0
- package/types/index.js.map +1 -0
- package/types/next.d.ts +6 -0
- package/types/next.js +2 -0
- package/types/next.js.map +1 -0
- package/types/util.d.ts +3 -0
- package/types/util.js +3 -0
- package/types/util.js.map +1 -0
- package/utils/addLineNumbers.d.ts +1 -0
- package/utils/addLineNumbers.js +4 -0
- package/utils/addLineNumbers.js.map +1 -0
- package/utils/buildGuillotineRequestHeaders.d.ts +7 -0
- package/utils/buildGuillotineRequestHeaders.js +16 -0
- package/utils/buildGuillotineRequestHeaders.js.map +1 -0
- package/utils/commonChars.d.ts +1 -0
- package/utils/commonChars.js +17 -0
- package/utils/commonChars.js.map +1 -0
- package/utils/fixDoubleSlashes.d.ts +1 -0
- package/utils/fixDoubleSlashes.js +4 -0
- package/utils/fixDoubleSlashes.js.map +1 -0
- package/utils/getContentApiUrl.d.ts +2 -0
- package/utils/getContentApiUrl.js +15 -0
- package/utils/getContentApiUrl.js.map +1 -0
- package/utils/getProjectLocaleConfig.d.ts +2 -0
- package/utils/getProjectLocaleConfig.js +19 -0
- package/utils/getProjectLocaleConfig.js.map +1 -0
- package/utils/getProjectLocaleConfigById.d.ts +2 -0
- package/utils/getProjectLocaleConfigById.js +16 -0
- package/utils/getProjectLocaleConfigById.js.map +1 -0
- package/utils/getProjectLocaleConfigByLocale.d.ts +2 -0
- package/utils/getProjectLocaleConfigByLocale.js +13 -0
- package/utils/getProjectLocaleConfigByLocale.js.map +1 -0
- package/utils/getProjectLocaleConfigs.d.ts +2 -0
- package/utils/getProjectLocaleConfigs.js +30 -0
- package/utils/getProjectLocaleConfigs.js.map +1 -0
- package/utils/getProjectLocales.d.ts +1 -0
- package/utils/getProjectLocales.js +5 -0
- package/utils/getProjectLocales.js.map +1 -0
- package/utils/getRenderMode.d.ts +3 -0
- package/utils/getRenderMode.js +8 -0
- package/utils/getRenderMode.js.map +1 -0
- package/utils/getRequestLocaleInfo.d.ts +6 -0
- package/utils/getRequestLocaleInfo.js +26 -0
- package/utils/getRequestLocaleInfo.js.map +1 -0
- package/utils/getXpBaseUrl.d.ts +2 -0
- package/utils/getXpBaseUrl.js +8 -0
- package/utils/getXpBaseUrl.js.map +1 -0
- package/utils/indent.d.ts +1 -0
- package/utils/indent.js +5 -0
- package/utils/indent.js.map +1 -0
- package/utils/sanitizeGraphqlName.d.ts +1 -0
- package/utils/sanitizeGraphqlName.js +12 -0
- package/utils/sanitizeGraphqlName.js.map +1 -0
- package/views/BaseComponent.d.ts +6 -11
- package/views/BaseComponent.jsx +18 -21
- package/views/BaseComponent.jsx.map +1 -0
- package/views/BaseContent.d.ts +3 -3
- package/views/BaseContent.jsx +2 -5
- package/views/BaseContent.jsx.map +1 -0
- package/views/BaseLayout.d.ts +3 -16
- package/views/BaseLayout.jsx +3 -3
- package/views/BaseLayout.jsx.map +1 -0
- package/views/BaseMacro.d.ts +3 -13
- package/views/BaseMacro.jsx +4 -3
- package/views/BaseMacro.jsx.map +1 -0
- package/views/BasePage.d.ts +3 -18
- package/views/BasePage.jsx +3 -3
- package/views/BasePage.jsx.map +1 -0
- package/views/BasePart.d.ts +3 -18
- package/views/BasePart.jsx +3 -3
- package/views/BasePart.jsx.map +1 -0
- package/views/Empty.d.ts +2 -2
- package/views/Empty.jsx +2 -1
- package/views/Empty.jsx.map +1 -0
- package/views/Fragment.d.ts +3 -9
- package/views/Fragment.jsx +2 -2
- package/views/Fragment.jsx.map +1 -0
- package/views/MainView.d.ts +3 -3
- package/views/MainView.jsx +2 -2
- package/views/MainView.jsx.map +1 -0
- package/views/PropsView.d.ts +3 -0
- package/views/PropsView.jsx +21 -0
- package/views/PropsView.jsx.map +1 -0
- package/views/Region.d.ts +4 -17
- package/views/Region.jsx +2 -2
- package/views/Region.jsx.map +1 -0
- package/views/RichTextView.d.ts +3 -13
- package/views/RichTextView.jsx +2 -2
- package/views/RichTextView.jsx.map +1 -0
- package/views/SingleComponent.d.ts +3 -3
- package/views/SingleComponent.jsx +1 -2
- package/views/SingleComponent.jsx.map +1 -0
- package/views/StaticContent.d.ts +2 -6
- package/views/StaticContent.jsx +1 -0
- package/views/StaticContent.jsx.map +1 -0
- package/views/Text.d.ts +5 -5
- package/views/Text.jsx +1 -1
- package/views/Text.jsx.map +1 -0
- package/views/getClientHydratedHtml.d.ts +2 -0
- package/views/getClientHydratedHtml.jsx +9 -0
- package/views/getClientHydratedHtml.jsx.map +1 -0
- package/views/macros/DefaultMacro.d.ts +1 -1
- package/views/macros/DefaultMacro.jsx +1 -0
- package/views/macros/DefaultMacro.jsx.map +1 -0
- package/views/macros/DisableMacro.d.ts +1 -1
- package/views/macros/DisableMacro.jsx +1 -0
- package/views/macros/DisableMacro.jsx.map +1 -0
- package/ComponentRegistry.d.ts +0 -64
- package/utils.d.ts +0 -111
- package/utils.js +0 -255
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { ComponentRegistry } from '../common/ComponentRegistry';
|
|
2
|
+
import { XP_COMPONENT_TYPE } from '../common/constants';
|
|
3
|
+
import { APP_NAME, APP_NAME_DASHED, } from '../common/env';
|
|
4
|
+
import { processComponentConfig } from './processComponentConfig';
|
|
5
|
+
import { getComponentConfig } from './getComponentConfig';
|
|
6
|
+
import { getQueryAndVariables } from './getQueryAndVariables';
|
|
7
|
+
export function collectComponentDescriptors({ components, xpContentPath, context, }) {
|
|
8
|
+
var _a, _b;
|
|
9
|
+
const descriptors = [];
|
|
10
|
+
for (const cmp of (components || [])) {
|
|
11
|
+
processComponentConfig(APP_NAME, APP_NAME_DASHED, cmp);
|
|
12
|
+
// only look for parts
|
|
13
|
+
// look for single part if it is a single component request
|
|
14
|
+
if (XP_COMPONENT_TYPE.FRAGMENT !== cmp.type) {
|
|
15
|
+
const cmpDef = ComponentRegistry.getByComponent(cmp);
|
|
16
|
+
if (cmpDef) {
|
|
17
|
+
// const partPath = `${xpContentPath}/_component${cmp.path}`;
|
|
18
|
+
const config = getComponentConfig(cmp);
|
|
19
|
+
const queryAndVariables = getQueryAndVariables(cmp.type, xpContentPath, context, cmpDef.query, config);
|
|
20
|
+
if (queryAndVariables) {
|
|
21
|
+
descriptors.push({
|
|
22
|
+
component: cmp,
|
|
23
|
+
type: cmpDef,
|
|
24
|
+
queryAndVariables: queryAndVariables,
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
// look for parts inside fragments
|
|
31
|
+
const fragPartDescs = collectComponentDescriptors({
|
|
32
|
+
components: (_b = (_a = cmp.fragment) === null || _a === void 0 ? void 0 : _a.fragment) === null || _b === void 0 ? void 0 : _b.components,
|
|
33
|
+
xpContentPath,
|
|
34
|
+
context,
|
|
35
|
+
});
|
|
36
|
+
if (fragPartDescs.length) {
|
|
37
|
+
descriptors.push(...fragPartDescs);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return descriptors;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=collectComponentDescriptors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collectComponentDescriptors.js","sourceRoot":"","sources":["../../src/guillotine/collectComponentDescriptors.ts"],"names":[],"mappings":"AAOA,OAAO,EAAC,iBAAiB,EAAC,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAC,iBAAiB,EAAC,MAAM,qBAAqB,CAAC;AACtD,OAAO,EACH,QAAQ,EACR,eAAe,GAClB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAC,sBAAsB,EAAC,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAC,kBAAkB,EAAC,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAC,oBAAoB,EAAC,MAAM,wBAAwB,CAAC;AAG5D,MAAM,UAAU,2BAA2B,CAAC,EACxC,UAAU,EACV,aAAa,EACb,OAAO,GAKV;;IAEG,MAAM,WAAW,GAA0B,EAAE,CAAC;IAE9C,KAAK,MAAM,GAAG,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,EAAE,CAAC;QACnC,sBAAsB,CAAC,QAAQ,EAAE,eAAe,EAAE,GAAG,CAAC,CAAC;QACvD,sBAAsB;QACtB,2DAA2D;QAC3D,IAAI,iBAAiB,CAAC,QAAQ,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC;YAC1C,MAAM,MAAM,GAAG,iBAAiB,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;YACrD,IAAI,MAAM,EAAE,CAAC;gBACT,6DAA6D;gBAC7D,MAAM,MAAM,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;gBACvC,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,GAAG,CAAC,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;gBACvG,IAAI,iBAAiB,EAAE,CAAC;oBACpB,WAAW,CAAC,IAAI,CAAC;wBACb,SAAS,EAAE,GAAG;wBACd,IAAI,EAAE,MAAM;wBACZ,iBAAiB,EAAE,iBAAiB;qBACvC,CAAC,CAAC;gBACP,CAAC;YACL,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,kCAAkC;YAClC,MAAM,aAAa,GAAG,2BAA2B,CAAC;gBAC9C,UAAU,EAAE,MAAA,MAAA,GAAG,CAAC,QAAQ,0CAAE,QAAQ,0CAAE,UAAU;gBAC9C,aAAa;gBACb,OAAO;aACV,CAAC,CAAC;YACH,IAAI,aAAa,CAAC,MAAM,EAAE,CAAC;gBACvB,WAAW,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC;YACvC,CAAC;QACL,CAAC;IACL,CAAC;IAED,OAAO,WAAW,CAAC;AACvB,CAAC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
const ALIAS_PREFIX = 'request';
|
|
2
|
+
const GRAPHQL_FRAGMENTS_REGEXP = /fragment\s+.+\s+on\s+.+\s*{[\s\w{}().,:"'`]+}/;
|
|
3
|
+
const GUILLOTINE_QUERY_REGEXP = /^\s*query\s*(?:\((.*)*\))?\s*{\s*guillotine\s*{((?:.|\s)+)}\s*}\s*$/;
|
|
4
|
+
export function combineMultipleQueries(queriesWithVars) {
|
|
5
|
+
const queries = [];
|
|
6
|
+
const fragments = [];
|
|
7
|
+
const superVars = {};
|
|
8
|
+
const superParams = [];
|
|
9
|
+
queriesWithVars.forEach((componentDescriptor, index) => {
|
|
10
|
+
const queryAndVars = componentDescriptor.queryAndVariables;
|
|
11
|
+
if (!queryAndVars) {
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
// Extract fragments first if exist
|
|
15
|
+
let q = queryAndVars.query;
|
|
16
|
+
let match = q.match(GRAPHQL_FRAGMENTS_REGEXP);
|
|
17
|
+
if ((match === null || match === void 0 ? void 0 : match.length) === 1) {
|
|
18
|
+
// extract a fragment to put it at root level
|
|
19
|
+
fragments.push(match[0]);
|
|
20
|
+
// remove it from query because queries are going to get wrapped
|
|
21
|
+
q = q.replace(match[0], '');
|
|
22
|
+
}
|
|
23
|
+
// Extract graphql query and its params and add prefixes to exclude collisions with other queries
|
|
24
|
+
match = q.match(GUILLOTINE_QUERY_REGEXP) || ['']; // Fall back to empty string if no match
|
|
25
|
+
const args = match[1];
|
|
26
|
+
let query = match[2];
|
|
27
|
+
if (args) {
|
|
28
|
+
args.split(',').forEach(originalParamString => {
|
|
29
|
+
const [originalKey, originalVal] = originalParamString.trim().split(':');
|
|
30
|
+
const [prefixedKey, prefixedVal] = [`$${ALIAS_PREFIX}${index}_${originalKey.substr(1)}`, originalVal];
|
|
31
|
+
superParams.push(`${prefixedKey}:${prefixedVal}`);
|
|
32
|
+
// also update param references in query itself !
|
|
33
|
+
// query = query.replaceAll(originalKey, prefixedKey);
|
|
34
|
+
// replaceAll is not supported in older nodejs versions
|
|
35
|
+
const origKeyPattern = new RegExp(originalKey.replace(/\$/g, '\\$'), 'g');
|
|
36
|
+
query = query.replace(origKeyPattern, prefixedKey);
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
if (query === null || query === void 0 ? void 0 : query.length) {
|
|
40
|
+
queries.push(`${ALIAS_PREFIX}${index}:guillotine {${query}}`);
|
|
41
|
+
}
|
|
42
|
+
// Update variables with the same prefixes
|
|
43
|
+
Object.entries(queryAndVars.variables || {}).forEach(entry => {
|
|
44
|
+
superVars[`${ALIAS_PREFIX}${index}_${entry[0]}`] = entry[1];
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
// Compose the super query
|
|
48
|
+
const superQuery = `query ${superParams.length ? `(${superParams.join(', ')})` : ''} {
|
|
49
|
+
${queries.join('\n')}
|
|
50
|
+
}
|
|
51
|
+
${fragments.join('\n')}
|
|
52
|
+
`;
|
|
53
|
+
return {
|
|
54
|
+
query: superQuery,
|
|
55
|
+
variables: superVars,
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=combineMultipleQueries.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"combineMultipleQueries.js","sourceRoot":"","sources":["../../src/guillotine/combineMultipleQueries.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { MetaData, PageComponent } from '../types';
|
|
2
|
+
import { RENDER_MODE, XP_REQUEST_TYPE } from '../common/constants';
|
|
3
|
+
export declare function createMetaData({ apiUrl, baseUrl, components, // Optional NOTE: Doesn't handle null
|
|
4
|
+
contentPath, contentType, defaultLocale, locale, pageCmp, // Optional
|
|
5
|
+
renderMode, requestedComponentPath, requestType, }: {
|
|
6
|
+
apiUrl: string;
|
|
7
|
+
baseUrl: string;
|
|
8
|
+
components?: PageComponent[];
|
|
9
|
+
contentPath: string;
|
|
10
|
+
contentType: string;
|
|
11
|
+
defaultLocale: string;
|
|
12
|
+
locale: string;
|
|
13
|
+
pageCmp?: PageComponent;
|
|
14
|
+
renderMode: RENDER_MODE;
|
|
15
|
+
requestedComponentPath: string | undefined;
|
|
16
|
+
requestType: XP_REQUEST_TYPE;
|
|
17
|
+
}): MetaData;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { XP_REQUEST_TYPE } from '../common/constants';
|
|
2
|
+
import { ComponentRegistry } from '../common/ComponentRegistry';
|
|
3
|
+
export function createMetaData({ apiUrl, baseUrl, components = [], // Optional NOTE: Doesn't handle null
|
|
4
|
+
contentPath, contentType, defaultLocale, locale, pageCmp, // Optional
|
|
5
|
+
renderMode, requestedComponentPath, requestType, }) {
|
|
6
|
+
var _a;
|
|
7
|
+
// .meta will be visible in final rendered inline props.
|
|
8
|
+
// Only adding some .meta attributes here on certain conditions
|
|
9
|
+
// (instead of always adding them and letting them be visible as false/undefined etc)
|
|
10
|
+
const meta = {
|
|
11
|
+
apiUrl,
|
|
12
|
+
baseUrl,
|
|
13
|
+
canRender: false,
|
|
14
|
+
catchAll: false, // catchAll only refers to content type catch-all
|
|
15
|
+
defaultLocale,
|
|
16
|
+
locale,
|
|
17
|
+
path: contentPath,
|
|
18
|
+
renderMode: renderMode,
|
|
19
|
+
requestType: requestType,
|
|
20
|
+
type: contentType,
|
|
21
|
+
};
|
|
22
|
+
if (requestedComponentPath) {
|
|
23
|
+
meta.requestedComponent = components.find(cmp => cmp.path === requestedComponentPath);
|
|
24
|
+
}
|
|
25
|
+
const pageDesc = (_a = pageCmp === null || pageCmp === void 0 ? void 0 : pageCmp.page) === null || _a === void 0 ? void 0 : _a.descriptor;
|
|
26
|
+
const typeDef = ComponentRegistry.getContentType(contentType);
|
|
27
|
+
if ((typeDef === null || typeDef === void 0 ? void 0 : typeDef.view) && !typeDef.catchAll) {
|
|
28
|
+
meta.canRender = true;
|
|
29
|
+
}
|
|
30
|
+
else if (requestType === XP_REQUEST_TYPE.COMPONENT) {
|
|
31
|
+
// always render a single component (show missing if not implemented)
|
|
32
|
+
meta.canRender = true;
|
|
33
|
+
}
|
|
34
|
+
else if (pageDesc) {
|
|
35
|
+
// always render a page if there is a descriptor (show missing if not implemented)
|
|
36
|
+
meta.canRender = true;
|
|
37
|
+
}
|
|
38
|
+
else if (typeDef === null || typeDef === void 0 ? void 0 : typeDef.view) {
|
|
39
|
+
meta.canRender = true;
|
|
40
|
+
meta.catchAll = true;
|
|
41
|
+
}
|
|
42
|
+
return meta;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=createMetaData.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createMetaData.js","sourceRoot":"","sources":["../../src/guillotine/createMetaData.ts"],"names":[],"mappings":"AAOA,OAAO,EAAc,eAAe,EAAC,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAC,iBAAiB,EAAC,MAAM,6BAA6B,CAAC;AAG9D,MAAM,UAAU,cAAc,CAAC,EAC3B,MAAM,EACN,OAAO,EACP,UAAU,GAAG,EAAE,EAAE,qCAAqC;AACtD,WAAW,EACX,WAAW,EACX,aAAa,EACb,MAAM,EACN,OAAO,EAAE,WAAW;AACpB,UAAU,EACV,sBAAsB,EACtB,WAAW,GAad;;IACG,wDAAwD;IACxD,+DAA+D;IAC/D,qFAAqF;IACrF,MAAM,IAAI,GAAa;QACnB,MAAM;QACN,OAAO;QACP,SAAS,EAAE,KAAK;QAChB,QAAQ,EAAE,KAAK,EAAE,iDAAiD;QAClE,aAAa;QACb,MAAM;QACN,IAAI,EAAE,WAAW;QACjB,UAAU,EAAE,UAAU;QACtB,WAAW,EAAE,WAAW;QACxB,IAAI,EAAE,WAAW;KACpB,CAAC;IAEF,IAAI,sBAAsB,EAAE,CAAC;QACzB,IAAI,CAAC,kBAAkB,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,sBAAsB,CAAC,CAAC;IAC1F,CAAC;IAED,MAAM,QAAQ,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,0CAAE,UAAU,CAAC;IAC3C,MAAM,OAAO,GAAG,iBAAiB,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;IAC9D,IAAI,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,KAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IAC1B,CAAC;SAAM,IAAI,WAAW,KAAK,eAAe,CAAC,SAAS,EAAE,CAAC;QACnD,qEAAqE;QACrE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IAC1B,CAAC;SAAM,IAAI,QAAQ,EAAE,CAAC;QAClB,kFAAkF;QAClF,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IAC1B,CAAC;SAAM,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACzB,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC"}
|
|
@@ -1,47 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { ContentPathItem, Context, ProjectLocaleConfig } from '../utils';
|
|
3
|
-
type Result = {
|
|
4
|
-
error?: {
|
|
5
|
-
code: string;
|
|
6
|
-
message: string;
|
|
7
|
-
} | null;
|
|
8
|
-
};
|
|
9
|
-
export type GuillotineResult = Result & {
|
|
10
|
-
[dataKey: string]: any;
|
|
11
|
-
};
|
|
12
|
-
export type FetchContentResult = Result & {
|
|
13
|
-
data: Record<string, any> | null;
|
|
14
|
-
common: Record<string, any> | null;
|
|
15
|
-
meta: MetaData;
|
|
16
|
-
page: PageComponent | null;
|
|
17
|
-
};
|
|
18
|
-
/**
|
|
19
|
-
* 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.
|
|
20
|
-
* @param contentPath string or string array: pre-split or slash-delimited _path to a content available on the API
|
|
21
|
-
* @returns FetchContentResult object: {data?: T, error?: {code, message}}
|
|
22
|
-
*/
|
|
23
|
-
export type ContentFetcher = (context: Context) => Promise<FetchContentResult>;
|
|
24
|
-
export type ContentApiBaseBody = {
|
|
25
|
-
query?: string;
|
|
26
|
-
variables?: {
|
|
27
|
-
path?: string;
|
|
28
|
-
[key: string]: string | number | undefined;
|
|
29
|
-
};
|
|
30
|
-
};
|
|
31
|
-
/** Generic fetch */
|
|
32
|
-
export declare const fetchFromApi: (apiUrl: string, body: ContentApiBaseBody, projectConfig: ProjectLocaleConfig, headers?: {}, method?: string) => Promise<any>;
|
|
33
|
-
/** Guillotine-specialized fetch, using the generic fetch above */
|
|
34
|
-
export declare const fetchGuillotine: (contentApiUrl: string, body: ContentApiBaseBody, projectConfig: ProjectLocaleConfig, headers?: {}) => Promise<GuillotineResult>;
|
|
1
|
+
import type { ContentFetcher } from '../types';
|
|
35
2
|
/**
|
|
36
3
|
* Default fetchContent function, built with params from imports.
|
|
37
4
|
* It runs custom content-type-specific guillotine calls against an XP guillotine endpoint, returns content data, error and some meta data
|
|
38
5
|
* 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.
|
|
39
|
-
* @param contentPath string or string array: local (site-relative) path to a content available on the API (by XP _path - obtainable by running contentPath through getXpPath). Pre-split into string array, or already a slash-delimited string.
|
|
40
6
|
* @param context object from Next, contains .query info
|
|
41
7
|
* @returns FetchContentResult object: {data?: T, error?: {code, message}}
|
|
42
8
|
*/
|
|
43
9
|
export declare const fetchContent: ContentFetcher;
|
|
44
|
-
export declare function validateData(props: FetchContentResult): void;
|
|
45
|
-
export declare function fetchContentPathsForAllLocales(path: string, query?: string, countPerLocale?: number): Promise<ContentPathItem[]>;
|
|
46
|
-
export declare function fetchContentPathsForLocale(path: string, config: ProjectLocaleConfig, query?: string, count?: number): Promise<ContentPathItem[]>;
|
|
47
|
-
export {};
|