|
|
@@ -20,7 +20,7 @@ import { compileUiExtensions } from '@vendure/ui-devkit/compiler';
|
|
|
import path from 'path';
|
|
|
import { DataSourceOptions } from 'typeorm';
|
|
|
|
|
|
-import { MultivendorPlugin } from './test-plugins/multivendor-plugin/multivendor.plugin';
|
|
|
+import { MultivendorPlugin } from './example-plugins/multivendor-plugin/multivendor.plugin';
|
|
|
|
|
|
/**
|
|
|
* Config settings used during development
|
|
|
@@ -62,327 +62,16 @@ export const devConfig: VendureConfig = {
|
|
|
paymentMethodHandlers: [dummyPaymentHandler],
|
|
|
},
|
|
|
|
|
|
- customFields: {
|
|
|
- Product: [
|
|
|
- {
|
|
|
- name: 'searchKeywords',
|
|
|
- label: [{ languageCode: LanguageCode.en, value: 'Search keywords' }],
|
|
|
- type: 'string',
|
|
|
- defaultValue: '',
|
|
|
- public: false,
|
|
|
- },
|
|
|
- {
|
|
|
- name: 'noIndex',
|
|
|
- label: [{ languageCode: LanguageCode.en, value: 'Do not allow crawlers to index' }],
|
|
|
- type: 'boolean',
|
|
|
- defaultValue: false,
|
|
|
- public: true,
|
|
|
- ui: { tab: 'SEO' },
|
|
|
- },
|
|
|
- ],
|
|
|
- ProductVariant: [
|
|
|
- {
|
|
|
- name: 'weight',
|
|
|
- type: 'int',
|
|
|
- defaultValue: 0,
|
|
|
- nullable: false,
|
|
|
- min: 0,
|
|
|
- step: 1,
|
|
|
- public: true,
|
|
|
- label: [{ languageCode: LanguageCode.en, value: 'Weight' }],
|
|
|
- ui: { component: 'number-form-input', suffix: 'g' },
|
|
|
- },
|
|
|
- {
|
|
|
- name: 'gtin',
|
|
|
- type: 'string',
|
|
|
- nullable: true,
|
|
|
- public: true,
|
|
|
- label: [{ languageCode: LanguageCode.en, value: 'GTIN (barcode)' }],
|
|
|
- },
|
|
|
- ],
|
|
|
- },
|
|
|
-
|
|
|
- /* customFields: {
|
|
|
- ProductVariant: [
|
|
|
- {
|
|
|
- name: 'weight',
|
|
|
- type: 'int',
|
|
|
- defaultValue: 0,
|
|
|
- nullable: false,
|
|
|
- min: 0,
|
|
|
- step: 1,
|
|
|
- public: true,
|
|
|
- label: [{ languageCode: LanguageCode.en, value: 'Weight' }],
|
|
|
- ui: { component: 'number-form-input', suffix: 'g' },
|
|
|
- },
|
|
|
- {
|
|
|
- name: 'rrp',
|
|
|
- type: 'int',
|
|
|
- nullable: true,
|
|
|
- min: 0,
|
|
|
- step: 1,
|
|
|
- public: true,
|
|
|
- label: [{ languageCode: LanguageCode.en, value: 'RRP' }],
|
|
|
- ui: { component: 'currency-form-input' },
|
|
|
- },
|
|
|
- {
|
|
|
- name: 'gtin',
|
|
|
- type: 'string',
|
|
|
- nullable: true,
|
|
|
- public: true,
|
|
|
- label: [{ languageCode: LanguageCode.en, value: 'GTIN (barcode)' }],
|
|
|
- },
|
|
|
- {
|
|
|
- name: 'additionalInformation',
|
|
|
- type: 'text',
|
|
|
- nullable: true,
|
|
|
- public: true,
|
|
|
- label: [{ languageCode: LanguageCode.en, value: 'Additional Information' }],
|
|
|
- ui: { component: 'json-editor-form-input' },
|
|
|
- },
|
|
|
- ],
|
|
|
- Product: [
|
|
|
- {
|
|
|
- name: 'searchKeywords',
|
|
|
- label: [{ languageCode: LanguageCode.en, value: 'Search keywords' }],
|
|
|
- type: 'string',
|
|
|
- defaultValue: '',
|
|
|
- public: false,
|
|
|
- },
|
|
|
- {
|
|
|
- name: 'pageType',
|
|
|
- label: [{ languageCode: LanguageCode.en, value: 'Page type' }],
|
|
|
- type: 'string',
|
|
|
- defaultValue: 'default',
|
|
|
- public: true,
|
|
|
- options: [
|
|
|
- { value: 'default', label: [{ languageCode: LanguageCode.en, value: 'Default' }] },
|
|
|
- {
|
|
|
- value: 'colour-chart',
|
|
|
- label: [{ languageCode: LanguageCode.en, value: 'Colour chart' }],
|
|
|
- },
|
|
|
- {
|
|
|
- value: 'select-menu',
|
|
|
- label: [{ languageCode: LanguageCode.en, value: 'Select menu' }],
|
|
|
- },
|
|
|
- { value: 'gift-card', label: [{ languageCode: LanguageCode.en, value: 'Gift card' }] },
|
|
|
- ],
|
|
|
- ui: { tab: 'Display' },
|
|
|
- },
|
|
|
- {
|
|
|
- name: 'keyFeatures',
|
|
|
- label: [{ languageCode: LanguageCode.en, value: 'Key features' }],
|
|
|
- type: 'text',
|
|
|
- public: true,
|
|
|
- nullable: true,
|
|
|
- ui: { component: 'rich-text-form-input' },
|
|
|
- },
|
|
|
- {
|
|
|
- name: 'videoUrls',
|
|
|
- label: [{ languageCode: LanguageCode.en, value: 'Video urls' }],
|
|
|
- type: 'string',
|
|
|
- list: true,
|
|
|
- public: true,
|
|
|
- nullable: false,
|
|
|
- defaultValue: [],
|
|
|
- },
|
|
|
- {
|
|
|
- name: 'variantOrdering',
|
|
|
- label: [{ languageCode: LanguageCode.en, value: 'Variant ordering' }],
|
|
|
- type: 'string',
|
|
|
- defaultValue: 'default',
|
|
|
- public: true,
|
|
|
- options: [
|
|
|
- { value: 'default', label: [{ languageCode: LanguageCode.en, value: 'Default' }] },
|
|
|
- {
|
|
|
- value: 'alphabetical',
|
|
|
- label: [{ languageCode: LanguageCode.en, value: 'Alphabetical' }],
|
|
|
- },
|
|
|
- {
|
|
|
- value: 'brush-size',
|
|
|
- label: [{ languageCode: LanguageCode.en, value: 'Brush size (000, 00, 0, 1, ...)' }],
|
|
|
- },
|
|
|
- {
|
|
|
- value: 'dimension',
|
|
|
- label: [
|
|
|
- { languageCode: LanguageCode.en, value: 'Dimension (5" x 5", 10" x 12",...)' },
|
|
|
- ],
|
|
|
- },
|
|
|
- ],
|
|
|
- ui: { tab: 'Display' },
|
|
|
- },
|
|
|
- {
|
|
|
- name: 'seoTitle',
|
|
|
- type: 'localeString',
|
|
|
- public: true,
|
|
|
- label: [{ languageCode: LanguageCode.en, value: 'SEO Title' }],
|
|
|
- nullable: true,
|
|
|
- ui: { tab: 'SEO' },
|
|
|
- },
|
|
|
- {
|
|
|
- name: 'seoDescription',
|
|
|
- type: 'localeString',
|
|
|
- public: true,
|
|
|
- label: [{ languageCode: LanguageCode.en, value: 'SEO Description' }],
|
|
|
- nullable: true,
|
|
|
- ui: { tab: 'SEO', component: 'textarea-form-input' },
|
|
|
- },
|
|
|
- {
|
|
|
- name: 'seoImage',
|
|
|
- type: 'relation',
|
|
|
- entity: Asset,
|
|
|
- public: true,
|
|
|
- label: [{ languageCode: LanguageCode.en, value: 'SEO Image' }],
|
|
|
- nullable: true,
|
|
|
- ui: { tab: 'SEO' },
|
|
|
- },
|
|
|
- {
|
|
|
- name: 'boost',
|
|
|
- type: 'int',
|
|
|
- public: true,
|
|
|
- defaultValue: 0,
|
|
|
- min: 0,
|
|
|
- max: 5,
|
|
|
- label: [{ languageCode: LanguageCode.en, value: 'Boost in list pages' }],
|
|
|
- nullable: true,
|
|
|
- },
|
|
|
- {
|
|
|
- name: 'minimumOrderQuantity',
|
|
|
- type: 'int',
|
|
|
- public: true,
|
|
|
- min: 0,
|
|
|
- label: [{ languageCode: LanguageCode.en, value: 'Minimum order quantity' }],
|
|
|
- description: [
|
|
|
- {
|
|
|
- languageCode: LanguageCode.en,
|
|
|
- value: 'If set, the customer must order at least this number of any variants of this product',
|
|
|
- },
|
|
|
- ],
|
|
|
- nullable: true,
|
|
|
- },
|
|
|
- ],
|
|
|
- Collection: [
|
|
|
- {
|
|
|
- name: 'excludeFromNavMenu',
|
|
|
- label: [{ languageCode: LanguageCode.en, value: 'Exclude from nav menu' }],
|
|
|
- type: 'boolean',
|
|
|
- defaultValue: false,
|
|
|
- public: true,
|
|
|
- },
|
|
|
- {
|
|
|
- name: 'excludeFromSubCollections',
|
|
|
- label: [{ languageCode: LanguageCode.en, value: 'Exclude from sub collections' }],
|
|
|
- type: 'boolean',
|
|
|
- defaultValue: false,
|
|
|
- public: true,
|
|
|
- },
|
|
|
- {
|
|
|
- name: 'noIndex',
|
|
|
- label: [{ languageCode: LanguageCode.en, value: 'Do not allow crawlers to index' }],
|
|
|
- type: 'boolean',
|
|
|
- defaultValue: false,
|
|
|
- public: true,
|
|
|
- ui: { tab: 'SEO' },
|
|
|
- },
|
|
|
- {
|
|
|
- name: 'searchKeywords',
|
|
|
- label: [{ languageCode: LanguageCode.en, value: 'Search keywords' }],
|
|
|
- type: 'string',
|
|
|
- defaultValue: '',
|
|
|
- public: false,
|
|
|
- },
|
|
|
- {
|
|
|
- name: 'layout',
|
|
|
- type: 'string',
|
|
|
- public: true,
|
|
|
- nullable: false,
|
|
|
- defaultValue: 'fullWidth',
|
|
|
- label: [{ languageCode: LanguageCode.en, value: 'Layout mode' }],
|
|
|
- options: [
|
|
|
- { value: 'default', label: [{ languageCode: LanguageCode.en, value: 'Default' }] },
|
|
|
- { value: 'fullWidth', label: [{ languageCode: LanguageCode.en, value: 'Full width' }] },
|
|
|
- ],
|
|
|
- },
|
|
|
- {
|
|
|
- name: 'seoTitle',
|
|
|
- type: 'localeString',
|
|
|
- public: true,
|
|
|
- label: [{ languageCode: LanguageCode.en, value: 'SEO Meta Title' }],
|
|
|
- nullable: true,
|
|
|
- ui: { tab: 'SEO' },
|
|
|
- },
|
|
|
- {
|
|
|
- name: 'seoDescription',
|
|
|
- type: 'localeString',
|
|
|
- public: true,
|
|
|
- label: [{ languageCode: LanguageCode.en, value: 'SEO Meta Description' }],
|
|
|
- nullable: true,
|
|
|
- ui: { tab: 'SEO', component: 'textarea-form-input' },
|
|
|
- },
|
|
|
- {
|
|
|
- name: 'seoImage',
|
|
|
- type: 'relation',
|
|
|
- entity: Asset,
|
|
|
- public: true,
|
|
|
- label: [{ languageCode: LanguageCode.en, value: 'SEO Meta Image' }],
|
|
|
- nullable: true,
|
|
|
- ui: { tab: 'SEO' },
|
|
|
- },
|
|
|
- {
|
|
|
- name: 'extendedDescription',
|
|
|
- type: 'text',
|
|
|
- public: true,
|
|
|
- label: [{ languageCode: LanguageCode.en, value: 'Extended description' }],
|
|
|
- nullable: true,
|
|
|
- ui: { tab: 'SEO', component: 'rich-text-form-input' },
|
|
|
- },
|
|
|
- {
|
|
|
- name: 'isOfferCollection',
|
|
|
- type: 'boolean',
|
|
|
- public: true,
|
|
|
- label: [{ languageCode: LanguageCode.en, value: 'Is offer collecion' }],
|
|
|
- nullable: true,
|
|
|
- defaultValue: false,
|
|
|
- ui: { tab: 'Offers' },
|
|
|
- },
|
|
|
- {
|
|
|
- name: 'offerName',
|
|
|
- type: 'string',
|
|
|
- public: true,
|
|
|
- label: [{ languageCode: LanguageCode.en, value: 'Offer name' }],
|
|
|
- nullable: true,
|
|
|
- ui: { tab: 'Offers' },
|
|
|
- },
|
|
|
- {
|
|
|
- name: 'offerDescription',
|
|
|
- type: 'string',
|
|
|
- public: true,
|
|
|
- label: [{ languageCode: LanguageCode.en, value: 'Offer description' }],
|
|
|
- nullable: true,
|
|
|
- ui: { tab: 'Offers', component: 'rich-text-form-input' },
|
|
|
- },
|
|
|
- {
|
|
|
- name: 'displayRrpDiscount',
|
|
|
- type: 'boolean',
|
|
|
- public: true,
|
|
|
- label: [{ languageCode: LanguageCode.en, value: 'Display RRP discount' }],
|
|
|
- description: [
|
|
|
- {
|
|
|
- languageCode: LanguageCode.en,
|
|
|
- value: 'When enabled, the RRP discount of included products will be displayed in the storefront',
|
|
|
- },
|
|
|
- ],
|
|
|
- nullable: true,
|
|
|
- ui: { tab: 'Offers' },
|
|
|
- },
|
|
|
- ],
|
|
|
- }, */
|
|
|
+ customFields: {},
|
|
|
logger: new DefaultLogger({ level: LogLevel.Verbose }),
|
|
|
importExportOptions: {
|
|
|
importAssetsDir: path.join(__dirname, 'import-assets'),
|
|
|
},
|
|
|
plugins: [
|
|
|
- // MultivendorPlugin,
|
|
|
+ MultivendorPlugin.init({
|
|
|
+ platformFeePercent: 10,
|
|
|
+ platformFeeSKU: 'FEE',
|
|
|
+ }),
|
|
|
AssetServerPlugin.init({
|
|
|
route: 'assets',
|
|
|
assetUploadDir: path.join(__dirname, 'assets'),
|