@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.
- 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,129 @@
|
|
|
1
|
+
---
|
|
2
|
+
meta:
|
|
3
|
+
title: Translations Namespaces
|
|
4
|
+
description: Translations Namespaces
|
|
5
|
+
date: '2023-06-02T00:00:00'
|
|
6
|
+
updated: '2024-06-02T00:00:00'
|
|
7
|
+
excerpt: Translations Namespaces...
|
|
8
|
+
headers:
|
|
9
|
+
Cache-Control: no-cache
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## Translations Namespaces
|
|
13
|
+
|
|
14
|
+
To maintain a consistent, organized, and scalable approach to naming translation keys in your React components, we ask developers to follow a specific naming convention. This helps ensure that all translation keys are easily understandable and maintainable. Here’s how to structure your translation keys:
|
|
15
|
+
|
|
16
|
+
### Guidelines
|
|
17
|
+
|
|
18
|
+
1. **Use Unique Prefixes for Each Module**
|
|
19
|
+
- Ensure each module has a unique prefix. This helps avoid conflicts when translation keys are similar across different modules.
|
|
20
|
+
- Example: Use `user.profile.name` and `admin.profile.name` instead of just `profile.name`.
|
|
21
|
+
|
|
22
|
+
2. **Consistent Naming Convention**
|
|
23
|
+
- Stick to a consistent naming convention across all files. This includes using lower case, underscores or dots for separating words, and descriptive names.
|
|
24
|
+
- Example: Use `user.settings.update_email` instead of `UserSettings_UpdateEmail`.
|
|
25
|
+
|
|
26
|
+
3. **File-Based Namespacing**
|
|
27
|
+
- Divide translation files by modules and features. Each file should represent a specific module or feature.
|
|
28
|
+
- Example:
|
|
29
|
+
- `user.json` for user-related translations.
|
|
30
|
+
- `admin.json` for admin-related translations.
|
|
31
|
+
- `dashboard.json` for dashboard-related translations.
|
|
32
|
+
|
|
33
|
+
4. **Avoid Generic Names**
|
|
34
|
+
- Avoid using generic names for keys that might be reused across different modules.
|
|
35
|
+
- Example: Use `dashboard.header.title` instead of `header.title`.
|
|
36
|
+
|
|
37
|
+
5. **Centralized Key Registry**
|
|
38
|
+
- Maintain a centralized registry of translation keys to track and manage the keys used across the project.
|
|
39
|
+
- Use tools or scripts to check for duplicate keys and ensure consistency.
|
|
40
|
+
|
|
41
|
+
6. **Environment-Based Namespacing**
|
|
42
|
+
- If translations are environment-specific, include the environment in the key.
|
|
43
|
+
- Example: Use `dev.user.profile.name` and `prod.user.profile.name`.
|
|
44
|
+
|
|
45
|
+
7. **Version Control and Review Process**
|
|
46
|
+
- Implement a version control system for translation files.
|
|
47
|
+
- Establish a review process for adding new keys to ensure consistency and avoid conflicts.
|
|
48
|
+
|
|
49
|
+
8. **Use Contextual Information**
|
|
50
|
+
- Add contextual information to translation keys to make their purpose clear.
|
|
51
|
+
- Example: Use `button.submit_form` instead of just `submit`.
|
|
52
|
+
|
|
53
|
+
9. **Document Translation Key Patterns**
|
|
54
|
+
- Document the patterns and conventions used for naming translation keys in the project's README or a dedicated document.
|
|
55
|
+
|
|
56
|
+
10. **Fallback Strategy**
|
|
57
|
+
- Implement a fallback strategy for missing translations, specifying default values or default languages.
|
|
58
|
+
|
|
59
|
+
### Example of Structured Translation Files
|
|
60
|
+
|
|
61
|
+
#### user.json
|
|
62
|
+
|
|
63
|
+
```json
|
|
64
|
+
{
|
|
65
|
+
"user": {
|
|
66
|
+
"profile": {
|
|
67
|
+
"name": "Name",
|
|
68
|
+
"email": "Email",
|
|
69
|
+
"update_button": "Update Profile"
|
|
70
|
+
},
|
|
71
|
+
"settings": {
|
|
72
|
+
"update_email": "Update Email",
|
|
73
|
+
"change_password": "Change Password"
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
#### admin.json
|
|
80
|
+
|
|
81
|
+
```json
|
|
82
|
+
{
|
|
83
|
+
"admin": {
|
|
84
|
+
"dashboard": {
|
|
85
|
+
"title": "Admin Dashboard",
|
|
86
|
+
"user_management": "User Management"
|
|
87
|
+
},
|
|
88
|
+
"settings": {
|
|
89
|
+
"site_configuration": "Site Configuration",
|
|
90
|
+
"manage_roles": "Manage Roles"
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
#### dashboard.json
|
|
97
|
+
|
|
98
|
+
```json
|
|
99
|
+
{
|
|
100
|
+
"dashboard": {
|
|
101
|
+
"header": {
|
|
102
|
+
"title": "Dashboard",
|
|
103
|
+
"welcome_message": "Welcome to your dashboard"
|
|
104
|
+
},
|
|
105
|
+
"statistics": {
|
|
106
|
+
"total_users": "Total Users",
|
|
107
|
+
"active_sessions": "Active Sessions"
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
## Below note is internal to Admins
|
|
114
|
+
|
|
115
|
+
### Merging Translation Files
|
|
116
|
+
|
|
117
|
+
When merging translation files, ensure that:
|
|
118
|
+
|
|
119
|
+
1. **Consistent Naming**: Ensure that all keys follow the consistent naming convention.
|
|
120
|
+
2. **Unique Namespacing**: Verify that the keys have unique namespaces to prevent conflicts.
|
|
121
|
+
3. **Centralized Registry Check**: Cross-check the centralized registry to ensure no duplicates.
|
|
122
|
+
|
|
123
|
+
### Review Process
|
|
124
|
+
|
|
125
|
+
1. **Automated Scripts**: Use automated scripts to check for duplicate keys.
|
|
126
|
+
2. **Peer Review**: Implement a peer review process for adding or modifying translation keys.
|
|
127
|
+
3. **Testing**: Test the merged files in different environments to ensure no conflicts.
|
|
128
|
+
|
|
129
|
+
By following these additional standards and best practices, you can effectively manage and avoid conflicts when merging multiple translation files, ensuring a seamless and organized translation process.
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
---
|
|
2
|
+
meta:
|
|
3
|
+
title: Internationalization
|
|
4
|
+
description: Internationalization
|
|
5
|
+
date: '2023-06-02T00:00:00'
|
|
6
|
+
updated: '2024-06-02T00:00:00'
|
|
7
|
+
excerpt: Internationalization...
|
|
8
|
+
headers:
|
|
9
|
+
Cache-Control: no-cache
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## Internationalization
|
|
13
|
+
|
|
14
|
+
For internationalization we are using `i18nInternationalizationPlugin` from common-stack (`@common-stack/rollup-vite-utils`)
|
|
15
|
+
|
|
16
|
+
# Usage And Implementation
|
|
17
|
+
|
|
18
|
+
Each package has to define its own localization files inside folder `cdm-locales` . The directory would look something like this
|
|
19
|
+
|
|
20
|
+
`cdm-locales/en/translations.json`
|
|
21
|
+
|
|
22
|
+
where translations.json is the namespace. Once defined, the vite plugin will combine all the localization files and will generate files in `frontend-server/public/cdm-locales` folder having all the localization files data for each namespace combined, make sure to use the rollup copy plugin in rollup config of each package so that `cdm-locales` folder of that package is copied as it is to `lib`.
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
import { copy } from '@web/rollup-plugin-copy';
|
|
26
|
+
|
|
27
|
+
copy({ patterns: '**/cdm-locales/**/*', rootDir: './src' })
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
-> Declare plugin in frontend-server `vite.config.js`
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
import { i18nInternationalizationPlugin } from '@common-stack/rollup-vite-utils'
|
|
34
|
+
|
|
35
|
+
i18nInternationalizationPlugin({folderName: 'cdm-locales',
|
|
36
|
+
packages: ['@adminide-stack/*-browser','@adminide-stack/*-ant'],
|
|
37
|
+
namespaceResolution: 'basename',
|
|
38
|
+
}),
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
-> Add `cdm-locales ` folder inside each package where internationalization is required.
|
|
42
|
+
|
|
43
|
+
-> Add respective en, es or any other local translations. The folder structure would look like this
|
|
44
|
+
`cdm-locales/en/translations.json`
|
|
45
|
+
`cdm-locales/en/common.json`
|
|
46
|
+
`cdm-locales/es/translations.json`
|
|
47
|
+
|
|
48
|
+
-> Using hook `useTranslation` we can use the localization in our components
|
|
49
|
+
` const {t} = useTranslation()`
|
|
50
|
+
|
|
51
|
+
`t('profile.name', {defaultValue: 'Hello world'})`
|
|
52
|
+
|
|
53
|
+
## Namespaces
|
|
54
|
+
|
|
55
|
+
Namespaces are cool way to divide you translation into multiple files. Lets say for instance you want to provide a separate translation file for errors and validation you could add a separate namespace for it. By default we are using common name space that's why our translation files are named `common.json` if you want to add another namespace, you can add another file in cdm-locales folder of respective project for each locale like this `cdm-locales/en/validation.json`.
|
|
56
|
+
|
|
57
|
+
-> To switch to above namespace you can declate `useTranslation` like this
|
|
58
|
+
` const {t} = useTranslation('validation')`. Then all the translation would be taken from translation.json namespace file
|
|
59
|
+
|
|
60
|
+
-> Inorder to load the translation file of particular namespace for particular route during SSR you can export handle function similar to loaders and action like this
|
|
61
|
+
|
|
62
|
+
`export let handle = {
|
|
63
|
+
i18n: "validation",
|
|
64
|
+
};`
|
|
65
|
+
|
|
66
|
+
## Examples
|
|
67
|
+
|
|
68
|
+
- Directory
|
|
69
|
+
|
|
70
|
+

|
|
71
|
+
|
|
72
|
+
- Copy Plugin
|
|
73
|
+
|
|
74
|
+

|
|
75
|
+
|
|
76
|
+
- Plugin Config
|
|
77
|
+
|
|
78
|
+

|
|
79
|
+
|
|
80
|
+
## About i18nInternationalizationPlugin
|
|
81
|
+
|
|
82
|
+
We are using `i18nInternationalizationPlugin` from common-stack (`@common-stack/rollup-vite-utils`). The purpose of this plugin is to combine the localization files across different packages present inside the node_modules, we can pass the glob pattern to packages key that this plugin accepts and it will automatically match all packages inside the node_modules matching that pattern and will look into lib directory of those packages. If it finds the `cdm-locales` or a folder defined by `folderName` key, it will fetch the locales files from that folder and will merge the files of different packages into one and will generates files in `frontend-server/public/cdm-locales` which holds all the localization data of each namespace combined, which is then served as resources to i18next.
|
|
83
|
+
|
|
84
|
+
`i18nInternationalizationPlugin({folderName: 'cdm-locales',
|
|
85
|
+
packages: ['@adminide-stack/*-browser','@adminide-stack/*-ant'],
|
|
86
|
+
namespaceResolution: 'basename',
|
|
87
|
+
}),`
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
---
|
|
2
|
+
meta:
|
|
3
|
+
title: Introduction
|
|
4
|
+
description: Introduction
|
|
5
|
+
date: '2023-06-02T00:00:00'
|
|
6
|
+
updated: '2024-06-02T00:00:00'
|
|
7
|
+
excerpt: Introduction...
|
|
8
|
+
headers:
|
|
9
|
+
Cache-Control: no-cache
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## Introduction
|
|
13
|
+
|
|
14
|
+
# Introduction
|
|
15
|
+
|
|
16
|
+
Welcome to the CDE Basae Wiki. These pages are primarily intended for developers who working in CDEBase projects.
|
|
17
|
+
|
|
18
|
+
## Getting Started with CDE Base Code
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
# Developer Documentation Guide
|
|
2
|
+
|
|
3
|
+
This guide provides essential concepts and resources for developers working with our TypeScript/Apollo GraphQL stack. Each section includes detailed explanations and links to comprehensive documentation.
|
|
4
|
+
|
|
5
|
+
## Core Concepts
|
|
6
|
+
|
|
7
|
+
### Object-Oriented Programming (OOP) in TypeScript
|
|
8
|
+
|
|
9
|
+
**What it is:** Fundamental programming paradigm using classes, inheritance, encapsulation, and polymorphism in TypeScript.
|
|
10
|
+
|
|
11
|
+
**Why it matters:** Provides structure, reusability, and maintainability to your codebase. Essential for building scalable applications with clear architectural patterns.
|
|
12
|
+
|
|
13
|
+
**Key topics covered:**
|
|
14
|
+
|
|
15
|
+
- Classes and interfaces in TypeScript
|
|
16
|
+
- Inheritance and composition patterns
|
|
17
|
+
- Encapsulation and access modifiers
|
|
18
|
+
- Polymorphism and method overriding
|
|
19
|
+
- TypeScript-specific OOP features
|
|
20
|
+
|
|
21
|
+
**📖 Learn more:** [Object-Oriented Programming in TypeScript](https://www.freecodecamp.org/news/learn-object-oriented-programming-in-typescript/)
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
### Dependency Injection with InversifyJS
|
|
26
|
+
|
|
27
|
+
**What it is:** A design pattern that provides dependencies to a class rather than having the class create them internally.
|
|
28
|
+
|
|
29
|
+
**Why it matters:** Improves testability, reduces coupling, and makes your code more modular and maintainable. Essential for creating loosely coupled, testable applications.
|
|
30
|
+
|
|
31
|
+
**Key topics covered:**
|
|
32
|
+
|
|
33
|
+
- Inversion of Control (IoC) principles
|
|
34
|
+
- Container configuration and binding
|
|
35
|
+
- Decorator-based dependency injection
|
|
36
|
+
- Testing with mocked dependencies
|
|
37
|
+
- Advanced binding scenarios
|
|
38
|
+
|
|
39
|
+
**📖 Learn more:** [InversifyJS Documentation](https://github.com/inversify/InversifyJS)
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## Frontend Development
|
|
44
|
+
|
|
45
|
+
### Apollo Client Overview
|
|
46
|
+
|
|
47
|
+
Apollo Client is a comprehensive state management library for JavaScript that enables you to manage both local and remote data with GraphQL. It's the foundation of our frontend data layer.
|
|
48
|
+
|
|
49
|
+
### Optimistic UI Updates
|
|
50
|
+
|
|
51
|
+
**What it is:** A pattern where the UI immediately reflects the expected result of a mutation before the server responds.
|
|
52
|
+
|
|
53
|
+
**Why it matters:** Provides instant feedback to users, making your application feel faster and more responsive. Critical for creating smooth user experiences.
|
|
54
|
+
|
|
55
|
+
**Key topics covered:**
|
|
56
|
+
|
|
57
|
+
- Implementing optimistic responses
|
|
58
|
+
- Handling optimistic update failures
|
|
59
|
+
- Best practices for different mutation types
|
|
60
|
+
- Error handling and rollback strategies
|
|
61
|
+
|
|
62
|
+
**📖 Learn more:** [Optimistic UI with Apollo Client](https://www.apollographql.com/docs/react/performance/optimistic-ui)
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
### Client-Side Schema
|
|
67
|
+
|
|
68
|
+
**What it is:** Extending your GraphQL schema with client-only fields and types that exist purely on the frontend.
|
|
69
|
+
|
|
70
|
+
**Why it matters:** Allows you to manage local state using the same GraphQL patterns as remote data, creating a unified data layer.
|
|
71
|
+
|
|
72
|
+
**Key topics covered:**
|
|
73
|
+
|
|
74
|
+
- Defining client-side schema extensions
|
|
75
|
+
- Local resolvers implementation
|
|
76
|
+
- Combining remote and local data
|
|
77
|
+
- Type safety with client fields
|
|
78
|
+
|
|
79
|
+
**📖 Learn more:** [Client-Side Schema](https://www.apollographql.com/docs/react/local-state/client-side-schema)
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
### Offset-Based Pagination
|
|
84
|
+
|
|
85
|
+
**What it is:** A pagination strategy using offset and limit parameters to fetch specific ranges of data.
|
|
86
|
+
|
|
87
|
+
**Why it matters:** Essential for handling large datasets efficiently. Provides predictable pagination behavior for tables and lists.
|
|
88
|
+
|
|
89
|
+
**Key topics covered:**
|
|
90
|
+
|
|
91
|
+
- Implementing offset-based pagination
|
|
92
|
+
- Cache management for paginated data
|
|
93
|
+
- Performance considerations
|
|
94
|
+
- UI integration patterns
|
|
95
|
+
|
|
96
|
+
**📖 Learn more:** [Offset-Based Pagination](https://www.apollographql.com/docs/react/pagination/offset-based)
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
### Key Arguments in Pagination
|
|
101
|
+
|
|
102
|
+
**What it is:** Configuration that tells Apollo Client which arguments should be considered when caching paginated queries.
|
|
103
|
+
|
|
104
|
+
**Why it matters:** Ensures proper cache behavior when the same query is used with different pagination parameters or filters.
|
|
105
|
+
|
|
106
|
+
**Key topics covered:**
|
|
107
|
+
|
|
108
|
+
- Configuring keyArgs for pagination
|
|
109
|
+
- Cache key generation
|
|
110
|
+
- Handling dynamic arguments
|
|
111
|
+
- Debugging cache behavior
|
|
112
|
+
|
|
113
|
+
**📖 Learn more:** [Key Arguments Configuration](https://www.apollographql.com/docs/react/pagination/key-args)
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
### Local State Management
|
|
118
|
+
|
|
119
|
+
**What it is:** Managing application state that doesn't come from the server using Apollo Client's local state capabilities.
|
|
120
|
+
|
|
121
|
+
**Why it matters:** Provides a unified approach to handling both remote and local data, reducing the need for additional state management libraries.
|
|
122
|
+
|
|
123
|
+
**Key topics covered:**
|
|
124
|
+
|
|
125
|
+
- Reactive variables
|
|
126
|
+
- Local-only fields
|
|
127
|
+
- Client-side resolvers
|
|
128
|
+
- State persistence strategies
|
|
129
|
+
|
|
130
|
+
**📖 Learn more:** [Local State Management](https://www.apollographql.com/docs/react/local-state/local-state-management)
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
### Client-Side Field Policies
|
|
135
|
+
|
|
136
|
+
**What it is:** Custom logic for reading, writing, and merging specific fields in Apollo Client's cache.
|
|
137
|
+
|
|
138
|
+
**Why it matters:** Enables complex cache behaviors, computed fields, and custom data transformations at the field level.
|
|
139
|
+
|
|
140
|
+
**Key topics covered:**
|
|
141
|
+
|
|
142
|
+
- Read and merge functions
|
|
143
|
+
- Field-level cache customization
|
|
144
|
+
- Computed fields implementation
|
|
145
|
+
- Performance optimization techniques
|
|
146
|
+
|
|
147
|
+
**📖 Learn more:** [Managing State with Field Policies](https://www.apollographql.com/docs/react/local-state/managing-state-with-field-policies)
|
|
148
|
+
|
|
149
|
+
---
|
|
150
|
+
|
|
151
|
+
### Type Policies
|
|
152
|
+
|
|
153
|
+
**What it is:** Configuration that defines how Apollo Client handles caching and normalization for specific GraphQL types.
|
|
154
|
+
|
|
155
|
+
**Why it matters:** Controls cache behavior, enables custom key generation, and optimizes cache performance for your specific data model.
|
|
156
|
+
|
|
157
|
+
**Key topics covered:**
|
|
158
|
+
|
|
159
|
+
- Custom key fields configuration
|
|
160
|
+
- Type-specific cache policies
|
|
161
|
+
- Cache normalization strategies
|
|
162
|
+
- Performance optimization
|
|
163
|
+
|
|
164
|
+
**📖 Learn more:** [Type Policies Configuration](https://www.apollographql.com/docs/react/caching/cache-configuration#customizing-type-policies)
|
|
165
|
+
|
|
166
|
+
---
|
|
167
|
+
|
|
168
|
+
### Cache Management
|
|
169
|
+
|
|
170
|
+
**What it is:** Direct interaction with Apollo Client's normalized cache for reading, writing, and updating data.
|
|
171
|
+
|
|
172
|
+
**Why it matters:** Enables fine-grained control over cache behavior, manual cache updates, and complex state synchronization scenarios.
|
|
173
|
+
|
|
174
|
+
**Key topics covered:**
|
|
175
|
+
|
|
176
|
+
- Reading from and writing to cache
|
|
177
|
+
- Cache eviction strategies
|
|
178
|
+
- Manual cache updates
|
|
179
|
+
- Cache debugging techniques
|
|
180
|
+
|
|
181
|
+
**📖 Learn more:** [Cache Interaction](https://www.apollographql.com/docs/react/caching/cache-interaction)
|
|
182
|
+
|
|
183
|
+
---
|
|
184
|
+
|
|
185
|
+
### Schema-Driven Testing
|
|
186
|
+
|
|
187
|
+
**What it is:** Testing approach that leverages your GraphQL schema to ensure type safety and consistency in tests.
|
|
188
|
+
|
|
189
|
+
**Why it matters:** Provides confidence that your frontend code works correctly with your GraphQL API, catching type mismatches and schema changes early.
|
|
190
|
+
|
|
191
|
+
**Key topics covered:**
|
|
192
|
+
|
|
193
|
+
- MockedProvider setup
|
|
194
|
+
- Schema-based mocking
|
|
195
|
+
- Integration testing strategies
|
|
196
|
+
- Type-safe test utilities
|
|
197
|
+
|
|
198
|
+
**📖 Learn more:** [Schema-Driven Testing](https://www.apollographql.com/docs/react/development-testing/schema-driven-testing)
|
|
199
|
+
|
|
200
|
+
---
|
|
201
|
+
|
|
202
|
+
## Core Backend
|
|
203
|
+
|
|
204
|
+
### Apollo Server
|
|
205
|
+
|
|
206
|
+
**What it is:** A production-ready, spec-compliant GraphQL server that works with any GraphQL schema built with GraphQL.js.
|
|
207
|
+
|
|
208
|
+
**Why it matters:** Provides the foundation for your GraphQL API, handling schema execution, middleware, and integration with various data sources.
|
|
209
|
+
|
|
210
|
+
**Key topics covered:**
|
|
211
|
+
|
|
212
|
+
- Server setup and configuration
|
|
213
|
+
- Schema definition and resolvers
|
|
214
|
+
- Middleware and plugins
|
|
215
|
+
- Data source integration
|
|
216
|
+
- Performance and security considerations
|
|
217
|
+
|
|
218
|
+
**📖 Learn more:** [Apollo Server Getting Started](https://www.apollographql.com/docs/apollo-server/getting-started)
|
|
219
|
+
|
|
220
|
+
---
|
|
221
|
+
|
|
222
|
+
## Getting Started
|
|
223
|
+
|
|
224
|
+
1. **Start with Core Concepts** - Understand OOP principles and dependency injection patterns
|
|
225
|
+
2. **Set up Apollo Server** - Establish your GraphQL backend foundation
|
|
226
|
+
3. **Configure Apollo Client** - Set up your frontend data layer
|
|
227
|
+
4. **Implement Data Patterns** - Apply pagination, caching, and state management
|
|
228
|
+
5. **Add Testing** - Implement schema-driven testing for reliability
|
|
229
|
+
|
|
230
|
+
## Additional Resources
|
|
231
|
+
|
|
232
|
+
- **Apollo Documentation:** [https://www.apollographql.com/docs/](https://www.apollographql.com/docs/)
|
|
233
|
+
- **TypeScript Handbook:** [https://www.typescriptlang.org/docs/](https://www.typescriptlang.org/docs/)
|
|
234
|
+
- **GraphQL Specification:** [https://spec.graphql.org/](https://spec.graphql.org/)
|
|
235
|
+
|
|
236
|
+
---
|
|
237
|
+
|
|
238
|
+
_This documentation is designed to be a living guide. Update it as new patterns and practices are adopted in the project._
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
meta:
|
|
3
|
+
title: Mailling
|
|
4
|
+
description: Mailling
|
|
5
|
+
date: '2023-06-02T00:00:00'
|
|
6
|
+
updated: '2024-06-02T00:00:00'
|
|
7
|
+
excerpt: Mailling...
|
|
8
|
+
headers:
|
|
9
|
+
Cache-Control: no-cache
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## Mailling
|
|
13
|
+
|
|
14
|
+
**[Mailing Templates](/docs/mailing/mailing-template)**
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
---
|
|
2
|
+
meta:
|
|
3
|
+
title: Mailing Template
|
|
4
|
+
description: Mailing Template
|
|
5
|
+
date: '2023-06-02T00:00:00'
|
|
6
|
+
updated: '2024-06-02T00:00:00'
|
|
7
|
+
excerpt: Mailing Template...
|
|
8
|
+
headers:
|
|
9
|
+
Cache-Control: no-cache
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## Mailing Templates
|
|
13
|
+
|
|
14
|
+
#### Create a Template
|
|
15
|
+
|
|
16
|
+
Under your module's `src` folder, create a new folder named `migration` (if haven't already). Define your `ejs` mail
|
|
17
|
+
template under this directory.
|
|
18
|
+
|
|
19
|
+
##### Create neccessary types
|
|
20
|
+
|
|
21
|
+
Create a unique template name.
|
|
22
|
+
|
|
23
|
+
> packages-modules/account-api/server/src/graphql/schema/mail-services.graphql
|
|
24
|
+
|
|
25
|
+
```typescript
|
|
26
|
+
extend enum MailTemplateId {
|
|
27
|
+
""" Prefix with Db to make sure it look into the database """
|
|
28
|
+
DbTeamInivitationId
|
|
29
|
+
}
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
and run `yarn generateGraphql` so it generates `types` in the core package.
|
|
33
|
+
|
|
34
|
+
Make sure to build the core package where it get generated.
|
|
35
|
+
|
|
36
|
+
#### Define a migration
|
|
37
|
+
|
|
38
|
+
Define your migration file, import your newly defined template and define both `up` and `down` methods.
|
|
39
|
+
|
|
40
|
+
> packages-modules/account-api/server/src/migrations/holiday-greetings-mail-template.ts
|
|
41
|
+
|
|
42
|
+
```typescript
|
|
43
|
+
import { IMailTemplateId } from '@adminide-stack/core';
|
|
44
|
+
import { MailTemplateMigration } from '@container-stack/mailing-api-server';
|
|
45
|
+
import { injectable } from 'inversify';
|
|
46
|
+
import { config } from '../config';
|
|
47
|
+
|
|
48
|
+
const template = require('./template-name.ejs'); // replace with actual template-name
|
|
49
|
+
|
|
50
|
+
@injectable()
|
|
51
|
+
export class HolidayGreetingsTemplateMigration extends MailTemplateMigration {
|
|
52
|
+
protected NAMESPACE = config.NAMESPACE;
|
|
53
|
+
|
|
54
|
+
protected VERSION = '20220502'; <-- CURRENT DATE IN FORMAT 'YYYYMMDD'. Any time change in template make sure to change this to redeploy
|
|
55
|
+
|
|
56
|
+
protected name = IMailTemplateId.HolidayGreetingsTemplateId;
|
|
57
|
+
|
|
58
|
+
protected templatePayload(): Record<string, unknown> {
|
|
59
|
+
return {
|
|
60
|
+
description: 'Holiday Greeting',
|
|
61
|
+
html: template.default,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
#### PS
|
|
68
|
+
|
|
69
|
+
Make sure that you define unique `name` for your template
|
|
70
|
+
|
|
71
|
+
#### Bind to Container
|
|
72
|
+
|
|
73
|
+
Bind your newly added migration with container so that it gets migrated when server stars
|
|
74
|
+
|
|
75
|
+
> packages-modules/account-api/server/src/containers/module.ts
|
|
76
|
+
|
|
77
|
+
```typescript
|
|
78
|
+
|
|
79
|
+
bind('MongodbMigration')
|
|
80
|
+
.to(<Your-Template-Class>)
|
|
81
|
+
.whenTargetNamed(<Your-Template-Class>.name);
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
#### Sending Email
|
|
85
|
+
|
|
86
|
+
In any service where you want to call to `sendEmail` for example
|
|
87
|
+
|
|
88
|
+
> packages-modules/billing-api/server/src/plugins/stripe-moleculer-service.ts
|
|
89
|
+
|
|
90
|
+
```typescript
|
|
91
|
+
// These import can be from '@container-stack/mailing-api' as well
|
|
92
|
+
import { ISendMail_Input, IMoleculerServiceName, IMailServiceAction } from '@adminide-stack/core';
|
|
93
|
+
|
|
94
|
+
class ExampleService {
|
|
95
|
+
@inject(CommonType.MOLECULER_BROKER)
|
|
96
|
+
protected broker: ServiceBroker;
|
|
97
|
+
constructor() {}
|
|
98
|
+
|
|
99
|
+
private async anyOtherFunctionCallingSendEmail(request, transport) {
|
|
100
|
+
try {
|
|
101
|
+
const emailResponse = await this.broker.call(
|
|
102
|
+
`${IMoleculerServiceName.MailService}.${IMailServiceAction.SendEmail}`,
|
|
103
|
+
{
|
|
104
|
+
request: {
|
|
105
|
+
from: config.MAIL_SEND_DEFAULT_EMAIL,
|
|
106
|
+
to,
|
|
107
|
+
topic: '',
|
|
108
|
+
templateId: IMailTemplateId.BillingNotificationId,
|
|
109
|
+
namespace: config.NAMESPACE,
|
|
110
|
+
variables: {
|
|
111
|
+
// add any variables that you need to pass to template.
|
|
112
|
+
text: variables.subject,
|
|
113
|
+
messageHtml: '',
|
|
114
|
+
message: '',
|
|
115
|
+
...variables,
|
|
116
|
+
},
|
|
117
|
+
} as ISendMail_Input,
|
|
118
|
+
transport,
|
|
119
|
+
},
|
|
120
|
+
);
|
|
121
|
+
} catch (err) {
|
|
122
|
+
this.logger.error(err);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
Add required email environment variables in `config`
|
|
129
|
+
|
|
130
|
+
```typescript
|
|
131
|
+
export const config = envalid.cleanEnv<IConfig>(process.env, {
|
|
132
|
+
...
|
|
133
|
+
MAIL_SEND_DEFAULT_EMAIL: str(),
|
|
134
|
+
EMAIL_USER: str(),
|
|
135
|
+
...
|
|
136
|
+
});
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
##### We support following operations on `mailer-service`
|
|
140
|
+
|
|
141
|
+
1. Send
|
|
142
|
+
2. SendBulkEmail
|
|
143
|
+
3. Query
|
|
144
|
+
4. Report
|
|
145
|
+
5. CreateTemplate
|
|
146
|
+
6. SaveTemplate
|
|
147
|
+
7. DropTemplate
|
|
148
|
+
8. List
|