@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,79 @@
|
|
|
1
|
+
---
|
|
2
|
+
meta:
|
|
3
|
+
title: GraphQL Integration in routes.json
|
|
4
|
+
description: GraphQL Integration in routes.json
|
|
5
|
+
date: '2023-06-02T00:00:00'
|
|
6
|
+
updated: '2024-06-02T00:00:00'
|
|
7
|
+
excerpt: GraphQL Integration in routes.json...
|
|
8
|
+
headers:
|
|
9
|
+
Cache-Control: no-cache
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# GraphQL Integration in routes.json
|
|
13
|
+
|
|
14
|
+
This document explains how to integrate GraphQL queries with your routes using the `routes.json` file.
|
|
15
|
+
|
|
16
|
+
## Defining GraphQL Queries
|
|
17
|
+
|
|
18
|
+
GraphQL queries are defined in the `queries` field of a route in `routes.json`.
|
|
19
|
+
|
|
20
|
+
### Syntax
|
|
21
|
+
|
|
22
|
+
```json
|
|
23
|
+
{
|
|
24
|
+
"/path": {
|
|
25
|
+
"queries": {
|
|
26
|
+
"QueryName": "{ variableName: params.paramName }"
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
### Example
|
|
33
|
+
|
|
34
|
+
```json
|
|
35
|
+
{
|
|
36
|
+
"/teams": {
|
|
37
|
+
"queries": {
|
|
38
|
+
"TeamsDocument": "{orgName: params.orgName, pageSize: 10}"
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Passing Parameters to Queries
|
|
45
|
+
|
|
46
|
+
Parameters can be passed to queries using the `params` object. The `params` object contains route parameters and query string parameters.
|
|
47
|
+
|
|
48
|
+
### Example
|
|
49
|
+
|
|
50
|
+
```json
|
|
51
|
+
{
|
|
52
|
+
"/o/:orgName/teams": {
|
|
53
|
+
"queries": {
|
|
54
|
+
"TeamsDocument": "{orgName: params.orgName, pageSize: params.pageSize || 10}"
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## Handling Query Results in Components
|
|
61
|
+
|
|
62
|
+
Query results are automatically passed to your components as props.
|
|
63
|
+
|
|
64
|
+
### Example
|
|
65
|
+
|
|
66
|
+
```javascript
|
|
67
|
+
const Teams = (props) => {
|
|
68
|
+
const { data } = props.loaderData.TeamsDocument;
|
|
69
|
+
// Use data here
|
|
70
|
+
};
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## Related Topics
|
|
74
|
+
|
|
75
|
+
- For detailed parameter generation, see [Query Params Generator](query-params-generator.md)
|
|
76
|
+
- For automated loader generation, see [Generated Data Loaders](generated-data-loaders.md)
|
|
77
|
+
- For authentication integration, see [Authentication and Authorization](routes-json-auth.md)
|
|
78
|
+
|
|
79
|
+
[Back to Index](routes-json-index.md) | [Previous: Loaders and Data Fetching](routes-json-loaders.md) | [Next: Query Params Generator](query-params-generator.md)
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
---
|
|
2
|
+
meta:
|
|
3
|
+
title: routes.json and Related Concepts Documentation
|
|
4
|
+
description: routes.json and Related Concepts Documentation
|
|
5
|
+
date: '2023-06-02T00:00:00'
|
|
6
|
+
updated: '2024-06-02T00:00:00'
|
|
7
|
+
excerpt: routes.json and Related Concepts Documentation...
|
|
8
|
+
headers:
|
|
9
|
+
Cache-Control: no-cache
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# routes.json and Related Concepts Documentation
|
|
13
|
+
|
|
14
|
+
Welcome to the comprehensive documentation for `routes.json` and related concepts in our application architecture. This documentation covers various aspects of routing, data loading, styling, and best practices for building robust and efficient applications.
|
|
15
|
+
|
|
16
|
+
## Table of Contents
|
|
17
|
+
|
|
18
|
+
1. [Routes Overview](routes-json-overview.md)
|
|
19
|
+
- Purpose of routes.json
|
|
20
|
+
- Basic structure
|
|
21
|
+
- Key benefits
|
|
22
|
+
|
|
23
|
+
2. [Field Descriptions](routes-json-fields.md)
|
|
24
|
+
- Common fields
|
|
25
|
+
- Authentication and authorization fields
|
|
26
|
+
- Component and data loading fields
|
|
27
|
+
- GraphQL and data fetching fields
|
|
28
|
+
- Additional configuration fields
|
|
29
|
+
|
|
30
|
+
3. [Authentication and Authorization](routes-json-auth.md)
|
|
31
|
+
- Configuring authentication
|
|
32
|
+
- Setting up authorization
|
|
33
|
+
- Using authority and extraPermissions
|
|
34
|
+
- Automatic wrapper application
|
|
35
|
+
|
|
36
|
+
4. [Loaders and Data Fetching](routes-json-loaders.md)
|
|
37
|
+
- Server-side loaders
|
|
38
|
+
- Client-side loaders
|
|
39
|
+
- Actions for form submissions
|
|
40
|
+
- Data loading patterns
|
|
41
|
+
|
|
42
|
+
5. [Middleware System](routes-json-middleware.md)
|
|
43
|
+
- Middleware configuration
|
|
44
|
+
- Data flow through middlewares
|
|
45
|
+
- Error handling in middlewares
|
|
46
|
+
|
|
47
|
+
6. [Advanced Configurations](routes-json-advanced.md)
|
|
48
|
+
- Custom wrappers
|
|
49
|
+
- Resource URIs
|
|
50
|
+
- Dynamic routes
|
|
51
|
+
- Route groups
|
|
52
|
+
|
|
53
|
+
7. [Generated Data Loaders](generated-data-loaders.md)
|
|
54
|
+
- Automatic loader generation
|
|
55
|
+
- GraphQL query integration
|
|
56
|
+
- Cache strategies
|
|
57
|
+
|
|
58
|
+
8. [Query Parameters Generator](query-params-generator.md)
|
|
59
|
+
- Simple vs complex parameters
|
|
60
|
+
- External value integration
|
|
61
|
+
- Parameter generation patterns
|
|
62
|
+
|
|
63
|
+
9. [Resource Loaders](generated-resource-loaders.md)
|
|
64
|
+
- Resource route patterns
|
|
65
|
+
- Data resolution
|
|
66
|
+
- Error handling
|
|
67
|
+
|
|
68
|
+
10. [CSS Import and Stylesheets](css-import-and-stylesheets.md)
|
|
69
|
+
- CSS module integration
|
|
70
|
+
- Style loading patterns
|
|
71
|
+
- Build configuration
|
|
72
|
+
|
|
73
|
+
11. [Component Structure](component-structure-best-practices.md)
|
|
74
|
+
- Network request placement
|
|
75
|
+
- Data fetching patterns
|
|
76
|
+
- Component composition
|
|
77
|
+
|
|
78
|
+
12. [Configuration Management](configurations.md)
|
|
79
|
+
- Configuration retrieval
|
|
80
|
+
- Settings management
|
|
81
|
+
- Preferences handling
|
|
82
|
+
|
|
83
|
+
13. [Icon System](routes-extra-icons.md)
|
|
84
|
+
- Icon configuration
|
|
85
|
+
- Selective loading
|
|
86
|
+
- Custom icons
|
|
87
|
+
|
|
88
|
+
14. [Best Practices](routes-json-best-practices.md)
|
|
89
|
+
- Organization patterns
|
|
90
|
+
- Security considerations
|
|
91
|
+
- Performance optimization
|
|
92
|
+
|
|
93
|
+
## Quick Start
|
|
94
|
+
|
|
95
|
+
1. Begin with [Routes Overview](routes-json-overview.md) to understand the basic concepts
|
|
96
|
+
2. Learn about [Field Descriptions](routes-json-fields.md) for route configuration
|
|
97
|
+
3. Set up [Authentication](routes-json-auth.md) for your routes
|
|
98
|
+
4. Implement [Data Loading](routes-json-loaders.md) for your components
|
|
99
|
+
|
|
100
|
+
## Version Compatibility
|
|
101
|
+
|
|
102
|
+
- Remix: 2.0.0+
|
|
103
|
+
- React: 18.0.0+
|
|
104
|
+
- Node.js: 16.0.0+
|
|
105
|
+
|
|
106
|
+
## Additional Resources
|
|
107
|
+
|
|
108
|
+
- [Remix Documentation](https://remix.run/docs)
|
|
109
|
+
- [React Documentation](https://react.dev)
|
|
110
|
+
- [GraphQL Documentation](https://graphql.org/learn)
|
|
111
|
+
|
|
112
|
+
Happy coding!
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
---
|
|
2
|
+
meta:
|
|
3
|
+
title: Loaders and Data Fetching in routes.json
|
|
4
|
+
description: Loaders and Data Fetching in routes.json
|
|
5
|
+
date: '2023-06-02T00:00:00'
|
|
6
|
+
updated: '2024-06-02T00:00:00'
|
|
7
|
+
excerpt: Loaders and Data Fetching in routes.json...
|
|
8
|
+
headers:
|
|
9
|
+
Cache-Control: no-cache
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Loaders and Data Fetching in `routes.json`
|
|
13
|
+
|
|
14
|
+
This document explains how to configure and use loaders, actions, and handle server-side and client-side code separation in your routes using the `routes.json` file.
|
|
15
|
+
|
|
16
|
+
## Server-Side Loaders
|
|
17
|
+
|
|
18
|
+
Server-side loaders are used to fetch data on the server before rendering a component. They are configured using the `hasLoader` field in `routes.json`. By default, server-side code must be located in files ending with `.server.js` for security and performance reasons.
|
|
19
|
+
|
|
20
|
+
### Syntax
|
|
21
|
+
|
|
22
|
+
```json
|
|
23
|
+
{
|
|
24
|
+
"/path": {
|
|
25
|
+
"hasLoader": true,
|
|
26
|
+
"componentPath": "@adminide-stack/user-auth0/lib/components/callback.server.js"
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
### Implementation
|
|
32
|
+
|
|
33
|
+
When `hasLoader` is set to `true`, you need to implement a loader function in your route file:
|
|
34
|
+
|
|
35
|
+
```javascript
|
|
36
|
+
export const loader = async ({ params, context }) => {
|
|
37
|
+
// Fetch data here
|
|
38
|
+
return { data };
|
|
39
|
+
};
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### Handling Component with server code by using `hasServerCode`
|
|
43
|
+
|
|
44
|
+
Remix recommends separating server-side logic into `.server.js` files for security and performance reasons. When the `hasServerCode` flag is set to `true`, it means that server-side code like loaders, actions, and headers will be located in a `.server.js` file, while client-side logic remains in the main component file.
|
|
45
|
+
|
|
46
|
+
To ensure that `routes` understands there is a `.server.js` file in addition to `componentPath`, make sure to set `hasServerCode` to `true`.
|
|
47
|
+
|
|
48
|
+
#### Example Configuration When `hasServerCode` is `true`
|
|
49
|
+
|
|
50
|
+
```json
|
|
51
|
+
{
|
|
52
|
+
"/login": {
|
|
53
|
+
"hasLoader": true,
|
|
54
|
+
"hasServerCode": true,
|
|
55
|
+
"componentPath": "@adminide-stack/user-auth0-browser-ant/lib/components/Login/index.js"
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
#### Generated Wrapper When `hasServerCode` is `true`
|
|
61
|
+
|
|
62
|
+
```javascript
|
|
63
|
+
import OriginalComponent from '@adminide-stack/user-auth0-browser-ant/lib/components/Login/index.js';
|
|
64
|
+
import { loader as loaderFunc } from '@adminide-stack/user-auth0-browser-ant/lib/components/Login/index.server.js';
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
#### Example Configuration When `hasServerCode` is `false`
|
|
68
|
+
|
|
69
|
+
```json
|
|
70
|
+
{
|
|
71
|
+
"/login": {
|
|
72
|
+
"hasLoader": true,
|
|
73
|
+
"hasServerCode": false,
|
|
74
|
+
"componentPath": "@adminide-stack/user-auth0-browser-ant/lib/components/Login/index.js"
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
#### Generated Wrapper When `hasServerCode` is `false`
|
|
80
|
+
|
|
81
|
+
```javascript
|
|
82
|
+
import OriginalComponent, {
|
|
83
|
+
loader as loaderFunc,
|
|
84
|
+
} from '@adminide-stack/user-auth0-browser-ant/lib/components/Login/index.js';
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
By separating the server-side code into `.server.js` files, we ensure that sensitive server-side logic is not included in the client bundle, as recommended by [Remix](https://remix.run/docs/en/main/discussion/server-vs-client).
|
|
88
|
+
|
|
89
|
+
## Client-Side Loaders
|
|
90
|
+
|
|
91
|
+
Client-side loaders are used to fetch data on the client after the initial render. They are configured using the `hasClientLoader` field in `routes.json`.
|
|
92
|
+
|
|
93
|
+
### Syntax
|
|
94
|
+
|
|
95
|
+
```json
|
|
96
|
+
{
|
|
97
|
+
"/path": {
|
|
98
|
+
"hasClientLoader": true
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### Implementation
|
|
104
|
+
|
|
105
|
+
When `hasClientLoader` is set to `true`, you need to implement a client loader function:
|
|
106
|
+
|
|
107
|
+
```javascript
|
|
108
|
+
export const clientLoader = async ({ params }) => {
|
|
109
|
+
// Fetch data here
|
|
110
|
+
return { data };
|
|
111
|
+
};
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
## Actions for Form Submissions and Mutations
|
|
115
|
+
|
|
116
|
+
Actions are used for handling form submissions and mutations. They are configured using the `hasAction` field in `routes.json`.
|
|
117
|
+
|
|
118
|
+
### Syntax
|
|
119
|
+
|
|
120
|
+
```json
|
|
121
|
+
{
|
|
122
|
+
"/path": {
|
|
123
|
+
"hasAction": true
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
### Implementation
|
|
129
|
+
|
|
130
|
+
When `hasAction` is set to `true`, you need to implement an action function:
|
|
131
|
+
|
|
132
|
+
```javascript
|
|
133
|
+
export const action = async ({ request }) => {
|
|
134
|
+
// Handle form submission or mutation here
|
|
135
|
+
return { result };
|
|
136
|
+
};
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
## Integrating Loaders with Authentication and Authorization
|
|
140
|
+
|
|
141
|
+
Loaders can be integrated with authentication and authorization by checking the user's permissions before fetching data:
|
|
142
|
+
|
|
143
|
+
```javascript
|
|
144
|
+
export const loader = async ({ params, context }) => {
|
|
145
|
+
const { user } = context;
|
|
146
|
+
if (!user) {
|
|
147
|
+
throw new Error('Unauthorized');
|
|
148
|
+
}
|
|
149
|
+
if (!user.hasPermission('required.permission')) {
|
|
150
|
+
throw new Error('Forbidden');
|
|
151
|
+
}
|
|
152
|
+
// Fetch data here
|
|
153
|
+
return { data };
|
|
154
|
+
};
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
## Why Separating Server-Side Code Matters
|
|
158
|
+
|
|
159
|
+
Separating server-side code into `.server.js` files provides the following benefits:
|
|
160
|
+
|
|
161
|
+
1. **Security**: Sensitive logic is not included in the client bundle.
|
|
162
|
+
2. **Performance**: Smaller client bundles and faster loading times.
|
|
163
|
+
3. **Clarity**: Clear distinction between client and server code, improving maintainability.
|
|
164
|
+
|
|
165
|
+
[Back to Index](routes-json-index.md) | [Previous: Authentication](routes-json-auth.md) | [Next: Middleware System](routes-json-middleware.md)
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
---
|
|
2
|
+
meta:
|
|
3
|
+
title: Middleware Configuration in routes.json
|
|
4
|
+
description: Middleware Configuration in routes.json
|
|
5
|
+
date: '2023-06-02T00:00:00'
|
|
6
|
+
updated: '2024-06-02T00:00:00'
|
|
7
|
+
excerpt: Middleware Configuration in routes.json...
|
|
8
|
+
headers:
|
|
9
|
+
Cache-Control: no-cache
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Middleware Configuration in routes.json
|
|
13
|
+
|
|
14
|
+
## Overview
|
|
15
|
+
|
|
16
|
+
Middlewares in `routes.json` allow you to inject data processing logic before your component renders. They can modify the context, prepare data, and interact with loaders.
|
|
17
|
+
|
|
18
|
+
## Configuration
|
|
19
|
+
|
|
20
|
+
### Basic Structure
|
|
21
|
+
|
|
22
|
+
```json
|
|
23
|
+
{
|
|
24
|
+
"/path": {
|
|
25
|
+
"exact": true,
|
|
26
|
+
"key": "unique-key",
|
|
27
|
+
"name": "Route Name",
|
|
28
|
+
"middlewares": ["@your-package/path/to/middleware.js"],
|
|
29
|
+
"componentPath": "@your-package/path/to/component.js",
|
|
30
|
+
"hasLoader": true,
|
|
31
|
+
"hasComponent": true,
|
|
32
|
+
"loaderReturnInfo": {
|
|
33
|
+
"returnType": "defer",
|
|
34
|
+
"hasOptions": false,
|
|
35
|
+
"keys": ["dataKey"]
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### Fields Explanation
|
|
42
|
+
|
|
43
|
+
- **`middlewares`**: Array of paths to middleware files
|
|
44
|
+
- **`hasLoader`**: Boolean indicating if the component has a loader
|
|
45
|
+
- **`loaderReturnInfo`**: Configuration for loader return behavior
|
|
46
|
+
- `returnType`: Type of loader return ("defer" for async data)
|
|
47
|
+
- `hasOptions`: Boolean for additional options
|
|
48
|
+
- `keys`: Array of data keys that the loader will return
|
|
49
|
+
|
|
50
|
+
## Middleware Implementation
|
|
51
|
+
|
|
52
|
+
Middlewares should export a function with the following signature:
|
|
53
|
+
|
|
54
|
+
```typescript
|
|
55
|
+
export const middleware = async (
|
|
56
|
+
{ context, request, params }, // Route information
|
|
57
|
+
dataLoader, // Data loader instance
|
|
58
|
+
next, // Next middleware function
|
|
59
|
+
) => {
|
|
60
|
+
// Middleware logic
|
|
61
|
+
await next(); // Proceed to next middleware
|
|
62
|
+
};
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### Example Middleware
|
|
66
|
+
|
|
67
|
+
```javascript
|
|
68
|
+
export const middleware = async ({ context, request, params }, dataLoader, next) => {
|
|
69
|
+
const { apolloClient, logger } = context;
|
|
70
|
+
|
|
71
|
+
try {
|
|
72
|
+
// Async data fetching
|
|
73
|
+
const query1 = new Promise((resolve) => {
|
|
74
|
+
setTimeout(() => {
|
|
75
|
+
resolve({ data: 'Some api data' });
|
|
76
|
+
}, 1000);
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
logger.info('Data loaded and cached');
|
|
80
|
+
|
|
81
|
+
// Initialize componentData if needed
|
|
82
|
+
dataLoader.componentData = dataLoader.componentData || {};
|
|
83
|
+
|
|
84
|
+
// Assign async function to componentData
|
|
85
|
+
dataLoader.componentData.apiData = async () => await query1;
|
|
86
|
+
|
|
87
|
+
await next(); // Continue to next middleware
|
|
88
|
+
} catch (error) {
|
|
89
|
+
logger.error(error, 'Failed to load data:');
|
|
90
|
+
throw error;
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
## Component Implementation
|
|
96
|
+
|
|
97
|
+
Components can access middleware data through the loader and Remix's `useLoaderData` hook:
|
|
98
|
+
|
|
99
|
+
```typescript
|
|
100
|
+
import React from 'react';
|
|
101
|
+
import { Await, useLoaderData } from '@remix-run/react';
|
|
102
|
+
import { Spinner } from '@your-ui-library';
|
|
103
|
+
import { defer } from '@remix-run/node';
|
|
104
|
+
|
|
105
|
+
// Loader accessing middleware data
|
|
106
|
+
export const loader = async ({ context, _dataContext }) => {
|
|
107
|
+
const apiData = _dataContext?.componentData?.apiData();
|
|
108
|
+
return defer({
|
|
109
|
+
apiData,
|
|
110
|
+
});
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
// Component using loader data
|
|
114
|
+
export default (props) => {
|
|
115
|
+
const loaderData = useLoaderData();
|
|
116
|
+
|
|
117
|
+
return (
|
|
118
|
+
<React.Suspense fallback={<Spinner />}>
|
|
119
|
+
<Await resolve={Promise.all([loaderData.apiData])}>
|
|
120
|
+
{([{ data }]) => <YourComponent {...props} apiData={data} />}
|
|
121
|
+
</Await>
|
|
122
|
+
</React.Suspense>
|
|
123
|
+
);
|
|
124
|
+
};
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
## Data Flow
|
|
128
|
+
|
|
129
|
+
1. Middleware executes before the component loader
|
|
130
|
+
2. Middleware adds data to the `dataLoader.componentData` object
|
|
131
|
+
3. Loader accesses this data through `_dataContext.componentData`
|
|
132
|
+
4. Component receives data through `useLoaderData` and `Await`
|
|
133
|
+
|
|
134
|
+
## Best Practices
|
|
135
|
+
|
|
136
|
+
1. **Error Handling**: Always include proper error handling in middlewares
|
|
137
|
+
2. **Type Safety**: Use TypeScript interfaces for middleware parameters
|
|
138
|
+
3. **Initialization**: Check if `componentData` exists before using
|
|
139
|
+
4. **Async Operations**: Use `defer` for async data loading
|
|
140
|
+
5. **Loading States**: Provide appropriate loading indicators
|
|
141
|
+
|
|
142
|
+
## Example with Multiple Middlewares
|
|
143
|
+
|
|
144
|
+
```json
|
|
145
|
+
{
|
|
146
|
+
"/complex-route": {
|
|
147
|
+
"middlewares": ["@package/auth-middleware.js", "@package/data-middleware.js", "@package/logging-middleware.js"],
|
|
148
|
+
"hasLoader": true,
|
|
149
|
+
"loaderReturnInfo": {
|
|
150
|
+
"returnType": "defer",
|
|
151
|
+
"keys": ["authData", "apiData", "logData"]
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
Middlewares execute in order, each having access to data set by previous middlewares:
|
|
158
|
+
|
|
159
|
+
```typescript
|
|
160
|
+
// First middleware
|
|
161
|
+
export const authMiddleware = async ({ context }, dataLoader, next) => {
|
|
162
|
+
dataLoader.componentData = dataLoader.componentData || {};
|
|
163
|
+
dataLoader.componentData.authData = async () => ({ user: 'authenticated' });
|
|
164
|
+
await next();
|
|
165
|
+
};
|
|
166
|
+
|
|
167
|
+
// Second middleware
|
|
168
|
+
export const dataMiddleware = async ({ context }, dataLoader, next) => {
|
|
169
|
+
dataLoader.componentData.apiData = async () => ({ data: 'fetched' });
|
|
170
|
+
await next();
|
|
171
|
+
};
|
|
172
|
+
|
|
173
|
+
// Component loader
|
|
174
|
+
export const loader = async ({ _dataContext }) => {
|
|
175
|
+
const [authData, apiData] = await Promise.all([
|
|
176
|
+
_dataContext.componentData.authData(),
|
|
177
|
+
_dataContext.componentData.apiData(),
|
|
178
|
+
]);
|
|
179
|
+
|
|
180
|
+
return defer({
|
|
181
|
+
authData,
|
|
182
|
+
apiData,
|
|
183
|
+
});
|
|
184
|
+
};
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
## Troubleshooting
|
|
188
|
+
|
|
189
|
+
Common issues and solutions:
|
|
190
|
+
|
|
191
|
+
1. **Middleware Not Executing**: Verify path in `routes.json` is correct
|
|
192
|
+
2. **Data Not Available**: Check `componentData` initialization
|
|
193
|
+
3. **Type Errors**: Ensure proper TypeScript types for data
|
|
194
|
+
4. **Loading Issues**: Verify `defer` usage and Suspense boundaries
|
|
195
|
+
|
|
196
|
+
[Back to Index](routes-json-index.md) | [Previous: Loaders and Data Fetching](routes-json-loaders.md) | [Next: Advanced Configurations](routes-json-advanced.md)
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
---
|
|
2
|
+
meta:
|
|
3
|
+
title: routes.json Overview
|
|
4
|
+
description: routes.json Overview
|
|
5
|
+
date: '2023-06-02T00:00:00'
|
|
6
|
+
updated: '2024-06-02T00:00:00'
|
|
7
|
+
excerpt: routes.json Overview...
|
|
8
|
+
headers:
|
|
9
|
+
Cache-Control: no-cache
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# routes.json Overview
|
|
13
|
+
|
|
14
|
+
The `routes.json` file is a crucial configuration file in our application that defines the structure and behavior of routes and their associated components. This file provides metadata for each route, including path, authority, loaders, and component paths.
|
|
15
|
+
|
|
16
|
+
## Purpose
|
|
17
|
+
|
|
18
|
+
The main purposes of `routes.json` are:
|
|
19
|
+
|
|
20
|
+
1. Define the application's route structure
|
|
21
|
+
2. Specify component paths for each route
|
|
22
|
+
3. Configure authentication and authorization requirements
|
|
23
|
+
4. Set up data loading mechanisms (server-side and client-side)
|
|
24
|
+
5. Define GraphQL queries associated with routes
|
|
25
|
+
6. Specify additional permissions and configurations
|
|
26
|
+
|
|
27
|
+
## Basic Structure
|
|
28
|
+
|
|
29
|
+
Each entry in `routes.json` represents a route and is structured as follows:
|
|
30
|
+
|
|
31
|
+
```json
|
|
32
|
+
{
|
|
33
|
+
"/path": {
|
|
34
|
+
"key": "unique.key",
|
|
35
|
+
"name": "Human Readable Name",
|
|
36
|
+
"path": "/path",
|
|
37
|
+
"componentPath": "path/to/component.js",
|
|
38
|
+
"auth": true,
|
|
39
|
+
"authority": ["required.permission"],
|
|
40
|
+
"hasLoader": true
|
|
41
|
+
// ... other configurations
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Key Benefits
|
|
47
|
+
|
|
48
|
+
1. **Centralized Configuration**: All route-related information is in one place.
|
|
49
|
+
2. **Automatic Wrapping**: The application can automatically apply necessary wrappers based on the configuration.
|
|
50
|
+
3. **Separation of Concerns**: Clearly separates routing logic from component implementation.
|
|
51
|
+
4. **Easy Maintenance**: Simplifies the process of adding, modifying, or removing routes.
|
|
52
|
+
|
|
53
|
+
[Back to Index](routes-json-index.md) | [Previous: Best Practices](routes-json-best-practices.md) | [Next: Field Descriptions](routes-json-fields.md)
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
---
|
|
2
|
+
meta:
|
|
3
|
+
title: Data Loaders
|
|
4
|
+
description: Data Loaders
|
|
5
|
+
date: '2023-06-02T00:00:00'
|
|
6
|
+
updated: '2024-06-02T00:00:00'
|
|
7
|
+
excerpt: Data Loaders...
|
|
8
|
+
headers:
|
|
9
|
+
Cache-Control: no-cache
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Data Loaders
|
|
13
|
+
|
|
14
|
+
## What are Data Loaders
|
|
15
|
+
|
|
16
|
+
[Data loaders](https://remix.run/docs/en/main/route/loader) are a powerful feature in Remix, that streamline data
|
|
17
|
+
fetching by separating the concerns of UI and data handling. They allow developers to fetch data on the server side
|
|
18
|
+
before rendering a component, ensuring that the UI is not tied to the data fetching logic. This abstraction simplifies
|
|
19
|
+
code maintenance, improves performance by reducing client-side data fetching, and enhances SEO by preloading data. By
|
|
20
|
+
defining data loaders at the route level, Remix ensures that each route manages its own data dependencies, leading to a
|
|
21
|
+
more modular and scalable application structure.
|
|
22
|
+
|
|
23
|
+
## What are Client Loaders
|
|
24
|
+
|
|
25
|
+
[Client loaders](https://remix.run/docs/en/main/route/client-loader) in Remix are functions that fetch data on the
|
|
26
|
+
client side, typically used when data needs to be refreshed or updated without a full page reload. Unlike server
|
|
27
|
+
loaders, which fetch data on the server before rendering the page, client loaders run in the browser after the initial
|
|
28
|
+
render.
|
|
29
|
+
|
|
30
|
+
Here's a comparison table highlighting the differences between client loaders and server loaders in Remix:
|
|
31
|
+
|
|
32
|
+
| Feature | Server Loaders | Client Loaders |
|
|
33
|
+
| ---------------------- | ------------------------------------------------------ | -------------------------------------------------------------------- |
|
|
34
|
+
| **Execution Context** | Run on the server before rendering the page | Run in the browser after the initial render |
|
|
35
|
+
| **Initial Load Time** | Improves initial load time by pre-fetching data | Data fetched after initial load, may slightly delay updates |
|
|
36
|
+
| **SEO Benefits** | Enhances SEO by providing pre-rendered content | Limited SEO benefits as data is fetched client-side |
|
|
37
|
+
| **Use Cases** | Initial data fetching, SEO optimization, pre-rendering | Real-time updates, user-triggered data fetches, periodic re-fetching |
|
|
38
|
+
| **Performance Impact** | Reduces client-side load, faster initial render | Dynamic updates without full page reload, improves user experience |
|
|
39
|
+
| **Complexity** | Simpler for initial load scenarios | More complex handling for dynamic, real-time data updates |
|
|
40
|
+
|
|
41
|
+
This table should help clarify when to use each type of loader based on your application's needs.
|
|
42
|
+
|
|
43
|
+
## Auto generated loaders
|