@cdmbase/wiki-browser 12.0.18-alpha.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 (367) hide show
  1. package/LICENSE +21 -0
  2. package/lib/components/Logo.d.ts +4 -0
  3. package/lib/components/Logo.d.ts.map +1 -0
  4. package/lib/components/Logo.js +16 -0
  5. package/lib/components/Logo.js.map +1 -0
  6. package/lib/components/help/SidebarSearch.d.ts +8 -0
  7. package/lib/components/help/SidebarSearch.d.ts.map +1 -0
  8. package/lib/components/help/SidebarSearch.js +111 -0
  9. package/lib/components/help/SidebarSearch.js.map +1 -0
  10. package/lib/components/help/index.d.ts +2 -0
  11. package/lib/components/help/index.d.ts.map +1 -0
  12. package/lib/components/landing/FeatureCard.d.ts +13 -0
  13. package/lib/components/landing/FeatureCard.d.ts.map +1 -0
  14. package/lib/components/landing/FeatureCard.js +85 -0
  15. package/lib/components/landing/FeatureCard.js.map +1 -0
  16. package/lib/components/landing/QuickLinkCard.d.ts +8 -0
  17. package/lib/components/landing/QuickLinkCard.d.ts.map +1 -0
  18. package/lib/components/landing/QuickLinkCard.js +26 -0
  19. package/lib/components/landing/QuickLinkCard.js.map +1 -0
  20. package/lib/components/landing/SearchInput.d.ts +10 -0
  21. package/lib/components/landing/SearchInput.d.ts.map +1 -0
  22. package/lib/components/landing/SearchInput.js +223 -0
  23. package/lib/components/landing/SearchInput.js.map +1 -0
  24. package/lib/components/landing/index.d.ts +4 -0
  25. package/lib/components/landing/index.d.ts.map +1 -0
  26. package/lib/components/welcome.d.ts +3 -0
  27. package/lib/components/welcome.d.ts.map +1 -0
  28. package/lib/compute.d.ts +4 -0
  29. package/lib/compute.d.ts.map +1 -0
  30. package/lib/compute.js +96 -0
  31. package/lib/compute.js.map +1 -0
  32. package/lib/config/env-config.d.ts +4 -0
  33. package/lib/config/env-config.d.ts.map +1 -0
  34. package/lib/config/env-config.js +7 -0
  35. package/lib/config/env-config.js.map +1 -0
  36. package/lib/docs.config.d.ts +48 -0
  37. package/lib/docs.config.d.ts.map +1 -0
  38. package/lib/index.d.ts +4 -0
  39. package/lib/index.d.ts.map +1 -0
  40. package/lib/index.js +2 -0
  41. package/lib/index.js.map +1 -0
  42. package/lib/loaders/search.d.ts +1 -0
  43. package/lib/loaders/search.d.ts.map +1 -0
  44. package/lib/module.d.ts +4 -0
  45. package/lib/module.d.ts.map +1 -0
  46. package/lib/module.js +11 -0
  47. package/lib/module.js.map +1 -0
  48. package/lib/pages/ArticlePage/ArticlePage.d.ts +4 -0
  49. package/lib/pages/ArticlePage/ArticlePage.d.ts.map +1 -0
  50. package/lib/pages/ArticlePage/ArticlePage.js +222 -0
  51. package/lib/pages/ArticlePage/ArticlePage.js.map +1 -0
  52. package/lib/pages/ArticlePage/index.d.ts +3 -0
  53. package/lib/pages/ArticlePage/index.d.ts.map +1 -0
  54. package/lib/pages/ArticlePage/index.js +3 -0
  55. package/lib/pages/ArticlePage/index.js.map +1 -0
  56. package/lib/pages/CategoryCollection/CategoryCollection.d.ts +4 -0
  57. package/lib/pages/CategoryCollection/CategoryCollection.d.ts.map +1 -0
  58. package/lib/pages/CategoryCollection/CategoryCollection.js +103 -0
  59. package/lib/pages/CategoryCollection/CategoryCollection.js.map +1 -0
  60. package/lib/pages/CategoryCollection/index.d.ts +3 -0
  61. package/lib/pages/CategoryCollection/index.d.ts.map +1 -0
  62. package/lib/pages/CategoryCollection/index.js +3 -0
  63. package/lib/pages/CategoryCollection/index.js.map +1 -0
  64. package/lib/pages/Help/HelpIndex.d.ts +4 -0
  65. package/lib/pages/Help/HelpIndex.d.ts.map +1 -0
  66. package/lib/pages/Help/HelpIndex.js +44 -0
  67. package/lib/pages/Help/HelpIndex.js.map +1 -0
  68. package/lib/pages/Help/index.d.ts +4 -0
  69. package/lib/pages/Help/index.d.ts.map +1 -0
  70. package/lib/pages/Help/index.js +226 -0
  71. package/lib/pages/Help/index.js.map +1 -0
  72. package/lib/pages/Landing/index.d.ts +3 -0
  73. package/lib/pages/Landing/index.d.ts.map +1 -0
  74. package/lib/pages/Landing/index.js +281 -0
  75. package/lib/pages/Landing/index.js.map +1 -0
  76. package/lib/routes.json +2533 -0
  77. package/lib/seo.d.ts +22 -0
  78. package/lib/seo.d.ts.map +1 -0
  79. package/lib/slot-fill/FooterFill.d.ts +3 -0
  80. package/lib/slot-fill/FooterFill.d.ts.map +1 -0
  81. package/lib/slot-fill/FooterFill.js +18 -0
  82. package/lib/slot-fill/FooterFill.js.map +1 -0
  83. package/lib/slot-fill/LogoFill.d.ts +5 -0
  84. package/lib/slot-fill/LogoFill.d.ts.map +1 -0
  85. package/lib/slot-fill/LogoFill.js +74 -0
  86. package/lib/slot-fill/LogoFill.js.map +1 -0
  87. package/lib/slot-fill/consts.d.ts +5 -0
  88. package/lib/slot-fill/consts.d.ts.map +1 -0
  89. package/lib/slot-fill/consts.js +1 -0
  90. package/lib/slot-fill/consts.js.map +1 -0
  91. package/lib/slot-fill/index.d.ts +4 -0
  92. package/lib/slot-fill/index.d.ts.map +1 -0
  93. package/lib/templates/assets/images/add-link-frontend.png +0 -0
  94. package/lib/templates/assets/images/add-package-backend.png +0 -0
  95. package/lib/templates/assets/images/add-to-backend-module.png +0 -0
  96. package/lib/templates/assets/images/add-upload-client-frontend.png +0 -0
  97. package/lib/templates/assets/images/additional-parameters.png +0 -0
  98. package/lib/templates/assets/images/aeh-implementation.png +0 -0
  99. package/lib/templates/assets/images/aeh-usage.png +0 -0
  100. package/lib/templates/assets/images/apollo-client/recommendation_cache_mgmt.png +0 -0
  101. package/lib/templates/assets/images/app-deploy-new-version/jenkins1.PNG +0 -0
  102. package/lib/templates/assets/images/app-deploy-new-version/jenkins2.PNG +0 -0
  103. package/lib/templates/assets/images/auth-wrapper-code.png +0 -0
  104. package/lib/templates/assets/images/cdebase.png +0 -0
  105. package/lib/templates/assets/images/cdm-locales-directory.png +0 -0
  106. package/lib/templates/assets/images/client-settings.png +0 -0
  107. package/lib/templates/assets/images/codegen_file_update.png +0 -0
  108. package/lib/templates/assets/images/configuration.png +0 -0
  109. package/lib/templates/assets/images/copy-plugin.png +0 -0
  110. package/lib/templates/assets/images/docusaurus.png +0 -0
  111. package/lib/templates/assets/images/error-link.png +0 -0
  112. package/lib/templates/assets/images/error-sample.png +0 -0
  113. package/lib/templates/assets/images/extension copy.png +0 -0
  114. package/lib/templates/assets/images/extension.png +0 -0
  115. package/lib/templates/assets/images/graphql/graphql-folder-backend.png +0 -0
  116. package/lib/templates/assets/images/graphql/graphql-folder-with-gql.png +0 -0
  117. package/lib/templates/assets/images/i18n-config.png +0 -0
  118. package/lib/templates/assets/images/image.png +0 -0
  119. package/lib/templates/assets/images/logo.svg +10 -0
  120. package/lib/templates/assets/images/logo1.svg +1 -0
  121. package/lib/templates/assets/images/modify-upload-false-server.png +0 -0
  122. package/lib/templates/assets/images/navigation-auth-enabled.png +0 -0
  123. package/lib/templates/assets/images/org-dashboard-navigation.png +0 -0
  124. package/lib/templates/assets/images/org-navigation.png +0 -0
  125. package/lib/templates/assets/images/preferences_graphql_type.png +0 -0
  126. package/lib/templates/assets/images/provider.png +0 -0
  127. package/lib/templates/assets/images/route-config.png +0 -0
  128. package/lib/templates/assets/images/service-accounts.png +0 -0
  129. package/lib/templates/assets/images/source-code/source-code-environments.png +0 -0
  130. package/lib/templates/assets/images/source-code/source-code-organization.png +0 -0
  131. package/lib/templates/assets/images/spin-clone-develop-deployment/jenkins-changes.png +0 -0
  132. package/lib/templates/assets/images/spin-clone-develop-deployment/lerna-changes.png +0 -0
  133. package/lib/templates/assets/images/spin-clone-develop-deployment/root-package-json-changes.png +0 -0
  134. package/lib/templates/assets/images/spin-clone-develop-deployment/values-dev-changes.png +0 -0
  135. package/lib/templates/assets/images/sso-mappers.png +0 -0
  136. package/lib/templates/assets/images/sso-picture-mapper.png +0 -0
  137. package/lib/templates/assets/images/sso-settings.png +0 -0
  138. package/lib/templates/assets/images/timesheet_apollo_cache.png +0 -0
  139. package/lib/templates/assets/images/timesheet_query.png +0 -0
  140. package/lib/templates/assets/images/tutorial/docsVersionDropdown.png +0 -0
  141. package/lib/templates/assets/images/tutorial/localeDropdown.png +0 -0
  142. package/lib/templates/assets/images/unauthenticated.png +0 -0
  143. package/lib/templates/assets/images/undraw_docusaurus_mountain.svg +170 -0
  144. package/lib/templates/assets/images/undraw_docusaurus_react.svg +169 -0
  145. package/lib/templates/assets/images/undraw_docusaurus_tree.svg +1 -0
  146. package/lib/templates/assets/images/vite-plugin-config.png +0 -0
  147. package/lib/templates/content/docs/Generators/Project/generate-fullproject.md +12 -0
  148. package/lib/templates/content/docs/LLM/Logger.llm.md +194 -0
  149. package/lib/templates/content/docs/LLM/backend-proxies-services-llm.md +2687 -0
  150. package/lib/templates/content/docs/LLM/backend-service-llm.md +3384 -0
  151. package/lib/templates/content/docs/LLM/db_migration_llm.md +954 -0
  152. package/lib/templates/content/docs/LLM/frontend/REMIX-15.3-upgrade-llm.md +1245 -0
  153. package/lib/templates/content/docs/LLM/inngest/INNGEST_FUNCTION_DEVELOPMENT_GUIDE_LLM.md +1241 -0
  154. package/lib/templates/content/docs/LLM/inngest/INNGEST_NAMESPACE_LLM.md +384 -0
  155. package/lib/templates/content/docs/LLM/llm_workflow_namespace.md +384 -0
  156. package/lib/templates/content/docs/LLM/organization-components-form-llm.md +1395 -0
  157. package/lib/templates/content/docs/LLM/page-component-llm.md +173 -0
  158. package/lib/templates/content/docs/LLM/preferences-settings-llm.md +2781 -0
  159. package/lib/templates/content/docs/LLM/tailwind-css-llm.md +502 -0
  160. package/lib/templates/content/docs/UI/SchemaBasedUI.md +334 -0
  161. package/lib/templates/content/docs/UI/SlotFillComponent.md +334 -0
  162. package/lib/templates/content/docs/adminide-modules/account/auth0-login.md +31 -0
  163. package/lib/templates/content/docs/adminide-modules/account/index.md +14 -0
  164. package/lib/templates/content/docs/adminide-modules/account/keycloak-remix-setup.md +86 -0
  165. package/lib/templates/content/docs/adminide-modules/account/remix-auth-setup.md +79 -0
  166. package/lib/templates/content/docs/adminide-modules/account/various-auth-qatest.md +157 -0
  167. package/lib/templates/content/docs/adminide-modules/api-builders/graphql.md +906 -0
  168. package/lib/templates/content/docs/adminide-modules/billing/payments/index.md +14 -0
  169. package/lib/templates/content/docs/adminide-modules/billing/payments/stripe/index.md +14 -0
  170. package/lib/templates/content/docs/adminide-modules/billing/payments/stripe/settingup-stripe-locally.md +25 -0
  171. package/lib/templates/content/docs/adminide-modules/billing/tier-config.md +293 -0
  172. package/lib/templates/content/docs/adminide-modules/connectors/Connector.md +207 -0
  173. package/lib/templates/content/docs/adminide-modules/file-upload/index.md +16 -0
  174. package/lib/templates/content/docs/adminide-modules/file-upload/setup.md +435 -0
  175. package/lib/templates/content/docs/adminide-modules/file-upload/upload-file-using-signed-url.md +161 -0
  176. package/lib/templates/content/docs/adminide-modules/preferences/AddAdditionalPermissions.md +151 -0
  177. package/lib/templates/content/docs/adminide-modules/preferences/Configuration.md +241 -0
  178. package/lib/templates/content/docs/adminide-modules/preferences/Policy-Configuration.md +61 -0
  179. package/lib/templates/content/docs/adminide-modules/preferences/UI-components/ResourceSettingsLoader.md +319 -0
  180. package/lib/templates/content/docs/adminide-modules/preferences/contribute_scope_target.md +280 -0
  181. package/lib/templates/content/docs/adminide-modules/preferences/generate-urii.md +94 -0
  182. package/lib/templates/content/docs/adminide-modules/preferences/index.md +28 -0
  183. package/lib/templates/content/docs/adminide-modules/preferences/machine-configuration.md +157 -0
  184. package/lib/templates/content/docs/adminide-modules/preferences/pageSettings/generateCdecodeUri.md +1289 -0
  185. package/lib/templates/content/docs/adminide-modules/preferences/pageSettings/migratingFromUseSettings.md +215 -0
  186. package/lib/templates/content/docs/adminide-modules/preferences/permissions/Roles-Permissions.md +72 -0
  187. package/lib/templates/content/docs/adminide-modules/preferences/permissions/settingUserPermissions.md +139 -0
  188. package/lib/templates/content/docs/adminide-modules/preferences/preference-dependency.md +138 -0
  189. package/lib/templates/content/docs/adminide-modules/preferences/route-based-configuration.md +41 -0
  190. package/lib/templates/content/docs/adminide-modules/preferences/schema-configuration.md +71 -0
  191. package/lib/templates/content/docs/adminide-modules/preferences/supported.md +24 -0
  192. package/lib/templates/content/docs/adminide-modules/preferences/useSettingsLoader.md +248 -0
  193. package/lib/templates/content/docs/adminide-modules/project-tools/auth-providers.md +1317 -0
  194. package/lib/templates/content/docs/adminide-modules/project-tools/keycloak-guide.md +543 -0
  195. package/lib/templates/content/docs/adminide-modules/project-tools/tenant-management/tenant-based-authentication.md +846 -0
  196. package/lib/templates/content/docs/adminide-modules/project-tools/tenant-management/tenant-management.md +708 -0
  197. package/lib/templates/content/docs/adminide-modules/project-tools/tenant-management/tenants.md +1117 -0
  198. package/lib/templates/content/docs/chrome-extension/index.md +14 -0
  199. package/lib/templates/content/docs/chrome-extension/setup.md +30 -0
  200. package/lib/templates/content/docs/contributing/adding-package.md +23 -0
  201. package/lib/templates/content/docs/contributing/adding_new_modules.md +99 -0
  202. package/lib/templates/content/docs/contributing/architecture-updates.md +19 -0
  203. package/lib/templates/content/docs/contributing/avoid-using-promises-ui.md +116 -0
  204. package/lib/templates/content/docs/contributing/coding-guidelines.md +111 -0
  205. package/lib/templates/content/docs/contributing/do-and-dont.md +42 -0
  206. package/lib/templates/content/docs/contributing/faq.md +22 -0
  207. package/lib/templates/content/docs/contributing/folder-setup/browser.md +12 -0
  208. package/lib/templates/content/docs/contributing/folder-setup/config.md +12 -0
  209. package/lib/templates/content/docs/contributing/folder-setup/containers-server.md +12 -0
  210. package/lib/templates/content/docs/contributing/folder-setup/core.md +12 -0
  211. package/lib/templates/content/docs/contributing/folder-setup/graphql.md +12 -0
  212. package/lib/templates/content/docs/contributing/folder-setup/index.md +30 -0
  213. package/lib/templates/content/docs/contributing/folder-setup/module.md +12 -0
  214. package/lib/templates/content/docs/contributing/folder-setup/server.md +12 -0
  215. package/lib/templates/content/docs/contributing/folder-setup/services.md +12 -0
  216. package/lib/templates/content/docs/contributing/folder-setup/store.md +12 -0
  217. package/lib/templates/content/docs/contributing/frontend-coding.md +30 -0
  218. package/lib/templates/content/docs/contributing/git-subtree-sharing.md +73 -0
  219. package/lib/templates/content/docs/contributing/graphql-subscriptions.md +69 -0
  220. package/lib/templates/content/docs/contributing/how-to-contribute.md +30 -0
  221. package/lib/templates/content/docs/contributing/how_to_check_pure_esm.md +29 -0
  222. package/lib/templates/content/docs/contributing/index.md +60 -0
  223. package/lib/templates/content/docs/contributing/installation-issues.md +23 -0
  224. package/lib/templates/content/docs/contributing/keyboard-shortcut.md +131 -0
  225. package/lib/templates/content/docs/contributing/language/locale-support.md +12 -0
  226. package/lib/templates/content/docs/contributing/lerna-build-tools.md +516 -0
  227. package/lib/templates/content/docs/contributing/lerna-yarn-workspaces.md +95 -0
  228. package/lib/templates/content/docs/contributing/lint-and-formatter.md +20 -0
  229. package/lib/templates/content/docs/contributing/mobile-setup.md +16 -0
  230. package/lib/templates/content/docs/contributing/project-setup.md +233 -0
  231. package/lib/templates/content/docs/contributing/react/index.md +14 -0
  232. package/lib/templates/content/docs/contributing/react/lazy-component.md +70 -0
  233. package/lib/templates/content/docs/contributing/run-various-options.md +124 -0
  234. package/lib/templates/content/docs/contributing/schema-first-graphql-types.md +37 -0
  235. package/lib/templates/content/docs/contributing/source-code-organization.md +57 -0
  236. package/lib/templates/content/docs/contributing/staging-docker.md +88 -0
  237. package/lib/templates/content/docs/contributing/third-party/apollo-client-v3-tutorials.md +28 -0
  238. package/lib/templates/content/docs/contributing/third-party/index.md +18 -0
  239. package/lib/templates/content/docs/contributing/typescript-contribution.md +16 -0
  240. package/lib/templates/content/docs/devops/app-deploy-new-version.md +30 -0
  241. package/lib/templates/content/docs/devops/index.md +14 -0
  242. package/lib/templates/content/docs/devops/mobile-jenkins-build.md +40 -0
  243. package/lib/templates/content/docs/devops/versioning-the-project.md +128 -0
  244. package/lib/templates/content/docs/error-handler/application-error-handler.md +40 -0
  245. package/lib/templates/content/docs/error-handler/error-handling.md +26 -0
  246. package/lib/templates/content/docs/error-handler/index.md +16 -0
  247. package/lib/templates/content/docs/error-handler/logging-errors.md +14 -0
  248. package/lib/templates/content/docs/feature-api/copy-operation.md +427 -0
  249. package/lib/templates/content/docs/feature-api/feature-browser/assets.md +46 -0
  250. package/lib/templates/content/docs/feature-api/feature-browser/auth-permissions.md +12 -0
  251. package/lib/templates/content/docs/feature-api/feature-browser/feature.md +131 -0
  252. package/lib/templates/content/docs/feature-api/feature-browser/index.md +22 -0
  253. package/lib/templates/content/docs/feature-api/feature-browser/routes-menu.md +110 -0
  254. package/lib/templates/content/docs/feature-api/feature-browser/routing-convention.md +124 -0
  255. package/lib/templates/content/docs/feature-api/feature-browser/routing.md +338 -0
  256. package/lib/templates/content/docs/feature-api/feature-mobile/auth-permissions.md +20 -0
  257. package/lib/templates/content/docs/feature-api/feature-mobile/feature.md +130 -0
  258. package/lib/templates/content/docs/feature-api/feature-mobile/index.md +18 -0
  259. package/lib/templates/content/docs/feature-api/feature-mobile/navigation.md +187 -0
  260. package/lib/templates/content/docs/feature-api/feature-server/Scheduling.md +44 -0
  261. package/lib/templates/content/docs/feature-api/feature-server/dataloader.md +320 -0
  262. package/lib/templates/content/docs/feature-api/feature-server/dependency-injection.md +81 -0
  263. package/lib/templates/content/docs/feature-api/feature-server/feature.md +65 -0
  264. package/lib/templates/content/docs/feature-api/feature-server/generic-dataloader.md +135 -0
  265. package/lib/templates/content/docs/feature-api/feature-server/index.md +40 -0
  266. package/lib/templates/content/docs/feature-api/feature-server/migration.md +127 -0
  267. package/lib/templates/content/docs/feature-api/feature-server/mongo-model.md +72 -0
  268. package/lib/templates/content/docs/feature-api/feature-server/permissions.md +12 -0
  269. package/lib/templates/content/docs/feature-api/feature-server/policies.md +57 -0
  270. package/lib/templates/content/docs/feature-api/feature-server/preferences.md +57 -0
  271. package/lib/templates/content/docs/feature-api/feature-server/repositories.md +114 -0
  272. package/lib/templates/content/docs/feature-api/feature-server/resolvers.md +126 -0
  273. package/lib/templates/content/docs/feature-api/feature-server/rules.md +132 -0
  274. package/lib/templates/content/docs/feature-api/feature-server/schema.md +12 -0
  275. package/lib/templates/content/docs/feature-api/feature-server/services.md +102 -0
  276. package/lib/templates/content/docs/feature-api/feature-server/setup-resource-crud.md +359 -0
  277. package/lib/templates/content/docs/feature-api/index.md +18 -0
  278. package/lib/templates/content/docs/graphql/apolloClient-mutation.md +94 -0
  279. package/lib/templates/content/docs/graphql/index.md +14 -0
  280. package/lib/templates/content/docs/graphql/scalars.md +15 -0
  281. package/lib/templates/content/docs/help/index.md +14 -0
  282. package/lib/templates/content/docs/help/intro.md +16 -0
  283. package/lib/templates/content/docs/intl/ant-design-menu-translation.md +74 -0
  284. package/lib/templates/content/docs/intl/intl-namespace.md +129 -0
  285. package/lib/templates/content/docs/intl/vite-plugin-intl.md +87 -0
  286. package/lib/templates/content/docs/intl/webpack-plugin-intl.md +12 -0
  287. package/lib/templates/content/docs/intro.md +18 -0
  288. package/lib/templates/content/docs/knowledge/basic-fullstack.md +238 -0
  289. package/lib/templates/content/docs/mailing/index.md +14 -0
  290. package/lib/templates/content/docs/mailing/mailing-template.md +148 -0
  291. package/lib/templates/content/docs/mobile/App-navigation-generator.md +410 -0
  292. package/lib/templates/content/docs/mobile/MobileTestCases.md +264 -0
  293. package/lib/templates/content/docs/mobile/eas-profile-build.md +107 -0
  294. package/lib/templates/content/docs/mobile/expo-push-notification-setup.md +216 -0
  295. package/lib/templates/content/docs/mobile/index.md +14 -0
  296. package/lib/templates/content/docs/mobile/routes.md +83 -0
  297. package/lib/templates/content/docs/organization/adding-account-context.md +116 -0
  298. package/lib/templates/content/docs/organization/adding-org-mobile-navigation.md +22 -0
  299. package/lib/templates/content/docs/organization/adding-org-web-navigation.md +12 -0
  300. package/lib/templates/content/docs/organization/index.md +20 -0
  301. package/lib/templates/content/docs/organization/initialization.md +20 -0
  302. package/lib/templates/content/docs/organization/organization-resource-vs-resource.md +112 -0
  303. package/lib/templates/content/docs/remix/configuration/component-structure-best-practices.md +152 -0
  304. package/lib/templates/content/docs/remix/configuration/configurations.md +218 -0
  305. package/lib/templates/content/docs/remix/configuration/css-import-and-stylesheets.md +142 -0
  306. package/lib/templates/content/docs/remix/configuration/dont-subcomponent-network.md +166 -0
  307. package/lib/templates/content/docs/remix/configuration/generated-data-loaders.md +122 -0
  308. package/lib/templates/content/docs/remix/configuration/generated-resource-loaders.md +257 -0
  309. package/lib/templates/content/docs/remix/configuration/query-params-generator.md +216 -0
  310. package/lib/templates/content/docs/remix/configuration/routes-extra-icons.md +103 -0
  311. package/lib/templates/content/docs/remix/configuration/routes-json-advanced.md +86 -0
  312. package/lib/templates/content/docs/remix/configuration/routes-json-auth.md +113 -0
  313. package/lib/templates/content/docs/remix/configuration/routes-json-best-practices.md +55 -0
  314. package/lib/templates/content/docs/remix/configuration/routes-json-fields.md +79 -0
  315. package/lib/templates/content/docs/remix/configuration/routes-json-graphql.md +79 -0
  316. package/lib/templates/content/docs/remix/configuration/routes-json-index.md +112 -0
  317. package/lib/templates/content/docs/remix/configuration/routes-json-loaders.md +165 -0
  318. package/lib/templates/content/docs/remix/configuration/routes-json-middleware.md +196 -0
  319. package/lib/templates/content/docs/remix/configuration/routes-json-overview.md +53 -0
  320. package/lib/templates/content/docs/remix/data-loaders.md +43 -0
  321. package/lib/templates/content/docs/remix/devtools/remix-devtools.md +58 -0
  322. package/lib/templates/content/docs/remix/examples/changes-using-servercode.md +79 -0
  323. package/lib/templates/content/docs/remix/extra-icons.md +62 -0
  324. package/lib/templates/content/docs/remix/extra-links.md +65 -0
  325. package/lib/templates/content/docs/remix/generated-data-loaders.md +114 -0
  326. package/lib/templates/content/docs/remix/queryParamsGenerator.md +89 -0
  327. package/lib/templates/content/docs/remix/resources.md +16 -0
  328. package/lib/templates/content/docs/remix/styles.md +132 -0
  329. package/lib/templates/content/docs/remix/wiki.md +12 -0
  330. package/lib/templates/content/docs/security/auth-wrapper/auth-wrapper.md +24 -0
  331. package/lib/templates/content/docs/security/index.md +18 -0
  332. package/lib/templates/content/docs/security/secure-button-mobilenative.md +88 -0
  333. package/lib/templates/content/docs/security/secure-button-web.md +89 -0
  334. package/lib/templates/content/docs/server-side/account-customization.md +82 -0
  335. package/lib/templates/content/docs/server-side/apollo/caching.md +164 -0
  336. package/lib/templates/content/docs/server-side/backend-architecture/FINAL-DECISION.md +209 -0
  337. package/lib/templates/content/docs/server-side/backend-architecture/TRUE-FINAL-ARCHITECTURE.md +603 -0
  338. package/lib/templates/content/docs/server-side/backend-architecture/index1.md +0 -0
  339. package/lib/templates/content/docs/server-side/backend-coding.md +839 -0
  340. package/lib/templates/content/docs/server-side/e2b/manageing-template.md +197 -0
  341. package/lib/templates/content/docs/server-side/index.md +14 -0
  342. package/lib/templates/content/docs/server-side/inngest-functions-module.md +309 -0
  343. package/lib/templates/content/docs/server-side/listen-stripe-events.md +43 -0
  344. package/lib/templates/content/docs/server-side/slug-service.md +323 -0
  345. package/lib/templates/content/docs/tests/index.md +18 -0
  346. package/lib/templates/content/docs/tests/jest-test-debug-vscode.md +40 -0
  347. package/lib/templates/content/docs/tests/known-errors.md +116 -0
  348. package/lib/templates/content/docs/tests/service-test-template.md +118 -0
  349. package/lib/templates/content/docs/tests/test-setup.md +93 -0
  350. package/lib/templates/content/docs/xstate.md +23 -0
  351. package/lib/types.d.ts +37 -0
  352. package/lib/types.d.ts.map +1 -0
  353. package/lib/utils/docsNavigation.d.ts +9 -0
  354. package/lib/utils/docsNavigation.d.ts.map +1 -0
  355. package/lib/utils/docsNavigation.js +37 -0
  356. package/lib/utils/docsNavigation.js.map +1 -0
  357. package/lib/utils/helpCenterUtils.d.ts +26 -0
  358. package/lib/utils/helpCenterUtils.d.ts.map +1 -0
  359. package/lib/utils/index.d.ts +3 -0
  360. package/lib/utils/index.d.ts.map +1 -0
  361. package/lib/utils/index.js +3 -0
  362. package/lib/utils/index.js.map +1 -0
  363. package/lib/utils/markdownLoader.d.ts +36 -0
  364. package/lib/utils/markdownLoader.d.ts.map +1 -0
  365. package/lib/utils/markdownLoader.js +2242 -0
  366. package/lib/utils/markdownLoader.js.map +1 -0
  367. package/package.json +71 -0
