UNPKG

env-sentinel

Version:

Zero-dependency tool that auto-validates .env files against schema.env, with optional fallback and secure warnings.

31 lines (30 loc) 1.12 kB
export function noDuplicateReferenceCheck(lineNumber, lineContent) { const equalIndex = lineContent.indexOf('='); if (equalIndex === -1) return; const rawKey = lineContent.slice(0, equalIndex).trim(); let rawValue = lineContent.slice(equalIndex + 1).trim(); const isQuoted = (rawValue.startsWith('"') && rawValue.endsWith('"')) || (rawValue.startsWith("'") && rawValue.endsWith("'")); if (isQuoted) return; rawValue = rawValue.split('#')[0].trim(); const referenceRegex = /\$\{([A-Z0-9_]+)\}/g; const found = new Map(); let match; while ((match = referenceRegex.exec(rawValue)) !== null) { const varName = match[1]; const count = found.get(varName) ?? 0; found.set(varName, count + 1); } for (const [ref, count] of found.entries()) { if (count > 1) { return { line: lineNumber, issue: `Duplicate reference "\${${ref}}" found ${count} times in "${rawKey}"`, content: lineContent, severity: 'notice', }; } } return; }