@vendure/docs 0.0.0-202601221213 → 0.0.0-202601271334

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (113) hide show
  1. package/dist/dates.generated.js +111 -111
  2. package/docs/guides/core-concepts/auth/index.mdx +1 -1
  3. package/docs/guides/core-concepts/channels/index.mdx +2 -2
  4. package/docs/guides/core-concepts/collections/index.mdx +1 -1
  5. package/docs/guides/core-concepts/customers/index.mdx +1 -1
  6. package/docs/guides/core-concepts/email/index.mdx +1 -1
  7. package/docs/guides/core-concepts/images-assets/index.mdx +1 -1
  8. package/docs/guides/core-concepts/money/index.mdx +3 -3
  9. package/docs/guides/core-concepts/orders/index.mdx +2 -2
  10. package/docs/guides/core-concepts/payment/index.mdx +2 -2
  11. package/docs/guides/core-concepts/products/index.mdx +1 -1
  12. package/docs/guides/core-concepts/promotions/index.mdx +2 -2
  13. package/docs/guides/core-concepts/shipping/index.mdx +2 -2
  14. package/docs/guides/deployment/deploy-to-digital-ocean-app-platform/index.mdx +1 -1
  15. package/docs/guides/deployment/deploy-to-northflank/index.mdx +1 -1
  16. package/docs/guides/deployment/deploy-to-railway/index.mdx +1 -1
  17. package/docs/guides/deployment/deploy-to-render/index.mdx +1 -1
  18. package/docs/guides/deployment/deploying-admin-ui.mdx +1 -1
  19. package/docs/guides/deployment/getting-data-into-production.mdx +2 -2
  20. package/docs/guides/deployment/horizontal-scaling.mdx +2 -2
  21. package/docs/guides/deployment/production-configuration/index.mdx +2 -2
  22. package/docs/guides/deployment/server-resource-requirements.mdx +1 -1
  23. package/docs/guides/developer-guide/cache/index.mdx +1 -1
  24. package/docs/guides/developer-guide/channel-aware/index.mdx +2 -2
  25. package/docs/guides/developer-guide/cli/index.mdx +2 -2
  26. package/docs/guides/developer-guide/configuration/index.mdx +2 -2
  27. package/docs/guides/developer-guide/custom-fields/index.mdx +7 -7
  28. package/docs/guides/developer-guide/custom-permissions/index.mdx +1 -1
  29. package/docs/guides/developer-guide/database-entity/index.mdx +6 -6
  30. package/docs/guides/developer-guide/error-handling/index.mdx +1 -1
  31. package/docs/guides/developer-guide/events/index.mdx +1 -1
  32. package/docs/guides/developer-guide/extend-graphql-api/index.mdx +3 -3
  33. package/docs/guides/developer-guide/has-custom-fields/index.mdx +5 -5
  34. package/docs/guides/developer-guide/importing-data/index.mdx +3 -3
  35. package/docs/guides/developer-guide/migrating-from-v1/breaking-api-changes.mdx +2 -2
  36. package/docs/guides/developer-guide/migrating-from-v1/index.mdx +3 -3
  37. package/docs/guides/developer-guide/migrations/index.mdx +2 -2
  38. package/docs/guides/developer-guide/overview/index.mdx +2 -2
  39. package/docs/guides/developer-guide/plugins/index.mdx +4 -4
  40. package/docs/guides/developer-guide/rest-endpoint/index.mdx +2 -2
  41. package/docs/guides/developer-guide/scheduled-tasks/index.mdx +3 -3
  42. package/docs/guides/developer-guide/stand-alone-scripts/index.mdx +1 -1
  43. package/docs/guides/developer-guide/strategies-configurable-operations/index.mdx +1 -1
  44. package/docs/guides/developer-guide/testing/index.mdx +2 -2
  45. package/docs/guides/developer-guide/the-api-layer/index.mdx +2 -2
  46. package/docs/guides/developer-guide/the-service-layer/index.mdx +1 -1
  47. package/docs/guides/developer-guide/translations/index.mdx +1 -1
  48. package/docs/guides/developer-guide/updating/index.mdx +1 -1
  49. package/docs/guides/developer-guide/uploading-files/index.mdx +3 -3
  50. package/docs/guides/extending-the-admin-ui/creating-detail-views/index.mdx +3 -3
  51. package/docs/guides/extending-the-admin-ui/creating-list-views/index.mdx +3 -3
  52. package/docs/guides/extending-the-admin-ui/custom-data-table-components/index.mdx +1 -1
  53. package/docs/guides/extending-the-admin-ui/custom-form-inputs/index.mdx +3 -3
  54. package/docs/guides/extending-the-admin-ui/custom-timeline-components/index.mdx +1 -1
  55. package/docs/guides/extending-the-admin-ui/dashboard-widgets/index.mdx +1 -1
  56. package/docs/guides/extending-the-admin-ui/defining-routes/index.mdx +2 -2
  57. package/docs/guides/extending-the-admin-ui/getting-started/index.mdx +5 -5
  58. package/docs/guides/extending-the-admin-ui/nav-menu/index.mdx +1 -1
  59. package/docs/guides/extending-the-admin-ui/using-other-frameworks/index.mdx +1 -1
  60. package/docs/guides/extending-the-dashboard/creating-pages/detail-pages.mdx +1 -1
  61. package/docs/guides/extending-the-dashboard/creating-pages/index.mdx +2 -2
  62. package/docs/guides/extending-the-dashboard/creating-pages/list-pages.mdx +2 -2
  63. package/docs/guides/extending-the-dashboard/creating-pages/tabbed-pages.mdx +1 -1
  64. package/docs/guides/extending-the-dashboard/custom-form-components/index.mdx +2 -2
  65. package/docs/guides/extending-the-dashboard/customizing-pages/action-bar-items.mdx +1 -1
  66. package/docs/guides/extending-the-dashboard/customizing-pages/customizing-detail-pages.mdx +2 -2
  67. package/docs/guides/extending-the-dashboard/customizing-pages/customizing-login-page.mdx +1 -1
  68. package/docs/guides/extending-the-dashboard/customizing-pages/index.mdx +4 -4
  69. package/docs/guides/extending-the-dashboard/customizing-pages/page-blocks.mdx +2 -2
  70. package/docs/guides/extending-the-dashboard/data-fetching/index.mdx +1 -1
  71. package/docs/guides/extending-the-dashboard/extending-overview/index.mdx +3 -3
  72. package/docs/guides/extending-the-dashboard/migration/index.mdx +4 -4
  73. package/docs/guides/extending-the-dashboard/navigation/index.mdx +1 -1
  74. package/docs/guides/getting-started/graphql-intro/index.mdx +5 -5
  75. package/docs/guides/getting-started/installation/index.mdx +5 -5
  76. package/docs/guides/getting-started/try-the-api/index.mdx +2 -2
  77. package/docs/guides/how-to/cms-integration-plugin/index.mdx +12 -12
  78. package/docs/guides/how-to/codegen/index.mdx +1 -1
  79. package/docs/guides/how-to/configurable-products/index.mdx +1 -1
  80. package/docs/guides/how-to/digital-products/index.mdx +1 -1
  81. package/docs/guides/how-to/github-oauth-authentication/index.mdx +1 -1
  82. package/docs/guides/how-to/google-oauth-authentication/index.mdx +3 -3
  83. package/docs/guides/how-to/multi-vendor-marketplaces/index.mdx +2 -2
  84. package/docs/guides/how-to/paginated-list/index.mdx +1 -1
  85. package/docs/guides/how-to/publish-plugin/index.mdx +3 -3
  86. package/docs/guides/how-to/s3-asset-storage/index.mdx +1 -1
  87. package/docs/guides/storefront/active-order/index.mdx +4 -4
  88. package/docs/guides/storefront/checkout-flow/index.mdx +3 -3
  89. package/docs/guides/storefront/codegen/index.mdx +1 -1
  90. package/docs/guides/storefront/connect-api/index.mdx +2 -2
  91. package/docs/guides/storefront/customer-accounts/index.mdx +1 -1
  92. package/docs/guides/storefront/listing-products/index.mdx +1 -1
  93. package/docs/guides/storefront/navigation-menu/index.mdx +1 -1
  94. package/docs/guides/storefront/order-workflow/index.mdx +2 -2
  95. package/docs/guides/storefront/product-detail/index.mdx +4 -4
  96. package/docs/reference/admin-ui-api/ui-devkit/admin-ui-extension.mdx +1 -1
  97. package/docs/reference/core-plugins/admin-ui-plugin/index.mdx +1 -1
  98. package/docs/reference/core-plugins/dashboard-plugin/index.mdx +1 -1
  99. package/docs/reference/core-plugins/telemetry-plugin/index.mdx +1 -1
  100. package/docs/reference/typescript-api/auth/authentication-strategy.mdx +1 -1
  101. package/docs/reference/typescript-api/common/admin-ui/admin-ui-config.mdx +1 -1
  102. package/docs/reference/typescript-api/custom-fields/custom-field-type.mdx +1 -1
  103. package/docs/reference/typescript-api/import-export/import-parser.mdx +1 -1
  104. package/docs/reference/typescript-api/import-export/importer.mdx +1 -1
  105. package/docs/reference/typescript-api/import-export/populate.mdx +1 -1
  106. package/docs/reference/typescript-api/job-queue/default-job-queue-plugin.mdx +1 -1
  107. package/docs/reference/typescript-api/orders/order-item-price-calculation-strategy.mdx +1 -1
  108. package/docs/reference/typescript-api/services/asset-service.mdx +1 -1
  109. package/docs/reference/typescript-api/services/history-service.mdx +1 -1
  110. package/docs/reference/typescript-api/worker/bootstrap-worker.mdx +1 -1
  111. package/docs/user-guide/settings/taxes.mdx +1 -1
  112. package/package.json +1 -1
  113. package/src/dates.generated.ts +111 -111
