@sitecore-content-sdk/nextjs 1.3.0-canary.9 → 1.4.0-canary.2
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/README.md +11 -11
- package/dist/cjs/client/index.js +10 -10
- package/dist/cjs/client/models.js +2 -2
- package/dist/cjs/client/sitecore-nextjs-client.js +160 -156
- package/dist/cjs/components/BYOCWrapper.js +31 -30
- package/dist/cjs/components/ComponentPropsContext.js +66 -59
- package/dist/cjs/components/FEaaSWrapper.js +33 -32
- package/dist/cjs/components/Link.js +117 -90
- package/dist/cjs/components/NextImage.js +66 -62
- package/dist/cjs/components/Placeholder.js +55 -50
- package/dist/cjs/components/RichText.js +133 -128
- package/dist/cjs/config/define-config.js +26 -25
- package/dist/cjs/config/index.js +5 -5
- package/dist/cjs/config-cli/define-cli-config.js +40 -39
- package/dist/cjs/config-cli/index.js +5 -5
- package/dist/cjs/editing/codegen/import-map.js +129 -118
- package/dist/cjs/editing/codegen/index.js +6 -6
- package/dist/cjs/editing/constants.js +10 -10
- package/dist/cjs/editing/editing-config-middleware.js +70 -69
- package/dist/cjs/editing/editing-render-middleware.js +145 -144
- package/dist/cjs/editing/feaas-render-middleware.js +102 -101
- package/dist/cjs/editing/index.js +19 -19
- package/dist/cjs/editing/render-middleware.js +46 -46
- package/dist/cjs/editing/utils.js +260 -257
- package/dist/cjs/index.js +132 -131
- package/dist/cjs/middleware/app-router-multisite-middleware.js +41 -20
- package/dist/cjs/middleware/index.js +30 -30
- package/dist/cjs/middleware/locale-middleware.js +85 -84
- package/dist/cjs/middleware/middleware.js +195 -192
- package/dist/cjs/middleware/multisite-middleware.js +141 -118
- package/dist/cjs/middleware/personalize-middleware.js +240 -236
- package/dist/cjs/middleware/redirects-middleware.js +323 -297
- package/dist/cjs/middleware/robots-middleware.js +45 -44
- package/dist/cjs/middleware/sitemap-middleware.js +50 -49
- package/dist/cjs/monitoring/healthcheck-middleware.js +31 -30
- package/dist/cjs/monitoring/index.js +5 -5
- package/dist/cjs/route-handler/editing-config-route-handler.js +110 -106
- package/dist/cjs/route-handler/editing-render-route-handler.js +270 -165
- package/dist/cjs/route-handler/index.js +11 -11
- package/dist/cjs/route-handler/robots-route-handler.js +69 -68
- package/dist/cjs/route-handler/sitemap-route-handler.js +66 -65
- package/dist/cjs/search/index.js +17 -0
- package/dist/cjs/services/component-props-service.js +142 -138
- package/dist/cjs/sharedTypes/component-props.js +2 -2
- package/dist/cjs/sharedTypes/sitecore-page-props.js +2 -2
- package/dist/cjs/site/index.js +5 -5
- package/dist/cjs/tools/codegen/import-map.js +15 -0
- package/dist/cjs/tools/component-props.loader.js +95 -95
- package/dist/cjs/tools/generate-map.js +317 -317
- package/dist/cjs/tools/index.js +14 -13
- package/dist/cjs/tools/templating/byoc-component.js +36 -36
- package/dist/cjs/tools/templating/constants.js +7 -7
- package/dist/cjs/tools/templating/default-component.js +35 -35
- package/dist/cjs/tools/templating/utils.js +200 -0
- package/dist/cjs/utils/index.js +14 -14
- package/dist/cjs/utils/utils.js +82 -73
- package/dist/esm/client/index.js +2 -2
- package/dist/esm/client/models.js +1 -1
- package/dist/esm/client/sitecore-nextjs-client.js +156 -152
- package/dist/esm/components/BYOCWrapper.js +27 -26
- package/dist/esm/components/ComponentPropsContext.js +28 -21
- package/dist/esm/components/FEaaSWrapper.js +29 -28
- package/dist/esm/components/Link.js +78 -51
- package/dist/esm/components/NextImage.js +60 -56
- package/dist/esm/components/Placeholder.js +18 -13
- package/dist/esm/components/RichText.js +96 -91
- package/dist/esm/config/define-config.js +21 -20
- package/dist/esm/config/index.js +1 -1
- package/dist/esm/config-cli/define-cli-config.js +36 -35
- package/dist/esm/config-cli/index.js +1 -1
- package/dist/esm/editing/codegen/import-map.js +92 -81
- package/dist/esm/editing/codegen/index.js +1 -1
- package/dist/esm/editing/constants.js +7 -7
- package/dist/esm/editing/editing-config-middleware.js +66 -65
- package/dist/esm/editing/editing-render-middleware.js +141 -140
- package/dist/esm/editing/feaas-render-middleware.js +98 -97
- package/dist/esm/editing/index.js +6 -6
- package/dist/esm/editing/render-middleware.js +42 -42
- package/dist/esm/editing/utils.js +246 -243
- package/dist/esm/index.js +25 -25
- package/dist/esm/middleware/app-router-multisite-middleware.js +37 -16
- package/dist/esm/middleware/index.js +11 -11
- package/dist/esm/middleware/locale-middleware.js +81 -80
- package/dist/esm/middleware/middleware.js +189 -186
- package/dist/esm/middleware/multisite-middleware.js +137 -114
- package/dist/esm/middleware/personalize-middleware.js +236 -232
- package/dist/esm/middleware/redirects-middleware.js +316 -290
- package/dist/esm/middleware/robots-middleware.js +41 -40
- package/dist/esm/middleware/sitemap-middleware.js +46 -45
- package/dist/esm/monitoring/healthcheck-middleware.js +27 -26
- package/dist/esm/monitoring/index.js +1 -1
- package/dist/esm/route-handler/editing-config-route-handler.js +106 -102
- package/dist/esm/route-handler/editing-render-route-handler.js +265 -160
- package/dist/esm/route-handler/index.js +4 -4
- package/dist/esm/route-handler/robots-route-handler.js +65 -64
- package/dist/esm/route-handler/sitemap-route-handler.js +63 -62
- package/dist/esm/search/index.js +1 -0
- package/dist/esm/services/component-props-service.js +135 -131
- package/dist/esm/sharedTypes/component-props.js +1 -1
- package/dist/esm/sharedTypes/sitecore-page-props.js +1 -1
- package/dist/esm/site/index.js +1 -1
- package/dist/esm/tools/codegen/import-map.js +11 -0
- package/dist/esm/tools/component-props.loader.js +59 -59
- package/dist/esm/tools/generate-map.js +279 -279
- package/dist/esm/tools/index.js +3 -2
- package/dist/esm/tools/templating/byoc-component.js +30 -30
- package/dist/esm/tools/templating/constants.js +4 -4
- package/dist/esm/tools/templating/default-component.js +29 -29
- package/dist/esm/tools/templating/utils.js +190 -0
- package/dist/esm/utils/index.js +3 -3
- package/dist/esm/utils/utils.js +74 -65
- package/package.json +87 -13
- package/search.d.ts +1 -0
- package/types/client/index.d.ts +3 -2
- package/types/client/index.d.ts.map +1 -0
- package/types/client/models.d.ts +9 -8
- package/types/client/models.d.ts.map +1 -0
- package/types/client/sitecore-nextjs-client.d.ts +68 -63
- package/types/client/sitecore-nextjs-client.d.ts.map +1 -0
- package/types/components/BYOCWrapper.d.ts +16 -14
- package/types/components/BYOCWrapper.d.ts.map +1 -0
- package/types/components/ComponentPropsContext.d.ts +30 -18
- package/types/components/ComponentPropsContext.d.ts.map +1 -0
- package/types/components/FEaaSWrapper.d.ts +17 -15
- package/types/components/FEaaSWrapper.d.ts.map +1 -0
- package/types/components/Link.d.ts +25 -15
- package/types/components/Link.d.ts.map +1 -0
- package/types/components/NextImage.d.ts +11 -6
- package/types/components/NextImage.d.ts.map +1 -0
- package/types/components/Placeholder.d.ts +14 -8
- package/types/components/Placeholder.d.ts.map +1 -0
- package/types/components/RichText.d.ts +35 -25
- package/types/components/RichText.d.ts.map +1 -0
- package/types/config/define-config.d.ts +42 -38
- package/types/config/define-config.d.ts.map +1 -0
- package/types/config/index.d.ts +2 -1
- package/types/config/index.d.ts.map +1 -0
- package/types/config-cli/define-cli-config.d.ts +10 -8
- package/types/config-cli/define-cli-config.d.ts.map +1 -0
- package/types/config-cli/index.d.ts +2 -1
- package/types/config-cli/index.d.ts.map +1 -0
- package/types/editing/codegen/import-map.d.ts +15 -3
- package/types/editing/codegen/import-map.d.ts.map +1 -0
- package/types/editing/codegen/index.d.ts +3 -2
- package/types/editing/codegen/index.d.ts.map +1 -0
- package/types/editing/constants.d.ts +8 -7
- package/types/editing/constants.d.ts.map +1 -0
- package/types/editing/editing-config-middleware.d.ts +37 -31
- package/types/editing/editing-config-middleware.d.ts.map +1 -0
- package/types/editing/editing-render-middleware.d.ts +47 -44
- package/types/editing/editing-render-middleware.d.ts.map +1 -0
- package/types/editing/feaas-render-middleware.d.ts +35 -32
- package/types/editing/feaas-render-middleware.d.ts.map +1 -0
- package/types/editing/index.d.ts +7 -6
- package/types/editing/index.d.ts.map +1 -0
- package/types/editing/render-middleware.d.ts +26 -25
- package/types/editing/render-middleware.d.ts.map +1 -0
- package/types/editing/utils.d.ts +110 -106
- package/types/editing/utils.d.ts.map +1 -0
- package/types/index.d.ts +25 -24
- package/types/index.d.ts.map +1 -0
- package/types/middleware/app-router-multisite-middleware.d.ts +28 -13
- package/types/middleware/app-router-multisite-middleware.d.ts.map +1 -0
- package/types/middleware/index.d.ts +12 -11
- package/types/middleware/index.d.ts.map +1 -0
- package/types/middleware/locale-middleware.d.ts +35 -32
- package/types/middleware/locale-middleware.d.ts.map +1 -0
- package/types/middleware/middleware.d.ts +135 -127
- package/types/middleware/middleware.d.ts.map +1 -0
- package/types/middleware/multisite-middleware.d.ts +54 -37
- package/types/middleware/multisite-middleware.d.ts.map +1 -0
- package/types/middleware/personalize-middleware.d.ts +81 -65
- package/types/middleware/personalize-middleware.d.ts.map +1 -0
- package/types/middleware/redirects-middleware.d.ts +68 -65
- package/types/middleware/redirects-middleware.d.ts.map +1 -0
- package/types/middleware/robots-middleware.d.ts +15 -13
- package/types/middleware/robots-middleware.d.ts.map +1 -0
- package/types/middleware/sitemap-middleware.d.ts +16 -14
- package/types/middleware/sitemap-middleware.d.ts.map +1 -0
- package/types/monitoring/healthcheck-middleware.d.ts +14 -12
- package/types/monitoring/healthcheck-middleware.d.ts.map +1 -0
- package/types/monitoring/index.d.ts +2 -1
- package/types/monitoring/index.d.ts.map +1 -0
- package/types/route-handler/editing-config-route-handler.d.ts +30 -24
- package/types/route-handler/editing-config-route-handler.d.ts.map +1 -0
- package/types/route-handler/editing-render-route-handler.d.ts +33 -25
- package/types/route-handler/editing-render-route-handler.d.ts.map +1 -0
- package/types/route-handler/index.d.ts +5 -4
- package/types/route-handler/index.d.ts.map +1 -0
- package/types/route-handler/robots-route-handler.d.ts +30 -28
- package/types/route-handler/robots-route-handler.d.ts.map +1 -0
- package/types/route-handler/sitemap-route-handler.d.ts +30 -28
- package/types/route-handler/sitemap-route-handler.d.ts.map +1 -0
- package/types/search/index.d.ts +2 -0
- package/types/search/index.d.ts.map +1 -0
- package/types/services/component-props-service.d.ts +62 -57
- package/types/services/component-props-service.d.ts.map +1 -0
- package/types/sharedTypes/component-props.d.ts +62 -47
- package/types/sharedTypes/component-props.d.ts.map +1 -0
- package/types/sharedTypes/sitecore-page-props.d.ts +14 -9
- package/types/sharedTypes/sitecore-page-props.d.ts.map +1 -0
- package/types/site/index.d.ts +2 -1
- package/types/site/index.d.ts.map +1 -0
- package/types/tools/codegen/import-map.d.ts +10 -0
- package/types/tools/codegen/import-map.d.ts.map +1 -0
- package/types/tools/component-props.loader.d.ts +8 -7
- package/types/tools/component-props.loader.d.ts.map +1 -0
- package/types/tools/generate-map.d.ts +26 -24
- package/types/tools/generate-map.d.ts.map +1 -0
- package/types/tools/index.d.ts +4 -2
- package/types/tools/index.d.ts.map +1 -0
- package/types/tools/templating/byoc-component.d.ts +3 -2
- package/types/tools/templating/byoc-component.d.ts.map +1 -0
- package/types/tools/templating/constants.d.ts +5 -4
- package/types/tools/templating/constants.d.ts.map +1 -0
- package/types/tools/templating/default-component.d.ts +3 -2
- package/types/tools/templating/default-component.d.ts.map +1 -0
- package/types/tools/templating/utils.d.ts +44 -0
- package/types/tools/templating/utils.d.ts.map +1 -0
- package/types/utils/index.d.ts +4 -3
- package/types/utils/index.d.ts.map +1 -0
- package/types/utils/utils.d.ts +34 -24
- package/types/utils/utils.d.ts.map +1 -0
- package/client.js +0 -1
- package/codegen.js +0 -1
- package/config-cli.js +0 -1
- package/config.js +0 -1
- package/editing.js +0 -1
- package/middleware.js +0 -1
- package/monitoring.js +0 -1
- package/route-handler.js +0 -1
- package/site.js +0 -1
- package/tools.js +0 -1
- package/utils.js +0 -1
|
@@ -1,62 +1,63 @@
|
|
|
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 { SiteResolver } from "@sitecore-content-sdk/core/site";
|
|
11
|
-
import { debug } from "@sitecore-content-sdk/core";
|
|
12
|
-
import { unstable_cache } from "next/cache";
|
|
13
|
-
/**
|
|
14
|
-
* Creates a route handler to serve the sitemap.xml file.
|
|
15
|
-
* @param {RouteHandlerOptions} options - The options for the route handler.
|
|
16
|
-
* @returns The route handler.
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
const
|
|
21
|
-
const
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
const
|
|
25
|
-
const
|
|
26
|
-
const
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
const
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
console.log(
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
}
|
|
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 { SiteResolver } from "@sitecore-content-sdk/core/site";
|
|
11
|
+
import { debug } from "@sitecore-content-sdk/core";
|
|
12
|
+
import { unstable_cache } from "next/cache";
|
|
13
|
+
/**
|
|
14
|
+
* Creates a route handler to serve the sitemap.xml file.
|
|
15
|
+
* @param {RouteHandlerOptions} options - The options for the route handler.
|
|
16
|
+
* @returns The route handler.
|
|
17
|
+
* @public
|
|
18
|
+
*/
|
|
19
|
+
export function createSitemapRouteHandler(options) {
|
|
20
|
+
const { client, sites, revalidate = 60 } = options;
|
|
21
|
+
const siteResolver = new SiteResolver(sites);
|
|
22
|
+
const getOptions = (req) => {
|
|
23
|
+
var _a;
|
|
24
|
+
const id = ((_a = req.nextUrl.pathname.match(/^\/sitemap-(\d+)\.xml$/i)) === null || _a === void 0 ? void 0 : _a[1]) || '';
|
|
25
|
+
const reqHost = req.headers.get('host') || '';
|
|
26
|
+
const reqProtocol = req.headers.get('x-forwarded-proto') || 'https';
|
|
27
|
+
const site = siteResolver.getByHost(reqHost);
|
|
28
|
+
return { reqHost, reqProtocol, id, siteName: site.name };
|
|
29
|
+
};
|
|
30
|
+
const getSitemap = unstable_cache((options) => __awaiter(this, void 0, void 0, function* () {
|
|
31
|
+
return client.getSiteMap(options);
|
|
32
|
+
}), ['sitemap'], {
|
|
33
|
+
revalidate,
|
|
34
|
+
tags: ['sitemap'],
|
|
35
|
+
});
|
|
36
|
+
const GET = (req) => __awaiter(this, void 0, void 0, function* () {
|
|
37
|
+
try {
|
|
38
|
+
const startTimestamp = Date.now();
|
|
39
|
+
const options = getOptions(req);
|
|
40
|
+
debug.sitemap('sitemap route handler start: %o', {
|
|
41
|
+
options,
|
|
42
|
+
});
|
|
43
|
+
const xml = yield getSitemap(options);
|
|
44
|
+
debug.sitemap('sitemap route handler end in %dms', Date.now() - startTimestamp);
|
|
45
|
+
return new Response(xml, {
|
|
46
|
+
headers: {
|
|
47
|
+
'Content-Type': 'text/xml;charset=utf-8',
|
|
48
|
+
},
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
console.log('Sitemap route handler failed:');
|
|
53
|
+
console.log(error);
|
|
54
|
+
if (error instanceof Error && error.message === 'REDIRECT_404') {
|
|
55
|
+
return new Response('Not Found', { status: 404 });
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
return new Response('Internal Server Error', { status: 500 });
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
return { GET };
|
|
63
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from '@sitecore-content-sdk/react/search';
|
|
@@ -1,131 +1,135 @@
|
|
|
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 chalk from 'chalk';
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
* @param {
|
|
33
|
-
* @param {
|
|
34
|
-
* @
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
.
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
.
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
*
|
|
104
|
-
*
|
|
105
|
-
*
|
|
106
|
-
*
|
|
107
|
-
*
|
|
108
|
-
*
|
|
109
|
-
*
|
|
110
|
-
*
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
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 chalk from 'chalk';
|
|
11
|
+
/**
|
|
12
|
+
* The service for fetching component props.
|
|
13
|
+
* @public
|
|
14
|
+
*/
|
|
15
|
+
export class ComponentPropsService {
|
|
16
|
+
fetchComponentProps(params) {
|
|
17
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
18
|
+
var _a;
|
|
19
|
+
const { layoutData, context, components } = params;
|
|
20
|
+
const requests = yield this.collectRequests({
|
|
21
|
+
placeholders: (_a = layoutData.sitecore.route) === null || _a === void 0 ? void 0 : _a.placeholders,
|
|
22
|
+
components,
|
|
23
|
+
layoutData,
|
|
24
|
+
context,
|
|
25
|
+
});
|
|
26
|
+
return yield this.execRequests(requests);
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Go through layout service data, check all renderings using displayName, which should make some side effects.
|
|
31
|
+
* Write result in requests variable
|
|
32
|
+
* @param {object} params params
|
|
33
|
+
* @param {PlaceholdersData} [params.placeholders]
|
|
34
|
+
* @param {ComponentMap} params.components
|
|
35
|
+
* @param {LayoutServiceData} params.layoutData
|
|
36
|
+
* @param {NextContext} params.context
|
|
37
|
+
* @param {ComponentPropsRequest[]} params.requests
|
|
38
|
+
* @returns {ComponentPropsRequest[]} array of requests
|
|
39
|
+
*/
|
|
40
|
+
collectRequests(params) {
|
|
41
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
42
|
+
const { placeholders = {}, components, layoutData, context } = params;
|
|
43
|
+
// Will be called on first round
|
|
44
|
+
if (!params.requests) {
|
|
45
|
+
params.requests = [];
|
|
46
|
+
}
|
|
47
|
+
const renderings = this.flatRenderings(placeholders);
|
|
48
|
+
const actions = renderings.map((r) => __awaiter(this, void 0, void 0, function* () {
|
|
49
|
+
var _a;
|
|
50
|
+
const fetchFunc = (_a = (yield this.getModule(components, r.componentName))) === null || _a === void 0 ? void 0 : _a.getComponentServerProps;
|
|
51
|
+
if (fetchFunc) {
|
|
52
|
+
params.requests &&
|
|
53
|
+
params.requests.push({
|
|
54
|
+
fetch: fetchFunc,
|
|
55
|
+
rendering: r,
|
|
56
|
+
layoutData: layoutData,
|
|
57
|
+
context,
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
// If placeholders exist in current rendering
|
|
61
|
+
if (r.placeholders) {
|
|
62
|
+
yield this.collectRequests(Object.assign(Object.assign({}, params), { placeholders: r.placeholders }));
|
|
63
|
+
}
|
|
64
|
+
}));
|
|
65
|
+
yield Promise.all(actions);
|
|
66
|
+
return params.requests;
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Execute request for component props
|
|
71
|
+
* @param {ComponentPropsRequest[]} requests requests
|
|
72
|
+
* @returns {Promise<ComponentPropsCollection>} requests result
|
|
73
|
+
*/
|
|
74
|
+
execRequests(requests) {
|
|
75
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
76
|
+
const componentProps = {};
|
|
77
|
+
const promises = requests.map((req) => {
|
|
78
|
+
const { uid } = req.rendering;
|
|
79
|
+
if (!uid) {
|
|
80
|
+
console.log(`Component ${req.rendering.componentName} doesn't have uid, can't store data for this component`);
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
return req
|
|
84
|
+
.fetch(req.rendering, req.layoutData, req.context)
|
|
85
|
+
.then((result) => {
|
|
86
|
+
// Set component specific data in componentProps store
|
|
87
|
+
componentProps[uid] = result;
|
|
88
|
+
})
|
|
89
|
+
.catch((error) => {
|
|
90
|
+
const errLog = `Error during preload data for component ${req.rendering.componentName} (${uid}): ${error.message || error}`;
|
|
91
|
+
console.error(chalk.red(errLog));
|
|
92
|
+
componentProps[uid] = {
|
|
93
|
+
error: error.message || errLog,
|
|
94
|
+
componentName: req.rendering.componentName,
|
|
95
|
+
};
|
|
96
|
+
});
|
|
97
|
+
});
|
|
98
|
+
yield Promise.all(promises);
|
|
99
|
+
return componentProps;
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Take renderings from all placeholders and returns a flat array of renderings.
|
|
104
|
+
* @example
|
|
105
|
+
* const placeholders = {
|
|
106
|
+
* x1: [{ uid: 1 }, { uid: 2 }],
|
|
107
|
+
* x2: [{ uid: 11 }, { uid: 22 }]
|
|
108
|
+
* }
|
|
109
|
+
*
|
|
110
|
+
* flatRenderings(placeholders);
|
|
111
|
+
*
|
|
112
|
+
* RESULT: [{ uid: 1 }, { uid: 2 }, { uid: 11 }, { uid: 22 }]
|
|
113
|
+
* @param {PlaceholdersData} placeholders placeholders
|
|
114
|
+
* @returns {ComponentRendering[]} renderings
|
|
115
|
+
*/
|
|
116
|
+
flatRenderings(placeholders) {
|
|
117
|
+
const allComponentRenderings = [];
|
|
118
|
+
const placeholdersArr = Object.values(placeholders);
|
|
119
|
+
placeholdersArr.forEach((pl) => {
|
|
120
|
+
const renderings = pl;
|
|
121
|
+
allComponentRenderings.push(...renderings);
|
|
122
|
+
});
|
|
123
|
+
return allComponentRenderings;
|
|
124
|
+
}
|
|
125
|
+
getModule(components, componentName) {
|
|
126
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
127
|
+
var _a;
|
|
128
|
+
const component = components.get(componentName);
|
|
129
|
+
if (!component)
|
|
130
|
+
return null;
|
|
131
|
+
const module = component.dynamicModule ? yield ((_a = component === null || component === void 0 ? void 0 : component.dynamicModule) === null || _a === void 0 ? void 0 : _a.call(component)) : component;
|
|
132
|
+
return module;
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export {};
|
|
1
|
+
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export {};
|
|
1
|
+
export {};
|
package/dist/esm/site/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { SiteResolver } from '@sitecore-content-sdk/core/site';
|
|
1
|
+
export { SiteResolver } from '@sitecore-content-sdk/core/site';
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { writeImportMap as writeImportMapCore, } from '@sitecore-content-sdk/core/tools';
|
|
2
|
+
import { detectRouterType, nextjsClientMapTemplate, nextjsDefaultMapTemplate, } from '../templating/utils';
|
|
3
|
+
/**
|
|
4
|
+
* Entry point function for generating import-map. Parses provided paths and outputs the modules and imports from those files into .sitecore/import-map.ts
|
|
5
|
+
* @param {WriteImportMapArgs} args include/exclude paths settings to be processed for import-map, and the Sitecore configuration.
|
|
6
|
+
* @public
|
|
7
|
+
*/
|
|
8
|
+
export const writeImportMap = (args) => {
|
|
9
|
+
const separateServerClientMaps = detectRouterType() === 'app';
|
|
10
|
+
return writeImportMapCore(Object.assign(Object.assign({}, args), { separateServerClientMaps, serverTemplate: nextjsDefaultMapTemplate, clientTemplate: nextjsClientMapTemplate }));
|
|
11
|
+
};
|
|
@@ -1,59 +1,59 @@
|
|
|
1
|
-
import * as recast from 'recast';
|
|
2
|
-
/**
|
|
3
|
-
* Webpack loader to strip functions from the source code
|
|
4
|
-
* Strips the `getComponentServerProps` function from the source code
|
|
5
|
-
* @param {string} source file source code
|
|
6
|
-
* @returns {string} output file source code with stripped functions
|
|
7
|
-
*/
|
|
8
|
-
export default function componentPropsLoader(source) {
|
|
9
|
-
// Parse the source code into an AST (Abstract Syntax Tree)
|
|
10
|
-
const ast = recast.parse(source, {
|
|
11
|
-
parser: require('recast/parsers/babel-ts'),
|
|
12
|
-
});
|
|
13
|
-
// The method to strip from the AST
|
|
14
|
-
const method = 'getComponentServerProps';
|
|
15
|
-
// Traverse the AST and find the method to strip
|
|
16
|
-
recast.visit(ast, {
|
|
17
|
-
// Visit the named export function expression
|
|
18
|
-
visitExportNamedDeclaration: function (path) {
|
|
19
|
-
var _a, _b;
|
|
20
|
-
// Get the variable declaration from the AST
|
|
21
|
-
const isMethodFound = (_b = (_a = path.node.declaration) === null || _a === void 0 ? void 0 : _a.declarations) === null || _b === void 0 ? void 0 : _b.find((declaration) => {
|
|
22
|
-
// Check if the function is the one we want to strip
|
|
23
|
-
if ('id' in declaration &&
|
|
24
|
-
'name' in declaration.id &&
|
|
25
|
-
typeof declaration.id.name === 'string' &&
|
|
26
|
-
declaration.id.name === method) {
|
|
27
|
-
// Strip the function from the AST
|
|
28
|
-
path.prune();
|
|
29
|
-
// We have pruned the method, so we can stop iterating over the declarations
|
|
30
|
-
return true;
|
|
31
|
-
}
|
|
32
|
-
return false;
|
|
33
|
-
});
|
|
34
|
-
if (isMethodFound) {
|
|
35
|
-
// We have pruned the method, so we can stop traversing the AST
|
|
36
|
-
return false;
|
|
37
|
-
}
|
|
38
|
-
// Continue traversing the AST
|
|
39
|
-
this.traverse(path);
|
|
40
|
-
},
|
|
41
|
-
// Visit the named export function declaration
|
|
42
|
-
visitFunctionDeclaration: function (path) {
|
|
43
|
-
// Check if the function is the one we want to strip
|
|
44
|
-
if (path.node.id &&
|
|
45
|
-
'name' in path.node.id &&
|
|
46
|
-
typeof path.node.id.name === 'string' &&
|
|
47
|
-
path.node.id.name === method) {
|
|
48
|
-
// Strip the function from the AST
|
|
49
|
-
path.prune();
|
|
50
|
-
// We have pruned the method, so we can stop traversing the AST
|
|
51
|
-
return false;
|
|
52
|
-
}
|
|
53
|
-
// Continue traversing the AST
|
|
54
|
-
this.traverse(path);
|
|
55
|
-
},
|
|
56
|
-
});
|
|
57
|
-
// Generate the output code
|
|
58
|
-
return recast.print(ast).code;
|
|
59
|
-
}
|
|
1
|
+
import * as recast from 'recast';
|
|
2
|
+
/**
|
|
3
|
+
* Webpack loader to strip functions from the source code
|
|
4
|
+
* Strips the `getComponentServerProps` function from the source code
|
|
5
|
+
* @param {string} source file source code
|
|
6
|
+
* @returns {string} output file source code with stripped functions
|
|
7
|
+
*/
|
|
8
|
+
export default function componentPropsLoader(source) {
|
|
9
|
+
// Parse the source code into an AST (Abstract Syntax Tree)
|
|
10
|
+
const ast = recast.parse(source, {
|
|
11
|
+
parser: require('recast/parsers/babel-ts'),
|
|
12
|
+
});
|
|
13
|
+
// The method to strip from the AST
|
|
14
|
+
const method = 'getComponentServerProps';
|
|
15
|
+
// Traverse the AST and find the method to strip
|
|
16
|
+
recast.visit(ast, {
|
|
17
|
+
// Visit the named export function expression
|
|
18
|
+
visitExportNamedDeclaration: function (path) {
|
|
19
|
+
var _a, _b;
|
|
20
|
+
// Get the variable declaration from the AST
|
|
21
|
+
const isMethodFound = (_b = (_a = path.node.declaration) === null || _a === void 0 ? void 0 : _a.declarations) === null || _b === void 0 ? void 0 : _b.find((declaration) => {
|
|
22
|
+
// Check if the function is the one we want to strip
|
|
23
|
+
if ('id' in declaration &&
|
|
24
|
+
'name' in declaration.id &&
|
|
25
|
+
typeof declaration.id.name === 'string' &&
|
|
26
|
+
declaration.id.name === method) {
|
|
27
|
+
// Strip the function from the AST
|
|
28
|
+
path.prune();
|
|
29
|
+
// We have pruned the method, so we can stop iterating over the declarations
|
|
30
|
+
return true;
|
|
31
|
+
}
|
|
32
|
+
return false;
|
|
33
|
+
});
|
|
34
|
+
if (isMethodFound) {
|
|
35
|
+
// We have pruned the method, so we can stop traversing the AST
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
// Continue traversing the AST
|
|
39
|
+
this.traverse(path);
|
|
40
|
+
},
|
|
41
|
+
// Visit the named export function declaration
|
|
42
|
+
visitFunctionDeclaration: function (path) {
|
|
43
|
+
// Check if the function is the one we want to strip
|
|
44
|
+
if (path.node.id &&
|
|
45
|
+
'name' in path.node.id &&
|
|
46
|
+
typeof path.node.id.name === 'string' &&
|
|
47
|
+
path.node.id.name === method) {
|
|
48
|
+
// Strip the function from the AST
|
|
49
|
+
path.prune();
|
|
50
|
+
// We have pruned the method, so we can stop traversing the AST
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
// Continue traversing the AST
|
|
54
|
+
this.traverse(path);
|
|
55
|
+
},
|
|
56
|
+
});
|
|
57
|
+
// Generate the output code
|
|
58
|
+
return recast.print(ast).code;
|
|
59
|
+
}
|