| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 | import { withMonitor } from '@sentry/core';import { replaceCronNames } from './common.js';/** * Instruments the `node-schedule` library to send a check-in event to Sentry for each job execution. * * ```ts * import * as Sentry from '@sentry/node'; * import * as schedule from 'node-schedule'; * * const scheduleWithCheckIn = Sentry.cron.instrumentNodeSchedule(schedule); * * const job = scheduleWithCheckIn.scheduleJob('my-cron-job', '* * * * *', () => { *  console.log('You will see this message every minute'); * }); * ``` */function instrumentNodeSchedule(lib) {  return new Proxy(lib, {    get(target, prop) {      if (prop === 'scheduleJob') {        // eslint-disable-next-line @typescript-eslint/unbound-method        return new Proxy(target.scheduleJob, {          apply(target, thisArg, argArray) {            const [nameOrExpression, expressionOrCallback] = argArray;            if (typeof nameOrExpression !== 'string' || typeof expressionOrCallback !== 'string') {              throw new Error(                "Automatic instrumentation of 'node-schedule' requires the first parameter of 'scheduleJob' to be a job name string and the second parameter to be a crontab string",              );            }            const monitorSlug = nameOrExpression;            const expression = expressionOrCallback;            return withMonitor(              monitorSlug,              () => {                return target.apply(thisArg, argArray);              },              {                schedule: { type: 'crontab', value: replaceCronNames(expression) },              },            );          },        });      }      return target[prop];    },  });}export { instrumentNodeSchedule };//# sourceMappingURL=node-schedule.js.map
 |