Quellcode durchsuchen

feat(docs): Add link to source & date for generated docs

Michael Bromley vor 7 Jahren
Ursprung
Commit
0712775b91
37 geänderte Dateien mit 245 neuen und 122 gelöschten Zeilen
  1. 50 20
      codegen/generate-docs.ts
  2. 18 1
      docs/assets/styles/_shortcodes.scss
  3. 1 0
      docs/content/docs/api/assets/_index.md
  4. 5 2
      docs/content/docs/api/assets/asset-naming-strategy.md
  5. 7 4
      docs/content/docs/api/assets/asset-options.md
  6. 4 1
      docs/content/docs/api/assets/asset-preview-strategy.md
  7. 9 6
      docs/content/docs/api/assets/asset-storage-strategy.md
  8. 1 0
      docs/content/docs/api/auth/_index.md
  9. 10 7
      docs/content/docs/api/auth/auth-options.md
  10. 1 0
      docs/content/docs/api/email/_index.md
  11. 7 4
      docs/content/docs/api/email/email-options.md
  12. 6 3
      docs/content/docs/api/email/file-transport-options.md
  13. 4 1
      docs/content/docs/api/email/noop-transport-options.md
  14. 13 10
      docs/content/docs/api/email/s-m-t-p-transport-options.md
  15. 6 3
      docs/content/docs/api/email/sendmail-transport-options.md
  16. 5 2
      docs/content/docs/api/email/testing-transport-options.md
  17. 6 3
      docs/content/docs/api/entity-id-strategy.md
  18. 4 1
      docs/content/docs/api/import-export-options.md
  19. 1 0
      docs/content/docs/api/orders/_index.md
  20. 5 2
      docs/content/docs/api/orders/order-merge-options.md
  21. 4 1
      docs/content/docs/api/orders/order-merge-strategy.md
  22. 7 4
      docs/content/docs/api/orders/order-process-options.md
  23. 5 2
      docs/content/docs/api/orders/shipping-options.md
  24. 1 0
      docs/content/docs/api/payment/_index.md
  25. 4 1
      docs/content/docs/api/payment/payment-options.md
  26. 0 9
      docs/content/docs/api/plugins/_index.md
  27. 1 0
      docs/content/docs/api/promotions/_index.md
  28. 5 2
      docs/content/docs/api/promotions/promotion-options.md
  29. 1 0
      docs/content/docs/api/tax/_index.md
  30. 4 1
      docs/content/docs/api/tax/tax-calculation-strategy.md
  31. 5 2
      docs/content/docs/api/tax/tax-options.md
  32. 4 1
      docs/content/docs/api/tax/tax-zone-strategy.md
  33. 26 23
      docs/content/docs/api/vendure-config.md
  34. 8 5
      docs/content/docs/api/vendure-plugin.md
  35. 3 0
      docs/layouts/shortcodes/generation-info.html
  36. 3 0
      docs/layouts/shortcodes/member-info.html
  37. 1 1
      server/src/config/vendure-plugin/vendure-plugin.ts

+ 50 - 20
codegen/generate-docs.ts

