瀏覽代碼

docs: More reorganization

Michael Bromley 2 年之前
父節點
當前提交
ab9798afcb
共有 28 個文件被更改,包括 76 次插入62 次删除
  1. 2 2
      docs/docs/guides/core-concepts/money/index.mdx
  2. 1 1
      docs/docs/guides/deployment/getting-data-into-production.md
  3. 0 0
      docs/docs/guides/developer-guide/custom-permissions/index.md
  4. 1 1
      docs/docs/guides/developer-guide/database-entity/index.md
  5. 1 1
      docs/docs/guides/developer-guide/events/index.mdx
  6. 1 1
      docs/docs/guides/developer-guide/extend-graphql-api/index.md
  7. 0 0
      docs/docs/guides/developer-guide/importing-data/index.md
  8. 0 0
      docs/docs/guides/developer-guide/importing-data/reindex.webp
  9. 3 3
      docs/docs/guides/developer-guide/migrating-from-v1/index.md
  10. 1 1
      docs/docs/guides/developer-guide/migrations/index.md
  11. 0 0
      docs/docs/guides/developer-guide/rest-endpoint/index.md
  12. 2 2
      docs/docs/guides/developer-guide/testing/index.md
  13. 1 1
      docs/docs/guides/developer-guide/the-api-layer/index.mdx
  14. 0 0
      docs/docs/guides/developer-guide/uploading-files/index.md
  15. 3 3
      docs/docs/guides/getting-started/graphql-intro/index.mdx
  16. 1 1
      docs/docs/guides/getting-started/try-the-api/index.mdx
  17. 2 1
      docs/docs/reference/core-plugins/job-queue-plugin/bull-mqjob-queue-plugin.md
  18. 3 2
      docs/docs/reference/typescript-api/entities/channel.md
  19. 33 33
      docs/docs/reference/typescript-api/import-export/import-parser.md
  20. 1 1
      docs/docs/reference/typescript-api/import-export/importer.md
  21. 1 1
      docs/docs/reference/typescript-api/import-export/populate.md
  22. 1 1
      docs/docs/reference/typescript-api/services/asset-service.md
  23. 11 0
      docs/sidebars.js
  24. 3 2
      docs/src/css/custom.css
  25. 1 1
      packages/core/src/cli/populate.ts
  26. 1 1
      packages/core/src/data-import/providers/import-parser/import-parser.ts
  27. 1 1
      packages/core/src/data-import/providers/importer/importer.ts
  28. 1 1
      packages/core/src/service/services/asset.service.ts

+ 2 - 2
docs/docs/guides/core-concepts/money/index.mdx

@@ -104,13 +104,13 @@ type ShippingLine {
 }
 }
 ```
 ```
 
 
-If you are defining custom GraphQL types, or adding fields to existing types (see the [Extending the GraphQL API doc](/guides/how-to/extend-graphql-api/)),
+If you are defining custom GraphQL types, or adding fields to existing types (see the [Extending the GraphQL API doc](/guides/developer-guide/extend-graphql-api/)),
 then you should also use the `Money` scalar for any monetary values.
 then you should also use the `Money` scalar for any monetary values.
 
 
 
 
 ## The `@Money()` decorator
 ## The `@Money()` decorator
 
 
