summaryrefslogtreecommitdiff
path: root/node_modules/sucrase/dist/esm/register.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/sucrase/dist/esm/register.js')
-rw-r--r--node_modules/sucrase/dist/esm/register.js88
1 files changed, 88 insertions, 0 deletions
diff --git a/node_modules/sucrase/dist/esm/register.js b/node_modules/sucrase/dist/esm/register.js
new file mode 100644
index 0000000..ca30cab
--- /dev/null
+++ b/node_modules/sucrase/dist/esm/register.js
@@ -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();
+ }
+ };
+}