UNPKG

1.72 kBJavaScriptView Raw
1import * as pirates from "pirates";
2
3import { transform} from "./index";
4
5
6
7
8
9
10export function addHook(extension, options, hookOptions) {
11 pirates.addHook(
12 (code, filePath) => {
13 const {code: transformedCode, sourceMap} = transform(code, {
14 ...options,
15 sourceMapOptions: {compiledFilename: filePath},
16 filePath,
17 });
18 const mapBase64 = Buffer.from(JSON.stringify(sourceMap)).toString("base64");
19 const suffix = `//# sourceMappingURL=data:application/json;charset=utf-8;base64,${mapBase64}`;
20 return `${transformedCode}\n${suffix}`;
21 },
22 {...hookOptions, exts: [extension]},
23 );
24}
25
26export function registerJS(hookOptions) {
27 addHook(".js", {transforms: ["imports", "flow", "jsx"]}, hookOptions);
28}
29
30export function registerJSX(hookOptions) {
31 addHook(".jsx", {transforms: ["imports", "flow", "jsx"]}, hookOptions);
32}
33
34export function registerTS(hookOptions) {
35 addHook(".ts", {transforms: ["imports", "typescript"]}, hookOptions);
36}
37
38export function registerTSX(hookOptions) {
39 addHook(".tsx", {transforms: ["imports", "typescript", "jsx"]}, hookOptions);
40}
41
42export function registerTSLegacyModuleInterop(hookOptions) {
43 addHook(
44 ".ts",
45 {
46 transforms: ["imports", "typescript"],
47 enableLegacyTypeScriptModuleInterop: true,
48 },
49 hookOptions,
50 );
51}
52
53export function registerTSXLegacyModuleInterop(hookOptions) {
54 addHook(
55 ".tsx",
56 {
57 transforms: ["imports", "typescript", "jsx"],
58 enableLegacyTypeScriptModuleInterop: true,
59 },
60 hookOptions,
61 );
62}
63
64export function registerAll(hookOptions) {
65 registerJS(hookOptions);
66 registerJSX(hookOptions);
67 registerTS(hookOptions);
68 registerTSX(hookOptions);
69}