@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,100 +1,101 @@
1
- import { GraphQLClient as Client } from 'graphql-request';
2
- import parse from 'url-parse';
3
- import debuggers from './debug';
4
- import TimeoutPromise from './utils/timeout-promise';
5
- import { DefaultRetryStrategy } from './retries';
6
- /**
7
- * A GraphQL client for Sitecore APIs that uses the 'graphql-request' library.
8
- * https://github.com/prisma-labs/graphql-request
9
- */
10
- export class GraphQLRequestClient {
11
- /**
12
- * Provides ability to execute graphql query using given `endpoint`
13
- * @param {string} endpoint The Graphql endpoint
14
- * @param {GraphQLRequestClientConfig} [clientConfig] GraphQL request client configuration.
15
- */
16
- constructor(endpoint, clientConfig = {}) {
17
- var _a;
18
- this.endpoint = endpoint;
19
- this.headers = {};
20
- if (clientConfig.apiKey) {
21
- this.headers.sc_apikey = clientConfig.apiKey;
22
- }
23
- if (clientConfig.headers) {
24
- this.headers = Object.assign(Object.assign({}, this.headers), clientConfig.headers);
25
- }
26
- if (!endpoint || !parse(endpoint).hostname) {
27
- throw new Error(`Invalid GraphQL endpoint '${endpoint}'. Verify that appropriate environment variable is set`);
28
- }
29
- this.timeout = clientConfig.timeout;
30
- this.retries = (_a = clientConfig.retries) !== null && _a !== void 0 ? _a : 3;
31
- this.retryStrategy =
32
- clientConfig.retryStrategy ||
33
- new DefaultRetryStrategy({ statusCodes: [429, 502, 503, 504, 520, 521, 522, 523, 524] });
34
- this.client = new Client(endpoint, {
35
- headers: this.headers,
36
- fetch: clientConfig.fetch,
37
- });
38
- this.debug = clientConfig.debugger || debuggers.http;
39
- }
40
- /**
41
- * Factory method for creating a GraphQLRequestClientFactory.
42
- * @param {object} config - client configuration options.
43
- * @param {string} config.endpoint - endpoint
44
- * @param {string} [config.apiKey] - apikey
45
- */
46
- static createClientFactory({ endpoint, apiKey, }) {
47
- return (config = {}) => new GraphQLRequestClient(endpoint, Object.assign(Object.assign({}, config), { apiKey }));
48
- }
49
- /**
50
- * Execute graphql request
51
- * @param {string | DocumentNode} query graphql query
52
- * @param {RequestOptions} [options] Options for configuring a GraphQL request.
53
- */
54
- async request(query, variables, options) {
55
- let attempt = 1;
56
- const retryer = async () => {
57
- const retries = (options === null || options === void 0 ? void 0 : options.retries) || this.retries;
58
- const retryStrategy = (options === null || options === void 0 ? void 0 : options.retryStrategy) || this.retryStrategy;
59
- const debug = (options === null || options === void 0 ? void 0 : options.debugger) || this.debug;
60
- // Note we don't have access to raw request/response with graphql-request
61
- // but we should log whatever we have.
62
- debug('request: %o', {
63
- url: this.endpoint,
64
- headers: Object.assign(Object.assign({}, this.headers), options === null || options === void 0 ? void 0 : options.headers),
65
- query,
66
- variables,
67
- timeout: this.timeout,
68
- });
69
- const startTimestamp = Date.now();
70
- const headers = Object.assign(Object.assign({}, this.headers), options === null || options === void 0 ? void 0 : options.headers);
71
- const fetchWithOptionalTimeout = [this.client.request(query, variables, headers)];
72
- if (this.timeout) {
73
- this.abortTimeout = new TimeoutPromise(this.timeout);
74
- fetchWithOptionalTimeout.push(this.abortTimeout.start);
75
- }
76
- return Promise.race(fetchWithOptionalTimeout).then((data) => {
77
- var _a;
78
- (_a = this.abortTimeout) === null || _a === void 0 ? void 0 : _a.clear();
79
- this.debug('response in %dms: %o', Date.now() - startTimestamp, data);
80
- return Promise.resolve(data);
81
- }, async (error) => {
82
- var _a, _b;
83
- (_a = this.abortTimeout) === null || _a === void 0 ? void 0 : _a.clear();
84
- debug('response error: %o', error.response || error.message || error);
85
- const status = ((_b = error.response) === null || _b === void 0 ? void 0 : _b.status) || error.code;
86
- const shouldRetry = retryStrategy.shouldRetry(error, attempt, retries);
87
- if (shouldRetry) {
88
- const delayMs = retryStrategy.getDelay(error, attempt);
89
- debug('Error: %s. Retrying in %dms (attempt %d).', status, delayMs, attempt);
90
- attempt++;
91
- return new Promise((resolve) => setTimeout(resolve, delayMs)).then(retryer);
92
- }
93
- else {
94
- return Promise.reject(error);
95
- }
96
- });
97
- };
98
- return retryer();
99
- }
100
- }
1
+ import { GraphQLClient as Client } from 'graphql-request';
2
+ import parse from 'url-parse';
3
+ import debuggers from './debug';
4
+ import TimeoutPromise from './utils/timeout-promise';
5
+ import { DefaultRetryStrategy } from './retries';
6
+ /**
7
+ * A GraphQL client for Sitecore APIs that uses the 'graphql-request' library.
8
+ * https://github.com/prisma-labs/graphql-request
9
+ * @public
10
+ */
11
+ export class GraphQLRequestClient {
12
+ /**
13
+ * Provides ability to execute graphql query using given `endpoint`
14
+ * @param {string} endpoint The Graphql endpoint
15
+ * @param {GraphQLRequestClientConfig} [clientConfig] GraphQL request client configuration.
16
+ */
17
+ constructor(endpoint, clientConfig = {}) {
18
+ var _a;
19
+ this.endpoint = endpoint;
20
+ this.headers = {};
21
+ if (clientConfig.apiKey) {
22
+ this.headers.sc_apikey = clientConfig.apiKey;
23
+ }
24
+ if (clientConfig.headers) {
25
+ this.headers = Object.assign(Object.assign({}, this.headers), clientConfig.headers);
26
+ }
27
+ if (!endpoint || !parse(endpoint).hostname) {
28
+ throw new Error(`Invalid GraphQL endpoint '${endpoint}'. Verify that appropriate environment variable is set`);
29
+ }
30
+ this.timeout = clientConfig.timeout;
31
+ this.retries = (_a = clientConfig.retries) !== null && _a !== void 0 ? _a : 3;
32
+ this.retryStrategy =
33
+ clientConfig.retryStrategy ||
34
+ new DefaultRetryStrategy({ statusCodes: [429, 502, 503, 504, 520, 521, 522, 523, 524] });
35
+ this.client = new Client(endpoint, {
36
+ headers: this.headers,
37
+ fetch: clientConfig.fetch,
38
+ });
39
+ this.debug = clientConfig.debugger || debuggers.http;
40
+ }
41
+ /**
42
+ * Factory method for creating a GraphQLRequestClientFactory.
43
+ * @param {object} config - client configuration options.
44
+ * @param {string} config.endpoint - endpoint
45
+ * @param {string} [config.apiKey] - apikey
46
+ */
47
+ static createClientFactory({ endpoint, apiKey, }) {
48
+ return (config = {}) => new GraphQLRequestClient(endpoint, Object.assign(Object.assign({}, config), { apiKey }));
49
+ }
50
+ /**
51
+ * Execute graphql request
52
+ * @param {string | DocumentNode} query graphql query
53
+ * @param {RequestOptions} [options] Options for configuring a GraphQL request.
54
+ */
55
+ async request(query, variables, options) {
56
+ let attempt = 1;
57
+ const retryer = async () => {
58
+ const retries = (options === null || options === void 0 ? void 0 : options.retries) || this.retries;
59
+ const retryStrategy = (options === null || options === void 0 ? void 0 : options.retryStrategy) || this.retryStrategy;
60
+ const debug = (options === null || options === void 0 ? void 0 : options.debugger) || this.debug;
61
+ // Note we don't have access to raw request/response with graphql-request
62
+ // but we should log whatever we have.
63
+ debug('request: %o', {
64
+ url: this.endpoint,
65
+ headers: Object.assign(Object.assign({}, this.headers), options === null || options === void 0 ? void 0 : options.headers),
66
+ query,
67
+ variables,
68
+ timeout: this.timeout,
69
+ });
70
+ const startTimestamp = Date.now();
71
+ const headers = Object.assign(Object.assign({}, this.headers), options === null || options === void 0 ? void 0 : options.headers);
72
+ const fetchWithOptionalTimeout = [this.client.request(query, variables, headers)];
73
+ if (this.timeout) {
74
+ this.abortTimeout = new TimeoutPromise(this.timeout);
75
+ fetchWithOptionalTimeout.push(this.abortTimeout.start);
76
+ }
77
+ return Promise.race(fetchWithOptionalTimeout).then((data) => {
78
+ var _a;
79
+ (_a = this.abortTimeout) === null || _a === void 0 ? void 0 : _a.clear();
80
+ this.debug('response in %dms: %o', Date.now() - startTimestamp, data);
81
+ return Promise.resolve(data);
82
+ }, async (error) => {
83
+ var _a, _b;
84
+ (_a = this.abortTimeout) === null || _a === void 0 ? void 0 : _a.clear();
85
+ debug('response error: %o', error.response || error.message || error);
86
+ const status = ((_b = error.response) === null || _b === void 0 ? void 0 : _b.status) || error.code;
87
+ const shouldRetry = retryStrategy.shouldRetry(error, attempt, retries);
88
+ if (shouldRetry) {
89
+ const delayMs = retryStrategy.getDelay(error, attempt);
90
+ debug('Error: %s. Retrying in %dms (attempt %d).', status, delayMs, attempt);
91
+ attempt++;
92
+ return new Promise((resolve) => setTimeout(resolve, delayMs)).then(retryer);
93
+ }
94
+ else {
95
+ return Promise.reject(error);
96
+ }
97
+ });
98
+ };
99
+ return retryer();
100
+ }
101
+ }
@@ -1,9 +1,9 @@
1
- import { MemoryCacheClient } from '../cache-client';
2
- import { siteNameError, languageError } from '../client/constants';
3
- import debug from '../debug';
4
- /** @private */
5
- export const queryError = 'Valid value for rootItemId not provided and failed to auto-resolve app root item.';
6
- /** @default */
1
+ import { MemoryCacheClient } from '../cache-client';
2
+ import { siteNameError, languageError } from '../client/constants';
3
+ import debug from '../debug';
4
+ /** @private */
5
+ export const queryError = 'Valid value for rootItemId not provided and failed to auto-resolve app root item.';
6
+ /** @default */
7
7
  const siteQuery = /* GraphQL */ `
8
8
  query DictionarySiteQuery(
9
9
  $siteName: String!
@@ -26,111 +26,112 @@ const siteQuery = /* GraphQL */ `
26
26
  }
