export function disabler()

in src/rules/npmNamingRule.ts [278:308]


export function disabler(failures: Lint.IRuleFailureJson[]): false | [true, ConfigOptions] {
    const disabledErrors = new Set<ExportErrorKind>();
    for (const ruleFailure of failures) {
        if (ruleFailure.ruleName !== "npm-naming") {
            throw new Error(`Expected failures of rule "npm-naming", found failures of rule ${ruleFailure.ruleName}.`);
        }
        const message = ruleFailure.failure;
        // Name errors.
        if (message.includes("must have a matching npm package")
            || message.includes("must match a version that exists on npm")
            || message.includes("conflicts with the existing npm package")) {
            return false;
        }
        // Code errors.
        if (message.includes("declaration should use 'export =' syntax")) {
            disabledErrors.add(ErrorKind.NeedsExportEquals);
        } else if (message.includes("declaration specifies 'export default' but the JavaScript source \
            does not mention 'default' anywhere")) {
            disabledErrors.add(ErrorKind.NoDefaultExport);
        } else {
            return [true, { mode: Mode.NameOnly }];
        }
    }

    if ((defaultErrors as ExportErrorKind[]).every(error => disabledErrors.has(error))) {
        return [true, { mode: Mode.NameOnly }];
    }
    const errors: Array<[ExportErrorKind, boolean]> = [];
    disabledErrors.forEach(error => errors.push([error, false]));
    return [true, { mode: Mode.Code, errors }];
}