| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- import { LanguageCode, PluginCommonModule, VendurePlugin } from '@vendure/core';
- import './types';
- import { digitalFulfillmentHandler } from './config/digital-fulfillment-handler';
- import { digitalOrderProcess } from './config/digital-order-process';
- import { digitalShippingEligibilityChecker } from './config/digital-shipping-eligibility-checker';
- import { DigitalShippingLineAssignmentStrategy } from './config/digital-shipping-line-assignment-strategy';
- /**
- * @description
- * This is an example plugin which demonstrates how to add support for digital products.
- */
- @VendurePlugin({
- imports: [PluginCommonModule],
- configuration: config => {
- config.customFields.ProductVariant.push({
- type: 'boolean',
- name: 'isDigital',
- defaultValue: false,
- label: [{ languageCode: LanguageCode.en, value: 'This product is digital' }],
- public: true,
- });
- config.customFields.ShippingMethod.push({
- type: 'boolean',
- name: 'isDigital',
- defaultValue: false,
- label: [
- { languageCode: LanguageCode.en, value: 'This shipping method handles digital products' },
- ],
- public: true,
- });
- config.customFields.Fulfillment.push({
- type: 'string',
- name: 'downloadUrls',
- nullable: true,
- list: true,
- label: [{ languageCode: LanguageCode.en, value: 'Urls of any digital purchases' }],
- public: true,
- });
- config.shippingOptions.fulfillmentHandlers.push(digitalFulfillmentHandler);
- config.shippingOptions.shippingLineAssignmentStrategy = new DigitalShippingLineAssignmentStrategy();
- config.shippingOptions.shippingEligibilityCheckers.push(digitalShippingEligibilityChecker);
- config.orderOptions.process.push(digitalOrderProcess);
- return config;
- },
- compatibility: '^3.0.0',
- })
- export class DigitalProductsPlugin {}
|