All files / parsers index.ts

100% Statements 3/3
100% Branches 0/0
100% Functions 0/0
100% Lines 3/3

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 235x 5x                         5x                
import { jsonParser } from "./json";
import { ymlParser } from "./yml";
 
export interface CustomParser {
  extension: string;
  parse: <T>(content: string, filePath?: string) => T;
  stringify: (content: any, filePath?: string) => string;
}
 
/**
 * If we want to add more built-in parsers,
 * add them to this object with new file extension as the key,
 * and a function that takes file content as string and returns parsed object as the value.
 */
export const parsers: { [key: string]: CustomParser } = {
  yml: ymlParser,
  json: jsonParser,
};
 
export type BuiltInParser = keyof typeof parsers; // keys of parsers object
 
export type Parser = BuiltInParser | CustomParser;