|
|
@@ -3,10 +3,12 @@ import { AdminUiPlugin } from '@vendure/admin-ui-plugin';
|
|
|
import { AssetServerPlugin } from '@vendure/asset-server-plugin';
|
|
|
import { ADMIN_API_PATH, API_PORT, SHOP_API_PATH } from '@vendure/common/lib/shared-constants';
|
|
|
import {
|
|
|
+ Asset,
|
|
|
DefaultJobQueuePlugin,
|
|
|
DefaultLogger,
|
|
|
DefaultSearchPlugin,
|
|
|
dummyPaymentHandler,
|
|
|
+ LanguageCode,
|
|
|
LogLevel,
|
|
|
VendureConfig,
|
|
|
} from '@vendure/core';
|
|
|
@@ -59,7 +61,281 @@ export const devConfig: VendureConfig = {
|
|
|
paymentOptions: {
|
|
|
paymentMethodHandlers: [dummyPaymentHandler],
|
|
|
},
|
|
|
- customFields: {},
|
|
|
+ /* 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' },
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ }, */
|
|
|
logger: new DefaultLogger({ level: LogLevel.Verbose }),
|
|
|
importExportOptions: {
|
|
|
importAssetsDir: path.join(__dirname, 'import-assets'),
|