@vendure/docs 0.0.0-202601161541
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/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/manifest.d.ts +3 -0
- package/dist/manifest.d.ts.map +1 -0
- package/dist/manifest.js +857 -0
- package/dist/manifest.js.map +1 -0
- package/docs/guides/core-concepts/auth/admin-role.webp +0 -0
- package/docs/guides/core-concepts/auth/admin.webp +0 -0
- package/docs/guides/core-concepts/auth/customer.webp +0 -0
- package/docs/guides/core-concepts/auth/index.md +557 -0
- package/docs/guides/core-concepts/auth/roles.webp +0 -0
- package/docs/guides/core-concepts/channels/channel-token.webp +0 -0
- package/docs/guides/core-concepts/channels/channels.webp +0 -0
- package/docs/guides/core-concepts/channels/channels_currencies_diagram.png +0 -0
- package/docs/guides/core-concepts/channels/channels_diagram.png +0 -0
- package/docs/guides/core-concepts/channels/channels_prices_diagram.png +0 -0
- package/docs/guides/core-concepts/channels/default-currency.webp +0 -0
- package/docs/guides/core-concepts/channels/index.md +154 -0
- package/docs/guides/core-concepts/channels/variant-prices.webp +0 -0
- package/docs/guides/core-concepts/collections/collection-filters.webp +0 -0
- package/docs/guides/core-concepts/collections/collections.webp +0 -0
- package/docs/guides/core-concepts/collections/filter-inheritance.webp +0 -0
- package/docs/guides/core-concepts/collections/index.mdx +125 -0
- package/docs/guides/core-concepts/customers/customer.webp +0 -0
- package/docs/guides/core-concepts/customers/index.mdx +21 -0
- package/docs/guides/core-concepts/email/email-plugin-flow.webp +0 -0
- package/docs/guides/core-concepts/email/index.mdx +155 -0
- package/docs/guides/core-concepts/images-assets/asset-flow.webp +0 -0
- package/docs/guides/core-concepts/images-assets/asset-tags.webp +0 -0
- package/docs/guides/core-concepts/images-assets/index.mdx +42 -0
- package/docs/guides/core-concepts/money/index.mdx +246 -0
- package/docs/guides/core-concepts/orders/custom-order-ui.webp +0 -0
- package/docs/guides/core-concepts/orders/index.md +366 -0
- package/docs/guides/core-concepts/orders/order-process.webp +0 -0
- package/docs/guides/core-concepts/orders/order.webp +0 -0
- package/docs/guides/core-concepts/payment/index.md +410 -0
- package/docs/guides/core-concepts/payment/payment-method.webp +0 -0
- package/docs/guides/core-concepts/payment/payment_sequence_one_step.png +0 -0
- package/docs/guides/core-concepts/payment/payment_sequence_two_step.png +0 -0
- package/docs/guides/core-concepts/products/facets.webp +0 -0
- package/docs/guides/core-concepts/products/index.mdx +59 -0
- package/docs/guides/core-concepts/products/product-relations.webp +0 -0
- package/docs/guides/core-concepts/products/products-variants.webp +0 -0
- package/docs/guides/core-concepts/promotions/index.md +324 -0
- package/docs/guides/core-concepts/shipping/index.md +225 -0
- package/docs/guides/core-concepts/shipping/shipping-method.webp +0 -0
- package/docs/guides/core-concepts/stock-control/global-stock-control.webp +0 -0
- package/docs/guides/core-concepts/stock-control/index.md +233 -0
- package/docs/guides/core-concepts/stock-control/stock-levels.webp +0 -0
- package/docs/guides/core-concepts/taxes/index.mdx +76 -0
- package/docs/guides/deployment/deploy-to-digital-ocean-app-platform/01-create-space.webp +0 -0
- package/docs/guides/deployment/deploy-to-digital-ocean-app-platform/02-space-access-keys.webp +0 -0
- package/docs/guides/deployment/deploy-to-digital-ocean-app-platform/03-create-app.webp +0 -0
- package/docs/guides/deployment/deploy-to-digital-ocean-app-platform/04-configure-server.webp +0 -0
- package/docs/guides/deployment/deploy-to-digital-ocean-app-platform/05-open-server-settings.webp +0 -0
- package/docs/guides/deployment/deploy-to-digital-ocean-app-platform/06-admin-app-route.webp +0 -0
- package/docs/guides/deployment/deploy-to-digital-ocean-app-platform/07-open-app.webp +0 -0
- package/docs/guides/deployment/deploy-to-digital-ocean-app-platform/deploy-to-do-app-platform.webp +0 -0
- package/docs/guides/deployment/deploy-to-digital-ocean-app-platform/index.md +246 -0
- package/docs/guides/deployment/deploy-to-google-cloud-run/deploy-to-gcr.webp +0 -0
- package/docs/guides/deployment/deploy-to-google-cloud-run/index.md +53 -0
- package/docs/guides/deployment/deploy-to-northflank/01-create-template-screen.webp +0 -0
- package/docs/guides/deployment/deploy-to-northflank/02-paste-config.webp +0 -0
- package/docs/guides/deployment/deploy-to-northflank/03-run-template.webp +0 -0
- package/docs/guides/deployment/deploy-to-northflank/04-find-project.webp +0 -0
- package/docs/guides/deployment/deploy-to-northflank/05-server-service.webp +0 -0
- package/docs/guides/deployment/deploy-to-northflank/06-find-url.webp +0 -0
- package/docs/guides/deployment/deploy-to-northflank/deploy-to-northflank.webp +0 -0
- package/docs/guides/deployment/deploy-to-northflank/index.md +606 -0
- package/docs/guides/deployment/deploy-to-railway/01-new-service.webp +0 -0
- package/docs/guides/deployment/deploy-to-railway/02-env-vars.webp +0 -0
- package/docs/guides/deployment/deploy-to-railway/03-test-server.webp +0 -0
- package/docs/guides/deployment/deploy-to-railway/deploy-to-railway.webp +0 -0
- package/docs/guides/deployment/deploy-to-railway/index.md +202 -0
- package/docs/guides/deployment/deploy-to-render/01-create-db.webp +0 -0
- package/docs/guides/deployment/deploy-to-render/02-env-group.webp +0 -0
- package/docs/guides/deployment/deploy-to-render/03-db-connection.webp +0 -0
- package/docs/guides/deployment/deploy-to-render/04-link-env-group.webp +0 -0
- package/docs/guides/deployment/deploy-to-render/05-server-url.webp +0 -0
- package/docs/guides/deployment/deploy-to-render/deploy-to-render.webp +0 -0
- package/docs/guides/deployment/deploy-to-render/index.md +221 -0
- package/docs/guides/deployment/deploying-admin-ui.md +130 -0
- package/docs/guides/deployment/getting-data-into-production.md +50 -0
- package/docs/guides/deployment/horizontal-scaling.md +75 -0
- package/docs/guides/deployment/production-configuration/env-var-ui.webp +0 -0
- package/docs/guides/deployment/production-configuration/index.md +140 -0
- package/docs/guides/deployment/server-resource-requirements.md +29 -0
- package/docs/guides/deployment/using-docker.md +193 -0
- package/docs/guides/developer-guide/cache/cache-service.webp +0 -0
- package/docs/guides/developer-guide/cache/index.mdx +327 -0
- package/docs/guides/developer-guide/channel-aware/index.md +117 -0
- package/docs/guides/developer-guide/cli/add-command.webp +0 -0
- package/docs/guides/developer-guide/cli/index.md +418 -0
- package/docs/guides/developer-guide/cli/migrate-command.webp +0 -0
- package/docs/guides/developer-guide/cli/schema-command.webp +0 -0
- package/docs/guides/developer-guide/configuration/index.md +226 -0
- package/docs/guides/developer-guide/custom-fields/custom-fields-data-table.webp +0 -0
- package/docs/guides/developer-guide/custom-fields/custom-fields-ui.webp +0 -0
- package/docs/guides/developer-guide/custom-fields/index.md +1423 -0
- package/docs/guides/developer-guide/custom-permissions/index.md +186 -0
- package/docs/guides/developer-guide/custom-strategies-in-plugins/index.mdx +467 -0
- package/docs/guides/developer-guide/database-entity/index.md +136 -0
- package/docs/guides/developer-guide/dataloaders/index.md +137 -0
- package/docs/guides/developer-guide/db-subscribers/index.md +115 -0
- package/docs/guides/developer-guide/error-handling/index.mdx +324 -0
- package/docs/guides/developer-guide/events/index.mdx +406 -0
- package/docs/guides/developer-guide/extend-graphql-api/index.md +501 -0
- package/docs/guides/developer-guide/has-custom-fields/index.md +174 -0
- package/docs/guides/developer-guide/importing-data/index.md +488 -0
- package/docs/guides/developer-guide/importing-data/reindex.webp +0 -0
- package/docs/guides/developer-guide/logging/index.md +77 -0
- package/docs/guides/developer-guide/migrating-from-v1/breaking-api-changes.md +213 -0
- package/docs/guides/developer-guide/migrating-from-v1/database-migration.md +39 -0
- package/docs/guides/developer-guide/migrating-from-v1/index.md +41 -0
- package/docs/guides/developer-guide/migrating-from-v1/storefront-migration.md +30 -0
- package/docs/guides/developer-guide/migrations/index.md +197 -0
- package/docs/guides/developer-guide/migrations/migration.webp +0 -0
- package/docs/guides/developer-guide/nest-devtools/index.md +74 -0
- package/docs/guides/developer-guide/nest-devtools/nest-devtools-bootstrap-perf.webp +0 -0
- package/docs/guides/developer-guide/nest-devtools/nest-devtools-graph.webp +0 -0
- package/docs/guides/developer-guide/overview/Vendure_docs-architecture.webp +0 -0
- package/docs/guides/developer-guide/overview/index.md +40 -0
- package/docs/guides/developer-guide/plugins/index.mdx +806 -0
- package/docs/guides/developer-guide/rest-endpoint/index.md +99 -0
- package/docs/guides/developer-guide/scheduled-tasks/index.md +298 -0
- package/docs/guides/developer-guide/security/index.md +264 -0
- package/docs/guides/developer-guide/settings-store/index.mdx +553 -0
- package/docs/guides/developer-guide/stand-alone-scripts/index.md +119 -0
- package/docs/guides/developer-guide/strategies-configurable-operations/collection-filters-args.webp +0 -0
- package/docs/guides/developer-guide/strategies-configurable-operations/collection-filters.webp +0 -0
- package/docs/guides/developer-guide/strategies-configurable-operations/index.mdx +373 -0
- package/docs/guides/developer-guide/testing/index.md +254 -0
- package/docs/guides/developer-guide/the-api-layer/Vendure_docs-api_request.webp +0 -0
- package/docs/guides/developer-guide/the-api-layer/index.mdx +474 -0
- package/docs/guides/developer-guide/the-service-layer/index.mdx +311 -0
- package/docs/guides/developer-guide/translatable/index.md +224 -0
- package/docs/guides/developer-guide/translations/index.md +165 -0
- package/docs/guides/developer-guide/updating/index.md +79 -0
- package/docs/guides/developer-guide/uploading-files/index.md +220 -0
- package/docs/guides/developer-guide/worker-job-queue/Vendure_docs-job-queue-2.webp +0 -0
- package/docs/guides/developer-guide/worker-job-queue/Vendure_docs-job-queue-3.webp +0 -0
- package/docs/guides/developer-guide/worker-job-queue/Vendure_docs-job-queue.webp +0 -0
- package/docs/guides/developer-guide/worker-job-queue/index.mdx +522 -0
- package/docs/guides/developer-guide/worker-job-queue/worker-job-queue.webp +0 -0
- package/docs/guides/extending-the-admin-ui/add-actions-to-pages/index.md +233 -0
- package/docs/guides/extending-the-admin-ui/add-actions-to-pages/ui-extensions-actionbar-dropdown.webp +0 -0
- package/docs/guides/extending-the-admin-ui/add-actions-to-pages/ui-extensions-actionbar.webp +0 -0
- package/docs/guides/extending-the-admin-ui/adding-ui-translations/index.md +113 -0
- package/docs/guides/extending-the-admin-ui/adding-ui-translations/ui-translations-01.webp +0 -0
- package/docs/guides/extending-the-admin-ui/admin-ui-theming-branding/index.md +133 -0
- package/docs/guides/extending-the-admin-ui/alerts/alerts-01.webp +0 -0
- package/docs/guides/extending-the-admin-ui/alerts/index.md +56 -0
- package/docs/guides/extending-the-admin-ui/bulk-actions/bulk-actions-screenshot.webp +0 -0
- package/docs/guides/extending-the-admin-ui/bulk-actions/index.md +78 -0
- package/docs/guides/extending-the-admin-ui/creating-detail-views/index.md +332 -0
- package/docs/guides/extending-the-admin-ui/creating-list-views/index.md +331 -0
- package/docs/guides/extending-the-admin-ui/custom-data-table-components/custom-data-table-location.webp +0 -0
- package/docs/guides/extending-the-admin-ui/custom-data-table-components/custom-data-table.webp +0 -0
- package/docs/guides/extending-the-admin-ui/custom-data-table-components/index.md +111 -0
- package/docs/guides/extending-the-admin-ui/custom-detail-components/detail-component.webp +0 -0
- package/docs/guides/extending-the-admin-ui/custom-detail-components/index.md +198 -0
- package/docs/guides/extending-the-admin-ui/custom-form-inputs/index.md +285 -0
- package/docs/guides/extending-the-admin-ui/custom-form-inputs/ui-extensions-custom-field-default.webp +0 -0
- package/docs/guides/extending-the-admin-ui/custom-form-inputs/ui-extensions-custom-field-slider.webp +0 -0
- package/docs/guides/extending-the-admin-ui/custom-timeline-components/index.md +79 -0
- package/docs/guides/extending-the-admin-ui/custom-timeline-components/timeline-entry.webp +0 -0
- package/docs/guides/extending-the-admin-ui/dashboard-widgets/dashboard-widgets.webp +0 -0
- package/docs/guides/extending-the-admin-ui/dashboard-widgets/index.md +149 -0
- package/docs/guides/extending-the-admin-ui/defining-routes/index.md +777 -0
- package/docs/guides/extending-the-admin-ui/defining-routes/route-area.webp +0 -0
- package/docs/guides/extending-the-admin-ui/defining-routes/ui-extensions-greeter.webp +0 -0
- package/docs/guides/extending-the-admin-ui/getting-started/index.md +656 -0
- package/docs/guides/extending-the-admin-ui/getting-started/provider-extension-points.webp +0 -0
- package/docs/guides/extending-the-admin-ui/nav-menu/index.md +97 -0
- package/docs/guides/extending-the-admin-ui/nav-menu/nav-menu-id.webp +0 -0
- package/docs/guides/extending-the-admin-ui/nav-menu/ui-extensions-navbar.webp +0 -0
- package/docs/guides/extending-the-admin-ui/page-tabs/index.md +44 -0
- package/docs/guides/extending-the-admin-ui/page-tabs/ui-extensions-tabs.webp +0 -0
- package/docs/guides/extending-the-admin-ui/ui-library/buttons.webp +0 -0
- package/docs/guides/extending-the-admin-ui/ui-library/card.webp +0 -0
- package/docs/guides/extending-the-admin-ui/ui-library/form-inputs.webp +0 -0
- package/docs/guides/extending-the-admin-ui/ui-library/icons.webp +0 -0
- package/docs/guides/extending-the-admin-ui/ui-library/index.md +356 -0
- package/docs/guides/extending-the-admin-ui/ui-library/layout.webp +0 -0
- package/docs/guides/extending-the-admin-ui/using-other-frameworks/index.md +205 -0
- package/docs/guides/extending-the-admin-ui/using-other-frameworks/ui-extensions-cra.jpg +0 -0
- package/docs/guides/extending-the-dashboard/alerts/alert.webp +0 -0
- package/docs/guides/extending-the-dashboard/alerts/index.md +89 -0
- package/docs/guides/extending-the-dashboard/creating-pages/detail-pages.md +316 -0
- package/docs/guides/extending-the-dashboard/creating-pages/index.md +90 -0
- package/docs/guides/extending-the-dashboard/creating-pages/list-pages.md +206 -0
- package/docs/guides/extending-the-dashboard/creating-pages/tabbed-page-example.webp +0 -0
- package/docs/guides/extending-the-dashboard/creating-pages/tabbed-pages.md +144 -0
- package/docs/guides/extending-the-dashboard/custom-form-components/color-picker.webp +0 -0
- package/docs/guides/extending-the-dashboard/custom-form-components/dev-mode.webp +0 -0
- package/docs/guides/extending-the-dashboard/custom-form-components/example-currency-input.webp +0 -0
- package/docs/guides/extending-the-dashboard/custom-form-components/example-email-input.webp +0 -0
- package/docs/guides/extending-the-dashboard/custom-form-components/example-slug-input.webp +0 -0
- package/docs/guides/extending-the-dashboard/custom-form-components/example-tags-input.webp +0 -0
- package/docs/guides/extending-the-dashboard/custom-form-components/form-component-examples.mdx +445 -0
- package/docs/guides/extending-the-dashboard/custom-form-components/index.md +465 -0
- package/docs/guides/extending-the-dashboard/custom-form-components/locator.webp +0 -0
- package/docs/guides/extending-the-dashboard/custom-form-components/relation-selectors.md +687 -0
- package/docs/guides/extending-the-dashboard/customizing-pages/action-bar-button.webp +0 -0
- package/docs/guides/extending-the-dashboard/customizing-pages/action-bar-dropdown.webp +0 -0
- package/docs/guides/extending-the-dashboard/customizing-pages/action-bar-items.md +272 -0
- package/docs/guides/extending-the-dashboard/customizing-pages/custom-widget.webp +0 -0
- package/docs/guides/extending-the-dashboard/customizing-pages/customizing-detail-pages.md +129 -0
- package/docs/guides/extending-the-dashboard/customizing-pages/customizing-list-pages.md +93 -0
- package/docs/guides/extending-the-dashboard/customizing-pages/customizing-login-page.md +66 -0
- package/docs/guides/extending-the-dashboard/customizing-pages/history-entries.md +43 -0
- package/docs/guides/extending-the-dashboard/customizing-pages/history-entry.webp +0 -0
- package/docs/guides/extending-the-dashboard/customizing-pages/index.md +10 -0
- package/docs/guides/extending-the-dashboard/customizing-pages/insights-widgets.md +57 -0
- package/docs/guides/extending-the-dashboard/customizing-pages/login-page.webp +0 -0
- package/docs/guides/extending-the-dashboard/customizing-pages/page-blocks.md +244 -0
- package/docs/guides/extending-the-dashboard/data-fetching/index.md +126 -0
- package/docs/guides/extending-the-dashboard/data-fetching/type-inference.webp +0 -0
- package/docs/guides/extending-the-dashboard/deployment/index.md +200 -0
- package/docs/guides/extending-the-dashboard/extending-overview/dev-mode.webp +0 -0
- package/docs/guides/extending-the-dashboard/extending-overview/index.md +228 -0
- package/docs/guides/extending-the-dashboard/extending-overview/location-id.webp +0 -0
- package/docs/guides/extending-the-dashboard/getting-started/detail-view.webp +0 -0
- package/docs/guides/extending-the-dashboard/getting-started/index.md +194 -0
- package/docs/guides/extending-the-dashboard/getting-started/list-view-empty.webp +0 -0
- package/docs/guides/extending-the-dashboard/getting-started/list-view-full.webp +0 -0
- package/docs/guides/extending-the-dashboard/getting-started/page-block.webp +0 -0
- package/docs/guides/extending-the-dashboard/getting-started/test-page.webp +0 -0
- package/docs/guides/extending-the-dashboard/localization/index.md +94 -0
- package/docs/guides/extending-the-dashboard/migration/index.md +1902 -0
- package/docs/guides/extending-the-dashboard/navigation/dev-mode-nav.webp +0 -0
- package/docs/guides/extending-the-dashboard/navigation/index.md +322 -0
- package/docs/guides/extending-the-dashboard/navigation/unauthenticated-page.webp +0 -0
- package/docs/guides/extending-the-dashboard/tech-stack/index.md +395 -0
- package/docs/guides/extending-the-dashboard/theming/index.md +180 -0
- package/docs/guides/extending-the-dashboard/theming/show-colour-value-inspection.gif +0 -0
- package/docs/guides/getting-started/graphql-intro/index.mdx +572 -0
- package/docs/guides/getting-started/installation/app-screens.webp +0 -0
- package/docs/guides/getting-started/installation/index.md +234 -0
- package/docs/guides/getting-started/try-the-api/graphiql-docs.jpeg +0 -0
- package/docs/guides/getting-started/try-the-api/graphiql.jpeg +0 -0
- package/docs/guides/getting-started/try-the-api/index.mdx +238 -0
- package/docs/guides/how-to/cms-integration-plugin/index.mdx +2083 -0
- package/docs/guides/how-to/codegen/index.md +280 -0
- package/docs/guides/how-to/configurable-products/index.md +138 -0
- package/docs/guides/how-to/digital-products/index.mdx +485 -0
- package/docs/guides/how-to/digital-products/product-variant.webp +0 -0
- package/docs/guides/how-to/digital-products/shipping-method.webp +0 -0
- package/docs/guides/how-to/github-oauth-authentication/index.mdx +360 -0
- package/docs/guides/how-to/google-oauth-authentication/index.mdx +494 -0
- package/docs/guides/how-to/multi-vendor-marketplaces/aggregate-order.webp +0 -0
- package/docs/guides/how-to/multi-vendor-marketplaces/index.md +197 -0
- package/docs/guides/how-to/paginated-list/index.mdx +360 -0
- package/docs/guides/how-to/publish-plugin/index.mdx +402 -0
- package/docs/guides/how-to/s3-asset-storage/index.mdx +572 -0
- package/docs/guides/how-to/telemetry/grafana-logs.webp +0 -0
- package/docs/guides/how-to/telemetry/grafana-trace.webp +0 -0
- package/docs/guides/how-to/telemetry/index.md +260 -0
- package/docs/guides/how-to/telemetry/jaeger-trace.webp +0 -0
- package/docs/guides/storefront/active-order/index.mdx +201 -0
- package/docs/guides/storefront/checkout-flow/index.mdx +428 -0
- package/docs/guides/storefront/codegen/index.mdx +157 -0
- package/docs/guides/storefront/connect-api/index.mdx +677 -0
- package/docs/guides/storefront/customer-accounts/index.mdx +389 -0
- package/docs/guides/storefront/customer-accounts/pw-reset.webp +0 -0
- package/docs/guides/storefront/customer-accounts/verification.webp +0 -0
- package/docs/guides/storefront/listing-products/index.mdx +711 -0
- package/docs/guides/storefront/navigation-menu/index.mdx +157 -0
- package/docs/guides/storefront/order-workflow/index.md +231 -0
- package/docs/guides/storefront/order-workflow/order_class_diagram.png +0 -0
- package/docs/guides/storefront/order-workflow/order_state_diagram.png +0 -0
- package/docs/guides/storefront/product-detail/index.mdx +295 -0
- package/docs/guides/storefront/storefront-starters/angular-storefront.webp +0 -0
- package/docs/guides/storefront/storefront-starters/index.mdx +69 -0
- package/docs/guides/storefront/storefront-starters/next-storefront.webp +0 -0
- package/docs/guides/storefront/storefront-starters/qwik-storefront.webp +0 -0
- package/docs/guides/storefront/storefront-starters/remix-storefront.webp +0 -0
- package/docs/reference/admin-ui-api/action-bar/action-bar-context.md +82 -0
- package/docs/reference/admin-ui-api/action-bar/action-bar-dropdown-menu-item.md +93 -0
- package/docs/reference/admin-ui-api/action-bar/action-bar-item.md +106 -0
- package/docs/reference/admin-ui-api/action-bar/action-bar-location-id.md +17 -0
- package/docs/reference/admin-ui-api/action-bar/add-action-bar-dropdown-menu-item.md +38 -0
- package/docs/reference/admin-ui-api/action-bar/add-action-bar-item.md +36 -0
- package/docs/reference/admin-ui-api/action-bar/index.md +5 -0
- package/docs/reference/admin-ui-api/action-bar/page-location-id.md +61 -0
- package/docs/reference/admin-ui-api/action-bar/router-link-definition.md +16 -0
- package/docs/reference/admin-ui-api/alerts/alert-config.md +88 -0
- package/docs/reference/admin-ui-api/alerts/alert-context.md +52 -0
- package/docs/reference/admin-ui-api/alerts/index.md +5 -0
- package/docs/reference/admin-ui-api/alerts/register-alert.md +23 -0
- package/docs/reference/admin-ui-api/bulk-actions/bulk-action.md +229 -0
- package/docs/reference/admin-ui-api/bulk-actions/index.md +5 -0
- package/docs/reference/admin-ui-api/bulk-actions/register-bulk-action.md +63 -0
- package/docs/reference/admin-ui-api/components/asset-picker-dialog-component.md +160 -0
- package/docs/reference/admin-ui-api/components/chip-component.md +63 -0
- package/docs/reference/admin-ui-api/components/currency-input-component.md +174 -0
- package/docs/reference/admin-ui-api/components/data-table-component.md +238 -0
- package/docs/reference/admin-ui-api/components/data-table2component.md +354 -0
- package/docs/reference/admin-ui-api/components/datetime-picker-component.md +262 -0
- package/docs/reference/admin-ui-api/components/dropdown-component.md +86 -0
- package/docs/reference/admin-ui-api/components/facet-value-selector-component.md +155 -0
- package/docs/reference/admin-ui-api/components/index.md +5 -0
- package/docs/reference/admin-ui-api/components/object-tree-component.md +86 -0
- package/docs/reference/admin-ui-api/components/order-state-label-component.md +41 -0
- package/docs/reference/admin-ui-api/components/product-variant-selector-component.md +75 -0
- package/docs/reference/admin-ui-api/components/rich-text-editor-component.md +108 -0
- package/docs/reference/admin-ui-api/components/zone-selector-component.md +124 -0
- package/docs/reference/admin-ui-api/custom-detail-components/custom-detail-component-config.md +41 -0
- package/docs/reference/admin-ui-api/custom-detail-components/custom-detail-component-location-id.md +36 -0
- package/docs/reference/admin-ui-api/custom-detail-components/custom-detail-component.md +36 -0
- package/docs/reference/admin-ui-api/custom-detail-components/index.md +5 -0
- package/docs/reference/admin-ui-api/custom-detail-components/register-custom-detail-component.md +69 -0
- package/docs/reference/admin-ui-api/custom-history-entry-components/customer-history-entry-component.md +32 -0
- package/docs/reference/admin-ui-api/custom-history-entry-components/history-entry-component.md +57 -0
- package/docs/reference/admin-ui-api/custom-history-entry-components/history-entry-config.md +35 -0
- package/docs/reference/admin-ui-api/custom-history-entry-components/index.md +5 -0
- package/docs/reference/admin-ui-api/custom-history-entry-components/order-history-entry-component.md +32 -0
- package/docs/reference/admin-ui-api/custom-history-entry-components/register-history-entry-component.md +79 -0
- package/docs/reference/admin-ui-api/custom-input-components/default-inputs.md +1034 -0
- package/docs/reference/admin-ui-api/custom-input-components/form-input-component.md +56 -0
- package/docs/reference/admin-ui-api/custom-input-components/index.md +5 -0
- package/docs/reference/admin-ui-api/custom-input-components/register-form-input-component.md +71 -0
- package/docs/reference/admin-ui-api/custom-table-components/custom-column-component.md +32 -0
- package/docs/reference/admin-ui-api/custom-table-components/data-table-component-config.md +48 -0
- package/docs/reference/admin-ui-api/custom-table-components/index.md +5 -0
- package/docs/reference/admin-ui-api/custom-table-components/register-data-table-component.md +55 -0
- package/docs/reference/admin-ui-api/dashboard-widgets/dashboard-widget-config.md +60 -0
- package/docs/reference/admin-ui-api/dashboard-widgets/index.md +5 -0
- package/docs/reference/admin-ui-api/dashboard-widgets/register-dashboard-widget.md +27 -0
- package/docs/reference/admin-ui-api/dashboard-widgets/set-dashboard-widget-layout.md +22 -0
- package/docs/reference/admin-ui-api/dashboard-widgets/widget-layout-definition.md +16 -0
- package/docs/reference/admin-ui-api/directives/if-multichannel-directive.md +41 -0
- package/docs/reference/admin-ui-api/directives/if-permissions-directive.md +43 -0
- package/docs/reference/admin-ui-api/directives/index.md +5 -0
- package/docs/reference/admin-ui-api/index.md +13 -0
- package/docs/reference/admin-ui-api/list-detail-views/base-detail-component.md +168 -0
- package/docs/reference/admin-ui-api/list-detail-views/base-entity-resolver.md +54 -0
- package/docs/reference/admin-ui-api/list-detail-views/base-list-component.md +155 -0
- package/docs/reference/admin-ui-api/list-detail-views/detail-component-with-resolver.md +52 -0
- package/docs/reference/admin-ui-api/list-detail-views/index.md +5 -0
- package/docs/reference/admin-ui-api/list-detail-views/typed-base-detail-component.md +51 -0
- package/docs/reference/admin-ui-api/list-detail-views/typed-base-list-component.md +125 -0
- package/docs/reference/admin-ui-api/nav-menu/add-nav-menu-item.md +52 -0
- package/docs/reference/admin-ui-api/nav-menu/add-nav-menu-section.md +47 -0
- package/docs/reference/admin-ui-api/nav-menu/index.md +5 -0
- package/docs/reference/admin-ui-api/nav-menu/nav-menu-item.md +66 -0
- package/docs/reference/admin-ui-api/nav-menu/nav-menu-section.md +83 -0
- package/docs/reference/admin-ui-api/nav-menu/navigation-types.md +38 -0
- package/docs/reference/admin-ui-api/pipes/asset-preview-pipe.md +41 -0
- package/docs/reference/admin-ui-api/pipes/duration-pipe.md +45 -0
- package/docs/reference/admin-ui-api/pipes/file-size-pipe.md +38 -0
- package/docs/reference/admin-ui-api/pipes/has-permission-pipe.md +51 -0
- package/docs/reference/admin-ui-api/pipes/index.md +5 -0
- package/docs/reference/admin-ui-api/pipes/locale-currency-name-pipe.md +47 -0
- package/docs/reference/admin-ui-api/pipes/locale-currency-pipe.md +54 -0
- package/docs/reference/admin-ui-api/pipes/locale-date-pipe.md +48 -0
- package/docs/reference/admin-ui-api/pipes/locale-language-name-pipe.md +47 -0
- package/docs/reference/admin-ui-api/pipes/locale-region-name-pipe.md +47 -0
- package/docs/reference/admin-ui-api/pipes/time-ago-pipe.md +44 -0
- package/docs/reference/admin-ui-api/react-components/action-bar.md +36 -0
- package/docs/reference/admin-ui-api/react-components/card.md +36 -0
- package/docs/reference/admin-ui-api/react-components/cds-icon.md +34 -0
- package/docs/reference/admin-ui-api/react-components/form-field.md +42 -0
- package/docs/reference/admin-ui-api/react-components/index.md +5 -0
- package/docs/reference/admin-ui-api/react-components/link.md +34 -0
- package/docs/reference/admin-ui-api/react-components/page-block.md +36 -0
- package/docs/reference/admin-ui-api/react-components/page-detail-layout.md +36 -0
- package/docs/reference/admin-ui-api/react-components/rich-text-editor.md +42 -0
- package/docs/reference/admin-ui-api/react-extensions/index.md +5 -0
- package/docs/reference/admin-ui-api/react-extensions/react-custom-detail-component-config.md +41 -0
- package/docs/reference/admin-ui-api/react-extensions/react-data-table-component-config.md +48 -0
- package/docs/reference/admin-ui-api/react-extensions/register-react-custom-detail-component.md +23 -0
- package/docs/reference/admin-ui-api/react-extensions/register-react-data-table-component.md +55 -0
- package/docs/reference/admin-ui-api/react-extensions/register-react-form-input-component.md +26 -0
- package/docs/reference/admin-ui-api/react-extensions/register-react-route-component-options.md +18 -0
- package/docs/reference/admin-ui-api/react-extensions/register-react-route-component.md +22 -0
- package/docs/reference/admin-ui-api/react-hooks/index.md +5 -0
- package/docs/reference/admin-ui-api/react-hooks/use-detail-component-data.md +39 -0
- package/docs/reference/admin-ui-api/react-hooks/use-form-control.md +36 -0
- package/docs/reference/admin-ui-api/react-hooks/use-injector.md +39 -0
- package/docs/reference/admin-ui-api/react-hooks/use-lazy-query.md +74 -0
- package/docs/reference/admin-ui-api/react-hooks/use-mutation.md +62 -0
- package/docs/reference/admin-ui-api/react-hooks/use-page-metadata.md +36 -0
- package/docs/reference/admin-ui-api/react-hooks/use-query.md +59 -0
- package/docs/reference/admin-ui-api/react-hooks/use-rich-text-editor.md +30 -0
- package/docs/reference/admin-ui-api/react-hooks/use-route-params.md +29 -0
- package/docs/reference/admin-ui-api/routes/index.md +5 -0
- package/docs/reference/admin-ui-api/routes/register-route-component-options.md +28 -0
- package/docs/reference/admin-ui-api/routes/register-route-component.md +57 -0
- package/docs/reference/admin-ui-api/services/data-service.md +142 -0
- package/docs/reference/admin-ui-api/services/index.md +5 -0
- package/docs/reference/admin-ui-api/services/modal-service.md +199 -0
- package/docs/reference/admin-ui-api/services/notification-service.md +126 -0
- package/docs/reference/admin-ui-api/tabs/index.md +5 -0
- package/docs/reference/admin-ui-api/tabs/page-tab-config.md +70 -0
- package/docs/reference/admin-ui-api/tabs/register-page-tab.md +38 -0
- package/docs/reference/admin-ui-api/ui-devkit/admin-ui-extension.md +417 -0
- package/docs/reference/admin-ui-api/ui-devkit/compile-ui-extensions.md +22 -0
- package/docs/reference/admin-ui-api/ui-devkit/helpers.md +39 -0
- package/docs/reference/admin-ui-api/ui-devkit/index.md +5 -0
- package/docs/reference/admin-ui-api/ui-devkit/ui-devkit-client.md +160 -0
- package/docs/reference/admin-ui-api/ui-devkit/ui-extension-build-command.md +16 -0
- package/docs/reference/admin-ui-api/ui-devkit/ui-extension-compiler-options.md +118 -0
- package/docs/reference/admin-ui-api/ui-devkit/ui-extension-compiler-process-argument.md +16 -0
- package/docs/reference/core-plugins/admin-ui-plugin/admin-ui-plugin-options.md +67 -0
- package/docs/reference/core-plugins/admin-ui-plugin/index.md +94 -0
- package/docs/reference/core-plugins/asset-server-plugin/asset-server-options.md +106 -0
- package/docs/reference/core-plugins/asset-server-plugin/cache-config.md +36 -0
- package/docs/reference/core-plugins/asset-server-plugin/hashed-asset-naming-strategy.md +47 -0
- package/docs/reference/core-plugins/asset-server-plugin/image-transform-mode.md +21 -0
- package/docs/reference/core-plugins/asset-server-plugin/image-transform-preset.md +57 -0
- package/docs/reference/core-plugins/asset-server-plugin/image-transform-strategy.md +144 -0
- package/docs/reference/core-plugins/asset-server-plugin/index.md +189 -0
- package/docs/reference/core-plugins/asset-server-plugin/local-asset-storage-strategy.md +74 -0
- package/docs/reference/core-plugins/asset-server-plugin/preset-only-strategy.md +118 -0
- package/docs/reference/core-plugins/asset-server-plugin/s3asset-storage-strategy.md +225 -0
- package/docs/reference/core-plugins/asset-server-plugin/sharp-asset-preview-strategy.md +118 -0
- package/docs/reference/core-plugins/dashboard-plugin/dashboard-plugin-options.md +43 -0
- package/docs/reference/core-plugins/dashboard-plugin/index.md +106 -0
- package/docs/reference/core-plugins/elasticsearch-plugin/elasticsearch-options.md +695 -0
- package/docs/reference/core-plugins/elasticsearch-plugin/index.md +193 -0
- package/docs/reference/core-plugins/email-plugin/email-event-handler-with-async-data.md +33 -0
- package/docs/reference/core-plugins/email-plugin/email-event-handler.md +299 -0
- package/docs/reference/core-plugins/email-plugin/email-event-listener.md +42 -0
- package/docs/reference/core-plugins/email-plugin/email-generator.md +78 -0
- package/docs/reference/core-plugins/email-plugin/email-plugin-options.md +154 -0
- package/docs/reference/core-plugins/email-plugin/email-plugin-types.md +276 -0
- package/docs/reference/core-plugins/email-plugin/email-send-event.md +34 -0
- package/docs/reference/core-plugins/email-plugin/email-sender.md +92 -0
- package/docs/reference/core-plugins/email-plugin/email-utils.md +54 -0
- package/docs/reference/core-plugins/email-plugin/index.md +309 -0
- package/docs/reference/core-plugins/email-plugin/template-loader.md +96 -0
- package/docs/reference/core-plugins/email-plugin/transport-options.md +241 -0
- package/docs/reference/core-plugins/graphiql-plugin/index.md +89 -0
- package/docs/reference/core-plugins/harden-plugin/default-vendure-complexity-estimator.md +30 -0
- package/docs/reference/core-plugins/harden-plugin/harden-plugin-options.md +106 -0
- package/docs/reference/core-plugins/harden-plugin/index.md +169 -0
- package/docs/reference/core-plugins/index.md +5 -0
- package/docs/reference/core-plugins/job-queue-plugin/bull-mqjob-queue-plugin.md +211 -0
- package/docs/reference/core-plugins/job-queue-plugin/bull-mqjob-queue-strategy.md +93 -0
- package/docs/reference/core-plugins/job-queue-plugin/bull-mqplugin-options.md +142 -0
- package/docs/reference/core-plugins/job-queue-plugin/index.md +5 -0
- package/docs/reference/core-plugins/job-queue-plugin/pub-sub-job-queue-strategy.md +65 -0
- package/docs/reference/core-plugins/job-queue-plugin/pub-sub-plugin.md +36 -0
- package/docs/reference/core-plugins/payments-plugin/braintree-plugin.md +350 -0
- package/docs/reference/core-plugins/payments-plugin/index.md +5 -0
- package/docs/reference/core-plugins/payments-plugin/mollie-plugin.md +209 -0
- package/docs/reference/core-plugins/payments-plugin/stripe-plugin.md +355 -0
- package/docs/reference/core-plugins/sentry-plugin/index.md +158 -0
- package/docs/reference/core-plugins/sentry-plugin/sentry-plugin-options.md +32 -0
- package/docs/reference/core-plugins/sentry-plugin/sentry-service.md +47 -0
- package/docs/reference/core-plugins/stellate-plugin/index.md +277 -0
- package/docs/reference/core-plugins/stellate-plugin/purge-rule.md +91 -0
- package/docs/reference/core-plugins/stellate-plugin/stellate-plugin-options.md +65 -0
- package/docs/reference/core-plugins/stellate-plugin/stellate-service.md +71 -0
- package/docs/reference/core-plugins/telemetry-plugin/get-sdk-configuration.md +92 -0
- package/docs/reference/core-plugins/telemetry-plugin/index.md +131 -0
- package/docs/reference/core-plugins/telemetry-plugin/otel-logger.md +102 -0
- package/docs/reference/core-plugins/telemetry-plugin/register-method-hooks.md +46 -0
- package/docs/reference/core-plugins/telemetry-plugin/telemetry-plugin-options.md +77 -0
- package/docs/reference/dashboard/components/asset-gallery.md +127 -0
- package/docs/reference/dashboard/components/asset-picker-dialog.md +76 -0
- package/docs/reference/dashboard/components/channel-chip.md +22 -0
- package/docs/reference/dashboard/components/detail-page-button.md +49 -0
- package/docs/reference/dashboard/components/facet-value-chip.md +22 -0
- package/docs/reference/dashboard/components/facet-value-selector.md +85 -0
- package/docs/reference/dashboard/components/index.md +5 -0
- package/docs/reference/dashboard/components/permission-guard.md +63 -0
- package/docs/reference/dashboard/components/vendure-image.md +199 -0
- package/docs/reference/dashboard/detail-views/detail-page.md +91 -0
- package/docs/reference/dashboard/detail-views/index.md +5 -0
- package/docs/reference/dashboard/detail-views/use-detail-page.md +234 -0
- package/docs/reference/dashboard/detail-views/use-generated-form.md +105 -0
- package/docs/reference/dashboard/extensions-api/action-bar.md +66 -0
- package/docs/reference/dashboard/extensions-api/alerts.md +78 -0
- package/docs/reference/dashboard/extensions-api/data-tables.md +55 -0
- package/docs/reference/dashboard/extensions-api/define-dashboard-extension.md +142 -0
- package/docs/reference/dashboard/extensions-api/detail-forms.md +81 -0
- package/docs/reference/dashboard/extensions-api/form-components.md +188 -0
- package/docs/reference/dashboard/extensions-api/history-entries.md +246 -0
- package/docs/reference/dashboard/extensions-api/index.md +5 -0
- package/docs/reference/dashboard/extensions-api/login.md +113 -0
- package/docs/reference/dashboard/extensions-api/navigation.md +128 -0
- package/docs/reference/dashboard/extensions-api/page-blocks.md +143 -0
- package/docs/reference/dashboard/extensions-api/routes.md +69 -0
- package/docs/reference/dashboard/extensions-api/widgets.md +61 -0
- package/docs/reference/dashboard/form-components/affixed-input.md +34 -0
- package/docs/reference/dashboard/form-components/boolean-input.md +22 -0
- package/docs/reference/dashboard/form-components/checkbox-input.md +22 -0
- package/docs/reference/dashboard/form-components/date-time-input.md +22 -0
- package/docs/reference/dashboard/form-components/form-field-wrapper.md +80 -0
- package/docs/reference/dashboard/form-components/index.md +5 -0
- package/docs/reference/dashboard/form-components/money-input.md +23 -0
- package/docs/reference/dashboard/form-components/number-input.md +22 -0
- package/docs/reference/dashboard/form-components/password-input.md +22 -0
- package/docs/reference/dashboard/form-components/rich-text-input.md +22 -0
- package/docs/reference/dashboard/form-components/slug-input.md +57 -0
- package/docs/reference/dashboard/form-components/text-input.md +13 -0
- package/docs/reference/dashboard/form-components/textarea-input.md +22 -0
- package/docs/reference/dashboard/form-components/translatable-form-field-wrapper.md +70 -0
- package/docs/reference/dashboard/hooks/index.md +5 -0
- package/docs/reference/dashboard/hooks/use-alerts.md +65 -0
- package/docs/reference/dashboard/hooks/use-auth.md +84 -0
- package/docs/reference/dashboard/hooks/use-channel.md +72 -0
- package/docs/reference/dashboard/hooks/use-custom-field-config.md +24 -0
- package/docs/reference/dashboard/hooks/use-display-locale.md +32 -0
- package/docs/reference/dashboard/hooks/use-drag-and-drop.md +22 -0
- package/docs/reference/dashboard/hooks/use-local-format.md +30 -0
- package/docs/reference/dashboard/hooks/use-paginated-list.md +29 -0
- package/docs/reference/dashboard/hooks/use-permissions.md +25 -0
- package/docs/reference/dashboard/hooks/use-sorted-languages.md +30 -0
- package/docs/reference/dashboard/hooks/use-ui-language-loader.md +18 -0
- package/docs/reference/dashboard/hooks/use-widget-filters.md +16 -0
- package/docs/reference/dashboard/list-views/bulk-actions.md +199 -0
- package/docs/reference/dashboard/list-views/data-table-cell-component.md +45 -0
- package/docs/reference/dashboard/list-views/data-table.md +209 -0
- package/docs/reference/dashboard/list-views/index.md +5 -0
- package/docs/reference/dashboard/list-views/list-page.md +493 -0
- package/docs/reference/dashboard/list-views/paginated-list-data-table.md +303 -0
- package/docs/reference/dashboard/page-layout/index.md +54 -0
- package/docs/reference/dashboard/page-layout/page-action-bar.md +62 -0
- package/docs/reference/dashboard/page-layout/page-block.md +137 -0
- package/docs/reference/dashboard/page-layout/page-title.md +22 -0
- package/docs/reference/dashboard/page-layout/page.md +100 -0
- package/docs/reference/dashboard/page-layout/use-page-block.md +32 -0
- package/docs/reference/dashboard/vite-plugin/index.md +5 -0
- package/docs/reference/dashboard/vite-plugin/vendure-dashboard-plugin.md +356 -0
- package/docs/reference/graphql-api/_index.md +16 -0
- package/docs/reference/graphql-api/admin/_index.md +13 -0
- package/docs/reference/graphql-api/admin/enums.md +1142 -0
- package/docs/reference/graphql-api/admin/input-types.md +4631 -0
- package/docs/reference/graphql-api/admin/mutations.md +1985 -0
- package/docs/reference/graphql-api/admin/object-types.md +4515 -0
- package/docs/reference/graphql-api/admin/queries.md +760 -0
- package/docs/reference/graphql-api/shop/_index.md +13 -0
- package/docs/reference/graphql-api/shop/enums.md +1072 -0
- package/docs/reference/graphql-api/shop/input-types.md +1192 -0
- package/docs/reference/graphql-api/shop/mutations.md +431 -0
- package/docs/reference/graphql-api/shop/object-types.md +3406 -0
- package/docs/reference/graphql-api/shop/queries.md +247 -0
- package/docs/reference/index.mdx +38 -0
- package/docs/reference/links.webp +0 -0
- package/docs/reference/typescript-api/_index.md +13 -0
- package/docs/reference/typescript-api/assets/asset-naming-strategy.md +56 -0
- package/docs/reference/typescript-api/assets/asset-options.md +58 -0
- package/docs/reference/typescript-api/assets/asset-preview-strategy.md +45 -0
- package/docs/reference/typescript-api/assets/asset-storage-strategy.md +84 -0
- package/docs/reference/typescript-api/assets/default-asset-naming-strategy.md +39 -0
- package/docs/reference/typescript-api/assets/index.md +5 -0
- package/docs/reference/typescript-api/auth/auth-options.md +165 -0
- package/docs/reference/typescript-api/auth/authentication-strategy.md +97 -0
- package/docs/reference/typescript-api/auth/bcrypt-password-hashing-strategy.md +38 -0
- package/docs/reference/typescript-api/auth/cookie-options.md +108 -0
- package/docs/reference/typescript-api/auth/default-password-validation-strategy.md +44 -0
- package/docs/reference/typescript-api/auth/default-session-cache-strategy.md +73 -0
- package/docs/reference/typescript-api/auth/default-verification-token-strategy.md +47 -0
- package/docs/reference/typescript-api/auth/external-authentication-service.md +98 -0
- package/docs/reference/typescript-api/auth/in-memory-session-cache-strategy.md +63 -0
- package/docs/reference/typescript-api/auth/index.md +5 -0
- package/docs/reference/typescript-api/auth/native-authentication-strategy.md +58 -0
- package/docs/reference/typescript-api/auth/noop-session-cache-strategy.md +51 -0
- package/docs/reference/typescript-api/auth/password-hashing-strategy.md +45 -0
- package/docs/reference/typescript-api/auth/password-validation-strategy.md +43 -0
- package/docs/reference/typescript-api/auth/permission-definition.md +269 -0
- package/docs/reference/typescript-api/auth/session-cache-strategy.md +275 -0
- package/docs/reference/typescript-api/auth/superadmin-credentials.md +36 -0
- package/docs/reference/typescript-api/auth/verification-token-strategy.md +45 -0
- package/docs/reference/typescript-api/cache/cache-config.md +44 -0
- package/docs/reference/typescript-api/cache/cache-service.md +76 -0
- package/docs/reference/typescript-api/cache/cache-strategy.md +103 -0
- package/docs/reference/typescript-api/cache/default-cache-plugin.md +73 -0
- package/docs/reference/typescript-api/cache/index.md +79 -0
- package/docs/reference/typescript-api/cache/redis-cache-plugin.md +85 -0
- package/docs/reference/typescript-api/cache/redis-cache-strategy.md +75 -0
- package/docs/reference/typescript-api/cache/request-context-cache-service.md +54 -0
- package/docs/reference/typescript-api/cache/self-refreshing-cache.md +152 -0
- package/docs/reference/typescript-api/cache/sql-cache-strategy.md +87 -0
- package/docs/reference/typescript-api/common/admin-ui/admin-ui-app-config.md +43 -0
- package/docs/reference/typescript-api/common/admin-ui/admin-ui-app-dev-mode-config.md +47 -0
- package/docs/reference/typescript-api/common/admin-ui/admin-ui-config.md +139 -0
- package/docs/reference/typescript-api/common/admin-ui/index.md +5 -0
- package/docs/reference/typescript-api/common/async-queue.md +38 -0
- package/docs/reference/typescript-api/common/bootstrap.md +129 -0
- package/docs/reference/typescript-api/common/currency-code.md +174 -0
- package/docs/reference/typescript-api/common/entity-relation-paths.md +34 -0
- package/docs/reference/typescript-api/common/i18n-service.md +74 -0
- package/docs/reference/typescript-api/common/id.md +17 -0
- package/docs/reference/typescript-api/common/index.md +5 -0
- package/docs/reference/typescript-api/common/injectable-strategy.md +48 -0
- package/docs/reference/typescript-api/common/injector.md +47 -0
- package/docs/reference/typescript-api/common/job-state.md +23 -0
- package/docs/reference/typescript-api/common/json-compatible.md +23 -0
- package/docs/reference/typescript-api/common/language-code.md +177 -0
- package/docs/reference/typescript-api/common/middleware.md +72 -0
- package/docs/reference/typescript-api/common/paginated-list.md +36 -0
- package/docs/reference/typescript-api/common/permission.md +136 -0
- package/docs/reference/typescript-api/common/price-calculation-result.md +36 -0
- package/docs/reference/typescript-api/common/process-context.md +55 -0
- package/docs/reference/typescript-api/common/vendure_version.md +22 -0
- package/docs/reference/typescript-api/configurable-operation-def/config-arg-type.md +22 -0
- package/docs/reference/typescript-api/configurable-operation-def/config-args.md +89 -0
- package/docs/reference/typescript-api/configurable-operation-def/configurable-operation-def-options.md +57 -0
- package/docs/reference/typescript-api/configurable-operation-def/default-form-component-id.md +34 -0
- package/docs/reference/typescript-api/configurable-operation-def/default-form-config-hash.md +137 -0
- package/docs/reference/typescript-api/configurable-operation-def/index.md +149 -0
- package/docs/reference/typescript-api/configurable-operation-def/localized-string-array.md +28 -0
- package/docs/reference/typescript-api/configuration/api-options.md +159 -0
- package/docs/reference/typescript-api/configuration/collection-filter.md +76 -0
- package/docs/reference/typescript-api/configuration/default-config.md +13 -0
- package/docs/reference/typescript-api/configuration/default-slug-strategy.md +46 -0
- package/docs/reference/typescript-api/configuration/entity-duplicator.md +195 -0
- package/docs/reference/typescript-api/configuration/entity-id-decorator.md +24 -0
- package/docs/reference/typescript-api/configuration/entity-id-strategy.md +168 -0
- package/docs/reference/typescript-api/configuration/entity-options.md +153 -0
- package/docs/reference/typescript-api/configuration/index.md +5 -0
- package/docs/reference/typescript-api/configuration/merge-config.md +49 -0
- package/docs/reference/typescript-api/configuration/product-variant-price-selection-strategy.md +71 -0
- package/docs/reference/typescript-api/configuration/product-variant-price-update-strategy.md +185 -0
- package/docs/reference/typescript-api/configuration/runtime-vendure-config.md +111 -0
- package/docs/reference/typescript-api/configuration/settings-store-fields.md +29 -0
- package/docs/reference/typescript-api/configuration/slug-strategy.md +47 -0
- package/docs/reference/typescript-api/configuration/system-options.md +50 -0
- package/docs/reference/typescript-api/configuration/trust-proxy-options.md +19 -0
- package/docs/reference/typescript-api/configuration/vendure-config.md +168 -0
- package/docs/reference/typescript-api/custom-fields/custom-field-config.md +25 -0
- package/docs/reference/typescript-api/custom-fields/custom-field-type.md +42 -0
- package/docs/reference/typescript-api/custom-fields/index.md +70 -0
- package/docs/reference/typescript-api/custom-fields/struct-custom-field-config.md +21 -0
- package/docs/reference/typescript-api/custom-fields/struct-field-config.md +41 -0
- package/docs/reference/typescript-api/custom-fields/typed-custom-single-field-config.md +24 -0
- package/docs/reference/typescript-api/data-access/calculated-property-subscriber.md +38 -0
- package/docs/reference/typescript-api/data-access/calculated.md +62 -0
- package/docs/reference/typescript-api/data-access/entity-hydrator.md +103 -0
- package/docs/reference/typescript-api/data-access/get-entity-or-throw-options.md +53 -0
- package/docs/reference/typescript-api/data-access/hydrate-options.md +40 -0
- package/docs/reference/typescript-api/data-access/index.md +5 -0
- package/docs/reference/typescript-api/data-access/list-query-builder.md +239 -0
- package/docs/reference/typescript-api/data-access/transactional-connection.md +173 -0
- package/docs/reference/typescript-api/default-search-plugin/default-search-plugin-init-options.md +126 -0
- package/docs/reference/typescript-api/default-search-plugin/index.md +64 -0
- package/docs/reference/typescript-api/default-search-plugin/mysql-search-strategy.md +56 -0
- package/docs/reference/typescript-api/default-search-plugin/postgres-search-strategy.md +56 -0
- package/docs/reference/typescript-api/default-search-plugin/search-strategy.md +58 -0
- package/docs/reference/typescript-api/default-search-plugin/sqlite-search-strategy.md +57 -0
- package/docs/reference/typescript-api/entities/address.md +124 -0
- package/docs/reference/typescript-api/entities/administrator.md +78 -0
- package/docs/reference/typescript-api/entities/anonymous-session.md +34 -0
- package/docs/reference/typescript-api/entities/asset.md +135 -0
- package/docs/reference/typescript-api/entities/authenticated-session.md +48 -0
- package/docs/reference/typescript-api/entities/authentication-method.md +156 -0
- package/docs/reference/typescript-api/entities/channel.md +233 -0
- package/docs/reference/typescript-api/entities/collection.md +152 -0
- package/docs/reference/typescript-api/entities/country.md +40 -0
- package/docs/reference/typescript-api/entities/customer-group.md +63 -0
- package/docs/reference/typescript-api/entities/customer-history-entry.md +40 -0
- package/docs/reference/typescript-api/entities/customer.md +122 -0
- package/docs/reference/typescript-api/entities/facet-value.md +98 -0
- package/docs/reference/typescript-api/entities/facet.md +89 -0
- package/docs/reference/typescript-api/entities/fulfillment.md +84 -0
- package/docs/reference/typescript-api/entities/global-settings.md +66 -0
- package/docs/reference/typescript-api/entities/history-entry.md +66 -0
- package/docs/reference/typescript-api/entities/index.md +5 -0
- package/docs/reference/typescript-api/entities/interfaces.md +125 -0
- package/docs/reference/typescript-api/entities/order-history-entry.md +40 -0
- package/docs/reference/typescript-api/entities/order-line-reference.md +174 -0
- package/docs/reference/typescript-api/entities/order-line.md +344 -0
- package/docs/reference/typescript-api/entities/order-modification.md +103 -0
- package/docs/reference/typescript-api/entities/order.md +284 -0
- package/docs/reference/typescript-api/entities/orderable-asset.md +61 -0
- package/docs/reference/typescript-api/entities/payment-method.md +94 -0
- package/docs/reference/typescript-api/entities/payment.md +96 -0
- package/docs/reference/typescript-api/entities/product-option-group.md +84 -0
- package/docs/reference/typescript-api/entities/product-option.md +90 -0
- package/docs/reference/typescript-api/entities/product-variant-price.md +70 -0
- package/docs/reference/typescript-api/entities/product-variant.md +251 -0
- package/docs/reference/typescript-api/entities/product.md +134 -0
- package/docs/reference/typescript-api/entities/promotion.md +190 -0
- package/docs/reference/typescript-api/entities/province.md +39 -0
- package/docs/reference/typescript-api/entities/refund.md +120 -0
- package/docs/reference/typescript-api/entities/region.md +87 -0
- package/docs/reference/typescript-api/entities/role.md +62 -0
- package/docs/reference/typescript-api/entities/seller.md +63 -0
- package/docs/reference/typescript-api/entities/session.md +87 -0
- package/docs/reference/typescript-api/entities/settings-store-entry.md +57 -0
- package/docs/reference/typescript-api/entities/shipping-line.md +150 -0
- package/docs/reference/typescript-api/entities/shipping-method.md +123 -0
- package/docs/reference/typescript-api/entities/stock-level.md +87 -0
- package/docs/reference/typescript-api/entities/stock-location.md +76 -0
- package/docs/reference/typescript-api/entities/stock-movement.md +270 -0
- package/docs/reference/typescript-api/entities/surcharge.md +102 -0
- package/docs/reference/typescript-api/entities/tag.md +40 -0
- package/docs/reference/typescript-api/entities/tax-category.md +68 -0
- package/docs/reference/typescript-api/entities/tax-rate.md +138 -0
- package/docs/reference/typescript-api/entities/user.md +111 -0
- package/docs/reference/typescript-api/entities/vendure-entity.md +49 -0
- package/docs/reference/typescript-api/entities/zone.md +78 -0
- package/docs/reference/typescript-api/errors/error-handler-strategy.md +88 -0
- package/docs/reference/typescript-api/errors/error-result-union.md +30 -0
- package/docs/reference/typescript-api/errors/error-types.md +197 -0
- package/docs/reference/typescript-api/errors/i18n-error.md +39 -0
- package/docs/reference/typescript-api/errors/index.md +5 -0
- package/docs/reference/typescript-api/errors/is-graph-ql-error-result.md +40 -0
- package/docs/reference/typescript-api/events/blocking-event-handler-options.md +57 -0
- package/docs/reference/typescript-api/events/event-bus.md +136 -0
- package/docs/reference/typescript-api/events/event-types.md +1689 -0
- package/docs/reference/typescript-api/events/index.md +5 -0
- package/docs/reference/typescript-api/events/vendure-entity-event.md +57 -0
- package/docs/reference/typescript-api/events/vendure-event.md +35 -0
- package/docs/reference/typescript-api/fulfillment/fulfillment-handler.md +173 -0
- package/docs/reference/typescript-api/fulfillment/fulfillment-process.md +71 -0
- package/docs/reference/typescript-api/fulfillment/fulfillment-state.md +21 -0
- package/docs/reference/typescript-api/fulfillment/fulfillment-states.md +18 -0
- package/docs/reference/typescript-api/fulfillment/fulfillment-transition-data.md +41 -0
- package/docs/reference/typescript-api/fulfillment/index.md +5 -0
- package/docs/reference/typescript-api/health-check/health-check-registry-service.md +70 -0
- package/docs/reference/typescript-api/health-check/health-check-strategy.md +70 -0
- package/docs/reference/typescript-api/health-check/http-health-check-strategy.md +61 -0
- package/docs/reference/typescript-api/health-check/index.md +5 -0
- package/docs/reference/typescript-api/health-check/type-ormhealth-check-strategy.md +64 -0
- package/docs/reference/typescript-api/import-export/asset-import-strategy.md +46 -0
- package/docs/reference/typescript-api/import-export/asset-importer.md +32 -0
- package/docs/reference/typescript-api/import-export/default-asset-import-strategy.md +48 -0
- package/docs/reference/typescript-api/import-export/fast-importer-service.md +67 -0
- package/docs/reference/typescript-api/import-export/import-export-options.md +36 -0
- package/docs/reference/typescript-api/import-export/import-parser.md +280 -0
- package/docs/reference/typescript-api/import-export/importer.md +54 -0
- package/docs/reference/typescript-api/import-export/index.md +5 -0
- package/docs/reference/typescript-api/import-export/initial-data.md +71 -0
- package/docs/reference/typescript-api/import-export/populate.md +71 -0
- package/docs/reference/typescript-api/import-export/populator.md +38 -0
- package/docs/reference/typescript-api/job-queue/default-job-queue-plugin.md +245 -0
- package/docs/reference/typescript-api/job-queue/in-memory-job-buffer-storage-strategy.md +55 -0
- package/docs/reference/typescript-api/job-queue/in-memory-job-queue-strategy.md +110 -0
- package/docs/reference/typescript-api/job-queue/index.md +84 -0
- package/docs/reference/typescript-api/job-queue/inspectable-job-queue-strategy.md +60 -0
- package/docs/reference/typescript-api/job-queue/job-buffer-storage-strategy.md +78 -0
- package/docs/reference/typescript-api/job-queue/job-buffer.md +119 -0
- package/docs/reference/typescript-api/job-queue/job-queue-options.md +56 -0
- package/docs/reference/typescript-api/job-queue/job-queue-service.md +128 -0
- package/docs/reference/typescript-api/job-queue/job-queue-strategy.md +59 -0
- package/docs/reference/typescript-api/job-queue/job.md +195 -0
- package/docs/reference/typescript-api/job-queue/polling-job-queue-strategy.md +122 -0
- package/docs/reference/typescript-api/job-queue/sql-job-queue-strategy.md +84 -0
- package/docs/reference/typescript-api/job-queue/subscribable-job.md +44 -0
- package/docs/reference/typescript-api/job-queue/types.md +199 -0
- package/docs/reference/typescript-api/logger/default-logger.md +81 -0
- package/docs/reference/typescript-api/logger/index.md +120 -0
- package/docs/reference/typescript-api/logger/log-level.md +30 -0
- package/docs/reference/typescript-api/logger/vendure-logger.md +60 -0
- package/docs/reference/typescript-api/migration/generate-migration.md +28 -0
- package/docs/reference/typescript-api/migration/index.md +5 -0
- package/docs/reference/typescript-api/migration/migration-options.md +36 -0
- package/docs/reference/typescript-api/migration/revert-last-migration.md +23 -0
- package/docs/reference/typescript-api/migration/run-migrations.md +23 -0
- package/docs/reference/typescript-api/money/big-int-money-strategy.md +68 -0
- package/docs/reference/typescript-api/money/default-money-strategy.md +47 -0
- package/docs/reference/typescript-api/money/index.md +5 -0
- package/docs/reference/typescript-api/money/money-decorator.md +23 -0
- package/docs/reference/typescript-api/money/money-strategy.md +116 -0
- package/docs/reference/typescript-api/money/round-money.md +26 -0
- package/docs/reference/typescript-api/orders/active-order-service.md +69 -0
- package/docs/reference/typescript-api/orders/active-order-strategy.md +203 -0
- package/docs/reference/typescript-api/orders/changed-price-handling-strategy.md +51 -0
- package/docs/reference/typescript-api/orders/custom-order-states.md +18 -0
- package/docs/reference/typescript-api/orders/default-active-order-strategy.md +52 -0
- package/docs/reference/typescript-api/orders/default-guest-checkout-strategy.md +93 -0
- package/docs/reference/typescript-api/orders/default-order-item-price-calculation-strategy.md +33 -0
- package/docs/reference/typescript-api/orders/default-order-placed-strategy.md +33 -0
- package/docs/reference/typescript-api/orders/default-stock-allocation-strategy.md +33 -0
- package/docs/reference/typescript-api/orders/guest-checkout-strategy.md +56 -0
- package/docs/reference/typescript-api/orders/index.md +5 -0
- package/docs/reference/typescript-api/orders/merge-strategies.md +114 -0
- package/docs/reference/typescript-api/orders/order-by-code-access-strategy.md +91 -0
- package/docs/reference/typescript-api/orders/order-code-strategy.md +88 -0
- package/docs/reference/typescript-api/orders/order-interceptor.md +250 -0
- package/docs/reference/typescript-api/orders/order-item-price-calculation-strategy.md +91 -0
- package/docs/reference/typescript-api/orders/order-merge-strategy.md +80 -0
- package/docs/reference/typescript-api/orders/order-options.md +145 -0
- package/docs/reference/typescript-api/orders/order-placed-strategy.md +54 -0
- package/docs/reference/typescript-api/orders/order-process.md +271 -0
- package/docs/reference/typescript-api/orders/order-seller-strategy.md +124 -0
- package/docs/reference/typescript-api/orders/stock-allocation-strategy.md +46 -0
- package/docs/reference/typescript-api/payment/default-payment-process.md +13 -0
- package/docs/reference/typescript-api/payment/default-refund-process.md +13 -0
- package/docs/reference/typescript-api/payment/dummy-payment-handler.md +31 -0
- package/docs/reference/typescript-api/payment/index.md +5 -0
- package/docs/reference/typescript-api/payment/payment-method-config-options.md +69 -0
- package/docs/reference/typescript-api/payment/payment-method-eligibility-checker.md +95 -0
- package/docs/reference/typescript-api/payment/payment-method-handler.md +83 -0
- package/docs/reference/typescript-api/payment/payment-method-types.md +386 -0
- package/docs/reference/typescript-api/payment/payment-options.md +57 -0
- package/docs/reference/typescript-api/payment/payment-process.md +62 -0
- package/docs/reference/typescript-api/payment/payment-state.md +20 -0
- package/docs/reference/typescript-api/payment/payment-states.md +18 -0
- package/docs/reference/typescript-api/payment/payment-transition-data.md +42 -0
- package/docs/reference/typescript-api/payment/refund-process.md +55 -0
- package/docs/reference/typescript-api/payment/refund-state.md +16 -0
- package/docs/reference/typescript-api/payment/refund-states.md +18 -0
- package/docs/reference/typescript-api/payment/refund-transition-data.md +41 -0
- package/docs/reference/typescript-api/plugin/index.md +5 -0
- package/docs/reference/typescript-api/plugin/plugin-common-module.md +28 -0
- package/docs/reference/typescript-api/plugin/plugin-utilities.md +96 -0
- package/docs/reference/typescript-api/plugin/vendure-plugin-metadata.md +147 -0
- package/docs/reference/typescript-api/plugin/vendure-plugin.md +52 -0
- package/docs/reference/typescript-api/products-stock/catalog-options.md +70 -0
- package/docs/reference/typescript-api/products-stock/default-product-variant-price-calculation-strategy.md +38 -0
- package/docs/reference/typescript-api/products-stock/default-stock-display-strategy.md +40 -0
- package/docs/reference/typescript-api/products-stock/default-stock-location-strategy.md +47 -0
- package/docs/reference/typescript-api/products-stock/index.md +5 -0
- package/docs/reference/typescript-api/products-stock/multi-channel-stock-location-strategy.md +47 -0
- package/docs/reference/typescript-api/products-stock/product-variant-price-calculation-strategy.md +95 -0
- package/docs/reference/typescript-api/products-stock/stock-display-strategy.md +47 -0
- package/docs/reference/typescript-api/products-stock/stock-location-strategy.md +157 -0
- package/docs/reference/typescript-api/promotions/facet-value-checker.md +78 -0
- package/docs/reference/typescript-api/promotions/index.md +5 -0
- package/docs/reference/typescript-api/promotions/promotion-action.md +454 -0
- package/docs/reference/typescript-api/promotions/promotion-condition.md +117 -0
- package/docs/reference/typescript-api/promotions/promotion-options.md +35 -0
- package/docs/reference/typescript-api/request/allow-decorator.md +53 -0
- package/docs/reference/typescript-api/request/api-decorator.md +28 -0
- package/docs/reference/typescript-api/request/api-type.md +16 -0
- package/docs/reference/typescript-api/request/ctx-decorator.md +23 -0
- package/docs/reference/typescript-api/request/index.md +5 -0
- package/docs/reference/typescript-api/request/relations-decorator.md +116 -0
- package/docs/reference/typescript-api/request/request-context-service.md +47 -0
- package/docs/reference/typescript-api/request/request-context.md +205 -0
- package/docs/reference/typescript-api/request/transaction-decorator.md +82 -0
- package/docs/reference/typescript-api/scheduled-tasks/clean-sessions-task.md +40 -0
- package/docs/reference/typescript-api/scheduled-tasks/default-scheduler-plugin.md +86 -0
- package/docs/reference/typescript-api/scheduled-tasks/default-scheduler-strategy.md +76 -0
- package/docs/reference/typescript-api/scheduled-tasks/index.md +5 -0
- package/docs/reference/typescript-api/scheduled-tasks/scheduled-task.md +196 -0
- package/docs/reference/typescript-api/scheduled-tasks/scheduler-options.md +47 -0
- package/docs/reference/typescript-api/scheduled-tasks/scheduler-service.md +62 -0
- package/docs/reference/typescript-api/scheduled-tasks/scheduler-strategy.md +141 -0
- package/docs/reference/typescript-api/service-helpers/entity-duplicator-service.md +43 -0
- package/docs/reference/typescript-api/service-helpers/index.md +5 -0
- package/docs/reference/typescript-api/service-helpers/order-calculator.md +54 -0
- package/docs/reference/typescript-api/service-helpers/order-modifier.md +91 -0
- package/docs/reference/typescript-api/service-helpers/product-price-applicator.md +62 -0
- package/docs/reference/typescript-api/service-helpers/slug-validator.md +86 -0
- package/docs/reference/typescript-api/service-helpers/translatable-saver.md +66 -0
- package/docs/reference/typescript-api/service-helpers/translator-service.md +63 -0
- package/docs/reference/typescript-api/services/administrator-service.md +71 -0
- package/docs/reference/typescript-api/services/asset-service.md +177 -0
- package/docs/reference/typescript-api/services/auth-service.md +54 -0
- package/docs/reference/typescript-api/services/channel-service.md +111 -0
- package/docs/reference/typescript-api/services/collection-service.md +186 -0
- package/docs/reference/typescript-api/services/country-service.md +71 -0
- package/docs/reference/typescript-api/services/customer-group-service.md +77 -0
- package/docs/reference/typescript-api/services/customer-service.md +203 -0
- package/docs/reference/typescript-api/services/entity-slug-service.md +37 -0
- package/docs/reference/typescript-api/services/facet-service.md +95 -0
- package/docs/reference/typescript-api/services/facet-value-service.md +104 -0
- package/docs/reference/typescript-api/services/fulfillment-service.md +69 -0
- package/docs/reference/typescript-api/services/global-settings-service.md +41 -0
- package/docs/reference/typescript-api/services/history-service.md +172 -0
- package/docs/reference/typescript-api/services/index.md +5 -0
- package/docs/reference/typescript-api/services/initializer-service.md +36 -0
- package/docs/reference/typescript-api/services/order-service.md +440 -0
- package/docs/reference/typescript-api/services/order-testing-service.md +44 -0
- package/docs/reference/typescript-api/services/payment-method-service.md +105 -0
- package/docs/reference/typescript-api/services/payment-service.md +105 -0
- package/docs/reference/typescript-api/services/product-option-group-service.md +67 -0
- package/docs/reference/typescript-api/services/product-option-service.md +64 -0
- package/docs/reference/typescript-api/services/product-service.md +111 -0
- package/docs/reference/typescript-api/services/product-variant-service.md +179 -0
- package/docs/reference/typescript-api/services/promotion-service.md +127 -0
- package/docs/reference/typescript-api/services/province-service.md +59 -0
- package/docs/reference/typescript-api/services/role-service.md +113 -0
- package/docs/reference/typescript-api/services/search-service.md +37 -0
- package/docs/reference/typescript-api/services/seller-service.md +65 -0
- package/docs/reference/typescript-api/services/session-service.md +105 -0
- package/docs/reference/typescript-api/services/settings-store-service.md +194 -0
- package/docs/reference/typescript-api/services/shipping-method-service.md +95 -0
- package/docs/reference/typescript-api/services/slug-service.md +35 -0
- package/docs/reference/typescript-api/services/stock-level-service.md +62 -0
- package/docs/reference/typescript-api/services/stock-location-service.md +115 -0
- package/docs/reference/typescript-api/services/stock-movement-service.md +95 -0
- package/docs/reference/typescript-api/services/tag-service.md +71 -0
- package/docs/reference/typescript-api/services/tax-category-service.md +59 -0
- package/docs/reference/typescript-api/services/tax-rate-service.md +66 -0
- package/docs/reference/typescript-api/services/user-service.md +132 -0
- package/docs/reference/typescript-api/services/zone-service.md +77 -0
- package/docs/reference/typescript-api/settings-store/cleanup-orphaned-settings-store-entries-options.md +48 -0
- package/docs/reference/typescript-api/settings-store/cleanup-orphaned-settings-store-entries-result.md +41 -0
- package/docs/reference/typescript-api/settings-store/index.md +38 -0
- package/docs/reference/typescript-api/settings-store/orphaned-settings-store-entry.md +48 -0
- package/docs/reference/typescript-api/settings-store/set-settings-store-value-result.md +42 -0
- package/docs/reference/typescript-api/settings-store/settings-store-field-config.md +92 -0
- package/docs/reference/typescript-api/settings-store/settings-store-registration.md +36 -0
- package/docs/reference/typescript-api/settings-store/settings-store-scope-function.md +35 -0
- package/docs/reference/typescript-api/settings-store/settings-store-scopes.md +36 -0
- package/docs/reference/typescript-api/shipping/check-shipping-eligibility-checker-fn.md +27 -0
- package/docs/reference/typescript-api/shipping/default-shipping-line-assignment-strategy.md +33 -0
- package/docs/reference/typescript-api/shipping/index.md +5 -0
- package/docs/reference/typescript-api/shipping/shipping-calculator.md +121 -0
- package/docs/reference/typescript-api/shipping/shipping-eligibility-checker-config.md +39 -0
- package/docs/reference/typescript-api/shipping/shipping-eligibility-checker.md +60 -0
- package/docs/reference/typescript-api/shipping/shipping-line-assignment-strategy.md +75 -0
- package/docs/reference/typescript-api/shipping/shipping-options.md +63 -0
- package/docs/reference/typescript-api/shipping/should-run-check-fn.md +44 -0
- package/docs/reference/typescript-api/state-machine/fsm.md +66 -0
- package/docs/reference/typescript-api/state-machine/index.md +5 -0
- package/docs/reference/typescript-api/state-machine/state-machine-config.md +103 -0
- package/docs/reference/typescript-api/state-machine/transitions.md +43 -0
- package/docs/reference/typescript-api/tax/address-based-tax-zone-strategy.md +57 -0
- package/docs/reference/typescript-api/tax/default-tax-line-calculation-strategy.md +33 -0
- package/docs/reference/typescript-api/tax/default-tax-zone-strategy.md +35 -0
- package/docs/reference/typescript-api/tax/index.md +5 -0
- package/docs/reference/typescript-api/tax/tax-line-calculation-strategy.md +90 -0
- package/docs/reference/typescript-api/tax/tax-options.md +35 -0
- package/docs/reference/typescript-api/tax/tax-zone-strategy.md +54 -0
- package/docs/reference/typescript-api/telemetry/index.md +5 -0
- package/docs/reference/typescript-api/telemetry/instrument.md +47 -0
- package/docs/reference/typescript-api/telemetry/instrumentation-strategy.md +35 -0
- package/docs/reference/typescript-api/telemetry/wrapped-method-args.md +56 -0
- package/docs/reference/typescript-api/testing/create-error-result-guard.md +33 -0
- package/docs/reference/typescript-api/testing/create-test-environment.md +47 -0
- package/docs/reference/typescript-api/testing/error-result-guard.md +73 -0
- package/docs/reference/typescript-api/testing/get-superadmin-context.md +23 -0
- package/docs/reference/typescript-api/testing/index.md +5 -0
- package/docs/reference/typescript-api/testing/register-initializer.md +27 -0
- package/docs/reference/typescript-api/testing/simple-graph-qlclient.md +123 -0
- package/docs/reference/typescript-api/testing/test-config.md +30 -0
- package/docs/reference/typescript-api/testing/test-db-initializer.md +60 -0
- package/docs/reference/typescript-api/testing/test-environment.md +42 -0
- package/docs/reference/typescript-api/testing/test-server-options.md +47 -0
- package/docs/reference/typescript-api/testing/test-server.md +60 -0
- package/docs/reference/typescript-api/testing/testing-logger.md +140 -0
- package/docs/reference/typescript-api/worker/bootstrap-worker.md +76 -0
- package/docs/reference/typescript-api/worker/index.md +5 -0
- package/docs/reference/typescript-api/worker/vendure-worker.md +50 -0
- package/docs/reference/typescript-api/worker/worker-health-check-config.md +41 -0
- package/docs/user-guide/catalog/collections.md +27 -0
- package/docs/user-guide/catalog/facets.md +34 -0
- package/docs/user-guide/catalog/product-variants.png +0 -0
- package/docs/user-guide/catalog/products.md +35 -0
- package/docs/user-guide/catalog/screen-facet-add.webp +0 -0
- package/docs/user-guide/catalog/screen-facet-list.webp +0 -0
- package/docs/user-guide/catalog/screen-inventory.webp +0 -0
- package/docs/user-guide/customers/index.md +30 -0
- package/docs/user-guide/customers/screen-customer-group.webp +0 -0
- package/docs/user-guide/index.md +7 -0
- package/docs/user-guide/localization/index.md +42 -0
- package/docs/user-guide/localization/screen-ui-language.webp +0 -0
- package/docs/user-guide/orders/draft-orders.md +28 -0
- package/docs/user-guide/orders/order-state-diagram-for-admin.png +0 -0
- package/docs/user-guide/orders/orders.md +65 -0
- package/docs/user-guide/orders/screen-fulfillment-shipped.webp +0 -0
- package/docs/user-guide/orders/screen-fulfillment.webp +0 -0
- package/docs/user-guide/orders/screen-modification.webp +0 -0
- package/docs/user-guide/orders/screen-modify-button.webp +0 -0
- package/docs/user-guide/orders/screen-refund-button.webp +0 -0
- package/docs/user-guide/orders/screen-settle-payment.webp +0 -0
- package/docs/user-guide/promotions/index.md +44 -0
- package/docs/user-guide/settings/administrators-roles.md +34 -0
- package/docs/user-guide/settings/channels.md +18 -0
- package/docs/user-guide/settings/countries-zones.md +12 -0
- package/docs/user-guide/settings/global-settings.md +12 -0
- package/docs/user-guide/settings/payment-methods.md +32 -0
- package/docs/user-guide/settings/screen-shipping-test.webp +0 -0
- package/docs/user-guide/settings/screen-translations.webp +0 -0
- package/docs/user-guide/settings/shipping-methods.md +55 -0
- package/docs/user-guide/settings/taxes.md +32 -0
- package/package.json +32 -0
|
@@ -0,0 +1,311 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: 'The Service Layer'
|
|
3
|
+
sidebar_position: 2
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
The service layer is the core of the application. This is where the business logic is implemented, and where
|
|
7
|
+
the application interacts with the database. When a request comes in to the API, it gets routed to a resolver
|
|
8
|
+
which then calls a service method to perform the required operation.
|
|
9
|
+
|
|
10
|
+