-When [defining new database entities](/guides/how-to/database-entity/), if you need to store a monetary value, then rather than using the TypeORM `@Column()`
+When [defining new database entities](/guides/developer-guide/database-entity//), if you need to store a monetary value, then rather than using the TypeORM `@Column()`
 decorator, you should use Vendure's [`@Money()` decorator](/reference/typescript-api/money/money-decorator).
 decorator, you should use Vendure's [`@Money()` decorator](/reference/typescript-api/money/money-decorator).
 
 
 Using this decorator allows Vendure to correctly store the value in the database according to the configured `MoneyStrategy` (see below).
 Using this decorator allows Vendure to correctly store the value in the database according to the configured `MoneyStrategy` (see below).

+ 1 - 1
docs/docs/guides/deployment/getting-data-into-production.md

@@ -43,7 +43,7 @@ Set the `DB_SYNCHRONIZE` variable to `true` on first start, and then after the s
 
 
 ## Importing initial & catalog data
 ## Importing initial & catalog data
 
 
-Importing initial and catalog data can be handled by Vendure `populate()` helper function - see the [Importing Product Data guide](/guides/how-to/importing-data/).
+Importing initial and catalog data can be handled by Vendure `populate()` helper function - see the [Importing Product Data guide](/guides/developer-guide/importing-data/).
 
 
 ## Importing other data
 ## Importing other data
 
 

+ 0 - 0
docs/docs/guides/how-to/custom-permissions/index.md → docs/docs/guides/developer-guide/custom-permissions/index.md


+ 1 - 1
docs/docs/guides/how-to/database-entity/index.md → docs/docs/guides/developer-guide/database-entity/index.md

@@ -117,4 +117,4 @@ The full list of TypeORM decorators can be found in the [TypeORM decorator refer
 
 
 ## Corresponding GraphQL type
 ## Corresponding GraphQL type
 
 
-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/how-to/extend-graphql-api/#defining-a-new-type).
+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).

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

@@ -234,7 +234,7 @@ export class ProductReviewService {
 
 
 ### Entity events
 ### Entity events
 
 
-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/how-to/database-entity/)) `BlogPost` and you want to trigger an event whenever a new `BlogPost` is created, updated or deleted:
+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:
 
 
 ```ts title="src/plugins/blog/events/blog-post-event.ts
 ```ts title="src/plugins/blog/events/blog-post-event.ts
 import { ID, RequestContext, VendureEntityEvent } from '@vendure/core';
 import { ID, RequestContext, VendureEntityEvent } from '@vendure/core';

+ 1 - 1
docs/docs/guides/how-to/extend-graphql-api/index.md → docs/docs/guides/developer-guide/extend-graphql-api/index.md

@@ -191,7 +191,7 @@ export class BannerPlugin {}
 
 
 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.
 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.
 
 
-Using the `ProductReview` entity from the [Define a database entity guide](/guides/how-to/database-entity/), let's see how we can expose it as a new type in the API.
+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.
 
 
 As a reminder, here is the `ProductReview` entity:
 As a reminder, here is the `ProductReview` entity:
 
 

+ 0 - 0
docs/docs/guides/how-to/importing-data/index.md → docs/docs/guides/developer-guide/importing-data/index.md


+ 0 - 0
docs/docs/guides/how-to/importing-data/reindex.webp → docs/docs/guides/developer-guide/importing-data/reindex.webp


+ 3 - 3
docs/docs/guides/developer-guide/migrating-from-v1/index.md

@@ -36,6 +36,6 @@ Migration will consist of these main steps:
      }
      }
    }
    }
    ```
    ```
-2. **Migrate your database**. This is covered in detail in the [database migration section](/guides/advanced-topics/migrating-from-v1/database-migration).
-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/advanced-topics/migrating-from-v1/breaking-api-changes).
-4. **Update your storefront** to handle some small breaking changes in the Shop GraphQL API. See the [storefront migration section](/guides/advanced-topics/migrating-from-v1/storefront-migration) for details.
+2. **Migrate your database**. This is covered in detail in the [database migration section](/guides/developer-guide/migrating-from-v1/database-migration).
+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).
+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.

+ 1 - 1
docs/docs/guides/developer-guide/migrations/index.md

@@ -8,7 +8,7 @@ import TabItem from '@theme/TabItem';
 Database migrations are needed whenever the database schema changes. This can be caused by:
 Database migrations are needed whenever the database schema changes. This can be caused by:
 
 
 * changes to the [custom fields](/guides/developer-guide/custom-fields/) configuration.
 * changes to the [custom fields](/guides/developer-guide/custom-fields/) configuration.