@@ -28,6 +28,7 @@ interface MethodInfo extends MemberInfo {
 }
 
 interface InterfaceInfo {
+    sourceFile: string;
     title: string;
     weight: number;
     category: string;
@@ -59,7 +60,7 @@ const watchMode = !!process.argv.find(arg => arg === '--watch' || arg === '-w');
 if (watchMode) {
     console.log(`Watching for changes to source files...`);
     tsFiles.forEach(file => {
-        fs.watchFile(file, {interval: 1000}, () => {
+        fs.watchFile(file, { interval: 1000 }, () => {
             generateDocs([file], outputPath, globalTypeMap);
         });
     });
@@ -75,7 +76,7 @@ function deleteGeneratedDocs() {
         const content = fs.readFileSync(file.path, 'utf-8');
         if (isGenerated(content)) {
             fs.unlinkSync(file.path);
-            deleteCount ++;
+            deleteCount++;
         }
     }
     console.log(`Deleted ${deleteCount} generated docs`);
@@ -105,11 +106,10 @@ function generateDocs(filePaths: string[], hugoApiDocsPath: string, typeMap: Typ
         );
     });
 
-    const statements = sourceFiles.reduce((st, sf) => [...st, ...sf.statements], [] as ts.Statement[]);
-    const interfaces = statements
-        .filter(ts.isInterfaceDeclaration)
+    const interfaces = getStatementsWithSourceFile(sourceFiles)
+        .filter(s => ts.isInterfaceDeclaration(s.statement))
         .map(statement => {
-            const info = parseInterface(statement);
+            const info = parseInterface(statement.statement as ts.InterfaceDeclaration, statement.sourceFile);
             if (info) {
                 typeMap.set(info.title, info.category + '/' + info.fileName);
             }
@@ -137,10 +137,28 @@ function generateDocs(filePaths: string[], hugoApiDocsPath: string, typeMap: Typ
     }
 }
 
+/**
+ * Maps an array of parsed SourceFiles into statements, including a reference to the original file each statement
+ * came from.
+ */
+function getStatementsWithSourceFile(sourceFiles: ts.SourceFile[]): Array<{ statement: ts.Statement; sourceFile: string }> {
+    return sourceFiles.reduce(
+        (st, sf) => {
+            const statementsWithSources = sf.statements.map(statement => {
+                const serverSourceRoot = '/server/src';
+                const sourceFile = sf.fileName.substring(sf.fileName.indexOf(serverSourceRoot));
+                return {statement, sourceFile };
+            });
+            return [...st, ...statementsWithSources];
+        },
+        [] as Array<{ statement: ts.Statement; sourceFile: string }>,
+    );
+}
+
 /**
  * Parses an InterfaceDeclaration into a simple object which can be rendered into markdown.
  */
-function parseInterface(statement: ts.InterfaceDeclaration): InterfaceInfo | undefined {
+function parseInterface(statement: ts.InterfaceDeclaration, sourceFile: string): InterfaceInfo | undefined {
     const category = getDocsCategory(statement);
     if (category === undefined) {
         return;
@@ -148,9 +166,13 @@ function parseInterface(statement: ts.InterfaceDeclaration): InterfaceInfo | und
     const title = statement.name.text;
     const weight = getInterfaceWeight(statement);
     const description = getInterfaceDescription(statement);
-    const fileName = title.split(/(?=[A-Z])/).join('-').toLowerCase();
+    const fileName = title
+        .split(/(?=[A-Z])/)
+        .join('-')
+        .toLowerCase();
     const members = parseMembers(statement.members);
     return {
+        sourceFile,
         title,
         weight,
         category,
@@ -174,9 +196,9 @@ function parseMembers(members: ts.NodeArray<ts.TypeElement>): Array<PropertyInfo
             let defaultValue = '';
             let parameters: MethodParameterInfo[] = [];
             parseTags(member, {
-                description: tag => description += tag.comment || '',
-                example: tag => description += formatExampleCode(tag.comment),
-                default: tag => defaultValue = tag.comment || '',
+                description: tag => (description += tag.comment || ''),
+                example: tag => (description += formatExampleCode(tag.comment)),
+                default: tag => (defaultValue = tag.comment || ''),
             });
             if (member.type) {
                 type = member.type.getFullText();
@@ -213,6 +235,7 @@ function renderInterface(interfaceInfo: InterfaceInfo, knownTypeMap: Map<string,
     let output = '';
     output += generateFrontMatter(title, weight);
     output += `\n\n# ${title}\n\n`;
+    output += `{{< generation-info source="${interfaceInfo.sourceFile}">}}\n\n`;
     output += `${description}\n\n`;
 
     for (const member of members) {
@@ -222,13 +245,15 @@ function renderInterface(interfaceInfo: InterfaceInfo, knownTypeMap: Map<string,
             type = renderType(member.type, knownTypeMap);
             defaultParam = member.defaultValue ? `default="${member.defaultValue}" ` : '';
         } else {
-            const args = member.parameters.map(p => {
-                return `${p.name}: ${renderType(p.type, knownTypeMap)}`;
-            }).join(', ');
+            const args = member.parameters
+                .map(p => {
+                    return `${p.name}: ${renderType(p.type, knownTypeMap)}`;
+                })
+                .join(', ');
             type = `(${args}) => ${renderType(member.type, knownTypeMap)}`;
         }
         output += `### ${member.name}\n\n`;
-        output += `{{< member-info type="${type}" ${defaultParam}>}}\n\n`;
+        output += `{{< member-info kind="${member.kind}" type="${type}" ${defaultParam}>}}\n\n`;
         output += `${member.description}\n\n`;
     }
 
@@ -241,7 +266,7 @@ function renderInterface(interfaceInfo: InterfaceInfo, knownTypeMap: Map<string,
 function getDocsCategory(statement: ts.InterfaceDeclaration): string | undefined {
     let category: string | undefined;
     parseTags(statement, {
-        docsCategory: tag => category = tag.comment || '',
+        docsCategory: tag => (category = tag.comment || ''),
     });
     return category;
 }
@@ -249,7 +274,10 @@ function getDocsCategory(statement: ts.InterfaceDeclaration): string | undefined
 /**
  * Parses the Node's JSDoc tags and invokes the supplied functions against any matching tag names.
  */
-function parseTags<T extends ts.Node>(node: T, tagMatcher: { [tagName: string]: (tag: ts.JSDocTag) => void; }): void {
+function parseTags<T extends ts.Node>(
+    node: T,
+    tagMatcher: { [tagName: string]: (tag: ts.JSDocTag) => void },
+): void {
     const jsDocTags = ts.getJSDocTags(node);
     for (const tag of jsDocTags) {
         const tagName = tag.tagName.text;
@@ -264,7 +292,8 @@ function parseTags<T extends ts.Node>(node: T, tagMatcher: { [tagName: string]:
  * and known types (e.g. "ShippingMethod") into hyperlinks.
  */
 function renderType(type: string, knownTypeMap: Map<string, string>): string {
-    let typeText = type.trim()
+    let typeText = type
+        .trim()
         // encode HTML entities
         .replace(/[\u00A0-\u9999<>\&]/gim, i => '&#' + i.charCodeAt(0) + ';')
         // remove newlines
@@ -283,6 +312,7 @@ function generateFrontMatter(title: string, weight: number): string {
     return `---
 title: "${title}"
 weight: ${weight}
+date: ${new Date().toISOString()}
 generated: true
 ---
 <!-- This file was generated from the Vendure TypeScript source. Do not modify. Instead, re-run "generate-docs" -->
@@ -295,7 +325,7 @@ generated: true
 function getInterfaceWeight(statement: ts.InterfaceDeclaration): number {
     let weight = 10;
     parseTags(statement, {
-        docsWeight: tag => weight = Number.parseInt(tag.comment || '10', 10),
+        docsWeight: tag => (weight = Number.parseInt(tag.comment || '10', 10)),
     });
     return weight;
 }
@@ -306,7 +336,7 @@ function getInterfaceWeight(statement: ts.InterfaceDeclaration): number {
 function getInterfaceDescription(statement: ts.InterfaceDeclaration): string {
     let description = '';
     parseTags(statement, {
-        description: tag => description += tag.comment,
+        description: tag => (description += tag.comment),
     });
     return description;
 }

+ 18 - 1
docs/assets/styles/_shortcodes.scss

@@ -15,12 +15,21 @@
 }
 
 /**
- Config option
+ Member info for generated docs
  */
 .member-info {
     display: flex;
+    align-items: center;
     margin-top: -16px;
 
+    .kind-label {
+        font-size: $font-size-12;
+        background-color: #d3f2eb;
+        border-radius: 4px;
+        padding: 0 6px;
+        margin-right: 6px;
+    }
+
     .type, .default {
         margin-right: 12px;
     }
@@ -42,3 +51,11 @@
     }
 
 }
+
+/**
+ Info on the generated document
+ */
+.generation-info {
+    font-size: $font-size-12;
+    border-bottom: 1px dashed $gray-400;
+}

+ 1 - 0
docs/content/docs/api/assets/_index.md

@@ -1,6 +1,7 @@
 ---
 title: "assets"
 weight: 10
+date: 2019-01-30T10:57:03.689Z
 generated: true
 ---
 <!-- This file was generated from the Vendure TypeScript source. Do not modify. Instead, re-run "generate-docs" -->

+ 5 - 2
docs/content/docs/api/assets/asset-naming-strategy.md

@@ -1,6 +1,7 @@
 ---
 title: "AssetNamingStrategy"
 weight: 10
+date: 2019-01-30T10:57:03.687Z
 generated: true
 ---
 <!-- This file was generated from the Vendure TypeScript source. Do not modify. Instead, re-run "generate-docs" -->
@@ -8,17 +9,19 @@ generated: true
 
 # AssetNamingStrategy
 
+{{< generation-info source="/server/src/config/asset-naming-strategy/asset-naming-strategy.ts">}}
+
 The AssetNamingStrategy determines how file names are generated based on the uploaded source file name,
as well as how to handle naming conflicts.
 
 ### generateSourceFileName
 
-{{< member-info type="(originalFileName: string, conflictFileName: string) => string" >}}
+{{< member-info kind="method" type="(originalFileName: string, conflictFileName: string) => string" >}}
 
 Given the original file name of the uploaded file, generate a file name to
be stored on the server. Operations like normalization and time-stamping can
be performed in this method.

The output will be checked for a naming conflict with an existing file. If a conflict
exists, this method will be invoked again with the second argument passed in and a new, unique
file name should then be generated. This process will repeat until a unique file name has
been returned.
 
 ### generatePreviewFileName
 
-{{< member-info type="(sourceFileName: string, conflictFileName: string) => string" >}}
+{{< member-info kind="method" type="(sourceFileName: string, conflictFileName: string) => string" >}}
 
 Given the source file name generated in the {@link generateSourceFileName} method, this method
should generate the file name of the preview image.

The same mechanism of checking for conflicts is used as described above.
 

+ 7 - 4
docs/content/docs/api/assets/asset-options.md

@@ -1,6 +1,7 @@
 ---
 title: "AssetOptions"
 weight: 10
+date: 2019-01-30T10:57:03.833Z
 generated: true
 ---
 <!-- This file was generated from the Vendure TypeScript source. Do not modify. Instead, re-run "generate-docs" -->
@@ -8,29 +9,31 @@ generated: true
 
 # AssetOptions
 
+{{< generation-info source="/server/src/config/vendure-config.ts">}}
+
 The AssetOptions define how assets (images and other files) are named and stored, and how preview images are generated.
 
 ### assetNamingStrategy
 
-{{< member-info type="<a href='/docs/api//assets/asset-naming-strategy/'>AssetNamingStrategy</a>" >}}
+{{< member-info kind="property" type="<a href='/docs/api//assets/asset-naming-strategy/'>AssetNamingStrategy</a>" >}}
 
 Defines how asset files and preview images are named before being saved.
 
 ### assetStorageStrategy
 
-{{< member-info type="<a href='/docs/api//assets/asset-storage-strategy/'>AssetStorageStrategy</a>" >}}
+{{< member-info kind="property" type="<a href='/docs/api//assets/asset-storage-strategy/'>AssetStorageStrategy</a>" >}}
 
 Defines the strategy used for storing uploaded binary files.
 
 ### assetPreviewStrategy
 
-{{< member-info type="<a href='/docs/api//assets/asset-preview-strategy/'>AssetPreviewStrategy</a>" >}}
+{{< member-info kind="property" type="<a href='/docs/api//assets/asset-preview-strategy/'>AssetPreviewStrategy</a>" >}}
 
 Defines the strategy used for creating preview images of uploaded assets.
 
 ### uploadMaxFileSize
 
-{{< member-info type="number" >}}
+{{< member-info kind="property" type="number" >}}
 
 The max file size in bytes for uploaded assets.
 

+ 4 - 1
docs/content/docs/api/assets/asset-preview-strategy.md

@@ -1,6 +1,7 @@
 ---
 title: "AssetPreviewStrategy"
 weight: 10
+date: 2019-01-30T10:57:03.701Z
 generated: true
 ---
 <!-- This file was generated from the Vendure TypeScript source. Do not modify. Instead, re-run "generate-docs" -->
@@ -8,11 +9,13 @@ generated: true
 
 # AssetPreviewStrategy
 
+{{< generation-info source="/server/src/config/asset-preview-strategy/asset-preview-strategy.ts">}}
+
 The AssetPreviewStrategy determines how preview images for assets are created. For image
assets, this would usually typically involve resizing to sensible dimensions. Other file types
could be previewed in a variety of ways, e.g.:
- waveform images generated for audio files
- preview images generated for pdf documents
- watermarks added to preview images
 
 ### generatePreviewImage
 
-{{< member-info type="(mimeType: string, data: Buffer) => Promise&#60;Buffer&#62;" >}}
+{{< member-info kind="method" type="(mimeType: string, data: Buffer) => Promise&#60;Buffer&#62;" >}}
 
 
 

+ 9 - 6
docs/content/docs/api/assets/asset-storage-strategy.md

@@ -1,6 +1,7 @@
 ---
 title: "AssetStorageStrategy"
 weight: 10
+date: 2019-01-30T10:57:03.707Z
 generated: true
 ---
 <!-- This file was generated from the Vendure TypeScript source. Do not modify. Instead, re-run "generate-docs" -->
@@ -8,41 +9,43 @@ generated: true
 
 # AssetStorageStrategy
 
+{{< generation-info source="/server/src/config/asset-storage-strategy/asset-storage-strategy.ts">}}
+
 The AssetPersistenceStrategy determines how Asset files are physically stored
and retrieved.
 
 ### writeFileFromBuffer
 
-{{< member-info type="(fileName: string, data: Buffer) => Promise&#60;string&#62;" >}}
+{{< member-info kind="method" type="(fileName: string, data: Buffer) => Promise&#60;string&#62;" >}}
 
 
 
 ### writeFileFromStream
 
-{{< member-info type="(fileName: string, data: Stream) => Promise&#60;string&#62;" >}}
+{{< member-info kind="method" type="(fileName: string, data: Stream) => Promise&#60;string&#62;" >}}
 
 
 
 ### readFileToBuffer
 
-{{< member-info type="(identifier: string) => Promise&#60;Buffer&#62;" >}}
+{{< member-info kind="method" type="(identifier: string) => Promise&#60;Buffer&#62;" >}}
 
 
 
 ### readFileToStream
 
-{{< member-info type="(identifier: string) => Promise&#60;Stream&#62;" >}}
+{{< member-info kind="method" type="(identifier: string) => Promise&#60;Stream&#62;" >}}
 
 
 
 ### fileExists
 
-{{< member-info type="(fileName: string) => Promise&#60;boolean&#62;" >}}
+{{< member-info kind="method" type="(fileName: string) => Promise&#60;boolean&#62;" >}}
 
 
 
 ### toAbsoluteUrl
 
-{{< member-info type="(reqest: Request, identifier: string) => string" >}}
+{{< member-info kind="method" type="(reqest: Request, identifier: string) => string" >}}
 
 
 

+ 1 - 0
docs/content/docs/api/auth/_index.md

@@ -1,6 +1,7 @@
 ---
 title: "auth"
 weight: 10
+date: 2019-01-30T10:57:03.809Z
 generated: true
 ---
 <!-- This file was generated from the Vendure TypeScript source. Do not modify. Instead, re-run "generate-docs" -->

+ 10 - 7
docs/content/docs/api/auth/auth-options.md

@@ -1,6 +1,7 @@
 ---
 title: "AuthOptions"
 weight: 10
+date: 2019-01-30T10:57:03.808Z
 generated: true
 ---
 <!-- This file was generated from the Vendure TypeScript source. Do not modify. Instead, re-run "generate-docs" -->
@@ -8,47 +9,49 @@ generated: true
 
 # AuthOptions
 
+{{< generation-info source="/server/src/config/vendure-config.ts">}}
+
 The AuthOptions define how authentication is managed.
 
 ### disableAuth
 
-{{< member-info type="boolean" default="true" >}}
+{{< member-info kind="property" type="boolean" default="true" >}}
 
 Disable authentication & permissions checks.
NEVER set the to true in production. It exists
only to aid certain development tasks.
 
 ### tokenMethod
 
-{{< member-info type="'cookie' | 'bearer'" default="'cookie'" >}}
+{{< member-info kind="property" type="'cookie' | 'bearer'" default="'cookie'" >}}
 
 Sets the method by which the session token is delivered and read.

* 'cookie': Upon login, a 'Set-Cookie' header will be returned to the client, setting a
cookie containing the session token. A browser-based client (making requests with credentials)
should automatically send the session cookie with each request.
* 'bearer': Upon login, the token is returned in the response and should be then stored by the
client app. Each request should include the header 'Authorization: Bearer <token>'.
 
 ### sessionSecret
 
-{{< member-info type="string" default="'session-secret'" >}}
+{{< member-info kind="property" type="string" default="'session-secret'" >}}
 
 The secret used for signing the session cookies for authenticated users. Only applies when
tokenMethod is set to 'cookie'.

In production applications, this should not be stored as a string in
source control for security reasons, but may be loaded from an external
file not under source control, or from an environment variable, for example.
 
 ### authTokenHeaderKey
 
-{{< member-info type="string" default="'vendure-auth-token'" >}}
+{{< member-info kind="property" type="string" default="'vendure-auth-token'" >}}
 
 Sets the header property which will be used to send the auth token when using the 'bearer' method.
 
 ### sessionDuration
 
-{{< member-info type="string | number" default="'7d'" >}}
+{{< member-info kind="property" type="string | number" default="'7d'" >}}
 
 Session duration, i.e. the time which must elapse from the last authenticted request
after which the user must re-authenticate.

Expressed as a string describing a time span per
[zeit/ms](https://github.com/zeit/ms.js).  Eg: `60`, `'2 days'`, `'10h'`, `'7d'`
 
 ### requireVerification
 
-{{< member-info type="boolean" >}}
+{{< member-info kind="property" type="boolean" >}}
 
 Determines whether new User accounts require verification of their email address.
 
 ### verificationTokenDuration
 
-{{< member-info type="string | number" default="'7d'" >}}
+{{< member-info kind="property" type="string | number" default="'7d'" >}}
 
 Sets the length of time that a verification token is valid for, after which the verification token must be refreshed.

Expressed as a string describing a time span per
[zeit/ms](https://github.com/zeit/ms.js).  Eg: `60`, `'2 days'`, `'10h'`, `'7d'`
 

+ 1 - 0
docs/content/docs/api/email/_index.md

@@ -1,6 +1,7 @@
 ---
 title: "email"
 weight: 10
+date: 2019-01-30T10:57:03.714Z
 generated: true
 ---
 <!-- This file was generated from the Vendure TypeScript source. Do not modify. Instead, re-run "generate-docs" -->

+ 7 - 4
docs/content/docs/api/email/email-options.md

@@ -1,6 +1,7 @@
 ---
 title: "EmailOptions"
 weight: 10
+date: 2019-01-30T10:57:03.856Z
 generated: true
 ---
 <!-- This file was generated from the Vendure TypeScript source. Do not modify. Instead, re-run "generate-docs" -->
@@ -8,29 +9,31 @@ generated: true
 
 # EmailOptions
 
+{{< generation-info source="/server/src/config/vendure-config.ts">}}
+
 
 
 ### emailTemplatePath
 
-{{< member-info type="string" >}}
+{{< member-info kind="property" type="string" >}}
 
 Path to the email template files.
 
 ### emailTypes
 
-{{< member-info type="EmailTypes&#60;EmailType&#62;" >}}
+{{< member-info kind="property" type="EmailTypes&#60;EmailType&#62;" >}}
 
 Configuration for the creation and templating of each email type
 
 ### generator
 
-{{< member-info type="EmailGenerator" >}}
+{{< member-info kind="property" type="EmailGenerator" >}}
 
 The EmailGenerator uses the EmailContext and template to generate the email body
 
 ### transport
 
-{{< member-info type="EmailTransportOptions" >}}
+{{< member-info kind="property" type="EmailTransportOptions" >}}
 
 Configuration for the transport (email sending) method
 

+ 6 - 3
docs/content/docs/api/email/file-transport-options.md

@@ -1,6 +1,7 @@
 ---
 title: "FileTransportOptions"
 weight: 10
+date: 2019-01-30T10:57:03.731Z
 generated: true
 ---
 <!-- This file was generated from the Vendure TypeScript source. Do not modify. Instead, re-run "generate-docs" -->
@@ -8,23 +9,25 @@ generated: true
 
 # FileTransportOptions
 
+{{< generation-info source="/server/src/config/email/email-transport-options.ts">}}
+
 Outputs the email as an HTML file for development purposes.
 
 ### type
 
-{{< member-info type="'file'" >}}
+{{< member-info kind="property" type="'file'" >}}
 
 
 
 ### outputPath
 
-{{< member-info type="string" >}}
+{{< member-info kind="property" type="string" >}}
 
 
 
 ### raw
 
-{{< member-info type="boolean" >}}
+{{< member-info kind="property" type="boolean" >}}
 
 
 

+ 4 - 1
docs/content/docs/api/email/noop-transport-options.md

@@ -1,6 +1,7 @@
 ---
 title: "NoopTransportOptions"
 weight: 10
+date: 2019-01-30T10:57:03.736Z
 generated: true
 ---
 <!-- This file was generated from the Vendure TypeScript source. Do not modify. Instead, re-run "generate-docs" -->
@@ -8,11 +9,13 @@ generated: true
 
 # NoopTransportOptions
 
+{{< generation-info source="/server/src/config/email/email-transport-options.ts">}}
+
 Does nothing with the generated email. Mainly intended for use in testing where we don't care about the email transport.
 
 ### type
 
-{{< member-info type="'none'" >}}
+{{< member-info kind="property" type="'none'" >}}
 
 
 

+ 13 - 10
docs/content/docs/api/email/s-m-t-p-transport-options.md

@@ -1,6 +1,7 @@
 ---
 title: "SMTPTransportOptions"
 weight: 10
+date: 2019-01-30T10:57:03.713Z
 generated: true
 ---
 <!-- This file was generated from the Vendure TypeScript source. Do not modify. Instead, re-run "generate-docs" -->
@@ -8,65 +9,67 @@ generated: true
 
 # SMTPTransportOptions
 
+{{< generation-info source="/server/src/config/email/email-transport-options.ts">}}
+
 A subset of the SMTP transport options of [Nodemailer](https://nodemailer.com/smtp/)
 
 ### type
 
-{{< member-info type="'smtp'" >}}
+{{< member-info kind="property" type="'smtp'" >}}
 
 
 
 ### host
 
-{{< member-info type="string" >}}
+{{< member-info kind="property" type="string" >}}
 
 
 
 ### port
 
-{{< member-info type="number" >}}
+{{< member-info kind="property" type="number" >}}
 
 
 
 ### auth
 
-{{< member-info type="SMTPCredentials" >}}
+{{< member-info kind="property" type="SMTPCredentials" >}}
 
 
 
 ### secure
 
-{{< member-info type="boolean" >}}
+{{< member-info kind="property" type="boolean" >}}
 
 
 
 ### ignoreTLS
 
-{{< member-info type="boolean" >}}
+{{< member-info kind="property" type="boolean" >}}
 
 
 
 ### requireTLS
 
-{{< member-info type="boolean" >}}
+{{< member-info kind="property" type="boolean" >}}
 
 
 
 ### name
 
-{{< member-info type="string" >}}
+{{< member-info kind="property" type="string" >}}
 
 
 
 ### localAddress
 
-{{< member-info type="string" >}}
+{{< member-info kind="property" type="string" >}}
 
 
 
 ### authMethod
 
-{{< member-info type="string" >}}
+{{< member-info kind="property" type="string" >}}
 
 
 

+ 6 - 3
docs/content/docs/api/email/sendmail-transport-options.md

@@ -1,6 +1,7 @@
 ---
 title: "SendmailTransportOptions"
 weight: 10
+date: 2019-01-30T10:57:03.725Z
 generated: true
 ---
 <!-- This file was generated from the Vendure TypeScript source. Do not modify. Instead, re-run "generate-docs" -->
@@ -8,23 +9,25 @@ generated: true
 
 # SendmailTransportOptions
 
+{{< generation-info source="/server/src/config/email/email-transport-options.ts">}}
+
 Uses the local Sendmail program to send the email.
 
 ### type
 
-{{< member-info type="'sendmail'" >}}
+{{< member-info kind="property" type="'sendmail'" >}}
 
 
 
 ### path
 
-{{< member-info type="string" >}}
+{{< member-info kind="property" type="string" >}}
 
 
 
 ### newline
 
-{{< member-info type="string" >}}
+{{< member-info kind="property" type="string" >}}
 
 
 

+ 5 - 2
docs/content/docs/api/email/testing-transport-options.md

@@ -1,6 +1,7 @@
 ---
 title: "TestingTransportOptions"
 weight: 10
+date: 2019-01-30T10:57:03.744Z
 generated: true
 ---
 <!-- This file was generated from the Vendure TypeScript source. Do not modify. Instead, re-run "generate-docs" -->
@@ -8,17 +9,19 @@ generated: true
 
 # TestingTransportOptions
 
+{{< generation-info source="/server/src/config/email/email-transport-options.ts">}}
+
 Forwards the raw GeneratedEmailContext object to a provided callback, for use in testing.
 
 ### type
 
-{{< member-info type="'testing'" >}}
+{{< member-info kind="property" type="'testing'" >}}
 
 
 
 ### onSend
 
-{{< member-info type="(context: GeneratedEmailContext) =&#62; void" >}}
+{{< member-info kind="property" type="(context: GeneratedEmailContext) =&#62; void" >}}
 
 Callback to be invoked when an email would be sent.
 

+ 6 - 3
docs/content/docs/api/entity-id-strategy.md

@@ -1,6 +1,7 @@
 ---
 title: "EntityIdStrategy"
 weight: 10
+date: 2019-01-30T10:57:03.751Z
 generated: true
 ---
 <!-- This file was generated from the Vendure TypeScript source. Do not modify. Instead, re-run "generate-docs" -->
@@ -8,23 +9,25 @@ generated: true
 
 # EntityIdStrategy
 
+{{< generation-info source="/server/src/config/entity-id-strategy/entity-id-strategy.ts">}}
+
 The EntityIdStrategy determines how entity IDs are generated and stored in the
database, as well as how they are transformed when being passed from the API to the
service layer.
 
 ### primaryKeyType
 
-{{< member-info type="PrimaryKeyType" >}}
+{{< member-info kind="property" type="PrimaryKeyType" >}}
 
 
 
 ### encodeId
 
-{{< member-info type="(primaryKey: T) =&#62; string" >}}
+{{< member-info kind="property" type="(primaryKey: T) =&#62; string" >}}
 
 
 
 ### decodeId
 
-{{< member-info type="(id: string) =&#62; T" >}}
+{{< member-info kind="property" type="(id: string) =&#62; T" >}}
 
 
 

+ 4 - 1
docs/content/docs/api/import-export-options.md

@@ -1,6 +1,7 @@
 ---
 title: "ImportExportOptions"
 weight: 10
+date: 2019-01-30T10:57:03.879Z
 generated: true
 ---
 <!-- This file was generated from the Vendure TypeScript source. Do not modify. Instead, re-run "generate-docs" -->
@@ -8,11 +9,13 @@ generated: true
 
 # ImportExportOptions
 
+{{< generation-info source="/server/src/config/vendure-config.ts">}}
+
 
 
 ### importAssetsDir
 
-{{< member-info type="string" >}}
+{{< member-info kind="property" type="string" >}}
 
 The directory in which assets to be imported are located.
 

+ 1 - 0
docs/content/docs/api/orders/_index.md

@@ -1,6 +1,7 @@
 ---
 title: "orders"
 weight: 10
+date: 2019-01-30T10:57:03.758Z
 generated: true
 ---
 <!-- This file was generated from the Vendure TypeScript source. Do not modify. Instead, re-run "generate-docs" -->

+ 5 - 2
docs/content/docs/api/orders/order-merge-options.md

@@ -1,6 +1,7 @@
 ---
 title: "OrderMergeOptions"
 weight: 10
+date: 2019-01-30T10:57:03.827Z
 generated: true
 ---
 <!-- This file was generated from the Vendure TypeScript source. Do not modify. Instead, re-run "generate-docs" -->
@@ -8,17 +9,19 @@ generated: true
 
 # OrderMergeOptions
 
+{{< generation-info source="/server/src/config/vendure-config.ts">}}
+
 
 
 ### mergeStrategy
 
-{{< member-info type="<a href='/docs/api//orders/order-merge-strategy/'>OrderMergeStrategy</a>" >}}
+{{< member-info kind="property" type="<a href='/docs/api//orders/order-merge-strategy/'>OrderMergeStrategy</a>" >}}
 
 Defines the strategy used to merge a guest Order and an existing Order when
signing in.
 
 ### checkoutMergeStrategy
 
-{{< member-info type="<a href='/docs/api//orders/order-merge-strategy/'>OrderMergeStrategy</a>" >}}
+{{< member-info kind="property" type="<a href='/docs/api//orders/order-merge-strategy/'>OrderMergeStrategy</a>" >}}
 
 Defines the strategy used to merge a guest Order and an existing Order when
signing in as part of the checkout flow.
 

+ 4 - 1
docs/content/docs/api/orders/order-merge-strategy.md

@@ -1,6 +1,7 @@
 ---
 title: "OrderMergeStrategy"
 weight: 10
+date: 2019-01-30T10:57:03.758Z
 generated: true
 ---
 <!-- This file was generated from the Vendure TypeScript source. Do not modify. Instead, re-run "generate-docs" -->
@@ -8,11 +9,13 @@ generated: true
 
 # OrderMergeStrategy
 
+{{< generation-info source="/server/src/config/order-merge-strategy/order-merge-strategy.ts">}}
+
 An OrderMergeStrategy defines what happens when a Customer with an existing Order
signs in with a guest Order, where both Orders may contain differing OrderLines.

Somehow these differing OrderLines need to be reconciled into a single collection
of OrderLines. The OrderMergeStrategy defines the rules governing this reconciliation.
 
 ### merge
 
-{{< member-info type="(guestOrder: Order, existingOrder: Order) => OrderLine[]" >}}
+{{< member-info kind="method" type="(guestOrder: Order, existingOrder: Order) => OrderLine[]" >}}
 
 
 

+ 7 - 4
docs/content/docs/api/orders/order-process-options.md

@@ -1,6 +1,7 @@
 ---
 title: "OrderProcessOptions"
 weight: 10
+date: 2019-01-30T10:57:03.820Z
 generated: true
 ---
 <!-- This file was generated from the Vendure TypeScript source. Do not modify. Instead, re-run "generate-docs" -->
@@ -8,29 +9,31 @@ generated: true
 
 # OrderProcessOptions
 
+{{< generation-info source="/server/src/config/vendure-config.ts">}}
+
 
 
 ### transtitions
 
-{{< member-info type="Partial&#60;Transitions&#60;T | OrderState&#62;&#62;" >}}
+{{< member-info kind="property" type="Partial&#60;Transitions&#60;T | OrderState&#62;&#62;" >}}
 
 Define how the custom states fit in with the default order
state transitions.
 
 ### onTransitionStart
 
-{{< member-info type="(fromState: T, toState: T, data: { order: Order }) => boolean | Promise&#60;boolean&#62; | Observable&#60;boolean&#62; | void" >}}
+{{< member-info kind="method" type="(fromState: T, toState: T, data: { order: Order }) => boolean | Promise&#60;boolean&#62; | Observable&#60;boolean&#62; | void" >}}
 
 Define logic to run before a state tranition takes place. Returning
false will prevent the transition from going ahead.
 
 ### onTransitionEnd
 
-{{< member-info type="(fromState: T, toState: T, data: { order: Order }) => void" >}}
+{{< member-info kind="method" type="(fromState: T, toState: T, data: { order: Order }) => void" >}}
 
 Define logic to run after a state transition has taken place.
 
 ### onError
 
-{{< member-info type="(fromState: T, toState: T, message: string) => void" >}}
+{{< member-info kind="method" type="(fromState: T, toState: T, message: string) => void" >}}
 
 Define a custom error handler function for transition errors.
 

+ 5 - 2
docs/content/docs/api/orders/shipping-options.md

@@ -1,6 +1,7 @@
 ---
 title: "ShippingOptions"
 weight: 10
+date: 2019-01-30T10:57:03.850Z
 generated: true
 ---
 <!-- This file was generated from the Vendure TypeScript source. Do not modify. Instead, re-run "generate-docs" -->
@@ -8,17 +9,19 @@ generated: true
 
 # ShippingOptions
 
+{{< generation-info source="/server/src/config/vendure-config.ts">}}
+
 
 
 ### shippingEligibilityCheckers
 
-{{< member-info type="Array&#60;ShippingEligibilityChecker&#60;any&#62;&#62;" >}}
+{{< member-info kind="property" type="Array&#60;ShippingEligibilityChecker&#60;any&#62;&#62;" >}}
 
 An array of available ShippingEligibilityCheckers for use in configuring ShippingMethods
 
 ### shippingCalculators
 
-{{< member-info type="Array&#60;ShippingCalculator&#60;any&#62;&#62;" >}}
+{{< member-info kind="property" type="Array&#60;ShippingCalculator&#60;any&#62;&#62;" >}}
 
 An array of available ShippingCalculator for use in configuring ShippingMethods
 

+ 1 - 0
docs/content/docs/api/payment/_index.md

@@ -1,6 +1,7 @@
 ---
 title: "payment"
 weight: 10
+date: 2019-01-30T10:57:03.862Z
 generated: true
 ---
 <!-- This file was generated from the Vendure TypeScript source. Do not modify. Instead, re-run "generate-docs" -->

+ 4 - 1
docs/content/docs/api/payment/payment-options.md

@@ -1,6 +1,7 @@
 ---
 title: "PaymentOptions"
 weight: 10
+date: 2019-01-30T10:57:03.862Z
 generated: true
 ---
 <!-- This file was generated from the Vendure TypeScript source. Do not modify. Instead, re-run "generate-docs" -->
@@ -8,11 +9,13 @@ generated: true
 
 # PaymentOptions
 
+{{< generation-info source="/server/src/config/vendure-config.ts">}}
+
 
 
 ### paymentMethodHandlers
 
-{{< member-info type="Array&#60;PaymentMethodHandler&#60;any&#62;&#62;" >}}
+{{< member-info kind="property" type="Array&#60;PaymentMethodHandler&#60;any&#62;&#62;" >}}
 
 An array of payment methods with which to process payments.
 

+ 0 - 9
docs/content/docs/api/plugins/_index.md

@@ -1,9 +0,0 @@
----
-title: "plugins"
-weight: 10
-generated: true
----
-<!-- This file was generated from the Vendure TypeScript source. Do not modify. Instead, re-run "generate-docs" -->
-
-
-# plugins

+ 1 - 0
docs/content/docs/api/promotions/_index.md

@@ -1,6 +1,7 @@
 ---
 title: "promotions"
 weight: 10
+date: 2019-01-30T10:57:03.839Z
 generated: true
 ---
 <!-- This file was generated from the Vendure TypeScript source. Do not modify. Instead, re-run "generate-docs" -->

+ 5 - 2
docs/content/docs/api/promotions/promotion-options.md

@@ -1,6 +1,7 @@
 ---
 title: "PromotionOptions"
 weight: 10
+date: 2019-01-30T10:57:03.839Z
 generated: true
 ---
 <!-- This file was generated from the Vendure TypeScript source. Do not modify. Instead, re-run "generate-docs" -->
@@ -8,17 +9,19 @@ generated: true
 
 # PromotionOptions
 
+{{< generation-info source="/server/src/config/vendure-config.ts">}}
+
 
 
 ### promotionConditions
 
-{{< member-info type="Array&#60;PromotionCondition&#60;any&#62;&#62;" >}}
+{{< member-info kind="property" type="Array&#60;PromotionCondition&#60;any&#62;&#62;" >}}
 
 An array of conditions which can be used to construct Promotions
 
 ### promotionActions
 
-{{< member-info type="Array&#60;PromotionAction&#60;any&#62;&#62;" >}}
+{{< member-info kind="property" type="Array&#60;PromotionAction&#60;any&#62;&#62;" >}}
 
 An array of actions which can be used to construct Promotions
 

+ 1 - 0
docs/content/docs/api/tax/_index.md

@@ -1,6 +1,7 @@
 ---
 title: "tax"
 weight: 10
+date: 2019-01-30T10:57:03.769Z
 generated: true
 ---
 <!-- This file was generated from the Vendure TypeScript source. Do not modify. Instead, re-run "generate-docs" -->

+ 4 - 1
docs/content/docs/api/tax/tax-calculation-strategy.md

@@ -1,6 +1,7 @@
 ---
 title: "TaxCalculationStrategy"
 weight: 10
+date: 2019-01-30T10:57:03.768Z
 generated: true
 ---
 <!-- This file was generated from the Vendure TypeScript source. Do not modify. Instead, re-run "generate-docs" -->
@@ -8,11 +9,13 @@ generated: true
 
 # TaxCalculationStrategy
 
+{{< generation-info source="/server/src/config/tax/tax-calculation-strategy.ts">}}
+
 Defines how taxes are calculated based on the input price, tax zone and current request context.
 
 ### calculate
 
-{{< member-info type="(args: TaxCalculationArgs) => TaxCalculationResult" >}}
+{{< member-info kind="method" type="(args: TaxCalculationArgs) => TaxCalculationResult" >}}
 
 
 

+ 5 - 2
docs/content/docs/api/tax/tax-options.md

@@ -1,6 +1,7 @@
 ---
 title: "TaxOptions"
 weight: 10
+date: 2019-01-30T10:57:03.873Z
 generated: true
 ---
 <!-- This file was generated from the Vendure TypeScript source. Do not modify. Instead, re-run "generate-docs" -->
@@ -8,17 +9,19 @@ generated: true
 
 # TaxOptions
 
+{{< generation-info source="/server/src/config/vendure-config.ts">}}
+
 
 
 ### taxZoneStrategy
 
-{{< member-info type="<a href='/docs/api//tax/tax-zone-strategy/'>TaxZoneStrategy</a>" >}}
+{{< member-info kind="property" type="<a href='/docs/api//tax/tax-zone-strategy/'>TaxZoneStrategy</a>" >}}
 
 Defines the strategy used to determine the applicable Zone used in tax calculations.
 
 ### taxCalculationStrategy
 
-{{< member-info type="<a href='/docs/api//tax/tax-calculation-strategy/'>TaxCalculationStrategy</a>" >}}
+{{< member-info kind="property" type="<a href='/docs/api//tax/tax-calculation-strategy/'>TaxCalculationStrategy</a>" >}}
 
 Defines the strategy used for calculating taxes.
 

+ 4 - 1
docs/content/docs/api/tax/tax-zone-strategy.md

@@ -1,6 +1,7 @@
 ---
 title: "TaxZoneStrategy"
 weight: 10
+date: 2019-01-30T10:57:03.802Z
 generated: true
 ---
 <!-- This file was generated from the Vendure TypeScript source. Do not modify. Instead, re-run "generate-docs" -->
@@ -8,11 +9,13 @@ generated: true
 
 # TaxZoneStrategy
 
+{{< generation-info source="/server/src/config/tax/tax-zone-strategy.ts">}}
+
 Defines how the active Zone is determined for the purposes of calculating taxes.
 
 ### determineTaxZone
 
-{{< member-info type="(zones: Zone[], channel: Channel, order: Order) => Zone" >}}
+{{< member-info kind="method" type="(zones: Zone[], channel: Channel, order: Order) => Zone" >}}
 
 
 

+ 26 - 23
docs/content/docs/api/vendure-config.md

@@ -1,6 +1,7 @@
 ---
 title: "VendureConfig"
 weight: 0
+date: 2019-01-30T10:57:03.886Z
 generated: true
 ---
 <!-- This file was generated from the Vendure TypeScript source. Do not modify. Instead, re-run "generate-docs" -->
@@ -8,143 +9,145 @@ generated: true
 
 # VendureConfig
 
+{{< generation-info source="/server/src/config/vendure-config.ts">}}
+
 All possible configuration options are defined by the
[`VendureConfig`](https://github.com/vendure-ecommerce/vendure/blob/master/server/src/config/vendure-config.ts) interface.

{{% alert %}}
Note on terminology: many of the configuration properties are named "Strategy" - this is because their use follows the
[Strategy Pattern](https://en.wikipedia.org/wiki/Strategy_pattern) of software design.
{{% /alert %}}
 
 ### apiPath
 
-{{< member-info type="string" >}}
+{{< member-info kind="property" type="string" >}}
 
 The path to the GraphQL API.
 
 ### assetOptions
 
-{{< member-info type="<a href='/docs/api//assets/asset-options/'>AssetOptions</a>" >}}
+{{< member-info kind="property" type="<a href='/docs/api//assets/asset-options/'>AssetOptions</a>" >}}
 
 Configuration for the handling of Assets.
 
 ### authOptions
 
-{{< member-info type="<a href='/docs/api//auth/auth-options/'>AuthOptions</a>" >}}
+{{< member-info kind="property" type="<a href='/docs/api//auth/auth-options/'>AuthOptions</a>" >}}
 
 Configuration for authorization.
 
 ### channelTokenKey
 
-{{< member-info type="string" >}}
+{{< member-info kind="property" type="string" >}}
 
 The name of the property which contains the token of the
active channel. This property can be included either in
the request header or as a query string.
 
 ### cors
 
-{{< member-info type="boolean | CorsOptions" >}}
+{{< member-info kind="property" type="boolean | CorsOptions" >}}
 
 Set the CORS handling for the server.
 
 ### customFields
 
-{{< member-info type="CustomFields" >}}
+{{< member-info kind="property" type="CustomFields" >}}
 
 Defines custom fields which can be used to extend the built-in entities.
 
 ### dbConnectionOptions
 
-{{< member-info type="ConnectionOptions" >}}
+{{< member-info kind="property" type="ConnectionOptions" >}}
 
 The connection options used by TypeORM to connect to the database.
 
 ### defaultChannelToken
 
-{{< member-info type="string | null" >}}
+{{< member-info kind="property" type="string | null" >}}
 
 The token for the default channel. If not specified, a token
will be randomly generated.
 
 ### defaultLanguageCode
 
-{{< member-info type="LanguageCode" >}}
+{{< member-info kind="property" type="LanguageCode" >}}
 
 The default languageCode of the app.
 
 ### emailOptions
 
-{{< member-info type="<a href='/docs/api//email/email-options/'>EmailOptions</a>&#60;any&#62;" >}}
+{{< member-info kind="property" type="<a href='/docs/api//email/email-options/'>EmailOptions</a>&#60;any&#62;" >}}
 
 Configures the handling of transactional emails.
 
 ### entityIdStrategy
 
-{{< member-info type="<a href='/docs/api///entity-id-strategy/'>EntityIdStrategy</a>&#60;any&#62;" >}}
+{{< member-info kind="property" type="<a href='/docs/api///entity-id-strategy/'>EntityIdStrategy</a>&#60;any&#62;" >}}
 
 Defines the strategy used for both storing the primary keys of entities
in the database, and the encoding & decoding of those ids when exposing
entities via the API. The default uses a simple auto-increment integer
strategy.
 
 ### hostname
 
-{{< member-info type="string" >}}
+{{< member-info kind="property" type="string" >}}
 
 Set the hostname of the server.
 
 ### importExportOptions
 
-{{< member-info type="<a href='/docs/api///import-export-options/'>ImportExportOptions</a>" >}}
+{{< member-info kind="property" type="<a href='/docs/api///import-export-options/'>ImportExportOptions</a>" >}}
 
 Configuration settings for data import and export.
 
 ### orderMergeOptions
 
-{{< member-info type="<a href='/docs/api//orders/order-merge-options/'>OrderMergeOptions</a>" >}}
+{{< member-info kind="property" type="<a href='/docs/api//orders/order-merge-options/'>OrderMergeOptions</a>" >}}
 
 Define the strategies governing how Orders are merged when an existing
Customer signs in.
 
 ### orderProcessOptions
 
-{{< member-info type="<a href='/docs/api//orders/order-process-options/'>OrderProcessOptions</a>&#60;any&#62;" >}}
+{{< member-info kind="property" type="<a href='/docs/api//orders/order-process-options/'>OrderProcessOptions</a>&#60;any&#62;" >}}
 
 Defines custom states in the order process finite state machine.
 
 ### middleware
 
-{{< member-info type="Array&#60;{ handler: RequestHandler; route: string }&#62;" >}}
+{{< member-info kind="property" type="Array&#60;{ handler: RequestHandler; route: string }&#62;" >}}
 
 Custom Express middleware for the server.
 
 ### paymentOptions
 
-{{< member-info type="<a href='/docs/api//payment/payment-options/'>PaymentOptions</a>" >}}
+{{< member-info kind="property" type="<a href='/docs/api//payment/payment-options/'>PaymentOptions</a>" >}}
 
 Configures available payment processing methods.
 
 ### plugins
 
-{{< member-info type="<a href='/docs/api//plugins/vendure-plugin/'>VendurePlugin</a>[]" >}}
+{{< member-info kind="property" type="<a href='/docs/api///vendure-plugin/'>VendurePlugin</a>[]" >}}
 
 An array of plugins.
 
 ### port
 
-{{< member-info type="number" >}}
+{{< member-info kind="property" type="number" >}}
 
 Which port the Vendure server should listen on.
 
 ### promotionOptions
 
-{{< member-info type="<a href='/docs/api//promotions/promotion-options/'>PromotionOptions</a>" >}}
+{{< member-info kind="property" type="<a href='/docs/api//promotions/promotion-options/'>PromotionOptions</a>" >}}
 
 Configures the Conditions and Actions available when creating Promotions.
 
 ### shippingOptions
 
-{{< member-info type="<a href='/docs/api//orders/shipping-options/'>ShippingOptions</a>" >}}
+{{< member-info kind="property" type="<a href='/docs/api//orders/shipping-options/'>ShippingOptions</a>" >}}
 
 Configures the available checkers and calculators for ShippingMethods.
 
 ### silent
 
-{{< member-info type="boolean" >}}
+{{< member-info kind="property" type="boolean" >}}
 
 When set to true, no application logging will be output to the console.
 
 ### taxOptions
 
-{{< member-info type="<a href='/docs/api//tax/tax-options/'>TaxOptions</a>" >}}
+{{< member-info kind="property" type="<a href='/docs/api//tax/tax-options/'>TaxOptions</a>" >}}
 
 Configures how taxes are calculated on products.
 

+ 8 - 5
docs/content/docs/api/plugins/vendure-plugin.md → docs/content/docs/api/vendure-plugin.md

@@ -1,6 +1,7 @@
 ---
 title: "VendurePlugin"
 weight: 10
+date: 2019-01-30T10:57:03.896Z
 generated: true
 ---
 <!-- This file was generated from the Vendure TypeScript source. Do not modify. Instead, re-run "generate-docs" -->
@@ -8,35 +9,37 @@ generated: true
 
 # VendurePlugin
 
+{{< generation-info source="/server/src/config/vendure-plugin/vendure-plugin.ts">}}
+
 A VendurePlugin is a means of configuring and/or extending the functionality of the Vendure server. In its simplest form,
a plugin simply modifies the VendureConfig object. Although such configuration can be directly supplied to the bootstrap
function, using a plugin allows one to abstract away a set of related configuration.

As well as configuring the app, a plugin may also extend the GraphQL schema by extending existing types or adding
entirely new types. Database entities and resolvers can also be defined to handle the extended GraphQL types.
 
 ### configure
 
-{{< member-info type="(config: Required&#60;<a href='/docs/api///vendure-config/'>VendureConfig</a>&#62;) => Required&#60;<a href='/docs/api///vendure-config/'>VendureConfig</a>&#62; | Promise&#60;Required&#60;VendureConfig&#62;&#62;" >}}
+{{< member-info kind="method" type="(config: Required&#60;<a href='/docs/api///vendure-config/'>VendureConfig</a>&#62;) => Required&#60;<a href='/docs/api///vendure-config/'>VendureConfig</a>&#62; | Promise&#60;Required&#60;VendureConfig&#62;&#62;" >}}
 
 This method is called before the app bootstraps, and can modify the VendureConfig object and perform
other (potentially async) tasks needed.
 
 ### onBootstrap
 
-{{< member-info type="(inject: InjectorFn) => void | Promise&#60;void&#62;" >}}
+{{< member-info kind="method" type="(inject: InjectorFn) => void | Promise&#60;void&#62;" >}}
 
 This method is called after the app has bootstrapped. In this method, instances of services may be injected
into the plugin. For example, the ProductService can be injected in order to enable operations on Product
entities.
 
 ### defineGraphQlTypes
 
-{{< member-info type="() => DocumentNode" >}}
+{{< member-info kind="method" type="() => DocumentNode" >}}
 
 The plugin may extend the default Vendure GraphQL schema by implementing this method.
 
 ### defineProviders
 
-{{< member-info type="() => Array&#60;Type&#60;any&#62;&#62;" >}}
+{{< member-info kind="method" type="() => Array&#60;Type&#60;any&#62;&#62;" >}}
 
 The plugin may define custom providers (including GraphQL resolvers) which can then be injected via the Nest DI container.
 
 ### defineEntities
 
-{{< member-info type="() => Array&#60;Type&#60;any&#62;&#62;" >}}
+{{< member-info kind="method" type="() => Array&#60;Type&#60;any&#62;&#62;" >}}
 
 The plugin may define custom database entities, which should be defined as classes annotated as per the
TypeORM documentation.
 

+ 3 - 0
docs/layouts/shortcodes/generation-info.html

@@ -0,0 +1,3 @@
+<div class="generation-info">
+    Documentation generated from <a href="https://github.com/vendure-ecommerce/vendure/blob/master{{ .Get "source" }}">{{  index (last 1 (split (.Get "source") "/")) 0 }}</a> on {{ dateFormat "Jan 2 2006 at 15:04" $.Page.Lastmod }}
+</div>

+ 3 - 0
docs/layouts/shortcodes/member-info.html

@@ -1,4 +1,7 @@
 <div class="member-info">
+    <div class="kind">
+        <div class="kind-label">{{ .Get "kind" | safeHTML }}</div>
+    </div>
     <div class="type">
         <div class="label">type:</div>
         <div class="type-code">{{ .Get "type" | safeHTML }}</div>

+ 1 - 1
server/src/config/vendure-plugin/vendure-plugin.ts

@@ -14,7 +14,7 @@ export type InjectorFn = <T>(type: Type<T>) => T;
  * As well as configuring the app, a plugin may also extend the GraphQL schema by extending existing types or adding
  * entirely new types. Database entities and resolvers can also be defined to handle the extended GraphQL types.
  *
- * @docsCategory plugins
+ * @docsCategory
  */
 export interface VendurePlugin {
     /**