@sitecore-content-sdk/core 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 (342) hide show
  1. package/README.md +7 -7
  2. package/dist/cjs/cache-client.js +55 -54
  3. package/dist/cjs/client/constants.js +7 -7
  4. package/dist/cjs/client/edge-proxy.js +24 -22
  5. package/dist/cjs/client/index.js +15 -15
  6. package/dist/cjs/client/models.js +2 -2
  7. package/dist/cjs/client/sitecore-client.js +421 -419
  8. package/dist/cjs/client/utils.js +47 -46
  9. package/dist/cjs/config/define-config.js +194 -193
  10. package/dist/cjs/config/index.js +7 -7
  11. package/dist/cjs/config/models.js +12 -11
  12. package/dist/cjs/config-cli/define-cli-config.js +23 -22
  13. package/dist/cjs/config-cli/index.js +7 -7
  14. package/dist/cjs/config-cli/models.js +8 -7
  15. package/dist/cjs/constants.js +49 -17
  16. package/dist/cjs/debug.js +48 -46
  17. package/dist/cjs/editing/codegen/index.js +14 -9
  18. package/dist/cjs/editing/codegen/preview.js +277 -193
  19. package/dist/cjs/editing/component-layout-service.js +62 -61
  20. package/dist/cjs/editing/design-library.js +183 -126
  21. package/dist/cjs/editing/editing-service.js +75 -74
  22. package/dist/cjs/editing/index.js +33 -27
  23. package/dist/cjs/editing/metadata.js +42 -42
  24. package/dist/cjs/editing/models.js +44 -38
  25. package/dist/cjs/editing/utils.js +108 -90
  26. package/dist/cjs/form/form.js +81 -78
  27. package/dist/cjs/form/index.js +7 -7
  28. package/dist/cjs/graphql-request-client.js +108 -107
  29. package/dist/cjs/i18n/dictionary-service.js +122 -121
  30. package/dist/cjs/i18n/index.js +7 -7
  31. package/dist/cjs/i18n/utils.js +16 -15
  32. package/dist/cjs/index.js +60 -60
  33. package/dist/cjs/layout/content-styles.js +72 -71
  34. package/dist/cjs/layout/index.js +24 -24
  35. package/dist/cjs/layout/layout-service.js +62 -57
  36. package/dist/cjs/layout/models.js +39 -34
  37. package/dist/cjs/layout/themes.js +76 -75
  38. package/dist/cjs/layout/utils.js +117 -110
  39. package/dist/cjs/media/index.js +38 -38
  40. package/dist/cjs/media/media-api.js +100 -96
  41. package/dist/cjs/models.js +2 -2
  42. package/dist/cjs/native-fetcher.js +194 -179
  43. package/dist/cjs/personalize/index.js +15 -15
  44. package/dist/cjs/personalize/layout-personalizer.js +98 -97
  45. package/dist/cjs/personalize/personalize-service.js +98 -94
  46. package/dist/cjs/personalize/utils.js +143 -136
  47. package/dist/cjs/retries.js +43 -42
  48. package/dist/cjs/site/error-pages-service.js +65 -64
  49. package/dist/cjs/site/index.js +26 -26
  50. package/dist/cjs/site/models.js +2 -2
  51. package/dist/cjs/site/redirects-service.js +94 -81
  52. package/dist/cjs/site/robots-service.js +66 -65
  53. package/dist/cjs/site/site-resolver.js +73 -72
  54. package/dist/cjs/site/siteinfo-service.js +84 -80
  55. package/dist/cjs/site/sitemap-xml-service.js +84 -83
  56. package/dist/cjs/site/sitepath-service.js +165 -164
  57. package/dist/cjs/site/utils.js +55 -47
  58. package/dist/cjs/sitecore-service-base.js +36 -36
  59. package/dist/cjs/tools/auth/flow.js +65 -64
  60. package/dist/cjs/tools/auth/index.js +5 -5
  61. package/dist/cjs/tools/auth/models.js +2 -2
  62. package/dist/cjs/tools/auth/tenant-store.js +38 -38
  63. package/dist/cjs/tools/codegen/component-generation.js +52 -50
  64. package/dist/cjs/tools/codegen/extract-files.js +105 -107
  65. package/dist/cjs/tools/codegen/import-map.js +401 -349
  66. package/dist/cjs/tools/codegen/utils.js +418 -418
  67. package/dist/cjs/tools/generate-map.js +2 -2
  68. package/dist/cjs/tools/generateMetadata.js +36 -35
  69. package/dist/cjs/tools/generateSites.js +59 -58
  70. package/dist/cjs/tools/index.js +75 -73
  71. package/dist/cjs/tools/scaffold.js +60 -59
  72. package/dist/cjs/tools/templating/components.js +96 -266
  73. package/dist/cjs/tools/templating/index.js +11 -14
  74. package/dist/cjs/tools/templating/plugins.js +80 -78
  75. package/dist/cjs/tools/templating/utils.js +67 -66
  76. package/dist/cjs/utils/ensurePath.js +20 -20
  77. package/dist/cjs/utils/env.js +28 -27
  78. package/dist/cjs/utils/globalCache.js +55 -0
  79. package/dist/cjs/utils/index.js +26 -21
  80. package/dist/cjs/utils/is-server.js +11 -10
  81. package/dist/cjs/utils/normalize-url.js +5 -5
  82. package/dist/cjs/utils/timeout-promise.js +31 -31
  83. package/dist/cjs/utils/utils.js +254 -229
  84. package/dist/esm/cache-client.js +51 -50
  85. package/dist/esm/client/constants.js +4 -4
  86. package/dist/esm/client/edge-proxy.js +19 -17
  87. package/dist/esm/client/index.js +5 -5
  88. package/dist/esm/client/models.js +1 -1
  89. package/dist/esm/client/sitecore-client.js +414 -412
  90. package/dist/esm/client/utils.js +43 -42
  91. package/dist/esm/config/define-config.js +188 -187
  92. package/dist/esm/config/index.js +2 -2
  93. package/dist/esm/config/models.js +9 -8
  94. package/dist/esm/config-cli/define-cli-config.js +19 -18
  95. package/dist/esm/config-cli/index.js +2 -2
  96. package/dist/esm/config-cli/models.js +5 -4
  97. package/dist/esm/constants.js +46 -14
  98. package/dist/esm/debug.js +41 -39
  99. package/dist/esm/editing/codegen/index.js +1 -1
  100. package/dist/esm/editing/codegen/preview.js +263 -185
  101. package/dist/esm/editing/component-layout-service.js +55 -54
  102. package/dist/esm/editing/design-library.js +171 -117
  103. package/dist/esm/editing/editing-service.js +68 -67
  104. package/dist/esm/editing/index.js +6 -5
  105. package/dist/esm/editing/metadata.js +39 -39
  106. package/dist/esm/editing/models.js +41 -35
  107. package/dist/esm/editing/utils.js +98 -80
  108. package/dist/esm/form/form.js +72 -69
  109. package/dist/esm/form/index.js +1 -1
  110. package/dist/esm/graphql-request-client.js +101 -100
  111. package/dist/esm/i18n/dictionary-service.js +115 -114
  112. package/dist/esm/i18n/index.js +2 -2
  113. package/dist/esm/i18n/utils.js +13 -12
  114. package/dist/esm/index.js +13 -13
  115. package/dist/esm/layout/content-styles.js +64 -63
  116. package/dist/esm/layout/index.js +6 -6
  117. package/dist/esm/layout/layout-service.js +55 -50
  118. package/dist/esm/layout/models.js +36 -31
  119. package/dist/esm/layout/themes.js +71 -70
  120. package/dist/esm/layout/utils.js +109 -102
  121. package/dist/esm/media/index.js +2 -2
  122. package/dist/esm/media/media-api.js +90 -86
  123. package/dist/esm/models.js +1 -1
  124. package/dist/esm/native-fetcher.js +187 -172
  125. package/dist/esm/personalize/index.js +3 -3
  126. package/dist/esm/personalize/layout-personalizer.js +93 -92
  127. package/dist/esm/personalize/personalize-service.js +91 -87
  128. package/dist/esm/personalize/utils.js +135 -128
  129. package/dist/esm/retries.js +39 -38
  130. package/dist/esm/site/error-pages-service.js +58 -57
  131. package/dist/esm/site/index.js +8 -8
  132. package/dist/esm/site/models.js +1 -1
  133. package/dist/esm/site/redirects-service.js +87 -74
  134. package/dist/esm/site/robots-service.js +59 -58
  135. package/dist/esm/site/site-resolver.js +69 -68
  136. package/dist/esm/site/siteinfo-service.js +77 -73
  137. package/dist/esm/site/sitemap-xml-service.js +77 -76
  138. package/dist/esm/site/sitepath-service.js +157 -156
  139. package/dist/esm/site/utils.js +49 -41
  140. package/dist/esm/sitecore-service-base.js +29 -29
  141. package/dist/esm/tools/auth/flow.js +62 -61
  142. package/dist/esm/tools/auth/index.js +1 -1
  143. package/dist/esm/tools/auth/models.js +1 -1
  144. package/dist/esm/tools/auth/tenant-store.js +35 -35
  145. package/dist/esm/tools/codegen/component-generation.js +44 -42
  146. package/dist/esm/tools/codegen/extract-files.js +99 -101
  147. package/dist/esm/tools/codegen/import-map.js +358 -306
  148. package/dist/esm/tools/codegen/utils.js +373 -373
  149. package/dist/esm/tools/generate-map.js +1 -1
  150. package/dist/esm/tools/generateMetadata.js +29 -28
  151. package/dist/esm/tools/generateSites.js +52 -51
  152. package/dist/esm/tools/index.js +28 -27
  153. package/dist/esm/tools/scaffold.js +52 -51
  154. package/dist/esm/tools/templating/components.js +59 -223
  155. package/dist/esm/tools/templating/index.js +3 -3
  156. package/dist/esm/tools/templating/plugins.js +72 -70
  157. package/dist/esm/tools/templating/utils.js +59 -58
  158. package/dist/esm/utils/ensurePath.js +13 -13
  159. package/dist/esm/utils/env.js +24 -23
  160. package/dist/esm/utils/globalCache.js +49 -0
  161. package/dist/esm/utils/index.js +4 -3
  162. package/dist/esm/utils/is-server.js +9 -8
  163. package/dist/esm/utils/normalize-url.js +1 -1
  164. package/dist/esm/utils/timeout-promise.js +28 -28
  165. package/dist/esm/utils/utils.js +238 -213
  166. package/package.json +73 -5
  167. package/types/cache-client.d.ts +68 -64
  168. package/types/cache-client.d.ts.map +1 -0
  169. package/types/client/constants.d.ts +5 -4
  170. package/types/client/constants.d.ts.map +1 -0
  171. package/types/client/edge-proxy.d.ts +18 -15
  172. package/types/client/edge-proxy.d.ts.map +1 -0
  173. package/types/client/index.d.ts +8 -7
  174. package/types/client/index.d.ts.map +1 -0
  175. package/types/client/models.d.ts +21 -19
  176. package/types/client/models.d.ts.map +1 -0
  177. package/types/client/sitecore-client.d.ts +338 -327
  178. package/types/client/sitecore-client.d.ts.map +1 -0
  179. package/types/client/utils.d.ts +15 -9
  180. package/types/client/utils.d.ts.map +1 -0
  181. package/types/config/define-config.d.ts +20 -18
  182. package/types/config/define-config.d.ts.map +1 -0
  183. package/types/config/index.d.ts +3 -2
  184. package/types/config/index.d.ts.map +1 -0
  185. package/types/config/models.d.ts +287 -268
  186. package/types/config/models.d.ts.map +1 -0
  187. package/types/config-cli/define-cli-config.d.ts +9 -7
  188. package/types/config-cli/define-cli-config.d.ts.map +1 -0
  189. package/types/config-cli/index.d.ts +3 -2
  190. package/types/config-cli/index.d.ts.map +1 -0
  191. package/types/config-cli/models.d.ts +6 -4
  192. package/types/config-cli/models.d.ts.map +1 -0
  193. package/types/constants.d.ts +44 -11
  194. package/types/constants.d.ts.map +1 -0
  195. package/types/debug.d.ts +35 -28
  196. package/types/debug.d.ts.map +1 -0
  197. package/types/editing/codegen/index.d.ts +2 -1
  198. package/types/editing/codegen/index.d.ts.map +1 -0
  199. package/types/editing/codegen/preview.d.ts +256 -195
  200. package/types/editing/codegen/preview.d.ts.map +1 -0
  201. package/types/editing/component-layout-service.d.ts +84 -80
  202. package/types/editing/component-layout-service.d.ts.map +1 -0
  203. package/types/editing/design-library.d.ts +111 -63
  204. package/types/editing/design-library.d.ts.map +1 -0
  205. package/types/editing/editing-service.d.ts +72 -62
  206. package/types/editing/editing-service.d.ts.map +1 -0
  207. package/types/editing/index.d.ts +7 -6
  208. package/types/editing/index.d.ts.map +1 -0
  209. package/types/editing/metadata.d.ts +8 -7
  210. package/types/editing/metadata.d.ts.map +1 -0
  211. package/types/editing/models.d.ts +103 -92
  212. package/types/editing/models.d.ts.map +1 -0
  213. package/types/editing/utils.d.ts +91 -74
  214. package/types/editing/utils.d.ts.map +1 -0
  215. package/types/form/form.d.ts +25 -21
  216. package/types/form/form.d.ts.map +1 -0
  217. package/types/form/index.d.ts +2 -1
  218. package/types/form/index.d.ts.map +1 -0
  219. package/types/graphql-request-client.d.ts +112 -105
  220. package/types/graphql-request-client.d.ts.map +1 -0
  221. package/types/i18n/dictionary-service.d.ts +135 -131
  222. package/types/i18n/dictionary-service.d.ts.map +1 -0
  223. package/types/i18n/index.d.ts +3 -2
  224. package/types/i18n/index.d.ts.map +1 -0
  225. package/types/i18n/utils.d.ts +9 -7
  226. package/types/i18n/utils.d.ts.map +1 -0
  227. package/types/index.d.ts +13 -12
  228. package/types/index.d.ts.map +1 -0
  229. package/types/layout/content-styles.d.ts +20 -18
  230. package/types/layout/content-styles.d.ts.map +1 -0
  231. package/types/layout/index.d.ts +6 -5
  232. package/types/layout/index.d.ts.map +1 -0
  233. package/types/layout/layout-service.d.ts +45 -35
  234. package/types/layout/layout-service.d.ts.map +1 -0
  235. package/types/layout/models.d.ts +174 -151
  236. package/types/layout/models.d.ts.map +1 -0
  237. package/types/layout/themes.d.ts +13 -11
  238. package/types/layout/themes.d.ts.map +1 -0
  239. package/types/layout/utils.d.ts +56 -41
  240. package/types/layout/utils.d.ts.map +1 -0
  241. package/types/media/index.d.ts +3 -2
  242. package/types/media/index.d.ts.map +1 -0
  243. package/types/media/media-api.d.ts +60 -55
  244. package/types/media/media-api.d.ts.map +1 -0
  245. package/types/models.d.ts +94 -84
  246. package/types/models.d.ts.map +1 -0
  247. package/types/native-fetcher.d.ts +124 -114
  248. package/types/native-fetcher.d.ts.map +1 -0
  249. package/types/personalize/index.d.ts +4 -3
  250. package/types/personalize/index.d.ts.map +1 -0
  251. package/types/personalize/layout-personalizer.d.ts +29 -27
  252. package/types/personalize/layout-personalizer.d.ts.map +1 -0
  253. package/types/personalize/personalize-service.d.ts +90 -80
  254. package/types/personalize/personalize-service.d.ts.map +1 -0
  255. package/types/personalize/utils.d.ts +78 -69
  256. package/types/personalize/utils.d.ts.map +1 -0
  257. package/types/retries.d.ts +26 -24
  258. package/types/retries.d.ts.map +1 -0
  259. package/types/site/error-pages-service.d.ts +64 -57
  260. package/types/site/error-pages-service.d.ts.map +1 -0
  261. package/types/site/index.d.ts +10 -9
  262. package/types/site/index.d.ts.map +1 -0
  263. package/types/site/models.d.ts +23 -18
  264. package/types/site/models.d.ts.map +1 -0
  265. package/types/site/redirects-service.d.ts +92 -69
  266. package/types/site/redirects-service.d.ts.map +1 -0
  267. package/types/site/robots-service.d.ts +57 -50
  268. package/types/site/robots-service.d.ts.map +1 -0
  269. package/types/site/site-resolver.d.ts +28 -26
  270. package/types/site/site-resolver.d.ts.map +1 -0
  271. package/types/site/siteinfo-service.d.ts +65 -52
  272. package/types/site/siteinfo-service.d.ts.map +1 -0
  273. package/types/site/sitemap-xml-service.d.ts +63 -56
  274. package/types/site/sitemap-xml-service.d.ts.map +1 -0
  275. package/types/site/sitepath-service.d.ts +137 -134
  276. package/types/site/sitepath-service.d.ts.map +1 -0
  277. package/types/site/utils.d.ts +41 -28
  278. package/types/site/utils.d.ts.map +1 -0
  279. package/types/sitecore-service-base.d.ts +31 -30
  280. package/types/sitecore-service-base.d.ts.map +1 -0
  281. package/types/tools/auth/flow.d.ts +29 -27
  282. package/types/tools/auth/flow.d.ts.map +1 -0
  283. package/types/tools/auth/index.d.ts +2 -1
  284. package/types/tools/auth/index.d.ts.map +1 -0
  285. package/types/tools/auth/models.d.ts +35 -33
  286. package/types/tools/auth/models.d.ts.map +1 -0
  287. package/types/tools/auth/tenant-store.d.ts +12 -11
  288. package/types/tools/auth/tenant-store.d.ts.map +1 -0
  289. package/types/tools/codegen/component-generation.d.ts +50 -47
  290. package/types/tools/codegen/component-generation.d.ts.map +1 -0
  291. package/types/tools/codegen/extract-files.d.ts +24 -22
  292. package/types/tools/codegen/extract-files.d.ts.map +1 -0
  293. package/types/tools/codegen/import-map.d.ts +103 -70
  294. package/types/tools/codegen/import-map.d.ts.map +1 -0
  295. package/types/tools/codegen/utils.d.ts +76 -75
  296. package/types/tools/codegen/utils.d.ts.map +1 -0
  297. package/types/tools/generate-map.d.ts +36 -26
  298. package/types/tools/generate-map.d.ts.map +1 -0
  299. package/types/tools/generateMetadata.d.ts +24 -22
  300. package/types/tools/generateMetadata.d.ts.map +1 -0
  301. package/types/tools/generateSites.d.ts +25 -22
  302. package/types/tools/generateSites.d.ts.map +1 -0
  303. package/types/tools/index.d.ts +22 -20
  304. package/types/tools/index.d.ts.map +1 -0
  305. package/types/tools/scaffold.d.ts +27 -25
  306. package/types/tools/scaffold.d.ts.map +1 -0
  307. package/types/tools/templating/components.d.ts +104 -103
  308. package/types/tools/templating/components.d.ts.map +1 -0
  309. package/types/tools/templating/index.d.ts +4 -3
  310. package/types/tools/templating/index.d.ts.map +1 -0
  311. package/types/tools/templating/plugins.d.ts +71 -67
  312. package/types/tools/templating/plugins.d.ts.map +1 -0
  313. package/types/tools/templating/utils.d.ts +42 -40
  314. package/types/tools/templating/utils.d.ts.map +1 -0
  315. package/types/utils/ensurePath.d.ts +7 -6
  316. package/types/utils/ensurePath.d.ts.map +1 -0
  317. package/types/utils/env.d.ts +9 -7
  318. package/types/utils/env.d.ts.map +1 -0
  319. package/types/utils/globalCache.d.ts +37 -0
  320. package/types/utils/globalCache.d.ts.map +1 -0
  321. package/types/utils/index.d.ts +5 -3
  322. package/types/utils/index.d.ts.map +1 -0
  323. package/types/utils/is-server.d.ts +8 -6
  324. package/types/utils/is-server.d.ts.map +1 -0
  325. package/types/utils/normalize-url.d.ts +2 -1
  326. package/types/utils/normalize-url.d.ts.map +1 -0
  327. package/types/utils/timeout-promise.d.ts +18 -17
  328. package/types/utils/timeout-promise.d.ts.map +1 -0
  329. package/types/utils/utils.d.ts +104 -79
  330. package/types/utils/utils.d.ts.map +1 -0
  331. package/client.js +0 -1
  332. package/codegen.js +0 -1
  333. package/config-cli.js +0 -1
  334. package/config.js +0 -1
  335. package/editing.js +0 -1
  336. package/i18n.js +0 -1
  337. package/layout.js +0 -1
  338. package/media.js +0 -1
  339. package/personalize.js +0 -1
  340. package/site.js +0 -1
  341. package/tools.js +0 -1
  342. package/utils.js +0 -1