-* new [database entities defined by plugins](/guides/how-to/database-entity/)
+* new [database entities defined by plugins](/guides/developer-guide/database-entity//)
 * occasional changes to the core Vendure database schema when updating to newer versions
 * occasional changes to the core Vendure database schema when updating to newer versions
 
 
 ## Synchronize vs migrate
 ## Synchronize vs migrate

+ 0 - 0
docs/docs/guides/how-to/rest-endpoint/index.md → docs/docs/guides/developer-guide/rest-endpoint/index.md


+ 2 - 2
docs/docs/guides/developer-guide/testing/index.md

@@ -153,8 +153,8 @@ afterAll(async () => {
 
 
 An explanation of the options:
 An explanation of the options:
 
 
-* `productsCsvPath` This is a path to an optional CSV file containing product data. See [Product Import Format](/guides/how-to/importing-data/#product-import-format). You can see [an example used in the Vendure e2e tests](https://github.com/vendure-ecommerce/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.
-* `initialData` This is an object which defines how other non-product data (Collections, ShippingMethods, Countries etc.) is populated. See [Initial Data Format](/guides/how-to/importing-data/#initial-data). You can [copy this example from the Vendure e2e tests](https://github.com/vendure-ecommerce/vendure/blob/master/e2e-common/e2e-initial-data.ts)
+* `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/vendure-ecommerce/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.
+* `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/vendure-ecommerce/vendure/blob/master/e2e-common/e2e-initial-data.ts)
 * `customerCount` Specifies the number of fake Customers to create. Defaults to 10 if not specified.
 * `customerCount` Specifies the number of fake Customers to create. Defaults to 10 if not specified.
 
 
 ### Write your tests
 ### Write your tests

+ 1 - 1
docs/docs/guides/developer-guide/the-api-layer/index.mdx

@@ -343,4 +343,4 @@ Although Vendure is primarily a GraphQL-based API, it is possible to add REST en
 you need to integrate with a third-party service or client application which only supports REST, for example.
 you need to integrate with a third-party service or client application which only supports REST, for example.
 
 
 Creating a REST endpoint is covered in detail in the [Add a REST endpoint
 Creating a REST endpoint is covered in detail in the [Add a REST endpoint
-guide](/guides/how-to/rest-endpoint/).
+guide](/guides/developer-guide/rest-endpoint/).

+ 0 - 0
docs/docs/guides/how-to/uploading-files.md → docs/docs/guides/developer-guide/uploading-files/index.md


+ 3 - 3
docs/docs/guides/getting-started/graphql-intro/index.mdx

@@ -52,7 +52,7 @@ Both GraphQL and REST are valid approaches to building an API. These are some of
 - **Static typing**: GraphQL APIs are always defined by a statically typed schema. This means that you can be sure that the data you receive from the API will always be in the format you expect.
 - **Static typing**: GraphQL APIs are always defined by a statically typed schema. This means that you can be sure that the data you receive from the API will always be in the format you expect.
 - **Developer tooling**: The schema definition allows for powerful developer tooling. For example, the GraphQL Playground above with auto-complete and full documentation is generated automatically from the schema definition. You can also get auto-complete and type-checking directly in your IDE.
 - **Developer tooling**: The schema definition allows for powerful developer tooling. For example, the GraphQL Playground above with auto-complete and full documentation is generated automatically from the schema definition. You can also get auto-complete and type-checking directly in your IDE.
 - **Code generation**: TypeScript types can be generated automatically from the schema definition. This means that you can be sure that your frontend code is always in sync with the API. This end-to-end type safety is extremely valuable, especially when working on large projects or with teams. See the [GraphQL Code Generation guide](/guides/storefront/codegen/)
 - **Code generation**: TypeScript types can be generated automatically from the schema definition. This means that you can be sure that your frontend code is always in sync with the API. This end-to-end type safety is extremely valuable, especially when working on large projects or with teams. See the [GraphQL Code Generation guide](/guides/storefront/codegen/)
-- **Extensible**: Vendure is designed with extensibility in mind, and GraphQL is a perfect fit. You can extend the GraphQL API with your own custom queries, mutations, and types. You can also extend the built-in types with your own custom fields, or supply you own custom logic to resolve existing fields. See the [Extend the GraphQL API guide](/guides/how-to/extend-graphql-api/)
+- **Extensible**: Vendure is designed with extensibility in mind, and GraphQL is a perfect fit. You can extend the GraphQL API with your own custom queries, mutations, and types. You can also extend the built-in types with your own custom fields, or supply you own custom logic to resolve existing fields. See the [Extend the GraphQL API guide](/guides/developer-guide/extend-graphql-api/)
 
 
 ## GraphQL Terminology
 ## GraphQL Terminology
 
 
@@ -485,7 +485,7 @@ A resolver is a function which is responsible for fetching the data for a partic
 would be resolved by a function which fetches the list of customers from the database.
 would be resolved by a function which fetches the list of customers from the database.
 
 
 To get started with Vendure's APIs, you don't need to know much about resolvers beyond this basic understanding. However,
 To get started with Vendure's APIs, you don't need to know much about resolvers beyond this basic understanding. However,
-later on you may want to write your own custom resolvers to extend the API. This is covered in the [Extending the GraphQL API guide](/guides/how-to/extend-graphql-api/).
+later on you may want to write your own custom resolvers to extend the API. This is covered in the [Extending the GraphQL API guide](/guides/developer-guide/extend-graphql-api/).
 
 
 ## Querying data
 ## Querying data
 
 
@@ -544,7 +544,7 @@ as you write them. This is a huge productivity boost, and is **highly recommende
 
 
 Code generation means the automatic generation of TypeScript types based on your GraphQL schema and your GraphQL operations. This is a very powerful feature that allows you to write your code in a type-safe manner, without you needing to manually write any types for your API calls.
 Code generation means the automatic generation of TypeScript types based on your GraphQL schema and your GraphQL operations. This is a very powerful feature that allows you to write your code in a type-safe manner, without you needing to manually write any types for your API calls.
 
 
-For more information see the [GraphQL Code Generation guide](/guides/advanced-topics/codegen).
+For more information see the [GraphQL Code Generation guide](/guides/storefront/codegen).
 
 
 ## Further reading
 ## Further reading
 
 

+ 1 - 1
docs/docs/guides/getting-started/try-the-api/index.mdx

@@ -157,7 +157,7 @@ Running this mutation a second time should show that the quantity of the product
 then the session is not being persisted correctly (see the note earlier in this guide about the `request.credentials` setting).
 then the session is not being persisted correctly (see the note earlier in this guide about the `request.credentials` setting).
 
 
 :::info
 :::info
-For more information about `ErrorResult` and the handling of errors in Vendure, see the [Error Handling guide](/guides/advanced-topics/error-handling).
+For more information about `ErrorResult` and the handling of errors in Vendure, see the [Error Handling guide](/guides/developer-guide/error-handling).
 :::
 :::
 
 
 ## Admin API
 ## Admin API

+ 2 - 1
docs/docs/reference/core-plugins/job-queue-plugin/bull-mqjob-queue-plugin.md

@@ -11,7 +11,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
 
 
 ## BullMQJobQueuePlugin
 ## BullMQJobQueuePlugin
 
 
-<GenerationInfo sourceFile="packages/job-queue-plugin/src/bullmq/plugin.ts" sourceLine="102" packageName="@vendure/job-queue-plugin" />
+<GenerationInfo sourceFile="packages/job-queue-plugin/src/bullmq/plugin.ts" sourceLine="103" packageName="@vendure/job-queue-plugin" />
 
 
 This plugin is a drop-in replacement of the DefaultJobQueuePlugin, which implements a push-based
 This plugin is a drop-in replacement of the DefaultJobQueuePlugin, which implements a push-based
 job queue strategy built on top of the popular [BullMQ](https://github.com/taskforcesh/bullmq) library.
 job queue strategy built on top of the popular [BullMQ](https://github.com/taskforcesh/bullmq) library.
@@ -48,6 +48,7 @@ import { BullMQJobQueuePlugin } from '@vendure/job-queue-plugin/package/bullmq';
 const config: VendureConfig = {
 const config: VendureConfig = {
   // Add an instance of the plugin to the plugins array
   // Add an instance of the plugin to the plugins array
   plugins: [
   plugins: [
+    // DefaultJobQueuePlugin should be removed from the plugins array
     BullMQJobQueuePlugin.init({
     BullMQJobQueuePlugin.init({
       connection: {
       connection: {
         port: 6379
         port: 6379

+ 3 - 2
docs/docs/reference/typescript-api/entities/channel.md

@@ -80,12 +80,13 @@ class Channel extends VendureEntity {
 
 
 <MemberInfo kind="property" type={`string`}   />
 <MemberInfo kind="property" type={`string`}   />
 
 
-
+The name of the Channel. For example "US Webstore" or "German Webstore".
 ### token
 ### token
 
 
 <MemberInfo kind="property" type={`string`}   />
 <MemberInfo kind="property" type={`string`}   />
 
 
-
+A unique token (string) used to identify the Channel in the `vendure-token` header of the
+GraphQL API requests.
 ### description
 ### description
 
 
 <MemberInfo kind="property" type={`string`}   />
 <MemberInfo kind="property" type={`string`}   />

+ 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" />
 <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>.
 This is used internally by the <a href='/reference/typescript-api/import-export/importer#importer'>Importer</a>.
 
 
 ```ts title="Signature"
 ```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;`}   />
 <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/developer-guide/importing-data/#product-import-format) and
 returns a data structure which can then be used to populate Vendure using the <a href='/reference/typescript-api/import-export/fast-importer-service#fastimporterservice'>FastImporterService</a>.
 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" />
 <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>.
 by the <a href='/reference/typescript-api/import-export/import-parser#importparser'>ImportParser</a>.
 
 
 ```ts title="Signature"
 ```ts title="Signature"
 interface ParsedOptionGroup {
 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
 ### 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" />
 <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>.
 by the <a href='/reference/typescript-api/import-export/import-parser#importparser'>ImportParser</a>.
 
 
 ```ts title="Signature"
 ```ts title="Signature"
 interface ParsedFacet {
 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
 ### 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" />
 <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>.
 by the <a href='/reference/typescript-api/import-export/import-parser#importparser'>ImportParser</a>.
 
 
 ```ts title="Signature"
 ```ts title="Signature"
@@ -109,12 +109,12 @@ interface ParsedProductVariant {
     trackInventory: GlobalFlag;
     trackInventory: GlobalFlag;
     assetPaths: string[];
     assetPaths: string[];
     facets: ParsedFacet[];
     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
 ### 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" />
 <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>.
 by the <a href='/reference/typescript-api/import-export/import-parser#importparser'>ImportParser</a>.
 
 
 ```ts title="Signature"
 ```ts title="Signature"
@@ -178,14 +178,14 @@ interface ParsedProduct {
     assetPaths: string[];
     assetPaths: string[];
     optionGroups: ParsedOptionGroup[];
     optionGroups: ParsedOptionGroup[];
     facets: ParsedFacet[];
     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
 ### 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" />
 <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.
 <a href='/reference/typescript-api/import-export/import-parser#importparser'>ImportParser</a> `parseProducts()` method.
 
 
 ```ts title="Signature"
 ```ts title="Signature"

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

@@ -32,7 +32,7 @@ class Importer {
 
 
 <MemberInfo kind="method" type={`(input: string | Stream, ctxOrLanguageCode: <a href='/reference/typescript-api/request/request-context#requestcontext'>RequestContext</a> | <a href='/reference/typescript-api/common/language-code#languagecode'>LanguageCode</a>, reportProgress: boolean = false) => Observable&#60;ImportProgress&#62;`}   />
 <MemberInfo kind="method" type={`(input: string | Stream, ctxOrLanguageCode: <a href='/reference/typescript-api/request/request-context#requestcontext'>RequestContext</a> | <a href='/reference/typescript-api/common/language-code#languagecode'>LanguageCode</a>, reportProgress: boolean = false) => Observable&#60;ImportProgress&#62;`}   />
 
 
-Parses the contents of the [product import CSV file](/guides/how-to/importing-data/#product-import-format) and imports
+Parses the contents of the [product import CSV file](/guides/developer-guide/importing-data/#product-import-format) and imports
 the resulting Product & ProductVariants, as well as any associated Assets, Facets & FacetValues.
 the resulting Product & ProductVariants, as well as any associated Assets, Facets & FacetValues.
 
 
 The `ctxOrLanguageCode` argument is used to specify the languageCode to be used when creating the Products.
 The `ctxOrLanguageCode` argument is used to specify the languageCode to be used when creating the Products.

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

@@ -15,7 +15,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
 
 
 Populates the Vendure server with some initial data and (optionally) product data from
 Populates the Vendure server with some initial data and (optionally) product data from
 a supplied CSV file. The format of the CSV file is described in the section
 a supplied CSV file. The format of the CSV file is described in the section
-[Importing Product Data](/guides/how-to/importing-data/).
+[Importing Product Data](/guides/developer-guide/importing-data/).
 
 
 If the `channelOrToken` argument is provided, all ChannelAware entities (Products, ProductVariants,
 If the `channelOrToken` argument is provided, all ChannelAware entities (Products, ProductVariants,
 Assets, ShippingMethods, PaymentMethods etc.) will be assigned to the specified Channel.
 Assets, ShippingMethods, PaymentMethods etc.) will be assigned to the specified Channel.

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

@@ -80,7 +80,7 @@ Create an Asset based on a file uploaded via the GraphQL API. The file should be
 using the [GraphQL multipart request specification](https://github.com/jaydenseric/graphql-multipart-request-spec),
 using the [GraphQL multipart request specification](https://github.com/jaydenseric/graphql-multipart-request-spec),
 e.g. using the [apollo-upload-client](https://github.com/jaydenseric/apollo-upload-client) npm package.
 e.g. using the [apollo-upload-client](https://github.com/jaydenseric/apollo-upload-client) npm package.
 
 
-See the [Uploading Files docs](/guides/how-to/uploading-files) for an example of usage.
+See the [Uploading Files docs](/guides/developer-guide/uploading-files) for an example of usage.
 ### update
 ### update
 
 
 <MemberInfo kind="method" type={`(ctx: <a href='/reference/typescript-api/request/request-context#requestcontext'>RequestContext</a>, input: UpdateAssetInput) => Promise&#60;<a href='/reference/typescript-api/entities/asset#asset'>Asset</a>&#62;`}   />
 <MemberInfo kind="method" type={`(ctx: <a href='/reference/typescript-api/request/request-context#requestcontext'>RequestContext</a>, input: UpdateAssetInput) => Promise&#60;<a href='/reference/typescript-api/entities/asset#asset'>Asset</a>&#62;`}   />

+ 11 - 0
docs/sidebars.js

@@ -75,12 +75,22 @@ const sidebars = {
                 'guides/developer-guide/testing/index',
                 'guides/developer-guide/testing/index',
                 'guides/developer-guide/updating/index',
                 'guides/developer-guide/updating/index',
                 'guides/developer-guide/worker-job-queue/index',
                 'guides/developer-guide/worker-job-queue/index',
+                {
+                    type: 'html',
+                    value: 'Extend',
+                    className: 'sidebar-section-header',
+                },
+                'guides/developer-guide/rest-endpoint/index',
+                'guides/developer-guide/custom-permissions/index',
+                'guides/developer-guide/database-entity/index',
+                'guides/developer-guide/extend-graphql-api/index',
                 {
                 {
                     type: 'html',
                     type: 'html',
                     value: 'Advanced Topics',
                     value: 'Advanced Topics',
                     className: 'sidebar-section-header',
                     className: 'sidebar-section-header',
                 },
                 },
                 'guides/developer-guide/db-subscribers/index',
                 'guides/developer-guide/db-subscribers/index',
+                'guides/developer-guide/importing-data/index',
                 'guides/developer-guide/logging/index',
                 'guides/developer-guide/logging/index',
                 {
                 {
                     type: 'category',
                     type: 'category',
@@ -89,6 +99,7 @@ const sidebars = {
                 },
                 },
                 'guides/developer-guide/stand-alone-scripts/index',
                 'guides/developer-guide/stand-alone-scripts/index',
                 'guides/developer-guide/translations/index',
                 'guides/developer-guide/translations/index',
+                'guides/developer-guide/uploading-files/index',
             ],
             ],
             customProps: {
             customProps: {
                 icon: icon.angleBrackets,
                 icon: icon.angleBrackets,

+ 3 - 2
docs/src/css/custom.css

@@ -87,9 +87,10 @@ html[data-theme='dark'] {
 
 
 .sidebar-section-header {
 .sidebar-section-header {
     text-transform: uppercase;
     text-transform: uppercase;
-    /*font-weight: bold;*/
+    font-weight: bold;
     font-size: 12px;
     font-size: 12px;
-    opacity: 0.6;
+    opacity: 0.8;
+    color: var(--ifm-color-primary-dark);
     padding: var(--ifm-menu-link-padding-vertical)
     padding: var(--ifm-menu-link-padding-vertical)
          var(--ifm-menu-link-padding-horizontal);
          var(--ifm-menu-link-padding-horizontal);
 }
 }

+ 1 - 1
packages/core/src/cli/populate.ts

@@ -10,7 +10,7 @@ const loggerCtx = 'Populate';
  * @description
  * @description
  * Populates the Vendure server with some initial data and (optionally) product data from
  * Populates the Vendure server with some initial data and (optionally) product data from
  * a supplied CSV file. The format of the CSV file is described in the section
  * a supplied CSV file. The format of the CSV file is described in the section
- * [Importing Product Data](/guides/how-to/importing-data/).
+ * [Importing Product Data](/guides/developer-guide/importing-data/).
  *
  *
  * If the `channelOrToken` argument is provided, all ChannelAware entities (Products, ProductVariants,
  * If the `channelOrToken` argument is provided, all ChannelAware entities (Products, ProductVariants,
  * Assets, ShippingMethods, PaymentMethods etc.) will be assigned to the specified Channel.
  * Assets, ShippingMethods, PaymentMethods etc.) will be assigned to the specified Channel.

+ 1 - 1
packages/core/src/data-import/providers/import-parser/import-parser.ts

@@ -156,7 +156,7 @@ export class ImportParser {
 
 
     /**
     /**
      * @description
      * @description
-     * 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/developer-guide/importing-data/#product-import-format) and
      * returns a data structure which can then be used to populate Vendure using the {@link FastImporterService}.
      * returns a data structure which can then be used to populate Vendure using the {@link FastImporterService}.
      */
      */
     async parseProducts(
     async parseProducts(

+ 1 - 1
packages/core/src/data-import/providers/importer/importer.ts

@@ -60,7 +60,7 @@ export class Importer {
 
 
     /**
     /**
      * @description
      * @description
-     * Parses the contents of the [product import CSV file](/guides/how-to/importing-data/#product-import-format) and imports
+     * Parses the contents of the [product import CSV file](/guides/developer-guide/importing-data/#product-import-format) and imports
      * the resulting Product & ProductVariants, as well as any associated Assets, Facets & FacetValues.
      * the resulting Product & ProductVariants, as well as any associated Assets, Facets & FacetValues.
      *
      *
      * The `ctxOrLanguageCode` argument is used to specify the languageCode to be used when creating the Products.
      * The `ctxOrLanguageCode` argument is used to specify the languageCode to be used when creating the Products.

+ 1 - 1
packages/core/src/service/services/asset.service.ts

@@ -285,7 +285,7 @@ export class AssetService {
      * using the [GraphQL multipart request specification](https://github.com/jaydenseric/graphql-multipart-request-spec),
      * using the [GraphQL multipart request specification](https://github.com/jaydenseric/graphql-multipart-request-spec),
      * e.g. using the [apollo-upload-client](https://github.com/jaydenseric/apollo-upload-client) npm package.
      * e.g. using the [apollo-upload-client](https://github.com/jaydenseric/apollo-upload-client) npm package.
      *
      *
-     * See the [Uploading Files docs](/guides/how-to/uploading-files) for an example of usage.
+     * See the [Uploading Files docs](/guides/developer-guide/uploading-files) for an example of usage.
      */
      */
     async create(ctx: RequestContext, input: CreateAssetInput): Promise<CreateAssetResult> {
     async create(ctx: RequestContext, input: CreateAssetInput): Promise<CreateAssetResult> {
         return new Promise(async (resolve, reject) => {
         return new Promise(async (resolve, reject) => {