27
27
  }
28
28
  }
29
- `;
30
- /**
31
- * Service that fetch dictionary data using Sitecore's GraphQL API.
32
- * @augments DictionaryServiceBase
33
- * @mixes SearchQueryService<DictionaryQueryResult>
34
- */
35
- export class DictionaryService {
36
- /**
37
- * Creates an instance of graphQL dictionary service with the provided options
38
- * @param {DictionaryService} options instance
39
- */
40
- constructor(options) {
41
- this.options = options;
42
- this.cache = this.getCacheClient();
43
- this.graphQLClient = this.getGraphQLClient();
44
- }
45
- /**
46
- * Fetches dictionary data for internalization. Uses search query by default
47
- * @param {string} language the language to fetch
48
- * @param {string} site site name to fetch data for.
49
- * @param {FetchOptions} [fetchOptions] Options to override graphQL client details like retries and fetch implementation
50
- * @returns {Promise<DictionaryPhrases>} dictionary phrases
51
- * @throws {Error} if the app root was not found for the specified site and language.
52
- */
53
- async fetchDictionaryData(language, site, fetchOptions) {
54
- var _a, _b;
55
- const cacheKey = site + language;
56
- const cachedValue = this.getCacheValue(cacheKey);
57
- if (cachedValue) {
58
- debug.dictionary('using cached dictionary data for %s %s', language, site);
59
- return cachedValue;
60
- }
61
- const phrases = {};
62
- debug.dictionary('fetching dictionary data for %s %s', language, site);
63
- let results = [];
64
- let hasNext = true;
65
- let after = '';
66
- if (!site) {
67
- throw new RangeError(siteNameError);
68
- }
69
- if (!language) {
70
- throw new RangeError(languageError);
71
- }
72
- while (hasNext) {
73
- const fetchResponse = await this.graphQLClient.request(siteQuery, {
74
- siteName: site,
75
- language,
76
- pageSize: this.options.pageSize,
77
- after,
78
- }, fetchOptions);
79
- if ((_b = (_a = fetchResponse === null || fetchResponse === void 0 ? void 0 : fetchResponse.site) === null || _a === void 0 ? void 0 : _a.siteInfo) === null || _b === void 0 ? void 0 : _b.dictionary) {
80
- results = results.concat(fetchResponse.site.siteInfo.dictionary.results);
81
- after = fetchResponse.site.siteInfo.dictionary.pageInfo.endCursor;
82
- hasNext = fetchResponse.site.siteInfo.dictionary.pageInfo.hasNext;
83
- }
84
- else {
85
- hasNext = false;
86
- }
87
- }
88
- results.forEach((item) => (phrases[item.key] = item.value));
89
- this.setCacheValue(cacheKey, phrases);
90
- return phrases;
91
- }
92
- /**
93
- * Caches a @see DictionaryPhrases value for the specified cache key.
94
- * @param {string} key The cache key.
95
- * @param {DictionaryPhrases} value The value to cache.
96
- * @returns The value added to the cache.
97
- * @mixes CacheClient<DictionaryPhrases>
98
- */
99
- setCacheValue(key, value) {
100
- return this.cache.setCacheValue(key, value);
101
- }
102
- /**
103
- * Retrieves a @see DictionaryPhrases value from the cache.
104
- * @param {string} key The cache key.
105
- * @returns The @see DictionaryPhrases value, or null if the specified key is not found in the cache.
106
- */
107
- getCacheValue(key) {
108
- return this.cache.getCacheValue(key);
109
- }
110
- /**
111
- * Gets a cache client that can cache data. Uses memory-cache as the default
112
- * library for caching (@see MemoryCacheClient). Override this method if you
113
- * want to use something else.
114
- * @returns {CacheClient} implementation
115
- */
116
- getCacheClient() {
117
- return new MemoryCacheClient(this.options);
118
- }
119
- /**
120
- * Gets a GraphQL client that can make requests to the API. Uses graphql-request as the default
121
- * library for fetching graphql data (@see GraphQLRequestClient). Override this method if you
122
- * want to use something else.
123
- * @returns {GraphQLClient} implementation
124
- */
125
- getGraphQLClient() {
126
- var _a, _b;
127
- if (!this.options.clientFactory) {
128
- throw new Error('clientFactory needs to be provided when initializing GraphQL client.');
129
- }
130
- return this.options.clientFactory({
131
- debugger: debug.dictionary,
132
- retries: (_a = this.options.retries) === null || _a === void 0 ? void 0 : _a.count,
133
- retryStrategy: (_b = this.options.retries) === null || _b === void 0 ? void 0 : _b.retryStrategy,
134
- });
135
- }
136
- }
29
+ `;
30
+ /**
31
+ * Service that fetch dictionary data using Sitecore's GraphQL API.
32
+ * @augments DictionaryServiceBase
33
+ * @mixes SearchQueryService<DictionaryQueryResult>
34
+ * @public
35
+ */
36
+ export class DictionaryService {
37
+ /**
38
+ * Creates an instance of graphQL dictionary service with the provided options
39
+ * @param {DictionaryService} options instance
40
+ */
41
+ constructor(options) {
42
+ this.options = options;
43
+ this.cache = this.getCacheClient();
44
+ this.graphQLClient = this.getGraphQLClient();
45
+ }
46
+ /**
47
+ * Fetches dictionary data for internalization. Uses search query by default
48
+ * @param {string} language the language to fetch
49
+ * @param {string} site site name to fetch data for.
50
+ * @param {FetchOptions} [fetchOptions] Options to override graphQL client details like retries and fetch implementation
51
+ * @returns {Promise<DictionaryPhrases>} dictionary phrases
52
+ * @throws {Error} if the app root was not found for the specified site and language.
53
+ */
54
+ async fetchDictionaryData(language, site, fetchOptions) {
55
+ var _a, _b;
56
+ const cacheKey = site + language;
57
+ const cachedValue = this.getCacheValue(cacheKey);
58
+ if (cachedValue) {
59
+ debug.dictionary('using cached dictionary data for %s %s', language, site);
60
+ return cachedValue;
61
+ }
62
+ const phrases = {};
63
+ debug.dictionary('fetching dictionary data for %s %s', language, site);
64
+ let results = [];
65
+ let hasNext = true;
66
+ let after = '';
67
+ if (!site) {
68
+ throw new RangeError(siteNameError);
69
+ }
70
+ if (!language) {
71
+ throw new RangeError(languageError);
72
+ }
73
+ while (hasNext) {
74
+ const fetchResponse = await this.graphQLClient.request(siteQuery, {
75
+ siteName: site,
76
+ language,
77
+ pageSize: this.options.pageSize,
78
+ after,
79
+ }, fetchOptions);
80
+ if ((_b = (_a = fetchResponse === null || fetchResponse === void 0 ? void 0 : fetchResponse.site) === null || _a === void 0 ? void 0 : _a.siteInfo) === null || _b === void 0 ? void 0 : _b.dictionary) {
81
+ results = results.concat(fetchResponse.site.siteInfo.dictionary.results);
82
+ after = fetchResponse.site.siteInfo.dictionary.pageInfo.endCursor;
83
+ hasNext = fetchResponse.site.siteInfo.dictionary.pageInfo.hasNext;
84
+ }
85
+ else {
86
+ hasNext = false;
87
+ }
88
+ }
89
+ results.forEach((item) => (phrases[item.key] = item.value));
90
+ this.setCacheValue(cacheKey, phrases);
91
+ return phrases;
92
+ }
93
+ /**
94
+ * Caches a @see DictionaryPhrases value for the specified cache key.
95
+ * @param {string} key The cache key.
96
+ * @param {DictionaryPhrases} value The value to cache.
97
+ * @returns The value added to the cache.
98
+ * @mixes CacheClient<DictionaryPhrases>
99
+ */
100
+ setCacheValue(key, value) {
101
+ return this.cache.setCacheValue(key, value);
102
+ }
103
+ /**
104
+ * Retrieves a @see DictionaryPhrases value from the cache.
105
+ * @param {string} key The cache key.
106
+ * @returns The @see DictionaryPhrases value, or null if the specified key is not found in the cache.
107
+ */
108
+ getCacheValue(key) {
109
+ return this.cache.getCacheValue(key);
110
+ }
111
+ /**
112
+ * Gets a cache client that can cache data. Uses memory-cache as the default
113
+ * library for caching (@see MemoryCacheClient). Override this method if you
114
+ * want to use something else.
115
+ * @returns {CacheClient} implementation
116
+ */
117
+ getCacheClient() {
118
+ return new MemoryCacheClient(this.options);
119
+ }
120
+ /**
121
+ * Gets a GraphQL client that can make requests to the API. Uses graphql-request as the default
122
+ * library for fetching graphql data (@see GraphQLRequestClient). Override this method if you
123
+ * want to use something else.
124
+ * @returns {GraphQLClient} implementation
125
+ */
126
+ getGraphQLClient() {
127
+ var _a, _b;
128
+ if (!this.options.clientFactory) {
129
+ throw new Error('clientFactory needs to be provided when initializing GraphQL client.');
130
+ }
131
+ return this.options.clientFactory({
132
+ debugger: debug.dictionary,
133
+ retries: (_a = this.options.retries) === null || _a === void 0 ? void 0 : _a.count,
134
+ retryStrategy: (_b = this.options.retries) === null || _b === void 0 ? void 0 : _b.retryStrategy,
135
+ });
136
+ }
137
+ }
@@ -1,2 +1,2 @@
1
- export { DictionaryService, } from './dictionary-service';
2
- export { getLocaleRewrite } from './utils';
1
+ export { DictionaryService, } from './dictionary-service';
2
+ export { getLocaleRewrite } from './utils';
@@ -1,12 +1,13 @@
1
- /**
2
- * Get a locale rewrite path for given pathname
3
- * @param {string} pathname the pathname
4
- * @param {string} locale the site data to include in the rewrite
5
- * @returns {string} the rewrite path
6
- */
7
- export function getLocaleRewrite(pathname, locale) {
8
- if (pathname === '/')
9
- return `/${locale}`;
10
- const path = pathname.startsWith('/') ? pathname : '/' + pathname;
11
- return `/${locale}${path}`;
12
- }
1
+ /**
2
+ * Get a locale rewrite path for given pathname
3
+ * @param {string} pathname the pathname
4
+ * @param {string} locale the site data to include in the rewrite
5
+ * @returns {string} the rewrite path
6
+ * @public
7
+ */
8
+ export function getLocaleRewrite(pathname, locale) {
9
+ if (pathname === '/')
10
+ return `/${locale}`;
11
+ const path = pathname.startsWith('/') ? pathname : '/' + pathname;
12
+ return `/${locale}${path}`;
13
+ }
package/dist/esm/index.js CHANGED
@@ -1,13 +1,13 @@
1
- // NOTE: all imports are now named as to not make breaking changes
2
- // and to keep react-native working with cjs modules.
3
- import * as constants from './constants';
4
- import * as form from './form';
5
- export { default as debug, enableDebug } from './debug';
6
- export { GraphQLRequestClient, } from './graphql-request-client';
7
- export { DefaultRetryStrategy } from './retries';
8
- export { MemoryCacheClient } from './cache-client';
9
- export { ClientError } from 'graphql-request';
10
- export { NativeDataFetcher, } from './native-fetcher';
11
- export { constants };
12
- export { form };
13
- export { defineConfig } from './config';
1
+ // NOTE: all imports are now named as to not make breaking changes
2
+ // and to keep react-native working with cjs modules.
3
+ import * as constants from './constants';
4
+ import * as form from './form';
5
+ export { default as debug, enableDebug } from './debug';
6
+ export { GraphQLRequestClient, } from './graphql-request-client';
7
+ export { DefaultRetryStrategy } from './retries';
8
+ export { MemoryCacheClient } from './cache-client';
9
+ export { ClientError } from 'graphql-request';
10
+ export { NativeDataFetcher, } from './native-fetcher';
11
+ export { constants };
12
+ export { form };
13
+ export { defineConfig } from './config';