@@ -1,63 +1,64 @@
1
- import { SITECORE_EDGE_URL_DEFAULT } from '../constants';
2
- import { normalizeUrl } from '../utils/normalize-url';
3
- /**
4
- * Regular expression to check if the content styles are used in the field value
5
- */
6
- const CLASS_REGEXP = /class=".*(\bck-content\b).*"/g;
7
- /**
8
- * Get the content styles link to be loaded from the Sitecore Edge Platform
9
- * @param {LayoutServiceData} layoutData Layout service data
10
- * @param {string} sitecoreEdgeContextId Sitecore Edge Context ID
11
- * @param {string} [sitecoreEdgeUrl] Sitecore Edge Platform URL. Default is https://edge-platform.sitecorecloud.io
12
- * @returns {HTMLLink | null} content styles link, null if no styles are used in layout
13
- */
14
- export const getContentStylesheetLink = (layoutData, sitecoreEdgeContextId, sitecoreEdgeUrl = SITECORE_EDGE_URL_DEFAULT) => {
15
- if (!layoutData.sitecore.route)
16
- return null;
17
- const config = { loadStyles: false };
18
- traverseComponent(layoutData.sitecore.route, config);
19
- if (!config.loadStyles)
20
- return null;
21
- return {
22
- href: getContentStylesheetUrl(sitecoreEdgeContextId, sitecoreEdgeUrl),
23
- rel: 'stylesheet',
24
- };
25
- };
26
- export const getContentStylesheetUrl = (sitecoreEdgeContextId, sitecoreEdgeUrl = SITECORE_EDGE_URL_DEFAULT) => `${normalizeUrl(sitecoreEdgeUrl)}/v1/files/pages/styles/content-styles.css?sitecoreContextId=${sitecoreEdgeContextId}`;
27
- export const traversePlaceholder = (components, config) => {
28
- if (config.loadStyles)
29
- return;
30
- components.forEach((component) => {
31
- traverseComponent(component, config);
32
- });
33
- };
34
- export const traverseField = (field, config) => {
35
- if (!field || typeof field !== 'object' || config.loadStyles)
36
- return;
37
- if ('value' in field && typeof field.value === 'string') {
38
- config.loadStyles = CLASS_REGEXP.test(field.value);
39
- }
40
- else if ('fields' in field) {
41
- Object.values(field.fields).forEach((field) => {
42
- traverseField(field, config);
43
- });
44
- }
45
- else if (Array.isArray(field)) {
46
- field.forEach((field) => {
47
- traverseField(field, config);
48
- });
49
- }
50
- };
51
- export const traverseComponent = (component, config) => {
52
- if (config.loadStyles)
53
- return;
54
- if ('fields' in component && component.fields) {
55
- Object.values(component.fields).forEach((field) => {
56
- traverseField(field, config);
57
- });
58
- }
59
- const placeholders = component.placeholders || {};
60
- Object.keys(placeholders).forEach((placeholder) => {
61
- traversePlaceholder(placeholders[placeholder], config);
62
- });
63
- };
1
+ import { SITECORE_EDGE_URL_DEFAULT } from '../constants';
2
+ import { normalizeUrl } from '../utils/normalize-url';
3
+ /**
4
+ * Regular expression to check if the content styles are used in the field value
5
+ */
6
+ const CLASS_REGEXP = /class=".*(\bck-content\b).*"/g;
7
+ /**
8
+ * Get the content styles link to be loaded from the Sitecore Edge Platform
9
+ * @param {LayoutServiceData} layoutData Layout service data
10
+ * @param {string} sitecoreEdgeContextId Sitecore Edge Context ID
11
+ * @param {string} [sitecoreEdgeUrl] Sitecore Edge Platform URL. Default is https://edge-platform.sitecorecloud.io
12
+ * @returns {HTMLLink | null} content styles link, null if no styles are used in layout
13
+ * @public
14
+ */
15
+ export const getContentStylesheetLink = (layoutData, sitecoreEdgeContextId, sitecoreEdgeUrl = SITECORE_EDGE_URL_DEFAULT) => {
16
+ if (!layoutData.sitecore.route)
17
+ return null;
18
+ const config = { loadStyles: false };
19
+ traverseComponent(layoutData.sitecore.route, config);
20
+ if (!config.loadStyles)
21
+ return null;
22
+ return {
23
+ href: getContentStylesheetUrl(sitecoreEdgeContextId, sitecoreEdgeUrl),
24
+ rel: 'stylesheet',
25
+ };
26
+ };
27
+ export const getContentStylesheetUrl = (sitecoreEdgeContextId, sitecoreEdgeUrl = SITECORE_EDGE_URL_DEFAULT) => `${normalizeUrl(sitecoreEdgeUrl)}/v1/files/pages/styles/content-styles.css?sitecoreContextId=${sitecoreEdgeContextId}`;
28
+ export const traversePlaceholder = (components, config) => {
29
+ if (config.loadStyles)
30
+ return;
31
+ components.forEach((component) => {
32
+ traverseComponent(component, config);
33
+ });
34
+ };
35
+ export const traverseField = (field, config) => {
36
+ if (!field || typeof field !== 'object' || config.loadStyles)
37
+ return;
38
+ if ('value' in field && typeof field.value === 'string') {
39
+ config.loadStyles = CLASS_REGEXP.test(field.value);
40
+ }
41
+ else if ('fields' in field) {
42
+ Object.values(field.fields).forEach((field) => {
43
+ traverseField(field, config);
44
+ });
45
+ }
46
+ else if (Array.isArray(field)) {
47
+ field.forEach((field) => {
48
+ traverseField(field, config);
49
+ });
50
+ }
51
+ };
52
+ export const traverseComponent = (component, config) => {
53
+ if (config.loadStyles)
54
+ return;
55
+ if ('fields' in component && component.fields) {
56
+ Object.values(component.fields).forEach((field) => {
57
+ traverseField(field, config);
58
+ });
59
+ }
60
+ const placeholders = component.placeholders || {};
61
+ Object.keys(placeholders).forEach((placeholder) => {
62
+ traversePlaceholder(placeholders[placeholder], config);
63
+ });
64
+ };
@@ -1,6 +1,6 @@
1
- // layout
2
- export { LayoutServicePageState, EditMode, RenderingType, EDITING_COMPONENT_PLACEHOLDER, EDITING_COMPONENT_ID, } from './models';
3
- export { getFieldValue, getChildPlaceholder, isFieldValueEmpty, isDynamicPlaceholder, getDynamicPlaceholderPattern, EMPTY_DATE_FIELD_VALUE, } from './utils';
4
- export { getContentStylesheetLink } from './content-styles';
5
- export { LayoutService, GRAPHQL_LAYOUT_QUERY_NAME } from './layout-service';
6
- export { getDesignLibraryStylesheetLinks } from './themes';
1
+ // layout
2
+ export { LayoutServicePageState, EditMode, RenderingType, EDITING_COMPONENT_PLACEHOLDER, EDITING_COMPONENT_ID, } from './models';
3
+ export { getFieldValue, getChildPlaceholder, isFieldValueEmpty, isDynamicPlaceholder, getDynamicPlaceholderPattern, EMPTY_DATE_FIELD_VALUE, } from './utils';
4
+ export { getContentStylesheetLink } from './content-styles';
5
+ export { LayoutService, GRAPHQL_LAYOUT_QUERY_NAME } from './layout-service';
6
+ export { getDesignLibraryStylesheetLinks } from './themes';
@@ -1,56 +1,61 @@
1
- import debug from '../debug';
2
- import { SitecoreServiceBase } from '../sitecore-service-base';
3
- export const GRAPHQL_LAYOUT_QUERY_NAME = 'ContentSdkLayoutQuery';
4
- /**
5
- * Service that fetch layout data using Sitecore's GraphQL API.
6
- * @augments LayoutServiceBase
7
- * @mixes GraphQLRequestClient
8
- */
9
- export class LayoutService extends SitecoreServiceBase {
10
- /**
11
- * Fetch layout data using the Sitecore GraphQL endpoint.
12
- * @param {LayoutServiceConfig} serviceConfig configuration
13
- */
14
- constructor(serviceConfig) {
15
- super(serviceConfig);
16
- this.serviceConfig = serviceConfig;
17
- }
18
- /**
19
- * Fetch layout data for an item.
20
- * @param {string} itemPath item path to fetch layout data for.
21
- * @param {RouteOptions} [routeOptions] Request options like language and site to retrieve data for
22
- * @param {FetchOptions} [fetchOptions] Options to override graphQL client details like retries and fetch implementation
23
- * @returns {Promise<LayoutServiceData>} layout service data
24
- */
25
- async fetchLayoutData(itemPath, routeOptions, fetchOptions) {
26
- var _a, _b;
27
- const site = routeOptions.site;
28
- const query = this.getLayoutQuery(itemPath, site, routeOptions === null || routeOptions === void 0 ? void 0 : routeOptions.locale);
29
- debug.layout('fetching layout data for %s %s %s', itemPath, routeOptions === null || routeOptions === void 0 ? void 0 : routeOptions.locale, site);
30
- const data = await this.graphQLClient.request(query, {}, fetchOptions);
31
- // If `rendered` is empty -> not found
32
- return (((_b = (_a = data === null || data === void 0 ? void 0 : data.layout) === null || _a === void 0 ? void 0 : _a.item) === null || _b === void 0 ? void 0 : _b.rendered) || {
33
- sitecore: { context: { pageEditing: false, language: routeOptions === null || routeOptions === void 0 ? void 0 : routeOptions.locale }, route: null },
34
- });
35
- }
36
- /**
37
- * Returns GraphQL Layout query
38
- * @param {string} itemPath page route
39
- * @param {string} [site] site name
40
- * @param {string} [language] language
41
- * @returns {string} GraphQL query
42
- */
43
- getLayoutQuery(itemPath, site, language) {
44
- const languageVariable = language ? `, language:"${language}"` : '';
45
- const layoutQuery = this.serviceConfig.formatLayoutQuery
46
- ? this.serviceConfig.formatLayoutQuery(site, itemPath, language)
47
- : `layout(site:"${site}", routePath:"${itemPath}"${languageVariable})`;
1
+ import debug from '../debug';
2
+ import { SitecoreServiceBase } from '../sitecore-service-base';
3
+ /**
4
+ * GraphQL layout query name
5
+ * @internal
6
+ */
7
+ export const GRAPHQL_LAYOUT_QUERY_NAME = 'ContentSdkLayoutQuery';
8
+ /**
9
+ * Service that fetch layout data using Sitecore's GraphQL API.
10
+ * @augments LayoutServiceBase
11
+ * @mixes GraphQLRequestClient
12
+ * @public
13
+ */
14
+ export class LayoutService extends SitecoreServiceBase {
15
+ /**
16
+ * Fetch layout data using the Sitecore GraphQL endpoint.
17
+ * @param {LayoutServiceConfig} serviceConfig configuration
18
+ */
19
+ constructor(serviceConfig) {
20
+ super(serviceConfig);
21
+ this.serviceConfig = serviceConfig;
22
+ }
23
+ /**
24
+ * Fetch layout data for an item.
25
+ * @param {string} itemPath item path to fetch layout data for.
26
+ * @param {RouteOptions} [routeOptions] Request options like language and site to retrieve data for
27
+ * @param {FetchOptions} [fetchOptions] Options to override graphQL client details like retries and fetch implementation
28
+ * @returns {Promise<LayoutServiceData>} layout service data
29
+ */
30
+ async fetchLayoutData(itemPath, routeOptions, fetchOptions) {
31
+ var _a, _b;
32
+ const site = routeOptions.site;
33
+ const query = this.getLayoutQuery(itemPath, site, routeOptions === null || routeOptions === void 0 ? void 0 : routeOptions.locale);
34
+ debug.layout('fetching layout data for %s %s %s', itemPath, routeOptions === null || routeOptions === void 0 ? void 0 : routeOptions.locale, site);
35
+ const data = await this.graphQLClient.request(query, {}, fetchOptions);
36
+ // If `rendered` is empty -> not found
37
+ return (((_b = (_a = data === null || data === void 0 ? void 0 : data.layout) === null || _a === void 0 ? void 0 : _a.item) === null || _b === void 0 ? void 0 : _b.rendered) || {
38
+ sitecore: { context: { pageEditing: false, language: routeOptions === null || routeOptions === void 0 ? void 0 : routeOptions.locale }, route: null },
39
+ });
40
+ }
41
+ /**
42
+ * Returns GraphQL Layout query
43
+ * @param {string} itemPath page route
44
+ * @param {string} [site] site name
45
+ * @param {string} [language] language
46
+ * @returns {string} GraphQL query
47
+ */
48
+ getLayoutQuery(itemPath, site, language) {
49
+ const languageVariable = language ? `, language:"${language}"` : '';
50
+ const layoutQuery = this.serviceConfig.formatLayoutQuery
51
+ ? this.serviceConfig.formatLayoutQuery(site, itemPath, language)
52
+ : `layout(site:"${site}", routePath:"${itemPath}"${languageVariable})`;
48
53
  return `query ${GRAPHQL_LAYOUT_QUERY_NAME} {
49
54
  ${layoutQuery}{
50
55
  item {
51
56
  rendered
52
57
  }
53
58
  }
54
- }`;
55
- }
56
- }
59
+ }`;
60
+ }
61
+ }
@@ -1,31 +1,36 @@
1
- /**
2
- * Layout Service page state enum
3
- */
4
- export var LayoutServicePageState;
5
- (function (LayoutServicePageState) {
6
- LayoutServicePageState["Preview"] = "preview";
7
- LayoutServicePageState["Edit"] = "edit";
8
- LayoutServicePageState["Normal"] = "normal";
9
- })(LayoutServicePageState || (LayoutServicePageState = {}));
10
- /**
11
- * Represents the edit mode for rendering content in Sitecore Editors
12
- */
13
- export var EditMode;
14
- (function (EditMode) {
15
- EditMode["Metadata"] = "metadata";
16
- })(EditMode || (EditMode = {}));
17
- /**
18
- * Editing rendering type
19
- */
20
- export var RenderingType;
21
- (function (RenderingType) {
22
- RenderingType["Component"] = "component";
23
- })(RenderingType || (RenderingType = {}));
24
- /**
25
- * Static placeholder name used for component rendering
26
- */
27
- export const EDITING_COMPONENT_PLACEHOLDER = 'editing-componentmode-placeholder';
28
- /**
29
- * Id of wrapper for component rendering
30
- */
31
- export const EDITING_COMPONENT_ID = 'editing-component';
1
+ /**
2
+ * Layout Service page state enum
3
+ * @public
4
+ */
5
+ export var LayoutServicePageState;
6
+ (function (LayoutServicePageState) {
7
+ LayoutServicePageState["Preview"] = "preview";
8
+ LayoutServicePageState["Edit"] = "edit";
9
+ LayoutServicePageState["Normal"] = "normal";
10
+ })(LayoutServicePageState || (LayoutServicePageState = {}));
11
+ /**
12
+ * Represents the edit mode for rendering content in Sitecore Editors
13
+ * @public
14
+ */
15
+ export var EditMode;
16
+ (function (EditMode) {
17
+ EditMode["Metadata"] = "metadata";
18
+ })(EditMode || (EditMode = {}));
19
+ /**
20
+ * Editing rendering type
21
+ * @public
22
+ */
23
+ export var RenderingType;
24
+ (function (RenderingType) {
25
+ RenderingType["Component"] = "component";
26
+ })(RenderingType || (RenderingType = {}));
27
+ /**
28
+ * Static placeholder name used for component rendering
29
+ * @internal
30
+ */
31
+ export const EDITING_COMPONENT_PLACEHOLDER = 'editing-componentmode-placeholder';
32
+ /**
33
+ * Id of wrapper for component rendering
34
+ * @internal
35
+ */
36
+ export const EDITING_COMPONENT_ID = 'editing-component';
@@ -1,70 +1,71 @@
1
- import { getFieldValue } from '.';
2
- import { SITECORE_EDGE_URL_DEFAULT } from '../constants';
3
- import { normalizeUrl } from '../utils/normalize-url';
4
- /**
5
- * Pattern for library ids
6
- * @example -library--foo
7
- */
8
- const STYLES_LIBRARY_ID_REGEX = /-library--([^\s]+)/;
9
- /**
10
- * Walks through rendering tree and returns list of links of all FEAAS, BYOC or SXA Design Library Stylesheets that are used
11
- * @param {LayoutServiceData} layoutData Layout service data
12
- * @param {string} sitecoreEdgeContextId Sitecore Edge Context ID
13
- * @param {string} [sitecoreEdgeUrl] Sitecore Edge Platform URL. Default is https://edge-platform.sitecorecloud.io
14
- * @returns {HTMLLink[]} library stylesheet links
15
- */
16
- export function getDesignLibraryStylesheetLinks(layoutData, sitecoreEdgeContextId, sitecoreEdgeUrl = SITECORE_EDGE_URL_DEFAULT) {
17
- const ids = new Set();
18
- if (!layoutData.sitecore.route)
19
- return [];
20
- traverseComponent(layoutData.sitecore.route, ids);
21
- return [...ids].map((id) => ({
22
- href: getStylesheetUrl(id, sitecoreEdgeContextId, sitecoreEdgeUrl),
23
- rel: 'stylesheet',
24
- }));
25
- }
26
- export const getStylesheetUrl = (id, sitecoreEdgeContextId, sitecoreEdgeUrl = SITECORE_EDGE_URL_DEFAULT) => {
27
- return `${normalizeUrl(sitecoreEdgeUrl)}/v1/files/components/styles/${id}.css?sitecoreContextId=${sitecoreEdgeContextId}`;
28
- };
29
- /**
30
- * Traverse placeholder and components to add library ids
31
- * @param {ComponentRendering[]} components
32
- * @param {Set<string>} ids library ids
33
- */
34
- const traversePlaceholder = (components, ids) => {
35
- components.map((component) => {
36
- return traverseComponent(component, ids);
37
- });
38
- };
39
- /**
40
- * Traverse component and children to add library ids
41
- * @param {RouteData | ComponentRendering | HtmlElementRendering} component component data
42
- * @param {Set<string>} ids library ids
43
- */
44
- const traverseComponent = (component, ids) => {
45
- var _a, _b, _c, _d, _e, _f;
46
- let libraryId = undefined;
47
- if ('params' in component && component.params) {
48
- // LibraryID in css class name takes precedence over LibraryId attribute
49
- libraryId =
50
- ((_b = (_a = component.params.CSSStyles) === null || _a === void 0 ? void 0 : _a.match(STYLES_LIBRARY_ID_REGEX)) === null || _b === void 0 ? void 0 : _b[1]) ||
51
- ((_d = (_c = component.params.Styles) === null || _c === void 0 ? void 0 : _c.match(STYLES_LIBRARY_ID_REGEX)) === null || _d === void 0 ? void 0 : _d[1]) ||
52
- component.params.LibraryId ||
53
- undefined;
54
- }
55
- // if params are empty we try to fall back to data source
56
- if (!libraryId && 'fields' in component && component.fields) {
57
- libraryId =
58
- ((_e = getFieldValue(component.fields, 'CSSStyles', '').match(STYLES_LIBRARY_ID_REGEX)) === null || _e === void 0 ? void 0 : _e[1]) ||
59
- ((_f = getFieldValue(component.fields, 'Styles', '').match(STYLES_LIBRARY_ID_REGEX)) === null || _f === void 0 ? void 0 : _f[1]) ||
60
- getFieldValue(component.fields, 'LibraryId', '') ||
61
- undefined;
62
- }
63
- if (libraryId) {
64
- ids.add(libraryId);
65
- }
66
- const placeholders = component.placeholders || {};
67
- Object.keys(placeholders).forEach((placeholder) => {
68
- traversePlaceholder(placeholders[placeholder], ids);
69
- });
70
- };
1
+ import { getFieldValue } from '.';
2
+ import { SITECORE_EDGE_URL_DEFAULT } from '../constants';
3
+ import { normalizeUrl } from '../utils/normalize-url';
4
+ /**
5
+ * Pattern for library ids
6
+ * @example -library--foo
7
+ */
8
+ const STYLES_LIBRARY_ID_REGEX = /-library--([^\s]+)/;
9
+ /**
10
+ * Walks through rendering tree and returns list of links of all FEAAS, BYOC or SXA Design Library Stylesheets that are used
11
+ * @param {LayoutServiceData} layoutData Layout service data
12
+ * @param {string} sitecoreEdgeContextId Sitecore Edge Context ID
13
+ * @param {string} [sitecoreEdgeUrl] Sitecore Edge Platform URL. Default is https://edge-platform.sitecorecloud.io
14
+ * @returns {HTMLLink[]} library stylesheet links
15
+ * @public
16
+ */
17
+ export function getDesignLibraryStylesheetLinks(layoutData, sitecoreEdgeContextId, sitecoreEdgeUrl = SITECORE_EDGE_URL_DEFAULT) {
18
+ const ids = new Set();
19
+ if (!layoutData.sitecore.route)
20
+ return [];
21
+ traverseComponent(layoutData.sitecore.route, ids);
22
+ return [...ids].map((id) => ({
23
+ href: getStylesheetUrl(id, sitecoreEdgeContextId, sitecoreEdgeUrl),
24
+ rel: 'stylesheet',
25
+ }));
26
+ }
27
+ export const getStylesheetUrl = (id, sitecoreEdgeContextId, sitecoreEdgeUrl = SITECORE_EDGE_URL_DEFAULT) => {
28
+ return `${normalizeUrl(sitecoreEdgeUrl)}/v1/files/components/styles/${id}.css?sitecoreContextId=${sitecoreEdgeContextId}`;
29
+ };
30
+ /**
31
+ * Traverse placeholder and components to add library ids
32
+ * @param {ComponentRendering[]} components
33
+ * @param {Set<string>} ids library ids
34
+ */
35
+ const traversePlaceholder = (components, ids) => {
36
+ components.map((component) => {
37
+ return traverseComponent(component, ids);
38
+ });
39
+ };
40
+ /**
41
+ * Traverse component and children to add library ids
42
+ * @param {RouteData | ComponentRendering | HtmlElementRendering} component component data
43
+ * @param {Set<string>} ids library ids
44
+ */
45
+ const traverseComponent = (component, ids) => {
46
+ var _a, _b, _c, _d, _e, _f;
47
+ let libraryId = undefined;
48
+ if ('params' in component && component.params) {
49
+ // LibraryID in css class name takes precedence over LibraryId attribute
50
+ libraryId =
51
+ ((_b = (_a = component.params.CSSStyles) === null || _a === void 0 ? void 0 : _a.match(STYLES_LIBRARY_ID_REGEX)) === null || _b === void 0 ? void 0 : _b[1]) ||
52
+ ((_d = (_c = component.params.Styles) === null || _c === void 0 ? void 0 : _c.match(STYLES_LIBRARY_ID_REGEX)) === null || _d === void 0 ? void 0 : _d[1]) ||
53
+ component.params.LibraryId ||
54
+ undefined;
55
+ }
56
+ // if params are empty we try to fall back to data source
57
+ if (!libraryId && 'fields' in component && component.fields) {
58
+ libraryId =
59
+ ((_e = getFieldValue(component.fields, 'CSSStyles', '').match(STYLES_LIBRARY_ID_REGEX)) === null || _e === void 0 ? void 0 : _e[1]) ||
60
+ ((_f = getFieldValue(component.fields, 'Styles', '').match(STYLES_LIBRARY_ID_REGEX)) === null || _f === void 0 ? void 0 : _f[1]) ||
61
+ getFieldValue(component.fields, 'LibraryId', '') ||
62
+ undefined;
63
+ }
64
+ if (libraryId) {
65
+ ids.add(libraryId);
66
+ }
67
+ const placeholders = component.placeholders || {};
68
+ Object.keys(placeholders).forEach((placeholder) => {
69
+ traversePlaceholder(placeholders[placeholder], ids);
70
+ });
71
+ };