Ver Fonte

docs: Regenerate reference docs

Michael Bromley há 1 ano atrás
pai
commit
7003682b71
94 ficheiros alterados com 1281 adições e 1058 exclusões
  1. 14 14
      docs/docs/reference/admin-ui-api/alerts/alert-config.md
  2. 41 41
      docs/docs/reference/admin-ui-api/bulk-actions/bulk-action.md
  3. 2 12
      docs/docs/reference/admin-ui-api/components/facet-value-selector-component.md
  4. 9 9
      docs/docs/reference/admin-ui-api/list-detail-views/detail-component-with-resolver.md
  5. 7 7
      docs/docs/reference/admin-ui-api/list-detail-views/typed-base-list-component.md
  6. 7 7
      docs/docs/reference/admin-ui-api/react-components/form-field.md
  7. 1 1
      docs/docs/reference/admin-ui-api/react-components/rich-text-editor.md
  8. 3 3
      docs/docs/reference/admin-ui-api/react-hooks/use-lazy-query.md
  9. 1 1
      docs/docs/reference/admin-ui-api/react-hooks/use-mutation.md
  10. 2 0
      docs/docs/reference/admin-ui-api/routes/register-route-component-options.md
  11. 4 4
      docs/docs/reference/admin-ui-api/ui-devkit/ui-extension-compiler-options.md
  12. 1 1
      docs/docs/reference/core-plugins/admin-ui-plugin/admin-ui-plugin-options.md
  13. 16 16
      docs/docs/reference/core-plugins/asset-server-plugin/asset-server-options.md
  14. 2 1
      docs/docs/reference/core-plugins/asset-server-plugin/s3asset-storage-strategy.md
  15. 2 2
      docs/docs/reference/core-plugins/asset-server-plugin/sharp-asset-preview-strategy.md
  16. 135 135
      docs/docs/reference/core-plugins/elasticsearch-plugin/elasticsearch-options.md
  17. 1 1
      docs/docs/reference/core-plugins/email-plugin/email-event-handler-with-async-data.md
  18. 3 3
      docs/docs/reference/core-plugins/email-plugin/email-event-handler.md
  19. 45 7
      docs/docs/reference/core-plugins/email-plugin/email-plugin-options.md
  20. 22 7
      docs/docs/reference/core-plugins/email-plugin/email-plugin-types.md
  21. 34 1
      docs/docs/reference/core-plugins/email-plugin/index.md
  22. 8 8
      docs/docs/reference/core-plugins/email-plugin/transport-options.md
  23. 27 27
      docs/docs/reference/core-plugins/harden-plugin/harden-plugin-options.md
  24. 1 1
      docs/docs/reference/core-plugins/job-queue-plugin/bull-mqplugin-options.md
  25. 2 2
      docs/docs/reference/core-plugins/payments-plugin/braintree-plugin.md
  26. 116 116
      docs/docs/reference/core-plugins/payments-plugin/mollie-plugin.md
  27. 166 166
      docs/docs/reference/core-plugins/payments-plugin/stripe-plugin.md
  28. 10 10
      docs/docs/reference/core-plugins/stellate-plugin/purge-rule.md
  29. 3 3
      docs/docs/reference/core-plugins/stellate-plugin/stellate-plugin-options.md
  30. 6 6
      docs/docs/reference/typescript-api/assets/asset-options.md
  31. 14 14
      docs/docs/reference/typescript-api/auth/auth-options.md
  32. 6 6
      docs/docs/reference/typescript-api/auth/cookie-options.md
  33. 29 29
      docs/docs/reference/typescript-api/auth/external-authentication-service.md
  34. 2 2
      docs/docs/reference/typescript-api/auth/permission-definition.md
  35. 3 3
      docs/docs/reference/typescript-api/auth/superadmin-credentials.md
  36. 1 1
      docs/docs/reference/typescript-api/common/admin-ui/admin-ui-app-config.md
  37. 1 1
      docs/docs/reference/typescript-api/common/admin-ui/admin-ui-app-dev-mode-config.md
  38. 10 10
      docs/docs/reference/typescript-api/common/admin-ui/admin-ui-config.md
  39. 1 1
      docs/docs/reference/typescript-api/common/middleware.md
  40. 1 1
      docs/docs/reference/typescript-api/common/permission.md
  41. 9 9
      docs/docs/reference/typescript-api/configurable-operation-def/default-form-config-hash.md
  42. 18 18
      docs/docs/reference/typescript-api/configuration/api-options.md
  43. 1 1
      docs/docs/reference/typescript-api/configuration/default-config.md
  44. 13 13
      docs/docs/reference/typescript-api/configuration/entity-duplicator.md
  45. 8 8
      docs/docs/reference/typescript-api/configuration/entity-options.md
  46. 1 1
      docs/docs/reference/typescript-api/configuration/runtime-vendure-config.md
  47. 3 3
      docs/docs/reference/typescript-api/configuration/system-options.md
  48. 7 7
      docs/docs/reference/typescript-api/configuration/vendure-config.md
  49. 1 1
      docs/docs/reference/typescript-api/custom-fields/custom-field-type.md
  50. 2 1
      docs/docs/reference/typescript-api/custom-fields/index.md
  51. 2 1
      docs/docs/reference/typescript-api/data-access/calculated.md
  52. 3 3
      docs/docs/reference/typescript-api/data-access/get-entity-or-throw-options.md
  53. 1 1
      docs/docs/reference/typescript-api/data-access/hydrate-options.md
  54. 1 1
      docs/docs/reference/typescript-api/data-access/list-query-builder.md
  55. 3 3
      docs/docs/reference/typescript-api/default-search-plugin/default-search-plugin-init-options.md
  56. 30 30
      docs/docs/reference/typescript-api/entities/promotion.md
  57. 73 45
      docs/docs/reference/typescript-api/events/event-types.md
  58. 14 14
      docs/docs/reference/typescript-api/fulfillment/fulfillment-process.md
  59. 5 5
      docs/docs/reference/typescript-api/import-export/default-asset-import-strategy.md
  60. 2 2
      docs/docs/reference/typescript-api/import-export/import-export-options.md
  61. 33 33
      docs/docs/reference/typescript-api/import-export/import-parser.md
  62. 2 1
      docs/docs/reference/typescript-api/import-export/populator.md
  63. 4 4
      docs/docs/reference/typescript-api/job-queue/default-job-queue-plugin.md
  64. 2 2
      docs/docs/reference/typescript-api/job-queue/job-queue-options.md
  65. 2 1
      docs/docs/reference/typescript-api/job-queue/types.md
  66. 1 1
      docs/docs/reference/typescript-api/money/money-strategy.md
  67. 2 2
      docs/docs/reference/typescript-api/orders/default-guest-checkout-strategy.md
  68. 25 25
      docs/docs/reference/typescript-api/orders/guest-checkout-strategy.md
  69. 2 1
      docs/docs/reference/typescript-api/orders/order-item-price-calculation-strategy.md
  70. 15 15
      docs/docs/reference/typescript-api/orders/order-options.md
  71. 10 10
      docs/docs/reference/typescript-api/orders/order-process.md
  72. 17 0
      docs/docs/reference/typescript-api/payment/default-refund-process.md
  73. 9 2
      docs/docs/reference/typescript-api/payment/payment-options.md
  74. 59 0
      docs/docs/reference/typescript-api/payment/refund-process.md
  75. 2 2
      docs/docs/reference/typescript-api/payment/refund-state.md
  76. 22 0
      docs/docs/reference/typescript-api/payment/refund-states.md
  77. 1 1
      docs/docs/reference/typescript-api/payment/refund-transition-data.md
  78. 1 1
      docs/docs/reference/typescript-api/plugin/plugin-utilities.md
  79. 7 7
      docs/docs/reference/typescript-api/products-stock/catalog-options.md
  80. 2 2
      docs/docs/reference/typescript-api/promotions/promotion-action.md
  81. 1 1
      docs/docs/reference/typescript-api/promotions/promotion-condition.md
  82. 1 1
      docs/docs/reference/typescript-api/promotions/promotion-options.md
  83. 13 13
      docs/docs/reference/typescript-api/request/request-context-service.md
  84. 11 11
      docs/docs/reference/typescript-api/service-helpers/slug-validator.md
  85. 25 25
      docs/docs/reference/typescript-api/services/customer-service.md
  86. 11 11
      docs/docs/reference/typescript-api/services/fulfillment-service.md
  87. 7 1
      docs/docs/reference/typescript-api/services/order-service.md
  88. 5 5
      docs/docs/reference/typescript-api/services/payment-method-service.md
  89. 3 3
      docs/docs/reference/typescript-api/services/role-service.md
  90. 21 21
      docs/docs/reference/typescript-api/services/user-service.md
  91. 2 2
      docs/docs/reference/typescript-api/shipping/shipping-options.md
  92. 3 3
      docs/docs/reference/typescript-api/tax/tax-options.md
  93. 2 2
      docs/docs/reference/typescript-api/testing/test-server-options.md
  94. 2 2
      docs/docs/reference/typescript-api/worker/worker-health-check-config.md

+ 14 - 14
docs/docs/reference/admin-ui-api/alerts/alert-config.md

