@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,6 +1,6 @@
1
- import { siteNameError } from '../constants';
2
- import debug from '../debug';
3
- // The default query for request error handling
1
+ import { siteNameError } from '../constants';
2
+ import debug from '../debug';
3
+ // The default query for request error handling
4
4
  const defaultQuery = /* GraphQL */ `
5
5
  query ErrorPagesQuery($siteName: String!, $language: String!) {
6
6
  site {
@@ -18,57 +18,58 @@ const defaultQuery = /* GraphQL */ `
18
18
  }
19
19
  }
20
20
  }
21
- `;
22
- /**
23
- * Service that fetch the error pages data using Sitecore's GraphQL API.
24
- */
25
- export class ErrorPagesService {
26
- /**
27
- * Creates an instance of graphQL error pages service with the provided options
28
- * @param {ErrorPagesServiceConfig} options instance
29
- */
30
- constructor(options) {
31
- this.options = options;
32
- this.graphQLClient = this.getGraphQLClient();
33
- }
34
- get query() {
35
- return defaultQuery;
36
- }
37
- /**
38
- * Fetch list of error pages for the site
39
- * @param {string} siteName The site name
40
- * @param {string} locale The language
41
- * @param {FetchOptions} [fetchOptions] Options to override graphQL client details like retries and fetch implementation
42
- * @returns {ErrorPages} list of url's error pages
43
- * @throws {Error} if the siteName is empty.
44
- */
45
- async fetchErrorPages(siteName, locale, fetchOptions) {
46
- const language = locale || this.options.language;
47
- if (!siteName) {
48
- throw new Error(siteNameError);
49
- }
50
- return this.graphQLClient.request(this.query, {
51
- siteName,
52
- language,
53
- }, fetchOptions)
54
- .then((result) => result.site.siteInfo ? result.site.siteInfo.errorHandling : null)
55
- .catch((e) => Promise.reject(e));
56
- }
57
- /**
58
- * Gets a GraphQL client that can make requests to the API. Uses graphql-request as the default
59
- * library for fetching graphql data (@see GraphQLRequestClient). Override this method if you
60
- * want to use something else.
61
- * @returns {GraphQLClient} implementation
62
- */
63
- getGraphQLClient() {
64
- var _a, _b;
65
- if (!this.options.clientFactory) {
66
- throw new Error('clientFactory needs to be provided when initializing GraphQL client.');
67
- }
68
- return this.options.clientFactory({
69
- debugger: debug.errorpages,
70
- retries: (_a = this.options.retries) === null || _a === void 0 ? void 0 : _a.count,
71
- retryStrategy: (_b = this.options.retries) === null || _b === void 0 ? void 0 : _b.retryStrategy,
72
- });
73
- }
74
- }
21
+ `;
22
+ /**
23
+ * Service that fetch the error pages data using Sitecore's GraphQL API.
24
+ * @public
25
+ */
26
+ export class ErrorPagesService {
27
+ /**
28
+ * Creates an instance of graphQL error pages service with the provided options
29
+ * @param {ErrorPagesServiceConfig} options instance
30
+ */
31
+ constructor(options) {
32
+ this.options = options;
33
+ this.graphQLClient = this.getGraphQLClient();
34
+ }
35
+ get query() {
36
+ return defaultQuery;
37
+ }
38
+ /**
39
+ * Fetch list of error pages for the site
40
+ * @param {string} siteName The site name
41
+ * @param {string} locale The language
42
+ * @param {FetchOptions} [fetchOptions] Options to override graphQL client details like retries and fetch implementation
43
+ * @returns {ErrorPages} list of url's error pages
44
+ * @throws {Error} if the siteName is empty.
45
+ */
46
+ async fetchErrorPages(siteName, locale, fetchOptions) {
47
+ const language = locale || this.options.language;
48
+ if (!siteName) {
49
+ throw new Error(siteNameError);
50
+ }
51
+ return this.graphQLClient.request(this.query, {
52
+ siteName,
53
+ language,
54
+ }, fetchOptions)
55
+ .then((result) => result.site.siteInfo ? result.site.siteInfo.errorHandling : null)
56
+ .catch((e) => Promise.reject(e));
57
+ }
58
+ /**
59
+ * Gets a GraphQL client that can make requests to the API. Uses graphql-request as the default
60
+ * library for fetching graphql data (@see GraphQLRequestClient). Override this method if you
61
+ * want to use something else.
62
+ * @returns {GraphQLClient} implementation
63
+ */
64
+ getGraphQLClient() {
65
+ var _a, _b;
66
+ if (!this.options.clientFactory) {
67
+ throw new Error('clientFactory needs to be provided when initializing GraphQL client.');
68
+ }
69
+ return this.options.clientFactory({
70
+ debugger: debug.errorpages,
71
+ retries: (_a = this.options.retries) === null || _a === void 0 ? void 0 : _a.count,
72
+ retryStrategy: (_b = this.options.retries) === null || _b === void 0 ? void 0 : _b.retryStrategy,
73
+ });
74
+ }
75
+ }
@@ -1,8 +1,8 @@
1
- export { RobotsService } from './robots-service';
2
- export { REDIRECT_TYPE_301, REDIRECT_TYPE_302, REDIRECT_TYPE_SERVER_TRANSFER, RedirectsService, } from './redirects-service';
3
- export { SitemapXmlService, } from './sitemap-xml-service';
4
- export { ErrorPagesService } from './error-pages-service';
5
- export { SiteInfoService } from './siteinfo-service';
6
- export { SitePathService } from './sitepath-service';
7
- export { getSiteRewrite, getSiteRewriteData, normalizeSiteRewrite, SITE_PREFIX, SITE_KEY, } from './utils';
8
- export { SiteResolver } from './site-resolver';
1
+ export { RobotsService } from './robots-service';
2
+ export { REDIRECT_TYPE_301, REDIRECT_TYPE_302, REDIRECT_TYPE_SERVER_TRANSFER, RedirectsService, } from './redirects-service';
3
+ export { SitemapXmlService, } from './sitemap-xml-service';
4
+ export { ErrorPagesService } from './error-pages-service';
5
+ export { SiteInfoService } from './siteinfo-service';
6
+ export { SitePathService } from './sitepath-service';
7
+ export { getSiteRewrite, getSiteRewriteData, normalizeSiteRewrite, SITE_PREFIX, SITE_KEY, } from './utils';
8
+ export { SiteResolver } from './site-resolver';
@@ -1 +1 @@
1
- export {};
1
+ export {};
@@ -1,10 +1,22 @@
1
- import { siteNameError } from '../constants';
2
- import debug from '../debug';
3
- import { MemoryCacheClient } from '../cache-client';
4
- export const REDIRECT_TYPE_301 = 'REDIRECT_301';
5
- export const REDIRECT_TYPE_302 = 'REDIRECT_302';
6
- export const REDIRECT_TYPE_SERVER_TRANSFER = 'SERVER_TRANSFER';
7
- // The default query for request redirects of site
1
+ import { siteNameError } from '../constants';
2
+ import debug from '../debug';
3
+ import { MemoryCacheClient } from '../cache-client';
4
+ /**
5
+ * Redirect type for 301 redirects
6
+ * @public
7
+ */
8
+ export const REDIRECT_TYPE_301 = 'REDIRECT_301';
9
+ /**
10
+ * Redirect type for 302 redirects
11
+ * @public
12
+ */
13
+ export const REDIRECT_TYPE_302 = 'REDIRECT_302';
14
+ /**
15
+ * Redirect type for server transfer
16
+ * @public
17
+ */
18
+ export const REDIRECT_TYPE_SERVER_TRANSFER = 'SERVER_TRANSFER';
19
+ // The default query for request redirects of site
8
20
  const defaultQuery = /* GraphQL */ `
9
21
  query RedirectsQuery($siteName: String!) {
10
22
  site {
@@ -19,70 +31,71 @@ const defaultQuery = /* GraphQL */ `
19
31
  }
