Browse Source

docs: More reorganization

Michael Bromley 2 years ago
parent
commit
ab9798afcb
28 changed files with 76 additions and 62 deletions
  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.
 
 
 ## 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).
 
 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 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
 

+ 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
 
-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
 
-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
 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.
 
-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:
 

+ 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:
 
 * 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
 
 ## 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:
 
-* `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.
 
 ### 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.
 
 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.
 - **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/)
-- **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
 
@@ -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.
 
 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
 
@@ -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.
 
-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
 

+ 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).
 
 :::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

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

+ 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;`}   />
 
-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 `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
 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,
 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),
 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
 
 <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/updating/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',
                     value: 'Advanced Topics',
                     className: 'sidebar-section-header',
                 },
                 'guides/developer-guide/db-subscribers/index',
+                'guides/developer-guide/importing-data/index',
                 'guides/developer-guide/logging/index',
                 {
                     type: 'category',
@@ -89,6 +99,7 @@ const sidebars = {
                 },
                 'guides/developer-guide/stand-alone-scripts/index',
                 'guides/developer-guide/translations/index',
+                'guides/developer-guide/uploading-files/index',
             ],
             customProps: {
                 icon: icon.angleBrackets,

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

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

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

@@ -10,7 +10,7 @@ const loggerCtx = 'Populate';
  * @description
  * 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
- * [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,
  * 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
-     * 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}.
      */
     async parseProducts(

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

@@ -60,7 +60,7 @@ export class Importer {
 
     /**
      * @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 `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),
      * 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> {
         return new Promise(async (resolve, reject) => {