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