@sitecore-content-sdk/core 1.5.0 → 2.0.0-canary.10

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 (337) hide show
  1. package/LICENSE.txt +202 -202
  2. package/dist/cjs/constants.js +7 -21
  3. package/dist/cjs/debug.js +14 -18
  4. package/dist/cjs/graphql-request-client.js +10 -5
  5. package/dist/cjs/index.js +3 -7
  6. package/dist/cjs/native-fetcher.js +1 -1
  7. package/dist/cjs/{utils → tools}/ensurePath.js +1 -0
  8. package/dist/cjs/{media/index.js → tools/index-node.js} +27 -3
  9. package/dist/cjs/tools/index.js +28 -72
  10. package/dist/cjs/tools/{generateMetadata.js → metadata/generateMetadata.js} +2 -2
  11. package/dist/cjs/tools/metadata/index.js +5 -0
  12. package/dist/cjs/{editing → tools/metadata}/metadata.js +1 -6
  13. package/dist/cjs/tools/normalize-env-value.js +22 -0
  14. package/dist/cjs/{utils → tools}/normalize-url.js +6 -0
  15. package/dist/cjs/tools/resolve-edge-url.js +95 -0
  16. package/dist/cjs/{utils → tools}/utils.js +6 -64
  17. package/dist/esm/constants.js +6 -20
  18. package/dist/esm/debug.js +13 -17
  19. package/dist/esm/graphql-request-client.js +10 -5
  20. package/dist/esm/index.js +1 -6
  21. package/dist/esm/native-fetcher.js +1 -1
  22. package/dist/esm/{utils → tools}/ensurePath.js +1 -0
  23. package/dist/esm/tools/index-node.js +22 -0
  24. package/dist/esm/tools/index.js +6 -28
  25. package/dist/esm/tools/{generateMetadata.js → metadata/generateMetadata.js} +2 -2
  26. package/dist/esm/tools/metadata/index.js +1 -0
  27. package/dist/esm/{editing → tools/metadata}/metadata.js +1 -6
  28. package/dist/esm/tools/normalize-env-value.js +19 -0
  29. package/dist/esm/tools/normalize-url.js +7 -0
  30. package/dist/esm/tools/resolve-edge-url.js +89 -0
  31. package/dist/esm/{utils → tools}/utils.js +5 -61
  32. package/node-tools.d.ts +1 -0
  33. package/package.json +98 -163
  34. package/types/constants.d.ts +6 -17
  35. package/types/constants.d.ts.map +1 -1
  36. package/types/debug.d.ts +13 -13
  37. package/types/debug.d.ts.map +1 -1
  38. package/types/graphql-request-client.d.ts +8 -2
  39. package/types/graphql-request-client.d.ts.map +1 -1
  40. package/types/index.d.ts +3 -6
  41. package/types/index.d.ts.map +1 -1
  42. package/types/models.d.ts +0 -31
  43. package/types/models.d.ts.map +1 -1
  44. package/types/{utils → tools}/ensurePath.d.ts +1 -0
  45. package/types/tools/ensurePath.d.ts.map +1 -0
  46. package/types/{utils → tools}/globalCache.d.ts.map +1 -1
  47. package/types/tools/index-node.d.ts +14 -0
  48. package/types/tools/index-node.d.ts.map +1 -0
  49. package/types/tools/index.d.ts +5 -21
  50. package/types/tools/index.d.ts.map +1 -1
  51. package/types/tools/is-server.d.ts.map +1 -0
  52. package/types/tools/metadata/generateMetadata.d.ts.map +1 -0
  53. package/types/tools/metadata/index.d.ts +3 -0
  54. package/types/tools/metadata/index.d.ts.map +1 -0
  55. package/types/{editing → tools/metadata}/metadata.d.ts +9 -1
  56. package/types/tools/metadata/metadata.d.ts.map +1 -0
  57. package/types/tools/normalize-env-value.d.ts +10 -0
  58. package/types/tools/normalize-env-value.d.ts.map +1 -0
  59. package/types/tools/normalize-url.d.ts +8 -0
  60. package/types/tools/normalize-url.d.ts.map +1 -0
  61. package/types/tools/resolve-edge-url.d.ts +52 -0
  62. package/types/tools/resolve-edge-url.d.ts.map +1 -0
  63. package/types/{utils → tools}/timeout-promise.d.ts.map +1 -1
  64. package/types/{utils → tools}/utils.d.ts +6 -26
  65. package/types/tools/utils.d.ts.map +1 -0
  66. package/client.d.ts +0 -1
  67. package/codegen.d.ts +0 -1
  68. package/config-cli.d.ts +0 -1
  69. package/config.d.ts +0 -1
  70. package/dist/cjs/client/constants.js +0 -7
  71. package/dist/cjs/client/edge-proxy.js +0 -24
  72. package/dist/cjs/client/index.js +0 -15
  73. package/dist/cjs/client/models.js +0 -2
  74. package/dist/cjs/client/sitecore-client.js +0 -424
  75. package/dist/cjs/client/utils.js +0 -51
  76. package/dist/cjs/config/define-config.js +0 -195
  77. package/dist/cjs/config/index.js +0 -7
  78. package/dist/cjs/config/models.js +0 -12
  79. package/dist/cjs/config-cli/define-cli-config.js +0 -23
  80. package/dist/cjs/config-cli/index.js +0 -7
  81. package/dist/cjs/config-cli/models.js +0 -8
  82. package/dist/cjs/editing/codegen/index.js +0 -15
  83. package/dist/cjs/editing/codegen/preview.js +0 -306
  84. package/dist/cjs/editing/component-layout-service.js +0 -63
  85. package/dist/cjs/editing/design-library.js +0 -190
  86. package/dist/cjs/editing/editing-service.js +0 -81
  87. package/dist/cjs/editing/index.js +0 -34
  88. package/dist/cjs/editing/models.js +0 -44
  89. package/dist/cjs/editing/utils.js +0 -108
  90. package/dist/cjs/form/form.js +0 -81
  91. package/dist/cjs/form/index.js +0 -7
  92. package/dist/cjs/i18n/dictionary-service.js +0 -144
  93. package/dist/cjs/i18n/index.js +0 -7
  94. package/dist/cjs/i18n/utils.js +0 -16
  95. package/dist/cjs/layout/content-styles.js +0 -72
  96. package/dist/cjs/layout/index.js +0 -24
  97. package/dist/cjs/layout/layout-service.js +0 -68
  98. package/dist/cjs/layout/models.js +0 -39
  99. package/dist/cjs/layout/themes.js +0 -76
  100. package/dist/cjs/layout/utils.js +0 -117
  101. package/dist/cjs/media/media-api.js +0 -100
  102. package/dist/cjs/personalize/index.js +0 -15
  103. package/dist/cjs/personalize/layout-personalizer.js +0 -98
  104. package/dist/cjs/personalize/personalize-service.js +0 -109
  105. package/dist/cjs/personalize/utils.js +0 -143
  106. package/dist/cjs/site/error-pages-service.js +0 -82
  107. package/dist/cjs/site/index.js +0 -26
  108. package/dist/cjs/site/models.js +0 -2
  109. package/dist/cjs/site/redirects-service.js +0 -108
  110. package/dist/cjs/site/robots-service.js +0 -74
  111. package/dist/cjs/site/site-resolver.js +0 -73
  112. package/dist/cjs/site/siteinfo-service.js +0 -94
  113. package/dist/cjs/site/sitemap-xml-service.js +0 -92
  114. package/dist/cjs/site/sitepath-service.js +0 -201
  115. package/dist/cjs/site/utils.js +0 -55
  116. package/dist/cjs/sitecore-service-base.js +0 -36
  117. package/dist/cjs/tools/codegen/component-generation.js +0 -52
  118. package/dist/cjs/tools/codegen/extract-files.js +0 -105
  119. package/dist/cjs/tools/codegen/import-map.js +0 -411
  120. package/dist/cjs/tools/codegen/utils.js +0 -418
  121. package/dist/cjs/tools/generate-map.js +0 -2
  122. package/dist/cjs/tools/generateSites.js +0 -59
  123. package/dist/cjs/tools/scaffold.js +0 -62
  124. package/dist/cjs/tools/templating/components.js +0 -96
  125. package/dist/cjs/tools/templating/index.js +0 -11
  126. package/dist/cjs/tools/templating/plugins.js +0 -80
  127. package/dist/cjs/tools/templating/utils.js +0 -67
  128. package/dist/cjs/utils/env.js +0 -28
  129. package/dist/cjs/utils/index.js +0 -26
  130. package/dist/esm/client/constants.js +0 -4
  131. package/dist/esm/client/edge-proxy.js +0 -19
  132. package/dist/esm/client/index.js +0 -5
  133. package/dist/esm/client/models.js +0 -1
  134. package/dist/esm/client/sitecore-client.js +0 -417
  135. package/dist/esm/client/utils.js +0 -47
  136. package/dist/esm/config/define-config.js +0 -189
  137. package/dist/esm/config/index.js +0 -2
  138. package/dist/esm/config/models.js +0 -9
  139. package/dist/esm/config-cli/define-cli-config.js +0 -19
  140. package/dist/esm/config-cli/index.js +0 -2
  141. package/dist/esm/config-cli/models.js +0 -5
  142. package/dist/esm/editing/codegen/index.js +0 -1
  143. package/dist/esm/editing/codegen/preview.js +0 -288
  144. package/dist/esm/editing/component-layout-service.js +0 -56
  145. package/dist/esm/editing/design-library.js +0 -178
  146. package/dist/esm/editing/editing-service.js +0 -74
  147. package/dist/esm/editing/index.js +0 -6
  148. package/dist/esm/editing/models.js +0 -41
  149. package/dist/esm/editing/utils.js +0 -98
  150. package/dist/esm/form/form.js +0 -72
  151. package/dist/esm/form/index.js +0 -1
  152. package/dist/esm/i18n/dictionary-service.js +0 -137
  153. package/dist/esm/i18n/index.js +0 -2
  154. package/dist/esm/i18n/utils.js +0 -13
  155. package/dist/esm/layout/content-styles.js +0 -64
  156. package/dist/esm/layout/index.js +0 -6
  157. package/dist/esm/layout/layout-service.js +0 -61
  158. package/dist/esm/layout/models.js +0 -36
  159. package/dist/esm/layout/themes.js +0 -71
  160. package/dist/esm/layout/utils.js +0 -109
  161. package/dist/esm/media/index.js +0 -2
  162. package/dist/esm/media/media-api.js +0 -90
  163. package/dist/esm/personalize/index.js +0 -3
  164. package/dist/esm/personalize/layout-personalizer.js +0 -93
  165. package/dist/esm/personalize/personalize-service.js +0 -102
  166. package/dist/esm/personalize/utils.js +0 -135
  167. package/dist/esm/site/error-pages-service.js +0 -75
  168. package/dist/esm/site/index.js +0 -8
  169. package/dist/esm/site/models.js +0 -1
  170. package/dist/esm/site/redirects-service.js +0 -101
  171. package/dist/esm/site/robots-service.js +0 -67
  172. package/dist/esm/site/site-resolver.js +0 -69
  173. package/dist/esm/site/siteinfo-service.js +0 -87
  174. package/dist/esm/site/sitemap-xml-service.js +0 -85
  175. package/dist/esm/site/sitepath-service.js +0 -193
  176. package/dist/esm/site/utils.js +0 -49
  177. package/dist/esm/sitecore-service-base.js +0 -29
  178. package/dist/esm/tools/codegen/component-generation.js +0 -44
  179. package/dist/esm/tools/codegen/extract-files.js +0 -99
  180. package/dist/esm/tools/codegen/import-map.js +0 -368
  181. package/dist/esm/tools/codegen/utils.js +0 -373
  182. package/dist/esm/tools/generate-map.js +0 -1
  183. package/dist/esm/tools/generateSites.js +0 -52
  184. package/dist/esm/tools/scaffold.js +0 -54
  185. package/dist/esm/tools/templating/components.js +0 -59
  186. package/dist/esm/tools/templating/index.js +0 -3
  187. package/dist/esm/tools/templating/plugins.js +0 -72
  188. package/dist/esm/tools/templating/utils.js +0 -59
  189. package/dist/esm/utils/env.js +0 -24
  190. package/dist/esm/utils/index.js +0 -4
  191. package/dist/esm/utils/normalize-url.js +0 -1
  192. package/editing.d.ts +0 -1
  193. package/i18n.d.ts +0 -1
  194. package/layout.d.ts +0 -1
  195. package/media.d.ts +0 -1
  196. package/personalize.d.ts +0 -1
  197. package/site.d.ts +0 -1
  198. package/types/client/constants.d.ts +0 -5
  199. package/types/client/constants.d.ts.map +0 -1
  200. package/types/client/edge-proxy.d.ts +0 -18
  201. package/types/client/edge-proxy.d.ts.map +0 -1
  202. package/types/client/index.d.ts +0 -8
  203. package/types/client/index.d.ts.map +0 -1
  204. package/types/client/models.d.ts +0 -21
  205. package/types/client/models.d.ts.map +0 -1
  206. package/types/client/sitecore-client.d.ts +0 -338
  207. package/types/client/sitecore-client.d.ts.map +0 -1
  208. package/types/client/utils.d.ts +0 -15
  209. package/types/client/utils.d.ts.map +0 -1
  210. package/types/config/define-config.d.ts +0 -20
  211. package/types/config/define-config.d.ts.map +0 -1
  212. package/types/config/index.d.ts +0 -3
  213. package/types/config/index.d.ts.map +0 -1
  214. package/types/config/models.d.ts +0 -287
  215. package/types/config/models.d.ts.map +0 -1
  216. package/types/config-cli/define-cli-config.d.ts +0 -9
  217. package/types/config-cli/define-cli-config.d.ts.map +0 -1
  218. package/types/config-cli/index.d.ts +0 -3
  219. package/types/config-cli/index.d.ts.map +0 -1
  220. package/types/config-cli/models.d.ts +0 -6
  221. package/types/config-cli/models.d.ts.map +0 -1
  222. package/types/editing/codegen/index.d.ts +0 -2
  223. package/types/editing/codegen/index.d.ts.map +0 -1
  224. package/types/editing/codegen/preview.d.ts +0 -289
  225. package/types/editing/codegen/preview.d.ts.map +0 -1
  226. package/types/editing/component-layout-service.d.ts +0 -84
  227. package/types/editing/component-layout-service.d.ts.map +0 -1
  228. package/types/editing/design-library.d.ts +0 -118
  229. package/types/editing/design-library.d.ts.map +0 -1
  230. package/types/editing/editing-service.d.ts +0 -72
  231. package/types/editing/editing-service.d.ts.map +0 -1
  232. package/types/editing/index.d.ts +0 -7
  233. package/types/editing/index.d.ts.map +0 -1
  234. package/types/editing/metadata.d.ts.map +0 -1
  235. package/types/editing/models.d.ts +0 -103
  236. package/types/editing/models.d.ts.map +0 -1
  237. package/types/editing/utils.d.ts +0 -91
  238. package/types/editing/utils.d.ts.map +0 -1
  239. package/types/form/form.d.ts +0 -25
  240. package/types/form/form.d.ts.map +0 -1
  241. package/types/form/index.d.ts +0 -2
  242. package/types/form/index.d.ts.map +0 -1
  243. package/types/i18n/dictionary-service.d.ts +0 -135
  244. package/types/i18n/dictionary-service.d.ts.map +0 -1
  245. package/types/i18n/index.d.ts +0 -3
  246. package/types/i18n/index.d.ts.map +0 -1
  247. package/types/i18n/utils.d.ts +0 -9
  248. package/types/i18n/utils.d.ts.map +0 -1
  249. package/types/layout/content-styles.d.ts +0 -20
  250. package/types/layout/content-styles.d.ts.map +0 -1
  251. package/types/layout/index.d.ts +0 -6
  252. package/types/layout/index.d.ts.map +0 -1
  253. package/types/layout/layout-service.d.ts +0 -45
  254. package/types/layout/layout-service.d.ts.map +0 -1
  255. package/types/layout/models.d.ts +0 -174
  256. package/types/layout/models.d.ts.map +0 -1
  257. package/types/layout/themes.d.ts +0 -13
  258. package/types/layout/themes.d.ts.map +0 -1
  259. package/types/layout/utils.d.ts +0 -56
  260. package/types/layout/utils.d.ts.map +0 -1
  261. package/types/media/index.d.ts +0 -3
  262. package/types/media/index.d.ts.map +0 -1
  263. package/types/media/media-api.d.ts +0 -60
  264. package/types/media/media-api.d.ts.map +0 -1
  265. package/types/personalize/index.d.ts +0 -4
  266. package/types/personalize/index.d.ts.map +0 -1
  267. package/types/personalize/layout-personalizer.d.ts +0 -29
  268. package/types/personalize/layout-personalizer.d.ts.map +0 -1
  269. package/types/personalize/personalize-service.d.ts +0 -90
  270. package/types/personalize/personalize-service.d.ts.map +0 -1
  271. package/types/personalize/utils.d.ts +0 -78
  272. package/types/personalize/utils.d.ts.map +0 -1
  273. package/types/site/error-pages-service.d.ts +0 -64
  274. package/types/site/error-pages-service.d.ts.map +0 -1
  275. package/types/site/index.d.ts +0 -10
  276. package/types/site/index.d.ts.map +0 -1
  277. package/types/site/models.d.ts +0 -23
  278. package/types/site/models.d.ts.map +0 -1
  279. package/types/site/redirects-service.d.ts +0 -92
  280. package/types/site/redirects-service.d.ts.map +0 -1
  281. package/types/site/robots-service.d.ts +0 -57
  282. package/types/site/robots-service.d.ts.map +0 -1
  283. package/types/site/site-resolver.d.ts +0 -28
  284. package/types/site/site-resolver.d.ts.map +0 -1
  285. package/types/site/siteinfo-service.d.ts +0 -65
  286. package/types/site/siteinfo-service.d.ts.map +0 -1
  287. package/types/site/sitemap-xml-service.d.ts +0 -63
  288. package/types/site/sitemap-xml-service.d.ts.map +0 -1
  289. package/types/site/sitepath-service.d.ts +0 -137
  290. package/types/site/sitepath-service.d.ts.map +0 -1
  291. package/types/site/utils.d.ts +0 -41
  292. package/types/site/utils.d.ts.map +0 -1
  293. package/types/sitecore-service-base.d.ts +0 -31
  294. package/types/sitecore-service-base.d.ts.map +0 -1
  295. package/types/tools/codegen/component-generation.d.ts +0 -50
  296. package/types/tools/codegen/component-generation.d.ts.map +0 -1
  297. package/types/tools/codegen/extract-files.d.ts +0 -24
  298. package/types/tools/codegen/extract-files.d.ts.map +0 -1
  299. package/types/tools/codegen/import-map.d.ts +0 -102
  300. package/types/tools/codegen/import-map.d.ts.map +0 -1
  301. package/types/tools/codegen/utils.d.ts +0 -76
  302. package/types/tools/codegen/utils.d.ts.map +0 -1
  303. package/types/tools/generate-map.d.ts +0 -36
  304. package/types/tools/generate-map.d.ts.map +0 -1
  305. package/types/tools/generateMetadata.d.ts.map +0 -1
  306. package/types/tools/generateSites.d.ts +0 -25
  307. package/types/tools/generateSites.d.ts.map +0 -1
  308. package/types/tools/scaffold.d.ts +0 -27
  309. package/types/tools/scaffold.d.ts.map +0 -1
  310. package/types/tools/templating/components.d.ts +0 -104
  311. package/types/tools/templating/components.d.ts.map +0 -1
  312. package/types/tools/templating/index.d.ts +0 -4
  313. package/types/tools/templating/index.d.ts.map +0 -1
  314. package/types/tools/templating/plugins.d.ts +0 -71
  315. package/types/tools/templating/plugins.d.ts.map +0 -1
  316. package/types/tools/templating/utils.d.ts +0 -42
  317. package/types/tools/templating/utils.d.ts.map +0 -1
  318. package/types/utils/ensurePath.d.ts.map +0 -1
  319. package/types/utils/env.d.ts +0 -9
  320. package/types/utils/env.d.ts.map +0 -1
  321. package/types/utils/index.d.ts +0 -5
  322. package/types/utils/index.d.ts.map +0 -1
  323. package/types/utils/is-server.d.ts.map +0 -1
  324. package/types/utils/normalize-url.d.ts +0 -2
  325. package/types/utils/normalize-url.d.ts.map +0 -1
  326. package/types/utils/utils.d.ts.map +0 -1
  327. package/utils.d.ts +0 -1
  328. /package/dist/cjs/{utils → tools}/globalCache.js +0 -0
  329. /package/dist/cjs/{utils → tools}/is-server.js +0 -0
  330. /package/dist/cjs/{utils → tools}/timeout-promise.js +0 -0
  331. /package/dist/esm/{utils → tools}/globalCache.js +0 -0
  332. /package/dist/esm/{utils → tools}/is-server.js +0 -0
  333. /package/dist/esm/{utils → tools}/timeout-promise.js +0 -0
  334. /package/types/{utils → tools}/globalCache.d.ts +0 -0
  335. /package/types/{utils → tools}/is-server.d.ts +0 -0
  336. /package/types/tools/{generateMetadata.d.ts → metadata/generateMetadata.d.ts} +0 -0
  337. /package/types/{utils → tools}/timeout-promise.d.ts +0 -0
