diff options
author | 2023-10-17 19:42:37 -0700 | |
---|---|---|
committer | 2023-10-17 19:42:37 -0700 | |
commit | cb5c4c71c866362dce24eff79251fed6add53e9f (patch) | |
tree | 5635cf21140ff2eac14539316f7c6d6704925bd3 /src/codegen/client-js.ts | |
parent | bf12268274faac1a38d33007be7a48af9e570761 (diff) | |
download | bun-cb5c4c71c866362dce24eff79251fed6add53e9f.tar.gz bun-cb5c4c71c866362dce24eff79251fed6add53e9f.tar.zst bun-cb5c4c71c866362dce24eff79251fed6add53e9f.zip |
Diffstat (limited to 'src/codegen/client-js.ts')
-rw-r--r-- | src/codegen/client-js.ts | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/src/codegen/client-js.ts b/src/codegen/client-js.ts new file mode 100644 index 000000000..4dfa6acf6 --- /dev/null +++ b/src/codegen/client-js.ts @@ -0,0 +1,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; + } +} +`; +} |