FIN INIT
This commit is contained in:
88
node_modules/sucrase/dist/esm/register.js
generated
vendored
Normal file
88
node_modules/sucrase/dist/esm/register.js
generated
vendored
Normal file
@ -0,0 +1,88 @@
|
||||
import * as pirates from "pirates";
|
||||
|
||||
import { transform} from "./index";
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
export function addHook(
|
||||
extension,
|
||||
sucraseOptions,
|
||||
hookOptions,
|
||||
) {
|
||||
let mergedSucraseOptions = sucraseOptions;
|
||||
const sucraseOptionsEnvJSON = process.env.SUCRASE_OPTIONS;
|
||||
if (sucraseOptionsEnvJSON) {
|
||||
mergedSucraseOptions = {...mergedSucraseOptions, ...JSON.parse(sucraseOptionsEnvJSON)};
|
||||
}
|
||||
return pirates.addHook(
|
||||
(code, filePath) => {
|
||||
const {code: transformedCode, sourceMap} = transform(code, {
|
||||
...mergedSucraseOptions,
|
||||
sourceMapOptions: {compiledFilename: filePath},
|
||||
filePath,
|
||||
});
|
||||
const mapBase64 = Buffer.from(JSON.stringify(sourceMap)).toString("base64");
|
||||
const suffix = `//# sourceMappingURL=data:application/json;charset=utf-8;base64,${mapBase64}`;
|
||||
return `${transformedCode}\n${suffix}`;
|
||||
},
|
||||
{...hookOptions, exts: [extension]},
|
||||
);
|
||||
}
|
||||
|
||||
export function registerJS(hookOptions) {
|
||||
return addHook(".js", {transforms: ["imports", "flow", "jsx"]}, hookOptions);
|
||||
}
|
||||
|
||||
export function registerJSX(hookOptions) {
|
||||
return addHook(".jsx", {transforms: ["imports", "flow", "jsx"]}, hookOptions);
|
||||
}
|
||||
|
||||
export function registerTS(hookOptions) {
|
||||
return addHook(".ts", {transforms: ["imports", "typescript"]}, hookOptions);
|
||||
}
|
||||
|
||||
export function registerTSX(hookOptions) {
|
||||
return addHook(".tsx", {transforms: ["imports", "typescript", "jsx"]}, hookOptions);
|
||||
}
|
||||
|
||||
export function registerTSLegacyModuleInterop(hookOptions) {
|
||||
return addHook(
|
||||
".ts",
|
||||
{
|
||||
transforms: ["imports", "typescript"],
|
||||
enableLegacyTypeScriptModuleInterop: true,
|
||||
},
|
||||
hookOptions,
|
||||
);
|
||||
}
|
||||
|
||||
export function registerTSXLegacyModuleInterop(hookOptions) {
|
||||
return addHook(
|
||||
".tsx",
|
||||
{
|
||||
transforms: ["imports", "typescript", "jsx"],
|
||||
enableLegacyTypeScriptModuleInterop: true,
|
||||
},
|
||||
hookOptions,
|
||||
);
|
||||
}
|
||||
|
||||
export function registerAll(hookOptions) {
|
||||
const reverts = [
|
||||
registerJS(hookOptions),
|
||||
registerJSX(hookOptions),
|
||||
registerTS(hookOptions),
|
||||
registerTSX(hookOptions),
|
||||
];
|
||||
|
||||
return () => {
|
||||
for (const fn of reverts) {
|
||||
fn();
|
||||
}
|
||||
};
|
||||
}
|
Reference in New Issue
Block a user