matchers.js 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. const TYPE_REGEX = 'regex'
  2. const TYPE_URL = 'url'
  3. const TYPE_PATH = 'path'
  4. const NPM_SECRET = {
  5. type: TYPE_REGEX,
  6. pattern: /\b(npms?_)[a-zA-Z0-9]{36,48}\b/gi,
  7. replacement: `[REDACTED_NPM_SECRET]`,
  8. }
  9. const AUTH_HEADER = {
  10. type: TYPE_REGEX,
  11. pattern: /\b(Basic\s+|Bearer\s+)[\w+=\-.]+\b/gi,
  12. replacement: `[REDACTED_AUTH_HEADER]`,
  13. }
  14. const JSON_WEB_TOKEN = {
  15. type: TYPE_REGEX,
  16. pattern: /\b[A-Za-z0-9-_]{10,}(?!\.\d+\.)\.[A-Za-z0-9-_]{3,}\.[A-Za-z0-9-_]{20,}\b/gi,
  17. replacement: `[REDACTED_JSON_WEB_TOKEN]`,
  18. }
  19. const UUID = {
  20. type: TYPE_REGEX,
  21. pattern: /\b[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\b/gi,
  22. replacement: `[REDACTED_UUID]`,
  23. }
  24. const URL_MATCHER = {
  25. type: TYPE_REGEX,
  26. pattern: /(?:https?|ftp):\/\/[^\s/"$.?#].[^\s"]*/gi,
  27. replacement: '[REDACTED_URL]',
  28. }
  29. const DEEP_HEADER_AUTHORIZATION = {
  30. type: TYPE_PATH,
  31. predicate: ({ path }) => path.endsWith('.headers.authorization'),
  32. replacement: '[REDACTED_HEADER_AUTHORIZATION]',
  33. }
  34. const DEEP_HEADER_SET_COOKIE = {
  35. type: TYPE_PATH,
  36. predicate: ({ path }) => path.endsWith('.headers.set-cookie'),
  37. replacement: '[REDACTED_HEADER_SET_COOKIE]',
  38. }
  39. const REWRITE_REQUEST = {
  40. type: TYPE_PATH,
  41. predicate: ({ path }) => path.endsWith('.request'),
  42. replacement: (input) => ({
  43. method: input?.method,
  44. path: input?.path,
  45. headers: input?.headers,
  46. url: input?.url,
  47. }),
  48. }
  49. const REWRITE_RESPONSE = {
  50. type: TYPE_PATH,
  51. predicate: ({ path }) => path.endsWith('.response'),
  52. replacement: (input) => ({
  53. data: input?.data,
  54. status: input?.status,
  55. headers: input?.headers,
  56. }),
  57. }
  58. module.exports = {
  59. TYPE_REGEX,
  60. TYPE_URL,
  61. TYPE_PATH,
  62. NPM_SECRET,
  63. AUTH_HEADER,
  64. JSON_WEB_TOKEN,
  65. UUID,
  66. URL_MATCHER,
  67. DEEP_HEADER_AUTHORIZATION,
  68. DEEP_HEADER_SET_COOKIE,
  69. REWRITE_REQUEST,
  70. REWRITE_RESPONSE,
  71. }