create-sitecore-jss 22.2.0-canary.83 → 22.3.0-canary.1

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 (369) hide show
  1. package/dist/bin.js +35 -19
  2. package/dist/common/index.js +5 -3
  3. package/dist/common/processes/install.js +9 -2
  4. package/dist/common/processes/next.js +6 -3
  5. package/dist/common/processes/transform.js +18 -13
  6. package/dist/common/prompts/base.js +0 -25
  7. package/dist/common/prompts/proxy.js +35 -0
  8. package/dist/common/prompts/sxp.js +34 -0
  9. package/dist/common/utils/helpers.js +29 -19
  10. package/dist/init-runner.js +16 -11
  11. package/dist/initializers/angular/index.js +13 -0
  12. package/dist/initializers/angular/prompts.js +22 -1
  13. package/dist/initializers/angular-sxp/index.js +62 -0
  14. package/dist/initializers/angular-xmcloud/index.js +80 -0
  15. package/dist/initializers/nextjs/index.js +2 -2
  16. package/dist/initializers/nextjs/prompts.js +2 -0
  17. package/dist/initializers/nextjs/remove-dev-dependencies.js +2 -2
  18. package/dist/initializers/nextjs-multisite/index.js +1 -1
  19. package/dist/initializers/nextjs-styleguide/index.js +1 -1
  20. package/dist/initializers/nextjs-styleguide-tracking/index.js +1 -1
  21. package/dist/initializers/nextjs-sxa/index.js +1 -1
  22. package/dist/initializers/nextjs-xmcloud/index.js +1 -1
  23. package/dist/initializers/node-xmcloud-proxy/index.js +33 -0
  24. package/dist/initializers/react/index.js +3 -3
  25. package/dist/initializers/react/prompts.js +1 -1
  26. package/dist/initializers/react-native/prompts.js +1 -0
  27. package/dist/initializers/vue/prompts.js +1 -1
  28. package/dist/templates/angular/.env +4 -3
  29. package/dist/templates/angular/.eslintrc +1 -0
  30. package/dist/templates/angular/README.md +5 -45
  31. package/dist/templates/angular/angular.json +1 -6
  32. package/dist/templates/angular/gitignore +5 -0
  33. package/dist/templates/angular/package.json +11 -23
  34. package/dist/templates/angular/proxy.conf.js +5 -23
  35. package/dist/templates/angular/scripts/bootstrap.ts +5 -24
  36. package/dist/templates/angular/scripts/config/index.ts +28 -0
  37. package/dist/templates/angular/scripts/config/plugins/computed.ts +21 -0
  38. package/dist/templates/angular/scripts/config/plugins/fallback.ts +22 -0
  39. package/dist/templates/angular/scripts/config/plugins/package-json.ts +22 -0
  40. package/dist/templates/angular/scripts/config/plugins/scjssconfig.ts +29 -0
  41. package/dist/templates/angular/scripts/generate-component-factory/index.ts +45 -0
  42. package/dist/templates/angular/scripts/generate-component-factory/plugins/component-factory.ts +147 -0
  43. package/dist/templates/angular/scripts/generate-component-factory/plugins/components.ts +19 -0
  44. package/dist/templates/angular/scripts/generate-component-factory/plugins/packages.ts +29 -0
  45. package/dist/templates/angular/scripts/generate-component-factory/template.ts +46 -0
  46. package/dist/templates/angular/scripts/generate-config.ts +71 -72
  47. package/dist/templates/angular/scripts/generate-plugins.ts +33 -0
  48. package/dist/templates/angular/scripts/temp/gitignore +2 -0
  49. package/dist/templates/angular/scripts/update-graphql-fragment-data.ts +21 -28
  50. package/dist/templates/angular/server.bundle.ts +3 -5
  51. package/dist/templates/angular/server.exports.ts +13 -0
  52. package/dist/templates/angular/src/app/JssState.ts +2 -9
  53. package/dist/templates/angular/src/app/app.module.ts +5 -6
  54. package/dist/templates/angular/src/app/app.server.module.ts +9 -6
  55. package/dist/templates/angular/src/app/components/app-components.shared.module.ts +4 -19
  56. package/dist/templates/angular/src/app/components/gitignore +1 -1
  57. package/dist/templates/angular/src/app/i18n/jss-translation-client-loader.service.ts +15 -7
  58. package/dist/templates/angular/src/app/i18n/jss-translation-server-loader.service.ts +14 -2
  59. package/dist/templates/angular/src/app/jss-context.server-side.service.ts +4 -4
  60. package/dist/templates/angular/src/app/jss-context.service.ts +14 -11
  61. package/dist/templates/angular/src/app/jss-graphql.service.ts +7 -7
  62. package/dist/templates/angular/src/app/layout/jss-layout.service.ts +2 -2
  63. package/dist/templates/angular/src/app/lib/config.ts +16 -0
  64. package/dist/templates/angular/src/app/lib/dictionary-service-factory.ts +24 -13
  65. package/dist/templates/angular/src/app/lib/graphql-client-factory/config.ts +21 -0
  66. package/dist/templates/angular/src/app/lib/graphql-client-factory/index.ts +16 -0
  67. package/dist/templates/angular/src/app/lib/layout-service-factory.ts +20 -12
  68. package/dist/templates/angular/src/app/routing/layout/layout.component.html +1 -1
  69. package/dist/templates/angular/src/app/routing/layout/layout.component.ts +11 -11
  70. package/dist/templates/angular/src/app/routing/navigation/navigation.component.html +5 -6
  71. package/dist/templates/angular/src/app/routing/navigation/navigation.component.ts +1 -2
  72. package/dist/templates/angular/src/app/routing/routing.module.ts +14 -21
  73. package/dist/templates/angular/src/app/routing/scripts/scripts.component.html +1 -0
  74. package/dist/templates/angular/src/app/routing/scripts/scripts.component.ts +7 -0
  75. package/dist/templates/angular/src/app/routing/scripts/scripts.module.ts +8 -0
  76. package/dist/templates/angular/src/environments/gitignore +2 -1
  77. package/dist/templates/angular/src/graphql-fragment-types.ts +0 -95
  78. package/dist/templates/angular/tsconfig.json +7 -2
  79. package/dist/templates/angular-sxp/.env +2 -0
  80. package/dist/templates/angular-sxp/package.json +12 -0
  81. package/dist/templates/angular-sxp/proxy.conf.js +43 -0
  82. package/dist/templates/angular-sxp/scripts/config/plugins/disconnected.ts +29 -0
  83. package/dist/templates/angular-sxp/src/app/components/app-components.shared.module.ts +35 -0
  84. package/dist/templates/{angular → angular-sxp}/src/app/components/graph-ql-layout/graph-ql-layout.component.ts +1 -1
  85. package/dist/templates/{angular → angular-sxp}/src/app/jss-data-fetcher.service.ts +3 -1
  86. package/dist/templates/angular-sxp/src/app/routing/navigation/navigation.component.html +23 -0
  87. package/dist/templates/angular-sxp/src/app/routing/scripts/scripts.component.html +3 -0
  88. package/dist/templates/angular-sxp/src/app/routing/scripts/scripts.module.ts +9 -0
  89. package/dist/templates/{angular/src/app/routing → angular-sxp/src/app/routing/scripts}/visitor-identification/visitor-identification.component.ts +9 -3
  90. package/dist/templates/angular-sxp/src/graphql-fragment-types.ts +219 -0
  91. package/dist/templates/angular-xmcloud/.env +21 -0
  92. package/dist/templates/angular-xmcloud/angular.json +33 -0
  93. package/dist/templates/angular-xmcloud/package.json +17 -0
  94. package/dist/templates/angular-xmcloud/scripts/bootstrap.ts +28 -0
  95. package/dist/templates/angular-xmcloud/scripts/config/plugins/xmcloud.ts +39 -0
  96. package/dist/templates/angular-xmcloud/scripts/generate-component-factory/plugins/packages.ts +34 -0
  97. package/dist/templates/angular-xmcloud/scripts/generate-component-factory/template.ts +57 -0
  98. package/dist/templates/angular-xmcloud/scripts/generate-metadata.ts +25 -0
  99. package/dist/templates/angular-xmcloud/scripts/proxy-build.ts +15 -0
  100. package/dist/templates/angular-xmcloud/server.exports.ts +24 -0
  101. package/dist/templates/angular-xmcloud/src/app/components/app-components.shared.module.ts +21 -0
  102. package/dist/templates/angular-xmcloud/src/app/components/column-splitter/column-splitter.component.html +5 -0
  103. package/dist/templates/angular-xmcloud/src/app/components/column-splitter/column-splitter.component.ts +40 -0
  104. package/dist/templates/angular-xmcloud/src/app/components/container/container.component.html +14 -0
  105. package/dist/templates/angular-xmcloud/src/app/components/container/container.component.ts +30 -0
  106. package/dist/templates/angular-xmcloud/src/app/components/image/image.component.html +36 -0
  107. package/dist/templates/angular-xmcloud/src/app/components/image/image.component.ts +67 -0
  108. package/dist/templates/angular-xmcloud/src/app/components/link-list/link-list.component.html +15 -0
  109. package/dist/templates/angular-xmcloud/src/app/components/link-list/link-list.component.ts +41 -0
  110. package/dist/templates/angular-xmcloud/src/app/components/navigation/navigation-item.component.html +23 -0
  111. package/dist/templates/angular-xmcloud/src/app/components/navigation/navigation-item.component.ts +65 -0
  112. package/dist/templates/angular-xmcloud/src/app/components/navigation/navigation.component.html +21 -0
  113. package/dist/templates/angular-xmcloud/src/app/components/navigation/navigation.component.ts +49 -0
  114. package/dist/templates/angular-xmcloud/src/app/components/page-content/page-content.component.html +5 -0
  115. package/dist/templates/angular-xmcloud/src/app/components/page-content/page-content.component.ts +39 -0
  116. package/dist/templates/angular-xmcloud/src/app/components/partial-design-dynamic-placeholder/partial-design-dynamic-placeholder.component.html +1 -0
  117. package/dist/templates/angular-xmcloud/src/app/components/partial-design-dynamic-placeholder/partial-design-dynamic-placeholder.component.ts +15 -0
  118. package/dist/templates/angular-xmcloud/src/app/components/promo/promo.component.html +21 -0
  119. package/dist/templates/angular-xmcloud/src/app/components/promo/promo.component.ts +13 -0
  120. package/dist/templates/angular-xmcloud/src/app/components/richtext/richtext.component.html +8 -0
  121. package/dist/templates/angular-xmcloud/src/app/components/richtext/richtext.component.ts +21 -0
  122. package/dist/templates/angular-xmcloud/src/app/components/row-splitter/row-splitter.component.html +11 -0
  123. package/dist/templates/angular-xmcloud/src/app/components/row-splitter/row-splitter.component.ts +35 -0
  124. package/dist/templates/angular-xmcloud/src/app/components/sxa.component.ts +15 -0
  125. package/dist/templates/angular-xmcloud/src/app/components/title/title.component.html +10 -0
  126. package/dist/templates/angular-xmcloud/src/app/components/title/title.component.ts +56 -0
  127. package/dist/templates/angular-xmcloud/src/app/jss-link.service.ts +55 -0
  128. package/dist/templates/angular-xmcloud/src/app/lib/config.ts +17 -0
  129. package/dist/templates/angular-xmcloud/src/app/lib/graphql-client-factory/config.ts +58 -0
  130. package/dist/templates/angular-xmcloud/src/app/routing/layout/layout.component.html +38 -0
  131. package/dist/templates/angular-xmcloud/src/app/routing/layout/layout.component.ts +104 -0
  132. package/dist/templates/angular-xmcloud/src/app/routing/scripts/cdp-page-view.component.ts +77 -0
  133. package/dist/templates/angular-xmcloud/src/app/routing/scripts/cloud-sdk-init.component.ts +48 -0
  134. package/dist/templates/angular-xmcloud/src/app/routing/scripts/scripts.component.html +5 -0
  135. package/dist/templates/angular-xmcloud/src/app/routing/scripts/scripts.module.ts +12 -0
  136. package/dist/templates/angular-xmcloud/src/assets/styles/basic/_component.scss +48 -0
  137. package/dist/templates/angular-xmcloud/src/assets/styles/basic/_container.scss +64 -0
  138. package/dist/templates/angular-xmcloud/src/assets/styles/basic/_fonts.scss +3 -0
  139. package/dist/templates/angular-xmcloud/src/assets/styles/basic/_footer.scss +31 -0
  140. package/dist/templates/angular-xmcloud/src/assets/styles/basic/_header.scss +51 -0
  141. package/dist/templates/angular-xmcloud/src/assets/styles/basic/_navigation.scss +150 -0
  142. package/dist/templates/angular-xmcloud/src/assets/styles/basic/_promo.scss +58 -0
  143. package/dist/templates/angular-xmcloud/src/assets/styles/basic/_rich-text.scss +11 -0
  144. package/dist/templates/angular-xmcloud/src/assets/styles/basic/_variables.scss +10 -0
  145. package/dist/templates/angular-xmcloud/src/assets/styles/basic/main.scss +8 -0
  146. package/dist/templates/angular-xmcloud/src/assets/styles/main.scss +14 -0
  147. package/dist/templates/angular-xmcloud/src/assets/styles/sass/_app.scss +103 -0
  148. package/dist/templates/angular-xmcloud/src/assets/styles/sass/abstracts/_functions.scss +8 -0
  149. package/dist/templates/angular-xmcloud/src/assets/styles/sass/abstracts/_mixins.scss +121 -0
  150. package/dist/templates/angular-xmcloud/src/assets/styles/sass/abstracts/_vars.scss +3 -0
  151. package/dist/templates/angular-xmcloud/src/assets/styles/sass/abstracts/vars/_colors.scss +283 -0
  152. package/dist/templates/angular-xmcloud/src/assets/styles/sass/abstracts/vars/_fontSizes.scss +16 -0
  153. package/dist/templates/angular-xmcloud/src/assets/styles/sass/abstracts/vars/_margins.scss +11 -0
  154. package/dist/templates/angular-xmcloud/src/assets/styles/sass/base/fonts/_fonts.scss +1 -0
  155. package/dist/templates/angular-xmcloud/src/assets/styles/sass/base/fonts/index.scss +1 -0
  156. package/dist/templates/angular-xmcloud/src/assets/styles/sass/base/index.scss +3 -0
  157. package/dist/templates/angular-xmcloud/src/assets/styles/sass/base/links/_link-button.scss +26 -0
  158. package/dist/templates/angular-xmcloud/src/assets/styles/sass/base/links/index.scss +1 -0
  159. package/dist/templates/angular-xmcloud/src/assets/styles/sass/base/reset/_inputs.scss +58 -0
  160. package/dist/templates/angular-xmcloud/src/assets/styles/sass/base/reset/_links.scss +14 -0
  161. package/dist/templates/angular-xmcloud/src/assets/styles/sass/base/reset/_ui-datepicker.scss +7 -0
  162. package/dist/templates/angular-xmcloud/src/assets/styles/sass/base/richtext/_richtext-files-icons.scss +86 -0
  163. package/dist/templates/angular-xmcloud/src/assets/styles/sass/base/richtext/_richtext.scss +101 -0
  164. package/dist/templates/angular-xmcloud/src/assets/styles/sass/base/richtext/index.scss +2 -0
  165. package/dist/templates/angular-xmcloud/src/assets/styles/sass/base/typehead/_typehead.scss +95 -0
  166. package/dist/templates/angular-xmcloud/src/assets/styles/sass/base/typehead/index.scss +1 -0
  167. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/_component-column-splitter.scss +14 -0
  168. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/_component-container.scss +27 -0
  169. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/_component-image.scss +18 -0
  170. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/_component-navigation.scss +51 -0
  171. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/_component-promo.scss +42 -0
  172. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/_component-richtext-content.scss +19 -0
  173. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/common/_alignment.scss +26 -0
  174. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/common/_boxed.scss +16 -0
  175. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/common/_clearfix.scss +11 -0
  176. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/common/_highlighted.scss +63 -0
  177. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/common/_link-button.scss +16 -0
  178. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/common/_promoted-box.scss +3 -0
  179. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/common/index.scss +6 -0
  180. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/container/_bordered.scss +24 -0
  181. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/container/_title-row-box.scss +66 -0
  182. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/container/index.scss +1 -0
  183. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/image/_image-default-size.scss +6 -0
  184. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/image/index.scss +1 -0
  185. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/image-alignment/_image-left.scss +3 -0
  186. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/image-alignment/_image-right.scss +3 -0
  187. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/index.scss +17 -0
  188. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/layout/_acaindent.scss +5 -0
  189. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/layout/_background.scss +27 -0
  190. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/layout/index.scss +1 -0
  191. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/link-list/_component-link-list.scss +45 -0
  192. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/link-list/_list-vertical.scss +20 -0
  193. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/link-list/index.scss +2 -0
  194. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/navigation/_navigation-fat.scss +58 -0
  195. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/navigation/_navigation-main-horizontal-vertical.scss +176 -0
  196. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/navigation/_navigation-mobile.scss +85 -0
  197. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/navigation/_navigation-sidebar.scss +29 -0
  198. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/navigation/_sitemap-navigation.scss +20 -0
  199. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/navigation/index.scss +5 -0
  200. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/promo/_absolute-bottom-link.scss +8 -0
  201. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/promo/_promo-hero.scss +40 -0
  202. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/promo/_promo-shadow.scss +42 -0
  203. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/promo/index.scss +3 -0
  204. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/rich-text/_rich-text-lists.scss +63 -0
  205. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/rich-text/index.scss +1 -0
  206. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/spacing/_background-colors.scss +14 -0
  207. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/spacing/_indent.scss +13 -0
  208. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/spacing/index.scss +2 -0
  209. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/title/_component-title.scss +30 -0
  210. package/dist/templates/angular-xmcloud/src/assets/styles/sass/components/title/index.scss +1 -0
  211. package/dist/templates/angular-xmcloud/src/assets/styles/sass/main.scss +4 -0
  212. package/dist/templates/angular-xmcloud/src/assets/styles/sass/variants/index.scss +6 -0
  213. package/dist/templates/angular-xmcloud/src/assets/styles/sass/variants/link-list/index.scss +0 -0
  214. package/dist/templates/angular-xmcloud/src/assets/styles/sass/variants/navigation/index.scss +0 -0
  215. package/dist/templates/angular-xmcloud/src/assets/styles/sass/variants/page-content/index.scss +0 -0
  216. package/dist/templates/angular-xmcloud/src/assets/styles/sass/variants/promo/index.scss +0 -0
  217. package/dist/templates/angular-xmcloud/src/assets/styles/sass/variants/rich-text/index.scss +0 -0
  218. package/dist/templates/angular-xmcloud/src/assets/styles/sass/variants/title/index.scss +0 -0
  219. package/dist/templates/nextjs/package.json +4 -4
  220. package/dist/templates/nextjs/scripts/config/plugins/fallback.ts +0 -1
  221. package/dist/templates/nextjs/scripts/generate-config.ts +8 -1
  222. package/dist/templates/nextjs-styleguide/package.json +1 -1
  223. package/dist/templates/nextjs-styleguide/scripts/config/plugins/disconnected.ts +1 -0
  224. package/dist/templates/nextjs-sxa/src/assets/sass/components/common/_alignment.scss +34 -7
  225. package/dist/templates/node-headless-ssr-experience-edge/gitignore +19 -0
  226. package/dist/templates/node-headless-ssr-experience-edge/package.json +2 -2
  227. package/dist/templates/node-headless-ssr-proxy/gitignore +19 -0
  228. package/dist/templates/node-headless-ssr-proxy/package.json +3 -3
  229. package/dist/templates/node-headless-ssr-proxy/src/config.ts +3 -3
  230. package/dist/templates/node-headless-ssr-proxy/src/httpAgents.ts +2 -2
  231. package/dist/templates/node-headless-ssr-proxy/src/index.ts +9 -2
  232. package/dist/templates/node-xmcloud-proxy/.env +14 -0
  233. package/dist/templates/node-xmcloud-proxy/README.md +36 -0
  234. package/dist/templates/node-xmcloud-proxy/gitignore +33 -0
  235. package/dist/templates/node-xmcloud-proxy/package.json +26 -0
  236. package/dist/templates/node-xmcloud-proxy/src/config.ts +25 -0
  237. package/dist/templates/node-xmcloud-proxy/src/index.ts +210 -0
  238. package/dist/templates/node-xmcloud-proxy/src/types.ts +27 -0
  239. package/dist/templates/node-xmcloud-proxy/tsconfig.json +22 -0
  240. package/dist/templates/react/package.json +5 -5
  241. package/dist/templates/react/scripts/generate-config.js +10 -3
  242. package/dist/templates/react-native/package.json +4 -4
  243. package/dist/templates/vue/package.json +4 -4
  244. package/dist/templates/vue/scripts/generate-config.js +5 -0
  245. package/package.json +2 -2
  246. package/dist/templates/angular/scripts/generate-component-factory.ts +0 -166
  247. package/dist/templates/angular/src/app/lib/client-factory.ts +0 -28
  248. /package/dist/templates/{angular → angular-sxp}/data/component-content/Styleguide/ContentReuse/LoremIpsumContentBlock/en.yml +0 -0
  249. /package/dist/templates/{angular → angular-sxp}/data/component-content/gitignore +0 -0
  250. /package/dist/templates/{angular → angular-sxp}/data/content/Styleguide/ContentListField/Item1/en.yml +0 -0
  251. /package/dist/templates/{angular → angular-sxp}/data/content/Styleguide/ContentListField/Item2/en.yml +0 -0
  252. /package/dist/templates/{angular → angular-sxp}/data/content/Styleguide/EditFrameDemo/Item1/en.yml +0 -0
  253. /package/dist/templates/{angular → angular-sxp}/data/content/Styleguide/EditFrameDemo/Item2/en.yml +0 -0
  254. /package/dist/templates/{angular → angular-sxp}/data/content/Styleguide/ItemLinkField/Item1/en.yml +0 -0
  255. /package/dist/templates/{angular → angular-sxp}/data/content/Styleguide/ItemLinkField/Item2/en.yml +0 -0
  256. /package/dist/templates/{angular → angular-sxp}/data/content/gitignore +0 -0
  257. /package/dist/templates/{angular → angular-sxp}/data/dictionary/en.yml +0 -0
  258. /package/dist/templates/{angular → angular-sxp}/data/dictionary/{{language}}.yml +0 -0
  259. /package/dist/templates/{angular → angular-sxp}/data/media/files/jss.pdf +0 -0
  260. /package/dist/templates/{angular → angular-sxp}/data/media/img/jss_logo.png +0 -0
  261. /package/dist/templates/{angular → angular-sxp}/data/media/img/sc_logo.png +0 -0
  262. /package/dist/templates/{angular → angular-sxp}/data/routes/en.yml +0 -0
  263. /package/dist/templates/{angular → angular-sxp}/data/routes/graphql/en.yml +0 -0
  264. /package/dist/templates/{angular → angular-sxp}/data/routes/graphql/sample-1/en.yml +0 -0
  265. /package/dist/templates/{angular → angular-sxp}/data/routes/graphql/sample-2/en.yml +0 -0
  266. /package/dist/templates/{angular → angular-sxp}/data/routes/styleguide/custom-route-type/en.yml +0 -0
  267. /package/dist/templates/{angular → angular-sxp}/data/routes/styleguide/en.yml +0 -0
  268. /package/dist/templates/{angular → angular-sxp}/data/routes/styleguide/{{language}}.yml +0 -0
  269. /package/dist/templates/{angular → angular-sxp}/data/routes/{{language}}.yml +0 -0
  270. /package/dist/templates/{angular → angular-sxp}/scripts/disconnected-mode-proxy.ts +0 -0
  271. /package/dist/templates/{angular → angular-sxp}/scripts/lint-yml.ts +0 -0
  272. /package/dist/templates/{angular → angular-sxp}/sitecore/config/{{appName}}.config +0 -0
  273. /package/dist/templates/{angular → angular-sxp}/sitecore/definitions/component-content.sitecore.ts +0 -0
  274. /package/dist/templates/{angular → angular-sxp}/sitecore/definitions/components/Styleguide-Layout-Reuse.sitecore.ts +0 -0
  275. /package/dist/templates/{angular → angular-sxp}/sitecore/definitions/components/Styleguide-Layout-Tabs-Tab.sitecore.ts +0 -0
  276. /package/dist/templates/{angular → angular-sxp}/sitecore/definitions/components/Styleguide-Layout-Tabs.sitecore.ts +0 -0
  277. /package/dist/templates/{angular → angular-sxp}/sitecore/definitions/components/Styleguide-Layout.sitecore.ts +0 -0
  278. /package/dist/templates/{angular → angular-sxp}/sitecore/definitions/components/Styleguide-Multilingual.sitecore.ts +0 -0
  279. /package/dist/templates/{angular → angular-sxp}/sitecore/definitions/components/Styleguide-Section.sitecore.ts +0 -0
  280. /package/dist/templates/{angular → angular-sxp}/sitecore/definitions/components/content-block.sitecore.ts +0 -0
  281. /package/dist/templates/{angular → angular-sxp}/sitecore/definitions/components/graph-ql-connected-demo.sitecore.ts +0 -0
  282. /package/dist/templates/{angular → angular-sxp}/sitecore/definitions/components/graph-ql-integrated-demo.sitecore.graphql +0 -0
  283. /package/dist/templates/{angular → angular-sxp}/sitecore/definitions/components/graph-ql-integrated-demo.sitecore.ts +0 -0
  284. /package/dist/templates/{angular → angular-sxp}/sitecore/definitions/components/graph-ql-layout.sitecore.ts +0 -0
  285. /package/dist/templates/{angular → angular-sxp}/sitecore/definitions/components/styleguide-angular-lazy-loading.sitecore.ts +0 -0
  286. /package/dist/templates/{angular → angular-sxp}/sitecore/definitions/components/styleguide-component-params.sitecore.ts +0 -0
  287. /package/dist/templates/{angular → angular-sxp}/sitecore/definitions/components/styleguide-custom-route-type.sitecore.ts +0 -0
  288. /package/dist/templates/{angular → angular-sxp}/sitecore/definitions/components/styleguide-edit-frame.sitecore.ts +0 -0
  289. /package/dist/templates/{angular → angular-sxp}/sitecore/definitions/components/styleguide-field-usage-checkbox.sitecore.ts +0 -0
  290. /package/dist/templates/{angular → angular-sxp}/sitecore/definitions/components/styleguide-field-usage-content-list.sitecore.ts +0 -0
  291. /package/dist/templates/{angular → angular-sxp}/sitecore/definitions/components/styleguide-field-usage-custom.sitecore.ts +0 -0
  292. /package/dist/templates/{angular → angular-sxp}/sitecore/definitions/components/styleguide-field-usage-date.sitecore.ts +0 -0
  293. /package/dist/templates/{angular → angular-sxp}/sitecore/definitions/components/styleguide-field-usage-file.sitecore.ts +0 -0
  294. /package/dist/templates/{angular → angular-sxp}/sitecore/definitions/components/styleguide-field-usage-image.sitecore.ts +0 -0
  295. /package/dist/templates/{angular → angular-sxp}/sitecore/definitions/components/styleguide-field-usage-item-link.sitecore.ts +0 -0
  296. /package/dist/templates/{angular → angular-sxp}/sitecore/definitions/components/styleguide-field-usage-link.sitecore.ts +0 -0
  297. /package/dist/templates/{angular → angular-sxp}/sitecore/definitions/components/styleguide-field-usage-number.sitecore.ts +0 -0
  298. /package/dist/templates/{angular → angular-sxp}/sitecore/definitions/components/styleguide-field-usage-rich-text.sitecore.ts +0 -0
  299. /package/dist/templates/{angular → angular-sxp}/sitecore/definitions/components/styleguide-field-usage-text.sitecore.ts +0 -0
  300. /package/dist/templates/{angular → angular-sxp}/sitecore/definitions/components/styleguide-route-fields.sitecore.ts +0 -0
  301. /package/dist/templates/{angular → angular-sxp}/sitecore/definitions/components/styleguide-sitecore-context.sitecore.ts +0 -0
  302. /package/dist/templates/{angular → angular-sxp}/sitecore/definitions/components/styleguide-tracking.sitecore.ts +0 -0
  303. /package/dist/templates/{angular → angular-sxp}/sitecore/definitions/config.js +0 -0
  304. /package/dist/templates/{angular → angular-sxp}/sitecore/definitions/content.sitecore.ts +0 -0
  305. /package/dist/templates/{angular → angular-sxp}/sitecore/definitions/dictionary.sitecore.ts +0 -0
  306. /package/dist/templates/{angular → angular-sxp}/sitecore/definitions/placeholders.sitecore.ts +0 -0
  307. /package/dist/templates/{angular → angular-sxp}/sitecore/definitions/routes.sitecore.ts +0 -0
  308. /package/dist/templates/{angular → angular-sxp}/sitecore/definitions/templates/Styleguide-Explanatory-Component.sitecore.ts +0 -0
  309. /package/dist/templates/{angular → angular-sxp}/sitecore/definitions/templates/styleguide-content-list-template.sitecore.ts +0 -0
  310. /package/dist/templates/{angular → angular-sxp}/sitecore/definitions/templates/styleguide-edit-frame-list-item-template.sitecore.ts +0 -0
  311. /package/dist/templates/{angular → angular-sxp}/sitecore/definitions/templates/styleguide-item-link-template.sitecore.ts +0 -0
  312. /package/dist/templates/{angular → angular-sxp}/sitecore/gitignore +0 -0
  313. /package/dist/templates/{angular → angular-sxp}/sitecore/pipelines/example.patch.ts +0 -0
  314. /package/dist/templates/{angular → angular-sxp}/src/app/components/graph-ql-connected-demo/graph-ql-connected-demo.component.graphql +0 -0
  315. /package/dist/templates/{angular → angular-sxp}/src/app/components/graph-ql-connected-demo/graph-ql-connected-demo.component.html +0 -0
  316. /package/dist/templates/{angular → angular-sxp}/src/app/components/graph-ql-connected-demo/graph-ql-connected-demo.component.ts +0 -0
  317. /package/dist/templates/{angular → angular-sxp}/src/app/components/graph-ql-integrated-demo/graph-ql-integrated-demo.component.html +0 -0
  318. /package/dist/templates/{angular → angular-sxp}/src/app/components/graph-ql-integrated-demo/graph-ql-integrated-demo.component.ts +0 -0
  319. /package/dist/templates/{angular → angular-sxp}/src/app/components/graph-ql-layout/graph-ql-layout.component.html +0 -0
  320. /package/dist/templates/{angular → angular-sxp}/src/app/components/shared/styleguide-specimen/styleguide-specimen.component.ts +0 -0
  321. /package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-angular-lazy-loading/styleguide-angular-lazy-loading.component.html +0 -0
  322. /package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-angular-lazy-loading/styleguide-angular-lazy-loading.component.ts +0 -0
  323. /package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-angular-lazy-loading/styleguide-angular-lazy-loading.module.ts +0 -0
  324. /package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-component-params/styleguide-component-params.component.html +0 -0
  325. /package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-component-params/styleguide-component-params.component.ts +0 -0
  326. /package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-custom-route-type/styleguide-custom-route-type.component.html +0 -0
  327. /package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-custom-route-type/styleguide-custom-route-type.component.ts +0 -0
  328. /package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-edit-frame/styleguide-edit-frame.component.html +0 -0
  329. /package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-edit-frame/styleguide-edit-frame.component.ts +0 -0
  330. /package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-field-usage-checkbox/styleguide-field-usage-checkbox.component.html +0 -0
  331. /package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-field-usage-checkbox/styleguide-field-usage-checkbox.component.ts +0 -0
  332. /package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-field-usage-content-list/styleguide-field-usage-content-list.component.html +0 -0
  333. /package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-field-usage-content-list/styleguide-field-usage-content-list.component.ts +0 -0
  334. /package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-field-usage-custom/styleguide-field-usage-custom.component.html +0 -0
  335. /package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-field-usage-custom/styleguide-field-usage-custom.component.ts +0 -0
  336. /package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-field-usage-date/styleguide-field-usage-date.component.html +0 -0
  337. /package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-field-usage-date/styleguide-field-usage-date.component.ts +0 -0
  338. /package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-field-usage-file/styleguide-field-usage-file.component.html +0 -0
  339. /package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-field-usage-file/styleguide-field-usage-file.component.ts +0 -0
  340. /package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-field-usage-image/styleguide-field-usage-image.component.html +0 -0
  341. /package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-field-usage-image/styleguide-field-usage-image.component.ts +0 -0
  342. /package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-field-usage-item-link/styleguide-field-usage-item-link.component.html +0 -0
  343. /package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-field-usage-item-link/styleguide-field-usage-item-link.component.ts +0 -0
  344. /package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-field-usage-link/styleguide-field-usage-link.component.html +0 -0
  345. /package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-field-usage-link/styleguide-field-usage-link.component.ts +0 -0
  346. /package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-field-usage-number/styleguide-field-usage-number.component.html +0 -0
  347. /package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-field-usage-number/styleguide-field-usage-number.component.ts +0 -0
  348. /package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-field-usage-rich-text/styleguide-field-usage-rich-text.component.html +0 -0
  349. /package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-field-usage-rich-text/styleguide-field-usage-rich-text.component.ts +0 -0
  350. /package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-field-usage-text/styleguide-field-usage-text.component.html +0 -0
  351. /package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-field-usage-text/styleguide-field-usage-text.component.ts +0 -0
  352. /package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-layout/styleguide-layout.component.html +0 -0
  353. /package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-layout/styleguide-layout.component.ts +0 -0
  354. /package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-layout-reuse/styleguide-layout-reuse.component.html +0 -0
  355. /package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-layout-reuse/styleguide-layout-reuse.component.ts +0 -0
  356. /package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-layout-tabs/styleguide-layout-tabs.component.html +0 -0
  357. /package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-layout-tabs/styleguide-layout-tabs.component.ts +0 -0
  358. /package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-layout-tabs-tab/styleguide-layout-tabs-tab.component.html +0 -0
  359. /package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-layout-tabs-tab/styleguide-layout-tabs-tab.component.ts +0 -0
  360. /package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-multilingual/styleguide-multilingual.component.html +0 -0
  361. /package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-multilingual/styleguide-multilingual.component.ts +0 -0
  362. /package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-route-fields/styleguide-route-fields.component.html +0 -0
  363. /package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-route-fields/styleguide-route-fields.component.ts +0 -0
  364. /package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-section/styleguide-section.component.html +0 -0
  365. /package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-section/styleguide-section.component.ts +0 -0
  366. /package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-sitecore-context/styleguide-sitecore-context.component.html +0 -0
  367. /package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-sitecore-context/styleguide-sitecore-context.component.ts +0 -0
  368. /package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-tracking/styleguide-tracking.component.html +0 -0
  369. /package/dist/templates/{angular → angular-sxp}/src/app/components/styleguide-tracking/styleguide-tracking.component.ts +0 -0
