eslint-plugin-mocha
Version:
Eslint rules for mocha.
57 lines • 2.76 kB
JavaScript
import { builtinNames } from "./descriptors.js";
import { buildAllNameDetailsWithVariants } from "./name-details.js";
import { convertNameToPathArray } from "./path.js";
function nameConfigToNameDetails(nameConfig) {
const { name, ...rest } = nameConfig;
return { path: convertNameToPathArray(name), modifier: null, config: null, ...rest };
}
const builtinNameDetailsList = buildAllNameDetailsWithVariants(builtinNames);
function hasMatchingInterface(nameDetails, interfaceToUse) {
return interfaceToUse === 'require' || nameDetails.interface === interfaceToUse;
}
function hasMatchingCustomInterface(nameDetails, interfaceToUse) {
return nameDetails.interface === 'require' || hasMatchingInterface(nameDetails, interfaceToUse);
}
function filterByInterface(nameDetailsList, interfaceToUse) {
return nameDetailsList.filter(function (nameDetails) {
return hasMatchingInterface(nameDetails, interfaceToUse);
});
}
function filterCustomNamesByInterface(nameDetailsList, interfaceToUse) {
return nameDetailsList.filter(function (nameDetails) {
return hasMatchingCustomInterface(nameDetails, interfaceToUse);
});
}
function buildNameDetailsForInterface(nameDetailsList, interfaceToUse) {
return buildAllNameDetailsWithVariants(filterByInterface(nameDetailsList, interfaceToUse));
}
function getBuiltinNameDetailsForInterface(interfaceToUse) {
return interfaceToUse === 'require'
? builtinNameDetailsList
: buildNameDetailsForInterface(builtinNames, interfaceToUse);
}
function buildAdditionalNameDetails(additionalNames) {
const additionalNameDetails = additionalNames.map(nameConfigToNameDetails);
return buildAllNameDetailsWithVariants(additionalNameDetails);
}
function buildAdditionalNameDetailsForInterface(additionalNames, interfaceToUse) {
const additionalNameDetails = additionalNames.map(nameConfigToNameDetails);
return buildAllNameDetailsWithVariants(filterCustomNamesByInterface(additionalNameDetails, interfaceToUse));
}
export const getAllCustomNameDetails = buildAdditionalNameDetails;
export const getCustomNameDetailsForInterface = buildAdditionalNameDetailsForInterface;
export function getAllNames(additionalNames, interfaceToUse, includeAllInterfaces = false) {
const builtinNameDetails = includeAllInterfaces
? builtinNameDetailsList
: getBuiltinNameDetailsForInterface(interfaceToUse);
if (additionalNames.length === 0) {
return builtinNameDetails;
}
return [
...builtinNameDetails,
...includeAllInterfaces
? getAllCustomNameDetails(additionalNames)
: getCustomNameDetailsForInterface(additionalNames, interfaceToUse)
];
}
//# sourceMappingURL=all-name-details.js.map