plugin.ts 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. import { PluginCommonModule, VendurePlugin } from '@vendure/core';
  2. import { adminApiExtensions } from './api/api-extensions';
  3. import { GlobalSearchResolver } from './api/global-search.resolver';
  4. import { PLUGIN_INIT_OPTIONS } from './constants';
  5. import { GlobalSearchIndexItem } from './entities/global-search-index-item';
  6. import { IndexingService } from './service/indexing.service';
  7. import { SearchService } from './service/search.service';
  8. import { buildIndexTask } from './tasks/build-index.task';
  9. import { DashboardPluginOptions } from './types';
  10. /**
  11. * @description
  12. * This plugin adds functionality specifically required by the Vendure Admin Dashboard.
  13. * It is not required for Vendure to function, but is used to provide additional features
  14. * that are not required for the core functionality of Vendure.
  15. *
  16. * ## Installation
  17. *
  18. * ```ts
  19. * import { DashboardPlugin } from '@vendure/dashboard-plugin';
  20. *
  21. * const config: VendureConfig = {
  22. * // Add an instance of the plugin to the plugins array
  23. * plugins: [
  24. * DashboardPlugin.init(),
  25. * ],
  26. * };
  27. * ```
  28. */
  29. @VendurePlugin({
  30. imports: [PluginCommonModule],
  31. providers: [
  32. {
  33. provide: PLUGIN_INIT_OPTIONS,
  34. useFactory: () => DashboardPlugin.options,
  35. },
  36. SearchService,
  37. IndexingService,
  38. ],
  39. adminApiExtensions: {
  40. schema: adminApiExtensions,
  41. resolvers: [GlobalSearchResolver],
  42. },
  43. entities: [GlobalSearchIndexItem],
  44. configuration: config => {
  45. // Plugin configuration logic here
  46. config.schedulerOptions.tasks.push(buildIndexTask);
  47. return config;
  48. },
  49. compatibility: '^3.0.0',
  50. })
  51. export class DashboardPlugin {
  52. static options: DashboardPluginOptions;
  53. static init(options: DashboardPluginOptions) {
  54. this.options = {
  55. ...options,
  56. };
  57. return DashboardPlugin;
  58. }
  59. }