@@ -0,0 +1,22 @@
1
+ import { JssConfig } from 'lib/config';
2
+ import { ConfigPlugin } from '..';
3
+ import packageConfig from 'package.json';
4
+
5
+ /**
6
+ * This plugin will set config props based on package.json.
7
+ */
8
+ class PackageJsonPlugin implements ConfigPlugin {
9
+ order = 1;
10
+
11
+ async exec(config: JssConfig) {
12
+ if (!packageConfig.config) return config;
13
+
14
+ return Object.assign({}, config, {
15
+ sitecoreSiteName: config.sitecoreSiteName || packageConfig.config.appName,
16
+ graphQLEndpointPath: config.graphQLEndpointPath || packageConfig.config.graphQLEndpointPath,
17
+ defaultLanguage: config.defaultLanguage || packageConfig.config.language,
18
+ });
19
+ }
20
+ }
21
+
22
+ export const packageJsonPlugin = new PackageJsonPlugin();
@@ -0,0 +1,29 @@
1
+ import { JssConfig } from 'lib/config';
2
+ import { ConfigPlugin } from '..';
3
+
4
+ /**
5
+ * This plugin will set config props based on scjssconfig.json.
6
+ * scjssconfig.json may not exist if you've never run `jss setup` (development)
7
+ * or are depending on environment variables instead (production).
8
+ */
9
+ class ScJssConfigPlugin implements ConfigPlugin {
10
+ order = 1;
11
+
12
+ async exec(config: JssConfig) {
13
+ let scJssConfig;
14
+ try {
15
+ scJssConfig = require('scjssconfig.json');
16
+ } catch (e) {
17
+ return config;
18
+ }
19
+
20
+ if (!scJssConfig) return config;
21
+
22
+ return Object.assign({}, config, {
23
+ sitecoreApiKey: config.sitecoreApiKey || scJssConfig.sitecore?.apiKey,
24
+ sitecoreApiHost: config.sitecoreApiHost || scJssConfig.sitecore?.layoutServiceHost,
25
+ });
26
+ }
27
+ }
28
+
29
+ export const scjssconfigPlugin = new ScJssConfigPlugin();
@@ -0,0 +1,45 @@
1
+ const plugins = require('scripts/temp/generate-component-factory-plugins');
2
+ import { PackageDefinition } from '@sitecore-jss/sitecore-jss-dev-tools';
3
+
4
+ export interface ComponentFactoryPluginConfig {
5
+ watch?: boolean;
6
+ packages: PackageDefinition[];
7
+ components: string[];
8
+ }
9
+
10
+ export interface ComponentFactoryPlugin {
11
+ /**
12
+ * Detect order when the plugin should be called, e.g. 0 - will be called first (can be a plugin which data is required for other plugins)
13
+ */
14
+ order: number;
15
+ /**
16
+ * A function which will be called during component factory generation
17
+ * @param {JssConfig} config Current (accumulated) config
18
+ */
19
+ exec(config: ComponentFactoryPluginConfig): ComponentFactoryPluginConfig;
20
+ }
21
+
22
+ /*
23
+ COMPONENT FACTORY GENERATION
24
+ Generates the /src/app/components/app-components.module.ts file which maps Angular components
25
+ to JSS components.
26
+
27
+ The component factory module defines a mapping between a string component name and a Angular component instance.
28
+ When the Sitecore Layout service returns a layout definition, it returns named components.
29
+ This mapping is used to construct the component hierarchy for the layout.
30
+
31
+ NOTE: this script can run in two modes. The default mode, the component factory file is written once.
32
+ But if `--watch` is a process argument, the component factory source folder will be watched,
33
+ and the componentFactory.js rewritten on added or deleted files.
34
+ This is used during `jss start` to pick up new or removed components at runtime.
35
+ */
36
+
37
+ const defaultConfig: ComponentFactoryPluginConfig = {
38
+ watch: process.argv.some(arg => arg === '--watch'),
39
+ packages: [],
40
+ components: [],
41
+ };
42
+
43
+ (Object.values(plugins) as ComponentFactoryPlugin[])
44
+ .sort((p1, p2) => p1.order - p2.order)
45
+ .reduce((config, plugin) => plugin.exec(config), defaultConfig);
@@ -0,0 +1,147 @@
1
+
2
+ import * as fs from 'fs';
3
+ import path from 'path';
4
+ import chokidar from 'chokidar';
5
+ import { componentFactoryTemplate } from '../template';
6
+ import {
7
+ ComponentFactoryPluginConfig,
8
+ ComponentFactoryPlugin as ComponentFactoryPluginType,
9
+ } from '..';
10
+
11
+ export interface PackageDefinition {
12
+ name: string;
13
+ components: {
14
+ moduleName: string;
15
+ componentName: string;
16
+ }[];
17
+ }
18
+
19
+ const componentFactoryPath = path.resolve('src/app/components/app-components.module.ts');
20
+ const componentRootPath = 'src/app/components';
21
+
22
+ function watchComponentFactory(config: ComponentFactoryPluginConfig) {
23
+ console.log(`Watching for changes to component factory sources in ${componentRootPath}...`);
24
+
25
+ chokidar
26
+ .watch(componentRootPath, { ignoreInitial: true, awaitWriteFinish: true })
27
+ .on('add', writeComponentFactory.bind(null, config))
28
+ .on('unlink', writeComponentFactory.bind(null, config));
29
+ }
30
+
31
+ function writeComponentFactory(config: ComponentFactoryPluginConfig) {
32
+ const componentFactory = generateComponentFactory(config);
33
+
34
+ console.log(`Writing component factory to ${componentFactoryPath}`);
35
+
36
+ fs.writeFileSync(componentFactoryPath, componentFactory, { encoding: 'utf8' });
37
+ }
38
+
39
+ function generateComponentFactory(config: ComponentFactoryPluginConfig) {
40
+ // By convention, we expect to find Angular components
41
+ // under /src/app/components/component-name/component-name.component.ts
42
+ // If a component-name.module.ts file exists, we will treat it as lazy loaded.
43
+ // If you'd like to use your own convention, encode it below.
44
+ // NOTE: generating the component factory module is also totally optional,
45
+ // and it can be maintained manually if preferred.
46
+
47
+ const imports: string[] = [];
48
+ const registrations: string[] = [];
49
+ const lazyRegistrations: string[] = [];
50
+ const declarations: string[] = [];
51
+
52
+ config.packages.forEach((p) => {
53
+ const variables = p.components
54
+ .map((c) => {
55
+ registrations.push(`{ name: '${c.componentName}', type: ${c.moduleName} },`);
56
+ config.components.push(c.componentName);
57
+
58
+ return c.moduleName;
59
+ })
60
+ .join(', ');
61
+ imports.push(`import { ${variables} } from '${p.name}'`);
62
+ });
63
+
64
+ fs.readdirSync(componentRootPath).forEach((componentFolder) => {
65
+ // ignore ts files in component root folder
66
+ if (componentFolder.endsWith('.ts') || componentFolder === '.gitignore') {
67
+ return;
68
+ }
69
+
70
+ const componentFilePath = path.join(
71
+ componentRootPath,
72
+ componentFolder,
73
+ `${componentFolder}.component.ts`
74
+ );
75
+
76
+ if (!fs.existsSync(componentFilePath)) {
77
+ return;
78
+ }
79
+
80
+ const componentFileContents = fs.readFileSync(componentFilePath, 'utf8');
81
+
82
+ // ASSUMPTION: your component should export a class directly that follows Angular conventions,
83
+ // i.e. `export class FooComponent` - so we can detect the component's name for auto registration.
84
+ const componentClassMatch = /export class (.+?)Component\b/g.exec(componentFileContents);
85
+
86
+ if (componentClassMatch === null) {
87
+ console.debug(
88
+ `Component ${componentFilePath} did not seem to export a component class. It will be skipped.`
89
+ );
90
+ return;
91
+ }
92
+
93
+ const componentName = componentClassMatch[1];
94
+ const importVarName = `${componentName}Component`;
95
+
96
+ config.components.push(componentName);
97
+
98
+ // check for lazy loading needs
99
+ const moduleFilePath = path.join(
100
+ componentRootPath,
101
+ componentFolder,
102
+ `${componentFolder}.module.ts`
103
+ );
104
+ const isLazyLoaded = fs.existsSync(moduleFilePath);
105
+
106
+ if (isLazyLoaded) {
107
+ console.debug(`Registering JSS component (lazy) ${componentName}`);
108
+ lazyRegistrations.push(
109
+ `{ path: '${componentName}', loadChildren: () => import('./${componentFolder}/${componentFolder}.module').then(m => m.${componentName}Module) },`
110
+ );
111
+ } else {
112
+ console.debug(`Registering JSS component ${componentName}`);
113
+ imports.push(
114
+ `import { ${importVarName} } from './${componentFolder}/${componentFolder}.component';`
115
+ );
116
+ registrations.push(`{ name: '${componentName}', type: ${importVarName} },`);
117
+ declarations.push(`${importVarName},`);
118
+ }
119
+ });
120
+
121
+ return componentFactoryTemplate({
122
+ imports,
123
+ components: config.components,
124
+ registrations,
125
+ lazyRegistrations,
126
+ declarations,
127
+ });
128
+ }
129
+
130
+ /**
131
+ * Generates the component factory file.
132
+ */
133
+ class ComponentFactoryPlugin implements ComponentFactoryPluginType {
134
+ order = 9999;
135
+
136
+ exec(config: ComponentFactoryPluginConfig) {
137
+ if (config.watch) {
138
+ watchComponentFactory(config);
139
+ } else {
140
+ writeComponentFactory(config);
141
+ }
142
+
143
+ return config;
144
+ }
145
+ }
146
+
147
+ export const componentFactoryPlugin = new ComponentFactoryPlugin();
@@ -0,0 +1,19 @@
1
+ import { ComponentFactoryPlugin, ComponentFactoryPluginConfig } from '..';
2
+
3
+ /**
4
+ * Provides custom components configuration
5
+ */
6
+ class ComponentsPlugin implements ComponentFactoryPlugin {
7
+ order = 0;
8
+
9
+ exec(config: ComponentFactoryPluginConfig) {
10
+ /**
11
+ * You can specify components which you want to import using custom path
12
+ */
13
+ config.components = [];
14
+
15
+ return config;
16
+ }
17
+ }
18
+
19
+ export const componentsPlugin = new ComponentsPlugin();
@@ -0,0 +1,29 @@
1
+ import { ComponentFactoryPlugin, ComponentFactoryPluginConfig } from '..';
2
+
3
+ /**
4
+ * Provides custom packages configuration
5
+ */
6
+ class PackagesPlugin implements ComponentFactoryPlugin {
7
+ order = 0;
8
+
9
+ exec(config: ComponentFactoryPluginConfig) {
10
+ /**
11
+ * You can specify components which you want to import from external/internal packages
12
+ * in format:
13
+ * {
14
+ * name: 'package name',
15
+ * components: [
16
+ * {
17
+ * componentName: 'component name', // component rendering name,
18
+ * moduleName: 'module name' // component name to import from the package
19
+ * }
20
+ * ]
21
+ * }
22
+ */
23
+ config.packages = [];
24
+
25
+ return config;
26
+ }
27
+ }
28
+
29
+ export const packagesPlugin = new PackagesPlugin();
@@ -0,0 +1,46 @@
1
+ export const componentFactoryTemplate = ({
2
+ imports,
3
+ components,
4
+ registrations,
5
+ lazyRegistrations,
6
+ declarations,
7
+ }: {
8
+ imports: string[];
9
+ components: string[];
10
+ registrations: string[];
11
+ lazyRegistrations: string[];
12
+ declarations: string[];
13
+ }) => `// Do not edit this file, it is auto-generated at build time!
14
+ // See scripts/generate-component-factory/index.ts to modify the generation of this file.
15
+ // Use app-components.shared.module.ts to modify the imports, etc of this module.
16
+ // Note: code-generation is optional! See ./.gitignore for directions to remove it,
17
+ // if you do not want it.
18
+
19
+ import { NgModule } from '@angular/core';
20
+ import { JssModule } from '@sitecore-jss/sitecore-jss-angular';
21
+ import { AppComponentsSharedModule } from './app-components.shared.module';
22
+ ${imports.join('\n')}
23
+
24
+ export const components = [
25
+ ${components.map((c) => `'${c}'`).join(',\n ')}
26
+ ];
27
+
28
+ @NgModule({
29
+ imports: [
30
+ AppComponentsSharedModule,
31
+ JssModule.withComponents([
32
+ ${registrations.join('\n ')}
33
+ ], [
34
+ ${lazyRegistrations.join('\n ')}
35
+ ]),
36
+ ],
37
+ exports: [
38
+ JssModule,
39
+ AppComponentsSharedModule,
40
+ ],
41
+ declarations: [
42
+ ${declarations.join('\n ')}
43
+ ],
44
+ })
45
+ export class AppComponentsModule { }
46
+ `;
@@ -1,7 +1,9 @@
1
+ import 'dotenv/config';
1
2
  import * as fs from 'fs';
