blob: 4dfa6acf6c5802f95a61d270de12e4c1deb759fd (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
// This is the implementation for $debug
export function createLogClientJS(filepath: string, publicName: string) {
return `
let $debug_log_enabled = ((env) => (
// The rationale for checking all these variables is just so you don't have to exactly remember which one you set.
(env.BUN_DEBUG_ALL && env.BUN_DEBUG_ALL !== '0')
|| (env.BUN_DEBUG_JS && env.BUN_DEBUG_JS !== '0')
|| (env.BUN_DEBUG_${filepath
.replace(/^.*?:/, "")
.split(/[-_./]/g)
.join("_")
.toUpperCase()})
|| (env.DEBUG_${filepath
.replace(/^.*?:/, "")
.split(/[-_./]/g)
.join("_")
.toUpperCase()})
))(Bun.env);
let $debug_pid_prefix = Bun.env.SHOW_PID === '1';
let $debug_log = $debug_log_enabled ? (...args) => {
// warn goes to stderr without colorizing
console.warn(($debug_pid_prefix ? \`[\${process.pid}] \` : '') + (Bun.enableANSIColors ? '\\x1b[90m[${publicName}]\\x1b[0m' : '[${publicName}]'), ...args);
} : () => {};
`;
}
export function createAssertClientJS(publicName: string) {
return `
let $assert = function(check, sourceString, ...message) {
if (!check) {
const prevPrepareStackTrace = Error.prepareStackTrace;
Error.prepareStackTrace = (e, stack) => {
return e.name + ': ' + e.message + '\\n' + stack.slice(1).map(x => ' at ' + x.toString()).join('\\n');
};
const e = new Error(sourceString);
e.stack; // materialize stack
e.name = 'AssertionError';
Error.prepareStackTrace = prevPrepareStackTrace;
console.error('[${publicName}] ASSERTION FAILED: ' + sourceString);
if (message.length) console.warn(...message);
console.warn(e.stack.split('\\n')[1] + '\\n');
if (Bun.env.ASSERT === 'CRASH') process.exit(0xAA);
throw e;
}
}
`;
}
|