@@ -1,68 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.LayoutService = exports.GRAPHQL_LAYOUT_QUERY_NAME = void 0;
7
- const debug_1 = __importDefault(require("../debug"));
8
- const sitecore_service_base_1 = require("../sitecore-service-base");
9
- /**
10
- * GraphQL layout query name
11
- * @internal
12
- */
13
- exports.GRAPHQL_LAYOUT_QUERY_NAME = 'ContentSdkLayoutQuery';
14
- /**
15
- * Service that fetch layout data using Sitecore's GraphQL API.
16
- * @augments LayoutServiceBase
17
- * @mixes GraphQLRequestClient
18
- * @public
19
- */
20
- class LayoutService extends sitecore_service_base_1.SitecoreServiceBase {
21
- /**
22
- * Fetch layout data using the Sitecore GraphQL endpoint.
23
- * @param {LayoutServiceConfig} serviceConfig configuration
24
- */
25
- constructor(serviceConfig) {
26
- super(serviceConfig);
27
- this.serviceConfig = serviceConfig;
28
- }
29
- /**
30
- * Fetch layout data for an item.
31
- * @param {string} itemPath item path to fetch layout data for.
32
- * @param {RouteOptions} [routeOptions] Request options like language and site to retrieve data for
33
- * @param {FetchOptions} [fetchOptions] Options to override graphQL client details like retries and fetch implementation
34
- * @returns {Promise<LayoutServiceData>} layout service data
35
- */
36
- async fetchLayoutData(itemPath, routeOptions, fetchOptions) {
37
- var _a, _b;
38
- const site = routeOptions.site;
39
- const query = this.getLayoutQuery(itemPath, site, routeOptions === null || routeOptions === void 0 ? void 0 : routeOptions.locale);
40
- debug_1.default.layout('fetching layout data for %s %s %s', itemPath, routeOptions === null || routeOptions === void 0 ? void 0 : routeOptions.locale, site);
41
- const data = await this.graphQLClient.request(query, {}, fetchOptions);
42
- // If `rendered` is empty -> not found
43
- 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) || {
44
- sitecore: { context: { pageEditing: false, language: routeOptions === null || routeOptions === void 0 ? void 0 : routeOptions.locale }, route: null },
45
- });
46
- }
47
- /**
48
- * Returns GraphQL Layout query
49
- * @param {string} itemPath page route
50
- * @param {string} [site] site name
51
- * @param {string} [language] language
52
- * @returns {string} GraphQL query
53
- */
54
- getLayoutQuery(itemPath, site, language) {
55
- const languageVariable = language ? `, language:"${language}"` : '';
56
- const layoutQuery = this.serviceConfig.formatLayoutQuery
57
- ? this.serviceConfig.formatLayoutQuery(site, itemPath, language)
58
- : `layout(site:"${site}", routePath:"${itemPath}"${languageVariable})`;
59
- return `query ${exports.GRAPHQL_LAYOUT_QUERY_NAME} {
60
- ${layoutQuery}{
61
- item {
62
- rendered
63
- }
64
- }
65
- }`;
66
- }
67
- }
68
- exports.LayoutService = LayoutService;
@@ -1,39 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.EDITING_COMPONENT_ID = exports.EDITING_COMPONENT_PLACEHOLDER = exports.RenderingType = exports.EditMode = exports.LayoutServicePageState = void 0;
4
- /**
5
- * Layout Service page state enum
6
- * @public
7
- */
8
- var LayoutServicePageState;
9
- (function (LayoutServicePageState) {
10
- LayoutServicePageState["Preview"] = "preview";
11
- LayoutServicePageState["Edit"] = "edit";
12
- LayoutServicePageState["Normal"] = "normal";
13
- })(LayoutServicePageState || (exports.LayoutServicePageState = LayoutServicePageState = {}));
14
- /**
15
- * Represents the edit mode for rendering content in Sitecore Editors
16
- * @public
17
- */
18
- var EditMode;
19
- (function (EditMode) {
20
- EditMode["Metadata"] = "metadata";
21
- })(EditMode || (exports.EditMode = EditMode = {}));
22
- /**
23
- * Editing rendering type
24
- * @public
25
- */
26
- var RenderingType;
27
- (function (RenderingType) {
28
- RenderingType["Component"] = "component";
29
- })(RenderingType || (exports.RenderingType = RenderingType = {}));
30
- /**
31
- * Static placeholder name used for component rendering
32
- * @internal
33
- */
34
- exports.EDITING_COMPONENT_PLACEHOLDER = 'editing-componentmode-placeholder';
35
- /**
36
- * Id of wrapper for component rendering
37
- * @internal
38
- */
39
- exports.EDITING_COMPONENT_ID = 'editing-component';
@@ -1,76 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getStylesheetUrl = void 0;
4
- exports.getDesignLibraryStylesheetLinks = getDesignLibraryStylesheetLinks;
5
- const _1 = require(".");
6
- const constants_1 = require("../constants");
7
- const normalize_url_1 = require("../utils/normalize-url");
8
- /**
9
- * Pattern for library ids
10
- * @example -library--foo
11
- */
12
- const STYLES_LIBRARY_ID_REGEX = /-library--([^\s]+)/;
13
- /**
14
- * Walks through rendering tree and returns list of links of all FEAAS, BYOC or SXA Design Library Stylesheets that are used
15
- * @param {LayoutServiceData} layoutData Layout service data
16
- * @param {string} sitecoreEdgeContextId Sitecore Edge Context ID
17
- * @param {string} [sitecoreEdgeUrl] Sitecore Edge Platform URL. Default is https://edge-platform.sitecorecloud.io
18
- * @returns {HTMLLink[]} library stylesheet links
19
- * @public
20
- */
21
- function getDesignLibraryStylesheetLinks(layoutData, sitecoreEdgeContextId, sitecoreEdgeUrl = constants_1.SITECORE_EDGE_URL_DEFAULT) {
22
- const ids = new Set();
23
- if (!layoutData.sitecore.route)
24
- return [];
25
- traverseComponent(layoutData.sitecore.route, ids);
26
- return [...ids].map((id) => ({
27
- href: (0, exports.getStylesheetUrl)(id, sitecoreEdgeContextId, sitecoreEdgeUrl),
28
- rel: 'stylesheet',
29
- }));
30
- }
31
- const getStylesheetUrl = (id, sitecoreEdgeContextId, sitecoreEdgeUrl = constants_1.SITECORE_EDGE_URL_DEFAULT) => {
32
- return `${(0, normalize_url_1.normalizeUrl)(sitecoreEdgeUrl)}/v1/files/components/styles/${id}.css?sitecoreContextId=${sitecoreEdgeContextId}`;
33
- };
34
- exports.getStylesheetUrl = getStylesheetUrl;
35
- /**
36
- * Traverse placeholder and components to add library ids
37
- * @param {ComponentRendering[]} components
38
- * @param {Set<string>} ids library ids
39
- */
40
- const traversePlaceholder = (components, ids) => {
41
- components.map((component) => {
42
- return traverseComponent(component, ids);
43
- });
44
- };
45
- /**
46
- * Traverse component and children to add library ids
47
- * @param {RouteData | ComponentRendering | HtmlElementRendering} component component data
48
- * @param {Set<string>} ids library ids
49
- */
50
- const traverseComponent = (component, ids) => {
51
- var _a, _b, _c, _d, _e, _f;
52
- let libraryId = undefined;
53
- if ('params' in component && component.params) {
54
- // LibraryID in css class name takes precedence over LibraryId attribute
55
- libraryId =
56
- ((_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]) ||
57
- ((_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]) ||
58
- component.params.LibraryId ||
59
- undefined;
60
- }
61
- // if params are empty we try to fall back to data source
62
- if (!libraryId && 'fields' in component && component.fields) {
63
- libraryId =
64
- ((_e = (0, _1.getFieldValue)(component.fields, 'CSSStyles', '').match(STYLES_LIBRARY_ID_REGEX)) === null || _e === void 0 ? void 0 : _e[1]) ||
65
- ((_f = (0, _1.getFieldValue)(component.fields, 'Styles', '').match(STYLES_LIBRARY_ID_REGEX)) === null || _f === void 0 ? void 0 : _f[1]) ||
66
- (0, _1.getFieldValue)(component.fields, 'LibraryId', '') ||
67
- undefined;
68
- }
69
- if (libraryId) {
70
- ids.add(libraryId);
71
- }
72
- const placeholders = component.placeholders || {};
73
- Object.keys(placeholders).forEach((placeholder) => {
74
- traversePlaceholder(placeholders[placeholder], ids);
75
- });
76
- };
@@ -1,117 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.EMPTY_DATE_FIELD_VALUE = exports.isDynamicPlaceholder = exports.getDynamicPlaceholderPattern = void 0;
4
- exports.getFieldValue = getFieldValue;
5
- exports.getChildPlaceholder = getChildPlaceholder;
6
- exports.isFieldValueEmpty = isFieldValueEmpty;
7
- /**
8
- * @param {ComponentRendering | Fields} renderingOrFields the rendering or fields object to extract the field from
9
- * @param {string} fieldName the name of the field to extract
10
- * @param {T} [defaultValue] the default value to return if the field is not defined
11
- * @returns {Field | T} the field value or the default value if the field is not defined
12
- * @public
13
- */
14
- // eslint-disable-next-line no-redeclare
15
- function getFieldValue(renderingOrFields, fieldName, defaultValue) {
16
- if (!renderingOrFields || !fieldName) {
17
- return defaultValue;
18
- }
19
- const fields = renderingOrFields;
20
- const field = fields[fieldName];
21
- if (field && typeof field.value !== 'undefined') {
22
- return field.value;
23
- }
24
- const rendering = renderingOrFields;
25
- if (!rendering.fields ||
26
- !rendering.fields[fieldName] ||
27
- typeof rendering.fields[fieldName].value === 'undefined') {
28
- return defaultValue;
29
- }
30
- return rendering.fields[fieldName].value;
31
- }
32
- /**
33
- * Gets rendering definitions in a given child placeholder under a current rendering.
34
- * @param {ComponentRendering} rendering
35
- * @param {string} placeholderName
36
- * @returns {ComponentRendering[]} child placeholder
37
- * @public
38
- */
39
- function getChildPlaceholder(rendering, placeholderName) {
40
- if (!rendering ||
41
- !placeholderName ||
42
- !rendering.placeholders ||
43
- !rendering.placeholders[placeholderName]) {
44
- return [];
45
- }
46
- return rendering.placeholders[placeholderName];
47
- }
48
- /**
49
- * Returns a regular expression pattern for a dynamic placeholder name.
50
- * @param {string} placeholder Placeholder name with a dynamic segment (e.g. 'main-{*}')
51
- * @returns Regular expression pattern for the dynamic segment
52
- * @internal
53
- */
54
- const getDynamicPlaceholderPattern = (placeholder) => {
55
- return new RegExp(`^${placeholder.replace(/\{\*\}+/i, '\\d+')}$`);
56
- };
57
- exports.getDynamicPlaceholderPattern = getDynamicPlaceholderPattern;
58
- /**
59
- * Checks if the placeholder name is dynamic.
60
- * @param {string} placeholder Placeholder name
61
- * @returns True if the placeholder name is dynamic
62
- * @internal
63
- */
64
- const isDynamicPlaceholder = (placeholder) => placeholder.indexOf('{*}') !== -1;
65
- exports.isDynamicPlaceholder = isDynamicPlaceholder;
66
- /**
67
- * The default value for an empty Date field.
68
- * This value is defined as a default one by .NET
69
- * @internal
70
- */
71
- exports.EMPTY_DATE_FIELD_VALUE = '0001-01-01T00:00:00Z';
72
- /**
73
- * Determines if the passed in field object's value is empty.
74
- * @param {GenericFieldValue | Partial<Field>} field the field object.
75
- * Partial<T> type is used here because _field.value_ could be required or optional for the different field types
76
- * @returns True if the field value is empty
77
- * @public
78
- */
79
- function isFieldValueEmpty(field) {
80
- if (!field)
81
- return true;
82
- const isImageFieldEmpty = (fieldValue) => !fieldValue.src;
83
- const isFileFieldEmpty = (fieldValue) => !fieldValue.src;
84
- const isLinkFieldEmpty = (fieldValue) => !fieldValue.href;
85
- const isDateFieldEmpty = (fieldValue) => {
86
- if (typeof fieldValue === 'string') {
87
- return fieldValue === exports.EMPTY_DATE_FIELD_VALUE;
88
- }
89
- else {
90
- return !(typeof (fieldValue === null || fieldValue === void 0 ? void 0 : fieldValue.getMonth) === 'function' &&
91
- !isNaN(fieldValue === null || fieldValue === void 0 ? void 0 : fieldValue.getMonth()));
92
- }
93
- };
94
- const isEmpty = (fieldValue) => {
95
- if (fieldValue === null || fieldValue === undefined) {
96
- return true;
97
- }
98
- if (typeof fieldValue === 'object') {
99
- return (isImageFieldEmpty(fieldValue) &&
100
- isFileFieldEmpty(fieldValue) &&
101
- isLinkFieldEmpty(fieldValue) &&
102
- isDateFieldEmpty(fieldValue));
103
- }
104
- else if (typeof fieldValue === 'number' || typeof fieldValue === 'boolean') {
105
- // Avoid returning true for 0 and false values
106
- return false;
107
- }
108
- else {
109
- return !fieldValue || isDateFieldEmpty(fieldValue);
110
- }
111
- };
112
- const dynamicField = field;
113
- if (dynamicField.value !== undefined) {
114
- return isEmpty(dynamicField.value);
115
- }
116
- return isEmpty(field);
117
- }
@@ -1,100 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.getSrcSet = exports.updateImageUrl = exports.replaceMediaUrlPrefix = exports.getRequiredParams = void 0;
7
- const url_parse_1 = __importDefault(require("url-parse"));
8
- // finds the Sitecore media URL prefix
9
- const mediaUrlPrefixRegex = /\/([-~]{1})\/media\//i;
10
- /**
11
- * Get required query string params which should be merged with user params
12
- * @param {object} qs layout service parsed query string
13
- * @returns {object} requiredParams
14
- * @public
15
- */
16
- const getRequiredParams = (qs) => {
17
- const { rev, db, la, vs, ts } = qs;
18
- return { rev, db, la, vs, ts };
19
- };
20
- exports.getRequiredParams = getRequiredParams;
21
- /**
22
- * Replace `/~/media` or `/-/media` with `/~/jssmedia` or `/-/jssmedia`, respectively.
23
- * Can use `mediaUrlPrefix` in order to use a custom prefix.
24
- * @param {string} url The URL to replace the media URL prefix in
25
- * @param {RegExp} [mediaUrlPrefix] The regex to match the media URL prefix
26
- * @returns {string} The URL with the media URL prefix replaced
27
- * @public
28
- */
29
- const replaceMediaUrlPrefix = (url, mediaUrlPrefix = mediaUrlPrefixRegex) => {
30
- const parsed = (0, url_parse_1.default)(url, {}, true);
31
- const match = mediaUrlPrefix.exec(parsed.pathname);
32
- if (match && match.length > 1) {
33
- // regex will provide us with /-/ or /~/ type
34
- parsed.set('pathname', parsed.pathname.replace(mediaUrlPrefix, `/${match[1]}/jssmedia/`));
35
- }
36
- return parsed.toString();
37
- };
38
- exports.replaceMediaUrlPrefix = replaceMediaUrlPrefix;
39
- /**
40
- * Prepares a Sitecore media URL with `params` for use by the Content SDK media handler.
41
- * This is done by replacing `/~/media` or `/-/media` with `/~/jssmedia` or `/-/jssmedia`, respectively.
42
- * Provided `params` are used as the querystring parameters for the media URL.
43
- * Can use `mediaUrlPrefix` in order to use a custom prefix.
44
- * If no `params` are sent, the original media URL is returned.
45
- * @param {string} url The URL to prepare
46
- * @param {object} [params] The querystring parameters to use
47
- * @param {RegExp} [mediaUrlPrefix] The regex to match the media URL prefix
48
- * @returns {string} The prepared URL
49
- * @public
50
- */
51
- const updateImageUrl = (url, params, mediaUrlPrefix = mediaUrlPrefixRegex) => {
52
- if (!params || Object.keys(params).length === 0) {
53
- // if params aren't supplied, no need to run it through Content SDK media handler
54
- return url;
55
- }
56
- // polyfill node `global` in browser to workaround https://github.com/unshiftio/url-parse/issues/150
57
- if (typeof window !== 'undefined' && !window.global) {
58
- window.global = {};
59
- }
60
- const parsed = (0, url_parse_1.default)((0, exports.replaceMediaUrlPrefix)(url, mediaUrlPrefix), {}, true);
61
- const requiredParams = (0, exports.getRequiredParams)(parsed.query);
62
- const query = Object.assign({}, params);
63
- Object.entries(requiredParams).forEach(([key, param]) => {
64
- if (param) {
65
- query[key] = param;
66
- }
67
- });
68
- parsed.set('query', query);
69
- return parsed.toString();
70
- };
71
- exports.updateImageUrl = updateImageUrl;
72
- /**
73
- * Receives an array of `srcSet` parameters that are iterated and used as parameters to generate
74
- * a corresponding set of updated Sitecore media URLs via @see updateImageUrl. The result is a comma-delimited
75
- * list of media URLs with respective dimension parameters.
76
- * @example
77
- * // returns '/ipsum.jpg?h=1000&w=1000 1000w, /ipsum.jpg?mh=250&mw=250 250w'
78
- * getSrcSet('/ipsum.jpg', [{ h: 1000, w: 1000 }, { mh: 250, mw: 250 } ])
79
- * More information about `srcSet`: {@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img}
80
- * @param {string} url The URL to prepare
81
- * @param {Array} srcSet The array of parameters to use
82
- * @param {object} [imageParams] The querystring parameters to use
83
- * @param {RegExp} [mediaUrlPrefix] The regex to match the media URL prefix
84
- * @returns {string} The prepared URL
85
- * @public
86
- */
87
- const getSrcSet = (url, srcSet, imageParams, mediaUrlPrefix) => {
88
- return srcSet
89
- .map((params) => {
90
- const newParams = Object.assign(Object.assign({}, imageParams), params);
91
- const imageWidth = newParams.w || newParams.mw;
92
- if (!imageWidth) {
93
- return null;
94
- }
95
- return `${(0, exports.updateImageUrl)(url, newParams, mediaUrlPrefix)} ${imageWidth}w`;
96
- })
97
- .filter((value) => value)
98
- .join(', ');
99
- };
100
- exports.getSrcSet = getSrcSet;
@@ -1,15 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.VARIANT_PREFIX = exports.DEFAULT_VARIANT = exports.CdpHelper = exports.normalizePersonalizedRewrite = exports.getGroomedVariantIds = exports.getPersonalizedRewriteData = exports.getPersonalizedRewrite = exports.PersonalizeService = exports.personalizeLayout = void 0;
4
- var layout_personalizer_1 = require("./layout-personalizer");
5
- Object.defineProperty(exports, "personalizeLayout", { enumerable: true, get: function () { return layout_personalizer_1.personalizeLayout; } });
6
- var personalize_service_1 = require("./personalize-service");
7
- Object.defineProperty(exports, "PersonalizeService", { enumerable: true, get: function () { return personalize_service_1.PersonalizeService; } });
8
- var utils_1 = require("./utils");
9
- Object.defineProperty(exports, "getPersonalizedRewrite", { enumerable: true, get: function () { return utils_1.getPersonalizedRewrite; } });
10
- Object.defineProperty(exports, "getPersonalizedRewriteData", { enumerable: true, get: function () { return utils_1.getPersonalizedRewriteData; } });
11
- Object.defineProperty(exports, "getGroomedVariantIds", { enumerable: true, get: function () { return utils_1.getGroomedVariantIds; } });
12
- Object.defineProperty(exports, "normalizePersonalizedRewrite", { enumerable: true, get: function () { return utils_1.normalizePersonalizedRewrite; } });
13
- Object.defineProperty(exports, "CdpHelper", { enumerable: true, get: function () { return utils_1.CdpHelper; } });
14
- Object.defineProperty(exports, "DEFAULT_VARIANT", { enumerable: true, get: function () { return utils_1.DEFAULT_VARIANT; } });
15
- Object.defineProperty(exports, "VARIANT_PREFIX", { enumerable: true, get: function () { return utils_1.VARIANT_PREFIX; } });
@@ -1,98 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.personalizeLayout = personalizeLayout;
4
- exports.personalizePlaceholder = personalizePlaceholder;
5
- exports.personalizeComponent = personalizeComponent;
6
- const constants_1 = require("../constants");
7
- const transformToHiddenRenderingVariant = (component) => (Object.assign(Object.assign({}, component), { componentName: constants_1.HIDDEN_RENDERING_NAME, experiences: {} }));
8
- /**
9
- * Apply personalization to layout data. This will recursively go through all placeholders/components, check experiences nodes and replace default with object from specific experience.
10
- * @param {LayoutServiceData} layout Layout data
11
- * @param {string} variantId variant id
12
- * @param {string[]} [componentVariantIds] component variant ids
13
- * @public
14
- */
15
- function personalizeLayout(layout, variantId, componentVariantIds) {
16
- var _a;
17
- // Add (page-level) variantId to Sitecore context so that it is accessible here
18
- layout.sitecore.context.variantId = variantId;
19
- const placeholders = ((_a = layout.sitecore.route) === null || _a === void 0 ? void 0 : _a.placeholders) || {};
20
- if (Object.keys(placeholders).length === 0) {
21
- return undefined;
22
- }
23
- const isEditing = layout.sitecore.context.pageEditing;
24
- if (placeholders) {
25
- Object.keys(placeholders).forEach((placeholder) => {
26
- placeholders[placeholder] = personalizePlaceholder(placeholders[placeholder], [variantId, ...(componentVariantIds || [])], isEditing);
27
- });
28
- }
29
- return placeholders;
30
- }
31
- /**
32
- * @param {Array} components components within placeholder
33
- * @param {string[]} variantIds variant ids
34
- * @param {boolean} isEditing indicates if page is rendered in metadata edit mode
35
- * @returns {ComponentRendering[]} components with personalization applied
36
- */
37
- function personalizePlaceholder(components, variantIds, isEditing) {
38
- return components
39
- .map((component) => {
40
- const rendering = component;
41
- if (rendering.experiences !== undefined) {
42
- return personalizeComponent(rendering, variantIds, isEditing);
43
- }
44
- else if (rendering.placeholders) {
45
- const placeholders = rendering.placeholders;
46
- Object.keys(placeholders).forEach((placeholder) => {
47
- placeholders[placeholder] = personalizePlaceholder(placeholders[placeholder], variantIds, isEditing);
48
- });
49
- }
50
- return component;
51
- })
52
- .filter(Boolean);
53
- }
54
- /**
55
- * @param {ComponentRenderingWithExperiences} component component with experiences
56
- * @param {string[]} variantIds variant ids
57
- * @param {boolean} isEditing indicates if page is rendered in metadata edit mode
58
- * @returns {ComponentRendering | null} component with personalization applied or null if hidden
59
- */
60
- function personalizeComponent(component, variantIds, isEditing) {
61
- // Check if we have a page/component experience matching any of the variants (there should be at most 1)
62
- const match = Object.keys(component.experiences).find((variantId) => variantIds.includes(variantId));
63
- const variant = match && component.experiences[match];
64
- // variant and componentName can be undefined or null
65
- if (!variant && !component.componentName) {
66
- // DEFAULT IS HIDDEN
67
- if (isEditing) {
68
- component = transformToHiddenRenderingVariant(component);
69
- }
70
- else {
71
- return null;
72
- }
73
- }
74
- else if (variant && variant.componentName === null && variant.dataSource === null) {
75
- // VARIANT IS HIDDEN
76
- if (isEditing) {
77
- component = transformToHiddenRenderingVariant(component);
78
- }
79
- else {
80
- return null;
81
- }
82
- }
83
- else if (variant) {
84
- component = variant;
85
- }
86
- // remove unused experiences from layout data
87
- if (component.experiences) {
88
- component.experiences = {};
89
- }
90
- if (!component.placeholders)
91
- return component;
92
- Object.keys(component === null || component === void 0 ? void 0 : component.placeholders).forEach((placeholder) => {
93
- if (component.placeholders) {
94
- component.placeholders[placeholder] = personalizePlaceholder(component.placeholders[placeholder], variantIds);
95
- }
96
- });
97
- return component;
98
- }
@@ -1,109 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.PersonalizeService = void 0;
7
- const debug_1 = __importDefault(require("../debug"));
8
- const utils_1 = require("../utils");
9
- const cache_client_1 = require("../cache-client");
10
- /**
11
- * Fetch personalize data using the Sitecore GraphQL endpoint.
12
- * @public
13
- */
14
- class PersonalizeService {
15
- /**
16
- * Fetch personalize data using the Sitecore GraphQL endpoint.
17
- * @param {PersonalizeServiceConfig} config
18
- */
19
- constructor(config) {
20
- this.config = config;
21
- this.config.timeout = config.timeout || 400;
22
- this.graphQLClient = this.getGraphQLClient();
23
- this.cache = this.getCacheClient();
24
- }
25
- get query() {
26
- return /* GraphQL */ `
27
- query ($siteName: String!, $language: String!, $itemPath: String!) {
28
- layout(site: $siteName, routePath: $itemPath, language: $language) {
29
- item {
30
- id
31
- version
32
- personalization {
33
- variantIds
34
- }
35
- }
36
- }
37
- }
38
- `;
39
- }
40
- /**
41
- * Get personalize information for a route
42
- * @param {string} itemPath page route
43
- * @param {string} language language
44
- * @param {string} siteName site name
45
- * @returns {Promise<PersonalizeInfo | undefined>} the personalize information or undefined (if itemPath / language not found)
46
- */
47
- async getPersonalizeInfo(itemPath, language, siteName) {
48
- var _a;
49
- // while other graphql services can use fetchOptions, personalize is more sensitive
50
- // we don't allow retries in it since we need to be fast
51
- debug_1.default.personalize('fetching personalize info for %s %s %s', siteName, itemPath, language);
52
- const cacheKey = this.getCacheKey(itemPath, language, siteName);
53
- let data = this.cache.getCacheValue(cacheKey);
54
- if (!data) {
55
- try {
56
- data = await this.graphQLClient.request(this.query, {
57
- siteName,
58
- itemPath,
59
- language,
60
- });
61
- this.cache.setCacheValue(cacheKey, data);
62
- }
63
- catch (error) {
64
- if ((0, utils_1.isTimeoutError)(error)) {
65
- return undefined;
66
- }
67
- throw error;
68
- }
69
- }
70
- return ((_a = data === null || data === void 0 ? void 0 : data.layout) === null || _a === void 0 ? void 0 : _a.item)
71
- ? {
72
- pageId: data.layout.item.id,
73
- variantIds: data.layout.item.personalization.variantIds,
74
- }
75
- : undefined;
76
- }
77
- /**
78
- * Gets cache client implementation
79
- * Override this method if custom cache needs to be used
80
- * @returns CacheClient instance
81
- */
82
- getCacheClient() {
83
- var _a, _b;
84
- return new cache_client_1.MemoryCacheClient({
85
- cacheEnabled: (_a = this.config.cacheEnabled) !== null && _a !== void 0 ? _a : true,
86
- cacheTimeout: (_b = this.config.cacheTimeout) !== null && _b !== void 0 ? _b : 10,
87
- });
88
- }
89
- getCacheKey(itemPath, language, siteName) {
90
- return `${siteName}-${itemPath}-${language}`;
91
- }
92
- /**
93
- * Gets a GraphQL client that can make requests to the API. Uses graphql-request as the default
94
- * library for fetching graphql data (@see GraphQLRequestClient). Override this method if you
95
- * want to use something else.
96
- * @returns {GraphQLClient} implementation
97
- */
98
- getGraphQLClient() {
99
- if (!this.config.clientFactory) {
100
- throw new Error('clientFactory needs to be provided when initializing GraphQL client.');
101
- }
102
- return this.config.clientFactory({
103
- debugger: debug_1.default.personalize,
104
- fetch: this.config.fetch,
105
- timeout: this.config.timeout,
106
- });
107
- }
108
- }
109
- exports.PersonalizeService = PersonalizeService;