sucrase
Version:
Super-fast alternative to Babel for when you can target modern JS runtimes
34 lines (33 loc) • 959 B
JavaScript
// @ts-ignore: no types available.
import * as pirates from "pirates";
import { transform } from "./index";
export function addHook(extension, transforms) {
pirates.addHook((code, filename) => {
try {
return transform(code, { transforms });
}
catch (e) {
// eslint-disable-next-line no-console
console.error(`Error processing file ${filename}`);
throw e;
}
}, { exts: [extension] });
}
export function registerJS() {
addHook(".js", ["imports", "flow", "jsx", "react-display-name"]);
}
export function registerJSX() {
addHook(".jsx", ["imports", "flow", "jsx", "react-display-name"]);
}
export function registerTS() {
addHook(".ts", ["imports", "typescript"]);
}
export function registerTSX() {
addHook(".tsx", ["imports", "typescript", "jsx"]);
}
export function registerAll() {
registerJS();
registerJSX();
registerTS();
registerTSX();
}