@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.
Files changed (234) hide show
  1. package/README.md +11 -11
  2. package/dist/cjs/client/index.js +10 -10
  3. package/dist/cjs/client/models.js +2 -2
  4. package/dist/cjs/client/sitecore-nextjs-client.js +160 -156
  5. package/dist/cjs/components/BYOCWrapper.js +31 -30
  6. package/dist/cjs/components/ComponentPropsContext.js +66 -59
  7. package/dist/cjs/components/FEaaSWrapper.js +33 -32
  8. package/dist/cjs/components/Link.js +117 -90
  9. package/dist/cjs/components/NextImage.js +66 -62
  10. package/dist/cjs/components/Placeholder.js +55 -50
  11. package/dist/cjs/components/RichText.js +133 -128
  12. package/dist/cjs/config/define-config.js +26 -25
  13. package/dist/cjs/config/index.js +5 -5
  14. package/dist/cjs/config-cli/define-cli-config.js +40 -39
  15. package/dist/cjs/config-cli/index.js +5 -5
  16. package/dist/cjs/editing/codegen/import-map.js +129 -118
  17. package/dist/cjs/editing/codegen/index.js +6 -6
  18. package/dist/cjs/editing/constants.js +10 -10
  19. package/dist/cjs/editing/editing-config-middleware.js +70 -69
  20. package/dist/cjs/editing/editing-render-middleware.js +145 -144
  21. package/dist/cjs/editing/feaas-render-middleware.js +102 -101
  22. package/dist/cjs/editing/index.js +19 -19
  23. package/dist/cjs/editing/render-middleware.js +46 -46
  24. package/dist/cjs/editing/utils.js +260 -257
  25. package/dist/cjs/index.js +132 -131
  26. package/dist/cjs/middleware/app-router-multisite-middleware.js +41 -20
  27. package/dist/cjs/middleware/index.js +30 -30
  28. package/dist/cjs/middleware/locale-middleware.js +85 -84
  29. package/dist/cjs/middleware/middleware.js +195 -192
  30. package/dist/cjs/middleware/multisite-middleware.js +141 -118
  31. package/dist/cjs/middleware/personalize-middleware.js +240 -236
  32. package/dist/cjs/middleware/redirects-middleware.js +323 -297
  33. package/dist/cjs/middleware/robots-middleware.js +45 -44
  34. package/dist/cjs/middleware/sitemap-middleware.js +50 -49
  35. package/dist/cjs/monitoring/healthcheck-middleware.js +31 -30
  36. package/dist/cjs/monitoring/index.js +5 -5
  37. package/dist/cjs/route-handler/editing-config-route-handler.js +110 -106
  38. package/dist/cjs/route-handler/editing-render-route-handler.js +270 -165
  39. package/dist/cjs/route-handler/index.js +11 -11
  40. package/dist/cjs/route-handler/robots-route-handler.js +69 -68
  41. package/dist/cjs/route-handler/sitemap-route-handler.js +66 -65
  42. package/dist/cjs/search/index.js +17 -0
  43. package/dist/cjs/services/component-props-service.js +142 -138
  44. package/dist/cjs/sharedTypes/component-props.js +2 -2
  45. package/dist/cjs/sharedTypes/sitecore-page-props.js +2 -2
  46. package/dist/cjs/site/index.js +5 -5
  47. package/dist/cjs/tools/codegen/import-map.js +15 -0
  48. package/dist/cjs/tools/component-props.loader.js +95 -95
  49. package/dist/cjs/tools/generate-map.js +317 -317
  50. package/dist/cjs/tools/index.js +14 -13
  51. package/dist/cjs/tools/templating/byoc-component.js +36 -36
  52. package/dist/cjs/tools/templating/constants.js +7 -7
  53. package/dist/cjs/tools/templating/default-component.js +35 -35
  54. package/dist/cjs/tools/templating/utils.js +200 -0
  55. package/dist/cjs/utils/index.js +14 -14
  56. package/dist/cjs/utils/utils.js +82 -73
  57. package/dist/esm/client/index.js +2 -2
  58. package/dist/esm/client/models.js +1 -1
  59. package/dist/esm/client/sitecore-nextjs-client.js +156 -152
  60. package/dist/esm/components/BYOCWrapper.js +27 -26
  61. package/dist/esm/components/ComponentPropsContext.js +28 -21
  62. package/dist/esm/components/FEaaSWrapper.js +29 -28
  63. package/dist/esm/components/Link.js +78 -51
  64. package/dist/esm/components/NextImage.js +60 -56
  65. package/dist/esm/components/Placeholder.js +18 -13
  66. package/dist/esm/components/RichText.js +96 -91
  67. package/dist/esm/config/define-config.js +21 -20
  68. package/dist/esm/config/index.js +1 -1
  69. package/dist/esm/config-cli/define-cli-config.js +36 -35
  70. package/dist/esm/config-cli/index.js +1 -1
  71. package/dist/esm/editing/codegen/import-map.js +92 -81
  72. package/dist/esm/editing/codegen/index.js +1 -1
  73. package/dist/esm/editing/constants.js +7 -7
  74. package/dist/esm/editing/editing-config-middleware.js +66 -65
  75. package/dist/esm/editing/editing-render-middleware.js +141 -140
  76. package/dist/esm/editing/feaas-render-middleware.js +98 -97
  77. package/dist/esm/editing/index.js +6 -6
  78. package/dist/esm/editing/render-middleware.js +42 -42
  79. package/dist/esm/editing/utils.js +246 -243
  80. package/dist/esm/index.js +25 -25
  81. package/dist/esm/middleware/app-router-multisite-middleware.js +37 -16
  82. package/dist/esm/middleware/index.js +11 -11
  83. package/dist/esm/middleware/locale-middleware.js +81 -80
  84. package/dist/esm/middleware/middleware.js +189 -186
  85. package/dist/esm/middleware/multisite-middleware.js +137 -114
  86. package/dist/esm/middleware/personalize-middleware.js +236 -232
  87. package/dist/esm/middleware/redirects-middleware.js +316 -290
  88. package/dist/esm/middleware/robots-middleware.js +41 -40
  89. package/dist/esm/middleware/sitemap-middleware.js +46 -45
  90. package/dist/esm/monitoring/healthcheck-middleware.js +27 -26
  91. package/dist/esm/monitoring/index.js +1 -1
  92. package/dist/esm/route-handler/editing-config-route-handler.js +106 -102
  93. package/dist/esm/route-handler/editing-render-route-handler.js +265 -160
  94. package/dist/esm/route-handler/index.js +4 -4
  95. package/dist/esm/route-handler/robots-route-handler.js +65 -64
  96. package/dist/esm/route-handler/sitemap-route-handler.js +63 -62
  97. package/dist/esm/search/index.js +1 -0
  98. package/dist/esm/services/component-props-service.js +135 -131
  99. package/dist/esm/sharedTypes/component-props.js +1 -1
  100. package/dist/esm/sharedTypes/sitecore-page-props.js +1 -1
  101. package/dist/esm/site/index.js +1 -1
  102. package/dist/esm/tools/codegen/import-map.js +11 -0
  103. package/dist/esm/tools/component-props.loader.js +59 -59
  104. package/dist/esm/tools/generate-map.js +279 -279
  105. package/dist/esm/tools/index.js +3 -2
  106. package/dist/esm/tools/templating/byoc-component.js +30 -30
  107. package/dist/esm/tools/templating/constants.js +4 -4
  108. package/dist/esm/tools/templating/default-component.js +29 -29
  109. package/dist/esm/tools/templating/utils.js +190 -0
  110. package/dist/esm/utils/index.js +3 -3
  111. package/dist/esm/utils/utils.js +74 -65
  112. package/package.json +87 -13
  113. package/search.d.ts +1 -0
  114. package/types/client/index.d.ts +3 -2
  115. package/types/client/index.d.ts.map +1 -0
  116. package/types/client/models.d.ts +9 -8
  117. package/types/client/models.d.ts.map +1 -0
  118. package/types/client/sitecore-nextjs-client.d.ts +68 -63
  119. package/types/client/sitecore-nextjs-client.d.ts.map +1 -0
  120. package/types/components/BYOCWrapper.d.ts +16 -14
  121. package/types/components/BYOCWrapper.d.ts.map +1 -0
  122. package/types/components/ComponentPropsContext.d.ts +30 -18
  123. package/types/components/ComponentPropsContext.d.ts.map +1 -0
  124. package/types/components/FEaaSWrapper.d.ts +17 -15
  125. package/types/components/FEaaSWrapper.d.ts.map +1 -0
  126. package/types/components/Link.d.ts +25 -15
  127. package/types/components/Link.d.ts.map +1 -0
  128. package/types/components/NextImage.d.ts +11 -6
  129. package/types/components/NextImage.d.ts.map +1 -0
  130. package/types/components/Placeholder.d.ts +14 -8
  131. package/types/components/Placeholder.d.ts.map +1 -0
  132. package/types/components/RichText.d.ts +35 -25
  133. package/types/components/RichText.d.ts.map +1 -0
  134. package/types/config/define-config.d.ts +42 -38
  135. package/types/config/define-config.d.ts.map +1 -0
  136. package/types/config/index.d.ts +2 -1
  137. package/types/config/index.d.ts.map +1 -0
  138. package/types/config-cli/define-cli-config.d.ts +10 -8
  139. package/types/config-cli/define-cli-config.d.ts.map +1 -0
  140. package/types/config-cli/index.d.ts +2 -1
  141. package/types/config-cli/index.d.ts.map +1 -0
  142. package/types/editing/codegen/import-map.d.ts +15 -3
  143. package/types/editing/codegen/import-map.d.ts.map +1 -0
  144. package/types/editing/codegen/index.d.ts +3 -2
  145. package/types/editing/codegen/index.d.ts.map +1 -0
  146. package/types/editing/constants.d.ts +8 -7
  147. package/types/editing/constants.d.ts.map +1 -0
  148. package/types/editing/editing-config-middleware.d.ts +37 -31
  149. package/types/editing/editing-config-middleware.d.ts.map +1 -0
  150. package/types/editing/editing-render-middleware.d.ts +47 -44
  151. package/types/editing/editing-render-middleware.d.ts.map +1 -0
  152. package/types/editing/feaas-render-middleware.d.ts +35 -32
  153. package/types/editing/feaas-render-middleware.d.ts.map +1 -0
  154. package/types/editing/index.d.ts +7 -6
  155. package/types/editing/index.d.ts.map +1 -0
  156. package/types/editing/render-middleware.d.ts +26 -25
  157. package/types/editing/render-middleware.d.ts.map +1 -0
  158. package/types/editing/utils.d.ts +110 -106
  159. package/types/editing/utils.d.ts.map +1 -0
  160. package/types/index.d.ts +25 -24
  161. package/types/index.d.ts.map +1 -0
  162. package/types/middleware/app-router-multisite-middleware.d.ts +28 -13
  163. package/types/middleware/app-router-multisite-middleware.d.ts.map +1 -0
  164. package/types/middleware/index.d.ts +12 -11
  165. package/types/middleware/index.d.ts.map +1 -0
  166. package/types/middleware/locale-middleware.d.ts +35 -32
  167. package/types/middleware/locale-middleware.d.ts.map +1 -0
  168. package/types/middleware/middleware.d.ts +135 -127
  169. package/types/middleware/middleware.d.ts.map +1 -0
  170. package/types/middleware/multisite-middleware.d.ts +54 -37
  171. package/types/middleware/multisite-middleware.d.ts.map +1 -0
  172. package/types/middleware/personalize-middleware.d.ts +81 -65
  173. package/types/middleware/personalize-middleware.d.ts.map +1 -0
  174. package/types/middleware/redirects-middleware.d.ts +68 -65
  175. package/types/middleware/redirects-middleware.d.ts.map +1 -0
  176. package/types/middleware/robots-middleware.d.ts +15 -13
  177. package/types/middleware/robots-middleware.d.ts.map +1 -0
  178. package/types/middleware/sitemap-middleware.d.ts +16 -14
  179. package/types/middleware/sitemap-middleware.d.ts.map +1 -0
  180. package/types/monitoring/healthcheck-middleware.d.ts +14 -12
  181. package/types/monitoring/healthcheck-middleware.d.ts.map +1 -0
  182. package/types/monitoring/index.d.ts +2 -1
  183. package/types/monitoring/index.d.ts.map +1 -0
  184. package/types/route-handler/editing-config-route-handler.d.ts +30 -24
  185. package/types/route-handler/editing-config-route-handler.d.ts.map +1 -0
  186. package/types/route-handler/editing-render-route-handler.d.ts +33 -25
  187. package/types/route-handler/editing-render-route-handler.d.ts.map +1 -0
  188. package/types/route-handler/index.d.ts +5 -4
  189. package/types/route-handler/index.d.ts.map +1 -0
  190. package/types/route-handler/robots-route-handler.d.ts +30 -28
  191. package/types/route-handler/robots-route-handler.d.ts.map +1 -0
  192. package/types/route-handler/sitemap-route-handler.d.ts +30 -28
  193. package/types/route-handler/sitemap-route-handler.d.ts.map +1 -0
  194. package/types/search/index.d.ts +2 -0
  195. package/types/search/index.d.ts.map +1 -0
  196. package/types/services/component-props-service.d.ts +62 -57
  197. package/types/services/component-props-service.d.ts.map +1 -0
  198. package/types/sharedTypes/component-props.d.ts +62 -47
  199. package/types/sharedTypes/component-props.d.ts.map +1 -0
  200. package/types/sharedTypes/sitecore-page-props.d.ts +14 -9
  201. package/types/sharedTypes/sitecore-page-props.d.ts.map +1 -0
  202. package/types/site/index.d.ts +2 -1
  203. package/types/site/index.d.ts.map +1 -0
  204. package/types/tools/codegen/import-map.d.ts +10 -0
  205. package/types/tools/codegen/import-map.d.ts.map +1 -0
  206. package/types/tools/component-props.loader.d.ts +8 -7
  207. package/types/tools/component-props.loader.d.ts.map +1 -0
  208. package/types/tools/generate-map.d.ts +26 -24
  209. package/types/tools/generate-map.d.ts.map +1 -0
  210. package/types/tools/index.d.ts +4 -2
  211. package/types/tools/index.d.ts.map +1 -0
  212. package/types/tools/templating/byoc-component.d.ts +3 -2
  213. package/types/tools/templating/byoc-component.d.ts.map +1 -0
  214. package/types/tools/templating/constants.d.ts +5 -4
  215. package/types/tools/templating/constants.d.ts.map +1 -0
  216. package/types/tools/templating/default-component.d.ts +3 -2
  217. package/types/tools/templating/default-component.d.ts.map +1 -0
  218. package/types/tools/templating/utils.d.ts +44 -0
  219. package/types/tools/templating/utils.d.ts.map +1 -0
  220. package/types/utils/index.d.ts +4 -3
  221. package/types/utils/index.d.ts.map +1 -0
  222. package/types/utils/utils.d.ts +34 -24
  223. package/types/utils/utils.d.ts.map +1 -0
  224. package/client.js +0 -1
  225. package/codegen.js +0 -1
  226. package/config-cli.js +0 -1
  227. package/config.js +0 -1
  228. package/editing.js +0 -1
  229. package/middleware.js +0 -1
  230. package/monitoring.js +0 -1
  231. package/route-handler.js +0 -1
  232. package/site.js +0 -1
  233. package/tools.js +0 -1
  234. 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
