@cdmbase/wiki-browser 12.0.18-alpha.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/lib/components/Logo.d.ts +4 -0
- package/lib/components/Logo.d.ts.map +1 -0
- package/lib/components/Logo.js +16 -0
- package/lib/components/Logo.js.map +1 -0
- package/lib/components/help/SidebarSearch.d.ts +8 -0
- package/lib/components/help/SidebarSearch.d.ts.map +1 -0
- package/lib/components/help/SidebarSearch.js +111 -0
- package/lib/components/help/SidebarSearch.js.map +1 -0
- package/lib/components/help/index.d.ts +2 -0
- package/lib/components/help/index.d.ts.map +1 -0
- package/lib/components/landing/FeatureCard.d.ts +13 -0
- package/lib/components/landing/FeatureCard.d.ts.map +1 -0
- package/lib/components/landing/FeatureCard.js +85 -0
- package/lib/components/landing/FeatureCard.js.map +1 -0
- package/lib/components/landing/QuickLinkCard.d.ts +8 -0
- package/lib/components/landing/QuickLinkCard.d.ts.map +1 -0
- package/lib/components/landing/QuickLinkCard.js +26 -0
- package/lib/components/landing/QuickLinkCard.js.map +1 -0
- package/lib/components/landing/SearchInput.d.ts +10 -0
- package/lib/components/landing/SearchInput.d.ts.map +1 -0
- package/lib/components/landing/SearchInput.js +223 -0
- package/lib/components/landing/SearchInput.js.map +1 -0
- package/lib/components/landing/index.d.ts +4 -0
- package/lib/components/landing/index.d.ts.map +1 -0
- package/lib/components/welcome.d.ts +3 -0
- package/lib/components/welcome.d.ts.map +1 -0
- package/lib/compute.d.ts +4 -0
- package/lib/compute.d.ts.map +1 -0
- package/lib/compute.js +96 -0
- package/lib/compute.js.map +1 -0
- package/lib/config/env-config.d.ts +4 -0
- package/lib/config/env-config.d.ts.map +1 -0
- package/lib/config/env-config.js +7 -0
- package/lib/config/env-config.js.map +1 -0
- package/lib/docs.config.d.ts +48 -0
- package/lib/docs.config.d.ts.map +1 -0
- package/lib/index.d.ts +4 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +2 -0
- package/lib/index.js.map +1 -0
- package/lib/loaders/search.d.ts +1 -0
- package/lib/loaders/search.d.ts.map +1 -0
- package/lib/module.d.ts +4 -0
- package/lib/module.d.ts.map +1 -0
- package/lib/module.js +11 -0
- package/lib/module.js.map +1 -0
- package/lib/pages/ArticlePage/ArticlePage.d.ts +4 -0
- package/lib/pages/ArticlePage/ArticlePage.d.ts.map +1 -0
- package/lib/pages/ArticlePage/ArticlePage.js +222 -0
- package/lib/pages/ArticlePage/ArticlePage.js.map +1 -0
- package/lib/pages/ArticlePage/index.d.ts +3 -0
- package/lib/pages/ArticlePage/index.d.ts.map +1 -0
- package/lib/pages/ArticlePage/index.js +3 -0
- package/lib/pages/ArticlePage/index.js.map +1 -0
- package/lib/pages/CategoryCollection/CategoryCollection.d.ts +4 -0
- package/lib/pages/CategoryCollection/CategoryCollection.d.ts.map +1 -0
- package/lib/pages/CategoryCollection/CategoryCollection.js +103 -0
- package/lib/pages/CategoryCollection/CategoryCollection.js.map +1 -0
- package/lib/pages/CategoryCollection/index.d.ts +3 -0
- package/lib/pages/CategoryCollection/index.d.ts.map +1 -0
- package/lib/pages/CategoryCollection/index.js +3 -0
- package/lib/pages/CategoryCollection/index.js.map +1 -0
- package/lib/pages/Help/HelpIndex.d.ts +4 -0
- package/lib/pages/Help/HelpIndex.d.ts.map +1 -0
- package/lib/pages/Help/HelpIndex.js +44 -0
- package/lib/pages/Help/HelpIndex.js.map +1 -0
- package/lib/pages/Help/index.d.ts +4 -0
- package/lib/pages/Help/index.d.ts.map +1 -0
- package/lib/pages/Help/index.js +226 -0
- package/lib/pages/Help/index.js.map +1 -0
- package/lib/pages/Landing/index.d.ts +3 -0
- package/lib/pages/Landing/index.d.ts.map +1 -0
- package/lib/pages/Landing/index.js +281 -0
- package/lib/pages/Landing/index.js.map +1 -0
- package/lib/routes.json +2533 -0
- package/lib/seo.d.ts +22 -0
- package/lib/seo.d.ts.map +1 -0
- package/lib/slot-fill/FooterFill.d.ts +3 -0
- package/lib/slot-fill/FooterFill.d.ts.map +1 -0
- package/lib/slot-fill/FooterFill.js +18 -0
- package/lib/slot-fill/FooterFill.js.map +1 -0
- package/lib/slot-fill/LogoFill.d.ts +5 -0
- package/lib/slot-fill/LogoFill.d.ts.map +1 -0
- package/lib/slot-fill/LogoFill.js +74 -0
- package/lib/slot-fill/LogoFill.js.map +1 -0
- package/lib/slot-fill/consts.d.ts +5 -0
- package/lib/slot-fill/consts.d.ts.map +1 -0
- package/lib/slot-fill/consts.js +1 -0
- package/lib/slot-fill/consts.js.map +1 -0
- package/lib/slot-fill/index.d.ts +4 -0
- package/lib/slot-fill/index.d.ts.map +1 -0
- package/lib/templates/assets/images/add-link-frontend.png +0 -0
- package/lib/templates/assets/images/add-package-backend.png +0 -0
- package/lib/templates/assets/images/add-to-backend-module.png +0 -0
- package/lib/templates/assets/images/add-upload-client-frontend.png +0 -0
- package/lib/templates/assets/images/additional-parameters.png +0 -0
- package/lib/templates/assets/images/aeh-implementation.png +0 -0
- package/lib/templates/assets/images/aeh-usage.png +0 -0
- package/lib/templates/assets/images/apollo-client/recommendation_cache_mgmt.png +0 -0
- package/lib/templates/assets/images/app-deploy-new-version/jenkins1.PNG +0 -0
- package/lib/templates/assets/images/app-deploy-new-version/jenkins2.PNG +0 -0
- package/lib/templates/assets/images/auth-wrapper-code.png +0 -0
- package/lib/templates/assets/images/cdebase.png +0 -0
- package/lib/templates/assets/images/cdm-locales-directory.png +0 -0
- package/lib/templates/assets/images/client-settings.png +0 -0
- package/lib/templates/assets/images/codegen_file_update.png +0 -0
- package/lib/templates/assets/images/configuration.png +0 -0
- package/lib/templates/assets/images/copy-plugin.png +0 -0
- package/lib/templates/assets/images/docusaurus.png +0 -0
- package/lib/templates/assets/images/error-link.png +0 -0
- package/lib/templates/assets/images/error-sample.png +0 -0
- package/lib/templates/assets/images/extension copy.png +0 -0
- package/lib/templates/assets/images/extension.png +0 -0
- package/lib/templates/assets/images/graphql/graphql-folder-backend.png +0 -0
- package/lib/templates/assets/images/graphql/graphql-folder-with-gql.png +0 -0
- package/lib/templates/assets/images/i18n-config.png +0 -0
- package/lib/templates/assets/images/image.png +0 -0
- package/lib/templates/assets/images/logo.svg +10 -0
- package/lib/templates/assets/images/logo1.svg +1 -0
- package/lib/templates/assets/images/modify-upload-false-server.png +0 -0
- package/lib/templates/assets/images/navigation-auth-enabled.png +0 -0
- package/lib/templates/assets/images/org-dashboard-navigation.png +0 -0
- package/lib/templates/assets/images/org-navigation.png +0 -0
- package/lib/templates/assets/images/preferences_graphql_type.png +0 -0
- package/lib/templates/assets/images/provider.png +0 -0
- package/lib/templates/assets/images/route-config.png +0 -0
- package/lib/templates/assets/images/service-accounts.png +0 -0
- package/lib/templates/assets/images/source-code/source-code-environments.png +0 -0
- package/lib/templates/assets/images/source-code/source-code-organization.png +0 -0
- package/lib/templates/assets/images/spin-clone-develop-deployment/jenkins-changes.png +0 -0
- package/lib/templates/assets/images/spin-clone-develop-deployment/lerna-changes.png +0 -0
- package/lib/templates/assets/images/spin-clone-develop-deployment/root-package-json-changes.png +0 -0
- package/lib/templates/assets/images/spin-clone-develop-deployment/values-dev-changes.png +0 -0
- package/lib/templates/assets/images/sso-mappers.png +0 -0
- package/lib/templates/assets/images/sso-picture-mapper.png +0 -0
- package/lib/templates/assets/images/sso-settings.png +0 -0
- package/lib/templates/assets/images/timesheet_apollo_cache.png +0 -0
- package/lib/templates/assets/images/timesheet_query.png +0 -0
- package/lib/templates/assets/images/tutorial/docsVersionDropdown.png +0 -0
- package/lib/templates/assets/images/tutorial/localeDropdown.png +0 -0
- package/lib/templates/assets/images/unauthenticated.png +0 -0
- package/lib/templates/assets/images/undraw_docusaurus_mountain.svg +170 -0
- package/lib/templates/assets/images/undraw_docusaurus_react.svg +169 -0
- package/lib/templates/assets/images/undraw_docusaurus_tree.svg +1 -0
- package/lib/templates/assets/images/vite-plugin-config.png +0 -0
- package/lib/templates/content/docs/Generators/Project/generate-fullproject.md +12 -0
- package/lib/templates/content/docs/LLM/Logger.llm.md +194 -0
- package/lib/templates/content/docs/LLM/backend-proxies-services-llm.md +2687 -0
- package/lib/templates/content/docs/LLM/backend-service-llm.md +3384 -0
- package/lib/templates/content/docs/LLM/db_migration_llm.md +954 -0
- package/lib/templates/content/docs/LLM/frontend/REMIX-15.3-upgrade-llm.md +1245 -0
- package/lib/templates/content/docs/LLM/inngest/INNGEST_FUNCTION_DEVELOPMENT_GUIDE_LLM.md +1241 -0
- package/lib/templates/content/docs/LLM/inngest/INNGEST_NAMESPACE_LLM.md +384 -0
- package/lib/templates/content/docs/LLM/llm_workflow_namespace.md +384 -0
- package/lib/templates/content/docs/LLM/organization-components-form-llm.md +1395 -0
- package/lib/templates/content/docs/LLM/page-component-llm.md +173 -0
- package/lib/templates/content/docs/LLM/preferences-settings-llm.md +2781 -0
- package/lib/templates/content/docs/LLM/tailwind-css-llm.md +502 -0
- package/lib/templates/content/docs/UI/SchemaBasedUI.md +334 -0
- package/lib/templates/content/docs/UI/SlotFillComponent.md +334 -0
- package/lib/templates/content/docs/adminide-modules/account/auth0-login.md +31 -0
- package/lib/templates/content/docs/adminide-modules/account/index.md +14 -0
- package/lib/templates/content/docs/adminide-modules/account/keycloak-remix-setup.md +86 -0
- package/lib/templates/content/docs/adminide-modules/account/remix-auth-setup.md +79 -0
- package/lib/templates/content/docs/adminide-modules/account/various-auth-qatest.md +157 -0
- package/lib/templates/content/docs/adminide-modules/api-builders/graphql.md +906 -0
- package/lib/templates/content/docs/adminide-modules/billing/payments/index.md +14 -0
- package/lib/templates/content/docs/adminide-modules/billing/payments/stripe/index.md +14 -0
- package/lib/templates/content/docs/adminide-modules/billing/payments/stripe/settingup-stripe-locally.md +25 -0
- package/lib/templates/content/docs/adminide-modules/billing/tier-config.md +293 -0
- package/lib/templates/content/docs/adminide-modules/connectors/Connector.md +207 -0
- package/lib/templates/content/docs/adminide-modules/file-upload/index.md +16 -0
- package/lib/templates/content/docs/adminide-modules/file-upload/setup.md +435 -0
- package/lib/templates/content/docs/adminide-modules/file-upload/upload-file-using-signed-url.md +161 -0
- package/lib/templates/content/docs/adminide-modules/preferences/AddAdditionalPermissions.md +151 -0
- package/lib/templates/content/docs/adminide-modules/preferences/Configuration.md +241 -0
- package/lib/templates/content/docs/adminide-modules/preferences/Policy-Configuration.md +61 -0
- package/lib/templates/content/docs/adminide-modules/preferences/UI-components/ResourceSettingsLoader.md +319 -0
- package/lib/templates/content/docs/adminide-modules/preferences/contribute_scope_target.md +280 -0
- package/lib/templates/content/docs/adminide-modules/preferences/generate-urii.md +94 -0
- package/lib/templates/content/docs/adminide-modules/preferences/index.md +28 -0
- package/lib/templates/content/docs/adminide-modules/preferences/machine-configuration.md +157 -0
- package/lib/templates/content/docs/adminide-modules/preferences/pageSettings/generateCdecodeUri.md +1289 -0
- package/lib/templates/content/docs/adminide-modules/preferences/pageSettings/migratingFromUseSettings.md +215 -0
- package/lib/templates/content/docs/adminide-modules/preferences/permissions/Roles-Permissions.md +72 -0
- package/lib/templates/content/docs/adminide-modules/preferences/permissions/settingUserPermissions.md +139 -0
- package/lib/templates/content/docs/adminide-modules/preferences/preference-dependency.md +138 -0
- package/lib/templates/content/docs/adminide-modules/preferences/route-based-configuration.md +41 -0
- package/lib/templates/content/docs/adminide-modules/preferences/schema-configuration.md +71 -0
- package/lib/templates/content/docs/adminide-modules/preferences/supported.md +24 -0
- package/lib/templates/content/docs/adminide-modules/preferences/useSettingsLoader.md +248 -0
- package/lib/templates/content/docs/adminide-modules/project-tools/auth-providers.md +1317 -0
- package/lib/templates/content/docs/adminide-modules/project-tools/keycloak-guide.md +543 -0
- package/lib/templates/content/docs/adminide-modules/project-tools/tenant-management/tenant-based-authentication.md +846 -0
- package/lib/templates/content/docs/adminide-modules/project-tools/tenant-management/tenant-management.md +708 -0
- package/lib/templates/content/docs/adminide-modules/project-tools/tenant-management/tenants.md +1117 -0
- package/lib/templates/content/docs/chrome-extension/index.md +14 -0
- package/lib/templates/content/docs/chrome-extension/setup.md +30 -0
- package/lib/templates/content/docs/contributing/adding-package.md +23 -0
- package/lib/templates/content/docs/contributing/adding_new_modules.md +99 -0
- package/lib/templates/content/docs/contributing/architecture-updates.md +19 -0
- package/lib/templates/content/docs/contributing/avoid-using-promises-ui.md +116 -0
- package/lib/templates/content/docs/contributing/coding-guidelines.md +111 -0
- package/lib/templates/content/docs/contributing/do-and-dont.md +42 -0
- package/lib/templates/content/docs/contributing/faq.md +22 -0
- package/lib/templates/content/docs/contributing/folder-setup/browser.md +12 -0
- package/lib/templates/content/docs/contributing/folder-setup/config.md +12 -0
- package/lib/templates/content/docs/contributing/folder-setup/containers-server.md +12 -0
- package/lib/templates/content/docs/contributing/folder-setup/core.md +12 -0
- package/lib/templates/content/docs/contributing/folder-setup/graphql.md +12 -0
- package/lib/templates/content/docs/contributing/folder-setup/index.md +30 -0
- package/lib/templates/content/docs/contributing/folder-setup/module.md +12 -0
- package/lib/templates/content/docs/contributing/folder-setup/server.md +12 -0
- package/lib/templates/content/docs/contributing/folder-setup/services.md +12 -0
- package/lib/templates/content/docs/contributing/folder-setup/store.md +12 -0
- package/lib/templates/content/docs/contributing/frontend-coding.md +30 -0
- package/lib/templates/content/docs/contributing/git-subtree-sharing.md +73 -0
- package/lib/templates/content/docs/contributing/graphql-subscriptions.md +69 -0
- package/lib/templates/content/docs/contributing/how-to-contribute.md +30 -0
- package/lib/templates/content/docs/contributing/how_to_check_pure_esm.md +29 -0
- package/lib/templates/content/docs/contributing/index.md +60 -0
- package/lib/templates/content/docs/contributing/installation-issues.md +23 -0
- package/lib/templates/content/docs/contributing/keyboard-shortcut.md +131 -0
- package/lib/templates/content/docs/contributing/language/locale-support.md +12 -0
- package/lib/templates/content/docs/contributing/lerna-build-tools.md +516 -0
- package/lib/templates/content/docs/contributing/lerna-yarn-workspaces.md +95 -0
- package/lib/templates/content/docs/contributing/lint-and-formatter.md +20 -0
- package/lib/templates/content/docs/contributing/mobile-setup.md +16 -0
- package/lib/templates/content/docs/contributing/project-setup.md +233 -0
- package/lib/templates/content/docs/contributing/react/index.md +14 -0
- package/lib/templates/content/docs/contributing/react/lazy-component.md +70 -0
- package/lib/templates/content/docs/contributing/run-various-options.md +124 -0
- package/lib/templates/content/docs/contributing/schema-first-graphql-types.md +37 -0
- package/lib/templates/content/docs/contributing/source-code-organization.md +57 -0
- package/lib/templates/content/docs/contributing/staging-docker.md +88 -0
- package/lib/templates/content/docs/contributing/third-party/apollo-client-v3-tutorials.md +28 -0
- package/lib/templates/content/docs/contributing/third-party/index.md +18 -0
- package/lib/templates/content/docs/contributing/typescript-contribution.md +16 -0
- package/lib/templates/content/docs/devops/app-deploy-new-version.md +30 -0
- package/lib/templates/content/docs/devops/index.md +14 -0
- package/lib/templates/content/docs/devops/mobile-jenkins-build.md +40 -0
- package/lib/templates/content/docs/devops/versioning-the-project.md +128 -0
- package/lib/templates/content/docs/error-handler/application-error-handler.md +40 -0
- package/lib/templates/content/docs/error-handler/error-handling.md +26 -0
- package/lib/templates/content/docs/error-handler/index.md +16 -0
- package/lib/templates/content/docs/error-handler/logging-errors.md +14 -0
- package/lib/templates/content/docs/feature-api/copy-operation.md +427 -0
- package/lib/templates/content/docs/feature-api/feature-browser/assets.md +46 -0
- package/lib/templates/content/docs/feature-api/feature-browser/auth-permissions.md +12 -0
- package/lib/templates/content/docs/feature-api/feature-browser/feature.md +131 -0
- package/lib/templates/content/docs/feature-api/feature-browser/index.md +22 -0
- package/lib/templates/content/docs/feature-api/feature-browser/routes-menu.md +110 -0
- package/lib/templates/content/docs/feature-api/feature-browser/routing-convention.md +124 -0
- package/lib/templates/content/docs/feature-api/feature-browser/routing.md +338 -0
- package/lib/templates/content/docs/feature-api/feature-mobile/auth-permissions.md +20 -0
- package/lib/templates/content/docs/feature-api/feature-mobile/feature.md +130 -0
- package/lib/templates/content/docs/feature-api/feature-mobile/index.md +18 -0
- package/lib/templates/content/docs/feature-api/feature-mobile/navigation.md +187 -0
- package/lib/templates/content/docs/feature-api/feature-server/Scheduling.md +44 -0
- package/lib/templates/content/docs/feature-api/feature-server/dataloader.md +320 -0
- package/lib/templates/content/docs/feature-api/feature-server/dependency-injection.md +81 -0
- package/lib/templates/content/docs/feature-api/feature-server/feature.md +65 -0
- package/lib/templates/content/docs/feature-api/feature-server/generic-dataloader.md +135 -0
- package/lib/templates/content/docs/feature-api/feature-server/index.md +40 -0
- package/lib/templates/content/docs/feature-api/feature-server/migration.md +127 -0
- package/lib/templates/content/docs/feature-api/feature-server/mongo-model.md +72 -0
- package/lib/templates/content/docs/feature-api/feature-server/permissions.md +12 -0
- package/lib/templates/content/docs/feature-api/feature-server/policies.md +57 -0
- package/lib/templates/content/docs/feature-api/feature-server/preferences.md +57 -0
- package/lib/templates/content/docs/feature-api/feature-server/repositories.md +114 -0
- package/lib/templates/content/docs/feature-api/feature-server/resolvers.md +126 -0
- package/lib/templates/content/docs/feature-api/feature-server/rules.md +132 -0
- package/lib/templates/content/docs/feature-api/feature-server/schema.md +12 -0
- package/lib/templates/content/docs/feature-api/feature-server/services.md +102 -0
- package/lib/templates/content/docs/feature-api/feature-server/setup-resource-crud.md +359 -0
- package/lib/templates/content/docs/feature-api/index.md +18 -0
- package/lib/templates/content/docs/graphql/apolloClient-mutation.md +94 -0
- package/lib/templates/content/docs/graphql/index.md +14 -0
- package/lib/templates/content/docs/graphql/scalars.md +15 -0
- package/lib/templates/content/docs/help/index.md +14 -0
- package/lib/templates/content/docs/help/intro.md +16 -0
- package/lib/templates/content/docs/intl/ant-design-menu-translation.md +74 -0
- package/lib/templates/content/docs/intl/intl-namespace.md +129 -0
- package/lib/templates/content/docs/intl/vite-plugin-intl.md +87 -0
- package/lib/templates/content/docs/intl/webpack-plugin-intl.md +12 -0
- package/lib/templates/content/docs/intro.md +18 -0
- package/lib/templates/content/docs/knowledge/basic-fullstack.md +238 -0
- package/lib/templates/content/docs/mailing/index.md +14 -0
- package/lib/templates/content/docs/mailing/mailing-template.md +148 -0
- package/lib/templates/content/docs/mobile/App-navigation-generator.md +410 -0
- package/lib/templates/content/docs/mobile/MobileTestCases.md +264 -0
- package/lib/templates/content/docs/mobile/eas-profile-build.md +107 -0
- package/lib/templates/content/docs/mobile/expo-push-notification-setup.md +216 -0
- package/lib/templates/content/docs/mobile/index.md +14 -0
- package/lib/templates/content/docs/mobile/routes.md +83 -0
- package/lib/templates/content/docs/organization/adding-account-context.md +116 -0
- package/lib/templates/content/docs/organization/adding-org-mobile-navigation.md +22 -0
- package/lib/templates/content/docs/organization/adding-org-web-navigation.md +12 -0
- package/lib/templates/content/docs/organization/index.md +20 -0
- package/lib/templates/content/docs/organization/initialization.md +20 -0
- package/lib/templates/content/docs/organization/organization-resource-vs-resource.md +112 -0
- package/lib/templates/content/docs/remix/configuration/component-structure-best-practices.md +152 -0
- package/lib/templates/content/docs/remix/configuration/configurations.md +218 -0
- package/lib/templates/content/docs/remix/configuration/css-import-and-stylesheets.md +142 -0
- package/lib/templates/content/docs/remix/configuration/dont-subcomponent-network.md +166 -0
- package/lib/templates/content/docs/remix/configuration/generated-data-loaders.md +122 -0
- package/lib/templates/content/docs/remix/configuration/generated-resource-loaders.md +257 -0
- package/lib/templates/content/docs/remix/configuration/query-params-generator.md +216 -0
- package/lib/templates/content/docs/remix/configuration/routes-extra-icons.md +103 -0
- package/lib/templates/content/docs/remix/configuration/routes-json-advanced.md +86 -0
- package/lib/templates/content/docs/remix/configuration/routes-json-auth.md +113 -0
- package/lib/templates/content/docs/remix/configuration/routes-json-best-practices.md +55 -0
- package/lib/templates/content/docs/remix/configuration/routes-json-fields.md +79 -0
- package/lib/templates/content/docs/remix/configuration/routes-json-graphql.md +79 -0
- package/lib/templates/content/docs/remix/configuration/routes-json-index.md +112 -0
- package/lib/templates/content/docs/remix/configuration/routes-json-loaders.md +165 -0
- package/lib/templates/content/docs/remix/configuration/routes-json-middleware.md +196 -0
- package/lib/templates/content/docs/remix/configuration/routes-json-overview.md +53 -0
- package/lib/templates/content/docs/remix/data-loaders.md +43 -0
- package/lib/templates/content/docs/remix/devtools/remix-devtools.md +58 -0
- package/lib/templates/content/docs/remix/examples/changes-using-servercode.md +79 -0
- package/lib/templates/content/docs/remix/extra-icons.md +62 -0
- package/lib/templates/content/docs/remix/extra-links.md +65 -0
- package/lib/templates/content/docs/remix/generated-data-loaders.md +114 -0
- package/lib/templates/content/docs/remix/queryParamsGenerator.md +89 -0
- package/lib/templates/content/docs/remix/resources.md +16 -0
- package/lib/templates/content/docs/remix/styles.md +132 -0
- package/lib/templates/content/docs/remix/wiki.md +12 -0
- package/lib/templates/content/docs/security/auth-wrapper/auth-wrapper.md +24 -0
- package/lib/templates/content/docs/security/index.md +18 -0
- package/lib/templates/content/docs/security/secure-button-mobilenative.md +88 -0
- package/lib/templates/content/docs/security/secure-button-web.md +89 -0
- package/lib/templates/content/docs/server-side/account-customization.md +82 -0
- package/lib/templates/content/docs/server-side/apollo/caching.md +164 -0
- package/lib/templates/content/docs/server-side/backend-architecture/FINAL-DECISION.md +209 -0
- package/lib/templates/content/docs/server-side/backend-architecture/TRUE-FINAL-ARCHITECTURE.md +603 -0
- package/lib/templates/content/docs/server-side/backend-architecture/index1.md +0 -0
- package/lib/templates/content/docs/server-side/backend-coding.md +839 -0
- package/lib/templates/content/docs/server-side/e2b/manageing-template.md +197 -0
- package/lib/templates/content/docs/server-side/index.md +14 -0
- package/lib/templates/content/docs/server-side/inngest-functions-module.md +309 -0
- package/lib/templates/content/docs/server-side/listen-stripe-events.md +43 -0
- package/lib/templates/content/docs/server-side/slug-service.md +323 -0
- package/lib/templates/content/docs/tests/index.md +18 -0
- package/lib/templates/content/docs/tests/jest-test-debug-vscode.md +40 -0
- package/lib/templates/content/docs/tests/known-errors.md +116 -0
- package/lib/templates/content/docs/tests/service-test-template.md +118 -0
- package/lib/templates/content/docs/tests/test-setup.md +93 -0
- package/lib/templates/content/docs/xstate.md +23 -0
- package/lib/types.d.ts +37 -0
- package/lib/types.d.ts.map +1 -0
- package/lib/utils/docsNavigation.d.ts +9 -0
- package/lib/utils/docsNavigation.d.ts.map +1 -0
- package/lib/utils/docsNavigation.js +37 -0
- package/lib/utils/docsNavigation.js.map +1 -0
- package/lib/utils/helpCenterUtils.d.ts +26 -0
- package/lib/utils/helpCenterUtils.d.ts.map +1 -0
- package/lib/utils/index.d.ts +3 -0
- package/lib/utils/index.d.ts.map +1 -0
- package/lib/utils/index.js +3 -0
- package/lib/utils/index.js.map +1 -0
- package/lib/utils/markdownLoader.d.ts +36 -0
- package/lib/utils/markdownLoader.d.ts.map +1 -0
- package/lib/utils/markdownLoader.js +2242 -0
- package/lib/utils/markdownLoader.js.map +1 -0
- 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.
|
package/lib/templates/content/docs/adminide-modules/preferences/permissions/Roles-Permissions.md
ADDED
|
@@ -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
|
+

|
|
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
|
+

|
|
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
|
+
```
|