create-sitecore-jss 22.2.1 → 22.3.0-canary.10

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 (622) hide show
  1. package/LICENSE.MD +202 -202
  2. package/README.md +10 -10
  3. package/dist/bin.js +35 -19
  4. package/dist/common/index.js +5 -3
  5. package/dist/common/processes/install.js +9 -2
  6. package/dist/common/processes/next.js +6 -3
  7. package/dist/common/processes/transform.js +18 -13
  8. package/dist/common/prompts/base.js +0 -25
  9. package/dist/common/prompts/proxy.js +35 -0
  10. package/dist/common/prompts/sxp.js +34 -0
  11. package/dist/common/utils/helpers.js +29 -19
  12. package/dist/init-runner.js +16 -11
  13. package/dist/initializers/angular/index.js +13 -0
  14. package/dist/initializers/angular/prompts.js +22 -1
  15. package/dist/initializers/angular-sxp/index.js +62 -0
  16. package/dist/initializers/angular-xmcloud/index.js +80 -0
  17. package/dist/initializers/nextjs/index.js +2 -2
  18. package/dist/initializers/nextjs/prompts.js +2 -0
  19. package/dist/initializers/nextjs/remove-dev-dependencies.js +2 -2
  20. package/dist/initializers/nextjs-multisite/index.js +1 -1
  21. package/dist/initializers/nextjs-styleguide/index.js +1 -1
  22. package/dist/initializers/nextjs-styleguide-tracking/index.js +1 -1
  23. package/dist/initializers/nextjs-sxa/index.js +1 -1
  24. package/dist/initializers/nextjs-xmcloud/index.js +1 -1
  25. package/dist/initializers/node-xmcloud-proxy/index.js +33 -0
  26. package/dist/initializers/react/index.js +3 -3
  27. package/dist/initializers/react/prompts.js +1 -1
  28. package/dist/initializers/react-native/prompts.js +1 -0
  29. package/dist/initializers/vue/prompts.js +1 -1
  30. package/dist/templates/angular/.env +4 -3
  31. package/dist/templates/angular/.eslintignore +3 -3
  32. package/dist/templates/angular/.eslintrc +66 -65
  33. package/dist/templates/angular/LICENSE.txt +202 -202
  34. package/dist/templates/angular/README.md +13 -53
  35. package/dist/templates/angular/angular.json +172 -177
  36. package/dist/templates/angular/e2e/tsconfig.e2e.json +15 -15
  37. package/dist/templates/angular/gitignore +52 -47
  38. package/dist/templates/angular/package.json +115 -127
  39. package/dist/templates/angular/proxy.conf.js +5 -23
  40. package/dist/templates/angular/scripts/bootstrap.ts +5 -24
  41. package/dist/templates/angular/scripts/config/index.ts +28 -0
  42. package/dist/templates/angular/scripts/config/plugins/computed.ts +21 -0
  43. package/dist/templates/angular/scripts/config/plugins/fallback.ts +22 -0
  44. package/dist/templates/angular/scripts/config/plugins/package-json.ts +22 -0
  45. package/dist/templates/angular/scripts/config/plugins/scjssconfig.ts +29 -0
  46. package/dist/templates/angular/scripts/generate-component-factory/index.ts +45 -0
  47. package/dist/templates/angular/scripts/generate-component-factory/plugins/component-factory.ts +147 -0
  48. package/dist/templates/angular/scripts/generate-component-factory/plugins/components.ts +19 -0
  49. package/dist/templates/angular/scripts/generate-component-factory/plugins/packages.ts +29 -0
  50. package/dist/templates/angular/scripts/generate-component-factory/template.ts +46 -0
  51. package/dist/templates/angular/scripts/generate-config.ts +71 -72
  52. package/dist/templates/angular/scripts/generate-plugins.ts +33 -0
  53. package/dist/templates/angular/scripts/temp/gitignore +2 -0
  54. package/dist/templates/angular/scripts/update-graphql-fragment-data.ts +21 -28
  55. package/dist/templates/angular/server.bundle.ts +3 -5
  56. package/dist/templates/angular/server.exports.ts +13 -0
  57. package/dist/templates/angular/src/app/JssState.ts +2 -9
  58. package/dist/templates/angular/src/app/app.component.html +1 -1
  59. package/dist/templates/angular/src/app/app.module.ts +5 -6
  60. package/dist/templates/angular/src/app/app.server.module.ts +9 -6
  61. package/dist/templates/angular/src/app/components/app-components.shared.module.ts +4 -19
  62. package/dist/templates/angular/src/app/components/content-block/content-block.component.html +4 -4
  63. package/dist/templates/angular/src/app/components/gitignore +7 -7
  64. package/dist/templates/angular/src/app/i18n/jss-translation-client-loader.service.ts +15 -7
  65. package/dist/templates/angular/src/app/i18n/jss-translation-server-loader.service.ts +14 -2
  66. package/dist/templates/angular/src/app/jss-context.server-side.service.ts +4 -4
  67. package/dist/templates/angular/src/app/jss-context.service.ts +14 -11
  68. package/dist/templates/angular/src/app/jss-graphql.service.ts +7 -7
  69. package/dist/templates/angular/src/app/layout/jss-layout.service.ts +2 -2
  70. package/dist/templates/angular/src/app/lib/config.ts +16 -0
  71. package/dist/templates/angular/src/app/lib/dictionary-service-factory.ts +24 -13
  72. package/dist/templates/angular/src/app/lib/graphql-client-factory/config.ts +21 -0
  73. package/dist/templates/angular/src/app/lib/graphql-client-factory/index.ts +16 -0
  74. package/dist/templates/angular/src/app/lib/layout-service-factory.ts +20 -12
  75. package/dist/templates/angular/src/app/routing/layout/layout.component.html +17 -17
  76. package/dist/templates/angular/src/app/routing/layout/layout.component.ts +11 -11
  77. package/dist/templates/angular/src/app/routing/navigation/navigation.component.html +20 -21
  78. package/dist/templates/angular/src/app/routing/navigation/navigation.component.ts +1 -2
  79. package/dist/templates/angular/src/app/routing/not-found/not-found.component.html +7 -7
  80. package/dist/templates/angular/src/app/routing/routing.module.ts +14 -21
  81. package/dist/templates/angular/src/app/routing/scripts/scripts.component.html +1 -0
  82. package/dist/templates/angular/src/app/routing/scripts/scripts.component.ts +7 -0
  83. package/dist/templates/angular/src/app/routing/scripts/scripts.module.ts +8 -0
  84. package/dist/templates/angular/src/app/routing/server-error/server-error.component.html +3 -3
  85. package/dist/templates/angular/src/assets/images/sc_logo.svg +52 -52
  86. package/dist/templates/angular/src/environments/gitignore +2 -1
  87. package/dist/templates/angular/src/graphql-fragment-types.ts +0 -95
  88. package/dist/templates/angular/src/index.html +12 -12
  89. package/dist/templates/angular/src/styles.css +34 -34
  90. package/dist/templates/angular/src/tsconfig.app.json +22 -22
  91. package/dist/templates/angular/src/tsconfig.server.json +21 -21
  92. package/dist/templates/angular/src/tsconfig.spec.json +24 -24
  93. package/dist/templates/angular/src/tsconfig.webpack-server.json +6 -6
  94. package/dist/templates/angular/tsconfig.json +36 -31
  95. package/dist/templates/angular-sxp/.env +2 -0
  96. package/dist/templates/{angular → angular-sxp}/data/component-content/Styleguide/ContentReuse/LoremIpsumContentBlock/en.yml +9 -9
  97. package/dist/templates/{angular → angular-sxp}/data/content/Styleguide/ContentListField/Item1/en.yml +6 -6
  98. package/dist/templates/{angular → angular-sxp}/data/content/Styleguide/ContentListField/Item2/en.yml +6 -6
  99. package/dist/templates/{angular → angular-sxp}/data/content/Styleguide/EditFrameDemo/Item1/en.yml +6 -6
  100. package/dist/templates/{angular → angular-sxp}/data/content/Styleguide/EditFrameDemo/Item2/en.yml +6 -6
  101. package/dist/templates/{angular → angular-sxp}/data/content/Styleguide/ItemLinkField/Item1/en.yml +6 -6
  102. package/dist/templates/{angular → angular-sxp}/data/content/Styleguide/ItemLinkField/Item2/en.yml +6 -6
  103. package/dist/templates/{angular → angular-sxp}/data/dictionary/en.yml +4 -4
  104. package/dist/templates/{angular → angular-sxp}/data/dictionary/{{language}}.yml +4 -4
  105. package/dist/templates/{angular → angular-sxp}/data/routes/en.yml +61 -61
  106. package/dist/templates/{angular → angular-sxp}/data/routes/graphql/en.yml +27 -27
  107. package/dist/templates/{angular → angular-sxp}/data/routes/graphql/sample-1/en.yml +9 -9
  108. package/dist/templates/{angular → angular-sxp}/data/routes/graphql/sample-2/en.yml +9 -9
  109. package/dist/templates/{angular → angular-sxp}/data/routes/styleguide/custom-route-type/en.yml +12 -12
  110. package/dist/templates/{angular → angular-sxp}/data/routes/styleguide/en.yml +271 -271
  111. package/dist/templates/{angular → angular-sxp}/data/routes/styleguide/{{language}}.yml +25 -25
  112. package/dist/templates/{angular → angular-sxp}/data/routes/{{language}}.yml +4 -4
  113. package/dist/templates/angular-sxp/package.json +12 -0
  114. package/dist/templates/angular-sxp/proxy.conf.js +43 -0
  115. package/dist/templates/angular-sxp/scripts/config/plugins/disconnected.ts +29 -0
  116. package/dist/templates/{angular → angular-sxp}/sitecore/config/{{appName}}.config +90 -90
  117. package/dist/templates/{angular → angular-sxp}/sitecore/definitions/components/graph-ql-integrated-demo.sitecore.graphql +71 -71
  118. package/dist/templates/{angular → angular-sxp}/sitecore/gitignore +2 -2
  119. package/dist/templates/angular-sxp/src/app/components/app-components.shared.module.ts +35 -0
  120. package/dist/templates/{angular → angular-sxp}/src/app/components/graph-ql-connected-demo/graph-ql-connected-demo.component.graphql +69 -69
  121. package/dist/templates/{angular → angular-sxp}/src/app/components/graph-ql-connected-demo/graph-ql-connected-demo.component.html +55 -55
  122. package/dist/templates/{angular → angular-sxp}/src/app/components/graph-ql-integrated-demo/graph-ql-integrated-demo.component.html +47 -47
  123. package/dist/templates/{angular → angular-sxp}/src/app/components/graph-ql-layout/graph-ql-layout.component.html +22 -22
  124. package/dist/templates/{angular → angular-sxp}/src/app/components/graph-ql-layout/graph-ql-layout.component.ts +1 -1
  125. package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-angular-lazy-loading/styleguide-angular-lazy-loading.component.html +5 -5
  126. package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-component-params/styleguide-component-params.component.html +19 -19
  127. package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-custom-route-type/styleguide-custom-route-type.component.html +14 -14
  128. package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-edit-frame/styleguide-edit-frame.component.html +19 -19
  129. package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-field-usage-checkbox/styleguide-field-usage-checkbox.component.html +11 -11
  130. package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-field-usage-content-list/styleguide-field-usage-content-list.component.html +26 -26
  131. package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-field-usage-custom/styleguide-field-usage-custom.component.html +4 -4
  132. package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-field-usage-date/styleguide-field-usage-date.component.html +27 -27
  133. package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-field-usage-file/styleguide-field-usage-file.component.html +10 -10
  134. package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-field-usage-image/styleguide-field-usage-image.component.html +30 -30
  135. package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-field-usage-item-link/styleguide-field-usage-item-link.component.html +17 -17
  136. package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-field-usage-link/styleguide-field-usage-link.component.html +44 -44
  137. package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-field-usage-number/styleguide-field-usage-number.component.html +11 -11
  138. package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-field-usage-rich-text/styleguide-field-usage-rich-text.component.html +11 -11
  139. package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-field-usage-text/styleguide-field-usage-text.component.html +13 -13
  140. package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-layout/styleguide-layout.component.html +20 -20
  141. package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-layout-reuse/styleguide-layout-reuse.component.html +52 -52
  142. package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-layout-tabs/styleguide-layout-tabs.component.html +37 -37
  143. package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-layout-tabs-tab/styleguide-layout-tabs-tab.component.html +12 -12
  144. package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-multilingual/styleguide-multilingual.component.html +15 -15
  145. package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-route-fields/styleguide-route-fields.component.html +8 -8
  146. package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-section/styleguide-section.component.html +7 -7
  147. package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-sitecore-context/styleguide-sitecore-context.component.html +3 -3
  148. package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-tracking/styleguide-tracking.component.html +175 -175
  149. package/dist/templates/{angular → angular-sxp}/src/app/jss-data-fetcher.service.ts +3 -1
  150. package/dist/templates/angular-sxp/src/app/routing/navigation/navigation.component.html +23 -0
  151. package/dist/templates/angular-sxp/src/app/routing/scripts/scripts.component.html +3 -0
  152. package/dist/templates/angular-sxp/src/app/routing/scripts/scripts.module.ts +9 -0
  153. package/dist/templates/{angular/src/app/routing → angular-sxp/src/app/routing/scripts}/visitor-identification/visitor-identification.component.ts +9 -3
  154. package/dist/templates/angular-sxp/src/graphql-fragment-types.ts +219 -0
  155. package/dist/templates/angular-xmcloud/.env +14 -0
  156. package/dist/templates/angular-xmcloud/README.md +55 -0
  157. package/dist/templates/angular-xmcloud/angular.json +33 -0
  158. package/dist/templates/angular-xmcloud/package.json +17 -0
  159. package/dist/templates/angular-xmcloud/scripts/bootstrap.ts +28 -0
  160. package/dist/templates/angular-xmcloud/scripts/config/plugins/xmcloud.ts +39 -0
  161. package/dist/templates/angular-xmcloud/scripts/generate-component-factory/plugins/packages.ts +34 -0
  162. package/dist/templates/angular-xmcloud/scripts/generate-component-factory/template.ts +57 -0
  163. package/dist/templates/angular-xmcloud/scripts/generate-metadata.ts +25 -0
  164. package/dist/templates/angular-xmcloud/scripts/proxy-build.ts +15 -0
  165. package/dist/templates/angular-xmcloud/server.exports.ts +25 -0
  166. package/dist/templates/angular-xmcloud/src/app/components/app-components.shared.module.ts +21 -0
  167. package/dist/templates/angular-xmcloud/src/app/components/column-splitter/column-splitter.component.html +5 -0
  168. package/dist/templates/angular-xmcloud/src/app/components/column-splitter/column-splitter.component.ts +40 -0
  169. package/dist/templates/angular-xmcloud/src/app/components/container/container.component.html +14 -0
  170. package/dist/templates/angular-xmcloud/src/app/components/container/container.component.ts +30 -0
  171. package/dist/templates/angular-xmcloud/src/app/components/image/image.component.html +36 -0
  172. package/dist/templates/angular-xmcloud/src/app/components/image/image.component.ts +67 -0
  173. package/dist/templates/angular-xmcloud/src/app/components/link-list/link-list.component.html +15 -0
  174. package/dist/templates/angular-xmcloud/src/app/components/link-list/link-list.component.ts +41 -0
  175. package/dist/templates/angular-xmcloud/src/app/components/navigation/navigation-item.component.html +23 -0
  176. package/dist/templates/angular-xmcloud/src/app/components/navigation/navigation-item.component.ts +65 -0
  177. package/dist/templates/angular-xmcloud/src/app/components/navigation/navigation.component.html +21 -0
  178. package/dist/templates/angular-xmcloud/src/app/components/navigation/navigation.component.ts +49 -0
  179. package/dist/templates/angular-xmcloud/src/app/components/page-content/page-content.component.html +5 -0
  180. package/dist/templates/angular-xmcloud/src/app/components/page-content/page-content.component.ts +39 -0
  181. package/dist/templates/angular-xmcloud/src/app/components/partial-design-dynamic-placeholder/partial-design-dynamic-placeholder.component.html +1 -0
  182. package/dist/templates/angular-xmcloud/src/app/components/partial-design-dynamic-placeholder/partial-design-dynamic-placeholder.component.ts +15 -0
  183. package/dist/templates/angular-xmcloud/src/app/components/promo/promo.component.html +21 -0
  184. package/dist/templates/angular-xmcloud/src/app/components/promo/promo.component.ts +13 -0
  185. package/dist/templates/angular-xmcloud/src/app/components/richtext/richtext.component.html +8 -0
  186. package/dist/templates/angular-xmcloud/src/app/components/richtext/richtext.component.ts +21 -0
  187. package/dist/templates/angular-xmcloud/src/app/components/row-splitter/row-splitter.component.html +11 -0
  188. package/dist/templates/angular-xmcloud/src/app/components/row-splitter/row-splitter.component.ts +35 -0
  189. package/dist/templates/angular-xmcloud/src/app/components/sxa.component.ts +15 -0
  190. package/dist/templates/angular-xmcloud/src/app/components/title/title.component.html +10 -0
  191. package/dist/templates/angular-xmcloud/src/app/components/title/title.component.ts +56 -0
  192. package/dist/templates/angular-xmcloud/src/app/jss-link.service.ts +55 -0
  193. package/dist/templates/angular-xmcloud/src/app/lib/config.ts +17 -0
  194. package/dist/templates/angular-xmcloud/src/app/lib/graphql-client-factory/config.ts +57 -0
  195. package/dist/templates/angular-xmcloud/src/app/routing/layout/layout.component.html +38 -0
  196. package/dist/templates/angular-xmcloud/src/app/routing/layout/layout.component.ts +104 -0
  197. package/dist/templates/angular-xmcloud/src/app/routing/scripts/cdp-page-view.component.ts +77 -0
  198. package/dist/templates/angular-xmcloud/src/app/routing/scripts/cloud-sdk-init.component.ts +48 -0
  199. package/dist/templates/angular-xmcloud/src/app/routing/scripts/scripts.component.html +5 -0
  200. package/dist/templates/angular-xmcloud/src/app/routing/scripts/scripts.module.ts +12 -0
  201. package/dist/templates/angular-xmcloud/src/assets/styles/basic/_component.scss +48 -0
  202. package/dist/templates/angular-xmcloud/src/assets/styles/basic/_container.scss +64 -0
  203. package/dist/templates/angular-xmcloud/src/assets/styles/basic/_fonts.scss +3 -0
  204. package/dist/templates/angular-xmcloud/src/assets/styles/basic/_footer.scss +31 -0
  205. package/dist/templates/angular-xmcloud/src/assets/styles/basic/_header.scss +51 -0
  206. package/dist/templates/angular-xmcloud/src/assets/styles/basic/_navigation.scss +150 -0
  207. package/dist/templates/angular-xmcloud/src/assets/styles/basic/_promo.scss +58 -0
  208. package/dist/templates/angular-xmcloud/src/assets/styles/basic/_rich-text.scss +11 -0
  209. package/dist/templates/angular-xmcloud/src/assets/styles/basic/_variables.scss +10 -0
  210. package/dist/templates/angular-xmcloud/src/assets/styles/basic/main.scss +8 -0
  211. package/dist/templates/angular-xmcloud/src/assets/styles/main.scss +14 -0
  212. package/dist/templates/angular-xmcloud/src/assets/styles/sass/_app.scss +103 -0
  213. package/dist/templates/angular-xmcloud/src/assets/styles/sass/abstracts/_functions.scss +8 -0
  214. package/dist/templates/angular-xmcloud/src/assets/styles/sass/abstracts/_mixins.scss +121 -0
  215. package/dist/templates/angular-xmcloud/src/assets/styles/sass/abstracts/_vars.scss +3 -0
  216. package/dist/templates/angular-xmcloud/src/assets/styles/sass/abstracts/vars/_colors.scss +283 -0
  217. package/dist/templates/angular-xmcloud/src/assets/styles/sass/abstracts/vars/_fontSizes.scss +16 -0
  218. package/dist/templates/angular-xmcloud/src/assets/styles/sass/abstracts/vars/_margins.scss +11 -0
  219. package/dist/templates/angular-xmcloud/src/assets/styles/sass/base/fonts/_fonts.scss +1 -0
  220. package/dist/templates/angular-xmcloud/src/assets/styles/sass/base/fonts/index.scss +1 -0
  221. package/dist/templates/angular-xmcloud/src/assets/styles/sass/base/index.scss +3 -0
  222. package/dist/templates/angular-xmcloud/src/assets/styles/sass/base/links/_link-button.scss +26 -0
  223. package/dist/templates/angular-xmcloud/src/assets/styles/sass/base/links/index.scss +1 -0
  224. package/dist/templates/angular-xmcloud/src/assets/styles/sass/base/reset/_inputs.scss +58 -0
  225. package/dist/templates/angular-xmcloud/src/assets/styles/sass/base/reset/_links.scss +14 -0
  226. package/dist/templates/angular-xmcloud/src/assets/styles/sass/base/reset/_ui-datepicker.scss +7 -0
  227. package/dist/templates/angular-xmcloud/src/assets/styles/sass/base/richtext/_richtext-files-icons.scss +86 -0
  228. package/dist/templates/angular-xmcloud/src/assets/styles/sass/base/richtext/_richtext.scss +101 -0
  229. package/dist/templates/angular-xmcloud/src/assets/styles/sass/base/richtext/index.scss +2 -0
  230. package/dist/templates/angular-xmcloud/src/assets/styles/sass/base/typehead/_typehead.scss +95 -0
  231. package/dist/templates/angular-xmcloud/src/assets/styles/sass/base/typehead/index.scss +1 -0
  232. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/_component-column-splitter.scss +14 -0
  233. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/_component-container.scss +27 -0
  234. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/_component-image.scss +18 -0
  235. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/_component-navigation.scss +51 -0
  236. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/_component-promo.scss +42 -0
  237. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/_component-richtext-content.scss +19 -0
  238. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/common/_alignment.scss +26 -0
  239. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/common/_boxed.scss +16 -0
  240. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/common/_clearfix.scss +11 -0
  241. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/common/_highlighted.scss +63 -0
  242. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/common/_link-button.scss +16 -0
  243. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/common/_promoted-box.scss +3 -0
  244. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/common/index.scss +6 -0
  245. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/container/_bordered.scss +24 -0
  246. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/container/_title-row-box.scss +66 -0
  247. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/container/index.scss +1 -0
  248. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/image/_image-default-size.scss +6 -0
  249. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/image/index.scss +1 -0
  250. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/image-alignment/_image-left.scss +3 -0
  251. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/image-alignment/_image-right.scss +3 -0
  252. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/index.scss +17 -0
  253. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/layout/_acaindent.scss +5 -0
  254. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/layout/_background.scss +27 -0
  255. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/layout/index.scss +1 -0
  256. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/link-list/_component-link-list.scss +45 -0
  257. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/link-list/_list-vertical.scss +20 -0
  258. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/link-list/index.scss +2 -0
  259. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/navigation/_navigation-fat.scss +58 -0
  260. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/navigation/_navigation-main-horizontal-vertical.scss +176 -0
  261. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/navigation/_navigation-mobile.scss +85 -0
  262. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/navigation/_navigation-sidebar.scss +29 -0
  263. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/navigation/_sitemap-navigation.scss +20 -0
  264. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/navigation/index.scss +5 -0
  265. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/promo/_absolute-bottom-link.scss +8 -0
  266. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/promo/_promo-hero.scss +40 -0
  267. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/promo/_promo-shadow.scss +42 -0
  268. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/promo/index.scss +3 -0
  269. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/rich-text/_rich-text-lists.scss +63 -0
  270. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/rich-text/index.scss +1 -0
  271. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/spacing/_background-colors.scss +14 -0
  272. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/spacing/_indent.scss +13 -0
  273. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/spacing/index.scss +2 -0
  274. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/title/_component-title.scss +30 -0
  275. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/title/index.scss +1 -0
  276. package/dist/templates/angular-xmcloud/src/assets/styles/sass/main.scss +4 -0
  277. package/dist/templates/angular-xmcloud/src/assets/styles/sass/variants/index.scss +6 -0
  278. package/dist/templates/angular-xmcloud/src/assets/styles/sass/variants/link-list/index.scss +0 -0
  279. package/dist/templates/angular-xmcloud/src/assets/styles/sass/variants/navigation/index.scss +0 -0
  280. package/dist/templates/angular-xmcloud/src/assets/styles/sass/variants/page-content/index.scss +0 -0
  281. package/dist/templates/angular-xmcloud/src/assets/styles/sass/variants/promo/index.scss +0 -0
  282. package/dist/templates/angular-xmcloud/src/assets/styles/sass/variants/rich-text/index.scss +0 -0
  283. package/dist/templates/angular-xmcloud/src/assets/styles/sass/variants/title/index.scss +0 -0
  284. package/dist/templates/nextjs/.eslintrc +26 -26
  285. package/dist/templates/nextjs/.gitattributes +11 -11
  286. package/dist/templates/nextjs/.graphql-let.yml +8 -8
  287. package/dist/templates/nextjs/.prettierrc +8 -8
  288. package/dist/templates/nextjs/.vscode/launch.json +15 -15
  289. package/dist/templates/nextjs/LICENSE.txt +202 -202
  290. package/dist/templates/nextjs/README.md +8 -8
  291. package/dist/templates/nextjs/gitignore +32 -32
  292. package/dist/templates/nextjs/package.json +87 -87
  293. package/dist/templates/nextjs/public/sc_logo.svg +52 -52
  294. package/dist/templates/nextjs/scripts/config/plugins/fallback.ts +0 -1
  295. package/dist/templates/nextjs/scripts/generate-config.ts +8 -1
  296. package/dist/templates/nextjs/scripts/temp/gitignore +2 -2
  297. package/dist/templates/nextjs/sitecore/config/{{appName}}.config +165 -165
  298. package/dist/templates/nextjs/src/assets/app.css +36 -36
  299. package/dist/templates/nextjs/src/temp/GraphQLIntrospectionResult.json +22215 -22215
  300. package/dist/templates/nextjs/src/temp/gitignore +3 -3
  301. package/dist/templates/nextjs/tsconfig.json +37 -37
  302. package/dist/templates/nextjs/tsconfig.scripts.json +11 -11
  303. package/dist/templates/nextjs-styleguide/data/component-content/Styleguide/ContentReuse/LoremIpsumContentBlock/en.yml +9 -9
  304. package/dist/templates/nextjs-styleguide/data/content/Styleguide/ContentListField/Item1/en.yml +6 -6
  305. package/dist/templates/nextjs-styleguide/data/content/Styleguide/ContentListField/Item2/en.yml +6 -6
  306. package/dist/templates/nextjs-styleguide/data/content/Styleguide/EditFrameDemo/Item1/en.yml +6 -6
  307. package/dist/templates/nextjs-styleguide/data/content/Styleguide/EditFrameDemo/Item2/en.yml +6 -6
  308. package/dist/templates/nextjs-styleguide/data/content/Styleguide/ItemLinkField/Item1/en.yml +6 -6
  309. package/dist/templates/nextjs-styleguide/data/content/Styleguide/ItemLinkField/Item2/en.yml +6 -6
  310. package/dist/templates/nextjs-styleguide/data/dictionary/en.yml +4 -4
  311. package/dist/templates/nextjs-styleguide/data/dictionary/{{language}}.yml +4 -4
  312. package/dist/templates/nextjs-styleguide/data/routes/en.yml +63 -63
  313. package/dist/templates/nextjs-styleguide/data/routes/graphql/en.yml +27 -27
  314. package/dist/templates/nextjs-styleguide/data/routes/graphql/sample-1/en.yml +9 -9
  315. package/dist/templates/nextjs-styleguide/data/routes/graphql/sample-2/en.yml +9 -9
  316. package/dist/templates/nextjs-styleguide/data/routes/styleguide/custom-route-type/en.yml +12 -12
  317. package/dist/templates/nextjs-styleguide/data/routes/styleguide/en.yml +259 -259
  318. package/dist/templates/nextjs-styleguide/data/routes/styleguide/{{language}}.yml +25 -25
  319. package/dist/templates/nextjs-styleguide/data/routes/{{language}}.yml +4 -4
  320. package/dist/templates/nextjs-styleguide/package.json +14 -14
  321. package/dist/templates/nextjs-styleguide/scripts/config/plugins/disconnected.ts +1 -0
  322. package/dist/templates/nextjs-styleguide/sitecore/definitions/components/graphql/GraphQL-IntegratedDemo.sitecore.graphql +71 -71
  323. package/dist/templates/nextjs-styleguide/sitecore/gitignore +3 -3
  324. package/dist/templates/nextjs-styleguide/src/components/graphql/GraphQL-ConnectedDemo.dynamic.graphql +69 -69
  325. package/dist/templates/nextjs-styleguide-tracking/data/dictionary/en.yml +5 -5
  326. package/dist/templates/nextjs-styleguide-tracking/data/routes/tracking/en.yml +8 -8
  327. package/dist/templates/nextjs-sxa/package.json +11 -11
  328. package/dist/templates/nextjs-sxa/src/assets/basic/_component.scss +48 -48
  329. package/dist/templates/nextjs-sxa/src/assets/basic/_container.scss +64 -64
  330. package/dist/templates/nextjs-sxa/src/assets/basic/_fonts.scss +3 -3
  331. package/dist/templates/nextjs-sxa/src/assets/basic/_footer.scss +31 -31
  332. package/dist/templates/nextjs-sxa/src/assets/basic/_header.scss +49 -49
  333. package/dist/templates/nextjs-sxa/src/assets/basic/_navigation.scss +150 -150
  334. package/dist/templates/nextjs-sxa/src/assets/basic/_promo.scss +58 -58
  335. package/dist/templates/nextjs-sxa/src/assets/basic/_rich-text.scss +11 -11
  336. package/dist/templates/nextjs-sxa/src/assets/basic/_variables.scss +9 -9
  337. package/dist/templates/nextjs-sxa/src/assets/basic/main.scss +8 -8
  338. package/dist/templates/nextjs-sxa/src/assets/main.scss +4 -4
  339. package/dist/templates/nextjs-sxa/src/assets/sass/_app.scss +103 -103
  340. package/dist/templates/nextjs-sxa/src/assets/sass/abstracts/_functions.scss +8 -8
  341. package/dist/templates/nextjs-sxa/src/assets/sass/abstracts/_mixins.scss +121 -121
  342. package/dist/templates/nextjs-sxa/src/assets/sass/abstracts/_vars.scss +3 -3
  343. package/dist/templates/nextjs-sxa/src/assets/sass/abstracts/vars/_colors.scss +283 -283
  344. package/dist/templates/nextjs-sxa/src/assets/sass/abstracts/vars/_fontSizes.scss +16 -16
  345. package/dist/templates/nextjs-sxa/src/assets/sass/abstracts/vars/_margins.scss +10 -10
  346. package/dist/templates/nextjs-sxa/src/assets/sass/base/fonts/_fonts.scss +1 -1
  347. package/dist/templates/nextjs-sxa/src/assets/sass/base/fonts/index.scss +1 -1
  348. package/dist/templates/nextjs-sxa/src/assets/sass/base/index.scss +3 -3
  349. package/dist/templates/nextjs-sxa/src/assets/sass/base/links/_link-button.scss +26 -26
  350. package/dist/templates/nextjs-sxa/src/assets/sass/base/links/index.scss +1 -1
  351. package/dist/templates/nextjs-sxa/src/assets/sass/base/reset/_inputs.scss +58 -58
  352. package/dist/templates/nextjs-sxa/src/assets/sass/base/reset/_links.scss +14 -14
  353. package/dist/templates/nextjs-sxa/src/assets/sass/base/reset/_ui-datepicker.scss +7 -7
  354. package/dist/templates/nextjs-sxa/src/assets/sass/base/richtext/_richtext-files-icons.scss +86 -86
  355. package/dist/templates/nextjs-sxa/src/assets/sass/base/richtext/_richtext.scss +101 -101
  356. package/dist/templates/nextjs-sxa/src/assets/sass/base/richtext/index.scss +2 -2
  357. package/dist/templates/nextjs-sxa/src/assets/sass/base/typehead/_typehead.scss +95 -95
  358. package/dist/templates/nextjs-sxa/src/assets/sass/base/typehead/index.scss +1 -1
  359. package/dist/templates/nextjs-sxa/src/assets/sass/components/_component-column-splitter.scss +14 -14
  360. package/dist/templates/nextjs-sxa/src/assets/sass/components/_component-container.scss +27 -27
  361. package/dist/templates/nextjs-sxa/src/assets/sass/components/_component-image.scss +18 -18
  362. package/dist/templates/nextjs-sxa/src/assets/sass/components/_component-navigation.scss +51 -51
  363. package/dist/templates/nextjs-sxa/src/assets/sass/components/_component-promo.scss +42 -42
  364. package/dist/templates/nextjs-sxa/src/assets/sass/components/_component-richtext-content.scss +19 -19
  365. package/dist/templates/nextjs-sxa/src/assets/sass/components/common/_alignment.scss +53 -26
  366. package/dist/templates/nextjs-sxa/src/assets/sass/components/common/_boxed.scss +16 -16
  367. package/dist/templates/nextjs-sxa/src/assets/sass/components/common/_clearfix.scss +11 -11
  368. package/dist/templates/nextjs-sxa/src/assets/sass/components/common/_highlighted.scss +62 -62
  369. package/dist/templates/nextjs-sxa/src/assets/sass/components/common/_link-button.scss +16 -16
  370. package/dist/templates/nextjs-sxa/src/assets/sass/components/common/_promoted-box.scss +3 -3
  371. package/dist/templates/nextjs-sxa/src/assets/sass/components/common/index.scss +5 -5
  372. package/dist/templates/nextjs-sxa/src/assets/sass/components/container/_bordered.scss +23 -23
  373. package/dist/templates/nextjs-sxa/src/assets/sass/components/container/_title-row-box.scss +66 -66
  374. package/dist/templates/nextjs-sxa/src/assets/sass/components/container/index.scss +1 -1
  375. package/dist/templates/nextjs-sxa/src/assets/sass/components/image/_image-default-size.scss +6 -6
  376. package/dist/templates/nextjs-sxa/src/assets/sass/components/image/index.scss +1 -1
  377. package/dist/templates/nextjs-sxa/src/assets/sass/components/image-alignment/_image-left.scss +3 -3
  378. package/dist/templates/nextjs-sxa/src/assets/sass/components/image-alignment/_image-right.scss +3 -3
  379. package/dist/templates/nextjs-sxa/src/assets/sass/components/index.scss +17 -17
  380. package/dist/templates/nextjs-sxa/src/assets/sass/components/layout/_acaindent.scss +5 -5
  381. package/dist/templates/nextjs-sxa/src/assets/sass/components/layout/_background.scss +27 -27
  382. package/dist/templates/nextjs-sxa/src/assets/sass/components/layout/index.scss +1 -1
  383. package/dist/templates/nextjs-sxa/src/assets/sass/components/link-list/_component-link-list.scss +45 -45
  384. package/dist/templates/nextjs-sxa/src/assets/sass/components/link-list/_list-vertical.scss +20 -20
  385. package/dist/templates/nextjs-sxa/src/assets/sass/components/link-list/index.scss +2 -2
  386. package/dist/templates/nextjs-sxa/src/assets/sass/components/navigation/_navigation-fat.scss +58 -58
  387. package/dist/templates/nextjs-sxa/src/assets/sass/components/navigation/_navigation-main-horizontal-vertical.scss +176 -176
  388. package/dist/templates/nextjs-sxa/src/assets/sass/components/navigation/_navigation-mobile.scss +85 -85
  389. package/dist/templates/nextjs-sxa/src/assets/sass/components/navigation/_navigation-sidebar.scss +29 -29
  390. package/dist/templates/nextjs-sxa/src/assets/sass/components/navigation/_sitemap-navigation.scss +20 -20
  391. package/dist/templates/nextjs-sxa/src/assets/sass/components/navigation/index.scss +5 -5
  392. package/dist/templates/nextjs-sxa/src/assets/sass/components/promo/_absolute-bottom-link.scss +8 -8
  393. package/dist/templates/nextjs-sxa/src/assets/sass/components/promo/_promo-hero.scss +40 -40
  394. package/dist/templates/nextjs-sxa/src/assets/sass/components/promo/_promo-shadow.scss +42 -42
  395. package/dist/templates/nextjs-sxa/src/assets/sass/components/promo/index.scss +3 -3
  396. package/dist/templates/nextjs-sxa/src/assets/sass/components/rich-text/_rich-text-lists.scss +63 -63
  397. package/dist/templates/nextjs-sxa/src/assets/sass/components/rich-text/index.scss +1 -1
  398. package/dist/templates/nextjs-sxa/src/assets/sass/components/spacing/_background-colors.scss +14 -14
  399. package/dist/templates/nextjs-sxa/src/assets/sass/components/spacing/_indent.scss +13 -13
  400. package/dist/templates/nextjs-sxa/src/assets/sass/components/spacing/index.scss +2 -2
  401. package/dist/templates/nextjs-sxa/src/assets/sass/components/title/_component-title.scss +30 -30
  402. package/dist/templates/nextjs-sxa/src/assets/sass/components/title/index.scss +1 -1
  403. package/dist/templates/nextjs-sxa/src/assets/sass/main.scss +4 -4
  404. package/dist/templates/nextjs-sxa/src/assets/sass/variants/index.scss +5 -5
  405. package/dist/templates/nextjs-xmcloud/.env +19 -19
  406. package/dist/templates/nextjs-xmcloud/package.json +8 -8
  407. package/dist/templates/node-headless-ssr-experience-edge/README.md +56 -56
  408. package/dist/templates/node-headless-ssr-experience-edge/gitignore +19 -0
  409. package/dist/templates/node-headless-ssr-experience-edge/package.json +34 -34
  410. package/dist/templates/node-headless-ssr-experience-edge/tsconfig.json +22 -22
  411. package/dist/templates/node-headless-ssr-proxy/.vscode/launch.json +47 -47
  412. package/dist/templates/node-headless-ssr-proxy/LICENSE.txt +202 -202
  413. package/dist/templates/node-headless-ssr-proxy/README.md +65 -65
  414. package/dist/templates/node-headless-ssr-proxy/gitignore +19 -0
  415. package/dist/templates/node-headless-ssr-proxy/package.json +39 -39
  416. package/dist/templates/node-headless-ssr-proxy/src/config.ts +3 -3
  417. package/dist/templates/node-headless-ssr-proxy/src/error.html +200 -200
  418. package/dist/templates/node-headless-ssr-proxy/src/httpAgents.ts +2 -2
  419. package/dist/templates/node-headless-ssr-proxy/src/index.ts +9 -2
  420. package/dist/templates/node-headless-ssr-proxy/tsconfig.json +22 -22
  421. package/dist/templates/node-xmcloud-proxy/.env +25 -0
  422. package/dist/templates/node-xmcloud-proxy/README.md +130 -0
  423. package/dist/templates/node-xmcloud-proxy/gitignore +33 -0
  424. package/dist/templates/node-xmcloud-proxy/package.json +26 -0
  425. package/dist/templates/node-xmcloud-proxy/src/config.ts +91 -0
  426. package/dist/templates/node-xmcloud-proxy/src/index.ts +199 -0
  427. package/dist/templates/node-xmcloud-proxy/src/personalize.ts +34 -0
  428. package/dist/templates/node-xmcloud-proxy/src/types.ts +37 -0
  429. package/dist/templates/node-xmcloud-proxy/tsconfig.json +22 -0
  430. package/dist/templates/react/.prettierrc +9 -9
  431. package/dist/templates/react/LICENSE.txt +202 -202
  432. package/dist/templates/react/README.md +2402 -2402
  433. package/dist/templates/react/data/component-content/Styleguide/ContentReuse/LoremIpsumContentBlock/en.yml +9 -9
  434. package/dist/templates/react/data/content/Styleguide/ContentListField/Item1/en.yml +6 -6
  435. package/dist/templates/react/data/content/Styleguide/ContentListField/Item2/en.yml +6 -6
  436. package/dist/templates/react/data/content/Styleguide/EditFrameDemo/Item1/en.yml +6 -6
  437. package/dist/templates/react/data/content/Styleguide/EditFrameDemo/Item2/en.yml +6 -6
  438. package/dist/templates/react/data/content/Styleguide/ItemLinkField/Item1/en.yml +6 -6
  439. package/dist/templates/react/data/content/Styleguide/ItemLinkField/Item2/en.yml +6 -6
  440. package/dist/templates/react/data/dictionary/en.yml +4 -4
  441. package/dist/templates/react/data/dictionary/{{language}}.yml +4 -4
  442. package/dist/templates/react/data/routes/en.yml +61 -61
  443. package/dist/templates/react/data/routes/graphql/en.yml +27 -27
  444. package/dist/templates/react/data/routes/graphql/sample-1/en.yml +9 -9
  445. package/dist/templates/react/data/routes/graphql/sample-2/en.yml +9 -9
  446. package/dist/templates/react/data/routes/styleguide/custom-route-type/en.yml +12 -12
  447. package/dist/templates/react/data/routes/styleguide/en.yml +263 -263
  448. package/dist/templates/react/data/routes/styleguide/{{language}}.yml +26 -26
  449. package/dist/templates/react/data/routes/{{language}}.yml +4 -4
  450. package/dist/templates/react/gitignore +25 -25
  451. package/dist/templates/react/package.json +5 -5
  452. package/dist/templates/react/public/index.html +35 -35
  453. package/dist/templates/react/scripts/generate-config.js +10 -3
  454. package/dist/templates/react/sitecore/config/{{appName}}.config +90 -90
  455. package/dist/templates/react/sitecore/definitions/components/graphql/GraphQL-IntegratedDemo.sitecore.graphql +71 -71
  456. package/dist/templates/react/sitecore/gitignore +2 -2
  457. package/dist/templates/react/src/assets/sc_logo.svg +52 -52
  458. package/dist/templates/react/src/components/graphql/query.graphql +69 -69
  459. package/dist/templates/react/src/temp/GraphQLFragmentTypes.json +207 -207
  460. package/dist/templates/react/src/temp/gitignore +3 -3
  461. package/dist/templates/react-native/.buckconfig +6 -6
  462. package/dist/templates/react-native/.eslintrc +74 -74
  463. package/dist/templates/react-native/.gitattributes +1 -1
  464. package/dist/templates/react-native/.prettierrc +9 -9
  465. package/dist/templates/react-native/.vscode/launch.json +42 -42
  466. package/dist/templates/react-native/.vscode/settings.json +1 -1
  467. package/dist/templates/react-native/LICENSE.txt +202 -202
  468. package/dist/templates/react-native/README.MD +115 -115
  469. package/dist/templates/react-native/android/app/BUCK +55 -55
  470. package/dist/templates/react-native/android/app/build.gradle +201 -201
  471. package/dist/templates/react-native/android/app/build_defs.bzl +19 -19
  472. package/dist/templates/react-native/android/app/proguard-rules.pro +10 -10
  473. package/dist/templates/react-native/android/app/src/debug/AndroidManifest.xml +8 -8
  474. package/dist/templates/react-native/android/app/src/main/AndroidManifest.xml +26 -26
  475. package/dist/templates/react-native/android/app/src/main/java/com/{{appName}}/MainActivity.java +15 -15
  476. package/dist/templates/react-native/android/app/src/main/java/com/{{appName}}/MainApplication.java +74 -74
  477. package/dist/templates/react-native/android/app/src/main/res/values/strings.xml +3 -3
  478. package/dist/templates/react-native/android/app/src/main/res/values/styles.xml +9 -9
  479. package/dist/templates/react-native/android/build.gradle +38 -38
  480. package/dist/templates/react-native/android/gradle/wrapper/gradle-wrapper.properties +5 -5
  481. package/dist/templates/react-native/android/gradle.properties +21 -21
  482. package/dist/templates/react-native/android/gradlew +188 -188
  483. package/dist/templates/react-native/android/gradlew.bat +100 -100
  484. package/dist/templates/react-native/android/settings.gradle +3 -3
  485. package/dist/templates/react-native/app.json +3 -3
  486. package/dist/templates/react-native/assets/img/sc_logo.svg +52 -52
  487. package/dist/templates/react-native/data/content/Styleguide/ItemLinkField/Item1/en.json +10 -10
  488. package/dist/templates/react-native/data/routes/en.json +22 -22
  489. package/dist/templates/react-native/data/routes/styleguide/en.json +227 -227
  490. package/dist/templates/react-native/data/routes/styleguide/{{language}}.json +31 -31
  491. package/dist/templates/react-native/data/routes/{{language}}.json +7 -7
  492. package/dist/templates/react-native/gitignore +60 -60
  493. package/dist/templates/react-native/ios/Podfile +53 -53
  494. package/dist/templates/react-native/ios/{{appName}}/AppDelegate.h +15 -15
  495. package/dist/templates/react-native/ios/{{appName}}/AppDelegate.m +42 -42
  496. package/dist/templates/react-native/ios/{{appName}}/Base.lproj/LaunchScreen.xib +42 -42
  497. package/dist/templates/react-native/ios/{{appName}}/Images.xcassets/AppIcon.appiconset/Contents.json +38 -38
  498. package/dist/templates/react-native/ios/{{appName}}/Images.xcassets/Contents.json +6 -6
  499. package/dist/templates/react-native/ios/{{appName}}/Info.plist +57 -57
  500. package/dist/templates/react-native/ios/{{appName}}/main.m +16 -16
  501. package/dist/templates/react-native/ios/{{appName}}-tvOS/Info.plist +53 -53
  502. package/dist/templates/react-native/ios/{{appName}}-tvOSTests/Info.plist +24 -24
  503. package/dist/templates/react-native/ios/{{appName}}.xcodeproj/xcshareddata/xcschemes/BasicSampleReactNative-tvOS.xcscheme +129 -129
  504. package/dist/templates/react-native/ios/{{appName}}.xcodeproj/xcshareddata/xcschemes/BasicSampleReactNative.xcscheme +129 -129
  505. package/dist/templates/react-native/ios/{{appName}}Tests/BasicSampleReactNativeTests.m +72 -72
  506. package/dist/templates/react-native/ios/{{appName}}Tests/Info.plist +24 -24
  507. package/dist/templates/react-native/package.json +78 -78
  508. package/dist/templates/react-native/sitecore/config/{{appName}}.config +47 -47
  509. package/dist/templates/react-native/sitecore/gitignore +2 -2
  510. package/dist/templates/vue/.browserslistrc +2 -2
  511. package/dist/templates/vue/.prettierrc +9 -9
  512. package/dist/templates/vue/LICENSE.txt +202 -202
  513. package/dist/templates/vue/README.md +36 -36
  514. package/dist/templates/vue/data/component-content/Styleguide/ContentReuse/LoremIpsumContentBlock/en.yml +9 -9
  515. package/dist/templates/vue/data/content/Styleguide/ContentListField/Item1/en.yml +6 -6
  516. package/dist/templates/vue/data/content/Styleguide/ContentListField/Item2/en.yml +6 -6
  517. package/dist/templates/vue/data/content/Styleguide/EditFrameDemo/Item1/en.yml +6 -6
  518. package/dist/templates/vue/data/content/Styleguide/EditFrameDemo/Item2/en.yml +6 -6
  519. package/dist/templates/vue/data/content/Styleguide/ItemLinkField/Item1/en.yml +6 -6
  520. package/dist/templates/vue/data/content/Styleguide/ItemLinkField/Item2/en.yml +6 -6
  521. package/dist/templates/vue/data/dictionary/en.yml +7 -7
  522. package/dist/templates/vue/data/dictionary/{{language}}.yml +7 -7
  523. package/dist/templates/vue/data/routes/en.yml +63 -63
  524. package/dist/templates/vue/data/routes/graphql/en.yml +34 -34
  525. package/dist/templates/vue/data/routes/graphql/sample-1/en.yml +9 -9
  526. package/dist/templates/vue/data/routes/graphql/sample-2/en.yml +9 -9
  527. package/dist/templates/vue/data/routes/styleguide/custom-route-type/en.yml +12 -12
  528. package/dist/templates/vue/data/routes/styleguide/en.yml +264 -264
  529. package/dist/templates/vue/data/routes/styleguide/{{language}}.yml +26 -26
  530. package/dist/templates/vue/data/routes/{{language}}.yml +4 -4
  531. package/dist/templates/vue/gitignore +25 -25
  532. package/dist/templates/vue/package.json +88 -90
  533. package/dist/templates/vue/public/img/icons/safari-pinned-tab.svg +75 -75
  534. package/dist/templates/vue/public/index.html +27 -27
  535. package/dist/templates/vue/public/manifest.json +14 -14
  536. package/dist/templates/vue/public/robots.txt +2 -2
  537. package/dist/templates/vue/scripts/generate-config.js +5 -0
  538. package/dist/templates/vue/sitecore/config/{{appName}}.config +89 -89
  539. package/dist/templates/vue/sitecore/definitions/components/GraphQL-IntegratedDemo.sitecore.graphql +71 -71
  540. package/dist/templates/vue/sitecore/gitignore +4 -4
  541. package/dist/templates/vue/src/assets/app.css +30 -30
  542. package/dist/templates/vue/src/assets/sc_logo.svg +52 -52
  543. package/dist/templates/vue/src/components/GraphQL/GraphQL-ConnectedDemo.query.graphql +69 -69
  544. package/dist/templates/vue/src/temp/GraphQLFragmentTypes.json +273 -273
  545. package/dist/templates/vue/src/temp/gitignore +3 -3
  546. package/package.json +2 -2
  547. package/dist/templates/angular/scripts/generate-component-factory.ts +0 -166
  548. package/dist/templates/angular/src/app/lib/client-factory.ts +0 -28
  549. /package/dist/templates/{angular → angular-sxp}/data/component-content/gitignore +0 -0
  550. /package/dist/templates/{angular → angular-sxp}/data/content/gitignore +0 -0
  551. /package/dist/templates/{angular → angular-sxp}/data/media/files/jss.pdf +0 -0
  552. /package/dist/templates/{angular → angular-sxp}/data/media/img/jss_logo.png +0 -0
  553. /package/dist/templates/{angular → angular-sxp}/data/media/img/sc_logo.png +0 -0
  554. /package/dist/templates/{angular → angular-sxp}/scripts/disconnected-mode-proxy.ts +0 -0
  555. /package/dist/templates/{angular → angular-sxp}/scripts/lint-yml.ts +0 -0
  556. /package/dist/templates/{angular → angular-sxp}/sitecore/definitions/component-content.sitecore.ts +0 -0
  557. /package/dist/templates/{angular → angular-sxp}/sitecore/definitions/components/Styleguide-Layout-Reuse.sitecore.ts +0 -0
  558. /package/dist/templates/{angular → angular-sxp}/sitecore/definitions/components/Styleguide-Layout-Tabs-Tab.sitecore.ts +0 -0
  559. /package/dist/templates/{angular → angular-sxp}/sitecore/definitions/components/Styleguide-Layout-Tabs.sitecore.ts +0 -0
  560. /package/dist/templates/{angular → angular-sxp}/sitecore/definitions/components/Styleguide-Layout.sitecore.ts +0 -0
  561. /package/dist/templates/{angular → angular-sxp}/sitecore/definitions/components/Styleguide-Multilingual.sitecore.ts +0 -0
  562. /package/dist/templates/{angular → angular-sxp}/sitecore/definitions/components/Styleguide-Section.sitecore.ts +0 -0
  563. /package/dist/templates/{angular → angular-sxp}/sitecore/definitions/components/content-block.sitecore.ts +0 -0
  564. /package/dist/templates/{angular → angular-sxp}/sitecore/definitions/components/graph-ql-connected-demo.sitecore.ts +0 -0
  565. /package/dist/templates/{angular → angular-sxp}/sitecore/definitions/components/graph-ql-integrated-demo.sitecore.ts +0 -0
  566. /package/dist/templates/{angular → angular-sxp}/sitecore/definitions/components/graph-ql-layout.sitecore.ts +0 -0
  567. /package/dist/templates/{angular → angular-sxp}/sitecore/definitions/components/styleguide-angular-lazy-loading.sitecore.ts +0 -0
  568. /package/dist/templates/{angular → angular-sxp}/sitecore/definitions/components/styleguide-component-params.sitecore.ts +0 -0
  569. /package/dist/templates/{angular → angular-sxp}/sitecore/definitions/components/styleguide-custom-route-type.sitecore.ts +0 -0
  570. /package/dist/templates/{angular → angular-sxp}/sitecore/definitions/components/styleguide-edit-frame.sitecore.ts +0 -0
  571. /package/dist/templates/{angular → angular-sxp}/sitecore/definitions/components/styleguide-field-usage-checkbox.sitecore.ts +0 -0
  572. /package/dist/templates/{angular → angular-sxp}/sitecore/definitions/components/styleguide-field-usage-content-list.sitecore.ts +0 -0
  573. /package/dist/templates/{angular → angular-sxp}/sitecore/definitions/components/styleguide-field-usage-custom.sitecore.ts +0 -0
  574. /package/dist/templates/{angular → angular-sxp}/sitecore/definitions/components/styleguide-field-usage-date.sitecore.ts +0 -0
  575. /package/dist/templates/{angular → angular-sxp}/sitecore/definitions/components/styleguide-field-usage-file.sitecore.ts +0 -0
  576. /package/dist/templates/{angular → angular-sxp}/sitecore/definitions/components/styleguide-field-usage-image.sitecore.ts +0 -0
  577. /package/dist/templates/{angular → angular-sxp}/sitecore/definitions/components/styleguide-field-usage-item-link.sitecore.ts +0 -0
  578. /package/dist/templates/{angular → angular-sxp}/sitecore/definitions/components/styleguide-field-usage-link.sitecore.ts +0 -0
  579. /package/dist/templates/{angular → angular-sxp}/sitecore/definitions/components/styleguide-field-usage-number.sitecore.ts +0 -0
  580. /package/dist/templates/{angular → angular-sxp}/sitecore/definitions/components/styleguide-field-usage-rich-text.sitecore.ts +0 -0
  581. /package/dist/templates/{angular → angular-sxp}/sitecore/definitions/components/styleguide-field-usage-text.sitecore.ts +0 -0
  582. /package/dist/templates/{angular → angular-sxp}/sitecore/definitions/components/styleguide-route-fields.sitecore.ts +0 -0
  583. /package/dist/templates/{angular → angular-sxp}/sitecore/definitions/components/styleguide-sitecore-context.sitecore.ts +0 -0
  584. /package/dist/templates/{angular → angular-sxp}/sitecore/definitions/components/styleguide-tracking.sitecore.ts +0 -0
  585. /package/dist/templates/{angular → angular-sxp}/sitecore/definitions/config.js +0 -0
  586. /package/dist/templates/{angular → angular-sxp}/sitecore/definitions/content.sitecore.ts +0 -0
  587. /package/dist/templates/{angular → angular-sxp}/sitecore/definitions/dictionary.sitecore.ts +0 -0
  588. /package/dist/templates/{angular → angular-sxp}/sitecore/definitions/placeholders.sitecore.ts +0 -0
  589. /package/dist/templates/{angular → angular-sxp}/sitecore/definitions/routes.sitecore.ts +0 -0
  590. /package/dist/templates/{angular → angular-sxp}/sitecore/definitions/templates/Styleguide-Explanatory-Component.sitecore.ts +0 -0
  591. /package/dist/templates/{angular → angular-sxp}/sitecore/definitions/templates/styleguide-content-list-template.sitecore.ts +0 -0
  592. /package/dist/templates/{angular → angular-sxp}/sitecore/definitions/templates/styleguide-edit-frame-list-item-template.sitecore.ts +0 -0
  593. /package/dist/templates/{angular → angular-sxp}/sitecore/definitions/templates/styleguide-item-link-template.sitecore.ts +0 -0
  594. /package/dist/templates/{angular → angular-sxp}/sitecore/pipelines/example.patch.ts +0 -0
  595. /package/dist/templates/{angular → angular-sxp}/src/app/components/graph-ql-connected-demo/graph-ql-connected-demo.component.ts +0 -0
  596. /package/dist/templates/{angular → angular-sxp}/src/app/components/graph-ql-integrated-demo/graph-ql-integrated-demo.component.ts +0 -0
  597. /package/dist/templates/{angular → angular-sxp}/src/app/components/shared/styleguide-specimen/styleguide-specimen.component.ts +0 -0
  598. /package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-angular-lazy-loading/styleguide-angular-lazy-loading.component.ts +0 -0
  599. /package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-angular-lazy-loading/styleguide-angular-lazy-loading.module.ts +0 -0
  600. /package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-component-params/styleguide-component-params.component.ts +0 -0
  601. /package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-custom-route-type/styleguide-custom-route-type.component.ts +0 -0
  602. /package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-edit-frame/styleguide-edit-frame.component.ts +0 -0
  603. /package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-field-usage-checkbox/styleguide-field-usage-checkbox.component.ts +0 -0
  604. /package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-field-usage-content-list/styleguide-field-usage-content-list.component.ts +0 -0
  605. /package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-field-usage-custom/styleguide-field-usage-custom.component.ts +0 -0
  606. /package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-field-usage-date/styleguide-field-usage-date.component.ts +0 -0
  607. /package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-field-usage-file/styleguide-field-usage-file.component.ts +0 -0
  608. /package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-field-usage-image/styleguide-field-usage-image.component.ts +0 -0
  609. /package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-field-usage-item-link/styleguide-field-usage-item-link.component.ts +0 -0
  610. /package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-field-usage-link/styleguide-field-usage-link.component.ts +0 -0
  611. /package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-field-usage-number/styleguide-field-usage-number.component.ts +0 -0
  612. /package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-field-usage-rich-text/styleguide-field-usage-rich-text.component.ts +0 -0
  613. /package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-field-usage-text/styleguide-field-usage-text.component.ts +0 -0
  614. /package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-layout/styleguide-layout.component.ts +0 -0
  615. /package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-layout-reuse/styleguide-layout-reuse.component.ts +0 -0
  616. /package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-layout-tabs/styleguide-layout-tabs.component.ts +0 -0
  617. /package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-layout-tabs-tab/styleguide-layout-tabs-tab.component.ts +0 -0
  618. /package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-multilingual/styleguide-multilingual.component.ts +0 -0
  619. /package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-route-fields/styleguide-route-fields.component.ts +0 -0
  620. /package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-section/styleguide-section.component.ts +0 -0
  621. /package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-sitecore-context/styleguide-sitecore-context.component.ts +0 -0
  622. /package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-tracking/styleguide-tracking.component.ts +0 -0
