@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,5 +1,5 @@
1
- import debug from '../debug';
2
- import { MemoryCacheClient } from '../cache-client';
1
+ import debug from '../debug';
2
+ import { MemoryCacheClient } from '../cache-client';
3
3
  const siteQuery = /* GraphQL */ `
4
4
  query {
5
5
  site {
@@ -10,74 +10,78 @@ const siteQuery = /* GraphQL */ `
10
10
  }
11
11
  }
12
12
  }
13
- `;
14
- export class SiteInfoService {
15
- /**
16
- * Creates an instance of graphQL service to retrieve site configuration list from Sitecore
17
- * @param {SiteInfoServiceConfig} config instance
18
- */
19
- constructor(config) {
20
- this.config = config;
21
- this.graphQLClient = this.getGraphQLClient();
22
- this.cache = this.getCacheClient();
23
- }
24
- /**
25
- * site query is available on XM Cloud and XP 10.4+
26
- */
27
- get siteQuery() {
28
- return siteQuery;
29
- }
30
- async fetchSiteInfo(fetchOptions) {
31
- var _a, _b;
32
- const cachedResult = this.cache.getCacheValue(this.getCacheKey());
33
- if (cachedResult) {
34
- return cachedResult;
35
- }
36
- if (process.env.SITECORE) {
37
- debug.multisite('Skipping site information fetch (building on XM Cloud)');
38
- return [];
39
- }
40
- const response = await this.graphQLClient.request(this.siteQuery, {}, fetchOptions);
41
- const results = (_b = (_a = response === null || response === void 0 ? void 0 : response.site) === null || _a === void 0 ? void 0 : _a.siteInfoCollection) === null || _b === void 0 ? void 0 : _b.reduce((result, current) => {
42
- // filter out built in website
43
- current.name !== 'website' &&
44
- result.push({
45
- name: current.name,
46
- hostName: current.hostName,
47
- language: current.language,
48
- });
49
- return result;
50
- }, []);
51
- this.cache.setCacheValue(this.getCacheKey(), results);
52
- return results;
53
- }
54
- /**
55
- * Gets cache client implementation
56
- * Override this method if custom cache needs to be used
57
- * @returns CacheClient instance
58
- */
59
- getCacheClient() {
60
- var _a, _b;
61
- return new MemoryCacheClient({
62
- cacheEnabled: (_a = this.config.cacheEnabled) !== null && _a !== void 0 ? _a : true,
63
- cacheTimeout: (_b = this.config.cacheTimeout) !== null && _b !== void 0 ? _b : 10,
64
- });
65
- }
66
- /**
67
- * Gets a GraphQL client that can make requests to the API. Uses graphql-request as the default
68
- * library for fetching graphql data (@see GraphQLRequestClient). Override this method if you
69
- * want to use something else.
70
- * @returns {GraphQLClient} implementation
71
- */
72
- getGraphQLClient() {
73
- if (!this.config.clientFactory) {
74
- throw new Error('clientFactory needs to be provided when initializing GraphQL client.');
75
- }
76
- return this.config.clientFactory({
77
- debugger: debug.multisite,
78
- });
79
- }
80
- getCacheKey() {
81
- return 'siteinfo-service-cache';
82
- }
83
- }
13
+ `;
14
+ /**
15
+ * Service to fetch site information
16
+ * @public
17
+ */
18
+ export class SiteInfoService {
19
+ /**
20
+ * Creates an instance of graphQL service to retrieve site configuration list from Sitecore
21
+ * @param {SiteInfoServiceConfig} config instance
22
+ */
23
+ constructor(config) {
24
+ this.config = config;
25
+ this.graphQLClient = this.getGraphQLClient();
26
+ this.cache = this.getCacheClient();
27
+ }
28
+ /**
29
+ * site query is available on XM Cloud and XP 10.4+
30
+ */
31
+ get siteQuery() {
32
+ return siteQuery;
33
+ }
34
+ async fetchSiteInfo(fetchOptions) {
35
+ var _a, _b;
36
+ const cachedResult = this.cache.getCacheValue(this.getCacheKey());
37
+ if (cachedResult) {
38
+ return cachedResult;
39
+ }
40
+ if (process.env.SITECORE) {
41
+ debug.multisite('Skipping site information fetch (building on XM Cloud)');
42
+ return [];
43
+ }
44
+ const response = await this.graphQLClient.request(this.siteQuery, {}, fetchOptions);
45
+ const results = (_b = (_a = response === null || response === void 0 ? void 0 : response.site) === null || _a === void 0 ? void 0 : _a.siteInfoCollection) === null || _b === void 0 ? void 0 : _b.reduce((result, current) => {
46
+ // filter out built in website
47
+ current.name !== 'website' &&
48
+ result.push({
49
+ name: current.name,
50
+ hostName: current.hostName,
51
+ language: current.language,
52
+ });
53
+ return result;
54
+ }, []);
55
+ this.cache.setCacheValue(this.getCacheKey(), results);
56
+ return results;
57
+ }
58
+ /**
59
+ * Gets cache client implementation
60
+ * Override this method if custom cache needs to be used
61
+ * @returns CacheClient instance
62
+ */
63
+ getCacheClient() {
64
+ var _a, _b;
65
+ return new MemoryCacheClient({
66
+ cacheEnabled: (_a = this.config.cacheEnabled) !== null && _a !== void 0 ? _a : true,
67
+ cacheTimeout: (_b = this.config.cacheTimeout) !== null && _b !== void 0 ? _b : 10,
68
+ });
69
+ }
70
+ /**
71
+ * Gets a GraphQL client that can make requests to the API. Uses graphql-request as the default
72
+ * library for fetching graphql data (@see GraphQLRequestClient). Override this method if you
73
+ * want to use something else.
74
+ * @returns {GraphQLClient} implementation
75
+ */
76
+ getGraphQLClient() {
77
+ if (!this.config.clientFactory) {
78
+ throw new Error('clientFactory needs to be provided when initializing GraphQL client.');
79
+ }
80
+ return this.config.clientFactory({
81
+ debugger: debug.multisite,
82
+ });
83
+ }
84
+ getCacheKey() {
85
+ return 'siteinfo-service-cache';
86
+ }
87
+ }
@@ -1,7 +1,7 @@
1
- import { siteNameError } from '../constants';
2
- import debug from '../debug';
3
- const PREFIX_NAME_SITEMAP = 'sitemap';
4
- // The default query for request sitemaps
1
+ import { siteNameError } from '../constants';
2
+ import debug from '../debug';
3
+ const PREFIX_NAME_SITEMAP = 'sitemap';
4
+ // The default query for request sitemaps
5
5
  const defaultQuery = /* GraphQL */ `
6
6
  query SitemapQuery($siteName: String!) {
7
7
  site {
@@ -10,75 +10,76 @@ const defaultQuery = /* GraphQL */ `
10
10
  }