- export function createSitemapRouteHandler(options) {
19
- const { client, sites, revalidate = 60 } = options;
20
- const siteResolver = new SiteResolver(sites);
21
- const getOptions = (req) => {
22
- var _a;
23
- const id = ((_a = req.nextUrl.pathname.match(/^\/sitemap-(\d+)\.xml$/i)) === null || _a === void 0 ? void 0 : _a[1]) || '';
24
- const reqHost = req.headers.get('host') || '';
25
- const reqProtocol = req.headers.get('x-forwarded-proto') || 'https';
26
- const site = siteResolver.getByHost(reqHost);
27
- return { reqHost, reqProtocol, id, siteName: site.name };
28
- };
29
- const getSitemap = unstable_cache((options) => __awaiter(this, void 0, void 0, function* () {
30
- return client.getSiteMap(options);
31
- }), ['sitemap'], {
32
- revalidate,
33
- tags: ['sitemap'],
34
- });
35
- const GET = (req) => __awaiter(this, void 0, void 0, function* () {
36
- try {
37
- const startTimestamp = Date.now();
38
- const options = getOptions(req);
39
- debug.sitemap('sitemap route handler start: %o', {
40
- options,
41
- });
42
- const xml = yield getSitemap(options);
43
- debug.sitemap('sitemap route handler end in %dms', Date.now() - startTimestamp);
44
- return new Response(xml, {
45
- headers: {
46
- 'Content-Type': 'text/xml;charset=utf-8',
47
- },
48
- });
49
- }
50
- catch (error) {
51
- console.log('Sitemap route handler failed:');
52
- console.log(error);
53
- if (error instanceof Error && error.message === 'REDIRECT_404') {
54
- return new Response('Not Found', { status: 404 });
55
- }
56
- else {
57
- return new Response('Internal Server Error', { status: 500 });
58
- }
59
- }
60
- });
61
- return { GET };
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
- export class ComponentPropsService {
12
- fetchComponentProps(params) {
13
- return __awaiter(this, void 0, void 0, function* () {
14
- var _a;
15
- const { layoutData, context, components } = params;
16
- const requests = yield this.collectRequests({
17
- placeholders: (_a = layoutData.sitecore.route) === null || _a === void 0 ? void 0 : _a.placeholders,
18
- components,
19
- layoutData,
20
- context,
21
- });
22
- return yield this.execRequests(requests);
23
- });
24
- }
25
- /**
26
- * Go through layout service data, check all renderings using displayName, which should make some side effects.
27
- * Write result in requests variable
28
- * @param {object} params params
29
- * @param {PlaceholdersData} [params.placeholders]
30
- * @param {ComponentMap} params.components
31
- * @param {LayoutServiceData} params.layoutData
32
- * @param {NextContext} params.context
33
- * @param {ComponentPropsRequest[]} params.requests
34
- * @returns {ComponentPropsRequest[]} array of requests
35
- */
36
- collectRequests(params) {
37
- return __awaiter(this, void 0, void 0, function* () {
38
- const { placeholders = {}, components, layoutData, context } = params;
39
- // Will be called on first round
40
- if (!params.requests) {
41
- params.requests = [];
42
- }
43
- const renderings = this.flatRenderings(placeholders);
44
- const actions = renderings.map((r) => __awaiter(this, void 0, void 0, function* () {
45
- var _a;
46
- const fetchFunc = (_a = (yield this.getModule(components, r.componentName))) === null || _a === void 0 ? void 0 : _a.getComponentServerProps;
47
- if (fetchFunc) {
48
- params.requests &&
49
- params.requests.push({
50
- fetch: fetchFunc,
51
- rendering: r,
52
- layoutData: layoutData,
53
- context,
54
- });
55
- }
56
- // If placeholders exist in current rendering
57
- if (r.placeholders) {
58
- yield this.collectRequests(Object.assign(Object.assign({}, params), { placeholders: r.placeholders }));
59
- }
60
- }));
61
- yield Promise.all(actions);
62
- return params.requests;
63
- });
64
- }
65
- /**
66
- * Execute request for component props
67
- * @param {ComponentPropsRequest[]} requests requests
68
- * @returns {Promise<ComponentPropsCollection>} requests result
69
- */
70
- execRequests(requests) {
71
- return __awaiter(this, void 0, void 0, function* () {
72
- const componentProps = {};
73
- const promises = requests.map((req) => {
74
- const { uid } = req.rendering;
75
- if (!uid) {
76
- console.log(`Component ${req.rendering.componentName} doesn't have uid, can't store data for this component`);
77
- return;
78
- }
79
- return req
80
- .fetch(req.rendering, req.layoutData, req.context)
81
- .then((result) => {
82
- // Set component specific data in componentProps store
83
- componentProps[uid] = result;
84
- })
85
- .catch((error) => {
86
- const errLog = `Error during preload data for component ${req.rendering.componentName} (${uid}): ${error.message || error}`;
87
- console.error(chalk.red(errLog));
88
- componentProps[uid] = {
89
- error: error.message || errLog,
90
- componentName: req.rendering.componentName,
91
- };
92
- });
93
- });
94
- yield Promise.all(promises);
95
- return componentProps;
96
- });
97
- }
98
- /**
99
- * Take renderings from all placeholders and returns a flat array of renderings.
100
- * @example
101
- * const placeholders = {
102
- * x1: [{ uid: 1 }, { uid: 2 }],
103
- * x2: [{ uid: 11 }, { uid: 22 }]
104
- * }
105
- *
106
- * flatRenderings(placeholders);
107
- *
108
- * RESULT: [{ uid: 1 }, { uid: 2 }, { uid: 11 }, { uid: 22 }]
109
- * @param {PlaceholdersData} placeholders placeholders
110
- * @returns {ComponentRendering[]} renderings
111
- */
112
- flatRenderings(placeholders) {
113
- const allComponentRenderings = [];
114
- const placeholdersArr = Object.values(placeholders);
115
- placeholdersArr.forEach((pl) => {
116
- const renderings = pl;
117
- allComponentRenderings.push(...renderings);
118
- });
119
- return allComponentRenderings;
120
- }
121
- getModule(components, componentName) {
122
- return __awaiter(this, void 0, void 0, function* () {
123
- var _a;
124
- const component = components.get(componentName);
125
- if (!component)
126
- return null;
127
- 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;
128
- return module;
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 {};
@@ -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
+ }