20
32
  }
21
33
  }
22
- `;
23
- /**
24
- * The RedirectsService class is used to query the Content SDK redirects using Graphql endpoint
25
- */
26
- export class RedirectsService {
27
- /**
28
- * Creates an instance of graphQL redirects service with the provided options
29
- * @param {RedirectsServiceConfig} options instance
30
- */
31
- constructor(options) {
32
- this.options = options;
33
- this.graphQLClient = this.getGraphQLClient();
34
- this.cache = this.getCacheClient();
35
- }
36
- get query() {
37
- return defaultQuery;
38
- }
39
- /**
40
- * Fetch an array of redirects from API
41
- * @param {string} siteName site name
42
- * @returns Promise<RedirectInfo[]>
43
- * @param {FetchOptions} [fetchOptions] Options to override graphQL client details like retries and fetch implementation
44
- * @throws {Error} if the siteName is empty.
45
- */
46
- async fetchRedirects(siteName, fetchOptions) {
47
- var _a, _b;
48
- if (!siteName) {
49
- throw new Error(siteNameError);
50
- }
51
- const cacheKey = `redirects-${siteName}`;
52
- let data = this.cache.getCacheValue(cacheKey);
53
- if (!data) {
54
- data = await this.graphQLClient.request(this.query, {
55
- siteName,
56
- }, fetchOptions);
57
- this.cache.setCacheValue(cacheKey, data);
58
- }
59
- return ((_b = (_a = data === null || data === void 0 ? void 0 : data.site) === null || _a === void 0 ? void 0 : _a.siteInfo) === null || _b === void 0 ? void 0 : _b.redirects) || [];
60
- }
61
- /**
62
- * Gets a GraphQL client that can make requests to the API. Uses graphql-request as the default
63
- * library for fetching graphql data (@see GraphQLRequestClient). Override this method if you
64
- * want to use something else.
65
- * @returns {GraphQLClient} implementation
66
- */
67
- getGraphQLClient() {
68
- if (!this.options.clientFactory) {
69
- throw new Error('clientFactory needs to be provided when initializing GraphQL client.');
70
- }
71
- return this.options.clientFactory({
72
- debugger: debug.redirects,
73
- fetch: this.options.fetch,
74
- });
75
- }
76
- /**
77
- * Gets cache client implementation
78
- * Override this method if custom cache needs to be used
79
- * @returns CacheClient instance
80
- */
81
- getCacheClient() {
82
- var _a, _b;
83
- return new MemoryCacheClient({
84
- cacheEnabled: (_a = this.options.cacheEnabled) !== null && _a !== void 0 ? _a : true,
85
- cacheTimeout: (_b = this.options.cacheTimeout) !== null && _b !== void 0 ? _b : 10,
86
- });
87
- }
88
- }
34
+ `;
35
+ /**
36
+ * The RedirectsService class is used to query the Content SDK redirects using Graphql endpoint
37
+ * @public
38
+ */
39
+ export class RedirectsService {
40
+ /**
41
+ * Creates an instance of graphQL redirects service with the provided options
42
+ * @param {RedirectsServiceConfig} options instance
43
+ */
44
+ constructor(options) {
45
+ this.options = options;
46
+ this.graphQLClient = this.getGraphQLClient();
47
+ this.cache = this.getCacheClient();
48
+ }
49
+ get query() {
50
+ return defaultQuery;
51
+ }
52
+ /**
53
+ * Fetch an array of redirects from API
54
+ * @param {string} siteName site name
55
+ * @returns Promise<RedirectInfo[]>
56
+ * @param {FetchOptions} [fetchOptions] Options to override graphQL client details like retries and fetch implementation
57
+ * @throws {Error} if the siteName is empty.
58
+ */
59
+ async fetchRedirects(siteName, fetchOptions) {
60
+ var _a, _b;
61
+ if (!siteName) {
62
+ throw new Error(siteNameError);
63
+ }
64
+ const cacheKey = `redirects-${siteName}`;
65
+ let data = this.cache.getCacheValue(cacheKey);
66
+ if (!data) {
67
+ data = await this.graphQLClient.request(this.query, {
68
+ siteName,
69
+ }, fetchOptions);
70
+ this.cache.setCacheValue(cacheKey, data);
71
+ }
72
+ return ((_b = (_a = data === null || data === void 0 ? void 0 : data.site) === null || _a === void 0 ? void 0 : _a.siteInfo) === null || _b === void 0 ? void 0 : _b.redirects) || [];
73
+ }
74
+ /**
75
+ * Gets a GraphQL client that can make requests to the API. Uses graphql-request as the default
76
+ * library for fetching graphql data (@see GraphQLRequestClient). Override this method if you
77
+ * want to use something else.
78
+ * @returns {GraphQLClient} implementation
79
+ */
80
+ getGraphQLClient() {
81
+ if (!this.options.clientFactory) {
82
+ throw new Error('clientFactory needs to be provided when initializing GraphQL client.');
83
+ }
84
+ return this.options.clientFactory({
85
+ debugger: debug.redirects,
86
+ fetch: this.options.fetch,
87
+ });
88
+ }
89
+ /**
90
+ * Gets cache client implementation
91
+ * Override this method if custom cache needs to be used
92
+ * @returns CacheClient instance
93
+ */
94
+ getCacheClient() {
95
+ var _a, _b;
96
+ return new MemoryCacheClient({
97
+ cacheEnabled: (_a = this.options.cacheEnabled) !== null && _a !== void 0 ? _a : true,
98
+ cacheTimeout: (_b = this.options.cacheTimeout) !== null && _b !== void 0 ? _b : 10,
99
+ });
100
+ }
101
+ }
@@ -1,6 +1,6 @@
1
- import { siteNameError } from '../constants';
2
- import debug from '../debug';
3
- // The default query for request robots.txt
1
+ import { siteNameError } from '../constants';
2
+ import debug from '../debug';
3
+ // The default query for request robots.txt
4
4
  const defaultQuery = /* GraphQL */ `
5
5
  query RobotsQuery($siteName: String!) {
6
6
  site {
@@ -9,58 +9,59 @@ const defaultQuery = /* GraphQL */ `
9
9
  }
