Validate different file types with different rules.

This commit is contained in:
Logan Smyth 2018-05-11 16:51:43 -07:00
parent 1a7765712e
commit 0341d299c8
2 changed files with 27 additions and 6 deletions

View File

@ -148,7 +148,7 @@ export function buildRootChain(
const configFileChain = emptyChain(); const configFileChain = emptyChain();
if (configFile) { if (configFile) {
const result = loadFileChain(validateFile(configFile), context); const result = loadFileChain(validateConfigFile(configFile), context);
if (!result) return null; if (!result) return null;
mergeChain(configFileChain, result); mergeChain(configFileChain, result);
@ -180,7 +180,7 @@ export function buildRootChain(
} }
if (babelrcFile) { if (babelrcFile) {
const result = loadFileChain(validateFile(babelrcFile), context); const result = loadFileChain(validateBabelrcFile(babelrcFile), context);
if (!result) return null; if (!result) return null;
mergeChain(fileChain, result); mergeChain(fileChain, result);
@ -231,10 +231,24 @@ function babelrcLoadEnabled(
return micromatch(pkgData.directories, babelrcPatterns).length > 0; return micromatch(pkgData.directories, babelrcPatterns).length > 0;
} }
const validateFile = makeWeakCache((file: ConfigFile): ValidatedFile => ({ const validateConfigFile = makeWeakCache((file: ConfigFile): ValidatedFile => ({
filepath: file.filepath, filepath: file.filepath,
dirname: file.dirname, dirname: file.dirname,
options: validate("file", file.options), options: validate("configfile", file.options),
}));
const validateBabelrcFile = makeWeakCache(
(file: ConfigFile): ValidatedFile => ({
filepath: file.filepath,
dirname: file.dirname,
options: validate("babelrcfile", file.options),
}),
);
const validateExtendFile = makeWeakCache((file: ConfigFile): ValidatedFile => ({
filepath: file.filepath,
dirname: file.dirname,
options: validate("extendsfile", file.options),
})); }));
/** /**
@ -434,7 +448,7 @@ function mergeExtendsChain(
} }
files.add(file); files.add(file);
const fileChain = loadFileChain(validateFile(file), context, files); const fileChain = loadFileChain(validateExtendFile(file), context, files);
files.delete(file); files.delete(file);
if (!fileChain) return false; if (!fileChain) return false;

View File

@ -243,7 +243,14 @@ export type SourceTypeOption = "module" | "script" | "unambiguous";
export type CompactOption = boolean | "auto"; export type CompactOption = boolean | "auto";
export type RootInputSourceMapOption = {} | boolean; export type RootInputSourceMapOption = {} | boolean;
export type OptionsType = "arguments" | "file" | "env" | "preset" | "override"; export type OptionsType =
| "arguments"
| "env"
| "preset"
| "override"
| "configfile"
| "babelrcfile"
| "extendsfile";
export function validate(type: OptionsType, opts: {}): ValidatedOptions { export function validate(type: OptionsType, opts: {}): ValidatedOptions {
assertNoDuplicateSourcemap(opts); assertNoDuplicateSourcemap(opts);