11
11
  }
12
12
  }
13
- `;
14
- /**
15
- * Service that fetch the sitemaps data using Sitecore's GraphQL API.
16
- */
17
- export class SitemapXmlService {
18
- /**
19
- * Creates an instance of graphQL sitemaps service with the provided options
20
- * @param {SitemapXmlServiceConfig} options instance
21
- */
22
- constructor(options) {
23
- this.options = options;
24
- this.graphQLClient = this.getGraphQLClient();
25
- }
26
- get query() {
27
- return defaultQuery;
28
- }
29
- /**
30
- * Fetch list of sitemaps for the site
31
- * @returns {string[]} list of sitemap paths
32
- * @param {FetchOptions} [fetchOptions] Options to override graphQL client details like retries and fetch implementation
33
- * @throws {Error} if the siteName is empty.
34
- */
35
- async fetchSitemaps(fetchOptions) {
36
- const siteName = this.options.siteName;
37
- if (!siteName) {
38
- throw new Error(siteNameError);
39
- }
40
- const sitemapResult = this.graphQLClient.request(this.query, {
41
- siteName,
42
- }, fetchOptions);
43
- try {
44
- return sitemapResult.then((result) => result.site.siteInfo.sitemap);
45
- }
46
- catch (e) {
47
- return Promise.reject(e);
48
- }
49
- }
50
- /**
51
- * Get sitemap file path for sitemap id
52
- * @param {string} id the sitemap id (can be empty for default 'sitemap.xml' file)
53
- * @returns {string | undefined} the sitemap file path or undefined if one doesn't exist
54
- */
55
- async getSitemap(id) {
56
- let searchSitemap;
57
- if (id === undefined) {
58
- return undefined;
59
- }
60
- else if (id === '') {
61
- searchSitemap = `${PREFIX_NAME_SITEMAP}.xml`;
62
- }
63
- else {
64
- const normalizedId = id.startsWith('-') ? id.slice(1) : id;
65
- searchSitemap = `${PREFIX_NAME_SITEMAP}-${normalizedId}.xml`;
66
- }
67
- const sitemaps = await this.fetchSitemaps();
68
- return sitemaps.find((sitemap) => sitemap.includes(searchSitemap));
69
- }
70
- /**
71
- * Gets a GraphQL client that can make requests to the API. Uses graphql-request as the default
72
- * library for fetching graphql data (@see GraphQLRequestClient). Override this method if you
73
- * want to use something else.
74
- * @returns {GraphQLClient} implementation
75
- */
76
- getGraphQLClient() {
77
- if (!this.options.clientFactory) {
78
- throw new Error('clientFactory needs to be provided when initializing GraphQL client.');
79
- }
80
- return this.options.clientFactory({
81
- debugger: debug.sitemap,
82
- });
83
- }
84
- }
13
+ `;
14
+ /**
15
+ * Service that fetch the sitemaps data using Sitecore's GraphQL API.
16
+ * @public
17
+ */
18
+ export class SitemapXmlService {
19
+ /**
20
+ * Creates an instance of graphQL sitemaps service with the provided options
21
+ * @param {SitemapXmlServiceConfig} options instance
22
+ */
23
+ constructor(options) {
24
+ this.options = options;
25
+ this.graphQLClient = this.getGraphQLClient();
26
+ }
27
+ get query() {
28
+ return defaultQuery;
29
+ }
30
+ /**
31
+ * Fetch list of sitemaps for the site
32
+ * @returns {string[]} list of sitemap paths
33
+ * @param {FetchOptions} [fetchOptions] Options to override graphQL client details like retries and fetch implementation
34
+ * @throws {Error} if the siteName is empty.
35
+ */
36
+ async fetchSitemaps(fetchOptions) {
37
+ const siteName = this.options.siteName;
38
+ if (!siteName) {
39
+ throw new Error(siteNameError);
40
+ }
41
+ const sitemapResult = this.graphQLClient.request(this.query, {
42
+ siteName,
43
+ }, fetchOptions);
44
+ try {
45
+ return sitemapResult.then((result) => result.site.siteInfo.sitemap);
46
+ }
47
+ catch (e) {
48
+ return Promise.reject(e);
49
+ }
50
+ }
51
+ /**
52
+ * Get sitemap file path for sitemap id
53
+ * @param {string} id the sitemap id (can be empty for default 'sitemap.xml' file)
54
+ * @returns {string | undefined} the sitemap file path or undefined if one doesn't exist
55
+ */
56
+ async getSitemap(id) {
57
+ let searchSitemap;
58
+ if (id === undefined) {
59
+ return undefined;
60
+ }
61
+ else if (id === '') {
62
+ searchSitemap = `${PREFIX_NAME_SITEMAP}.xml`;
63
+ }
64
+ else {
65
+ const normalizedId = id.startsWith('-') ? id.slice(1) : id;
66
+ searchSitemap = `${PREFIX_NAME_SITEMAP}-${normalizedId}.xml`;
67
+ }
68
+ const sitemaps = await this.fetchSitemaps();
69
+ return sitemaps.find((sitemap) => sitemap.includes(searchSitemap));
70
+ }
71
+ /**
72
+ * Gets a GraphQL client that can make requests to the API. Uses graphql-request as the default
73
+ * library for fetching graphql data (@see GraphQLRequestClient). Override this method if you
74
+ * want to use something else.
75
+ * @returns {GraphQLClient} implementation
76
+ */
77
+ getGraphQLClient() {
78
+ if (!this.options.clientFactory) {
79
+ throw new Error('clientFactory needs to be provided when initializing GraphQL client.');
80
+ }
81
+ return this.options.clientFactory({
82
+ debugger: debug.sitemap,
83
+ });
84
+ }
85
+ }