UNPKG

1.79 kBJavaScriptView Raw
1"use strict";
2
3var getV8Flags = require("v8flags");
4var path = require("path");
5
6var args = [path.join(__dirname, "_babel-node")];
7
8var babelArgs = process.argv.slice(2);
9var userArgs = void 0;
10
11var argSeparator = babelArgs.indexOf("--");
12if (argSeparator > -1) {
13 userArgs = babelArgs.slice(argSeparator);
14 babelArgs = babelArgs.slice(0, argSeparator);
15}
16
17function getNormalizedV8Flag(arg) {
18 var matches = arg.match(/--(.+)/);
19
20 if (matches) {
21 return "--" + matches[1].replace(/-/g, "_");
22 }
23
24 return arg;
25}
26
27getV8Flags(function (err, v8Flags) {
28 babelArgs.forEach(function (arg) {
29 var flag = arg.split("=")[0];
30
31 switch (flag) {
32 case "-d":
33 args.unshift("--debug");
34 break;
35
36 case "debug":
37 case "--debug":
38 case "--debug-brk":
39 case "--inspect":
40 args.unshift(arg);
41 break;
42
43 case "-gc":
44 args.unshift("--expose-gc");
45 break;
46
47 case "--nolazy":
48 args.unshift(flag);
49 break;
50
51 default:
52 if (v8Flags.indexOf(getNormalizedV8Flag(flag)) >= 0 || arg.indexOf("--trace") === 0) {
53 args.unshift(arg);
54 } else {
55 args.push(arg);
56 }
57 break;
58 }
59 });
60
61 if (argSeparator > -1) {
62 args = args.concat(userArgs);
63 }
64
65 try {
66 var kexec = require("kexec");
67 kexec(process.argv[0], args);
68 } catch (err) {
69 if (err.code !== "MODULE_NOT_FOUND") throw err;
70
71 var child_process = require("child_process");
72 var proc = child_process.spawn(process.argv[0], args, { stdio: "inherit" });
73 proc.on("exit", function (code, signal) {
74 process.on("exit", function () {
75 if (signal) {
76 process.kill(process.pid, signal);
77 } else {
78 process.exit(code);
79 }
80 });
81 });
82 }
83});
\No newline at end of file