(cliArgs = {}, config = {}, defaults = {}, options = {})
| 59 | * (default: fail, test, step, file, url) |
| 60 | */ |
| 61 | export function resolveTrigger(cliArgs = {}, config = {}, defaults = {}, options = {}) { |
| 62 | const { name = 'plugin', validModes = ALL_MODES } = options |
| 63 | const merged = { ...defaults, ...pickKnown(config), ...cliArgs } |
| 64 | if (merged.line != null) merged.line = parseInt(merged.line, 10) |
| 65 | |
| 66 | const valid = new Set(validModes) |
| 67 | if (!valid.has(merged.on)) { |
| 68 | output.error(`${name}: unknown on="${merged.on}". Valid: ${validModes.join(', ')}`) |
| 69 | return null |
| 70 | } |
| 71 | if (merged.on === 'file' && !merged.path) { |
| 72 | output.error(`${name}:on=file requires path=. Example: -p ${name}:on=file:path=tests/foo.js`) |
| 73 | return null |
| 74 | } |
| 75 | if (merged.on === 'url' && !merged.pattern) { |
| 76 | output.error(`${name}:on=url requires pattern=. Example: -p ${name}:on=url:pattern=/users/*`) |
| 77 | return null |
| 78 | } |
| 79 | |
| 80 | return merged |
| 81 | } |
| 82 | |
| 83 | function pickKnown(config) { |
| 84 | const out = {} |
no test coverage detected