2
3
  import * as path from 'path';
3
4
  import { constantCase } from 'constant-case';
4
- const packageConfig = require('../package.json');
5
+ import { jssConfigFactory } from './config';
6
+ import { JssConfig } from 'lib/config';
5
7
 
6
8
  /**
7
9
  * Generate config
@@ -10,91 +12,88 @@ const packageConfig = require('../package.json');
10
12
  * settings as variables into the JSS app.
11
13
  * NOTE! Any configs returned here will be written into the client-side JS bundle. DO NOT PUT SECRETS HERE.
12
14
  */
13
- export function generateConfig(configOverrides?: { [key: string]: unknown }, outputPath?: string) {
14
- const defaultConfig = {
15
+
16
+ const defaultConfigValue: JssConfig = {
17
+ production: false,
18
+ sitecoreApiKey: process.env[`${constantCase('sitecoreApiKey')}`],
19
+ sitecoreApiHost: process.env[`${constantCase('sitecoreApiHost')}`],
20
+ sitecoreSiteName: process.env[`${constantCase('sitecoreSiteName')}`],
21
+ defaultLanguage: process.env[`${constantCase('defaultLanguage')}`],
22
+ graphQLEndpoint: process.env[`${constantCase('graphQLEndpoint')}`],
23
+ graphQLEndpointPath: process.env[`${constantCase('graphQLEndpointPath')}`],
24
+ defaultServerRoute: '/',
25
+ };
26
+
27
+ async function main() {
28
+ await generateConfig('src/environments/environment.js', defaultConfigValue, {
15
29
  production: false,
16
- sitecoreApiHost: '',
17
- sitecoreApiKey: 'no-api-key-set',
18
- sitecoreSiteName: process.env.SITECORE_SITE_NAME,
19
- sitecoreLayoutServiceConfig: 'jss',
20
- defaultLanguage: 'en',
21
- defaultServerRoute: '/',
22
- layoutServiceConfigurationName: 'default',
23
- };
30
+ });
31
+ await generateConfig('src/environments/environment.prod.js', defaultConfigValue, {
32
+ production: true,
33
+ });
34
+ }
24
35
 
25
- if (!outputPath) {
26
- outputPath = 'src/environments/environment.js';
27
- }
36
+ main();
28
37
 
29
- // require + combine config sources
30
- const scjssConfig = transformScJssConfig();
31
- const packageJson = transformPackageConfig();
38
+ /**
39
+ * Generates the JSS config based on config plugins (under ./config/plugins)
40
+ * and then writes the config to disk.
41
+ * @param {string} outputPath the output path of the generated config.
42
+ * @param {JssConfig} [defaultConfig] Default configuration.
43
+ * @param {[key: string]:unknown} [configOverrides] configuration values that override the generated ones.
44
+ */
45
+ export function generateConfig(
46
+ outputPath: string,
47
+ defaultConfig: JssConfig = defaultConfigValue,
48
+ configOverrides?: { [key: string]: unknown }
49
+ ) {
50
+ // Handle undefined values
51
+ defaultConfig = Object.keys(defaultConfig).reduce((acc, key) => {
52
+ return {
53
+ ...acc,
54
+ [key]: defaultConfig[key] || '',
55
+ };
56
+ }, {});
32
57
 
33
- // optional:
34
- // do any other dynamic config source (e.g. environment-specific config files)
35
- // Object.assign merges the objects in order, so the
36
- // package.json config can override the calculated config,
37
- // scjssconfig.json overrides it,
38
- // and finally config passed in the configOverrides param wins.
39
- const config = Object.assign(defaultConfig, scjssConfig, packageJson, configOverrides);
58
+ return jssConfigFactory
59
+ .create(defaultConfig)
60
+ .then((config) => {
61
+ writeConfig(Object.assign(config, configOverrides), outputPath);
62
+ })
63
+ .catch((e) => {
64
+ console.error('Error generating config');
65
+ console.error(e);
66
+ process.exit(1);
67
+ });
68
+ }
40
69
 
41
- // The GraphQL endpoint is an example of making a _computed_ config setting
42
- // based on other config settings.
43
- const computedConfig: { [key: string]: string } = {};
44
- computedConfig.graphQLEndpoint = '`${config.sitecoreApiHost}${config.graphQLEndpointPath}`';
70
+ /**
71
+ * Writes the config object to disk with support for environment variables.
72
+ * @param {JssConfig} config JSS configuration to write.
73
+ * @param {string} outputPath the outputh path of the generated config.
74
+ */
75
+ export function writeConfig(config: JssConfig, outputPath?: string) {
76
+ if (!outputPath) {
77
+ outputPath = 'src/environments/environment.js';
78
+ }
45
79
 
46
80
  let configText = `/* eslint-disable */
47
- // Do not edit this file, it is auto-generated at build time!
48
- // See scripts/bootstrap.ts to modify the generation of this file.
49
- const config = {};\n`;
81
+ // Do not edit this file, it is auto-generated at build time!
82
+ // See scripts/bootstrap.ts to modify the generation of this file.
83
+ const config = {};\n`;
50
84
 
51
85
  // Set base configuration values, allowing override with environment variables
52
86
  Object.keys(config).forEach((prop) => {
53
- configText += `config.${prop} = process.env.${constantCase(prop)} || "${config[prop]?.toString().trim()}";\n`;
54
- });
55
- // Set computed values, allowing override with environment variables
56
- Object.keys(computedConfig).forEach((prop) => {
57
- configText += `config.${prop} = process.env.${constantCase(prop)} || ${
58
- computedConfig[prop]?.toString().trim()
59
- };\n`;
87
+ // Handle undefined values
88
+ const value = config[prop] || '';
89
+ configText += `config.${prop} = process.env.${constantCase(
90
+ prop
91
+ )} || "${value.toString().trim()}";\n`;
60
92
  });
93
+
61
94
  configText += `module.exports.environment = config;`;
62
95
 
63
96
  const configPath = path.resolve(outputPath);
64
97
  console.log(`Writing runtime config to ${configPath}`);
65
98
  fs.writeFileSync(configPath, configText, { encoding: 'utf8' });
66
99
  }
67
-
68
- function transformScJssConfig() {
69
- // scjssconfig.json may not exist if you've never run setup
70
- // so if it doesn't we substitute a fake object
71
- let config;
72
- try {
73
- config = require('../scjssconfig.json');
74
- } catch (e) {
75
- return {};
76
- }
77
-
78
- if (!config) {
79
- return {};
80
- }
81
-
82
- return {
83
- sitecoreApiKey: config.sitecore.apiKey,
84
- sitecoreApiHost: config.sitecore.layoutServiceHost,
85
- };
86
- }
87
-
88
- function transformPackageConfig() {
89
- const packageAny = packageConfig;
90
-
91
- if (!packageAny.config) {
92
- return {};
93
- }
94
-
95
- return {
96
- sitecoreSiteName: packageAny.config.appName,
97
- defaultLanguage: packageAny.config.language || 'en',
98
- graphQLEndpointPath: packageAny.config.graphQLEndpointPath || null,
99
- };
100
- }
@@ -0,0 +1,33 @@
1
+ import {
2
+ generatePlugins,
3
+ ModuleType,
4
+ PluginDefinition,
5
+ } from '@sitecore-jss/sitecore-jss-dev-tools';
6
+
7
+ /*
8
+ PLUGINS GENERATION
9
+ NOTE: pluginName: the name of the plugin in the src/lib folder
10
+ Generates the `/src/temp/{pluginName}-plugins.ts` file, which exports list of plugins
11
+
12
+ Generating the plugins is optional, and it can be maintained manually if preferred.
13
+
14
+ The default convention uses the plugin's filename (without the extension) as the first part of the component
15
+ name. For example, the file `/lib/page-props-factory/plugins/exampleName.ts` would map to plugin `exampleNamePlugin`.
16
+ */
17
+
18
+ const pluginDefinitions: PluginDefinition[] = [
19
+ {
20
+ distPath: 'scripts/temp/config-plugins.ts',
21
+ rootPath: 'scripts/config/plugins',
22
+ moduleType: ModuleType.ESM,
23
+ },
24
+ {
25
+ distPath: 'scripts/temp/generate-component-factory-plugins.ts',
26
+ rootPath: 'scripts/generate-component-factory/plugins',
27
+ moduleType: ModuleType.ESM,
28
+ },
29
+ ];
30
+
31
+ pluginDefinitions.forEach((definition) => {
32
+ generatePlugins(definition);
33
+ });
@@ -0,0 +1,2 @@
1
+ *
2
+ !.gitignore
@@ -1,6 +1,6 @@
1
- import * as fetch from 'isomorphic-fetch';
2
1
  import * as fs from 'fs';
3
- import { generateConfig } from './generate-config';
2
+ import clientFactory from 'lib/graphql-client-factory';
3
+ import { getGraphQLClientFactoryConfig } from 'lib/graphql-client-factory/config';
4
4
 
5
5
  // Apollo Client supports caching GraphQL responses, which can greatly reduce network traffic needs.
6
6
  // In order to work correctly with interfaces in GraphQL, it needs to know some basic information about
@@ -9,28 +9,23 @@ import { generateConfig } from './generate-config';
9
9
  //
10
10
  // The `jss graphql:update` command should be executed when Sitecore templates related to the site are altered.
11
11
 
12
- generateConfig();
12
+ import './generate-config';
13
13
 
14
- let jssConfig;
14
+ const clientFactoryConfig = getGraphQLClientFactoryConfig();
15
15
 
16
- try {
17
- jssConfig = require('../src/environments/environment').environment;
18
- } catch (e) {
19
- console.error(
20
- 'Unable to require JSS config. Ensure `jss setup` has been run, and the app has been started at least once after setup.'
21
- );
22
- console.error(e);
23
- process.exit(1);
24
- }
16
+ console.log(`Updating GraphQL fragment type data from ${clientFactoryConfig.endpoint}...`);
25
17
 
26
- console.log(`Updating GraphQL fragment type data from ${jssConfig.graphQLEndpoint}...`);
27
-
28
- fetch(jssConfig.graphQLEndpoint, {
29
- method: 'POST',
30
- headers: { 'Content-Type': 'application/json', sc_apikey: jssConfig.sitecoreApiKey },
31
- body: JSON.stringify({
32
- query: `
33
- {
18
+ clientFactory()
19
+ .request<{
20
+ [key: string]: unknown;
21
+ __schema: {
22
+ kind: string;
23
+ name: string;
24
+ types: { possibleTypes?: { name: string } }[];
25
+ };
26
+ }>(
27
+ `
28
+ {
34
29
  __schema {
35
30
  types {
36
31
  kind
@@ -41,20 +36,18 @@ fetch(jssConfig.graphQLEndpoint, {
41
36
  }
42
37
  }
43
38
  }
44
- `,
45
- }),
46
- })
47
- .then((result) => result.json())
39
+ `
40
+ )
48
41
  .then((result) => {
49
42
  // here we're filtering out any type information unrelated to unions or interfaces
50
- const filteredData = result.data.__schema.types.filter((type: { possibleTypes: Array<string>; }) => type.possibleTypes !== null);
43
+ const filteredData = result.__schema.types.filter((type) => type.possibleTypes !== null);
51
44
 
52
45
  const filteredResult = { ...result };
53
- filteredResult.data.__schema.types = filteredData;
46
+ filteredResult.__schema.types = filteredData;
54
47
 
55
48
  fs.writeFile(
56
49
  './src/graphql-fragment-types.ts',
57
- `export default ${JSON.stringify(filteredResult.data, null, 2)}`,
50
+ `export default ${JSON.stringify(filteredResult, null, 2)}`,
58
51
  (err) => {
59
52
  if (err) {
60
53
  console.error('Error writing GraphQLFragmentTypes file', err);
@@ -4,11 +4,12 @@ import { join } from 'path';
4
4
  import 'reflect-metadata';
5
5
  import 'zone.js';
6
6
  import { JssRouteBuilderService } from './src/app/routing/jss-route-builder.service';
7
- import { environment } from './src/environments/environment';
8
7
  import { AppServerModule, renderModule } from './src/main.server';
9
8
 
10
9
  export * from './src/main.server';
11
10
 
11
+ export * from './server.exports';
12
+
12
13
  const http = require('http');
13
14
  const https = require('https');
14
15
 
@@ -97,7 +98,4 @@ function parseRouteUrl(url: string) {
97
98
  };
98
99
  }
99
100
 
100
- const apiKey = environment.sitecoreApiKey;
101
- const siteName = environment.sitecoreSiteName;
102
-
103
- export { renderView, parseRouteUrl, setUpDefaultAgents, apiKey, siteName };
101
+ export { renderView, parseRouteUrl, setUpDefaultAgents };
@@ -0,0 +1,13 @@
1
+ import { environment } from './src/environments/environment';
2
+
3
+ /**
4
+ * Define the required configuration values to be exported from the server.bundle.ts.
5
+ */
6
+
7
+ const apiKey = environment.sitecoreApiKey;
8
+ const siteName = environment.sitecoreSiteName;
9
+
10
+ export {
11
+ apiKey,
12
+ siteName,
13
+ };