aboutsummaryrefslogtreecommitdiff
path: root/src/codegen/client-js.ts
diff options
context:
space:
mode:
authorGravatar dave caruso <me@paperdave.net> 2023-10-17 19:42:37 -0700
committerGravatar dave caruso <me@paperdave.net> 2023-10-17 19:42:37 -0700
commitcb5c4c71c866362dce24eff79251fed6add53e9f (patch)
tree5635cf21140ff2eac14539316f7c6d6704925bd3 /src/codegen/client-js.ts
parentbf12268274faac1a38d33007be7a48af9e570761 (diff)
downloadbun-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.ts47
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;
+ }
+}
+`;
+}