From cb5c4c71c866362dce24eff79251fed6add53e9f Mon Sep 17 00:00:00 2001 From: dave caruso Date: Tue, 17 Oct 2023 19:42:37 -0700 Subject: yay --- src/codegen/client-js.ts | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 src/codegen/client-js.ts (limited to 'src/codegen/client-js.ts') 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; + } +} +`; +} -- cgit v1.2.3