@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,215 @@
1
+ # PageSettings with Simplified Apollo Client Hooks
2
+
3
+ This document explains the new simplified implementation of pageSettings using Apollo Client hooks.
4
+
5
+ ## Overview
6
+
7
+ The new implementation replaces the complex service-based logic in `useSetting.tsx` with simple GraphQL hooks that leverage Apollo Client's caching mechanisms.
8
+
9
+ ## Key Components
10
+
11
+ ### 1. Updated GraphQL Fragment (`pageSettings.gql`)
12
+
13
+ ```graphql
14
+ fragment PageSettings on PageResourceSetting {
15
+ settings
16
+ resourceUri
17
+ target
18
+ updateTimestamp
19
+ keys
20
+ # Client-side fields for filtering and computed values
21
+ configKeyValue(configKey: $configKey) @client
22
+ filteredSettings(configKey: $configKey) @client
23
+ modifiedAt @client
24
+ }
25
+ ```
26
+
27
+ ### 2. Enhanced Type Policies (`pageSettingsTypePolicy.ts`)
28
+
29
+ The type policy includes client-side field resolvers for advanced use cases:
30
+
31
+ - **`configKeyValue`**: Extracts a specific nested value from settings using lodash `get()`
32
+ - **`filteredSettings`**: Returns filtered settings based on configKey
33
+ - **`modifiedAt`**: Tracks when settings were last modified for cache invalidation
34
+
35
+ ### 3. Two Simple Hooks (`usePageSettings.tsx`)
36
+
37
+ #### `usePageSettings` - Full pageSettings data
38
+
39
+ ```typescript
40
+ export const usePageSettings = (variables: IPageSettingsVariable) => {
41
+ return useGetPageSettingsQuery({ variables: { resourceUri }, skip });
42
+ };
43
+ ```
44
+
45
+ #### `usePageSettingsConfigKey` - Specific config key value
46
+
47
+ ```typescript
48
+ export const usePageSettingsConfigKey = <T = any>(variables: IPageSettingsConfigKeyVariable) => {
49
+ // Returns the specific configKey value extracted with lodash get()
50
+ };
51
+ ```
52
+
53
+ ## Benefits
54
+
55
+ 1. **Simple & Direct**: Just Apollo Client hooks, no complex logic
56
+ 2. **Better Caching**: Leverages Apollo Client's sophisticated caching mechanisms
57
+ 3. **Type Safety**: Full TypeScript support with proper typing
58
+ 4. **Flexible**: Two hooks for different use cases
59
+ 5. **Performance**: Client-side extraction with lodash `get()`
60
+
61
+ ## Migration Guide
62
+
63
+ ### Before (useSetting)
64
+
65
+ ```typescript
66
+ import { useSetting } from './useSetting';
67
+
68
+ // For specific config key
69
+ const { data, loading, error } = useSetting({
70
+ configKey: 'theme.colorScheme',
71
+ target: ConfigurationTarget.ORGANIZATION,
72
+ });
73
+
74
+ // For all settings
75
+ const { data, loading, error } = useSetting({
76
+ target: ConfigurationTarget.ORGANIZATION,
77
+ });
78
+ ```
79
+
80
+ ### After (usePageSettings)
81
+
82
+ ```typescript
83
+ import { usePageSettingsConfigKey, usePageSettings } from './usePageSettings';
84
+ import { URI } from '@adminide-stack/core';
85
+
86
+ // For specific config key
87
+ const resourceUri = URI.parse('adminide://org/myorg#settings');
88
+ const { data, loading, error } = usePageSettingsConfigKey({
89
+ resourceUri,
90
+ configKey: 'theme.colorScheme',
91
+ });
92
+
93
+ // For all settings
94
+ const { data, loading, error } = usePageSettings({
95
+ resourceUri,
96
+ });
97
+ const settings = data?.pageSettings?.settings;
98
+ ```
99
+
100
+ ## API Comparison
101
+
102
+ | Feature | useSetting | usePageSettings |
103
+ | ------------------- | ---------------- | -------------------------- |
104
+ | ConfigKey filtering | ✅ Service-based | ✅ Client-side with lodash |
105
+ | Resource URI | ❌ Implicit | ✅ Explicit |
106
+ | Caching | ❌ Complex | ✅ Apollo Client |
107
+ | Type safety | ⚠️ Partial | ✅ Full |
108
+ | Performance | ❌ Service calls | ✅ Client-side |
109
+ | Simplicity | ❌ Complex | ✅ Simple hooks |
110
+
111
+ ## Usage Examples
112
+
113
+ ### Basic Config Key Access
114
+
115
+ ```typescript
116
+ const { data, loading, error } = usePageSettingsConfigKey({
117
+ resourceUri: URI.parse('adminide://org/myorg#settings'),
118
+ configKey: 'editor.fontSize',
119
+ });
120
+ // data contains just the fontSize value
121
+ ```
122
+
123
+ ### Full Settings Access
124
+
125
+ ```typescript
126
+ const { data, loading, error } = usePageSettings({
127
+ resourceUri: URI.parse('adminide://org/myorg#settings'),
128
+ });
129
+ const settings = data?.pageSettings?.settings;
130
+ // settings contains the full settings object
131
+ ```
132
+
133
+ ### Multiple Config Keys
134
+
135
+ ```typescript
136
+ const { data, loading, error } = usePageSettings({
137
+ resourceUri: URI.parse('adminide://org/myorg#settings'),
138
+ });
139
+
140
+ if (data?.pageSettings?.settings) {
141
+ const themeSettings = get(data.pageSettings.settings, 'theme');
142
+ const editorSettings = get(data.pageSettings.settings, 'editor');
143
+ const fontSize = get(data.pageSettings.settings, 'editor.fontSize');
144
+ }
145
+ ```
146
+
147
+ ## Cache Invalidation
148
+
149
+ The type policy automatically handles cache invalidation by:
150
+
151
+ 1. Comparing organization modification timestamps
152
+ 2. Checking resource update timestamps
153
+ 3. Triggering refetch when org settings are newer than resource settings
154
+
155
+ ## Examples
156
+
157
+ See `usePageSettings.example.tsx` for comprehensive usage examples including:
158
+
159
+ - Basic configKey usage
160
+ - Full settings access
161
+ - Resource URI construction
162
+ - Migration patterns
163
+ - Multiple value access
164
+
165
+ ## Technical Details
166
+
167
+ ### Hook Implementation
168
+
169
+ Both hooks are simple wrappers around `useGetPageSettingsQuery`:
170
+
171
+ ```typescript
172
+ // Base hook - returns full Apollo query result
173
+ export const usePageSettings = (variables: IPageSettingsVariable) => {
174
+ return useGetPageSettingsQuery({
175
+ variables: { resourceUri },
176
+ skip,
177
+ });
178
+ };
179
+
180
+ // ConfigKey hook - extracts specific value with lodash get
181
+ export const usePageSettingsConfigKey = <T = any>(variables: IPageSettingsConfigKeyVariable) => {
182
+ const { data, loading, error, ...rest } = useGetPageSettingsQuery({
183
+ variables: { resourceUri },
184
+ skip,
185
+ });
186
+
187
+ const configKeyValue = data?.pageSettings?.settings ? get(data.pageSettings.settings, configKey) : null;
188
+
189
+ return {
190
+ data: configKeyValue as T,
191
+ loading,
192
+ error,
193
+ settings: data?.pageSettings?.settings,
194
+ pageSettings: data?.pageSettings,
195
+ ...rest,
196
+ };
197
+ };
198
+ ```
199
+
200
+ ### Resource URI Construction
201
+
202
+ You need to construct the proper resource URI:
203
+
204
+ ```typescript
205
+ // Organization settings
206
+ const orgUri = URI.parse('adminide://org/myorg#settings');
207
+
208
+ // Workspace settings
209
+ const workspaceUri = URI.parse('adminide://org/myorg/workspace/myworkspace#settings');
210
+
211
+ // Project settings
212
+ const projectUri = URI.parse('adminide://org/myorg/workspace/myworkspace/project/myproject#settings');
213
+ ```
214
+
215
+ This approach provides better performance, simpler code, and improved caching while being more explicit about resource URIs.
@@ -0,0 +1,72 @@
1
+ ---
2
+ meta:
3
+ title: Roles & Permissions
4
+ description: Roles & Permissions
5
+ date: '2023-06-02T00:00:00'
6
+ updated: '2024-06-02T00:00:00'
7
+ excerpt: Roles & Permissions...
8
+ headers:
9
+ Cache-Control: no-cache
10
+ ---
11
+
12
+ ## Roles & Permissions
13
+
14
+ Following Permissions scopes can be used. Each module can add permissions to the permission contributions.
15
+
16
+ - Organization/Window Permissions
17
+ - Resource Permissions
18
+
19
+ ### Pre defined roles
20
+
21
+ Pre defined roles are added by default with selected Permissions values.
22
+
23
+ **_ note _** It is hard coded in [here](https://github.com/cdebase/adminide-stack/blob/79cd0d746c9a116f1807b1d8a2a61ade8b611d48/packages-modules/account-api/server/src/roles/accounts-roles.ts#L44)
24
+
25
+ In the UI, user will get the permissions based on his role in the organization.
26
+
27
+ His organization role can be seen in the apollo cache as `OrganizationRole:/organizations:name=<org name>
28
+ `.
29
+
30
+ User updated permissions are stored in specific collection under `roles`.
31
+
32
+ A role can be added at the resource level for the same user which overrides his organization role's permission.
33
+
34
+ If the resource level permission is not set, it's value is inherited from the organization level.
35
+
36
+ At the database side, the collection that is used will be usually `organizations` but if the user updates at resource level then it will be stored in that respective resource.
37
+
38
+ Following query helps to get the organization level permission.
39
+
40
+ ```gql
41
+ query GetRoleValue($key: String, $overrides: ConfigurationOverrides_Input) {
42
+ getPermissionValue(key: $key, overrides: $overrides) @client(always: true)
43
+ }
44
+
45
+ variables:
46
+ { "key": "accounts.inviteMember" }
47
+ ```
48
+
49
+ Result
50
+
51
+ ```
52
+ {
53
+ "data": {
54
+ "getPermissionValue": "Allow"
55
+ },
56
+ "loading": false,
57
+ "networkStatus": 7,
58
+ "stale": false
59
+ }
60
+ ```
61
+
62
+ If it needs resource level, we need to add `overrides` in the variables with the rsource uri.
63
+
64
+ At the server side, the following query can be used to get the user's permissions based on his role.
65
+
66
+ ```gql
67
+ query {
68
+ getViewerPermissions(input: { resource: "mongo-db-file:/teams?orgName%3Dstackflow-1%26name%3DNiceTeam2#settings", target: 5, roleName: "ADMIN"}) {
69
+ permissions
70
+ roleURL
71
+ }
72
+ ```
@@ -0,0 +1,139 @@
1
+ ---
2
+ meta:
3
+ title: Setting User Permissions
4
+ description: Setting User Permissions
5
+ date: '2023-06-02T00:00:00'
6
+ updated: '2024-06-02T00:00:00'
7
+ excerpt: Setting User Permissions...
8
+ headers:
9
+ Cache-Control: no-cache
10
+ ---
11
+
12
+ ## Setting User Permissions
13
+
14
+ Cdmbase DevOps permissions are structured to provide a comprehensive and flexible security model that allows for precise control over who can access and perform various operations within the system. Here’s an overview of how permissions are structured in Cdmbase DevOps:
15
+
16
+ ### 1. **Security Namespaces and Tokens**
17
+
18
+ Azure DevOps uses a concept called security namespaces to group permissions. Each namespace contains a set of permissions that apply to specific areas or resources within Cdmbase DevOps. Security tokens are used to reference specific objects within these namespaces.
19
+
20
+ ### 2. **Permission Levels**
21
+
22
+ Permissions in Azure DevOps are organized at several levels:
23
+
24
+ - **Organization Level**: Permissions that apply to the entire Cdmbase DevOps organization.
25
+ - **Project Level**: Permissions specific to individual projects.
26
+ - **Resource Level**: Permissions for specific resources within a project, such as repositories, pipelines, boards, etc.
27
+
28
+ ### 3. **Roles and Access Levels**
29
+
30
+ Roles and access levels determine what permissions a user or group has within Cdmbase DevOps. These include:
31
+
32
+ - **Access Levels**: Determine the features a user can access (e.g., Basic, Stakeholder, Visual Studio Subscriber).
33
+ - **Security Groups**: Collections of users with a predefined set of permissions (e.g., Project Administrators, Contributors, Readers).
34
+
35
+ ### 4. **Permission Inheritance and Overrides**
36
+
37
+ Permissions can be inherited from parent objects (e.g., from organization to project) but can also be explicitly set or overridden at more specific levels.
38
+
39
+ ### 5. **Deny, Allow, and Not Set**
40
+
41
+ Permissions can be set to:
42
+
43
+ - **Deny**: Explicitly denies the permission, overriding any allow permissions.
44
+ - **Allow**: Explicitly allows the permission.
45
+ - **Not Set**: Inherits permissions from the parent object.
46
+
47
+ ### Example Structure of Permissions in Cdmbase DevOps
48
+
49
+ #### Organization Level Permissions
50
+
51
+ These control access to the organization settings and features.
52
+
53
+ - **Organization Owner**: Has full control over the entire organization.
54
+ - **Billing Manager**: Can manage billing but not other administrative settings.
55
+
56
+ #### Project Level Permissions
57
+
58
+ These control access to project-specific settings and features.
59
+
60
+ - **Project Administrator**: Can manage all aspects of a project.
61
+ - **Contributor**: Can contribute to the project, such as adding code and managing builds.
62
+ - **Reader**: Can view project information but cannot make changes.
63
+
64
+ #### Resource Level Permissions
65
+
66
+ These control access to specific resources within a project.
67
+
68
+ - **Repositories**: Permissions like Read, Contribute, Branch, and Tag.
69
+ - **Pipelines**: Permissions like View, Edit, and Queue builds.
70
+ - **Boards**: Permissions like View, Edit, and Create work items.
71
+
72
+ ### Example: Setting Permissions for a User
73
+
74
+ Here is an example of how permissions can be structured and set for a user in Cdmbase DevOps.
75
+
76
+ #### Step 1: Assign Access Level
77
+
78
+ Assign an access level to determine the features the user can access.
79
+
80
+ ```json
81
+ {
82
+ "accessLevel": "Basic"
83
+ }
84
+ ```
85
+
86
+ #### Step 2: Add User to Security Groups
87
+
88
+ Add the user to the relevant security groups.
89
+
90
+ ```json
91
+ {
92
+ "securityGroups": ["Project Administrators", "Contributors"]
93
+ }
94
+ ```
95
+
96
+ #### Step 3: Set Resource-Level Permissions
97
+
98
+ Explicitly set permissions for specific resources.
99
+
100
+ ```json
101
+ {
102
+ "repository": {
103
+ "permissions": {
104
+ "Read": "Allow",
105
+ "Contribute": "Allow",
106
+ "Branch": "Deny",
107
+ "Tag": "Not Set"
108
+ }
109
+ },
110
+ "pipeline": {
111
+ "permissions": {
112
+ "View": "Allow",
113
+ "Edit": "Allow",
114
+ "Queue builds": "Deny"
115
+ }
116
+ },
117
+ "board": {
118
+ "permissions": {
119
+ "View": "Allow",
120
+ "Edit": "Deny",
121
+ "Create work items": "Allow"
122
+ }
123
+ }
124
+ }
125
+ ```
126
+
127
+ ### Managing Permissions in Cdmbase DevOps
128
+
129
+ Permissions in Cdmbase DevOps can be managed via the Cdmbase DevOps portal or through Cdmbase DevOps REST APIs for more automated and programmatic control.
130
+
131
+ #### Using the Cdmbase DevOps Portal
132
+
133
+ 1. **Navigate to Organization Settings**: Manage organization-level permissions.
134
+ 2. **Navigate to Project Settings**: Manage project-level permissions.
135
+ 3. **Select Specific Resources**: Manage permissions for specific resources like repositories, pipelines, and boards.
136
+
137
+ ### Summary
138
+
139
+ Cdmbase DevOps permissions are structured hierarchically, allowing for precise control over who can access and perform operations at various levels (organization, project, and resource). Roles, access levels, and security groups help manage permissions, while the inheritance and override mechanism ensures flexibility and control. Permissions can be managed through the Cdmbase DevOps portal or programmatically via REST APIs.
@@ -0,0 +1,138 @@
1
+ ---
2
+ meta:
3
+ title: Preference Dependency
4
+ description: Preference Dependency
5
+ date: '2023-06-02T00:00:00'
6
+ updated: '2024-06-02T00:00:00'
7
+ excerpt: Preference Dependency...
8
+ headers:
9
+ Cache-Control: no-cache
10
+ ---
11
+
12
+ ## How to call Preferences from Microservices
13
+
14
+ Preferences are native to the Graphql Gateway server. Inorder to get preferences, you can call in same methodology used in the browser. Which is by using Apollo Client.
15
+
16
+ 1. First make sure all the preferences are mapped to the graphql schema so they can be called through graphql queries
17
+
18
+ ```
19
+ type Preference_Timer_notifications {
20
+ approvalNotifications: Boolean
21
+ submitNotifications: Boolean
22
+ timeTrackingNotifications: Boolean
23
+ enableTimetrackerNotifications: Boolean
24
+ }
25
+
26
+ type Preference_Timer_Activity {
27
+ autoStop: Int
28
+ maxTimeInADay: Int
29
+ waitingTime: Int
30
+ }
31
+
32
+ type Preference_Timetracker {
33
+ activity: Preference_Timer_Activity
34
+ notifications: Preference_Timer_notifications
35
+ }
36
+
37
+ extend type Preferences {
38
+ timetracker: Preference_Timetracker
39
+ }
40
+ ```
41
+
42
+ 2. Verify from the frontend graphql tools to make sure the `preferences` types have the preference you want to query
43
+
44
+ ![codegen](/assets/images/preferences_graphql_type.png)
45
+
46
+ 3. If you using Moleculer Plugin and within it one of the service has dependency on PreferencesService then use the Mixin to load apolloClient in the Moleculer Plugin. As the `PreferencesService` is depend on `Apollo Client`
47
+
48
+ ```
49
+ import { ApolloClientMixin, getPreferenceSettingsInput } from '@adminide-stack/platform-server';
50
+
51
+ export class TimesheetMoleculerService extends Service {
52
+ private timesheetService: ITimesheetService;
53
+
54
+ private container: Container;
55
+
56
+ constructor(broker: ServiceBroker, { container, ...settings }: { container: Container }) {
57
+ super(broker);
58
+ this.container = container;
59
+
60
+ const topic = MoleculerTopics.Timesheet;
61
+
62
+ this.parseServiceSchema({
63
+ name: topic,
64
+ mixins: [ApolloClientMixin],
65
+ settings: {
66
+ apolloClient: {
67
+ serverUri: config.GRAPHQL_URL,
68
+ },
69
+ },
70
+ events: {
71
+ ....
72
+ }
73
+ this.container.bind(ClientTypes.ApolloClient).toConstantValue(this.apolloClient);
74
+ ```
75
+
76
+ 4. Now in the Service to make a call we need to create a fragment of the `preferences` fields you need.
77
+
78
+ a)
79
+
80
+ ```
81
+ export const TrackerNotificationsPreferencesFragmentDoc = gql`
82
+ fragment TrackerNotificationsPreferences on Preferences {
83
+ timetracker {
84
+ notifications {
85
+ approvalNotifications
86
+ enableTimetrackerNotifications
87
+ submitNotifications
88
+ }
89
+ }
90
+ }
91
+ `;
92
+ ```
93
+
94
+ b)
95
+
96
+ Make sure the file is included in the codegen.yaml
97
+
98
+ ![codegen](/assets/images/codegen_file_update.png)
99
+
100
+ c) Run `yarn generateGraphql` to generate types
101
+
102
+ d) import the `fragment` and call the `preferencesService.viewerSettings`
103
+
104
+ ```
105
+ import { ITrackerNotificationsPreferencesFragment } from '...timetracker-core';
106
+ const timerNotification = require('../graphql/fragments/timer-notifications.gql');
107
+
108
+ const settings = await this.preferencesService.viewerSettings<ITrackerNotificationsPreferencesFragment>(
109
+ {
110
+ target: ConfigurationTarget.ORGANIZATION,
111
+ settingsResource: resourceUri,
112
+ },
113
+ {
114
+ fragmentName: 'TimetrackerPreferences',
115
+ fragmentDoc: timerNotification.default,
116
+ },
117
+ );
118
+
119
+ ```
120
+
121
+ e. Note, webpack or rollback generator should load the `.gql` file imported as raw text instead of compiled gql.
122
+
123
+ ```
124
+ // in webpack.config.js
125
+
126
+ module: {
127
+ rules: [
128
+ ...
129
+ {
130
+ test: /\.(gql)$/,
131
+ exclude: /node_modules/,
132
+ use: 'raw-loader',
133
+ },
134
+ ....
135
+ ],
136
+ },
137
+
138
+ ```
@@ -0,0 +1,41 @@
1
+ ---
2
+ meta:
3
+ title: Route Based Configuration
4
+ description: Route Based Configuration
5
+ date: '2023-06-02T00:00:00'
6
+ updated: '2024-06-02T00:00:00'
7
+ excerpt: Route Based Configuration...
8
+ headers:
9
+ Cache-Control: no-cache
10
+ ---
11
+
12
+ ## Route based configuration
13
+
14
+ Based on the URL route, we pull the `orgName` which is useful to pull the configuration resources to build `configurationService`.
15
+
16
+ ConfigurationService methods such as `getValue` will give the merge of all the above settings in that order.
17
+
18
+ Default Configuration will be overwritten by User Configuration and User Configuration will be overwritten by Organization Configuration and follows the order for Resource Configuration.
19
+
20
+ `Resource Configuration` are related to specific `url` path within that organization that may have it's own configuration.
21
+
22
+ Here is a small example:
23
+ Organization can have multiple Teams. Each Team can have it's own Configuration. In this case, a resource configuration is created for each Team and when requesting the configuration value we need to provide the team resource URI path like:
24
+
25
+ ```
26
+ getValue('organization.team.visibility', { resource: 'mongo-db-file:///team/<teamId>/settings })
27
+
28
+ --check its interface
29
+ getValue<T>(section: string, overrides: IConfigurationOverrides): T;
30
+
31
+ ```
32
+
33
+ The `overrides` parameter will take the resource and overrides the resulted organizationConfiguration with the `resourceConfiguration` value and gives the final `value`.
34
+
35
+ `orgName` is stateless and will be placed in the url for tracking the page and its configuration to be loaded.
36
+
37
+ Based on the following sample url, the route path that is used to generate is `/o/:orgName/teams/dashboard` and params value is `orgName` is `testorg`. Based on this `orgName`, we reload the configuration with `oraganizationContextService.initialize(<orgName>)` which eventually will load configurationService based on that specific organization.
38
+
39
+ ```
40
+ https://idefront-adminide-v1.cdebase.io/teams/testorg/dashboard
41
+ ```
@@ -0,0 +1,71 @@
1
+ ---
2
+ meta:
3
+ title: Schema Configuration
4
+ description: Schema Configuration
5
+ date: '2023-06-02T00:00:00'
6
+ updated: '2024-06-02T00:00:00'
7
+ excerpt: Schema Configuration...
8
+ headers:
9
+ Cache-Control: no-cache
10
+ ---
11
+
12
+ # Conditional Field Rendering - Schema Documentation
13
+
14
+ This documentation explains how to extend a schema to conditionally render a new field based on a specific condition. This example focuses on a generic schema and uses a placeholder `$newFieldCondition` for the condition.
15
+
16
+ ## Introduction
17
+
18
+ You may need to conditionally display or hide a field in your data schema based on certain criteria. This document outlines the steps to add a new field to a generic schema and specify conditions for when it should be rendered.
19
+
20
+ ## Updating the Schema
21
+
22
+ ### Step 1: Update the Schema Object
23
+
24
+ Modify the schema object to include the new field (`newField`) at the appropriate location within the existing structure.
25
+
26
+ ```javascript
27
+ export const genericSchema = {
28
+ def: {},
29
+ schema: {
30
+ type: 'object',
31
+ properties: {
32
+ existingField1: { type: 'string' },
33
+ existingField2: { type: 'number' },
34
+ // ... (other existing fields)
35
+ newField: { type: 'string' }, // New field
36
+ },
37
+ if: {
38
+ properties: {
39
+ $newFieldCondition: { const: true }, // Placeholder for the condition
40
+ },
41
+ },
42
+ then: {
43
+ properties: {
44
+ $conditionalField: { type: 'string' }, // Define the new field in 'then' when the condition is met
45
+ },
46
+ },
47
+ },
48
+ };
49
+ ```
50
+
51
+ ### Step 2: Define the Condition
52
+
53
+ Define the condition within the `if` section. Replace the `$newFieldCondition` placeholder with the actual property and condition that should trigger the visibility of `newField`. For example:
54
+
55
+ ```javascript
56
+ if: {
57
+ properties: {
58
+ someProperty: { const: "" }, // Example condition: newField shown when someProperty is greater than 10
59
+ },
60
+ }
61
+ ```
62
+
63
+ The `then` section specifies what properties to add when the condition is met.
64
+
65
+ ## How the UI Looks
66
+
67
+ In the user interface, the appearance of the `newField` element depends on whether the specified condition is met. Here's how the UI behaves:
68
+
69
+ - **Condition Met**: When the condition, as defined in the schema (e.g., `someProperty` > 10), is satisfied, the `newField` will be rendered and displayed within the user interface. Users can interact with this field as they would with any other field.
70
+
71
+ - **Condition Not Met**: If the condition is not met, the `newField` will not be displayed in the UI. It will be hidden, and users will not see or interact with it. This behavior ensures that the UI remains user-friendly and responsive to the defined conditions.
@@ -0,0 +1,24 @@
1
+ ---
2
+ meta:
3
+ title: Supported
4
+ description: Supported
5
+ date: '2023-06-02T00:00:00'
6
+ updated: '2024-06-02T00:00:00'
7
+ excerpt: Supported...
8
+ headers:
9
+ Cache-Control: no-cache
10
+ ---
11
+
12
+ ## Supported
13
+
14
+ Multiple overrides identifier using `[a][b]`
15
+
16
+ ```
17
+ "workbench.colorCustomizations": {
18
+ "[GitHub Sharp][GitHub Sharp Dark]": {
19
+ "editorPane.background": "#d6d0d01a",
20
+ "sideBarSectionHeader.border": "#D3D3D3",
21
+ }
22
+ }
23
+
24
+ ```