@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,172 +1,187 @@
1
- var __rest = (this && this.__rest) || function (s, e) {
2
- var t = {};
3
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
4
- t[p] = s[p];
5
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
6
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
7
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
8
- t[p[i]] = s[p[i]];
9
- }
10
- return t;
11
- };
12
- import debuggers from './debug';
13
- import TimeoutPromise from './utils/timeout-promise';
14
- export class NativeDataFetcher {
15
- constructor(config = {}) {
16
- this.config = config;
17
- }
18
- /**
19
- * Implements a data fetcher.
20
- * @param {string} url The URL to request (may include query string)
21
- * @param {RequestInit} [options] Optional fetch options
22
- * @returns {Promise<NativeDataFetcherResponse<T>>} response
23
- */
24
- async fetch(url, options = {}) {
25
- var _a;
26
- const _b = this.config, { debugger: debugOverride, fetch: fetchOverride } = _b, init = __rest(_b, ["debugger", "fetch"]);
27
- const startTimestamp = Date.now();
28
- const fetchImpl = fetchOverride || fetch;
29
- const debug = debugOverride || debuggers.http;
30
- const requestInit = this.getRequestInit(Object.assign(Object.assign({}, init), options));
31
- const fetchWithOptionalTimeout = [fetchImpl(url, requestInit)];
32
- if (init.timeout) {
33
- this.abortTimeout = new TimeoutPromise(init.timeout);
34
- fetchWithOptionalTimeout.push(this.abortTimeout.start);
35
- }
36
- debug('Request initiated: %o', Object.assign({ url, headers: this.extractDebugHeaders(requestInit.headers) }, requestInit));
37
- try {
38
- const response = await Promise.race(fetchWithOptionalTimeout).then((res) => {
39
- var _a;
40
- (_a = this.abortTimeout) === null || _a === void 0 ? void 0 : _a.clear();
41
- return res;
42
- });
43
- const respData = await this.parseResponse(response, debug);
44
- if (!response.ok) {
45
- const error = this.createError(response, respData);
46
- debug('Response error: %o', error.response);
47
- throw error;
48
- }
49
- debug('Response in %dms: %o', Date.now() - startTimestamp, {
50
- status: response.status,
51
- statusText: response.statusText,
52
- headers: this.extractDebugHeaders(response.headers),
53
- url: response.url,
54
- data: respData,
55
- });
56
- return Object.assign(Object.assign({}, response), { data: respData });
57
- }
58
- catch (error) {
59
- (_a = this.abortTimeout) === null || _a === void 0 ? void 0 : _a.clear();
60
- debug('Request failed: %o', error);
61
- throw error;
62
- }
63
- }
64
- /**
65
- * Perform a GET request
66
- * @param {string} url The URL to request (may include query string)
67
- * @param {RequestInit} [options] Fetch options
68
- * @returns {Promise<NativeDataFetcherResponse<T>>} response
69
- */
70
- async get(url, options = {}) {
71
- return this.fetch(url, Object.assign({ method: 'GET' }, options));
72
- }
73
- /**
74
- * Perform a POST request
75
- * @param {string} url The URL to request (may include query string)
76
- * @param {unknown} body The data to send with the request
77
- * @param {RequestInit} [options] Fetch options
78
- * @returns {Promise<NativeDataFetcherResponse<T>>} response
79
- */
80
- async post(url, body, options = {}) {
81
- return this.fetch(url, Object.assign({ method: 'POST', body: JSON.stringify(body) }, options));
82
- }
83
- /**
84
- * Perform a DELETE request
85
- * @param {string} url The URL to request (may include query string)
86
- * @param {RequestInit} [options] Fetch options
87
- * @returns {Promise<NativeDataFetcherResponse<T>>} response
88
- */
89
- async delete(url, options = {}) {
90
- return this.fetch(url, Object.assign({ method: 'DELETE' }, options));
91
- }
92
- /**
93
- * Perform a PUT request
94
- * @param {string} url The URL to request (may include query string)
95
- * @param {unknown} body The data to send with the request
96
- * @param {RequestInit} [options] Fetch options
97
- * @returns {Promise<NativeDataFetcherResponse<T>>} response
98
- */
99
- async put(url, body, options = {}) {
100
- return this.fetch(url, Object.assign({ method: 'PUT', body: JSON.stringify(body) }, options));
101
- }
102
- /**
103
- * Perform a HEAD request
104
- * @param {string} url The URL to request (may include query string)
105
- * @param {RequestInit} [options] Fetch options
106
- * @returns {Promise<NativeDataFetcherResponse<T>>} response
107
- */
108
- head(url, options = {}) {
109
- return this.fetch(url, Object.assign({ method: 'HEAD' }, options));
110
- }
111
- /**
112
- * Determines settings for the request
113
- * @param {RequestInit} init Custom settings for request
114
- * @returns {RequestInit} The final request settings
115
- */
116
- getRequestInit(init = {}) {
117
- const headers = new Headers(init.headers);
118
- if (!init.method) {
119
- init.method = init.body ? 'POST' : 'GET';
120
- }
121
- headers.set('Content-Type', 'application/json');
122
- init.headers = headers;
123
- return init;
124
- }
125
- /**
126
- * Safely extract all headers for debug logging
127
- * @param {HeadersInit} incomingHeaders Incoming headers
128
- * @returns Object with headers as key/value pairs
129
- */
130
- extractDebugHeaders(incomingHeaders = {}) {
131
- const headers = {};
132
- if (typeof (incomingHeaders === null || incomingHeaders === void 0 ? void 0 : incomingHeaders.forEach) !== 'string' && incomingHeaders.forEach) {
133
- incomingHeaders === null || incomingHeaders === void 0 ? void 0 : incomingHeaders.forEach((value, key) => {
134
- headers[key] = value;
135
- });
136
- }
137
- return headers;
138
- }
139
- /**
140
- * Parses the response data.
141
- * @param {Response} response - The fetch response object.
142
- * @param {Function} debug - The debug logger function.
143
- * @returns {Promise<unknown>} - The parsed response data.
144
- */
145
- async parseResponse(response, debug) {
146
- const contentType = response.headers.get('Content-Type') || '';
147
- try {
148
- if (contentType.includes('application/json')) {
149
- return await response.json();
150
- }
151
- return await response.text();
152
- }
153
- catch (error) {
154
- debug('Response parsing error: %o', error);
155
- return undefined;
156
- }
157
- }
158
- /**
159
- * Creates a custom error for fetch failures.
160
- * @param {Response} response - The fetch response object.
161
- * @param {unknown} data - The parsed response data.
162
- * @returns {NativeDataFetcherError} - The constructed error object.
163
- */
164
- createError(response, data) {
165
- return Object.assign(Object.assign({}, new Error(`HTTP ${response.status} ${response.statusText}`)), { response: {
166
- status: response.status,
167
- statusText: response.statusText,
168
- headers: this.extractDebugHeaders(response.headers),
169
- data,
170
- } });
171
- }
172
- }
1
+ var __rest = (this && this.__rest) || function (s, e) {
2
+ var t = {};
3
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
4
+ t[p] = s[p];
5
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
6
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
7
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
8
+ t[p[i]] = s[p[i]];
9
+ }
10
+ return t;
11
+ };
12
+ import debuggers from './debug';
13
+ import TimeoutPromise from './utils/timeout-promise';
14
+ /**
15
+ * Native data fetcher class
16
+ * @public
17
+ */
18
+ export class NativeDataFetcher {
19
+ constructor(config = {}) {
20
+ this.config = config;
21
+ }
22
+ /**
23
+ * Implements a data fetcher.
24
+ * @param {string} url The URL to request (may include query string)
25
+ * @param {RequestInit} [options] Optional fetch options
26
+ * @returns {Promise<NativeDataFetcherResponse<T>>} response
27
+ */
28
+ async fetch(url, options = {}) {
29
+ var _a;
30
+ const _b = this.config, { debugger: debugOverride, fetch: fetchOverride } = _b, init = __rest(_b, ["debugger", "fetch"]);
31
+ const startTimestamp = Date.now();
32
+ const fetchImpl = fetchOverride || fetch;
33
+ const debug = debugOverride || debuggers.http;
34
+ const requestInit = this.getRequestInit(Object.assign(Object.assign({}, init), options));
35
+ const fetchWithOptionalTimeout = [fetchImpl(url, requestInit)];
36
+ if (init.timeout) {
37
+ this.abortTimeout = new TimeoutPromise(init.timeout);
38
+ fetchWithOptionalTimeout.push(this.abortTimeout.start);
39
+ }
40
+ debug('Request initiated: %o', Object.assign({ url, headers: this.extractDebugHeaders(requestInit.headers) }, requestInit));
41
+ try {
42
+ const response = await Promise.race(fetchWithOptionalTimeout).then((res) => {
43
+ var _a;
44
+ (_a = this.abortTimeout) === null || _a === void 0 ? void 0 : _a.clear();
45
+ return res;
46
+ });
47
+ const respData = await this.parseResponse(response, debug);
48
+ if (!response.ok) {
49
+ const error = this.createError(response, respData);
50
+ debug('Response error: %o', error.response);
51
+ throw error;
52
+ }
53
+ debug('Response in %dms: %o', Date.now() - startTimestamp, {
54
+ status: response.status,
55
+ statusText: response.statusText,
56
+ headers: this.extractDebugHeaders(response.headers),
57
+ url: response.url,
58
+ data: respData,
59
+ });
60
+ return {
61
+ data: respData,
62
+ headers: response.headers,
63
+ status: response.status,
64
+ statusText: response.statusText,
65
+ };
66
+ }
67
+ catch (error) {
68
+ (_a = this.abortTimeout) === null || _a === void 0 ? void 0 : _a.clear();
69
+ debug('Request failed: %o', error);
70
+ throw error;
71
+ }
72
+ }
73
+ /**
74
+ * Perform a GET request
75
+ * @param {string} url The URL to request (may include query string)
76
+ * @param {RequestInit} [options] Fetch options
77
+ * @returns {Promise<NativeDataFetcherResponse<T>>} response
78
+ */
79
+ async get(url, options = {}) {
80
+ return this.fetch(url, Object.assign({ method: 'GET' }, options));
81
+ }
82
+ /**
83
+ * Perform a POST request
84
+ * @param {string} url The URL to request (may include query string)
85
+ * @param {unknown} body The data to send with the request
86
+ * @param {RequestInit} [options] Fetch options
87
+ * @returns {Promise<NativeDataFetcherResponse<T>>} response
88
+ */
89
+ async post(url, body, options = {}) {
90
+ return this.fetch(url, Object.assign({ method: 'POST', body: JSON.stringify(body) }, options));
91
+ }
92
+ /**
93
+ * Perform a DELETE request
94
+ * @param {string} url The URL to request (may include query string)
95
+ * @param {RequestInit} [options] Fetch options
96
+ * @returns {Promise<NativeDataFetcherResponse<T>>} response
97
+ */
98
+ async delete(url, options = {}) {
99
+ return this.fetch(url, Object.assign({ method: 'DELETE' }, options));
100
+ }
101
+ /**
102
+ * Perform a PUT request
103
+ * @param {string} url The URL to request (may include query string)
104
+ * @param {unknown} body The data to send with the request
105
+ * @param {RequestInit} [options] Fetch options
106
+ * @returns {Promise<NativeDataFetcherResponse<T>>} response
107
+ */
108
+ async put(url, body, options = {}) {
109
+ return this.fetch(url, Object.assign({ method: 'PUT', body: JSON.stringify(body) }, options));
110
+ }
111
+ /**
112
+ * Perform a HEAD request
113
+ * @param {string} url The URL to request (may include query string)
114
+ * @param {RequestInit} [options] Fetch options
115
+ * @returns {Promise<NativeDataFetcherResponse<T>>} response
116
+ */
117
+ head(url, options = {}) {
118
+ return this.fetch(url, Object.assign({ method: 'HEAD' }, options));
119
+ }
120
+ /**
121
+ * Determines settings for the request
122
+ * @param {RequestInit} init Custom settings for request
123
+ * @returns {RequestInit} The final request settings
124
+ */
125
+ getRequestInit(init = {}) {
126
+ const headers = new Headers(init.headers);
127
+ if (!init.method) {
128
+ init.method = init.body ? 'POST' : 'GET';
129
+ }
130
+ headers.set('Content-Type', 'application/json');
131
+ init.headers = headers;
132
+ return init;
133
+ }
134
+ /**
135
+ * Safely extract all headers for debug logging
136
+ * @param {HeadersInit} incomingHeaders Incoming headers
137
+ * @returns Object with headers as key/value pairs
138
+ */
139
+ extractDebugHeaders(incomingHeaders = {}) {
140
+ const headers = {};
141
+ if (typeof (incomingHeaders === null || incomingHeaders === void 0 ? void 0 : incomingHeaders.forEach) !== 'string' && incomingHeaders.forEach) {
142
+ incomingHeaders === null || incomingHeaders === void 0 ? void 0 : incomingHeaders.forEach((value, key) => {
143
+ headers[key] = value;
144
+ });
145
+ }
146
+ return headers;
147
+ }
148
+ /**
149
+ * Parses the response data.
150
+ * @param {Response} response - The fetch response object.
151
+ * @param {Function} debug - The debug logger function.
152
+ * @returns {Promise<unknown>} - The parsed response data.
153
+ */
154
+ async parseResponse(response, debug) {
155
+ const contentType = response.headers.get('Content-Type') || '';
156
+ try {
157
+ if (contentType.includes('application/json')) {
158
+ return await response.json();
159
+ }
160
+ return await response.text();
161
+ }
162
+ catch (error) {
163
+ debug('Response parsing error: %o', error);
164
+ return undefined;
165
+ }
166
+ }
167
+ /**
168
+ * Creates a custom error for fetch failures.
169
+ * @param {Response} response - The fetch response object.
170
+ * @param {unknown} data - The parsed response data.
171
+ * @returns {NativeDataFetcherError} - The constructed error object.
172
+ */
173
+ createError(response, data) {
174
+ const error = new Error(`HTTP ${response.status}${response.statusText ? ` ${response.statusText}` : ''}`);
175
+ return {
176
+ name: error.name,
177
+ message: error.message,
178
+ stack: error.stack,
179
+ response: {
180
+ status: response.status,
181
+ statusText: response.statusText,
182
+ headers: this.extractDebugHeaders(response.headers),
183
+ data,
184
+ },
185
+ };
186
+ }
187
+ }
@@ -1,3 +1,3 @@
1
- export { personalizeLayout } from './layout-personalizer';
2
- export { PersonalizeService, } from './personalize-service';
3
- export { getPersonalizedRewrite, getPersonalizedRewriteData, getGroomedVariantIds, normalizePersonalizedRewrite, CdpHelper, DEFAULT_VARIANT, VARIANT_PREFIX, } from './utils';
1
+ export { personalizeLayout } from './layout-personalizer';
2
+ export { PersonalizeService, } from './personalize-service';
3
+ export { getPersonalizedRewrite, getPersonalizedRewriteData, getGroomedVariantIds, normalizePersonalizedRewrite, CdpHelper, DEFAULT_VARIANT, VARIANT_PREFIX, } from './utils';
@@ -1,92 +1,93 @@
1
- import { HIDDEN_RENDERING_NAME } from '../constants';
2
- const transformToHiddenRenderingVariant = (component) => (Object.assign(Object.assign({}, component), { componentName: HIDDEN_RENDERING_NAME, experiences: {} }));
3
- /**
4
- * Apply personalization to layout data. This will recursively go through all placeholders/components, check experiences nodes and replace default with object from specific experience.
5
- * @param {LayoutServiceData} layout Layout data
6
- * @param {string} variantId variant id
7
- * @param {string[]} [componentVariantIds] component variant ids
8
- */
9
- export function personalizeLayout(layout, variantId, componentVariantIds) {
10
- var _a;
11
- // Add (page-level) variantId to Sitecore context so that it is accessible here
12
- layout.sitecore.context.variantId = variantId;
13
- const placeholders = ((_a = layout.sitecore.route) === null || _a === void 0 ? void 0 : _a.placeholders) || {};
14
- if (Object.keys(placeholders).length === 0) {
15
- return undefined;
16
- }
17
- const isEditing = layout.sitecore.context.pageEditing;
18
- if (placeholders) {
19
- Object.keys(placeholders).forEach((placeholder) => {
20
- placeholders[placeholder] = personalizePlaceholder(placeholders[placeholder], [variantId, ...(componentVariantIds || [])], isEditing);
21
- });
22
- }
23
- return placeholders;
24
- }
25
- /**
26
- * @param {Array} components components within placeholder
27
- * @param {string[]} variantIds variant ids
28
- * @param {boolean} isEditing indicates if page is rendered in metadata edit mode
29
- * @returns {ComponentRendering[]} components with personalization applied
30
- */
31
- export function personalizePlaceholder(components, variantIds, isEditing) {
32
- return components
33
- .map((component) => {
34
- const rendering = component;
35
- if (rendering.experiences !== undefined) {
36
- return personalizeComponent(rendering, variantIds, isEditing);
37
- }
38
- else if (rendering.placeholders) {
39
- const placeholders = rendering.placeholders;
40
- Object.keys(placeholders).forEach((placeholder) => {
41
- placeholders[placeholder] = personalizePlaceholder(placeholders[placeholder], variantIds, isEditing);
42
- });
43
- }
44
- return component;
45
- })
46
- .filter(Boolean);
47
- }
48
- /**
49
- * @param {ComponentRenderingWithExperiences} component component with experiences
50
- * @param {string[]} variantIds variant ids
51
- * @param {boolean} isEditing indicates if page is rendered in metadata edit mode
52
- * @returns {ComponentRendering | null} component with personalization applied or null if hidden
53
- */
54
- export function personalizeComponent(component, variantIds, isEditing) {
55
- // Check if we have a page/component experience matching any of the variants (there should be at most 1)
56
- const match = Object.keys(component.experiences).find((variantId) => variantIds.includes(variantId));
57
- const variant = match && component.experiences[match];
58
- // variant and componentName can be undefined or null
59
- if (!variant && !component.componentName) {
60
- // DEFAULT IS HIDDEN
61
- if (isEditing) {
62
- component = transformToHiddenRenderingVariant(component);
63
- }
64
- else {
65
- return null;
66
- }
67
- }
68
- else if (variant && variant.componentName === null && variant.dataSource === null) {
69
- // VARIANT IS HIDDEN
70
- if (isEditing) {
71
- component = transformToHiddenRenderingVariant(component);
72
- }
73
- else {
74
- return null;
75
- }
76
- }
77
- else if (variant) {
78
- component = variant;
79
- }
80
- // remove unused experiences from layout data
81
- if (component.experiences) {
82
- component.experiences = {};
83
- }
84
- if (!component.placeholders)
85
- return component;
86
- Object.keys(component === null || component === void 0 ? void 0 : component.placeholders).forEach((placeholder) => {
87
- if (component.placeholders) {
88
- component.placeholders[placeholder] = personalizePlaceholder(component.placeholders[placeholder], variantIds);
89
- }
90
- });
91
- return component;
92
- }
1
+ import { HIDDEN_RENDERING_NAME } from '../constants';
2
+ const transformToHiddenRenderingVariant = (component) => (Object.assign(Object.assign({}, component), { componentName: HIDDEN_RENDERING_NAME, experiences: {} }));
3
+ /**
4
+ * Apply personalization to layout data. This will recursively go through all placeholders/components, check experiences nodes and replace default with object from specific experience.
5
+ * @param {LayoutServiceData} layout Layout data
6
+ * @param {string} variantId variant id
7
+ * @param {string[]} [componentVariantIds] component variant ids
8
+ * @public
9
+ */
10
+ export function personalizeLayout(layout, variantId, componentVariantIds) {
11
+ var _a;
12
+ // Add (page-level) variantId to Sitecore context so that it is accessible here
13
+ layout.sitecore.context.variantId = variantId;
14
+ const placeholders = ((_a = layout.sitecore.route) === null || _a === void 0 ? void 0 : _a.placeholders) || {};
15
+ if (Object.keys(placeholders).length === 0) {
16
+ return undefined;
17
+ }
18
+ const isEditing = layout.sitecore.context.pageEditing;
19
+ if (placeholders) {
20
+ Object.keys(placeholders).forEach((placeholder) => {
21
+ placeholders[placeholder] = personalizePlaceholder(placeholders[placeholder], [variantId, ...(componentVariantIds || [])], isEditing);
22
+ });
23
+ }
24
+ return placeholders;
25
+ }
26
+ /**
27
+ * @param {Array} components components within placeholder
28
+ * @param {string[]} variantIds variant ids
29
+ * @param {boolean} isEditing indicates if page is rendered in metadata edit mode
30
+ * @returns {ComponentRendering[]} components with personalization applied
31
+ */
32
+ export function personalizePlaceholder(components, variantIds, isEditing) {
33
+ return components
34
+ .map((component) => {
35
+ const rendering = component;
36
+ if (rendering.experiences !== undefined) {
37
+ return personalizeComponent(rendering, variantIds, isEditing);
38
+ }
39
+ else if (rendering.placeholders) {
40
+ const placeholders = rendering.placeholders;
41
+ Object.keys(placeholders).forEach((placeholder) => {
42
+ placeholders[placeholder] = personalizePlaceholder(placeholders[placeholder], variantIds, isEditing);
43
+ });
44
+ }
45
+ return component;
46
+ })
47
+ .filter(Boolean);
48
+ }
49
+ /**
50
+ * @param {ComponentRenderingWithExperiences} component component with experiences
51
+ * @param {string[]} variantIds variant ids
52
+ * @param {boolean} isEditing indicates if page is rendered in metadata edit mode
53
+ * @returns {ComponentRendering | null} component with personalization applied or null if hidden
54
+ */
55
+ export function personalizeComponent(component, variantIds, isEditing) {
56
+ // Check if we have a page/component experience matching any of the variants (there should be at most 1)
57
+ const match = Object.keys(component.experiences).find((variantId) => variantIds.includes(variantId));
58
+ const variant = match && component.experiences[match];
59
+ // variant and componentName can be undefined or null
60
+ if (!variant && !component.componentName) {
61
+ // DEFAULT IS HIDDEN
62
+ if (isEditing) {
63
+ component = transformToHiddenRenderingVariant(component);
64
+ }
65
+ else {
66
+ return null;
67
+ }
68
+ }
69
+ else if (variant && variant.componentName === null && variant.dataSource === null) {
70
+ // VARIANT IS HIDDEN
71
+ if (isEditing) {
72
+ component = transformToHiddenRenderingVariant(component);
73
+ }
74
+ else {
75
+ return null;
76
+ }
77
+ }
78
+ else if (variant) {
79
+ component = variant;
80
+ }
81
+ // remove unused experiences from layout data
82
+ if (component.experiences) {
83
+ component.experiences = {};
84
+ }
85
+ if (!component.placeholders)
86
+ return component;
87
+ Object.keys(component === null || component === void 0 ? void 0 : component.placeholders).forEach((placeholder) => {
88
+ if (component.placeholders) {
89
+ component.placeholders[placeholder] = personalizePlaceholder(component.placeholders[placeholder], variantIds);
90
+ }
91
+ });
92
+ return component;
93
+ }