10
10
  }
11
11
  }
12
- `;
13
- /**
14
- * Service that fetch the robots.txt data using Sitecore's GraphQL API.
15
- */
16
- export class RobotsService {
17
- /**
18
- * Creates an instance of graphQL robots.txt service with the provided options
19
- * @param {RobotsServiceConfig} options instance
20
- */
21
- constructor(options) {
22
- this.options = options;
23
- this.graphQLClient = this.getGraphQLClient();
24
- }
25
- get query() {
26
- return defaultQuery;
27
- }
28
- /**
29
- * Fetch a data of robots.txt from API
30
- * @param {FetchOptions} fetchOptions - The fetch options to be used for the request.
31
- * @returns text of robots.txt
32
- * @throws {Error} if the siteName is empty.
33
- */
34
- async fetchRobots(fetchOptions) {
35
- const siteName = this.options.siteName;
36
- if (!siteName) {
37
- throw new Error(siteNameError);
38
- }
39
- const robotsResult = this.graphQLClient.request(this.query, {
40
- siteName,
41
- }, fetchOptions);
42
- try {
43
- return robotsResult.then((result) => {
44
- var _a, _b;
45
- return (_b = (_a = result === null || result === void 0 ? void 0 : result.site) === null || _a === void 0 ? void 0 : _a.siteInfo) === null || _b === void 0 ? void 0 : _b.robots;
46
- });
47
- }
48
- catch (e) {
49
- return Promise.reject(e);
50
- }
51
- }
52
- /**
53
- * Gets a GraphQL client that can make requests to the API. Uses graphql-request as the default
54
- * library for fetching graphql data (@see GraphQLRequestClient). Override this method if you
55
- * want to use something else.
56
- * @returns {GraphQLClient} implementation
57
- */
58
- getGraphQLClient() {
59
- if (!this.options.clientFactory) {
60
- throw new Error('clientFactory needs to be provided when initializing GraphQL client.');
61
- }
62
- return this.options.clientFactory({
63
- debugger: debug.robots,
64
- });
65
- }
66
- }
12
+ `;
13
+ /**
14
+ * Service that fetch the robots.txt data using Sitecore's GraphQL API.
15
+ * @public
16
+ */
17
+ export class RobotsService {
18
+ /**
19
+ * Creates an instance of graphQL robots.txt service with the provided options
20
+ * @param {RobotsServiceConfig} 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 a data of robots.txt from API
31
+ * @param {FetchOptions} fetchOptions - The fetch options to be used for the request.
32
+ * @returns text of robots.txt
33
+ * @throws {Error} if the siteName is empty.
34
+ */
35
+ async fetchRobots(fetchOptions) {
36
+ const siteName = this.options.siteName;
37
+ if (!siteName) {
38
+ throw new Error(siteNameError);
39
+ }
40
+ const robotsResult = this.graphQLClient.request(this.query, {
41
+ siteName,
42
+ }, fetchOptions);
43
+ try {
44
+ return robotsResult.then((result) => {
45
+ var _a, _b;
46
+ return (_b = (_a = result === null || result === void 0 ? void 0 : result.site) === null || _a === void 0 ? void 0 : _a.siteInfo) === null || _b === void 0 ? void 0 : _b.robots;
47
+ });
48
+ }
49
+ catch (e) {
50
+ return Promise.reject(e);
51
+ }
52
+ }
53
+ /**
54
+ * Gets a GraphQL client that can make requests to the API. Uses graphql-request as the default
55
+ * library for fetching graphql data (@see GraphQLRequestClient). Override this method if you
56
+ * want to use something else.
57
+ * @returns {GraphQLClient} implementation
58
+ */
59
+ getGraphQLClient() {
60
+ if (!this.options.clientFactory) {
61
+ throw new Error('clientFactory needs to be provided when initializing GraphQL client.');
62
+ }
63
+ return this.options.clientFactory({
64
+ debugger: debug.robots,
65
+ });
66
+ }
67
+ }
@@ -1,68 +1,69 @@
1
- // Delimiters for multi-value hostnames
2
- const DELIMITERS = /\||,|;/g;
3
- /**
4
- * Resolves site based on the provided host or site name
5
- */
6
- export class SiteResolver {
7
- /**
8
- * @param {SiteInfo[]} sites Array of sites to be used in resolution
9
- */
10
- constructor(sites) {
11
- this.sites = sites;
12
- /**
13
- * Resolve site by host name
14
- * @param {string} hostName the host name
15
- * @returns {SiteInfo} the resolved site
16
- * @throws {Error} if a matching site is not found
17
- */
18
- this.getByHost = (hostName) => {
19
- for (const [hostname, site] of this.getHostMap()) {
20
- if (this.matchesPattern(hostName, hostname)) {
21
- return site;
22
- }
23
- }
24
- throw new Error(`Could not resolve site for host ${hostName}`);
25
- };
26
- /**
27
- * Resolve site by site name
28
- * @param {string} siteName the site name
29
- * @returns {SiteInfo} the resolved site or undefined if not found
30
- */
31
- this.getByName = (siteName) => {
32
- const siteInfo = this.sites.find((info) => info.name.toLocaleLowerCase() === siteName.toLocaleLowerCase());
33
- return siteInfo;
34
- };
35
- this.getHostMap = () => {
36
- const map = new Map();
37
- // First collect unique hostnames.
38
- // For sites with same hostname defined, priority is given to the first encountered.
39
- this.sites.forEach((site) => {
40
- const hostnames = site.hostName.replace(/\s/g, '').toLocaleLowerCase().split(DELIMITERS);
41
- hostnames.forEach((hostname) => {
42
- if (!map.has(hostname)) {
43
- map.set(hostname, site);
44
- }
45
- });
46
- });
47
- // Now order by specificity.
48
- // This equivalates to sorting from longest to shortest with the assumption
49
- // that your match is less specific as wildcards are introduced.
50
- // E.g. order.eu.site.com *.eu.site.com *.site.com *
51
- // In case of a tie (e.g. *.site.com vs i.site.com), prefer one with less wildcards.
52
- return new Map(Array.from(map).sort((a, b) => {
53
- if (a[0].length === b[0].length) {
54
- return (a[0].match(/\*/g) || []).length - (b[0].match(/\*/g) || []).length;
55
- }
56
- return b[0].length - a[0].length;
57
- }));
58
- };
59
- }
60
- // b[0].match(/\*/g) || []).length
61
- matchesPattern(hostname, pattern) {
62
- // dots should be treated as chars
63
- // stars should be treated as wildcards
64
- const regExpPattern = pattern.replace(/\./g, '\\.').replace(/\*/g, '.*');
65
- const regExp = new RegExp(`^${regExpPattern}$`, 'gi');
66
- return !!hostname.match(regExp);
67
- }
68
- }
1
+ // Delimiters for multi-value hostnames
2
+ const DELIMITERS = /\||,|;/g;
3
+ /**
4
+ * Resolves site based on the provided host or site name
5
+ * @public
6
+ */
7
+ export class SiteResolver {
8
+ /**
9
+ * @param {SiteInfo[]} sites Array of sites to be used in resolution
10
+ */
11
+ constructor(sites) {
12
+ this.sites = sites;
13
+ /**
14
+ * Resolve site by host name
15
+ * @param {string} hostName the host name
16
+ * @returns {SiteInfo} the resolved site
17
+ * @throws {Error} if a matching site is not found
18
+ */
19
+ this.getByHost = (hostName) => {
20
+ for (const [hostname, site] of this.getHostMap()) {
21
+ if (this.matchesPattern(hostName, hostname)) {
22
+ return site;
23
+ }
24
+ }
25
+ throw new Error(`Could not resolve site for host ${hostName}`);
26
+ };
27
+ /**
28
+ * Resolve site by site name
29
+ * @param {string} siteName the site name
30
+ * @returns {SiteInfo} the resolved site or undefined if not found
31
+ */
32
+ this.getByName = (siteName) => {
33
+ const siteInfo = this.sites.find((info) => info.name.toLocaleLowerCase() === siteName.toLocaleLowerCase());
34
+ return siteInfo;
35
+ };
36
+ this.getHostMap = () => {
37
+ const map = new Map();
38
+ // First collect unique hostnames.
39
+ // For sites with same hostname defined, priority is given to the first encountered.
40
+ this.sites.forEach((site) => {
41
+ const hostnames = site.hostName.replace(/\s/g, '').toLocaleLowerCase().split(DELIMITERS);
42
+ hostnames.forEach((hostname) => {
43
+ if (!map.has(hostname)) {
44
+ map.set(hostname, site);
45
+ }
46
+ });
47
+ });
48
+ // Now order by specificity.
49
+ // This equivalates to sorting from longest to shortest with the assumption
50
+ // that your match is less specific as wildcards are introduced.
51
+ // E.g. order.eu.site.com *.eu.site.com *.site.com *
52
+ // In case of a tie (e.g. *.site.com vs i.site.com), prefer one with less wildcards.
53
+ return new Map(Array.from(map).sort((a, b) => {
54
+ if (a[0].length === b[0].length) {
55
+ return (a[0].match(/\*/g) || []).length - (b[0].match(/\*/g) || []).length;
56
+ }
57
+ return b[0].length - a[0].length;
58
+ }));
59
+ };
60
+ }
61
+ // b[0].match(/\*/g) || []).length
62
+ matchesPattern(hostname, pattern) {
63
+ // dots should be treated as chars
64
+ // stars should be treated as wildcards
65
+ const regExpPattern = pattern.replace(/\./g, '\\.').replace(/\*/g, '.*');
66
+ const regExp = new RegExp(`^${regExpPattern}$`, 'gi');
67
+ return !!hostname.match(regExp);
68
+ }
69
+ }