@@ -596,7 +596,7 @@ Now that you have a basic Vendure server up and running, you can explore some of
596
596
  that you might need for a full production setup:
597
597
 
598
598
  - Configure [health checks](https://northflank.com/docs/v1/application/observe/configure-health-checks) to ensure any container crashes are rapidly detected and restarted. Also see the
599
- [Vendure health check docs](/guides/deployment/using-docker#healthreadiness-checks).
599
+ [Vendure health check docs](/deployment/using-docker#healthreadiness-checks).
600
600
  - [Set up a Redis instance](https://northflank.com/docs/v1/application/databases-and-persistence/deploy-databases-on-northflank/deploy-redis-on-northflank) so that you can take advantage of our highly performant [BullMQJobQueuePlugin](/reference/core-plugins/job-queue-plugin/bull-mqjob-queue-plugin) and set up [Redis-based session caching](/reference/typescript-api/auth/session-cache-strategy/) to handle multi-instance deployments.
601
601
  - With the above in place, you can safely start to [scale your server instances](https://northflank.com/docs/v1/application/scale/scaling-replicas) to handle more traffic.
602
602
  - [Add a custom domain](https://northflank.com/docs/v1/application/domains/add-a-domain-to-your-account) using Northflank's powerful DNS management system.
@@ -198,5 +198,5 @@ want to consider the following:
198
198
  - Use Redis to power the job queue and session cache. This is not only more performant, but will enable horizontal scaling of your
199
199
  server and worker instances.
200
200
  - [Railway Redis docs](https://docs.railway.app/guides/redis)
201
- - [Vendure horizontal scaling docs](/guides/deployment/horizontal-scaling)
201
+ - [Vendure horizontal scaling docs](/deployment/horizontal-scaling)
202
202
 
@@ -217,5 +217,5 @@ want to consider the following:
217
217
  - Use Redis to power the job queue and session cache. This is not only more performant, but will enable horizontal scaling of your
218
218
  server and worker instances.
219
219
  - [Render Redis docs](https://docs.render.com/redis#creating-a-redis-instance)
220
- - [Vendure horizontal scaling docs](/guides/deployment/horizontal-scaling)
220
+ - [Vendure horizontal scaling docs](/deployment/horizontal-scaling)
221
221
 
@@ -8,7 +8,7 @@ showtoc: true
8
8
  If you have customized the Admin UI with extensions, you should compile your custom Admin UI app ahead of time
9
9
  before deploying it. This will bundle the app into a set of static files which are then served by the AdminUiPlugin.
10
10
 
11
- - [Guide: Compiling the Admin UI as a deployment step](/guides/extending-the-admin-ui/getting-started/#compiling-as-a-deployment-step).
11
+ - [Guide: Compiling the Admin UI as a deployment step](/extending-the-admin-ui/getting-started/#compiling-as-a-deployment-step).
12
12
 
13
13
  :::warning
14
14
 
@@ -41,8 +41,8 @@ Set the `DB_SYNCHRONIZE` variable to `true` on first start, and then after the s
41
41
 
42
42
  ## Importing initial & catalog data
43
43
 
44
- Importing initial and catalog data can be handled by Vendure `populate()` helper function - see the [Importing Product Data guide](/guides/developer-guide/importing-data/).
44
+ Importing initial and catalog data can be handled by Vendure `populate()` helper function - see the [Importing Product Data guide](/developer-guide/importing-data/).
45
45
 
46
46
  ## Importing other data
47
47
 
48
- Any kinds of data not covered by the `populate()` function can be imported using a custom script, which can use any Vendure service or service defined by your custom plugins to populate data in any way you like. See the [Stand-alone scripts guide](/guides/developer-guide/stand-alone-scripts/).
48
+ Any kinds of data not covered by the `populate()` function can be imported using a custom script, which can use any Vendure service or service defined by your custom plugins to populate data in any way you like. See the [Stand-alone scripts guide](/developer-guide/stand-alone-scripts/).
@@ -11,7 +11,7 @@ This type of scaling has two main advantages:
11
11
  1. It can enable increased throughput (requests/second) by distributing the incoming requests between multiple instances.
12
12
  2. It can increase resilience because if a single instance fails, the other instances will still be able to service requests.
13
13
 
14
- As discussed in the [Server resource requirements guide](/guides/deployment/server-resource-requirements), horizontal scaling can be the most cost-effective way of deploying your Vendure server due to the single-threaded nature of Node.js.
14
+ As discussed in the [Server resource requirements guide](/deployment/server-resource-requirements), horizontal scaling can be the most cost-effective way of deploying your Vendure server due to the single-threaded nature of Node.js.
15
15
 
16
16
  In Vendure, both the server and the worker can be scaled horizontally. Scaling the server will increase the throughput of the GraphQL APIs, whereas scaling the worker can increase the speed with which the job queue is processed by allowing more jobs to be run in parallel.
17
17
 
@@ -43,7 +43,7 @@ One way of implementing horizontal scaling is to use Docker to wrap your Vendure
43
43
  Some hosting providers allow you to provide a Docker image and will then run multiple instances of that image. Kubernetes can also be used to manage multiple instances
44
44
  of a Docker image.
45
45
 
46
- For a more complete guide, see the [Using Docker guide](/guides/deployment/using-docker).
46
+ For a more complete guide, see the [Using Docker guide](/deployment/using-docker).
47
47
 
48
48
  ## Using PM2
49
49
 
@@ -20,7 +20,7 @@ The `APP_ENV` environment variable can then be set using the admin dashboard of
20
20
 
21
21
  ![A typical UI for setting env vars](./env-var-ui.webp)
22
22
 
23
- If you are using [Docker or Kubernetes](/guides/deployment/using-docker), they include their own methods of setting environment variables.
23
+ If you are using [Docker or Kubernetes](/deployment/using-docker), they include their own methods of setting environment variables.
24
24
 
25
25
  ## Superadmin credentials
26
26
 
@@ -135,4 +135,4 @@ For more details on configuring `trust proxy`, refer to the [Express documentati
135
135
 
136
136
  ## Security Considerations
137
137
 
138
- Please read over the [Security](/guides/developer-guide/security) section of the Developer Guide for more information on how to secure your Vendure application.
138
+ Please read over the [Security](/developer-guide/security) section of the Developer Guide for more information on how to secure your Vendure application.
@@ -18,7 +18,7 @@ CPU resources are generally measured in "cores" or "vCPUs" (virtual CPUs) depend
18
18
 
19
19
  Because Node.js is single-threaded, a single instance of the Vendure server or worker will not be able to take advantage of multiple CPUs. For example, if you set up a server instance running with 4 CPUs, the server will only use 1 of those CPUs and the other 3 will be wasted.
20
20
 
21
- Therefore, when looking to optimize performance (for example, the number of requests that can be serviced per second), it makes sense to scale horizontally by running multiple instances of the Vendure server. See the [Horizontal Scaling guide](/guides/deployment/horizontal-scaling).
21
+ Therefore, when looking to optimize performance (for example, the number of requests that can be serviced per second), it makes sense to scale horizontally by running multiple instances of the Vendure server. See the [Horizontal Scaling guide](/deployment/horizontal-scaling).
22
22
 
23
23
  ## Load testing
24
24
 
@@ -38,7 +38,7 @@ export const config: VendureConfig = {
38
38
  };
39
39
  ```
40
40
 
41
- After enabling the `DefaultCachePlugin`, you will need to [generate a migration](/guides/developer-guide/migrations/) to add the necessary
41
+ After enabling the `DefaultCachePlugin`, you will need to [generate a migration](/developer-guide/migrations/) to add the necessary
42
42
  tables to the database.
43
43
 
44
44
  ### RedisCachePlugin
@@ -7,7 +7,7 @@ showtoc: true
7
7
 
8
8
  Making an entity channel-aware means that it can be associated with a specific [Channel](/reference/typescript-api/entities/channel).
9
9
  This is useful when you want to have different data or features for different channels. First you will have to create
10
- an entity ([Define a database entity](/guides/developer-guide/database-entity/)) that implements the `ChannelAware` interface.
10
+ an entity ([Define a database entity](/developer-guide/database-entity/)) that implements the `ChannelAware` interface.
11
11
  This interface requires the entity to provide a `channels` property
12
12
 
13
13
  ```ts title="src/plugins/requests/entities/product-request.entity.ts"
@@ -64,7 +64,7 @@ export class RequestService {
64
64
  }
65
65
  }
66
66
  ```
67
- For [Translatable entities](/guides/developer-guide/translations/), the best place to assign the channels is inside the `beforeSave` input of the [TranslatableSaver](/reference/typescript-api/service-helpers/translatable-saver/) helper class.
67
+ For [Translatable entities](/developer-guide/translations/), the best place to assign the channels is inside the `beforeSave` input of the [TranslatableSaver](/reference/typescript-api/service-helpers/translatable-saver/) helper class.
68
68
 
69
69
 
70
70
  ## Querying channel-aware entities
@@ -191,7 +191,7 @@ yarn vendure add -p MyPlugin --config ./custom-vendure.config.ts
191
191
 
192
192
  ## The Migrate Command
193
193
 
194
- The `migrate` command is used to generate and manage [database migrations](/guides/developer-guide/migrations) for your Vendure project.
194
+ The `migrate` command is used to generate and manage [database migrations](/developer-guide/migrations) for your Vendure project.
195
195
 
196
196
  ### Interactive Mode
197
197
 
@@ -275,7 +275,7 @@ The `schema` command was added in Vendure v3.5
275
275
  The `schema` command allows you to generate a schema file for your Admin or Shop APIs, in either the GraphQL schema definition language (SDL)
276
276
  or as JSON.
277
277
 
278
- This is useful when integrating with GraphQL tooling such as your [IDE's GraphQL plugin](/guides/getting-started/graphql-intro/#ide-plugins).
278
+ This is useful when integrating with GraphQL tooling such as your [IDE's GraphQL plugin](/getting-started/graphql-intro/#ide-plugins).
279
279
 
280
280
  ### Interactive Mode
281
281
 
@@ -66,7 +66,7 @@ export const config: VendureConfig = {
66
66
 
67
67
  ### Configuring authentication
68
68
 
69
- Authentication settings are configured with [`VendureConfig.authOptions`](/reference/typescript-api/auth/auth-options/). The most important setting here is whether the storefront client will use cookies or bearer tokens to manage user sessions. For more detail on this topic, see [the Managing Sessions guide](/guides/storefront/connect-api/#managing-sessions).
69
+ Authentication settings are configured with [`VendureConfig.authOptions`](/reference/typescript-api/auth/auth-options/). The most important setting here is whether the storefront client will use cookies or bearer tokens to manage user sessions. For more detail on this topic, see [the Managing Sessions guide](/storefront/connect-api/#managing-sessions).
70
70
 
71
71
  The username and default password of the superadmin user can also be specified here. In production, it is advisable to use environment variables for these settings (see the following section on usage of environment variables).
72
72
 
@@ -179,7 +179,7 @@ export const config: VendureConfig = {
179
179
 
180
180
  :::info
181
181
 
182
- In production, the way you manage environment variables will depend on your hosting provider. Read more about this in our [Production Configuration guide](/guides/deployment/production-configuration/).
182
+ In production, the way you manage environment variables will depend on your hosting provider. Read more about this in our [Production Configuration guide](/deployment/production-configuration/).
183
183
 
184
184
  :::
185
185
 
@@ -14,7 +14,7 @@ Some use-cases for custom fields include:
14
14
  * Adding a longitude and latitude to the `StockLocation` for use in selecting the closest location to a customer.
15
15
 
16
16
  :::note
17
- Custom fields are not solely restricted to Vendure's native entities though, it's also possible to add support for custom fields to your own custom entities. See: [Supporting custom fields](/guides/developer-guide/database-entity/#supporting-custom-fields)
17
+ Custom fields are not solely restricted to Vendure's native entities though, it's also possible to add support for custom fields to your own custom entities. See: [Supporting custom fields](/developer-guide/database-entity/#supporting-custom-fields)
18
18
  :::
19
19
 
20
20
  ## Defining custom fields
@@ -39,7 +39,7 @@ const config = {
39
39
 
40
40
  With the example config above, the following will occur:
41
41
 
42
- 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](/guides/developer-guide/migrations/).
42
+ 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](/developer-guide/migrations/).
43
43
  2. The GraphQL APIs will be modified to add the custom fields to the `Product` and `User` types respectively.
44
44
  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.
45
45
 
@@ -643,7 +643,7 @@ const config = {
643
643
  The `requiresPermission` property only affects the _Admin API_. Access to a custom field via the _Shop API_ is controlled by the `public` property.
644
644
 
645
645
  If you need special logic to control access to a custom field in the Shop API, you can set `public: false` and then implement
646
- a custom [field resolver](/guides/developer-guide/extend-graphql-api/#add-fields-to-existing-types) which contains the necessary logic, and returns
646
+ a custom [field resolver](/developer-guide/extend-graphql-api/#add-fields-to-existing-types) which contains the necessary logic, and returns
647
647
  the entity's custom field value if the current customer meets the requirements.
648
648
 
649
649
  :::
@@ -1195,7 +1195,7 @@ This table shows the default form input component used for each custom field typ
1195
1195
 
1196
1196
  The Dashboard app has built-in selection components for "relation" custom fields that reference certain common entity types, such as Asset, Product, ProductVariant and Customer. If you are relating to an entity not covered by the built-in selection components, you will see a generic relation component which allows you to manually enter the ID of the entity you wish to select.
1197
1197
 
1198
- If the generic selector is not suitable, or is you wish to replace one of the built-in selector components, you can create a UI extension that defines a custom field control for that custom field. You can read more about this in the [custom form input guide](/guides/extending-the-admin-ui/custom-form-inputs/)
1198
+ If the generic selector is not suitable, or is you wish to replace one of the built-in selector components, you can create a UI extension that defines a custom field control for that custom field. You can read more about this in the [custom form input guide](/extending-the-admin-ui/custom-form-inputs/)
1199
1199
  :::
1200
1200
 
1201
1201
  ### Specifying the input component
@@ -1281,7 +1281,7 @@ The various configuration options for each of the built-in form input (e.g. `su
1281
1281
 
1282
1282
  ### Custom form input components
1283
1283
 
1284
- If none of the built-in form input components are suitable, you can create your own. This is a more advanced topic which is covered in detail in the [Custom Form Input Components](/guides/extending-the-admin-ui/custom-form-inputs/) guide.
1284
+ If none of the built-in form input components are suitable, you can create your own. This is a more advanced topic which is covered in detail in the [Custom Form Input Components](/extending-the-admin-ui/custom-form-inputs/) guide.
1285
1285
 
1286
1286
  ## Tabbed custom fields
1287
1287
 
@@ -1312,7 +1312,7 @@ const config = {
1312
1312
  ## TypeScript Typings
1313
1313
 
1314
1314
  Because custom fields are generated at run-time, TypeScript has no way of knowing about them based on your
1315
- VendureConfig. Consider the example above - let's say we have a [plugin](/guides/developer-guide/plugins/) which needs to
1315
+ VendureConfig. Consider the example above - let's say we have a [plugin](/developer-guide/plugins/) which needs to
1316
1316
  access the custom field values on a Product entity.
1317
1317
 
1318
1318
  Attempting to access the custom field will result in a TS compiler error:
@@ -1389,7 +1389,7 @@ When you define custom fields on the `OrderLine` entity, the following API chang
1389
1389
  - Admin API: the equivalent mutations for manipulating draft orders and for modifying and order will also have inputs to allow custom field values to be set.
1390
1390
 
1391
1391
  :::info
1392
- To see an example of this in practice, see the [Configurable Product guide](/guides/how-to/configurable-products/)
1392
+ To see an example of this in practice, see the [Configurable Product guide](/how-to/configurable-products/)
1393
1393
  :::
1394
1394
 
1395
1395
  ### Order custom fields
@@ -3,7 +3,7 @@ title: "Define custom permissions"
3
3
  showtoc: true
4
4
  ---
5
5
 
6
- Vendure uses a fine-grained access control system based on roles & permissions. This is described in detail in the [Auth guide](/guides/core-concepts/auth/). The built-in [`Permission` enum](/reference/typescript-api/common/permission/) includes a range of permissions to control create, read, update, and delete access to the built-in entities.
6
+ Vendure uses a fine-grained access control system based on roles & permissions. This is described in detail in the [Auth guide](/core-concepts/auth/). The built-in [`Permission` enum](/reference/typescript-api/common/permission/) includes a range of permissions to control create, read, update, and delete access to the built-in entities.
7
7
 
8
8
  When building plugins, you may need to define new permissions to control access to new functionality. This guide explains how to do so.
9
9
 
@@ -69,7 +69,7 @@ export class ReviewsPlugin {}
69
69
  ```
70
70
 
71
71
  :::note
72
- Once you have added a new entity to your plugin, and the plugin has been added to your VendureConfig plugins array, you must create a [database migration](/guides/developer-guide/migrations/) to create the new table in the database.
72
+ Once you have added a new entity to your plugin, and the plugin has been added to your VendureConfig plugins array, you must create a [database migration](/developer-guide/migrations/) to create the new table in the database.
73
73
  :::
74
74
 
75
75
  ## Using the entity
@@ -112,7 +112,7 @@ In addition to the decorators described above, there are many other decorators p
112
112
 
113
113
  There is also another Vendure-specific decorator for representing monetary values specifically:
114
114
 
115
- - [`@Money()`](/reference/typescript-api/money/money-decorator): This works together with the [`MoneyStrategy`](/reference/typescript-api/money/money-strategy) to allow configurable control over how monetary values are stored in the database. For more information see the [Money & Currency guide](/guides/core-concepts/money/#the-money-decorator).
115
+ - [`@Money()`](/reference/typescript-api/money/money-decorator): This works together with the [`MoneyStrategy`](/reference/typescript-api/money/money-strategy) to allow configurable control over how monetary values are stored in the database. For more information see the [Money & Currency guide](/core-concepts/money/#the-money-decorator).
116
116
 
117
117
  :::info
118
118
  The full list of TypeORM decorators can be found in the [TypeORM decorator reference](https://typeorm.io/decorator-reference)
@@ -121,16 +121,16 @@ The full list of TypeORM decorators can be found in the [TypeORM decorator refer
121
121
 
122
122
  ## Corresponding GraphQL type
123
123
 
124
- Once you have defined a new DB entity, it is likely that you want to expose it in your GraphQL API. Here's how to [define a new type in your GraphQL API](/guides/developer-guide/extend-graphql-api/#defining-a-new-type).
124
+ Once you have defined a new DB entity, it is likely that you want to expose it in your GraphQL API. Here's how to [define a new type in your GraphQL API](/developer-guide/extend-graphql-api/#defining-a-new-type).
125
125
 
126
126
  ## Supporting translations
127
127
 
128
- In case you'd like to make the `ProductReview` entity support content in multiple languages, here's how to [implement the `Translatable` Interface](/guides/developer-guide/translatable).
128
+ In case you'd like to make the `ProductReview` entity support content in multiple languages, here's how to [implement the `Translatable` Interface](/developer-guide/translatable).
129
129
 
130
130
  ## Supporting channels
131
131
 
132
- In case you'd like to support separate `ProductReview` entities per Channel, here's how to [implement the `ChannelAware` Interface](/guides/developer-guide/channel-aware).
132
+ In case you'd like to support separate `ProductReview` entities per Channel, here's how to [implement the `ChannelAware` Interface](/developer-guide/channel-aware).
133
133
 
134
134
  ## Supporting custom fields
135
135
 
136
- Just like you can extend Vendures native entities like `Product` to support your custom needs, you may enable other developers to extend your custom entities too! Here's how to [implement the `HasCustomFields` Interface](/guides/developer-guide/has-custom-fields).
136
+ Just like you can extend Vendures native entities like `Product` to support your custom needs, you may enable other developers to extend your custom entities too! Here's how to [implement the `HasCustomFields` Interface](/developer-guide/has-custom-fields).
@@ -281,7 +281,7 @@ switch (result.applyCouponCode.__typename) {
281
281
  }
282
282
  ```
283
283
 
284
- If we combine this approach with [GraphQL code generation](/guides/storefront/codegen/), then TypeScript will even be able to
284
+ If we combine this approach with [GraphQL code generation](/storefront/codegen/), then TypeScript will even be able to
285
285
  help us ensure that we have handled all possible ErrorResults:
286
286
 
287
287
  ```ts
@@ -242,7 +242,7 @@ export class ProductReviewService {
242
242
 
243
243
  ### Entity events
244
244
 
245
- There is a special event class [`VendureEntityEvent`](/reference/typescript-api/events/vendure-entity-event) for events relating to the creation, update or deletion of entities. Let's say you have a custom entity (see [defining a database entity](/guides/developer-guide/database-entity)) `BlogPost` and you want to trigger an event whenever a new `BlogPost` is created, updated or deleted:
245
+ There is a special event class [`VendureEntityEvent`](/reference/typescript-api/events/vendure-entity-event) for events relating to the creation, update or deletion of entities. Let's say you have a custom entity (see [defining a database entity](/developer-guide/database-entity)) `BlogPost` and you want to trigger an event whenever a new `BlogPost` is created, updated or deleted:
246
246
 
247
247
  ```ts title="src/plugins/blog/events/blog-post-event.ts"
248
248
  import { ID, RequestContext, VendureEntityEvent } from '@vendure/core';
@@ -157,7 +157,7 @@ class BannerAdminResolver {
157
157
  Note that we have used the `@Allow()` decorator to ensure that only users with the `UpdateSettings` permission can call this mutation. We have also wrapped the resolver in a transaction using `@Transaction()`, which is a good idea for any mutation which modifies the database.
158
158
 
159
159
  :::info
160
- For more information on the available decorators, see the [API Layer "decorators" guide](/guides/developer-guide/the-api-layer/#api-decorators).
160
+ For more information on the available decorators, see the [API Layer "decorators" guide](/developer-guide/the-api-layer/#api-decorators).
161
161
  :::
162
162
 
163
163
  Finally, we add the resolver to the plugin metadata:
@@ -191,7 +191,7 @@ export class BannerPlugin {}
191
191
 
192
192
  If you have defined a new database entity, it is likely that you'll want to expose this entity in your GraphQL API. To do so, you'll need to define a corresponding GraphQL type.
193
193
 
194
- Using the `ProductReview` entity from the [Define a database entity guide](/guides/developer-guide/database-entity), let's see how we can expose it as a new type in the API.
194
+ Using the `ProductReview` entity from the [Define a database entity guide](/developer-guide/database-entity), let's see how we can expose it as a new type in the API.
195
195
 
196
196
  As a reminder, here is the `ProductReview` entity:
197
197
 
@@ -384,7 +384,7 @@ export class FieldOverrideExampleResolver {
384
384
 
385
385
  When dealing with operations that return a GraphQL union type, there is an extra step needed.
386
386
 
387
- Union types are commonly returned from mutations in the Vendure APIs. For more detail on this see the section on [ErrorResults](/guides/developer-guide/error-handling#expected-errors-errorresults). For example:
387
+ Union types are commonly returned from mutations in the Vendure APIs. For more detail on this see the section on [ErrorResults](/developer-guide/error-handling#expected-errors-errorresults). For example:
388
388
 
389
389
  ```graphql
390
390
  type MyCustomErrorResult implements ErrorResult {
@@ -3,7 +3,7 @@ title: "Implementing HasCustomFields"
3
3
  showtoc: true
4
4
  ---
5
5
 
6
- From Vendure v2.2, it is possible to add support for [custom fields](/guides/developer-guide/custom-fields/) to your custom entities. This is useful when you are defining a custom entity as part of a plugin which is intended to be used by other developers. For example, a plugin which defines a new entity for storing product reviews might want to allow the developer to add custom fields to the review entity.
6
+ From Vendure v2.2, it is possible to add support for [custom fields](/developer-guide/custom-fields/) to your custom entities. This is useful when you are defining a custom entity as part of a plugin which is intended to be used by other developers. For example, a plugin which defines a new entity for storing product reviews might want to allow the developer to add custom fields to the review entity.
7
7
 
8
8
  ## Defining entities that support custom fields
9
9
 
@@ -52,7 +52,7 @@ export class ProductReview extends VendureEntity implements HasCustomFields {
52
52
 
53
53
  ### Type generation
54
54
 
55
- Given the above entity your [API extension](/guides/developer-guide/extend-graphql-api/) might look like this:
55
+ Given the above entity your [API extension](/developer-guide/extend-graphql-api/) might look like this:
56
56
 
57
57
  ```graphql
58
58
  type ProductReview implements Node {
@@ -88,7 +88,7 @@ In order for Vendure to find the correct input types to extend to, they must con
88
88
  - `Create<EntityName>Input`
89
89
  - `Update<EntityName>Input`
90
90
 
91
- And if your entity is [supporting translations](/guides/developer-guide/translatable):
91
+ And if your entity is [supporting translations](/developer-guide/translatable):
92
92
 
93
93
  - `<EntityName>Translation`
94
94
  - `<EntityName>TranslationInput`
@@ -120,7 +120,7 @@ export type UpdateProductReviewInput = {
120
120
 
121
121
  ## Supporting custom fields in your services
122
122
 
123
- Creating and updating your entity works now by setting the fields like usual, with one important addition being, you mustn't forget to update relations via the `CustomFieldRelationService`. This is needed because a consumer of your plugin may extend the entity with custom fields of type [`relation`](/guides/developer-guide/custom-fields/#properties-for-relation-fields) which need to get saved separately.
123
+ Creating and updating your entity works now by setting the fields like usual, with one important addition being, you mustn't forget to update relations via the `CustomFieldRelationService`. This is needed because a consumer of your plugin may extend the entity with custom fields of type [`relation`](/developer-guide/custom-fields/#properties-for-relation-fields) which need to get saved separately.
124
124
 
125
125
  ```ts title="src/plugins/reviews/services/review.service.ts"
126
126
  import { Injectable } from '@nestjs/common';
@@ -171,4 +171,4 @@ export const config: VendureConfig = {
171
171
 
172
172
  ## Migrations
173
173
 
174
- Extending entities will alter the database schema requiring a migration. See the [migrations guide](/guides/developer-guide/migrations/) for further details.
174
+ Extending entities will alter the database schema requiring a migration. See the [migrations guide](/developer-guide/migrations/) for further details.
@@ -47,7 +47,7 @@ Here's an explanation of each column:
47
47
 
48
48
  ### Importing Custom Field Data
49
49
 
50
- If you have [CustomFields](/guides/developer-guide/custom-fields/) defined on your Product or ProductVariant entities, this data can also be encoded in the import csv:
50
+ If you have [CustomFields](/developer-guide/custom-fields/) defined on your Product or ProductVariant entities, this data can also be encoded in the import csv:
51
51
 
52
52
  * `product:<customFieldName>`: The value of this column will populate `Product.customFields[customFieldName]`.
53
53
  * `variant:<customFieldName>`: The value of this column will populate `ProductVariant.customFields[customFieldName]`.
@@ -264,9 +264,9 @@ Running this script will populate the database with the test data like when you
264
264
 
265
265
  ### Custom populate scripts
266
266
 
267
- If you require more control over how your data is being imported - for example if you also need to import data into custom entities, or import customer or order information - you can create your own CLI script to do this: see [Stand-Alone CLI Scripts](/guides/developer-guide/stand-alone-scripts/).
267
+ If you require more control over how your data is being imported - for example if you also need to import data into custom entities, or import customer or order information - you can create your own CLI script to do this: see [Stand-Alone CLI Scripts](/developer-guide/stand-alone-scripts/).
268
268
 
269
- In addition to all the services available in the [Service Layer](/guides/developer-guide/the-service-layer/), the following specialized import services are available:
269
+ In addition to all the services available in the [Service Layer](/developer-guide/the-service-layer/), the following specialized import services are available:
270
270
 
271
271
  * [`ImportParser`](/reference/typescript-api/import-export/import-parser): Used to parse the CSV file into an array of objects.
272
272
  * [`FastImporterService`](/reference/typescript-api/import-export/fast-importer-service): Used to create new products & variants in bulk, optimized for speed.
@@ -164,7 +164,7 @@ If you are using the `@vendure/ui-devkit` package to generate custom ui extensio
164
164
  - The Admin UI component `vdr-product-selector` has been renamed to `vdr-product-variant-selector` to more accurately represent what it does. If you are using `vdr-product-selector` if any ui extensions code, update it to use the new selector.
165
165
 
166
166
  ### Other breaking API changes
167
- - **End-to-end tests using Jest** will likely run into issues due to our move towards using some dependencies that make use of ES modules. We have found the best solution to be to migrate tests over to [Vitest](https://vitest.dev), which can handle this and is also significantly faster than Jest. See the updated [Testing guide](/guides/developer-guide/testing) for instructions on getting started with Vitest.
167
+ - **End-to-end tests using Jest** will likely run into issues due to our move towards using some dependencies that make use of ES modules. We have found the best solution to be to migrate tests over to [Vitest](https://vitest.dev), which can handle this and is also significantly faster than Jest. See the updated [Testing guide](/developer-guide/testing) for instructions on getting started with Vitest.
168
168
  - Internal `ErrorResult` classes now take a single object argument rather than multiple args.
169
169
  - All monetary values are now represented in the GraphQL APIs with a new `Money` scalar type. If you use [graphql-code-generator](https://the-guild.dev/graphql/codegen), you'll want to tell it to treat this scalar as a number:
170
170
  ```ts
@@ -208,4 +208,4 @@ If you are using the `@vendure/ui-devkit` package to generate custom ui extensio
208
208
  - If you are using the **BullMQJobQueuePlugin**, the minimum Redis recommended version is 6.2.0.
209
209
  - The `WorkerHealthIndicator` which was deprecated in v1.3.0 has been removed, as well as the `jobQueueOptions.enableWorkerHealthCheck` config option.
210
210
  - The `CustomerGroupEntityEvent` (fired on creation, update or deletion of a CustomerGroup) has been renamed to `CustomerGroupEvent`, and the former `CustomerGroupEvent` (fired when Customers are added to or removed from a group) has been renamed to `CustomerGroupChangeEvent`.
211
- - We introduced the [plugin compatibility API](/guides/developer-guide/plugins/#step-7-specify-compatibility) to allow plugins to indicate what version of Vendure they are compatible with. To avoid bootstrap messages you should add this property to your plugins.
211
+ - We introduced the [plugin compatibility API](/developer-guide/plugins/#step-7-specify-compatibility) to allow plugins to indicate what version of Vendure they are compatible with. To avoid bootstrap messages you should add this property to your plugins.
@@ -34,6 +34,6 @@ Migration will consist of these main steps:
34
34
  }
35
35
  }
36
36
  ```
37
- 2. **Migrate your database**. This is covered in detail in the [database migration section](/guides/developer-guide/migrating-from-v1/database-migration).
38
- 3. **Update your custom code** (configuration, plugins, admin ui extensions) to handle the breaking changes. Details of these changes are covered in the [breaking API changes section](/guides/developer-guide/migrating-from-v1/breaking-api-changes).
39
- 4. **Update your storefront** to handle some small breaking changes in the Shop GraphQL API. See the [storefront migration section](/guides/developer-guide/migrating-from-v1/storefront-migration) for details.
37
+ 2. **Migrate your database**. This is covered in detail in the [database migration section](/developer-guide/migrating-from-v1/database-migration).
38
+ 3. **Update your custom code** (configuration, plugins, admin ui extensions) to handle the breaking changes. Details of these changes are covered in the [breaking API changes section](/developer-guide/migrating-from-v1/breaking-api-changes).
39
+ 4. **Update your storefront** to handle some small breaking changes in the Shop GraphQL API. See the [storefront migration section](/developer-guide/migrating-from-v1/storefront-migration) for details.
@@ -4,8 +4,8 @@ title: "Migrations"
4
4
 
5
5
  Database migrations are needed whenever the database schema changes. This can be caused by:
6
6
 
7
- * changes to the [custom fields](/guides/developer-guide/custom-fields/) configuration
8
- * new [database entities defined by plugins](/guides/developer-guide/database-entity/)
7
+ * changes to the [custom fields](/developer-guide/custom-fields/) configuration
8
+ * new [database entities defined by plugins](/developer-guide/database-entity/)
9
9
  * occasional changes to the core Vendure database schema when updating to newer versions
10
10
 
11
11
  ## Synchronize vs migrate
@@ -13,8 +13,8 @@ These are the major parts of a Vendure application:
13
13
 
14
14
  * **Server**: The Vendure server is the part that handles requests coming in to the GraphQL APIs. It serves both the [Shop API](/reference/graphql-api/shop/queries) and [Admin API](/reference/graphql-api/admin/queries), and can send jobs to the Job Queue to be processed by the Worker.
15
15
  * **Worker**: The Worker runs in the background and deals with tasks such as updating the search index, sending emails, and other tasks which may be long-running, resource-intensive or require retries.
16
- * **Dashboard**: The Dashboard is how shop administrators manage orders, customers, products, settings and so on. The Dashboard can be further extended to support custom functionality, as detailed in the [Extending the Dashboard](/guides/extending-the-dashboard/extending-overview/) section
17
- * **Storefront**: With headless commerce, you are free to implement your storefront exactly as you see fit, unconstrained by the back-end, using any technologies that you like. To make this process easier, we have created a number of [storefront starter kits](/guides/storefront/storefront-starters/), as well as [guides on building a storefront](/guides/storefront/connect-api/).
16
+ * **Dashboard**: The Dashboard is how shop administrators manage orders, customers, products, settings and so on. The Dashboard can be further extended to support custom functionality, as detailed in the [Extending the Dashboard](/extending-the-dashboard/extending-overview/) section
17
+ * **Storefront**: With headless commerce, you are free to implement your storefront exactly as you see fit, unconstrained by the back-end, using any technologies that you like. To make this process easier, we have created a number of [storefront starter kits](/storefront/storefront-starters/), as well as [guides on building a storefront](/storefront/connect-api/).
18
18
 
19
19
  ![./Vendure_docs-architecture.webp](./Vendure_docs-architecture.webp)
20
20
 
@@ -143,7 +143,7 @@ This is the recommended way of creating a new plugin.
143
143
 
144
144
  ## Writing a plugin from scratch
145
145
 
146
- Although the [Vendure CLI](/guides/developer-guide/cli/) is the recommended way to create a new plugin, it can be useful to understand the process of creating
146
+ Although the [Vendure CLI](/developer-guide/cli/) is the recommended way to create a new plugin, it can be useful to understand the process of creating
147
147
  a plugin manually.
148
148
 
149
149
  Vendure **plugins** are used to extend the core functionality of the server. Plugins can be pre-made functionality that you can install via npm, or they can be custom plugins that you write yourself.
@@ -164,7 +164,7 @@ For any unit of functionality that you need to add to your project, you'll be cr
164
164
  :::info
165
165
  For a complete working example of a Vendure plugin, see the [real-world-vendure Reviews plugin](https://github.com/vendurehq/real-world-vendure/tree/master/src/plugins/reviews)
166
166
 
167
- You can also use the [Vendure CLI](/guides/developer-guide/cli) to quickly scaffold a new plugin.
167
+ You can also use the [Vendure CLI](/developer-guide/cli) to quickly scaffold a new plugin.
168
168
  :::
169
169
 
170
170
  In this guide, we will implement a simple but fully-functional **wishlist plugin** step-by-step. The goal of this plugin is to allow signed-in customers to add products to a wishlist, and to view and manage their wishlist.
@@ -306,7 +306,7 @@ import './types';
306
306
  ```
307
307
 
308
308
  :::note
309
- Custom fields are not solely restricted to Vendure's native entities though, it's also possible to add support for custom fields to your own custom entities. This way other plugins would be able to extend our example `WishlistItem`. See: [Supporting custom fields](/guides/developer-guide/database-entity/#supporting-custom-fields)
309
+ Custom fields are not solely restricted to Vendure's native entities though, it's also possible to add support for custom fields to your own custom entities. This way other plugins would be able to extend our example `WishlistItem`. See: [Supporting custom fields](/developer-guide/database-entity/#supporting-custom-fields)
310
310
  :::
311
311
 
312
312
  ### Step 4: Create a service
@@ -800,4 +800,4 @@ mutation RemoveFromWishlist {
800
800
  If you have created a plugin that you would like to share with the community, you can publish it to npm, and even
801
801
  have it listed on the [Vendure Hub](https://vendure.io/hub).
802
802
 
803
- For a full guide to publishing plugins, see the [Publishing a Plugin how-to guide](/guides/how-to/publish-plugin/).
803
+ For a full guide to publishing plugins, see the [Publishing a Plugin how-to guide](/how-to/publish-plugin/).
@@ -3,7 +3,7 @@ title: "Add a REST endpoint"
3
3
  showtoc: true
4
4
  ---
5
5
 
6
- REST-style endpoints can be defined as part of a [plugin](/guides/developer-guide/plugins/).
6
+ REST-style endpoints can be defined as part of a [plugin](/developer-guide/plugins/).
7
7
 
8
8
  :::info
9
9
  REST endpoints are implemented as NestJS Controllers. For comprehensive documentation, see the [NestJS controllers documentation](https://docs.nestjs.com/controllers).
@@ -93,7 +93,7 @@ export class ProductsController {
93
93
  ```
94
94
 
95
95
  :::tip
96
- The following Vendure [API decorators](/guides/developer-guide/the-api-layer/#api-decorators) can also be used with NestJS controllers: `@Allow()`, `@Transaction()`, `@Ctx()`.
96
+ The following Vendure [API decorators](/developer-guide/the-api-layer/#api-decorators) can also be used with NestJS controllers: `@Allow()`, `@Transaction()`, `@Ctx()`.
97
97
 
98
98
  Additionally, NestJS supports a number of other REST decorators detailed in the [NestJS controllers guide](https://docs.nestjs.com/controllers#request-object)
99
99
  :::
@@ -17,7 +17,7 @@ Since Vendure v3.3, there is a built-in mechanism which allows you to define sch
17
17
  All the information on page applies to Vendure v3.3+
18
18
 
19
19
  For older versions, there is no built-in support for scheduled tasks, but you can
20
- instead use a [stand-alone script](/guides/developer-guide/stand-alone-scripts/) triggered by a cron job.
20
+ instead use a [stand-alone script](/developer-guide/stand-alone-scripts/) triggered by a cron job.
21
21
  :::
22
22
 
23
23
  ## Setting up the DefaultSchedulerPlugin
@@ -34,7 +34,7 @@ export const config: VendureConfig = {
34
34
  };
35
35
  ```
36
36
 
37
- When you first add this plugin to your config, you'll need to [generate a migration](/guides/developer-guide/migrations/) because the
37
+ When you first add this plugin to your config, you'll need to [generate a migration](/developer-guide/migrations/) because the
38
38
  plugin will make use of a new database table in order to guarantee only-once execution of tasks.
39
39
 
40
40
  You can then start adding tasks. Vendure ships with a task that will clean up old sessions from the database.
@@ -239,7 +239,7 @@ The second problem is handled by having tasks only executed on worker processes.
239
239
 
240
240
  ## Scheduled tasks vs job queue
241
241
 
242
- There is some overlap between the use of a scheduled task and a [job queue job](/guides/developer-guide/worker-job-queue/). They both perform some
242
+ There is some overlap between the use of a scheduled task and a [job queue job](/developer-guide/worker-job-queue/). They both perform some
243
243
  task on the worker, independent of requests coming in to the server.
244
244
 
245
245
  The first difference is that jobs must be triggered explicitly, whereas scheduled tasks are triggered automatically according to the schedule.
@@ -94,7 +94,7 @@ async function importCustomerData() {
94
94
 
95
95
  ## Creating a RequestContext
96
96
 
97
- Almost all the methods exposed by Vendure's core services take a `RequestContext` object as the first argument. Usually, this object is created in the [API Layer](/guides/developer-guide/the-api-layer/#resolvers) by the `@Ctx()` decorator, and contains information related to the current API request.
97
+ Almost all the methods exposed by Vendure's core services take a `RequestContext` object as the first argument. Usually, this object is created in the [API Layer](/developer-guide/the-api-layer/#resolvers) by the `@Ctx()` decorator, and contains information related to the current API request.
98
98
 
99
99
  When running a stand-alone script, we aren't making any API requests, so we need to create a `RequestContext` object manually. This can be done using the [`RequestContextService`](/reference/typescript-api/request/request-context-service/):
100
100
 
@@ -322,7 +322,7 @@ a `component` property, and optional properties to configure that component.
322
322
  }
323
323
  ```
324
324
 
325
- A full description of the available UI components can be found in the [Custom Fields guide](/guides/developer-guide/custom-fields/#custom-field-ui).
325
+ A full description of the available UI components can be found in the [Custom Fields guide](/developer-guide/custom-fields/#custom-field-ui).
326
326
 
327
327
  ### Injecting dependencies
328
328
 
@@ -155,8 +155,8 @@ afterAll(async () => {
155
155
 
156
156
  An explanation of the options:
157
157
 
158
- * `productsCsvPath` This is a path to an optional CSV file containing product data. See [Product Import Format](/guides/developer-guide/importing-data/#product-import-format). You can see [an example used in the Vendure e2e tests](https://github.com/vendurehq/vendure/blob/master/packages/core/e2e/fixtures/e2e-products-full.csv) to get an idea of how it works. To start with you can just copy this file directly and use it as-is.
159
- * `initialData` This is an object which defines how other non-product data (Collections, ShippingMethods, Countries etc.) is populated. See [Initial Data Format](/guides/developer-guide/importing-data/#initial-data). You can [copy this example from the Vendure e2e tests](https://github.com/vendurehq/vendure/blob/master/e2e-common/e2e-initial-data.ts)
158
+ * `productsCsvPath` This is a path to an optional CSV file containing product data. See [Product Import Format](/developer-guide/importing-data/#product-import-format). You can see [an example used in the Vendure e2e tests](https://github.com/vendurehq/vendure/blob/master/packages/core/e2e/fixtures/e2e-products-full.csv) to get an idea of how it works. To start with you can just copy this file directly and use it as-is.
159
+ * `initialData` This is an object which defines how other non-product data (Collections, ShippingMethods, Countries etc.) is populated. See [Initial Data Format](/developer-guide/importing-data/#initial-data). You can [copy this example from the Vendure e2e tests](https://github.com/vendurehq/vendure/blob/master/e2e-common/e2e-initial-data.ts)
160
160
  * `customerCount` Specifies the number of fake Customers to create. Defaults to 10 if not specified.
161
161
 
162
162
  ### Write your tests
@@ -144,7 +144,7 @@ data transformation.
144
144
 
145
145
  Guards, interceptors, pipes and filters can be added to your own custom resolvers and controllers
146
146
  using the NestJS decorators as given in the NestJS docs. However, a common pattern is to register them globally via a
147
- [Vendure plugin](/guides/developer-guide/plugins/):
147
+ [Vendure plugin](/developer-guide/plugins/):
148
148
 
149
149
  ```ts title="src/plugins/my-plugin/my-plugin.ts"
150
150
  import { VendurePlugin } from '@vendure/core';
@@ -468,4 +468,4 @@ Although Vendure is primarily a GraphQL-based API, it is possible to add REST en
468
468
  you need to integrate with a third-party service or client application which only supports REST, for example.
469
469
 
470
470
  Creating a REST endpoint is covered in detail in the [Add a REST endpoint
471
- guide](/guides/developer-guide/rest-endpoint/).
471
+ guide](/developer-guide/rest-endpoint/).
@@ -18,7 +18,7 @@ Services are generally scoped to a specific domain or entity. For instance, in t
18
18
  and a corresponding [`ProductService`](/reference/typescript-api/services/product-service) which contains all the methods for interacting with products.
19
19
 
20
20
  Here's a simplified example of a `ProductService`, including an implementation of the `findOne()` method that was
21
- used in the example in the [previous section](/guides/developer-guide/the-api-layer/#resolvers):
21
+ used in the example in the [previous section](/developer-guide/the-api-layer/#resolvers):
22
22
 
23
23
  ```ts title="src/services/product.service.ts"
24
24
  import { Injectable } from '@nestjs/common';
@@ -98,7 +98,7 @@ export class MyService {
98
98
  ```
99
99
  ## Admin UI translations
100
100
 
101
- See the [Adding Admin UI Translations guide](/guides/extending-the-admin-ui/adding-ui-translations/).
101
+ See the [Adding Admin UI Translations guide](/extending-the-admin-ui/adding-ui-translations/).
102
102
 
103
103
  ## Server message translations
104
104