@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
package/dist/esm/debug.js CHANGED
@@ -1,39 +1,41 @@
1
- var _a;
2
- /* eslint-disable import/no-anonymous-default-export */
3
- import debug from 'debug';
4
- import isServer from './utils/is-server';
5
- const rootNamespace = 'content-sdk';
6
- // On server/node side, allow switching from the built-in
7
- // `%o` (pretty-print single line) and `%O` (pretty-print multiple line)
8
- // with a `DEBUG_MULTILINE` environment variable.
9
- if (isServer() &&
10
- ((_a = process === null || process === void 0 ? void 0 : process.env) === null || _a === void 0 ? void 0 : _a.DEBUG_MULTILINE) === 'true' &&
11
- debug.formatters.o &&
12
- debug.formatters.O) {
13
- debug.formatters.o = debug.formatters.O;
14
- }
15
- /**
16
- * Enable debug logging dynamically
17
- * @param {string} namespaces space-separated list of namespaces to enable
18
- */
19
- export const enableDebug = (namespaces) => debug.enable(namespaces);
20
- /**
21
- * Default Sitecore Content SDK 'debug' module debuggers. Uses namespace prefix 'content-sdk:'.
22
- * See {@link https://www.npmjs.com/package/debug} for details.
23
- */
24
- export default {
25
- common: debug(`${rootNamespace}:common`),
26
- form: debug(`${rootNamespace}:form`),
27
- http: debug(`${rootNamespace}:http`),
28
- layout: debug(`${rootNamespace}:layout`),
29
- dictionary: debug(`${rootNamespace}:dictionary`),
30
- editing: debug(`${rootNamespace}:editing`),
31
- sitemap: debug(`${rootNamespace}:sitemap`),
32
- multisite: debug(`${rootNamespace}:multisite`),
33
- robots: debug(`${rootNamespace}:robots`),
34
- redirects: debug(`${rootNamespace}:redirects`),
35
- personalize: debug(`${rootNamespace}:personalize`),
36
- locale: debug(`${rootNamespace}:locale`),
37
- errorpages: debug(`${rootNamespace}:errorpages`),
38
- proxy: debug(`${rootNamespace}:proxy`),
39
- };
1
+ var _a;
2
+ /* eslint-disable import/no-anonymous-default-export */
3
+ import debug from 'debug';
4
+ import isServer from './utils/is-server';
5
+ const rootNamespace = 'content-sdk';
6
+ // On server/node side, allow switching from the built-in
7
+ // `%o` (pretty-print single line) and `%O` (pretty-print multiple line)
8
+ // with a `DEBUG_MULTILINE` environment variable.
9
+ if (isServer() &&
10
+ ((_a = process === null || process === void 0 ? void 0 : process.env) === null || _a === void 0 ? void 0 : _a.DEBUG_MULTILINE) === 'true' &&
11
+ debug.formatters.o &&
12
+ debug.formatters.O) {
13
+ debug.formatters.o = debug.formatters.O;
14
+ }
15
+ /**
16
+ * Enable debug logging dynamically
17
+ * @param {string} namespaces space-separated list of namespaces to enable
18
+ * @public
19
+ */
20
+ export const enableDebug = (namespaces) => debug.enable(namespaces);
21
+ /**
22
+ * Default Sitecore Content SDK 'debug' module debuggers. Uses namespace prefix 'content-sdk:'.
23
+ * See {@link https://www.npmjs.com/package/debug} for details.
24
+ */
25
+ export default {
26
+ search: debug(`${rootNamespace}:search`),
27
+ common: debug(`${rootNamespace}:common`),
28
+ form: debug(`${rootNamespace}:form`),
29
+ http: debug(`${rootNamespace}:http`),
30
+ layout: debug(`${rootNamespace}:layout`),
31
+ dictionary: debug(`${rootNamespace}:dictionary`),
32
+ editing: debug(`${rootNamespace}:editing`),
33
+ sitemap: debug(`${rootNamespace}:sitemap`),
34
+ multisite: debug(`${rootNamespace}:multisite`),
35
+ robots: debug(`${rootNamespace}:robots`),
36
+ redirects: debug(`${rootNamespace}:redirects`),
37
+ personalize: debug(`${rootNamespace}:personalize`),
38
+ locale: debug(`${rootNamespace}:locale`),
39
+ errorpages: debug(`${rootNamespace}:errorpages`),
40
+ proxy: debug(`${rootNamespace}:proxy`),
41
+ };
@@ -1 +1 @@
1
- export { addComponentPreviewHandler, getDesignLibraryComponentPreviewErrorEvent, getDesignLibraryComponentPropsEvent, getDesignLibraryImportMapEvent, DesignLibraryPreviewError, } from './preview';
1
+ export { addComponentPreviewHandler, addServerComponentPreviewHandler, getDesignLibraryComponentPreviewErrorEvent, getDesignLibraryComponentPropsEvent, getDesignLibraryImportMapEvent, getImportMapInfo, addStyleElement, createComponentInstance, sendErrorEvent, DesignLibraryPreviewError, } from './preview';
@@ -1,185 +1,263 @@
1
- import { validateOrigin } from '../design-library';
2
- /**
3
- * Event to send import map to design library
4
- */
5
- const DESIGN_LIBRARY_IMPORT_MAP_EVENT_NAME = 'component:generation:import-map';
6
- /**
7
- * Event to send component props to design library
8
- */
9
- const DESIGN_LIBRARY_COMPONENT_PROPS_EVENT_NAME = 'component:generation:component-props';
10
- /**
11
- * Event to receive component data from design library
12
- */
13
- const DESIGN_LIBRARY_COMPONENT_PREVIEW_EVENT_NAME = 'component:generation:component-preview';
14
- /**
15
- * Event to send component error to design library
16
- */
17
- const DESIGN_LIBRARY_COMPONENT_PREVIEW_ERROR_EVENT_NAME = 'component:generation:component-preview-error';
18
- /**
19
- * Enumeration of error types for the design library preview.
20
- */
21
- export var DesignLibraryPreviewError;
22
- (function (DesignLibraryPreviewError) {
23
- /**
24
- * Error occurred during component rendering.
25
- */
26
- DesignLibraryPreviewError["Render"] = "render";
27
- /**
28
- * Error occurred during component and event handlers initialization.
29
- */
30
- DesignLibraryPreviewError["RenderInit"] = "render-init";
31
- })(DesignLibraryPreviewError || (DesignLibraryPreviewError = {}));
32
- /**
33
- * Builds the component dependencies from the component imports and the import map.
34
- * @param {ComponentImport[]} componentImports - The component imports.
35
- * @param {ImportEntry[]} importMap - The import map to be used for the component.
36
- * @returns {Array<{ name: string; value: unknown }>} The component dependencies.
37
- */
38
- export function buildComponentDependencies(componentImports, importMap) {
39
- const successful = [];
40
- const missing = {
41
- modules: [],
42
- exports: [],
43
- };
44
- componentImports.forEach((componentImport) => {
45
- const moduleEntry = importMap.find((entry) => entry.module === componentImport.module);
46
- if (!moduleEntry) {
47
- missing.modules.push({
48
- module: componentImport.module,
49
- alias: componentImport.alias,
50
- });
51
- return;
52
- }
53
- const exportEntry = moduleEntry.exports.find((exp) => exp.name === componentImport.export);
54
- if (!exportEntry) {
55
- missing.exports.push({
56
- alias: componentImport.alias,
57
- export: componentImport.export,
58
- module: componentImport.module,
59
- });
60
- return;
61
- }
62
- return successful.push({
63
- name: componentImport.alias,
64
- value: exportEntry.value,
65
- });
66
- });
67
- return {
68
- successful,
69
- missing,
70
- };
71
- }
72
- /**
73
- * Adds the browser-side event handler for 'component:generation:component-preview' message used in Design Library
74
- * The event should contain the component code, styles and imports.
75
- * @param {ImportEntry[]} importMap - The import map to be used for the component.
76
- * @param {Function} callback callback to be called after component is received
77
- */
78
- export const addComponentPreviewHandler = (importMap, callback) => {
79
- if (!window)
80
- return;
81
- const handler = (e) => {
82
- const eventArgs = e.data;
83
- try {
84
- if (!e.origin || !eventArgs || eventArgs.name !== 'component:generation:component-preview') {
85
- // avoid extra noise in logs
86
- if (!validateOrigin(e)) {
87
- console.debug('Component Library: event skipped - invalid origin: message %s from origin %s', eventArgs.name, e.origin);
88
- }
89
- return;
90
- }
91
- console.debug('Component Library: message received', eventArgs);
92
- const { message } = eventArgs;
93
- const dependencies = buildComponentDependencies(message.imports, importMap);
94
- if (dependencies.missing.modules.length > 0 || dependencies.missing.exports.length > 0) {
95
- let errorMessage = '';
96
- dependencies.missing.modules.forEach((mod) => {
97
- errorMessage += `Missing module: '${mod.module}' with alias: '${mod.alias}'\n`;
98
- });
99
- dependencies.missing.exports.forEach((exp) => {
100
- const alias = exp.export !== exp.alias ? ` with alias: '${exp.alias}'` : '';
101
- errorMessage += `Missing export: '${exp.export}' from module: '${exp.module}'${alias}\n`;
102
- });
103
- throw errorMessage;
104
- }
105
- const importNames = dependencies.successful.map((entry) => entry.name);
106
- const importInstances = dependencies.successful.map((entry) => entry.value);
107
- const styleId = 'content-sdk-style-preview';
108
- const styleElement = document.getElementById(styleId);
109
- // remove existing style element if it exists to avoid duplicates
110
- if (styleElement) {
111
- styleElement.remove();
112
- }
113
- // create new style element and attach it to DOM
114
- const style = document.createElement('style');
115
- style.setAttribute('id', styleId);
116
- style.innerHTML = message.styles.content;
117
- document.head.appendChild(style);
118
- const exports = { Component: null };
119
- const componentFn = new Function('exports', message.styles.styleImport.name, ...importNames, message.code.content);
120
- // Function will set exports.Component
121
- componentFn(exports, message.styles.styleImport.content, ...importInstances);
122
- callback(null, exports.Component);
123
- }
124
- catch (error) {
125
- const errorEvent = getDesignLibraryComponentPreviewErrorEvent(eventArgs.message.uid, error, DesignLibraryPreviewError.RenderInit);
126
- console.error('Component Library: sending error event', errorEvent);
127
- callback(error, null);
128
- window.parent.postMessage(errorEvent, '*');
129
- }
130
- };
131
- window.addEventListener('message', handler);
132
- const unsubscribe = () => {
133
- window.removeEventListener('message', handler);
134
- };
135
- return unsubscribe;
136
- };
137
- /**
138
- * Generates a DesignLibraryComponentPreviewErrorEvent with the given uid and error.
139
- * @param {string} uid - The unique identifier for the event.
140
- * @param {unknown} error - The error to be sent.
141
- * @param {DesignLibraryPreviewError} type - The type of error.
142
- * @returns An object representing the DesignLibraryComponentPreviewErrorEvent.
143
- */
144
- export function getDesignLibraryComponentPreviewErrorEvent(uid, error, type) {
145
- return {
146
- name: DESIGN_LIBRARY_COMPONENT_PREVIEW_ERROR_EVENT_NAME,
147
- message: { uid, error, type },
148
- };
149
- }
150
- /**
151
- * Generates a DesignLibraryComponentPropsEvent with the given uid, fields and parameters.
152
- * @param {string} uid - The unique identifier for the event.
153
- * @param {ComponentFields} fields - The fields of the component.
154
- * @param {ComponentParams} parameters - The parameters of the component.
155
- * @returns An object representing the DesignLibraryComponentPropsEvent.
156
- */
157
- export function getDesignLibraryComponentPropsEvent(uid, fields, parameters) {
158
- return {
159
- name: DESIGN_LIBRARY_COMPONENT_PROPS_EVENT_NAME,
160
- message: {
161
- uid,
162
- fields,
163
- parameters,
164
- },
165
- };
166
- }
167
- /**
168
- * Generates a DesignLibraryImportMapEvent with the given uid and importMap.
169
- * @param {string} uid - The unique identifier for the event.
170
- * @param {ImportEntry[]} importMap - The imports map to be sent.
171
- * @returns An object representing the DesignLibraryImportMapEvent.
172
- */
173
- export function getDesignLibraryImportMapEvent(uid, importMap) {
174
- const importMapPayload = importMap.map((entry) => ({
175
- module: entry.module,
176
- exports: entry.exports.map((exp) => exp.name),
177
- }));
178
- return {
179
- name: DESIGN_LIBRARY_IMPORT_MAP_EVENT_NAME,
180
- message: {
181
- uid,
182
- importMap: importMapPayload,
183
- },
184
- };
185
- }
1
+ import { validateEvent } from '../design-library';
2
+ /**
3
+ * Event to send import map to design library
4
+ */
5
+ const DESIGN_LIBRARY_IMPORT_MAP_EVENT_NAME = 'component:generation:import-map';
6
+ /**
7
+ * Event to send component props to design library
8
+ */
9
+ const DESIGN_LIBRARY_COMPONENT_PROPS_EVENT_NAME = 'component:generation:component-props';
10
+ /**
11
+ * Event to receive component data from design library
12
+ */
13
+ const DESIGN_LIBRARY_COMPONENT_PREVIEW_EVENT_NAME = 'component:generation:component-preview';
14
+ /**
15
+ * Event to send component error to design library
16
+ */
17
+ const DESIGN_LIBRARY_COMPONENT_PREVIEW_ERROR_EVENT_NAME = 'component:generation:component-preview-error';
18
+ /**
19
+ * Enumeration of error types for the design library preview.
20
+ * @internal
21
+ */
22
+ export var DesignLibraryPreviewError;
23
+ (function (DesignLibraryPreviewError) {
24
+ /**
25
+ * Error occurred during component rendering.
26
+ */
27
+ DesignLibraryPreviewError["Render"] = "render";
28
+ /**
29
+ * Error occurred during component and event handlers initialization.
30
+ */
31
+ DesignLibraryPreviewError["RenderInit"] = "render-init";
32
+ })(DesignLibraryPreviewError || (DesignLibraryPreviewError = {}));
33
+ /**
34
+ * Builds the component dependencies from the component imports and the import map.
35
+ * @param {ComponentImport[]} componentImports - The component imports.
36
+ * @param {ImportEntry[]} importMap - The import map to be used for the component.
37
+ * @returns {Array<{ name: string; value: unknown }>} The component dependencies.
38
+ */
39
+ export function buildComponentDependencies(componentImports, importMap) {
40
+ const successful = [];
41
+ const missing = {
42
+ modules: [],
43
+ exports: [],
44
+ };
45
+ componentImports.forEach((componentImport) => {
46
+ const moduleEntry = importMap.find((entry) => entry.module === componentImport.module);
47
+ if (!moduleEntry) {
48
+ missing.modules.push({
49
+ module: componentImport.module,
50
+ alias: componentImport.alias,
51
+ });
52
+ return;
53
+ }
54
+ const exportEntry = moduleEntry.exports.find((exp) => exp.name === componentImport.export);
55
+ if (!exportEntry) {
56
+ missing.exports.push({
57
+ alias: componentImport.alias,
58
+ export: componentImport.export,
59
+ module: componentImport.module,
60
+ });
61
+ return;
62
+ }
63
+ return successful.push({
64
+ name: componentImport.alias,
65
+ value: exportEntry.value,
66
+ });
67
+ });
68
+ return {
69
+ successful,
70
+ missing,
71
+ };
72
+ }
73
+ /**
74
+ * Adds the browser-side event handler for 'component:generation:component-preview' message used in Design Library
75
+ * The event should contain the component code, styles and imports.
76
+ * @param {ImportEntry[]} importMap - The import map to be used for the component.
77
+ * @param {Function} callback callback to be called after component is received
78
+ * @internal
79
+ */
80
+ export const addComponentPreviewHandler = (importMap, callback) => {
81
+ if (!window)
82
+ return;
83
+ const handler = (e) => {
84
+ const eventArgs = e.data;
85
+ try {
86
+ if (!validateEvent(e, DESIGN_LIBRARY_COMPONENT_PREVIEW_EVENT_NAME)) {
87
+ return;
88
+ }
89
+ console.debug('Component Library: message received', eventArgs);
90
+ const Component = createComponentInstance(importMap, eventArgs);
91
+ addStyleElement(eventArgs.message.styles.content);
92
+ callback(null, Component);
93
+ }
94
+ catch (error) {
95
+ sendErrorEvent(eventArgs.message.uid, error, DesignLibraryPreviewError.RenderInit);
96
+ callback(error, null);
97
+ }
98
+ };
99
+ window.addEventListener('message', handler);
100
+ const unsubscribe = () => {
101
+ window.removeEventListener('message', handler);
102
+ };
103
+ return unsubscribe;
104
+ };
105
+ /**
106
+ * Adds the browser-side event handler for 'component:generation:component-preview' message used in Design Library for server components
107
+ * The event should contain the component code, styles and imports.
108
+ * @param {Function} callback callback to be called after component is received
109
+ * @internal
110
+ */
111
+ export const addServerComponentPreviewHandler = (callback) => {
112
+ const handler = (e) => {
113
+ if (!validateEvent(e, DESIGN_LIBRARY_COMPONENT_PREVIEW_EVENT_NAME)) {
114
+ return;
115
+ }
116
+ console.debug('Component Library: message received', e.data);
117
+ callback(e.data);
118
+ };
119
+ window.addEventListener('message', handler);
120
+ const unsubscribe = () => {
121
+ window.removeEventListener('message', handler);
122
+ };
123
+ return unsubscribe;
124
+ };
125
+ /**
126
+ * Adds <style> element in the document head with the provided CSS.
127
+ * If an existing style element with the id "content-sdk-style-preview" is found, it is removed
128
+ * to prevent duplicates
129
+ * @param {string} stylesContent - The raw CSS text to inject into the style element.
130
+ * @internal
131
+ */
132
+ export function addStyleElement(stylesContent) {
133
+ const styleId = 'content-sdk-style-preview';
134
+ const styleElement = document.getElementById(styleId);
135
+ // remove existing style element if it exists to avoid duplicates
136
+ if (styleElement) {
137
+ styleElement.remove();
138
+ }
139
+ // create new style element and attach it to DOM
140
+ const style = document.createElement('style');
141
+ style.setAttribute('id', styleId);
142
+ style.innerHTML = stylesContent;
143
+ document.head.appendChild(style);
144
+ }
145
+ /**
146
+ * Dynamically creates a React component instance from provided importMap and from code, styles, and dependencies provided in the preview event.
147
+ * @param {ImportEntry[]} importMap - The import map containing module and export references that might be injected as dependencies in the provided code.
148
+ * @param {ComponentPreviewEventArgs} previewEventArgs - The event arguments containing the component code, styles, and import definitions.
149
+ * @returns The dynamically created React component instance.
150
+ * @throws If any required modules or exports are missing from the import map, an error is thrown describing the missing dependencies.
151
+ * @internal
152
+ */
153
+ export const createComponentInstance = (importMap, previewEventArgs) => {
154
+ const { message } = previewEventArgs;
155
+ const dependencies = buildComponentDependencies(message.imports, importMap);
156
+ if (dependencies.missing.modules.length > 0 || dependencies.missing.exports.length > 0) {
157
+ let errorMessage = '';
158
+ dependencies.missing.modules.forEach((mod) => {
159
+ errorMessage += `Missing module: '${mod.module}' with alias: '${mod.alias}'\n`;
160
+ });
161
+ dependencies.missing.exports.forEach((exp) => {
162
+ const alias = exp.export !== exp.alias ? ` with alias: '${exp.alias}'` : '';
163
+ errorMessage += `Missing export: '${exp.export}' from module: '${exp.module}'${alias}\n`;
164
+ });
165
+ throw errorMessage;
166
+ }
167
+ const importNames = dependencies.successful.map((entry) => entry.name);
168
+ const importInstances = dependencies.successful.map((entry) => entry.value);
169
+ const exports = { Component: null };
170
+ const componentFn = new Function('exports', message.styles.styleImport.name, ...importNames, message.code.content);
171
+ // Function will set exports.Component
172
+ componentFn(exports, message.styles.styleImport.content, ...importInstances);
173
+ return exports.Component;
174
+ };
175
+ /**
176
+ * Generates a DesignLibraryComponentPreviewErrorEvent with the given uid and error.
177
+ * @param {string} uid - The unique identifier for the event.
178
+ * @param {unknown} error - The error to be sent.
179
+ * @param {DesignLibraryPreviewError} type - The type of error.
180
+ * @returns An object representing the DesignLibraryComponentPreviewErrorEvent.
181
+ * @internal
182
+ */
183
+ export function getDesignLibraryComponentPreviewErrorEvent(uid, error, type) {
184
+ return {
185
+ name: DESIGN_LIBRARY_COMPONENT_PREVIEW_ERROR_EVENT_NAME,
186
+ message: { uid, error, type },
187
+ };
188
+ }
189
+ /**
190
+ * Generates a DesignLibraryComponentPropsEvent with the given uid, fields and parameters.
191
+ * @param {string} uid - The unique identifier for the event.
192
+ * @param {ComponentFields} fields - The fields of the component.
193
+ * @param {ComponentParams} parameters - The parameters of the component.
194
+ * @returns An object representing the DesignLibraryComponentPropsEvent.
195
+ * @internal
196
+ */
197
+ export function getDesignLibraryComponentPropsEvent(uid, fields = {}, parameters = {}) {
198
+ return {
199
+ name: DESIGN_LIBRARY_COMPONENT_PROPS_EVENT_NAME,
200
+ message: {
201
+ uid,
202
+ fields,
203
+ parameters,
204
+ },
205
+ };
206
+ }
207
+ /**
208
+ * Generates a DesignLibraryImportMapEvent with the given uid and importMap.
209
+ * @param {string} uid - The unique identifier for the event.
210
+ * @param {ImportEntry[]} importMap - The imports map to be sent.
211
+ * @returns An object representing the DesignLibraryImportMapEvent.
212
+ * @internal
213
+ */
214
+ export function getDesignLibraryImportMapEvent(uid, importMap) {
215
+ const importMapPayload = isImportEntryInfoArray(importMap)
216
+ ? importMap
217
+ : getImportMapInfo(importMap);
218
+ return {
219
+ name: DESIGN_LIBRARY_IMPORT_MAP_EVENT_NAME,
220
+ message: {
221
+ uid,
222
+ importMap: importMapPayload,
223
+ },
224
+ };
225
+ }
226
+ /**
227
+ * Generates the payload for the import map to be sent to design library.
228
+ * @param {ImportEntry[]} importMap - The imports map to be sent.
229
+ * @internal
230
+ */
231
+ export function getImportMapInfo(importMap) {
232
+ return importMap.map((entry) => ({
233
+ module: entry.module,
234
+ exports: entry.exports.map((exp) => exp.name),
235
+ }));
236
+ }
237
+ /**
238
+ * Type guard for ImportEntryInfo[]
239
+ * @param {unknown} data import entry data to check
240
+ * @returns true if the data is ImportEntryInfo array
241
+ */
242
+ export function isImportEntryInfoArray(data) {
243
+ return (Array.isArray(data) &&
244
+ data.length > 0 &&
245
+ typeof data[0].module === 'string' &&
246
+ Array.isArray(data[0].exports) &&
247
+ typeof data[0].exports[0] === 'string');
248
+ }
249
+ /**
250
+ * Sends a component preview error event to the design library
251
+ * @param {string} uid - The unique identifier of the component that's being edited.
252
+ * @param {unknown} error - The error object or message to be sent.
253
+ * @param {DesignLibraryPreviewError} type - The type of error, as defined in DesignLibraryPreviewError.
254
+ * @internal
255
+ */
256
+ export const sendErrorEvent = (uid, error, type) => {
257
+ const errorEvent = getDesignLibraryComponentPreviewErrorEvent(uid, error, type);
258
+ console.error('Component Library: sending error event', errorEvent);
259
+ if (typeof window !== 'undefined') {
260
+ const target = window.parent && window.parent !== window ? window.parent : window;
261
+ target.postMessage(errorEvent, '*');
262
+ }
263
+ };