@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,102 +1,109 @@
1
- /**
2
- * @param {ComponentRendering | Fields} renderingOrFields the rendering or fields object to extract the field from
3
- * @param {string} fieldName the name of the field to extract
4
- * @param {T} [defaultValue] the default value to return if the field is not defined
5
- * @returns {Field | T} the field value or the default value if the field is not defined
6
- */
7
- // eslint-disable-next-line no-redeclare
8
- export function getFieldValue(renderingOrFields, fieldName, defaultValue) {
9
- if (!renderingOrFields || !fieldName) {
10
- return defaultValue;
11
- }
12
- const fields = renderingOrFields;
13
- const field = fields[fieldName];
14
- if (field && typeof field.value !== 'undefined') {
15
- return field.value;
16
- }
17
- const rendering = renderingOrFields;
18
- if (!rendering.fields ||
19
- !rendering.fields[fieldName] ||
20
- typeof rendering.fields[fieldName].value === 'undefined') {
21
- return defaultValue;
22
- }
23
- return rendering.fields[fieldName].value;
24
- }
25
- /**
26
- * Gets rendering definitions in a given child placeholder under a current rendering.
27
- * @param {ComponentRendering} rendering
28
- * @param {string} placeholderName
29
- * @returns {ComponentRendering[]} child placeholder
30
- */
31
- export function getChildPlaceholder(rendering, placeholderName) {
32
- if (!rendering ||
33
- !placeholderName ||
34
- !rendering.placeholders ||
35
- !rendering.placeholders[placeholderName]) {
36
- return [];
37
- }
38
- return rendering.placeholders[placeholderName];
39
- }
40
- /**
41
- * Returns a regular expression pattern for a dynamic placeholder name.
42
- * @param {string} placeholder Placeholder name with a dynamic segment (e.g. 'main-{*}')
43
- * @returns Regular expression pattern for the dynamic segment
44
- */
45
- export const getDynamicPlaceholderPattern = (placeholder) => {
46
- return new RegExp(`^${placeholder.replace(/\{\*\}+/i, '\\d+')}$`);
47
- };
48
- /**
49
- * Checks if the placeholder name is dynamic.
50
- * @param {string} placeholder Placeholder name
51
- * @returns True if the placeholder name is dynamic
52
- */
53
- export const isDynamicPlaceholder = (placeholder) => placeholder.indexOf('{*}') !== -1;
54
- /**
55
- * The default value for an empty Date field.
56
- * This value is defined as a default one by .NET
57
- */
58
- export const EMPTY_DATE_FIELD_VALUE = '0001-01-01T00:00:00Z';
59
- /**
60
- * Determines if the passed in field object's value is empty.
61
- * @param {GenericFieldValue | Partial<Field>} field the field object.
62
- * Partial<T> type is used here because _field.value_ could be required or optional for the different field types
63
- */
64
- export function isFieldValueEmpty(field) {
65
- const isImageFieldEmpty = (fieldValue) => !fieldValue.src;
66
- const isFileFieldEmpty = (fieldValue) => !fieldValue.src;
67
- const isLinkFieldEmpty = (fieldValue) => !fieldValue.href;
68
- const isDateFieldEmpty = (fieldValue) => {
69
- if (typeof fieldValue === 'string') {
70
- return fieldValue === EMPTY_DATE_FIELD_VALUE;
71
- }
72
- else {
73
- return !(typeof (fieldValue === null || fieldValue === void 0 ? void 0 : fieldValue.getMonth) === 'function' &&
74
- !isNaN(fieldValue === null || fieldValue === void 0 ? void 0 : fieldValue.getMonth()));
75
- }
76
- };
77
- const isEmpty = (fieldValue) => {
78
- if (fieldValue === null || fieldValue === undefined) {
79
- return true;
80
- }
81
- if (typeof fieldValue === 'object') {
82
- return (isImageFieldEmpty(fieldValue) &&
83
- isFileFieldEmpty(fieldValue) &&
84
- isLinkFieldEmpty(fieldValue) &&
85
- isDateFieldEmpty(fieldValue));
86
- }
87
- else if (typeof fieldValue === 'number' || typeof fieldValue === 'boolean') {
88
- // Avoid returning true for 0 and false values
89
- return false;
90
- }
91
- else {
92
- return !fieldValue || isDateFieldEmpty(fieldValue);
93
- }
94
- };
95
- if (!field)
96
- return true;
97
- const dynamicField = field;
98
- if (dynamicField.value !== undefined) {
99
- return isEmpty(dynamicField.value);
100
- }
101
- return isEmpty(field);
102
- }
1
+ /**
2
+ * @param {ComponentRendering | Fields} renderingOrFields the rendering or fields object to extract the field from
3
+ * @param {string} fieldName the name of the field to extract
4
+ * @param {T} [defaultValue] the default value to return if the field is not defined
5
+ * @returns {Field | T} the field value or the default value if the field is not defined
6
+ * @public
7
+ */
8
+ // eslint-disable-next-line no-redeclare
9
+ export function getFieldValue(renderingOrFields, fieldName, defaultValue) {
10
+ if (!renderingOrFields || !fieldName) {
11
+ return defaultValue;
12
+ }
13
+ const fields = renderingOrFields;
14
+ const field = fields[fieldName];
15
+ if (field && typeof field.value !== 'undefined') {
16
+ return field.value;
17
+ }
18
+ const rendering = renderingOrFields;
19
+ if (!rendering.fields ||
20
+ !rendering.fields[fieldName] ||
21
+ typeof rendering.fields[fieldName].value === 'undefined') {
22
+ return defaultValue;
23
+ }
24
+ return rendering.fields[fieldName].value;
25
+ }
26
+ /**
27
+ * Gets rendering definitions in a given child placeholder under a current rendering.
28
+ * @param {ComponentRendering} rendering
29
+ * @param {string} placeholderName
30
+ * @returns {ComponentRendering[]} child placeholder
31
+ * @public
32
+ */
33
+ export function getChildPlaceholder(rendering, placeholderName) {
34
+ if (!rendering ||
35
+ !placeholderName ||
36
+ !rendering.placeholders ||
37
+ !rendering.placeholders[placeholderName]) {
38
+ return [];
39
+ }
40
+ return rendering.placeholders[placeholderName];
41
+ }
42
+ /**
43
+ * Returns a regular expression pattern for a dynamic placeholder name.
44
+ * @param {string} placeholder Placeholder name with a dynamic segment (e.g. 'main-{*}')
45
+ * @returns Regular expression pattern for the dynamic segment
46
+ * @internal
47
+ */
48
+ export const getDynamicPlaceholderPattern = (placeholder) => {
49
+ return new RegExp(`^${placeholder.replace(/\{\*\}+/i, '\\d+')}$`);
50
+ };
51
+ /**
52
+ * Checks if the placeholder name is dynamic.
53
+ * @param {string} placeholder Placeholder name
54
+ * @returns True if the placeholder name is dynamic
55
+ * @internal
56
+ */
57
+ export const isDynamicPlaceholder = (placeholder) => placeholder.indexOf('{*}') !== -1;
58
+ /**
59
+ * The default value for an empty Date field.
60
+ * This value is defined as a default one by .NET
61
+ * @internal
62
+ */
63
+ export const EMPTY_DATE_FIELD_VALUE = '0001-01-01T00:00:00Z';
64
+ /**
65
+ * Determines if the passed in field object's value is empty.
66
+ * @param {GenericFieldValue | Partial<Field>} field the field object.
67
+ * Partial<T> type is used here because _field.value_ could be required or optional for the different field types
68
+ * @returns True if the field value is empty
69
+ * @public
70
+ */
71
+ export function isFieldValueEmpty(field) {
72
+ if (!field)
73
+ return true;
74
+ const isImageFieldEmpty = (fieldValue) => !fieldValue.src;
75
+ const isFileFieldEmpty = (fieldValue) => !fieldValue.src;
76
+ const isLinkFieldEmpty = (fieldValue) => !fieldValue.href;
77
+ const isDateFieldEmpty = (fieldValue) => {
78
+ if (typeof fieldValue === 'string') {
79
+ return fieldValue === EMPTY_DATE_FIELD_VALUE;
80
+ }
81
+ else {
82
+ return !(typeof (fieldValue === null || fieldValue === void 0 ? void 0 : fieldValue.getMonth) === 'function' &&
83
+ !isNaN(fieldValue === null || fieldValue === void 0 ? void 0 : fieldValue.getMonth()));
84
+ }
85
+ };
86
+ const isEmpty = (fieldValue) => {
87
+ if (fieldValue === null || fieldValue === undefined) {
88
+ return true;
89
+ }
90
+ if (typeof fieldValue === 'object') {
91
+ return (isImageFieldEmpty(fieldValue) &&
92
+ isFileFieldEmpty(fieldValue) &&
93
+ isLinkFieldEmpty(fieldValue) &&
94
+ isDateFieldEmpty(fieldValue));
95
+ }
96
+ else if (typeof fieldValue === 'number' || typeof fieldValue === 'boolean') {
97
+ // Avoid returning true for 0 and false values
98
+ return false;
99
+ }
100
+ else {
101
+ return !fieldValue || isDateFieldEmpty(fieldValue);
102
+ }
103
+ };
104
+ const dynamicField = field;
105
+ if (dynamicField.value !== undefined) {
106
+ return isEmpty(dynamicField.value);
107
+ }
108
+ return isEmpty(field);
109
+ }
@@ -1,2 +1,2 @@
1
- import * as mediaApi from './media-api';
2
- export { mediaApi };
1
+ import * as mediaApi from './media-api';
2
+ export { mediaApi };
@@ -1,86 +1,90 @@
1
- import URL from 'url-parse';
2
- // finds the Sitecore media URL prefix
3
- const mediaUrlPrefixRegex = /\/([-~]{1})\/media\//i;
4
- /**
5
- * Get required query string params which should be merged with user params
6
- * @param {object} qs layout service parsed query string
7
- * @returns {object} requiredParams
8
- */
9
- export const getRequiredParams = (qs) => {
10
- const { rev, db, la, vs, ts } = qs;
11
- return { rev, db, la, vs, ts };
12
- };
13
- /**
14
- * Replace `/~/media` or `/-/media` with `/~/jssmedia` or `/-/jssmedia`, respectively.
15
- * Can use `mediaUrlPrefix` in order to use a custom prefix.
16
- * @param {string} url The URL to replace the media URL prefix in
17
- * @param {RegExp} [mediaUrlPrefix] The regex to match the media URL prefix
18
- * @returns {string} The URL with the media URL prefix replaced
19
- */
20
- export const replaceMediaUrlPrefix = (url, mediaUrlPrefix = mediaUrlPrefixRegex) => {
21
- const parsed = URL(url, {}, true);
22
- const match = mediaUrlPrefix.exec(parsed.pathname);
23
- if (match && match.length > 1) {
24
- // regex will provide us with /-/ or /~/ type
25
- parsed.set('pathname', parsed.pathname.replace(mediaUrlPrefix, `/${match[1]}/jssmedia/`));
26
- }
27
- return parsed.toString();
28
- };
29
- /**
30
- * Prepares a Sitecore media URL with `params` for use by the Content SDK media handler.
31
- * This is done by replacing `/~/media` or `/-/media` with `/~/jssmedia` or `/-/jssmedia`, respectively.
32
- * Provided `params` are used as the querystring parameters for the media URL.
33
- * Can use `mediaUrlPrefix` in order to use a custom prefix.
34
- * If no `params` are sent, the original media URL is returned.
35
- * @param {string} url The URL to prepare
36
- * @param {object} [params] The querystring parameters to use
37
- * @param {RegExp} [mediaUrlPrefix] The regex to match the media URL prefix
38
- * @returns {string} The prepared URL
39
- */
40
- export const updateImageUrl = (url, params, mediaUrlPrefix = mediaUrlPrefixRegex) => {
41
- if (!params || Object.keys(params).length === 0) {
42
- // if params aren't supplied, no need to run it through Content SDK media handler
43
- return url;
44
- }
45
- // polyfill node `global` in browser to workaround https://github.com/unshiftio/url-parse/issues/150
46
- if (typeof window !== 'undefined' && !window.global) {
47
- window.global = {};
48
- }
49
- const parsed = URL(replaceMediaUrlPrefix(url, mediaUrlPrefix), {}, true);
50
- const requiredParams = getRequiredParams(parsed.query);
51
- const query = Object.assign({}, params);
52
- Object.entries(requiredParams).forEach(([key, param]) => {
53
- if (param) {
54
- query[key] = param;
55
- }
56
- });
57
- parsed.set('query', query);
58
- return parsed.toString();
59
- };
60
- /**
61
- * Receives an array of `srcSet` parameters that are iterated and used as parameters to generate
62
- * a corresponding set of updated Sitecore media URLs via @see updateImageUrl. The result is a comma-delimited
63
- * list of media URLs with respective dimension parameters.
64
- * @example
65
- * // returns '/ipsum.jpg?h=1000&w=1000 1000w, /ipsum.jpg?mh=250&mw=250 250w'
66
- * getSrcSet('/ipsum.jpg', [{ h: 1000, w: 1000 }, { mh: 250, mw: 250 } ])
67
- * More information about `srcSet`: {@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img}
68
- * @param {string} url The URL to prepare
69
- * @param {Array} srcSet The array of parameters to use
70
- * @param {object} [imageParams] The querystring parameters to use
71
- * @param {RegExp} [mediaUrlPrefix] The regex to match the media URL prefix
72
- * @returns {string} The prepared URL
73
- */
74
- export const getSrcSet = (url, srcSet, imageParams, mediaUrlPrefix) => {
75
- return srcSet
76
- .map((params) => {
77
- const newParams = Object.assign(Object.assign({}, imageParams), params);
78
- const imageWidth = newParams.w || newParams.mw;
79
- if (!imageWidth) {
80
- return null;
81
- }
82
- return `${updateImageUrl(url, newParams, mediaUrlPrefix)} ${imageWidth}w`;
83
- })
84
- .filter((value) => value)
85
- .join(', ');
86
- };
1
+ import URL from 'url-parse';
2
+ // finds the Sitecore media URL prefix
3
+ const mediaUrlPrefixRegex = /\/([-~]{1})\/media\//i;
4
+ /**
5
+ * Get required query string params which should be merged with user params
6
+ * @param {object} qs layout service parsed query string
7
+ * @returns {object} requiredParams
8
+ * @public
9
+ */
10
+ export const getRequiredParams = (qs) => {
11
+ const { rev, db, la, vs, ts } = qs;
12
+ return { rev, db, la, vs, ts };
13
+ };
14
+ /**
15
+ * Replace `/~/media` or `/-/media` with `/~/jssmedia` or `/-/jssmedia`, respectively.
16
+ * Can use `mediaUrlPrefix` in order to use a custom prefix.
17
+ * @param {string} url The URL to replace the media URL prefix in
18
+ * @param {RegExp} [mediaUrlPrefix] The regex to match the media URL prefix
19
+ * @returns {string} The URL with the media URL prefix replaced
20
+ * @public
21
+ */
22
+ export const replaceMediaUrlPrefix = (url, mediaUrlPrefix = mediaUrlPrefixRegex) => {
23
+ const parsed = URL(url, {}, true);
24
+ const match = mediaUrlPrefix.exec(parsed.pathname);
25
+ if (match && match.length > 1) {
26
+ // regex will provide us with /-/ or /~/ type
27
+ parsed.set('pathname', parsed.pathname.replace(mediaUrlPrefix, `/${match[1]}/jssmedia/`));
28
+ }
29
+ return parsed.toString();
30
+ };
31
+ /**
32
+ * Prepares a Sitecore media URL with `params` for use by the Content SDK media handler.
33
+ * This is done by replacing `/~/media` or `/-/media` with `/~/jssmedia` or `/-/jssmedia`, respectively.
34
+ * Provided `params` are used as the querystring parameters for the media URL.
35
+ * Can use `mediaUrlPrefix` in order to use a custom prefix.
36
+ * If no `params` are sent, the original media URL is returned.
37
+ * @param {string} url The URL to prepare
38
+ * @param {object} [params] The querystring parameters to use
39
+ * @param {RegExp} [mediaUrlPrefix] The regex to match the media URL prefix
40
+ * @returns {string} The prepared URL
41
+ * @public
42
+ */
43
+ export const updateImageUrl = (url, params, mediaUrlPrefix = mediaUrlPrefixRegex) => {
44
+ if (!params || Object.keys(params).length === 0) {
45
+ // if params aren't supplied, no need to run it through Content SDK media handler
46
+ return url;
47
+ }
48
+ // polyfill node `global` in browser to workaround https://github.com/unshiftio/url-parse/issues/150
49
+ if (typeof window !== 'undefined' && !window.global) {
50
+ window.global = {};
51
+ }
52
+ const parsed = URL(replaceMediaUrlPrefix(url, mediaUrlPrefix), {}, true);
53
+ const requiredParams = getRequiredParams(parsed.query);
54
+ const query = Object.assign({}, params);
55
+ Object.entries(requiredParams).forEach(([key, param]) => {
56
+ if (param) {
57
+ query[key] = param;
58
+ }
59
+ });
60
+ parsed.set('query', query);
61
+ return parsed.toString();
62
+ };
63
+ /**
64
+ * Receives an array of `srcSet` parameters that are iterated and used as parameters to generate
65
+ * a corresponding set of updated Sitecore media URLs via @see updateImageUrl. The result is a comma-delimited
66
+ * list of media URLs with respective dimension parameters.
67
+ * @example
68
+ * // returns '/ipsum.jpg?h=1000&w=1000 1000w, /ipsum.jpg?mh=250&mw=250 250w'
69
+ * getSrcSet('/ipsum.jpg', [{ h: 1000, w: 1000 }, { mh: 250, mw: 250 } ])
70
+ * More information about `srcSet`: {@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img}
71
+ * @param {string} url The URL to prepare
72
+ * @param {Array} srcSet The array of parameters to use
73
+ * @param {object} [imageParams] The querystring parameters to use
74
+ * @param {RegExp} [mediaUrlPrefix] The regex to match the media URL prefix
75
+ * @returns {string} The prepared URL
76
+ * @public
77
+ */
78
+ export const getSrcSet = (url, srcSet, imageParams, mediaUrlPrefix) => {
79
+ return srcSet
80
+ .map((params) => {
81
+ const newParams = Object.assign(Object.assign({}, imageParams), params);
82
+ const imageWidth = newParams.w || newParams.mw;
83
+ if (!imageWidth) {
84
+ return null;
85
+ }
86
+ return `${updateImageUrl(url, newParams, mediaUrlPrefix)} ${imageWidth}w`;
87
+ })
88
+ .filter((value) => value)
89
+ .join(', ');
90
+ };
@@ -1 +1 @@
1
- export {};
1
+ export {};