|
|
11
|
+
|
|
12
|
+
:::info
|
|
13
|
+
Services are classes which, in NestJS terms, are [providers](https://docs.nestjs.com/providers#services). They
|
|
14
|
+
follow all the rules of NestJS providers, including dependency injection, scoping, etc.
|
|
15
|
+
:::
|
|
16
|
+
|
|
17
|
+
Services are generally scoped to a specific domain or entity. For instance, in the Vendure core, there is a [`Product` entity](/reference/typescript-api/entities/product),
|
|
18
|
+
and a corresponding [`ProductService`](/reference/typescript-api/services/product-service) which contains all the methods for interacting with products.
|
|
19
|
+
|
|
20
|
+
Here's a simplified example of a `ProductService`, including an implementation of the `findOne()` method that was
|
|
21
|
+
used in the example in the [previous section](/guides/developer-guide/the-api-layer/#resolvers):
|
|
22
|
+
|
|
23
|
+
```ts title="src/services/product.service.ts"
|
|
24
|
+
import { Injectable } from '@nestjs/common';
|
|
25
|
+
import { IsNull } from 'typeorm';
|
|
26
|
+
import { ID, Product, RequestContext, TransactionalConnection, TranslatorService } from '@vendure/core';
|
|
27
|
+
|
|
28
|
+
@Injectable()
|
|
29
|
+
export class ProductService {
|
|
30
|
+
|
|
31
|
+
constructor(private connection: TransactionalConnection,
|
|
32
|
+
private translator: TranslatorService){}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* @description
|
|
36
|
+
* Returns a Product with the given id, or undefined if not found.
|
|
37
|
+
*/
|
|
38
|
+
async findOne(ctx: RequestContext, productId: ID): Promise<Product | undefined> {
|
|
39
|
+
const product = await this.connection.findOneInChannel(ctx, Product, productId, ctx.channelId, {
|
|
40
|
+
where: {
|
|
41
|
+
deletedAt: IsNull(),
|
|
42
|
+
},
|
|
43
|
+
});
|
|
44
|
+
if (!product) {
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
return this.translator.translate(product, ctx);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// ... other methods
|
|
51
|
+
findMany() {}
|
|
52
|
+
create() {}
|
|
53
|
+
update() {}
|
|
54
|
+
}
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
- The `@Injectable()` decorator is a [NestJS](https://docs.nestjs.com/providers#services) decorator which allows the service
|
|
58
|
+
to be injected into other services or resolvers.
|
|
59
|
+
- The `constructor()` method is where the dependencies of the service are injected. In this case, the `TransactionalConnection`
|
|
60
|
+
is used to access the database, and the `TranslatorService` is used to translate the Product entity into the current
|
|
61
|
+
language.
|
|
62
|
+
|
|
63
|
+
## Using core services
|
|
64
|
+
|
|
65
|
+
All the internal Vendure services can be used in your own plugins and scripts. They are listed in the [Services API reference](/reference/typescript-api/services/) and
|
|
66
|
+
can be imported from the `@vendure/core` package.
|
|
67
|
+
|
|
68
|
+
To make use of a core service in your own plugin, you need to ensure your plugin is importing the `PluginCommonModule` and
|
|
69
|
+
then inject the desired service into your own service's constructor:
|
|
70
|
+
|
|
71
|
+
```ts title="src/my-plugin/my.plugin.ts"
|
|
72
|
+
import { PluginCommonModule, VendurePlugin } from '@vendure/core';
|
|
73
|
+
import { MyService } from './services/my.service';
|
|
74
|
+
|
|
75
|
+
@VendurePlugin({
|
|
76
|
+
// highlight-start
|
|
77
|
+
imports: [PluginCommonModule],
|
|
78
|
+
providers: [MyService],
|
|
79
|
+
// highlight-end
|
|
80
|
+
})
|
|
81
|
+
export class MyPlugin {}
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
```ts title="src/my-plugin/services/my.service.ts"
|
|
85
|
+
import { Injectable } from '@nestjs/common';
|
|
86
|
+
import { ProductService } from '@vendure/core';
|
|
87
|
+
|
|
88
|
+
@Injectable()
|
|
89
|
+
export class MyService {
|
|
90
|
+
|
|
91
|
+
// highlight-next-line
|
|
92
|
+
constructor(private productService: ProductService) {}
|
|
93
|
+
|
|
94
|
+
// you can now use the productService methods
|
|
95
|
+
}
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
## Accessing the database
|
|
99
|
+
|
|
100
|
+
One of the main responsibilities of the service layer is to interact with the database. For this, you will be using
|
|
101
|
+
the [`TransactionalConnection` class](/reference/typescript-api/data-access/transactional-connection/), which is a wrapper
|
|
102
|
+
around the [TypeORM `DataSource` object](https://typeorm.io/data-source-api). The primary purpose of the `TransactionalConnection`
|
|
103
|
+
is to ensure that database operations can be performed within a transaction (which is essential for ensuring data integrity), even
|
|
104
|
+
across multiple services. Furthermore, it exposes some helper methods which make it easier to perform common operations.
|
|
105
|
+
|
|
106
|
+
:::info
|
|
107
|
+
|
|
108
|
+
Always pass the `RequestContext` (`ctx`) to the `TransactionalConnection` methods. This ensures the operation occurs within
|
|
109
|
+
any active transaction.
|
|
110
|
+
|
|
111
|
+
:::
|
|
112
|
+
|
|
113
|
+
There are two primary APIs for accessing data provided by TypeORM: the **Find API** and the **QueryBuilder API**.
|
|
114
|
+
|
|
115
|
+
### The Find API
|
|
116
|
+
|
|
117
|
+
This API is the most convenient and type-safe way to query the database. It provides a powerful type-safe way to query
|
|
118
|
+
including support for eager relations, pagination, sorting, filtering and more.
|
|
119
|
+
|
|
120
|
+
Here are some examples of using the Find API:
|
|
121
|
+
|
|
122
|
+
```ts title="src/services/item.service.ts"
|
|
123
|
+
import { Injectable } from '@nestjs/common';
|
|
124
|
+
import { ID, RequestContext, TransactionalConnection } from '@vendure/core';
|
|
125
|
+
import { IsNull } from 'typeorm';
|
|
126
|
+
import { Item } from '../entities/item.entity';
|
|
127
|
+
|
|
128
|
+
@Injectable()
|
|
129
|
+
export class ItemService {
|
|
130
|
+
|
|
131
|
+
constructor(private connection: TransactionalConnection) {}
|
|
132
|
+
|
|
133
|
+
findById(ctx: RequestContext, itemId: ID): Promise<Item | null> {
|
|
134
|
+
return this.connection.getRepository(ctx, Item).findOne({
|
|
135
|
+
where: { id: itemId },
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
findByName(ctx: RequestContext, name: string): Promise<Item | null> {
|
|
140
|
+
return this.connection.getRepository(ctx, Item).findOne({
|
|
141
|
+
where: {
|
|
142
|
+
// Multiple where clauses can be specified,
|
|
143
|
+
// which are joined with AND
|
|
144
|
+
name,
|
|
145
|
+
deletedAt: IsNull(),
|
|
146
|
+
},
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
findWithRelations() {
|
|
151
|
+
return this.connection.getRepository(ctx, Item).findOne({
|
|
152
|
+
where: { name },
|
|
153
|
+
relations: {
|
|
154
|
+
// Join the `item.customer` relation
|
|
155
|
+
customer: true,
|
|
156
|
+
product: {
|
|
157
|
+
// Here we are joining a nested relation `item.product.featuredAsset`
|
|
158
|
+
featuredAsset: true,
|
|
159
|
+
},
|
|
160
|
+
},
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
findMany(ctx: RequestContext): Promise<Item[]> {
|
|
165
|
+
return this.connection.getRepository(ctx, Item).find({
|
|
166
|
+
// Pagination
|
|
167
|
+
skip: 0,
|
|
168
|
+
take: 10,
|
|
169
|
+
// Sorting
|
|
170
|
+
order: {
|
|
171
|
+
name: 'ASC',
|
|
172
|
+
},
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
:::info
|
|
179
|
+
|
|
180
|
+
Further examples can be found in the [TypeORM Find Options documentation](https://typeorm.io/find-options).
|
|
181
|
+
|
|
182
|
+
:::
|
|
183
|
+
|
|
184
|
+
### The QueryBuilder API
|
|
185
|
+
|
|
186
|
+
When the Find API is not sufficient, the QueryBuilder API can be used to construct more complex queries. For instance,
|
|
187
|
+
if you want to have a more complex `WHERE` clause than what can be achieved with the Find API, or if you want to perform
|
|
188
|
+
sub-queries, then the QueryBuilder API is the way to go.
|
|
189
|
+
|
|
190
|
+
Here are some examples of using the QueryBuilder API:
|
|
191
|
+
|
|
192
|
+
```ts title="src/services/item.service.ts"
|
|
193
|
+
import { Injectable } from '@nestjs/common';
|
|
194
|
+
import { ID, RequestContext, TransactionalConnection } from '@vendure/core';
|
|
195
|
+
import { Brackets, IsNull } from 'typeorm';
|
|
196
|
+
import { Item } from '../entities/item.entity';
|
|
197
|
+
|
|
198
|
+
@Injectable()
|
|
199
|
+
export class ItemService {
|
|
200
|
+
|
|
201
|
+
constructor(private connection: TransactionalConnection) {}
|
|
202
|
+
|
|
203
|
+
findById(ctx: RequestContext, itemId: ID): Promise<Item | null> {
|
|
204
|
+
// This is simple enough that you should prefer the Find API,
|
|
205
|
+
// but here is how it would be done with the QueryBuilder API:
|
|
206
|
+
return this.connection.getRepository(ctx, Item).createQueryBuilder('item')
|
|
207
|
+
.where('item.id = :id', { id: itemId })
|
|
208
|
+
.getOne();
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
findManyWithSubquery(ctx: RequestContext, name: string) {
|
|
212
|
+
// Here's a more complex query that would not be possible using the Find API:
|
|
213
|
+
return this.connection.getRepository(ctx, Item).createQueryBuilder('item')
|
|
214
|
+
.where('item.name = :name', { name })
|
|
215
|
+
.andWhere(
|
|
216
|
+
new Brackets(qb1 => {
|
|
217
|
+
qb1.where('item.state = :state1', { state1: 'PENDING' })
|
|
218
|
+
.orWhere('item.state = :state2', { state2: 'RETRYING' });
|
|
219
|
+
}),
|
|
220
|
+
)
|
|
221
|
+
.orderBy('item.createdAt', 'ASC')
|
|
222
|
+
.getMany();
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
:::info
|
|
228
|
+
|
|
229
|
+
Further examples can be found in the [TypeORM QueryBuilder documentation](https://typeorm.io/select-query-builder).
|
|
230
|
+
|
|
231
|
+
:::
|
|
232
|
+
|
|
233
|
+
### Working with relations
|
|
234
|
+
|
|
235
|
+
One limitation of TypeORM's typings is that we have no way of knowing at build-time whether a particular relation will be
|
|
236
|
+
joined at runtime. For instance, the following code will build without issues, but will result in a runtime error:
|
|
237
|
+
|
|
238
|
+
```ts
|
|
239
|
+
const product = await this.connection.getRepository(ctx, Product).findOne({
|
|
240
|
+
where: { id: productId },
|
|
241
|
+
});
|
|
242
|
+
if (product) {
|
|
243
|
+
// highlight-start
|
|
244
|
+
console.log(product.featuredAsset.preview);
|
|
245
|
+
// ^ Error: Cannot read property 'preview' of undefined
|
|
246
|
+
// highlight-end
|
|
247
|
+
}
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
This is because the `featuredAsset` relation is not joined by default. The simple fix for the above example is to use
|
|
251
|
+
the `relations` option:
|
|
252
|
+
|
|
253
|
+
```ts
|
|
254
|
+
const product = await this.connection.getRepository(ctx, Product).findOne({
|
|
255
|
+
where: { id: productId },
|
|
256
|
+
// highlight-next-line
|
|
257
|
+
relations: { featuredAsset: true },
|
|
258
|
+
});
|
|
259
|
+
```
|
|
260
|
+
or in the case of the QueryBuilder API, we can use the `leftJoinAndSelect()` method:
|
|
261
|
+
|
|
262
|
+
```ts
|
|
263
|
+
const product = await this.connection.getRepository(ctx, Product).createQueryBuilder('product')
|
|
264
|
+
// highlight-next-line
|
|
265
|
+
.leftJoinAndSelect('product.featuredAsset', 'featuredAsset')
|
|
266
|
+
.where('product.id = :id', { id: productId })
|
|
267
|
+
.getOne();
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
### Using the EntityHydrator
|
|
271
|
+
|
|
272
|
+
But what about when we do not control the code which fetches the entity from the database? For instance, we might be implementing
|
|
273
|
+
a function which gets an entity passed to it by Vendure. In this case, we can use the [`EntityHydrator`](/reference/typescript-api/data-access/entity-hydrator/)
|
|
274
|
+
to ensure that a given relation is "hydrated" (i.e. joined) before we use it:
|
|
275
|
+
|
|
276
|
+
```ts
|
|
277
|
+
import { EntityHydrator, ShippingCalculator } from '@vendure/core';
|
|
278
|
+
|
|
279
|
+
let entityHydrator: EntityHydrator;
|
|
280
|
+
|
|
281
|
+
const myShippingCalculator = new ShippingCalculator({
|
|
282
|
+
// ... rest of config omitted for brevity
|
|
283
|
+
init(injector) {
|
|
284
|
+
entityHydrator = injector.get(EntityHydrator);
|
|
285
|
+
},
|
|
286
|
+
calculate: (ctx, order, args) => {
|
|
287
|
+
// highlight-start
|
|
288
|
+
// ensure that the customer and customer.groups relations are joined
|
|
289
|
+
await entityHydrator.hydrate(ctx, order, { relations: ['customer.groups' ]});
|
|
290
|
+
// highlight-end
|
|
291
|
+
|
|
292
|
+
if (order.customer?.groups?.some(g => g.name === 'VIP')) {
|
|
293
|
+
// ... do something special for VIP customers
|
|
294
|
+
} else {
|
|
295
|
+
// ... do something else
|
|
296
|
+
}
|
|
297
|
+
},
|
|
298
|
+
});
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
### Joining relations in built-in service methods
|
|
302
|
+
|
|
303
|
+
Many of the core services allow an optional `relations` argument in their `findOne()` and `findMany()` and related methods.
|
|
304
|
+
This allows you to specify which relations should be joined when the query is executed. For instance, in the [`ProductService`](/reference/typescript-api/services/product-service)
|
|
305
|
+
there is a `findOne()` method which allows you to specify which relations should be joined:
|
|
306
|
+
|
|
307
|
+
```ts
|
|
308
|
+
const productWithAssets = await this.productService
|
|
309
|
+
.findOne(ctx, productId, ['featuredAsset', 'assets']);
|
|
310
|
+
```
|
|
311
|
+
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Implementing Translatable"
|
|
3
|
+
showtoc: true
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## Defining translatable entities
|
|
7
|
+
|
|
8
|
+
Making an entity translatable means that string properties of the entity can have a different values for multiple languages.
|
|
9
|
+
To make an entity translatable, you need to implement the [`Translatable`](/reference/typescript-api/entities/interfaces/#translatable) interface and add a `translations` property to the entity.
|
|
10
|
+
|
|
11
|
+
```ts title="src/plugins/requests/entities/product-request.entity.ts"
|
|
12
|
+
import { DeepPartial } from '@vendure/common/lib/shared-types';
|
|
13
|
+
import { VendureEntity, Product, EntityId, ID, Translatable } from '@vendure/core';
|
|
14
|
+
import { Column, Entity, ManyToOne } from 'typeorm';
|
|
15
|
+
|
|
16
|
+
import { ProductRequestTranslation } from './product-request-translation.entity';
|
|
17
|
+
|
|
18
|
+
@Entity()
|
|
19
|
+
class ProductRequest extends VendureEntity implements Translatable {
|
|
20
|
+
constructor(input?: DeepPartial<ProductRequest>) {
|
|
21
|
+
super(input);
|
|
22
|
+
}
|
|
23
|
+
// highlight-start
|
|
24
|
+
text: LocaleString;
|
|
25
|
+
// highlight-end
|
|
26
|
+
|
|
27
|
+
@ManyToOne(type => Product)
|
|
28
|
+
product: Product;
|
|
29
|
+
|
|
30
|
+
@EntityId()
|
|
31
|
+
productId: ID;
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
// highlight-start
|
|
35
|
+
@OneToMany(() => ProductRequestTranslation, translation => translation.base, { eager: true })
|
|
36
|
+
translations: Array<Translation<ProductRequest>>;
|
|
37
|
+
// highlight-end
|
|
38
|
+
}
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
The `translations` property is a `OneToMany` relation to the translations. Any fields that are to be translated are of type `LocaleString`, and **do not have a `@Column()` decorator**.
|
|
42
|
+
This is because the `text` field here does not in fact exist in the database in the `product_request` table. Instead, it belongs to the `product_request_translations` table of the `ProductRequestTranslation` entity:
|
|
43
|
+
|
|
44
|
+
```ts title="src/plugins/requests/entities/product-request-translation.entity.ts"
|
|
45
|
+
import { DeepPartial } from '@vendure/common/lib/shared-types';
|
|
46
|
+
import { HasCustomFields, Translation, VendureEntity, LanguageCode } from '@vendure/core';
|
|
47
|
+
import { Column, Entity, Index, ManyToOne } from 'typeorm';
|
|
48
|
+
|
|
49
|
+
import { ProductRequest } from './release-note.entity';
|
|
50
|
+
|
|
51
|
+
@Entity()
|
|
52
|
+
export class ProductRequestTranslation
|
|
53
|
+
extends VendureEntity
|
|
54
|
+
implements Translation<ProductRequest>, HasCustomFields
|
|
55
|
+
{
|
|
56
|
+
constructor(input?: DeepPartial<Translation<ProductRequestTranslation>>) {
|
|
57
|
+
super(input);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
@Column('varchar')
|
|
61
|
+
languageCode: LanguageCode;
|
|
62
|
+
|
|
63
|
+
@Column('varchar')
|
|
64
|
+
// highlight-start
|
|
65
|
+
text: string; // same name as the translatable field in the base entity
|
|
66
|
+
// highlight-end
|
|
67
|
+
@Index()
|
|
68
|
+
@ManyToOne(() => ProductRequest, base => base.translations, { onDelete: 'CASCADE' })
|
|
69
|
+
base: ProductRequest;
|
|
70
|
+
}
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
Thus there is a one-to-many relation between `ProductRequest` and `ProductRequestTranslation`, which allows Vendure to handle multiple translations of the same entity. The `ProductRequestTranslation` entity also implements the `Translation` interface, which requires the `languageCode` field and a reference to the base entity.
|
|
74
|
+
|
|
75
|
+
### Translations in the GraphQL schema
|
|
76
|
+
Since the `text` field is getting hydrated with the translation it should be exposed in the GraphQL Schema. Additionally, the `ProductRequestTranslation` type should
|
|
77
|
+
be defined as well, to access other translations as well:
|
|
78
|
+
```graphql title="src/plugins/requests/api/types.ts"
|
|
79
|
+
type ProductRequestTranslation {
|
|
80
|
+
id: ID!
|
|
81
|
+
createdAt: DateTime!
|
|
82
|
+
updatedAt: DateTime!
|
|
83
|
+
// highlight-start
|
|
84
|
+
languageCode: LanguageCode!
|
|
85
|
+
text: String!
|
|
86
|
+
// highlight-end
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
type ProductRequest implements Node {
|
|
90
|
+
id: ID!
|
|
91
|
+
createdAt: DateTime!
|
|
92
|
+
updatedAt: DateTime!
|
|
93
|
+
# Will be filled with the translation for the current language
|
|
94
|
+
text: String!
|
|
95
|
+
// highlight-next-line
|
|
96
|
+
translations: [ProductRequestTranslation!]!
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
## Creating translatable entities
|
|
102
|
+
|
|
103
|
+
Creating a translatable entity is usually done by using the [`TranslatableSaver`](/reference/typescript-api/service-helpers/translatable-saver/). This injectable service provides a `create` and `update` method which can be used to save or update a translatable entity.
|
|
104
|
+
|
|
105
|
+
```ts title="src/plugins/requests/service/product-request.service.ts"
|
|
106
|
+
export class RequestService {
|
|
107
|
+
|
|
108
|
+
constructor(private translatableSaver: TranslatableSaver) {}
|
|
109
|
+
|
|
110
|
+
async create(ctx: RequestContext, input: CreateProductRequestInput): Promise<ProductRequest> {
|
|
111
|
+
const request = await this.translatableSaver.create({
|
|
112
|
+
ctx,
|
|
113
|
+
input,
|
|
114
|
+
entityType: ProductRequest,
|
|
115
|
+
translationType: ProductRequestTranslation,
|
|
116
|
+
beforeSave: async f => {
|
|
117
|
+
// Assign relations here
|
|
118
|
+
},
|
|
119
|
+
});
|
|
120
|
+
return request;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
Important for the creation of translatable entities is the input object. The input object should contain a `translations` array with the translations for the entity. This can be done
|
|
126
|
+
by defining the types like `CreateRequestInput` inside the GraphQL schema:
|
|
127
|
+
|
|
128
|
+
```graphql title="src/plugins/requests/api/types.ts"
|
|
129
|
+
input ProductRequestTranslationInput {
|
|
130
|
+
# Only defined for update mutations
|
|
131
|
+
id: ID
|
|
132
|
+
// highlight-start
|
|
133
|
+
languageCode: LanguageCode!
|
|
134
|
+
text: String!
|
|
135
|
+
// highlight-end
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
input CreateProductRequestInput {
|
|
139
|
+
text: String!
|
|
140
|
+
// highlight-next-line
|
|
141
|
+
translations: [ProductRequestTranslationInput!]!
|
|
142
|
+
}
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
## Updating translatable entities
|
|
146
|
+
|
|
147
|
+
Updating a translatable entity is done in a similar way as creating one. The [`TranslatableSaver`](/reference/typescript-api/service-helpers/translatable-saver/) provides an `update` method which can be used to update a translatable entity.
|
|
148
|
+
|
|
149
|
+
```ts title="src/plugins/requests/service/product-request.service.ts"
|
|
150
|
+
export class RequestService {
|
|
151
|
+
|
|
152
|
+
constructor(private translatableSaver: TranslatableSaver) {}
|
|
153
|
+
|
|
154
|
+
async update(ctx: RequestContext, input: UpdateProductRequestInput): Promise<ProductRequest> {
|
|
155
|
+
const updatedEntity = await this.translatableSaver.update({
|
|
156
|
+
ctx,
|
|
157
|
+
input,
|
|
158
|
+
entityType: ProductRequest,
|
|
159
|
+
translationType: ProductRequestTranslation,
|
|
160
|
+
beforeSave: async f => {
|
|
161
|
+
// Assign relations here
|
|
162
|
+
},
|
|
163
|
+
});
|
|
164
|
+
return updatedEntity;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
Once again it's important to provide the `translations` array in the input object. This array should contain the translations for the entity.
|
|
170
|
+
|
|
171
|
+
```graphql title="src/plugins/requests/api/types.ts"
|
|
172
|
+
|
|
173
|
+
input UpdateProductRequestInput {
|
|
174
|
+
text: String
|
|
175
|
+
// highlight-next-line
|
|
176
|
+
translations: [ProductRequestTranslationInput!]
|
|
177
|
+
}
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
## Loading translatable entities
|
|
181
|
+
|
|
182
|
+
If your plugin needs to load a translatable entity, you will need to use the [`TranslatorService`](/reference/typescript-api/service-helpers/translator-service/) to hydrate all the `LocaleString` fields will the actual translated values from the correct translation.
|
|
183
|
+
|
|
184
|
+
```ts title="src/plugins/requests/service/product-request.service.ts"
|
|
185
|
+
export class RequestService {
|
|
186
|
+
|
|
187
|
+
constructor(private translator: TranslatorService) {}
|
|
188
|
+
|
|
189
|
+
findAll(
|
|
190
|
+
ctx: RequestContext,
|
|
191
|
+
options?: ListQueryOptions<ProductRequest>,
|
|
192
|
+
relations?: RelationPaths<ProductRequest>,
|
|
193
|
+
): Promise<PaginatedList<Translated<ProductRequest>>> {
|
|
194
|
+
return this.listQueryBuilder
|
|
195
|
+
.build(ProductRequest, options, {
|
|
196
|
+
relations,
|
|
197
|
+
ctx,
|
|
198
|
+
})
|
|
199
|
+
.getManyAndCount()
|
|
200
|
+
.then(([items, totalItems]) => {
|
|
201
|
+
return {
|
|
202
|
+
// highlight-next-line
|
|
203
|
+
items: items.map(item => this.translator.translate(item, ctx)),
|
|
204
|
+
totalItems,
|
|
205
|
+
};
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
findOne(
|
|
210
|
+
ctx: RequestContext,
|
|
211
|
+
id: ID,
|
|
212
|
+
relations?: RelationPaths<ProductRequest>,
|
|
213
|
+
): Promise<Translated<ProductRequest> | null> {
|
|
214
|
+
return this.connection
|
|
215
|
+
.getRepository(ctx, ProductRequest)
|
|
216
|
+
.findOne({
|
|
217
|
+
where: { id },
|
|
218
|
+
relations,
|
|
219
|
+
})
|
|
220
|
+
// highlight-next-line
|
|
221
|
+
.then(entity => entity && this.translator.translate(entity, ctx));
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
```
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Translations"
|
|
3
|
+
showtoc: true
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
The following items in Vendure can be translated:
|
|
7
|
+
|
|
8
|
+
- Entities which implement the [`Translatable`](/reference/typescript-api/entities/interfaces/#translatable) interface.
|
|
9
|
+
- Admin UI text labels and messages
|
|
10
|
+
- Server error message
|
|
11
|
+
|
|
12
|
+
## Translatable entities
|
|
13
|
+
|
|
14
|
+
The following entities implement the `Translatable` interface:
|
|
15
|
+
|
|
16
|
+
- [Collection](/reference/typescript-api/entities/collection/)
|
|
17
|
+
- [Country](/reference/typescript-api/entities/country/)
|
|
18
|
+
- [Facet](/reference/typescript-api/entities/facet/)
|
|
19
|
+
- [FacetValue](/reference/typescript-api/entities/facet-value/)
|
|
20
|
+
- [PaymentMethod](/reference/typescript-api/entities/payment-method/)
|
|
21
|
+
- [Product](/reference/typescript-api/entities/product/)
|
|
22
|
+
- [ProductOption](/reference/typescript-api/entities/product-option/)
|
|
23
|
+
- [ProductOptionGroup](/reference/typescript-api/entities/product-option-group/)
|
|
24
|
+
- [ProductVariant](/reference/typescript-api/entities/product-variant/)
|
|
25
|
+
- [Promotion](/reference/typescript-api/entities/promotion/)
|
|
26
|
+
- [Province](/reference/typescript-api/entities/province/)
|
|
27
|
+
- [Region](/reference/typescript-api/entities/region/)
|
|
28
|
+
- [ShippingMethod](/reference/typescript-api/entities/shipping-method/)
|
|
29
|
+
|
|
30
|
+
To understand how translatable entities are implemented, let's take a look at a simplified version of the `Facet` entity:
|
|
31
|
+
|
|
32
|
+
```ts
|
|
33
|
+
@Entity()
|
|
34
|
+
export class Facet extends VendureEntity implements Translatable {
|
|
35
|
+
|
|
36
|
+
// highlight-next-line
|
|
37
|
+
name: LocaleString;
|
|
38
|
+
|
|
39
|
+
@Column({ unique: true })
|
|
40
|
+
code: string;
|
|
41
|
+
|
|
42
|
+
// highlight-next-line
|
|
43
|
+
@OneToMany(type => FacetTranslation, translation => translation.base, { eager: true })
|
|
44
|
+
// highlight-next-line
|
|
45
|
+
translations: Array<Translation<Facet>>;
|
|
46
|
+
}
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
All translatable entities have a `translations` field which is a relation to the translations. Any fields that are to be translated are of type `LocaleString`, and **do note have a `@Column()` decorator**. This is because the `name` field here does not in fact exist in the database in the `facet` table. Instead, it belongs to the `facet_translations` table, which brings us to the `FacetTranslation` entity (again simplified for clarity):
|
|
50
|
+
|
|
51
|
+
```ts
|
|
52
|
+
@Entity()
|
|
53
|
+
export class FacetTranslation extends VendureEntity implements Translation<Facet> {
|
|
54
|
+
|
|
55
|
+
@Column('varchar') languageCode: LanguageCode;
|
|
56
|
+
|
|
57
|
+
// highlight-next-line
|
|
58
|
+
@Column() name: string;
|
|
59
|
+
|
|
60
|
+
@Index()
|
|
61
|
+
@ManyToOne(type => Facet, base => base.translations, { onDelete: 'CASCADE' })
|
|
62
|
+
base: Facet;
|
|
63
|
+
}
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
Thus there is a one-to-many relation between `Facet` and `FacetTranslation`, which allows Vendure to handle multiple translations of the same entity. The `FacetTranslation` entity also implements the `Translation` interface, which requires the `languageCode` field and a reference to the base entity.
|
|
67
|
+
|
|
68
|
+
### Loading translatable entities
|
|
69
|
+
|
|
70
|
+
If your plugin needs to load a translatable entity, you will need to use the [`TranslatorService`](/reference/typescript-api/service-helpers/translator-service/) to hydrate all the `LocaleString` fields will the actual translated values from the correct translation.
|
|
71
|
+
|
|
72
|
+
For example, if you are loading a `Facet` entity, you would do the following:
|
|
73
|
+
|
|
74
|
+
```ts
|
|
75
|
+
import { Facet } from '@vendure/core';
|
|
76
|
+
import { LanguageCode, RequestContext, TranslatorService, TransactionalConnection } from '@vendure/core';
|
|
77
|
+
|
|
78
|
+
@Injectable()
|
|
79
|
+
export class MyService {
|
|
80
|
+
|
|
81
|
+
constructor(private connection: TransactionalConnection, private translator: TranslatorService) {}
|
|
82
|
+
|
|
83
|
+
async getFacet(ctx: RequestContext, id: ID): Promise<Facet | undefined> {
|
|
84
|
+
const facet = await this.connection.getRepository(ctx, Facet).findOne(id);
|
|
85
|
+
if (facet) {
|
|
86
|
+
// highlight-next-line
|
|
87
|
+
return this.translatorService.translate(facet, ctx);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
async getFacets(ctx: RequestContext): Promise<Facet[]> {
|
|
92
|
+
// highlight-next-line
|
|
93
|
+
const facets = await this.connection.getRepository(ctx, Facet).find();
|
|
94
|
+
// highlight-next-line
|
|
95
|
+
return Promise.all(facets.map(facet => this.translatorService.translate(facet, ctx)));
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
```
|
|
99
|
+
## Admin UI translations
|
|
100
|
+
|
|
101
|
+
See the [Adding Admin UI Translations guide](/guides/extending-the-admin-ui/adding-ui-translations/).
|
|
102
|
+
|
|
103
|
+
## Server message translations
|
|
104
|
+
|
|
105
|
+
Let's say you've implemented some custom server-side functionality as part of a plugin. You may be returning custom errors or other messages. Here's how you can
|
|
106
|
+
provide these messages in multiple languages.
|
|
107
|
+
|
|
108
|
+
Using [`addTranslation`](/reference/typescript-api/common/i18n-service/#addtranslation) inside the `onApplicationBootstrap` ([Nestjs lifecycle hooks](https://docs.nestjs.com/fundamentals/lifecycle-events)) of a Plugin is the easiest way to add new translations.
|
|
109
|
+
While Vendure is only using `error`, `errorResult` and `message` resource keys you are free to use your own.
|
|
110
|
+
|
|
111
|
+
### Translatable Error
|
|
112
|
+
This example shows how to create a custom translatable error
|
|
113
|
+
```ts
|
|
114
|
+
/**
|
|
115
|
+
* Custom error class
|
|
116
|
+
*/
|
|
117
|
+
class CustomError extends ErrorResult {
|
|
118
|
+
readonly __typename = 'CustomError';
|
|
119
|
+
readonly errorCode = 'CUSTOM_ERROR';
|
|
120
|
+
readonly message = 'CUSTOM_ERROR'; //< looks up errorResult.CUSTOM_ERROR
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
@VendurePlugin({
|
|
124
|
+
imports: [PluginCommonModule],
|
|
125
|
+
providers: [I18nService],
|
|
126
|
+
// ...
|
|
127
|
+
})
|
|
128
|
+
export class TranslationTestPlugin implements OnApplicationBootstrap {
|
|
129
|
+
|
|
130
|
+
constructor(private i18nService: I18nService) {
|
|
131
|
+
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
onApplicationBootstrap(): any {
|
|
135
|
+
this.i18nService.addTranslation('en', {
|
|
136
|
+
errorResult: {
|
|
137
|
+
CUSTOM_ERROR: 'A custom error message',
|
|
138
|
+
},
|
|
139
|
+
anything: {
|
|
140
|
+
foo: 'bar'
|
|
141
|
+
}
|
|
142
|
+
});
|
|
143
|
+
|
|
144
|
+
this.i18nService.addTranslation('de', {
|
|
145
|
+
errorResult: {
|
|
146
|
+
CUSTOM_ERROR: 'Eine eigene Fehlermeldung',
|
|
147
|
+
},
|
|
148
|
+
anything: {
|
|
149
|
+
foo: 'bar'
|
|
150
|
+
}
|
|
151
|
+
});
|
|
152
|
+
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
To receive an error in a specific language you need to use the `languageCode` query parameter
|
|
158
|
+
`query(QUERY_WITH_ERROR_RESULT, { variables }, { languageCode: LanguageCode.de });`
|
|
159
|
+
|
|
160
|
+
### Use translations
|
|
161
|
+
|
|
162
|
+
Vendure uses the internationalization-framework [i18next](https://www.i18next.com/).
|
|
163
|
+
|
|
164
|
+
Therefore you are free to use the i18next translate function to [access keys](https://www.i18next.com/translation-function/essentials#accessing-keys) \
|
|
165
|
+
`i18next.t('error.any-message');`
|