@@ -0,0 +1,129 @@
1
+ ---
2
+ meta:
3
+ title: Translations Namespaces
4
+ description: Translations Namespaces
5
+ date: '2023-06-02T00:00:00'
6
+ updated: '2024-06-02T00:00:00'
7
+ excerpt: Translations Namespaces...
8
+ headers:
9
+ Cache-Control: no-cache
10
+ ---
11
+
12
+ ## Translations Namespaces
13
+
14
+ To maintain a consistent, organized, and scalable approach to naming translation keys in your React components, we ask developers to follow a specific naming convention. This helps ensure that all translation keys are easily understandable and maintainable. Here’s how to structure your translation keys:
15
+
16
+ ### Guidelines
17
+
18
+ 1. **Use Unique Prefixes for Each Module**
19
+ - Ensure each module has a unique prefix. This helps avoid conflicts when translation keys are similar across different modules.
20
+ - Example: Use `user.profile.name` and `admin.profile.name` instead of just `profile.name`.
21
+
22
+ 2. **Consistent Naming Convention**
23
+ - Stick to a consistent naming convention across all files. This includes using lower case, underscores or dots for separating words, and descriptive names.
24
+ - Example: Use `user.settings.update_email` instead of `UserSettings_UpdateEmail`.
25
+
26
+ 3. **File-Based Namespacing**
27
+ - Divide translation files by modules and features. Each file should represent a specific module or feature.
28
+ - Example:
29
+ - `user.json` for user-related translations.
30
+ - `admin.json` for admin-related translations.
31
+ - `dashboard.json` for dashboard-related translations.
32
+
33
+ 4. **Avoid Generic Names**
34
+ - Avoid using generic names for keys that might be reused across different modules.
35
+ - Example: Use `dashboard.header.title` instead of `header.title`.
36
+
37
+ 5. **Centralized Key Registry**
38
+ - Maintain a centralized registry of translation keys to track and manage the keys used across the project.
39
+ - Use tools or scripts to check for duplicate keys and ensure consistency.
40
+
41
+ 6. **Environment-Based Namespacing**
42
+ - If translations are environment-specific, include the environment in the key.
43
+ - Example: Use `dev.user.profile.name` and `prod.user.profile.name`.
44
+
45
+ 7. **Version Control and Review Process**
46
+ - Implement a version control system for translation files.
47
+ - Establish a review process for adding new keys to ensure consistency and avoid conflicts.
48
+
49
+ 8. **Use Contextual Information**
50
+ - Add contextual information to translation keys to make their purpose clear.
51
+ - Example: Use `button.submit_form` instead of just `submit`.
52
+
53
+ 9. **Document Translation Key Patterns**
54
+ - Document the patterns and conventions used for naming translation keys in the project's README or a dedicated document.
55
+
56
+ 10. **Fallback Strategy**
57
+ - Implement a fallback strategy for missing translations, specifying default values or default languages.
58
+
59
+ ### Example of Structured Translation Files
60
+
61
+ #### user.json
62
+
63
+ ```json
64
+ {
65
+ "user": {
66
+ "profile": {
67
+ "name": "Name",
68
+ "email": "Email",
69
+ "update_button": "Update Profile"
70
+ },
71
+ "settings": {
72
+ "update_email": "Update Email",
73
+ "change_password": "Change Password"
74
+ }
75
+ }
76
+ }
77
+ ```
78
+
79
+ #### admin.json
80
+
81
+ ```json
82
+ {
83
+ "admin": {
84
+ "dashboard": {
85
+ "title": "Admin Dashboard",
86
+ "user_management": "User Management"
87
+ },
88
+ "settings": {
89
+ "site_configuration": "Site Configuration",
90
+ "manage_roles": "Manage Roles"
91
+ }
92
+ }
93
+ }
94
+ ```
95
+
96
+ #### dashboard.json
97
+
98
+ ```json
99
+ {
100
+ "dashboard": {
101
+ "header": {
102
+ "title": "Dashboard",
103
+ "welcome_message": "Welcome to your dashboard"
104
+ },
105
+ "statistics": {
106
+ "total_users": "Total Users",
107
+ "active_sessions": "Active Sessions"
108
+ }
109
+ }
110
+ }
111
+ ```
112
+
113
+ ## Below note is internal to Admins
114
+
115
+ ### Merging Translation Files
116
+
117
+ When merging translation files, ensure that:
118
+
119
+ 1. **Consistent Naming**: Ensure that all keys follow the consistent naming convention.
120
+ 2. **Unique Namespacing**: Verify that the keys have unique namespaces to prevent conflicts.
121
+ 3. **Centralized Registry Check**: Cross-check the centralized registry to ensure no duplicates.
122
+
123
+ ### Review Process
124
+
125
+ 1. **Automated Scripts**: Use automated scripts to check for duplicate keys.
126
+ 2. **Peer Review**: Implement a peer review process for adding or modifying translation keys.
127
+ 3. **Testing**: Test the merged files in different environments to ensure no conflicts.
128
+
129
+ By following these additional standards and best practices, you can effectively manage and avoid conflicts when merging multiple translation files, ensuring a seamless and organized translation process.
@@ -0,0 +1,87 @@
1
+ ---
2
+ meta:
3
+ title: Internationalization
4
+ description: Internationalization
5
+ date: '2023-06-02T00:00:00'
6
+ updated: '2024-06-02T00:00:00'
7
+ excerpt: Internationalization...
8
+ headers:
9
+ Cache-Control: no-cache
10
+ ---
11
+
12
+ ## Internationalization
13
+
14
+ For internationalization we are using `i18nInternationalizationPlugin` from common-stack (`@common-stack/rollup-vite-utils`)
15
+
16
+ # Usage And Implementation
17
+
18
+ Each package has to define its own localization files inside folder `cdm-locales` . The directory would look something like this
19
+
20
+ `cdm-locales/en/translations.json`
21
+
22
+ where translations.json is the namespace. Once defined, the vite plugin will combine all the localization files and will generate files in `frontend-server/public/cdm-locales` folder having all the localization files data for each namespace combined, make sure to use the rollup copy plugin in rollup config of each package so that `cdm-locales` folder of that package is copied as it is to `lib`.
23
+
24
+ ```
25
+ import { copy } from '@web/rollup-plugin-copy';
26
+
27
+ copy({ patterns: '**/cdm-locales/**/*', rootDir: './src' })
28
+ ```
29
+
30
+ -> Declare plugin in frontend-server `vite.config.js`
31
+
32
+ ```
33
+ import { i18nInternationalizationPlugin } from '@common-stack/rollup-vite-utils'
34
+
35
+ i18nInternationalizationPlugin({folderName: 'cdm-locales',
36
+ packages: ['@adminide-stack/*-browser','@adminide-stack/*-ant'],
37
+ namespaceResolution: 'basename',
38
+ }),
39
+ ```
40
+
41
+ -> Add `cdm-locales ` folder inside each package where internationalization is required.
42
+
43
+ -> Add respective en, es or any other local translations. The folder structure would look like this
44
+ `cdm-locales/en/translations.json`
45
+ `cdm-locales/en/common.json`
46
+ `cdm-locales/es/translations.json`
47
+
48
+ -> Using hook `useTranslation` we can use the localization in our components
49
+ ` const {t} = useTranslation()`
50
+
51
+ `t('profile.name', {defaultValue: 'Hello world'})`
52
+
53
+ ## Namespaces
54
+
55
+ Namespaces are cool way to divide you translation into multiple files. Lets say for instance you want to provide a separate translation file for errors and validation you could add a separate namespace for it. By default we are using common name space that's why our translation files are named `common.json` if you want to add another namespace, you can add another file in cdm-locales folder of respective project for each locale like this `cdm-locales/en/validation.json`.
56
+
57
+ -> To switch to above namespace you can declate `useTranslation` like this
58
+ ` const {t} = useTranslation('validation')`. Then all the translation would be taken from translation.json namespace file
59
+
60
+ -> Inorder to load the translation file of particular namespace for particular route during SSR you can export handle function similar to loaders and action like this
61
+
62
+ `export let handle = {
63
+ i18n: "validation",
64
+ };`
65
+
66
+ ## Examples
67
+
68
+ - Directory
69
+
70
+ ![cdm-locales](/assets/images/cdm-locales-directory.png)
71
+
72
+ - Copy Plugin
73
+
74
+ ![vite-plugin-config](/assets/images/copy-plugin.png)
75
+
76
+ - Plugin Config
77
+
78
+ ![vite-plugin-config](/assets/images/vite-plugin-config.png)
79
+
80
+ ## About i18nInternationalizationPlugin
81
+
82
+ We are using `i18nInternationalizationPlugin` from common-stack (`@common-stack/rollup-vite-utils`). The purpose of this plugin is to combine the localization files across different packages present inside the node_modules, we can pass the glob pattern to packages key that this plugin accepts and it will automatically match all packages inside the node_modules matching that pattern and will look into lib directory of those packages. If it finds the `cdm-locales` or a folder defined by `folderName` key, it will fetch the locales files from that folder and will merge the files of different packages into one and will generates files in `frontend-server/public/cdm-locales` which holds all the localization data of each namespace combined, which is then served as resources to i18next.
83
+
84
+ `i18nInternationalizationPlugin({folderName: 'cdm-locales',
85
+ packages: ['@adminide-stack/*-browser','@adminide-stack/*-ant'],
86
+ namespaceResolution: 'basename',
87
+ }),`
@@ -0,0 +1,12 @@
1
+ ---
2
+ meta:
3
+ title: Webpack Plugin Intl
4
+ description: Webpack Plugin Intl
5
+ date: '2023-06-02T00:00:00'
6
+ updated: '2024-06-02T00:00:00'
7
+ excerpt: Webpack Plugin Intl...
8
+ headers:
9
+ Cache-Control: no-cache
10
+ ---
11
+
12
+ ## Webpack Plugin Intl
@@ -0,0 +1,18 @@
1
+ ---
2
+ meta:
3
+ title: Introduction
4
+ description: Introduction
5
+ date: '2023-06-02T00:00:00'
6
+ updated: '2024-06-02T00:00:00'
7
+ excerpt: Introduction...
8
+ headers:
9
+ Cache-Control: no-cache
10
+ ---
11
+
12
+ ## Introduction
13
+
14
+ # Introduction
15
+
16
+ Welcome to the CDE Basae Wiki. These pages are primarily intended for developers who working in CDEBase projects.
17
+
18
+ ## Getting Started with CDE Base Code
@@ -0,0 +1,238 @@
1
+ # Developer Documentation Guide
2
+
3
+ This guide provides essential concepts and resources for developers working with our TypeScript/Apollo GraphQL stack. Each section includes detailed explanations and links to comprehensive documentation.
4
+
5
+ ## Core Concepts
6
+
7
+ ### Object-Oriented Programming (OOP) in TypeScript
8
+
9
+ **What it is:** Fundamental programming paradigm using classes, inheritance, encapsulation, and polymorphism in TypeScript.
10
+
11
+ **Why it matters:** Provides structure, reusability, and maintainability to your codebase. Essential for building scalable applications with clear architectural patterns.
12
+
13
+ **Key topics covered:**
14
+
15
+ - Classes and interfaces in TypeScript
16
+ - Inheritance and composition patterns
17
+ - Encapsulation and access modifiers
18
+ - Polymorphism and method overriding
19
+ - TypeScript-specific OOP features
20
+
21
+ **📖 Learn more:** [Object-Oriented Programming in TypeScript](https://www.freecodecamp.org/news/learn-object-oriented-programming-in-typescript/)
22
+
23
+ ---
24
+
25
+ ### Dependency Injection with InversifyJS
26
+
27
+ **What it is:** A design pattern that provides dependencies to a class rather than having the class create them internally.
28
+
29
+ **Why it matters:** Improves testability, reduces coupling, and makes your code more modular and maintainable. Essential for creating loosely coupled, testable applications.
30
+
31
+ **Key topics covered:**
32
+
33
+ - Inversion of Control (IoC) principles
34
+ - Container configuration and binding
35
+ - Decorator-based dependency injection
36
+ - Testing with mocked dependencies
37
+ - Advanced binding scenarios
38
+
39
+ **📖 Learn more:** [InversifyJS Documentation](https://github.com/inversify/InversifyJS)
40
+
41
+ ---
42
+
43
+ ## Frontend Development
44
+
45
+ ### Apollo Client Overview
46
+
47
+ Apollo Client is a comprehensive state management library for JavaScript that enables you to manage both local and remote data with GraphQL. It's the foundation of our frontend data layer.
48
+
49
+ ### Optimistic UI Updates
50
+
51
+ **What it is:** A pattern where the UI immediately reflects the expected result of a mutation before the server responds.
52
+
53
+ **Why it matters:** Provides instant feedback to users, making your application feel faster and more responsive. Critical for creating smooth user experiences.
54
+
55
+ **Key topics covered:**
56
+
57
+ - Implementing optimistic responses
58
+ - Handling optimistic update failures
59
+ - Best practices for different mutation types
60
+ - Error handling and rollback strategies
61
+
62
+ **📖 Learn more:** [Optimistic UI with Apollo Client](https://www.apollographql.com/docs/react/performance/optimistic-ui)
63
+
64
+ ---
65
+
66
+ ### Client-Side Schema
67
+
68
+ **What it is:** Extending your GraphQL schema with client-only fields and types that exist purely on the frontend.
69
+
70
+ **Why it matters:** Allows you to manage local state using the same GraphQL patterns as remote data, creating a unified data layer.
71
+
72
+ **Key topics covered:**
73
+
74
+ - Defining client-side schema extensions
75
+ - Local resolvers implementation
76
+ - Combining remote and local data
77
+ - Type safety with client fields
78
+
79
+ **📖 Learn more:** [Client-Side Schema](https://www.apollographql.com/docs/react/local-state/client-side-schema)
80
+
81
+ ---
82
+
83
+ ### Offset-Based Pagination
84
+
85
+ **What it is:** A pagination strategy using offset and limit parameters to fetch specific ranges of data.
86
+
87
+ **Why it matters:** Essential for handling large datasets efficiently. Provides predictable pagination behavior for tables and lists.
88
+
89
+ **Key topics covered:**
90
+
91
+ - Implementing offset-based pagination
92
+ - Cache management for paginated data
93
+ - Performance considerations
94
+ - UI integration patterns
95
+
96
+ **📖 Learn more:** [Offset-Based Pagination](https://www.apollographql.com/docs/react/pagination/offset-based)
97
+
98
+ ---
99
+
100
+ ### Key Arguments in Pagination
101
+
102
+ **What it is:** Configuration that tells Apollo Client which arguments should be considered when caching paginated queries.
103
+
104
+ **Why it matters:** Ensures proper cache behavior when the same query is used with different pagination parameters or filters.
105
+
106
+ **Key topics covered:**
107
+
108
+ - Configuring keyArgs for pagination
109
+ - Cache key generation
110
+ - Handling dynamic arguments
111
+ - Debugging cache behavior
112
+
113
+ **📖 Learn more:** [Key Arguments Configuration](https://www.apollographql.com/docs/react/pagination/key-args)
114
+
115
+ ---
116
+
117
+ ### Local State Management
118
+
119
+ **What it is:** Managing application state that doesn't come from the server using Apollo Client's local state capabilities.
120
+
121
+ **Why it matters:** Provides a unified approach to handling both remote and local data, reducing the need for additional state management libraries.
122
+
123
+ **Key topics covered:**
124
+
125
+ - Reactive variables
126
+ - Local-only fields
127
+ - Client-side resolvers
128
+ - State persistence strategies
129
+
130
+ **📖 Learn more:** [Local State Management](https://www.apollographql.com/docs/react/local-state/local-state-management)
131
+
132
+ ---
133
+
134
+ ### Client-Side Field Policies
135
+
136
+ **What it is:** Custom logic for reading, writing, and merging specific fields in Apollo Client's cache.
137
+
138
+ **Why it matters:** Enables complex cache behaviors, computed fields, and custom data transformations at the field level.
139
+
140
+ **Key topics covered:**
141
+
142
+ - Read and merge functions
143
+ - Field-level cache customization
144
+ - Computed fields implementation
145
+ - Performance optimization techniques
146
+
147
+ **📖 Learn more:** [Managing State with Field Policies](https://www.apollographql.com/docs/react/local-state/managing-state-with-field-policies)
148
+
149
+ ---
150
+
151
+ ### Type Policies
152
+
153
+ **What it is:** Configuration that defines how Apollo Client handles caching and normalization for specific GraphQL types.
154
+
155
+ **Why it matters:** Controls cache behavior, enables custom key generation, and optimizes cache performance for your specific data model.
156
+
157
+ **Key topics covered:**
158
+
159
+ - Custom key fields configuration
160
+ - Type-specific cache policies
161
+ - Cache normalization strategies
162
+ - Performance optimization
163
+
164
+ **📖 Learn more:** [Type Policies Configuration](https://www.apollographql.com/docs/react/caching/cache-configuration#customizing-type-policies)
165
+
166
+ ---
167
+
168
+ ### Cache Management
169
+
170
+ **What it is:** Direct interaction with Apollo Client's normalized cache for reading, writing, and updating data.
171
+
172
+ **Why it matters:** Enables fine-grained control over cache behavior, manual cache updates, and complex state synchronization scenarios.
173
+
174
+ **Key topics covered:**
175
+
176
+ - Reading from and writing to cache
177
+ - Cache eviction strategies
178
+ - Manual cache updates
179
+ - Cache debugging techniques
180
+
181
+ **📖 Learn more:** [Cache Interaction](https://www.apollographql.com/docs/react/caching/cache-interaction)
182
+
183
+ ---
184
+
185
+ ### Schema-Driven Testing
186
+
187
+ **What it is:** Testing approach that leverages your GraphQL schema to ensure type safety and consistency in tests.
188
+
189
+ **Why it matters:** Provides confidence that your frontend code works correctly with your GraphQL API, catching type mismatches and schema changes early.
190
+
191
+ **Key topics covered:**
192
+
193
+ - MockedProvider setup
194
+ - Schema-based mocking
195
+ - Integration testing strategies
196
+ - Type-safe test utilities
197
+
198
+ **📖 Learn more:** [Schema-Driven Testing](https://www.apollographql.com/docs/react/development-testing/schema-driven-testing)
199
+
200
+ ---
201
+
202
+ ## Core Backend
203
+
204
+ ### Apollo Server
205
+
206
+ **What it is:** A production-ready, spec-compliant GraphQL server that works with any GraphQL schema built with GraphQL.js.
207
+
208
+ **Why it matters:** Provides the foundation for your GraphQL API, handling schema execution, middleware, and integration with various data sources.
209
+
210
+ **Key topics covered:**
211
+
212
+ - Server setup and configuration
213
+ - Schema definition and resolvers
214
+ - Middleware and plugins
215
+ - Data source integration
216
+ - Performance and security considerations
217
+
218
+ **📖 Learn more:** [Apollo Server Getting Started](https://www.apollographql.com/docs/apollo-server/getting-started)
219
+
220
+ ---
221
+
222
+ ## Getting Started
223
+
224
+ 1. **Start with Core Concepts** - Understand OOP principles and dependency injection patterns
225
+ 2. **Set up Apollo Server** - Establish your GraphQL backend foundation
226
+ 3. **Configure Apollo Client** - Set up your frontend data layer
227
+ 4. **Implement Data Patterns** - Apply pagination, caching, and state management
228
+ 5. **Add Testing** - Implement schema-driven testing for reliability
229
+
230
+ ## Additional Resources
231
+
232
+ - **Apollo Documentation:** [https://www.apollographql.com/docs/](https://www.apollographql.com/docs/)
233
+ - **TypeScript Handbook:** [https://www.typescriptlang.org/docs/](https://www.typescriptlang.org/docs/)
234
+ - **GraphQL Specification:** [https://spec.graphql.org/](https://spec.graphql.org/)
235
+
236
+ ---
237
+
238
+ _This documentation is designed to be a living guide. Update it as new patterns and practices are adopted in the project._
@@ -0,0 +1,14 @@
1
+ ---
2
+ meta:
3
+ title: Mailling
4
+ description: Mailling
5
+ date: '2023-06-02T00:00:00'
6
+ updated: '2024-06-02T00:00:00'
7
+ excerpt: Mailling...
8
+ headers:
9
+ Cache-Control: no-cache
10
+ ---
11
+
12
+ ## Mailling
13
+
14
+ **[Mailing Templates](/docs/mailing/mailing-template)**
@@ -0,0 +1,148 @@
1
+ ---
2
+ meta:
3
+ title: Mailing Template
4
+ description: Mailing Template
5
+ date: '2023-06-02T00:00:00'
6
+ updated: '2024-06-02T00:00:00'
7
+ excerpt: Mailing Template...
8
+ headers:
9
+ Cache-Control: no-cache
10
+ ---
11
+
12
+ ## Mailing Templates
13
+
14
+ #### Create a Template
15
+
16
+ Under your module's `src` folder, create a new folder named `migration` (if haven't already). Define your `ejs` mail
17
+ template under this directory.
18
+
19
+ ##### Create neccessary types
20
+
21
+ Create a unique template name.
22
+
23
+ > packages-modules/account-api/server/src/graphql/schema/mail-services.graphql
24
+
25
+ ```typescript
26
+ extend enum MailTemplateId {
27
+ """ Prefix with Db to make sure it look into the database """
28
+ DbTeamInivitationId
29
+ }
30
+ ```
31
+
32
+ and run `yarn generateGraphql` so it generates `types` in the core package.
33
+
34
+ Make sure to build the core package where it get generated.
35
+
36
+ #### Define a migration
37
+
38
+ Define your migration file, import your newly defined template and define both `up` and `down` methods.
39
+
40
+ > packages-modules/account-api/server/src/migrations/holiday-greetings-mail-template.ts
41
+
42
+ ```typescript
43
+ import { IMailTemplateId } from '@adminide-stack/core';
44
+ import { MailTemplateMigration } from '@container-stack/mailing-api-server';
45
+ import { injectable } from 'inversify';
46
+ import { config } from '../config';
47
+
48
+ const template = require('./template-name.ejs'); // replace with actual template-name
49
+
50
+ @injectable()
51
+ export class HolidayGreetingsTemplateMigration extends MailTemplateMigration {
52
+ protected NAMESPACE = config.NAMESPACE;
53
+
54
+ protected VERSION = '20220502'; <-- CURRENT DATE IN FORMAT 'YYYYMMDD'. Any time change in template make sure to change this to redeploy
55
+
56
+ protected name = IMailTemplateId.HolidayGreetingsTemplateId;
57
+
58
+ protected templatePayload(): Record<string, unknown> {
59
+ return {
60
+ description: 'Holiday Greeting',
61
+ html: template.default,
62
+ };
63
+ }
64
+ }
65
+ ```
66
+
67
+ #### PS
68
+
69
+ Make sure that you define unique `name` for your template
70
+
71
+ #### Bind to Container
72
+
73
+ Bind your newly added migration with container so that it gets migrated when server stars
74
+
75
+ > packages-modules/account-api/server/src/containers/module.ts
76
+
77
+ ```typescript
78
+
79
+ bind('MongodbMigration')
80
+ .to(<Your-Template-Class>)
81
+ .whenTargetNamed(<Your-Template-Class>.name);
82
+ ```
83
+
84
+ #### Sending Email
85
+
86
+ In any service where you want to call to `sendEmail` for example
87
+
88
+ > packages-modules/billing-api/server/src/plugins/stripe-moleculer-service.ts
89
+
90
+ ```typescript
91
+ // These import can be from '@container-stack/mailing-api' as well
92
+ import { ISendMail_Input, IMoleculerServiceName, IMailServiceAction } from '@adminide-stack/core';
93
+
94
+ class ExampleService {
95
+ @inject(CommonType.MOLECULER_BROKER)
96
+ protected broker: ServiceBroker;
97
+ constructor() {}
98
+
99
+ private async anyOtherFunctionCallingSendEmail(request, transport) {
100
+ try {
101
+ const emailResponse = await this.broker.call(
102
+ `${IMoleculerServiceName.MailService}.${IMailServiceAction.SendEmail}`,
103
+ {
104
+ request: {
105
+ from: config.MAIL_SEND_DEFAULT_EMAIL,
106
+ to,
107
+ topic: '',
108
+ templateId: IMailTemplateId.BillingNotificationId,
109
+ namespace: config.NAMESPACE,
110
+ variables: {
111
+ // add any variables that you need to pass to template.
112
+ text: variables.subject,
113
+ messageHtml: '',
114
+ message: '',
115
+ ...variables,
116
+ },
117
+ } as ISendMail_Input,
118
+ transport,
119
+ },
120
+ );
121
+ } catch (err) {
122
+ this.logger.error(err);
123
+ }
124
+ }
125
+ }
126
+ ```
127
+
128
+ Add required email environment variables in `config`
129
+
130
+ ```typescript
131
+ export const config = envalid.cleanEnv<IConfig>(process.env, {
132
+ ...
133
+ MAIL_SEND_DEFAULT_EMAIL: str(),
134
+ EMAIL_USER: str(),
135
+ ...
136
+ });
137
+ ```
138
+
139
+ ##### We support following operations on `mailer-service`
140
+
141
+ 1. Send
142
+ 2. SendBulkEmail
143
+ 3. Query
144
+ 4. Report
145
+ 5. CreateTemplate
146
+ 6. SaveTemplate
147
+ 7. DropTemplate
148
+ 8. List