@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.
Files changed (968) hide show
  1. package/dist/index.d.ts +3 -0
  2. package/dist/index.d.ts.map +1 -0
  3. package/dist/index.js +2 -0
  4. package/dist/index.js.map +1 -0
  5. package/dist/manifest.d.ts +3 -0
  6. package/dist/manifest.d.ts.map +1 -0
  7. package/dist/manifest.js +857 -0
  8. package/dist/manifest.js.map +1 -0
  9. package/docs/guides/core-concepts/auth/admin-role.webp +0 -0
  10. package/docs/guides/core-concepts/auth/admin.webp +0 -0
  11. package/docs/guides/core-concepts/auth/customer.webp +0 -0
  12. package/docs/guides/core-concepts/auth/index.md +557 -0
  13. package/docs/guides/core-concepts/auth/roles.webp +0 -0
  14. package/docs/guides/core-concepts/channels/channel-token.webp +0 -0
  15. package/docs/guides/core-concepts/channels/channels.webp +0 -0
  16. package/docs/guides/core-concepts/channels/channels_currencies_diagram.png +0 -0
  17. package/docs/guides/core-concepts/channels/channels_diagram.png +0 -0
  18. package/docs/guides/core-concepts/channels/channels_prices_diagram.png +0 -0
  19. package/docs/guides/core-concepts/channels/default-currency.webp +0 -0
  20. package/docs/guides/core-concepts/channels/index.md +154 -0
  21. package/docs/guides/core-concepts/channels/variant-prices.webp +0 -0
  22. package/docs/guides/core-concepts/collections/collection-filters.webp +0 -0
  23. package/docs/guides/core-concepts/collections/collections.webp +0 -0
  24. package/docs/guides/core-concepts/collections/filter-inheritance.webp +0 -0
  25. package/docs/guides/core-concepts/collections/index.mdx +125 -0
  26. package/docs/guides/core-concepts/customers/customer.webp +0 -0
  27. package/docs/guides/core-concepts/customers/index.mdx +21 -0
  28. package/docs/guides/core-concepts/email/email-plugin-flow.webp +0 -0
  29. package/docs/guides/core-concepts/email/index.mdx +155 -0
  30. package/docs/guides/core-concepts/images-assets/asset-flow.webp +0 -0
  31. package/docs/guides/core-concepts/images-assets/asset-tags.webp +0 -0
  32. package/docs/guides/core-concepts/images-assets/index.mdx +42 -0
  33. package/docs/guides/core-concepts/money/index.mdx +246 -0
  34. package/docs/guides/core-concepts/orders/custom-order-ui.webp +0 -0
  35. package/docs/guides/core-concepts/orders/index.md +366 -0
  36. package/docs/guides/core-concepts/orders/order-process.webp +0 -0
  37. package/docs/guides/core-concepts/orders/order.webp +0 -0
  38. package/docs/guides/core-concepts/payment/index.md +410 -0
  39. package/docs/guides/core-concepts/payment/payment-method.webp +0 -0
  40. package/docs/guides/core-concepts/payment/payment_sequence_one_step.png +0 -0
  41. package/docs/guides/core-concepts/payment/payment_sequence_two_step.png +0 -0
  42. package/docs/guides/core-concepts/products/facets.webp +0 -0
  43. package/docs/guides/core-concepts/products/index.mdx +59 -0
  44. package/docs/guides/core-concepts/products/product-relations.webp +0 -0
  45. package/docs/guides/core-concepts/products/products-variants.webp +0 -0
  46. package/docs/guides/core-concepts/promotions/index.md +324 -0
  47. package/docs/guides/core-concepts/shipping/index.md +225 -0
  48. package/docs/guides/core-concepts/shipping/shipping-method.webp +0 -0
  49. package/docs/guides/core-concepts/stock-control/global-stock-control.webp +0 -0
  50. package/docs/guides/core-concepts/stock-control/index.md +233 -0
  51. package/docs/guides/core-concepts/stock-control/stock-levels.webp +0 -0
  52. package/docs/guides/core-concepts/taxes/index.mdx +76 -0
  53. package/docs/guides/deployment/deploy-to-digital-ocean-app-platform/01-create-space.webp +0 -0
  54. package/docs/guides/deployment/deploy-to-digital-ocean-app-platform/02-space-access-keys.webp +0 -0
  55. package/docs/guides/deployment/deploy-to-digital-ocean-app-platform/03-create-app.webp +0 -0
  56. package/docs/guides/deployment/deploy-to-digital-ocean-app-platform/04-configure-server.webp +0 -0
  57. package/docs/guides/deployment/deploy-to-digital-ocean-app-platform/05-open-server-settings.webp +0 -0
  58. package/docs/guides/deployment/deploy-to-digital-ocean-app-platform/06-admin-app-route.webp +0 -0
  59. package/docs/guides/deployment/deploy-to-digital-ocean-app-platform/07-open-app.webp +0 -0
  60. package/docs/guides/deployment/deploy-to-digital-ocean-app-platform/deploy-to-do-app-platform.webp +0 -0
  61. package/docs/guides/deployment/deploy-to-digital-ocean-app-platform/index.md +246 -0
  62. package/docs/guides/deployment/deploy-to-google-cloud-run/deploy-to-gcr.webp +0 -0
  63. package/docs/guides/deployment/deploy-to-google-cloud-run/index.md +53 -0
  64. package/docs/guides/deployment/deploy-to-northflank/01-create-template-screen.webp +0 -0
  65. package/docs/guides/deployment/deploy-to-northflank/02-paste-config.webp +0 -0
  66. package/docs/guides/deployment/deploy-to-northflank/03-run-template.webp +0 -0
  67. package/docs/guides/deployment/deploy-to-northflank/04-find-project.webp +0 -0
  68. package/docs/guides/deployment/deploy-to-northflank/05-server-service.webp +0 -0
  69. package/docs/guides/deployment/deploy-to-northflank/06-find-url.webp +0 -0
  70. package/docs/guides/deployment/deploy-to-northflank/deploy-to-northflank.webp +0 -0
  71. package/docs/guides/deployment/deploy-to-northflank/index.md +606 -0
  72. package/docs/guides/deployment/deploy-to-railway/01-new-service.webp +0 -0
  73. package/docs/guides/deployment/deploy-to-railway/02-env-vars.webp +0 -0
  74. package/docs/guides/deployment/deploy-to-railway/03-test-server.webp +0 -0
  75. package/docs/guides/deployment/deploy-to-railway/deploy-to-railway.webp +0 -0
  76. package/docs/guides/deployment/deploy-to-railway/index.md +202 -0
  77. package/docs/guides/deployment/deploy-to-render/01-create-db.webp +0 -0
  78. package/docs/guides/deployment/deploy-to-render/02-env-group.webp +0 -0
  79. package/docs/guides/deployment/deploy-to-render/03-db-connection.webp +0 -0
  80. package/docs/guides/deployment/deploy-to-render/04-link-env-group.webp +0 -0
  81. package/docs/guides/deployment/deploy-to-render/05-server-url.webp +0 -0
  82. package/docs/guides/deployment/deploy-to-render/deploy-to-render.webp +0 -0
  83. package/docs/guides/deployment/deploy-to-render/index.md +221 -0
  84. package/docs/guides/deployment/deploying-admin-ui.md +130 -0
  85. package/docs/guides/deployment/getting-data-into-production.md +50 -0
  86. package/docs/guides/deployment/horizontal-scaling.md +75 -0
  87. package/docs/guides/deployment/production-configuration/env-var-ui.webp +0 -0
  88. package/docs/guides/deployment/production-configuration/index.md +140 -0
  89. package/docs/guides/deployment/server-resource-requirements.md +29 -0
  90. package/docs/guides/deployment/using-docker.md +193 -0
  91. package/docs/guides/developer-guide/cache/cache-service.webp +0 -0
  92. package/docs/guides/developer-guide/cache/index.mdx +327 -0
  93. package/docs/guides/developer-guide/channel-aware/index.md +117 -0
  94. package/docs/guides/developer-guide/cli/add-command.webp +0 -0
  95. package/docs/guides/developer-guide/cli/index.md +418 -0
  96. package/docs/guides/developer-guide/cli/migrate-command.webp +0 -0
  97. package/docs/guides/developer-guide/cli/schema-command.webp +0 -0
  98. package/docs/guides/developer-guide/configuration/index.md +226 -0
  99. package/docs/guides/developer-guide/custom-fields/custom-fields-data-table.webp +0 -0
  100. package/docs/guides/developer-guide/custom-fields/custom-fields-ui.webp +0 -0
  101. package/docs/guides/developer-guide/custom-fields/index.md +1423 -0
  102. package/docs/guides/developer-guide/custom-permissions/index.md +186 -0
  103. package/docs/guides/developer-guide/custom-strategies-in-plugins/index.mdx +467 -0
  104. package/docs/guides/developer-guide/database-entity/index.md +136 -0
  105. package/docs/guides/developer-guide/dataloaders/index.md +137 -0
  106. package/docs/guides/developer-guide/db-subscribers/index.md +115 -0
  107. package/docs/guides/developer-guide/error-handling/index.mdx +324 -0
  108. package/docs/guides/developer-guide/events/index.mdx +406 -0
  109. package/docs/guides/developer-guide/extend-graphql-api/index.md +501 -0
  110. package/docs/guides/developer-guide/has-custom-fields/index.md +174 -0
  111. package/docs/guides/developer-guide/importing-data/index.md +488 -0
  112. package/docs/guides/developer-guide/importing-data/reindex.webp +0 -0
  113. package/docs/guides/developer-guide/logging/index.md +77 -0
  114. package/docs/guides/developer-guide/migrating-from-v1/breaking-api-changes.md +213 -0
  115. package/docs/guides/developer-guide/migrating-from-v1/database-migration.md +39 -0
  116. package/docs/guides/developer-guide/migrating-from-v1/index.md +41 -0
  117. package/docs/guides/developer-guide/migrating-from-v1/storefront-migration.md +30 -0
  118. package/docs/guides/developer-guide/migrations/index.md +197 -0
  119. package/docs/guides/developer-guide/migrations/migration.webp +0 -0
  120. package/docs/guides/developer-guide/nest-devtools/index.md +74 -0
  121. package/docs/guides/developer-guide/nest-devtools/nest-devtools-bootstrap-perf.webp +0 -0
  122. package/docs/guides/developer-guide/nest-devtools/nest-devtools-graph.webp +0 -0
  123. package/docs/guides/developer-guide/overview/Vendure_docs-architecture.webp +0 -0
  124. package/docs/guides/developer-guide/overview/index.md +40 -0
  125. package/docs/guides/developer-guide/plugins/index.mdx +806 -0
  126. package/docs/guides/developer-guide/rest-endpoint/index.md +99 -0
  127. package/docs/guides/developer-guide/scheduled-tasks/index.md +298 -0
  128. package/docs/guides/developer-guide/security/index.md +264 -0
  129. package/docs/guides/developer-guide/settings-store/index.mdx +553 -0
  130. package/docs/guides/developer-guide/stand-alone-scripts/index.md +119 -0
  131. package/docs/guides/developer-guide/strategies-configurable-operations/collection-filters-args.webp +0 -0
  132. package/docs/guides/developer-guide/strategies-configurable-operations/collection-filters.webp +0 -0
  133. package/docs/guides/developer-guide/strategies-configurable-operations/index.mdx +373 -0
  134. package/docs/guides/developer-guide/testing/index.md +254 -0
  135. package/docs/guides/developer-guide/the-api-layer/Vendure_docs-api_request.webp +0 -0
  136. package/docs/guides/developer-guide/the-api-layer/index.mdx +474 -0
  137. package/docs/guides/developer-guide/the-service-layer/index.mdx +311 -0
  138. package/docs/guides/developer-guide/translatable/index.md +224 -0
  139. package/docs/guides/developer-guide/translations/index.md +165 -0
  140. package/docs/guides/developer-guide/updating/index.md +79 -0
  141. package/docs/guides/developer-guide/uploading-files/index.md +220 -0
  142. package/docs/guides/developer-guide/worker-job-queue/Vendure_docs-job-queue-2.webp +0 -0
  143. package/docs/guides/developer-guide/worker-job-queue/Vendure_docs-job-queue-3.webp +0 -0
  144. package/docs/guides/developer-guide/worker-job-queue/Vendure_docs-job-queue.webp +0 -0
  145. package/docs/guides/developer-guide/worker-job-queue/index.mdx +522 -0
  146. package/docs/guides/developer-guide/worker-job-queue/worker-job-queue.webp +0 -0
  147. package/docs/guides/extending-the-admin-ui/add-actions-to-pages/index.md +233 -0
  148. package/docs/guides/extending-the-admin-ui/add-actions-to-pages/ui-extensions-actionbar-dropdown.webp +0 -0
  149. package/docs/guides/extending-the-admin-ui/add-actions-to-pages/ui-extensions-actionbar.webp +0 -0
  150. package/docs/guides/extending-the-admin-ui/adding-ui-translations/index.md +113 -0
  151. package/docs/guides/extending-the-admin-ui/adding-ui-translations/ui-translations-01.webp +0 -0
  152. package/docs/guides/extending-the-admin-ui/admin-ui-theming-branding/index.md +133 -0
  153. package/docs/guides/extending-the-admin-ui/alerts/alerts-01.webp +0 -0
  154. package/docs/guides/extending-the-admin-ui/alerts/index.md +56 -0
  155. package/docs/guides/extending-the-admin-ui/bulk-actions/bulk-actions-screenshot.webp +0 -0
  156. package/docs/guides/extending-the-admin-ui/bulk-actions/index.md +78 -0
  157. package/docs/guides/extending-the-admin-ui/creating-detail-views/index.md +332 -0
  158. package/docs/guides/extending-the-admin-ui/creating-list-views/index.md +331 -0
  159. package/docs/guides/extending-the-admin-ui/custom-data-table-components/custom-data-table-location.webp +0 -0
  160. package/docs/guides/extending-the-admin-ui/custom-data-table-components/custom-data-table.webp +0 -0
  161. package/docs/guides/extending-the-admin-ui/custom-data-table-components/index.md +111 -0
  162. package/docs/guides/extending-the-admin-ui/custom-detail-components/detail-component.webp +0 -0
  163. package/docs/guides/extending-the-admin-ui/custom-detail-components/index.md +198 -0
  164. package/docs/guides/extending-the-admin-ui/custom-form-inputs/index.md +285 -0
  165. package/docs/guides/extending-the-admin-ui/custom-form-inputs/ui-extensions-custom-field-default.webp +0 -0
  166. package/docs/guides/extending-the-admin-ui/custom-form-inputs/ui-extensions-custom-field-slider.webp +0 -0
  167. package/docs/guides/extending-the-admin-ui/custom-timeline-components/index.md +79 -0
  168. package/docs/guides/extending-the-admin-ui/custom-timeline-components/timeline-entry.webp +0 -0
  169. package/docs/guides/extending-the-admin-ui/dashboard-widgets/dashboard-widgets.webp +0 -0
  170. package/docs/guides/extending-the-admin-ui/dashboard-widgets/index.md +149 -0
  171. package/docs/guides/extending-the-admin-ui/defining-routes/index.md +777 -0
  172. package/docs/guides/extending-the-admin-ui/defining-routes/route-area.webp +0 -0
  173. package/docs/guides/extending-the-admin-ui/defining-routes/ui-extensions-greeter.webp +0 -0
  174. package/docs/guides/extending-the-admin-ui/getting-started/index.md +656 -0
  175. package/docs/guides/extending-the-admin-ui/getting-started/provider-extension-points.webp +0 -0
  176. package/docs/guides/extending-the-admin-ui/nav-menu/index.md +97 -0
  177. package/docs/guides/extending-the-admin-ui/nav-menu/nav-menu-id.webp +0 -0
  178. package/docs/guides/extending-the-admin-ui/nav-menu/ui-extensions-navbar.webp +0 -0
  179. package/docs/guides/extending-the-admin-ui/page-tabs/index.md +44 -0
  180. package/docs/guides/extending-the-admin-ui/page-tabs/ui-extensions-tabs.webp +0 -0
  181. package/docs/guides/extending-the-admin-ui/ui-library/buttons.webp +0 -0
  182. package/docs/guides/extending-the-admin-ui/ui-library/card.webp +0 -0
  183. package/docs/guides/extending-the-admin-ui/ui-library/form-inputs.webp +0 -0
  184. package/docs/guides/extending-the-admin-ui/ui-library/icons.webp +0 -0
  185. package/docs/guides/extending-the-admin-ui/ui-library/index.md +356 -0
  186. package/docs/guides/extending-the-admin-ui/ui-library/layout.webp +0 -0
  187. package/docs/guides/extending-the-admin-ui/using-other-frameworks/index.md +205 -0
  188. package/docs/guides/extending-the-admin-ui/using-other-frameworks/ui-extensions-cra.jpg +0 -0
  189. package/docs/guides/extending-the-dashboard/alerts/alert.webp +0 -0
  190. package/docs/guides/extending-the-dashboard/alerts/index.md +89 -0
  191. package/docs/guides/extending-the-dashboard/creating-pages/detail-pages.md +316 -0
  192. package/docs/guides/extending-the-dashboard/creating-pages/index.md +90 -0
  193. package/docs/guides/extending-the-dashboard/creating-pages/list-pages.md +206 -0
  194. package/docs/guides/extending-the-dashboard/creating-pages/tabbed-page-example.webp +0 -0
  195. package/docs/guides/extending-the-dashboard/creating-pages/tabbed-pages.md +144 -0
  196. package/docs/guides/extending-the-dashboard/custom-form-components/color-picker.webp +0 -0
  197. package/docs/guides/extending-the-dashboard/custom-form-components/dev-mode.webp +0 -0
  198. package/docs/guides/extending-the-dashboard/custom-form-components/example-currency-input.webp +0 -0
  199. package/docs/guides/extending-the-dashboard/custom-form-components/example-email-input.webp +0 -0
  200. package/docs/guides/extending-the-dashboard/custom-form-components/example-slug-input.webp +0 -0
  201. package/docs/guides/extending-the-dashboard/custom-form-components/example-tags-input.webp +0 -0
  202. package/docs/guides/extending-the-dashboard/custom-form-components/form-component-examples.mdx +445 -0
  203. package/docs/guides/extending-the-dashboard/custom-form-components/index.md +465 -0
  204. package/docs/guides/extending-the-dashboard/custom-form-components/locator.webp +0 -0
  205. package/docs/guides/extending-the-dashboard/custom-form-components/relation-selectors.md +687 -0
  206. package/docs/guides/extending-the-dashboard/customizing-pages/action-bar-button.webp +0 -0
  207. package/docs/guides/extending-the-dashboard/customizing-pages/action-bar-dropdown.webp +0 -0
  208. package/docs/guides/extending-the-dashboard/customizing-pages/action-bar-items.md +272 -0
  209. package/docs/guides/extending-the-dashboard/customizing-pages/custom-widget.webp +0 -0
  210. package/docs/guides/extending-the-dashboard/customizing-pages/customizing-detail-pages.md +129 -0
  211. package/docs/guides/extending-the-dashboard/customizing-pages/customizing-list-pages.md +93 -0
  212. package/docs/guides/extending-the-dashboard/customizing-pages/customizing-login-page.md +66 -0
  213. package/docs/guides/extending-the-dashboard/customizing-pages/history-entries.md +43 -0
  214. package/docs/guides/extending-the-dashboard/customizing-pages/history-entry.webp +0 -0
  215. package/docs/guides/extending-the-dashboard/customizing-pages/index.md +10 -0
  216. package/docs/guides/extending-the-dashboard/customizing-pages/insights-widgets.md +57 -0
  217. package/docs/guides/extending-the-dashboard/customizing-pages/login-page.webp +0 -0
  218. package/docs/guides/extending-the-dashboard/customizing-pages/page-blocks.md +244 -0
  219. package/docs/guides/extending-the-dashboard/data-fetching/index.md +126 -0
  220. package/docs/guides/extending-the-dashboard/data-fetching/type-inference.webp +0 -0
  221. package/docs/guides/extending-the-dashboard/deployment/index.md +200 -0
  222. package/docs/guides/extending-the-dashboard/extending-overview/dev-mode.webp +0 -0
  223. package/docs/guides/extending-the-dashboard/extending-overview/index.md +228 -0
  224. package/docs/guides/extending-the-dashboard/extending-overview/location-id.webp +0 -0
  225. package/docs/guides/extending-the-dashboard/getting-started/detail-view.webp +0 -0
  226. package/docs/guides/extending-the-dashboard/getting-started/index.md +194 -0
  227. package/docs/guides/extending-the-dashboard/getting-started/list-view-empty.webp +0 -0
  228. package/docs/guides/extending-the-dashboard/getting-started/list-view-full.webp +0 -0
  229. package/docs/guides/extending-the-dashboard/getting-started/page-block.webp +0 -0
  230. package/docs/guides/extending-the-dashboard/getting-started/test-page.webp +0 -0
  231. package/docs/guides/extending-the-dashboard/localization/index.md +94 -0
  232. package/docs/guides/extending-the-dashboard/migration/index.md +1902 -0
  233. package/docs/guides/extending-the-dashboard/navigation/dev-mode-nav.webp +0 -0
  234. package/docs/guides/extending-the-dashboard/navigation/index.md +322 -0
  235. package/docs/guides/extending-the-dashboard/navigation/unauthenticated-page.webp +0 -0
  236. package/docs/guides/extending-the-dashboard/tech-stack/index.md +395 -0
  237. package/docs/guides/extending-the-dashboard/theming/index.md +180 -0
  238. package/docs/guides/extending-the-dashboard/theming/show-colour-value-inspection.gif +0 -0
  239. package/docs/guides/getting-started/graphql-intro/index.mdx +572 -0
  240. package/docs/guides/getting-started/installation/app-screens.webp +0 -0
  241. package/docs/guides/getting-started/installation/index.md +234 -0
  242. package/docs/guides/getting-started/try-the-api/graphiql-docs.jpeg +0 -0
  243. package/docs/guides/getting-started/try-the-api/graphiql.jpeg +0 -0
  244. package/docs/guides/getting-started/try-the-api/index.mdx +238 -0
  245. package/docs/guides/how-to/cms-integration-plugin/index.mdx +2083 -0
  246. package/docs/guides/how-to/codegen/index.md +280 -0
  247. package/docs/guides/how-to/configurable-products/index.md +138 -0
  248. package/docs/guides/how-to/digital-products/index.mdx +485 -0
  249. package/docs/guides/how-to/digital-products/product-variant.webp +0 -0
  250. package/docs/guides/how-to/digital-products/shipping-method.webp +0 -0
  251. package/docs/guides/how-to/github-oauth-authentication/index.mdx +360 -0
  252. package/docs/guides/how-to/google-oauth-authentication/index.mdx +494 -0
  253. package/docs/guides/how-to/multi-vendor-marketplaces/aggregate-order.webp +0 -0
  254. package/docs/guides/how-to/multi-vendor-marketplaces/index.md +197 -0
  255. package/docs/guides/how-to/paginated-list/index.mdx +360 -0
  256. package/docs/guides/how-to/publish-plugin/index.mdx +402 -0
  257. package/docs/guides/how-to/s3-asset-storage/index.mdx +572 -0
  258. package/docs/guides/how-to/telemetry/grafana-logs.webp +0 -0
  259. package/docs/guides/how-to/telemetry/grafana-trace.webp +0 -0
  260. package/docs/guides/how-to/telemetry/index.md +260 -0
  261. package/docs/guides/how-to/telemetry/jaeger-trace.webp +0 -0
  262. package/docs/guides/storefront/active-order/index.mdx +201 -0
  263. package/docs/guides/storefront/checkout-flow/index.mdx +428 -0
  264. package/docs/guides/storefront/codegen/index.mdx +157 -0
  265. package/docs/guides/storefront/connect-api/index.mdx +677 -0
  266. package/docs/guides/storefront/customer-accounts/index.mdx +389 -0
  267. package/docs/guides/storefront/customer-accounts/pw-reset.webp +0 -0
  268. package/docs/guides/storefront/customer-accounts/verification.webp +0 -0
  269. package/docs/guides/storefront/listing-products/index.mdx +711 -0
  270. package/docs/guides/storefront/navigation-menu/index.mdx +157 -0
  271. package/docs/guides/storefront/order-workflow/index.md +231 -0
  272. package/docs/guides/storefront/order-workflow/order_class_diagram.png +0 -0
  273. package/docs/guides/storefront/order-workflow/order_state_diagram.png +0 -0
  274. package/docs/guides/storefront/product-detail/index.mdx +295 -0
  275. package/docs/guides/storefront/storefront-starters/angular-storefront.webp +0 -0
  276. package/docs/guides/storefront/storefront-starters/index.mdx +69 -0
  277. package/docs/guides/storefront/storefront-starters/next-storefront.webp +0 -0
  278. package/docs/guides/storefront/storefront-starters/qwik-storefront.webp +0 -0
  279. package/docs/guides/storefront/storefront-starters/remix-storefront.webp +0 -0
  280. package/docs/reference/admin-ui-api/action-bar/action-bar-context.md +82 -0
  281. package/docs/reference/admin-ui-api/action-bar/action-bar-dropdown-menu-item.md +93 -0
  282. package/docs/reference/admin-ui-api/action-bar/action-bar-item.md +106 -0
  283. package/docs/reference/admin-ui-api/action-bar/action-bar-location-id.md +17 -0
  284. package/docs/reference/admin-ui-api/action-bar/add-action-bar-dropdown-menu-item.md +38 -0
  285. package/docs/reference/admin-ui-api/action-bar/add-action-bar-item.md +36 -0
  286. package/docs/reference/admin-ui-api/action-bar/index.md +5 -0
  287. package/docs/reference/admin-ui-api/action-bar/page-location-id.md +61 -0
  288. package/docs/reference/admin-ui-api/action-bar/router-link-definition.md +16 -0
  289. package/docs/reference/admin-ui-api/alerts/alert-config.md +88 -0
  290. package/docs/reference/admin-ui-api/alerts/alert-context.md +52 -0
  291. package/docs/reference/admin-ui-api/alerts/index.md +5 -0
  292. package/docs/reference/admin-ui-api/alerts/register-alert.md +23 -0
  293. package/docs/reference/admin-ui-api/bulk-actions/bulk-action.md +229 -0
  294. package/docs/reference/admin-ui-api/bulk-actions/index.md +5 -0
  295. package/docs/reference/admin-ui-api/bulk-actions/register-bulk-action.md +63 -0
  296. package/docs/reference/admin-ui-api/components/asset-picker-dialog-component.md +160 -0
  297. package/docs/reference/admin-ui-api/components/chip-component.md +63 -0
  298. package/docs/reference/admin-ui-api/components/currency-input-component.md +174 -0
  299. package/docs/reference/admin-ui-api/components/data-table-component.md +238 -0
  300. package/docs/reference/admin-ui-api/components/data-table2component.md +354 -0
  301. package/docs/reference/admin-ui-api/components/datetime-picker-component.md +262 -0
  302. package/docs/reference/admin-ui-api/components/dropdown-component.md +86 -0
  303. package/docs/reference/admin-ui-api/components/facet-value-selector-component.md +155 -0
  304. package/docs/reference/admin-ui-api/components/index.md +5 -0
  305. package/docs/reference/admin-ui-api/components/object-tree-component.md +86 -0
  306. package/docs/reference/admin-ui-api/components/order-state-label-component.md +41 -0
  307. package/docs/reference/admin-ui-api/components/product-variant-selector-component.md +75 -0
  308. package/docs/reference/admin-ui-api/components/rich-text-editor-component.md +108 -0
  309. package/docs/reference/admin-ui-api/components/zone-selector-component.md +124 -0
  310. package/docs/reference/admin-ui-api/custom-detail-components/custom-detail-component-config.md +41 -0
  311. package/docs/reference/admin-ui-api/custom-detail-components/custom-detail-component-location-id.md +36 -0
  312. package/docs/reference/admin-ui-api/custom-detail-components/custom-detail-component.md +36 -0
  313. package/docs/reference/admin-ui-api/custom-detail-components/index.md +5 -0
  314. package/docs/reference/admin-ui-api/custom-detail-components/register-custom-detail-component.md +69 -0
  315. package/docs/reference/admin-ui-api/custom-history-entry-components/customer-history-entry-component.md +32 -0
  316. package/docs/reference/admin-ui-api/custom-history-entry-components/history-entry-component.md +57 -0
  317. package/docs/reference/admin-ui-api/custom-history-entry-components/history-entry-config.md +35 -0
  318. package/docs/reference/admin-ui-api/custom-history-entry-components/index.md +5 -0
  319. package/docs/reference/admin-ui-api/custom-history-entry-components/order-history-entry-component.md +32 -0
  320. package/docs/reference/admin-ui-api/custom-history-entry-components/register-history-entry-component.md +79 -0
  321. package/docs/reference/admin-ui-api/custom-input-components/default-inputs.md +1034 -0
  322. package/docs/reference/admin-ui-api/custom-input-components/form-input-component.md +56 -0
  323. package/docs/reference/admin-ui-api/custom-input-components/index.md +5 -0
  324. package/docs/reference/admin-ui-api/custom-input-components/register-form-input-component.md +71 -0
  325. package/docs/reference/admin-ui-api/custom-table-components/custom-column-component.md +32 -0
  326. package/docs/reference/admin-ui-api/custom-table-components/data-table-component-config.md +48 -0
  327. package/docs/reference/admin-ui-api/custom-table-components/index.md +5 -0
  328. package/docs/reference/admin-ui-api/custom-table-components/register-data-table-component.md +55 -0
  329. package/docs/reference/admin-ui-api/dashboard-widgets/dashboard-widget-config.md +60 -0
  330. package/docs/reference/admin-ui-api/dashboard-widgets/index.md +5 -0
  331. package/docs/reference/admin-ui-api/dashboard-widgets/register-dashboard-widget.md +27 -0
  332. package/docs/reference/admin-ui-api/dashboard-widgets/set-dashboard-widget-layout.md +22 -0
  333. package/docs/reference/admin-ui-api/dashboard-widgets/widget-layout-definition.md +16 -0
  334. package/docs/reference/admin-ui-api/directives/if-multichannel-directive.md +41 -0
  335. package/docs/reference/admin-ui-api/directives/if-permissions-directive.md +43 -0
  336. package/docs/reference/admin-ui-api/directives/index.md +5 -0
  337. package/docs/reference/admin-ui-api/index.md +13 -0
  338. package/docs/reference/admin-ui-api/list-detail-views/base-detail-component.md +168 -0
  339. package/docs/reference/admin-ui-api/list-detail-views/base-entity-resolver.md +54 -0
  340. package/docs/reference/admin-ui-api/list-detail-views/base-list-component.md +155 -0
  341. package/docs/reference/admin-ui-api/list-detail-views/detail-component-with-resolver.md +52 -0
  342. package/docs/reference/admin-ui-api/list-detail-views/index.md +5 -0
  343. package/docs/reference/admin-ui-api/list-detail-views/typed-base-detail-component.md +51 -0
  344. package/docs/reference/admin-ui-api/list-detail-views/typed-base-list-component.md +125 -0
  345. package/docs/reference/admin-ui-api/nav-menu/add-nav-menu-item.md +52 -0
  346. package/docs/reference/admin-ui-api/nav-menu/add-nav-menu-section.md +47 -0
  347. package/docs/reference/admin-ui-api/nav-menu/index.md +5 -0
  348. package/docs/reference/admin-ui-api/nav-menu/nav-menu-item.md +66 -0
  349. package/docs/reference/admin-ui-api/nav-menu/nav-menu-section.md +83 -0
  350. package/docs/reference/admin-ui-api/nav-menu/navigation-types.md +38 -0
  351. package/docs/reference/admin-ui-api/pipes/asset-preview-pipe.md +41 -0
  352. package/docs/reference/admin-ui-api/pipes/duration-pipe.md +45 -0
  353. package/docs/reference/admin-ui-api/pipes/file-size-pipe.md +38 -0
  354. package/docs/reference/admin-ui-api/pipes/has-permission-pipe.md +51 -0
  355. package/docs/reference/admin-ui-api/pipes/index.md +5 -0
  356. package/docs/reference/admin-ui-api/pipes/locale-currency-name-pipe.md +47 -0
  357. package/docs/reference/admin-ui-api/pipes/locale-currency-pipe.md +54 -0
  358. package/docs/reference/admin-ui-api/pipes/locale-date-pipe.md +48 -0
  359. package/docs/reference/admin-ui-api/pipes/locale-language-name-pipe.md +47 -0
  360. package/docs/reference/admin-ui-api/pipes/locale-region-name-pipe.md +47 -0
  361. package/docs/reference/admin-ui-api/pipes/time-ago-pipe.md +44 -0
  362. package/docs/reference/admin-ui-api/react-components/action-bar.md +36 -0
  363. package/docs/reference/admin-ui-api/react-components/card.md +36 -0
  364. package/docs/reference/admin-ui-api/react-components/cds-icon.md +34 -0
  365. package/docs/reference/admin-ui-api/react-components/form-field.md +42 -0
  366. package/docs/reference/admin-ui-api/react-components/index.md +5 -0
  367. package/docs/reference/admin-ui-api/react-components/link.md +34 -0
  368. package/docs/reference/admin-ui-api/react-components/page-block.md +36 -0
  369. package/docs/reference/admin-ui-api/react-components/page-detail-layout.md +36 -0
  370. package/docs/reference/admin-ui-api/react-components/rich-text-editor.md +42 -0
  371. package/docs/reference/admin-ui-api/react-extensions/index.md +5 -0
  372. package/docs/reference/admin-ui-api/react-extensions/react-custom-detail-component-config.md +41 -0
  373. package/docs/reference/admin-ui-api/react-extensions/react-data-table-component-config.md +48 -0
  374. package/docs/reference/admin-ui-api/react-extensions/register-react-custom-detail-component.md +23 -0
  375. package/docs/reference/admin-ui-api/react-extensions/register-react-data-table-component.md +55 -0
  376. package/docs/reference/admin-ui-api/react-extensions/register-react-form-input-component.md +26 -0
  377. package/docs/reference/admin-ui-api/react-extensions/register-react-route-component-options.md +18 -0
  378. package/docs/reference/admin-ui-api/react-extensions/register-react-route-component.md +22 -0
  379. package/docs/reference/admin-ui-api/react-hooks/index.md +5 -0
  380. package/docs/reference/admin-ui-api/react-hooks/use-detail-component-data.md +39 -0
  381. package/docs/reference/admin-ui-api/react-hooks/use-form-control.md +36 -0
  382. package/docs/reference/admin-ui-api/react-hooks/use-injector.md +39 -0
  383. package/docs/reference/admin-ui-api/react-hooks/use-lazy-query.md +74 -0
  384. package/docs/reference/admin-ui-api/react-hooks/use-mutation.md +62 -0
  385. package/docs/reference/admin-ui-api/react-hooks/use-page-metadata.md +36 -0
  386. package/docs/reference/admin-ui-api/react-hooks/use-query.md +59 -0
  387. package/docs/reference/admin-ui-api/react-hooks/use-rich-text-editor.md +30 -0
  388. package/docs/reference/admin-ui-api/react-hooks/use-route-params.md +29 -0
  389. package/docs/reference/admin-ui-api/routes/index.md +5 -0
  390. package/docs/reference/admin-ui-api/routes/register-route-component-options.md +28 -0
  391. package/docs/reference/admin-ui-api/routes/register-route-component.md +57 -0
  392. package/docs/reference/admin-ui-api/services/data-service.md +142 -0
  393. package/docs/reference/admin-ui-api/services/index.md +5 -0
  394. package/docs/reference/admin-ui-api/services/modal-service.md +199 -0
  395. package/docs/reference/admin-ui-api/services/notification-service.md +126 -0
  396. package/docs/reference/admin-ui-api/tabs/index.md +5 -0
  397. package/docs/reference/admin-ui-api/tabs/page-tab-config.md +70 -0
  398. package/docs/reference/admin-ui-api/tabs/register-page-tab.md +38 -0
  399. package/docs/reference/admin-ui-api/ui-devkit/admin-ui-extension.md +417 -0
  400. package/docs/reference/admin-ui-api/ui-devkit/compile-ui-extensions.md +22 -0
  401. package/docs/reference/admin-ui-api/ui-devkit/helpers.md +39 -0
  402. package/docs/reference/admin-ui-api/ui-devkit/index.md +5 -0
  403. package/docs/reference/admin-ui-api/ui-devkit/ui-devkit-client.md +160 -0
  404. package/docs/reference/admin-ui-api/ui-devkit/ui-extension-build-command.md +16 -0
  405. package/docs/reference/admin-ui-api/ui-devkit/ui-extension-compiler-options.md +118 -0
  406. package/docs/reference/admin-ui-api/ui-devkit/ui-extension-compiler-process-argument.md +16 -0
  407. package/docs/reference/core-plugins/admin-ui-plugin/admin-ui-plugin-options.md +67 -0
  408. package/docs/reference/core-plugins/admin-ui-plugin/index.md +94 -0
  409. package/docs/reference/core-plugins/asset-server-plugin/asset-server-options.md +106 -0
  410. package/docs/reference/core-plugins/asset-server-plugin/cache-config.md +36 -0
  411. package/docs/reference/core-plugins/asset-server-plugin/hashed-asset-naming-strategy.md +47 -0
  412. package/docs/reference/core-plugins/asset-server-plugin/image-transform-mode.md +21 -0
  413. package/docs/reference/core-plugins/asset-server-plugin/image-transform-preset.md +57 -0
  414. package/docs/reference/core-plugins/asset-server-plugin/image-transform-strategy.md +144 -0
  415. package/docs/reference/core-plugins/asset-server-plugin/index.md +189 -0
  416. package/docs/reference/core-plugins/asset-server-plugin/local-asset-storage-strategy.md +74 -0
  417. package/docs/reference/core-plugins/asset-server-plugin/preset-only-strategy.md +118 -0
  418. package/docs/reference/core-plugins/asset-server-plugin/s3asset-storage-strategy.md +225 -0
  419. package/docs/reference/core-plugins/asset-server-plugin/sharp-asset-preview-strategy.md +118 -0
  420. package/docs/reference/core-plugins/dashboard-plugin/dashboard-plugin-options.md +43 -0
  421. package/docs/reference/core-plugins/dashboard-plugin/index.md +106 -0
  422. package/docs/reference/core-plugins/elasticsearch-plugin/elasticsearch-options.md +695 -0
  423. package/docs/reference/core-plugins/elasticsearch-plugin/index.md +193 -0
  424. package/docs/reference/core-plugins/email-plugin/email-event-handler-with-async-data.md +33 -0
  425. package/docs/reference/core-plugins/email-plugin/email-event-handler.md +299 -0
  426. package/docs/reference/core-plugins/email-plugin/email-event-listener.md +42 -0
  427. package/docs/reference/core-plugins/email-plugin/email-generator.md +78 -0
  428. package/docs/reference/core-plugins/email-plugin/email-plugin-options.md +154 -0
  429. package/docs/reference/core-plugins/email-plugin/email-plugin-types.md +276 -0
  430. package/docs/reference/core-plugins/email-plugin/email-send-event.md +34 -0
  431. package/docs/reference/core-plugins/email-plugin/email-sender.md +92 -0
  432. package/docs/reference/core-plugins/email-plugin/email-utils.md +54 -0
  433. package/docs/reference/core-plugins/email-plugin/index.md +309 -0
  434. package/docs/reference/core-plugins/email-plugin/template-loader.md +96 -0
  435. package/docs/reference/core-plugins/email-plugin/transport-options.md +241 -0
  436. package/docs/reference/core-plugins/graphiql-plugin/index.md +89 -0
  437. package/docs/reference/core-plugins/harden-plugin/default-vendure-complexity-estimator.md +30 -0
  438. package/docs/reference/core-plugins/harden-plugin/harden-plugin-options.md +106 -0
  439. package/docs/reference/core-plugins/harden-plugin/index.md +169 -0
  440. package/docs/reference/core-plugins/index.md +5 -0
  441. package/docs/reference/core-plugins/job-queue-plugin/bull-mqjob-queue-plugin.md +211 -0
  442. package/docs/reference/core-plugins/job-queue-plugin/bull-mqjob-queue-strategy.md +93 -0
  443. package/docs/reference/core-plugins/job-queue-plugin/bull-mqplugin-options.md +142 -0
  444. package/docs/reference/core-plugins/job-queue-plugin/index.md +5 -0
  445. package/docs/reference/core-plugins/job-queue-plugin/pub-sub-job-queue-strategy.md +65 -0
  446. package/docs/reference/core-plugins/job-queue-plugin/pub-sub-plugin.md +36 -0
  447. package/docs/reference/core-plugins/payments-plugin/braintree-plugin.md +350 -0
  448. package/docs/reference/core-plugins/payments-plugin/index.md +5 -0
  449. package/docs/reference/core-plugins/payments-plugin/mollie-plugin.md +209 -0
  450. package/docs/reference/core-plugins/payments-plugin/stripe-plugin.md +355 -0
  451. package/docs/reference/core-plugins/sentry-plugin/index.md +158 -0
  452. package/docs/reference/core-plugins/sentry-plugin/sentry-plugin-options.md +32 -0
  453. package/docs/reference/core-plugins/sentry-plugin/sentry-service.md +47 -0
  454. package/docs/reference/core-plugins/stellate-plugin/index.md +277 -0
  455. package/docs/reference/core-plugins/stellate-plugin/purge-rule.md +91 -0
  456. package/docs/reference/core-plugins/stellate-plugin/stellate-plugin-options.md +65 -0
  457. package/docs/reference/core-plugins/stellate-plugin/stellate-service.md +71 -0
  458. package/docs/reference/core-plugins/telemetry-plugin/get-sdk-configuration.md +92 -0
  459. package/docs/reference/core-plugins/telemetry-plugin/index.md +131 -0
  460. package/docs/reference/core-plugins/telemetry-plugin/otel-logger.md +102 -0
  461. package/docs/reference/core-plugins/telemetry-plugin/register-method-hooks.md +46 -0
  462. package/docs/reference/core-plugins/telemetry-plugin/telemetry-plugin-options.md +77 -0
  463. package/docs/reference/dashboard/components/asset-gallery.md +127 -0
  464. package/docs/reference/dashboard/components/asset-picker-dialog.md +76 -0
  465. package/docs/reference/dashboard/components/channel-chip.md +22 -0
  466. package/docs/reference/dashboard/components/detail-page-button.md +49 -0
  467. package/docs/reference/dashboard/components/facet-value-chip.md +22 -0
  468. package/docs/reference/dashboard/components/facet-value-selector.md +85 -0
  469. package/docs/reference/dashboard/components/index.md +5 -0
  470. package/docs/reference/dashboard/components/permission-guard.md +63 -0
  471. package/docs/reference/dashboard/components/vendure-image.md +199 -0
  472. package/docs/reference/dashboard/detail-views/detail-page.md +91 -0
  473. package/docs/reference/dashboard/detail-views/index.md +5 -0
  474. package/docs/reference/dashboard/detail-views/use-detail-page.md +234 -0
  475. package/docs/reference/dashboard/detail-views/use-generated-form.md +105 -0
  476. package/docs/reference/dashboard/extensions-api/action-bar.md +66 -0
  477. package/docs/reference/dashboard/extensions-api/alerts.md +78 -0
  478. package/docs/reference/dashboard/extensions-api/data-tables.md +55 -0
  479. package/docs/reference/dashboard/extensions-api/define-dashboard-extension.md +142 -0
  480. package/docs/reference/dashboard/extensions-api/detail-forms.md +81 -0
  481. package/docs/reference/dashboard/extensions-api/form-components.md +188 -0
  482. package/docs/reference/dashboard/extensions-api/history-entries.md +246 -0
  483. package/docs/reference/dashboard/extensions-api/index.md +5 -0
  484. package/docs/reference/dashboard/extensions-api/login.md +113 -0
  485. package/docs/reference/dashboard/extensions-api/navigation.md +128 -0
  486. package/docs/reference/dashboard/extensions-api/page-blocks.md +143 -0
  487. package/docs/reference/dashboard/extensions-api/routes.md +69 -0
  488. package/docs/reference/dashboard/extensions-api/widgets.md +61 -0
  489. package/docs/reference/dashboard/form-components/affixed-input.md +34 -0
  490. package/docs/reference/dashboard/form-components/boolean-input.md +22 -0
  491. package/docs/reference/dashboard/form-components/checkbox-input.md +22 -0
  492. package/docs/reference/dashboard/form-components/date-time-input.md +22 -0
  493. package/docs/reference/dashboard/form-components/form-field-wrapper.md +80 -0
  494. package/docs/reference/dashboard/form-components/index.md +5 -0
  495. package/docs/reference/dashboard/form-components/money-input.md +23 -0
  496. package/docs/reference/dashboard/form-components/number-input.md +22 -0
  497. package/docs/reference/dashboard/form-components/password-input.md +22 -0
  498. package/docs/reference/dashboard/form-components/rich-text-input.md +22 -0
  499. package/docs/reference/dashboard/form-components/slug-input.md +57 -0
  500. package/docs/reference/dashboard/form-components/text-input.md +13 -0
  501. package/docs/reference/dashboard/form-components/textarea-input.md +22 -0
  502. package/docs/reference/dashboard/form-components/translatable-form-field-wrapper.md +70 -0
  503. package/docs/reference/dashboard/hooks/index.md +5 -0
  504. package/docs/reference/dashboard/hooks/use-alerts.md +65 -0
  505. package/docs/reference/dashboard/hooks/use-auth.md +84 -0
  506. package/docs/reference/dashboard/hooks/use-channel.md +72 -0
  507. package/docs/reference/dashboard/hooks/use-custom-field-config.md +24 -0
  508. package/docs/reference/dashboard/hooks/use-display-locale.md +32 -0
  509. package/docs/reference/dashboard/hooks/use-drag-and-drop.md +22 -0
  510. package/docs/reference/dashboard/hooks/use-local-format.md +30 -0
  511. package/docs/reference/dashboard/hooks/use-paginated-list.md +29 -0
  512. package/docs/reference/dashboard/hooks/use-permissions.md +25 -0
  513. package/docs/reference/dashboard/hooks/use-sorted-languages.md +30 -0
  514. package/docs/reference/dashboard/hooks/use-ui-language-loader.md +18 -0
  515. package/docs/reference/dashboard/hooks/use-widget-filters.md +16 -0
  516. package/docs/reference/dashboard/list-views/bulk-actions.md +199 -0
  517. package/docs/reference/dashboard/list-views/data-table-cell-component.md +45 -0
  518. package/docs/reference/dashboard/list-views/data-table.md +209 -0
  519. package/docs/reference/dashboard/list-views/index.md +5 -0
  520. package/docs/reference/dashboard/list-views/list-page.md +493 -0
  521. package/docs/reference/dashboard/list-views/paginated-list-data-table.md +303 -0
  522. package/docs/reference/dashboard/page-layout/index.md +54 -0
  523. package/docs/reference/dashboard/page-layout/page-action-bar.md +62 -0
  524. package/docs/reference/dashboard/page-layout/page-block.md +137 -0
  525. package/docs/reference/dashboard/page-layout/page-title.md +22 -0
  526. package/docs/reference/dashboard/page-layout/page.md +100 -0
  527. package/docs/reference/dashboard/page-layout/use-page-block.md +32 -0
  528. package/docs/reference/dashboard/vite-plugin/index.md +5 -0
  529. package/docs/reference/dashboard/vite-plugin/vendure-dashboard-plugin.md +356 -0
  530. package/docs/reference/graphql-api/_index.md +16 -0
  531. package/docs/reference/graphql-api/admin/_index.md +13 -0
  532. package/docs/reference/graphql-api/admin/enums.md +1142 -0
  533. package/docs/reference/graphql-api/admin/input-types.md +4631 -0
  534. package/docs/reference/graphql-api/admin/mutations.md +1985 -0
  535. package/docs/reference/graphql-api/admin/object-types.md +4515 -0
  536. package/docs/reference/graphql-api/admin/queries.md +760 -0
  537. package/docs/reference/graphql-api/shop/_index.md +13 -0
  538. package/docs/reference/graphql-api/shop/enums.md +1072 -0
  539. package/docs/reference/graphql-api/shop/input-types.md +1192 -0
  540. package/docs/reference/graphql-api/shop/mutations.md +431 -0
  541. package/docs/reference/graphql-api/shop/object-types.md +3406 -0
  542. package/docs/reference/graphql-api/shop/queries.md +247 -0
  543. package/docs/reference/index.mdx +38 -0
  544. package/docs/reference/links.webp +0 -0
  545. package/docs/reference/typescript-api/_index.md +13 -0
  546. package/docs/reference/typescript-api/assets/asset-naming-strategy.md +56 -0
  547. package/docs/reference/typescript-api/assets/asset-options.md +58 -0
  548. package/docs/reference/typescript-api/assets/asset-preview-strategy.md +45 -0
  549. package/docs/reference/typescript-api/assets/asset-storage-strategy.md +84 -0
  550. package/docs/reference/typescript-api/assets/default-asset-naming-strategy.md +39 -0
  551. package/docs/reference/typescript-api/assets/index.md +5 -0
  552. package/docs/reference/typescript-api/auth/auth-options.md +165 -0
  553. package/docs/reference/typescript-api/auth/authentication-strategy.md +97 -0
  554. package/docs/reference/typescript-api/auth/bcrypt-password-hashing-strategy.md +38 -0
  555. package/docs/reference/typescript-api/auth/cookie-options.md +108 -0
  556. package/docs/reference/typescript-api/auth/default-password-validation-strategy.md +44 -0
  557. package/docs/reference/typescript-api/auth/default-session-cache-strategy.md +73 -0
  558. package/docs/reference/typescript-api/auth/default-verification-token-strategy.md +47 -0
  559. package/docs/reference/typescript-api/auth/external-authentication-service.md +98 -0
  560. package/docs/reference/typescript-api/auth/in-memory-session-cache-strategy.md +63 -0
  561. package/docs/reference/typescript-api/auth/index.md +5 -0
  562. package/docs/reference/typescript-api/auth/native-authentication-strategy.md +58 -0
  563. package/docs/reference/typescript-api/auth/noop-session-cache-strategy.md +51 -0
  564. package/docs/reference/typescript-api/auth/password-hashing-strategy.md +45 -0
  565. package/docs/reference/typescript-api/auth/password-validation-strategy.md +43 -0
  566. package/docs/reference/typescript-api/auth/permission-definition.md +269 -0
  567. package/docs/reference/typescript-api/auth/session-cache-strategy.md +275 -0
  568. package/docs/reference/typescript-api/auth/superadmin-credentials.md +36 -0
  569. package/docs/reference/typescript-api/auth/verification-token-strategy.md +45 -0
  570. package/docs/reference/typescript-api/cache/cache-config.md +44 -0
  571. package/docs/reference/typescript-api/cache/cache-service.md +76 -0
  572. package/docs/reference/typescript-api/cache/cache-strategy.md +103 -0
  573. package/docs/reference/typescript-api/cache/default-cache-plugin.md +73 -0
  574. package/docs/reference/typescript-api/cache/index.md +79 -0
  575. package/docs/reference/typescript-api/cache/redis-cache-plugin.md +85 -0
  576. package/docs/reference/typescript-api/cache/redis-cache-strategy.md +75 -0
  577. package/docs/reference/typescript-api/cache/request-context-cache-service.md +54 -0
  578. package/docs/reference/typescript-api/cache/self-refreshing-cache.md +152 -0
  579. package/docs/reference/typescript-api/cache/sql-cache-strategy.md +87 -0
  580. package/docs/reference/typescript-api/common/admin-ui/admin-ui-app-config.md +43 -0
  581. package/docs/reference/typescript-api/common/admin-ui/admin-ui-app-dev-mode-config.md +47 -0
  582. package/docs/reference/typescript-api/common/admin-ui/admin-ui-config.md +139 -0
  583. package/docs/reference/typescript-api/common/admin-ui/index.md +5 -0
  584. package/docs/reference/typescript-api/common/async-queue.md +38 -0
  585. package/docs/reference/typescript-api/common/bootstrap.md +129 -0
  586. package/docs/reference/typescript-api/common/currency-code.md +174 -0
  587. package/docs/reference/typescript-api/common/entity-relation-paths.md +34 -0
  588. package/docs/reference/typescript-api/common/i18n-service.md +74 -0
  589. package/docs/reference/typescript-api/common/id.md +17 -0
  590. package/docs/reference/typescript-api/common/index.md +5 -0
  591. package/docs/reference/typescript-api/common/injectable-strategy.md +48 -0
  592. package/docs/reference/typescript-api/common/injector.md +47 -0
  593. package/docs/reference/typescript-api/common/job-state.md +23 -0
  594. package/docs/reference/typescript-api/common/json-compatible.md +23 -0
  595. package/docs/reference/typescript-api/common/language-code.md +177 -0
  596. package/docs/reference/typescript-api/common/middleware.md +72 -0
  597. package/docs/reference/typescript-api/common/paginated-list.md +36 -0
  598. package/docs/reference/typescript-api/common/permission.md +136 -0
  599. package/docs/reference/typescript-api/common/price-calculation-result.md +36 -0
  600. package/docs/reference/typescript-api/common/process-context.md +55 -0
  601. package/docs/reference/typescript-api/common/vendure_version.md +22 -0
  602. package/docs/reference/typescript-api/configurable-operation-def/config-arg-type.md +22 -0
  603. package/docs/reference/typescript-api/configurable-operation-def/config-args.md +89 -0
  604. package/docs/reference/typescript-api/configurable-operation-def/configurable-operation-def-options.md +57 -0
  605. package/docs/reference/typescript-api/configurable-operation-def/default-form-component-id.md +34 -0
  606. package/docs/reference/typescript-api/configurable-operation-def/default-form-config-hash.md +137 -0
  607. package/docs/reference/typescript-api/configurable-operation-def/index.md +149 -0
  608. package/docs/reference/typescript-api/configurable-operation-def/localized-string-array.md +28 -0
  609. package/docs/reference/typescript-api/configuration/api-options.md +159 -0
  610. package/docs/reference/typescript-api/configuration/collection-filter.md +76 -0
  611. package/docs/reference/typescript-api/configuration/default-config.md +13 -0
  612. package/docs/reference/typescript-api/configuration/default-slug-strategy.md +46 -0
  613. package/docs/reference/typescript-api/configuration/entity-duplicator.md +195 -0
  614. package/docs/reference/typescript-api/configuration/entity-id-decorator.md +24 -0
  615. package/docs/reference/typescript-api/configuration/entity-id-strategy.md +168 -0
  616. package/docs/reference/typescript-api/configuration/entity-options.md +153 -0
  617. package/docs/reference/typescript-api/configuration/index.md +5 -0
  618. package/docs/reference/typescript-api/configuration/merge-config.md +49 -0
  619. package/docs/reference/typescript-api/configuration/product-variant-price-selection-strategy.md +71 -0
  620. package/docs/reference/typescript-api/configuration/product-variant-price-update-strategy.md +185 -0
  621. package/docs/reference/typescript-api/configuration/runtime-vendure-config.md +111 -0
  622. package/docs/reference/typescript-api/configuration/settings-store-fields.md +29 -0
  623. package/docs/reference/typescript-api/configuration/slug-strategy.md +47 -0
  624. package/docs/reference/typescript-api/configuration/system-options.md +50 -0
  625. package/docs/reference/typescript-api/configuration/trust-proxy-options.md +19 -0
  626. package/docs/reference/typescript-api/configuration/vendure-config.md +168 -0
  627. package/docs/reference/typescript-api/custom-fields/custom-field-config.md +25 -0
  628. package/docs/reference/typescript-api/custom-fields/custom-field-type.md +42 -0
  629. package/docs/reference/typescript-api/custom-fields/index.md +70 -0
  630. package/docs/reference/typescript-api/custom-fields/struct-custom-field-config.md +21 -0
  631. package/docs/reference/typescript-api/custom-fields/struct-field-config.md +41 -0
  632. package/docs/reference/typescript-api/custom-fields/typed-custom-single-field-config.md +24 -0
  633. package/docs/reference/typescript-api/data-access/calculated-property-subscriber.md +38 -0
  634. package/docs/reference/typescript-api/data-access/calculated.md +62 -0
  635. package/docs/reference/typescript-api/data-access/entity-hydrator.md +103 -0
  636. package/docs/reference/typescript-api/data-access/get-entity-or-throw-options.md +53 -0
  637. package/docs/reference/typescript-api/data-access/hydrate-options.md +40 -0
  638. package/docs/reference/typescript-api/data-access/index.md +5 -0
  639. package/docs/reference/typescript-api/data-access/list-query-builder.md +239 -0
  640. package/docs/reference/typescript-api/data-access/transactional-connection.md +173 -0
  641. package/docs/reference/typescript-api/default-search-plugin/default-search-plugin-init-options.md +126 -0
  642. package/docs/reference/typescript-api/default-search-plugin/index.md +64 -0
  643. package/docs/reference/typescript-api/default-search-plugin/mysql-search-strategy.md +56 -0
  644. package/docs/reference/typescript-api/default-search-plugin/postgres-search-strategy.md +56 -0
  645. package/docs/reference/typescript-api/default-search-plugin/search-strategy.md +58 -0
  646. package/docs/reference/typescript-api/default-search-plugin/sqlite-search-strategy.md +57 -0
  647. package/docs/reference/typescript-api/entities/address.md +124 -0
  648. package/docs/reference/typescript-api/entities/administrator.md +78 -0
  649. package/docs/reference/typescript-api/entities/anonymous-session.md +34 -0
  650. package/docs/reference/typescript-api/entities/asset.md +135 -0
  651. package/docs/reference/typescript-api/entities/authenticated-session.md +48 -0
  652. package/docs/reference/typescript-api/entities/authentication-method.md +156 -0
  653. package/docs/reference/typescript-api/entities/channel.md +233 -0
  654. package/docs/reference/typescript-api/entities/collection.md +152 -0
  655. package/docs/reference/typescript-api/entities/country.md +40 -0
  656. package/docs/reference/typescript-api/entities/customer-group.md +63 -0
  657. package/docs/reference/typescript-api/entities/customer-history-entry.md +40 -0
  658. package/docs/reference/typescript-api/entities/customer.md +122 -0
  659. package/docs/reference/typescript-api/entities/facet-value.md +98 -0
  660. package/docs/reference/typescript-api/entities/facet.md +89 -0
  661. package/docs/reference/typescript-api/entities/fulfillment.md +84 -0
  662. package/docs/reference/typescript-api/entities/global-settings.md +66 -0
  663. package/docs/reference/typescript-api/entities/history-entry.md +66 -0
  664. package/docs/reference/typescript-api/entities/index.md +5 -0
  665. package/docs/reference/typescript-api/entities/interfaces.md +125 -0
  666. package/docs/reference/typescript-api/entities/order-history-entry.md +40 -0
  667. package/docs/reference/typescript-api/entities/order-line-reference.md +174 -0
  668. package/docs/reference/typescript-api/entities/order-line.md +344 -0
  669. package/docs/reference/typescript-api/entities/order-modification.md +103 -0
  670. package/docs/reference/typescript-api/entities/order.md +284 -0
  671. package/docs/reference/typescript-api/entities/orderable-asset.md +61 -0
  672. package/docs/reference/typescript-api/entities/payment-method.md +94 -0
  673. package/docs/reference/typescript-api/entities/payment.md +96 -0
  674. package/docs/reference/typescript-api/entities/product-option-group.md +84 -0
  675. package/docs/reference/typescript-api/entities/product-option.md +90 -0
  676. package/docs/reference/typescript-api/entities/product-variant-price.md +70 -0
  677. package/docs/reference/typescript-api/entities/product-variant.md +251 -0
  678. package/docs/reference/typescript-api/entities/product.md +134 -0
  679. package/docs/reference/typescript-api/entities/promotion.md +190 -0
  680. package/docs/reference/typescript-api/entities/province.md +39 -0
  681. package/docs/reference/typescript-api/entities/refund.md +120 -0
  682. package/docs/reference/typescript-api/entities/region.md +87 -0
  683. package/docs/reference/typescript-api/entities/role.md +62 -0
  684. package/docs/reference/typescript-api/entities/seller.md +63 -0
  685. package/docs/reference/typescript-api/entities/session.md +87 -0
  686. package/docs/reference/typescript-api/entities/settings-store-entry.md +57 -0
  687. package/docs/reference/typescript-api/entities/shipping-line.md +150 -0
  688. package/docs/reference/typescript-api/entities/shipping-method.md +123 -0
  689. package/docs/reference/typescript-api/entities/stock-level.md +87 -0
  690. package/docs/reference/typescript-api/entities/stock-location.md +76 -0
  691. package/docs/reference/typescript-api/entities/stock-movement.md +270 -0
  692. package/docs/reference/typescript-api/entities/surcharge.md +102 -0
  693. package/docs/reference/typescript-api/entities/tag.md +40 -0
  694. package/docs/reference/typescript-api/entities/tax-category.md +68 -0
  695. package/docs/reference/typescript-api/entities/tax-rate.md +138 -0
  696. package/docs/reference/typescript-api/entities/user.md +111 -0
  697. package/docs/reference/typescript-api/entities/vendure-entity.md +49 -0
  698. package/docs/reference/typescript-api/entities/zone.md +78 -0
  699. package/docs/reference/typescript-api/errors/error-handler-strategy.md +88 -0
  700. package/docs/reference/typescript-api/errors/error-result-union.md +30 -0
  701. package/docs/reference/typescript-api/errors/error-types.md +197 -0
  702. package/docs/reference/typescript-api/errors/i18n-error.md +39 -0
  703. package/docs/reference/typescript-api/errors/index.md +5 -0
  704. package/docs/reference/typescript-api/errors/is-graph-ql-error-result.md +40 -0
  705. package/docs/reference/typescript-api/events/blocking-event-handler-options.md +57 -0
  706. package/docs/reference/typescript-api/events/event-bus.md +136 -0
  707. package/docs/reference/typescript-api/events/event-types.md +1689 -0
  708. package/docs/reference/typescript-api/events/index.md +5 -0
  709. package/docs/reference/typescript-api/events/vendure-entity-event.md +57 -0
  710. package/docs/reference/typescript-api/events/vendure-event.md +35 -0
  711. package/docs/reference/typescript-api/fulfillment/fulfillment-handler.md +173 -0
  712. package/docs/reference/typescript-api/fulfillment/fulfillment-process.md +71 -0
  713. package/docs/reference/typescript-api/fulfillment/fulfillment-state.md +21 -0
  714. package/docs/reference/typescript-api/fulfillment/fulfillment-states.md +18 -0
  715. package/docs/reference/typescript-api/fulfillment/fulfillment-transition-data.md +41 -0
  716. package/docs/reference/typescript-api/fulfillment/index.md +5 -0
  717. package/docs/reference/typescript-api/health-check/health-check-registry-service.md +70 -0
  718. package/docs/reference/typescript-api/health-check/health-check-strategy.md +70 -0
  719. package/docs/reference/typescript-api/health-check/http-health-check-strategy.md +61 -0
  720. package/docs/reference/typescript-api/health-check/index.md +5 -0
  721. package/docs/reference/typescript-api/health-check/type-ormhealth-check-strategy.md +64 -0
  722. package/docs/reference/typescript-api/import-export/asset-import-strategy.md +46 -0
  723. package/docs/reference/typescript-api/import-export/asset-importer.md +32 -0
  724. package/docs/reference/typescript-api/import-export/default-asset-import-strategy.md +48 -0
  725. package/docs/reference/typescript-api/import-export/fast-importer-service.md +67 -0
  726. package/docs/reference/typescript-api/import-export/import-export-options.md +36 -0
  727. package/docs/reference/typescript-api/import-export/import-parser.md +280 -0
  728. package/docs/reference/typescript-api/import-export/importer.md +54 -0
  729. package/docs/reference/typescript-api/import-export/index.md +5 -0
  730. package/docs/reference/typescript-api/import-export/initial-data.md +71 -0
  731. package/docs/reference/typescript-api/import-export/populate.md +71 -0
  732. package/docs/reference/typescript-api/import-export/populator.md +38 -0
  733. package/docs/reference/typescript-api/job-queue/default-job-queue-plugin.md +245 -0
  734. package/docs/reference/typescript-api/job-queue/in-memory-job-buffer-storage-strategy.md +55 -0
  735. package/docs/reference/typescript-api/job-queue/in-memory-job-queue-strategy.md +110 -0
  736. package/docs/reference/typescript-api/job-queue/index.md +84 -0
  737. package/docs/reference/typescript-api/job-queue/inspectable-job-queue-strategy.md +60 -0
  738. package/docs/reference/typescript-api/job-queue/job-buffer-storage-strategy.md +78 -0
  739. package/docs/reference/typescript-api/job-queue/job-buffer.md +119 -0
  740. package/docs/reference/typescript-api/job-queue/job-queue-options.md +56 -0
  741. package/docs/reference/typescript-api/job-queue/job-queue-service.md +128 -0
  742. package/docs/reference/typescript-api/job-queue/job-queue-strategy.md +59 -0
  743. package/docs/reference/typescript-api/job-queue/job.md +195 -0
  744. package/docs/reference/typescript-api/job-queue/polling-job-queue-strategy.md +122 -0
  745. package/docs/reference/typescript-api/job-queue/sql-job-queue-strategy.md +84 -0
  746. package/docs/reference/typescript-api/job-queue/subscribable-job.md +44 -0
  747. package/docs/reference/typescript-api/job-queue/types.md +199 -0
  748. package/docs/reference/typescript-api/logger/default-logger.md +81 -0
  749. package/docs/reference/typescript-api/logger/index.md +120 -0
  750. package/docs/reference/typescript-api/logger/log-level.md +30 -0
  751. package/docs/reference/typescript-api/logger/vendure-logger.md +60 -0
  752. package/docs/reference/typescript-api/migration/generate-migration.md +28 -0
  753. package/docs/reference/typescript-api/migration/index.md +5 -0
  754. package/docs/reference/typescript-api/migration/migration-options.md +36 -0
  755. package/docs/reference/typescript-api/migration/revert-last-migration.md +23 -0
  756. package/docs/reference/typescript-api/migration/run-migrations.md +23 -0
  757. package/docs/reference/typescript-api/money/big-int-money-strategy.md +68 -0
  758. package/docs/reference/typescript-api/money/default-money-strategy.md +47 -0
  759. package/docs/reference/typescript-api/money/index.md +5 -0
  760. package/docs/reference/typescript-api/money/money-decorator.md +23 -0
  761. package/docs/reference/typescript-api/money/money-strategy.md +116 -0
  762. package/docs/reference/typescript-api/money/round-money.md +26 -0
  763. package/docs/reference/typescript-api/orders/active-order-service.md +69 -0
  764. package/docs/reference/typescript-api/orders/active-order-strategy.md +203 -0
  765. package/docs/reference/typescript-api/orders/changed-price-handling-strategy.md +51 -0
  766. package/docs/reference/typescript-api/orders/custom-order-states.md +18 -0
  767. package/docs/reference/typescript-api/orders/default-active-order-strategy.md +52 -0
  768. package/docs/reference/typescript-api/orders/default-guest-checkout-strategy.md +93 -0
  769. package/docs/reference/typescript-api/orders/default-order-item-price-calculation-strategy.md +33 -0
  770. package/docs/reference/typescript-api/orders/default-order-placed-strategy.md +33 -0
  771. package/docs/reference/typescript-api/orders/default-stock-allocation-strategy.md +33 -0
  772. package/docs/reference/typescript-api/orders/guest-checkout-strategy.md +56 -0
  773. package/docs/reference/typescript-api/orders/index.md +5 -0
  774. package/docs/reference/typescript-api/orders/merge-strategies.md +114 -0
  775. package/docs/reference/typescript-api/orders/order-by-code-access-strategy.md +91 -0
  776. package/docs/reference/typescript-api/orders/order-code-strategy.md +88 -0
  777. package/docs/reference/typescript-api/orders/order-interceptor.md +250 -0
  778. package/docs/reference/typescript-api/orders/order-item-price-calculation-strategy.md +91 -0
  779. package/docs/reference/typescript-api/orders/order-merge-strategy.md +80 -0
  780. package/docs/reference/typescript-api/orders/order-options.md +145 -0
  781. package/docs/reference/typescript-api/orders/order-placed-strategy.md +54 -0
  782. package/docs/reference/typescript-api/orders/order-process.md +271 -0
  783. package/docs/reference/typescript-api/orders/order-seller-strategy.md +124 -0
  784. package/docs/reference/typescript-api/orders/stock-allocation-strategy.md +46 -0
  785. package/docs/reference/typescript-api/payment/default-payment-process.md +13 -0
  786. package/docs/reference/typescript-api/payment/default-refund-process.md +13 -0
  787. package/docs/reference/typescript-api/payment/dummy-payment-handler.md +31 -0
  788. package/docs/reference/typescript-api/payment/index.md +5 -0
  789. package/docs/reference/typescript-api/payment/payment-method-config-options.md +69 -0
  790. package/docs/reference/typescript-api/payment/payment-method-eligibility-checker.md +95 -0
  791. package/docs/reference/typescript-api/payment/payment-method-handler.md +83 -0
  792. package/docs/reference/typescript-api/payment/payment-method-types.md +386 -0
  793. package/docs/reference/typescript-api/payment/payment-options.md +57 -0
  794. package/docs/reference/typescript-api/payment/payment-process.md +62 -0
  795. package/docs/reference/typescript-api/payment/payment-state.md +20 -0
  796. package/docs/reference/typescript-api/payment/payment-states.md +18 -0
  797. package/docs/reference/typescript-api/payment/payment-transition-data.md +42 -0
  798. package/docs/reference/typescript-api/payment/refund-process.md +55 -0
  799. package/docs/reference/typescript-api/payment/refund-state.md +16 -0
  800. package/docs/reference/typescript-api/payment/refund-states.md +18 -0
  801. package/docs/reference/typescript-api/payment/refund-transition-data.md +41 -0
  802. package/docs/reference/typescript-api/plugin/index.md +5 -0
  803. package/docs/reference/typescript-api/plugin/plugin-common-module.md +28 -0
  804. package/docs/reference/typescript-api/plugin/plugin-utilities.md +96 -0
  805. package/docs/reference/typescript-api/plugin/vendure-plugin-metadata.md +147 -0
  806. package/docs/reference/typescript-api/plugin/vendure-plugin.md +52 -0
  807. package/docs/reference/typescript-api/products-stock/catalog-options.md +70 -0
  808. package/docs/reference/typescript-api/products-stock/default-product-variant-price-calculation-strategy.md +38 -0
  809. package/docs/reference/typescript-api/products-stock/default-stock-display-strategy.md +40 -0
  810. package/docs/reference/typescript-api/products-stock/default-stock-location-strategy.md +47 -0
  811. package/docs/reference/typescript-api/products-stock/index.md +5 -0
  812. package/docs/reference/typescript-api/products-stock/multi-channel-stock-location-strategy.md +47 -0
  813. package/docs/reference/typescript-api/products-stock/product-variant-price-calculation-strategy.md +95 -0
  814. package/docs/reference/typescript-api/products-stock/stock-display-strategy.md +47 -0
  815. package/docs/reference/typescript-api/products-stock/stock-location-strategy.md +157 -0
  816. package/docs/reference/typescript-api/promotions/facet-value-checker.md +78 -0
  817. package/docs/reference/typescript-api/promotions/index.md +5 -0
  818. package/docs/reference/typescript-api/promotions/promotion-action.md +454 -0
  819. package/docs/reference/typescript-api/promotions/promotion-condition.md +117 -0
  820. package/docs/reference/typescript-api/promotions/promotion-options.md +35 -0
  821. package/docs/reference/typescript-api/request/allow-decorator.md +53 -0
  822. package/docs/reference/typescript-api/request/api-decorator.md +28 -0
  823. package/docs/reference/typescript-api/request/api-type.md +16 -0
  824. package/docs/reference/typescript-api/request/ctx-decorator.md +23 -0
  825. package/docs/reference/typescript-api/request/index.md +5 -0
  826. package/docs/reference/typescript-api/request/relations-decorator.md +116 -0
  827. package/docs/reference/typescript-api/request/request-context-service.md +47 -0
  828. package/docs/reference/typescript-api/request/request-context.md +205 -0
  829. package/docs/reference/typescript-api/request/transaction-decorator.md +82 -0
  830. package/docs/reference/typescript-api/scheduled-tasks/clean-sessions-task.md +40 -0
  831. package/docs/reference/typescript-api/scheduled-tasks/default-scheduler-plugin.md +86 -0
  832. package/docs/reference/typescript-api/scheduled-tasks/default-scheduler-strategy.md +76 -0
  833. package/docs/reference/typescript-api/scheduled-tasks/index.md +5 -0
  834. package/docs/reference/typescript-api/scheduled-tasks/scheduled-task.md +196 -0
  835. package/docs/reference/typescript-api/scheduled-tasks/scheduler-options.md +47 -0
  836. package/docs/reference/typescript-api/scheduled-tasks/scheduler-service.md +62 -0
  837. package/docs/reference/typescript-api/scheduled-tasks/scheduler-strategy.md +141 -0
  838. package/docs/reference/typescript-api/service-helpers/entity-duplicator-service.md +43 -0
  839. package/docs/reference/typescript-api/service-helpers/index.md +5 -0
  840. package/docs/reference/typescript-api/service-helpers/order-calculator.md +54 -0
  841. package/docs/reference/typescript-api/service-helpers/order-modifier.md +91 -0
  842. package/docs/reference/typescript-api/service-helpers/product-price-applicator.md +62 -0
  843. package/docs/reference/typescript-api/service-helpers/slug-validator.md +86 -0
  844. package/docs/reference/typescript-api/service-helpers/translatable-saver.md +66 -0
  845. package/docs/reference/typescript-api/service-helpers/translator-service.md +63 -0
  846. package/docs/reference/typescript-api/services/administrator-service.md +71 -0
  847. package/docs/reference/typescript-api/services/asset-service.md +177 -0
  848. package/docs/reference/typescript-api/services/auth-service.md +54 -0
  849. package/docs/reference/typescript-api/services/channel-service.md +111 -0
  850. package/docs/reference/typescript-api/services/collection-service.md +186 -0
  851. package/docs/reference/typescript-api/services/country-service.md +71 -0
  852. package/docs/reference/typescript-api/services/customer-group-service.md +77 -0
  853. package/docs/reference/typescript-api/services/customer-service.md +203 -0
  854. package/docs/reference/typescript-api/services/entity-slug-service.md +37 -0
  855. package/docs/reference/typescript-api/services/facet-service.md +95 -0
  856. package/docs/reference/typescript-api/services/facet-value-service.md +104 -0
  857. package/docs/reference/typescript-api/services/fulfillment-service.md +69 -0
  858. package/docs/reference/typescript-api/services/global-settings-service.md +41 -0
  859. package/docs/reference/typescript-api/services/history-service.md +172 -0
  860. package/docs/reference/typescript-api/services/index.md +5 -0
  861. package/docs/reference/typescript-api/services/initializer-service.md +36 -0
  862. package/docs/reference/typescript-api/services/order-service.md +440 -0
  863. package/docs/reference/typescript-api/services/order-testing-service.md +44 -0
  864. package/docs/reference/typescript-api/services/payment-method-service.md +105 -0
  865. package/docs/reference/typescript-api/services/payment-service.md +105 -0
  866. package/docs/reference/typescript-api/services/product-option-group-service.md +67 -0
  867. package/docs/reference/typescript-api/services/product-option-service.md +64 -0
  868. package/docs/reference/typescript-api/services/product-service.md +111 -0
  869. package/docs/reference/typescript-api/services/product-variant-service.md +179 -0
  870. package/docs/reference/typescript-api/services/promotion-service.md +127 -0
  871. package/docs/reference/typescript-api/services/province-service.md +59 -0
  872. package/docs/reference/typescript-api/services/role-service.md +113 -0
  873. package/docs/reference/typescript-api/services/search-service.md +37 -0
  874. package/docs/reference/typescript-api/services/seller-service.md +65 -0
  875. package/docs/reference/typescript-api/services/session-service.md +105 -0
  876. package/docs/reference/typescript-api/services/settings-store-service.md +194 -0
  877. package/docs/reference/typescript-api/services/shipping-method-service.md +95 -0
  878. package/docs/reference/typescript-api/services/slug-service.md +35 -0
  879. package/docs/reference/typescript-api/services/stock-level-service.md +62 -0
  880. package/docs/reference/typescript-api/services/stock-location-service.md +115 -0
  881. package/docs/reference/typescript-api/services/stock-movement-service.md +95 -0
  882. package/docs/reference/typescript-api/services/tag-service.md +71 -0
  883. package/docs/reference/typescript-api/services/tax-category-service.md +59 -0
  884. package/docs/reference/typescript-api/services/tax-rate-service.md +66 -0
  885. package/docs/reference/typescript-api/services/user-service.md +132 -0
  886. package/docs/reference/typescript-api/services/zone-service.md +77 -0
  887. package/docs/reference/typescript-api/settings-store/cleanup-orphaned-settings-store-entries-options.md +48 -0
  888. package/docs/reference/typescript-api/settings-store/cleanup-orphaned-settings-store-entries-result.md +41 -0
  889. package/docs/reference/typescript-api/settings-store/index.md +38 -0
  890. package/docs/reference/typescript-api/settings-store/orphaned-settings-store-entry.md +48 -0
  891. package/docs/reference/typescript-api/settings-store/set-settings-store-value-result.md +42 -0
  892. package/docs/reference/typescript-api/settings-store/settings-store-field-config.md +92 -0
  893. package/docs/reference/typescript-api/settings-store/settings-store-registration.md +36 -0
  894. package/docs/reference/typescript-api/settings-store/settings-store-scope-function.md +35 -0
  895. package/docs/reference/typescript-api/settings-store/settings-store-scopes.md +36 -0
  896. package/docs/reference/typescript-api/shipping/check-shipping-eligibility-checker-fn.md +27 -0
  897. package/docs/reference/typescript-api/shipping/default-shipping-line-assignment-strategy.md +33 -0
  898. package/docs/reference/typescript-api/shipping/index.md +5 -0
  899. package/docs/reference/typescript-api/shipping/shipping-calculator.md +121 -0
  900. package/docs/reference/typescript-api/shipping/shipping-eligibility-checker-config.md +39 -0
  901. package/docs/reference/typescript-api/shipping/shipping-eligibility-checker.md +60 -0
  902. package/docs/reference/typescript-api/shipping/shipping-line-assignment-strategy.md +75 -0
  903. package/docs/reference/typescript-api/shipping/shipping-options.md +63 -0
  904. package/docs/reference/typescript-api/shipping/should-run-check-fn.md +44 -0
  905. package/docs/reference/typescript-api/state-machine/fsm.md +66 -0
  906. package/docs/reference/typescript-api/state-machine/index.md +5 -0
  907. package/docs/reference/typescript-api/state-machine/state-machine-config.md +103 -0
  908. package/docs/reference/typescript-api/state-machine/transitions.md +43 -0
  909. package/docs/reference/typescript-api/tax/address-based-tax-zone-strategy.md +57 -0
  910. package/docs/reference/typescript-api/tax/default-tax-line-calculation-strategy.md +33 -0
  911. package/docs/reference/typescript-api/tax/default-tax-zone-strategy.md +35 -0
  912. package/docs/reference/typescript-api/tax/index.md +5 -0
  913. package/docs/reference/typescript-api/tax/tax-line-calculation-strategy.md +90 -0
  914. package/docs/reference/typescript-api/tax/tax-options.md +35 -0
  915. package/docs/reference/typescript-api/tax/tax-zone-strategy.md +54 -0
  916. package/docs/reference/typescript-api/telemetry/index.md +5 -0
  917. package/docs/reference/typescript-api/telemetry/instrument.md +47 -0
  918. package/docs/reference/typescript-api/telemetry/instrumentation-strategy.md +35 -0
  919. package/docs/reference/typescript-api/telemetry/wrapped-method-args.md +56 -0
  920. package/docs/reference/typescript-api/testing/create-error-result-guard.md +33 -0
  921. package/docs/reference/typescript-api/testing/create-test-environment.md +47 -0
  922. package/docs/reference/typescript-api/testing/error-result-guard.md +73 -0
  923. package/docs/reference/typescript-api/testing/get-superadmin-context.md +23 -0
  924. package/docs/reference/typescript-api/testing/index.md +5 -0
  925. package/docs/reference/typescript-api/testing/register-initializer.md +27 -0
  926. package/docs/reference/typescript-api/testing/simple-graph-qlclient.md +123 -0
  927. package/docs/reference/typescript-api/testing/test-config.md +30 -0
  928. package/docs/reference/typescript-api/testing/test-db-initializer.md +60 -0
  929. package/docs/reference/typescript-api/testing/test-environment.md +42 -0
  930. package/docs/reference/typescript-api/testing/test-server-options.md +47 -0
  931. package/docs/reference/typescript-api/testing/test-server.md +60 -0
  932. package/docs/reference/typescript-api/testing/testing-logger.md +140 -0
  933. package/docs/reference/typescript-api/worker/bootstrap-worker.md +76 -0
  934. package/docs/reference/typescript-api/worker/index.md +5 -0
  935. package/docs/reference/typescript-api/worker/vendure-worker.md +50 -0
  936. package/docs/reference/typescript-api/worker/worker-health-check-config.md +41 -0
  937. package/docs/user-guide/catalog/collections.md +27 -0
  938. package/docs/user-guide/catalog/facets.md +34 -0
  939. package/docs/user-guide/catalog/product-variants.png +0 -0
  940. package/docs/user-guide/catalog/products.md +35 -0
  941. package/docs/user-guide/catalog/screen-facet-add.webp +0 -0
  942. package/docs/user-guide/catalog/screen-facet-list.webp +0 -0
  943. package/docs/user-guide/catalog/screen-inventory.webp +0 -0
  944. package/docs/user-guide/customers/index.md +30 -0
  945. package/docs/user-guide/customers/screen-customer-group.webp +0 -0
  946. package/docs/user-guide/index.md +7 -0
  947. package/docs/user-guide/localization/index.md +42 -0
  948. package/docs/user-guide/localization/screen-ui-language.webp +0 -0
  949. package/docs/user-guide/orders/draft-orders.md +28 -0
  950. package/docs/user-guide/orders/order-state-diagram-for-admin.png +0 -0
  951. package/docs/user-guide/orders/orders.md +65 -0
  952. package/docs/user-guide/orders/screen-fulfillment-shipped.webp +0 -0
  953. package/docs/user-guide/orders/screen-fulfillment.webp +0 -0
  954. package/docs/user-guide/orders/screen-modification.webp +0 -0
  955. package/docs/user-guide/orders/screen-modify-button.webp +0 -0
  956. package/docs/user-guide/orders/screen-refund-button.webp +0 -0
  957. package/docs/user-guide/orders/screen-settle-payment.webp +0 -0
  958. package/docs/user-guide/promotions/index.md +44 -0
  959. package/docs/user-guide/settings/administrators-roles.md +34 -0
  960. package/docs/user-guide/settings/channels.md +18 -0
  961. package/docs/user-guide/settings/countries-zones.md +12 -0
  962. package/docs/user-guide/settings/global-settings.md +12 -0
  963. package/docs/user-guide/settings/payment-methods.md +32 -0
  964. package/docs/user-guide/settings/screen-shipping-test.webp +0 -0
  965. package/docs/user-guide/settings/screen-translations.webp +0 -0
  966. package/docs/user-guide/settings/shipping-methods.md +55 -0
  967. package/docs/user-guide/settings/taxes.md +32 -0
  968. package/package.json +32 -0
