aboutsummaryrefslogtreecommitdiff
path: root/node_modules/@babel/core/src/transform-file.ts
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/@babel/core/src/transform-file.ts')
-rw-r--r--node_modules/@babel/core/src/transform-file.ts40
1 files changed, 40 insertions, 0 deletions
diff --git a/node_modules/@babel/core/src/transform-file.ts b/node_modules/@babel/core/src/transform-file.ts
new file mode 100644
index 0000000..4be0e16
--- /dev/null
+++ b/node_modules/@babel/core/src/transform-file.ts
@@ -0,0 +1,40 @@
+import gensync from "gensync";
+
+import loadConfig from "./config";
+import type { InputOptions, ResolvedConfig } from "./config";
+import { run } from "./transformation";
+import type { FileResult, FileResultCallback } from "./transformation";
+import * as fs from "./gensync-utils/fs";
+
+type transformFileBrowserType = typeof import("./transform-file-browser");
+type transformFileType = typeof import("./transform-file");
+
+// Kind of gross, but essentially asserting that the exports of this module are the same as the
+// exports of transform-file-browser, since this file may be replaced at bundle time with
+// transform-file-browser.
+({} as any as transformFileBrowserType as transformFileType);
+
+type TransformFile = {
+ (filename: string, callback: FileResultCallback): void;
+ (
+ filename: string,
+ opts: InputOptions | undefined | null,
+ callback: FileResultCallback,
+ ): void;
+};
+
+const transformFileRunner = gensync<
+ (filename: string, opts?: InputOptions) => FileResult | null
+>(function* (filename, opts: InputOptions) {
+ const options = { ...opts, filename };
+
+ const config: ResolvedConfig | null = yield* loadConfig(options);
+ if (config === null) return null;
+
+ const code = yield* fs.readFile(filename, "utf8");
+ return yield* run(config, code);
+});
+
+export const transformFile = transformFileRunner.errback as TransformFile;
+export const transformFileSync = transformFileRunner.sync;
+export const transformFileAsync = transformFileRunner.async;