@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,427 @@
|
|
|
1
|
+
# Copy Operations Documentation
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
The Copy Operations system is a build-time mechanism that copies files and directories from `node_modules` packages to specific locations in your application servers (frontend, backend, mobile, etc.). This ensures that necessary assets, workers, and modules are available at runtime in the correct locations.
|
|
6
|
+
|
|
7
|
+
This system is framework-agnostic and can be used with any Node.js-based application that needs to distribute package assets to specific runtime locations.
|
|
8
|
+
|
|
9
|
+
## Purpose
|
|
10
|
+
|
|
11
|
+
The copy operations system serves several critical purposes:
|
|
12
|
+
|
|
13
|
+
1. **Asset Distribution**: Copies static assets (like binary files, images, etc.) from npm packages to public directories
|
|
14
|
+
2. **Worker Files**: Places web workers in accessible public directories for browser execution
|
|
15
|
+
3. **Module Generation**: Automatically generates module configuration files for dynamic imports
|
|
16
|
+
4. **Build Optimization**: Ensures assets are available without requiring runtime resolution from node_modules
|
|
17
|
+
|
|
18
|
+
## Architecture
|
|
19
|
+
|
|
20
|
+
### Configuration Files
|
|
21
|
+
|
|
22
|
+
Copy operations are defined in two types of configuration files:
|
|
23
|
+
|
|
24
|
+
#### 1. Package-Level Configuration (`package.json`)
|
|
25
|
+
|
|
26
|
+
Individual packages can define their own copy operations in the `cdecode` section:
|
|
27
|
+
|
|
28
|
+
```json
|
|
29
|
+
{
|
|
30
|
+
"name": "@your-org/your-package-browser",
|
|
31
|
+
"cdecode": {
|
|
32
|
+
"copyOperations": [
|
|
33
|
+
{
|
|
34
|
+
"packageName": "@your-org/your-package-browser",
|
|
35
|
+
"sourcePath": "assets/data-file.bin",
|
|
36
|
+
"destPath": "../public/files/data-file.bin",
|
|
37
|
+
"generateModule": false
|
|
38
|
+
}
|
|
39
|
+
]
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
#### 2. Application-Level Configuration
|
|
45
|
+
|
|
46
|
+
Applications define centralized copy operations in their configuration files. The location and naming can vary by project structure:
|
|
47
|
+
|
|
48
|
+
- **Frontend Server**: `app/cde-webconfig.json` or `config.json`
|
|
49
|
+
- **Backend Server**: `config.json`
|
|
50
|
+
- **Mobile App**: `config.json`
|
|
51
|
+
- **Custom Apps**: Any JSON configuration file you choose
|
|
52
|
+
|
|
53
|
+
### Configuration Schema
|
|
54
|
+
|
|
55
|
+
Each copy operation object supports the following properties:
|
|
56
|
+
|
|
57
|
+
| Property | Type | Required | Description |
|
|
58
|
+
| ---------------- | ------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
|
|
59
|
+
| `packageName` | string | Yes | The npm package name to copy from (e.g., `@my-org/my-package-browser`) |
|
|
60
|
+
| `sourcePath` | string | No | Relative path within the package's `lib` directory. If omitted, copies the entire package |
|
|
61
|
+
| `destPath` | string | Yes | Destination path relative to the application's configured directory. Supports variable interpolation (e.g., `$.commonPaths.appStackPath`) |
|
|
62
|
+
| `generateModule` | boolean | Yes | Whether to generate a `modules.js` file listing all modules in the copied directory |
|
|
63
|
+
|
|
64
|
+
### Variable Interpolation
|
|
65
|
+
|
|
66
|
+
The `destPath` supports JSONPath-style variable interpolation using the `$.` prefix:
|
|
67
|
+
|
|
68
|
+
```json
|
|
69
|
+
{
|
|
70
|
+
"commonPaths": {
|
|
71
|
+
"appPath": "app",
|
|
72
|
+
"sharedLibPath": "shared-lib"
|
|
73
|
+
},
|
|
74
|
+
"copyOperations": [
|
|
75
|
+
{
|
|
76
|
+
"packageName": "@my-org/shared-components",
|
|
77
|
+
"destPath": "$.commonPaths.sharedLibPath",
|
|
78
|
+
"generateModule": true
|
|
79
|
+
}
|
|
80
|
+
]
|
|
81
|
+
}
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
In this example, `$.commonPaths.sharedLibPath` resolves to `shared-lib`.
|
|
85
|
+
|
|
86
|
+
## Execution Flow
|
|
87
|
+
|
|
88
|
+
### 1. Build Time Execution
|
|
89
|
+
|
|
90
|
+
Copy operations execute at different stages depending on the environment:
|
|
91
|
+
|
|
92
|
+
#### Production Build
|
|
93
|
+
|
|
94
|
+
```typescript
|
|
95
|
+
// In vite.config.ts
|
|
96
|
+
const routesConfig = async (defineRoutes) => {
|
|
97
|
+
if (process.env.NODE_ENV === 'production') {
|
|
98
|
+
await performCopyOperations(config);
|
|
99
|
+
}
|
|
100
|
+
// ... route definitions
|
|
101
|
+
};
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
#### Development/Server Start
|
|
105
|
+
|
|
106
|
+
```javascript
|
|
107
|
+
// In server.js
|
|
108
|
+
const startServer = async () => {
|
|
109
|
+
await performCopyOperations(config);
|
|
110
|
+
// ... server initialization
|
|
111
|
+
};
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### 2. Copy Process
|
|
115
|
+
|
|
116
|
+
The `performCopyOperations` function (from `@common-stack/rollup-vite-utils`):
|
|
117
|
+
|
|
118
|
+
1. **Resolves Source**: Locates the package in `node_modules`
|
|
119
|
+
2. **Constructs Source Path**: Combines package location with `lib/` directory and optional `sourcePath`
|
|
120
|
+
3. **Resolves Destination**: Interpolates variables in `destPath` and constructs absolute path
|
|
121
|
+
4. **Checks Freshness**: Compares timestamps to skip unnecessary copies
|
|
122
|
+
5. **Performs Copy**: Copies file or directory recursively
|
|
123
|
+
6. **Generates Module File**: If `generateModule: true`, creates a `modules.js` file
|
|
124
|
+
|
|
125
|
+
### 3. Terminal Output
|
|
126
|
+
|
|
127
|
+
During execution, you'll see output like:
|
|
128
|
+
|
|
129
|
+
```
|
|
130
|
+
Copy operation for @my-org/shared-components completed successfully.
|
|
131
|
+
Copied directory from /path/to/node_modules/@my-org/my-package/lib/assets/data-file.bin
|
|
132
|
+
to /path/to/servers/frontend-server/public/files/data-file.bin
|
|
133
|
+
Copy operation for @my-org/my-package completed successfully.
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
## Common Use Cases
|
|
137
|
+
|
|
138
|
+
### 1. Copying Static Assets
|
|
139
|
+
|
|
140
|
+
**Use Case**: Binary files, images, or data files needed at runtime
|
|
141
|
+
|
|
142
|
+
```json
|
|
143
|
+
{
|
|
144
|
+
"packageName": "@my-org/ml-models",
|
|
145
|
+
"sourcePath": "assets/model.bin",
|
|
146
|
+
"destPath": "../public/files/model.bin",
|
|
147
|
+
"generateModule": false
|
|
148
|
+
}
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
**Result**: The binary file is accessible at `/files/model.bin` in the browser
|
|
152
|
+
|
|
153
|
+
### 2. Copying Web Workers
|
|
154
|
+
|
|
155
|
+
**Use Case**: Web Worker files that need to be loaded by the browser
|
|
156
|
+
|
|
157
|
+
```json
|
|
158
|
+
{
|
|
159
|
+
"packageName": "@my-org/worker-package",
|
|
160
|
+
"sourcePath": "main.worker.js",
|
|
161
|
+
"destPath": "../public/workers/main.worker.js",
|
|
162
|
+
"generateModule": true
|
|
163
|
+
}
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
**Result**: Worker is available at `/workers/main.worker.js` for `new Worker()` instantiation
|
|
167
|
+
|
|
168
|
+
### 3. Copying Entire Module Libraries
|
|
169
|
+
|
|
170
|
+
**Use Case**: Full module with auto-discovery and dynamic imports
|
|
171
|
+
|
|
172
|
+
```json
|
|
173
|
+
{
|
|
174
|
+
"packageName": "@my-org/component-library",
|
|
175
|
+
"destPath": "$.commonPaths.componentLibPath",
|
|
176
|
+
"generateModule": true
|
|
177
|
+
}
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
**Result**:
|
|
181
|
+
|
|
182
|
+
- Entire package copied to `app/component-lib/`
|
|
183
|
+
- `modules.js` file generated listing all available modules
|
|
184
|
+
- Enables dynamic import: `import('@app/component-lib/lib/component.js')`
|
|
185
|
+
|
|
186
|
+
### 4. Copying Source Maps
|
|
187
|
+
|
|
188
|
+
**Use Case**: Debug support with source maps
|
|
189
|
+
|
|
190
|
+
```json
|
|
191
|
+
{
|
|
192
|
+
"packageName": "@my-org/worker-package",
|
|
193
|
+
"sourcePath": "main.worker.js.map",
|
|
194
|
+
"destPath": "../public/workers/main.worker.js.map",
|
|
195
|
+
"generateModule": false
|
|
196
|
+
}
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
## Module Generation
|
|
200
|
+
|
|
201
|
+
When `generateModule: true`, a `modules.js` file is created in the destination directory:
|
|
202
|
+
|
|
203
|
+
```javascript
|
|
204
|
+
// Generated modules.js
|
|
205
|
+
export const modules = [
|
|
206
|
+
'./lib/components/Button.js',
|
|
207
|
+
'./lib/components/Form.js',
|
|
208
|
+
'./lib/utils/helpers.js',
|
|
209
|
+
// ... all JS/TS files found
|
|
210
|
+
];
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
This enables:
|
|
214
|
+
|
|
215
|
+
- **Dynamic Discovery**: Runtime enumeration of available modules
|
|
216
|
+
- **Lazy Loading**: On-demand imports based on configuration
|
|
217
|
+
- **Plugin Systems**: Auto-registration of discovered modules
|
|
218
|
+
|
|
219
|
+
## Example Configuration
|
|
220
|
+
|
|
221
|
+
### Frontend Server Configuration
|
|
222
|
+
|
|
223
|
+
```json
|
|
224
|
+
{
|
|
225
|
+
"commonPaths": {
|
|
226
|
+
"appPath": "app",
|
|
227
|
+
"sharedLibPath": "shared-lib"
|
|
228
|
+
},
|
|
229
|
+
"copyOperations": [
|
|
230
|
+
{
|
|
231
|
+
"packageName": "@my-org/component-library",
|
|
232
|
+
"destPath": "$.commonPaths.sharedLibPath",
|
|
233
|
+
"generateModule": true
|
|
234
|
+
},
|
|
235
|
+
{
|
|
236
|
+
"packageName": "@my-org/ml-models",
|
|
237
|
+
"sourcePath": "assets/model.bin",
|
|
238
|
+
"destPath": "../public/files/model.bin",
|
|
239
|
+
"generateModule": false
|
|
240
|
+
},
|
|
241
|
+
{
|
|
242
|
+
"packageName": "@my-org/worker-package",
|
|
243
|
+
"sourcePath": "main.worker.js",
|
|
244
|
+
"destPath": "../public/workers/main.worker.js",
|
|
245
|
+
"generateModule": true
|
|
246
|
+
},
|
|
247
|
+
{
|
|
248
|
+
"packageName": "@my-org/worker-package",
|
|
249
|
+
"sourcePath": "main.worker.js.map",
|
|
250
|
+
"destPath": "../public/workers/main.worker.js.map",
|
|
251
|
+
"generateModule": false
|
|
252
|
+
}
|
|
253
|
+
]
|
|
254
|
+
}
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
### Mobile App Configuration
|
|
258
|
+
|
|
259
|
+
```json
|
|
260
|
+
{
|
|
261
|
+
"commonPaths": {
|
|
262
|
+
"appPath": "app",
|
|
263
|
+
"mobileLibPath": "mobile-shared"
|
|
264
|
+
},
|
|
265
|
+
"copyOperations": [
|
|
266
|
+
{
|
|
267
|
+
"packageName": "@my-org/mobile-components",
|
|
268
|
+
"destPath": "$.commonPaths.mobileLibPath",
|
|
269
|
+
"generateModule": true
|
|
270
|
+
}
|
|
271
|
+
]
|
|
272
|
+
}
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
## Integration Points
|
|
276
|
+
|
|
277
|
+
### 1. Vite Configuration
|
|
278
|
+
|
|
279
|
+
```typescript
|
|
280
|
+
// vite.config.ts
|
|
281
|
+
import { performCopyOperations } from '@common-stack/rollup-vite-utils/lib/preStartup/configLoader/configLoader.js';
|
|
282
|
+
|
|
283
|
+
export default defineConfig(({ isSsrBuild }) => {
|
|
284
|
+
const routesConfig = async (defineRoutes) => {
|
|
285
|
+
if (process.env.NODE_ENV === 'production') {
|
|
286
|
+
await performCopyOperations(config);
|
|
287
|
+
}
|
|
288
|
+
// Route configuration...
|
|
289
|
+
};
|
|
290
|
+
// Vite config...
|
|
291
|
+
});
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
### 2. Express Server
|
|
295
|
+
|
|
296
|
+
```javascript
|
|
297
|
+
// server.js
|
|
298
|
+
import { performCopyOperations } from '@common-stack/rollup-vite-utils/lib/preStartup/configLoader/configLoader.js';
|
|
299
|
+
|
|
300
|
+
const startServer = async () => {
|
|
301
|
+
await performCopyOperations(config);
|
|
302
|
+
// Server setup...
|
|
303
|
+
};
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
### 3. Build Scripts
|
|
307
|
+
|
|
308
|
+
```json
|
|
309
|
+
{
|
|
310
|
+
"scripts": {
|
|
311
|
+
"build": "vite build",
|
|
312
|
+
"start": "node server.js"
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
```
|
|
316
|
+
|
|
317
|
+
Copy operations run automatically during:
|
|
318
|
+
|
|
319
|
+
- Production builds (`yarn build`)
|
|
320
|
+
- Development server start (`yarn start`)
|
|
321
|
+
|
|
322
|
+
## Best Practices
|
|
323
|
+
|
|
324
|
+
### 1. Use Relative Paths Carefully
|
|
325
|
+
|
|
326
|
+
```json
|
|
327
|
+
{
|
|
328
|
+
"destPath": "../public/files/asset.bin"
|
|
329
|
+
}
|
|
330
|
+
```
|
|
331
|
+
|
|
332
|
+
The path is relative to the `app` directory specified in `commonPaths.appPath`.
|
|
333
|
+
|
|
334
|
+
### 2. Enable Module Generation Strategically
|
|
335
|
+
|
|
336
|
+
- ✅ **Use `generateModule: true`** for: Full libraries, plugin systems, component libraries
|
|
337
|
+
- ❌ **Use `generateModule: false`** for: Single files, binary assets, source maps
|
|
338
|
+
|
|
339
|
+
### 3. Organize by Purpose
|
|
340
|
+
|
|
341
|
+
Group copy operations logically:
|
|
342
|
+
|
|
343
|
+
- Framework/stack modules first
|
|
344
|
+
- Application modules second
|
|
345
|
+
- Assets and workers third
|
|
346
|
+
|
|
347
|
+
### 4. Version Consistency
|
|
348
|
+
|
|
349
|
+
Ensure package versions in `package.json` match the expected structure in copy operations.
|
|
350
|
+
|
|
351
|
+
### 5. Clean Builds
|
|
352
|
+
|
|
353
|
+
Copy operations check timestamps to avoid unnecessary copying, but for clean builds:
|
|
354
|
+
|
|
355
|
+
```bash
|
|
356
|
+
# Clean and rebuild
|
|
357
|
+
rm -rf servers/frontend-server/app/shared-lib
|
|
358
|
+
rm -rf servers/frontend-server/public/files
|
|
359
|
+
rm -rf servers/frontend-server/public/workers
|
|
360
|
+
npm run build # or yarn build
|
|
361
|
+
```
|
|
362
|
+
|
|
363
|
+
## Troubleshooting
|
|
364
|
+
|
|
365
|
+
### Issue: "Source path not found"
|
|
366
|
+
|
|
367
|
+
**Problem**: Package structure changed or `sourcePath` is incorrect
|
|
368
|
+
|
|
369
|
+
**Solution**:
|
|
370
|
+
|
|
371
|
+
1. Check the package in `node_modules/{packageName}/lib/`
|
|
372
|
+
2. Verify the `sourcePath` matches the actual file structure
|
|
373
|
+
3. Ensure the package is installed: `yarn install`
|
|
374
|
+
|
|
375
|
+
### Issue: "Module generation failed"
|
|
376
|
+
|
|
377
|
+
**Problem**: Destination directory doesn't exist or permissions issue
|
|
378
|
+
|
|
379
|
+
**Solution**:
|
|
380
|
+
|
|
381
|
+
1. Ensure parent directories exist
|
|
382
|
+
2. Check write permissions
|
|
383
|
+
3. Verify `destPath` is correct
|
|
384
|
+
|
|
385
|
+
### Issue: "Copy operation skipped"
|
|
386
|
+
|
|
387
|
+
**Problem**: Destination is newer than source (timestamp check)
|
|
388
|
+
|
|
389
|
+
**Solution**: This is normal behavior. To force copy:
|
|
390
|
+
|
|
391
|
+
1. Delete the destination directory/file
|
|
392
|
+
2. Re-run the build
|
|
393
|
+
|
|
394
|
+
### Issue: "Worker not loading in browser"
|
|
395
|
+
|
|
396
|
+
**Problem**: Worker file not accessible or incorrect path
|
|
397
|
+
|
|
398
|
+
**Solution**:
|
|
399
|
+
|
|
400
|
+
1. Verify the file exists in `public/workers/`
|
|
401
|
+
2. Check browser console for 404 errors
|
|
402
|
+
3. Ensure the worker path in code matches `destPath`
|
|
403
|
+
|
|
404
|
+
## Performance Considerations
|
|
405
|
+
|
|
406
|
+
1. **Incremental Copies**: The system uses timestamp comparison to skip unchanged files
|
|
407
|
+
2. **Production Only**: Some operations only run in production to speed up development
|
|
408
|
+
3. **Parallel Operations**: Multiple copy operations can run concurrently
|
|
409
|
+
4. **Caching**: Vite's build cache works with copied files
|
|
410
|
+
|
|
411
|
+
## Related Tools
|
|
412
|
+
|
|
413
|
+
- **Source**: `@common-stack/rollup-vite-utils` package
|
|
414
|
+
- **Configuration Loader**: `configLoader.js`
|
|
415
|
+
- **Environment Loader**: `envLoader.js`
|
|
416
|
+
|
|
417
|
+
## Summary
|
|
418
|
+
|
|
419
|
+
The Copy Operations system provides a declarative, configuration-driven approach to managing build-time asset distribution. It ensures that:
|
|
420
|
+
|
|
421
|
+
- Static assets are accessible at runtime
|
|
422
|
+
- Web workers are properly positioned for browser execution
|
|
423
|
+
- Module libraries support dynamic imports
|
|
424
|
+
- Build processes are efficient and incremental
|
|
425
|
+
- Configuration is centralized and maintainable
|
|
426
|
+
|
|
427
|
+
By understanding and properly configuring copy operations, you can ensure your application's assets and modules are correctly positioned for optimal runtime performance.
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
---
|
|
2
|
+
meta:
|
|
3
|
+
title: Assets
|
|
4
|
+
description: Assets
|
|
5
|
+
date: '2023-06-02T00:00:00'
|
|
6
|
+
updated: '2024-06-02T00:00:00'
|
|
7
|
+
excerpt: Assets...
|
|
8
|
+
headers:
|
|
9
|
+
Cache-Control: no-cache
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## Importing Assets
|
|
13
|
+
|
|
14
|
+
CDEBase is a webpack-based project, so it follows the general approach to importing assets —
|
|
15
|
+
[webpack dependency management]. You can look up the module `packages/assets` to see how assets are imported.
|
|
16
|
+
|
|
17
|
+
As you can see in the code sample below, the project imports all the assets from the `modules/favicon/common/assets`
|
|
18
|
+
folder:
|
|
19
|
+
|
|
20
|
+
```js
|
|
21
|
+
const exportedAssets = {};
|
|
22
|
+
let isbrowser = typeof window !== 'undefined';
|
|
23
|
+
if (isbrowser) {
|
|
24
|
+
// Favicon.ico should not be hashed, since browsers expect it to be exactly on /favicon.ico URL
|
|
25
|
+
require('!file-loader?name=[name].[ext]!./assets/favicon.ico'); // eslint-disable-line
|
|
26
|
+
|
|
27
|
+
// Require all files from assets dir recursively adding them into assets.json
|
|
28
|
+
const req = require.context('!file-loader?name=[hash].[ext]!./assets', true, /.*/);
|
|
29
|
+
req.keys().map((key) => {
|
|
30
|
+
exportedAssets[`${key.replace('./', '')}`] = req(key);
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export default exportedAssets;
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
To use new assets in your client side react code, import from the favicon package as follows:
|
|
38
|
+
|
|
39
|
+
```js
|
|
40
|
+
import assets from '@admin-layout/assets';
|
|
41
|
+
console.log('--ASSETS', assets);
|
|
42
|
+
|
|
43
|
+
export const Favicon = <img src={assets['favicon.ico']} />;
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
<img width="1052" alt="image" src="https://user-images.githubusercontent.com/3382355/232731184-a5c3b622-48f0-41ac-a96c-678339d71558.png"/>
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
---
|
|
2
|
+
meta:
|
|
3
|
+
title: Feature Browser API
|
|
4
|
+
description: Feature Browser API
|
|
5
|
+
date: '2023-06-02T00:00:00'
|
|
6
|
+
updated: '2024-06-02T00:00:00'
|
|
7
|
+
excerpt: Feature Browser API...
|
|
8
|
+
headers:
|
|
9
|
+
Cache-Control: no-cache
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Feature Browser API
|
|
13
|
+
|
|
14
|
+
Feature is a fractal-based modular architecture. It is like a module federation to create independent packages that have references to all that need to run a fullstack application. Each of these module should have code limited to its requirement that way we achieve seperation of concerns.
|
|
15
|
+
|
|
16
|
+
It is opiniated and it supports following for client state management
|
|
17
|
+
|
|
18
|
+
- redux
|
|
19
|
+
- redux-persist
|
|
20
|
+
- apollo-client
|
|
21
|
+
- redux-observable
|
|
22
|
+
|
|
23
|
+
Components are rendered only through `react-router`, for that we pass `routeConfig`.
|
|
24
|
+
|
|
25
|
+
Dynamic Components are provided using `slot-fill` logic using `componentFillPlugins` configuration.
|
|
26
|
+
|
|
27
|
+
Third-party Scripts can be inserted into HTML page as well.
|
|
28
|
+
|
|
29
|
+
Each of these packaged module is used in the `frontend-server` like below
|
|
30
|
+
|
|
31
|
+
```js
|
|
32
|
+
import counterModule from '@sample-stack/counter-module-browser';
|
|
33
|
+
import accountModule from '@sample-stack/account-module-browser';
|
|
34
|
+
import paymentModule from '@sample-stack/payment-module-browser';
|
|
35
|
+
|
|
36
|
+
const features = new Feature(FeatureWithRouterFactory, counterModule, accountModule, paymentModule);
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
The `frontend-server` have all required logic to consolidate the `reducers`, `epics`, `apollo-client configuration`, `react-router configuration` etc to run the application.
|
|
40
|
+
|
|
41
|
+
For example provide all the required configuration to the `Feature` like below.
|
|
42
|
+
|
|
43
|
+
```js
|
|
44
|
+
const module = new Feature({
|
|
45
|
+
/**
|
|
46
|
+
Customizing ID in the apollo cache.
|
|
47
|
+
**/
|
|
48
|
+
dataIdFromObject,
|
|
49
|
+
/**
|
|
50
|
+
load apollo-client state management.
|
|
51
|
+
**/
|
|
52
|
+
clientStateParams: { resolvers, typeDefs: schema },
|
|
53
|
+
/**
|
|
54
|
+
load redux-observables to manage the client state.
|
|
55
|
+
**/
|
|
56
|
+
epic: [onUserAccountNotFound],
|
|
57
|
+
/**
|
|
58
|
+
load react-router configuration to display component based on navigation.
|
|
59
|
+
for more information check [Routing](./routing.mx)
|
|
60
|
+
**/
|
|
61
|
+
routeConfig: filteredRoutes,
|
|
62
|
+
componentFillPlugins: [
|
|
63
|
+
{
|
|
64
|
+
name: 'teams-contribution',
|
|
65
|
+
render: TeamsContribution,
|
|
66
|
+
},
|
|
67
|
+
],
|
|
68
|
+
/**
|
|
69
|
+
load any scripts when this Feature Module is used.
|
|
70
|
+
**/
|
|
71
|
+
scriptsInsert: 'https://js.stripe.com/v3/',
|
|
72
|
+
createContainerFunc: [Auth0Module],
|
|
73
|
+
/**
|
|
74
|
+
load reducers to the Redux Store when this Feature Module is used.
|
|
75
|
+
**/
|
|
76
|
+
reducer: { user: userReducer, redirectRoutes: redirectRoutesReducer, authErrors: authErrorsReducer },
|
|
77
|
+
/**
|
|
78
|
+
By default all redux state is persisted using redux-persist, if you need to manipulate the persist state
|
|
79
|
+
add configuration here.
|
|
80
|
+
**/
|
|
81
|
+
reduxPersistTransforms: [blacklistErrorFilter, blacklistUserFilter],
|
|
82
|
+
});
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
We don't need to put the `redux` store creation nor apollo-client setup in the Module as this action will be taken care at the higher level (frontend-server).
|
|
86
|
+
|
|
87
|
+
### Client State Management
|
|
88
|
+
|
|
89
|
+
Applciation state can be managed using Apollo Link State and Redux.
|
|
90
|
+
|
|
91
|
+
#### Redux
|
|
92
|
+
|
|
93
|
+
Support [redux's reducers](https://redux.js.org/usage/structuring-reducers/basic-reducer-structure)
|
|
94
|
+
Example:
|
|
95
|
+
|
|
96
|
+
```js
|
|
97
|
+
const module = new Feature({
|
|
98
|
+
reducer: { user: userReducer, redirectRoutes: redirectRoutesReducer, authErrors: authErrorsReducer },
|
|
99
|
+
....
|
|
100
|
+
});
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
#### Apollo Client State Management
|
|
104
|
+
|
|
105
|
+
Support [interacting with local data in Apollo Client](https://www.apollographql.com/docs/react/local-state/local-state-management/)
|
|
106
|
+
|
|
107
|
+
Example:
|
|
108
|
+
|
|
109
|
+
```js
|
|
110
|
+
const module = new Feature({
|
|
111
|
+
clientStateParams: { resolvers, typeDefs: schema, typePolicies },
|
|
112
|
+
....
|
|
113
|
+
});
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
##### dataIdFromObject
|
|
117
|
+
|
|
118
|
+
Support cusotmizing the ID in the apollo cache. More infromation is [here](https://www.apollographql.com/docs/react/caching/cache-configuration/#dataidfromobject)
|
|
119
|
+
|
|
120
|
+
#### Epic
|
|
121
|
+
|
|
122
|
+
Support [redux-observable](https://redux-observable.js.org/docs/basics/Epics.html)
|
|
123
|
+
|
|
124
|
+
Example:
|
|
125
|
+
|
|
126
|
+
```js
|
|
127
|
+
const module = new Feature({
|
|
128
|
+
epic: [onUserAccountNotFound],
|
|
129
|
+
....
|
|
130
|
+
});
|
|
131
|
+
```
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
---
|
|
2
|
+
meta:
|
|
3
|
+
title: Feature Browser
|
|
4
|
+
description: Feature Browser
|
|
5
|
+
date: '2023-06-02T00:00:00'
|
|
6
|
+
updated: '2024-06-02T00:00:00'
|
|
7
|
+
excerpt: Feature Browser...
|
|
8
|
+
headers:
|
|
9
|
+
Cache-Control: no-cache
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## Feature Browser
|
|
13
|
+
|
|
14
|
+
**[Feature Browser API](/docs/feature-api/feature-browser/feature)**
|
|
15
|
+
|
|
16
|
+
**[Routes and Menu](/docs/feature-api/feature-browser/routes-menu)**
|
|
17
|
+
|
|
18
|
+
**[Routing Convetion](/docs/feature-api/feature-browser/routing-convention)**
|
|
19
|
+
|
|
20
|
+
**[Routing](/docs/feature-api/feature-browser/routing)**
|
|
21
|
+
|
|
22
|
+
**[Auth & Permissions](/docs/feature-api/feature-browser/auth-permissions)**
|