Просмотр исходного кода

docs: Move core plugins to top-level reference category

Michael Bromley 2 лет назад
Родитель
Сommit
777a2ea993
80 измененных файлов с 823 добавлено и 662 удалено
  1. 1 1
      docs/docs/guides/core-concepts/auth/index.md
  2. 3 3
      docs/docs/guides/core-concepts/images-assets/index.mdx
  3. 0 13
      docs/docs/guides/deployment/deployment.md
  4. 4 4
      docs/docs/guides/deployment/production-configuration/index.md
  5. 1 1
      docs/docs/guides/developer-guide/custom-fields/index.md
  6. 1 1
      docs/docs/guides/developer-guide/plugins/index.mdx
  7. 1 1
      docs/docs/guides/developer-guide/worker-job-queue/index.mdx
  8. 3 3
      docs/docs/guides/storefront/checkout-flow/index.mdx
  9. 1 1
      docs/docs/guides/storefront/customer-accounts/index.mdx
  10. 2 2
      docs/docs/guides/storefront/listing-products/index.mdx
  11. 1 1
      docs/docs/guides/storefront/product-detail/index.mdx
  12. 1 1
      docs/docs/reference/admin-ui-api/components/data-table2component.md
  13. 2 2
      docs/docs/reference/admin-ui-api/custom-input-components/default-inputs.md
  14. 1 1
      docs/docs/reference/admin-ui-api/directives/if-permissions-directive.md
  15. 5 5
      docs/docs/reference/admin-ui-api/list-detail-views/base-detail-component.md
  16. 3 3
      docs/docs/reference/admin-ui-api/list-detail-views/typed-base-list-component.md
  17. 1 1
      docs/docs/reference/admin-ui-api/ui-devkit/admin-ui-extension.md
  18. 1 1
      docs/docs/reference/admin-ui-api/ui-devkit/ui-extension-compiler-options.md
  19. 178 0
      docs/docs/reference/common/currency-code.md
  20. 14 0
      docs/docs/reference/common/index.md
  21. 181 0
      docs/docs/reference/common/language-code.md
  22. 140 0
      docs/docs/reference/common/permission.md
  23. 3 3
      docs/docs/reference/core-plugins/admin-ui-plugin/admin-ui-plugin-options.md
  24. 1 1
      docs/docs/reference/core-plugins/admin-ui-plugin/index.md
  25. 8 8
      docs/docs/reference/core-plugins/asset-server-plugin/asset-server-options.md
  26. 0 0
      docs/docs/reference/core-plugins/asset-server-plugin/cache-config.md
  27. 0 0
      docs/docs/reference/core-plugins/asset-server-plugin/hashed-asset-naming-strategy.md
  28. 0 0
      docs/docs/reference/core-plugins/asset-server-plugin/image-transform-mode.md
  29. 1 1
      docs/docs/reference/core-plugins/asset-server-plugin/image-transform-preset.md
  30. 2 2
      docs/docs/reference/core-plugins/asset-server-plugin/index.md
  31. 0 0
      docs/docs/reference/core-plugins/asset-server-plugin/local-asset-storage-strategy.md
  32. 6 5
      docs/docs/reference/core-plugins/asset-server-plugin/s3asset-storage-strategy.md
  33. 1 1
      docs/docs/reference/core-plugins/asset-server-plugin/sharp-asset-preview-strategy.md
  34. 4 4
      docs/docs/reference/core-plugins/elasticsearch-plugin/elasticsearch-options.md
  35. 2 2
      docs/docs/reference/core-plugins/elasticsearch-plugin/index.md
  36. 0 0
      docs/docs/reference/core-plugins/email-plugin/custom-template-loader.md
  37. 3 3
      docs/docs/reference/core-plugins/email-plugin/email-event-handler-with-async-data.md
  38. 14 14
      docs/docs/reference/core-plugins/email-plugin/email-event-handler.md
  39. 2 2
      docs/docs/reference/core-plugins/email-plugin/email-event-listener.md
  40. 3 3
      docs/docs/reference/core-plugins/email-plugin/email-generator.md
  41. 7 7
      docs/docs/reference/core-plugins/email-plugin/email-plugin-options.md
  42. 4 4
      docs/docs/reference/core-plugins/email-plugin/email-plugin-types.md
  43. 4 4
      docs/docs/reference/core-plugins/email-plugin/email-sender.md
  44. 5 5
      docs/docs/reference/core-plugins/email-plugin/index.md
  45. 2 2
      docs/docs/reference/core-plugins/email-plugin/transport-options.md
  46. 0 0
      docs/docs/reference/core-plugins/harden-plugin/default-vendure-complexity-estimator.md
  47. 1 1
      docs/docs/reference/core-plugins/harden-plugin/harden-plugin-options.md
  48. 4 4
      docs/docs/reference/core-plugins/harden-plugin/index.md
  49. 0 0
      docs/docs/reference/core-plugins/index.md
  50. 2 2
      docs/docs/reference/core-plugins/job-queue-plugin/bull-mqjob-queue-plugin.md
  51. 1 1
      docs/docs/reference/core-plugins/job-queue-plugin/bull-mqjob-queue-strategy.md
  52. 2 2
      docs/docs/reference/core-plugins/job-queue-plugin/bull-mqplugin-options.md
  53. 0 0
      docs/docs/reference/core-plugins/job-queue-plugin/index.md
  54. 2 2
      docs/docs/reference/core-plugins/payments-plugin/braintree-plugin.md
  55. 0 0
      docs/docs/reference/core-plugins/payments-plugin/index.md
  56. 2 2
      docs/docs/reference/core-plugins/payments-plugin/mollie-plugin.md
  57. 2 2
      docs/docs/reference/core-plugins/payments-plugin/stripe-plugin.md
  58. 4 0
      docs/docs/reference/index.mdx
  59. 3 2
      docs/docs/reference/typescript-api/auth/session-cache-strategy.md
  60. 0 11
      docs/docs/reference/typescript-api/core-plugins/_index.md
  61. 0 47
      docs/docs/reference/typescript-api/core-plugins/admin-ui-plugin/admin-ui-app-config.md
  62. 0 51
      docs/docs/reference/typescript-api/core-plugins/admin-ui-plugin/admin-ui-app-dev-mode-config.md
  63. 0 136
      docs/docs/reference/typescript-api/core-plugins/admin-ui-plugin/admin-ui-config.md
  64. 0 130
      docs/docs/reference/typescript-api/core-plugins/default-search-plugin/default-search-plugin-init-options.md
  65. 0 68
      docs/docs/reference/typescript-api/core-plugins/default-search-plugin/index.md
  66. 0 11
      docs/docs/reference/typescript-api/core-plugins/job-queue-plugin/_index.md
  67. 0 11
      docs/docs/reference/typescript-api/core-plugins/payments-plugin/_index.md
  68. 33 33
      docs/docs/reference/typescript-api/import-export/import-parser.md
  69. 1 1
      docs/docs/reference/typescript-api/job-queue/in-memory-job-buffer-storage-strategy.md
  70. 2 1
      docs/docs/reference/typescript-api/orders/order-item-price-calculation-strategy.md
  71. 72 1
      docs/sidebars.js
  72. 9 0
      docs/src/css/custom.css
  73. 0 5
      docs/src/css/overrides.css
  74. 17 3
      docs/src/theme/DocSidebarItem/Link/index.js
  75. 13 0
      docs/src/theme/DocSidebarItem/Link/styles.module.css
  76. 3 3
      packages/common/src/shared-types.ts
  77. 1 1
      packages/core/src/plugin/default-search-plugin/default-search-plugin.ts
  78. 1 1
      packages/core/src/plugin/default-search-plugin/types.ts
  79. 30 13
      scripts/docs/generate-typescript-docs.ts
  80. 1 1
      scripts/docs/typescript-docs-renderer.ts

+ 1 - 1
docs/docs/guides/core-concepts/auth/index.md

@@ -449,7 +449,7 @@ vendureLoginButton.addEventListener('click', () => {
 });
 ```
 
-We also need to tell the Admin UI application about the custom login URL, since we have no need for the default "username/password" login form. This can be done by setting the [`loginUrl` property](/reference/typescript-api/core-plugins/admin-ui-plugin/admin-ui-config/#loginurl) in the AdminUiConfig:
+We also need to tell the Admin UI application about the custom login URL, since we have no need for the default "username/password" login form. This can be done by setting the [`loginUrl` property](/reference/core-plugins/admin-ui-plugin/admin-ui-config/#loginurl) in the AdminUiConfig:
 
 ```ts title="/src/vendure-config.ts"
 import { VendureConfig } from '@vendure/core';

+ 3 - 3
docs/docs/guides/core-concepts/images-assets/index.mdx

@@ -21,18 +21,18 @@ read the file from the storage location.
 
 ## AssetServerPlugin
 
-Vendure comes with the `@vendure/asset-server-plugin` package pre-installed. This provides the [`AssetServerPlugin`](/reference/typescript-api/core-plugins/asset-server-plugin/) which provides many advanced features to make working with
+Vendure comes with the `@vendure/asset-server-plugin` package pre-installed. This provides the [`AssetServerPlugin`](/reference/core-plugins/asset-server-plugin/) which provides many advanced features to make working with
 assets easier.
 
 The plugin provides a ready-made set of strategies for handling assets, but also allows you to replace these defaults with
 your own implementations. For example, here are instructions on how to replace the default storage strategy with one
-that stores your assets on AWS S3 or Minio: [configure S3 asset storage](/reference/typescript-api/core-plugins/asset-server-plugin/s3asset-storage-strategy#configures3assetstorage)
+that stores your assets on AWS S3 or Minio: [configure S3 asset storage](/reference/core-plugins/asset-server-plugin/s3asset-storage-strategy#configures3assetstorage)
 
 It also features a powerful image transformation API, which allows you to specify the dimensions, crop, and image format
 using query parameters.
 
 :::info
-See the [AssetServerPlugin docs](/reference/typescript-api/core-plugins/asset-server-plugin/) for a detailed description of all the features.
+See the [AssetServerPlugin docs](/reference/core-plugins/asset-server-plugin/) for a detailed description of all the features.
 :::
 
 ## Asset Tags

+ 0 - 13
docs/docs/guides/deployment/deployment.md

@@ -1,13 +0,0 @@
----
-title: "Deployment"
-weight: 2
-showtoc: false
----
- 
-# Deployment Guides
-
-This section contains guides for deploying a Vendure application to production.
-
-For a quick and simple deployment, we recommend following the [Deploying to Northflank guide]({{< relref "deploy-to-northflank" >}}).
-
-Community-contributed information about deploying to other platforms can be found in our [Deployment discussion category](https://github.com/vendure-ecommerce/vendure/discussions/categories/deployment).

+ 4 - 4
docs/docs/guides/deployment/production-configuration/index.md

@@ -20,9 +20,9 @@ const IS_DEV = process.env.APP_ENV === 'dev';
 
 The `APP_ENV` environment variable can then be set using the admin dashboard of your hosting provider:
 
-{{< figure src="./env-var-ui.webp" title="A typical UI for setting env vars" >}}
+![A typical UI for setting env vars](./env-var-ui.webp)
 
-If you are using [Docker or Kubernetes]({{< relref "using-docker" >}}), they include their own methods of setting environment variables.
+If you are using [Docker or Kubernetes](/guides/deployment/using-docker), they include their own methods of setting environment variables.
 
 ## Superadmin credentials
 
@@ -45,7 +45,7 @@ export const config: VendureConfig = {
 
 ## API hardening
 
-It is recommended that you install and configure the [HardenPlugin]({{< relref "/reference/typescript-api/core-plugins/harden-plugin" >}}) for all production deployments. This plugin locks down your schema (disabling introspection and field suggestions) and protects your Shop API against malicious queries that could otherwise overwhelm your server.
+It is recommended that you install and configure the [HardenPlugin]({{< relref "/reference/core-plugins/harden-plugin" >}}) for all production deployments. This plugin locks down your schema (disabling introspection and field suggestions) and protects your Shop API against malicious queries that could otherwise overwhelm your server.
 
 Install the plugin: 
 
@@ -78,7 +78,7 @@ export const config: VendureConfig = {
 ```
 
 {{< alert primary >}}
-For a detailed explanation of how to best configure this plugin, see the [HardenPlugin docs]({{< relref "/reference/typescript-api/core-plugins/harden-plugin" >}}).
+For a detailed explanation of how to best configure this plugin, see the [HardenPlugin docs]({{< relref "/reference/core-plugins/harden-plugin" >}}).
 {{< /alert >}}
 
 ## ID Strategy

+ 1 - 1
docs/docs/guides/developer-guide/custom-fields/index.md

@@ -40,7 +40,7 @@ With the example config above, the following will occur:
 
 1. The database schema will be altered, and a column will be added for each custom field. **Note: changes to custom fields require a database migration**. See the [Migrations guide](/TODO).
 2. The GraphQL APIs will be modified to add the custom fields to the `Product` and `User` types respectively.
-3. If you are using the [AdminUiPlugin](/reference/typescript-api/core-plugins/admin-ui-plugin/), the Admin UI detail pages will now contain form inputs to allow the custom field data to be added or edited, and the list view data tables will allow custom field columns to be added, sorted and filtered.
+3. If you are using the [AdminUiPlugin](/reference/core-plugins/admin-ui-plugin/), the Admin UI detail pages will now contain form inputs to allow the custom field data to be added or edited, and the list view data tables will allow custom field columns to be added, sorted and filtered.
 
 ![custom-fields-data-table.webp](custom-fields-data-table.webp)
 

+ 1 - 1
docs/docs/guides/developer-guide/plugins/index.mdx

@@ -26,7 +26,7 @@ This allows for a clean separation of concerns and makes it easy to add or remov
 ## Core Plugins
 
 Vendure provides a set of core plugins covering common functionality such as assets handling,
-email sending, and search. For documentation on these, see the [Core Plugins reference](/reference/typescript-api/core-plugins/).
+email sending, and search. For documentation on these, see the [Core Plugins reference](/reference/core-plugins/).
 
 ## Plugin basics
 

+ 1 - 1
docs/docs/guides/developer-guide/worker-job-queue/index.mdx

@@ -162,7 +162,7 @@ with many queues, performance may be impacted. This is because the `SqlJobQueueS
 new jobs in the database. Each queue will (by default) query the database every 200ms. So if there are 10 queues,
 this will result in a constant 50 queries/second.
 
-In this case it is recommended to try the [BullMQJobQueuePlugin](/reference/typescript-api/core-plugins/job-queue-plugin/bull-mqjob-queue-plugin/),
+In this case it is recommended to try the [BullMQJobQueuePlugin](/reference/core-plugins/job-queue-plugin/bull-mqjob-queue-plugin/),
 which uses an efficient push-based strategy built on Redis.
 
 ### Using Job Queues in a plugin

+ 3 - 3
docs/docs/guides/storefront/checkout-flow/index.mdx

@@ -379,15 +379,15 @@ Other payment integrations have specific setup instructions you must follow:
 
 ### Stripe
 
-Our [`StripePlugin docs`](/reference/typescript-api/core-plugins/payments-plugin/stripe-plugin/) describe how to set up your checkout to use Stripe.
+Our [`StripePlugin docs`](/reference/core-plugins/payments-plugin/stripe-plugin/) describe how to set up your checkout to use Stripe.
 
 ### Braintree
 
-Our [`BraintreePlugin` docs](/reference/typescript-api/core-plugins/payments-plugin/braintree-plugin/) describe how to set up your checkout to use Braintree.
+Our [`BraintreePlugin` docs](/reference/core-plugins/payments-plugin/braintree-plugin/) describe how to set up your checkout to use Braintree.
 
 ### Mollie
 
-Our [`MolliePlugin` docs](/reference/typescript-api/core-plugins/payments-plugin/mollie-plugin/) describe how to set up your checkout to use Mollie.
+Our [`MolliePlugin` docs](/reference/core-plugins/payments-plugin/mollie-plugin/) describe how to set up your checkout to use Mollie.
 
 ### Other payment providers
 

+ 1 - 1
docs/docs/guides/storefront/customer-accounts/index.mdx

@@ -220,7 +220,7 @@ Note that in the variables above, we did **not** specify a password, as this wil
 If a password _does_ get passed at this step, then it won't be needed at the verification step. This is a decision
 you can make based on the desired user experience of your storefront.
 
-Upon registration, the [EmailPlugin](/reference/typescript-api/core-plugins/email-plugin/) will generate an email to the
+Upon registration, the [EmailPlugin](/reference/core-plugins/email-plugin/) will generate an email to the
 customer containing a link to the verification page. In a default Vendure installation this is set in the vendure config file:
 
 ```ts title="src/vendure-config.ts"

+ 2 - 2
docs/docs/guides/storefront/listing-products/index.mdx

@@ -703,9 +703,9 @@ Here's a live example of faceted search. Try searching for terms like "shoe", "p
 ## Listing custom product data
 
 If you have defined custom fields on the `Product` or `ProductVariant` entity, you might want to include these in the
-search results. With the [`DefaultSearchPlugin`](/reference/typescript-api/core-plugins/default-search-plugin/) this is
+search results. With the [`DefaultSearchPlugin`](/reference/typescript-api/default-search-plugin/) this is
 not possible, as this plugin is designed to be a minimal and simple search implementation.
 
-Instead, you can use the [`ElasticsearchPlugin`](/reference/typescript-api/core-plugins/elasticsearch-plugin/) which
+Instead, you can use the [`ElasticsearchPlugin`](/reference/core-plugins/elasticsearch-plugin/) which
 provides advanced features which allow you to index custom data. The Elasticsearch plugin is designed as a drop-in
 replacement for the `DefaultSearchPlugin`, so you can simply swap out the plugins in your `vendure-config.ts` file.

+ 1 - 1
docs/docs/guides/storefront/product-detail/index.mdx

@@ -158,7 +158,7 @@ which makes use of the browser's `Intl` API to format the price according to the
 
 ## Displaying images
 
-If we are using the [`AssetServerPlugin`](/reference/typescript-api/core-plugins/asset-server-plugin/) to serve our product images (as is the default), then we can take advantage
+If we are using the [`AssetServerPlugin`](/reference/core-plugins/asset-server-plugin/) to serve our product images (as is the default), then we can take advantage
 of the dynamic image transformation abilities in order to display the product images in the correct size and in
 and optimized format such as WebP.
 

+ 1 - 1
docs/docs/reference/admin-ui-api/components/data-table2component.md

@@ -227,7 +227,7 @@ class DataTable2Component<T> implements AfterContentInit, OnChanges, OnDestroy {
 
 ### uiLanguage$
 
-<MemberInfo kind="property" type={`Observable&#60;<a href='/reference/typescript-api/common/language-code#languagecode'>LanguageCode</a>&#62;`}   />
+<MemberInfo kind="property" type={`Observable&#60;<a href='/reference/common/language-code#languagecode'>LanguageCode</a>&#62;`}   />
 
 
 ### constructor

+ 2 - 2
docs/docs/reference/admin-ui-api/custom-input-components/default-inputs.md

@@ -254,7 +254,7 @@ class CurrencyFormInputComponent implements FormInputComponent {
 
 ### currencyCode$
 
-<MemberInfo kind="property" type={`Observable&#60;<a href='/reference/typescript-api/common/currency-code#currencycode'>CurrencyCode</a>&#62;`}   />
+<MemberInfo kind="property" type={`Observable&#60;<a href='/reference/common/currency-code#currencycode'>CurrencyCode</a>&#62;`}   />
 
 
 ### config
@@ -818,7 +818,7 @@ class SelectFormInputComponent implements FormInputComponent, OnInit {
 
 ### uiLanguage$
 
-<MemberInfo kind="property" type={`Observable&#60;<a href='/reference/typescript-api/common/language-code#languagecode'>LanguageCode</a>&#62;`}   />
+<MemberInfo kind="property" type={`Observable&#60;<a href='/reference/common/language-code#languagecode'>LanguageCode</a>&#62;`}   />
 
 
 ### options

+ 1 - 1
docs/docs/reference/admin-ui-api/directives/if-permissions-directive.md

@@ -31,7 +31,7 @@ class IfPermissionsDirective extends IfDirectiveBase<Array<Permission[] | null>>
     constructor(_viewContainer: ViewContainerRef, templateRef: TemplateRef<any>, dataService: DataService, changeDetectorRef: ChangeDetectorRef)
 }
 ```
-* Extends: <code>IfDirectiveBase&#60;Array&#60;<a href='/reference/typescript-api/common/permission#permission'>Permission</a>[] | null&#62;&#62;</code>
+* Extends: <code>IfDirectiveBase&#60;Array&#60;<a href='/reference/common/permission#permission'>Permission</a>[] | null&#62;&#62;</code>
 
 
 

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

@@ -84,17 +84,17 @@ class BaseDetailComponent<Entity extends { id: string; updatedAt?: string }> imp
 
 ### availableLanguages$
 
-<MemberInfo kind="property" type={`Observable&#60;<a href='/reference/typescript-api/common/language-code#languagecode'>LanguageCode</a>[]&#62;`}   />
+<MemberInfo kind="property" type={`Observable&#60;<a href='/reference/common/language-code#languagecode'>LanguageCode</a>[]&#62;`}   />
 
 
 ### languageCode$
 
-<MemberInfo kind="property" type={`Observable&#60;<a href='/reference/typescript-api/common/language-code#languagecode'>LanguageCode</a>&#62;`}   />
+<MemberInfo kind="property" type={`Observable&#60;<a href='/reference/common/language-code#languagecode'>LanguageCode</a>&#62;`}   />
 
 
 ### languageCode
 
-<MemberInfo kind="property" type={`<a href='/reference/typescript-api/common/language-code#languagecode'>LanguageCode</a>`}   />
+<MemberInfo kind="property" type={`<a href='/reference/common/language-code#languagecode'>LanguageCode</a>`}   />
 
 
 ### isNew$
@@ -139,7 +139,7 @@ class BaseDetailComponent<Entity extends { id: string; updatedAt?: string }> imp
 
 ### setLanguage
 
-<MemberInfo kind="method" type={`(code: <a href='/reference/typescript-api/common/language-code#languagecode'>LanguageCode</a>) => `}   />
+<MemberInfo kind="method" type={`(code: <a href='/reference/common/language-code#languagecode'>LanguageCode</a>) => `}   />
 
 
 ### canDeactivate
@@ -149,7 +149,7 @@ class BaseDetailComponent<Entity extends { id: string; updatedAt?: string }> imp
 
 ### setFormValues
 
-<MemberInfo kind="method" type={`(entity: Entity, languageCode: <a href='/reference/typescript-api/common/language-code#languagecode'>LanguageCode</a>) => void`}   />
+<MemberInfo kind="method" type={`(entity: Entity, languageCode: <a href='/reference/common/language-code#languagecode'>LanguageCode</a>) => void`}   />
 
 
 ### setCustomFieldFormValues

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

@@ -48,12 +48,12 @@ class TypedBaseListComponent<T extends TypedDocumentNode<any, Vars>, Field exten
 
 ### availableLanguages$
 
-<MemberInfo kind="property" type={`Observable&#60;<a href='/reference/typescript-api/common/language-code#languagecode'>LanguageCode</a>[]&#62;`}   />
+<MemberInfo kind="property" type={`Observable&#60;<a href='/reference/common/language-code#languagecode'>LanguageCode</a>[]&#62;`}   />
 
 
 ### contentLanguage$
 
-<MemberInfo kind="property" type={`Observable&#60;<a href='/reference/typescript-api/common/language-code#languagecode'>LanguageCode</a>&#62;`}   />
+<MemberInfo kind="property" type={`Observable&#60;<a href='/reference/common/language-code#languagecode'>LanguageCode</a>&#62;`}   />
 
 
 ### dataService
@@ -98,7 +98,7 @@ class TypedBaseListComponent<T extends TypedDocumentNode<any, Vars>, Field exten
 
 ### setLanguage
 
-<MemberInfo kind="method" type={`(code: <a href='/reference/typescript-api/common/language-code#languagecode'>LanguageCode</a>) => `}   />
+<MemberInfo kind="method" type={`(code: <a href='/reference/common/language-code#languagecode'>LanguageCode</a>) => `}   />
 
 
 ### getCustomFieldConfig

+ 1 - 1
docs/docs/reference/admin-ui-api/ui-devkit/admin-ui-extension.md

@@ -176,7 +176,7 @@ interface TranslationExtension {
 
 ### translations
 
-<MemberInfo kind="property" type={`{ [languageCode in <a href='/reference/typescript-api/common/language-code#languagecode'>LanguageCode</a>]?: string }`}   />
+<MemberInfo kind="property" type={`{ [languageCode in <a href='/reference/common/language-code#languagecode'>LanguageCode</a>]?: string }`}   />
 
 Optional object defining any translation files for the Admin UI. The value should be an object with
 the key as a 2-character [ISO 639-1 language code](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes),

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

@@ -56,7 +56,7 @@ Allows the baseHref of the compiled Admin UI app to be set. This determines the
 of the app, for example with the default value of `'/admin/'`, the Admin UI app
 will be configured to be served from `http://<host>/admin/`.
 
-Note: if you are using this in conjunction with the <a href='/reference/typescript-api/core-plugins/admin-ui-plugin/#adminuiplugin'>AdminUiPlugin</a> then you should
+Note: if you are using this in conjunction with the <a href='/reference/core-plugins/admin-ui-plugin/#adminuiplugin'>AdminUiPlugin</a> then you should
 also set the `route` option to match this value.
 
 *Example*

+ 178 - 0
docs/docs/reference/common/currency-code.md

@@ -0,0 +1,178 @@
+---
+title: "CurrencyCode"
+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';
+
+
+## CurrencyCode
+
+<GenerationInfo sourceFile="packages/payments-plugin/src/mollie/graphql/generated-shop-types.ts" sourceLine="397" packageName="@vendure/payments-plugin" />
+
+ISO 4217 currency code
+
+```ts title="Signature"
+enum CurrencyCode {
+    AED = 'AED'
+    AFN = 'AFN'
+    ALL = 'ALL'
+    AMD = 'AMD'
+    ANG = 'ANG'
+    AOA = 'AOA'
+    ARS = 'ARS'
+    AUD = 'AUD'
+    AWG = 'AWG'
+    AZN = 'AZN'
+    BAM = 'BAM'
+    BBD = 'BBD'
+    BDT = 'BDT'
+    BGN = 'BGN'
+    BHD = 'BHD'
+    BIF = 'BIF'
+    BMD = 'BMD'
+    BND = 'BND'
+    BOB = 'BOB'
+    BRL = 'BRL'
+    BSD = 'BSD'
+    BTN = 'BTN'
+    BWP = 'BWP'
+    BYN = 'BYN'
+    BZD = 'BZD'
+    CAD = 'CAD'
+    CDF = 'CDF'
+    CHF = 'CHF'
+    CLP = 'CLP'
+    CNY = 'CNY'
+    COP = 'COP'
+    CRC = 'CRC'
+    CUC = 'CUC'
+    CUP = 'CUP'
+    CVE = 'CVE'
+    CZK = 'CZK'
+    DJF = 'DJF'
+    DKK = 'DKK'
+    DOP = 'DOP'
+    DZD = 'DZD'
+    EGP = 'EGP'
+    ERN = 'ERN'
+    ETB = 'ETB'
+    EUR = 'EUR'
+    FJD = 'FJD'
+    FKP = 'FKP'
+    GBP = 'GBP'
+    GEL = 'GEL'
+    GHS = 'GHS'
+    GIP = 'GIP'
+    GMD = 'GMD'
+    GNF = 'GNF'
+    GTQ = 'GTQ'
+    GYD = 'GYD'
+    HKD = 'HKD'
+    HNL = 'HNL'
+    HRK = 'HRK'
+    HTG = 'HTG'
+    HUF = 'HUF'
+    IDR = 'IDR'
+    ILS = 'ILS'
+    INR = 'INR'
+    IQD = 'IQD'
+    IRR = 'IRR'
+    ISK = 'ISK'
+    JMD = 'JMD'
+    JOD = 'JOD'
+    JPY = 'JPY'
+    KES = 'KES'
+    KGS = 'KGS'
+    KHR = 'KHR'
+    KMF = 'KMF'
+    KPW = 'KPW'
+    KRW = 'KRW'
+    KWD = 'KWD'
+    KYD = 'KYD'
+    KZT = 'KZT'
+    LAK = 'LAK'
+    LBP = 'LBP'
+    LKR = 'LKR'
+    LRD = 'LRD'
+    LSL = 'LSL'
+    LYD = 'LYD'
+    MAD = 'MAD'
+    MDL = 'MDL'
+    MGA = 'MGA'
+    MKD = 'MKD'
+    MMK = 'MMK'
+    MNT = 'MNT'
+    MOP = 'MOP'
+    MRU = 'MRU'
+    MUR = 'MUR'
+    MVR = 'MVR'
+    MWK = 'MWK'
+    MXN = 'MXN'
+    MYR = 'MYR'
+    MZN = 'MZN'
+    NAD = 'NAD'
+    NGN = 'NGN'
+    NIO = 'NIO'
+    NOK = 'NOK'
+    NPR = 'NPR'
+    NZD = 'NZD'
+    OMR = 'OMR'
+    PAB = 'PAB'
+    PEN = 'PEN'
+    PGK = 'PGK'
+    PHP = 'PHP'
+    PKR = 'PKR'
+    PLN = 'PLN'
+    PYG = 'PYG'
+    QAR = 'QAR'
+    RON = 'RON'
+    RSD = 'RSD'
+    RUB = 'RUB'
+    RWF = 'RWF'
+    SAR = 'SAR'
+    SBD = 'SBD'
+    SCR = 'SCR'
+    SDG = 'SDG'
+    SEK = 'SEK'
+    SGD = 'SGD'
+    SHP = 'SHP'
+    SLL = 'SLL'
+    SOS = 'SOS'
+    SRD = 'SRD'
+    SSP = 'SSP'
+    STN = 'STN'
+    SVC = 'SVC'
+    SYP = 'SYP'
+    SZL = 'SZL'
+    THB = 'THB'
+    TJS = 'TJS'
+    TMT = 'TMT'
+    TND = 'TND'
+    TOP = 'TOP'
+    TRY = 'TRY'
+    TTD = 'TTD'
+    TWD = 'TWD'
+    TZS = 'TZS'
+    UAH = 'UAH'
+    UGX = 'UGX'
+    USD = 'USD'
+    UYU = 'UYU'
+    UZS = 'UZS'
+    VES = 'VES'
+    VND = 'VND'
+    VUV = 'VUV'
+    WST = 'WST'
+    XAF = 'XAF'
+    XCD = 'XCD'
+    XOF = 'XOF'
+    XPF = 'XPF'
+    YER = 'YER'
+    ZAR = 'ZAR'
+    ZMW = 'ZMW'
+    ZWL = 'ZWL'
+}
+```

+ 14 - 0
docs/docs/reference/common/index.md

@@ -0,0 +1,14 @@
+---
+title: "Common"
+isDefaultIndex: true
+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';
+
+
+import DocCardList from '@theme/DocCardList';
+
+<DocCardList />

+ 181 - 0
docs/docs/reference/common/language-code.md

@@ -0,0 +1,181 @@
+---
+title: "LanguageCode"
+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';
+
+
+## LanguageCode
+
+<GenerationInfo sourceFile="packages/payments-plugin/src/mollie/graphql/generated-shop-types.ts" sourceLine="1248" packageName="@vendure/payments-plugin" />
+
+Languages in the form of a ISO 639-1 language code with optional
+region or script modifier (e.g. de_AT). The selection available is based
+on the [Unicode CLDR summary list](https://unicode-org.github.io/cldr-staging/charts/37/summary/root.html)
+and includes the major spoken languages of the world and any widely-used variants.
+
+```ts title="Signature"
+enum LanguageCode {
+    af = 'af'
+    ak = 'ak'
+    am = 'am'
+    ar = 'ar'
+    as = 'as'
+    az = 'az'
+    be = 'be'
+    bg = 'bg'
+    bm = 'bm'
+    bn = 'bn'
+    bo = 'bo'
+    br = 'br'
+    bs = 'bs'
+    ca = 'ca'
+    ce = 'ce'
+    co = 'co'
+    cs = 'cs'
+    cu = 'cu'
+    cy = 'cy'
+    da = 'da'
+    de = 'de'
+    de_AT = 'de_AT'
+    de_CH = 'de_CH'
+    dz = 'dz'
+    ee = 'ee'
+    el = 'el'
+    en = 'en'
+    en_AU = 'en_AU'
+    en_CA = 'en_CA'
+    en_GB = 'en_GB'
+    en_US = 'en_US'
+    eo = 'eo'
+    es = 'es'
+    es_ES = 'es_ES'
+    es_MX = 'es_MX'
+    et = 'et'
+    eu = 'eu'
+    fa = 'fa'
+    fa_AF = 'fa_AF'
+    ff = 'ff'
+    fi = 'fi'
+    fo = 'fo'
+    fr = 'fr'
+    fr_CA = 'fr_CA'
+    fr_CH = 'fr_CH'
+    fy = 'fy'
+    ga = 'ga'
+    gd = 'gd'
+    gl = 'gl'
+    gu = 'gu'
+    gv = 'gv'
+    ha = 'ha'
+    he = 'he'
+    hi = 'hi'
+    hr = 'hr'
+    ht = 'ht'
+    hu = 'hu'
+    hy = 'hy'
+    ia = 'ia'
+    id = 'id'
+    ig = 'ig'
+    ii = 'ii'
+    is = 'is'
+    it = 'it'
+    ja = 'ja'
+    jv = 'jv'
+    ka = 'ka'
+    ki = 'ki'
+    kk = 'kk'
+    kl = 'kl'
+    km = 'km'
+    kn = 'kn'
+    ko = 'ko'
+    ks = 'ks'
+    ku = 'ku'
+    kw = 'kw'
+    ky = 'ky'
+    la = 'la'
+    lb = 'lb'
+    lg = 'lg'
+    ln = 'ln'
+    lo = 'lo'
+    lt = 'lt'
+    lu = 'lu'
+    lv = 'lv'
+    mg = 'mg'
+    mi = 'mi'
+    mk = 'mk'
+    ml = 'ml'
+    mn = 'mn'
+    mr = 'mr'
+    ms = 'ms'
+    mt = 'mt'
+    my = 'my'
+    nb = 'nb'
+    nd = 'nd'
+    ne = 'ne'
+    nl = 'nl'
+    nl_BE = 'nl_BE'
+    nn = 'nn'
+    ny = 'ny'
+    om = 'om'
+    or = 'or'
+    os = 'os'
+    pa = 'pa'
+    pl = 'pl'
+    ps = 'ps'
+    pt = 'pt'
+    pt_BR = 'pt_BR'
+    pt_PT = 'pt_PT'
+    qu = 'qu'
+    rm = 'rm'
+    rn = 'rn'
+    ro = 'ro'
+    ro_MD = 'ro_MD'
+    ru = 'ru'
+    rw = 'rw'
+    sa = 'sa'
+    sd = 'sd'
+    se = 'se'
+    sg = 'sg'
+    si = 'si'
+    sk = 'sk'
+    sl = 'sl'
+    sm = 'sm'
+    sn = 'sn'
+    so = 'so'
+    sq = 'sq'
+    sr = 'sr'
+    st = 'st'
+    su = 'su'
+    sv = 'sv'
+    sw = 'sw'
+    sw_CD = 'sw_CD'
+    ta = 'ta'
+    te = 'te'
+    tg = 'tg'
+    th = 'th'
+    ti = 'ti'
+    tk = 'tk'
+    to = 'to'
+    tr = 'tr'
+    tt = 'tt'
+    ug = 'ug'
+    uk = 'uk'
+    ur = 'ur'
+    uz = 'uz'
+    vi = 'vi'
+    vo = 'vo'
+    wo = 'wo'
+    xh = 'xh'
+    yi = 'yi'
+    yo = 'yo'
+    zh = 'zh'
+    zh_Hans = 'zh_Hans'
+    zh_Hant = 'zh_Hant'
+    zu = 'zu'
+}
+```

+ 140 - 0
docs/docs/reference/common/permission.md

@@ -0,0 +1,140 @@
+---
+title: "Permission"
+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';
+
+
+## Permission
+
+<GenerationInfo sourceFile="packages/payments-plugin/src/mollie/graphql/generated-shop-types.ts" sourceLine="2336" packageName="@vendure/payments-plugin" />
+
+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.
+
+## Understanding Permission.Owner
+
+`Permission.Owner` is a special permission which is used in some Vendure resolvers to indicate that that resolver should only
+be accessible to the "owner" of that resource.
+
+For example, the Shop API `activeCustomer` query resolver should only return the Customer object for the "owner" of that Customer, i.e.
+based on the activeUserId of the current session. As a result, the resolver code looks like this:
+
+*Example*
+
+```ts
+@Query()
+@Allow(Permission.Owner)
+async activeCustomer(@Ctx() ctx: RequestContext): Promise<Customer | undefined> {
+  const userId = ctx.activeUserId;
+  if (userId) {
+    return this.customerService.findOneByUserId(ctx, userId);
+  }
+}
+```
+
+Here we can see that the "ownership" must be enforced by custom logic inside the resolver. Since "ownership" cannot be defined generally
+nor statically encoded at build-time, any resolvers using `Permission.Owner` **must** include logic to enforce that only the owner
+of the resource has access. If not, then it is the equivalent of using `Permission.Public`.
+
+```ts title="Signature"
+enum Permission {
+    Authenticated = 'Authenticated'
+    CreateAdministrator = 'CreateAdministrator'
+    CreateAsset = 'CreateAsset'
+    CreateCatalog = 'CreateCatalog'
+    CreateChannel = 'CreateChannel'
+    CreateCollection = 'CreateCollection'
+    CreateCountry = 'CreateCountry'
+    CreateCustomer = 'CreateCustomer'
+    CreateCustomerGroup = 'CreateCustomerGroup'
+    CreateFacet = 'CreateFacet'
+    CreateOrder = 'CreateOrder'
+    CreatePaymentMethod = 'CreatePaymentMethod'
+    CreateProduct = 'CreateProduct'
+    CreatePromotion = 'CreatePromotion'
+    CreateSeller = 'CreateSeller'
+    CreateSettings = 'CreateSettings'
+    CreateShippingMethod = 'CreateShippingMethod'
+    CreateStockLocation = 'CreateStockLocation'
+    CreateSystem = 'CreateSystem'
+    CreateTag = 'CreateTag'
+    CreateTaxCategory = 'CreateTaxCategory'
+    CreateTaxRate = 'CreateTaxRate'
+    CreateZone = 'CreateZone'
+    DeleteAdministrator = 'DeleteAdministrator'
+    DeleteAsset = 'DeleteAsset'
+    DeleteCatalog = 'DeleteCatalog'
+    DeleteChannel = 'DeleteChannel'
+    DeleteCollection = 'DeleteCollection'
+    DeleteCountry = 'DeleteCountry'
+    DeleteCustomer = 'DeleteCustomer'
+    DeleteCustomerGroup = 'DeleteCustomerGroup'
+    DeleteFacet = 'DeleteFacet'
+    DeleteOrder = 'DeleteOrder'
+    DeletePaymentMethod = 'DeletePaymentMethod'
+    DeleteProduct = 'DeleteProduct'
+    DeletePromotion = 'DeletePromotion'
+    DeleteSeller = 'DeleteSeller'
+    DeleteSettings = 'DeleteSettings'
+    DeleteShippingMethod = 'DeleteShippingMethod'
+    DeleteStockLocation = 'DeleteStockLocation'
+    DeleteSystem = 'DeleteSystem'
+    DeleteTag = 'DeleteTag'
+    DeleteTaxCategory = 'DeleteTaxCategory'
+    DeleteTaxRate = 'DeleteTaxRate'
+    DeleteZone = 'DeleteZone'
+    Owner = 'Owner'
+    Public = 'Public'
+    ReadAdministrator = 'ReadAdministrator'
+    ReadAsset = 'ReadAsset'
+    ReadCatalog = 'ReadCatalog'
+    ReadChannel = 'ReadChannel'
+    ReadCollection = 'ReadCollection'
+    ReadCountry = 'ReadCountry'
+    ReadCustomer = 'ReadCustomer'
+    ReadCustomerGroup = 'ReadCustomerGroup'
+    ReadFacet = 'ReadFacet'
+    ReadOrder = 'ReadOrder'
+    ReadPaymentMethod = 'ReadPaymentMethod'
+    ReadProduct = 'ReadProduct'
+    ReadPromotion = 'ReadPromotion'
+    ReadSeller = 'ReadSeller'
+    ReadSettings = 'ReadSettings'
+    ReadShippingMethod = 'ReadShippingMethod'
+    ReadStockLocation = 'ReadStockLocation'
+    ReadSystem = 'ReadSystem'
+    ReadTag = 'ReadTag'
+    ReadTaxCategory = 'ReadTaxCategory'
+    ReadTaxRate = 'ReadTaxRate'
+    ReadZone = 'ReadZone'
+    SuperAdmin = 'SuperAdmin'
+    UpdateAdministrator = 'UpdateAdministrator'
+    UpdateAsset = 'UpdateAsset'
+    UpdateCatalog = 'UpdateCatalog'
+    UpdateChannel = 'UpdateChannel'
+    UpdateCollection = 'UpdateCollection'
+    UpdateCountry = 'UpdateCountry'
+    UpdateCustomer = 'UpdateCustomer'
+    UpdateCustomerGroup = 'UpdateCustomerGroup'
+    UpdateFacet = 'UpdateFacet'
+    UpdateGlobalSettings = 'UpdateGlobalSettings'
+    UpdateOrder = 'UpdateOrder'
+    UpdatePaymentMethod = 'UpdatePaymentMethod'
+    UpdateProduct = 'UpdateProduct'
+    UpdatePromotion = 'UpdatePromotion'
+    UpdateSeller = 'UpdateSeller'
+    UpdateSettings = 'UpdateSettings'
+    UpdateShippingMethod = 'UpdateShippingMethod'
+    UpdateStockLocation = 'UpdateStockLocation'
+    UpdateSystem = 'UpdateSystem'
+    UpdateTag = 'UpdateTag'
+    UpdateTaxCategory = 'UpdateTaxCategory'
+    UpdateTaxRate = 'UpdateTaxRate'
+    UpdateZone = 'UpdateZone'
+}
+```

+ 3 - 3
docs/docs/reference/typescript-api/core-plugins/admin-ui-plugin/admin-ui-plugin-options.md → docs/docs/reference/core-plugins/admin-ui-plugin/admin-ui-plugin-options.md

@@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
 
 <GenerationInfo sourceFile="packages/admin-ui-plugin/src/plugin.ts" sourceLine="39" packageName="@vendure/admin-ui-plugin" />
 
-Configuration options for the <a href='/reference/typescript-api/core-plugins/admin-ui-plugin/#adminuiplugin'>AdminUiPlugin</a>.
+Configuration options for the <a href='/reference/core-plugins/admin-ui-plugin/#adminuiplugin'>AdminUiPlugin</a>.
 
 ```ts title="Signature"
 interface AdminUiPluginOptions {
@@ -49,14 +49,14 @@ the Vendure server is running on.
 The hostname of the server serving the static admin ui files.
 ### app
 
-<MemberInfo kind="property" type={`<a href='/reference/typescript-api/core-plugins/admin-ui-plugin/admin-ui-app-config#adminuiappconfig'>AdminUiAppConfig</a> | <a href='/reference/typescript-api/core-plugins/admin-ui-plugin/admin-ui-app-dev-mode-config#adminuiappdevmodeconfig'>AdminUiAppDevModeConfig</a>`}   />
+<MemberInfo kind="property" type={`<a href='/reference/typescript-api/common/admin-ui/admin-ui-app-config#adminuiappconfig'>AdminUiAppConfig</a> | <a href='/reference/typescript-api/common/admin-ui/admin-ui-app-dev-mode-config#adminuiappdevmodeconfig'>AdminUiAppDevModeConfig</a>`}   />
 
 By default, the AdminUiPlugin comes bundles with a pre-built version of the
 Admin UI. This option can be used to override this default build with a different
 version, e.g. one pre-compiled with one or more ui extensions.
 ### adminUiConfig
 
-<MemberInfo kind="property" type={`Partial&#60;<a href='/reference/typescript-api/core-plugins/admin-ui-plugin/admin-ui-config#adminuiconfig'>AdminUiConfig</a>&#62;`}   />
+<MemberInfo kind="property" type={`Partial&#60;<a href='/reference/typescript-api/common/admin-ui/admin-ui-config#adminuiconfig'>AdminUiConfig</a>&#62;`}   />
 
 Allows the contents of the `vendure-ui-config.json` file to be set, e.g.
 for specifying the Vendure GraphQL API host, available UI languages, etc.

+ 1 - 1
docs/docs/reference/typescript-api/core-plugins/admin-ui-plugin/index.md → docs/docs/reference/core-plugins/admin-ui-plugin/index.md

@@ -79,7 +79,7 @@ class AdminUiPlugin implements NestModule {
 
 ### init
 
-<MemberInfo kind="method" type={`(options: <a href='/reference/typescript-api/core-plugins/admin-ui-plugin/admin-ui-plugin-options#adminuipluginoptions'>AdminUiPluginOptions</a>) => Type&#60;<a href='/reference/typescript-api/core-plugins/admin-ui-plugin/#adminuiplugin'>AdminUiPlugin</a>&#62;`}   />
+<MemberInfo kind="method" type={`(options: <a href='/reference/core-plugins/admin-ui-plugin/admin-ui-plugin-options#adminuipluginoptions'>AdminUiPluginOptions</a>) => Type&#60;<a href='/reference/core-plugins/admin-ui-plugin/#adminuiplugin'>AdminUiPlugin</a>&#62;`}   />
 
 Set the plugin options
 ### configure

+ 8 - 8
docs/docs/reference/typescript-api/core-plugins/asset-server-plugin/asset-server-options.md → docs/docs/reference/core-plugins/asset-server-plugin/asset-server-options.md

@@ -43,7 +43,7 @@ The route to the asset server.
 
 <MemberInfo kind="property" type={`string`}   />
 
-The local directory to which assets will be uploaded when using the <a href='/reference/typescript-api/core-plugins/asset-server-plugin/local-asset-storage-strategy#localassetstoragestrategy'>LocalAssetStorageStrategy</a>.
+The local directory to which assets will be uploaded when using the <a href='/reference/core-plugins/asset-server-plugin/local-asset-storage-strategy#localassetstoragestrategy'>LocalAssetStorageStrategy</a>.
 ### assetUrlPrefix
 
 <MemberInfo kind="property" type={`string | ((ctx: <a href='/reference/typescript-api/request/request-context#requestcontext'>RequestContext</a>, identifier: string) =&#62; string)`}   />
@@ -67,12 +67,12 @@ The max width in pixels of a generated preview image.
 The max height in pixels of a generated preview image.
 ### presets
 
-<MemberInfo kind="property" type={`<a href='/reference/typescript-api/core-plugins/asset-server-plugin/image-transform-preset#imagetransformpreset'>ImageTransformPreset</a>[]`}   />
+<MemberInfo kind="property" type={`<a href='/reference/core-plugins/asset-server-plugin/image-transform-preset#imagetransformpreset'>ImageTransformPreset</a>[]`}   />
 
-An array of additional <a href='/reference/typescript-api/core-plugins/asset-server-plugin/image-transform-preset#imagetransformpreset'>ImageTransformPreset</a> objects.
+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/typescript-api/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
@@ -80,16 +80,16 @@ Defines how asset files and preview images are named before being saved.
 <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
-the <a href='/reference/typescript-api/core-plugins/asset-server-plugin/sharp-asset-preview-strategy#sharpassetpreviewstrategy'>SharpAssetPreviewStrategy</a>
+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/typescript-api/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/typescript-api/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
-using a cloud storage provider. By default, the <a href='/reference/typescript-api/core-plugins/asset-server-plugin/local-asset-storage-strategy#localassetstoragestrategy'>LocalAssetStorageStrategy</a> is used.
+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/typescript-api/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).
 Defaults to publicly cached for 6 months.

+ 0 - 0
docs/docs/reference/typescript-api/core-plugins/asset-server-plugin/cache-config.md → docs/docs/reference/core-plugins/asset-server-plugin/cache-config.md


+ 0 - 0
docs/docs/reference/typescript-api/core-plugins/asset-server-plugin/hashed-asset-naming-strategy.md → docs/docs/reference/core-plugins/asset-server-plugin/hashed-asset-naming-strategy.md


+ 0 - 0
docs/docs/reference/typescript-api/core-plugins/asset-server-plugin/image-transform-mode.md → docs/docs/reference/core-plugins/asset-server-plugin/image-transform-mode.md


+ 1 - 1
docs/docs/reference/typescript-api/core-plugins/asset-server-plugin/image-transform-preset.md → docs/docs/reference/core-plugins/asset-server-plugin/image-transform-preset.md

@@ -53,7 +53,7 @@ interface ImageTransformPreset {
 
 ### mode
 
-<MemberInfo kind="property" type={`<a href='/reference/typescript-api/core-plugins/asset-server-plugin/image-transform-mode#imagetransformmode'>ImageTransformMode</a>`}   />
+<MemberInfo kind="property" type={`<a href='/reference/core-plugins/asset-server-plugin/image-transform-mode#imagetransformmode'>ImageTransformMode</a>`}   />
 
 
 

+ 2 - 2
docs/docs/reference/typescript-api/core-plugins/asset-server-plugin/index.md → docs/docs/reference/core-plugins/asset-server-plugin/index.md

@@ -14,7 +14,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
 <GenerationInfo sourceFile="packages/asset-server-plugin/src/plugin.ts" sourceLine="139" packageName="@vendure/asset-server-plugin" />
 
 The `AssetServerPlugin` serves assets (images and other files) from the local file system, and can also be configured to use
-other storage strategies (e.g. <a href='/reference/typescript-api/core-plugins/asset-server-plugin/s3asset-storage-strategy#s3assetstoragestrategy'>S3AssetStorageStrategy</a>. It can also perform on-the-fly image transformations
+other storage strategies (e.g. <a href='/reference/core-plugins/asset-server-plugin/s3asset-storage-strategy#s3assetstoragestrategy'>S3AssetStorageStrategy</a>. It can also perform on-the-fly image transformations
 and caches the results for subsequent calls.
 
 ## Installation
@@ -138,7 +138,7 @@ class AssetServerPlugin implements NestModule, OnApplicationBootstrap {
 
 ### init
 
-<MemberInfo kind="method" type={`(options: <a href='/reference/typescript-api/core-plugins/asset-server-plugin/asset-server-options#assetserveroptions'>AssetServerOptions</a>) => Type&#60;<a href='/reference/typescript-api/core-plugins/asset-server-plugin/#assetserverplugin'>AssetServerPlugin</a>&#62;`}   />
+<MemberInfo kind="method" type={`(options: <a href='/reference/core-plugins/asset-server-plugin/asset-server-options#assetserveroptions'>AssetServerOptions</a>) => Type&#60;<a href='/reference/core-plugins/asset-server-plugin/#assetserverplugin'>AssetServerPlugin</a>&#62;`}   />
 
 Set the plugin options.
 ### constructor

+ 0 - 0
docs/docs/reference/typescript-api/core-plugins/asset-server-plugin/local-asset-storage-strategy.md → docs/docs/reference/core-plugins/asset-server-plugin/local-asset-storage-strategy.md


+ 6 - 5
docs/docs/reference/typescript-api/core-plugins/asset-server-plugin/s3asset-storage-strategy.md → docs/docs/reference/core-plugins/asset-server-plugin/s3asset-storage-strategy.md

@@ -23,11 +23,11 @@ Before using this strategy, make sure you have the `@aws-sdk/client-s3` and `@aw
 npm install @aws-sdk/client-s3 @aws-sdk/lib-storage
 ```
 
-**Note:** Rather than instantiating this manually, use the <a href='/reference/typescript-api/core-plugins/asset-server-plugin/s3asset-storage-strategy#configures3assetstorage'>configureS3AssetStorage</a> function.
+**Note:** Rather than instantiating this manually, use the <a href='/reference/core-plugins/asset-server-plugin/s3asset-storage-strategy#configures3assetstorage'>configureS3AssetStorage</a> function.
 
 ## Use with S3-compatible services (MinIO)
 This strategy will also work with any S3-compatible object storage solutions, such as [MinIO](https://min.io/).
-See the <a href='/reference/typescript-api/core-plugins/asset-server-plugin/s3asset-storage-strategy#configures3assetstorage'>configureS3AssetStorage</a> for an example with MinIO.
+See the <a href='/reference/core-plugins/asset-server-plugin/s3asset-storage-strategy#configures3assetstorage'>configureS3AssetStorage</a> for an example with MinIO.
 
 ```ts title="Signature"
 class S3AssetStorageStrategy implements AssetStorageStrategy {
@@ -50,7 +50,7 @@ class S3AssetStorageStrategy implements AssetStorageStrategy {
 
 ### constructor
 
-<MemberInfo kind="method" type={`(s3Config: <a href='/reference/typescript-api/core-plugins/asset-server-plugin/s3asset-storage-strategy#s3config'>S3Config</a>, toAbsoluteUrl: (request: Request, identifier: string) =&#62; string) => S3AssetStorageStrategy`}   />
+<MemberInfo kind="method" type={`(s3Config: <a href='/reference/core-plugins/asset-server-plugin/s3asset-storage-strategy#s3config'>S3Config</a>, toAbsoluteUrl: (request: Request, identifier: string) =&#62; string) => S3AssetStorageStrategy`}   />
 
 
 ### init
@@ -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/typescript-api/core-plugins/asset-server-plugin/s3asset-storage-strategy#s3assetstoragestrategy'>S3AssetStorageStrategy</a> which can then be passed to the <a href='/reference/typescript-api/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:
 
@@ -225,5 +226,5 @@ Parameters
 
 ### s3Config
 
-<MemberInfo kind="parameter" type={`<a href='/reference/typescript-api/core-plugins/asset-server-plugin/s3asset-storage-strategy#s3config'>S3Config</a>`} />
+<MemberInfo kind="parameter" type={`<a href='/reference/core-plugins/asset-server-plugin/s3asset-storage-strategy#s3config'>S3Config</a>`} />
 

+ 1 - 1
docs/docs/reference/typescript-api/core-plugins/asset-server-plugin/sharp-asset-preview-strategy.md → docs/docs/reference/core-plugins/asset-server-plugin/sharp-asset-preview-strategy.md

@@ -47,7 +47,7 @@ class SharpAssetPreviewStrategy implements AssetPreviewStrategy {
 
 ### constructor
 
-<MemberInfo kind="method" type={`(config?: <a href='/reference/typescript-api/core-plugins/asset-server-plugin/sharp-asset-preview-strategy#sharpassetpreviewconfig'>SharpAssetPreviewConfig</a>) => SharpAssetPreviewStrategy`}   />
+<MemberInfo kind="method" type={`(config?: <a href='/reference/core-plugins/asset-server-plugin/sharp-asset-preview-strategy#sharpassetpreviewconfig'>SharpAssetPreviewConfig</a>) => SharpAssetPreviewStrategy`}   />
 
 
 ### generatePreviewImage

+ 4 - 4
docs/docs/reference/typescript-api/core-plugins/elasticsearch-plugin/elasticsearch-options.md → docs/docs/reference/core-plugins/elasticsearch-plugin/elasticsearch-options.md

@@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
 
 <GenerationInfo sourceFile="packages/elasticsearch-plugin/src/options.ts" sourceLine="22" packageName="@vendure/elasticsearch-plugin" />
 
-Configuration options for the <a href='/reference/typescript-api/core-plugins/elasticsearch-plugin/#elasticsearchplugin'>ElasticsearchPlugin</a>.
+Configuration options for the <a href='/reference/core-plugins/elasticsearch-plugin/#elasticsearchplugin'>ElasticsearchPlugin</a>.
 
 ```ts title="Signature"
 interface ElasticsearchOptions {
@@ -164,7 +164,7 @@ indexMappingProperties: {
 Batch size for bulk operations (e.g. when rebuilding the indices).
 ### searchConfig
 
-<MemberInfo kind="property" type={`<a href='/reference/typescript-api/core-plugins/elasticsearch-plugin/elasticsearch-options#searchconfig'>SearchConfig</a>`}   />
+<MemberInfo kind="property" type={`<a href='/reference/core-plugins/elasticsearch-plugin/elasticsearch-options#searchconfig'>SearchConfig</a>`}   />
 
 Configuration of the internal Elasticsearch query.
 ### customProductMappings
@@ -420,7 +420,7 @@ Defines the
 used when matching against a search term.
 ### boostFields
 
-<MemberInfo kind="property" type={`<a href='/reference/typescript-api/core-plugins/elasticsearch-plugin/elasticsearch-options#boostfieldsconfig'>BoostFieldsConfig</a>`}   />
+<MemberInfo kind="property" type={`<a href='/reference/core-plugins/elasticsearch-plugin/elasticsearch-options#boostfieldsconfig'>BoostFieldsConfig</a>`}   />
 
 Set custom boost values for particular fields when matching against a search term.
 ### priceRangeBucketInterval
@@ -461,7 +461,7 @@ The interval used to group search results into buckets according to price range.
 ```
 ### mapQuery
 
-<MemberInfo kind="property" type={`(
         query: any,
         input: ElasticSearchInput,
         searchConfig: DeepRequired&#60;<a href='/reference/typescript-api/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
 for e.g. wildcard / fuzzy searches on the index.

+ 2 - 2
docs/docs/reference/typescript-api/core-plugins/elasticsearch-plugin/index.md → docs/docs/reference/core-plugins/elasticsearch-plugin/index.md

@@ -31,7 +31,7 @@ or
 
 Make sure to remove the `DefaultSearchPlugin` if it is still in the VendureConfig plugins array.
 
-Then add the `ElasticsearchPlugin`, calling the `.init()` method with <a href='/reference/typescript-api/core-plugins/elasticsearch-plugin/elasticsearch-options#elasticsearchoptions'>ElasticsearchOptions</a>:
+Then add the `ElasticsearchPlugin`, calling the `.init()` method with <a href='/reference/core-plugins/elasticsearch-plugin/elasticsearch-options#elasticsearchoptions'>ElasticsearchOptions</a>:
 
 *Example*
 
@@ -187,7 +187,7 @@ class ElasticsearchPlugin implements OnApplicationBootstrap {
 
 ### init
 
-<MemberInfo kind="method" type={`(options: <a href='/reference/typescript-api/core-plugins/elasticsearch-plugin/elasticsearch-options#elasticsearchoptions'>ElasticsearchOptions</a>) => Type&#60;<a href='/reference/typescript-api/core-plugins/elasticsearch-plugin/#elasticsearchplugin'>ElasticsearchPlugin</a>&#62;`}   />
+<MemberInfo kind="method" type={`(options: <a href='/reference/core-plugins/elasticsearch-plugin/elasticsearch-options#elasticsearchoptions'>ElasticsearchOptions</a>) => Type&#60;<a href='/reference/core-plugins/elasticsearch-plugin/#elasticsearchplugin'>ElasticsearchPlugin</a>&#62;`}   />
 
 
 

+ 0 - 0
docs/docs/reference/typescript-api/core-plugins/email-plugin/custom-template-loader.md → docs/docs/reference/core-plugins/email-plugin/custom-template-loader.md


+ 3 - 3
docs/docs/reference/typescript-api/core-plugins/email-plugin/email-event-handler-with-async-data.md → docs/docs/reference/core-plugins/email-plugin/email-event-handler-with-async-data.md

@@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
 
 <GenerationInfo sourceFile="packages/email-plugin/src/event-handler.ts" sourceLine="438" packageName="@vendure/email-plugin" />
 
-Identical to the <a href='/reference/typescript-api/core-plugins/email-plugin/email-event-handler#emaileventhandler'>EmailEventHandler</a> but with a `data` property added to the `event` based on the result
+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.
 
 ```ts title="Signature"
@@ -21,7 +21,7 @@ class EmailEventHandlerWithAsyncData<Data, T extends string = string, InputEvent
     constructor(_loadDataFn: LoadDataFn<InputEvent, Data>, listener: EmailEventListener<T>, event: Type<InputEvent>)
 }
 ```
-* Extends: <code><a href='/reference/typescript-api/core-plugins/email-plugin/email-event-handler#emaileventhandler'>EmailEventHandler</a>&#60;T, Event&#62;</code>
+* Extends: <code><a href='/reference/core-plugins/email-plugin/email-event-handler#emaileventhandler'>EmailEventHandler</a>&#60;T, Event&#62;</code>
 
 
 
@@ -29,7 +29,7 @@ class EmailEventHandlerWithAsyncData<Data, T extends string = string, InputEvent
 
 ### constructor
 
-<MemberInfo kind="method" type={`(_loadDataFn: <a href='/reference/typescript-api/core-plugins/email-plugin/email-plugin-types#loaddatafn'>LoadDataFn</a>&#60;InputEvent, Data&#62;, listener: <a href='/reference/typescript-api/core-plugins/email-plugin/email-event-listener#emaileventlistener'>EmailEventListener</a>&#60;T&#62;, event: Type&#60;InputEvent&#62;) => EmailEventHandlerWithAsyncData`}   />
+<MemberInfo kind="method" type={`(_loadDataFn: <a href='/reference/core-plugins/email-plugin/email-plugin-types#loaddatafn'>LoadDataFn</a>&#60;InputEvent, Data&#62;, listener: <a href='/reference/core-plugins/email-plugin/email-event-listener#emaileventlistener'>EmailEventListener</a>&#60;T&#62;, event: Type&#60;InputEvent&#62;) => EmailEventHandlerWithAsyncData`}   />
 
 
 

+ 14 - 14
docs/docs/reference/typescript-api/core-plugins/email-plugin/email-event-handler.md → docs/docs/reference/core-plugins/email-plugin/email-event-handler.md

@@ -15,7 +15,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
 
 The EmailEventHandler defines how the EmailPlugin will respond to a given event.
 
-A handler is created by creating a new <a href='/reference/typescript-api/core-plugins/email-plugin/email-event-listener#emaileventlistener'>EmailEventListener</a> and calling the `.on()` method
+A handler is created by creating a new <a href='/reference/core-plugins/email-plugin/email-event-listener#emaileventlistener'>EmailEventListener</a> and calling the `.on()` method
 to specify which event to respond to.
 
 *Example*
@@ -143,18 +143,18 @@ class EmailEventHandler<T extends string = string, Event extends EventWithContex
 
 ### constructor
 
-<MemberInfo kind="method" type={`(listener: <a href='/reference/typescript-api/core-plugins/email-plugin/email-event-listener#emaileventlistener'>EmailEventListener</a>&#60;T&#62;, event: Type&#60;Event&#62;) => EmailEventHandler`}   />
+<MemberInfo kind="method" type={`(listener: <a href='/reference/core-plugins/email-plugin/email-event-listener#emaileventlistener'>EmailEventListener</a>&#60;T&#62;, event: Type&#60;Event&#62;) => EmailEventHandler`}   />
 
 
 ### filter
 
-<MemberInfo kind="method" type={`(filterFn: (event: Event) =&#62; boolean) => <a href='/reference/typescript-api/core-plugins/email-plugin/email-event-handler#emaileventhandler'>EmailEventHandler</a>&#60;T, Event&#62;`}   />
+<MemberInfo kind="method" type={`(filterFn: (event: Event) =&#62; boolean) => <a href='/reference/core-plugins/email-plugin/email-event-handler#emaileventhandler'>EmailEventHandler</a>&#60;T, Event&#62;`}   />
 
 Defines a predicate function which is used to determine whether the event will trigger an email.
 Multiple filter functions may be defined.
 ### setRecipient
 
-<MemberInfo kind="method" type={`(setRecipientFn: (event: Event) =&#62; string) => <a href='/reference/typescript-api/core-plugins/email-plugin/email-event-handler#emaileventhandler'>EmailEventHandler</a>&#60;T, Event&#62;`}   />
+<MemberInfo kind="method" type={`(setRecipientFn: (event: Event) =&#62; string) => <a href='/reference/core-plugins/email-plugin/email-event-handler#emaileventhandler'>EmailEventHandler</a>&#60;T, Event&#62;`}   />
 
 A function which defines how the recipient email address should be extracted from the incoming event.
 
@@ -163,35 +163,35 @@ Or with a formatted name (includes unicode support): `'Ноде Майлер <fo
 Or a comma-separated list of addresses: `'foobar@example.com, "Ноде Майлер" <bar@example.com>'`
 ### setLanguageCode
 
-<MemberInfo kind="method" type={`(setLanguageCodeFn: (event: Event) =&#62; <a href='/reference/typescript-api/common/language-code#languagecode'>LanguageCode</a> | undefined) => <a href='/reference/typescript-api/core-plugins/email-plugin/email-event-handler#emaileventhandler'>EmailEventHandler</a>&#60;T, Event&#62;`}  since="1.8.0"  />
+<MemberInfo kind="method" type={`(setLanguageCodeFn: (event: Event) =&#62; <a href='/reference/typescript-api/common/language-code#languagecode'>LanguageCode</a> | undefined) => <a href='/reference/core-plugins/email-plugin/email-event-handler#emaileventhandler'>EmailEventHandler</a>&#60;T, Event&#62;`}  since="1.8.0"  />
 
 A function which allows to override the language of the email. If not defined, the language from the context will be used.
 ### setTemplateVars
 
-<MemberInfo kind="method" type={`(templateVarsFn: <a href='/reference/typescript-api/core-plugins/email-plugin/email-plugin-types#settemplatevarsfn'>SetTemplateVarsFn</a>&#60;Event&#62;) => <a href='/reference/typescript-api/core-plugins/email-plugin/email-event-handler#emaileventhandler'>EmailEventHandler</a>&#60;T, Event&#62;`}   />
+<MemberInfo kind="method" type={`(templateVarsFn: <a href='/reference/core-plugins/email-plugin/email-plugin-types#settemplatevarsfn'>SetTemplateVarsFn</a>&#60;Event&#62;) => <a href='/reference/core-plugins/email-plugin/email-event-handler#emaileventhandler'>EmailEventHandler</a>&#60;T, Event&#62;`}   />
 
 A function which returns an object hash of variables which will be made available to the Handlebars template
 and subject line for interpolation.
 ### setSubject
 
-<MemberInfo kind="method" type={`(defaultSubject: string) => <a href='/reference/typescript-api/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-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.
 ### setFrom
 
-<MemberInfo kind="method" type={`(from: string) => <a href='/reference/typescript-api/core-plugins/email-plugin/email-event-handler#emaileventhandler'>EmailEventHandler</a>&#60;T, Event&#62;`}   />
+<MemberInfo kind="method" type={`(from: string) => <a href='/reference/core-plugins/email-plugin/email-event-handler#emaileventhandler'>EmailEventHandler</a>&#60;T, Event&#62;`}   />
 
 Sets the default from field of the email. The from string may use Handlebars variables defined by the
 setTemplateVars() method.
 ### setOptionalAddressFields
 
-<MemberInfo kind="method" type={`(optionalAddressFieldsFn: <a href='/reference/typescript-api/core-plugins/email-plugin/email-plugin-types#setoptionaladdressfieldsfn'>SetOptionalAddressFieldsFn</a>&#60;Event&#62;) => `}  since="1.1.0"  />
+<MemberInfo kind="method" type={`(optionalAddressFieldsFn: <a href='/reference/core-plugins/email-plugin/email-plugin-types#setoptionaladdressfieldsfn'>SetOptionalAddressFieldsFn</a>&#60;Event&#62;) => `}  since="1.1.0"  />
 
-A function which allows <a href='/reference/typescript-api/core-plugins/email-plugin/email-plugin-types#optionaladdressfields'>OptionalAddressFields</a> to be specified such as "cc" and "bcc".
+A function which allows <a href='/reference/core-plugins/email-plugin/email-plugin-types#optionaladdressfields'>OptionalAddressFields</a> to be specified such as "cc" and "bcc".
 ### setAttachments
 
-<MemberInfo kind="method" type={`(setAttachmentsFn: <a href='/reference/typescript-api/core-plugins/email-plugin/email-plugin-types#setattachmentsfn'>SetAttachmentsFn</a>&#60;Event&#62;) => `}   />
+<MemberInfo kind="method" type={`(setAttachmentsFn: <a href='/reference/core-plugins/email-plugin/email-plugin-types#setattachmentsfn'>SetAttachmentsFn</a>&#60;Event&#62;) => `}   />
 
 Defines one or more files to be attached to the email. An attachment can be specified
 as either a `path` (to a file or URL) or as `content` which can be a string, Buffer or Stream.
@@ -219,13 +219,13 @@ const testAttachmentHandler = new EmailEventListener('activate-voucher')
 ```
 ### addTemplate
 
-<MemberInfo kind="method" type={`(config: EmailTemplateConfig) => <a href='/reference/typescript-api/core-plugins/email-plugin/email-event-handler#emaileventhandler'>EmailEventHandler</a>&#60;T, Event&#62;`}   />
+<MemberInfo kind="method" type={`(config: EmailTemplateConfig) => <a href='/reference/core-plugins/email-plugin/email-event-handler#emaileventhandler'>EmailEventHandler</a>&#60;T, Event&#62;`}   />
 
 Add configuration for another template other than the default `"body.hbs"`. Use this method to define specific
 templates for channels or languageCodes other than the default.
 ### loadData
 
-<MemberInfo kind="method" type={`(loadDataFn: <a href='/reference/typescript-api/core-plugins/email-plugin/email-plugin-types#loaddatafn'>LoadDataFn</a>&#60;Event, R&#62;) => <a href='/reference/typescript-api/core-plugins/email-plugin/email-event-handler-with-async-data#emaileventhandlerwithasyncdata'>EmailEventHandlerWithAsyncData</a>&#60;R, T, Event, <a href='/reference/typescript-api/core-plugins/email-plugin/email-plugin-types#eventwithasyncdata'>EventWithAsyncData</a>&#60;Event, R&#62;&#62;`}   />
+<MemberInfo kind="method" type={`(loadDataFn: <a href='/reference/core-plugins/email-plugin/email-plugin-types#loaddatafn'>LoadDataFn</a>&#60;Event, R&#62;) => <a href='/reference/core-plugins/email-plugin/email-event-handler-with-async-data#emaileventhandlerwithasyncdata'>EmailEventHandlerWithAsyncData</a>&#60;R, T, Event, <a href='/reference/core-plugins/email-plugin/email-plugin-types#eventwithasyncdata'>EventWithAsyncData</a>&#60;Event, R&#62;&#62;`}   />
 
 Allows data to be loaded asynchronously which can then be used as template variables.
 The `loadDataFn` has access to the event, the TypeORM `Connection` object, and an
@@ -250,7 +250,7 @@ new EmailEventListener('order-confirmation')
 ```
 ### setMockEvent
 
-<MemberInfo kind="method" type={`(event: Omit&#60;Event, 'ctx' | 'data'&#62;) => <a href='/reference/typescript-api/core-plugins/email-plugin/email-event-handler#emaileventhandler'>EmailEventHandler</a>&#60;T, Event&#62;`}   />
+<MemberInfo kind="method" type={`(event: Omit&#60;Event, 'ctx' | 'data'&#62;) => <a href='/reference/core-plugins/email-plugin/email-event-handler#emaileventhandler'>EmailEventHandler</a>&#60;T, Event&#62;`}   />
 
 Optionally define a mock Event which is used by the dev mode mailbox app for generating mock emails
 from this handler, which is useful when developing the email templates.

+ 2 - 2
docs/docs/reference/typescript-api/core-plugins/email-plugin/email-event-listener.md → docs/docs/reference/core-plugins/email-plugin/email-event-listener.md

@@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
 
 <GenerationInfo sourceFile="packages/email-plugin/src/event-listener.ts" sourceLine="13" packageName="@vendure/email-plugin" />
 
-An EmailEventListener is used to listen for events and set up a <a href='/reference/typescript-api/core-plugins/email-plugin/email-event-handler#emaileventhandler'>EmailEventHandler</a> which
+An EmailEventListener is used to listen for events and set up a <a href='/reference/core-plugins/email-plugin/email-event-handler#emaileventhandler'>EmailEventHandler</a> which
 defines how an email will be generated from this event.
 
 ```ts title="Signature"
@@ -38,7 +38,7 @@ class EmailEventListener<T extends string> {
 
 ### on
 
-<MemberInfo kind="method" type={`(event: Type&#60;Event&#62;) => <a href='/reference/typescript-api/core-plugins/email-plugin/email-event-handler#emaileventhandler'>EmailEventHandler</a>&#60;T, Event&#62;`}   />
+<MemberInfo kind="method" type={`(event: Type&#60;Event&#62;) => <a href='/reference/core-plugins/email-plugin/email-event-handler#emaileventhandler'>EmailEventHandler</a>&#60;T, Event&#62;`}   />
 
 Defines the event to listen for.
 

+ 3 - 3
docs/docs/reference/typescript-api/core-plugins/email-plugin/email-generator.md → docs/docs/reference/core-plugins/email-plugin/email-generator.md

@@ -34,12 +34,12 @@ interface EmailGenerator<T extends string = any, E extends VendureEvent = any> e
 
 ### onInit
 
-<MemberInfo kind="method" type={`(options: <a href='/reference/typescript-api/core-plugins/email-plugin/email-plugin-options#emailpluginoptions'>EmailPluginOptions</a>) => void | Promise&#60;void&#62;`}   />
+<MemberInfo kind="method" type={`(options: <a href='/reference/core-plugins/email-plugin/email-plugin-options#emailpluginoptions'>EmailPluginOptions</a>) => void | Promise&#60;void&#62;`}   />
 
 Any necessary setup can be performed here.
 ### generate
 
-<MemberInfo kind="method" type={`(from: string, subject: string, body: string, templateVars: { [key: string]: any }) => Pick&#60;<a href='/reference/typescript-api/core-plugins/email-plugin/email-plugin-types#emaildetails'>EmailDetails</a>, 'from' | 'subject' | 'body'&#62;`}   />
+<MemberInfo kind="method" type={`(from: string, subject: string, body: string, templateVars: { [key: string]: any }) => Pick&#60;<a href='/reference/core-plugins/email-plugin/email-plugin-types#emaildetails'>EmailDetails</a>, 'from' | 'subject' | 'body'&#62;`}   />
 
 Given a subject and body from an email template, this method generates the final
 interpolated email text.
@@ -61,7 +61,7 @@ class HandlebarsMjmlGenerator implements EmailGenerator {
     generate(from: string, subject: string, template: string, templateVars: any) => ;
 }
 ```
-* Implements: <code><a href='/reference/typescript-api/core-plugins/email-plugin/email-generator#emailgenerator'>EmailGenerator</a></code>
+* Implements: <code><a href='/reference/core-plugins/email-plugin/email-generator#emailgenerator'>EmailGenerator</a></code>
 
 
 

+ 7 - 7
docs/docs/reference/typescript-api/core-plugins/email-plugin/email-plugin-options.md → docs/docs/reference/core-plugins/email-plugin/email-plugin-options.md

@@ -42,20 +42,20 @@ The path to the location of the email templates. In a default Vendure installati
 the templates are installed to `<project root>/vendure/email/templates`.
 ### templateLoader
 
-<MemberInfo kind="property" type={`<a href='/reference/typescript-api/core-plugins/email-plugin/custom-template-loader#templateloader'>TemplateLoader</a>`}  since="2.0.0"  />
+<MemberInfo kind="property" type={`<a href='/reference/core-plugins/email-plugin/custom-template-loader#templateloader'>TemplateLoader</a>`}  since="2.0.0"  />
 
 An optional TemplateLoader which can be used to load templates from a custom location or async service.
 The default uses the FileBasedTemplateLoader which loads templates from `<project root>/vendure/email/templates`
 ### transport
 
-<MemberInfo kind="property" type={`| <a href='/reference/typescript-api/core-plugins/email-plugin/transport-options#emailtransportoptions'>EmailTransportOptions</a>
         | ((
               injector?: <a href='/reference/typescript-api/common/injector#injector'>Injector</a>,
               ctx?: <a href='/reference/typescript-api/request/request-context#requestcontext'>RequestContext</a>,
           ) =&#62; <a href='/reference/typescript-api/core-plugins/email-plugin/transport-options#emailtransportoptions'>EmailTransportOptions</a> | Promise&#60;<a href='/reference/typescript-api/core-plugins/email-plugin/transport-options#emailtransportoptions'>EmailTransportOptions</a>&#62;)`}   />
+<MemberInfo kind="property" type={`| <a href='/reference/core-plugins/email-plugin/transport-options#emailtransportoptions'>EmailTransportOptions</a>
         | ((
               injector?: <a href='/reference/typescript-api/common/injector#injector'>Injector</a>,
               ctx?: <a href='/reference/typescript-api/request/request-context#requestcontext'>RequestContext</a>,
           ) =&#62; <a href='/reference/core-plugins/email-plugin/transport-options#emailtransportoptions'>EmailTransportOptions</a> | Promise&#60;<a href='/reference/core-plugins/email-plugin/transport-options#emailtransportoptions'>EmailTransportOptions</a>&#62;)`}   />
 
 Configures how the emails are sent.
 ### handlers
 
-<MemberInfo kind="property" type={`Array&#60;<a href='/reference/typescript-api/core-plugins/email-plugin/email-event-handler#emaileventhandler'>EmailEventHandler</a>&#60;string, any&#62;&#62;`}   />
+<MemberInfo kind="property" type={`Array&#60;<a href='/reference/core-plugins/email-plugin/email-event-handler#emaileventhandler'>EmailEventHandler</a>&#60;string, any&#62;&#62;`}   />
 
-An array of <a href='/reference/typescript-api/core-plugins/email-plugin/email-event-handler#emaileventhandler'>EmailEventHandler</a>s which define which Vendure events will trigger
+An array of <a href='/reference/core-plugins/email-plugin/email-event-handler#emaileventhandler'>EmailEventHandler</a>s which define which Vendure events will trigger
 emails, and how those emails are generated.
 ### globalTemplateVars
 
@@ -66,13 +66,13 @@ the storefront URL could be defined here and then used in the "email address ver
 email.
 ### emailSender
 
-<MemberInfo kind="property" type={`<a href='/reference/typescript-api/core-plugins/email-plugin/email-sender#emailsender'>EmailSender</a>`} default="<a href='/reference/typescript-api/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/typescript-api/core-plugins/email-plugin/email-generator#emailgenerator'>EmailGenerator</a>`} default="<a href='/reference/typescript-api/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.
@@ -94,7 +94,7 @@ interface EmailPluginDevModeOptions extends Omit<EmailPluginOptions, 'transport'
     route: string;
 }
 ```
-* Extends: <code>Omit&#60;<a href='/reference/typescript-api/core-plugins/email-plugin/email-plugin-options#emailpluginoptions'>EmailPluginOptions</a>, 'transport'&#62;</code>
+* Extends: <code>Omit&#60;<a href='/reference/core-plugins/email-plugin/email-plugin-options#emailpluginoptions'>EmailPluginOptions</a>, 'transport'&#62;</code>
 
 
 

+ 4 - 4
docs/docs/reference/typescript-api/core-plugins/email-plugin/email-plugin-types.md → docs/docs/reference/core-plugins/email-plugin/email-plugin-types.md

@@ -27,7 +27,7 @@ type EventWithContext = VendureEvent & { ctx: RequestContext }
 <GenerationInfo sourceFile="packages/email-plugin/src/types.ts" sourceLine="31" packageName="@vendure/email-plugin" />
 
 A VendureEvent with a <a href='/reference/typescript-api/request/request-context#requestcontext'>RequestContext</a> and a `data` property which contains the
-value resolved from the <a href='/reference/typescript-api/core-plugins/email-plugin/email-event-handler#emaileventhandler'>EmailEventHandler</a>`.loadData()` callback.
+value resolved from the <a href='/reference/core-plugins/email-plugin/email-event-handler#emaileventhandler'>EmailEventHandler</a>`.loadData()` callback.
 
 ```ts title="Signature"
 type EventWithAsyncData<Event extends EventWithContext, R> = Event & { data: R }
@@ -104,7 +104,7 @@ interface EmailDetails<Type extends 'serialized' | 'unserialized' = 'unserialize
 
 <GenerationInfo sourceFile="packages/email-plugin/src/types.ts" sourceLine="282" packageName="@vendure/email-plugin" />
 
-A function used to load async data for use by an <a href='/reference/typescript-api/core-plugins/email-plugin/email-event-handler#emaileventhandler'>EmailEventHandler</a>.
+A function used to load async data for use by an <a href='/reference/core-plugins/email-plugin/email-event-handler#emaileventhandler'>EmailEventHandler</a>.
 
 ```ts title="Signature"
 type LoadDataFn<Event extends EventWithContext, R> = (context: {
@@ -133,7 +133,7 @@ type EmailAttachment = Omit<Attachment, 'raw'> & { path?: string }
 <GenerationInfo sourceFile="packages/email-plugin/src/types.ts" sourceLine="410" packageName="@vendure/email-plugin" />
 
 A function used to define template variables available to email templates.
-See <a href='/reference/typescript-api/core-plugins/email-plugin/email-event-handler#emaileventhandler'>EmailEventHandler</a>.setTemplateVars().
+See <a href='/reference/core-plugins/email-plugin/email-event-handler#emaileventhandler'>EmailEventHandler</a>.setTemplateVars().
 
 ```ts title="Signature"
 type SetTemplateVarsFn<Event> = (
@@ -196,7 +196,7 @@ An email address that will appear on the _Reply-To:_ field
 
 <GenerationInfo sourceFile="packages/email-plugin/src/types.ts" sourceLine="460" packageName="@vendure/email-plugin" since="1.1.0" />
 
-A function used to set the <a href='/reference/typescript-api/core-plugins/email-plugin/email-plugin-types#optionaladdressfields'>OptionalAddressFields</a>.
+A function used to set the <a href='/reference/core-plugins/email-plugin/email-plugin-types#optionaladdressfields'>OptionalAddressFields</a>.
 
 ```ts title="Signature"
 type SetOptionalAddressFieldsFn<Event> = (

+ 4 - 4
docs/docs/reference/typescript-api/core-plugins/email-plugin/email-sender.md → docs/docs/reference/core-plugins/email-plugin/email-sender.md

@@ -15,7 +15,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
 
 An EmailSender is responsible for sending the email, e.g. via an SMTP connection
 or using some other mail-sending API. By default, the EmailPlugin uses the
-<a href='/reference/typescript-api/core-plugins/email-plugin/email-sender#nodemaileremailsender'>NodemailerEmailSender</a>, but it is also possible to supply a custom implementation:
+<a href='/reference/core-plugins/email-plugin/email-sender#nodemaileremailsender'>NodemailerEmailSender</a>, but it is also possible to supply a custom implementation:
 
 *Example*
 
@@ -61,7 +61,7 @@ interface EmailSender extends InjectableStrategy {
 
 ### send
 
-<MemberInfo kind="property" type={`(email: <a href='/reference/typescript-api/core-plugins/email-plugin/email-plugin-types#emaildetails'>EmailDetails</a>, options: <a href='/reference/typescript-api/core-plugins/email-plugin/transport-options#emailtransportoptions'>EmailTransportOptions</a>) =&#62; void | Promise&#60;void&#62;`}   />
+<MemberInfo kind="property" type={`(email: <a href='/reference/core-plugins/email-plugin/email-plugin-types#emaildetails'>EmailDetails</a>, options: <a href='/reference/core-plugins/email-plugin/transport-options#emailtransportoptions'>EmailTransportOptions</a>) =&#62; void | Promise&#60;void&#62;`}   />
 
 
 
@@ -80,7 +80,7 @@ class NodemailerEmailSender implements EmailSender {
     send(email: EmailDetails, options: EmailTransportOptions) => ;
 }
 ```
-* Implements: <code><a href='/reference/typescript-api/core-plugins/email-plugin/email-sender#emailsender'>EmailSender</a></code>
+* Implements: <code><a href='/reference/core-plugins/email-plugin/email-sender#emailsender'>EmailSender</a></code>
 
 
 
@@ -88,7 +88,7 @@ class NodemailerEmailSender implements EmailSender {
 
 ### send
 
-<MemberInfo kind="method" type={`(email: <a href='/reference/typescript-api/core-plugins/email-plugin/email-plugin-types#emaildetails'>EmailDetails</a>, options: <a href='/reference/typescript-api/core-plugins/email-plugin/transport-options#emailtransportoptions'>EmailTransportOptions</a>) => `}   />
+<MemberInfo kind="method" type={`(email: <a href='/reference/core-plugins/email-plugin/email-plugin-types#emaildetails'>EmailDetails</a>, options: <a href='/reference/core-plugins/email-plugin/transport-options#emailtransportoptions'>EmailTransportOptions</a>) => `}   />
 
 
 

+ 5 - 5
docs/docs/reference/typescript-api/core-plugins/email-plugin/index.md → docs/docs/reference/core-plugins/email-plugin/index.md

@@ -18,7 +18,7 @@ email generator to generate the email body and [Nodemailer](https://nodemailer.c
 
 ## High-level description
 Vendure has an internal events system (see <a href='/reference/typescript-api/events/event-bus#eventbus'>EventBus</a>) that allows plugins to subscribe to events. The EmailPlugin is configured with
-<a href='/reference/typescript-api/core-plugins/email-plugin/email-event-handler#emaileventhandler'>EmailEventHandler</a>s that listen for a specific event and when it is published, the handler defines which template to use to generate
+<a href='/reference/core-plugins/email-plugin/email-event-handler#emaileventhandler'>EmailEventHandler</a>s that listen for a specific event and when it is published, the handler defines which template to use to generate
 the resulting email.
 
 The plugin comes with a set of default handlers for the following events:
@@ -27,7 +27,7 @@ The plugin comes with a set of default handlers for the following events:
 - Password reset request
 - Email address change request
 
-You can also create your own handlers and register them with the plugin - see the <a href='/reference/typescript-api/core-plugins/email-plugin/email-event-handler#emaileventhandler'>EmailEventHandler</a> docs for more details.
+You can also create your own handlers and register them with the plugin - see the <a href='/reference/core-plugins/email-plugin/email-event-handler#emaileventhandler'>EmailEventHandler</a> docs for more details.
 
 ## Installation
 
@@ -165,7 +165,7 @@ EmailPlugin.init({
 }),
 ```
 
-For all available methods of extending a handler, see the <a href='/reference/typescript-api/core-plugins/email-plugin/email-event-handler#emaileventhandler'>EmailEventHandler</a> documentation.
+For all available methods of extending a handler, see the <a href='/reference/core-plugins/email-plugin/email-event-handler#emaileventhandler'>EmailEventHandler</a> documentation.
 
 ## Dynamic SMTP settings
 
@@ -201,7 +201,7 @@ const config: VendureConfig = {
 ## Dev mode
 
 For development, the `transport` option can be replaced by `devMode: true`. Doing so configures Vendure to use the
-file transport (See <a href='/reference/typescript-api/core-plugins/email-plugin/transport-options#filetransportoptions'>FileTransportOptions</a>) and outputs emails as rendered HTML files in the directory specified by the
+file transport (See <a href='/reference/core-plugins/email-plugin/transport-options#filetransportoptions'>FileTransportOptions</a>) and outputs emails as rendered HTML files in the directory specified by the
 `outputPath` property.
 
 ```ts
@@ -263,7 +263,7 @@ class EmailPlugin implements OnApplicationBootstrap, OnApplicationShutdown, Nest
 
 ### init
 
-<MemberInfo kind="method" type={`(options: <a href='/reference/typescript-api/core-plugins/email-plugin/email-plugin-options#emailpluginoptions'>EmailPluginOptions</a> | <a href='/reference/typescript-api/core-plugins/email-plugin/email-plugin-options#emailplugindevmodeoptions'>EmailPluginDevModeOptions</a>) => Type&#60;<a href='/reference/typescript-api/core-plugins/email-plugin/#emailplugin'>EmailPlugin</a>&#62;`}   />
+<MemberInfo kind="method" type={`(options: <a href='/reference/core-plugins/email-plugin/email-plugin-options#emailpluginoptions'>EmailPluginOptions</a> | <a href='/reference/core-plugins/email-plugin/email-plugin-options#emailplugindevmodeoptions'>EmailPluginDevModeOptions</a>) => Type&#60;<a href='/reference/core-plugins/email-plugin/#emailplugin'>EmailPlugin</a>&#62;`}   />
 
 
 ### onApplicationShutdown

+ 2 - 2
docs/docs/reference/typescript-api/core-plugins/email-plugin/transport-options.md → docs/docs/reference/core-plugins/email-plugin/transport-options.md

@@ -195,7 +195,7 @@ interface FileTransportOptions {
 <GenerationInfo sourceFile="packages/email-plugin/src/types.ts" sourceLine="237" 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/typescript-api/core-plugins/email-plugin/email-sender#emailsender'>EmailSender</a> which does not require transport options.
+or when using a custom <a href='/reference/core-plugins/email-plugin/email-sender#emailsender'>EmailSender</a> which does not require transport options.
 
 ```ts title="Signature"
 interface NoopTransportOptions {
@@ -237,7 +237,7 @@ interface TestingTransportOptions {
 
 ### onSend
 
-<MemberInfo kind="property" type={`(details: <a href='/reference/typescript-api/core-plugins/email-plugin/email-plugin-types#emaildetails'>EmailDetails</a>) =&#62; void`}   />
+<MemberInfo kind="property" type={`(details: <a href='/reference/core-plugins/email-plugin/email-plugin-types#emaildetails'>EmailDetails</a>) =&#62; void`}   />
 
 Callback to be invoked when an email would be sent.
 

+ 0 - 0
docs/docs/reference/typescript-api/core-plugins/harden-plugin/default-vendure-complexity-estimator.md → docs/docs/reference/core-plugins/harden-plugin/default-vendure-complexity-estimator.md


+ 1 - 1
docs/docs/reference/typescript-api/core-plugins/harden-plugin/harden-plugin-options.md → docs/docs/reference/core-plugins/harden-plugin/harden-plugin-options.md

@@ -44,7 +44,7 @@ A query which exceeds the maximum score will result in an error.
 <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/typescript-api/core-plugins/harden-plugin/default-vendure-complexity-estimator#defaultvendurecomplexityestimator'>defaultVendureComplexityEstimator</a> which is specifically
+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
 

+ 4 - 4
docs/docs/reference/typescript-api/core-plugins/harden-plugin/index.md → docs/docs/reference/core-plugins/harden-plugin/index.md

@@ -30,7 +30,7 @@ or
 
 `npm install @vendure/harden-plugin`
 
-Then add the `HardenPlugin`, calling the `.init()` method with <a href='/reference/typescript-api/core-plugins/harden-plugin/harden-plugin-options#hardenpluginoptions'>HardenPluginOptions</a>:
+Then add the `HardenPlugin`, calling the `.init()` method with <a href='/reference/core-plugins/harden-plugin/harden-plugin-options#hardenpluginoptions'>HardenPluginOptions</a>:
 
 *Example*
 
@@ -88,7 +88,7 @@ query EvilQuery {
 This evil query has a complexity score of 2,443,203 - much greater than the default of 1,000!
 
 The complexity score is calculated by the [graphql-query-complexity library](https://www.npmjs.com/package/graphql-query-complexity),
-and by default uses the <a href='/reference/typescript-api/core-plugins/harden-plugin/default-vendure-complexity-estimator#defaultvendurecomplexityestimator'>defaultVendureComplexityEstimator</a>, which is tuned specifically to the Vendure Shop API.
+and by default uses the <a href='/reference/core-plugins/harden-plugin/default-vendure-complexity-estimator#defaultvendurecomplexityestimator'>defaultVendureComplexityEstimator</a>, which is tuned specifically to the Vendure Shop API.
 
 {{% alert "warning" %}}
 Note: By default, if the "take" argument is omitted from a list query (e.g. the `products` or `collections` query), a default factor of 1000 is applied.
@@ -160,12 +160,12 @@ class HardenPlugin {
 
 ### options
 
-<MemberInfo kind="property" type={`<a href='/reference/typescript-api/core-plugins/harden-plugin/harden-plugin-options#hardenpluginoptions'>HardenPluginOptions</a>`}   />
+<MemberInfo kind="property" type={`<a href='/reference/core-plugins/harden-plugin/harden-plugin-options#hardenpluginoptions'>HardenPluginOptions</a>`}   />
 
 
 ### init
 
-<MemberInfo kind="method" type={`(options: <a href='/reference/typescript-api/core-plugins/harden-plugin/harden-plugin-options#hardenpluginoptions'>HardenPluginOptions</a>) => `}   />
+<MemberInfo kind="method" type={`(options: <a href='/reference/core-plugins/harden-plugin/harden-plugin-options#hardenpluginoptions'>HardenPluginOptions</a>) => `}   />
 
 
 

+ 0 - 0
docs/docs/reference/typescript-api/core-plugins/index.md → docs/docs/reference/core-plugins/index.md


+ 2 - 2
docs/docs/reference/typescript-api/core-plugins/job-queue-plugin/bull-mqjob-queue-plugin.md → docs/docs/reference/core-plugins/job-queue-plugin/bull-mqjob-queue-plugin.md

@@ -114,12 +114,12 @@ class BullMQJobQueuePlugin {
 
 ### options
 
-<MemberInfo kind="property" type={`<a href='/reference/typescript-api/core-plugins/job-queue-plugin/bull-mqplugin-options#bullmqpluginoptions'>BullMQPluginOptions</a>`}   />
+<MemberInfo kind="property" type={`<a href='/reference/core-plugins/job-queue-plugin/bull-mqplugin-options#bullmqpluginoptions'>BullMQPluginOptions</a>`}   />
 
 
 ### init
 
-<MemberInfo kind="method" type={`(options: <a href='/reference/typescript-api/core-plugins/job-queue-plugin/bull-mqplugin-options#bullmqpluginoptions'>BullMQPluginOptions</a>) => `}   />
+<MemberInfo kind="method" type={`(options: <a href='/reference/core-plugins/job-queue-plugin/bull-mqplugin-options#bullmqpluginoptions'>BullMQPluginOptions</a>) => `}   />
 
 Configures the plugin.
 

+ 1 - 1
docs/docs/reference/typescript-api/core-plugins/job-queue-plugin/bull-mqjob-queue-strategy.md → docs/docs/reference/core-plugins/job-queue-plugin/bull-mqjob-queue-strategy.md

@@ -14,7 +14,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
 <GenerationInfo sourceFile="packages/job-queue-plugin/src/bullmq/bullmq-job-queue-strategy.ts" sourceLine="31" packageName="@vendure/job-queue-plugin" />
 
 This JobQueueStrategy uses [BullMQ](https://docs.bullmq.io/) to implement a push-based job queue
-on top of Redis. It should not be used alone, but as part of the <a href='/reference/typescript-api/core-plugins/job-queue-plugin/bull-mqjob-queue-plugin#bullmqjobqueueplugin'>BullMQJobQueuePlugin</a>.
+on top of Redis. It should not be used alone, but as part of the <a href='/reference/core-plugins/job-queue-plugin/bull-mqjob-queue-plugin#bullmqjobqueueplugin'>BullMQJobQueuePlugin</a>.
 
 ```ts title="Signature"
 class BullMQJobQueueStrategy implements InspectableJobQueueStrategy {

+ 2 - 2
docs/docs/reference/typescript-api/core-plugins/job-queue-plugin/bull-mqplugin-options.md → docs/docs/reference/core-plugins/job-queue-plugin/bull-mqplugin-options.md

@@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
 
 <GenerationInfo sourceFile="packages/job-queue-plugin/src/bullmq/types.ts" sourceLine="14" packageName="@vendure/job-queue-plugin" since="1.2.0" />
 
-Configuration options for the <a href='/reference/typescript-api/core-plugins/job-queue-plugin/bull-mqjob-queue-plugin#bullmqjobqueueplugin'>BullMQJobQueuePlugin</a>.
+Configuration options for the <a href='/reference/core-plugins/job-queue-plugin/bull-mqjob-queue-plugin#bullmqjobqueueplugin'>BullMQJobQueuePlugin</a>.
 
 ```ts title="Signature"
 interface BullMQPluginOptions {
@@ -73,7 +73,7 @@ setRetries: (queueName, job) => {
  ```
 ### setBackoff
 
-<MemberInfo kind="property" type={`(queueName: string, job: <a href='/reference/typescript-api/job-queue/job#job'>Job</a>) =&#62; <a href='/reference/typescript-api/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: <a href='/reference/typescript-api/job-queue/job#job'>Job</a>) =&#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

+ 0 - 0
docs/docs/reference/typescript-api/core-plugins/job-queue-plugin/index.md → docs/docs/reference/core-plugins/job-queue-plugin/index.md


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

@@ -251,12 +251,12 @@ class BraintreePlugin {
 
 ### options
 
-<MemberInfo kind="property" type={`<a href='/reference/typescript-api/core-plugins/payments-plugin/braintree-plugin#braintreepluginoptions'>BraintreePluginOptions</a>`}   />
+<MemberInfo kind="property" type={`<a href='/reference/core-plugins/payments-plugin/braintree-plugin#braintreepluginoptions'>BraintreePluginOptions</a>`}   />
 
 
 ### init
 
-<MemberInfo kind="method" type={`(options: <a href='/reference/typescript-api/core-plugins/payments-plugin/braintree-plugin#braintreepluginoptions'>BraintreePluginOptions</a>) => Type&#60;<a href='/reference/typescript-api/core-plugins/payments-plugin/braintree-plugin#braintreeplugin'>BraintreePlugin</a>&#62;`}   />
+<MemberInfo kind="method" type={`(options: <a href='/reference/core-plugins/payments-plugin/braintree-plugin#braintreepluginoptions'>BraintreePluginOptions</a>) => Type&#60;<a href='/reference/core-plugins/payments-plugin/braintree-plugin#braintreeplugin'>BraintreePlugin</a>&#62;`}   />
 
 
 

+ 0 - 0
docs/docs/reference/typescript-api/core-plugins/payments-plugin/index.md → docs/docs/reference/core-plugins/payments-plugin/index.md


+ 2 - 2
docs/docs/reference/typescript-api/core-plugins/payments-plugin/mollie-plugin.md → docs/docs/reference/core-plugins/payments-plugin/mollie-plugin.md

@@ -131,12 +131,12 @@ class MolliePlugin {
 
 ### options
 
-<MemberInfo kind="property" type={`<a href='/reference/typescript-api/core-plugins/payments-plugin/mollie-plugin#molliepluginoptions'>MolliePluginOptions</a>`}   />
+<MemberInfo kind="property" type={`<a href='/reference/core-plugins/payments-plugin/mollie-plugin#molliepluginoptions'>MolliePluginOptions</a>`}   />
 
 
 ### init
 
-<MemberInfo kind="method" type={`(options: <a href='/reference/typescript-api/core-plugins/payments-plugin/mollie-plugin#molliepluginoptions'>MolliePluginOptions</a>) => typeof <a href='/reference/typescript-api/core-plugins/payments-plugin/mollie-plugin#mollieplugin'>MolliePlugin</a>`}   />
+<MemberInfo kind="method" type={`(options: <a href='/reference/core-plugins/payments-plugin/mollie-plugin#molliepluginoptions'>MolliePluginOptions</a>) => typeof <a href='/reference/core-plugins/payments-plugin/mollie-plugin#mollieplugin'>MolliePlugin</a>`}   />
 
 Initialize the mollie payment plugin
 

+ 2 - 2
docs/docs/reference/typescript-api/core-plugins/payments-plugin/stripe-plugin.md → docs/docs/reference/core-plugins/payments-plugin/stripe-plugin.md

@@ -166,12 +166,12 @@ class StripePlugin {
 
 ### options
 
-<MemberInfo kind="property" type={`<a href='/reference/typescript-api/core-plugins/payments-plugin/stripe-plugin#stripepluginoptions'>StripePluginOptions</a>`}   />
+<MemberInfo kind="property" type={`<a href='/reference/core-plugins/payments-plugin/stripe-plugin#stripepluginoptions'>StripePluginOptions</a>`}   />
 
 
 ### init
 
-<MemberInfo kind="method" type={`(options: <a href='/reference/typescript-api/core-plugins/payments-plugin/stripe-plugin#stripepluginoptions'>StripePluginOptions</a>) => Type&#60;<a href='/reference/typescript-api/core-plugins/payments-plugin/stripe-plugin#stripeplugin'>StripePlugin</a>&#62;`}   />
+<MemberInfo kind="method" type={`(options: <a href='/reference/core-plugins/payments-plugin/stripe-plugin#stripepluginoptions'>StripePluginOptions</a>) => Type&#60;<a href='/reference/core-plugins/payments-plugin/stripe-plugin#stripeplugin'>StripePlugin</a>&#62;`}   />
 
 Initialize the Stripe payment plugin
 

+ 4 - 0
docs/docs/reference/index.mdx

@@ -15,6 +15,10 @@ to the source file using the links below each heading.
 
 These are the classes, interfaces and other TypeScript object which are used when **writing plugins** or custom business logic.
 
+### Core Plugins
+
+These are the TypeScript APIs for the core Vendure plugins.
+
 ### GraphQL API
 
 These are the GraphQL APIs you will use to build your storefront (Shop API) or admin integrations (Admin API).

+ 3 - 2
docs/docs/reference/typescript-api/auth/session-cache-strategy.md

@@ -11,7 +11,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
 
 ## SessionCacheStrategy
 
-<GenerationInfo sourceFile="packages/core/src/config/session-cache/session-cache-strategy.ts" sourceLine="154" packageName="@vendure/core" />
+<GenerationInfo sourceFile="packages/core/src/config/session-cache/session-cache-strategy.ts" sourceLine="155" packageName="@vendure/core" />
 
 This strategy defines how sessions get cached. Since most requests will need the Session
 object for permissions data, it can become a bottleneck to go to the database and do a multi-join
@@ -45,6 +45,7 @@ export interface RedisSessionCachePluginOptions {
 }
 const loggerCtx = 'RedisSessionCacheStrategy';
 const DEFAULT_NAMESPACE = 'vendure-session-cache';
+const DEFAULT_TTL = 86400;
 
 export class RedisSessionCacheStrategy implements SessionCacheStrategy {
   private client: Redis;
@@ -76,7 +77,7 @@ export class RedisSessionCacheStrategy implements SessionCacheStrategy {
 
   async set(session: CachedSession) {
     try {
-      await this.client.set(this.namespace(session.token), JSON.stringify(session));
+      await this.client.set(this.namespace(session.token), JSON.stringify(session), 'EX', DEFAULT_TTL);
     } catch (e: any) {
       Logger.error(`Could not set cached session: ${e.message}`, loggerCtx);
     }

+ 0 - 11
docs/docs/reference/typescript-api/core-plugins/_index.md

@@ -1,11 +0,0 @@
----
-title: "Core Plugins"
-weight: 10
-date: 2023-07-14T16:57:50.205Z
-showtoc: false
-generated: true
----
-<!-- This file was generated from the Vendure source. Do not modify. Instead, re-run the "docs:build" script -->
-
-
-# core-plugins

+ 0 - 47
docs/docs/reference/typescript-api/core-plugins/admin-ui-plugin/admin-ui-app-config.md

@@ -1,47 +0,0 @@
----
-title: "AdminUiAppConfig"
-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';
-
-
-## AdminUiAppConfig
-
-<GenerationInfo sourceFile="packages/common/src/shared-types.ts" sourceLine="338" packageName="@vendure/common" />
-
-Configures the path to a custom-build of the Admin UI app.
-
-```ts title="Signature"
-interface AdminUiAppConfig {
-    path: string;
-    route?: string;
-    compile?: () => Promise<void>;
-}
-```
-
-<div className="members-wrapper">
-
-### path
-
-<MemberInfo kind="property" type={`string`}   />
-
-The path to the compiled admin UI app files. If not specified, an internal
-default build is used. This path should contain the `vendure-ui-config.json` file,
-index.html, the compiled js bundles etc.
-### route
-
-<MemberInfo kind="property" type={`string`} default="'admin'"   />
-
-Specifies the url route to the Admin UI app.
-### compile
-
-<MemberInfo kind="property" type={`() =&#62; Promise&#60;void&#62;`}   />
-
-The function which will be invoked to start the app compilation process.
-
-
-</div>

+ 0 - 51
docs/docs/reference/typescript-api/core-plugins/admin-ui-plugin/admin-ui-app-dev-mode-config.md

@@ -1,51 +0,0 @@
----
-title: "AdminUiAppDevModeConfig"
-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';
-
-
-## AdminUiAppDevModeConfig
-
-<GenerationInfo sourceFile="packages/common/src/shared-types.ts" sourceLine="366" packageName="@vendure/common" />
-
-Information about the Admin UI app dev server.
-
-```ts title="Signature"
-interface AdminUiAppDevModeConfig {
-    sourcePath: string;
-    port: number;
-    route?: string;
-    compile: () => Promise<void>;
-}
-```
-
-<div className="members-wrapper">
-
-### sourcePath
-
-<MemberInfo kind="property" type={`string`}   />
-
-The path to the uncompiled UI app source files. This path should contain the `vendure-ui-config.json` file.
-### port
-
-<MemberInfo kind="property" type={`number`}   />
-
-The port on which the dev server is listening. Overrides the value set by `AdminUiOptions.port`.
-### route
-
-<MemberInfo kind="property" type={`string`} default="'admin'"   />
-
-Specifies the url route to the Admin UI app.
-### compile
-
-<MemberInfo kind="property" type={`() =&#62; Promise&#60;void&#62;`}   />
-
-The function which will be invoked to start the app compilation process.
-
-
-</div>

+ 0 - 136
docs/docs/reference/typescript-api/core-plugins/admin-ui-plugin/admin-ui-config.md

@@ -1,136 +0,0 @@
----
-title: "AdminUiConfig"
-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';
-
-
-## AdminUiConfig
-
-<GenerationInfo sourceFile="packages/common/src/shared-types.ts" sourceLine="214" packageName="@vendure/common" />
-
-This interface describes JSON config file (vendure-ui-config.json) used by the Admin UI.
-The values are loaded at run-time by the Admin UI app, and allow core configuration to be
-managed without the need to re-build the application.
-
-```ts title="Signature"
-interface AdminUiConfig {
-    apiHost: string | 'auto';
-    apiPort: number | 'auto';
-    adminApiPath: string;
-    tokenMethod: 'cookie' | 'bearer';
-    authTokenHeaderKey: string;
-    channelTokenKey: string;
-    defaultLanguage: LanguageCode;
-    defaultLocale?: string;
-    availableLanguages: LanguageCode[];
-    loginUrl?: string;
-    brand?: string;
-    hideVendureBranding?: boolean;
-    hideVersion?: boolean;
-    loginImageUrl?: string;
-    cancellationReasons?: string[];
-}
-```
-
-<div className="members-wrapper">
-
-### apiHost
-
-<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"   />
-
-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'"   />
-
-The path to the GraphQL Admin API.
-### tokenMethod
-
-<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'"   />
-
-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'"   />
-
-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"   />
-
-The default language for the Admin UI. Must be one of the
-items specified in the `availableLanguages` property.
-### defaultLocale
-
-<MemberInfo kind="property" type={`string`}   />
-
-The default locale for the Admin UI. The locale affects the formatting of
-currencies & dates.
-
-If not set, the browser default locale will be used.
-### availableLanguages
-
-<MemberInfo kind="property" type={`<a href='/reference/typescript-api/common/language-code#languagecode'>LanguageCode</a>[]`}   />
-
-An array of languages for which translations exist for the Admin UI.
-### loginUrl
-
-<MemberInfo kind="property" type={`string`}   />
-
-If you are using an external <a href='/reference/typescript-api/auth/authentication-strategy#authenticationstrategy'>AuthenticationStrategy</a> for the Admin API, you can configure
-a custom URL for the login page with this option. On logging out or redirecting an unauthenticated
-user, the Admin UI app will redirect the user to this URL rather than the default username/password
-screen.
-### brand
-
-<MemberInfo kind="property" type={`string`}   />
-
-The custom brand name.
-### hideVendureBranding
-
-<MemberInfo kind="property" type={`boolean`} default="false"   />
-
-Option to hide vendure branding.
-### hideVersion
-
-<MemberInfo kind="property" type={`boolean`} default="false"   />
-
-Option to hide version.
-### loginImageUrl
-
-<MemberInfo kind="property" type={`string`}  since="1.9.0"  />
-
-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"  />
-
-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
-tokens (see [Adding Admin UI Translations](/guides/extending-the-admin-ui/adding-ui-translations/)).
-
-
-</div>

+ 0 - 130
docs/docs/reference/typescript-api/core-plugins/default-search-plugin/default-search-plugin-init-options.md

@@ -1,130 +0,0 @@
----
-title: "DefaultSearchPluginInitOptions"
-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';
-
-
-## DefaultSearchPluginInitOptions
-
-<GenerationInfo sourceFile="packages/core/src/plugin/default-search-plugin/types.ts" sourceLine="15" packageName="@vendure/core" />
-
-Options which configure the behaviour of the DefaultSearchPlugin
-
-```ts title="Signature"
-interface DefaultSearchPluginInitOptions {
-    indexStockStatus?: boolean;
-    bufferUpdates?: boolean;
-    searchStrategy?: SearchStrategy;
-}
-```
-
-<div className="members-wrapper">
-
-### indexStockStatus
-
-<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"  />
-
-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.
-### searchStrategy
-
-<MemberInfo kind="property" type={`SearchStrategy`} default="undefined"  since="1.6.0"  />
-
-Set a custom search strategy that implements {@link SearchStrategy} or extends an existing search strategy
-such as {@link MysqlSearchStrategy}, {@link PostgresSearchStrategy} or {@link SqliteSearchStrategy}.
-
-*Example*
-
-```ts
-export class MySearchStrategy implements SearchStrategy {
-    private readonly minTermLength = 2;
-    private connection: TransactionalConnection;
-    private options: DefaultSearchPluginInitOptions;
-
-    async init(injector: Injector) {
-        this.connection = injector.get(TransactionalConnection);
-        this.options = injector.get(PLUGIN_INIT_OPTIONS);
-    }
-
-    async getFacetValueIds(
-        ctx: RequestContext,
-        input: SearchInput,
-        enabledOnly: boolean,
-    ): Promise<Map<ID, number>> {
-        // ...
-        return createFacetIdCountMap(facetValuesResult);
-    }
-
-    async getCollectionIds(
-        ctx: RequestContext,
-        input: SearchInput,
-        enabledOnly: boolean,
-    ): Promise<Map<ID, number>> {
-        // ...
-        return createCollectionIdCountMap(collectionsResult);
-    }
-
-    async getSearchResults(
-        ctx: RequestContext,
-        input: SearchInput,
-        enabledOnly: boolean,
-    ): Promise<SearchResult[]> {
-        const take = input.take || 25;
-        const skip = input.skip || 0;
-        const sort = input.sort;
-        const qb = this.connection
-            .getRepository(SearchIndexItem)
-            .createQueryBuilder('si')
-            .select(this.createMysqlSelect(!!input.groupByProduct));
-        // ...
-
-        return qb
-            .take(take)
-            .skip(skip)
-            .getRawMany()
-            .then(res => res.map(r => mapToSearchResult(r, ctx.channel.currencyCode)));
-    }
-
-    async getTotalCount(ctx: RequestContext, input: SearchInput, enabledOnly: boolean): Promise<number> {
-        const innerQb = this.applyTermAndFilters(
-            ctx,
-            this.connection
-                .getRepository(SearchIndexItem)
-                .createQueryBuilder('si')
-                .select(this.createMysqlSelect(!!input.groupByProduct)),
-            input,
-        );
-        if (enabledOnly) {
-            innerQb.andWhere('si.enabled = :enabled', { enabled: true });
-        }
-
-        const totalItemsQb = this.connection.rawConnection
-            .createQueryBuilder()
-            .select('COUNT(*) as total')
-            .from(`(${innerQb.getQuery()})`, 'inner')
-            .setParameters(innerQb.getParameters());
-        return totalItemsQb.getRawOne().then(res => res.total);
-    }
-}
-```
-
-
-</div>

+ 0 - 68
docs/docs/reference/typescript-api/core-plugins/default-search-plugin/index.md

@@ -1,68 +0,0 @@
----
-title: "DefaultSearchPlugin"
-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';
-
-
-## DefaultSearchPlugin
-
-<GenerationInfo sourceFile="packages/core/src/plugin/default-search-plugin/default-search-plugin.ts" sourceLine="69" packageName="@vendure/core" />
-
-The DefaultSearchPlugin provides a full-text Product search based on the full-text searching capabilities of the
-underlying database.
-
-The DefaultSearchPlugin is bundled with the `@vendure/core` package. If you are not using an alternative search
-plugin, then make sure this one is used, otherwise you will not be able to search products via the
-[`search` query](/reference/graphql-api/shop/queries#search).
-
-{{% alert "warning" %}}
-Note that the quality of the fulltext search capabilities varies depending on the underlying database being used. For example,
-the MySQL & Postgres implementations will typically yield better results than the SQLite implementation.
-{{% /alert %}}
-
-*Example*
-
-```ts
-import { DefaultSearchPlugin, VendureConfig } from '@vendure/core';
-
-export const config: VendureConfig = {
-  // Add an instance of the plugin to the plugins array
-  plugins: [
-    DefaultSearchPlugin.init({
-      indexStockStatus: true,
-      bufferUpdates: true,
-    }),
-  ],
-};
-```
-
-```ts title="Signature"
-class DefaultSearchPlugin implements OnApplicationBootstrap, OnApplicationShutdown {
-    static options: DefaultSearchPluginInitOptions = {};
-    init(options: DefaultSearchPluginInitOptions) => Type<DefaultSearchPlugin>;
-}
-```
-* Implements: <code>OnApplicationBootstrap</code>, <code>OnApplicationShutdown</code>
-
-
-
-<div className="members-wrapper">
-
-### options
-
-<MemberInfo kind="property" type={`<a href='/reference/typescript-api/core-plugins/default-search-plugin/default-search-plugin-init-options#defaultsearchplugininitoptions'>DefaultSearchPluginInitOptions</a>`}   />
-
-
-### init
-
-<MemberInfo kind="method" type={`(options: <a href='/reference/typescript-api/core-plugins/default-search-plugin/default-search-plugin-init-options#defaultsearchplugininitoptions'>DefaultSearchPluginInitOptions</a>) => Type&#60;<a href='/reference/typescript-api/core-plugins/default-search-plugin/#defaultsearchplugin'>DefaultSearchPlugin</a>&#62;`}   />
-
-
-
-
-</div>

+ 0 - 11
docs/docs/reference/typescript-api/core-plugins/job-queue-plugin/_index.md

@@ -1,11 +0,0 @@
----
-title: "Job Queue Plugin"
-weight: 10
-date: 2023-07-14T16:57:50.785Z
-showtoc: false
-generated: true
----
-<!-- This file was generated from the Vendure source. Do not modify. Instead, re-run the "docs:build" script -->
-
-
-# job-queue-plugin

+ 0 - 11
docs/docs/reference/typescript-api/core-plugins/payments-plugin/_index.md

@@ -1,11 +0,0 @@
----
-title: "Payments Plugin"
-weight: 10
-date: 2023-07-14T16:57:50.794Z
-showtoc: false
-generated: true
----
-<!-- This file was generated from the Vendure source. Do not modify. Instead, re-run the "docs:build" script -->
-
-
-# payments-plugin

+ 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/how-to/importing-data/#product-import-format) and
+Parses the contents of the [product import CSV file](/guides/how-to/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"

+ 1 - 1
docs/docs/reference/typescript-api/job-queue/in-memory-job-buffer-storage-strategy.md

@@ -18,7 +18,7 @@ _not_ be used in production, since it will lose data in the event of the server
 stopping.
 
 Instead, use the <a href='/reference/typescript-api/job-queue/default-job-queue-plugin#defaultjobqueueplugin'>DefaultJobQueuePlugin</a> with the `useDatabaseForBuffer: true` option set,
-or the <a href='/reference/typescript-api/core-plugins/job-queue-plugin/bull-mqjob-queue-plugin#bullmqjobqueueplugin'>BullMQJobQueuePlugin</a> or another custom strategy with persistent storage.
+or the {@link BullMQJobQueuePlugin} or another custom strategy with persistent storage.
 
 ```ts title="Signature"
 class InMemoryJobBufferStorageStrategy implements JobBufferStorageStrategy {

+ 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
 

+ 72 - 1
docs/sidebars.js

@@ -125,10 +125,24 @@ const sidebars = {
         {
             type: 'category',
             label: 'Deployment',
-            items: [{ type: 'autogenerated', dirName: 'guides/deployment' }],
             customProps: {
                 icon: icon.cloudArrowUp,
             },
+            items: [
+                'guides/deployment/production-configuration/index',
+                'guides/deployment/using-docker',
+                'guides/deployment/horizontal-scaling',
+                'guides/deployment/getting-data-into-production',
+                'guides/deployment/server-resource-requirements',
+                'guides/deployment/deploying-admin-ui',
+                {
+                    type: 'html',
+                    value: 'Guides',
+                    className: 'sidebar-section-header',
+                },
+                'guides/deployment/deploy-to-google-cloud-run/index',
+                'guides/deployment/deploy-to-northflank/index',
+            ],
         },
     ],
     referenceSidebar: [
@@ -136,6 +150,9 @@ const sidebars = {
             type: 'doc',
             id: 'reference/index',
             className: 'reference-index',
+            customProps: {
+                icon: icon.book,
+            },
         },
         {
             type: 'category',
@@ -146,6 +163,60 @@ const sidebars = {
                 icon: icon.tsLogo,
             },
         },
+        {
+            type: 'category',
+            label: 'Core Plugins',
+            customProps: {
+                viewBox: '0 0 128 128',
+                icon: icon.tsLogo,
+            },
+            items: [
+                {
+                    type: 'category',
+                    label: 'AdminUiPlugin',
+                    link: { type: 'doc', id: 'reference/core-plugins/admin-ui-plugin/index' },
+                    items: [{ type: 'autogenerated', dirName: 'reference/core-plugins/admin-ui-plugin' }],
+                },
+                {
+                    type: 'category',
+                    label: 'AssetServerPlugin',
+                    link: { type: 'doc', id: 'reference/core-plugins/asset-server-plugin/index' },
+                    items: [{ type: 'autogenerated', dirName: 'reference/core-plugins/asset-server-plugin' }],
+                },
+                {
+                    type: 'category',
+                    label: 'ElasticsearchPlugin',
+                    link: { type: 'doc', id: 'reference/core-plugins/elasticsearch-plugin/index' },
+                    items: [
+                        { type: 'autogenerated', dirName: 'reference/core-plugins/elasticsearch-plugin' },
+                    ],
+                },
+                {
+                    type: 'category',
+                    label: 'EmailPlugin',
+                    link: { type: 'doc', id: 'reference/core-plugins/email-plugin/index' },
+                    items: [{ type: 'autogenerated', dirName: 'reference/core-plugins/email-plugin' }],
+                },
+                {
+                    type: 'category',
+                    label: 'HardenPlugin',
+                    link: { type: 'doc', id: 'reference/core-plugins/harden-plugin/index' },
+                    items: [{ type: 'autogenerated', dirName: 'reference/core-plugins/harden-plugin' }],
+                },
+                {
+                    type: 'category',
+                    label: 'JobQueuePlugin',
+                    link: { type: 'doc', id: 'reference/core-plugins/job-queue-plugin/index' },
+                    items: [{ type: 'autogenerated', dirName: 'reference/core-plugins/job-queue-plugin' }],
+                },
+                {
+                    type: 'category',
+                    label: 'PaymentsPlugin',
+                    link: { type: 'doc', id: 'reference/core-plugins/payments-plugin/index' },
+                    items: [{ type: 'autogenerated', dirName: 'reference/core-plugins/payments-plugin' }],
+                },
+            ],
+        },
         {
             type: 'category',
             label: 'GraphQL API',

+ 9 - 0
docs/src/css/custom.css

@@ -82,3 +82,12 @@ html[data-theme='dark'] {
 .members-wrapper > h3 {
     margin-top: 42px;
 }
+
+.sidebar-section-header {
+    text-transform: uppercase;
+    font-weight: bold;
+    font-size: 12px;
+    opacity: 0.6;
+    padding: var(--ifm-menu-link-padding-vertical)
+         var(--ifm-menu-link-padding-horizontal);
+}

+ 0 - 5
docs/src/css/overrides.css

@@ -24,11 +24,6 @@ body {
     word-break: break-all;
 }
 
-.reference-index {
-    padding-left: 21px;
-    margin-bottom: 8px;
-}
-
 .menu__caret:before {
     background: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="w-6 h-6"><path stroke-linecap="round" stroke-linejoin="round" d="M4.5 15.75l7.5-7.5 7.5 7.5" /></svg>');
     opacity: 0.6;

+ 17 - 3
docs/src/theme/DocSidebarItem/Link/index.js

@@ -1,10 +1,24 @@
 import React from 'react';
 import Link from '@theme-original/DocSidebarItem/Link';
+import styles from './styles.module.css';
 
 export default function LinkWrapper(props) {
+    const icon = props.item.customProps?.icon;
+    const isTopLevel = props.level === 1;
     return (
-        <>
-            <Link {...props} />
-        </>
+        <div className={styles.linkWrapper} style={{ marginBottom: isTopLevel ? '8px' : 0 }}>
+            {icon ? (
+                <svg
+                    xmlns="http://www.w3.org/2000/svg"
+                    viewBox={props.item.customProps?.viewBox ?? '0 0 20 20'}
+                    fill="currentColor"
+                    className={styles.linkIcon}
+                    dangerouslySetInnerHTML={{ __html: icon }}
+                ></svg>
+            ) : null}
+            <div style={{ flex: 1 }}>
+                <Link {...props} />
+            </div>
+        </div>
     );
 }

+ 13 - 0
docs/src/theme/DocSidebarItem/Link/styles.module.css

@@ -0,0 +1,13 @@
+.linkWrapper {
+    display: flex;
+    flex-direction: row;
+}
+.linkIcon {
+    width: 20px;
+    height: 20px;
+    margin-top: 5px;
+    opacity: 0.5;
+}
+.linkName {
+    flex: 1;
+}

+ 3 - 3
packages/common/src/shared-types.ts

@@ -209,7 +209,7 @@ export type CustomFieldsObject = { [key: string]: any };
  * The values are loaded at run-time by the Admin UI app, and allow core configuration to be
  * managed without the need to re-build the application.
  *
- * @docsCategory core plugins/AdminUiPlugin
+ * @docsCategory common/AdminUi
  */
 export interface AdminUiConfig {
     /**
@@ -333,7 +333,7 @@ export interface AdminUiConfig {
  * @description
  * Configures the path to a custom-build of the Admin UI app.
  *
- * @docsCategory core plugins/AdminUiPlugin
+ * @docsCategory common/AdminUi
  */
 export interface AdminUiAppConfig {
     /**
@@ -361,7 +361,7 @@ export interface AdminUiAppConfig {
  * @description
  * Information about the Admin UI app dev server.
  *
- * @docsCategory core plugins/AdminUiPlugin
+ * @docsCategory common/AdminUi
  */
 export interface AdminUiAppDevModeConfig {
     /**

+ 1 - 1
packages/core/src/plugin/default-search-plugin/default-search-plugin.ts

@@ -64,7 +64,7 @@ export interface DefaultSearchReindexResponse extends SearchReindexResponse {
  * };
  * ```
  *
- * @docsCategory core plugins/DefaultSearchPlugin
+ * @docsCategory DefaultSearchPlugin
  */
 @VendurePlugin({
     imports: [PluginCommonModule],

+ 1 - 1
packages/core/src/plugin/default-search-plugin/types.ts

@@ -10,7 +10,7 @@ import { SearchStrategy } from './search-strategy/search-strategy';
  * @description
  * Options which configure the behaviour of the DefaultSearchPlugin
  *
- * @docsCategory core plugins/DefaultSearchPlugin
+ * @docsCategory DefaultSearchPlugin
  */
 export interface DefaultSearchPluginInitOptions {
     /**

+ 30 - 13
scripts/docs/generate-typescript-docs.ts

@@ -16,21 +16,38 @@ interface DocsSectionConfig {
 
 const sections: DocsSectionConfig[] = [
     {
-        sourceDirs: [
-            'packages/core/src/',
-            'packages/common/src/',
-            'packages/admin-ui-plugin/src/',
-            'packages/asset-server-plugin/src/',
-            'packages/email-plugin/src/',
-            'packages/elasticsearch-plugin/src/',
-            'packages/job-queue-plugin/src/',
-            'packages/payments-plugin/src/',
-            'packages/testing/src/',
-            'packages/harden-plugin/src/',
-        ],
+        sourceDirs: ['packages/core/src/', 'packages/common/src/', 'packages/testing/src/'],
         exclude: [/generated-shop-types/],
         outputPath: 'typescript-api',
     },
+    {
+        sourceDirs: ['packages/admin-ui-plugin/src/'],
+        outputPath: '',
+    },
+    {
+        sourceDirs: ['packages/asset-server-plugin/src/'],
+        outputPath: '',
+    },
+    {
+        sourceDirs: ['packages/email-plugin/src/'],
+        outputPath: '',
+    },
+    {
+        sourceDirs: ['packages/elasticsearch-plugin/src/'],
+        outputPath: '',
+    },
+    {
+        sourceDirs: ['packages/job-queue-plugin/src/'],
+        outputPath: '',
+    },
+    {
+        sourceDirs: ['packages/payments-plugin/src/'],
+        outputPath: '',
+    },
+    {
+        sourceDirs: ['packages/harden-plugin/src/'],
+        outputPath: '',
+    },
     {
         sourceDirs: ['packages/admin-ui/src/lib/', 'packages/ui-devkit/src/'],
         exclude: [/generated-types/],
@@ -78,7 +95,7 @@ function generateTypescriptDocs(config: DocsSectionConfig[], isWatchMode: boolea
         for (const page of docsPages) {
             const { category, fileName, declarations } = page;
             for (const declaration of declarations) {
-                const pathToTypeDoc = `reference/${outputPath}/${
+                const pathToTypeDoc = `reference/${outputPath ? `${outputPath}/` : ''}${
                     category ? category.map(part => normalizeForUrlPart(part)).join('/') + '/' : ''
                 }${fileName === 'index' ? '' : fileName}#${toHash(declaration.title)}`;
                 globalTypeMap.set(declaration.title, pathToTypeDoc);

+ 1 - 1
scripts/docs/typescript-docs-renderer.ts

@@ -25,7 +25,7 @@ export class TypescriptDocsRenderer {
     render(pages: DocsPage[], docsUrl: string, outputPath: string, typeMap: TypeMap): number {
         let generatedCount = 0;
         if (!fs.existsSync(outputPath)) {
-            fs.mkdirSync(outputPath);
+            fs.ensureDirSync(outputPath);
         }
 
         for (const page of pages) {