@@ -22,9 +22,9 @@ interface AlertConfig<T = any> {
     recheck?: (context: AlertContext) => Observable<any>;
     isAlert: (data: T, context: AlertContext) => boolean;
     action: (data: T, context: AlertContext) => void;
-    label: (
-        data: T,
-        context: AlertContext,
+    label: (
+        data: T,
+        context: AlertContext,
     ) => { text: string; translationVars?: { [key: string]: string | number } };
     requiredPermissions?: Permission[];
 }
@@ -41,18 +41,18 @@ A unique identifier for the alert.
 
 <MemberInfo kind="property" type={`(context: <a href='/reference/admin-ui-api/alerts/alert-context#alertcontext'>AlertContext</a>) =&#62; T | Promise&#60;T&#62; | Observable&#60;T&#62;`}   />
 
-A function which is gets the data used to determine whether the alert should be shown.
-Typically, this function will query the server or some other remote data source.
-
-This function will be called once when the Admin UI app bootstraps, and can be also
+A function which is gets the data used to determine whether the alert should be shown.
+Typically, this function will query the server or some other remote data source.
+
+This function will be called once when the Admin UI app bootstraps, and can be also
 set to run at regular intervals by setting the `recheckIntervalMs` property.
 ### recheck
 
-<MemberInfo kind="property" type={`(context: <a href='/reference/admin-ui-api/alerts/alert-context#alertcontext'>AlertContext</a>) =&#62; Observable&#60;any&#62;`} default="undefined"   />
-
-A function which returns an Observable which is used to determine when to re-run the `check`
-function. Whenever the observable emits, the `check` function will be called again.
+<MemberInfo kind="property" type={`(context: <a href='/reference/admin-ui-api/alerts/alert-context#alertcontext'>AlertContext</a>) =&#62; Observable&#60;any&#62;`} default={`undefined`}   />
 
+A function which returns an Observable which is used to determine when to re-run the `check`
+function. Whenever the observable emits, the `check` function will be called again.
+
 A basic time-interval-based recheck can be achieved by using the `interval` function from RxJS.
 
 *Example*
@@ -69,7 +69,7 @@ If this is not set, the `check` function will only be called once when the Admin
 
 <MemberInfo kind="property" type={`(data: T, context: <a href='/reference/admin-ui-api/alerts/alert-context#alertcontext'>AlertContext</a>) =&#62; boolean`}   />
 
-A function which determines whether the alert should be shown based on the data returned by the `check`
+A function which determines whether the alert should be shown based on the data returned by the `check`
 function.
 ### action
 
@@ -78,14 +78,14 @@ function.
 A function which is called when the alert is clicked in the Admin UI.
 ### label
 
-<MemberInfo kind="property" type={`(         data: T,         context: <a href='/reference/admin-ui-api/alerts/alert-context#alertcontext'>AlertContext</a>,     ) =&#62; { text: string; translationVars?: { [key: string]: string | number } }`}   />
+<MemberInfo kind="property" type={`(
         data: T,
         context: <a href='/reference/admin-ui-api/alerts/alert-context#alertcontext'>AlertContext</a>,
     ) =&#62; { text: string; translationVars?: { [key: string]: string | number } }`}   />
 
 A function which returns the text used in the UI to describe the alert.
 ### requiredPermissions
 
 <MemberInfo kind="property" type={`<a href='/reference/typescript-api/common/permission#permission'>Permission</a>[]`}   />
 
-A list of permissions which the current Administrator must have in order. If the current
+A list of permissions which the current Administrator must have in order. If the current
 Administrator does not have these permissions, none of the other alert functions will be called.
 
 

+ 41 - 41
docs/docs/reference/admin-ui-api/bulk-actions/bulk-action.md

@@ -13,16 +13,16 @@ import MemberDescription from '@site/src/components/MemberDescription';
 
 <GenerationInfo sourceFile="packages/admin-ui/src/lib/core/src/providers/bulk-action-registry/bulk-action-types.ts" sourceLine="99" packageName="@vendure/admin-ui" since="1.8.0" />
 
-Configures a bulk action which can be performed on all selected items in a list view.
-
+Configures a bulk action which can be performed on all selected items in a list view.
+
 For a full example, see the <a href='/reference/admin-ui-api/bulk-actions/register-bulk-action#registerbulkaction'>registerBulkAction</a> docs.
 
 ```ts title="Signature"
 interface BulkAction<ItemType = any, ComponentType = any> {
     location: BulkActionLocationId;
     label: string;
-    getTranslationVars?: (
-        context: BulkActionFunctionContext<ItemType, ComponentType>,
+    getTranslationVars?: (
+        context: BulkActionFunctionContext<ItemType, ComponentType>,
     ) => Record<string, string | number> | Promise<Record<string, string | number>>;
     icon?: string;
     iconClass?: string;
@@ -46,26 +46,26 @@ interface BulkAction<ItemType = any, ComponentType = any> {
 
 ### getTranslationVars
 
-<MemberInfo kind="property" type={`(         context: <a href='/reference/admin-ui-api/bulk-actions/bulk-action#bulkactionfunctioncontext'>BulkActionFunctionContext</a>&#60;ItemType, ComponentType&#62;,     ) =&#62; Record&#60;string, string | number&#62; | Promise&#60;Record&#60;string, string | number&#62;&#62;`}   />
+<MemberInfo kind="property" type={`(
         context: <a href='/reference/admin-ui-api/bulk-actions/bulk-action#bulkactionfunctioncontext'>BulkActionFunctionContext</a>&#60;ItemType, ComponentType&#62;,
     ) =&#62; Record&#60;string, string | number&#62; | Promise&#60;Record&#60;string, string | number&#62;&#62;`}   />
 
-An optional function that should resolve to a map of translation variables which can be
+An optional function that should resolve to a map of translation variables which can be
 used when translating the `label` string.
 ### icon
 
 <MemberInfo kind="property" type={`string`}   />
 
-A valid [Clarity Icons](https://core.clarity.design/foundation/icons/shapes/) icon shape, e.g.
+A valid [Clarity Icons](https://core.clarity.design/foundation/icons/shapes/) icon shape, e.g.
 "cog", "user", "info-standard".
 ### iconClass
 
 <MemberInfo kind="property" type={`string`}   />
 
-A class to be added to the icon element. Examples:
-
-- is-success
-- is-danger
-- is-warning
-- is-info
+A class to be added to the icon element. Examples:
+
+- is-success
+- is-danger
+- is-warning
+- is-info
 - is-highlight
 ### onClick
 
@@ -76,10 +76,10 @@ Defines the logic that executes when the bulk action button is clicked.
 
 <MemberInfo kind="property" type={`(context: <a href='/reference/admin-ui-api/bulk-actions/bulk-action#bulkactionfunctioncontext'>BulkActionFunctionContext</a>&#60;ItemType, ComponentType&#62;) =&#62; boolean | Promise&#60;boolean&#62;`}   />
 
-A function that determines whether this bulk action item should be displayed in the menu.
-If not defined, the item will always be displayed.
-
-This function will be invoked each time the selection is changed, so try to avoid expensive code
+A function that determines whether this bulk action item should be displayed in the menu.
+If not defined, the item will always be displayed.
+
+This function will be invoked each time the selection is changed, so try to avoid expensive code
 running here.
 
 *Example*
@@ -130,25 +130,25 @@ registerBulkAction({
 A valid location of a list view that supports the bulk actions API.
 
 ```ts title="Signature"
-type BulkActionLocationId = | 'product-list'
-    | 'facet-list'
-    | 'collection-list'
-    | 'customer-list'
-    | 'customer-group-list'
-    | 'customer-group-members-list'
-    | 'customer-group-members-picker-list'
-    | 'promotion-list'
-    | 'seller-list'
-    | 'channel-list'
-    | 'administrator-list'
-    | 'role-list'
-    | 'shipping-method-list'
-    | 'stock-location-list'
-    | 'payment-method-list'
-    | 'tax-category-list'
-    | 'tax-rate-list'
-    | 'zone-list'
-    | 'zone-members-list'
+type BulkActionLocationId = | 'product-list'
+    | 'facet-list'
+    | 'collection-list'
+    | 'customer-list'
+    | 'customer-group-list'
+    | 'customer-group-members-list'
+    | 'customer-group-members-picker-list'
+    | 'promotion-list'
+    | 'seller-list'
+    | 'channel-list'
+    | 'administrator-list'
+    | 'role-list'
+    | 'shipping-method-list'
+    | 'stock-location-list'
+    | 'payment-method-list'
+    | 'tax-category-list'
+    | 'tax-rate-list'
+    | 'zone-list'
+    | 'zone-members-list'
     | string
 ```
 
@@ -157,7 +157,7 @@ type BulkActionLocationId = | 'product-list'
 
 <GenerationInfo sourceFile="packages/admin-ui/src/lib/core/src/providers/bulk-action-registry/bulk-action-types.ts" sourceLine="43" packageName="@vendure/admin-ui" since="1.8.0" />
 
-This is the argument which gets passed to the `getTranslationVars` and `isVisible` functions
+This is the argument which gets passed to the `getTranslationVars` and `isVisible` functions
 of the BulkAction definition.
 
 ```ts title="Signature"
@@ -180,15 +180,15 @@ An array of the selected items from the list.
 
 <MemberInfo kind="property" type={`ComponentType`}   />
 
-The component instance that is hosting the list view. For instance,
-`ProductListComponent`. This can be used to call methods on the instance,
-e.g. calling `hostComponent.refresh()` to force a list refresh after
+The component instance that is hosting the list view. For instance,
+`ProductListComponent`. This can be used to call methods on the instance,
+e.g. calling `hostComponent.refresh()` to force a list refresh after
 deleting the selected items.
 ### injector
 
 <MemberInfo kind="property" type={`<a href='/reference/typescript-api/common/injector#injector'>Injector</a>`}   />
 
-The Angular [Injector](https://angular.io/api/core/Injector) which can be used
+The Angular [Injector](https://angular.io/api/core/Injector) which can be used
 to get service instances which might be needed in the click handler.
 ### route
 

+ 2 - 12
docs/docs/reference/admin-ui-api/components/facet-value-selector-component.md

@@ -11,7 +11,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
 
 ## FacetValueSelectorComponent
 
-<GenerationInfo sourceFile="packages/admin-ui/src/lib/core/src/shared/components/facet-value-selector/facet-value-selector.component.ts" sourceLine="42" packageName="@vendure/admin-ui" />
+<GenerationInfo sourceFile="packages/admin-ui/src/lib/core/src/shared/components/facet-value-selector/facet-value-selector.component.ts" sourceLine="34" packageName="@vendure/admin-ui" />
 
 A form control for selecting facet values.
 
@@ -19,20 +19,10 @@ A form control for selecting facet values.
 
 ```HTML
 <vdr-facet-value-selector
-  [facets]="facets"
   (selectedValuesChange)="selectedValues = $event"
 ></vdr-facet-value-selector>
 ```
-The `facets` input should be provided from the parent component
-like this:
-
-*Example*
-
-```ts
-this.facets = this.dataService
-  .facet.getAllFacets()
-  .mapSingle(data => data.facets.items);
-```
+The `selectedValuesChange` event will emit an array of `FacetValue` objects.
 
 ```ts title="Signature"
 class FacetValueSelectorComponent implements OnInit, OnDestroy, ControlValueAccessor {

+ 9 - 9
docs/docs/reference/admin-ui-api/list-detail-views/detail-component-with-resolver.md

@@ -13,8 +13,8 @@ import MemberDescription from '@site/src/components/MemberDescription';
 
 <GenerationInfo sourceFile="packages/admin-ui/src/lib/core/src/common/base-detail.component.ts" sourceLine="256" packageName="@vendure/admin-ui" />
 
-A helper function for creating tabs that point to a <a href='/reference/admin-ui-api/list-detail-views/typed-base-detail-component#typedbasedetailcomponent'>TypedBaseDetailComponent</a>. This takes
-care of the route resolver parts so that the detail component automatically has access to the
+A helper function for creating tabs that point to a <a href='/reference/admin-ui-api/list-detail-views/typed-base-detail-component#typedbasedetailcomponent'>TypedBaseDetailComponent</a>. This takes
+care of the route resolver parts so that the detail component automatically has access to the
 correct resolved detail data.
 
 *Example*
@@ -40,17 +40,17 @@ export class ProductSpecsUiExtensionModule {}
 ```
 
 ```ts title="Signature"
-function detailComponentWithResolver<T extends TypedDocumentNode<any, { id: string }>, Field extends keyof ResultOf<T>, R extends Field>(config: {
-    component: Type<TypedBaseDetailComponent<T, Field>>;
-    query: T;
-    entityKey: R;
-    getBreadcrumbs?: (entity: ResultOf<T>[R]) => BreadcrumbValue;
-    variables?: T extends TypedDocumentNode<any, infer V> ? Omit<V, 'id'> : never;
+function detailComponentWithResolver<T extends TypedDocumentNode<any, { id: string }>, Field extends keyof ResultOf<T>, R extends Field>(config: {
+    component: Type<TypedBaseDetailComponent<T, Field>>;
+    query: T;
+    entityKey: R;
+    getBreadcrumbs?: (entity: ResultOf<T>[R]) => BreadcrumbValue;
+    variables?: T extends TypedDocumentNode<any, infer V> ? Omit<V, 'id'> : never;
 }): void
 ```
 Parameters
 
 ### config
 
-<MemberInfo kind="parameter" type={`{     component: Type&#60;<a href='/reference/admin-ui-api/list-detail-views/typed-base-detail-component#typedbasedetailcomponent'>TypedBaseDetailComponent</a>&#60;T, Field&#62;&#62;;     query: T;     entityKey: R;     getBreadcrumbs?: (entity: ResultOf&#60;T&#62;[R]) =&#62; BreadcrumbValue;     variables?: T extends TypedDocumentNode&#60;any, infer V&#62; ? Omit&#60;V, 'id'&#62; : never; }`} />
+<MemberInfo kind="parameter" type={`{
     component: Type&#60;<a href='/reference/admin-ui-api/list-detail-views/typed-base-detail-component#typedbasedetailcomponent'>TypedBaseDetailComponent</a>&#60;T, Field&#62;&#62;;
     query: T;
     entityKey: R;
     getBreadcrumbs?: (entity: ResultOf&#60;T&#62;[R]) =&#62; BreadcrumbValue;
     variables?: T extends TypedDocumentNode&#60;any, infer V&#62; ? Omit&#60;V, 'id'&#62; : never;
 }`} />
 

+ 7 - 7
docs/docs/reference/admin-ui-api/list-detail-views/typed-base-list-component.md

@@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
 
 <GenerationInfo sourceFile="packages/admin-ui/src/lib/core/src/common/base-list.component.ts" sourceLine="199" packageName="@vendure/admin-ui" />
 
-A version of the <a href='/reference/admin-ui-api/list-detail-views/base-list-component#baselistcomponent'>BaseListComponent</a> which is designed to be used with a
+A version of the <a href='/reference/admin-ui-api/list-detail-views/base-list-component#baselistcomponent'>BaseListComponent</a> which is designed to be used with a
 [TypedDocumentNode](https://the-guild.dev/graphql/codegen/plugins/typescript/typed-document-node).
 
 ```ts title="Signature"
@@ -25,11 +25,11 @@ class TypedBaseListComponent<T extends TypedDocumentNode<any, Vars>, Field exten
     protected serverConfigService = inject(ServerConfigService);
     protected permissionsService = inject(PermissionsService);
     constructor()
-    configure(config: {
-        document: T;
-        getItems: (data: ResultOf<T>) => { items: Array<ItemOf<ResultOf<T>, Field>>; totalItems: number };
-        setVariables?: (skip: number, take: number) => VariablesOf<T>;
-        refreshListOnChanges?: Array<Observable<any>>;
+    configure(config: {
+        document: T;
+        getItems: (data: ResultOf<T>) => { items: Array<ItemOf<ResultOf<T>, Field>>; totalItems: number };
+        setVariables?: (skip: number, take: number) => VariablesOf<T>;
+        refreshListOnChanges?: Array<Observable<any>>;
     }) => ;
     ngOnInit() => ;
     createFilterCollection() => DataTableFilterCollection<NonNullable<NonNullable<Vars['options']>['filter']>>;
@@ -84,7 +84,7 @@ class TypedBaseListComponent<T extends TypedDocumentNode<any, Vars>, Field exten
 
 ### configure
 
-<MemberInfo kind="method" type={`(config: {         document: T;         getItems: (data: ResultOf&#60;T&#62;) =&#62; { items: Array&#60;ItemOf&#60;ResultOf&#60;T&#62;, Field&#62;&#62;; totalItems: number };         setVariables?: (skip: number, take: number) =&#62; VariablesOf&#60;T&#62;;         refreshListOnChanges?: Array&#60;Observable&#60;any&#62;&#62;;     }) => `}   />
+<MemberInfo kind="method" type={`(config: {
         document: T;
         getItems: (data: ResultOf&#60;T&#62;) =&#62; { items: Array&#60;ItemOf&#60;ResultOf&#60;T&#62;, Field&#62;&#62;; totalItems: number };
         setVariables?: (skip: number, take: number) =&#62; VariablesOf&#60;T&#62;;
         refreshListOnChanges?: Array&#60;Observable&#60;any&#62;&#62;;
     }) => `}   />
 
 
 ### ngOnInit

+ 7 - 7
docs/docs/reference/admin-ui-api/react-components/form-field.md

@@ -30,17 +30,17 @@ export function MyReactComponent() {
 ```
 
 ```ts title="Signature"
-function FormField(props: PropsWithChildren<{
-        for?: string;
-        label?: string;
-        tooltip?: string;
-        invalid?: boolean;
-        errorMessage?: string;
+function FormField(props: PropsWithChildren<{
+        for?: string;
+        label?: string;
+        tooltip?: string;
+        invalid?: boolean;
+        errorMessage?: string;
     }>): void
 ```
 Parameters
 
 ### props
 
-<MemberInfo kind="parameter" type={`PropsWithChildren&#60;{         for?: string;         label?: string;         tooltip?: string;         invalid?: boolean;         errorMessage?: string;     }&#62;`} />
+<MemberInfo kind="parameter" type={`PropsWithChildren&#60;{
         for?: string;
         label?: string;
         tooltip?: string;
         invalid?: boolean;
         errorMessage?: string;
     }&#62;`} />
 

+ 1 - 1
docs/docs/reference/admin-ui-api/react-components/rich-text-editor.md

@@ -11,7 +11,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
 
 ## RichTextEditor
 
-<GenerationInfo sourceFile="packages/admin-ui/src/lib/react/src/react-components/RichTextEditor.tsx" sourceLine="59" packageName="@vendure/admin-ui" />
+<GenerationInfo sourceFile="packages/admin-ui/src/lib/react/src/react-components/RichTextEditor.tsx" sourceLine="60" packageName="@vendure/admin-ui" />
 
 A rich text editor component which uses ProseMirror (rich text editor) under the hood.
 

+ 3 - 3
docs/docs/reference/admin-ui-api/react-hooks/use-lazy-query.md

@@ -11,7 +11,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
 
 ## useLazyQuery
 
-<GenerationInfo sourceFile="packages/admin-ui/src/lib/react/src/react-hooks/use-query.ts" sourceLine="121" packageName="@vendure/admin-ui" since="2.2.0" />
+<GenerationInfo sourceFile="packages/admin-ui/src/lib/react/src/react-hooks/use-query.ts" sourceLine="119" packageName="@vendure/admin-ui" since="2.2.0" />
 
 A React hook which allows you to execute a GraphQL query lazily.
 
@@ -64,7 +64,7 @@ export const MyComponent = () => {
 ```
 
 ```ts title="Signature"
-function useLazyQuery<T, V extends Record<string, any> = Record<string, any>>(query: DocumentNode | TypedDocumentNode<T, V>, options: {refetchOnChannelChange: boolean } = {refetchOnChannelChange: false}): void
+function useLazyQuery<T, V extends Record<string, any> = Record<string, any>>(query: DocumentNode | TypedDocumentNode<T, V>, options: { refetchOnChannelChange: boolean } = { refetchOnChannelChange: false }): void
 ```
 Parameters
 
@@ -74,5 +74,5 @@ Parameters
 
 ### options
 
-<MemberInfo kind="parameter" type={`{refetchOnChannelChange: boolean }`} />
+<MemberInfo kind="parameter" type={`{ refetchOnChannelChange: boolean }`} />
 

+ 1 - 1
docs/docs/reference/admin-ui-api/react-hooks/use-mutation.md

@@ -11,7 +11,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
 
 ## useMutation
 
-<GenerationInfo sourceFile="packages/admin-ui/src/lib/react/src/react-hooks/use-query.ts" sourceLine="169" packageName="@vendure/admin-ui" />
+<GenerationInfo sourceFile="packages/admin-ui/src/lib/react/src/react-hooks/use-query.ts" sourceLine="181" packageName="@vendure/admin-ui" />
 
 A React hook which allows you to execute a GraphQL mutation.
 

+ 2 - 0
docs/docs/reference/admin-ui-api/routes/register-route-component-options.md

@@ -19,6 +19,8 @@ Configuration for a route component.
 type RegisterRouteComponentOptions<Component extends any | BaseDetailComponent<Entity>, Entity extends { id: string; updatedAt?: string }, T extends DocumentNode | TypedDocumentNode<any, { id: string }>, Field extends keyof ResultOf<T>, R extends Field> = {
     component: Type<Component> | Component;
     title?: string;
+    locationId?: string;
+    description?: string;
     breadcrumb?: BreadcrumbValue;
     path?: string;
     query?: T;

+ 4 - 4
docs/docs/reference/admin-ui-api/ui-devkit/ui-extension-compiler-options.md

@@ -63,7 +63,7 @@ compileUiExtensions({
 ```
 ### devMode
 
-<MemberInfo kind="property" type={`boolean`} default="false"   />
+<MemberInfo kind="property" type={`boolean`} default={`false`}   />
 
 Set to `true` in order to compile the Admin UI in development mode (using the Angular CLI
 [ng serve](https://angular.io/cli/serve) command). When in dev mode, any changes to
@@ -71,7 +71,7 @@ UI extension files will be watched and trigger a rebuild of the Admin UI with li
 reloading.
 ### baseHref
 
-<MemberInfo kind="property" type={`string`} default="'/admin/'"   />
+<MemberInfo kind="property" type={`string`} default={`'/admin/'`}   />
 
 Allows the baseHref of the compiled Admin UI app to be set. This determines the prefix
 of the app, for example with the default value of `'/admin/'`, the Admin UI app
@@ -96,7 +96,7 @@ AdminUiPlugin.init({
 ```
 ### watchPort
 
-<MemberInfo kind="property" type={`number`} default="4200 | undefined"   />
+<MemberInfo kind="property" type={`number`} default={`4200 | undefined`}   />
 
 In watch mode, allows the port of the dev server to be specified. Defaults to the Angular CLI default
 of `4200`.
@@ -109,7 +109,7 @@ to run the script if it is detected, otherwise it will use npm. This setting all
 set which command to use, including pnpm, rather than relying on the default behavior.
 ### additionalProcessArguments
 
-<MemberInfo kind="property" type={`<a href='/reference/admin-ui-api/ui-devkit/ui-extension-compiler-process-argument#uiextensioncompilerprocessargument'>UiExtensionCompilerProcessArgument</a>[]`} default="undefined"  since="1.5.0"  />
+<MemberInfo kind="property" type={`<a href='/reference/admin-ui-api/ui-devkit/ui-extension-compiler-process-argument#uiextensioncompilerprocessargument'>UiExtensionCompilerProcessArgument</a>[]`} default={`undefined`}  since="1.5.0"  />
 
 Additional command-line arguments which will get passed to the [ng build](https://angular.io/cli/build)
 command (or [ng serve](https://angular.io/cli/serve) if `devMode = true`).

+ 1 - 1
docs/docs/reference/core-plugins/admin-ui-plugin/admin-ui-plugin-options.md

@@ -44,7 +44,7 @@ The port on which the server will listen. This port will be proxied by the Admin
 the Vendure server is running on.
 ### hostname
 
-<MemberInfo kind="property" type={`string`} default="'localhost'"   />
+<MemberInfo kind="property" type={`string`} default={`'localhost'`}   />
 
 The hostname of the server serving the static admin ui files.
 ### app

+ 16 - 16
docs/docs/reference/core-plugins/asset-server-plugin/asset-server-options.md

@@ -25,8 +25,8 @@ interface AssetServerOptions {
     presets?: ImageTransformPreset[];
     namingStrategy?: AssetNamingStrategy;
     previewStrategy?: AssetPreviewStrategy;
-    storageStrategyFactory?: (
-        options: AssetServerOptions,
+    storageStrategyFactory?: (
+        options: AssetServerOptions,
     ) => AssetStorageStrategy | Promise<AssetStorageStrategy>;
     cacheHeader?: CacheConfig | string;
 }
@@ -48,21 +48,21 @@ The local directory to which assets will be uploaded when using the <a href='/re
 
 <MemberInfo kind="property" type={`string | ((ctx: <a href='/reference/typescript-api/request/request-context#requestcontext'>RequestContext</a>, identifier: string) =&#62; string)`}   />
 
-The complete URL prefix of the asset files. For example, "https://demo.vendure.io/assets/". A
-function can also be provided to handle more complex cases, such as serving multiple domains
-from a single server. In this case, the function should return a string url prefix.
-
-If not provided, the plugin will attempt to guess based off the incoming
-request and the configured route. However, in all but the simplest cases,
+The complete URL prefix of the asset files. For example, "https://demo.vendure.io/assets/". A
+function can also be provided to handle more complex cases, such as serving multiple domains
+from a single server. In this case, the function should return a string url prefix.
+
+If not provided, the plugin will attempt to guess based off the incoming
+request and the configured route. However, in all but the simplest cases,
 this guess may not yield correct results.
 ### previewMaxWidth
 
-<MemberInfo kind="property" type={`number`} default="1600"   />
+<MemberInfo kind="property" type={`number`} default={`1600`}   />
 
 The max width in pixels of a generated preview image.
 ### previewMaxHeight
 
-<MemberInfo kind="property" type={`number`} default="1600"   />
+<MemberInfo kind="property" type={`number`} default={`1600`}   />
 
 The max height in pixels of a generated preview image.
 ### presets
@@ -72,26 +72,26 @@ The max height in pixels of a generated preview image.
 An array of additional <a href='/reference/core-plugins/asset-server-plugin/image-transform-preset#imagetransformpreset'>ImageTransformPreset</a> objects.
 ### namingStrategy
 
-<MemberInfo kind="property" type={`<a href='/reference/typescript-api/assets/asset-naming-strategy#assetnamingstrategy'>AssetNamingStrategy</a>`} default="<a href='/reference/core-plugins/asset-server-plugin/hashed-asset-naming-strategy#hashedassetnamingstrategy'>HashedAssetNamingStrategy</a>"   />
+<MemberInfo kind="property" type={`<a href='/reference/typescript-api/assets/asset-naming-strategy#assetnamingstrategy'>AssetNamingStrategy</a>`} default={`<a href='/reference/core-plugins/asset-server-plugin/hashed-asset-naming-strategy#hashedassetnamingstrategy'>HashedAssetNamingStrategy</a>`}   />
 
 Defines how asset files and preview images are named before being saved.
 ### previewStrategy
 
 <MemberInfo kind="property" type={`<a href='/reference/typescript-api/assets/asset-preview-strategy#assetpreviewstrategy'>AssetPreviewStrategy</a>`}  since="1.7.0"  />
 
-Defines how previews are generated for a given Asset binary. By default, this uses
+Defines how previews are generated for a given Asset binary. By default, this uses
 the <a href='/reference/core-plugins/asset-server-plugin/sharp-asset-preview-strategy#sharpassetpreviewstrategy'>SharpAssetPreviewStrategy</a>
 ### storageStrategyFactory
 
-<MemberInfo kind="property" type={`(         options: <a href='/reference/core-plugins/asset-server-plugin/asset-server-options#assetserveroptions'>AssetServerOptions</a>,     ) =&#62; <a href='/reference/typescript-api/assets/asset-storage-strategy#assetstoragestrategy'>AssetStorageStrategy</a> | Promise&#60;<a href='/reference/typescript-api/assets/asset-storage-strategy#assetstoragestrategy'>AssetStorageStrategy</a>&#62;`} default="() =&#62; <a href='/reference/core-plugins/asset-server-plugin/local-asset-storage-strategy#localassetstoragestrategy'>LocalAssetStorageStrategy</a>"   />
+<MemberInfo kind="property" type={`(
         options: <a href='/reference/core-plugins/asset-server-plugin/asset-server-options#assetserveroptions'>AssetServerOptions</a>,
     ) =&#62; <a href='/reference/typescript-api/assets/asset-storage-strategy#assetstoragestrategy'>AssetStorageStrategy</a> | Promise&#60;<a href='/reference/typescript-api/assets/asset-storage-strategy#assetstoragestrategy'>AssetStorageStrategy</a>&#62;`} default={`() =&#62; <a href='/reference/core-plugins/asset-server-plugin/local-asset-storage-strategy#localassetstoragestrategy'>LocalAssetStorageStrategy</a>`}   />
 
-A function which can be used to configure an <a href='/reference/typescript-api/assets/asset-storage-strategy#assetstoragestrategy'>AssetStorageStrategy</a>. This is useful e.g. if you wish to store your assets
+A function which can be used to configure an <a href='/reference/typescript-api/assets/asset-storage-strategy#assetstoragestrategy'>AssetStorageStrategy</a>. This is useful e.g. if you wish to store your assets
 using a cloud storage provider. By default, the <a href='/reference/core-plugins/asset-server-plugin/local-asset-storage-strategy#localassetstoragestrategy'>LocalAssetStorageStrategy</a> is used.
 ### cacheHeader
 
-<MemberInfo kind="property" type={`<a href='/reference/core-plugins/asset-server-plugin/cache-config#cacheconfig'>CacheConfig</a> | string`} default="'public, max-age=15552000'"  since="1.9.3"  />
+<MemberInfo kind="property" type={`<a href='/reference/core-plugins/asset-server-plugin/cache-config#cacheconfig'>CacheConfig</a> | string`} default={`'public, max-age=15552000'`}  since="1.9.3"  />
 
-Configures the `Cache-Control` directive for response to control caching in browsers and shared caches (e.g. Proxies, CDNs).
+Configures the `Cache-Control` directive for response to control caching in browsers and shared caches (e.g. Proxies, CDNs).
 Defaults to publicly cached for 6 months.
 
 

+ 2 - 1
docs/docs/reference/core-plugins/asset-server-plugin/s3asset-storage-strategy.md

@@ -151,7 +151,8 @@ Using type `any` in order to avoid the need to include `aws-sdk` dependency in g
 
 <GenerationInfo sourceFile="packages/asset-server-plugin/src/s3-asset-storage-strategy.ts" sourceLine="119" packageName="@vendure/asset-server-plugin" />
 
-Returns a configured instance of the <a href='/reference/core-plugins/asset-server-plugin/s3asset-storage-strategy#s3assetstoragestrategy'>S3AssetStorageStrategy</a> which can then be passed to the <a href='/reference/core-plugins/asset-server-plugin/asset-server-options#assetserveroptions'>AssetServerOptions</a>`storageStrategyFactory` property.
+Returns a configured instance of the <a href='/reference/core-plugins/asset-server-plugin/s3asset-storage-strategy#s3assetstoragestrategy'>S3AssetStorageStrategy</a> which can then be passed to the <a href='/reference/core-plugins/asset-server-plugin/asset-server-options#assetserveroptions'>AssetServerOptions</a>
+`storageStrategyFactory` property.
 
 Before using this strategy, make sure you have the `@aws-sdk/client-s3` and `@aws-sdk/lib-storage` package installed:
 

+ 2 - 2
docs/docs/reference/core-plugins/asset-server-plugin/sharp-asset-preview-strategy.md

@@ -84,12 +84,12 @@ interface SharpAssetPreviewConfig {
 
 ### maxHeight
 
-<MemberInfo kind="property" type={`number`} default="1600"   />
+<MemberInfo kind="property" type={`number`} default={`1600`}   />
 
 The max height in pixels of a generated preview image.
 ### maxWidth
 
-<MemberInfo kind="property" type={`number`} default="1600"   />
+<MemberInfo kind="property" type={`number`} default={`1600`}   />
 
 The max width in pixels of a generated preview image.
 ### jpegOptions

+ 135 - 135
docs/docs/reference/core-plugins/elasticsearch-plugin/elasticsearch-options.md

@@ -24,23 +24,23 @@ interface ElasticsearchOptions {
     clientOptions?: ClientOptions;
     indexPrefix?: string;
     indexSettings?: object;
-    indexMappingProperties?: {
-        [indexName: string]: object;
+    indexMappingProperties?: {
+        [indexName: string]: object;
     };
     reindexProductsChunkSize?: number;
     reindexBulkOperationSizeLimit?: number;
     searchConfig?: SearchConfig;
-    customProductMappings?: {
-        [fieldName: string]: CustomMapping<[Product, ProductVariant[], LanguageCode, Injector, RequestContext]>;
+    customProductMappings?: {
+        [fieldName: string]: CustomMapping<[Product, ProductVariant[], LanguageCode, Injector, RequestContext]>;
     };
-    customProductVariantMappings?: {
-        [fieldName: string]: CustomMapping<[ProductVariant, LanguageCode, Injector, RequestContext]>;
+    customProductVariantMappings?: {
+        [fieldName: string]: CustomMapping<[ProductVariant, LanguageCode, Injector, RequestContext]>;
     };
     bufferUpdates?: boolean;
     hydrateProductRelations?: Array<EntityRelationPaths<Product>>;
     hydrateProductVariantRelations?: Array<EntityRelationPaths<ProductVariant>>;
-    extendSearchInputType?: {
-        [name: string]: PrimitiveTypeVariations<GraphQlPrimitive>;
+    extendSearchInputType?: {
+        [name: string]: PrimitiveTypeVariations<GraphQlPrimitive>;
     };
     extendSearchSortType?: string[];
 }
@@ -50,42 +50,42 @@ interface ElasticsearchOptions {
 
 ### host
 
-<MemberInfo kind="property" type={`string`} default="'http://localhost'"   />
+<MemberInfo kind="property" type={`string`} default={`'http://localhost'`}   />
 
 The host of the Elasticsearch server. May also be specified in `clientOptions.node`.
 ### port
 
-<MemberInfo kind="property" type={`number`} default="9200"   />
+<MemberInfo kind="property" type={`number`} default={`9200`}   />
 
 The port of the Elasticsearch server. May also be specified in `clientOptions.node`.
 ### connectionAttempts
 
-<MemberInfo kind="property" type={`number`} default="10"   />
+<MemberInfo kind="property" type={`number`} default={`10`}   />
 
 Maximum amount of attempts made to connect to the ElasticSearch server on startup.
 ### connectionAttemptInterval
 
-<MemberInfo kind="property" type={`number`} default="5000"   />
+<MemberInfo kind="property" type={`number`} default={`5000`}   />
 
 Interval in milliseconds between attempts to connect to the ElasticSearch server on startup.
 ### clientOptions
 
 <MemberInfo kind="property" type={`ClientOptions`}   />
 
-Options to pass directly to the
-[Elasticsearch Node.js client](https://www.elastic.co/guide/en/elasticsearch/client/javascript-api/current/index.html). For example, to
-set authentication or other more advanced options.
+Options to pass directly to the
+[Elasticsearch Node.js client](https://www.elastic.co/guide/en/elasticsearch/client/javascript-api/current/index.html). For example, to
+set authentication or other more advanced options.
 Note that if the `node` or `nodes` option is specified, it will override the values provided in the `host` and `port` options.
 ### indexPrefix
 
-<MemberInfo kind="property" type={`string`} default="'vendure-'"   />
+<MemberInfo kind="property" type={`string`} default={`'vendure-'`}   />
 
 Prefix for the indices created by the plugin.
 ### indexSettings
 
-<MemberInfo kind="property" type={`object`} default="{}"  since="1.2.0"  />
+<MemberInfo kind="property" type={`object`} default={`{}`}  since="1.2.0"  />
 
-[These options](https://www.elastic.co/guide/en/elasticsearch/reference/7.x/index-modules.html#index-modules-settings)
+[These options](https://www.elastic.co/guide/en/elasticsearch/reference/7.x/index-modules.html#index-modules-settings)
 are directly passed to index settings. To apply some settings indices will be recreated.
 
 *Example*
@@ -116,10 +116,10 @@ A more complete example can be found in the discussion thread
 [How to make elastic plugin to search by substring with stemming](https://github.com/vendure-ecommerce/vendure/discussions/1066).
 ### indexMappingProperties
 
-<MemberInfo kind="property" type={`{         [indexName: string]: object;     }`} default="{}"  since="1.2.0"  />
+<MemberInfo kind="property" type={`{
         [indexName: string]: object;
     }`} default={`{}`}  since="1.2.0"  />
 
-This option allow to redefine or define new properties in mapping. More about elastic
-[mapping](https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping.html)
+This option allow to redefine or define new properties in mapping. More about elastic
+[mapping](https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping.html)
 After changing this option indices will be recreated.
 
 *Example*
@@ -160,15 +160,15 @@ indexMappingProperties: {
 ```
 ### reindexProductsChunkSize
 
-<MemberInfo kind="property" type={`number`} default="2500"  since="2.1.7"  />
+<MemberInfo kind="property" type={`number`} default={`2500`}  since="2.1.7"  />
 
 Products limit chunk size for each loop iteration when indexing products.
 ### reindexBulkOperationSizeLimit
 
-<MemberInfo kind="property" type={`number`} default="3000"  since="2.1.7"  />
+<MemberInfo kind="property" type={`number`} default={`3000`}  since="2.1.7"  />
 
-Index operations are performed in bulk, with each bulk operation containing a number of individual
-index operations. This option sets the maximum number of operations in the memory buffer before a
+Index operations are performed in bulk, with each bulk operation containing a number of individual
+index operations. This option sets the maximum number of operations in the memory buffer before a
 bulk operation is executed.
 ### searchConfig
 
@@ -177,21 +177,21 @@ bulk operation is executed.
 Configuration of the internal Elasticsearch query.
 ### customProductMappings
 
-<MemberInfo kind="property" type={`{         [fieldName: string]: CustomMapping&#60;[<a href='/reference/typescript-api/entities/product#product'>Product</a>, <a href='/reference/typescript-api/entities/product-variant#productvariant'>ProductVariant</a>[], <a href='/reference/typescript-api/common/language-code#languagecode'>LanguageCode</a>, <a href='/reference/typescript-api/common/injector#injector'>Injector</a>, <a href='/reference/typescript-api/request/request-context#requestcontext'>RequestContext</a>]&#62;;     }`}   />
-
-Custom mappings may be defined which will add the defined data to the
-Elasticsearch index and expose that data via the SearchResult GraphQL type,
-adding a new `customMappings`, `customProductMappings` & `customProductVariantMappings` fields.
-
-The `graphQlType` property may be one of `String`, `Int`, `Float`, `Boolean`, `ID` or list
-versions thereof (`[String!]` etc) and can be appended with a `!` to indicate non-nullable fields.
-
-The `public` (default = `true`) property is used to reveal or hide the property in the GraphQL API schema.
-If this property is set to `false` it's not accessible in the `customMappings` field but it's still getting
-parsed to the elasticsearch index.
-
-This config option defines custom mappings which are accessible when the "groupByProduct"
-input options is set to `true`. In addition, custom variant mappings can be accessed by using
+<MemberInfo kind="property" type={`{
         [fieldName: string]: CustomMapping&#60;[<a href='/reference/typescript-api/entities/product#product'>Product</a>, <a href='/reference/typescript-api/entities/product-variant#productvariant'>ProductVariant</a>[], <a href='/reference/typescript-api/common/language-code#languagecode'>LanguageCode</a>, <a href='/reference/typescript-api/common/injector#injector'>Injector</a>, <a href='/reference/typescript-api/request/request-context#requestcontext'>RequestContext</a>]&#62;;
     }`}   />
+
+Custom mappings may be defined which will add the defined data to the
+Elasticsearch index and expose that data via the SearchResult GraphQL type,
+adding a new `customMappings`, `customProductMappings` & `customProductVariantMappings` fields.
+
+The `graphQlType` property may be one of `String`, `Int`, `Float`, `Boolean`, `ID` or list
+versions thereof (`[String!]` etc) and can be appended with a `!` to indicate non-nullable fields.
+
+The `public` (default = `true`) property is used to reveal or hide the property in the GraphQL API schema.
+If this property is set to `false` it's not accessible in the `customMappings` field but it's still getting
+parsed to the elasticsearch index.
+
+This config option defines custom mappings which are accessible when the "groupByProduct"
+input options is set to `true`. In addition, custom variant mappings can be accessed by using
 the `customProductVariantMappings` field, which is always available.
 
 *Example*
@@ -240,10 +240,10 @@ query SearchProducts($input: SearchInput!) {
 ```
 ### customProductVariantMappings
 
-<MemberInfo kind="property" type={`{         [fieldName: string]: CustomMapping&#60;[<a href='/reference/typescript-api/entities/product-variant#productvariant'>ProductVariant</a>, <a href='/reference/typescript-api/common/language-code#languagecode'>LanguageCode</a>, <a href='/reference/typescript-api/common/injector#injector'>Injector</a>, <a href='/reference/typescript-api/request/request-context#requestcontext'>RequestContext</a>]&#62;;     }`}   />
+<MemberInfo kind="property" type={`{
         [fieldName: string]: CustomMapping&#60;[<a href='/reference/typescript-api/entities/product-variant#productvariant'>ProductVariant</a>, <a href='/reference/typescript-api/common/language-code#languagecode'>LanguageCode</a>, <a href='/reference/typescript-api/common/injector#injector'>Injector</a>, <a href='/reference/typescript-api/request/request-context#requestcontext'>RequestContext</a>]&#62;;
     }`}   />
 
-This config option defines custom mappings which are accessible when the "groupByProduct"
-input options is set to `false`. In addition, custom product mappings can be accessed by using
+This config option defines custom mappings which are accessible when the "groupByProduct"
+input options is set to `false`. In addition, custom product mappings can be accessed by using
 the `customProductMappings` field, which is always available.
 
 *Example*
@@ -269,22 +269,22 @@ query SearchProducts($input: SearchInput!) {
 ```
 ### bufferUpdates
 
-<MemberInfo kind="property" type={`boolean`} default="false"  since="1.3.0"  />
+<MemberInfo kind="property" type={`boolean`} default={`false`}  since="1.3.0"  />
 
-If set to `true`, updates to Products, ProductVariants and Collections will not immediately
-trigger an update to the search index. Instead, all these changes will be buffered and will
-only be run via a call to the `runPendingSearchIndexUpdates` mutation in the Admin API.
-
-This is very useful for installations with a large number of ProductVariants and/or
-Collections, as the buffering allows better control over when these expensive jobs are run,
-and also performs optimizations to minimize the amount of work that needs to be performed by
+If set to `true`, updates to Products, ProductVariants and Collections will not immediately
+trigger an update to the search index. Instead, all these changes will be buffered and will
+only be run via a call to the `runPendingSearchIndexUpdates` mutation in the Admin API.
+
+This is very useful for installations with a large number of ProductVariants and/or
+Collections, as the buffering allows better control over when these expensive jobs are run,
+and also performs optimizations to minimize the amount of work that needs to be performed by
 the worker.
 ### hydrateProductRelations
 
-<MemberInfo kind="property" type={`Array&#60;<a href='/reference/typescript-api/common/entity-relation-paths#entityrelationpaths'>EntityRelationPaths</a>&#60;<a href='/reference/typescript-api/entities/product#product'>Product</a>&#62;&#62;`} default="[]"  since="1.3.0"  />
+<MemberInfo kind="property" type={`Array&#60;<a href='/reference/typescript-api/common/entity-relation-paths#entityrelationpaths'>EntityRelationPaths</a>&#60;<a href='/reference/typescript-api/entities/product#product'>Product</a>&#62;&#62;`} default={`[]`}  since="1.3.0"  />
 
-Additional product relations that will be fetched from DB while reindexing. This can be used
-in combination with `customProductMappings` to ensure that the required relations are joined
+Additional product relations that will be fetched from DB while reindexing. This can be used
+in combination with `customProductMappings` to ensure that the required relations are joined
 before the `product` object is passed to the `valueFn`.
 
 *Example*
@@ -304,16 +304,16 @@ before the `product` object is passed to the `valueFn`.
 ```
 ### hydrateProductVariantRelations
 
-<MemberInfo kind="property" type={`Array&#60;<a href='/reference/typescript-api/common/entity-relation-paths#entityrelationpaths'>EntityRelationPaths</a>&#60;<a href='/reference/typescript-api/entities/product-variant#productvariant'>ProductVariant</a>&#62;&#62;`} default="[]"  since="1.3.0"  />
+<MemberInfo kind="property" type={`Array&#60;<a href='/reference/typescript-api/common/entity-relation-paths#entityrelationpaths'>EntityRelationPaths</a>&#60;<a href='/reference/typescript-api/entities/product-variant#productvariant'>ProductVariant</a>&#62;&#62;`} default={`[]`}  since="1.3.0"  />
 
-Additional variant relations that will be fetched from DB while reindexing. See
+Additional variant relations that will be fetched from DB while reindexing. See
 `hydrateProductRelations` for more explanation and a usage example.
 ### extendSearchInputType
 
-<MemberInfo kind="property" type={`{         [name: string]: PrimitiveTypeVariations&#60;GraphQlPrimitive&#62;;     }`} default="{}"  since="1.3.0"  />
+<MemberInfo kind="property" type={`{
         [name: string]: PrimitiveTypeVariations&#60;GraphQlPrimitive&#62;;
     }`} default={`{}`}  since="1.3.0"  />
 
-Allows the `SearchInput` type to be extended with new input fields. This allows arbitrary
-data to be passed in, which can then be used e.g. in the `mapQuery()` function or
+Allows the `SearchInput` type to be extended with new input fields. This allows arbitrary
+data to be passed in, which can then be used e.g. in the `mapQuery()` function or
 custom `scriptFields` functions.
 
 *Example*
@@ -345,9 +345,9 @@ query {
 ```
 ### extendSearchSortType
 
-<MemberInfo kind="property" type={`string[]`} default="[]"  since="1.4.0"  />
+<MemberInfo kind="property" type={`string[]`} default={`[]`}  since="1.4.0"  />
 
-Adds a list of sort parameters. This is mostly important to make the
+Adds a list of sort parameters. This is mostly important to make the
 correct sort order values available inside `input` parameter of the `mapSort` option.
 
 *Example*
@@ -384,12 +384,12 @@ interface SearchConfig {
     multiMatchType?: 'best_fields' | 'most_fields' | 'cross_fields' | 'phrase' | 'phrase_prefix' | 'bool_prefix';
     boostFields?: BoostFieldsConfig;
     priceRangeBucketInterval?: number;
-    mapQuery?: (
-        query: any,
-        input: ElasticSearchInput,
-        searchConfig: DeepRequired<SearchConfig>,
-        channelId: ID,
-        enabledOnly: boolean,
+    mapQuery?: (
+        query: any,
+        input: ElasticSearchInput,
+        searchConfig: DeepRequired<SearchConfig>,
+        channelId: ID,
+        enabledOnly: boolean,
     ) => any;
     scriptFields?: { [fieldName: string]: CustomScriptMapping<[ElasticSearchInput]> };
     mapSort?: (sort: ElasticSearchSortInput, input: ElasticSearchInput) => ElasticSearchSortInput;
@@ -400,31 +400,31 @@ interface SearchConfig {
 
 ### facetValueMaxSize
 
-<MemberInfo kind="property" type={`number`} default="50"   />
+<MemberInfo kind="property" type={`number`} default={`50`}   />
 
-The maximum number of FacetValues to return from the search query. Internally, this
+The maximum number of FacetValues to return from the search query. Internally, this
 value sets the "size" property of an Elasticsearch aggregation.
 ### collectionMaxSize
 
-<MemberInfo kind="property" type={`number`} default="50"  since="1.1.0"  />
+<MemberInfo kind="property" type={`number`} default={`50`}  since="1.1.0"  />
 
-The maximum number of Collections to return from the search query. Internally, this
+The maximum number of Collections to return from the search query. Internally, this
 value sets the "size" property of an Elasticsearch aggregation.
 ### totalItemsMaxSize
 
-<MemberInfo kind="property" type={`number | boolean`} default="10000"  since="1.2.0"  />
+<MemberInfo kind="property" type={`number | boolean`} default={`10000`}  since="1.2.0"  />
 
-The maximum number of totalItems to return from the search query. Internally, this
-value sets the "track_total_hits" property of an Elasticsearch query.
-If this parameter is set to "True", accurate count of totalItems will be returned.
-If this parameter is set to "False", totalItems will be returned as 0.
+The maximum number of totalItems to return from the search query. Internally, this
+value sets the "track_total_hits" property of an Elasticsearch query.
+If this parameter is set to "True", accurate count of totalItems will be returned.
+If this parameter is set to "False", totalItems will be returned as 0.
 If this parameter is set to integer, accurate count of totalItems will be returned not bigger than integer.
 ### multiMatchType
 
-<MemberInfo kind="property" type={`'best_fields' | 'most_fields' | 'cross_fields' | 'phrase' | 'phrase_prefix' | 'bool_prefix'`} default="'best_fields'"   />
+<MemberInfo kind="property" type={`'best_fields' | 'most_fields' | 'cross_fields' | 'phrase' | 'phrase_prefix' | 'bool_prefix'`} default={`'best_fields'`}   />
 
-Defines the
-[multi match type](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-multi-match-query.html#multi-match-types)
+Defines the
+[multi match type](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-multi-match-query.html#multi-match-types)
 used when matching against a search term.
 ### boostFields
 
@@ -435,43 +435,43 @@ Set custom boost values for particular fields when matching against a search ter
 
 <MemberInfo kind="property" type={`number`}   />
 
-The interval used to group search results into buckets according to price range. For example, setting this to
-`2000` will group into buckets every $20.00:
-
-```json
-{
-  "data": {
-    "search": {
-      "totalItems": 32,
-      "priceRange": {
-        "buckets": [
-          {
-            "to": 2000,
-            "count": 21
-          },
-          {
-            "to": 4000,
-            "count": 7
-          },
-          {
-            "to": 6000,
-            "count": 3
-          },
-          {
-            "to": 12000,
-            "count": 1
-          }
-        ]
-      }
-    }
-  }
-}
+The interval used to group search results into buckets according to price range. For example, setting this to
+`2000` will group into buckets every $20.00:
+
+```json
+{
+  "data": {
+    "search": {
+      "totalItems": 32,
+      "priceRange": {
+        "buckets": [
+          {
+            "to": 2000,
+            "count": 21
+          },
+          {
+            "to": 4000,
+            "count": 7
+          },
+          {
+            "to": 6000,
+            "count": 3
+          },
+          {
+            "to": 12000,
+            "count": 1
+          }
+        ]
+      }
+    }
+  }
+}
 ```
 ### mapQuery
 
-<MemberInfo kind="property" type={`(         query: any,         input: ElasticSearchInput,         searchConfig: DeepRequired&#60;<a href='/reference/core-plugins/elasticsearch-plugin/elasticsearch-options#searchconfig'>SearchConfig</a>&#62;,         channelId: <a href='/reference/typescript-api/common/id#id'>ID</a>,         enabledOnly: boolean,     ) =&#62; any`}   />
+<MemberInfo kind="property" type={`(
         query: any,
         input: ElasticSearchInput,
         searchConfig: DeepRequired&#60;<a href='/reference/core-plugins/elasticsearch-plugin/elasticsearch-options#searchconfig'>SearchConfig</a>&#62;,
         channelId: <a href='/reference/typescript-api/common/id#id'>ID</a>,
         enabledOnly: boolean,
     ) =&#62; any`}   />
 
-This config option allows the the modification of the whole (already built) search query. This allows
+This config option allows the the modification of the whole (already built) search query. This allows
 for e.g. wildcard / fuzzy searches on the index.
 
 *Example*
@@ -510,17 +510,17 @@ mapQuery: (query, input, searchConfig, channelId, enabledOnly){
 
 <MemberInfo kind="property" type={`{ [fieldName: string]: CustomScriptMapping&#60;[ElasticSearchInput]&#62; }`}  since="1.3.0"  />
 
-Sets `script_fields` inside the elasticsearch body which allows returning a script evaluation for each hit.
-
-The script field definition consists of three properties:
-
-* `graphQlType`: This is the type that will be returned when this script field is queried
-via the GraphQL API. It may be one of `String`, `Int`, `Float`, `Boolean`, `ID` or list
-versions thereof (`[String!]` etc) and can be appended with a `!` to indicate non-nullable fields.
-* `context`: determines whether this script field is available when grouping by product. Can be
-`product`, `variant` or `both`.
-* `scriptFn`: This is the function to run on each hit. Should return an object with a `script` property,
-as covered in the
+Sets `script_fields` inside the elasticsearch body which allows returning a script evaluation for each hit.
+
+The script field definition consists of three properties:
+
+* `graphQlType`: This is the type that will be returned when this script field is queried
+via the GraphQL API. It may be one of `String`, `Int`, `Float`, `Boolean`, `ID` or list
+versions thereof (`[String!]` etc) and can be appended with a `!` to indicate non-nullable fields.
+* `context`: determines whether this script field is available when grouping by product. Can be
+`product`, `variant` or `both`.
+* `scriptFn`: This is the function to run on each hit. Should return an object with a `script` property,
+as covered in the
 [Elasticsearch script fields docs](https://www.elastic.co/guide/en/elasticsearch/reference/7.15/search-fields.html#script-fields)
 
 *Example*
@@ -569,12 +569,12 @@ searchConfig: {
 ```
 ### mapSort
 
-<MemberInfo kind="property" type={`(sort: ElasticSearchSortInput, input: ElasticSearchInput) =&#62; ElasticSearchSortInput`} default="{}"  since="1.4.0"  />
+<MemberInfo kind="property" type={`(sort: ElasticSearchSortInput, input: ElasticSearchInput) =&#62; ElasticSearchSortInput`} default={`{}`}  since="1.4.0"  />
 
-Allows extending the `sort` input of the elasticsearch body as covered in
-[Elasticsearch sort docs](https://www.elastic.co/guide/en/elasticsearch/reference/current/sort-search-results.html)
-
-The `sort` input parameter contains the ElasticSearchSortInput generated for the default sort parameters "name" and "price".
+Allows extending the `sort` input of the elasticsearch body as covered in
+[Elasticsearch sort docs](https://www.elastic.co/guide/en/elasticsearch/reference/current/sort-search-results.html)
+
+The `sort` input parameter contains the ElasticSearchSortInput generated for the default sort parameters "name" and "price".
 If neither of those are applied it will be empty.
 
 *Example*
@@ -655,9 +655,9 @@ searchConfig: {
 
 <GenerationInfo sourceFile="packages/elasticsearch-plugin/src/options.ts" sourceLine="680" packageName="@vendure/elasticsearch-plugin" />
 
-Configuration for [boosting](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-multi-match-query.html#field-boost)
-the scores of given fields when performing a search against a term.
-
+Configuration for [boosting](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-multi-match-query.html#field-boost)
+the scores of given fields when performing a search against a term.
+
 Boosting a field acts as a score multiplier for matches against that field.
 
 ```ts title="Signature"
@@ -673,22 +673,22 @@ interface BoostFieldsConfig {
 
 ### productName
 
-<MemberInfo kind="property" type={`number`} default="1"   />
+<MemberInfo kind="property" type={`number`} default={`1`}   />
 
 Defines the boost factor for the productName field.
 ### productVariantName
 
-<MemberInfo kind="property" type={`number`} default="1"   />
+<MemberInfo kind="property" type={`number`} default={`1`}   />
 
 Defines the boost factor for the productVariantName field.
 ### description
 
-<MemberInfo kind="property" type={`number`} default="1"   />
+<MemberInfo kind="property" type={`number`} default={`1`}   />
 
 Defines the boost factor for the description field.
 ### sku
 
-<MemberInfo kind="property" type={`number`} default="1"   />
+<MemberInfo kind="property" type={`number`} default={`1`}   />
 
 Defines the boost factor for the sku field.
 

+ 1 - 1
docs/docs/reference/core-plugins/email-plugin/email-event-handler-with-async-data.md

@@ -11,7 +11,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
 
 ## EmailEventHandlerWithAsyncData
 
-<GenerationInfo sourceFile="packages/email-plugin/src/handler/event-handler.ts" sourceLine="446" packageName="@vendure/email-plugin" />
+<GenerationInfo sourceFile="packages/email-plugin/src/handler/event-handler.ts" sourceLine="456" packageName="@vendure/email-plugin" />
 
 Identical to the <a href='/reference/core-plugins/email-plugin/email-event-handler#emaileventhandler'>EmailEventHandler</a> but with a `data` property added to the `event` based on the result
 of the `.loadData()` function.

+ 3 - 3
docs/docs/reference/core-plugins/email-plugin/email-event-handler.md

@@ -11,7 +11,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
 
 ## EmailEventHandler
 
-<GenerationInfo sourceFile="packages/email-plugin/src/handler/event-handler.ts" sourceLine="135" packageName="@vendure/email-plugin" />
+<GenerationInfo sourceFile="packages/email-plugin/src/handler/event-handler.ts" sourceLine="136" packageName="@vendure/email-plugin" />
 
 The EmailEventHandler defines how the EmailPlugin will respond to a given event.
 
@@ -133,7 +133,7 @@ class EmailEventHandler<T extends string = string, Event extends EventWithContex
     setRecipient(setRecipientFn: (event: Event) => string) => EmailEventHandler<T, Event>;
     setLanguageCode(setLanguageCodeFn: (event: Event) => LanguageCode | undefined) => EmailEventHandler<T, Event>;
     setTemplateVars(templateVarsFn: SetTemplateVarsFn<Event>) => EmailEventHandler<T, Event>;
-    setSubject(defaultSubject: string) => EmailEventHandler<T, Event>;
+    setSubject(defaultSubject: string | SetSubjectFn<Event>) => EmailEventHandler<T, Event>;
     setFrom(from: string) => EmailEventHandler<T, Event>;
     setOptionalAddressFields(optionalAddressFieldsFn: SetOptionalAddressFieldsFn<Event>) => ;
     setAttachments(setAttachmentsFn: SetAttachmentsFn<Event>) => ;
@@ -178,7 +178,7 @@ A function which returns an object hash of variables which will be made availabl
 and subject line for interpolation.
 ### setSubject
 
-<MemberInfo kind="method" type={`(defaultSubject: string) => <a href='/reference/core-plugins/email-plugin/email-event-handler#emaileventhandler'>EmailEventHandler</a>&#60;T, Event&#62;`}   />
+<MemberInfo kind="method" type={`(defaultSubject: string | <a href='/reference/core-plugins/email-plugin/email-plugin-types#setsubjectfn'>SetSubjectFn</a>&#60;Event&#62;) => <a href='/reference/core-plugins/email-plugin/email-event-handler#emaileventhandler'>EmailEventHandler</a>&#60;T, Event&#62;`}   />
 
 Sets the default subject of the email. The subject string may use Handlebars variables defined by the
 setTemplateVars() method.

+ 45 - 7
docs/docs/reference/core-plugins/email-plugin/email-plugin-options.md

@@ -11,7 +11,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
 
 ## EmailPluginOptions
 
-<GenerationInfo sourceFile="packages/email-plugin/src/types.ts" sourceLine="41" packageName="@vendure/email-plugin" />
+<GenerationInfo sourceFile="packages/email-plugin/src/types.ts" sourceLine="77" packageName="@vendure/email-plugin" />
 
 Configuration for the EmailPlugin.
 
@@ -26,7 +26,7 @@ interface EmailPluginOptions {
               ctx?: RequestContext,
           ) => EmailTransportOptions | Promise<EmailTransportOptions>);
     handlers: Array<EmailEventHandler<string, any>>;
-    globalTemplateVars?: { [key: string]: any };
+    globalTemplateVars?: { [key: string]: any } | GlobalTemplateVarsFn;
     emailSender?: EmailSender;
     emailGenerator?: EmailGenerator;
 }
@@ -59,20 +59,21 @@ An array of <a href='/reference/core-plugins/email-plugin/email-event-handler#em
 emails, and how those emails are generated.
 ### globalTemplateVars
 
-<MemberInfo kind="property" type={`{ [key: string]: any }`}   />
+<MemberInfo kind="property" type={`{ [key: string]: any } | <a href='/reference/core-plugins/email-plugin/email-plugin-options#globaltemplatevarsfn'>GlobalTemplateVarsFn</a>`}   />
 
 An object containing variables which are made available to all templates. For example,
 the storefront URL could be defined here and then used in the "email address verification"
-email.
+email. Use the GlobalTemplateVarsFn if you need to retrieve variables from Vendure or
+plugin services.
 ### emailSender
 
-<MemberInfo kind="property" type={`<a href='/reference/core-plugins/email-plugin/email-sender#emailsender'>EmailSender</a>`} default="<a href='/reference/core-plugins/email-plugin/email-sender#nodemaileremailsender'>NodemailerEmailSender</a>"   />
+<MemberInfo kind="property" type={`<a href='/reference/core-plugins/email-plugin/email-sender#emailsender'>EmailSender</a>`} default={`<a href='/reference/core-plugins/email-plugin/email-sender#nodemaileremailsender'>NodemailerEmailSender</a>`}   />
 
 An optional allowed EmailSender, used to allow custom implementations of the send functionality
 while still utilizing the existing emailPlugin functionality.
 ### emailGenerator
 
-<MemberInfo kind="property" type={`<a href='/reference/core-plugins/email-plugin/email-generator#emailgenerator'>EmailGenerator</a>`} default="<a href='/reference/core-plugins/email-plugin/email-generator#handlebarsmjmlgenerator'>HandlebarsMjmlGenerator</a>"   />
+<MemberInfo kind="property" type={`<a href='/reference/core-plugins/email-plugin/email-generator#emailgenerator'>EmailGenerator</a>`} default={`<a href='/reference/core-plugins/email-plugin/email-generator#handlebarsmjmlgenerator'>HandlebarsMjmlGenerator</a>`}   />
 
 An optional allowed EmailGenerator, used to allow custom email generation functionality to
 better match with custom email sending functionality.
@@ -81,9 +82,46 @@ better match with custom email sending functionality.
 </div>
 
 
+## GlobalTemplateVarsFn
+
+<GenerationInfo sourceFile="packages/email-plugin/src/types.ts" sourceLine="64" packageName="@vendure/email-plugin" since="2.3.0" />
+
+Allows you to dynamically load the "globalTemplateVars" key async and access Vendure services
+to create the object. This is not a requirement. You can also specify a simple static object if your
+projects doesn't need to access async or dynamic values.
+
+*Example*
+
+```ts
+
+EmailPlugin.init({
+   globalTemplateVars: async (ctx, injector) => {
+         const myAsyncService = injector.get(MyAsyncService);
+         const asyncValue = await myAsyncService.get(ctx);
+         const channel = ctx.channel;
+         const { primaryColor } = channel.customFields.theme;
+         const theme = {
+             primaryColor,
+             asyncValue,
+         };
+         return theme;
+     }
+  [...]
+})
+
+```
+
+```ts title="Signature"
+type GlobalTemplateVarsFn = (
+    ctx: RequestContext,
+    injector: Injector,
+) => Promise<{ [key: string]: any }>
+```
+
+
 ## EmailPluginDevModeOptions
 
-<GenerationInfo sourceFile="packages/email-plugin/src/types.ts" sourceLine="111" packageName="@vendure/email-plugin" />
+<GenerationInfo sourceFile="packages/email-plugin/src/types.ts" sourceLine="150" packageName="@vendure/email-plugin" />
 
 Configuration for running the EmailPlugin in development mode.
 

+ 22 - 7
docs/docs/reference/core-plugins/email-plugin/email-plugin-types.md

@@ -36,7 +36,7 @@ type EventWithAsyncData<Event extends EventWithContext, R> = Event & { data: R }
 
 ## EmailDetails
 
-<GenerationInfo sourceFile="packages/email-plugin/src/types.ts" sourceLine="249" packageName="@vendure/email-plugin" />
+<GenerationInfo sourceFile="packages/email-plugin/src/types.ts" sourceLine="288" packageName="@vendure/email-plugin" />
 
 The final, generated email details to be sent.
 
@@ -102,7 +102,7 @@ interface EmailDetails<Type extends 'serialized' | 'unserialized' = 'unserialize
 
 ## LoadDataFn
 
-<GenerationInfo sourceFile="packages/email-plugin/src/types.ts" sourceLine="283" packageName="@vendure/email-plugin" />
+<GenerationInfo sourceFile="packages/email-plugin/src/types.ts" sourceLine="322" packageName="@vendure/email-plugin" />
 
 A function used to load async data for use by an <a href='/reference/core-plugins/email-plugin/email-event-handler#emaileventhandler'>EmailEventHandler</a>.
 
@@ -116,7 +116,7 @@ type LoadDataFn<Event extends EventWithContext, R> = (context: {
 
 ## EmailAttachment
 
-<GenerationInfo sourceFile="packages/email-plugin/src/types.ts" sourceLine="302" packageName="@vendure/email-plugin" />
+<GenerationInfo sourceFile="packages/email-plugin/src/types.ts" sourceLine="341" packageName="@vendure/email-plugin" />
 
 An object defining a file attachment for an email. Based on the object described
 [here in the Nodemailer docs](https://nodemailer.com/message/attachments/), but
@@ -130,7 +130,7 @@ type EmailAttachment = Omit<Attachment, 'raw'> & { path?: string }
 
 ## SetTemplateVarsFn
 
-<GenerationInfo sourceFile="packages/email-plugin/src/types.ts" sourceLine="374" packageName="@vendure/email-plugin" />
+<GenerationInfo sourceFile="packages/email-plugin/src/types.ts" sourceLine="413" packageName="@vendure/email-plugin" />
 
 A function used to define template variables available to email templates.
 See <a href='/reference/core-plugins/email-plugin/email-event-handler#emaileventhandler'>EmailEventHandler</a>.setTemplateVars().
@@ -145,7 +145,7 @@ type SetTemplateVarsFn<Event> = (
 
 ## SetAttachmentsFn
 
-<GenerationInfo sourceFile="packages/email-plugin/src/types.ts" sourceLine="388" packageName="@vendure/email-plugin" />
+<GenerationInfo sourceFile="packages/email-plugin/src/types.ts" sourceLine="427" packageName="@vendure/email-plugin" />
 
 A function used to define attachments to be sent with the email.
 See https://nodemailer.com/message/attachments/ for more information about
@@ -156,9 +156,24 @@ type SetAttachmentsFn<Event> = (event: Event) => EmailAttachment[] | Promise<Ema
 ```
 
 
+## SetSubjectFn
+
+<GenerationInfo sourceFile="packages/email-plugin/src/types.ts" sourceLine="435" packageName="@vendure/email-plugin" />
+
+A function used to define the subject to be sent with the email.
+
+```ts title="Signature"
+type SetSubjectFn<Event> = (
+    event: Event,
+    ctx: RequestContext,
+    injector: Injector,
+) => string | Promise<string>
+```
+
+
 ## OptionalAddressFields
 
-<GenerationInfo sourceFile="packages/email-plugin/src/types.ts" sourceLine="398" packageName="@vendure/email-plugin" since="1.1.0" />
+<GenerationInfo sourceFile="packages/email-plugin/src/types.ts" sourceLine="449" packageName="@vendure/email-plugin" since="1.1.0" />
 
 Optional address-related fields for sending the email.
 
@@ -194,7 +209,7 @@ An email address that will appear on the _Reply-To:_ field
 
 ## SetOptionalAddressFieldsFn
 
-<GenerationInfo sourceFile="packages/email-plugin/src/types.ts" sourceLine="424" packageName="@vendure/email-plugin" since="1.1.0" />
+<GenerationInfo sourceFile="packages/email-plugin/src/types.ts" sourceLine="475" packageName="@vendure/email-plugin" since="1.1.0" />
 
 A function used to set the <a href='/reference/core-plugins/email-plugin/email-plugin-types#optionaladdressfields'>OptionalAddressFields</a>.
 

+ 34 - 1
docs/docs/reference/core-plugins/email-plugin/index.md

@@ -11,7 +11,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
 
 ## EmailPlugin
 
-<GenerationInfo sourceFile="packages/email-plugin/src/plugin.ts" sourceLine="272" packageName="@vendure/email-plugin" />
+<GenerationInfo sourceFile="packages/email-plugin/src/plugin.ts" sourceLine="304" packageName="@vendure/email-plugin" />
 
 The EmailPlugin creates and sends transactional emails based on Vendure events. By default, it uses an [MJML](https://mjml.io/)-based
 email generator to generate the email body and [Nodemailer](https://nodemailer.com/about/) to send the emails.
@@ -103,6 +103,39 @@ Dynamic data such as the recipient's name or order items are specified using [Ha
 </mj-table>
 ```
 
+### Setting global variables using `globalTemplateVars`
+
+`globalTemplateVars` is an object that can be passed to the configuration of the Email Plugin with static object variables.
+You can also pass an async function that will be called with the `RequestContext` and the `Injector` so you can access services
+and e.g. load channel specific theme configurations.
+
+*Example*
+
+```ts
+EmailPlugin.init({
+   globalTemplateVars: {
+     primaryColor: '#FF0000',
+     fromAddress: 'no-reply@ourstore.com'
+   }
+})
+```
+or
+```ts
+EmailPlugin.init({
+   globalTemplateVars: async (ctx, injector) => {
+     const myAsyncService = injector.get(MyAsyncService);
+     const asyncValue = await myAsyncService.get(ctx);
+     const channel = ctx.channel;
+     const { primaryColor } = channel.customFields.theme;
+     const theme = {
+        primaryColor,
+        asyncValue,
+     };
+     return theme;
+   }
+})
+```
+
 ### Handlebars helpers
 
 The following helper functions are available for use in email templates:

+ 8 - 8
docs/docs/reference/core-plugins/email-plugin/transport-options.md

@@ -11,7 +11,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
 
 ## EmailTransportOptions
 
-<GenerationInfo sourceFile="packages/email-plugin/src/types.ts" sourceLine="132" packageName="@vendure/email-plugin" />
+<GenerationInfo sourceFile="packages/email-plugin/src/types.ts" sourceLine="171" packageName="@vendure/email-plugin" />
 
 A union of all the possible transport options for sending emails.
 
@@ -27,7 +27,7 @@ type EmailTransportOptions = | SMTPTransportOptions
 
 ## SMTPTransportOptions
 
-<GenerationInfo sourceFile="packages/email-plugin/src/types.ts" sourceLine="147" packageName="@vendure/email-plugin" />
+<GenerationInfo sourceFile="packages/email-plugin/src/types.ts" sourceLine="186" packageName="@vendure/email-plugin" />
 
 The SMTP transport options of [Nodemailer](https://nodemailer.com/smtp/)
 
@@ -50,7 +50,7 @@ interface SMTPTransportOptions extends SMTPTransport.Options {
 
 ### logging
 
-<MemberInfo kind="property" type={`boolean`} default="false"   />
+<MemberInfo kind="property" type={`boolean`} default={`false`}   />
 
 If true, uses the configured <a href='/reference/typescript-api/logger/vendure-logger#vendurelogger'>VendureLogger</a> to log messages from Nodemailer as it interacts with
 the SMTP server.
@@ -61,7 +61,7 @@ the SMTP server.
 
 ## SESTransportOptions
 
-<GenerationInfo sourceFile="packages/email-plugin/src/types.ts" sourceLine="196" packageName="@vendure/email-plugin" />
+<GenerationInfo sourceFile="packages/email-plugin/src/types.ts" sourceLine="235" packageName="@vendure/email-plugin" />
 
 The SES transport options of [Nodemailer](https://nodemailer.com/transports/ses//)
 
@@ -120,7 +120,7 @@ interface SESTransportOptions extends SESTransport.Options {
 
 ## SendmailTransportOptions
 
-<GenerationInfo sourceFile="packages/email-plugin/src/types.ts" sourceLine="207" packageName="@vendure/email-plugin" />
+<GenerationInfo sourceFile="packages/email-plugin/src/types.ts" sourceLine="246" packageName="@vendure/email-plugin" />
 
 Uses the local Sendmail program to send the email.
 
@@ -156,7 +156,7 @@ interface SendmailTransportOptions {
 
 ## FileTransportOptions
 
-<GenerationInfo sourceFile="packages/email-plugin/src/types.ts" sourceLine="222" packageName="@vendure/email-plugin" />
+<GenerationInfo sourceFile="packages/email-plugin/src/types.ts" sourceLine="261" packageName="@vendure/email-plugin" />
 
 Outputs the email as an HTML file for development purposes.
 
@@ -192,7 +192,7 @@ interface FileTransportOptions {
 
 ## NoopTransportOptions
 
-<GenerationInfo sourceFile="packages/email-plugin/src/types.ts" sourceLine="238" packageName="@vendure/email-plugin" />
+<GenerationInfo sourceFile="packages/email-plugin/src/types.ts" sourceLine="277" packageName="@vendure/email-plugin" />
 
 Does nothing with the generated email. Intended for use in testing where we don't care about the email transport,
 or when using a custom <a href='/reference/core-plugins/email-plugin/email-sender#emailsender'>EmailSender</a> which does not require transport options.
@@ -217,7 +217,7 @@ interface NoopTransportOptions {
 
 ## TestingTransportOptions
 
-<GenerationInfo sourceFile="packages/email-plugin/src/types.ts" sourceLine="267" packageName="@vendure/email-plugin" />
+<GenerationInfo sourceFile="packages/email-plugin/src/types.ts" sourceLine="306" packageName="@vendure/email-plugin" />
 
 Forwards the raw GeneratedEmailContext object to a provided callback, for use in testing.
 

+ 27 - 27
docs/docs/reference/core-plugins/harden-plugin/harden-plugin-options.md

@@ -20,8 +20,8 @@ interface HardenPluginOptions {
     maxQueryComplexity?: number;
     queryComplexityEstimators?: ComplexityEstimator[];
     logComplexityScore?: boolean;
-    customComplexityFactors?: {
-        [path: string]: number;
+    customComplexityFactors?: {
+        [path: string]: number;
     };
     hideFieldSuggestions?: boolean;
     apiMode?: 'dev' | 'prod';
@@ -32,35 +32,35 @@ interface HardenPluginOptions {
 
 ### maxQueryComplexity
 
-<MemberInfo kind="property" type={`number`} default="1000"   />
-
-Defines the maximum permitted complexity score of a query. The complexity score is based
-on the number of fields being selected as well as other factors like whether there are nested
-lists.
+<MemberInfo kind="property" type={`number`} default={`1000`}   />
 
+Defines the maximum permitted complexity score of a query. The complexity score is based
+on the number of fields being selected as well as other factors like whether there are nested
+lists.
+
 A query which exceeds the maximum score will result in an error.
 ### queryComplexityEstimators
 
 <MemberInfo kind="property" type={`ComplexityEstimator[]`}   />
 
-An array of custom estimator functions for calculating the complexity of a query. By default,
-the plugin will use the <a href='/reference/core-plugins/harden-plugin/default-vendure-complexity-estimator#defaultvendurecomplexityestimator'>defaultVendureComplexityEstimator</a> which is specifically
+An array of custom estimator functions for calculating the complexity of a query. By default,
+the plugin will use the <a href='/reference/core-plugins/harden-plugin/default-vendure-complexity-estimator#defaultvendurecomplexityestimator'>defaultVendureComplexityEstimator</a> which is specifically
 tuned to accurately estimate Vendure queries.
 ### logComplexityScore
 
-<MemberInfo kind="property" type={`boolean`} default="false"   />
-
-When set to `true`, the complexity score of each query will be logged at the Verbose
-log level, and a breakdown of the calculation for each field will be logged at the Debug level.
+<MemberInfo kind="property" type={`boolean`} default={`false`}   />
 
+When set to `true`, the complexity score of each query will be logged at the Verbose
+log level, and a breakdown of the calculation for each field will be logged at the Debug level.
+
 This is very useful for tuning your complexity scores.
 ### customComplexityFactors
 
-<MemberInfo kind="property" type={`{         [path: string]: number;     }`}   />
+<MemberInfo kind="property" type={`{
         [path: string]: number;
     }`}   />
 
-This object allows you to tune the complexity weight of specific fields. For example,
-if you have a custom `stockLocations` field defined on the `ProductVariant` type, and
-you know that it is a particularly expensive operation to execute, you can increase
+This object allows you to tune the complexity weight of specific fields. For example,
+if you have a custom `stockLocations` field defined on the `ProductVariant` type, and
+you know that it is a particularly expensive operation to execute, you can increase
 its complexity like this:
 
 *Example*
@@ -75,21 +75,21 @@ HardenPlugin.init({
 ```
 ### hideFieldSuggestions
 
-<MemberInfo kind="property" type={`boolean`} default="true"   />
+<MemberInfo kind="property" type={`boolean`} default={`true`}   />
 
-Graphql-js will make suggestions about the names of fields if an invalid field name is provided.
-This would allow an attacker to find out the available fields by brute force even if introspection
-is disabled.
-
-Setting this option to `true` will prevent these suggestion error messages from being returned,
+Graphql-js will make suggestions about the names of fields if an invalid field name is provided.
+This would allow an attacker to find out the available fields by brute force even if introspection
+is disabled.
+
+Setting this option to `true` will prevent these suggestion error messages from being returned,
 instead replacing the message with a generic "Invalid request" message.
 ### apiMode
 
-<MemberInfo kind="property" type={`'dev' | 'prod'`} default="'prod'"   />
-
-When set to `'prod'`, the plugin will disable dev-mode features of the GraphQL APIs:
+<MemberInfo kind="property" type={`'dev' | 'prod'`} default={`'prod'`}   />
 
-- introspection
+When set to `'prod'`, the plugin will disable dev-mode features of the GraphQL APIs:
+
+- introspection
 - GraphQL playground
 
 

+ 1 - 1
docs/docs/reference/core-plugins/job-queue-plugin/bull-mqplugin-options.md

@@ -73,7 +73,7 @@ setRetries: (queueName, job) => {
  ```
 ### setBackoff
 
-<MemberInfo kind="property" type={`(queueName: string, job: Job) =&#62; <a href='/reference/core-plugins/job-queue-plugin/bull-mqplugin-options#backoffoptions'>BackoffOptions</a> | undefined`} default="'exponential', 1000"  since="1.3.0"  />
+<MemberInfo kind="property" type={`(queueName: string, job: Job) =&#62; <a href='/reference/core-plugins/job-queue-plugin/bull-mqplugin-options#backoffoptions'>BackoffOptions</a> | undefined`} default={`'exponential', 1000`}  since="1.3.0"  />
 
 This allows you to specify the backoff settings when a failed job gets retried.
 In other words, this determines how much time should pass before attempting to

+ 2 - 2
docs/docs/reference/core-plugins/payments-plugin/braintree-plugin.md

@@ -282,12 +282,12 @@ interface BraintreePluginOptions {
 
 ### environment
 
-<MemberInfo kind="property" type={`Environment`} default="Environment.Sandbox"   />
+<MemberInfo kind="property" type={`Environment`} default={`Environment.Sandbox`}   />
 
 The Braintree environment being targeted, e.g. sandbox or production.
 ### storeCustomersInBraintree
 
-<MemberInfo kind="property" type={`boolean`} default="false"   />
+<MemberInfo kind="property" type={`boolean`} default={`false`}   />
 
 If set to `true`, a [Customer](https://developer.paypal.com/braintree/docs/guides/customers) object
 will be created in Braintree, which allows the secure storage ("vaulting") of previously-used payment methods.

+ 116 - 116
docs/docs/reference/core-plugins/payments-plugin/mollie-plugin.md

@@ -13,110 +13,110 @@ import MemberDescription from '@site/src/components/MemberDescription';
 
 <GenerationInfo sourceFile="packages/payments-plugin/src/mollie/mollie.plugin.ts" sourceLine="192" packageName="@vendure/payments-plugin" />
 
-Plugin to enable payments through the [Mollie platform](https://docs.mollie.com/).
-This plugin uses the Order API from Mollie, not the Payments API.
-
-## Requirements
-
-1. You will need to create a Mollie account and get your apiKey in the dashboard.
-2. Install the Payments plugin and the Mollie client:
-
-    `yarn add @vendure/payments-plugin @mollie/api-client`
-
-    or
-
-    `npm install @vendure/payments-plugin @mollie/api-client`
-
-## Setup
-
-1. Add the plugin to your VendureConfig `plugins` array:
-    ```ts
-    import { MolliePlugin } from '@vendure/payments-plugin/package/mollie';
-
-    // ...
-
-    plugins: [
-      MolliePlugin.init({ vendureHost: 'https://yourhost.io/' }),
-    ]
-    ```
-2. Run a database migration to add the `mollieOrderId` custom field to the order entity.
-3. Create a new PaymentMethod in the Admin UI, and select "Mollie payments" as the handler.
-4. Set your Mollie apiKey in the `API Key` field.
-5. Set the `Fallback redirectUrl` to the url that the customer should be redirected to after completing the payment.
-You can override this url by passing the `redirectUrl` as an argument to the `createMolliePaymentIntent` mutation.
-
-## Storefront usage
-
-In your storefront you add a payment to an order using the `createMolliePaymentIntent` mutation. In this example, our Mollie
-PaymentMethod was given the code "mollie-payment-method". The `redirectUrl``is the url that is used to redirect the end-user
-back to your storefront after completing the payment.
-
-```GraphQL
-mutation CreateMolliePaymentIntent {
-  createMolliePaymentIntent(input: {
-    redirectUrl: "https://storefront/order/1234XYZ"
-    paymentMethodCode: "mollie-payment-method"
-    molliePaymentMethodCode: "ideal"
-  }) {
-         ... on MolliePaymentIntent {
-              url
-          }
-         ... on MolliePaymentIntentError {
-              errorCode
-              message
-         }
-  }
-}
-```
-
-The response will contain
-a redirectUrl, which can be used to redirect your customer to the Mollie
-platform.
-
-'molliePaymentMethodCode' is an optional parameter that can be passed to skip Mollie's hosted payment method selection screen
-You can get available Mollie payment methods with the following query:
-
-```GraphQL
-{
- molliePaymentMethods(input: { paymentMethodCode: "mollie-payment-method" }) {
-   id
-   code
-   description
-   minimumAmount {
-     value
-     currency
-   }
-   maximumAmount {
-     value
-     currency
-   }
-   image {
-     size1x
-     size2x
-     svg
-   }
- }
-}
-```
-You can pass `creditcard` for example, to the `createMolliePaymentIntent` mutation to skip the method selection.
-
-After completing payment on the Mollie platform,
-the user is redirected to the given redirect url, e.g. `https://storefront/order/CH234X5`
-
-## Pay later methods
-Mollie supports pay-later methods like 'Klarna Pay Later'. For pay-later methods, the status of an order is
-'PaymentAuthorized' after the Mollie hosted checkout. You need to manually settle the payment via the admin ui to capture the payment!
-Make sure you capture a payment within 28 days, because this is the Klarna expiry time
-
-If you don't want this behaviour (Authorized first), you can set 'autoCapture=true' on the payment method. This option will immediately
-capture the payment after a customer authorizes the payment.
-
-## ArrangingAdditionalPayment state
-
-In some rare cases, a customer can add items to the active order, while a Mollie payment is still open,
-for example by opening your storefront in another browser tab.
-This could result in an order being in `ArrangingAdditionalPayment` status after the customer finished payment.
-You should check if there is still an active order with status `ArrangingAdditionalPayment` on your order confirmation page,
+Plugin to enable payments through the [Mollie platform](https://docs.mollie.com/).
+This plugin uses the Order API from Mollie, not the Payments API.
+
+## Requirements
+
+1. You will need to create a Mollie account and get your apiKey in the dashboard.
+2. Install the Payments plugin and the Mollie client:
+
+    `yarn add @vendure/payments-plugin @mollie/api-client`
+
+    or
+
+    `npm install @vendure/payments-plugin @mollie/api-client`
+
+## Setup
+
+1. Add the plugin to your VendureConfig `plugins` array:
+    ```ts
+    import { MolliePlugin } from '@vendure/payments-plugin/package/mollie';
+
+    // ...
+
+    plugins: [
+      MolliePlugin.init({ vendureHost: 'https://yourhost.io/' }),
+    ]
+    ```
+2. Run a database migration to add the `mollieOrderId` custom field to the order entity.
+3. Create a new PaymentMethod in the Admin UI, and select "Mollie payments" as the handler.
+4. Set your Mollie apiKey in the `API Key` field.
+5. Set the `Fallback redirectUrl` to the url that the customer should be redirected to after completing the payment.
+You can override this url by passing the `redirectUrl` as an argument to the `createMolliePaymentIntent` mutation.
+
+## Storefront usage
+
+In your storefront you add a payment to an order using the `createMolliePaymentIntent` mutation. In this example, our Mollie
+PaymentMethod was given the code "mollie-payment-method". The `redirectUrl``is the url that is used to redirect the end-user
+back to your storefront after completing the payment.
+
+```GraphQL
+mutation CreateMolliePaymentIntent {
+  createMolliePaymentIntent(input: {
+    redirectUrl: "https://storefront/order/1234XYZ"
+    paymentMethodCode: "mollie-payment-method"
+    molliePaymentMethodCode: "ideal"
+  }) {
+         ... on MolliePaymentIntent {
+              url
+          }
+         ... on MolliePaymentIntentError {
+              errorCode
+              message
+         }
+  }
+}
+```
+
+The response will contain
+a redirectUrl, which can be used to redirect your customer to the Mollie
+platform.
+
+'molliePaymentMethodCode' is an optional parameter that can be passed to skip Mollie's hosted payment method selection screen
+You can get available Mollie payment methods with the following query:
+
+```GraphQL
+{
+ molliePaymentMethods(input: { paymentMethodCode: "mollie-payment-method" }) {
+   id
+   code
+   description
+   minimumAmount {
+     value
+     currency
+   }
+   maximumAmount {
+     value
+     currency
+   }
+   image {
+     size1x
+     size2x
+     svg
+   }
+ }
+}
+```
+You can pass `creditcard` for example, to the `createMolliePaymentIntent` mutation to skip the method selection.
+
+After completing payment on the Mollie platform,
+the user is redirected to the given redirect url, e.g. `https://storefront/order/CH234X5`
+
+## Pay later methods
+Mollie supports pay-later methods like 'Klarna Pay Later'. For pay-later methods, the status of an order is
+'PaymentAuthorized' after the Mollie hosted checkout. You need to manually settle the payment via the admin ui to capture the payment!
+Make sure you capture a payment within 28 days, because this is the Klarna expiry time
+
+If you don't want this behaviour (Authorized first), you can set 'autoCapture=true' on the payment method. This option will immediately
+capture the payment after a customer authorizes the payment.
+
+## ArrangingAdditionalPayment state
+
+In some rare cases, a customer can add items to the active order, while a Mollie payment is still open,
+for example by opening your storefront in another browser tab.
+This could result in an order being in `ArrangingAdditionalPayment` status after the customer finished payment.
+You should check if there is still an active order with status `ArrangingAdditionalPayment` on your order confirmation page,
 and if so, allow your customer to pay for the additional items by creating another Mollie payment.
 
 ```ts title="Signature"
@@ -152,10 +152,10 @@ Configuration options for the Mollie payments plugin.
 ```ts title="Signature"
 interface MolliePluginOptions {
     vendureHost: string;
-    enabledPaymentMethodsParams?: (
-        injector: Injector,
-        ctx: RequestContext,
-        order: Order | null,
+    enabledPaymentMethodsParams?: (
+        injector: Injector,
+        ctx: RequestContext,
+        order: Order | null,
     ) => AdditionalEnabledPaymentMethodsParams | Promise<AdditionalEnabledPaymentMethodsParams>;
 }
 ```
@@ -166,18 +166,18 @@ interface MolliePluginOptions {
 
 <MemberInfo kind="property" type={`string`}   />
 
-The host of your Vendure server, e.g. `'https://my-vendure.io'`.
+The host of your Vendure server, e.g. `'https://my-vendure.io'`.
 This is used by Mollie to send webhook events to the Vendure server
 ### enabledPaymentMethodsParams
 
-<MemberInfo kind="property" type={`(         injector: <a href='/reference/typescript-api/common/injector#injector'>Injector</a>,         ctx: <a href='/reference/typescript-api/request/request-context#requestcontext'>RequestContext</a>,         order: <a href='/reference/typescript-api/entities/order#order'>Order</a> | null,     ) =&#62; AdditionalEnabledPaymentMethodsParams | Promise&#60;AdditionalEnabledPaymentMethodsParams&#62;`}  since="2.2.0"  />
-
-Provide additional parameters to the Mollie enabled payment methods API call. By default,
-the plugin will already pass the `resource` parameter.
-
-For example, if you want to provide a `locale` and `billingCountry` for the API call, you can do so like this:
+<MemberInfo kind="property" type={`(
         injector: <a href='/reference/typescript-api/common/injector#injector'>Injector</a>,
         ctx: <a href='/reference/typescript-api/request/request-context#requestcontext'>RequestContext</a>,
         order: <a href='/reference/typescript-api/entities/order#order'>Order</a> | null,
     ) =&#62; AdditionalEnabledPaymentMethodsParams | Promise&#60;AdditionalEnabledPaymentMethodsParams&#62;`}  since="2.2.0"  />
 
-**Note:** The `order` argument is possibly `null`, this could happen when you fetch the available payment methods
+Provide additional parameters to the Mollie enabled payment methods API call. By default,
+the plugin will already pass the `resource` parameter.
+
+For example, if you want to provide a `locale` and `billingCountry` for the API call, you can do so like this:
+
+**Note:** The `order` argument is possibly `null`, this could happen when you fetch the available payment methods
 before the order is created.
 
 *Example*

+ 166 - 166
docs/docs/reference/core-plugins/payments-plugin/stripe-plugin.md

@@ -13,147 +13,147 @@ import MemberDescription from '@site/src/components/MemberDescription';
 
 <GenerationInfo sourceFile="packages/payments-plugin/src/stripe/stripe.plugin.ts" sourceLine="161" packageName="@vendure/payments-plugin" />
 
-Plugin to enable payments through [Stripe](https://stripe.com/docs) via the Payment Intents API.
-
-## Requirements
-
-1. You will need to create a Stripe account and get your secret key in the dashboard.
-2. Create a webhook endpoint in the Stripe dashboard (Developers -> Webhooks, "Add an endpoint") which listens to the `payment_intent.succeeded`
-and `payment_intent.payment_failed` events. The URL should be `https://my-server.com/payments/stripe`, where
-`my-server.com` is the host of your Vendure server. *Note:* for local development, you'll need to use
-the Stripe CLI to test your webhook locally. See the _local development_ section below.
-3. Get the signing secret for the newly created webhook.
-4. Install the Payments plugin and the Stripe Node library:
-
-    `yarn add @vendure/payments-plugin stripe`
-
-    or
-
-    `npm install @vendure/payments-plugin stripe`
-
-## Setup
-
-1. Add the plugin to your VendureConfig `plugins` array:
-    ```ts
-    import { StripePlugin } from '@vendure/payments-plugin/package/stripe';
-
-    // ...
-
-    plugins: [
-      StripePlugin.init({
-        // This prevents different customers from using the same PaymentIntent
-        storeCustomersInStripe: true,
-      }),
-    ]
-    ````
-    For all the plugin options, see the <a href='/reference/core-plugins/payments-plugin/stripe-plugin#stripepluginoptions'>StripePluginOptions</a> type.
-2. Create a new PaymentMethod in the Admin UI, and select "Stripe payments" as the handler.
-3. Set the webhook secret and API key in the PaymentMethod form.
-
-## Storefront usage
-
-The plugin is designed to work with the [Custom payment flow](https://stripe.com/docs/payments/accept-a-payment?platform=web&ui=elements).
-In this flow, Stripe provides libraries which handle the payment UI and confirmation for you. You can install it in your storefront project
-with:
-
-```shell
-yarn add @stripe/stripe-js
-# or
-npm install @stripe/stripe-js
-```
-
-If you are using React, you should also consider installing `@stripe/react-stripe-js`, which is a wrapper around Stripe Elements.
-
-The high-level workflow is:
-1. Create a "payment intent" on the server by executing the `createStripePaymentIntent` mutation which is exposed by this plugin.
-2. Use the returned client secret to instantiate the Stripe Payment Element:
-   ```ts
-   import { Elements } from '@stripe/react-stripe-js';
-   import { loadStripe, Stripe } from '@stripe/stripe-js';
-   import { CheckoutForm } from './CheckoutForm';
-
-   const stripePromise = getStripe('pk_test_....wr83u');
-
-   type StripePaymentsProps = {
-     clientSecret: string;
-     orderCode: string;
-   }
-
-   export function StripePayments({ clientSecret, orderCode }: StripePaymentsProps) {
-     const options = {
-       // passing the client secret obtained from the server
-       clientSecret,
-     }
-     return (
-       <Elements stripe={stripePromise} options={options}>
-         <CheckoutForm orderCode={orderCode} />
-       </Elements>
-     );
-   }
-   ```
-   ```ts
-   // CheckoutForm.tsx
-   import { useStripe, useElements, PaymentElement } from '@stripe/react-stripe-js';
-   import { FormEvent } from 'react';
-
-   export const CheckoutForm = ({ orderCode }: { orderCode: string }) => {
-     const stripe = useStripe();
-     const elements = useElements();
-
-     const handleSubmit = async (event: FormEvent) => {
-       // We don't want to let default form submission happen here,
-       // which would refresh the page.
-       event.preventDefault();
-
-       if (!stripe || !elements) {
-         // Stripe.js has not yet loaded.
-         // Make sure to disable form submission until Stripe.js has loaded.
-         return;
-       }
-
-       const result = await stripe.confirmPayment({
-         //`Elements` instance that was used to create the Payment Element
-         elements,
-         confirmParams: {
-           return_url: location.origin + `/checkout/confirmation/${orderCode}`,
-         },
-       });
-
-       if (result.error) {
-         // Show error to your customer (for example, payment details incomplete)
-         console.log(result.error.message);
-       } else {
-         // Your customer will be redirected to your `return_url`. For some payment
-         // methods like iDEAL, your customer will be redirected to an intermediate
-         // site first to authorize the payment, then redirected to the `return_url`.
-       }
-     };
-
-     return (
-       <form onSubmit={handleSubmit}>
-         <PaymentElement />
-         <button disabled={!stripe}>Submit</button>
-       </form>
-     );
-   };
-   ```
-3. Once the form is submitted and Stripe processes the payment, the webhook takes care of updating the order without additional action
-in the storefront. As in the code above, the customer will be redirected to `/checkout/confirmation/${orderCode}`.
-
-:::info
-A full working storefront example of the Stripe integration can be found in the
-[Remix Starter repo](https://github.com/vendure-ecommerce/storefront-remix-starter/tree/master/app/components/checkout/stripe)
-:::
-
-## Local development
-
-1. Download & install the Stripe CLI: https://stripe.com/docs/stripe-cli
-2. From your Stripe dashboard, go to Developers -> Webhooks and click "Add an endpoint" and follow the instructions
-under "Test in a local environment".
-3. The Stripe CLI command will look like
-   ```shell
-   stripe listen --forward-to localhost:3000/payments/stripe
-   ```
+Plugin to enable payments through [Stripe](https://stripe.com/docs) via the Payment Intents API.
+
+## Requirements
+
+1. You will need to create a Stripe account and get your secret key in the dashboard.
+2. Create a webhook endpoint in the Stripe dashboard (Developers -> Webhooks, "Add an endpoint") which listens to the `payment_intent.succeeded`
+and `payment_intent.payment_failed` events. The URL should be `https://my-server.com/payments/stripe`, where
+`my-server.com` is the host of your Vendure server. *Note:* for local development, you'll need to use
+the Stripe CLI to test your webhook locally. See the _local development_ section below.
+3. Get the signing secret for the newly created webhook.
+4. Install the Payments plugin and the Stripe Node library:
+
+    `yarn add @vendure/payments-plugin stripe`
+
+    or
+
+    `npm install @vendure/payments-plugin stripe`
+
+## Setup
+
+1. Add the plugin to your VendureConfig `plugins` array:
+    ```ts
+    import { StripePlugin } from '@vendure/payments-plugin/package/stripe';
+
+    // ...
+
+    plugins: [
+      StripePlugin.init({
+        // This prevents different customers from using the same PaymentIntent
+        storeCustomersInStripe: true,
+      }),
+    ]
+    ````
+    For all the plugin options, see the <a href='/reference/core-plugins/payments-plugin/stripe-plugin#stripepluginoptions'>StripePluginOptions</a> type.
+2. Create a new PaymentMethod in the Admin UI, and select "Stripe payments" as the handler.
+3. Set the webhook secret and API key in the PaymentMethod form.
+
+## Storefront usage
+
+The plugin is designed to work with the [Custom payment flow](https://stripe.com/docs/payments/accept-a-payment?platform=web&ui=elements).
+In this flow, Stripe provides libraries which handle the payment UI and confirmation for you. You can install it in your storefront project
+with:
+
+```shell
+yarn add @stripe/stripe-js
+# or
+npm install @stripe/stripe-js
+```
+
+If you are using React, you should also consider installing `@stripe/react-stripe-js`, which is a wrapper around Stripe Elements.
+
+The high-level workflow is:
+1. Create a "payment intent" on the server by executing the `createStripePaymentIntent` mutation which is exposed by this plugin.
+2. Use the returned client secret to instantiate the Stripe Payment Element:
+   ```ts
+   import { Elements } from '@stripe/react-stripe-js';
+   import { loadStripe, Stripe } from '@stripe/stripe-js';
+   import { CheckoutForm } from './CheckoutForm';
+
+   const stripePromise = getStripe('pk_test_....wr83u');
+
+   type StripePaymentsProps = {
+     clientSecret: string;
+     orderCode: string;
+   }
+
+   export function StripePayments({ clientSecret, orderCode }: StripePaymentsProps) {
+     const options = {
+       // passing the client secret obtained from the server
+       clientSecret,
+     }
+     return (
+       <Elements stripe={stripePromise} options={options}>
+         <CheckoutForm orderCode={orderCode} />
+       </Elements>
+     );
+   }
+   ```
+   ```ts
+   // CheckoutForm.tsx
+   import { useStripe, useElements, PaymentElement } from '@stripe/react-stripe-js';
+   import { FormEvent } from 'react';
+
+   export const CheckoutForm = ({ orderCode }: { orderCode: string }) => {
+     const stripe = useStripe();
+     const elements = useElements();
+
+     const handleSubmit = async (event: FormEvent) => {
+       // We don't want to let default form submission happen here,
+       // which would refresh the page.
+       event.preventDefault();
+
+       if (!stripe || !elements) {
+         // Stripe.js has not yet loaded.
+         // Make sure to disable form submission until Stripe.js has loaded.
+         return;
+       }
+
+       const result = await stripe.confirmPayment({
+         //`Elements` instance that was used to create the Payment Element
+         elements,
+         confirmParams: {
+           return_url: location.origin + `/checkout/confirmation/${orderCode}`,
+         },
+       });
+
+       if (result.error) {
+         // Show error to your customer (for example, payment details incomplete)
+         console.log(result.error.message);
+       } else {
+         // Your customer will be redirected to your `return_url`. For some payment
+         // methods like iDEAL, your customer will be redirected to an intermediate
+         // site first to authorize the payment, then redirected to the `return_url`.
+       }
+     };
+
+     return (
+       <form onSubmit={handleSubmit}>
+         <PaymentElement />
+         <button disabled={!stripe}>Submit</button>
+       </form>
+     );
+   };
+   ```
+3. Once the form is submitted and Stripe processes the payment, the webhook takes care of updating the order without additional action
+in the storefront. As in the code above, the customer will be redirected to `/checkout/confirmation/${orderCode}`.
+
+:::info
+A full working storefront example of the Stripe integration can be found in the
+[Remix Starter repo](https://github.com/vendure-ecommerce/storefront-remix-starter/tree/master/app/components/checkout/stripe)
+:::
+
+## Local development
+
+1. Download & install the Stripe CLI: https://stripe.com/docs/stripe-cli
+2. From your Stripe dashboard, go to Developers -> Webhooks and click "Add an endpoint" and follow the instructions
+under "Test in a local environment".
+3. The Stripe CLI command will look like
+   ```shell
+   stripe listen --forward-to localhost:3000/payments/stripe
+   ```
 4. The Stripe CLI will create a webhook signing secret you can then use in your config of the StripePlugin.
 
 ```ts title="Signature"
@@ -189,20 +189,20 @@ Configuration options for the Stripe payments plugin.
 ```ts title="Signature"
 interface StripePluginOptions {
     storeCustomersInStripe?: boolean;
-    metadata?: (
-        injector: Injector,
-        ctx: RequestContext,
-        order: Order,
+    metadata?: (
+        injector: Injector,
+        ctx: RequestContext,
+        order: Order,
     ) => Stripe.MetadataParam | Promise<Stripe.MetadataParam>;
-    paymentIntentCreateParams?: (
-        injector: Injector,
-        ctx: RequestContext,
-        order: Order,
+    paymentIntentCreateParams?: (
+        injector: Injector,
+        ctx: RequestContext,
+        order: Order,
     ) => AdditionalPaymentIntentCreateParams | Promise<AdditionalPaymentIntentCreateParams>;
-    customerCreateParams?: (
-        injector: Injector,
-        ctx: RequestContext,
-        order: Order,
+    customerCreateParams?: (
+        injector: Injector,
+        ctx: RequestContext,
+        order: Order,
     ) => AdditionalCustomerCreateParams | Promise<AdditionalCustomerCreateParams>;
 }
 ```
@@ -211,15 +211,15 @@ interface StripePluginOptions {
 
 ### storeCustomersInStripe
 
-<MemberInfo kind="property" type={`boolean`} default="false"   />
+<MemberInfo kind="property" type={`boolean`} default={`false`}   />
 
-If set to `true`, a [Customer](https://stripe.com/docs/api/customers) object will be created in Stripe - if
-it doesn't already exist - for authenticated users, which prevents payment methods attached to other Customers
-to be used with the same PaymentIntent. This is done by adding a custom field to the Customer entity to store
+If set to `true`, a [Customer](https://stripe.com/docs/api/customers) object will be created in Stripe - if
+it doesn't already exist - for authenticated users, which prevents payment methods attached to other Customers
+to be used with the same PaymentIntent. This is done by adding a custom field to the Customer entity to store
 the Stripe customer ID, so switching this on will require a database migration / synchronization.
 ### metadata
 
-<MemberInfo kind="property" type={`(         injector: <a href='/reference/typescript-api/common/injector#injector'>Injector</a>,         ctx: <a href='/reference/typescript-api/request/request-context#requestcontext'>RequestContext</a>,         order: <a href='/reference/typescript-api/entities/order#order'>Order</a>,     ) =&#62; Stripe.MetadataParam | Promise&#60;Stripe.MetadataParam&#62;`}  since="1.9.7"  />
+<MemberInfo kind="property" type={`(
         injector: <a href='/reference/typescript-api/common/injector#injector'>Injector</a>,
         ctx: <a href='/reference/typescript-api/request/request-context#requestcontext'>RequestContext</a>,
         order: <a href='/reference/typescript-api/entities/order#order'>Order</a>,
     ) =&#62; Stripe.MetadataParam | Promise&#60;Stripe.MetadataParam&#62;`}  since="1.9.7"  />
 
 Attach extra metadata to Stripe payment intent creation call.
 
@@ -249,11 +249,11 @@ Note: If the `paymentIntentCreateParams` is also used and returns a `metadata` k
 returned by both functions will be merged.
 ### paymentIntentCreateParams
 
-<MemberInfo kind="property" type={`(         injector: <a href='/reference/typescript-api/common/injector#injector'>Injector</a>,         ctx: <a href='/reference/typescript-api/request/request-context#requestcontext'>RequestContext</a>,         order: <a href='/reference/typescript-api/entities/order#order'>Order</a>,     ) =&#62; AdditionalPaymentIntentCreateParams | Promise&#60;AdditionalPaymentIntentCreateParams&#62;`}  since="2.1.0"  />
-
-Provide additional parameters to the Stripe payment intent creation. By default,
-the plugin will already pass the `amount`, `currency`, `customer` and `automatic_payment_methods: { enabled: true }` parameters.
+<MemberInfo kind="property" type={`(
         injector: <a href='/reference/typescript-api/common/injector#injector'>Injector</a>,
         ctx: <a href='/reference/typescript-api/request/request-context#requestcontext'>RequestContext</a>,
         order: <a href='/reference/typescript-api/entities/order#order'>Order</a>,
     ) =&#62; AdditionalPaymentIntentCreateParams | Promise&#60;AdditionalPaymentIntentCreateParams&#62;`}  since="2.1.0"  />
 
+Provide additional parameters to the Stripe payment intent creation. By default,
+the plugin will already pass the `amount`, `currency`, `customer` and `automatic_payment_methods: { enabled: true }` parameters.
+
 For example, if you want to provide a `description` for the payment intent, you can do so like this:
 
 *Example*
@@ -277,11 +277,11 @@ export const config: VendureConfig = {
 ```
 ### customerCreateParams
 
-<MemberInfo kind="property" type={`(         injector: <a href='/reference/typescript-api/common/injector#injector'>Injector</a>,         ctx: <a href='/reference/typescript-api/request/request-context#requestcontext'>RequestContext</a>,         order: <a href='/reference/typescript-api/entities/order#order'>Order</a>,     ) =&#62; AdditionalCustomerCreateParams | Promise&#60;AdditionalCustomerCreateParams&#62;`}  since="2.1.0"  />
-
-Provide additional parameters to the Stripe customer creation. By default,
-the plugin will already pass the `email` and `name` parameters.
+<MemberInfo kind="property" type={`(
         injector: <a href='/reference/typescript-api/common/injector#injector'>Injector</a>,
         ctx: <a href='/reference/typescript-api/request/request-context#requestcontext'>RequestContext</a>,
         order: <a href='/reference/typescript-api/entities/order#order'>Order</a>,
     ) =&#62; AdditionalCustomerCreateParams | Promise&#60;AdditionalCustomerCreateParams&#62;`}  since="2.1.0"  />
 
+Provide additional parameters to the Stripe customer creation. By default,
+the plugin will already pass the `email` and `name` parameters.
+
 For example, if you want to provide an address for the customer:
 
 *Example*

+ 10 - 10
docs/docs/reference/core-plugins/stellate-plugin/purge-rule.md

@@ -13,8 +13,8 @@ import MemberDescription from '@site/src/components/MemberDescription';
 
 <GenerationInfo sourceFile="packages/stellate-plugin/src/purge-rule.ts" sourceLine="49" packageName="@vendure/stellate-plugin" />
 
-Defines a rule that listens for a particular VendureEvent and uses that to
-make calls to the [Stellate Purging API](https://docs.stellate.co/docs/purging-api) via
+Defines a rule that listens for a particular VendureEvent and uses that to
+make calls to the [Stellate Purging API](https://docs.stellate.co/docs/purging-api) via
 the provided <a href='/reference/core-plugins/stellate-plugin/stellate-service#stellateservice'>StellateService</a> instance.
 
 ```ts title="Signature"
@@ -63,10 +63,10 @@ Configures a <a href='/reference/core-plugins/stellate-plugin/purge-rule#purgeru
 interface PurgeRuleConfig<Event extends VendureEvent> {
     eventType: Type<Event>;
     bufferTime?: number;
-    handler: (handlerArgs: {
-        events: Event[];
-        stellateService: StellateService;
-        injector: Injector;
+    handler: (handlerArgs: {
+        events: Event[];
+        stellateService: StellateService;
+        injector: Injector;
     }) => void | Promise<void>;
 }
 ```
@@ -80,15 +80,15 @@ interface PurgeRuleConfig<Event extends VendureEvent> {
 Specifies which VendureEvent will trigger this purge rule.
 ### bufferTime
 
-<MemberInfo kind="property" type={`number`} default="5000"   />
+<MemberInfo kind="property" type={`number`} default={`5000`}   />
 
-How long to buffer events for in milliseconds before executing the handler. This allows
+How long to buffer events for in milliseconds before executing the handler. This allows
 us to efficiently batch calls to the Stellate Purge API.
 ### handler
 
-<MemberInfo kind="property" type={`(handlerArgs: {         events: Event[];         stellateService: <a href='/reference/core-plugins/stellate-plugin/stellate-service#stellateservice'>StellateService</a>;         injector: <a href='/reference/typescript-api/common/injector#injector'>Injector</a>;     }) =&#62; void | Promise&#60;void&#62;`}   />
+<MemberInfo kind="property" type={`(handlerArgs: {
         events: Event[];
         stellateService: <a href='/reference/core-plugins/stellate-plugin/stellate-service#stellateservice'>StellateService</a>;
         injector: <a href='/reference/typescript-api/common/injector#injector'>Injector</a>;
     }) =&#62; void | Promise&#60;void&#62;`}   />
 
-The function to invoke when the specified event is published. This function should use the
+The function to invoke when the specified event is published. This function should use the
 <a href='/reference/core-plugins/stellate-plugin/stellate-service#stellateservice'>StellateService</a> instance to call the Stellate Purge API.
 
 

+ 3 - 3
docs/docs/reference/core-plugins/stellate-plugin/stellate-plugin-options.md

@@ -47,19 +47,19 @@ An array of <a href='/reference/core-plugins/stellate-plugin/purge-rule#purgerul
 respond to Vendure events in order to trigger calls to the Stellate Purging API.
 ### defaultBufferTimeMs
 
-<MemberInfo kind="property" type={`number`} default="2000"   />
+<MemberInfo kind="property" type={`number`} default={`2000`}   />
 
 When events are published, the PurgeRules will buffer those events in order to efficiently
 batch requests to the Stellate Purging API. You may wish to change the default, e.g. if you are
 running in a serverless environment and cannot introduce pauses after the main request has completed.
 ### devMode
 
-<MemberInfo kind="property" type={`boolean`} default="false"   />
+<MemberInfo kind="property" type={`boolean`} default={`false`}   />
 
 When set to `true`, calls will not be made to the Stellate Purge API.
 ### debugLogging
 
-<MemberInfo kind="property" type={`boolean`} default="false"   />
+<MemberInfo kind="property" type={`boolean`} default={`false`}   />
 
 If set to true, the plugin will log the calls that would be made
 to the Stellate Purge API. Note, this generates a

+ 6 - 6
docs/docs/reference/typescript-api/assets/asset-options.md

@@ -11,7 +11,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
 
 ## AssetOptions
 
-<GenerationInfo sourceFile="packages/core/src/config/vendure-config.ts" sourceLine="627" packageName="@vendure/core" />
+<GenerationInfo sourceFile="packages/core/src/config/vendure-config.ts" sourceLine="628" packageName="@vendure/core" />
 
 The AssetOptions define how assets (images and other files) are named and stored, and how preview images are generated.
 
@@ -31,22 +31,22 @@ interface AssetOptions {
 
 ### assetNamingStrategy
 
-<MemberInfo kind="property" type={`<a href='/reference/typescript-api/assets/asset-naming-strategy#assetnamingstrategy'>AssetNamingStrategy</a>`} default="<a href='/reference/typescript-api/assets/default-asset-naming-strategy#defaultassetnamingstrategy'>DefaultAssetNamingStrategy</a>"   />
+<MemberInfo kind="property" type={`<a href='/reference/typescript-api/assets/asset-naming-strategy#assetnamingstrategy'>AssetNamingStrategy</a>`} default={`<a href='/reference/typescript-api/assets/default-asset-naming-strategy#defaultassetnamingstrategy'>DefaultAssetNamingStrategy</a>`}   />
 
 Defines how asset files and preview images are named before being saved.
 ### assetStorageStrategy
 
-<MemberInfo kind="property" type={`<a href='/reference/typescript-api/assets/asset-storage-strategy#assetstoragestrategy'>AssetStorageStrategy</a>`} default="NoAssetStorageStrategy"   />
+<MemberInfo kind="property" type={`<a href='/reference/typescript-api/assets/asset-storage-strategy#assetstoragestrategy'>AssetStorageStrategy</a>`} default={`NoAssetStorageStrategy`}   />
 
 Defines the strategy used for storing uploaded binary files.
 ### assetPreviewStrategy
 
-<MemberInfo kind="property" type={`<a href='/reference/typescript-api/assets/asset-preview-strategy#assetpreviewstrategy'>AssetPreviewStrategy</a>`} default="NoAssetPreviewStrategy"   />
+<MemberInfo kind="property" type={`<a href='/reference/typescript-api/assets/asset-preview-strategy#assetpreviewstrategy'>AssetPreviewStrategy</a>`} default={`NoAssetPreviewStrategy`}   />
 
 Defines the strategy used for creating preview images of uploaded assets.
 ### permittedFileTypes
 
-<MemberInfo kind="property" type={`string[]`} default="image, audio, video MIME types plus PDFs"   />
+<MemberInfo kind="property" type={`string[]`} default={`image, audio, video MIME types plus PDFs`}   />
 
 An array of the permitted file types that may be uploaded as Assets. Each entry
 should be in the form of a valid
@@ -54,7 +54,7 @@ should be in the form of a valid
 i.e. either a file extension (".pdf") or a mime type ("image/*", "audio/mpeg" etc.).
 ### uploadMaxFileSize
 
-<MemberInfo kind="property" type={`number`} default="20971520"   />
+<MemberInfo kind="property" type={`number`} default={`20971520`}   />
 
 The max file size in bytes for uploaded assets.
 

+ 14 - 14
docs/docs/reference/typescript-api/auth/auth-options.md

@@ -11,7 +11,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
 
 ## AuthOptions
 
-<GenerationInfo sourceFile="packages/core/src/config/vendure-config.ts" sourceLine="329" packageName="@vendure/core" />
+<GenerationInfo sourceFile="packages/core/src/config/vendure-config.ts" sourceLine="330" packageName="@vendure/core" />
 
 The AuthOptions define how authentication and authorization is managed.
 
@@ -39,14 +39,14 @@ interface AuthOptions {
 
 ### disableAuth
 
-<MemberInfo kind="property" type={`boolean`} default="false"   />
+<MemberInfo kind="property" type={`boolean`} default={`false`}   />
 
 Disable authentication & permissions checks.
 NEVER set the to true in production. It exists
 only to aid certain development tasks.
 ### tokenMethod
 
-<MemberInfo kind="property" type={`'cookie' | 'bearer' | ReadonlyArray&#60;'cookie' | 'bearer'&#62;`} default="'cookie'"   />
+<MemberInfo kind="property" type={`'cookie' | 'bearer' | ReadonlyArray&#60;'cookie' | 'bearer'&#62;`} default={`'cookie'`}   />
 
 Sets the method by which the session token is delivered and read.
 
@@ -68,12 +68,12 @@ From v1.2.0 it is possible to specify both methods as a tuple: `['cookie', 'bear
 Options related to the handling of cookies when using the 'cookie' tokenMethod.
 ### authTokenHeaderKey
 
-<MemberInfo kind="property" type={`string`} default="'vendure-auth-token'"   />
+<MemberInfo kind="property" type={`string`} default={`'vendure-auth-token'`}   />
 
 Sets the header property which will be used to send the auth token when using the 'bearer' method.
 ### sessionDuration
 
-<MemberInfo kind="property" type={`string | number`} default="'1y'"   />
+<MemberInfo kind="property" type={`string | number`} default={`'1y'`}   />
 
 Session duration, i.e. the time which must elapse from the last authenticated request
 after which the user must re-authenticate.
@@ -82,21 +82,21 @@ Expressed as a string describing a time span per
 [zeit/ms](https://github.com/zeit/ms.js).  Eg: `60`, `'2 days'`, `'10h'`, `'7d'`
 ### sessionCacheStrategy
 
-<MemberInfo kind="property" type={`<a href='/reference/typescript-api/auth/session-cache-strategy#sessioncachestrategy'>SessionCacheStrategy</a>`} default="<a href='/reference/typescript-api/auth/in-memory-session-cache-strategy#inmemorysessioncachestrategy'>InMemorySessionCacheStrategy</a>"   />
+<MemberInfo kind="property" type={`<a href='/reference/typescript-api/auth/session-cache-strategy#sessioncachestrategy'>SessionCacheStrategy</a>`} default={`<a href='/reference/typescript-api/auth/in-memory-session-cache-strategy#inmemorysessioncachestrategy'>InMemorySessionCacheStrategy</a>`}   />
 
 This strategy defines how sessions will be cached. By default, sessions are cached using a simple
 in-memory caching strategy which is suitable for development and low-traffic, single-instance
 deployments.
 ### sessionCacheTTL
 
-<MemberInfo kind="property" type={`number`} default="300"   />
+<MemberInfo kind="property" type={`number`} default={`300`}   />
 
 The "time to live" of a given item in the session cache. This determines the length of time (in seconds)
 that a cache entry is kept before being considered "stale" and being replaced with fresh data
 taken from the database.
 ### requireVerification
 
-<MemberInfo kind="property" type={`boolean`} default="true"   />
+<MemberInfo kind="property" type={`boolean`} default={`true`}   />
 
 Determines whether new User accounts require verification of their email address.
 
@@ -105,7 +105,7 @@ If set to "true", when registering via the `registerCustomerAccount` mutation, o
 (once the email with the verification token has been opened) via the `verifyCustomerAccount` mutation.
 ### verificationTokenDuration
 
-<MemberInfo kind="property" type={`string | number`} default="'7d'"   />
+<MemberInfo kind="property" type={`string | number`} default={`'7d'`}   />
 
 Sets the length of time that a verification token is valid for, after which the verification token must be refreshed.
 
@@ -118,30 +118,30 @@ Expressed as a string describing a time span per
 Configures the credentials to be used to create a superadmin
 ### shopAuthenticationStrategy
 
-<MemberInfo kind="property" type={`<a href='/reference/typescript-api/auth/authentication-strategy#authenticationstrategy'>AuthenticationStrategy</a>[]`} default="<a href='/reference/typescript-api/auth/native-authentication-strategy#nativeauthenticationstrategy'>NativeAuthenticationStrategy</a>"   />
+<MemberInfo kind="property" type={`<a href='/reference/typescript-api/auth/authentication-strategy#authenticationstrategy'>AuthenticationStrategy</a>[]`} default={`<a href='/reference/typescript-api/auth/native-authentication-strategy#nativeauthenticationstrategy'>NativeAuthenticationStrategy</a>`}   />
 
 Configures one or more AuthenticationStrategies which defines how authentication
 is handled in the Shop API.
 ### adminAuthenticationStrategy
 
-<MemberInfo kind="property" type={`<a href='/reference/typescript-api/auth/authentication-strategy#authenticationstrategy'>AuthenticationStrategy</a>[]`} default="<a href='/reference/typescript-api/auth/native-authentication-strategy#nativeauthenticationstrategy'>NativeAuthenticationStrategy</a>"   />
+<MemberInfo kind="property" type={`<a href='/reference/typescript-api/auth/authentication-strategy#authenticationstrategy'>AuthenticationStrategy</a>[]`} default={`<a href='/reference/typescript-api/auth/native-authentication-strategy#nativeauthenticationstrategy'>NativeAuthenticationStrategy</a>`}   />
 
 Configures one or more AuthenticationStrategy which defines how authentication
 is handled in the Admin API.
 ### customPermissions
 
-<MemberInfo kind="property" type={`<a href='/reference/typescript-api/auth/permission-definition#permissiondefinition'>PermissionDefinition</a>[]`} default="[]"   />
+<MemberInfo kind="property" type={`<a href='/reference/typescript-api/auth/permission-definition#permissiondefinition'>PermissionDefinition</a>[]`} default={`[]`}   />
 
 Allows custom Permissions to be defined, which can be used to restrict access to custom
 GraphQL resolvers defined in plugins.
 ### passwordHashingStrategy
 
-<MemberInfo kind="property" type={`<a href='/reference/typescript-api/auth/password-hashing-strategy#passwordhashingstrategy'>PasswordHashingStrategy</a>`} default="<a href='/reference/typescript-api/auth/bcrypt-password-hashing-strategy#bcryptpasswordhashingstrategy'>BcryptPasswordHashingStrategy</a>"  since="1.3.0"  />
+<MemberInfo kind="property" type={`<a href='/reference/typescript-api/auth/password-hashing-strategy#passwordhashingstrategy'>PasswordHashingStrategy</a>`} default={`<a href='/reference/typescript-api/auth/bcrypt-password-hashing-strategy#bcryptpasswordhashingstrategy'>BcryptPasswordHashingStrategy</a>`}  since="1.3.0"  />
 
 Allows you to customize the way passwords are hashed when using the <a href='/reference/typescript-api/auth/native-authentication-strategy#nativeauthenticationstrategy'>NativeAuthenticationStrategy</a>.
 ### passwordValidationStrategy
 
-<MemberInfo kind="property" type={`<a href='/reference/typescript-api/auth/password-validation-strategy#passwordvalidationstrategy'>PasswordValidationStrategy</a>`} default="<a href='/reference/typescript-api/auth/default-password-validation-strategy#defaultpasswordvalidationstrategy'>DefaultPasswordValidationStrategy</a>"  since="1.5.0"  />
+<MemberInfo kind="property" type={`<a href='/reference/typescript-api/auth/password-validation-strategy#passwordvalidationstrategy'>PasswordValidationStrategy</a>`} default={`<a href='/reference/typescript-api/auth/default-password-validation-strategy#defaultpasswordvalidationstrategy'>DefaultPasswordValidationStrategy</a>`}  since="1.5.0"  />
 
 Allows you to set a custom policy for passwords when using the <a href='/reference/typescript-api/auth/native-authentication-strategy#nativeauthenticationstrategy'>NativeAuthenticationStrategy</a>.
 By default, it uses the <a href='/reference/typescript-api/auth/default-password-validation-strategy#defaultpasswordvalidationstrategy'>DefaultPasswordValidationStrategy</a>, which will impose a minimum length

+ 6 - 6
docs/docs/reference/typescript-api/auth/cookie-options.md

@@ -11,7 +11,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
 
 ## CookieOptions
 
-<GenerationInfo sourceFile="packages/core/src/config/vendure-config.ts" sourceLine="224" packageName="@vendure/core" />
+<GenerationInfo sourceFile="packages/core/src/config/vendure-config.ts" sourceLine="225" packageName="@vendure/core" />
 
 Options for the handling of the cookies used to track sessions (only applicable if
 `authOptions.tokenMethod` is set to `'cookie'`). These options are passed directly
@@ -38,14 +38,14 @@ interface CookieOptions {
 
 ### name
 
-<MemberInfo kind="property" type={`string | { shop: string; admin: string }`} default="'session'"   />
+<MemberInfo kind="property" type={`string | { shop: string; admin: string }`} default={`'session'`}   />
 
 The name of the cookies to set.
 If set to a string, both cookies for the Admin API and Shop API will have the same name.
 If set as an object, it makes it possible to give different names to the Admin API and the Shop API cookies
 ### secret
 
-<MemberInfo kind="property" type={`string`} default="(random character string)"   />
+<MemberInfo kind="property" type={`string`} default={`(random character string)`}   />
 
 The secret used for signing the session cookies for authenticated users. Only applies
 tokenMethod is set to 'cookie'.
@@ -55,7 +55,7 @@ source control for security reasons, but may be loaded from an external
 file not under source control, or from an environment variable, for example.
 ### path
 
-<MemberInfo kind="property" type={`string`} default="'/'"   />
+<MemberInfo kind="property" type={`string`} default={`'/'`}   />
 
 a string indicating the path of the cookie.
 ### domain
@@ -65,7 +65,7 @@ a string indicating the path of the cookie.
 a string indicating the domain of the cookie (no default).
 ### sameSite
 
-<MemberInfo kind="property" type={`'strict' | 'lax' | 'none' | boolean`} default="false"   />
+<MemberInfo kind="property" type={`'strict' | 'lax' | 'none' | boolean`} default={`false`}   />
 
 a boolean or string indicating whether the cookie is a "same site" cookie (false by default). This can be set to 'strict',
 'lax', 'none', or true (which maps to 'strict').
@@ -81,7 +81,7 @@ a boolean indicating whether the cookie is only to be sent over HTTPS (false by
 a boolean indicating whether the cookie is only to be sent over HTTPS (use this if you handle SSL not in your node process).
 ### httpOnly
 
-<MemberInfo kind="property" type={`boolean`} default="true"   />
+<MemberInfo kind="property" type={`boolean`} default={`true`}   />
 
 a boolean indicating whether the cookie is only to be sent over HTTP(S), and not made available to client JavaScript (true by default).
 ### signed

+ 29 - 29
docs/docs/reference/typescript-api/auth/external-authentication-service.md

@@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
 
 <GenerationInfo sourceFile="packages/core/src/service/helpers/external-authentication/external-authentication.service.ts" sourceLine="24" packageName="@vendure/core" />
 
-This is a helper service which exposes methods related to looking up and creating Users based on an
+This is a helper service which exposes methods related to looking up and creating Users based on an
 external <a href='/reference/typescript-api/auth/authentication-strategy#authenticationstrategy'>AuthenticationStrategy</a>.
 
 ```ts title="Signature"
@@ -21,22 +21,22 @@ class ExternalAuthenticationService {
     constructor(connection: TransactionalConnection, roleService: RoleService, historyService: HistoryService, customerService: CustomerService, administratorService: AdministratorService, channelService: ChannelService)
     findCustomerUser(ctx: RequestContext, strategy: string, externalIdentifier: string, checkCurrentChannelOnly:  = true) => Promise<User | undefined>;
     findAdministratorUser(ctx: RequestContext, strategy: string, externalIdentifier: string) => Promise<User | undefined>;
-    createCustomerAndUser(ctx: RequestContext, config: {
-            strategy: string;
-            externalIdentifier: string;
-            verified: boolean;
-            emailAddress: string;
-            firstName?: string;
-            lastName?: string;
+    createCustomerAndUser(ctx: RequestContext, config: {
+            strategy: string;
+            externalIdentifier: string;
+            verified: boolean;
+            emailAddress: string;
+            firstName?: string;
+            lastName?: string;
         }) => Promise<User>;
-    createAdministratorAndUser(ctx: RequestContext, config: {
-            strategy: string;
-            externalIdentifier: string;
-            identifier: string;
-            emailAddress?: string;
-            firstName?: string;
-            lastName?: string;
-            roles: Role[];
+    createAdministratorAndUser(ctx: RequestContext, config: {
+            strategy: string;
+            externalIdentifier: string;
+            identifier: string;
+            emailAddress?: string;
+            firstName?: string;
+            lastName?: string;
+            roles: Role[];
         }) => ;
     findUser(ctx: RequestContext, strategy: string, externalIdentifier: string) => Promise<User | undefined>;
 }
@@ -53,32 +53,32 @@ class ExternalAuthenticationService {
 
 <MemberInfo kind="method" type={`(ctx: <a href='/reference/typescript-api/request/request-context#requestcontext'>RequestContext</a>, strategy: string, externalIdentifier: string, checkCurrentChannelOnly:  = true) => Promise&#60;<a href='/reference/typescript-api/entities/user#user'>User</a> | undefined&#62;`}   />
 
-Looks up a User based on their identifier from an external authentication
-provider, ensuring this User is associated with a Customer account.
-
-By default, only customers in the currently-active Channel will be checked.
-By passing `false` as the `checkCurrentChannelOnly` argument, _all_ channels
+Looks up a User based on their identifier from an external authentication
+provider, ensuring this User is associated with a Customer account.
+
+By default, only customers in the currently-active Channel will be checked.
+By passing `false` as the `checkCurrentChannelOnly` argument, _all_ channels
 will be checked.
 ### findAdministratorUser
 
 <MemberInfo kind="method" type={`(ctx: <a href='/reference/typescript-api/request/request-context#requestcontext'>RequestContext</a>, strategy: string, externalIdentifier: string) => Promise&#60;<a href='/reference/typescript-api/entities/user#user'>User</a> | undefined&#62;`}   />
 
-Looks up a User based on their identifier from an external authentication
+Looks up a User based on their identifier from an external authentication
 provider, ensuring this User is associated with an Administrator account.
 ### createCustomerAndUser
 
-<MemberInfo kind="method" type={`(ctx: <a href='/reference/typescript-api/request/request-context#requestcontext'>RequestContext</a>, config: {             strategy: string;             externalIdentifier: string;             verified: boolean;             emailAddress: string;             firstName?: string;             lastName?: string;         }) => Promise&#60;<a href='/reference/typescript-api/entities/user#user'>User</a>&#62;`}   />
+<MemberInfo kind="method" type={`(ctx: <a href='/reference/typescript-api/request/request-context#requestcontext'>RequestContext</a>, config: {
             strategy: string;
             externalIdentifier: string;
             verified: boolean;
             emailAddress: string;
             firstName?: string;
             lastName?: string;
         }) => Promise&#60;<a href='/reference/typescript-api/entities/user#user'>User</a>&#62;`}   />
 
-If a customer has been successfully authenticated by an external authentication provider, yet cannot
-be found using `findCustomerUser`, then we need to create a new User and
-Customer record in Vendure for that user. This method encapsulates that logic as well as additional
+If a customer has been successfully authenticated by an external authentication provider, yet cannot
+be found using `findCustomerUser`, then we need to create a new User and
+Customer record in Vendure for that user. This method encapsulates that logic as well as additional
 housekeeping such as adding a record to the Customer's history.
 ### createAdministratorAndUser
 
-<MemberInfo kind="method" type={`(ctx: <a href='/reference/typescript-api/request/request-context#requestcontext'>RequestContext</a>, config: {             strategy: string;             externalIdentifier: string;             identifier: string;             emailAddress?: string;             firstName?: string;             lastName?: string;             roles: <a href='/reference/typescript-api/entities/role#role'>Role</a>[];         }) => `}   />
+<MemberInfo kind="method" type={`(ctx: <a href='/reference/typescript-api/request/request-context#requestcontext'>RequestContext</a>, config: {
             strategy: string;
             externalIdentifier: string;
             identifier: string;
             emailAddress?: string;
             firstName?: string;
             lastName?: string;
             roles: <a href='/reference/typescript-api/entities/role#role'>Role</a>[];
         }) => `}   />
 
-If an administrator has been successfully authenticated by an external authentication provider, yet cannot
-be found using `findAdministratorUser`, then we need to create a new User and
+If an administrator has been successfully authenticated by an external authentication provider, yet cannot
+be found using `findAdministratorUser`, then we need to create a new User and
 Administrator record in Vendure for that user.
 ### findUser
 

+ 2 - 2
docs/docs/reference/typescript-api/auth/permission-definition.md

@@ -184,13 +184,13 @@ UpperCamelCased.
 A description of the permission.
 ### assignable
 
-<MemberInfo kind="property" type={`boolean`} default="true"   />
+<MemberInfo kind="property" type={`boolean`} default={`true`}   />
 
 Whether this permission can be assigned to a Role. In general this
 should be left as the default `true` except in special cases.
 ### internal
 
-<MemberInfo kind="property" type={`boolean`} default="false"   />
+<MemberInfo kind="property" type={`boolean`} default={`false`}   />
 
 Internal permissions are not exposed via the API and are reserved for
 special use-cases such at the `Owner` or `Public` permissions.

+ 3 - 3
docs/docs/reference/typescript-api/auth/superadmin-credentials.md

@@ -11,7 +11,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
 
 ## SuperadminCredentials
 
-<GenerationInfo sourceFile="packages/core/src/config/vendure-config.ts" sourceLine="803" packageName="@vendure/core" />
+<GenerationInfo sourceFile="packages/core/src/config/vendure-config.ts" sourceLine="804" packageName="@vendure/core" />
 
 These credentials will be used to create the Superadmin user & administrator
 when Vendure first bootstraps.
@@ -27,12 +27,12 @@ interface SuperadminCredentials {
 
 ### identifier
 
-<MemberInfo kind="property" type={`string`} default="'superadmin'"   />
+<MemberInfo kind="property" type={`string`} default={`'superadmin'`}   />
 
 The identifier to be used to create a superadmin account
 ### password
 
-<MemberInfo kind="property" type={`string`} default="'superadmin'"   />
+<MemberInfo kind="property" type={`string`} default={`'superadmin'`}   />
 
 The password to be used to create a superadmin account
 

+ 1 - 1
docs/docs/reference/typescript-api/common/admin-ui/admin-ui-app-config.md

@@ -34,7 +34,7 @@ default build is used. This path should contain the `vendure-ui-config.json` fil
 index.html, the compiled js bundles etc.
 ### route
 
-<MemberInfo kind="property" type={`string`} default="'admin'"   />
+<MemberInfo kind="property" type={`string`} default={`'admin'`}   />
 
 Specifies the url route to the Admin UI app.
 ### compile

+ 1 - 1
docs/docs/reference/typescript-api/common/admin-ui/admin-ui-app-dev-mode-config.md

@@ -38,7 +38,7 @@ The path to the uncompiled UI app source files. This path should contain the `ve
 The port on which the dev server is listening. Overrides the value set by `AdminUiOptions.port`.
 ### route
 
-<MemberInfo kind="property" type={`string`} default="'admin'"   />
+<MemberInfo kind="property" type={`string`} default={`'admin'`}   />
 
 Specifies the url route to the Admin UI app.
 ### compile

+ 10 - 10
docs/docs/reference/typescript-api/common/admin-ui/admin-ui-config.md

@@ -42,45 +42,45 @@ interface AdminUiConfig {
 
 ### apiHost
 
-<MemberInfo kind="property" type={`string | 'auto'`} default="'http://localhost'"   />
+<MemberInfo kind="property" type={`string | 'auto'`} default={`'http://localhost'`}   />
 
 The hostname of the Vendure server which the admin UI will be making API calls
 to. If set to "auto", the Admin UI app will determine the hostname from the
 current location (i.e. `window.location.hostname`).
 ### apiPort
 
-<MemberInfo kind="property" type={`number | 'auto'`} default="3000"   />
+<MemberInfo kind="property" type={`number | 'auto'`} default={`3000`}   />
 
 The port of the Vendure server which the admin UI will be making API calls
 to. If set to "auto", the Admin UI app will determine the port from the
 current location (i.e. `window.location.port`).
 ### adminApiPath
 
-<MemberInfo kind="property" type={`string`} default="'admin-api'"   />
+<MemberInfo kind="property" type={`string`} default={`'admin-api'`}   />
 
 The path to the GraphQL Admin API.
 ### tokenMethod
 
-<MemberInfo kind="property" type={`'cookie' | 'bearer'`} default="'cookie'"   />
+<MemberInfo kind="property" type={`'cookie' | 'bearer'`} default={`'cookie'`}   />
 
 Whether to use cookies or bearer tokens to track sessions.
 Should match the setting of in the server's `tokenMethod` config
 option.
 ### authTokenHeaderKey
 
-<MemberInfo kind="property" type={`string`} default="'vendure-auth-token'"   />
+<MemberInfo kind="property" type={`string`} default={`'vendure-auth-token'`}   />
 
 The header used when using the 'bearer' auth method. Should match the
 setting of the server's `authOptions.authTokenHeaderKey` config option.
 ### channelTokenKey
 
-<MemberInfo kind="property" type={`string`} default="'vendure-token'"   />
+<MemberInfo kind="property" type={`string`} default={`'vendure-token'`}   />
 
 The name of the header which contains the channel token. Should match the
 setting of the server's `apiOptions.channelTokenKey` config option.
 ### defaultLanguage
 
-<MemberInfo kind="property" type={`<a href='/reference/typescript-api/common/language-code#languagecode'>LanguageCode</a>`} default="<a href='/reference/typescript-api/common/language-code#languagecode'>LanguageCode</a>.en"   />
+<MemberInfo kind="property" type={`<a href='/reference/typescript-api/common/language-code#languagecode'>LanguageCode</a>`} default={`<a href='/reference/typescript-api/common/language-code#languagecode'>LanguageCode</a>.en`}   />
 
 The default language for the Admin UI. Must be one of the
 items specified in the `availableLanguages` property.
@@ -118,12 +118,12 @@ screen.
 The custom brand name.
 ### hideVendureBranding
 
-<MemberInfo kind="property" type={`boolean`} default="false"   />
+<MemberInfo kind="property" type={`boolean`} default={`false`}   />
 
 Option to hide vendure branding.
 ### hideVersion
 
-<MemberInfo kind="property" type={`boolean`} default="false"   />
+<MemberInfo kind="property" type={`boolean`} default={`false`}   />
 
 Option to hide version.
 ### loginImageUrl
@@ -133,7 +133,7 @@ Option to hide version.
 A url of a custom image to be used on the login screen, to override the images provided by Vendure's login image server.
 ### cancellationReasons
 
-<MemberInfo kind="property" type={`string[]`} default="['order.cancel-reason-customer-request', 'order.cancel-reason-not-available']"  since="1.5.0"  />
+<MemberInfo kind="property" type={`string[]`} default={`['order.cancel-reason-customer-request', 'order.cancel-reason-not-available']`}  since="1.5.0"  />
 
 Allows you to provide default reasons for a refund or cancellation. This will be used in the
 refund/cancel dialog. The values can be literal strings (e.g. "Not in stock") or translation

+ 1 - 1
docs/docs/reference/typescript-api/common/middleware.md

@@ -65,7 +65,7 @@ The `'ab*cd'` route path will match `abcd`, `ab_cd`, `abecd`, and so on. The cha
 and are subsets of their regular expression counterparts. The hyphen (`-`) and the dot (`.`) are interpreted literally.
 ### beforeListen
 
-<MemberInfo kind="property" type={`boolean`} default="false"  since="1.1.0"  />
+<MemberInfo kind="property" type={`boolean`} default={`false`}  since="1.1.0"  />
 
 When set to `true`, this will cause the middleware to be applied before the Vendure server (and underlying Express server) starts listening
 for connections. In practical terms this means that the middleware will be at the very start of the middleware stack, before even the

+ 1 - 1
docs/docs/reference/typescript-api/common/permission.md

@@ -11,7 +11,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
 
 ## Permission
 
-<GenerationInfo sourceFile="packages/common/src/generated-types.ts" sourceLine="4330" packageName="@vendure/common" />
+<GenerationInfo sourceFile="packages/common/src/generated-types.ts" sourceLine="4335" packageName="@vendure/common" />
 
 Permissions for administrators and customers. Used to control access to
 GraphQL resolvers via the <a href='/reference/typescript-api/request/allow-decorator#allow'>Allow</a> decorator.

+ 9 - 9
docs/docs/reference/typescript-api/configurable-operation-def/default-form-config-hash.md

@@ -29,15 +29,15 @@ type DefaultFormConfigHash = {
     'product-selector-form-input': Record<string, never>;
     'relation-form-input': Record<string, never>;
     'rich-text-form-input': Record<string, never>;
-    'select-form-input': {
-        options?: Array<{ value: string; label?: Array<Omit<LocalizedString, '__typename'>> }>;
+    'select-form-input': {
+        options?: Array<{ value: string; label?: Array<Omit<LocalizedString, '__typename'>> }>;
     };
     'text-form-input': { prefix?: string; suffix?: string };
-    'textarea-form-input': {
-        spellcheck?: boolean;
+    'textarea-form-input': {
+        spellcheck?: boolean;
     };
-    'product-multi-form-input': {
-        selectionMode?: 'product' | 'variant';
+    'product-multi-form-input': {
+        selectionMode?: 'product' | 'variant';
     };
     'combination-mode-form-input': Record<string, never>;
 }
@@ -107,7 +107,7 @@ type DefaultFormConfigHash = {
 
 ### 'select-form-input'
 
-<MemberInfo kind="property" type={`{         options?: Array&#60;{ value: string; label?: Array&#60;Omit&#60;LocalizedString, '__typename'&#62;&#62; }&#62;;     }`}   />
+<MemberInfo kind="property" type={`{
         options?: Array&#60;{ value: string; label?: Array&#60;Omit&#60;LocalizedString, '__typename'&#62;&#62; }&#62;;
     }`}   />
 
 
 ### 'text-form-input'
@@ -117,12 +117,12 @@ type DefaultFormConfigHash = {
 
 ### 'textarea-form-input'
 
-<MemberInfo kind="property" type={`{         spellcheck?: boolean;     }`}   />
+<MemberInfo kind="property" type={`{
         spellcheck?: boolean;
     }`}   />
 
 
 ### 'product-multi-form-input'
 
-<MemberInfo kind="property" type={`{         selectionMode?: 'product' | 'variant';     }`}   />
+<MemberInfo kind="property" type={`{
         selectionMode?: 'product' | 'variant';
     }`}   />
 
 
 ### 'combination-mode-form-input'

+ 18 - 18
docs/docs/reference/typescript-api/configuration/api-options.md

@@ -11,7 +11,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
 
 ## ApiOptions
 
-<GenerationInfo sourceFile="packages/core/src/config/vendure-config.ts" sourceLine="67" packageName="@vendure/core" />
+<GenerationInfo sourceFile="packages/core/src/config/vendure-config.ts" sourceLine="68" packageName="@vendure/core" />
 
 The ApiOptions define how the Vendure GraphQL APIs are exposed, as well as allowing the API layer
 to be extended with middleware.
@@ -42,92 +42,92 @@ interface ApiOptions {
 
 ### hostname
 
-<MemberInfo kind="property" type={`string`} default="''"   />
+<MemberInfo kind="property" type={`string`} default={`''`}   />
 
 Set the hostname of the server. If not set, the server will be available on localhost.
 ### port
 
-<MemberInfo kind="property" type={`number`} default="3000"   />
+<MemberInfo kind="property" type={`number`} default={`3000`}   />
 
 Which port the Vendure server should listen on.
 ### adminApiPath
 
-<MemberInfo kind="property" type={`string`} default="'admin-api'"   />
+<MemberInfo kind="property" type={`string`} default={`'admin-api'`}   />
 
 The path to the admin GraphQL API.
 ### shopApiPath
 
-<MemberInfo kind="property" type={`string`} default="'shop-api'"   />
+<MemberInfo kind="property" type={`string`} default={`'shop-api'`}   />
 
 The path to the shop GraphQL API.
 ### adminApiPlayground
 
-<MemberInfo kind="property" type={`boolean | RenderPageOptions`} default="false"   />
+<MemberInfo kind="property" type={`boolean | RenderPageOptions`} default={`false`}   />
 
 The playground config to the admin GraphQL API
 [ApolloServer playground](https://www.apollographql.com/docs/apollo-server/api/apollo-server/#constructoroptions-apolloserver).
 ### shopApiPlayground
 
-<MemberInfo kind="property" type={`boolean | RenderPageOptions`} default="false"   />
+<MemberInfo kind="property" type={`boolean | RenderPageOptions`} default={`false`}   />
 
 The playground config to the shop GraphQL API
 [ApolloServer playground](https://www.apollographql.com/docs/apollo-server/api/apollo-server/#constructoroptions-apolloserver).
 ### adminApiDebug
 
-<MemberInfo kind="property" type={`boolean`} default="false"   />
+<MemberInfo kind="property" type={`boolean`} default={`false`}   />
 
 The debug config to the admin GraphQL API
 [ApolloServer playground](https://www.apollographql.com/docs/apollo-server/api/apollo-server/#constructoroptions-apolloserver).
 ### shopApiDebug
 
-<MemberInfo kind="property" type={`boolean`} default="false"   />
+<MemberInfo kind="property" type={`boolean`} default={`false`}   />
 
 The debug config to the shop GraphQL API
 [ApolloServer playground](https://www.apollographql.com/docs/apollo-server/api/apollo-server/#constructoroptions-apolloserver).
 ### shopListQueryLimit
 
-<MemberInfo kind="property" type={`number`} default="100"   />
+<MemberInfo kind="property" type={`number`} default={`100`}   />
 
 The maximum number of items that may be returned by a query which returns a `PaginatedList` response. In other words,
 this is the upper limit of the `take` input option.
 ### adminListQueryLimit
 
-<MemberInfo kind="property" type={`number`} default="1000"   />
+<MemberInfo kind="property" type={`number`} default={`1000`}   />
 
 The maximum number of items that may be returned by a query which returns a `PaginatedList` response. In other words,
 this is the upper limit of the `take` input option.
 ### adminApiValidationRules
 
-<MemberInfo kind="property" type={`Array&#60;(context: ValidationContext) =&#62; any&#62;`} default="[]"   />
+<MemberInfo kind="property" type={`Array&#60;(context: ValidationContext) =&#62; any&#62;`} default={`[]`}   />
 
 Custom functions to use as additional validation rules when validating the schema for the admin GraphQL API
 [ApolloServer validation rules](https://www.apollographql.com/docs/apollo-server/api/apollo-server/#validationrules).
 ### shopApiValidationRules
 
-<MemberInfo kind="property" type={`Array&#60;(context: ValidationContext) =&#62; any&#62;`} default="[]"   />
+<MemberInfo kind="property" type={`Array&#60;(context: ValidationContext) =&#62; any&#62;`} default={`[]`}   />
 
 Custom functions to use as additional validation rules when validating the schema for the shop GraphQL API
 [ApolloServer validation rules](https://www.apollographql.com/docs/apollo-server/api/apollo-server/#validationrules).
 ### channelTokenKey
 
-<MemberInfo kind="property" type={`string`} default="'vendure-token'"   />
+<MemberInfo kind="property" type={`string`} default={`'vendure-token'`}   />
 
 The name of the property which contains the token of the
 active channel. This property can be included either in
 the request header or as a query string.
 ### cors
 
-<MemberInfo kind="property" type={`boolean | CorsOptions`} default="{ origin: true, credentials: true }"   />
+<MemberInfo kind="property" type={`boolean | CorsOptions`} default={`{ origin: true, credentials: true }`}   />
 
 Set the CORS handling for the server. See the [express CORS docs](https://github.com/expressjs/cors#configuration-options).
 ### middleware
 
-<MemberInfo kind="property" type={`<a href='/reference/typescript-api/common/middleware#middleware'>Middleware</a>[]`} default="[]"   />
+<MemberInfo kind="property" type={`<a href='/reference/typescript-api/common/middleware#middleware'>Middleware</a>[]`} default={`[]`}   />
 
 Custom Express or NestJS middleware for the server. More information can be found in the <a href='/reference/typescript-api/common/middleware#middleware'>Middleware</a> docs.
 ### apolloServerPlugins
 
-<MemberInfo kind="property" type={`ApolloServerPlugin[]`} default="[]"   />
+<MemberInfo kind="property" type={`ApolloServerPlugin[]`} default={`[]`}   />
 
 Custom [ApolloServerPlugins](https://www.apollographql.com/docs/apollo-server/integrations/plugins/) which
 allow the extension of the Apollo Server, which is the underlying GraphQL server used by Vendure.
@@ -136,7 +136,7 @@ Apollo plugins can be used e.g. to perform custom data transformations on incomi
 data.
 ### introspection
 
-<MemberInfo kind="property" type={`boolean`} default="true"  since="1.5.0"  />
+<MemberInfo kind="property" type={`boolean`} default={`true`}  since="1.5.0"  />
 
 Controls whether introspection of the GraphQL APIs is enabled. For production, it is recommended to disable
 introspection, since exposing your entire schema can allow an attacker to trivially learn all operations

+ 1 - 1
docs/docs/reference/typescript-api/configuration/default-config.md

@@ -11,7 +11,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
 
 ## defaultConfig
 
-<GenerationInfo sourceFile="packages/core/src/config/default-config.ts" sourceLine="60" packageName="@vendure/core" />
+<GenerationInfo sourceFile="packages/core/src/config/default-config.ts" sourceLine="61" packageName="@vendure/core" />
 
 The default configuration settings which are used if not explicitly overridden in the bootstrap() call.
 

+ 13 - 13
docs/docs/reference/typescript-api/configuration/entity-duplicator.md

@@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
 
 <GenerationInfo sourceFile="packages/core/src/config/entity/entity-duplicator.ts" sourceLine="158" packageName="@vendure/core" since="2.2.0" />
 
-An EntityDuplicator is used to define the logic for duplicating entities when the `duplicateEntity` mutation is called.
+An EntityDuplicator is used to define the logic for duplicating entities when the `duplicateEntity` mutation is called.
 This allows you to add support for duplication of both core and custom entities.
 
 *Example*
@@ -102,11 +102,11 @@ export const config: VendureConfig = {
 ```ts title="Signature"
 class EntityDuplicator<T extends ConfigArgs = ConfigArgs> extends ConfigurableOperationDef<T> {
     constructor(config: EntityDuplicatorConfig<T>)
-    duplicate(input: {
-        ctx: RequestContext;
-        entityName: string;
-        id: ID;
-        args: ConfigArg[];
+    duplicate(input: {
+        ctx: RequestContext;
+        entityName: string;
+        id: ID;
+        args: ConfigArg[];
     }) => Promise<VendureEntity>;
 }
 ```
@@ -123,7 +123,7 @@ class EntityDuplicator<T extends ConfigArgs = ConfigArgs> extends ConfigurableOp
 
 ### duplicate
 
-<MemberInfo kind="method" type={`(input: {         ctx: <a href='/reference/typescript-api/request/request-context#requestcontext'>RequestContext</a>;         entityName: string;         id: <a href='/reference/typescript-api/common/id#id'>ID</a>;         args: ConfigArg[];     }) => Promise&#60;<a href='/reference/typescript-api/entities/vendure-entity#vendureentity'>VendureEntity</a>&#62;`}   />
+<MemberInfo kind="method" type={`(input: {
         ctx: <a href='/reference/typescript-api/request/request-context#requestcontext'>RequestContext</a>;
         entityName: string;
         id: <a href='/reference/typescript-api/common/id#id'>ID</a>;
         args: ConfigArg[];
     }) => Promise&#60;<a href='/reference/typescript-api/entities/vendure-entity#vendureentity'>VendureEntity</a>&#62;`}   />
 
 
 
@@ -138,11 +138,11 @@ class EntityDuplicator<T extends ConfigArgs = ConfigArgs> extends ConfigurableOp
 A function which performs the duplication of an entity.
 
 ```ts title="Signature"
-type DuplicateEntityFn<T extends ConfigArgs> = (input: {
-    ctx: RequestContext;
-    entityName: string;
-    id: ID;
-    args: ConfigArgValues<T>;
+type DuplicateEntityFn<T extends ConfigArgs> = (input: {
+    ctx: RequestContext;
+    entityName: string;
+    id: ID;
+    args: ConfigArgValues<T>;
 }) => Promise<VendureEntity>
 ```
 
@@ -170,7 +170,7 @@ interface EntityDuplicatorConfig<T extends ConfigArgs> extends ConfigurableOpera
 
 <MemberInfo kind="property" type={`Array&#60;<a href='/reference/typescript-api/common/permission#permission'>Permission</a> | string&#62; | <a href='/reference/typescript-api/common/permission#permission'>Permission</a> | string`}   />
 
-The permissions required in order to execute this duplicator. If an array is passed,
+The permissions required in order to execute this duplicator. If an array is passed,
 then the administrator must have at least one of the permissions in the array.
 ### forEntities
 

+ 8 - 8
docs/docs/reference/typescript-api/configuration/entity-options.md

@@ -11,7 +11,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
 
 ## EntityOptions
 
-<GenerationInfo sourceFile="packages/core/src/config/vendure-config.ts" sourceLine="945" packageName="@vendure/core" since="1.3.0" />
+<GenerationInfo sourceFile="packages/core/src/config/vendure-config.ts" sourceLine="954" packageName="@vendure/core" since="1.3.0" />
 
 Options relating to the internal handling of entities.
 
@@ -31,7 +31,7 @@ interface EntityOptions {
 
 ### entityIdStrategy
 
-<MemberInfo kind="property" type={`<a href='/reference/typescript-api/configuration/entity-id-strategy#entityidstrategy'>EntityIdStrategy</a>&#60;any&#62;`} default="<a href='/reference/typescript-api/configuration/entity-id-strategy#autoincrementidstrategy'>AutoIncrementIdStrategy</a>"  since="1.3.0"  />
+<MemberInfo kind="property" type={`<a href='/reference/typescript-api/configuration/entity-id-strategy#entityidstrategy'>EntityIdStrategy</a>&#60;any&#62;`} default={`<a href='/reference/typescript-api/configuration/entity-id-strategy#autoincrementidstrategy'>AutoIncrementIdStrategy</a>`}  since="1.3.0"  />
 
 Defines the strategy used for both storing the primary keys of entities
 in the database, and the encoding & decoding of those ids when exposing
@@ -46,18 +46,18 @@ a fresh database.
 :::
 ### entityDuplicators
 
-<MemberInfo kind="property" type={`Array&#60;<a href='/reference/typescript-api/configuration/entity-duplicator#entityduplicator'>EntityDuplicator</a>&#60;any&#62;&#62;`} default="defaultEntityDuplicators"  since="2.2.0"  />
+<MemberInfo kind="property" type={`Array&#60;<a href='/reference/typescript-api/configuration/entity-duplicator#entityduplicator'>EntityDuplicator</a>&#60;any&#62;&#62;`} default={`defaultEntityDuplicators`}  since="2.2.0"  />
 
 An array of <a href='/reference/typescript-api/configuration/entity-duplicator#entityduplicator'>EntityDuplicator</a> instances which are used to duplicate entities
 when using the `duplicateEntity` mutation.
 ### moneyStrategy
 
-<MemberInfo kind="property" type={`<a href='/reference/typescript-api/money/money-strategy#moneystrategy'>MoneyStrategy</a>`} default="<a href='/reference/typescript-api/money/default-money-strategy#defaultmoneystrategy'>DefaultMoneyStrategy</a>"  since="2.0.0"  />
+<MemberInfo kind="property" type={`<a href='/reference/typescript-api/money/money-strategy#moneystrategy'>MoneyStrategy</a>`} default={`<a href='/reference/typescript-api/money/default-money-strategy#defaultmoneystrategy'>DefaultMoneyStrategy</a>`}  since="2.0.0"  />
 
 Defines the strategy used to store and round monetary values.
 ### channelCacheTtl
 
-<MemberInfo kind="property" type={`number`} default="30000"  since="1.3.0"  />
+<MemberInfo kind="property" type={`number`} default={`30000`}  since="1.3.0"  />
 
 Channels get cached in-memory as they are accessed very frequently. This
 setting determines how long the cache lives (in ms) until it is considered stale and
@@ -65,7 +65,7 @@ refreshed. For multi-instance deployments (e.g. serverless, load-balanced), a
 smaller value here will prevent data inconsistencies between instances.
 ### zoneCacheTtl
 
-<MemberInfo kind="property" type={`number`} default="30000"  since="1.3.0"  />
+<MemberInfo kind="property" type={`number`} default={`30000`}  since="1.3.0"  />
 
 Zones get cached in-memory as they are accessed very frequently. This
 setting determines how long the cache lives (in ms) until it is considered stale and
@@ -73,7 +73,7 @@ refreshed. For multi-instance deployments (e.g. serverless, load-balanced), a
 smaller value here will prevent data inconsistencies between instances.
 ### taxRateCacheTtl
 
-<MemberInfo kind="property" type={`number`} default="30000"  since="1.9.0"  />
+<MemberInfo kind="property" type={`number`} default={`30000`}  since="1.9.0"  />
 
 TaxRates get cached in-memory as they are accessed very frequently. This
 setting determines how long the cache lives (in ms) until it is considered stale and
@@ -81,7 +81,7 @@ refreshed. For multi-instance deployments (e.g. serverless, load-balanced), a
 smaller value here will prevent data inconsistencies between instances.
 ### metadataModifiers
 
-<MemberInfo kind="property" type={`<a href='/reference/typescript-api/configuration/entity-options#entitymetadatamodifier'>EntityMetadataModifier</a>[]`} default="[]"  since="1.6.0"  />
+<MemberInfo kind="property" type={`<a href='/reference/typescript-api/configuration/entity-options#entitymetadatamodifier'>EntityMetadataModifier</a>[]`} default={`[]`}  since="1.6.0"  />
 
 Allows the metadata of the built-in TypeORM entities to be manipulated. This allows you
 to do things like altering data types, adding indices etc. This is an advanced feature

+ 1 - 1
docs/docs/reference/typescript-api/configuration/runtime-vendure-config.md

@@ -11,7 +11,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
 
 ## RuntimeVendureConfig
 
-<GenerationInfo sourceFile="packages/core/src/config/vendure-config.ts" sourceLine="1192" packageName="@vendure/core" />
+<GenerationInfo sourceFile="packages/core/src/config/vendure-config.ts" sourceLine="1201" packageName="@vendure/core" />
 
 This interface represents the VendureConfig object available at run-time, i.e. the user-supplied
 config values have been merged with the <a href='/reference/typescript-api/configuration/default-config#defaultconfig'>defaultConfig</a> values.

+ 3 - 3
docs/docs/reference/typescript-api/configuration/system-options.md

@@ -11,7 +11,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
 
 ## SystemOptions
 
-<GenerationInfo sourceFile="packages/core/src/config/vendure-config.ts" sourceLine="1034" packageName="@vendure/core" since="1.6.0" />
+<GenerationInfo sourceFile="packages/core/src/config/vendure-config.ts" sourceLine="1043" packageName="@vendure/core" since="1.6.0" />
 
 Options relating to system functions.
 
@@ -26,13 +26,13 @@ interface SystemOptions {
 
 ### healthChecks
 
-<MemberInfo kind="property" type={`<a href='/reference/typescript-api/health-check/health-check-strategy#healthcheckstrategy'>HealthCheckStrategy</a>[]`} default="[<a href='/reference/typescript-api/health-check/type-ormhealth-check-strategy#typeormhealthcheckstrategy'>TypeORMHealthCheckStrategy</a>]"  since="1.6.0"  />
+<MemberInfo kind="property" type={`<a href='/reference/typescript-api/health-check/health-check-strategy#healthcheckstrategy'>HealthCheckStrategy</a>[]`} default={`[<a href='/reference/typescript-api/health-check/type-ormhealth-check-strategy#typeormhealthcheckstrategy'>TypeORMHealthCheckStrategy</a>]`}  since="1.6.0"  />
 
 Defines an array of <a href='/reference/typescript-api/health-check/health-check-strategy#healthcheckstrategy'>HealthCheckStrategy</a> instances which are used by the `/health` endpoint to verify
 that any critical systems which the Vendure server depends on are also healthy.
 ### errorHandlers
 
-<MemberInfo kind="property" type={`<a href='/reference/typescript-api/errors/error-handler-strategy#errorhandlerstrategy'>ErrorHandlerStrategy</a>[]`} default="[]"  since="2.2.0"  />
+<MemberInfo kind="property" type={`<a href='/reference/typescript-api/errors/error-handler-strategy#errorhandlerstrategy'>ErrorHandlerStrategy</a>[]`} default={`[]`}  since="2.2.0"  />
 
 Defines an array of <a href='/reference/typescript-api/errors/error-handler-strategy#errorhandlerstrategy'>ErrorHandlerStrategy</a> instances which are used to define logic to be executed
 when an error occurs, either on the server or the worker.

+ 7 - 7
docs/docs/reference/typescript-api/configuration/vendure-config.md

@@ -11,7 +11,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
 
 ## VendureConfig
 
-<GenerationInfo sourceFile="packages/core/src/config/vendure-config.ts" sourceLine="1062" packageName="@vendure/core" />
+<GenerationInfo sourceFile="packages/core/src/config/vendure-config.ts" sourceLine="1071" packageName="@vendure/core" />
 
 All possible configuration options are defined by the
 [`VendureConfig`](https://github.com/vendure-ecommerce/vendure/blob/master/server/src/config/vendure-config.ts) interface.
@@ -66,7 +66,7 @@ Configuration for authorization.
 Configuration for Products and Collections.
 ### customFields
 
-<MemberInfo kind="property" type={`<a href='/reference/typescript-api/custom-fields/#customfields'>CustomFields</a>`} default="{}"   />
+<MemberInfo kind="property" type={`<a href='/reference/typescript-api/custom-fields/#customfields'>CustomFields</a>`} default={`{}`}   />
 
 Defines custom fields which can be used to extend the built-in entities.
 ### dbConnectionOptions
@@ -78,18 +78,18 @@ See the [TypeORM documentation](https://typeorm.io/#/connection-options) for a
 full description of all available options.
 ### defaultChannelToken
 
-<MemberInfo kind="property" type={`string | null`} default="null"   />
+<MemberInfo kind="property" type={`string | null`} default={`null`}   />
 
 The token for the default channel. If not specified, a token
 will be randomly generated.
 ### defaultLanguageCode
 
-<MemberInfo kind="property" type={`<a href='/reference/typescript-api/common/language-code#languagecode'>LanguageCode</a>`} default="<a href='/reference/typescript-api/common/language-code#languagecode'>LanguageCode</a>.en"   />
+<MemberInfo kind="property" type={`<a href='/reference/typescript-api/common/language-code#languagecode'>LanguageCode</a>`} default={`<a href='/reference/typescript-api/common/language-code#languagecode'>LanguageCode</a>.en`}   />
 
 The default languageCode of the app.
 ### entityIdStrategy
 
-<MemberInfo kind="property" type={`<a href='/reference/typescript-api/configuration/entity-id-strategy#entityidstrategy'>EntityIdStrategy</a>&#60;any&#62;`} default="<a href='/reference/typescript-api/configuration/entity-id-strategy#autoincrementidstrategy'>AutoIncrementIdStrategy</a>"   />
+<MemberInfo kind="property" type={`<a href='/reference/typescript-api/configuration/entity-id-strategy#entityidstrategy'>EntityIdStrategy</a>&#60;any&#62;`} default={`<a href='/reference/typescript-api/configuration/entity-id-strategy#autoincrementidstrategy'>AutoIncrementIdStrategy</a>`}   />
 
 Defines the strategy used for both storing the primary keys of entities
 in the database, and the encoding & decoding of those ids when exposing
@@ -117,7 +117,7 @@ Configuration settings governing how orders are handled.
 Configures available payment processing methods.
 ### plugins
 
-<MemberInfo kind="property" type={`Array&#60;DynamicModule | Type&#60;any&#62;&#62;`} default="[]"   />
+<MemberInfo kind="property" type={`Array&#60;DynamicModule | Type&#60;any&#62;&#62;`} default={`[]`}   />
 
 An array of plugins.
 ### promotionOptions
@@ -132,7 +132,7 @@ Configures the Conditions and Actions available when creating Promotions.
 Configures the available checkers and calculators for ShippingMethods.
 ### logger
 
-<MemberInfo kind="property" type={`<a href='/reference/typescript-api/logger/vendure-logger#vendurelogger'>VendureLogger</a>`} default="<a href='/reference/typescript-api/logger/default-logger#defaultlogger'>DefaultLogger</a>"   />
+<MemberInfo kind="property" type={`<a href='/reference/typescript-api/logger/vendure-logger#vendurelogger'>VendureLogger</a>`} default={`<a href='/reference/typescript-api/logger/default-logger#defaultlogger'>DefaultLogger</a>`}   />
 
 Provide a logging service which implements the <a href='/reference/typescript-api/logger/vendure-logger#vendurelogger'>VendureLogger</a> interface.
 Note that the logging of SQL queries is controlled separately by the

+ 1 - 1
docs/docs/reference/typescript-api/custom-fields/custom-field-type.md

@@ -28,7 +28,7 @@ boolean      | tinyint (m), bool (p), boolean (s)    | Boolean
 datetime     | datetime (m,s), timestamp (p)         | DateTime
 relation     | many-to-one / many-to-many relation   | As specified in config
 
-Additionally, the CustomFieldType also dictates which [configuration options](/reference/typescript-api/custom-fields)
+Additionally, the CustomFieldType also dictates which [configuration options](/reference/typescript-api/custom-fields/#configuration-options)
 are available for that custom field.
 
 ```ts title="Signature"

+ 2 - 1
docs/docs/reference/typescript-api/custom-fields/index.md

@@ -13,7 +13,8 @@ import MemberDescription from '@site/src/components/MemberDescription';
 
 <GenerationInfo sourceFile="packages/core/src/config/custom-field/custom-field-types.ts" sourceLine="159" packageName="@vendure/core" />
 
-Most entities can have additional fields added to them by defining an array of <a href='/reference/typescript-api/custom-fields/custom-field-config#customfieldconfig'>CustomFieldConfig</a>objects on against the corresponding key.
+Most entities can have additional fields added to them by defining an array of <a href='/reference/typescript-api/custom-fields/custom-field-config#customfieldconfig'>CustomFieldConfig</a>
+objects on against the corresponding key.
 
 *Example*
 

+ 2 - 1
docs/docs/reference/typescript-api/data-access/calculated.md

@@ -14,7 +14,8 @@ import MemberDescription from '@site/src/components/MemberDescription';
 <GenerationInfo sourceFile="packages/core/src/common/calculated-decorator.ts" sourceLine="43" packageName="@vendure/core" />
 
 Used to define calculated entity getters. The decorator simply attaches an array of "calculated"
-property names to the entity's prototype. This array is then used by the <a href='/reference/typescript-api/data-access/calculated-property-subscriber#calculatedpropertysubscriber'>CalculatedPropertySubscriber</a>to transfer the getter function from the prototype to the entity instance.
+property names to the entity's prototype. This array is then used by the <a href='/reference/typescript-api/data-access/calculated-property-subscriber#calculatedpropertysubscriber'>CalculatedPropertySubscriber</a>
+to transfer the getter function from the prototype to the entity instance.
 
 ```ts title="Signature"
 function Calculated(queryInstruction?: CalculatedColumnQueryInstruction): MethodDecorator

+ 3 - 3
docs/docs/reference/typescript-api/data-access/get-entity-or-throw-options.md

@@ -37,18 +37,18 @@ An optional channelId to limit results to entities assigned to the given Channel
 only be used when getting entities that implement the <a href='/reference/typescript-api/entities/interfaces#channelaware'>ChannelAware</a> interface.
 ### retries
 
-<MemberInfo kind="property" type={`number`} default="0"  since="1.1.0"  />
+<MemberInfo kind="property" type={`number`} default={`0`}  since="1.1.0"  />
 
 If set to a positive integer, it will retry getting the entity in case it is initially not
 found.
 ### retryDelay
 
-<MemberInfo kind="property" type={`number`} default="25"  since="1.1.0"  />
+<MemberInfo kind="property" type={`number`} default={`25`}  since="1.1.0"  />
 
 Specifies the delay in ms to wait between retries.
 ### includeSoftDeleted
 
-<MemberInfo kind="property" type={`boolean`} default="false"  since="1.3.0"  />
+<MemberInfo kind="property" type={`boolean`} default={`false`}  since="1.3.0"  />
 
 If set to `true`, soft-deleted entities will be returned. Otherwise they will
 throw as if they did not exist.

+ 1 - 1
docs/docs/reference/typescript-api/data-access/hydrate-options.md

@@ -34,7 +34,7 @@ nested joins. If the entity already has a particular relation available, that re
 will be skipped (no extra DB join will be added).
 ### applyProductVariantPrices
 
-<MemberInfo kind="property" type={`boolean`} default="false"   />
+<MemberInfo kind="property" type={`boolean`} default={`false`}   />
 
 If set to `true`, any ProductVariants will also have their `price` and `priceWithTax` fields
 applied based on the current context. If prices are not required, this can be left `false` which

+ 1 - 1
docs/docs/reference/typescript-api/data-access/list-query-builder.md

@@ -233,7 +233,7 @@ query {
 ```
 ### ignoreQueryLimits
 
-<MemberInfo kind="property" type={`boolean`} default="false"  since="2.0.2"  />
+<MemberInfo kind="property" type={`boolean`} default={`false`}  since="2.0.2"  />
 
 When set to `true`, the configured `shopListQueryLimit` and `adminListQueryLimit` values will be ignored,
 allowing unlimited results to be returned. Use caution when exposing an unlimited list query to the public,

+ 3 - 3
docs/docs/reference/typescript-api/default-search-plugin/default-search-plugin-init-options.md

@@ -27,14 +27,14 @@ interface DefaultSearchPluginInitOptions {
 
 ### indexStockStatus
 
-<MemberInfo kind="property" type={`boolean`} default="false."   />
+<MemberInfo kind="property" type={`boolean`} default={`false.`}   />
 
 If set to `true`, the stock status of a ProductVariant (inStock: Boolean) will
 be exposed in the `search` query results. Enabling this option on an existing
 Vendure installation will require a DB migration/synchronization.
 ### bufferUpdates
 
-<MemberInfo kind="property" type={`boolean`} default="false"  since="1.3.0"  />
+<MemberInfo kind="property" type={`boolean`} default={`false`}  since="1.3.0"  />
 
 If set to `true`, updates to Products, ProductVariants and Collections will not immediately
 trigger an update to the search index. Instead, all these changes will be buffered and will
@@ -46,7 +46,7 @@ and also performs optimizations to minimize the amount of work that needs to be
 the worker.
 ### searchStrategy
 
-<MemberInfo kind="property" type={`<a href='/reference/typescript-api/default-search-plugin/search-strategy#searchstrategy'>SearchStrategy</a>`} default="undefined"  since="1.6.0"  />
+<MemberInfo kind="property" type={`<a href='/reference/typescript-api/default-search-plugin/search-strategy#searchstrategy'>SearchStrategy</a>`} default={`undefined`}  since="1.6.0"  />
 
 Set a custom search strategy that implements <a href='/reference/typescript-api/default-search-plugin/search-strategy#searchstrategy'>SearchStrategy</a> or extends an existing search strategy
 such as <a href='/reference/typescript-api/default-search-plugin/mysql-search-strategy#mysqlsearchstrategy'>MysqlSearchStrategy</a>, <a href='/reference/typescript-api/default-search-plugin/postgres-search-strategy#postgressearchstrategy'>PostgresSearchStrategy</a> or <a href='/reference/typescript-api/default-search-plugin/sqlite-search-strategy#sqlitesearchstrategy'>SqliteSearchStrategy</a>.

+ 30 - 30
docs/docs/reference/typescript-api/entities/promotion.md

@@ -13,42 +13,42 @@ import MemberDescription from '@site/src/components/MemberDescription';
 
 <GenerationInfo sourceFile="packages/core/src/entity/promotion/promotion.entity.ts" sourceLine="56" packageName="@vendure/core" />
 
-A Promotion is used to define a set of conditions under which promotions actions (typically discounts)
-will be applied to an Order.
-
-Each assigned <a href='/reference/typescript-api/promotions/promotion-condition#promotioncondition'>PromotionCondition</a> is checked against the Order, and if they all return `true`,
+A Promotion is used to define a set of conditions under which promotions actions (typically discounts)
+will be applied to an Order.
+
+Each assigned <a href='/reference/typescript-api/promotions/promotion-condition#promotioncondition'>PromotionCondition</a> is checked against the Order, and if they all return `true`,
 then each assign <a href='/reference/typescript-api/promotions/promotion-action#promotionitemaction'>PromotionItemAction</a> / <a href='/reference/typescript-api/promotions/promotion-action#promotionorderaction'>PromotionOrderAction</a> is applied to the Order.
 
 ```ts title="Signature"
 class Promotion extends AdjustmentSource implements ChannelAware, SoftDeletable, HasCustomFields, Translatable {
     type = AdjustmentType.PROMOTION;
-    constructor(input?: DeepPartial<Promotion> & {
-            promotionConditions?: Array<PromotionCondition<any>>;
-            promotionActions?: Array<PromotionAction<any>>;
+    constructor(input?: DeepPartial<Promotion> & {
+            promotionConditions?: Array<PromotionCondition<any>>;
+            promotionActions?: Array<PromotionAction<any>>;
         })
-    @Column({ type: Date, nullable: true })
+    @Column({ type: Date, nullable: true })
     deletedAt: Date | null;
-    @Column({ type: Date, nullable: true })
+    @Column({ type: Date, nullable: true })
     startsAt: Date | null;
-    @Column({ type: Date, nullable: true })
+    @Column({ type: Date, nullable: true })
     endsAt: Date | null;
-    @Column({ nullable: true })
+    @Column({ nullable: true })
     couponCode: string;
-    @Column({ nullable: true })
+    @Column({ nullable: true })
     perCustomerUsageLimit: number;
-    @Column({ nullable: true })
+    @Column({ nullable: true })
     usageLimit: number;
     name: LocaleString;
     description: LocaleString;
-    @OneToMany(type => PromotionTranslation, translation => translation.base, { eager: true })
+    @OneToMany(type => PromotionTranslation, translation => translation.base, { eager: true })
     translations: Array<Translation<Promotion>>;
     @Column() enabled: boolean;
-    @ManyToMany(type => Channel, channel => channel.promotions)
-    @JoinTable()
+    @ManyToMany(type => Channel, channel => channel.promotions)
+    @JoinTable()
     channels: Channel[];
-    @ManyToMany(type => Order, order => order.promotions)
+    @ManyToMany(type => Order, order => order.promotions)
     orders: Order[];
-    @Column(type => CustomPromotionFields)
+    @Column(type => CustomPromotionFields)
     customFields: CustomPromotionFields;
     @Column('simple-json') conditions: ConfigurableOperation[];
     @Column('simple-json') actions: ConfigurableOperation[];
@@ -75,7 +75,7 @@ class Promotion extends AdjustmentSource implements ChannelAware, SoftDeletable,
 
 ### constructor
 
-<MemberInfo kind="method" type={`(input?: DeepPartial&#60;<a href='/reference/typescript-api/entities/promotion#promotion'>Promotion</a>&#62; &#38; {             promotionConditions?: Array&#60;<a href='/reference/typescript-api/promotions/promotion-condition#promotioncondition'>PromotionCondition</a>&#60;any&#62;&#62;;             promotionActions?: Array&#60;<a href='/reference/typescript-api/promotions/promotion-action#promotionaction'>PromotionAction</a>&#60;any&#62;&#62;;         }) => Promotion`}   />
+<MemberInfo kind="method" type={`(input?: DeepPartial&#60;<a href='/reference/typescript-api/entities/promotion#promotion'>Promotion</a>&#62; &#38; {
             promotionConditions?: Array&#60;<a href='/reference/typescript-api/promotions/promotion-condition#promotioncondition'>PromotionCondition</a>&#60;any&#62;&#62;;
             promotionActions?: Array&#60;<a href='/reference/typescript-api/promotions/promotion-action#promotionaction'>PromotionAction</a>&#60;any&#62;&#62;;
         }) => Promotion`}   />
 
 
 ### deletedAt
@@ -157,17 +157,17 @@ class Promotion extends AdjustmentSource implements ChannelAware, SoftDeletable,
 
 <MemberInfo kind="property" type={`number`}   />
 
-The PriorityScore is used to determine the sequence in which multiple promotions are tested
-on a given order. A higher number moves the Promotion towards the end of the sequence.
-
-The score is derived from the sum of the priorityValues of the PromotionConditions and
-PromotionActions comprising this Promotion.
-
-An example illustrating the need for a priority is this:
-
-
-Consider 2 Promotions, 1) buy 1 get one free and 2) 10% off when order total is over $50.
-If Promotion 2 is evaluated prior to Promotion 1, then it can trigger the 10% discount even
+The PriorityScore is used to determine the sequence in which multiple promotions are tested
+on a given order. A higher number moves the Promotion towards the end of the sequence.
+
+The score is derived from the sum of the priorityValues of the PromotionConditions and
+PromotionActions comprising this Promotion.
+
+An example illustrating the need for a priority is this:
+
+
+Consider 2 Promotions, 1) buy 1 get one free and 2) 10% off when order total is over $50.
+If Promotion 2 is evaluated prior to Promotion 1, then it can trigger the 10% discount even
 if the subsequent application of Promotion 1 brings the order total down to way below $50.
 ### apply
 

+ 73 - 45
docs/docs/reference/typescript-api/events/event-types.md

@@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
 
 <GenerationInfo sourceFile="packages/core/src/event-bus/events/account-registration-event.ts" sourceLine="13" packageName="@vendure/core" />
 
-This event is fired when a new user registers an account, either as a stand-alone signup or after
+This event is fired when a new user registers an account, either as a stand-alone signup or after
 placing an order.
 
 ```ts title="Signature"
@@ -41,7 +41,7 @@ class AccountRegistrationEvent extends VendureEvent {
 
 <GenerationInfo sourceFile="packages/core/src/event-bus/events/account-verified-event.ts" sourceLine="13" packageName="@vendure/core" />
 
-This event is fired when a users email address successfully gets verified after
+This event is fired when a users email address successfully gets verified after
 the `verifyCustomerAccount` mutation was executed.
 
 ```ts title="Signature"
@@ -96,7 +96,7 @@ class AdministratorEvent extends VendureEntityEvent<Administrator, Administrator
 
 <GenerationInfo sourceFile="packages/core/src/event-bus/events/asset-channel-event.ts" sourceLine="15" packageName="@vendure/core" />
 
-This event is fired whenever an <a href='/reference/typescript-api/entities/asset#asset'>Asset</a> is assigned or removed
+This event is fired whenever an <a href='/reference/typescript-api/entities/asset#asset'>Asset</a> is assigned or removed
 From a channel.
 
 ```ts title="Signature"
@@ -157,8 +157,8 @@ class AssetEvent extends VendureEntityEvent<Asset, AssetInputTypes> {
 
 <GenerationInfo sourceFile="packages/core/src/event-bus/events/attempted-login-event.ts" sourceLine="14" packageName="@vendure/core" />
 
-This event is fired when an attempt is made to log in via the shop or admin API `login` mutation.
-The `strategy` represents the name of the AuthenticationStrategy used in the login attempt.
+This event is fired when an attempt is made to log in via the shop or admin API `login` mutation.
+The `strategy` represents the name of the AuthenticationStrategy used in the login attempt.
 If the "native" strategy is used, the additional `identifier` property will be available.
 
 ```ts title="Signature"
@@ -186,7 +186,7 @@ class AttemptedLoginEvent extends VendureEvent {
 
 <GenerationInfo sourceFile="packages/core/src/event-bus/events/change-channel-event.ts" sourceLine="17" packageName="@vendure/core" since="1.4" />
 
-This event is fired whenever an <a href='/reference/typescript-api/entities/interfaces#channelaware'>ChannelAware</a> entity is assigned or removed
+This event is fired whenever an <a href='/reference/typescript-api/entities/interfaces#channelaware'>ChannelAware</a> entity is assigned or removed
 from a channel. The entity property contains the value before updating the channels.
 
 ```ts title="Signature"
@@ -268,10 +268,10 @@ class CollectionEvent extends VendureEntityEvent<Collection, CollectionInputType
 
 <GenerationInfo sourceFile="packages/core/src/event-bus/events/collection-modification-event.ts" sourceLine="18" packageName="@vendure/core" />
 
-This event is fired whenever a Collection is modified in some way. The `productVariantIds`
-argument is an array of ids of all ProductVariants which:
-
-1. were part of this collection prior to modification and are no longer
+This event is fired whenever a Collection is modified in some way. The `productVariantIds`
+argument is an array of ids of all ProductVariants which:
+
+1. were part of this collection prior to modification and are no longer
 2. are now part of this collection after modification but were not before
 
 ```ts title="Signature"
@@ -326,7 +326,7 @@ class CountryEvent extends VendureEntityEvent<Country, CountryInputTypes> {
 
 <GenerationInfo sourceFile="packages/core/src/event-bus/events/coupon-code-event.ts" sourceLine="15" packageName="@vendure/core" since="1.4" />
 
-This event is fired whenever an coupon code of an active <a href='/reference/typescript-api/entities/promotion#promotion'>Promotion</a>
+This event is fired whenever an coupon code of an active <a href='/reference/typescript-api/entities/promotion#promotion'>Promotion</a>
 is assigned or removed to an <a href='/reference/typescript-api/entities/order#order'>Order</a>.
 
 ```ts title="Signature"
@@ -354,7 +354,7 @@ class CouponCodeEvent extends VendureEvent {
 
 <GenerationInfo sourceFile="packages/core/src/event-bus/events/customer-address-event.ts" sourceLine="22" packageName="@vendure/core" since="1.4" />
 
-This event is fired whenever a <a href='/reference/typescript-api/entities/address#address'>Address</a> is added, updated
+This event is fired whenever a <a href='/reference/typescript-api/entities/address#address'>Address</a> is added, updated
 or deleted.
 
 ```ts title="Signature"
@@ -388,7 +388,7 @@ class CustomerAddressEvent extends VendureEntityEvent<Address, CustomerAddressIn
 
 <GenerationInfo sourceFile="packages/core/src/event-bus/events/customer-event.ts" sourceLine="22" packageName="@vendure/core" />
 
-This event is fired whenever a <a href='/reference/typescript-api/entities/customer#customer'>Customer</a> is added, updated
+This event is fired whenever a <a href='/reference/typescript-api/entities/customer#customer'>Customer</a> is added, updated
 or deleted.
 
 ```ts title="Signature"
@@ -422,7 +422,7 @@ class CustomerEvent extends VendureEntityEvent<Customer, CustomerInputTypes> {
 
 <GenerationInfo sourceFile="packages/core/src/event-bus/events/customer-group-change-event.ts" sourceLine="15" packageName="@vendure/core" since="1.4" />
 
-This event is fired whenever one or more <a href='/reference/typescript-api/entities/customer#customer'>Customer</a> is assigned to or removed from a
+This event is fired whenever one or more <a href='/reference/typescript-api/entities/customer#customer'>Customer</a> is assigned to or removed from a
 <a href='/reference/typescript-api/entities/customer-group#customergroup'>CustomerGroup</a>.
 
 ```ts title="Signature"
@@ -585,7 +585,7 @@ class FulfillmentStateTransitionEvent extends VendureEvent {
 
 <GenerationInfo sourceFile="packages/core/src/event-bus/events/global-settings-event.ts" sourceLine="16" packageName="@vendure/core" since="1.4" />
 
-This event is fired whenever a <a href='/reference/typescript-api/entities/global-settings#globalsettings'>GlobalSettings</a> is added. The type is always `updated`, because it's
+This event is fired whenever a <a href='/reference/typescript-api/entities/global-settings#globalsettings'>GlobalSettings</a> is added. The type is always `updated`, because it's
 only created once and never deleted.
 
 ```ts title="Signature"
@@ -646,7 +646,7 @@ class HistoryEntryEvent extends VendureEntityEvent<HistoryEntry, HistoryInput> {
 
 <GenerationInfo sourceFile="packages/core/src/event-bus/events/identifier-change-event.ts" sourceLine="13" packageName="@vendure/core" />
 
-This event is fired when a registered user successfully changes the identifier (ie email address)
+This event is fired when a registered user successfully changes the identifier (ie email address)
 associated with their account.
 
 ```ts title="Signature"
@@ -674,7 +674,7 @@ class IdentifierChangeEvent extends VendureEvent {
 
 <GenerationInfo sourceFile="packages/core/src/event-bus/events/identifier-change-request-event.ts" sourceLine="13" packageName="@vendure/core" />
 
-This event is fired when a registered user requests to update the identifier (ie email address)
+This event is fired when a registered user requests to update the identifier (ie email address)
 associated with the account.
 
 ```ts title="Signature"
@@ -783,7 +783,7 @@ class LogoutEvent extends VendureEvent {
 
 <GenerationInfo sourceFile="packages/core/src/event-bus/events/order-event.ts" sourceLine="13" packageName="@vendure/core" />
 
-This event is fired whenever an <a href='/reference/typescript-api/entities/order#order'>Order</a> is added, updated
+This event is fired whenever an <a href='/reference/typescript-api/entities/order#order'>Order</a> is added, updated
 or deleted.
 
 ```ts title="Signature"
@@ -811,7 +811,8 @@ class OrderEvent extends VendureEvent {
 
 <GenerationInfo sourceFile="packages/core/src/event-bus/events/order-line-event.ts" sourceLine="13" packageName="@vendure/core" />
 
-This event is fired whenever an <a href='/reference/typescript-api/entities/order-line#orderline'>OrderLine</a> is added, updated, deleted or cancelled.
+This event is fired whenever an <a href='/reference/typescript-api/entities/order-line#orderline'>OrderLine</a> is added, updated
+or deleted.
 
 ```ts title="Signature"
 class OrderLineEvent extends VendureEvent {
@@ -826,7 +827,7 @@ class OrderLineEvent extends VendureEvent {
 
 ### constructor
 
-<MemberInfo kind="method" type={`(ctx: <a href='/reference/typescript-api/request/request-context#requestcontext'>RequestContext</a>, order: <a href='/reference/typescript-api/entities/order#order'>Order</a>, orderLine: <a href='/reference/typescript-api/entities/order-line#orderline'>OrderLine</a>, type: 'created' | 'updated' | 'deleted') => OrderLineEvent`}   />
+<MemberInfo kind="method" type={`(ctx: <a href='/reference/typescript-api/request/request-context#requestcontext'>RequestContext</a>, order: <a href='/reference/typescript-api/entities/order#order'>Order</a>, orderLine: <a href='/reference/typescript-api/entities/order-line#orderline'>OrderLine</a>, type: 'created' | 'updated' | 'deleted' | 'cancelled') => OrderLineEvent`}   />
 
 
 
@@ -838,10 +839,10 @@ class OrderLineEvent extends VendureEvent {
 
 <GenerationInfo sourceFile="packages/core/src/event-bus/events/order-placed-event.ts" sourceLine="17" packageName="@vendure/core" />
 
-This event is fired whenever an <a href='/reference/typescript-api/entities/order#order'>Order</a> is set as "placed", which by default is
-when it transitions from 'ArrangingPayment' to either 'PaymentAuthorized' or 'PaymentSettled'.
-
-Note that the exact point that it is set as "placed" can be configured according to the
+This event is fired whenever an <a href='/reference/typescript-api/entities/order#order'>Order</a> is set as "placed", which by default is
+when it transitions from 'ArrangingPayment' to either 'PaymentAuthorized' or 'PaymentSettled'.
+
+Note that the exact point that it is set as "placed" can be configured according to the
 <a href='/reference/typescript-api/orders/order-placed-strategy#orderplacedstrategy'>OrderPlacedStrategy</a>.
 
 ```ts title="Signature"
@@ -950,7 +951,7 @@ class PasswordResetVerifiedEvent extends VendureEvent {
 
 <GenerationInfo sourceFile="packages/core/src/event-bus/events/payment-method-event.ts" sourceLine="18" packageName="@vendure/core" />
 
-This event is fired whenever a <a href='/reference/typescript-api/entities/payment-method#paymentmethod'>PaymentMethod</a> is added, updated
+This event is fired whenever a <a href='/reference/typescript-api/entities/payment-method#paymentmethod'>PaymentMethod</a> is added, updated
 or deleted.
 
 ```ts title="Signature"
@@ -978,7 +979,7 @@ class PaymentMethodEvent extends VendureEntityEvent<PaymentMethod, PaymentMethod
 
 <GenerationInfo sourceFile="packages/core/src/event-bus/events/payment-state-transition-event.ts" sourceLine="15" packageName="@vendure/core" />
 
-This event is fired whenever a <a href='/reference/typescript-api/entities/payment#payment'>Payment</a> transitions from one <a href='/reference/typescript-api/payment/payment-state#paymentstate'>PaymentState</a> to another, e.g.
+This event is fired whenever a <a href='/reference/typescript-api/entities/payment#payment'>Payment</a> transitions from one <a href='/reference/typescript-api/payment/payment-state#paymentstate'>PaymentState</a> to another, e.g.
 a Payment is authorized by the payment provider.
 
 ```ts title="Signature"
@@ -1006,7 +1007,7 @@ class PaymentStateTransitionEvent extends VendureEvent {
 
 <GenerationInfo sourceFile="packages/core/src/event-bus/events/product-channel-event.ts" sourceLine="15" packageName="@vendure/core" />
 
-This event is fired whenever a <a href='/reference/typescript-api/entities/product#product'>Product</a> is added, updated
+This event is fired whenever a <a href='/reference/typescript-api/entities/product#product'>Product</a> is added, updated
 or deleted.
 
 ```ts title="Signature"
@@ -1034,7 +1035,7 @@ class ProductChannelEvent extends VendureEvent {
 
 <GenerationInfo sourceFile="packages/core/src/event-bus/events/product-event.ts" sourceLine="18" packageName="@vendure/core" />
 
-This event is fired whenever a <a href='/reference/typescript-api/entities/product#product'>Product</a> is added, updated
+This event is fired whenever a <a href='/reference/typescript-api/entities/product#product'>Product</a> is added, updated
 or deleted.
 
 ```ts title="Signature"
@@ -1125,14 +1126,14 @@ class ProductOptionGroupChangeEvent extends VendureEvent {
 This event is fired whenever a <a href='/reference/typescript-api/entities/product-option-group#productoptiongroup'>ProductOptionGroup</a> is added or updated.
 
 ```ts title="Signature"
-class ProductOptionGroupEvent extends VendureEntityEvent<
-    ProductOptionGroup,
-    ProductOptionGroupInputTypes
+class ProductOptionGroupEvent extends VendureEntityEvent<
+    ProductOptionGroup,
+    ProductOptionGroupInputTypes
 > {
     constructor(ctx: RequestContext, entity: ProductOptionGroup, type: 'created' | 'updated' | 'deleted', input?: ProductOptionGroupInputTypes)
 }
 ```
-* Extends: <code><a href='/reference/typescript-api/events/vendure-entity-event#vendureentityevent'>VendureEntityEvent</a>&#60;     <a href='/reference/typescript-api/entities/product-option-group#productoptiongroup'>ProductOptionGroup</a>,     ProductOptionGroupInputTypes &#62;</code>
+* Extends: <code><a href='/reference/typescript-api/events/vendure-entity-event#vendureentityevent'>VendureEntityEvent</a>&#60;
     <a href='/reference/typescript-api/entities/product-option-group#productoptiongroup'>ProductOptionGroup</a>,
     ProductOptionGroupInputTypes
 &#62;</code>
 
 
 
@@ -1179,7 +1180,7 @@ class ProductVariantChannelEvent extends VendureEvent {
 
 <GenerationInfo sourceFile="packages/core/src/event-bus/events/product-variant-event.ts" sourceLine="18" packageName="@vendure/core" />
 
-This event is fired whenever a <a href='/reference/typescript-api/entities/product-variant#productvariant'>ProductVariant</a> is added, updated
+This event is fired whenever a <a href='/reference/typescript-api/entities/product-variant#productvariant'>ProductVariant</a> is added, updated
 or deleted.
 
 ```ts title="Signature"
@@ -1216,14 +1217,14 @@ class ProductVariantEvent extends VendureEntityEvent<ProductVariant[], ProductVa
 This event is fired whenever a <a href='/reference/typescript-api/entities/product-variant-price#productvariantprice'>ProductVariantPrice</a> is added, updated or deleted.
 
 ```ts title="Signature"
-class ProductVariantPriceEvent extends VendureEntityEvent<
-    ProductVariantPrice[],
-    ProductVariantInputTypes
+class ProductVariantPriceEvent extends VendureEntityEvent<
+    ProductVariantPrice[],
+    ProductVariantInputTypes
 > {
     constructor(ctx: RequestContext, entity: ProductVariantPrice[], type: 'created' | 'updated' | 'deleted', input?: ProductVariantInputTypes)
 }
 ```
-* Extends: <code><a href='/reference/typescript-api/events/vendure-entity-event#vendureentityevent'>VendureEntityEvent</a>&#60;     <a href='/reference/typescript-api/entities/product-variant-price#productvariantprice'>ProductVariantPrice</a>[],     ProductVariantInputTypes &#62;</code>
+* Extends: <code><a href='/reference/typescript-api/events/vendure-entity-event#vendureentityevent'>VendureEntityEvent</a>&#60;
     <a href='/reference/typescript-api/entities/product-variant-price#productvariantprice'>ProductVariantPrice</a>[],
     ProductVariantInputTypes
 &#62;</code>
 
 
 
@@ -1243,7 +1244,7 @@ class ProductVariantPriceEvent extends VendureEntityEvent<
 
 <GenerationInfo sourceFile="packages/core/src/event-bus/events/promotion-event.ts" sourceLine="18" packageName="@vendure/core" />
 
-This event is fired whenever a <a href='/reference/typescript-api/entities/promotion#promotion'>Promotion</a> is added, updated
+This event is fired whenever a <a href='/reference/typescript-api/entities/promotion#promotion'>Promotion</a> is added, updated
 or deleted.
 
 ```ts title="Signature"
@@ -1291,6 +1292,33 @@ class ProvinceEvent extends VendureEntityEvent<Province, ProvinceInputTypes> {
 
 
 
+</div>
+
+
+## RefundEvent
+
+<GenerationInfo sourceFile="packages/core/src/event-bus/events/refund-event.ts" sourceLine="12" packageName="@vendure/core" />
+
+This event is fired whenever a <a href='/reference/typescript-api/entities/refund#refund'>Refund</a> is created
+
+```ts title="Signature"
+class RefundEvent extends VendureEvent {
+    constructor(ctx: RequestContext, order: Order, refund: Refund, type: 'created')
+}
+```
+* Extends: <code><a href='/reference/typescript-api/events/vendure-event#vendureevent'>VendureEvent</a></code>
+
+
+
+<div className="members-wrapper">
+
+### constructor
+
+<MemberInfo kind="method" type={`(ctx: <a href='/reference/typescript-api/request/request-context#requestcontext'>RequestContext</a>, order: <a href='/reference/typescript-api/entities/order#order'>Order</a>, refund: <a href='/reference/typescript-api/entities/refund#refund'>Refund</a>, type: 'created') => RefundEvent`}   />
+
+
+
+
 </div>
 
 
@@ -1325,7 +1353,7 @@ class RefundStateTransitionEvent extends VendureEvent {
 
 <GenerationInfo sourceFile="packages/core/src/event-bus/events/role-change-event.ts" sourceLine="16" packageName="@vendure/core" since="1.4" />
 
-This event is fired whenever one <a href='/reference/typescript-api/entities/role#role'>Role</a> is assigned or removed from a user.
+This event is fired whenever one <a href='/reference/typescript-api/entities/role#role'>Role</a> is assigned or removed from a user.
 The property `roleIds` only contains the removed or assigned role ids.
 
 ```ts title="Signature"
@@ -1434,7 +1462,7 @@ class SellerEvent extends VendureEntityEvent<Seller, SellerInputTypes> {
 
 <GenerationInfo sourceFile="packages/core/src/event-bus/events/shipping-method-event.ts" sourceLine="18" packageName="@vendure/core" />
 
-This event is fired whenever a <a href='/reference/typescript-api/entities/shipping-method#shippingmethod'>ShippingMethod</a> is added, updated
+This event is fired whenever a <a href='/reference/typescript-api/entities/shipping-method#shippingmethod'>ShippingMethod</a> is added, updated
 or deleted.
 
 ```ts title="Signature"
@@ -1462,7 +1490,7 @@ class ShippingMethodEvent extends VendureEntityEvent<ShippingMethod, ShippingMet
 
 <GenerationInfo sourceFile="packages/core/src/event-bus/events/stock-movement-event.ts" sourceLine="16" packageName="@vendure/core" since="1.1.0" />
 
-This event is fired whenever a <a href='/reference/typescript-api/entities/stock-movement#stockmovement'>StockMovement</a> entity is created, which occurs when the saleable
+This event is fired whenever a <a href='/reference/typescript-api/entities/stock-movement#stockmovement'>StockMovement</a> entity is created, which occurs when the saleable
 stock level of a ProductVariant is altered due to things like sales, manual adjustments, and cancellations.
 
 ```ts title="Signature"
@@ -1496,7 +1524,7 @@ class StockMovementEvent extends VendureEvent {
 
 <GenerationInfo sourceFile="packages/core/src/event-bus/events/tax-category-event.ts" sourceLine="18" packageName="@vendure/core" />
 
-This event is fired whenever a <a href='/reference/typescript-api/entities/tax-category#taxcategory'>TaxCategory</a> is added, updated
+This event is fired whenever a <a href='/reference/typescript-api/entities/tax-category#taxcategory'>TaxCategory</a> is added, updated
 or deleted.
 
 ```ts title="Signature"
@@ -1524,7 +1552,7 @@ class TaxCategoryEvent extends VendureEntityEvent<TaxCategory, TaxCategoryInputT
 
 <GenerationInfo sourceFile="packages/core/src/event-bus/events/tax-rate-event.ts" sourceLine="18" packageName="@vendure/core" />
 
-This event is fired whenever a <a href='/reference/typescript-api/entities/tax-rate#taxrate'>TaxRate</a> is added, updated
+This event is fired whenever a <a href='/reference/typescript-api/entities/tax-rate#taxrate'>TaxRate</a> is added, updated
 or deleted.
 
 ```ts title="Signature"
@@ -1579,7 +1607,7 @@ class TaxRateModificationEvent extends VendureEvent {
 
 <GenerationInfo sourceFile="packages/core/src/event-bus/events/zone-event.ts" sourceLine="18" packageName="@vendure/core" />
 
-This event is fired whenever a <a href='/reference/typescript-api/entities/zone#zone'>Zone</a> is added, updated
+This event is fired whenever a <a href='/reference/typescript-api/entities/zone#zone'>Zone</a> is added, updated
 or deleted.
 
 ```ts title="Signature"
@@ -1607,7 +1635,7 @@ class ZoneEvent extends VendureEntityEvent<Zone, ZoneInputTypes> {
 
 <GenerationInfo sourceFile="packages/core/src/event-bus/events/zone-members-event.ts" sourceLine="15" packageName="@vendure/core" />
 
-This event is fired whenever a <a href='/reference/typescript-api/entities/zone#zone'>Zone</a> gets <a href='/reference/typescript-api/entities/country#country'>Country</a> members assigned or removed
+This event is fired whenever a <a href='/reference/typescript-api/entities/zone#zone'>Zone</a> gets <a href='/reference/typescript-api/entities/country#country'>Country</a> members assigned or removed
 The `entity` property contains the zone with the already updated member field.
 
 ```ts title="Signature"

+ 14 - 14
docs/docs/reference/typescript-api/fulfillment/fulfillment-process.md

@@ -13,13 +13,13 @@ import MemberDescription from '@site/src/components/MemberDescription';
 
 <GenerationInfo sourceFile="packages/core/src/config/fulfillment/default-fulfillment-process.ts" sourceLine="45" packageName="@vendure/core" since="2.0.0" />
 
-The default <a href='/reference/typescript-api/fulfillment/fulfillment-process#fulfillmentprocess'>FulfillmentProcess</a>. This process includes the following actions:
-
-- Executes the configured `FulfillmentHandler.onFulfillmentTransition()` before any state
-  transition.
-- On cancellation of a Fulfillment, creates the necessary <a href='/reference/typescript-api/entities/stock-movement#cancellation'>Cancellation</a> & <a href='/reference/typescript-api/entities/stock-movement#allocation'>Allocation</a>
-  stock movement records.
-- When a Fulfillment transitions from the `Created` to `Pending` state, the necessary
+The default <a href='/reference/typescript-api/fulfillment/fulfillment-process#fulfillmentprocess'>FulfillmentProcess</a>. This process includes the following actions:
+
+- Executes the configured `FulfillmentHandler.onFulfillmentTransition()` before any state
+  transition.
+- On cancellation of a Fulfillment, creates the necessary <a href='/reference/typescript-api/entities/stock-movement#cancellation'>Cancellation</a> & <a href='/reference/typescript-api/entities/stock-movement#allocation'>Allocation</a>
+  stock movement records.
+- When a Fulfillment transitions from the `Created` to `Pending` state, the necessary
   <a href='/reference/typescript-api/entities/stock-movement#sale'>Sale</a> stock movements are created.
 
 
@@ -28,16 +28,16 @@ The default <a href='/reference/typescript-api/fulfillment/fulfillment-process#f
 
 <GenerationInfo sourceFile="packages/core/src/config/fulfillment/fulfillment-process.ts" sourceLine="26" packageName="@vendure/core" since="2.0.0" />
 
-A FulfillmentProcess is used to define the way the fulfillment process works as in: what states a Fulfillment can be
-in, and how it may transition from one state to another. Using the `onTransitionStart()` hook, a
-FulfillmentProcess can perform checks before allowing a state transition to occur, and the `onTransitionEnd()`
-hook allows logic to be executed after a state change.
-
+A FulfillmentProcess is used to define the way the fulfillment process works as in: what states a Fulfillment can be
+in, and how it may transition from one state to another. Using the `onTransitionStart()` hook, a
+FulfillmentProcess can perform checks before allowing a state transition to occur, and the `onTransitionEnd()`
+hook allows logic to be executed after a state change.
+
 For detailed description of the interface members, see the <a href='/reference/typescript-api/state-machine/state-machine-config#statemachineconfig'>StateMachineConfig</a> docs.
 
 ```ts title="Signature"
 interface FulfillmentProcess<State extends keyof CustomFulfillmentStates | string> extends InjectableStrategy {
-    transitions?: Transitions<State, State | FulfillmentState> &
+    transitions?: Transitions<State, State | FulfillmentState> &
         Partial<Transitions<FulfillmentState | State>>;
     onTransitionStart?: OnTransitionStartFn<State | FulfillmentState, FulfillmentTransitionData>;
     onTransitionEnd?: OnTransitionEndFn<State | FulfillmentState, FulfillmentTransitionData>;
@@ -52,7 +52,7 @@ interface FulfillmentProcess<State extends keyof CustomFulfillmentStates | strin
 
 ### transitions
 
-<MemberInfo kind="property" type={`<a href='/reference/typescript-api/state-machine/transitions#transitions'>Transitions</a>&#60;State, State | <a href='/reference/typescript-api/fulfillment/fulfillment-state#fulfillmentstate'>FulfillmentState</a>&#62; &#38;         Partial&#60;<a href='/reference/typescript-api/state-machine/transitions#transitions'>Transitions</a>&#60;<a href='/reference/typescript-api/fulfillment/fulfillment-state#fulfillmentstate'>FulfillmentState</a> | State&#62;&#62;`}   />
+<MemberInfo kind="property" type={`<a href='/reference/typescript-api/state-machine/transitions#transitions'>Transitions</a>&#60;State, State | <a href='/reference/typescript-api/fulfillment/fulfillment-state#fulfillmentstate'>FulfillmentState</a>&#62; &#38;
         Partial&#60;<a href='/reference/typescript-api/state-machine/transitions#transitions'>Transitions</a>&#60;<a href='/reference/typescript-api/fulfillment/fulfillment-state#fulfillmentstate'>FulfillmentState</a> | State&#62;&#62;`}   />
 
 
 ### onTransitionStart

+ 5 - 5
docs/docs/reference/typescript-api/import-export/default-asset-import-strategy.md

@@ -13,14 +13,14 @@ import MemberDescription from '@site/src/components/MemberDescription';
 
 <GenerationInfo sourceFile="packages/core/src/config/asset-import-strategy/default-asset-import-strategy.ts" sourceLine="50" packageName="@vendure/core" since="1.7.0" />
 
-The DefaultAssetImportStrategy is able to import paths from the local filesystem (taking into account the
+The DefaultAssetImportStrategy is able to import paths from the local filesystem (taking into account the
 `importExportOptions.importAssetsDir` setting) as well as remote http/https urls.
 
 ```ts title="Signature"
 class DefaultAssetImportStrategy implements AssetImportStrategy {
-    constructor(options?: {
-            retryDelayMs: number;
-            retryCount: number;
+    constructor(options?: {
+            retryDelayMs: number;
+            retryCount: number;
         })
     init(injector: Injector) => ;
     getStreamFromPath(assetPath: string) => ;
@@ -34,7 +34,7 @@ class DefaultAssetImportStrategy implements AssetImportStrategy {
 
 ### constructor
 
-<MemberInfo kind="method" type={`(options?: {             retryDelayMs: number;             retryCount: number;         }) => DefaultAssetImportStrategy`}   />
+<MemberInfo kind="method" type={`(options?: {
             retryDelayMs: number;
             retryCount: number;
         }) => DefaultAssetImportStrategy`}   />
 
 
 ### init

+ 2 - 2
docs/docs/reference/typescript-api/import-export/import-export-options.md

@@ -11,7 +11,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
 
 ## ImportExportOptions
 
-<GenerationInfo sourceFile="packages/core/src/config/vendure-config.ts" sourceLine="880" packageName="@vendure/core" />
+<GenerationInfo sourceFile="packages/core/src/config/vendure-config.ts" sourceLine="889" packageName="@vendure/core" />
 
 Options related to importing & exporting data.
 
@@ -26,7 +26,7 @@ interface ImportExportOptions {
 
 ### importAssetsDir
 
-<MemberInfo kind="property" type={`string`} default="__dirname"   />
+<MemberInfo kind="property" type={`string`} default={`__dirname`}   />
 
 The directory in which assets to be imported are located.
 ### assetImportStrategy

+ 33 - 33
docs/docs/reference/typescript-api/import-export/import-parser.md

@@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
 
 <GenerationInfo sourceFile="packages/core/src/data-import/providers/import-parser/import-parser.ts" sourceLine="152" packageName="@vendure/core" />
 
-Validates and parses CSV files into a data structure which can then be used to created new entities.
+Validates and parses CSV files into a data structure which can then be used to created new entities.
 This is used internally by the <a href='/reference/typescript-api/import-export/importer#importer'>Importer</a>.
 
 ```ts title="Signature"
@@ -28,7 +28,7 @@ class ImportParser {
 
 <MemberInfo kind="method" type={`(input: string | Stream, mainLanguage: <a href='/reference/typescript-api/common/language-code#languagecode'>LanguageCode</a> = this.configService.defaultLanguageCode) => Promise&#60;<a href='/reference/typescript-api/import-export/import-parser#parseresult'>ParseResult</a>&#60;<a href='/reference/typescript-api/import-export/import-parser#parsedproductwithvariants'>ParsedProductWithVariants</a>&#62;&#62;`}   />
 
-Parses the contents of the [product import CSV file](/guides/developer-guide/importing-data/#product-import-format) and
+Parses the contents of the [product import CSV file](/guides/developer-guide/importing-data/#product-import-format) and
 returns a data structure which can then be used to populate Vendure using the <a href='/reference/typescript-api/import-export/fast-importer-service#fastimporterservice'>FastImporterService</a>.
 
 
@@ -39,15 +39,15 @@ returns a data structure which can then be used to populate Vendure using the <a
 
 <GenerationInfo sourceFile="packages/core/src/data-import/providers/import-parser/import-parser.ts" sourceLine="45" packageName="@vendure/core" />
 
-The intermediate representation of an OptionGroup after it has been parsed
+The intermediate representation of an OptionGroup after it has been parsed
 by the <a href='/reference/typescript-api/import-export/import-parser#importparser'>ImportParser</a>.
 
 ```ts title="Signature"
 interface ParsedOptionGroup {
-    translations: Array<{
-        languageCode: LanguageCode;
-        name: string;
-        values: string[];
+    translations: Array<{
+        languageCode: LanguageCode;
+        name: string;
+        values: string[];
     }>;
 }
 ```
@@ -56,7 +56,7 @@ interface ParsedOptionGroup {
 
 ### translations
 
-<MemberInfo kind="property" type={`Array&#60;{         languageCode: <a href='/reference/typescript-api/common/language-code#languagecode'>LanguageCode</a>;         name: string;         values: string[];     }&#62;`}   />
+<MemberInfo kind="property" type={`Array&#60;{
         languageCode: <a href='/reference/typescript-api/common/language-code#languagecode'>LanguageCode</a>;
         name: string;
         values: string[];
     }&#62;`}   />
 
 
 
@@ -68,15 +68,15 @@ interface ParsedOptionGroup {
 
 <GenerationInfo sourceFile="packages/core/src/data-import/providers/import-parser/import-parser.ts" sourceLine="61" packageName="@vendure/core" />
 
-The intermediate representation of a Facet after it has been parsed
+The intermediate representation of a Facet after it has been parsed
 by the <a href='/reference/typescript-api/import-export/import-parser#importparser'>ImportParser</a>.
 
 ```ts title="Signature"
 interface ParsedFacet {
-    translations: Array<{
-        languageCode: LanguageCode;
-        facet: string;
-        value: string;
+    translations: Array<{
+        languageCode: LanguageCode;
+        facet: string;
+        value: string;
     }>;
 }
 ```
@@ -85,7 +85,7 @@ interface ParsedFacet {
 
 ### translations
 
-<MemberInfo kind="property" type={`Array&#60;{         languageCode: <a href='/reference/typescript-api/common/language-code#languagecode'>LanguageCode</a>;         facet: string;         value: string;     }&#62;`}   />
+<MemberInfo kind="property" type={`Array&#60;{
         languageCode: <a href='/reference/typescript-api/common/language-code#languagecode'>LanguageCode</a>;
         facet: string;
         value: string;
     }&#62;`}   />
 
 
 
@@ -97,7 +97,7 @@ interface ParsedFacet {
 
 <GenerationInfo sourceFile="packages/core/src/data-import/providers/import-parser/import-parser.ts" sourceLine="77" packageName="@vendure/core" />
 
-The intermediate representation of a ProductVariant after it has been parsed
+The intermediate representation of a ProductVariant after it has been parsed
 by the <a href='/reference/typescript-api/import-export/import-parser#importparser'>ImportParser</a>.
 
 ```ts title="Signature"
@@ -109,12 +109,12 @@ interface ParsedProductVariant {
     trackInventory: GlobalFlag;
     assetPaths: string[];
     facets: ParsedFacet[];
-    translations: Array<{
-        languageCode: LanguageCode;
-        optionValues: string[];
-        customFields: {
-            [name: string]: string;
-        };
+    translations: Array<{
+        languageCode: LanguageCode;
+        optionValues: string[];
+        customFields: {
+            [name: string]: string;
+        };
     }>;
 }
 ```
@@ -158,7 +158,7 @@ interface ParsedProductVariant {
 
 ### translations
 
-<MemberInfo kind="property" type={`Array&#60;{         languageCode: <a href='/reference/typescript-api/common/language-code#languagecode'>LanguageCode</a>;         optionValues: string[];         customFields: {             [name: string]: string;         };     }&#62;`}   />
+<MemberInfo kind="property" type={`Array&#60;{
         languageCode: <a href='/reference/typescript-api/common/language-code#languagecode'>LanguageCode</a>;
         optionValues: string[];
         customFields: {
             [name: string]: string;
         };
     }&#62;`}   />
 
 
 
@@ -170,7 +170,7 @@ interface ParsedProductVariant {
 
 <GenerationInfo sourceFile="packages/core/src/data-import/providers/import-parser/import-parser.ts" sourceLine="102" packageName="@vendure/core" />
 
-The intermediate representation of a Product after it has been parsed
+The intermediate representation of a Product after it has been parsed
 by the <a href='/reference/typescript-api/import-export/import-parser#importparser'>ImportParser</a>.
 
 ```ts title="Signature"
@@ -178,14 +178,14 @@ interface ParsedProduct {
     assetPaths: string[];
     optionGroups: ParsedOptionGroup[];
     facets: ParsedFacet[];
-    translations: Array<{
-        languageCode: LanguageCode;
-        name: string;
-        slug: string;
-        description: string;
-        customFields: {
-            [name: string]: string;
-        };
+    translations: Array<{
+        languageCode: LanguageCode;
+        name: string;
+        slug: string;
+        description: string;
+        customFields: {
+            [name: string]: string;
+        };
     }>;
 }
 ```
@@ -209,7 +209,7 @@ interface ParsedProduct {
 
 ### translations
 
-<MemberInfo kind="property" type={`Array&#60;{         languageCode: <a href='/reference/typescript-api/common/language-code#languagecode'>LanguageCode</a>;         name: string;         slug: string;         description: string;         customFields: {             [name: string]: string;         };     }&#62;`}   />
+<MemberInfo kind="property" type={`Array&#60;{
         languageCode: <a href='/reference/typescript-api/common/language-code#languagecode'>LanguageCode</a>;
         name: string;
         slug: string;
         description: string;
         customFields: {
             [name: string]: string;
         };
     }&#62;`}   />
 
 
 
@@ -221,7 +221,7 @@ interface ParsedProduct {
 
 <GenerationInfo sourceFile="packages/core/src/data-import/providers/import-parser/import-parser.ts" sourceLine="125" packageName="@vendure/core" />
 
-The data structure into which an import CSV file is parsed by the
+The data structure into which an import CSV file is parsed by the
 <a href='/reference/typescript-api/import-export/import-parser#importparser'>ImportParser</a> `parseProducts()` method.
 
 ```ts title="Signature"

+ 2 - 1
docs/docs/reference/typescript-api/import-export/populator.md

@@ -30,7 +30,8 @@ class Populator {
 <MemberInfo kind="method" type={`(data: <a href='/reference/typescript-api/import-export/initial-data#initialdata'>InitialData</a>, channel?: <a href='/reference/typescript-api/entities/channel#channel'>Channel</a>) => `}   />
 
 Should be run *before* populating the products, so that there are TaxRates by which
-product prices can be set. If the `channel` argument is set, then any <a href='/reference/typescript-api/entities/interfaces#channelaware'>ChannelAware</a>entities will be assigned to that Channel.
+product prices can be set. If the `channel` argument is set, then any <a href='/reference/typescript-api/entities/interfaces#channelaware'>ChannelAware</a>
+entities will be assigned to that Channel.
 ### populateCollections
 
 <MemberInfo kind="method" type={`(data: <a href='/reference/typescript-api/import-export/initial-data#initialdata'>InitialData</a>, channel?: <a href='/reference/typescript-api/entities/channel#channel'>Channel</a>) => `}   />

+ 4 - 4
docs/docs/reference/typescript-api/job-queue/default-job-queue-plugin.md

@@ -141,19 +141,19 @@ interface DefaultJobQueueOptions {
 
 ### pollInterval
 
-<MemberInfo kind="property" type={`number | ((queueName: string) =&#62; number)`} default="200"   />
+<MemberInfo kind="property" type={`number | ((queueName: string) =&#62; number)`} default={`200`}   />
 
 The interval in ms between polling the database for new jobs. If many job queues
 are active, the polling may cause undue load on the database, in which case this value
 should be increased to e.g. 1000.
 ### concurrency
 
-<MemberInfo kind="property" type={`number`} default="1"   />
+<MemberInfo kind="property" type={`number`} default={`1`}   />
 
 How many jobs from a given queue to process concurrently.
 ### backoffStrategy
 
-<MemberInfo kind="property" type={`<a href='/reference/typescript-api/job-queue/types#backoffstrategy'>BackoffStrategy</a>`} default="() =&#62; 1000"   />
+<MemberInfo kind="property" type={`<a href='/reference/typescript-api/job-queue/types#backoffstrategy'>BackoffStrategy</a>`} default={`() =&#62; 1000`}   />
 
 The strategy used to decide how long to wait before retrying a failed job.
 ### setRetries
@@ -189,7 +189,7 @@ When enabled, a new `JobRecordBuffer` database entity will be defined which will
 require a migration when first enabling this option.
 ### gracefulShutdownTimeout
 
-<MemberInfo kind="property" type={`number`} default="20_000"  since="2.2.0"  />
+<MemberInfo kind="property" type={`number`} default={`20_000`}  since="2.2.0"  />
 
 The timeout in ms which the queue will use when attempting a graceful shutdown.
 That means when the server is shut down but a job is running, the job queue will

+ 2 - 2
docs/docs/reference/typescript-api/job-queue/job-queue-options.md

@@ -11,7 +11,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
 
 ## JobQueueOptions
 
-<GenerationInfo sourceFile="packages/core/src/config/vendure-config.ts" sourceLine="904" packageName="@vendure/core" />
+<GenerationInfo sourceFile="packages/core/src/config/vendure-config.ts" sourceLine="913" packageName="@vendure/core" />
 
 Options related to the built-in job queue.
 
@@ -28,7 +28,7 @@ interface JobQueueOptions {
 
 ### jobQueueStrategy
 
-<MemberInfo kind="property" type={`<a href='/reference/typescript-api/job-queue/job-queue-strategy#jobqueuestrategy'>JobQueueStrategy</a>`} default="<a href='/reference/typescript-api/job-queue/in-memory-job-queue-strategy#inmemoryjobqueuestrategy'>InMemoryJobQueueStrategy</a>"   />
+<MemberInfo kind="property" type={`<a href='/reference/typescript-api/job-queue/job-queue-strategy#jobqueuestrategy'>JobQueueStrategy</a>`} default={`<a href='/reference/typescript-api/job-queue/in-memory-job-queue-strategy#inmemoryjobqueuestrategy'>InMemoryJobQueueStrategy</a>`}   />
 
 Defines how the jobs in the queue are persisted and accessed.
 ### jobBufferStorageStrategy

+ 2 - 1
docs/docs/reference/typescript-api/job-queue/types.md

@@ -106,7 +106,8 @@ should resolve when the job is complete, or be rejected in case of an error.
 
 <GenerationInfo sourceFile="packages/core/src/job-queue/types.ts" sourceLine="37" packageName="@vendure/core" />
 
-A JSON-serializable data type which provides a <a href='/reference/typescript-api/job-queue/job#job'>Job</a>with the data it needs to be processed.
+A JSON-serializable data type which provides a <a href='/reference/typescript-api/job-queue/job#job'>Job</a>
+with the data it needs to be processed.
 
 ```ts title="Signature"
 type JobData<T> = JsonCompatible<T>

+ 1 - 1
docs/docs/reference/typescript-api/money/money-strategy.md

@@ -88,7 +88,7 @@ interface MoneyStrategy extends InjectableStrategy {
 Defines the TypeORM column used to store monetary values.
 ### precision
 
-<MemberInfo kind="property" type={`number`} default="2"  since="2.2.0"  />
+<MemberInfo kind="property" type={`number`} default={`2`}  since="2.2.0"  />
 
 Defines the precision (i.e. number of decimal places) represented by the monetary values.
 For example, consider a product variant with a price value of `12345`.

+ 2 - 2
docs/docs/reference/typescript-api/orders/default-guest-checkout-strategy.md

@@ -82,12 +82,12 @@ interface DefaultGuestCheckoutStrategyOptions {
 
 ### allowGuestCheckouts
 
-<MemberInfo kind="property" type={`boolean`} default="true"   />
+<MemberInfo kind="property" type={`boolean`} default={`true`}   />
 
 Whether to allow guest checkouts.
 ### allowGuestCheckoutForRegisteredCustomers
 
-<MemberInfo kind="property" type={`boolean`} default="false"   />
+<MemberInfo kind="property" type={`boolean`} default={`false`}   />
 
 Whether to allow guest checkouts for customers who already have an account.
 Note that when this is enabled, the details provided in the `CreateCustomerInput`

+ 25 - 25
docs/docs/reference/typescript-api/orders/guest-checkout-strategy.md

@@ -13,33 +13,33 @@ import MemberDescription from '@site/src/components/MemberDescription';
 
 <GenerationInfo sourceFile="packages/core/src/config/order/guest-checkout-strategy.ts" sourceLine="33" packageName="@vendure/core" since="2.0.0" />
 
-A strategy that determines how to deal with guest checkouts - i.e. when a customer
-checks out without being logged in. For example, a strategy could be used to implement
-business rules such as:
-
-- No guest checkouts allowed
-- No guest checkouts allowed for customers who already have an account
-- No guest checkouts allowed for customers who have previously placed an order
-- Allow guest checkouts, but create a new Customer entity if the email address
-  is already in use
-- Allow guest checkouts, but update the existing Customer entity if the email address
-  is already in use
-
-:::info
-
-This is configured via the `orderOptions.guestCheckoutStrategy` property of
-your VendureConfig.
-
+A strategy that determines how to deal with guest checkouts - i.e. when a customer
+checks out without being logged in. For example, a strategy could be used to implement
+business rules such as:
+
+- No guest checkouts allowed
+- No guest checkouts allowed for customers who already have an account
+- No guest checkouts allowed for customers who have previously placed an order
+- Allow guest checkouts, but create a new Customer entity if the email address
+  is already in use
+- Allow guest checkouts, but update the existing Customer entity if the email address
+  is already in use
+
+:::info
+
+This is configured via the `orderOptions.guestCheckoutStrategy` property of
+your VendureConfig.
+
 :::
 
 ```ts title="Signature"
 interface GuestCheckoutStrategy extends InjectableStrategy {
-    setCustomerForOrder(
-        ctx: RequestContext,
-        order: Order,
-        input: CreateCustomerInput,
-    ):
-        | ErrorResultUnion<SetCustomerForOrderResult, Customer>
+    setCustomerForOrder(
+        ctx: RequestContext,
+        order: Order,
+        input: CreateCustomerInput,
+    ):
+        | ErrorResultUnion<SetCustomerForOrderResult, Customer>
         | Promise<ErrorResultUnion<SetCustomerForOrderResult, Customer>>;
 }
 ```
@@ -51,9 +51,9 @@ interface GuestCheckoutStrategy extends InjectableStrategy {
 
 ### setCustomerForOrder
 
-<MemberInfo kind="method" type={`(ctx: <a href='/reference/typescript-api/request/request-context#requestcontext'>RequestContext</a>, order: <a href='/reference/typescript-api/entities/order#order'>Order</a>, input: CreateCustomerInput) => | <a href='/reference/typescript-api/errors/error-result-union#errorresultunion'>ErrorResultUnion</a>&#60;SetCustomerForOrderResult, <a href='/reference/typescript-api/entities/customer#customer'>Customer</a>&#62;         | Promise&#60;<a href='/reference/typescript-api/errors/error-result-union#errorresultunion'>ErrorResultUnion</a>&#60;SetCustomerForOrderResult, <a href='/reference/typescript-api/entities/customer#customer'>Customer</a>&#62;&#62;`}   />
+<MemberInfo kind="method" type={`(ctx: <a href='/reference/typescript-api/request/request-context#requestcontext'>RequestContext</a>, order: <a href='/reference/typescript-api/entities/order#order'>Order</a>, input: CreateCustomerInput) => | <a href='/reference/typescript-api/errors/error-result-union#errorresultunion'>ErrorResultUnion</a>&#60;SetCustomerForOrderResult, <a href='/reference/typescript-api/entities/customer#customer'>Customer</a>&#62;
         | Promise&#60;<a href='/reference/typescript-api/errors/error-result-union#errorresultunion'>ErrorResultUnion</a>&#60;SetCustomerForOrderResult, <a href='/reference/typescript-api/entities/customer#customer'>Customer</a>&#62;&#62;`}   />
 
-This method is called when the `setCustomerForOrder` mutation is executed.
+This method is called when the `setCustomerForOrder` mutation is executed.
 It should return either a Customer object or an ErrorResult.
 
 

+ 2 - 1
docs/docs/reference/typescript-api/orders/order-item-price-calculation-strategy.md

@@ -87,7 +87,8 @@ Receives the ProductVariant to be added to the Order as well as any OrderLine cu
 the price for a single unit.
 
 Note: if you have any `relation` type custom fields defined on the OrderLine entity, they will only be
-passed in to this method if they are set to `eager: true`. Otherwise, you can use the <a href='/reference/typescript-api/data-access/entity-hydrator#entityhydrator'>EntityHydrator</a>to join the missing relations.
+passed in to this method if they are set to `eager: true`. Otherwise, you can use the <a href='/reference/typescript-api/data-access/entity-hydrator#entityhydrator'>EntityHydrator</a>
+to join the missing relations.
 
 Note: the `quantity` argument was added in v2.0.0
 

+ 15 - 15
docs/docs/reference/typescript-api/orders/order-options.md

@@ -11,7 +11,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
 
 ## OrderOptions
 
-<GenerationInfo sourceFile="packages/core/src/config/vendure-config.ts" sourceLine="482" packageName="@vendure/core" />
+<GenerationInfo sourceFile="packages/core/src/config/vendure-config.ts" sourceLine="483" packageName="@vendure/core" />
 
 
 
@@ -38,7 +38,7 @@ interface OrderOptions {
 
 ### orderItemsLimit
 
-<MemberInfo kind="property" type={`number`} default="999"   />
+<MemberInfo kind="property" type={`number`} default={`999`}   />
 
 The maximum number of individual items allowed in a single order. This option exists
 to prevent excessive resource usage when dealing with very large orders. For example,
@@ -50,7 +50,7 @@ performance impact for very large values.
 Attempting to exceed this limit will cause Vendure to throw a `OrderLimitError`.
 ### orderLineItemsLimit
 
-<MemberInfo kind="property" type={`number`} default="999"   />
+<MemberInfo kind="property" type={`number`} default={`999`}   />
 
 The maximum number of items allowed per order line. This option is an addition
 on the `orderItemsLimit` for more granular control. Note `orderItemsLimit` is still
@@ -59,36 +59,36 @@ important in order to prevent excessive resource usage.
 Attempting to exceed this limit will cause Vendure to throw a OrderLimitError`.
 ### orderItemPriceCalculationStrategy
 
-<MemberInfo kind="property" type={`<a href='/reference/typescript-api/orders/order-item-price-calculation-strategy#orderitempricecalculationstrategy'>OrderItemPriceCalculationStrategy</a>`} default="DefaultPriceCalculationStrategy"   />
+<MemberInfo kind="property" type={`<a href='/reference/typescript-api/orders/order-item-price-calculation-strategy#orderitempricecalculationstrategy'>OrderItemPriceCalculationStrategy</a>`} default={`DefaultPriceCalculationStrategy`}   />
 
 Defines the logic used to calculate the unit price of an OrderLine when adding an
 item to an Order.
 ### process
 
-<MemberInfo kind="property" type={`Array&#60;<a href='/reference/typescript-api/orders/order-process#orderprocess'>OrderProcess</a>&#60;any&#62;&#62;`} default="[]"   />
+<MemberInfo kind="property" type={`Array&#60;<a href='/reference/typescript-api/orders/order-process#orderprocess'>OrderProcess</a>&#60;any&#62;&#62;`} default={`[]`}   />
 
 Allows the definition of custom states and transition logic for the order process state machine.
 Takes an array of objects implementing the <a href='/reference/typescript-api/orders/order-process#orderprocess'>OrderProcess</a> interface.
 ### stockAllocationStrategy
 
-<MemberInfo kind="property" type={`<a href='/reference/typescript-api/orders/stock-allocation-strategy#stockallocationstrategy'>StockAllocationStrategy</a>`} default="<a href='/reference/typescript-api/orders/default-stock-allocation-strategy#defaultstockallocationstrategy'>DefaultStockAllocationStrategy</a>"   />
+<MemberInfo kind="property" type={`<a href='/reference/typescript-api/orders/stock-allocation-strategy#stockallocationstrategy'>StockAllocationStrategy</a>`} default={`<a href='/reference/typescript-api/orders/default-stock-allocation-strategy#defaultstockallocationstrategy'>DefaultStockAllocationStrategy</a>`}   />
 
 Determines the point of the order process at which stock gets allocated.
 ### mergeStrategy
 
-<MemberInfo kind="property" type={`<a href='/reference/typescript-api/orders/order-merge-strategy#ordermergestrategy'>OrderMergeStrategy</a>`} default="<a href='/reference/typescript-api/orders/merge-strategies#mergeordersstrategy'>MergeOrdersStrategy</a>"   />
+<MemberInfo kind="property" type={`<a href='/reference/typescript-api/orders/order-merge-strategy#ordermergestrategy'>OrderMergeStrategy</a>`} default={`<a href='/reference/typescript-api/orders/merge-strategies#mergeordersstrategy'>MergeOrdersStrategy</a>`}   />
 
 Defines the strategy used to merge a guest Order and an existing Order when
 signing in.
 ### checkoutMergeStrategy
 
-<MemberInfo kind="property" type={`<a href='/reference/typescript-api/orders/order-merge-strategy#ordermergestrategy'>OrderMergeStrategy</a>`} default="<a href='/reference/typescript-api/orders/merge-strategies#usegueststrategy'>UseGuestStrategy</a>"   />
+<MemberInfo kind="property" type={`<a href='/reference/typescript-api/orders/order-merge-strategy#ordermergestrategy'>OrderMergeStrategy</a>`} default={`<a href='/reference/typescript-api/orders/merge-strategies#usegueststrategy'>UseGuestStrategy</a>`}   />
 
 Defines the strategy used to merge a guest Order and an existing Order when
 signing in as part of the checkout flow.
 ### orderCodeStrategy
 
-<MemberInfo kind="property" type={`<a href='/reference/typescript-api/orders/order-code-strategy#ordercodestrategy'>OrderCodeStrategy</a>`} default="<a href='/reference/typescript-api/orders/order-code-strategy#defaultordercodestrategy'>DefaultOrderCodeStrategy</a>"   />
+<MemberInfo kind="property" type={`<a href='/reference/typescript-api/orders/order-code-strategy#ordercodestrategy'>OrderCodeStrategy</a>`} default={`<a href='/reference/typescript-api/orders/order-code-strategy#defaultordercodestrategy'>DefaultOrderCodeStrategy</a>`}   />
 
 Allows a user-defined function to create Order codes. This can be useful when
 integrating with existing systems. By default, Vendure will generate a 16-character
@@ -99,7 +99,7 @@ for string types (e.g. 255 chars for a varchar field in MySQL), and also the nee
 for codes to be unique.
 ### orderByCodeAccessStrategy
 
-<MemberInfo kind="property" type={`<a href='/reference/typescript-api/orders/order-by-code-access-strategy#orderbycodeaccessstrategy'>OrderByCodeAccessStrategy</a>`} default="<a href='/reference/typescript-api/orders/order-by-code-access-strategy#defaultorderbycodeaccessstrategy'>DefaultOrderByCodeAccessStrategy</a>"  since="1.1.0"  />
+<MemberInfo kind="property" type={`<a href='/reference/typescript-api/orders/order-by-code-access-strategy#orderbycodeaccessstrategy'>OrderByCodeAccessStrategy</a>`} default={`<a href='/reference/typescript-api/orders/order-by-code-access-strategy#defaultorderbycodeaccessstrategy'>DefaultOrderByCodeAccessStrategy</a>`}  since="1.1.0"  />
 
 Defines the strategy used to check if and how an Order may be retrieved via the orderByCode query.
 
@@ -107,7 +107,7 @@ The default strategy permits permanent access to the Customer owning the Order a
 within 2 hours after placing the Order.
 ### changedPriceHandlingStrategy
 
-<MemberInfo kind="property" type={`<a href='/reference/typescript-api/orders/changed-price-handling-strategy#changedpricehandlingstrategy'>ChangedPriceHandlingStrategy</a>`} default="DefaultChangedPriceHandlingStrategy"   />
+<MemberInfo kind="property" type={`<a href='/reference/typescript-api/orders/changed-price-handling-strategy#changedpricehandlingstrategy'>ChangedPriceHandlingStrategy</a>`} default={`DefaultChangedPriceHandlingStrategy`}   />
 
 Defines how we handle the situation where an item exists in an Order, and
 then later on another is added but in the meantime the price of the ProductVariant has changed.
@@ -116,12 +116,12 @@ By default, the latest price will be used. Any price changes resulting from usin
 will be reflected in the GraphQL `OrderLine.unitPrice[WithTax]ChangeSinceAdded` field.
 ### orderPlacedStrategy
 
-<MemberInfo kind="property" type={`<a href='/reference/typescript-api/orders/order-placed-strategy#orderplacedstrategy'>OrderPlacedStrategy</a>`} default="<a href='/reference/typescript-api/orders/default-order-placed-strategy#defaultorderplacedstrategy'>DefaultOrderPlacedStrategy</a>"   />
+<MemberInfo kind="property" type={`<a href='/reference/typescript-api/orders/order-placed-strategy#orderplacedstrategy'>OrderPlacedStrategy</a>`} default={`<a href='/reference/typescript-api/orders/default-order-placed-strategy#defaultorderplacedstrategy'>DefaultOrderPlacedStrategy</a>`}   />
 
 Defines the point of the order process at which the Order is set as "placed".
 ### activeOrderStrategy
 
-<MemberInfo kind="property" type={`<a href='/reference/typescript-api/orders/active-order-strategy#activeorderstrategy'>ActiveOrderStrategy</a>&#60;any&#62; | Array&#60;<a href='/reference/typescript-api/orders/active-order-strategy#activeorderstrategy'>ActiveOrderStrategy</a>&#60;any&#62;&#62;`} default="<a href='/reference/typescript-api/orders/default-active-order-strategy#defaultactiveorderstrategy'>DefaultActiveOrderStrategy</a>"  since="1.9.0"  />
+<MemberInfo kind="property" type={`<a href='/reference/typescript-api/orders/active-order-strategy#activeorderstrategy'>ActiveOrderStrategy</a>&#60;any&#62; | Array&#60;<a href='/reference/typescript-api/orders/active-order-strategy#activeorderstrategy'>ActiveOrderStrategy</a>&#60;any&#62;&#62;`} default={`<a href='/reference/typescript-api/orders/default-active-order-strategy#defaultactiveorderstrategy'>DefaultActiveOrderStrategy</a>`}  since="1.9.0"  />
 
 Defines the strategy used to determine the active Order when interacting with Shop API operations
 such as `activeOrder` and `addItemToOrder`. By default, the strategy uses the active Session.
@@ -130,12 +130,12 @@ Note that if multiple strategies are defined, they will be checked in order and
 returns an Order will be used.
 ### orderSellerStrategy
 
-<MemberInfo kind="property" type={`<a href='/reference/typescript-api/orders/order-seller-strategy#ordersellerstrategy'>OrderSellerStrategy</a>`} default="<a href='/reference/typescript-api/orders/order-seller-strategy#defaultordersellerstrategy'>DefaultOrderSellerStrategy</a>"  since="2.0.0"  />
+<MemberInfo kind="property" type={`<a href='/reference/typescript-api/orders/order-seller-strategy#ordersellerstrategy'>OrderSellerStrategy</a>`} default={`<a href='/reference/typescript-api/orders/order-seller-strategy#defaultordersellerstrategy'>DefaultOrderSellerStrategy</a>`}  since="2.0.0"  />
 
 Defines how Orders will be split amongst multiple Channels in a multivendor scenario.
 ### guestCheckoutStrategy
 
-<MemberInfo kind="property" type={`<a href='/reference/typescript-api/orders/guest-checkout-strategy#guestcheckoutstrategy'>GuestCheckoutStrategy</a>`} default="<a href='/reference/typescript-api/orders/default-guest-checkout-strategy#defaultguestcheckoutstrategy'>DefaultGuestCheckoutStrategy</a>"  since="2.0.0"  />
+<MemberInfo kind="property" type={`<a href='/reference/typescript-api/orders/guest-checkout-strategy#guestcheckoutstrategy'>GuestCheckoutStrategy</a>`} default={`<a href='/reference/typescript-api/orders/default-guest-checkout-strategy#defaultguestcheckoutstrategy'>DefaultGuestCheckoutStrategy</a>`}  since="2.0.0"  />
 
 Defines how we deal with guest checkouts.
 

+ 10 - 10
docs/docs/reference/typescript-api/orders/order-process.md

@@ -93,61 +93,61 @@ interface DefaultOrderProcessOptions {
 
 ### checkModificationPayments
 
-<MemberInfo kind="property" type={`boolean`} default="true"   />
+<MemberInfo kind="property" type={`boolean`} default={`true`}   />
 
 Prevents an Order from transitioning out of the `Modifying` state if
 the Order price has changed and there is no Payment or Refund associated
 with the Modification.
 ### checkAdditionalPaymentsAmount
 
-<MemberInfo kind="property" type={`boolean`} default="true"   />
+<MemberInfo kind="property" type={`boolean`} default={`true`}   />
 
 Prevents an Order from transitioning out of the `ArrangingAdditionalPayment` state if
 the Order's Payments do not cover the full amount of `totalWithTax`.
 ### checkAllVariantsExist
 
-<MemberInfo kind="property" type={`boolean`} default="true"   />
+<MemberInfo kind="property" type={`boolean`} default={`true`}   />
 
 Prevents the transition from `AddingItems` to any other state (apart from `Cancelled`) if
 and of the ProductVariants no longer exists due to deletion.
 ### arrangingPaymentRequiresContents
 
-<MemberInfo kind="property" type={`boolean`} default="true"   />
+<MemberInfo kind="property" type={`boolean`} default={`true`}   />
 
 Prevents transition to the `ArrangingPayment` state if the active Order has no lines.
 ### arrangingPaymentRequiresCustomer
 
-<MemberInfo kind="property" type={`boolean`} default="true"   />
+<MemberInfo kind="property" type={`boolean`} default={`true`}   />
 
 Prevents transition to the `ArrangingPayment` state if the active Order has no customer
 associated with it.
 ### arrangingPaymentRequiresShipping
 
-<MemberInfo kind="property" type={`boolean`} default="true"   />
+<MemberInfo kind="property" type={`boolean`} default={`true`}   />
 
 Prevents transition to the `ArrangingPayment` state if the active Order has no shipping
 method set.
 ### arrangingPaymentRequiresStock
 
-<MemberInfo kind="property" type={`boolean`} default="true"   />
+<MemberInfo kind="property" type={`boolean`} default={`true`}   />
 
 Prevents transition to the `ArrangingPayment` state if there is insufficient saleable
 stock to cover the contents of the Order.
 ### checkPaymentsCoverTotal
 
-<MemberInfo kind="property" type={`boolean`} default="true"   />
+<MemberInfo kind="property" type={`boolean`} default={`true`}   />
 
 Prevents transition to the `PaymentAuthorized` or `PaymentSettled` states if the order
 `totalWithTax` amount is not covered by Payment(s) in the corresponding states.
 ### checkAllItemsBeforeCancel
 
-<MemberInfo kind="property" type={`boolean`} default="true"   />
+<MemberInfo kind="property" type={`boolean`} default={`true`}   />
 
 Prevents transition to the `Cancelled` state unless all OrderItems are already
 cancelled.
 ### checkFulfillmentStates
 
-<MemberInfo kind="property" type={`boolean`} default="true"   />
+<MemberInfo kind="property" type={`boolean`} default={`true`}   />
 
 Prevents transition to the `Shipped`, `PartiallyShipped`, `Delivered` & `PartiallyDelivered` states unless
 there are corresponding Fulfillments in the correct states to allow this. E.g. `Shipped` only if all items in

+ 17 - 0
docs/docs/reference/typescript-api/payment/default-refund-process.md

@@ -0,0 +1,17 @@
+---
+title: "DefaultRefundProcess"
+isDefaultIndex: false
+generated: true
+---
+<!-- This file was generated from the Vendure source. Do not modify. Instead, re-run the "docs:build" script -->
+import MemberInfo from '@site/src/components/MemberInfo';
+import GenerationInfo from '@site/src/components/GenerationInfo';
+import MemberDescription from '@site/src/components/MemberDescription';
+
+
+## defaultRefundProcess
+
+<GenerationInfo sourceFile="packages/core/src/config/refund/default-refund-process.ts" sourceLine="16" packageName="@vendure/core" />
+
+The default <a href='/reference/typescript-api/payment/refund-process#refundprocess'>RefundProcess</a>.
+

+ 9 - 2
docs/docs/reference/typescript-api/payment/payment-options.md

@@ -11,7 +11,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
 
 ## PaymentOptions
 
-<GenerationInfo sourceFile="packages/core/src/config/vendure-config.ts" sourceLine="825" packageName="@vendure/core" />
+<GenerationInfo sourceFile="packages/core/src/config/vendure-config.ts" sourceLine="826" packageName="@vendure/core" />
 
 Defines payment-related options in the <a href='/reference/typescript-api/configuration/vendure-config#vendureconfig'>VendureConfig</a>.
 
@@ -21,6 +21,7 @@ interface PaymentOptions {
     paymentMethodEligibilityCheckers?: PaymentMethodEligibilityChecker[];
     customPaymentProcess?: Array<PaymentProcess<any>>;
     process?: Array<PaymentProcess<any>>;
+    refundProcess?: Array<RefundProcess<any>>;
 }
 ```
 
@@ -45,10 +46,16 @@ Defines which <a href='/reference/typescript-api/payment/payment-method-eligibil
 
 ### process
 
-<MemberInfo kind="property" type={`Array&#60;<a href='/reference/typescript-api/payment/payment-process#paymentprocess'>PaymentProcess</a>&#60;any&#62;&#62;`} default="<a href='/reference/typescript-api/payment/default-payment-process#defaultpaymentprocess'>defaultPaymentProcess</a>"  since="2.0.0"  />
+<MemberInfo kind="property" type={`Array&#60;<a href='/reference/typescript-api/payment/payment-process#paymentprocess'>PaymentProcess</a>&#60;any&#62;&#62;`} default={`<a href='/reference/typescript-api/payment/default-payment-process#defaultpaymentprocess'>defaultPaymentProcess</a>`}  since="2.0.0"  />
 
 Allows the definition of custom states and transition logic for the payment process state machine.
 Takes an array of objects implementing the <a href='/reference/typescript-api/payment/payment-process#paymentprocess'>PaymentProcess</a> interface.
+### refundProcess
+
+<MemberInfo kind="property" type={`Array&#60;<a href='/reference/typescript-api/payment/refund-process#refundprocess'>RefundProcess</a>&#60;any&#62;&#62;`} default={`<a href='/reference/typescript-api/payment/default-refund-process#defaultrefundprocess'>defaultRefundProcess</a>`}   />
+
+Allows the definition of custom states and transition logic for the refund process state machine.
+Takes an array of objects implementing the <a href='/reference/typescript-api/payment/refund-process#refundprocess'>RefundProcess</a> interface.
 
 
 </div>

+ 59 - 0
docs/docs/reference/typescript-api/payment/refund-process.md

@@ -0,0 +1,59 @@
+---
+title: "RefundProcess"
+isDefaultIndex: false
+generated: true
+---
+<!-- This file was generated from the Vendure source. Do not modify. Instead, re-run the "docs:build" script -->
+import MemberInfo from '@site/src/components/MemberInfo';
+import GenerationInfo from '@site/src/components/GenerationInfo';
+import MemberDescription from '@site/src/components/MemberDescription';
+
+
+## RefundProcess
+
+<GenerationInfo sourceFile="packages/core/src/config/refund/refund-process.ts" sourceLine="25" packageName="@vendure/core" />
+
+A RefundProcess is used to define the way the refund process works as in: what states a Refund can be
+in, and how it may transition from one state to another. Using the `onTransitionStart()` hook, a
+RefundProcess can perform checks before allowing a state transition to occur, and the `onTransitionEnd()`
+hook allows logic to be executed after a state change.
+
+For detailed description of the interface members, see the <a href='/reference/typescript-api/state-machine/state-machine-config#statemachineconfig'>StateMachineConfig</a> docs.
+
+```ts title="Signature"
+interface RefundProcess<State extends keyof CustomRefundStates | string> extends InjectableStrategy {
+    transitions?: Transitions<State, State | RefundState> & Partial<Transitions<RefundState | State>>;
+    onTransitionStart?: OnTransitionStartFn<State | RefundState, RefundTransitionData>;
+    onTransitionEnd?: OnTransitionEndFn<State | RefundState, RefundTransitionData>;
+    onTransitionError?: OnTransitionErrorFn<State | RefundState>;
+}
+```
+* Extends: <code><a href='/reference/typescript-api/common/injectable-strategy#injectablestrategy'>InjectableStrategy</a></code>
+
+
+
+<div className="members-wrapper">
+
+### transitions
+
+<MemberInfo kind="property" type={`<a href='/reference/typescript-api/state-machine/transitions#transitions'>Transitions</a>&#60;State, State | <a href='/reference/typescript-api/payment/refund-state#refundstate'>RefundState</a>&#62; &#38; Partial&#60;<a href='/reference/typescript-api/state-machine/transitions#transitions'>Transitions</a>&#60;<a href='/reference/typescript-api/payment/refund-state#refundstate'>RefundState</a> | State&#62;&#62;`}   />
+
+
+### onTransitionStart
+
+<MemberInfo kind="property" type={`<a href='/reference/typescript-api/state-machine/state-machine-config#ontransitionstartfn'>OnTransitionStartFn</a>&#60;State | <a href='/reference/typescript-api/payment/refund-state#refundstate'>RefundState</a>, <a href='/reference/typescript-api/payment/refund-transition-data#refundtransitiondata'>RefundTransitionData</a>&#62;`}   />
+
+
+### onTransitionEnd
+
+<MemberInfo kind="property" type={`<a href='/reference/typescript-api/state-machine/state-machine-config#ontransitionendfn'>OnTransitionEndFn</a>&#60;State | <a href='/reference/typescript-api/payment/refund-state#refundstate'>RefundState</a>, <a href='/reference/typescript-api/payment/refund-transition-data#refundtransitiondata'>RefundTransitionData</a>&#62;`}   />
+
+
+### onTransitionError
+
+<MemberInfo kind="property" type={`<a href='/reference/typescript-api/state-machine/state-machine-config#ontransitionerrorfn'>OnTransitionErrorFn</a>&#60;State | <a href='/reference/typescript-api/payment/refund-state#refundstate'>RefundState</a>&#62;`}   />
+
+
+
+
+</div>

+ 2 - 2
docs/docs/reference/typescript-api/payment/refund-state.md

@@ -11,10 +11,10 @@ import MemberDescription from '@site/src/components/MemberDescription';
 
 ## RefundState
 
-<GenerationInfo sourceFile="packages/core/src/service/helpers/refund-state-machine/refund-state.ts" sourceLine="13" packageName="@vendure/core" />
+<GenerationInfo sourceFile="packages/core/src/service/helpers/refund-state-machine/refund-state.ts" sourceLine="27" packageName="@vendure/core" />
 
 These are the default states of the refund process.
 
 ```ts title="Signature"
-type RefundState = 'Pending' | 'Settled' | 'Failed'
+type RefundState = 'Pending' | 'Settled' | 'Failed' | keyof CustomRefundStates | keyof RefundStates
 ```

+ 22 - 0
docs/docs/reference/typescript-api/payment/refund-states.md

@@ -0,0 +1,22 @@
+---
+title: "RefundStates"
+isDefaultIndex: false
+generated: true
+---
+<!-- This file was generated from the Vendure source. Do not modify. Instead, re-run the "docs:build" script -->
+import MemberInfo from '@site/src/components/MemberInfo';
+import GenerationInfo from '@site/src/components/GenerationInfo';
+import MemberDescription from '@site/src/components/MemberDescription';
+
+
+## RefundStates
+
+<GenerationInfo sourceFile="packages/core/src/service/helpers/refund-state-machine/refund-state.ts" sourceLine="19" packageName="@vendure/core" />
+
+An interface to extend standard <a href='/reference/typescript-api/payment/refund-state#refundstate'>RefundState</a>.
+
+```ts title="Signature"
+interface RefundStates {
+
+}
+```

+ 1 - 1
docs/docs/reference/typescript-api/payment/refund-transition-data.md

@@ -11,7 +11,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
 
 ## RefundTransitionData
 
-<GenerationInfo sourceFile="packages/core/src/service/helpers/refund-state-machine/refund-state.ts" sourceLine="33" packageName="@vendure/core" />
+<GenerationInfo sourceFile="packages/core/src/service/helpers/refund-state-machine/refund-state.ts" sourceLine="35" packageName="@vendure/core" />
 
 The data which is passed to the state transition handler of the RefundStateMachine.
 

+ 1 - 1
docs/docs/reference/typescript-api/plugin/plugin-utilities.md

@@ -87,7 +87,7 @@ The route of the Vendure server which will act as the proxy url.
 The port on which the service being proxied is running.
 ### hostname
 
-<MemberInfo kind="property" type={`string`} default="'localhost'"   />
+<MemberInfo kind="property" type={`string`} default={`'localhost'`}   />
 
 The hostname of the server on which the service being proxied is running.
 ### basePath

+ 7 - 7
docs/docs/reference/typescript-api/products-stock/catalog-options.md

@@ -11,7 +11,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
 
 ## CatalogOptions
 
-<GenerationInfo sourceFile="packages/core/src/config/vendure-config.ts" sourceLine="674" packageName="@vendure/core" />
+<GenerationInfo sourceFile="packages/core/src/config/vendure-config.ts" sourceLine="675" packageName="@vendure/core" />
 
 Options related to products and collections.
 
@@ -30,31 +30,31 @@ interface CatalogOptions {
 
 ### collectionFilters
 
-<MemberInfo kind="property" type={`Array&#60;<a href='/reference/typescript-api/configuration/collection-filter#collectionfilter'>CollectionFilter</a>&#60;any&#62;&#62;`} default="defaultCollectionFilters"   />
+<MemberInfo kind="property" type={`Array&#60;<a href='/reference/typescript-api/configuration/collection-filter#collectionfilter'>CollectionFilter</a>&#60;any&#62;&#62;`} default={`defaultCollectionFilters`}   />
 
 Allows custom <a href='/reference/typescript-api/configuration/collection-filter#collectionfilter'>CollectionFilter</a>s to be defined.
 ### productVariantPriceSelectionStrategy
 
-<MemberInfo kind="property" type={`<a href='/reference/typescript-api/configuration/product-variant-price-selection-strategy#productvariantpriceselectionstrategy'>ProductVariantPriceSelectionStrategy</a>`} default="<a href='/reference/typescript-api/configuration/product-variant-price-selection-strategy#defaultproductvariantpriceselectionstrategy'>DefaultProductVariantPriceSelectionStrategy</a>"  since="2.0.0"  />
+<MemberInfo kind="property" type={`<a href='/reference/typescript-api/configuration/product-variant-price-selection-strategy#productvariantpriceselectionstrategy'>ProductVariantPriceSelectionStrategy</a>`} default={`<a href='/reference/typescript-api/configuration/product-variant-price-selection-strategy#defaultproductvariantpriceselectionstrategy'>DefaultProductVariantPriceSelectionStrategy</a>`}  since="2.0.0"  />
 
 Defines the strategy used to select the price of a ProductVariant, based on factors
 such as the active Channel and active CurrencyCode.
 ### productVariantPriceCalculationStrategy
 
-<MemberInfo kind="property" type={`<a href='/reference/typescript-api/products-stock/product-variant-price-calculation-strategy#productvariantpricecalculationstrategy'>ProductVariantPriceCalculationStrategy</a>`} default="DefaultTaxCalculationStrategy"   />
+<MemberInfo kind="property" type={`<a href='/reference/typescript-api/products-stock/product-variant-price-calculation-strategy#productvariantpricecalculationstrategy'>ProductVariantPriceCalculationStrategy</a>`} default={`DefaultTaxCalculationStrategy`}   />
 
 Defines the strategy used for calculating the price of ProductVariants based
 on the Channel settings and active tax Zone.
 ### productVariantPriceUpdateStrategy
 
-<MemberInfo kind="property" type={`<a href='/reference/typescript-api/configuration/product-variant-price-update-strategy#productvariantpriceupdatestrategy'>ProductVariantPriceUpdateStrategy</a>`} default="<a href='/reference/typescript-api/configuration/product-variant-price-update-strategy#defaultproductvariantpriceupdatestrategy'>DefaultProductVariantPriceUpdateStrategy</a>"  since="2.2.0"  />
+<MemberInfo kind="property" type={`<a href='/reference/typescript-api/configuration/product-variant-price-update-strategy#productvariantpriceupdatestrategy'>ProductVariantPriceUpdateStrategy</a>`} default={`<a href='/reference/typescript-api/configuration/product-variant-price-update-strategy#defaultproductvariantpriceupdatestrategy'>DefaultProductVariantPriceUpdateStrategy</a>`}  since="2.2.0"  />
 
 Defines the strategy which determines what happens to a ProductVariant's prices
 when one of the prices gets updated. For instance, this can be used to synchronize
 prices across multiple Channels.
 ### stockDisplayStrategy
 
-<MemberInfo kind="property" type={`<a href='/reference/typescript-api/products-stock/stock-display-strategy#stockdisplaystrategy'>StockDisplayStrategy</a>`} default="<a href='/reference/typescript-api/products-stock/default-stock-display-strategy#defaultstockdisplaystrategy'>DefaultStockDisplayStrategy</a>"   />
+<MemberInfo kind="property" type={`<a href='/reference/typescript-api/products-stock/stock-display-strategy#stockdisplaystrategy'>StockDisplayStrategy</a>`} default={`<a href='/reference/typescript-api/products-stock/default-stock-display-strategy#defaultstockdisplaystrategy'>DefaultStockDisplayStrategy</a>`}   />
 
 Defines how the `ProductVariant.stockLevel` value is obtained. It is usually not desirable
 to directly expose stock levels over a public API, as this could be considered a leak of
@@ -64,7 +64,7 @@ display "IN_STOCK", "OUT_OF_STOCK" or "LOW_STOCK" rather than exposing the actua
 stock level.
 ### stockLocationStrategy
 
-<MemberInfo kind="property" type={`<a href='/reference/typescript-api/products-stock/stock-location-strategy#stocklocationstrategy'>StockLocationStrategy</a>`} default="<a href='/reference/typescript-api/products-stock/default-stock-location-strategy#defaultstocklocationstrategy'>DefaultStockLocationStrategy</a>"  since="2.0.0"  />
+<MemberInfo kind="property" type={`<a href='/reference/typescript-api/products-stock/stock-location-strategy#stocklocationstrategy'>StockLocationStrategy</a>`} default={`<a href='/reference/typescript-api/products-stock/default-stock-location-strategy#defaultstocklocationstrategy'>DefaultStockLocationStrategy</a>`}  since="2.0.0"  />
 
 Defines the strategy used to determine which StockLocation should be used when performing
 stock operations such as allocating and releasing stock as well as determining the

+ 2 - 2
docs/docs/reference/typescript-api/promotions/promotion-action.md

@@ -30,7 +30,7 @@ class PromotionAction<T extends ConfigArgs = ConfigArgs, U extends PromotionCond
 
 ### priorityValue
 
-<MemberInfo kind="property" type={`number`} default="0"   />
+<MemberInfo kind="property" type={`number`} default={`0`}   />
 
 Used to determine the order of application of multiple Promotions
 on the same Order. See the <a href='/reference/typescript-api/entities/promotion#promotion'>Promotion</a> `priorityScore` field for
@@ -247,7 +247,7 @@ interface PromotionActionConfig<T extends ConfigArgs, U extends Array<PromotionC
 
 ### priorityValue
 
-<MemberInfo kind="property" type={`number`} default="0"   />
+<MemberInfo kind="property" type={`number`} default={`0`}   />
 
 Used to determine the order of application of multiple Promotions
 on the same Order. See the <a href='/reference/typescript-api/entities/promotion#promotion'>Promotion</a> `priorityScore` field for

+ 1 - 1
docs/docs/reference/typescript-api/promotions/promotion-condition.md

@@ -33,7 +33,7 @@ class PromotionCondition<T extends ConfigArgs = ConfigArgs, C extends string = s
 
 ### priorityValue
 
-<MemberInfo kind="property" type={`number`} default="0"   />
+<MemberInfo kind="property" type={`number`} default={`0`}   />
 
 Used to determine the order of application of multiple Promotions
 on the same Order. See the <a href='/reference/typescript-api/entities/promotion#promotion'>Promotion</a> `priorityScore` field for

+ 1 - 1
docs/docs/reference/typescript-api/promotions/promotion-options.md

@@ -11,7 +11,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
 
 ## PromotionOptions
 
-<GenerationInfo sourceFile="packages/core/src/config/vendure-config.ts" sourceLine="736" packageName="@vendure/core" />
+<GenerationInfo sourceFile="packages/core/src/config/vendure-config.ts" sourceLine="737" packageName="@vendure/core" />
 
 
 

+ 13 - 13
docs/docs/reference/typescript-api/request/request-context-service.md

@@ -17,14 +17,14 @@ Creates new <a href='/reference/typescript-api/request/request-context#requestco
 
 ```ts title="Signature"
 class RequestContextService {
-    create(config: {
-        req?: Request;
-        apiType: ApiType;
-        channelOrToken?: Channel | string;
-        languageCode?: LanguageCode;
-        currencyCode?: CurrencyCode;
-        user?: User;
-        activeOrderId?: ID;
+    create(config: {
+        req?: Request;
+        apiType: ApiType;
+        channelOrToken?: Channel | string;
+        languageCode?: LanguageCode;
+        currencyCode?: CurrencyCode;
+        user?: User;
+        activeOrderId?: ID;
     }) => Promise<RequestContext>;
     fromRequest(req: Request, info?: GraphQLResolveInfo, requiredPermissions?: Permission[], session?: CachedSession) => Promise<RequestContext>;
 }
@@ -34,17 +34,17 @@ class RequestContextService {
 
 ### create
 
-<MemberInfo kind="method" type={`(config: {         req?: Request;         apiType: <a href='/reference/typescript-api/request/api-type#apitype'>ApiType</a>;         channelOrToken?: <a href='/reference/typescript-api/entities/channel#channel'>Channel</a> | string;         languageCode?: <a href='/reference/typescript-api/common/language-code#languagecode'>LanguageCode</a>;         currencyCode?: <a href='/reference/typescript-api/common/currency-code#currencycode'>CurrencyCode</a>;         user?: <a href='/reference/typescript-api/entities/user#user'>User</a>;         activeOrderId?: <a href='/reference/typescript-api/common/id#id'>ID</a>;     }) => Promise&#60;<a href='/reference/typescript-api/request/request-context#requestcontext'>RequestContext</a>&#62;`}  since="1.5.0"  />
+<MemberInfo kind="method" type={`(config: {
         req?: Request;
         apiType: <a href='/reference/typescript-api/request/api-type#apitype'>ApiType</a>;
         channelOrToken?: <a href='/reference/typescript-api/entities/channel#channel'>Channel</a> | string;
         languageCode?: <a href='/reference/typescript-api/common/language-code#languagecode'>LanguageCode</a>;
         currencyCode?: <a href='/reference/typescript-api/common/currency-code#currencycode'>CurrencyCode</a>;
         user?: <a href='/reference/typescript-api/entities/user#user'>User</a>;
         activeOrderId?: <a href='/reference/typescript-api/common/id#id'>ID</a>;
     }) => Promise&#60;<a href='/reference/typescript-api/request/request-context#requestcontext'>RequestContext</a>&#62;`}  since="1.5.0"  />
 
-Creates a RequestContext based on the config provided. This can be useful when interacting
-with services outside the request-response cycle, for example in stand-alone scripts or in
+Creates a RequestContext based on the config provided. This can be useful when interacting
+with services outside the request-response cycle, for example in stand-alone scripts or in
 worker jobs.
 ### fromRequest
 
 <MemberInfo kind="method" type={`(req: Request, info?: GraphQLResolveInfo, requiredPermissions?: <a href='/reference/typescript-api/common/permission#permission'>Permission</a>[], session?: <a href='/reference/typescript-api/auth/session-cache-strategy#cachedsession'>CachedSession</a>) => Promise&#60;<a href='/reference/typescript-api/request/request-context#requestcontext'>RequestContext</a>&#62;`}   />
 
-Creates a new RequestContext based on an Express request object. This is used internally
-in the API layer by the AuthGuard, and creates the RequestContext which is then passed
+Creates a new RequestContext based on an Express request object. This is used internally
+in the API layer by the AuthGuard, and creates the RequestContext which is then passed
 to all resolvers & controllers.
 
 

+ 11 - 11
docs/docs/reference/typescript-api/service-helpers/slug-validator.md

@@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
 
 <GenerationInfo sourceFile="packages/core/src/service/helpers/slug-validator/slug-validator.ts" sourceLine="44" packageName="@vendure/core" />
 
-Used to validate slugs to ensure they are URL-safe and unique. Designed to be used with translatable
+Used to validate slugs to ensure they are URL-safe and unique. Designed to be used with translatable
 entities such as <a href='/reference/typescript-api/entities/product#product'>Product</a> and <a href='/reference/typescript-api/entities/collection#collection'>Collection</a>.
 
 ```ts title="Signature"
@@ -49,10 +49,10 @@ class SlugValidator {
 ```ts title="Signature"
 type InputWithSlug = {
     id?: ID | null;
-    translations?: Array<{
-        id?: ID | null;
-        languageCode: LanguageCode;
-        slug?: string | null;
+    translations?: Array<{
+        id?: ID | null;
+        languageCode: LanguageCode;
+        slug?: string | null;
     }> | null;
 }
 ```
@@ -66,7 +66,7 @@ type InputWithSlug = {
 
 ### translations
 
-<MemberInfo kind="property" type={`Array&#60;{         id?: <a href='/reference/typescript-api/common/id#id'>ID</a> | null;         languageCode: <a href='/reference/typescript-api/common/language-code#languagecode'>LanguageCode</a>;         slug?: string | null;     }&#62; | null`}   />
+<MemberInfo kind="property" type={`Array&#60;{
         id?: <a href='/reference/typescript-api/common/id#id'>ID</a> | null;
         languageCode: <a href='/reference/typescript-api/common/language-code#languagecode'>LanguageCode</a>;
         slug?: string | null;
     }&#62; | null`}   />
 
 
 
@@ -81,10 +81,10 @@ type InputWithSlug = {
 
 
 ```ts title="Signature"
-type TranslationEntity = VendureEntity & {
-    id: ID;
-    languageCode: LanguageCode;
-    slug: string;
-    base: any;
+type TranslationEntity = VendureEntity & {
+    id: ID;
+    languageCode: LanguageCode;
+    slug: string;
+    base: any;
 }
 ```

+ 25 - 25
docs/docs/reference/typescript-api/services/customer-service.md

@@ -31,8 +31,8 @@ class CustomerService {
     refreshVerificationToken(ctx: RequestContext, emailAddress: string) => Promise<void>;
     verifyCustomerEmailAddress(ctx: RequestContext, verificationToken: string, password?: string) => Promise<ErrorResultUnion<VerifyCustomerAccountResult, Customer>>;
     requestPasswordReset(ctx: RequestContext, emailAddress: string) => Promise<void>;
-    resetPassword(ctx: RequestContext, passwordResetToken: string, password: string) => Promise<
-        User | PasswordResetTokenExpiredError | PasswordResetTokenInvalidError | PasswordValidationError
+    resetPassword(ctx: RequestContext, passwordResetToken: string, password: string) => Promise<
+        User | PasswordResetTokenExpiredError | PasswordResetTokenInvalidError | PasswordValidationError
     >;
     requestUpdateEmailAddress(ctx: RequestContext, userId: ID, newEmailAddress: string) => Promise<boolean | EmailAddressConflictError>;
     updateEmailAddress(ctx: RequestContext, token: string) => Promise<boolean | IdentifierChangeTokenInvalidError | IdentifierChangeTokenExpiredError>;
@@ -69,8 +69,8 @@ class CustomerService {
 
 <MemberInfo kind="method" type={`(ctx: <a href='/reference/typescript-api/request/request-context#requestcontext'>RequestContext</a>, userId: <a href='/reference/typescript-api/common/id#id'>ID</a>, filterOnChannel:  = true) => Promise&#60;<a href='/reference/typescript-api/entities/customer#customer'>Customer</a> | undefined&#62;`}   />
 
-Returns the Customer entity associated with the given userId, if one exists.
-Setting `filterOnChannel` to `true` will limit the results to Customers which are assigned
+Returns the Customer entity associated with the given userId, if one exists.
+Setting `filterOnChannel` to `true` will limit the results to Customers which are assigned
 to the current active Channel only.
 ### findAddressesByCustomerId
 
@@ -86,13 +86,13 @@ Returns a list of all <a href='/reference/typescript-api/entities/customer-group
 
 <MemberInfo kind="method" type={`(ctx: <a href='/reference/typescript-api/request/request-context#requestcontext'>RequestContext</a>, input: CreateCustomerInput, password?: string) => Promise&#60;<a href='/reference/typescript-api/errors/error-result-union#errorresultunion'>ErrorResultUnion</a>&#60;CreateCustomerResult, <a href='/reference/typescript-api/entities/customer#customer'>Customer</a>&#62;&#62;`}   />
 
-Creates a new Customer, including creation of a new User with the special `customer` Role.
-
-If the `password` argument is specified, the Customer will be immediately verified. If not,
-then an <a href='/reference/typescript-api/events/event-types#accountregistrationevent'>AccountRegistrationEvent</a> is published, so that the customer can have their
-email address verified and set their password in a later step using the `verifyCustomerEmailAddress()`
-method.
-
+Creates a new Customer, including creation of a new User with the special `customer` Role.
+
+If the `password` argument is specified, the Customer will be immediately verified. If not,
+then an <a href='/reference/typescript-api/events/event-types#accountregistrationevent'>AccountRegistrationEvent</a> is published, so that the customer can have their
+email address verified and set their password in a later step using the `verifyCustomerEmailAddress()`
+method.
+
 This method is intended to be used in admin-created Customer flows.
 ### update
 
@@ -113,47 +113,47 @@ This method is intended to be used in admin-created Customer flows.
 
 <MemberInfo kind="method" type={`(ctx: <a href='/reference/typescript-api/request/request-context#requestcontext'>RequestContext</a>, input: RegisterCustomerInput) => Promise&#60;RegisterCustomerAccountResult | EmailAddressConflictError | PasswordValidationError&#62;`}   />
 
-Registers a new Customer account with the <a href='/reference/typescript-api/auth/native-authentication-strategy#nativeauthenticationstrategy'>NativeAuthenticationStrategy</a> and starts
-the email verification flow (unless <a href='/reference/typescript-api/auth/auth-options#authoptions'>AuthOptions</a> `requireVerification` is set to `false`)
-by publishing an <a href='/reference/typescript-api/events/event-types#accountregistrationevent'>AccountRegistrationEvent</a>.
-
+Registers a new Customer account with the <a href='/reference/typescript-api/auth/native-authentication-strategy#nativeauthenticationstrategy'>NativeAuthenticationStrategy</a> and starts
+the email verification flow (unless <a href='/reference/typescript-api/auth/auth-options#authoptions'>AuthOptions</a> `requireVerification` is set to `false`)
+by publishing an <a href='/reference/typescript-api/events/event-types#accountregistrationevent'>AccountRegistrationEvent</a>.
+
 This method is intended to be used in storefront Customer-creation flows.
 ### refreshVerificationToken
 
 <MemberInfo kind="method" type={`(ctx: <a href='/reference/typescript-api/request/request-context#requestcontext'>RequestContext</a>, emailAddress: string) => Promise&#60;void&#62;`}   />
 
-Refreshes a stale email address verification token by generating a new one and
+Refreshes a stale email address verification token by generating a new one and
 publishing a <a href='/reference/typescript-api/events/event-types#accountregistrationevent'>AccountRegistrationEvent</a>.
 ### verifyCustomerEmailAddress
 
 <MemberInfo kind="method" type={`(ctx: <a href='/reference/typescript-api/request/request-context#requestcontext'>RequestContext</a>, verificationToken: string, password?: string) => Promise&#60;<a href='/reference/typescript-api/errors/error-result-union#errorresultunion'>ErrorResultUnion</a>&#60;VerifyCustomerAccountResult, <a href='/reference/typescript-api/entities/customer#customer'>Customer</a>&#62;&#62;`}   />
 
-Given a valid verification token which has been published in an <a href='/reference/typescript-api/events/event-types#accountregistrationevent'>AccountRegistrationEvent</a>, this
+Given a valid verification token which has been published in an <a href='/reference/typescript-api/events/event-types#accountregistrationevent'>AccountRegistrationEvent</a>, this
 method is used to set the Customer as `verified` as part of the account registration flow.
 ### requestPasswordReset
 
 <MemberInfo kind="method" type={`(ctx: <a href='/reference/typescript-api/request/request-context#requestcontext'>RequestContext</a>, emailAddress: string) => Promise&#60;void&#62;`}   />
 
-Publishes a new <a href='/reference/typescript-api/events/event-types#passwordresetevent'>PasswordResetEvent</a> for the given email address. This event creates
+Publishes a new <a href='/reference/typescript-api/events/event-types#passwordresetevent'>PasswordResetEvent</a> for the given email address. This event creates
 a token which can be used in the `resetPassword()` method.
 ### resetPassword
 
-<MemberInfo kind="method" type={`(ctx: <a href='/reference/typescript-api/request/request-context#requestcontext'>RequestContext</a>, passwordResetToken: string, password: string) => Promise&#60;         <a href='/reference/typescript-api/entities/user#user'>User</a> | PasswordResetTokenExpiredError | PasswordResetTokenInvalidError | PasswordValidationError     &#62;`}   />
+<MemberInfo kind="method" type={`(ctx: <a href='/reference/typescript-api/request/request-context#requestcontext'>RequestContext</a>, passwordResetToken: string, password: string) => Promise&#60;
         <a href='/reference/typescript-api/entities/user#user'>User</a> | PasswordResetTokenExpiredError | PasswordResetTokenInvalidError | PasswordValidationError
     &#62;`}   />
 
-Given a valid password reset token created by a call to the `requestPasswordReset()` method,
+Given a valid password reset token created by a call to the `requestPasswordReset()` method,
 this method will change the Customer's password to that given as the `password` argument.
 ### requestUpdateEmailAddress
 
 <MemberInfo kind="method" type={`(ctx: <a href='/reference/typescript-api/request/request-context#requestcontext'>RequestContext</a>, userId: <a href='/reference/typescript-api/common/id#id'>ID</a>, newEmailAddress: string) => Promise&#60;boolean | EmailAddressConflictError&#62;`}   />
 
-Publishes a <a href='/reference/typescript-api/events/event-types#identifierchangerequestevent'>IdentifierChangeRequestEvent</a> for the given User. This event contains a token
-which is then used in the `updateEmailAddress()` method to change the email address of the User &
+Publishes a <a href='/reference/typescript-api/events/event-types#identifierchangerequestevent'>IdentifierChangeRequestEvent</a> for the given User. This event contains a token
+which is then used in the `updateEmailAddress()` method to change the email address of the User &
 Customer.
 ### updateEmailAddress
 
 <MemberInfo kind="method" type={`(ctx: <a href='/reference/typescript-api/request/request-context#requestcontext'>RequestContext</a>, token: string) => Promise&#60;boolean | IdentifierChangeTokenInvalidError | IdentifierChangeTokenExpiredError&#62;`}   />
 
-Given a valid email update token published in a <a href='/reference/typescript-api/events/event-types#identifierchangerequestevent'>IdentifierChangeRequestEvent</a>, this method
+Given a valid email update token published in a <a href='/reference/typescript-api/events/event-types#identifierchangerequestevent'>IdentifierChangeRequestEvent</a>, this method
 will update the Customer & User email address.
 ### createOrUpdate
 
@@ -184,8 +184,8 @@ Creates a new <a href='/reference/typescript-api/entities/address#address'>Addre
 
 <MemberInfo kind="method" type={`(ctx: <a href='/reference/typescript-api/request/request-context#requestcontext'>RequestContext</a>, order: <a href='/reference/typescript-api/entities/order#order'>Order</a>) => `}   />
 
-If the Customer associated with the given Order does not yet have any Addresses,
-this method will create new Address(es) based on the Order's shipping & billing
+If the Customer associated with the given Order does not yet have any Addresses,
+this method will create new Address(es) based on the Order's shipping & billing
 addresses.
 ### addNoteToCustomer
 

+ 11 - 11
docs/docs/reference/typescript-api/services/fulfillment-service.md

@@ -21,14 +21,14 @@ class FulfillmentService {
     create(ctx: RequestContext, orders: Order[], lines: OrderLineInput[], handler: ConfigurableOperationInput) => Promise<Fulfillment | InvalidFulfillmentHandlerError | CreateFulfillmentError>;
     getFulfillmentLines(ctx: RequestContext, id: ID) => Promise<FulfillmentLine[]>;
     getFulfillmentsLinesForOrderLine(ctx: RequestContext, orderLineId: ID, relations: RelationPaths<FulfillmentLine> = []) => Promise<FulfillmentLine[]>;
-    transitionToState(ctx: RequestContext, fulfillmentId: ID, state: FulfillmentState) => Promise<
-        | {
-              fulfillment: Fulfillment;
-              orders: Order[];
-              fromState: FulfillmentState;
-              toState: FulfillmentState;
-          }
-        | FulfillmentStateTransitionError
+    transitionToState(ctx: RequestContext, fulfillmentId: ID, state: FulfillmentState) => Promise<
+        | {
+              fulfillment: Fulfillment;
+              orders: Order[];
+              fromState: FulfillmentState;
+              toState: FulfillmentState;
+          }
+        | FulfillmentStateTransitionError
     >;
     getNextStates(fulfillment: Fulfillment) => readonly FulfillmentState[];
 }
@@ -45,7 +45,7 @@ class FulfillmentService {
 
 <MemberInfo kind="method" type={`(ctx: <a href='/reference/typescript-api/request/request-context#requestcontext'>RequestContext</a>, orders: <a href='/reference/typescript-api/entities/order#order'>Order</a>[], lines: OrderLineInput[], handler: ConfigurableOperationInput) => Promise&#60;<a href='/reference/typescript-api/entities/fulfillment#fulfillment'>Fulfillment</a> | InvalidFulfillmentHandlerError | CreateFulfillmentError&#62;`}   />
 
-Creates a new Fulfillment for the given Orders and OrderItems, using the specified
+Creates a new Fulfillment for the given Orders and OrderItems, using the specified
 <a href='/reference/typescript-api/fulfillment/fulfillment-handler#fulfillmenthandler'>FulfillmentHandler</a>.
 ### getFulfillmentLines
 
@@ -59,9 +59,9 @@ Creates a new Fulfillment for the given Orders and OrderItems, using the specifi
 
 ### transitionToState
 
-<MemberInfo kind="method" type={`(ctx: <a href='/reference/typescript-api/request/request-context#requestcontext'>RequestContext</a>, fulfillmentId: <a href='/reference/typescript-api/common/id#id'>ID</a>, state: <a href='/reference/typescript-api/fulfillment/fulfillment-state#fulfillmentstate'>FulfillmentState</a>) => Promise&#60;         | {               fulfillment: <a href='/reference/typescript-api/entities/fulfillment#fulfillment'>Fulfillment</a>;               orders: <a href='/reference/typescript-api/entities/order#order'>Order</a>[];               fromState: <a href='/reference/typescript-api/fulfillment/fulfillment-state#fulfillmentstate'>FulfillmentState</a>;               toState: <a href='/reference/typescript-api/fulfillment/fulfillment-state#fulfillmentstate'>FulfillmentState</a>;           }         | FulfillmentStateTransitionError     &#62;`}   />
+<MemberInfo kind="method" type={`(ctx: <a href='/reference/typescript-api/request/request-context#requestcontext'>RequestContext</a>, fulfillmentId: <a href='/reference/typescript-api/common/id#id'>ID</a>, state: <a href='/reference/typescript-api/fulfillment/fulfillment-state#fulfillmentstate'>FulfillmentState</a>) => Promise&#60;
         | {
               fulfillment: <a href='/reference/typescript-api/entities/fulfillment#fulfillment'>Fulfillment</a>;
               orders: <a href='/reference/typescript-api/entities/order#order'>Order</a>[];
               fromState: <a href='/reference/typescript-api/fulfillment/fulfillment-state#fulfillmentstate'>FulfillmentState</a>;
               toState: <a href='/reference/typescript-api/fulfillment/fulfillment-state#fulfillmentstate'>FulfillmentState</a>;
           }
         | FulfillmentStateTransitionError
     &#62;`}   />
 
-Transitions the specified Fulfillment to a new state and upon successful transition
+Transitions the specified Fulfillment to a new state and upon successful transition
 publishes a <a href='/reference/typescript-api/events/event-types#fulfillmentstatetransitionevent'>FulfillmentStateTransitionEvent</a>.
 ### getNextStates
 

+ 7 - 1
docs/docs/reference/typescript-api/services/order-service.md

@@ -11,7 +11,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
 
 ## OrderService
 
-<GenerationInfo sourceFile="packages/core/src/service/services/order.service.ts" sourceLine="134" packageName="@vendure/core" />
+<GenerationInfo sourceFile="packages/core/src/service/services/order.service.ts" sourceLine="137" packageName="@vendure/core" />
 
 Contains methods relating to <a href='/reference/typescript-api/entities/order#order'>Order</a> entities.
 
@@ -52,6 +52,7 @@ class OrderService {
     setShippingMethod(ctx: RequestContext, orderId: ID, shippingMethodIds: ID[]) => Promise<ErrorResultUnion<SetOrderShippingMethodResult, Order>>;
     transitionToState(ctx: RequestContext, orderId: ID, state: OrderState) => Promise<Order | OrderStateTransitionError>;
     transitionFulfillmentToState(ctx: RequestContext, fulfillmentId: ID, state: FulfillmentState) => Promise<Fulfillment | FulfillmentStateTransitionError>;
+    transitionRefundToState(ctx: RequestContext, refundId: ID, state: RefundState, transactionId?: string) => Promise<Refund | RefundStateTransitionError>;
     modifyOrder(ctx: RequestContext, input: ModifyOrderInput) => Promise<ErrorResultUnion<ModifyOrderResult, Order>>;
     transitionPaymentToState(ctx: RequestContext, paymentId: ID, state: PaymentState) => Promise<ErrorResultUnion<TransitionPaymentToStateResult, Payment>>;
     addPaymentToOrder(ctx: RequestContext, orderId: ID, input: PaymentInput) => Promise<ErrorResultUnion<AddPaymentToOrderResult, Order>>;
@@ -263,6 +264,11 @@ Transitions the Order to the given state.
 
 Transitions a Fulfillment to the given state and then transitions the Order state based on
 whether all Fulfillments of the Order are shipped or delivered.
+### transitionRefundToState
+
+<MemberInfo kind="method" type={`(ctx: <a href='/reference/typescript-api/request/request-context#requestcontext'>RequestContext</a>, refundId: <a href='/reference/typescript-api/common/id#id'>ID</a>, state: <a href='/reference/typescript-api/payment/refund-state#refundstate'>RefundState</a>, transactionId?: string) => Promise&#60;<a href='/reference/typescript-api/entities/refund#refund'>Refund</a> | RefundStateTransitionError&#62;`}   />
+
+Transitions a Refund to the given state
 ### modifyOrder
 
 <MemberInfo kind="method" type={`(ctx: <a href='/reference/typescript-api/request/request-context#requestcontext'>RequestContext</a>, input: ModifyOrderInput) => Promise&#60;<a href='/reference/typescript-api/errors/error-result-union#errorresultunion'>ErrorResultUnion</a>&#60;ModifyOrderResult, <a href='/reference/typescript-api/entities/order#order'>Order</a>&#62;&#62;`}   />

+ 5 - 5
docs/docs/reference/typescript-api/services/payment-method-service.md

@@ -28,10 +28,10 @@ class PaymentMethodService {
     getPaymentMethodEligibilityCheckers(ctx: RequestContext) => ConfigurableOperationDefinition[];
     getPaymentMethodHandlers(ctx: RequestContext) => ConfigurableOperationDefinition[];
     getEligiblePaymentMethods(ctx: RequestContext, order: Order) => Promise<PaymentMethodQuote[]>;
-    getMethodAndOperations(ctx: RequestContext, method: string) => Promise<{
-        paymentMethod: PaymentMethod;
-        handler: PaymentMethodHandler;
-        checker: PaymentMethodEligibilityChecker | null;
+    getMethodAndOperations(ctx: RequestContext, method: string) => Promise<{
+        paymentMethod: PaymentMethod;
+        handler: PaymentMethodHandler;
+        checker: PaymentMethodEligibilityChecker | null;
     }>;
 }
 ```
@@ -95,7 +95,7 @@ class PaymentMethodService {
 
 ### getMethodAndOperations
 
-<MemberInfo kind="method" type={`(ctx: <a href='/reference/typescript-api/request/request-context#requestcontext'>RequestContext</a>, method: string) => Promise&#60;{         paymentMethod: <a href='/reference/typescript-api/entities/payment-method#paymentmethod'>PaymentMethod</a>;         handler: <a href='/reference/typescript-api/payment/payment-method-handler#paymentmethodhandler'>PaymentMethodHandler</a>;         checker: <a href='/reference/typescript-api/payment/payment-method-eligibility-checker#paymentmethodeligibilitychecker'>PaymentMethodEligibilityChecker</a> | null;     }&#62;`}   />
+<MemberInfo kind="method" type={`(ctx: <a href='/reference/typescript-api/request/request-context#requestcontext'>RequestContext</a>, method: string) => Promise&#60;{
         paymentMethod: <a href='/reference/typescript-api/entities/payment-method#paymentmethod'>PaymentMethod</a>;
         handler: <a href='/reference/typescript-api/payment/payment-method-handler#paymentmethodhandler'>PaymentMethodHandler</a>;
         checker: <a href='/reference/typescript-api/payment/payment-method-eligibility-checker#paymentmethodeligibilitychecker'>PaymentMethodEligibilityChecker</a> | null;
     }&#62;`}   />
 
 
 

+ 3 - 3
docs/docs/reference/typescript-api/services/role-service.md

@@ -11,13 +11,13 @@ import MemberDescription from '@site/src/components/MemberDescription';
 
 ## RoleService
 
-<GenerationInfo sourceFile="packages/core/src/service/services/role.service.ts" sourceLine="51" packageName="@vendure/core" />
+<GenerationInfo sourceFile="packages/core/src/service/services/role.service.ts" sourceLine="52" packageName="@vendure/core" />
 
 Contains methods relating to <a href='/reference/typescript-api/entities/role#role'>Role</a> entities.
 
 ```ts title="Signature"
 class RoleService {
-    constructor(connection: TransactionalConnection, channelService: ChannelService, listQueryBuilder: ListQueryBuilder, configService: ConfigService, eventBus: EventBus)
+    constructor(connection: TransactionalConnection, channelService: ChannelService, listQueryBuilder: ListQueryBuilder, configService: ConfigService, eventBus: EventBus, requestContextCache: RequestContextCacheService)
     initRoles() => ;
     findAll(ctx: RequestContext, options?: ListQueryOptions<Role>, relations?: RelationPaths<Role>) => Promise<PaginatedList<Role>>;
     findOne(ctx: RequestContext, roleId: ID, relations?: RelationPaths<Role>) => Promise<Role | undefined>;
@@ -39,7 +39,7 @@ class RoleService {
 
 ### constructor
 
-<MemberInfo kind="method" type={`(connection: <a href='/reference/typescript-api/data-access/transactional-connection#transactionalconnection'>TransactionalConnection</a>, channelService: <a href='/reference/typescript-api/services/channel-service#channelservice'>ChannelService</a>, listQueryBuilder: <a href='/reference/typescript-api/data-access/list-query-builder#listquerybuilder'>ListQueryBuilder</a>, configService: ConfigService, eventBus: <a href='/reference/typescript-api/events/event-bus#eventbus'>EventBus</a>) => RoleService`}   />
+<MemberInfo kind="method" type={`(connection: <a href='/reference/typescript-api/data-access/transactional-connection#transactionalconnection'>TransactionalConnection</a>, channelService: <a href='/reference/typescript-api/services/channel-service#channelservice'>ChannelService</a>, listQueryBuilder: <a href='/reference/typescript-api/data-access/list-query-builder#listquerybuilder'>ListQueryBuilder</a>, configService: ConfigService, eventBus: <a href='/reference/typescript-api/events/event-bus#eventbus'>EventBus</a>, requestContextCache: RequestContextCacheService) => RoleService`}   />
 
 
 ### initRoles

+ 21 - 21
docs/docs/reference/typescript-api/services/user-service.md

@@ -27,15 +27,15 @@ class UserService {
     setVerificationToken(ctx: RequestContext, user: User) => Promise<User>;
     verifyUserByToken(ctx: RequestContext, verificationToken: string, password?: string) => Promise<ErrorResultUnion<VerifyCustomerAccountResult, User>>;
     setPasswordResetToken(ctx: RequestContext, emailAddress: string) => Promise<User | undefined>;
-    resetPasswordByToken(ctx: RequestContext, passwordResetToken: string, password: string) => Promise<
-        User | PasswordResetTokenExpiredError | PasswordResetTokenInvalidError | PasswordValidationError
+    resetPasswordByToken(ctx: RequestContext, passwordResetToken: string, password: string) => Promise<
+        User | PasswordResetTokenExpiredError | PasswordResetTokenInvalidError | PasswordValidationError
     >;
     changeUserAndNativeIdentifier(ctx: RequestContext, userId: ID, newIdentifier: string) => ;
     setIdentifierChangeToken(ctx: RequestContext, user: User) => Promise<User>;
-    changeIdentifierByToken(ctx: RequestContext, token: string) => Promise<
-        | { user: User; oldIdentifier: string }
-        | IdentifierChangeTokenInvalidError
-        | IdentifierChangeTokenExpiredError
+    changeIdentifierByToken(ctx: RequestContext, token: string) => Promise<
+        | { user: User; oldIdentifier: string }
+        | IdentifierChangeTokenInvalidError
+        | IdentifierChangeTokenExpiredError
     >;
     updatePassword(ctx: RequestContext, userId: ID, currentPassword: string, newPassword: string) => Promise<boolean | InvalidCredentialsError | PasswordValidationError>;
 }
@@ -67,8 +67,8 @@ Creates a new User with the special `customer` Role and using the <a href='/refe
 
 <MemberInfo kind="method" type={`(ctx: <a href='/reference/typescript-api/request/request-context#requestcontext'>RequestContext</a>, user: <a href='/reference/typescript-api/entities/user#user'>User</a>, identifier: string, password?: string) => Promise&#60;<a href='/reference/typescript-api/entities/user#user'>User</a> | PasswordValidationError&#62;`}   />
 
-Adds a new <a href='/reference/typescript-api/entities/authentication-method#nativeauthenticationmethod'>NativeAuthenticationMethod</a> to the User. If the <a href='/reference/typescript-api/auth/auth-options#authoptions'>AuthOptions</a> `requireVerification`
-is set to `true` (as is the default), the User will be marked as unverified until the email verification
+Adds a new <a href='/reference/typescript-api/entities/authentication-method#nativeauthenticationmethod'>NativeAuthenticationMethod</a> to the User. If the <a href='/reference/typescript-api/auth/auth-options#authoptions'>AuthOptions</a> `requireVerification`
+is set to `true` (as is the default), the User will be marked as unverified until the email verification
 flow is completed.
 ### createAdminUser
 
@@ -84,47 +84,47 @@ Creates a new verified User using the <a href='/reference/typescript-api/auth/na
 
 <MemberInfo kind="method" type={`(ctx: <a href='/reference/typescript-api/request/request-context#requestcontext'>RequestContext</a>, user: <a href='/reference/typescript-api/entities/user#user'>User</a>) => Promise&#60;<a href='/reference/typescript-api/entities/user#user'>User</a>&#62;`}   />
 
-Sets the <a href='/reference/typescript-api/entities/authentication-method#nativeauthenticationmethod'>NativeAuthenticationMethod</a> `verificationToken` as part of the User email verification
+Sets the <a href='/reference/typescript-api/entities/authentication-method#nativeauthenticationmethod'>NativeAuthenticationMethod</a> `verificationToken` as part of the User email verification
 flow.
 ### verifyUserByToken
 
 <MemberInfo kind="method" type={`(ctx: <a href='/reference/typescript-api/request/request-context#requestcontext'>RequestContext</a>, verificationToken: string, password?: string) => Promise&#60;<a href='/reference/typescript-api/errors/error-result-union#errorresultunion'>ErrorResultUnion</a>&#60;VerifyCustomerAccountResult, <a href='/reference/typescript-api/entities/user#user'>User</a>&#62;&#62;`}   />
 
-Verifies a verificationToken by looking for a User which has previously had it set using the
-`setVerificationToken()` method, and checks that the token is valid and has not expired.
-
+Verifies a verificationToken by looking for a User which has previously had it set using the
+`setVerificationToken()` method, and checks that the token is valid and has not expired.
+
 If valid, the User will be set to `verified: true`.
 ### setPasswordResetToken
 
 <MemberInfo kind="method" type={`(ctx: <a href='/reference/typescript-api/request/request-context#requestcontext'>RequestContext</a>, emailAddress: string) => Promise&#60;<a href='/reference/typescript-api/entities/user#user'>User</a> | undefined&#62;`}   />
 
-Sets the <a href='/reference/typescript-api/entities/authentication-method#nativeauthenticationmethod'>NativeAuthenticationMethod</a> `passwordResetToken` as part of the User password reset
+Sets the <a href='/reference/typescript-api/entities/authentication-method#nativeauthenticationmethod'>NativeAuthenticationMethod</a> `passwordResetToken` as part of the User password reset
 flow.
 ### resetPasswordByToken
 
-<MemberInfo kind="method" type={`(ctx: <a href='/reference/typescript-api/request/request-context#requestcontext'>RequestContext</a>, passwordResetToken: string, password: string) => Promise&#60;         <a href='/reference/typescript-api/entities/user#user'>User</a> | PasswordResetTokenExpiredError | PasswordResetTokenInvalidError | PasswordValidationError     &#62;`}   />
-
-Verifies a passwordResetToken by looking for a User which has previously had it set using the
-`setPasswordResetToken()` method, and checks that the token is valid and has not expired.
+<MemberInfo kind="method" type={`(ctx: <a href='/reference/typescript-api/request/request-context#requestcontext'>RequestContext</a>, passwordResetToken: string, password: string) => Promise&#60;
         <a href='/reference/typescript-api/entities/user#user'>User</a> | PasswordResetTokenExpiredError | PasswordResetTokenInvalidError | PasswordValidationError
     &#62;`}   />
 
+Verifies a passwordResetToken by looking for a User which has previously had it set using the
+`setPasswordResetToken()` method, and checks that the token is valid and has not expired.
+
 If valid, the User's credentials will be updated with the new password.
 ### changeUserAndNativeIdentifier
 
 <MemberInfo kind="method" type={`(ctx: <a href='/reference/typescript-api/request/request-context#requestcontext'>RequestContext</a>, userId: <a href='/reference/typescript-api/common/id#id'>ID</a>, newIdentifier: string) => `}   />
 
-Changes the User identifier without an email verification step, so this should be only used when
+Changes the User identifier without an email verification step, so this should be only used when
 an Administrator is setting a new email address.
 ### setIdentifierChangeToken
 
 <MemberInfo kind="method" type={`(ctx: <a href='/reference/typescript-api/request/request-context#requestcontext'>RequestContext</a>, user: <a href='/reference/typescript-api/entities/user#user'>User</a>) => Promise&#60;<a href='/reference/typescript-api/entities/user#user'>User</a>&#62;`}   />
 
-Sets the <a href='/reference/typescript-api/entities/authentication-method#nativeauthenticationmethod'>NativeAuthenticationMethod</a> `identifierChangeToken` as part of the User email address change
+Sets the <a href='/reference/typescript-api/entities/authentication-method#nativeauthenticationmethod'>NativeAuthenticationMethod</a> `identifierChangeToken` as part of the User email address change
 flow.
 ### changeIdentifierByToken
 
-<MemberInfo kind="method" type={`(ctx: <a href='/reference/typescript-api/request/request-context#requestcontext'>RequestContext</a>, token: string) => Promise&#60;         | { user: <a href='/reference/typescript-api/entities/user#user'>User</a>; oldIdentifier: string }         | IdentifierChangeTokenInvalidError         | IdentifierChangeTokenExpiredError     &#62;`}   />
+<MemberInfo kind="method" type={`(ctx: <a href='/reference/typescript-api/request/request-context#requestcontext'>RequestContext</a>, token: string) => Promise&#60;
         | { user: <a href='/reference/typescript-api/entities/user#user'>User</a>; oldIdentifier: string }
         | IdentifierChangeTokenInvalidError
         | IdentifierChangeTokenExpiredError
     &#62;`}   />
 
-Changes the User identifier as part of the storefront flow used by Customers to set a
+Changes the User identifier as part of the storefront flow used by Customers to set a
 new email address, with the token previously set using the `setIdentifierChangeToken()` method.
 ### updatePassword
 

+ 2 - 2
docs/docs/reference/typescript-api/shipping/shipping-options.md

@@ -11,7 +11,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
 
 ## ShippingOptions
 
-<GenerationInfo sourceFile="packages/core/src/config/vendure-config.ts" sourceLine="752" packageName="@vendure/core" />
+<GenerationInfo sourceFile="packages/core/src/config/vendure-config.ts" sourceLine="753" packageName="@vendure/core" />
 
 
 
@@ -53,7 +53,7 @@ Allows the definition of custom states and transition logic for the fulfillment
 Takes an array of objects implementing the <a href='/reference/typescript-api/fulfillment/fulfillment-process#fulfillmentprocess'>FulfillmentProcess</a> interface.
 ### process
 
-<MemberInfo kind="property" type={`Array&#60;<a href='/reference/typescript-api/fulfillment/fulfillment-process#fulfillmentprocess'>FulfillmentProcess</a>&#60;any&#62;&#62;`} default="<a href='/reference/typescript-api/fulfillment/fulfillment-process#defaultfulfillmentprocess'>defaultFulfillmentProcess</a>"  since="2.0.0"  />
+<MemberInfo kind="property" type={`Array&#60;<a href='/reference/typescript-api/fulfillment/fulfillment-process#fulfillmentprocess'>FulfillmentProcess</a>&#60;any&#62;&#62;`} default={`<a href='/reference/typescript-api/fulfillment/fulfillment-process#defaultfulfillmentprocess'>defaultFulfillmentProcess</a>`}  since="2.0.0"  />
 
 Allows the definition of custom states and transition logic for the fulfillment process state machine.
 Takes an array of objects implementing the <a href='/reference/typescript-api/fulfillment/fulfillment-process#fulfillmentprocess'>FulfillmentProcess</a> interface.

+ 3 - 3
docs/docs/reference/typescript-api/tax/tax-options.md

@@ -11,7 +11,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
 
 ## TaxOptions
 
-<GenerationInfo sourceFile="packages/core/src/config/vendure-config.ts" sourceLine="857" packageName="@vendure/core" />
+<GenerationInfo sourceFile="packages/core/src/config/vendure-config.ts" sourceLine="866" packageName="@vendure/core" />
 
 
 
@@ -26,12 +26,12 @@ interface TaxOptions {
 
 ### taxZoneStrategy
 
-<MemberInfo kind="property" type={`<a href='/reference/typescript-api/tax/tax-zone-strategy#taxzonestrategy'>TaxZoneStrategy</a>`} default="<a href='/reference/typescript-api/tax/default-tax-zone-strategy#defaulttaxzonestrategy'>DefaultTaxZoneStrategy</a>"   />
+<MemberInfo kind="property" type={`<a href='/reference/typescript-api/tax/tax-zone-strategy#taxzonestrategy'>TaxZoneStrategy</a>`} default={`<a href='/reference/typescript-api/tax/default-tax-zone-strategy#defaulttaxzonestrategy'>DefaultTaxZoneStrategy</a>`}   />
 
 Defines the strategy used to determine the applicable Zone used in tax calculations.
 ### taxLineCalculationStrategy
 
-<MemberInfo kind="property" type={`<a href='/reference/typescript-api/tax/tax-line-calculation-strategy#taxlinecalculationstrategy'>TaxLineCalculationStrategy</a>`} default="<a href='/reference/typescript-api/tax/default-tax-line-calculation-strategy#defaulttaxlinecalculationstrategy'>DefaultTaxLineCalculationStrategy</a>"   />
+<MemberInfo kind="property" type={`<a href='/reference/typescript-api/tax/tax-line-calculation-strategy#taxlinecalculationstrategy'>TaxLineCalculationStrategy</a>`} default={`<a href='/reference/typescript-api/tax/default-tax-line-calculation-strategy#defaulttaxlinecalculationstrategy'>DefaultTaxLineCalculationStrategy</a>`}   />
 
 Defines the strategy used to calculate the TaxLines added to OrderItems.
 

+ 2 - 2
docs/docs/reference/typescript-api/testing/test-server-options.md

@@ -38,12 +38,12 @@ The path to an optional CSV file containing product data to import.
 An object containing non-product data which is used to populate the database.
 ### customerCount
 
-<MemberInfo kind="property" type={`number`} default="10"   />
+<MemberInfo kind="property" type={`number`} default={`10`}   />
 
 The number of fake Customers to populate into the database.
 ### logging
 
-<MemberInfo kind="property" type={`boolean`} default="false"   />
+<MemberInfo kind="property" type={`boolean`} default={`false`}   />
 
 Set this to `true` to log some information about the database population process.
 

+ 2 - 2
docs/docs/reference/typescript-api/worker/worker-health-check-config.md

@@ -32,12 +32,12 @@ interface WorkerHealthCheckConfig {
 The port on which the worker will listen
 ### hostname
 
-<MemberInfo kind="property" type={`string`} default="'localhost'"   />
+<MemberInfo kind="property" type={`string`} default={`'localhost'`}   />
 
 The hostname
 ### route
 
-<MemberInfo kind="property" type={`string`} default="'/health'"   />
+<MemberInfo kind="property" type={`string`} default={`'/health'`}   />
 
 The route at which the health check is available.