@@ -0,0 +1,130 @@
1
+ # Node XM Cloud Proxy
2
+
3
+ > Sitecore JSS Proxy for XM Cloud is considered experimental.
4
+
5
+ [Documentation](TODO)
6
+
7
+ This proxy will serve as the backbone for supporting various SPA frameworks by handling server-side rendering (SSR), data queries, and middleware functionalities.
8
+
9
+ This is a sample setup showing one of how you can configure XM Cloud rendering server.
10
+
11
+ ## Features Supported
12
+
13
+ - `Context ID`: The Context ID environment variable simplifies setting up and configuring XM Cloud solutions. It's a unified identifier that maps to all your configured resources, such as content, sites, files, forms, and integration settings.
14
+
15
+ - `Pages new editing integration via HTTP render engine endpoint`: Before JSS 22.1, JSS Next.js apps integrated with Sitecore editors through chromes, where data was sent via a POST request. With the 22.1 release, a new metadata method was introduced, rendering the app inside an iframe in XM Cloud Pages, offering benefits like faster load times, simpler configuration, and direct local host connections without tunneling.
16
+
17
+ - `XM Cloud proxy personalization` with embedded personalization and A/B Component Test support.
18
+
19
+ - `Forms support`: provides the capability to consume and post Sitecore Forms from JSS apps. Sitecore Forms is a form-authoring framework that enables marketers to author their own forms, collect data, and analyze form performance.
20
+
21
+ ## Configuration Setup
22
+
23
+ The config.ts file in this proxy app handles essential configurations for server-side rendering, data queries, and middleware functionalities. Here are the main configurations defined:
24
+
25
+ - Server Bundle Configuration:
26
+
27
+ - The app loads a server.bundle.js file, pre-built from your SPA app, for SSR support.
28
+ - This file contains the configuration and factory functions essential for rendering and data querying.
29
+
30
+ - GraphQL Endpoint Setup:
31
+
32
+ - Defines a graphQLEndpoint for handling Sitecore GraphQL requests. It differentiates between production (Sitecore Edge) and development (Sitecore CM) endpoints.
33
+ - Constructs the target URL and path for proxy requests, ensuring compliance with http-proxy-middleware requirements.
34
+
35
+ - Port Configuration:
36
+
37
+ - Configures the port for running the proxy, with a default of 3000 or an environment-specified port.
38
+
39
+ - Personalization Configuration (personalizeConfig):
40
+
41
+ - Sets up Sitecore personalization through PersonalizeConfig, defining settings for both Sitecore Experience Edge and CDP endpoints.
42
+ - Contains options to control personalization features, including:
43
+ - Timeouts for Edge and CDP endpoints (default 400ms, configurable via environment variables).
44
+ - Scope and site name used for Sitecore Personalize.
45
+ - Enable/Disable Switch: Functions that allow you to conditionally disable personalization based on the environment (e.g., disabled in development mode) and cookie consent policy.
46
+ - Language Configuration: defaultLanguage serves as a fallback if language data is unavailable in layout data.
47
+
48
+ This configuration is designed to be flexible and secure, with dynamic settings managed via environment variables where appropriate.
49
+
50
+ ### Environment Variables
51
+
52
+ The following environment variables can be set to configure the Proxy sample instead of modifying `config.js`. You can use the `.env` file located in the root of the app or set these directly in the environment (for example, in containers).
53
+
54
+ | Parameter | Description |
55
+ | ------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
56
+ | `PROXY_BUNDLE_PATH` | Path to the JSS SPA app's `server.bundle.js`. Default can be seen in [config.js](./config.js) file. |
57
+ | `PROXY_PORT` | Optional. Port which will be used when start sample. Default can be seen in [config.js](./config.js) file. |
58
+ | `DEBUG` | Optional. Debug level for the proxy. Set the DEBUG environment variable to 'sitecore-jss:_,proxy_,http-proxy-middleware\*, 'sitecore-jss:layout','sitecore-jss:personalize' to see all logs. |
59
+
60
+ ## Pre-requisites
61
+
62
+ 1. SPA sample supports XM Cloud out of the box.
63
+
64
+ 2. Build your SPA app bundle with `jss build` or `npm run build`. The build output should be placed in the `dist` folder. |
65
+
66
+ ## Build & run
67
+
68
+ 1. Run `npm install`
69
+
70
+ 2. Run `npm run start`
71
+
72
+ You should be able to see the following message:
73
+ `server listening on port 3000!`.
74
+
75
+ ## Deploy to Netlify
76
+
77
+ `NOTE: If you are using the Angular starter from the XM-Cloud Foundation repository within a monorepo, please skip to Step 3.`
78
+
79
+ 1. Run `npm init` in the root directory and add the following scripts to package.json:
80
+ ```
81
+ "build": "cd ./<your-proxy-app-name> && npm run build-all && cd ..",
82
+ "install": "cd ./<your-proxy-app-name> && npm install && npm run install-all && cd ..",
83
+ ```
84
+ 2. Ensure that `<your-proxy-app-name>/package.json` includes the following commands to handle the build and install steps properly::
85
+ ```
86
+ "build-all": "cd ../angular && npm run build && cd ../<your-proxy-app-name> && tsc",
87
+ "install-all": "cd ../angular && npm i && cd ../<your-proxy-app-name>"
88
+ ```
89
+ 3. Add `serverless-http` to the list of dependencies in `<your-proxy-app-name>/package.json` and then add the following variable to your ``<your-proxy-app-name>/src/index.ts` file.
90
+ ```
91
+ export const handler = serverless(server);
92
+ ```
93
+ 4. Create a `netlfiy.toml` file if not already created and ensure that the following Netlify configuration is added there:
94
+ - Following functions lets the proxy app to treated as netlify functions. [Functions Overview](https://docs.netlify.com/functions/overview/)
95
+ ```
96
+ [functions]
97
+ directory = "<your-proxy-app-name>/src"
98
+ node_bundler = "esbuild"
99
+ included_files = ["<your-proxy-app-name>/dist/**"]
100
+ ```
101
+ - To ensure that static assets are accessed properly we may need to add redirects statement for them to the toml file:
102
+ ```
103
+ [[redirects]]
104
+ from = "/dist/browser/*"
105
+ status = 200
106
+ to = "/browser/:splat"
107
+ ```
108
+ - To ensure that static files under /dist are not accessible via browser add `force=true` to the above
109
+ ```
110
+ [[redirects]]
111
+ from = "/*"
112
+ status = 200
113
+ to = "/.netlify/functions/index/:splat"
114
+ force = true
115
+ ```
116
+ - Build command
117
+ ```
118
+ [build]
119
+ command = "npm run build"
120
+ publish = "<your-proxy-app-name>/dist"
121
+ ```
122
+ 5. Create your netlify deployment: [A Step-by-Step Guide: Deploying on Netlify | Netlify](https://www.netlify.com/blog/2016/09/29/a-step-by-step-guide-deploying-on-netlify/)
123
+ a. Set up all your necessary environment variables like SITECORE_EDGE_CONTEXT_ID, SITECORE_SITE_NAME etc.
124
+ b. Set up your build settings in Site configuration --> Build and Deploy tab.
125
+ sample configuration:
126
+ Base Directory: /
127
+ Build command: npm run build
128
+ Publish directory: /proxy/dist
129
+ Functions directory: /proxy/src
130
+ NOTE: If proxy/dist folder is not picked up properly by Netlify make sure that the `PROXY_BUILD_PATH` env variable is unix style path e.g. `../proxy/dist`
@@ -0,0 +1,33 @@
1
+ # See http://help.github.com/ignore-files/ for more about ignoring files.
2
+
3
+ # compiled output
4
+ /dist
5
+
6
+ # dependencies
7
+ /node_modules
8
+
9
+ # local env files
10
+ .env.local
11
+ .env.*.local
12
+
13
+ # IDE - VSCode
14
+ .vscode/*
15
+ !.vscode/settings.json
16
+ !.vscode/tasks.json
17
+ !.vscode/launch.json
18
+ !.vscode/extensions.json
19
+
20
+ # misc
21
+ /connect.lock
22
+ /libpeerconnection.log
23
+ npm-debug.log
24
+ testem.log
25
+ /typings
26
+
27
+ # System Files
28
+ .DS_Store
29
+ Thumbs.db
30
+
31
+ # deploy platforms
32
+ .vercel
33
+ .netlify
@@ -0,0 +1,26 @@
1
+ {
2
+ "name": "node-xmcloud-sample",
3
+ "version": "22.3.0-canary",
4
+ "description": "Node XM Cloud Proxy sample for running XM Cloud JSS SPA apps",
5
+ "author": {
6
+ "name": "Sitecore Corporation",
7
+ "url": "https://jss.sitecore.com"
8
+ },
9
+ "scripts": {
10
+ "start": "ts-node ./src/index.ts"
11
+ },
12
+ "dependencies": {
13
+ "@sitecore-jss/sitecore-jss-proxy": "~22.3.0-canary",
14
+ "compression": "^1.7.4",
15
+ "express": "^4.18.2",
16
+ "dotenv": "^16.0.3",
17
+ "http-proxy-middleware": "^3.0.0"
18
+ },
19
+ "devDependencies": {
20
+ "@sitecore-jss/sitecore-jss": "~22.3.0-canary",
21
+ "@types/compression": "^1.7.2",
22
+ "@types/express": "^4.17.17",
23
+ "ts-node": "^10.9.1",
24
+ "typescript": "~4.9.5"
25
+ }
26
+ }
@@ -0,0 +1,91 @@
1
+ import { Config, ServerBundle } from './types';
2
+ import { PersonalizeConfig } from '@sitecore-jss/sitecore-jss-proxy';
3
+ /**
4
+ * The server.bundle.js file from your pre-built SPA app.
5
+ */
6
+ const bundlePath = process.env.PROXY_BUNDLE_PATH || '../dist/server.bundle';
7
+
8
+ let serverBundle: ServerBundle;
9
+
10
+ try {
11
+ serverBundle = require(bundlePath);
12
+ } catch (error) {
13
+ throw new Error(`ERROR: The server.bundle.js error. ${error}`);
14
+ }
15
+
16
+ const clientFactoryConfig = serverBundle.getClientFactoryConfig();
17
+
18
+ /**
19
+ * GraphQL endpoint resolution to meet the requirements of the http-proxy-middleware
20
+ */
21
+ export const graphQLEndpoint = (() => {
22
+ try {
23
+ const graphQLEndpoint = new URL(clientFactoryConfig.endpoint);
24
+ // GraphQL endpoint URL (Edge endpoint for production and GraphQL Sitecore CM endpoint for dev)
25
+ const graphQLEndpointUrl = `${graphQLEndpoint.protocol}//${graphQLEndpoint.hostname}`;
26
+ // Sitecore Edge Context ID - will only be present for production
27
+ const sitecoreEdgeContextId = graphQLEndpoint.searchParams.get('sitecoreContextId');
28
+ // Browser request path to the proxy. Includes only the pathname.
29
+ const pathname = graphQLEndpoint.pathname;
30
+ // Target URL for the proxy. Can't include the query string.
31
+ const target = `${graphQLEndpointUrl}${pathname}`;
32
+
33
+ return {
34
+ target,
35
+ path: pathname,
36
+ graphQLEndpointUrl,
37
+ sitecoreEdgeContextId,
38
+ };
39
+ } catch (error) {
40
+ throw new Error(
41
+ `ERROR: The serverBundle should export a getClientFactoryConfig function with valid GraphQL endpoint URL returned, current value is ${clientFactoryConfig.endpoint}. ` +
42
+ 'Please check your server bundle.'
43
+ );
44
+ }
45
+ })();
46
+
47
+ const { clientFactory } = serverBundle;
48
+
49
+ export const config: Config = {
50
+ /**
51
+ * The require'd server.bundle.js file from your pre-built SPA app.
52
+ */
53
+ serverBundle,
54
+ /**
55
+ * Port which will be used when start the proxy
56
+ */
57
+ port: process.env.PROXY_PORT || 3000,
58
+ };
59
+
60
+ export const personalizeConfig: PersonalizeConfig = {
61
+ // Configuration for your Sitecore Experience Edge endpoint
62
+ edgeConfig: {
63
+ clientFactory,
64
+ timeout:
65
+ (process.env.PERSONALIZE_MIDDLEWARE_EDGE_TIMEOUT &&
66
+ parseInt(process.env.PERSONALIZE_MIDDLEWARE_EDGE_TIMEOUT)) ||
67
+ 400,
68
+ },
69
+ // Configuration for your Sitecore CDP endpoint
70
+ // Edge URL and ID can be taken from proxy env, or the base SPA app
71
+ cdpConfig: {
72
+ sitecoreEdgeUrl: graphQLEndpoint.graphQLEndpointUrl,
73
+ sitecoreEdgeContextId: graphQLEndpoint.sitecoreEdgeContextId || '',
74
+ timeout:
75
+ (process.env.PERSONALIZE_MIDDLEWARE_CDP_TIMEOUT &&
76
+ parseInt(process.env.PERSONALIZE_MIDDLEWARE_CDP_TIMEOUT)) ||
77
+ 400,
78
+ },
79
+ // Optional Sitecore Personalize scope identifier.
80
+ scope: process.env.PERSONALIZE_SCOPE,
81
+ // This function determines if the personalization should be turned off.
82
+ // IMPORTANT: You should implement based on your cookie consent management solution of choice.
83
+ // You may wish to keep it disabled while in development mode.
84
+ // Personalization will also be disabled when edge context id is missing
85
+ disabled: () => process.env.NODE_ENV === 'development' || !graphQLEndpoint.sitecoreEdgeContextId,
86
+ // This function determines if a route should be excluded from personalization.
87
+ excludeRoute: () => false,
88
+ sitecoreSiteName: serverBundle.sitecoreSiteName || '',
89
+ // defaultLanguage will be used as fallback for personalization, if language cannot be read from layout service data
90
+ defaultLanguage: serverBundle.defaultLanguage,
91
+ };
@@ -0,0 +1,199 @@
1
+ import 'dotenv/config';
2
+ import express, { Response } from 'express';
3
+ import compression from 'compression';
4
+ import { createProxyMiddleware, fixRequestBody } from 'http-proxy-middleware';
5
+ import { debug } from '@sitecore-jss/sitecore-jss';
6
+ import { editingRouter, healthCheck } from '@sitecore-jss/sitecore-jss-proxy';
7
+ import { config, graphQLEndpoint } from './config';
8
+ import { personalizeHelper, personalizePlugin } from './personalize';
9
+
10
+ const server = express();
11
+
12
+ const {
13
+ renderView,
14
+ parseRouteUrl,
15
+ dictionaryServiceFactory,
16
+ layoutServiceFactory,
17
+ } = config.serverBundle;
18
+
19
+ /**
20
+ * Required server bundle properties
21
+ */
22
+ const requiredProperties = [
23
+ 'renderView',
24
+ 'parseRouteUrl',
25
+ 'clientFactory',
26
+ 'getClientFactoryConfig',
27
+ 'defaultLanguage',
28
+ 'layoutServiceFactory',
29
+ 'dictionaryServiceFactory',
30
+ 'components',
31
+ 'metadata',
32
+ ];
33
+
34
+ const missingProperties = requiredProperties.filter((property) => !config.serverBundle[property]);
35
+
36
+ if (missingProperties.length > 0) {
37
+ throw new Error(
38
+ `ERROR: The serverBundle should export the following properties: ${missingProperties.join(
39
+ ', '
40
+ )}. Please check your server bundle.`
41
+ );
42
+ }
43
+
44
+ const layoutService = layoutServiceFactory.create();
45
+
46
+ const dictionaryService = dictionaryServiceFactory.create();
47
+
48
+ /**
49
+ * Parse requested url in order to detect current route and language
50
+ * @param {string} reqRoute requested route
51
+ */
52
+ const getRouteParams = (reqRoute: string) => {
53
+ const routeParams = parseRouteUrl(reqRoute);
54
+ let lang;
55
+ let route;
56
+
57
+ if (routeParams) {
58
+ route = routeParams.sitecoreRoute || '/';
59
+
60
+ if (!route.startsWith('/')) {
61
+ route = `/${route}`;
62
+ }
63
+
64
+ lang = routeParams.lang || '';
65
+ }
66
+
67
+ return { route, lang };
68
+ };
69
+
70
+ /**
71
+ * Handle unexpected error
72
+ * @param {Response} res server response
73
+ * @param {Error} err error
74
+ */
75
+ const handleError = (res: Response, err: unknown) => {
76
+ debug.proxy('response error %o', err);
77
+
78
+ res.status(500).send('Internal Server Error');
79
+ };
80
+
81
+ // enable gzip compression for appropriate file types
82
+ server.use(compression());
83
+ // enable access to req.body
84
+ server.use(graphQLEndpoint.path, express.json());
85
+
86
+ // turn off x-powered-by http header
87
+ server.settings['x-powered-by'] = false;
88
+
89
+ // Serve static app assets from local /dist folder
90
+ server.use(
91
+ '/dist',
92
+ express.static('dist', {
93
+ fallthrough: false, // force 404 for unknown assets under /dist
94
+ })
95
+ );
96
+
97
+ /**
98
+ * Proxy browser GraphQL requests to the Sitecore GraphQL endpoint
99
+ */
100
+ server.use(
101
+ graphQLEndpoint.path,
102
+ createProxyMiddleware({
103
+ target: graphQLEndpoint.target,
104
+ changeOrigin: true,
105
+ selfHandleResponse: true,
106
+ on: {
107
+ proxyReq: fixRequestBody,
108
+ },
109
+ // for client-side routing, personalization is performed by modifying layout service response
110
+ plugins: [personalizePlugin],
111
+ })
112
+ );
113
+
114
+ /**
115
+ * The health check endpoint
116
+ */
117
+ server.use(healthCheck());
118
+
119
+ /**
120
+ * Proxy editing requests through the editing router
121
+ */
122
+ server.use(
123
+ '/api/editing',
124
+ editingRouter({
125
+ config: {
126
+ components: config.serverBundle.components,
127
+ metadata: config.serverBundle.metadata,
128
+ },
129
+ render: {
130
+ clientFactory: config.serverBundle.clientFactory,
131
+ renderView,
132
+ },
133
+ })
134
+ );
135
+
136
+ server.use(async (req, res) => {
137
+ debug.proxy(`performing SSR for ${req.originalUrl}`);
138
+
139
+ try {
140
+ const { route, lang } = getRouteParams(req.originalUrl);
141
+
142
+ if (!route) {
143
+ debug.proxy('no route detected, returning 404');
144
+
145
+ res.sendStatus(404);
146
+
147
+ return;
148
+ }
149
+
150
+ // Language is required. In case it's not specified in the requested URL, fallback to the default language from the app configuration.
151
+ let layoutData = await layoutService.fetchLayoutData(
152
+ route,
153
+ lang || config.serverBundle.defaultLanguage
154
+ );
155
+ // for SSR loading routing, personalization is performed by modifying layoutData directly
156
+ const personalizedLayoutData = await personalizeHelper.personalizeLayoutData(
157
+ req,
158
+ res,
159
+ layoutData
160
+ );
161
+ layoutData = personalizedLayoutData;
162
+ const viewBag = { dictionary: {} };
163
+
164
+ viewBag.dictionary = await dictionaryService.fetchDictionaryData(
165
+ layoutData.sitecore.context.language || config.serverBundle.defaultLanguage
166
+ );
167
+
168
+ renderView(
169
+ (err, result) => {
170
+ if (err) {
171
+ handleError(res, err);
172
+ return;
173
+ }
174
+
175
+ if (!result) {
176
+ debug.proxy('no result returned from renderView, returning 204');
177
+
178
+ res.status(204).send();
179
+ return;
180
+ }
181
+
182
+ const statusCode = layoutData.sitecore.route ? 200 : 404;
183
+
184
+ debug.proxy('sending response with status %s', statusCode);
185
+
186
+ res.status(statusCode).send(result.html);
187
+ },
188
+ route,
189
+ layoutData,
190
+ viewBag
191
+ );
192
+ } catch (err) {
193
+ handleError(res, err);
194
+ }
195
+ });
196
+
197
+ server.listen(config.port, () => {
198
+ console.log(`server listening on port ${config.port}!`);
199
+ });
@@ -0,0 +1,34 @@
1
+ import { GRAPHQL_LAYOUT_QUERY_NAME, PersonalizeHelper } from '@sitecore-jss/sitecore-jss-proxy';
2
+ import { personalizeConfig } from './config';
3
+ import { responseInterceptor } from 'http-proxy-middleware';
4
+ import { Plugin } from 'http-proxy-middleware/dist/types';
5
+ import { IncomingMessageWithBody } from './types';
6
+
7
+ export const personalizeHelper = new PersonalizeHelper(personalizeConfig);
8
+
9
+ // personalize plugin to modify intercepted Layout Service request data
10
+ export const personalizePlugin: Plugin = (proxyServer) => {
11
+ proxyServer.on(
12
+ 'proxyRes',
13
+ responseInterceptor(async (responseBuffer, _, req, res) => {
14
+ let responseText = responseBuffer.toString('utf8');
15
+ const payload = JSON.stringify((req as IncomingMessageWithBody).body);
16
+
17
+ // only apply personalization onto JSS layout service results
18
+ if (payload.includes(GRAPHQL_LAYOUT_QUERY_NAME)) {
19
+ let layoutDataRaw = JSON.parse(responseText);
20
+ if (!layoutDataRaw?.data?.layout?.item?.rendered?.sitecore) {
21
+ return responseText;
22
+ }
23
+ const personalizedLayout = await personalizeHelper.personalizeLayoutData(
24
+ req as IncomingMessageWithBody,
25
+ res,
26
+ layoutDataRaw?.data?.layout?.item?.rendered
27
+ );
28
+ layoutDataRaw.data.layout.item.rendered = personalizedLayout;
29
+ responseText = JSON.stringify(layoutDataRaw);
30
+ }
31
+ return responseText;
32
+ })
33
+ );
34
+ };
@@ -0,0 +1,37 @@
1
+ /* eslint-disable no-unused-vars */
2
+ import {
3
+ GraphQLRequestClientFactory,
4
+ GraphQLRequestClientFactoryConfig,
5
+ } from '@sitecore-jss/sitecore-jss';
6
+ import { DictionaryService } from '@sitecore-jss/sitecore-jss/i18n';
7
+ import { Metadata } from '@sitecore-jss/sitecore-jss/utils';
8
+ import { LayoutService } from '@sitecore-jss/sitecore-jss/layout';
9
+ import { AppRenderer, RouteUrlParser } from '@sitecore-jss/sitecore-jss-proxy';
10
+ import { IncomingMessage } from 'http';
11
+
12
+ export interface ServerBundle {
13
+ [key: string]: unknown;
14
+ renderView: AppRenderer;
15
+ parseRouteUrl: RouteUrlParser;
16
+ clientFactory: GraphQLRequestClientFactory;
17
+ getClientFactoryConfig: () => GraphQLRequestClientFactoryConfig;
18
+ defaultLanguage: string;
19
+ sitecoreSiteName: string;
20
+ layoutServiceFactory: { create: () => LayoutService };
21
+ dictionaryServiceFactory: { create: () => DictionaryService };
22
+ components: string[] | Map<string, unknown>;
23
+ metadata: Metadata;
24
+ }
25
+
26
+ export interface Config {
27
+ [key: string]: unknown;
28
+ port: string | number;
29
+ serverBundle: ServerBundle;
30
+ }
31
+
32
+ /**
33
+ * IncomingMessage type modified with exporess.json() call to include request body
34
+ */
35
+ export type IncomingMessageWithBody = IncomingMessage & {
36
+ body: ReadableStream<Uint8Array> | null;
37
+ };
@@ -0,0 +1,22 @@
1
+ {
2
+ "compilerOptions": {
3
+ "newLine": "LF",
4
+ "emitDecoratorMetadata": true,
5
+ "experimentalDecorators": true,
6
+ "noFallthroughCasesInSwitch": true,
7
+ "rootDir": ".",
8
+ "esModuleInterop": true,
9
+ "forceConsistentCasingInFileNames": true,
10
+ "strict": true,
11
+ "noImplicitAny": true,
12
+ "noUnusedLocals": true,
13
+ "noUnusedParameters": true,
14
+ "noImplicitReturns": true,
15
+ "strictFunctionTypes": false,
16
+ "downlevelIteration": true,
17
+ "moduleResolution": "node",
18
+ "isolatedModules": true,
19
+ "allowSyntheticDefaultImports": true
20
+ },
21
+ "exclude": ["node_modules", "dist"]
22
+ }
@@ -1,9 +1,9 @@
1
- {
2
- "endOfLine": "crlf",
3
- "semi": true,
4
- "singleQuote": true,
5
- "tabWidth": 2,
6
- "useTabs": false,
7
- "trailingComma": "es5",
8
- "printWidth": 100
9
- }
1
+ {
2
+ "endOfLine": "crlf",
3
+ "semi": true,
4
+ "singleQuote": true,
5
+ "tabWidth": 2,
6
+ "useTabs": false,
7
+ "trailingComma": "es5",
8
+ "printWidth": 100
9
+ }