MCPcopy Create free account
hub / github.com/vercel/vercel / matchesRule

Function matchesRule

packages/cli/src/util/dev/transforms.ts:295–353  ·  view source on GitHub ↗
(candidate: string, rule: KeyRule)

Source from the content-addressed store, hash-verified

293}
294
295function matchesRule(candidate: string, rule: KeyRule): boolean {
296 candidate = candidate.toLowerCase();
297
298 if (rule == null) {
299 return true;
300 }
301
302 if (typeof rule === 'string') {
303 return candidate === rule.toLowerCase();
304 }
305
306 const r = rule as Record<string, unknown>;
307 for (const [op, val] of Object.entries(r)) {
308 if (val === undefined) {
309 continue;
310 }
311 switch (op) {
312 case 'eq':
313 if (candidate !== String(val as string | number).toLowerCase())
314 return false;
315 break;
316 case 'neq':
317 if (candidate === (val as string).toLowerCase()) return false;
318 break;
319 case 'inc':
320 if (!(val as string[]).some(v => candidate === v.toLowerCase()))
321 return false;
322 break;
323 case 'ninc':
324 if ((val as string[]).some(v => candidate === v.toLowerCase()))
325 return false;
326 break;
327 case 'pre':
328 if (!candidate.startsWith(String(val).toLowerCase())) return false;
329 break;
330 case 'suf':
331 if (!candidate.endsWith(String(val).toLowerCase())) return false;
332 break;
333 case 'sub':
334 if (!candidate.includes(String(val).toLowerCase())) return false;
335 break;
336 case 'gt':
337 if (!(Number(candidate) > (val as number))) return false;
338 break;
339 case 'gte':
340 if (!(Number(candidate) >= (val as number))) return false;
341 break;
342 case 'lt':
343 if (!(Number(candidate) < (val as number))) return false;
344 break;
345 case 'lte':
346 if (!(Number(candidate) <= (val as number))) return false;
347 break;
348 default:
349 break;
350 }
351 }
352 return true;

Callers 2

findMatchingKeysFunction · 0.85
opDeleteFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected