default-method-hooks.ts 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. import { CacheService, EventBus, JobQueue, JobQueueService } from '@vendure/core';
  2. import { stringify } from 'javascript-stringify';
  3. import { registerMethodHooks } from '../service/method-hooks.service';
  4. export const defaultMethodHooks = [
  5. registerMethodHooks(CacheService, {
  6. get: {
  7. pre: ({ args: [key], span }) => {
  8. span.setAttribute('cache.key', key);
  9. },
  10. post: ({ args: [key], result: hit, span }) => {
  11. span.setAttribute('cache.hit', !!hit);
  12. if (hit) {
  13. span.addEvent('cache.hit', { key });
  14. } else {
  15. span.addEvent('cache.miss', { key });
  16. }
  17. },
  18. },
  19. set: {
  20. pre: ({ args: [key], span }) => {
  21. span.setAttribute('cache.key', key);
  22. },
  23. },
  24. delete: {
  25. pre: ({ args: [key], span }) => {
  26. span.setAttribute('cache.key', key);
  27. },
  28. },
  29. invalidateTags: {
  30. pre: ({ args: [tags], span }) => {
  31. span.setAttribute('cache.tags', tags.join(', '));
  32. },
  33. },
  34. }),
  35. registerMethodHooks(EventBus, {
  36. publish: {
  37. pre: ({ args: [event], span }) => {
  38. span.setAttribute('event', event.constructor.name);
  39. span.setAttribute('event.timestamp', event.createdAt.toISOString());
  40. },
  41. },
  42. }),
  43. registerMethodHooks(JobQueueService, {
  44. createQueue: {
  45. pre: ({ args: [options], span }) => {
  46. span.setAttribute('job-queue.name', options.name);
  47. },
  48. },
  49. }),
  50. registerMethodHooks(JobQueue, {
  51. start: {
  52. pre: ({ instance, span }) => {
  53. span.setAttribute('job-queue.name', instance.name);
  54. },
  55. },
  56. add: {
  57. pre: ({ args: [data, options], span, instance }) => {
  58. span.setAttribute('job.queueName', instance.name);
  59. span.setAttribute(
  60. 'job.data',
  61. stringify(data, null, 2, {
  62. maxDepth: 3,
  63. }) ?? '',
  64. );
  65. span.setAttribute('job.retries', options?.retries ?? 0);
  66. },
  67. post({ result, span }) {
  68. span.setAttribute('job.buffered', result.id === 'buffered');
  69. },
  70. },
  71. }),
  72. ];