@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,373 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: 'Strategies & Configurable Operations'
|
|
3
|
+
sidebar_position: 4
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Vendure is built to be highly configurable and extensible. Two methods of providing this extensibility are **strategies** and **configurable operations**.
|
|
7
|
+
|
|
8
|
+
## Strategies
|
|
9
|
+
|
|
10
|
+
A strategy is named after the [Strategy Pattern](https://en.wikipedia.org/wiki/Strategy_pattern), and is a way of providing
|
|
11
|
+
a pluggable implementation of a particular feature. Vendure makes heavy use of this pattern to delegate the implementation
|
|
12
|
+
of key points of extensibility to the developer.
|
|
13
|
+
|
|
14
|
+
Examples of strategies include:
|
|
15
|
+
|
|
16
|
+
- [`OrderCodeStrategy`](/reference/typescript-api/orders/order-code-strategy/) - determines how order codes are generated
|
|
17
|
+
- [`StockLocationStrategy`](/reference/typescript-api/products-stock/stock-location-strategy/) - determines which stock locations are used to fulfill an order
|
|
18
|
+
- [`ActiveOrderStrategy`](/reference/typescript-api/orders/active-order-strategy/) - determines how the active order in the Shop API is selected
|
|
19
|
+
- [`AssetStorageStrategy`](/reference/typescript-api/assets/asset-storage-strategy/) - determines where uploaded assets are stored
|
|
20
|
+
- [`GuestCheckoutStrategy`](/reference/typescript-api/orders/guest-checkout-strategy/) - defines rules relating to guest checkouts
|
|
21
|
+
- [`OrderItemPriceCalculationStrategy`](/reference/typescript-api/orders/order-item-price-calculation-strategy/) - determines how items are priced when added to the order
|
|
22
|
+
- [`TaxLineCalculationStrategy`](/reference/typescript-api/tax/tax-line-calculation-strategy/) - determines how tax is calculated for an order line
|
|
23
|
+
|
|
24
|
+
As an example, let's take the [`OrderCodeStrategy`](/reference/typescript-api/orders/order-code-strategy/). This strategy
|
|
25
|
+
determines how codes are generated when new orders are created. By default, Vendure will use the built-in `DefaultOrderCodeStrategy`
|
|
26
|
+
which generates a random 16-character string.
|
|
27
|
+
|
|
28
|
+
What if you need to change this behavior? For instance, you might have an existing back-office system that is responsible
|
|
29
|
+
for generating order codes, which you need to integrate with. Here's how you would do this:
|
|
30
|
+
|
|
31
|
+
```ts title="src/config/my-order-code-strategy.ts"
|
|
32
|
+
import { OrderCodeStrategy, RequestContext } from '@vendure/core';
|
|
33
|
+
import { OrderCodeService } from '../services/order-code.service';
|
|
34
|
+
|
|
35
|
+
export class MyOrderCodeStrategy implements OrderCodeStrategy {
|
|
36
|
+
|
|
37
|
+
private orderCodeService: OrderCodeService;
|
|
38
|
+
|
|
39
|
+
init(injector) {
|
|
40
|
+
this.orderCodeService = injector.get(OrderCodeService);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
async generate(ctx: RequestContext): string {
|
|
44
|
+
return this.orderCodeService.getNewOrderCode();
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
:::info
|
|
50
|
+
|
|
51
|
+
All strategies can make use of existing services by using the `init()` method. This is because all strategies
|
|
52
|
+
extend the underlying [`InjectableStrategy` interface](/reference/typescript-api/common/injectable-strategy). In
|
|
53
|
+
this example we are assuming that we already created an `OrderCodeService` which contains all the specific logic for
|
|
54
|
+
connecting to our backend service which generates the order codes.
|
|
55
|
+
|
|
56
|
+
:::
|
|
57
|
+
|
|
58
|
+
We then need to pass this custom strategy to our config:
|
|
59
|
+
|
|
60
|
+
```ts title="src/vendure-config.ts"
|
|
61
|
+
import { VendureConfig } from '@vendure/core';
|
|
62
|
+
import { MyOrderCodeStrategy } from '../config/my-order-code-strategy';
|
|
63
|
+
|
|
64
|
+
export const config: VendureConfig = {
|
|
65
|
+
// ...
|
|
66
|
+
orderOptions: {
|
|
67
|
+
// highlight-next-line
|
|
68
|
+
orderCodeStrategy: new MyOrderCodeStrategy(),
|
|
69
|
+
},
|
|
70
|
+
}
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### Strategy lifecycle
|
|
74
|
+
|
|
75
|
+
Strategies can use two optional lifecycle methods:
|
|
76
|
+
|
|
77
|
+
- `init(injector: Injector)` - called during the bootstrap phase when the server or worker is starting up.
|
|
78
|
+
This is where you can inject any services which you need to use in the strategy. You can also perform any other setup logic
|
|
79
|
+
needed, such as instantiating a connection to an external service.
|
|
80
|
+
- `destroy()` - called during the shutdown of the server or worker. This is where you can perform any cleanup logic, such as
|
|
81
|
+
closing connections to external services.
|
|
82
|
+
|
|
83
|
+
### Passing options to a strategy
|
|
84
|
+
|
|
85
|
+
Sometimes you might want to pass some configuration options to a strategy.
|
|
86
|
+
For example, imagine you want to create a custom [`StockLocationStrategy`](/reference/typescript-api/products-stock/stock-location-strategy/) which
|
|
87
|
+
selects a location within a given proximity to the customer's address. You might want to pass the maximum distance to the strategy
|
|
88
|
+
in your config:
|
|
89
|
+
|
|
90
|
+
```ts title="src/vendure-config.ts"
|
|
91
|
+
import { VendureConfig } from '@vendure/core';
|
|
92
|
+
import { MyStockLocationStrategy } from '../config/my-stock-location-strategy';
|
|
93
|
+
|
|
94
|
+
export const config: VendureConfig = {
|
|
95
|
+
// ...
|
|
96
|
+
catalogOptions: {
|
|
97
|
+
// highlight-next-line
|
|
98
|
+
stockLocationStrategy: new MyStockLocationStrategy({ maxDistance: 100 }),
|
|
99
|
+
},
|
|
100
|
+
}
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
This config will be passed to the strategy's constructor:
|
|
104
|
+
|
|
105
|
+
```ts title="src/config/my-stock-location-strategy.ts"
|
|
106
|
+
import { ID, ProductVariant, RequestContext, StockLevel, StockLocationStrategy } from '@vendure/core';
|
|
107
|
+
|
|
108
|
+
export class MyStockLocationStrategy implements StockLocationStrategy {
|
|
109
|
+
|
|
110
|
+
constructor(private options: { maxDistance: number }) {}
|
|
111
|
+
|
|
112
|
+
getAvailableStock(
|
|
113
|
+
ctx: RequestContext,
|
|
114
|
+
productVariantId: ID,
|
|
115
|
+
stockLevels: StockLevel[]
|
|
116
|
+
): ProductVariant[] {
|
|
117
|
+
const maxDistance = this.options.maxDistance;
|
|
118
|
+
// ... implementation omitted
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
## Configurable Operations
|
|
124
|
+
|
|
125
|
+
Configurable operations are similar to strategies in that they allow certain aspects of the system to be customized. However,
|
|
126
|
+
the main difference is that they can also be _configured_ via the Dashboard. This allows the store owner to make changes to the
|
|
127
|
+
behavior of the system without having to restart the server.
|
|
128
|
+
|
|
129
|
+
So they are typically used to supply some custom logic that needs to accept configurable arguments which can change
|
|
130
|
+
at runtime.
|
|
131
|
+
|
|
132
|
+
Vendure uses the following configurable operations:
|
|
133
|
+
|
|
134
|
+
- [`CollectionFilter`](/reference/typescript-api/configuration/collection-filter/) - determines which products are included in a collection
|
|
135
|
+
- [`PaymentMethodHandler`](/reference/typescript-api/payment/payment-method-handler/) - determines how payments are processed
|
|
136
|
+
- [`PromotionCondition`](/reference/typescript-api/promotions/promotion-condition/) - determines whether a promotion is applicable
|
|
137
|
+
- [`PromotionAction`](/reference/typescript-api/promotions/promotion-action/) - determines what happens when a promotion is applied
|
|
138
|
+
- [`ShippingEligibilityChecker`](/reference/typescript-api/shipping/shipping-eligibility-checker/) - determines whether a shipping method is available
|
|
139
|
+
- [`ShippingCalculator`](/reference/typescript-api/shipping/shipping-calculator/) - determines how shipping costs are calculated
|
|
140
|
+
|
|
141
|
+
Whereas strategies are typically used to provide a single implementation of a particular feature, configurable operations
|
|
142
|
+
are used to provide a set of implementations which can be selected from at runtime.
|
|
143
|
+
|
|
144
|
+
For example, Vendure ships with a set of default CollectionFilters:
|
|
145
|
+
|
|
146
|
+
```ts title="default-collection-filters.ts"
|
|
147
|
+
export const defaultCollectionFilters = [
|
|
148
|
+
facetValueCollectionFilter,
|
|
149
|
+
variantNameCollectionFilter,
|
|
150
|
+
variantIdCollectionFilter,
|
|
151
|
+
productIdCollectionFilter,
|
|
152
|
+
];
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
When setting up a Collection, you can choose from these available default filters:
|
|
156
|
+
|
|
157
|
+

|
|
158
|
+
|
|
159
|
+
When one is selected, the UI will allow you to configure the arguments for that filter:
|
|
160
|
+
|
|
161
|
+

|
|
162
|
+
|
|
163
|
+
Let's take a look at a simplified implementation of the `variantNameCollectionFilter`:
|
|
164
|
+
|
|
165
|
+
```ts title="variant-name-collection-filter.ts"
|
|
166
|
+
import { CollectionFilter, LanguageCode } from '@vendure/core';
|
|
167
|
+
|
|
168
|
+
export const variantNameCollectionFilter = new CollectionFilter({
|
|
169
|
+
args: {
|
|
170
|
+
operator: {
|
|
171
|
+
type: 'string',
|
|
172
|
+
ui: {
|
|
173
|
+
component: 'select-form-input',
|
|
174
|
+
options: [
|
|
175
|
+
{ value: 'startsWith' },
|
|
176
|
+
{ value: 'endsWith' },
|
|
177
|
+
{ value: 'contains' },
|
|
178
|
+
{ value: 'doesNotContain' },
|
|
179
|
+
],
|
|
180
|
+
},
|
|
181
|
+
},
|
|
182
|
+
term: { type: 'string' },
|
|
183
|
+
},
|
|
184
|
+
code: 'variant-name-filter',
|
|
185
|
+
description: [{ languageCode: LanguageCode.en, value: 'Filter by product variant name' }],
|
|
186
|
+
apply: (qb, args) => {
|
|
187
|
+
// ... implementation omitted
|
|
188
|
+
},
|
|
189
|
+
});
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
Here are the important parts:
|
|
193
|
+
|
|
194
|
+
- Configurable operations are **instances** of a pre-defined class, and are instantiated before being passed to your config.
|
|
195
|
+
- They must have a `code` property which is a unique string identifier.
|
|
196
|
+
- They must have a `description` property which is a localizable, human-readable description of the operation.
|
|
197
|
+
- They must have an `args` property which defines the arguments which can be configured via the Dashboard. If the operation has no arguments,
|
|
198
|
+
then this would be an empty object.
|
|
199
|
+
- They will have one or more methods that need to be implemented, depending on the type of operation. In this case, the `apply()` method
|
|
200
|
+
is used to apply the filter to the query builder.
|
|
201
|
+
|
|
202
|
+
### Configurable operation args
|
|
203
|
+
|
|
204
|
+
The `args` property is an object which defines the arguments which can be configured via the Dashboard. Each property of the `args`
|
|
205
|
+
object is a key-value pair, where the key is the name of the argument, and the value is an object which defines the type of the argument
|
|
206
|
+
and any additional configuration.
|
|
207
|
+
|
|
208
|
+
As an example let's look at the `dummyPaymentMethodHandler`, a test payment method which we ship with Vendure core:
|
|
209
|
+
|
|
210
|
+
```ts title="dummy-payment-method.ts"
|
|
211
|
+
import { PaymentMethodHandler, LanguageCode } from '@vendure/core';
|
|
212
|
+
|
|
213
|
+
export const dummyPaymentHandler = new PaymentMethodHandler({
|
|
214
|
+
code: 'dummy-payment-handler',
|
|
215
|
+
description: [/* omitted for brevity */],
|
|
216
|
+
args: {
|
|
217
|
+
automaticSettle: {
|
|
218
|
+
type: 'boolean',
|
|
219
|
+
label: [
|
|
220
|
+
{
|
|
221
|
+
languageCode: LanguageCode.en,
|
|
222
|
+
value: 'Authorize and settle in 1 step',
|
|
223
|
+
},
|
|
224
|
+
],
|
|
225
|
+
description: [
|
|
226
|
+
{
|
|
227
|
+
languageCode: LanguageCode.en,
|
|
228
|
+
value: 'If enabled, Payments will be created in the "Settled" state.',
|
|
229
|
+
},
|
|
230
|
+
],
|
|
231
|
+
required: true,
|
|
232
|
+
defaultValue: false,
|
|
233
|
+
},
|
|
234
|
+
},
|
|
235
|
+
createPayment: async (ctx, order, amount, args, metadata, method) => {
|
|
236
|
+
// Inside this method, the `args` argument is type-safe and will be
|
|
237
|
+
// an object with the following shape:
|
|
238
|
+
// {
|
|
239
|
+
// automaticSettle: boolean
|
|
240
|
+
// }
|
|
241
|
+
|
|
242
|
+
// ... implementation omitted
|
|
243
|
+
},
|
|
244
|
+
})
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
The following properties are used to configure the argument:
|
|
248
|
+
|
|
249
|
+
#### type
|
|
250
|
+
|
|
251
|
+
<span class="badge badge--primary">Required</span>
|
|
252
|
+
|
|
253
|
+
[`ConfigArgType`](/reference/typescript-api/configurable-operation-def/config-arg-type)
|
|
254
|
+
|
|
255
|
+
The following types are available: `string`, `int`, `float`, `boolean`, `datetime`, `ID`.
|
|
256
|
+
|
|
257
|
+
#### label
|
|
258
|
+
|
|
259
|
+
<span class="badge badge--secondary">Optional</span>
|
|
260
|
+
|
|
261
|
+
[`LocalizedStringArray`](/reference/typescript-api/configurable-operation-def/localized-string-array/)
|
|
262
|
+
|
|
263
|
+
A human-readable label for the argument. This is used in the Dashboard.
|
|
264
|
+
|
|
265
|
+
#### description
|
|
266
|
+
|
|
267
|
+
<span class="badge badge--secondary">Optional</span>
|
|
268
|
+
|
|
269
|
+
[`LocalizedStringArray`](/reference/typescript-api/configurable-operation-def/localized-string-array/)
|
|
270
|
+
|
|
271
|
+
A human-readable description for the argument. This is used in the Dashboard as a tooltip.
|
|
272
|
+
|
|
273
|
+
#### required
|
|
274
|
+
|
|
275
|
+
<span class="badge badge--secondary">Optional</span>
|
|
276
|
+
|
|
277
|
+
`boolean`
|
|
278
|
+
|
|
279
|
+
Whether the argument is required. If `true`, then the Dashboard will not allow the user to save the configuration
|
|
280
|
+
unless a value has been provided for this argument.
|
|
281
|
+
|
|
282
|
+
#### defaultValue
|
|
283
|
+
|
|
284
|
+
<span class="badge badge--secondary">Optional</span>
|
|
285
|
+
|
|
286
|
+
`any` (depends on the `type`)
|
|
287
|
+
|
|
288
|
+
The default value for the argument. If not provided, then the argument will be `undefined` by default.
|
|
289
|
+
|
|
290
|
+
#### list
|
|
291
|
+
|
|
292
|
+
<span class="badge badge--secondary">Optional</span>
|
|
293
|
+
|
|
294
|
+
`boolean`
|
|
295
|
+
|
|
296
|
+
Whether the argument is a list of values. If `true`, then the Dashboard will allow the user to add multiple values
|
|
297
|
+
for this argument. Defaults to `false`.
|
|
298
|
+
|
|
299
|
+
#### ui
|
|
300
|
+
|
|
301
|
+
<span class="badge badge--secondary">Optional</span>
|
|
302
|
+
|
|
303
|
+
Allows you to specify the UI component that will be used to render the argument in the Dashboard, by specifying
|
|
304
|
+
a `component` property, and optional properties to configure that component.
|
|
305
|
+
|
|
306
|
+
```ts
|
|
307
|
+
{
|
|
308
|
+
args: {
|
|
309
|
+
operator: {
|
|
310
|
+
type: 'string',
|
|
311
|
+
ui: {
|
|
312
|
+
component: 'select-form-input',
|
|
313
|
+
options: [
|
|
314
|
+
{ value: 'startsWith' },
|
|
315
|
+
{ value: 'endsWith' },
|
|
316
|
+
{ value: 'contains' },
|
|
317
|
+
{ value: 'doesNotContain' },
|
|
318
|
+
],
|
|
319
|
+
},
|
|
320
|
+
},
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
A full description of the available UI components can be found in the [Custom Fields guide](/guides/developer-guide/custom-fields/#custom-field-ui).
|
|
326
|
+
|
|
327
|
+
### Injecting dependencies
|
|
328
|
+
|
|
329
|
+
Configurable operations are instantiated before being passed to your config, so the mechanism for injecting dependencies
|
|
330
|
+
is similar to that of strategies: namely you use an optional `init()` method to inject dependencies into the operation instance.
|
|
331
|
+
|
|
332
|
+
The main difference is that the injected dependency cannot then be stored as a class property, since you are not defining
|
|
333
|
+
a class when you define a configurable operation. Instead, you can store the dependency as a closure variable.
|
|
334
|
+
|
|
335
|
+
Here’s an example of a ShippingCalculator that injects a service which has been defined in a plugin:
|
|
336
|
+
|
|
337
|
+
```ts title="src/config/custom-shipping-calculator.ts"
|
|
338
|
+
import { Injector, ShippingCalculator } from '@vendure/core';
|
|
339
|
+
import { ShippingRatesService } from './shipping-rates.service';
|
|
340
|
+
|
|
341
|
+
// We keep reference to our injected service by keeping it
|
|
342
|
+
// in the top-level scope of the file.
|
|
343
|
+
let shippingRatesService: ShippingRatesService;
|
|
344
|
+
|
|
345
|
+
export const customShippingCalculator = new ShippingCalculator({
|
|
346
|
+
code: 'custom-shipping-calculator',
|
|
347
|
+
description: [],
|
|
348
|
+
args: {},
|
|
349
|
+
|
|
350
|
+
init(injector: Injector) {
|
|
351
|
+
// The init function is called during bootstrap, and allows
|
|
352
|
+
// us to inject any providers we need.
|
|
353
|
+
shippingRatesService = injector.get(ShippingRatesService);
|
|
354
|
+
},
|
|
355
|
+
|
|
356
|
+
calculate: async (order, args) => {
|
|
357
|
+
// We can now use the injected provider in the business logic.
|
|
358
|
+
const { price, priceWithTax } = await shippingRatesService.getRate({
|
|
359
|
+
destination: order.shippingAddress,
|
|
360
|
+
contents: order.lines,
|
|
361
|
+
});
|
|
362
|
+
|
|
363
|
+
return {
|
|
364
|
+
price,
|
|
365
|
+
priceWithTax,
|
|
366
|
+
};
|
|
367
|
+
},
|
|
368
|
+
});
|
|
369
|
+
```
|
|
370
|
+
|
|
371
|
+
|
|
372
|
+
|
|
373
|
+
|
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Testing"
|
|
3
|
+
showtoc: true
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Testing
|
|
7
|
+
|
|
8
|
+
Vendure plugins allow you to extend all aspects of the standard Vendure server. When a plugin gets somewhat complex (defining new entities, extending the GraphQL schema, implementing custom resolvers), you may wish to create automated tests to ensure your plugin is correct.
|
|
9
|
+
|
|
10
|
+
The `@vendure/testing` package gives you some simple but powerful tooling for creating end-to-end tests for your custom Vendure code.
|
|
11
|
+
|
|
12
|
+
By "end-to-end" we mean we are testing the _entire server stack_ - from API, to services, to database - by making a real API request, and then making assertions about the response. This is a very effective way to ensure that _all_ parts of your plugin are working correctly together.
|
|
13
|
+
|
|
14
|
+
:::info
|
|
15
|
+
For a working example of a Vendure plugin with e2e testing, see the [real-world-vendure Reviews plugin](https://github.com/vendurehq/real-world-vendure/tree/master/src/plugins/reviews)
|
|
16
|
+
:::
|
|
17
|
+
|
|
18
|
+
## Usage
|
|
19
|
+
|
|
20
|
+
### Install dependencies
|
|
21
|
+
|
|
22
|
+
* [`@vendure/testing`](https://www.npmjs.com/package/@vendure/testing)
|
|
23
|
+
* [`vitest`](https://vitest.dev/) You'll need to install a testing framework. In this example, we will use [Vitest](https://vitest.dev/) as it has very good support for the modern JavaScript features that Vendure uses, and is very fast.
|
|
24
|
+
* [`graphql-tag`](https://www.npmjs.com/package/graphql-tag) This is not strictly required but makes it much easier to create the DocumentNodes needed to query your server.
|
|
25
|
+
* We also need to install some packages to allow us to compile TypeScript code that uses decorators:
|
|
26
|
+
- `@swc/core`
|
|
27
|
+
- `unplugin-swc`
|
|
28
|
+
|
|
29
|
+
```sh
|
|
30
|
+
npm install --save-dev @vendure/testing vitest graphql-tag @swc/core unplugin-swc
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
### Configure Vitest
|
|
34
|
+
|
|
35
|
+
Create a `vitest.config.mts` file in the root of your project:
|
|
36
|
+
|
|
37
|
+
```ts title="vitest.config.mts"
|
|
38
|
+
import path from 'path';
|
|
39
|
+
import swc from 'unplugin-swc';
|
|
40
|
+
import { defineConfig } from 'vitest/config';
|
|
41
|
+
|
|
42
|
+
export default defineConfig({
|
|
43
|
+
test: {
|
|
44
|
+
include: ['**/*.e2e-spec.ts'],
|
|
45
|
+
typecheck: {
|
|
46
|
+
tsconfig: path.join(__dirname, 'tsconfig.e2e.json'),
|
|
47
|
+
},
|
|
48
|
+
},
|
|
49
|
+
plugins: [
|
|
50
|
+
// SWC required to support decorators used in test plugins
|
|
51
|
+
// See https://github.com/vitest-dev/vitest/issues/708#issuecomment-1118628479
|
|
52
|
+
// Vite plugin
|
|
53
|
+
swc.vite({
|
|
54
|
+
jsc: {
|
|
55
|
+
transform: {
|
|
56
|
+
// See https://github.com/vendurehq/vendure/issues/2099
|
|
57
|
+
useDefineForClassFields: false,
|
|
58
|
+
},
|
|
59
|
+
},
|
|
60
|
+
}),
|
|
61
|
+
],
|
|
62
|
+
});
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
and a `tsconfig.e2e.json` tsconfig file for the tests:
|
|
66
|
+
|
|
67
|
+
```json title="tsconfig.e2e.json"
|
|
68
|
+
{
|
|
69
|
+
"extends": "./tsconfig.json",
|
|
70
|
+
"compilerOptions": {
|
|
71
|
+
"types": ["node"],
|
|
72
|
+
"lib": ["es2015"],
|
|
73
|
+
"useDefineForClassFields": false,
|
|
74
|
+
"skipLibCheck": true,
|
|
75
|
+
"inlineSourceMap": false,
|
|
76
|
+
"sourceMap": true,
|
|
77
|
+
"allowSyntheticDefaultImports": true,
|
|
78
|
+
"experimentalDecorators": true,
|
|
79
|
+
"emitDecoratorMetadata": true,
|
|
80
|
+
"esModuleInterop": true
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### Register database-specific initializers
|
|
87
|
+
|
|
88
|
+
The `@vendure/testing` package uses "initializers" to create the test databases and populate them with initial data. We ship with initializers for `sqljs`, `postgres` and `mysql`. Custom initializers can be created to support running e2e tests against other databases supported by TypeORM. See the [`TestDbInitializer` docs](/reference/typescript-api/testing/test-db-initializer/) for more details.
|
|
89
|
+
|
|
90
|
+
```ts title="src/plugins/my-plugin/e2e/my-plugin.e2e-spec.ts"
|
|
91
|
+
import {
|
|
92
|
+
MysqlInitializer,
|
|
93
|
+
PostgresInitializer,
|
|
94
|
+
SqljsInitializer,
|
|
95
|
+
registerInitializer,
|
|
96
|
+
} from '@vendure/testing';
|
|
97
|
+
|
|
98
|
+
const sqliteDataDir = path.join(__dirname, '__data__');
|
|
99
|
+
|
|
100
|
+
registerInitializer('sqljs', new SqljsInitializer(sqliteDataDir));
|
|
101
|
+
registerInitializer('postgres', new PostgresInitializer());
|
|
102
|
+
registerInitializer('mysql', new MysqlInitializer());
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
:::info
|
|
106
|
+
Note re. the `sqliteDataDir`: The first time this test suite is run with the `SqljsInitializer`, the populated data will be saved into an SQLite file, stored in the directory specified by this constructor arg. On subsequent runs of the test suite, the data-population step will be skipped and the initial data directly loaded from the SQLite file. This method of caching significantly speeds up the e2e test runs. All the .sqlite files created in the `sqliteDataDir` can safely be deleted at any time.
|
|
107
|
+
:::
|
|
108
|
+
|
|
109
|
+
### Create a test environment
|
|
110
|
+
|
|
111
|
+
The `@vendure/testing` package exports a [`createTestEnvironment` function](/reference/typescript-api/testing/create-test-environment/) which is used to set up a Vendure server and GraphQL clients to interact with both the Shop and Admin APIs:
|
|
112
|
+
|
|
113
|
+
```ts title="src/plugins/my-plugin/e2e/my-plugin.e2e-spec.ts"
|
|
114
|
+
import { createTestEnvironment, testConfig } from '@vendure/testing';
|
|
115
|
+
import { describe } from 'vitest';
|
|
116
|
+
import { MyPlugin } from '../my-plugin.ts';
|
|
117
|
+
|
|
118
|
+
describe('my plugin', () => {
|
|
119
|
+
|
|
120
|
+
const {server, adminClient, shopClient} = createTestEnvironment({
|
|
121
|
+
...testConfig,
|
|
122
|
+
plugins: [MyPlugin],
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
});
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
Notice that we pass a [`VendureConfig`](/reference/typescript-api/configuration/vendure-config/) object into the `createTestEnvironment` function. The testing package provides a special [`testConfig`](/reference/typescript-api/testing/test-config/) which is pre-configured for e2e tests, but any aspect can be overridden for your tests. Here we are configuring the server to load the plugin under test, `MyPlugin`.
|
|
129
|
+
|
|
130
|
+
:::caution
|
|
131
|
+
**Note**: If you need to deeply merge in some custom configuration, use the [`mergeConfig` function](/reference/typescript-api/configuration/merge-config/) which is provided by `@vendure/core`.
|
|
132
|
+
:::
|
|
133
|
+
|
|
134
|
+
### Initialize the server
|
|
135
|
+
|
|
136
|
+
The [`TestServer`](/reference/typescript-api/testing/test-server/) needs to be initialized before it can be used. The `TestServer.init()` method takes an options object which defines how to populate the server:
|
|
137
|
+
|
|
138
|
+
```ts title="src/plugins/my-plugin/e2e/my-plugin.e2e-spec.ts"
|
|
139
|
+
import { beforeAll, afterAll } from 'vitest';
|
|
140
|
+
import { myInitialData } from './fixtures/my-initial-data.ts';
|
|
141
|
+
|
|
142
|
+
// ...
|
|
143
|
+
|
|
144
|
+
beforeAll(async () => {
|
|
145
|
+
await server.init({
|
|
146
|
+
productsCsvPath: path.join(__dirname, 'fixtures/e2e-products.csv'),
|
|
147
|
+
initialData: myInitialData,
|
|
148
|
+
customerCount: 2,
|
|
149
|
+
});
|
|
150
|
+
await adminClient.asSuperAdmin();
|
|
151
|
+
}, 60000);
|
|
152
|
+
|
|
153
|
+
afterAll(async () => {
|
|
154
|
+
await server.destroy();
|
|
155
|
+
});
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
An explanation of the options:
|
|
159
|
+
|
|
160
|
+
* `productsCsvPath` This is a path to an optional CSV file containing product data. See [Product Import Format](/guides/developer-guide/importing-data/#product-import-format). You can see [an example used in the Vendure e2e tests](https://github.com/vendurehq/vendure/blob/master/packages/core/e2e/fixtures/e2e-products-full.csv) to get an idea of how it works. To start with you can just copy this file directly and use it as-is.
|
|
161
|
+
* `initialData` This is an object which defines how other non-product data (Collections, ShippingMethods, Countries etc.) is populated. See [Initial Data Format](/guides/developer-guide/importing-data/#initial-data). You can [copy this example from the Vendure e2e tests](https://github.com/vendurehq/vendure/blob/master/e2e-common/e2e-initial-data.ts)
|
|
162
|
+
* `customerCount` Specifies the number of fake Customers to create. Defaults to 10 if not specified.
|
|
163
|
+
|
|
164
|
+
### Write your tests
|
|
165
|
+
|
|
166
|
+
Now we are all set up to create a test. Let's test one of the GraphQL queries used by our fictional plugin:
|
|
167
|
+
|
|
168
|
+
```ts title="src/plugins/my-plugin/e2e/my-plugin.e2e-spec.ts"
|
|
169
|
+
import gql from 'graphql-tag';
|
|
170
|
+
import { it, expect, beforeAll, afterAll } from 'vitest';
|
|
171
|
+
import { myInitialData } from './fixtures/my-initial-data.ts';
|
|
172
|
+
|
|
173
|
+
it('myNewQuery returns the expected result', async () => {
|
|
174
|
+
adminClient.asSuperAdmin(); // log in as the SuperAdmin user
|
|
175
|
+
|
|
176
|
+
const query = gql`
|
|
177
|
+
query MyNewQuery($id: ID!) {
|
|
178
|
+
myNewQuery(id: $id) {
|
|
179
|
+
field1
|
|
180
|
+
field2
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
`;
|
|
184
|
+
const result = await adminClient.query(query, {id: 123});
|
|
185
|
+
|
|
186
|
+
expect(result.myNewQuery).toEqual({ /* ... */})
|
|
187
|
+
});
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
Running the test will then assert that your new query works as expected.
|
|
191
|
+
|
|
192
|
+
### Run your tests
|
|
193
|
+
|
|
194
|
+
All that's left is to run your tests to find out whether your code behaves as expected!
|
|
195
|
+
|
|
196
|
+
:::caution
|
|
197
|
+
**Note:** When using **Vitest** with multiple test suites (multiple `.e2e-spec.ts` files), it will attempt to run them in parallel. If all the test servers are running
|
|
198
|
+
on the same port (the default in the `testConfig` is `3050`), then this will cause a port conflict. To avoid this, you can manually set a unique port for each test suite. Be aware that `mergeConfig` is used here:
|
|
199
|
+
|
|
200
|
+
```ts title="src/plugins/my-plugin/e2e/my-plugin.e2e-spec.ts"
|
|
201
|
+
import { createTestEnvironment, testConfig } from '@vendure/testing';
|
|
202
|
+
import { mergeConfig } from "@vendure/core";
|
|
203
|
+
import { describe } from 'vitest';
|
|
204
|
+
import { MyPlugin } from '../my-plugin.ts';
|
|
205
|
+
|
|
206
|
+
describe('my plugin', () => {
|
|
207
|
+
|
|
208
|
+
const {server, adminClient, shopClient} = createTestEnvironment(mergeConfig(testConfig, {
|
|
209
|
+
// highlight-start
|
|
210
|
+
apiOptions: {
|
|
211
|
+
port: 3051,
|
|
212
|
+
},
|
|
213
|
+
// highlight-end
|
|
214
|
+
plugins: [MyPlugin],
|
|
215
|
+
}));
|
|
216
|
+
|
|
217
|
+
});
|
|
218
|
+
```
|
|
219
|
+
:::
|
|
220
|
+
|
|
221
|
+
## Accessing internal services
|
|
222
|
+
|
|
223
|
+
It is possible to access any internal service of the Vendure server via the `server.app` object, which is an instance of the NestJS `INestApplication`.
|
|
224
|
+
|
|
225
|
+
For example, to access the `ProductService`:
|
|
226
|
+
|
|
227
|
+
```ts title="src/plugins/my-plugin/e2e/my-plugin.e2e-spec.ts"
|
|
228
|
+
import { createTestEnvironment, testConfig } from '@vendure/testing';
|
|
229
|
+
import { describe, beforeAll } from 'vitest';
|
|
230
|
+
import { MyPlugin } from '../my-plugin.ts';
|
|
231
|
+
|
|
232
|
+
describe('my plugin', () => {
|
|
233
|
+
|
|
234
|
+
const { server, adminClient, shopClient } = createTestEnvironment({
|
|
235
|
+
...testConfig,
|
|
236
|
+
plugins: [MyPlugin],
|
|
237
|
+
});
|
|
238
|
+
|
|
239
|
+
// highlight-next-line
|
|
240
|
+
let productService: ProductService;
|
|
241
|
+
|
|
242
|
+
beforeAll(async () => {
|
|
243
|
+
await server.init({
|
|
244
|
+
productsCsvPath: path.join(__dirname, 'fixtures/e2e-products.csv'),
|
|
245
|
+
initialData: myInitialData,
|
|
246
|
+
customerCount: 2,
|
|
247
|
+
});
|
|
248
|
+
await adminClient.asSuperAdmin();
|
|
249
|
+
// highlight-next-line
|
|
250
|
+
productService = server.app.get(ProductService);
|
|
251
|
+
}, 60000);
|
|
252
|
+
|
|
253
|
+
});
|
|
254
|
+
```
|