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