@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,99 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Add a REST endpoint"
|
|
3
|
+
showtoc: true
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
REST-style endpoints can be defined as part of a [plugin](/guides/developer-guide/plugins/).
|
|
7
|
+
|
|
8
|
+
:::info
|
|
9
|
+
REST endpoints are implemented as NestJS Controllers. For comprehensive documentation, see the [NestJS controllers documentation](https://docs.nestjs.com/controllers).
|
|
10
|
+
:::
|
|
11
|
+
|
|
12
|
+
In this guide we will define a plugin that adds a single REST endpoint at `http://localhost:3000/products` which returns a list of all products.
|
|
13
|
+
|
|
14
|
+
## Create a controller
|
|
15
|
+
|
|
16
|
+
First let's define the controller:
|
|
17
|
+
|
|
18
|
+
```ts title="src/plugins/rest-plugin/api/products.controller.ts"
|
|
19
|
+
// products.controller.ts
|
|
20
|
+
import { Controller, Get } from '@nestjs/common';
|
|
21
|
+
import { Ctx, ProductService, RequestContext } from '@vendure/core';
|
|
22
|
+
|
|
23
|
+
@Controller('products')
|
|
24
|
+
export class ProductsController {
|
|
25
|
+
constructor(private productService: ProductService) {
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
@Get()
|
|
29
|
+
findAll(@Ctx() ctx: RequestContext) {
|
|
30
|
+
return this.productService.findAll(ctx);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
The key points to note here are:
|
|
36
|
+
|
|
37
|
+
- The `@Controller()` decorator defines the base path for all endpoints defined in this controller. In this case, all endpoints will be prefixed with `/products`.
|
|
38
|
+
- The `@Get()` decorator defines a GET endpoint at the base path. The method name `findAll` is arbitrary.
|
|
39
|
+
- The `@Ctx()` decorator injects the [RequestContext](/reference/typescript-api/request/request-context/) which is required for all service methods.
|
|
40
|
+
|
|
41
|
+
## Register the controller with the plugin
|
|
42
|
+
|
|
43
|
+
```ts title="src/plugins/rest-plugin/rest.plugin.ts"
|
|
44
|
+
import { PluginCommonModule, VendurePlugin } from '@vendure/core';
|
|
45
|
+
import { ProductsController } from './api/products.controller';
|
|
46
|
+
|
|
47
|
+
@VendurePlugin({
|
|
48
|
+
imports: [PluginCommonModule],
|
|
49
|
+
controllers: [ProductsController],
|
|
50
|
+
})
|
|
51
|
+
export class RestPlugin {}
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
:::info
|
|
55
|
+
**Note:** [The `PluginCommonModule`](/reference/typescript-api/plugin/plugin-common-module/) should be imported to gain access to Vendure core providers - in this case it is required in order to be able to inject `ProductService` into our controller.
|
|
56
|
+
:::
|
|
57
|
+
|
|
58
|
+
The plugin can then be added to the `VendureConfig`:
|
|
59
|
+
|
|
60
|
+
```ts title="src/vendure-config.ts"
|
|
61
|
+
import { VendureConfig } from '@vendure/core';
|
|
62
|
+
import { RestPlugin } from './plugins/rest-plugin/rest.plugin';
|
|
63
|
+
|
|
64
|
+
export const config: VendureConfig = {
|
|
65
|
+
// ...
|
|
66
|
+
plugins: [
|
|
67
|
+
// ...
|
|
68
|
+
// highlight-next-line
|
|
69
|
+
RestPlugin,
|
|
70
|
+
],
|
|
71
|
+
};
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## Controlling access to REST endpoints
|
|
75
|
+
|
|
76
|
+
You can use the [`@Allow()` decorator](/reference/typescript-api/request/allow-decorator/) to declare the permissions required to access a REST endpoint:
|
|
77
|
+
|
|
78
|
+
```ts title="src/plugins/rest-plugin/api/products.controller.ts"
|
|
79
|
+
import { Controller, Get } from '@nestjs/common';
|
|
80
|
+
import { Allow, Permission, Ctx, ProductService, RequestContext } from '@vendure/core';
|
|
81
|
+
|
|
82
|
+
@Controller('products')
|
|
83
|
+
export class ProductsController {
|
|
84
|
+
constructor(private productService: ProductService) {}
|
|
85
|
+
|
|
86
|
+
// highlight-next-line
|
|
87
|
+
@Allow(Permission.ReadProduct)
|
|
88
|
+
@Get()
|
|
89
|
+
findAll(@Ctx() ctx: RequestContext) {
|
|
90
|
+
return this.productService.findAll(ctx);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
:::tip
|
|
96
|
+
The following Vendure [API decorators](/guides/developer-guide/the-api-layer/#api-decorators) can also be used with NestJS controllers: `@Allow()`, `@Transaction()`, `@Ctx()`.
|
|
97
|
+
|
|
98
|
+
Additionally, NestJS supports a number of other REST decorators detailed in the [NestJS controllers guide](https://docs.nestjs.com/controllers#request-object)
|
|
99
|
+
:::
|
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: 'Scheduled Tasks'
|
|
3
|
+
showtoc: true
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Scheduled tasks are a way of executing some code at pre-defined intervals. There are many examples of work that can be done using scheduled tasks,
|
|
7
|
+
such as:
|
|
8
|
+
|
|
9
|
+
- Generating a sitemap
|
|
10
|
+
- Synchronizing data between different systems
|
|
11
|
+
- Sending abandoned cart emails
|
|
12
|
+
- Cleaning up old data
|
|
13
|
+
|
|
14
|
+
Since Vendure v3.3, there is a built-in mechanism which allows you to define scheduled tasks in a convenient and powerful way.
|
|
15
|
+
|
|
16
|
+
:::info
|
|
17
|
+
All the information on page applies to Vendure v3.3+
|
|
18
|
+
|
|
19
|
+
For older versions, there is no built-in support for scheduled tasks, but you can
|
|
20
|
+
instead use a [stand-alone script](/guides/developer-guide/stand-alone-scripts/) triggered by a cron job.
|
|
21
|
+
:::
|
|
22
|
+
|
|
23
|
+
## Setting up the DefaultSchedulerPlugin
|
|
24
|
+
|
|
25
|
+
In your Vendure config, import and add the [DefaultSchedulerPlugin](/reference/typescript-api/scheduled-tasks/default-scheduler-plugin) to your
|
|
26
|
+
plugins array. If you created your project with a version newer than v3.3, this should already be configured.
|
|
27
|
+
|
|
28
|
+
```ts title="vendure-config.ts"
|
|
29
|
+
import { DefaultSchedulerPlugin, VendureConfig } from '@vendure/core';
|
|
30
|
+
|
|
31
|
+
export const config: VendureConfig = {
|
|
32
|
+
// ...
|
|
33
|
+
plugins: [DefaultSchedulerPlugin.init()],
|
|
34
|
+
};
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
When you first add this plugin to your config, you'll need to [generate a migration](/guides/developer-guide/migrations/) because the
|
|
38
|
+
plugin will make use of a new database table in order to guarantee only-once execution of tasks.
|
|
39
|
+
|
|
40
|
+
You can then start adding tasks. Vendure ships with a task that will clean up old sessions from the database.
|
|
41
|
+
|
|
42
|
+
:::note
|
|
43
|
+
The `cleanSessionsTask` task is actually configured by default from v3.3+, so normally you won't have to specify this
|
|
44
|
+
manually unless you wish to change any of the default configuration using the `.configure()` method.
|
|
45
|
+
:::
|
|
46
|
+
|
|
47
|
+
```ts title="vendure-config.ts"
|
|
48
|
+
import { cleanSessionsTask, DefaultSchedulerPlugin, VendureConfig } from '@vendure/core';
|
|
49
|
+
|
|
50
|
+
export const config: VendureConfig = {
|
|
51
|
+
// ...
|
|
52
|
+
schedulerOptions: {
|
|
53
|
+
tasks: [
|
|
54
|
+
// Use the task as is
|
|
55
|
+
cleanSessionsTask,
|
|
56
|
+
// or further configure the task
|
|
57
|
+
cleanSessionsTask.configure({
|
|
58
|
+
// Run the task every day at 3:00am
|
|
59
|
+
// The default schedule is every day at 00:00am
|
|
60
|
+
schedule: cron => cron.everyDayAt(3, 0),
|
|
61
|
+
params: {
|
|
62
|
+
// How many sessions to process in each batch
|
|
63
|
+
// Default: 10_000
|
|
64
|
+
batchSize: 5_000,
|
|
65
|
+
},
|
|
66
|
+
}),
|
|
67
|
+
],
|
|
68
|
+
},
|
|
69
|
+
plugins: [DefaultSchedulerPlugin.init()],
|
|
70
|
+
};
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## Creating a Scheduled Task
|
|
74
|
+
|
|
75
|
+
Let's imagine that you have created a `SitemapPlugin` that exposes a `SitemapService` which generates a sitemap for your store. You want to run this
|
|
76
|
+
task every night at midnight.
|
|
77
|
+
|
|
78
|
+
Inside the plugin, you would first define a new [ScheduledTask](/reference/typescript-api/scheduled-tasks/scheduled-task) instance:
|
|
79
|
+
|
|
80
|
+
```ts title="/plugins/sitemap/config/generate-sitemap-task.ts"
|
|
81
|
+
import { ScheduledTask, RequestContextService } from '@vendure/core';
|
|
82
|
+
|
|
83
|
+
import { SitemapService } from '../services/sitemap.service';
|
|
84
|
+
|
|
85
|
+
export const generateSitemapTask = new ScheduledTask({
|
|
86
|
+
// Give your task a unique ID
|
|
87
|
+
id: 'generate-sitemap',
|
|
88
|
+
// A human-readable description of the task
|
|
89
|
+
description: 'Generates a sitemap file',
|
|
90
|
+
// Params can be used to further configure aspects of the
|
|
91
|
+
// task. They get passed in to the `execute` function as the
|
|
92
|
+
// second argument.
|
|
93
|
+
// They can be later modified using the `.configure()` method on the instance
|
|
94
|
+
params: {
|
|
95
|
+
shopBaseUrl: 'https://www.myshop.com',
|
|
96
|
+
},
|
|
97
|
+
// Define a default schedule. This can be modified using the
|
|
98
|
+
// `.configure()` method on the instance later.
|
|
99
|
+
schedule: cron => cron.everyDayAt(0, 0),
|
|
100
|
+
// This is the function that will be executed per the schedule.
|
|
101
|
+
async execute({injector, params}) {
|
|
102
|
+
// Using `injector.get()` we can grab an instance of _any_ provider defined in the
|
|
103
|
+
// Vendure core as well as by our plugins.
|
|
104
|
+
const sitemapService = injector.get(SitemapService);
|
|
105
|
+
|
|
106
|
+
// For most service methods, we'll need to pass a RequestContext object.
|
|
107
|
+
// We can use the RequestContextService to create one.
|
|
108
|
+
const ctx = await injector.get(RequestContextService).create({
|
|
109
|
+
apiType: 'admin',
|
|
110
|
+
});
|
|
111
|
+
|
|
112
|
+
// Here's the actual work we want to perform.
|
|
113
|
+
const result = await sitemapService.generateSitemap(ctx);
|
|
114
|
+
|
|
115
|
+
// The return value from the `execute` function will be available
|
|
116
|
+
// as the `lastResult` property when viewing tasks.
|
|
117
|
+
return { result };
|
|
118
|
+
},
|
|
119
|
+
});
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
## Using a task
|
|
123
|
+
|
|
124
|
+
Now that the task has been defined, we need to tell Vendure to use it.
|
|
125
|
+
|
|
126
|
+
To do so we need to add it to the [schedulerOptions.tasks](/reference/typescript-api/scheduled-tasks/scheduler-options#tasks) array.
|
|
127
|
+
|
|
128
|
+
### Adding directly in Vendure config
|
|
129
|
+
|
|
130
|
+
This can be done directly in your Vendure config file:
|
|
131
|
+
|
|
132
|
+
```ts title="vendure-config.ts"
|
|
133
|
+
import { cleanSessionsTask, DefaultSchedulerPlugin, VendureConfig } from '@vendure/core';
|
|
134
|
+
|
|
135
|
+
// highlight-next-line
|
|
136
|
+
import { SitemapPlugin, generateSitemapTask } from './plugins/sitemap';
|
|
137
|
+
|
|
138
|
+
export const config: VendureConfig = {
|
|
139
|
+
// ...
|
|
140
|
+
schedulerOptions: {
|
|
141
|
+
tasks: [
|
|
142
|
+
cleanSessionsTask,
|
|
143
|
+
// highlight-start
|
|
144
|
+
// Here's an example of overriding the
|
|
145
|
+
// default params using the `configure()` method.
|
|
146
|
+
generateSitemapTask.configure({
|
|
147
|
+
params: {
|
|
148
|
+
shopBaseUrl: 'https://www.shoes.com'
|
|
149
|
+
}
|
|
150
|
+
}),
|
|
151
|
+
// highlight-end
|
|
152
|
+
],
|
|
153
|
+
},
|
|
154
|
+
plugins: [
|
|
155
|
+
// highlight-next-line
|
|
156
|
+
SitemapPlugin,
|
|
157
|
+
DefaultSchedulerPlugin.init()
|
|
158
|
+
],
|
|
159
|
+
};
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
### Adding in plugin configuration function
|
|
163
|
+
|
|
164
|
+
An alternative is that a plugin can automatically add the task to the config using the
|
|
165
|
+
plugin's [configuration function](/reference/typescript-api/plugin/vendure-plugin-metadata#configuration), which allows plugins to alter the Vendure config.
|
|
166
|
+
|
|
167
|
+
This allows a plugin to encapsulate any scheduled tasks so that the plugin consumer only needs to add the plugin, and not worry about
|
|
168
|
+
separately adding the task to the tasks array.
|
|
169
|
+
|
|
170
|
+
```ts title="src/plugins/sitemap/sitemap.plugin.ts"
|
|
171
|
+
import { VendurePlugin, PluginCommonModule, Type, ScheduledTask, VendureConfig } from '@vendure/core';
|
|
172
|
+
|
|
173
|
+
import { PLUGIN_OPTIONS } from './constants';
|
|
174
|
+
import { SitemapPluginOptions } from './types';
|
|
175
|
+
import { SitemapService } from './services/sitemap.service';
|
|
176
|
+
import { generateSitemapTask } from './config/generate-sitemap-task';
|
|
177
|
+
|
|
178
|
+
@VendurePlugin({
|
|
179
|
+
imports: [PluginCommonModule],
|
|
180
|
+
providers: [SitemapService],
|
|
181
|
+
configuration: (config: VendureConfig) => {
|
|
182
|
+
// highlight-start
|
|
183
|
+
// Add the task to the schedulerOptions.tasks array
|
|
184
|
+
config.schedulerOptions.tasks.push(
|
|
185
|
+
generateSitemapTask.configure({
|
|
186
|
+
params: {
|
|
187
|
+
shopBaseUrl: SitemapPlugin.options.shopBaseUrl,
|
|
188
|
+
}
|
|
189
|
+
})
|
|
190
|
+
);
|
|
191
|
+
// highlight-end
|
|
192
|
+
return config;
|
|
193
|
+
},
|
|
194
|
+
})
|
|
195
|
+
export class SitemapPlugin {
|
|
196
|
+
static options: SitemapPluginOptions;
|
|
197
|
+
|
|
198
|
+
static init(options?: SitemapPluginOptions) {
|
|
199
|
+
this.options = {
|
|
200
|
+
shopBaseUrl: '',
|
|
201
|
+
...(options ?? {}),
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
This plugin can now be consumed like this:
|
|
208
|
+
|
|
209
|
+
```ts title="vendure-config.ts"
|
|
210
|
+
import { DefaultSchedulerPlugin, VendureConfig } from '@vendure/core';
|
|
211
|
+
|
|
212
|
+
// highlight-next-line
|
|
213
|
+
import { SitemapPlugin } from './plugins/sitemap';
|
|
214
|
+
|
|
215
|
+
export const config: VendureConfig = {
|
|
216
|
+
// ...
|
|
217
|
+
plugins: [
|
|
218
|
+
// highlight-start
|
|
219
|
+
SitemapPlugin.init({
|
|
220
|
+
shopBaseUrl: 'https://www.shoes.com'
|
|
221
|
+
}),
|
|
222
|
+
// highlight-end
|
|
223
|
+
DefaultSchedulerPlugin.init()
|
|
224
|
+
],
|
|
225
|
+
};
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
## How scheduled tasks work
|
|
229
|
+
|
|
230
|
+
The key problems solved by Vendure's task scheduler are:
|
|
231
|
+
|
|
232
|
+
- Ensuring that a task is only run a single time per scheduled execution, even when you have multiple instances of servers and workers running.
|
|
233
|
+
- Keeping scheduled task work away from the server instances, so that it does not affect API responsiveness.
|
|
234
|
+
|
|
235
|
+
The first problem is handled by the [SchedulerStrategy](/reference/typescript-api/scheduled-tasks/scheduler-strategy), which implements a locking
|
|
236
|
+
mechanism to ensure that the task is executed only once.
|
|
237
|
+
|
|
238
|
+
The second problem is handled by having tasks only executed on worker processes.
|
|
239
|
+
|
|
240
|
+
## Scheduled tasks vs job queue
|
|
241
|
+
|
|
242
|
+
There is some overlap between the use of a scheduled task and a [job queue job](/guides/developer-guide/worker-job-queue/). They both perform some
|
|
243
|
+
task on the worker, independent of requests coming in to the server.
|
|
244
|
+
|
|
245
|
+
The first difference is that jobs must be triggered explicitly, whereas scheduled tasks are triggered automatically according to the schedule.
|
|
246
|
+
|
|
247
|
+
Secondly, jobs are put in a _queue_ and executed once any prior pending jobs have been processed. On the other hand, scheduled tasks are executed
|
|
248
|
+
as soon as the schedule dictates.
|
|
249
|
+
|
|
250
|
+
It is possible to combine the two: namely, you can define a scheduled task which adds a job to the job queue. This is, for instance, how the
|
|
251
|
+
built-in [cleanSessionsTask](/reference/typescript-api/scheduled-tasks/clean-sessions-task) works. This pattern is something you should
|
|
252
|
+
consider if the scheduled task may take a significant amount of time or resources and you want to let the job queue manage that.
|
|
253
|
+
|
|
254
|
+
It also has the advantage of giving you a record of results for that work that has been put on the job queue, whereas scheduled tasks
|
|
255
|
+
only record that result of the last execution.
|
|
256
|
+
|
|
257
|
+
|
|
258
|
+
## A note on @nestjs/schedule
|
|
259
|
+
|
|
260
|
+
NestJS provides a [dedicated package for scheduling tasks](https://docs.nestjs.com/techniques/task-scheduling), called `@nestjs/schedule`.
|
|
261
|
+
|
|
262
|
+
You can also use this approach to schedule tasks, but you need to aware of a very important caveat:
|
|
263
|
+
|
|
264
|
+
:::warning
|
|
265
|
+
When using `@nestjs/schedule`, any method decorated with the `@Cron()` decorator will run
|
|
266
|
+
on _all_ instances of the application. This means it will run on the server _and_ on the
|
|
267
|
+
worker. If you are running multiple instances, then it will run on all instances.
|
|
268
|
+
|
|
269
|
+
This is the specific issue solved by the built-in ScheduledTask system described above.
|
|
270
|
+
Therefore it is not recommended to use the `@nestjs/schedule` package under normal
|
|
271
|
+
circumstances.
|
|
272
|
+
:::
|
|
273
|
+
|
|
274
|
+
You can, for instance, inject the [ProcessContext](/reference/typescript-api/common/process-context) into the service and check if the current instance is the worker or the server.
|
|
275
|
+
|
|
276
|
+
```ts
|
|
277
|
+
import { Injectable } from '@nestjs/common';
|
|
278
|
+
import { Cron } from '@nestjs/schedule';
|
|
279
|
+
|
|
280
|
+
@Injectable()
|
|
281
|
+
export class SitemapService {
|
|
282
|
+
constructor(private processContext: ProcessContext) {}
|
|
283
|
+
|
|
284
|
+
@Cron('0 0 * * *')
|
|
285
|
+
async generateSitemap() {
|
|
286
|
+
// highlight-start
|
|
287
|
+
if (this.processContext.isWorker) {
|
|
288
|
+
// Only run on the worker
|
|
289
|
+
await this.triggerGenerate();
|
|
290
|
+
}
|
|
291
|
+
// highlight-end
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
The above code will run the `generateSitemap()` method every night at midnight, but only on the worker instance.
|
|
297
|
+
|
|
298
|
+
Again, if you have multiple worker instances running, it would run on all instances.
|
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Security"
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
Security of your Vendure application includes considering how to prevent and protect against common security threats such as:
|
|
6
|
+
|
|
7
|
+
- Data breaches
|
|
8
|
+
- Unauthorized access
|
|
9
|
+
- Attacks aimed at disrupting the service
|
|
10
|
+
|
|
11
|
+
Vendure itself is designed with security in mind, but you must also consider the security of your own application code, the server environment, and the network architecture.
|
|
12
|
+
|
|
13
|
+
## Basics
|
|
14
|
+
|
|
15
|
+
Here are some basic measures you should use to secure your Vendure application. These are not exhaustive, but they are a good starting point.
|
|
16
|
+
|
|
17
|
+
### Change the default credentials
|
|
18
|
+
|
|
19
|
+
Do not deploy any public Vendure instance with the default superadmin credentials (`superadmin:superadmin`). Use your hosting platform's environment variables to set a **strong** password for the Superadmin account.
|
|
20
|
+
|
|
21
|
+
```ts
|
|
22
|
+
import { VendureConfig } from '@vendure/core';
|
|
23
|
+
|
|
24
|
+
export const config: VendureConfig = {
|
|
25
|
+
authOptions: {
|
|
26
|
+
tokenMethod: ['bearer', 'cookie'],
|
|
27
|
+
superadminCredentials: {
|
|
28
|
+
identifier: process.env.SUPERADMIN_USERNAME,
|
|
29
|
+
password: process.env.SUPERADMIN_PASSWORD,
|
|
30
|
+
},
|
|
31
|
+
},
|
|
32
|
+
// ...
|
|
33
|
+
};
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### Use the HardenPlugin
|
|
37
|
+
|
|
38
|
+
It is recommended that you install and configure the [HardenPlugin](/reference/core-plugins/harden-plugin/) for all production deployments. This plugin locks down your schema
|
|
39
|
+
(disabling introspection and field suggestions) and protects your Shop API against malicious queries that could otherwise overwhelm your server.
|
|
40
|
+
|
|
41
|
+
Install the plugin:
|
|
42
|
+
|
|
43
|
+
```sh
|
|
44
|
+
npm install @vendure/harden-plugin
|
|
45
|
+
|
|
46
|
+
# or
|
|
47
|
+
|
|
48
|
+
yarn add @vendure/harden-plugin
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Then add it to your VendureConfig:
|
|
52
|
+
|
|
53
|
+
```ts
|
|
54
|
+
import { VendureConfig } from '@vendure/core';
|
|
55
|
+
import { HardenPlugin } from '@vendure/harden-plugin';
|
|
56
|
+
|
|
57
|
+
const IS_DEV = process.env.APP_ENV === 'dev';
|
|
58
|
+
|
|
59
|
+
export const config: VendureConfig = {
|
|
60
|
+
// ...
|
|
61
|
+
plugins: [
|
|
62
|
+
HardenPlugin.init({
|
|
63
|
+
maxQueryComplexity: 500,
|
|
64
|
+
apiMode: IS_DEV ? 'dev' : 'prod',
|
|
65
|
+
}),
|
|
66
|
+
// ...
|
|
67
|
+
]
|
|
68
|
+
};
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
:::info
|
|
72
|
+
For a detailed explanation of how to best configure this plugin, see the [HardenPlugin docs](/reference/core-plugins/harden-plugin/).
|
|
73
|
+
:::
|
|
74
|
+
|
|
75
|
+
### Harden the AssetServerPlugin
|
|
76
|
+
|
|
77
|
+
If you are using the [AssetServerPlugin](/reference/core-plugins/asset-server-plugin/), it is possible by default to use the dynamic
|
|
78
|
+
image transform feature to overload the server with requests for new image sizes & formats. To prevent this, you can
|
|
79
|
+
configure the plugin to only allow transformations for the preset sizes, and limited quality levels and formats.
|
|
80
|
+
Since v3.1 we ship the [PresetOnlyStrategy](/reference/core-plugins/asset-server-plugin/preset-only-strategy/) for this purpose, and
|
|
81
|
+
you can also create your own strategies.
|
|
82
|
+
|
|
83
|
+
```ts
|
|
84
|
+
import { VendureConfig } from '@vendure/core';
|
|
85
|
+
import { AssetServerPlugin, PresetOnlyStrategy } from '@vendure/asset-server-plugin';
|
|
86
|
+
|
|
87
|
+
export const config: VendureConfig = {
|
|
88
|
+
// ...
|
|
89
|
+
plugins: [
|
|
90
|
+
AssetServerPlugin.init({
|
|
91
|
+
// ...
|
|
92
|
+
// highlight-start
|
|
93
|
+
imageTransformStrategy: new PresetOnlyStrategy({
|
|
94
|
+
defaultPreset: 'large',
|
|
95
|
+
permittedQuality: [0, 50, 75, 85, 95],
|
|
96
|
+
permittedFormats: ['jpg', 'webp', 'avif'],
|
|
97
|
+
allowFocalPoint: false,
|
|
98
|
+
}),
|
|
99
|
+
// highlight-end
|
|
100
|
+
}),
|
|
101
|
+
]
|
|
102
|
+
};
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
## OWASP Top Ten Security Assessment
|
|
106
|
+
|
|
107
|
+
The Open Worldwide Application Security Project (OWASP) is a nonprofit foundation that works to improve the security of software.
|
|
108
|
+
|
|
109
|
+
It publishes a top 10 list of common web application vulnerabilities: https://owasp.org/Top10
|
|
110
|
+
|
|
111
|
+
This section assesses Vendure against this list, stating what is covered **out of the box** (built in to the framework or easily configurable) and what needs to be **additionally considered.**
|
|
112
|
+
|
|
113
|
+
### 1. Broken Access Control
|
|
114
|
+
|
|
115
|
+
Reference: https://owasp.org/Top10/A01_2021-Broken_Access_Control/
|
|
116
|
+
|
|
117
|
+
Out of the box:
|
|
118
|
+
|
|
119
|
+
- Vendure uses role-based access control
|
|
120
|
+
- We deny by default for non-public API requests
|
|
121
|
+
- Built-in CORS controls for session cookies
|
|
122
|
+
- Directory listing is not possible via default configuration (e.g. exposing web root dir contents)
|
|
123
|
+
- Stateful session identifiers should be invalidated on the server after logout. On logout we delete all session records from the DB & session cache.
|
|
124
|
+
|
|
125
|
+
To consider:
|
|
126
|
+
|
|
127
|
+
- Rate limit API and controller access to minimize the harm from automated attack tooling.
|
|
128
|
+
|
|
129
|
+
### 2. Cryptographic Failures
|
|
130
|
+
|
|
131
|
+
Reference: https://owasp.org/Top10/A02_2021-Cryptographic_Failures/
|
|
132
|
+
|
|
133
|
+
Out of the box:
|
|
134
|
+
|
|
135
|
+
- Vendure defaults to bcrypt with 12 salt rounds for storing passwords. This strategy is configurable if security requirements mandate alternative algorithms.
|
|
136
|
+
- No deprecated hash functions (SHA1, MD5) are used in security-related contexts (only for things like creating cache keys).
|
|
137
|
+
- Payment information is not stored in Vendure by default. Payment integrations rely on the payment provider to store all sensitive data.
|
|
138
|
+
|
|
139
|
+
To consider:
|
|
140
|
+
|
|
141
|
+
- The Vendure server will not use TLS be default. The usual configuration is to handle this at the gateway level on your production platform.
|
|
142
|
+
- If a network caching layer is used (e.g. Stellate), ensure it is configured to not cache user-related data (customer details, active order etc)
|
|
143
|
+
|
|
144
|
+
### 3. Injection
|
|
145
|
+
|
|
146
|
+
Reference: https://owasp.org/Top10/A03_2021-Injection/
|
|
147
|
+
|
|
148
|
+
Out of the box:
|
|
149
|
+
|
|
150
|
+
- GraphQL has built-in validation of incoming data
|
|
151
|
+
- All database operations are parameterized - no string concatenation using user-supplied data.
|
|
152
|
+
- List queries apply default limits to prevent mass disclosure of records.
|
|
153
|
+
|
|
154
|
+
To consider:
|
|
155
|
+
|
|
156
|
+
- If using custom fields, you should consider defining a validation function to prevent bad data from getting into the database.
|
|
157
|
+
|
|
158
|
+
### 4. Insecure Design
|
|
159
|
+
|
|
160
|
+
Reference: https://owasp.org/Top10/A04_2021-Insecure_Design/
|
|
161
|
+
|
|
162
|
+
Out of the box:
|
|
163
|
+
|
|
164
|
+
- Use of established libraries for the critical underlying components: NestJS, TypeORM, Angular.
|
|
165
|
+
- End-to-end tests of security-related flows such as authentication, verification, and RBAC permissions controls.
|
|
166
|
+
- Harden plugin provides pre-configured protections against common attack vectors targeting GraphQL APIs.
|
|
167
|
+
|
|
168
|
+
To consider:
|
|
169
|
+
|
|
170
|
+
- Tiered exposure such as an API gateway which prevents exposure of the Admin API to the public internet.
|
|
171
|
+
- Limit resource usage of Vendure server & worker instances via containerization.
|
|
172
|
+
- Rate limiting & other network-level protections (such as Cloudflare) should be considered.
|
|
173
|
+
|
|
174
|
+
### 5. Security Misconfiguration
|
|
175
|
+
|
|
176
|
+
Reference: https://owasp.org/Top10/A05_2021-Security_Misconfiguration/
|
|
177
|
+
|
|
178
|
+
Out of the box:
|
|
179
|
+
|
|
180
|
+
- Single point of configuration for the entire application, reducing the chance of misconfiguration.
|
|
181
|
+
- A default setup only requires a database, which means there are few components to configure and harden.
|
|
182
|
+
- Stack traces are not leaked in API errors
|
|
183
|
+
|
|
184
|
+
To consider:
|
|
185
|
+
|
|
186
|
+
- Ensure the default superadmin credentials are not used in production
|
|
187
|
+
- Use environment variables to turn off development features such as the GraphQL playground
|
|
188
|
+
- Use the HardenPlugin in production to automatically turn of development features and restrict system information leaking via API.
|
|
189
|
+
- Use fine-grained permissions and roles for your administrator accounts to reduce the attack surface if an account is compromised.
|
|
190
|
+
|
|
191
|
+
### 6. Vulnerable and Outdated Components
|
|
192
|
+
|
|
193
|
+
Reference: https://owasp.org/Top10/A06_2021-Vulnerable_and_Outdated_Components/
|
|
194
|
+
|
|
195
|
+
Out of the box:
|
|
196
|
+
|
|
197
|
+
- All dependencies are updated to current versions with each minor release
|
|
198
|
+
- Modular design limits the number of dependencies for core packages.
|
|
199
|
+
- Automated code & dependency scanning is used in the Vendure repo
|
|
200
|
+
|
|
201
|
+
To consider:
|
|
202
|
+
|
|
203
|
+
- Run your own audits on your code base.
|
|
204
|
+
- Use version override mechanisms if needed to patch and critical Vendure dependencies that did not yet get updated.
|
|
205
|
+
|
|
206
|
+
### 7. Identification and Authentication Failures
|
|
207
|
+
|
|
208
|
+
Reference: https://owasp.org/Top10/A07_2021-Identification_and_Authentication_Failures/
|
|
209
|
+
|
|
210
|
+
Out of the box:
|
|
211
|
+
|
|
212
|
+
- Valid usernames are not leaked via mechanisms such as account reset
|
|
213
|
+
- Does not permit "knowlege-based" account recovery
|
|
214
|
+
- Uses strong password hashing (bcrypt with 12 salt rounds)
|
|
215
|
+
- Session identifiers are not exposed in API urls (instead we use headers/cookies)
|
|
216
|
+
- New session tokens always regenerated after successful login
|
|
217
|
+
- Sessions deleted during logout
|
|
218
|
+
- Cryptographically-strong, high-entropy session tokens are used (crypto.randomBytes API)
|
|
219
|
+
|
|
220
|
+
To consider:
|
|
221
|
+
|
|
222
|
+
- Implementing a multi-factor authentication flow
|
|
223
|
+
- Do not use default superadmin credentials in production
|
|
224
|
+
- Implementing a custom PasswordValidationStrategy to disallow weak/common passwords
|
|
225
|
+
- Subscribe to AttemptedLoginEvent to implement detection of brute-force attacks
|
|
226
|
+
|
|
227
|
+
### 8. Software and Data Integrity Failures
|
|
228
|
+
|
|
229
|
+
Reference: https://owasp.org/Top10/A08_2021-Software_and_Data_Integrity_Failures/
|
|
230
|
+
|
|
231
|
+
To consider:
|
|
232
|
+
|
|
233
|
+
- Exercise caution when introducing new dependencies to your project.
|
|
234
|
+
- Do not use untrusted Vendure plugins. Where possible review the code prior to use.
|
|
235
|
+
- Exercise caution if using auto-updating mechanisms for dependencies.
|
|
236
|
+
- If storing serialized data in custom fields, implement validation to prevent untrusted data getting into the database.
|
|
237
|
+
- Evaluate your CI/CD pipeline against the OWASP recommendations for this point
|
|
238
|
+
|
|
239
|
+
### 9. Security Logging and Monitoring Failures
|
|
240
|
+
|
|
241
|
+
Reference: https://owasp.org/Top10/A09_2021-Security_Logging_and_Monitoring_Failures/
|
|
242
|
+
|
|
243
|
+
Out of the box:
|
|
244
|
+
|
|
245
|
+
- APIs for integrating logging & monitoring tools & services, e.g. configurable Logger interface & ErrorHandlerStrategy
|
|
246
|
+
- Official Sentry integration for application performance monitoring
|
|
247
|
+
|
|
248
|
+
To consider:
|
|
249
|
+
|
|
250
|
+
- Integrate with dedicated logging tools for improved log management
|
|
251
|
+
- Integrate with monitoring tools such as Sentry
|
|
252
|
+
- Use the EventBus to monitor events such as repeated failed login attempts and high-value orders
|
|
253
|
+
|
|
254
|
+
### 10. Server-Side Request Forgery (SSRF)
|
|
255
|
+
|
|
256
|
+
Reference: [https://owasp.org/Top10/A10_2021-Server-Side_Request_Forgery_(SSRF)/](https://owasp.org/Top10/A10_2021-Server-Side_Request_Forgery_%28SSRF%29/)
|
|
257
|
+
|
|
258
|
+
Out of the box:
|
|
259
|
+
|
|
260
|
+
- By default Vendure does not rely on requests to remote servers for core functionality
|
|
261
|
+
|
|
262
|
+
To consider:
|
|
263
|
+
|
|
264
|
+
- Review the OWASP recommendations against your network architecture
|