@@ -0,0 +1,494 @@
1
+ ---
2
+ title: "Google OAuth Authentication"
3
+ ---
4
+
5
+
6
+ import Tabs from '@theme/Tabs';
7
+ import TabItem from '@theme/TabItem';
8
+
9
+ :::info
10
+ The complete source of the following example plugin can be found here: [example-plugins/google-auth-plugin](https://github.com/vendurehq/examples/tree/publish/examples/shop-google-auth)
11
+ :::
12
+
13
+ **Google OAuth authentication** allows customers to sign in using their Google accounts, providing a seamless experience that eliminates the need for password-based registration.
14
+
15
+ This is particularly valuable for **consumer-facing stores** where users prefer the convenience and security of Google's authentication system, or for **B2B platforms** where organizations use Google Workspace.
16
+
17
+ This guide shows you how to **add Google OAuth support** to your Vendure store using a custom [AuthenticationStrategy](/reference/typescript-api/auth/authentication-strategy/) and Google Identity Services.
18
+
19
+ An **AuthenticationStrategy** in Vendure defines how users can log in to your store. Learn more about [authentication in Vendure](/guides/core-concepts/auth/).
20
+
21
+ ## Creating the Plugin
22
+
23
+ **First, use the Vendure CLI** to create a new plugin for Google authentication:
24
+
25
+ ```bash
26
+ npx vendure add -p GoogleAuthPlugin
27
+ ```
28
+
29
+ This creates a basic [plugin](/guides/developer-guide/plugins/) structure with the necessary files.
30
+
31
+ ## Installing Dependencies
32
+
33
+ **Google authentication requires** the Google Auth Library for token verification:
34
+
35
+ ```bash
36
+ npm install google-auth-library
37
+ ```
38
+
39
+ This library handles ID token verification securely on the server side, ensuring the tokens received from Google are authentic.
40
+
41
+ ## Creating the Authentication Strategy
42
+
43
+ **Now create the Google authentication strategy.** Unlike traditional OAuth flows that use authorization codes, Google Identity Services provides **ID tokens directly**, which we verify server-side:
44
+
45
+ ```ts title="src/plugins/google-auth-plugin/google-auth-strategy.ts"
46
+ import {
47
+ AuthenticationStrategy,
48
+ ExternalAuthenticationService,
49
+ Injector,
50
+ Logger,
51
+ RequestContext,
52
+ User,
53
+ } from '@vendure/core';
54
+ import { OAuth2Client } from 'google-auth-library';
55
+ import { DocumentNode } from 'graphql';
56
+ import { gql } from 'graphql-tag';
57
+
58
+ export type GoogleAuthData = {
59
+ token: string;
60
+ }
61
+
62
+ export interface GoogleAuthOptions {
63
+ googleClientId: string;
64
+ onUserCreated?: (ctx: RequestContext, injector: Injector, user: User) => void;
65
+ onUserFound?: (ctx: RequestContext, injector: Injector, user: User) => void;
66
+ }
67
+
68
+ export class GoogleAuthStrategy implements AuthenticationStrategy<GoogleAuthData> {
69
+ readonly name = 'google';
70
+ private client: OAuth2Client;
71
+ private externalAuthenticationService: ExternalAuthenticationService;
72
+ private logger: Logger;
73
+ private injector: Injector;
74
+
75
+ constructor(private options: GoogleAuthOptions) {
76
+ // Initialize Google OAuth2Client for token verification
77
+ this.client = new OAuth2Client(options.googleClientId);
78
+ this.logger = new Logger();
79
+ }
80
+
81
+ init(injector: Injector) {
82
+ // Get services we'll use for customer management
83
+ this.externalAuthenticationService = injector.get(ExternalAuthenticationService);
84
+ this.injector = injector;
85
+ }
86
+
87
+ defineInputType(): DocumentNode {
88
+ // Define the GraphQL input type for the authenticate mutation
89
+ return gql`
90
+ input GoogleAuthInput {
91
+ token: String!
92
+ }
93
+ `;
94
+ }
95
+
96
+ async authenticate(ctx: RequestContext, data: GoogleAuthData): Promise<User | false> {
97
+ try {
98
+ // Step 1: Verify the Google ID token
99
+ const ticket = await this.client.verifyIdToken({
100
+ idToken: data.token,
101
+ audience: this.options.googleClientId,
102
+ });
103
+
104
+ const payload = ticket.getPayload();
105
+
106
+ if (!payload || !payload.email) {
107
+ this.logger.error('Invalid Google token or missing email', 'GoogleAuthStrategy');
108
+ return false;
109
+ }
110
+
111
+ // Step 2: Check if this Google user already has a Vendure account
112
+ const existingUser = await this.externalAuthenticationService.findCustomerUser(
113
+ ctx,
114
+ this.name,
115
+ payload.sub, // Google's unique user ID
116
+ );
117
+
118
+ if (existingUser) {
119
+ // User exists, log them in
120
+ this.logger.verbose(`User found: ${existingUser.identifier}`, 'GoogleAuthStrategy');
121
+ this.options.onUserFound?.(ctx, this.injector, existingUser);
122
+ return existingUser;
123
+ }
124
+
125
+ // Step 3: Create a new customer account for first-time Google users
126
+ const createdUser = await this.externalAuthenticationService.createCustomerAndUser(ctx, {
127
+ strategy: this.name,
128
+ externalIdentifier: payload.sub, // Store Google user ID
129
+ verified: payload.email_verified || false, // Use Google's verification status
130
+ emailAddress: payload.email,
131
+ firstName: payload.given_name || 'Google',
132
+ lastName: payload.family_name || 'User',
133
+ });
134
+
135
+ this.options.onUserCreated?.(ctx, this.injector, createdUser);
136
+
137
+ return createdUser;
138
+ } catch (error) {
139
+ this.logger.error(`Google authentication failed: ${error.message}`, 'GoogleAuthStrategy');
140
+ return false;
141
+ }
142
+ }
143
+ }
144
+ ```
145
+
146
+ The strategy uses Google's [OAuth2Client](https://googleapis.dev/nodejs/google-auth-library/latest/classes/OAuth2Client.html) to verify ID tokens and Vendure's [ExternalAuthenticationService](/reference/typescript-api/auth/external-authentication-service/) to handle customer creation.
147
+
148
+ Key differences from other OAuth flows:
149
+ - **ID Token Verification**: Google provides signed JWT tokens that we verify directly
150
+ - **No Code Exchange**: Unlike GitHub OAuth, there's no authorization code to exchange
151
+ - **Email Verification**: We respect Google's email verification status
152
+ - **Fallback Names**: Provides defaults if Google profile lacks name information
153
+
154
+ ## Registering the Strategy
155
+
156
+ **Now update the generated plugin file** to register your authentication strategy:
157
+
158
+ ```ts title="src/plugins/google-auth-plugin/google-auth-plugin.plugin.ts"
159
+ import { PluginCommonModule, VendurePlugin } from '@vendure/core';
160
+
161
+ import { GoogleAuthStrategy } from './google-auth-strategy';
162
+
163
+ export interface GoogleAuthPluginOptions {
164
+ googleClientId: string;
165
+ }
166
+
167
+ @VendurePlugin({
168
+ imports: [PluginCommonModule],
169
+ configuration: (config) => {
170
+ const options = GoogleAuthPlugin.options;
171
+
172
+ if (options?.googleClientId) {
173
+ config.authOptions.shopAuthenticationStrategy.push(
174
+ new GoogleAuthStrategy({ googleClientId: options.googleClientId })
175
+ );
176
+ }
177
+ return config;
178
+ },
179
+ })
180
+ export class GoogleAuthPlugin {
181
+ static options: GoogleAuthPluginOptions;
182
+
183
+ static init(options: GoogleAuthPluginOptions) {
184
+ this.options = options;
185
+ return GoogleAuthPlugin;
186
+ }
187
+ }
188
+ ```
189
+
190
+ ## Adding to Vendure Config
191
+
192
+ **Add the plugin** to your Vendure configuration:
193
+
194
+ ```ts title="src/vendure-config.ts"
195
+ import { VendureConfig } from '@vendure/core';
196
+ import { GoogleAuthPlugin } from './plugins/google-auth-plugin/google-auth-plugin.plugin';
197
+
198
+ export const config: VendureConfig = {
199
+ // ... other config
200
+ plugins: [
201
+ // ... other plugins
202
+ GoogleAuthPlugin.init({
203
+ googleClientId: process.env.GOOGLE_CLIENT_ID!,
204
+ }),
205
+ ],
206
+ // ... rest of config
207
+ };
208
+ ```
209
+
210
+ ## Setting up Google OAuth App
211
+
212
+ **Before you can test the integration,** you need to create a Google OAuth 2.0 Client:
213
+
214
+ 1. **Go to** the [Google Cloud Console](https://console.cloud.google.com/)
215
+ 2. **Create a new project** or select an existing one
216
+ 3. **Navigate to** **APIs & Services → Credentials**
217
+ 4. **Click** **"Create Credentials" → "OAuth 2.0 Client ID"**
218
+ 5. **Select** **"Web application"** as the application type
219
+ 6. **Configure the client:**
220
+ - **Name**: Your app name (e.g., "My Vendure Store")
221
+ - **Authorized JavaScript origins**: `http://localhost:3001`
222
+ - **Authorized redirect URIs**: `http://localhost:3001/sign-in`
223
+
224
+ :::note
225
+ The **localhost URLs** shown here are for **local development only.** In production, replace `localhost:3001` with your actual domain (e.g., `https://mystore.com`).
226
+ :::
227
+
228
+ 7. **Click "Create"** and copy the Client ID
229
+
230
+ **Add the client ID** to your environment:
231
+
232
+ ```bash title=".env"
233
+ GOOGLE_CLIENT_ID=your_google_client_id.apps.googleusercontent.com
234
+ ```
235
+
236
+ ## Frontend Integration
237
+
238
+ ### Creating the Sign-in Component
239
+
240
+ **For the frontend,** we'll use Google's official Identity Services library, which provides a **secure and user-friendly sign-in experience:**
241
+
242
+ ```typescript title="components/GoogleSignInButton.tsx"
243
+ 'use client';
244
+
245
+ import { useEffect, useState } from 'react';
246
+ import { useRouter } from 'next/navigation';
247
+
248
+ const GOOGLE_CLIENT_ID = process.env.NEXT_PUBLIC_GOOGLE_CLIENT_ID;
249
+
250
+ declare global {
251
+ interface Window {
252
+ google: any;
253
+ handleCredentialResponse?: (response: any) => void;
254
+ }
255
+ }
256
+
257
+ export function GoogleSignInButton() {
258
+ const router = useRouter();
259
+ const [pending, setPending] = useState(false);
260
+
261
+ useEffect(() => {
262
+ // Define the callback function globally
263
+ window.handleCredentialResponse = async (response: any) => {
264
+ setPending(true);
265
+ try {
266
+ const result = await authenticateWithGoogle(response.credential);
267
+
268
+ if (result?.success) {
269
+ router.replace('/account');
270
+ } else {
271
+ console.error('Authentication failed:', result?.message);
272
+ }
273
+ } catch (error) {
274
+ console.error('Google authentication error:', error);
275
+ } finally {
276
+ setPending(false);
277
+ }
278
+ };
279
+
280
+ // Load Google Identity Services
281
+ if (!window.google && GOOGLE_CLIENT_ID) {
282
+ const script = document.createElement('script');
283
+ script.src = 'https://accounts.google.com/gsi/client';
284
+ script.async = true;
285
+ script.onload = () => {
286
+ window.google.accounts.id.initialize({
287
+ client_id: GOOGLE_CLIENT_ID,
288
+ callback: window.handleCredentialResponse,
289
+ });
290
+ };
291
+ document.head.appendChild(script);
292
+ }
293
+
294
+ return () => {
295
+ delete window.handleCredentialResponse;
296
+ };
297
+ }, [router]);
298
+
299
+ const handleGoogleSignIn = () => {
300
+ if (!GOOGLE_CLIENT_ID) {
301
+ console.error('Google Client ID not configured');
302
+ return;
303
+ }
304
+
305
+ if (window.google) {
306
+ window.google.accounts.id.prompt();
307
+ } else {
308
+ console.error('Google SDK not loaded');
309
+ }
310
+ };
311
+
312
+ return (
313
+ <button
314
+ onClick={handleGoogleSignIn}
315
+ disabled={pending}
316
+ className="flex items-center justify-center w-full px-4 py-2 border border-gray-300 rounded-md shadow-sm text-sm font-medium text-gray-700 bg-white hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500"
317
+ >
318
+ {pending ? (
319
+ 'Authenticating...'
320
+ ) : (
321
+ <>
322
+ <svg className="w-5 h-5 mr-2" viewBox="0 0 24 24">
323
+ <path fill="#4285F4" d="M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92c-.26 1.37-1.04 2.53-2.21 3.31v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.09z"/>
324
+ <path fill="#34A853" d="M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z"/>
325
+ <path fill="#FBBC05" d="M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l2.85-2.22.81-.62z"/>
326
+ <path fill="#EA4335" d="M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z"/>
327
+ </svg>
328
+ Continue with Google
329
+ </>
330
+ )}
331
+ </button>
332
+ );
333
+ }
334
+ ```
335
+
336
+ ### Creating the Authentication Function
337
+
338
+ **Create a server action** to handle the Google authentication:
339
+
340
+ ```typescript title="actions/auth.ts"
341
+ 'use server';
342
+
343
+ import { gql } from 'graphql-request';
344
+
345
+ const AUTHENTICATE_MUTATION = gql`
346
+ mutation AuthenticateWithGoogle($input: AuthenticationInput!) {
347
+ authenticate(input: $input) {
348
+ ... on CurrentUser {
349
+ id
350
+ identifier
351
+ channels {
352
+ code
353
+ token
354
+ permissions
355
+ }
356
+ }
357
+ ... on InvalidCredentialsError {
358
+ authenticationError
359
+ errorCode
360
+ message
361
+ }
362
+ ... on NotVerifiedError {
363
+ errorCode
364
+ message
365
+ }
366
+ }
367
+ }
368
+ `;
369
+
370
+ export async function authenticateWithGoogle(token: string) {
371
+ try {
372
+ const result = await vendureClient.request(AUTHENTICATE_MUTATION, {
373
+ input: {
374
+ google: {
375
+ token
376
+ }
377
+ }
378
+ });
379
+
380
+ if (result.authenticate.__typename === 'CurrentUser') {
381
+ // Authentication successful
382
+ return { success: true, user: result.authenticate };
383
+ } else {
384
+ // Handle authentication error
385
+ return {
386
+ success: false,
387
+ message: result.authenticate.message
388
+ };
389
+ }
390
+ } catch (error) {
391
+ console.error('Google authentication error:', error);
392
+ return {
393
+ success: false,
394
+ message: 'Authentication failed'
395
+ };
396
+ }
397
+ }
398
+ ```
399
+
400
+ **Add your Google Client ID** to the frontend environment:
401
+
402
+ ```bash title=".env.local"
403
+ NEXT_PUBLIC_GOOGLE_CLIENT_ID=your_google_client_id.apps.googleusercontent.com
404
+ VENDURE_API_ENDPOINT=http://localhost:3000/shop-api
405
+ ```
406
+
407
+ **The Google Identity Services flow works as follows:**
408
+
409
+ 1. **User clicks "Continue with Google"** → Google popup appears
410
+ 2. **User signs in with Google** → Google returns an ID token
411
+ 3. **Frontend sends the token to Vendure** → Vendure verifies token with Google
412
+ 4. **If valid, Vendure creates/finds customer** → User is logged in
413
+
414
+ ## Using the GraphQL API
415
+
416
+ **Once your plugin is running,** Google authentication will be **available in your shop API:**
417
+
418
+ <Tabs>
419
+ <TabItem value="Mutation" label="Mutation" default>
420
+
421
+ ```graphql
422
+ mutation AuthenticateWithGoogle {
423
+ authenticate(input: {
424
+ google: {
425
+ token: "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9..."
426
+ }
427
+ }) {
428
+ ... on CurrentUser {
429
+ id
430
+ identifier
431
+ channels {
432
+ code
433
+ token
434
+ permissions
435
+ }
436
+ }
437
+ ... on InvalidCredentialsError {
438
+ authenticationError
439
+ errorCode
440
+ message
441
+ }
442
+ ... on NotVerifiedError {
443
+ errorCode
444
+ message
445
+ }
446
+ }
447
+ }
448
+ ```
449
+
450
+ </TabItem>
451
+ <TabItem value="Response" label="Response">
452
+
453
+ ```json
454
+ {
455
+ "data": {
456
+ "authenticate": {
457
+ "id": "1",
458
+ "identifier": "user@gmail.com",
459
+ "channels": [
460
+ {
461
+ "code": "__default_channel__",
462
+ "token": "session_token_here",
463
+ "permissions": ["Authenticated"]
464
+ }
465
+ ]
466
+ }
467
+ }
468
+ }
469
+ ```
470
+
471
+ </TabItem>
472
+ </Tabs>
473
+
474
+ ## Customer Data Management
475
+
476
+ **Google-authenticated customers** are managed like any other Vendure [Customer](/reference/typescript-api/entities/customer/):
477
+
478
+ - **Email**: Uses the user's actual Google email address
479
+ - **Verification**: Inherits Google's email verification status
480
+ - **External ID**: Google's unique user ID (`sub` claim) for future authentication
481
+ - **Profile**: First and last names from Google profile, with fallbacks
482
+ - **Security**: No password stored - authentication handled entirely by Google
483
+
484
+ This means **Google users work seamlessly** with Vendure's [order management](/guides/core-concepts/orders/), [promotions](/guides/core-concepts/promotions/), and all customer workflows.
485
+
486
+ ## Testing the Integration
487
+
488
+ **To test your Google OAuth integration:**
489
+
490
+ 1. **Start your Vendure server** with the plugin configured
491
+ 2. **Navigate to your storefront** and click "Continue with Google"
492
+ 3. **Complete the Google OAuth flow** when prompted
493
+ 4. **Verify customer creation** in the Vendure Dashboard
494
+ 5. **Test repeat logins** to ensure existing customers are found correctly
@@ -0,0 +1,197 @@
1
+ ---
2
+ title: "Multi-vendor Marketplaces"
3
+ ---
4
+
5
+ # Multi-vendor Marketplaces
6
+
7
+ Vendure v2.0 introduced a number of changes and new APIs to enable developers to build multi-vendor marketplace apps.
8
+
9
+ This is a type of application in which multiple sellers are able to list products, and then customers can create orders containing products from one or more of these sellers. Well-known examples include Amazon, Ebay, Etsy and Airbnb.
10
+
11
+ This guide introduces the major concepts & APIs you will need to understand in order to implement your own multi-vendor marketplace application.
12
+
13
+ ## Multi-vendor plugin
14
+
15
+ All the concepts presented here have been implemented in our [example multi-vendor plugin](https://github.com/vendurehq/vendure/tree/master/packages/dev-server/example-plugins/multivendor-plugin). The guides here will refer to specific parts of this plugin which you should consult to get a full understanding of how an implementation would look.
16
+
17
+ :::caution
18
+ **Note:** the [example multi-vendor plugin](https://github.com/vendurehq/vendure/tree/master/packages/dev-server/example-plugins/multivendor-plugin) is for educational purposes only, and for the sake of clarity leaves out several parts that would be required in a production-ready solution, such as email verification and setup of a real payment solution.
19
+ :::
20
+
21
+ ![The Dashboard Aggregate Order screen](./aggregate-order.webp)
22
+
23
+ ## Sellers, Channels & Roles
24
+
25
+ The core of Vendure's multi-vendor support is Channels. Read the [Channels guide](/guides/core-concepts/channels/) to get a more detailed understanding of how they work.
26
+
27
+ Each Channel is assigned to a [Seller](/reference/typescript-api/entities/seller/), which is another term for the vendor who is selling things in our marketplace.
28
+
29
+ So the first thing to do is to implement a way to create a new Channel and Seller.
30
+
31
+ In the multi-vendor plugin, we have defined a new mutation in the Shop API which allows a new seller to register on our marketplace:
32
+
33
+ ```graphql title="Shop API"
34
+ mutation RegisterSeller {
35
+ registerNewSeller(input: {
36
+ shopName: "Bob's Parts",
37
+ seller: {
38
+ firstName: "Bob"
39
+ lastName: "Dobalina"
40
+ emailAddress: "bob@bobs-parts.com"
41
+ password: "test",
42
+ }
43
+ }) {
44
+ id
45
+ code
46
+ token
47
+ }
48
+ }
49
+ ```
50
+
51
+ Executing the `registerNewSeller` mutation does the following:
52
+
53
+ - Create a new [Seller](/reference/typescript-api/entities/seller/) representing the shop "Bob's Parts"
54
+ - Create a new [Channel](/reference/typescript-api/entities/channel) and associate it with the new Seller
55
+ - Create a [Role](/reference/typescript-api/entities/role) & [Administrator](/reference/typescript-api/entities/administrator) for Bob to access his shop admin account
56
+ - Create a [ShippingMethod](/reference/typescript-api/entities/shipping-method) for Bob's shop
57
+ - Create a [StockLocation](/reference/typescript-api/entities/stock-location) for Bob's shop
58
+
59
+ Bob can now log in to the Dashboard using the provided credentials and begin creating products to sell!
60
+
61
+ ### Keeping prices synchronized
62
+
63
+ In some marketplaces, the same product may be sold by multiple sellers. When this is the case, the product and its variants
64
+ will be assigned not only to the default channel, but to multiple other channels as well - see the
65
+ [Channels, Currencies & Prices section](/guides/core-concepts/channels/#channels-currencies--prices) for a visual explanation of how this works.
66
+
67
+ This means that there will be multiple ProductVariantPrice entities per variant, one for each channel.
68
+
69
+ In order
70
+ to keep prices synchronized across all channels, the example multi-vendor plugin sets the `syncPricesAcrossChannels` property
71
+ of the [DefaultProductVariantPriceUpdateStrategy](/reference/typescript-api/configuration/product-variant-price-update-strategy#defaultproductvariantpriceupdatestrategy)
72
+ to `true`. Your own multi-vendor implementation may require more sophisticated price synchronization logic, in which case
73
+ you can implement your own custom [ProductVariantPriceUpdateStrategy](/reference/typescript-api/configuration/product-variant-price-update-strategy).
74
+
75
+ ## Assigning OrderLines to the correct Seller
76
+
77
+ In order to correctly split the Order later, we need to assign each added OrderLine to the correct Seller. This is done with the [OrderSellerStrategy](/reference/typescript-api/orders/order-seller-strategy/) API, and specifically the `setOrderLineSellerChannel()` method.
78
+
79
+ The following logic will run any time the `addItemToOrder` mutation is executed from our storefront:
80
+
81
+ ```ts
82
+ export class MultivendorSellerStrategy implements OrderSellerStrategy {
83
+ // other properties omitted for brevity
84
+
85
+ async setOrderLineSellerChannel(ctx: RequestContext, orderLine: OrderLine) {
86
+ await this.entityHydrator.hydrate(ctx, orderLine.productVariant, { relations: ['channels'] });
87
+ const defaultChannel = await this.channelService.getDefaultChannel();
88
+
89
+ // If a ProductVariant is assigned to exactly 2 Channels, then one is the default Channel
90
+ // and the other is the seller's Channel.
91
+ if (orderLine.productVariant.channels.length === 2) {
92
+ const sellerChannel = orderLine.productVariant.channels.find(
93
+ c => !idsAreEqual(c.id, defaultChannel.id),
94
+ );
95
+ if (sellerChannel) {
96
+ return sellerChannel;
97
+ }
98
+ }
99
+ }
100
+ }
101
+ ```
102
+
103
+ The end result is that each OrderLine in the Order will have its `sellerChannelId` property set to the correct Channel for the Seller.
104
+
105
+ ## Shipping
106
+
107
+ When it comes time to choose a ShippingMethod for the Order, we need to ensure that the customer can only choose from the ShippingMethods which are supported by the Seller. To do this, we need to implement a [ShippingEligibilityChecker](/reference/typescript-api/shipping/shipping-eligibility-checker/) which will filter the available ShippingMethods based on the `sellerChannelId` properties of the OrderLines.
108
+
109
+ Here's how we do it in the example plugin:
110
+
111
+ ```ts
112
+ export const multivendorShippingEligibilityChecker = new ShippingEligibilityChecker({
113
+ // other properties omitted for brevity
114
+
115
+ check: async (ctx, order, args, method) => {
116
+ await entityHydrator.hydrate(ctx, method, { relations: ['channels'] });
117
+ await entityHydrator.hydrate(ctx, order, { relations: ['lines.sellerChannel'] });
118
+ const sellerChannel = method.channels.find(c => c.code !== DEFAULT_CHANNEL_CODE);
119
+ if (!sellerChannel) {
120
+ return false;
121
+ }
122
+ for (const line of order.lines) {
123
+ if (idsAreEqual(line.sellerChannelId, sellerChannel.id)) {
124
+ return true;
125
+ }
126
+ }
127
+ return false;
128
+ },
129
+ });
130
+ ```
131
+
132
+ In the storefront, when it comes time to assign ShippingMethods to the Order, we need to ensure that
133
+ every OrderLine is covered by a valid ShippingMethod. We pass the ids of the eligible ShippingMethods to the `setOrderShippingMethod` mutation:
134
+
135
+ ```graphql
136
+ mutation SetShippingMethod($ids: [ID!]!) {
137
+ setOrderShippingMethod(shippingMethodId: $ids) {
138
+ ... on Order {
139
+ id
140
+ state
141
+ # ...etc
142
+ }
143
+ ... on ErrorResult {
144
+ errorCode
145
+ message
146
+ }
147
+ }
148
+ }
149
+ ```
150
+
151
+ Now we need a way to assign the correct method to each line in an Order. This is done with the [ShippingLineAssignmentStrategy](/reference/typescript-api/shipping/shipping-line-assignment-strategy/) API.
152
+
153
+ We will again be relying on the `sellerChannelId` property of the OrderLines to determine which ShippingMethod to assign to each line. Here's how we do it in the example plugin:
154
+
155
+ ```ts
156
+ export class MultivendorShippingLineAssignmentStrategy implements ShippingLineAssignmentStrategy {
157
+ // other properties omitted for brevity
158
+
159
+ async assignShippingLineToOrderLines(ctx: RequestContext, shippingLine: ShippingLine, order: Order) {
160
+ // First we need to ensure the required relations are available
161
+ // to work with.
162
+ const defaultChannel = await this.channelService.getDefaultChannel();
163
+ await this.entityHydrator.hydrate(ctx, shippingLine, { relations: ['shippingMethod.channels'] });
164
+ const { channels } = shippingLine.shippingMethod;
165
+
166
+ // We assume that, if a ShippingMethod is assigned to exactly 2 Channels,
167
+ // then one is the default Channel and the other is the seller's Channel.
168
+ if (channels.length === 2) {
169
+ const sellerChannel = channels.find(c => !idsAreEqual(c.id, defaultChannel.id));
170
+ if (sellerChannel) {
171
+ // Once we have established the seller's Channel, we can filter the OrderLines
172
+ // that belong to that Channel. The `sellerChannelId` was previously established
173
+ // in the `OrderSellerStrategy.setOrderLineSellerChannel()` method.
174
+ return order.lines.filter(line => idsAreEqual(line.sellerChannelId, sellerChannel.id));
175
+ }
176
+ }
177
+ return order.lines;
178
+ }
179
+ }
180
+ ```
181
+
182
+ ## Splitting orders & payment
183
+
184
+ When it comes to payments, there are many different ways that a multi-vendor marketplace might want to handle this. For example, the marketplace may collect all payments and then later disburse the funds to the Sellers. Or the marketplace may allow each Seller to connect their own payment gateway and collect payments directly.
185
+
186
+ In the example plugin, we have implemented a simplified version of a service like [Stripe Connect](https://stripe.com/connect), whereby each Seller has a `connectedAccountId` (we auto-generate a random string for the example when registering the Seller). When configuring the plugin we also specify a "platform fee" percentage, which is the percentage of the total Order value which the marketplace will collect as a fee. The remaining amount is then split between the Sellers.
187
+
188
+ The [OrderSellerStrategy](/reference/typescript-api/orders/order-seller-strategy/) API contains two methods which are used to first split the Order from a single order into one _Aggregate Order_ and multiple _Seller Orders_, and then to calculate the platform fee for each of the Seller Orders:
189
+
190
+ - `OrderSellerStrategy.splitOrder`: Splits the OrderLines and ShippingLines of the Order into multiple groups, one for each Seller.
191
+ - `OrderSellerStrategy.afterSellerOrdersCreated`: This method is run on every Seller Order created after the split, and we can use this to assign the platform fees to the Seller Order.
192
+
193
+ ## Custom OrderProcess
194
+
195
+ Finally, we need a custom [OrderProcess](/reference/typescript-api/orders/order-process/) which will help keep the state of the resulting Aggregate Order and its Seller Orders in sync. For example, we want to make sure that the Aggregate Order cannot be transitioned to the `Shipped` state unless all of its Seller Orders are also in the `Shipped` state.
196
+
197
+ Conversely, we can automatically set the state of the Aggregate Order to `Shipped` once all of its Seller Orders are in the `Shipped` state.