digital-products.plugin.ts 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import { LanguageCode, PluginCommonModule, VendurePlugin } from '@vendure/core';
  2. import './types';
  3. import { digitalFulfillmentHandler } from './config/digital-fulfillment-handler';
  4. import { digitalOrderProcess } from './config/digital-order-process';
  5. import { digitalShippingEligibilityChecker } from './config/digital-shipping-eligibility-checker';
  6. import { DigitalShippingLineAssignmentStrategy } from './config/digital-shipping-line-assignment-strategy';
  7. /**
  8. * @description
  9. * This is an example plugin which demonstrates how to add support for digital products.
  10. */
  11. @VendurePlugin({
  12. imports: [PluginCommonModule],
  13. configuration: config => {
  14. config.customFields.ProductVariant.push({
  15. type: 'boolean',
  16. name: 'isDigital',
  17. defaultValue: false,
  18. label: [{ languageCode: LanguageCode.en, value: 'This product is digital' }],
  19. public: true,
  20. });
  21. config.customFields.ShippingMethod.push({
  22. type: 'boolean',
  23. name: 'isDigital',
  24. defaultValue: false,
  25. label: [
  26. { languageCode: LanguageCode.en, value: 'This shipping method handles digital products' },
  27. ],
  28. public: true,
  29. });
  30. config.customFields.Fulfillment.push({
  31. type: 'string',
  32. name: 'downloadUrls',
  33. nullable: true,
  34. list: true,
  35. label: [{ languageCode: LanguageCode.en, value: 'Urls of any digital purchases' }],
  36. public: true,
  37. });
  38. config.shippingOptions.fulfillmentHandlers.push(digitalFulfillmentHandler);
  39. config.shippingOptions.shippingLineAssignmentStrategy = new DigitalShippingLineAssignmentStrategy();
  40. config.shippingOptions.shippingEligibilityCheckers.push(digitalShippingEligibilityChecker);
  41. config.orderOptions.process.push(digitalOrderProcess);
  42. return config;
  43. },
  44. compatibility: '^3.0.0',
  45. })
  46. export class DigitalProductsPlugin {}