@cdmbase/wiki-browser 12.0.18-alpha.5

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,114 @@
1
+ ---
2
+ meta:
3
+ title: Repositories
4
+ description: Repositories
5
+ date: '2023-06-02T00:00:00'
6
+ updated: '2024-06-02T00:00:00'
7
+ excerpt: Repositories...
8
+ headers:
9
+ Cache-Control: no-cache
10
+ ---
11
+
12
+ # Repositories
13
+
14
+ Repositories are classes or components that encapsulate the logic required to access data sources. They centralize common data access functionality, providing better
15
+ maintainability and decoupling the infrastructure or technology used to access databases from the domain model layer. If you use an Object-Document Mapper (ODM) like
16
+ Mongoose, the code required to query or manipulate the documents is simplified. This lets you focus on the data persistence logic rather than on data access plumbing.
17
+
18
+ For every document in our app, we'll have a respective repository against that document. Document shouldn't be fetched directly without `Repository` doing
19
+ this will be considered `Anti Pattren` and should be avoided. All use cases related to how the app will `fetch` `manipulate` and `process`a document
20
+ should reside inside the `Repository` of that respective document.
21
+
22
+ All basic database operations which we normally need to perform on a `Document` like the basic CRUD operations are already defined inside the `BaseRepository` class.
23
+ So you need to re-write the basic stuff and focus more on advance stuff. Each repository should extend the `BaseRepository` so it can
24
+ benefit from all these pre cooked methods.
25
+
26
+ The methods provided by `BaseRepositiry` are following
27
+
28
+ ```typescript
29
+ export interface IBaseRepository<T, D = Document<T>> {
30
+ // Returns the total document count which fullfils the provided condition
31
+ count(conditions?: FilterQuery<D>): Promise<number>;
32
+
33
+ // Returns the list of documents which fullfils the provided condition (if any)
34
+ // Provides out of box paginaytion using `limit` and `skip` params
35
+ // sort attribute can be used to get sorted results
36
+ // selected fields takes a comma serperated strinh of fields name to be returned.
37
+ getAll(options: GetAllArgs<D>): Promise<T[]>;
38
+
39
+ // Returns single document
40
+ get(conditions?: FilterQuery<D>, selectedFields?: string): Promise<T>;
41
+
42
+ // Creates new document
43
+ create<I>(data: I): Promise<T>;
44
+
45
+ // Create/Update (If already exists) new document
46
+ upsert<I>(conditions: FilterQuery<D>, update: I, options: any): Promise<T>;
47
+
48
+ // Update existing document
49
+ update<I>(criteria: FilterQuery<D>, update: UpdateQuery<D>, options?: any): Promise<T>;
50
+
51
+ // Update all docuemnts which matches the provdied conditions
52
+ bulkUpdate<I>(criteria: FilterQuery<D>, update: UpdateQuery<D>, options?: any): Promise<T[]>;
53
+
54
+ delete(criteria: FilterQuery<D>): Promise<boolean>;
55
+
56
+ // Bulk Create provided documents
57
+ bulkCreate<I>(data: I[]): Promise<T[]>;
58
+
59
+ // Delete all documets which matches the criteria
60
+ bulkDelete(criteria: FilterQuery<D>): Promise<number>;
61
+ }
62
+
63
+ export enum ISortEnum {
64
+ Asc = 'ASC',
65
+ Desc = 'DESC',
66
+ }
67
+
68
+ export type ISort = {
69
+ key: Scalars['String'];
70
+ value: ISortEnum;
71
+ };
72
+
73
+ export interface GetAllArgs<T> {
74
+ criteria?: FilterQuery<T>;
75
+ sort?: ISort;
76
+ skip?: number;
77
+ limit?: number;
78
+ selectedFields?: string;
79
+ }
80
+ ```
81
+
82
+ ### Example
83
+
84
+ If you have a document named `User` you should define both `Repository` class and interface against it like the following
85
+
86
+ ```typescript
87
+ export type IUserRepository = IBaseRepository<IUser>;
88
+ ```
89
+
90
+ ```typescript
91
+ import { BaseRepository, IMongoOptions } from '@common-stack/store-mongo';
92
+ import { inject, injectable, optional } from 'inversify';
93
+ import { Connection } from 'mongoose';
94
+ import { logger as Logger } from '@cdm-logger/server/lib/logger';
95
+ import { UserModelFunc } from '../models';
96
+
97
+ @injectable()
98
+ export class UserRepository extends BaseRepository<IUser> implements IUserRepository {
99
+ constructor(
100
+ @inject('MongoDBConnection')
101
+ db: Connection,
102
+ @inject('Logger')
103
+ logger: typeof Logger,
104
+ @inject('IMongoOptions')
105
+ @optional()
106
+ options?: IMongoOptions,
107
+ ) {
108
+ super(UserModelFunc, db, logger, options);
109
+ }
110
+ }
111
+ ```
112
+
113
+ After creating the `Repository` class, the next step is to register it with the [Dependency Injection](dependency-injection) so It can be injected easily everywhere in the app.
114
+ After creating repository, the next step is to add [Service](services)
@@ -0,0 +1,126 @@
1
+ ---
2
+ meta:
3
+ title: Resolvers
4
+ description: Resolvers
5
+ date: '2023-06-02T00:00:00'
6
+ updated: '2024-06-02T00:00:00'
7
+ excerpt: Resolvers...
8
+ headers:
9
+ Cache-Control: no-cache
10
+ ---
11
+
12
+ # Resolvers
13
+
14
+ GraphQL Server needs to know how to populate data for every field in your schema so that it can respond to requests for
15
+ that data.
16
+ To accomplish this, it uses resolvers.
17
+
18
+ _A resolver is a function that's responsible for populating the data for a single field in your schema_. It can populate
19
+ that data
20
+ in any way you define, such as by fetching data from a back-end database or a third-party API. A resolver is the key
21
+ architectural component that connects GraphQL fields, graph edges, queries, mutations, and subscriptions to their
22
+ respective data sources and micro-services. Read more about
23
+ resolvers [here](https://www.apollographql.com/docs/apollo-server/data/resolvers/)
24
+
25
+ > If you don't define a resolver for a particular field, Apollo Server automatically defines
26
+ > a [default resolver](https://www.apollographql.com/docs/apollo-server/data/resolvers/#default-resolvers) for it.
27
+
28
+ We use `Schema First` approach which requires us to define GraphQL schema before we write any code for it. So in order to
29
+ create new GraphQL types, query or mutation, you need to add them to Schema. Create your schema file under `graphql/schema/<file-name.gql`
30
+
31
+ ```graphql
32
+
33
+ type User{}
34
+ type Users{
35
+ totalCount: Int!,
36
+ data: [User!]
37
+ }
38
+
39
+ input CreateInput{}
40
+ input UpdateUserInput{}
41
+
42
+ extend type Query{
43
+ # ... existing queries
44
+ user(id:ID!): UserModel!
45
+ users(id:ID!): UserPageModel!
46
+ }
47
+
48
+ extend type Mutation{
49
+ createUser(user:CreateUserInput!): UserModel!
50
+ updateUser(id:ID!, user: UpdateUserInput!): UserModel!
51
+ deleteUser(id:ID!): Boolean!
52
+ }
53
+ ```
54
+
55
+ Everytime you make change to GraphQL schema, we need to re generate typescript definitions using the following command
56
+
57
+ ```shell
58
+ npm run generateGraphql
59
+ ```
60
+
61
+ Next, let's add resolver implementation, by convention the all resolver definitions resides under `graphql/resolvers`.
62
+
63
+ ```typescript
64
+ // graphql/resovlers/user-resolver.ts
65
+
66
+ export const userResolver = (): IResolvers<IContext> => ({
67
+ User: {
68
+ // # Nested resolvers for relations
69
+ async posts(user, _, args, { postService }) {
70
+ const { data, totalCount } = await userService.getAllWithCount({
71
+ ...args,
72
+ criteria: {
73
+ ...args.criteria,
74
+ user: user.id,
75
+ },
76
+ });
77
+ return {
78
+ totalCount,
79
+ data,
80
+ };
81
+ },
82
+ },
83
+ Query: {
84
+ async users(_, args, { userService }) {
85
+ const { data, totalCount } = await userService.getAllWithCount(args);
86
+ return {
87
+ totalCount,
88
+ data,
89
+ };
90
+ },
91
+ user(_, { id }, { userService }) {
92
+ return userService.get(id);
93
+ },
94
+ },
95
+ Mutation: {
96
+ createUser(_, { user }, { userService }) {
97
+ return userService.create(user);
98
+ },
99
+ updateUser(_, { id, user }, { userService }) {
100
+ return userService.update(id, user, false);
101
+ },
102
+ deleteUser(_, { id }, { userService }) {
103
+ return userService.delete(id);
104
+ },
105
+ },
106
+ });
107
+ ```
108
+
109
+ <blockquote>
110
+ Note:
111
+ In order to use any service in the resolver first, you need to register your service in
112
+ the [GraphQL context](https://the-guild.dev/graphql/modules/docs/essentials/context).
113
+ Add it under `createServiceFunc` of [Feature](feature.md) API. If it does not already exist create one.
114
+
115
+ ```typescript
116
+ const createServiceFunc = (container: interfaces.Container): IService => ({
117
+ userService: container.get<IUserService>(TYPES.UserService),
118
+ });
119
+
120
+ export default new Feature({
121
+ // rest of the configutations
122
+ createServiceFunc,
123
+ });
124
+ ```
125
+
126
+ </blockquote>
@@ -0,0 +1,132 @@
1
+ ---
2
+ meta:
3
+ title: Rules
4
+ description: Rules
5
+ date: '2023-06-02T00:00:00'
6
+ updated: '2024-06-02T00:00:00'
7
+ excerpt: Rules...
8
+ headers:
9
+ Cache-Control: no-cache
10
+ ---
11
+
12
+ # Rules
13
+
14
+ Rules represents what GraphQL operations can be performed by the requested user. Rules are generated by two simple steps, defining resource access and
15
+ then mapping those resource access to respective GraphQL operations.
16
+
17
+ - Control who can access what, we are using users's permission together with the [CASL](https://casl.js.org/v6/en) to define their abilities to manage specific resource
18
+ - Whether Graphql request can be performed or not [GraphQL Shield](https://the-guild.dev/graphql/shield)
19
+
20
+ ## Access Control
21
+
22
+ We use User's [Permissions](permissions.md) to evaluate what he/she can or can't access. By convention we have 4 types
23
+ of permissions
24
+
25
+ - Mange (Can perform complete CRUD)
26
+ - View
27
+ - Edit
28
+ - Delete
29
+
30
+ So we need to map each of them with the cas ability, how its done is using a simple function which takes permission
31
+ as `param` and define
32
+ abilities for the users using its permissions.
33
+
34
+ ```typescript
35
+ import { AbilityBuilder, Ability } from '@casl/ability';
36
+ import { IModule, IPermissionType, IPermissionTypes, IPreDefinePermissions } from '@adminide-stack/core';
37
+ import { get } from 'lodash';
38
+
39
+ export function defineAbilityFor(permissions: Record<string, any>) {
40
+ const { can, build } = new AbilityBuilder(Ability);
41
+
42
+ /***
43
+ * IPreDefinePermissions = {
44
+ * manageResource: 'module.resource.manage'
45
+ * viewResource: 'module.resource.view',
46
+ * editResource: 'module.resource.edit',
47
+ * deleteResource: 'module.resource.delete'
48
+ * }
49
+ */
50
+ const canManageResource = get(permissions, IPreDefinePermissions.manageResource) === IPermissionType.Allow;
51
+ const canViewResource = get(permissions, IPreDefinePermissions.viewResource) === IPermissionType.Allow;
52
+ const canEditResource = get(permissions, IPreDefinePermissions.editResource) === IPermissionType.Allow;
53
+ const canDeleteResource = get(permissions, IPreDefinePermissions.deleteResource) === IPermissionType.Allow;
54
+
55
+ if (canManageResource) {
56
+ can(IPermissionTypes.manage, IModule.Resource);
57
+ can(IPermissionTypes.view, IModule.Resource);
58
+ can(IPermissionTypes.delete, IModule.Resource);
59
+ can(IPermissionTypes.edit, IModule.Resource);
60
+ }
61
+ if (canViewResource) {
62
+ can(IPermissionTypes.view, IModule.Resource);
63
+ }
64
+ if (canEditResource) {
65
+ can(IPermissionTypes.edit, IModule.Resource);
66
+ }
67
+ if (canDeleteResource) {
68
+ can(IPermissionTypes.delete, IModule.Resource);
69
+ }
70
+ return build();
71
+ }
72
+ ```
73
+
74
+ ## GraphQL Shield
75
+
76
+ Once we have abilities in place next step is to use them with the Graphql operations, this is
77
+ where [GraphQL Shield](https://the-guild.dev/graphql/shield) comes in.
78
+ It lets you defined one to one mapping with the GraphQL operations you have, a simple resolver function which will then
79
+ determine whether this operation can be
80
+ performed or not
81
+
82
+ ```typescript
83
+ import { rule } from 'graphql-shield';
84
+ import { getPermissionsFromContext } from '@adminide-stack/platform-server';
85
+ // This if the function we've just defined above
86
+ import { defineAbilityFor } from '../ability';
87
+
88
+ const options = { cache: 'contextual' };
89
+ const rules = {
90
+ Query: {
91
+ getResource: rule(options)(async (parent, args, ctx) => {
92
+ const permissions = await getPermissionsFromContext(ctx);
93
+ return defineAbilityFor(permissions).can(IPermissionTypes.view, IModule.Resource);
94
+ }),
95
+ getResources: rule(options)(async (parent, args, ctx) => {
96
+ const permissions = await getPermissionsFromContext(ctx);
97
+ return defineAbilityFor(permissions).can(IPermissionTypes.view, IModule.Resource);
98
+ }),
99
+ },
100
+ Mutation: {
101
+ createResource: rule(options)(async (parent, args, ctx) => {
102
+ const permissions = await getPermissionsFromContext(ctx);
103
+ return defineAbilityFor(permissions).can(IPermissionTypes.create, IModule.Resource);
104
+ }),
105
+ updateResource: rule(options)(async (parent, args, ctx) => {
106
+ const permissions = await getPermissionsFromContext(ctx);
107
+ return defineAbilityFor(permissions).can(IPermissionTypes.edit, IModule.Resource);
108
+ }),
109
+ delete: rule(options)(async (parent, args, ctx) => {
110
+ const permissions = await getPermissionsFromContext(ctx);
111
+ return defineAbilityFor(permissions).can(IPermissionTypes.delete, IModule.Resource);
112
+ }),
113
+ },
114
+ Resource: {
115
+ nestedResource: rule(options)(async (parent, args, ctx) => {
116
+ const permissions = await getPermissionsFromContext(ctx);
117
+ return defineAbilityFor(permissions).can(IPermissionTypes.view, IModule.NestedResource);
118
+ }),
119
+ },
120
+ };
121
+ ```
122
+
123
+ Once we have the rules object in place, the last step is to export it and pass it on to the `Feature API`
124
+
125
+ ```typescript
126
+ import { rules } from './rules';
127
+
128
+ export default new Feature({
129
+ // rest of the config
130
+ rules,
131
+ });
132
+ ```
@@ -0,0 +1,12 @@
1
+ ---
2
+ meta:
3
+ title: Schema
4
+ description: Schema
5
+ date: '2023-06-02T00:00:00'
6
+ updated: '2024-06-02T00:00:00'
7
+ excerpt: Schema...
8
+ headers:
9
+ Cache-Control: no-cache
10
+ ---
11
+
12
+ ## Schema
@@ -0,0 +1,102 @@
1
+ ---
2
+ meta:
3
+ title: Service
4
+ description: Service
5
+ date: '2023-06-02T00:00:00'
6
+ updated: '2024-06-02T00:00:00'
7
+ excerpt: Service...
8
+ headers:
9
+ Cache-Control: no-cache
10
+ ---
11
+
12
+ ## Service
13
+
14
+ Services are top level business logic tier encapsulating business logic. A services performs business related
15
+ operations on one or multiple models. It can involve fetching data from different sources, validating and transforming
16
+ that and in the end
17
+ either storing or returning the result. Services should be `database` agnostic and should not care about which database
18
+ or data sources are being used.
19
+
20
+ To understand the concept of `Services` we'll take a common example of `AutheticationService` containing all the basic
21
+ method of an authentication workflow. The methods in the class reflects business operations. `AutheticationService`
22
+ consumes`IOAuth0Client` and `IEmailClient` to perform 0Auth and `Email` related operations thus staying completely
23
+ agnostic of
24
+ which
25
+ `0Auth` and `Email` provider is being used underneath.
26
+
27
+ ```typescript
28
+ class AuthenticationService {
29
+ constructor(
30
+ private readonly auth0Client: IOAuth0Client,
31
+ private readonly emailClient: IEmailClient,
32
+ ) {}
33
+
34
+ signIn() {}
35
+
36
+ signUp() {}
37
+
38
+ forgotPassoword() {}
39
+
40
+ verifyEmail() {}
41
+
42
+ generateToken() {}
43
+ }
44
+ ```
45
+
46
+ In our application, in most scenarios, services needs to fetch and store data models from and into databases. Because
47
+ these operations are so repetitive and needed
48
+ almost everywhere we have a `BaseService` class which basically takes care of all database related logic, so you can
49
+ focus more on what you want to do with the data rather than on how to
50
+ fetch/store that data. The `BaseService` consists on the following methods
51
+
52
+ ```typescript
53
+ export interface IBaseService<T, C = Omit<T, 'id'>, U = C> {
54
+ count(conditions?: FilterQuery<Document<T>>): Promise<number>;
55
+
56
+ get(id: string): Promise<T>;
57
+
58
+ get(conditions?: string | FilterQuery<Document<T>>): Promise<T>;
59
+
60
+ getAll(options?: GetAllArgs<Document<T>>): Promise<T[]>;
61
+
62
+ getByIds(ids: string[]): Promise<T[]>;
63
+
64
+ create(data: C): Promise<T>;
65
+
66
+ insert(
67
+ data: (C | U) & {
68
+ id?: string;
69
+ },
70
+ overwrite?: boolean,
71
+ ): Promise<T>;
72
+
73
+ bulkCreate(data: C[]): Promise<T[]>;
74
+
75
+ update(id: string, data: U, overwrite?: boolean): Promise<T>;
76
+
77
+ delete(id: string): Promise<boolean>;
78
+
79
+ delete(conditions: string | FilterQuery<Document<T>>): Promise<boolean>;
80
+
81
+ getAllWithCount(options: GetAllArgs<Document<T>>): Promise<{
82
+ data: T[];
83
+ totalCount: number;
84
+ }>;
85
+ }
86
+ ```
87
+
88
+ Any services wishes to use these methods just need to extend the `BaseService`
89
+
90
+ ```typescript
91
+ export class UserService extends BaseService<IUserService> implements IUserService {
92
+ constructor(
93
+ @inject(TYPES.UserRepository)
94
+ repository: IUserRepository,
95
+ ) {
96
+ super(repository);
97
+ }
98
+ }
99
+ ```
100
+
101
+ In the end, you need to register your service with the Dependency Injection, read more about
102
+ that [here](dependency-injection)