product-bundles.plugin.ts 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import { PluginCommonModule, VendurePlugin } from '@vendure/core';
  2. import { AdminUiExtension } from '@vendure/ui-devkit/compiler';
  3. import path from 'path';
  4. import { adminApiExtensions, shopApiExtensions } from './api/api-extensions';
  5. import { ProductBundleAdminResolver } from './api/product-bundle-admin.resolver';
  6. import { ProductBundleShopResolver } from './api/product-bundle-shop.resolver';
  7. import { BundleOrderInterceptor } from './config/bundle-order-interceptor';
  8. import { productBundlePermission } from './constants';
  9. import { ProductBundleItem } from './entities/product-bundle-item.entity';
  10. import { ProductBundle } from './entities/product-bundle.entity';
  11. import { ProductBundleItemService } from './services/product-bundle-item.service';
  12. import { ProductBundleService } from './services/product-bundle.service';
  13. @VendurePlugin({
  14. imports: [PluginCommonModule],
  15. entities: [ProductBundle, ProductBundleItem],
  16. configuration: config => {
  17. config.customFields.OrderLine.push({
  18. type: 'struct',
  19. name: 'fromBundle',
  20. fields: [
  21. { name: 'bundleId', type: 'string' },
  22. { name: 'bundleName', type: 'string' },
  23. ],
  24. });
  25. config.orderOptions.orderInterceptors.push(new BundleOrderInterceptor());
  26. config.authOptions.customPermissions.push(productBundlePermission);
  27. return config;
  28. },
  29. providers: [ProductBundleService, ProductBundleItemService],
  30. adminApiExtensions: {
  31. schema: adminApiExtensions,
  32. resolvers: [ProductBundleAdminResolver],
  33. },
  34. shopApiExtensions: {
  35. schema: shopApiExtensions,
  36. resolvers: [ProductBundleShopResolver],
  37. },
  38. })
  39. export class ProductBundlesPlugin {
  40. static uiExtensions: AdminUiExtension = {
  41. id: 'product-bundles',
  42. extensionPath: path.join(__dirname, 'ui'),
  43. routes: [{ route: 'product-bundles', filePath: 'routes.ts' }],
  44. providers: ['providers.ts'],
  45. };
  46. }