aboutsummaryrefslogtreecommitdiff
path: root/src/js/out/InternalModuleRegistryConstants.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/js/out/InternalModuleRegistryConstants.h')
-rw-r--r--src/js/out/InternalModuleRegistryConstants.h6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/js/out/InternalModuleRegistryConstants.h b/src/js/out/InternalModuleRegistryConstants.h
index 91953b77e..f96dcec64 100644
--- a/src/js/out/InternalModuleRegistryConstants.h
+++ b/src/js/out/InternalModuleRegistryConstants.h
@@ -6,7 +6,7 @@ namespace InternalModuleRegistryConstants {
#if __APPLE__
//
-static constexpr ASCIILiteral BunFFICode = "(function (){\"use strict\";// src/js/out/tmp/bun/ffi.ts\nvar FFIBuilder = function(params, returnType, functionToCall, name) {\n const hasReturnType = typeof FFIType[returnType] === \"number\" && FFIType[returnType] !== FFIType.void;\n var paramNames = new @Array(params.length), args = new @Array(params.length);\n for (let i = 0;i < params.length; i++) {\n paramNames[i] = `p${i}`;\n const wrapper = ffiWrappers[FFIType[params[i]]];\n if (wrapper)\n args[i] = `(val=>${wrapper})(p${i})`;\n else\n @throwTypeError(`Unsupported type ${params[i]}. Must be one of: ${Object.keys(FFIType).sort().join(\", \")}`);\n }\n var code = `functionToCall(${args.join(\", \")})`;\n if (hasReturnType)\n if (FFIType[returnType] === FFIType.cstring)\n code = `return new __GlobalBunCString(${code})`;\n else\n code = `return ${code}`;\n var func = new Function(\"functionToCall\", ...paramNames, code);\n Object.defineProperty(func, \"name\", {\n value: name\n });\n var wrap;\n switch (paramNames.length) {\n case 0:\n wrap = () => func(functionToCall);\n break;\n case 1:\n wrap = (arg1) => func(functionToCall, arg1);\n break;\n case 2:\n wrap = (arg1, arg2) => func(functionToCall, arg1, arg2);\n break;\n case 3:\n wrap = (arg1, arg2, arg3) => func(functionToCall, arg1, arg2, arg3);\n break;\n case 4:\n wrap = (arg1, arg2, arg3, arg4) => func(functionToCall, arg1, arg2, arg3, arg4);\n break;\n case 5:\n wrap = (arg1, arg2, arg3, arg4, arg5) => func(functionToCall, arg1, arg2, arg3, arg4, arg5);\n break;\n case 6:\n wrap = (arg1, arg2, arg3, arg4, arg5, arg6) => func(functionToCall, arg1, arg2, arg3, arg4, arg5, arg6);\n break;\n case 7:\n wrap = (arg1, arg2, arg3, arg4, arg5, arg6, arg7) => func(functionToCall, arg1, arg2, arg3, arg4, arg5, arg6, arg7);\n break;\n case 8:\n wrap = (arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) => func(functionToCall, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);\n break;\n case 9:\n wrap = (arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) => func(functionToCall, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9);\n break;\n default: {\n wrap = (...args2) => func(functionToCall, ...args2);\n break;\n }\n }\n return wrap.native = functionToCall, wrap.ptr = functionToCall.ptr, wrap;\n}, dlopen = function(path, options) {\n const result = nativeDLOpen(path, options);\n for (let key in result.symbols) {\n var symbol = result.symbols[key];\n if (options[key]\?.args\?.length || FFIType[options[key]\?.returns] === FFIType.cstring)\n result.symbols[key] = FFIBuilder(options[key].args \?\? [], options[key].returns \?\? FFIType.void, symbol, path.includes(\"/\") \? `${key} (${path.split(\"/\").pop()})` : `${key} (${path})`);\n else\n result.symbols[key].native = result.symbols[key];\n }\n return result.close = result.close.bind(result), result;\n}, linkSymbols = function(options) {\n const result = nativeLinkSymbols(options);\n for (let key in result.symbols) {\n var symbol = result.symbols[key];\n if (options[key]\?.args\?.length || FFIType[options[key]\?.returns] === FFIType.cstring)\n result.symbols[key] = FFIBuilder(options[key].args \?\? [], options[key].returns \?\? FFIType.void, symbol, key);\n else\n result.symbols[key].native = result.symbols[key];\n }\n return result;\n}, onCloseCFunction = function(close) {\n close();\n}, CFunction = function(options) {\n const identifier = `CFunction${cFunctionI++}`;\n var result = linkSymbols({\n [identifier]: options\n }), hasClosed = !1, close = result.close.bind(result);\n return result.symbols[identifier].close = () => {\n if (hasClosed || !close)\n return;\n hasClosed = !0, close(), close = @undefined;\n }, cFunctionRegistry ||= new FinalizationRegistry(onCloseCFunction), cFunctionRegistry.register(result.symbols[identifier], result.symbols[identifier].close), result.symbols[identifier];\n}, $, FFIType = {\n \"0\": 0,\n \"1\": 1,\n \"2\": 2,\n \"3\": 3,\n \"4\": 4,\n \"5\": 5,\n \"6\": 6,\n \"7\": 7,\n \"8\": 8,\n \"9\": 9,\n \"10\": 10,\n \"11\": 11,\n \"12\": 12,\n \"13\": 13,\n \"14\": 14,\n \"15\": 15,\n \"16\": 16,\n \"17\": 17,\n bool: 11,\n c_int: 5,\n c_uint: 6,\n char: 0,\n \"char*\": 12,\n double: 9,\n f32: 10,\n f64: 9,\n float: 10,\n i16: 3,\n i32: 5,\n i64: 7,\n i8: 1,\n int: 5,\n int16_t: 3,\n int32_t: 5,\n int64_t: 7,\n int8_t: 1,\n isize: 7,\n u16: 4,\n u32: 6,\n u64: 8,\n u8: 2,\n uint16_t: 4,\n uint32_t: 6,\n uint64_t: 8,\n uint8_t: 2,\n usize: 8,\n \"void*\": 12,\n ptr: 12,\n pointer: 12,\n void: 13,\n cstring: 14,\n i64_fast: 15,\n u64_fast: 16,\n function: 17,\n callback: 17,\n fn: 17\n};\nvar ffi = globalThis.Bun.FFI, ptr = (arg1, arg2) => typeof arg2 === \"undefined\" \? ffi.ptr(arg1) : ffi.ptr(arg1, arg2), toBuffer = ffi.toBuffer, toArrayBuffer = ffi.toArrayBuffer, viewSource = ffi.viewSource, BunCString = ffi.CString, nativeLinkSymbols = ffi.linkSymbols, nativeDLOpen = ffi.dlopen, nativeCallback = ffi.callback, closeCallback = ffi.closeCallback;\ndelete ffi.callback;\ndelete ffi.closeCallback;\n\nclass JSCallback {\n constructor(cb, options) {\n const { ctx, ptr: ptr2 } = nativeCallback(options, cb);\n this.#ctx = ctx, this.ptr = ptr2, this.#threadsafe = !!options\?.threadsafe;\n }\n ptr;\n #ctx;\n #threadsafe;\n get threadsafe() {\n return this.#threadsafe;\n }\n [Symbol.toPrimitive]() {\n const { ptr: ptr2 } = this;\n return typeof ptr2 === \"number\" \? ptr2 : 0;\n }\n close() {\n const ctx = this.#ctx;\n if (this.ptr = null, this.#ctx = null, ctx)\n closeCallback(ctx);\n }\n}\n\nclass CString extends @String {\n constructor(ptr2, byteOffset, byteLength) {\n super(ptr2 \? typeof byteLength === \"number\" && Number.isSafeInteger(byteLength) \? BunCString(ptr2, byteOffset || 0, byteLength) : BunCString(ptr2) : \"\");\n if (this.ptr = typeof ptr2 === \"number\" \? ptr2 : 0, typeof byteOffset !== \"undefined\")\n this.byteOffset = byteOffset;\n if (typeof byteLength !== \"undefined\")\n this.byteLength = byteLength;\n }\n ptr;\n byteOffset;\n byteLength;\n #cachedArrayBuffer;\n get arrayBuffer() {\n if (this.#cachedArrayBuffer)\n return this.#cachedArrayBuffer;\n if (!this.ptr)\n return this.#cachedArrayBuffer = new @ArrayBuffer(0);\n return this.#cachedArrayBuffer = toArrayBuffer(this.ptr, this.byteOffset, this.byteLength);\n }\n}\nObject.defineProperty(globalThis, \"__GlobalBunCString\", {\n value: CString,\n enumerable: !1,\n configurable: !1\n});\nvar ffiWrappers = new @Array(18), char = \"val|0\";\nffiWrappers.fill(char);\nffiWrappers[FFIType.uint8_t] = \"val<0\?0:val>=255\?255:val|0\";\nffiWrappers[FFIType.int16_t] = \"val<=-32768\?-32768:val>=32768\?32768:val|0\";\nffiWrappers[FFIType.uint16_t] = \"val<=0\?0:val>=65536\?65536:val|0\";\nffiWrappers[FFIType.int32_t] = \"val|0\";\nffiWrappers[FFIType.uint32_t] = \"val<=0\?0:val>=0xffffffff\?0xffffffff:+val||0\";\nffiWrappers[FFIType.i64_fast] = `{\n if (typeof val === \"bigint\") {\n if (val <= BigInt(Number.MAX_SAFE_INTEGER) && val >= BigInt(-Number.MAX_SAFE_INTEGER)) {\n return Number(val).valueOf() || 0;\n }\n\n return val;\n }\n\n return !val \? 0 : +val || 0;\n}`;\nffiWrappers[FFIType.i64_fast] = `{\n if (typeof val === \"bigint\") {\n if (val <= BigInt(Number.MAX_SAFE_INTEGER) && val >= BigInt(-Number.MAX_SAFE_INTEGER)) {\n return Number(val).valueOf() || 0;\n }\n\n return val;\n }\n\n return !val \? 0 : +val || 0;\n}`;\nffiWrappers[FFIType.u64_fast] = `{\n if (typeof val === \"bigint\") {\n if (val <= BigInt(Number.MAX_SAFE_INTEGER) && val >= 0) {\n return Number(val).valueOf() || 0;\n }\n\n return val;\n }\n\n return !val \? 0 : +val || 0;\n}`;\nffiWrappers[FFIType.int64_t] = `{\n if (typeof val === \"bigint\") {\n return val;\n }\n\n if (typeof val === \"number\") {\n return BigInt(val || 0);\n }\n\n return BigInt(+val || 0);\n}`;\nffiWrappers[FFIType.uint64_t] = `{\n if (typeof val === \"bigint\") {\n return val;\n }\n\n if (typeof val === \"number\") {\n return val <= 0 \? BigInt(0) : BigInt(val || 0);\n }\n\n return BigInt(+val || 0);\n}`;\nffiWrappers[FFIType.u64_fast] = `{\n if (typeof val === \"bigint\") {\n if (val <= BigInt(Number.MAX_SAFE_INTEGER) && val >= BigInt(0)) return Number(val);\n return val;\n }\n\n return typeof val === \"number\" \? (val <= 0 \? 0 : +val || 0) : +val || 0;\n}`;\nffiWrappers[FFIType.uint16_t] = `{\n const ret = (typeof val === \"bigint\" \? Number(val) : val) | 0;\n return ret <= 0 \? 0 : ret > 0xffff \? 0xffff : ret;\n}`;\nffiWrappers[FFIType.double] = `{\n if (typeof val === \"bigint\") {\n if (val.valueOf() < BigInt(Number.MAX_VALUE)) {\n return Math.abs(Number(val).valueOf()) + 0.00000000000001 - 0.00000000000001;\n }\n }\n\n if (!val) {\n return 0 + 0.00000000000001 - 0.00000000000001;\n }\n\n return val + 0.00000000000001 - 0.00000000000001;\n}`;\nffiWrappers[FFIType.float] = ffiWrappers[10] = `{\n return Math.fround(val);\n}`;\nffiWrappers[FFIType.bool] = `{\n return !!val;\n}`;\nObject.defineProperty(globalThis, \"__GlobalBunFFIPtrFunctionForWrapper\", {\n value: ptr,\n enumerable: !1,\n configurable: !0\n});\nffiWrappers[FFIType.cstring] = ffiWrappers[FFIType.pointer] = `{\n if (typeof val === \"number\") return val;\n if (!val) {\n return null;\n }\n\n if (ArrayBuffer.isView(val) || val instanceof ArrayBuffer) {\n return __GlobalBunFFIPtrFunctionForWrapper(val);\n }\n\n if (typeof val === \"string\") {\n throw new TypeError(\"To convert a string to a pointer, encode it as a buffer\");\n }\n\n throw new TypeError(\\`Unable to convert \\${ val } to a pointer\\`);\n}`;\nffiWrappers[FFIType.function] = `{\n if (typeof val === \"number\") {\n return val;\n }\n\n if (typeof val === \"bigint\") {\n return Number(val);\n }\n\n var ptr = val && val.ptr;\n\n if (!ptr) {\n throw new TypeError(\"Expected function to be a JSCallback or a number\");\n }\n\n return ptr;\n}`;\nvar native = {\n dlopen: nativeDLOpen,\n callback: () => {\n throw new Error(\"Deprecated. Use new JSCallback(options, fn) instead\");\n }\n}, cFunctionI = 0, cFunctionRegistry, read = ffi.read;\n$ = {\n CFunction,\n CString,\n FFIType,\n JSCallback,\n dlopen,\n linkSymbols,\n native,\n ptr,\n read,\n suffix: \"dylib\",\n toArrayBuffer,\n toBuffer,\n viewSource\n};\nreturn $})\n"_s;
+static constexpr ASCIILiteral BunFFICode = "(function (){\"use strict\";// src/js/out/tmp/bun/ffi.ts\nvar FFIBuilder = function(params, returnType, functionToCall, name) {\n const hasReturnType = typeof FFIType[returnType] === \"number\" && FFIType[returnType] !== FFIType.void;\n var paramNames = new @Array(params.length), args = new @Array(params.length);\n for (let i = 0;i < params.length; i++) {\n paramNames[i] = `p${i}`;\n const wrapper = ffiWrappers[FFIType[params[i]]];\n if (wrapper)\n args[i] = `(val=>${wrapper})(p${i})`;\n else\n @throwTypeError(`Unsupported type ${params[i]}. Must be one of: ${Object.keys(FFIType).sort().join(\", \")}`);\n }\n var code = `functionToCall(${args.join(\", \")})`;\n if (hasReturnType)\n if (FFIType[returnType] === FFIType.cstring)\n code = `return new __GlobalBunCString(${code})`;\n else\n code = `return ${code}`;\n var func = new Function(\"functionToCall\", ...paramNames, code);\n Object.defineProperty(func, \"name\", {\n value: name\n });\n var wrap;\n switch (paramNames.length) {\n case 0:\n wrap = () => func(functionToCall);\n break;\n case 1:\n wrap = (arg1) => func(functionToCall, arg1);\n break;\n case 2:\n wrap = (arg1, arg2) => func(functionToCall, arg1, arg2);\n break;\n case 3:\n wrap = (arg1, arg2, arg3) => func(functionToCall, arg1, arg2, arg3);\n break;\n case 4:\n wrap = (arg1, arg2, arg3, arg4) => func(functionToCall, arg1, arg2, arg3, arg4);\n break;\n case 5:\n wrap = (arg1, arg2, arg3, arg4, arg5) => func(functionToCall, arg1, arg2, arg3, arg4, arg5);\n break;\n case 6:\n wrap = (arg1, arg2, arg3, arg4, arg5, arg6) => func(functionToCall, arg1, arg2, arg3, arg4, arg5, arg6);\n break;\n case 7:\n wrap = (arg1, arg2, arg3, arg4, arg5, arg6, arg7) => func(functionToCall, arg1, arg2, arg3, arg4, arg5, arg6, arg7);\n break;\n case 8:\n wrap = (arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) => func(functionToCall, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);\n break;\n case 9:\n wrap = (arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) => func(functionToCall, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9);\n break;\n default: {\n wrap = (...args2) => func(functionToCall, ...args2);\n break;\n }\n }\n return wrap.native = functionToCall, wrap.ptr = functionToCall.ptr, wrap;\n}, dlopen = function(path, options) {\n const result = nativeDLOpen(path, options);\n if (result instanceof Error)\n throw result;\n for (let key in result.symbols) {\n var symbol = result.symbols[key];\n if (options[key]\?.args\?.length || FFIType[options[key]\?.returns] === FFIType.cstring)\n result.symbols[key] = FFIBuilder(options[key].args \?\? [], options[key].returns \?\? FFIType.void, symbol, path.includes(\"/\") \? `${key} (${path.split(\"/\").pop()})` : `${key} (${path})`);\n else\n result.symbols[key].native = result.symbols[key];\n }\n return result.close = result.close.bind(result), result;\n}, linkSymbols = function(options) {\n const result = nativeLinkSymbols(options);\n for (let key in result.symbols) {\n var symbol = result.symbols[key];\n if (options[key]\?.args\?.length || FFIType[options[key]\?.returns] === FFIType.cstring)\n result.symbols[key] = FFIBuilder(options[key].args \?\? [], options[key].returns \?\? FFIType.void, symbol, key);\n else\n result.symbols[key].native = result.symbols[key];\n }\n return result;\n}, onCloseCFunction = function(close) {\n close();\n}, CFunction = function(options) {\n const identifier = `CFunction${cFunctionI++}`;\n var result = linkSymbols({\n [identifier]: options\n }), hasClosed = !1, close = result.close.bind(result);\n return result.symbols[identifier].close = () => {\n if (hasClosed || !close)\n return;\n hasClosed = !0, close(), close = @undefined;\n }, cFunctionRegistry ||= new FinalizationRegistry(onCloseCFunction), cFunctionRegistry.register(result.symbols[identifier], result.symbols[identifier].close), result.symbols[identifier];\n}, $, FFIType = {\n \"0\": 0,\n \"1\": 1,\n \"2\": 2,\n \"3\": 3,\n \"4\": 4,\n \"5\": 5,\n \"6\": 6,\n \"7\": 7,\n \"8\": 8,\n \"9\": 9,\n \"10\": 10,\n \"11\": 11,\n \"12\": 12,\n \"13\": 13,\n \"14\": 14,\n \"15\": 15,\n \"16\": 16,\n \"17\": 17,\n bool: 11,\n c_int: 5,\n c_uint: 6,\n char: 0,\n \"char*\": 12,\n double: 9,\n f32: 10,\n f64: 9,\n float: 10,\n i16: 3,\n i32: 5,\n i64: 7,\n i8: 1,\n int: 5,\n int16_t: 3,\n int32_t: 5,\n int64_t: 7,\n int8_t: 1,\n isize: 7,\n u16: 4,\n u32: 6,\n u64: 8,\n u8: 2,\n uint16_t: 4,\n uint32_t: 6,\n uint64_t: 8,\n uint8_t: 2,\n usize: 8,\n \"void*\": 12,\n ptr: 12,\n pointer: 12,\n void: 13,\n cstring: 14,\n i64_fast: 15,\n u64_fast: 16,\n function: 17,\n callback: 17,\n fn: 17\n};\nvar ffi = globalThis.Bun.FFI, ptr = (arg1, arg2) => typeof arg2 === \"undefined\" \? ffi.ptr(arg1) : ffi.ptr(arg1, arg2), toBuffer = ffi.toBuffer, toArrayBuffer = ffi.toArrayBuffer, viewSource = ffi.viewSource, BunCString = ffi.CString, nativeLinkSymbols = ffi.linkSymbols, nativeDLOpen = ffi.dlopen, nativeCallback = ffi.callback, closeCallback = ffi.closeCallback;\ndelete ffi.callback;\ndelete ffi.closeCallback;\n\nclass JSCallback {\n constructor(cb, options) {\n const { ctx, ptr: ptr2 } = nativeCallback(options, cb);\n this.#ctx = ctx, this.ptr = ptr2, this.#threadsafe = !!options\?.threadsafe;\n }\n ptr;\n #ctx;\n #threadsafe;\n get threadsafe() {\n return this.#threadsafe;\n }\n [Symbol.toPrimitive]() {\n const { ptr: ptr2 } = this;\n return typeof ptr2 === \"number\" \? ptr2 : 0;\n }\n close() {\n const ctx = this.#ctx;\n if (this.ptr = null, this.#ctx = null, ctx)\n closeCallback(ctx);\n }\n}\n\nclass CString extends @String {\n constructor(ptr2, byteOffset, byteLength) {\n super(ptr2 \? typeof byteLength === \"number\" && Number.isSafeInteger(byteLength) \? BunCString(ptr2, byteOffset || 0, byteLength) : BunCString(ptr2) : \"\");\n if (this.ptr = typeof ptr2 === \"number\" \? ptr2 : 0, typeof byteOffset !== \"undefined\")\n this.byteOffset = byteOffset;\n if (typeof byteLength !== \"undefined\")\n this.byteLength = byteLength;\n }\n ptr;\n byteOffset;\n byteLength;\n #cachedArrayBuffer;\n get arrayBuffer() {\n if (this.#cachedArrayBuffer)\n return this.#cachedArrayBuffer;\n if (!this.ptr)\n return this.#cachedArrayBuffer = new @ArrayBuffer(0);\n return this.#cachedArrayBuffer = toArrayBuffer(this.ptr, this.byteOffset, this.byteLength);\n }\n}\nObject.defineProperty(globalThis, \"__GlobalBunCString\", {\n value: CString,\n enumerable: !1,\n configurable: !1\n});\nvar ffiWrappers = new @Array(18), char = \"val|0\";\nffiWrappers.fill(char);\nffiWrappers[FFIType.uint8_t] = \"val<0\?0:val>=255\?255:val|0\";\nffiWrappers[FFIType.int16_t] = \"val<=-32768\?-32768:val>=32768\?32768:val|0\";\nffiWrappers[FFIType.uint16_t] = \"val<=0\?0:val>=65536\?65536:val|0\";\nffiWrappers[FFIType.int32_t] = \"val|0\";\nffiWrappers[FFIType.uint32_t] = \"val<=0\?0:val>=0xffffffff\?0xffffffff:+val||0\";\nffiWrappers[FFIType.i64_fast] = `{\n if (typeof val === \"bigint\") {\n if (val <= BigInt(Number.MAX_SAFE_INTEGER) && val >= BigInt(-Number.MAX_SAFE_INTEGER)) {\n return Number(val).valueOf() || 0;\n }\n\n return val;\n }\n\n return !val \? 0 : +val || 0;\n}`;\nffiWrappers[FFIType.i64_fast] = `{\n if (typeof val === \"bigint\") {\n if (val <= BigInt(Number.MAX_SAFE_INTEGER) && val >= BigInt(-Number.MAX_SAFE_INTEGER)) {\n return Number(val).valueOf() || 0;\n }\n\n return val;\n }\n\n return !val \? 0 : +val || 0;\n}`;\nffiWrappers[FFIType.u64_fast] = `{\n if (typeof val === \"bigint\") {\n if (val <= BigInt(Number.MAX_SAFE_INTEGER) && val >= 0) {\n return Number(val).valueOf() || 0;\n }\n\n return val;\n }\n\n return !val \? 0 : +val || 0;\n}`;\nffiWrappers[FFIType.int64_t] = `{\n if (typeof val === \"bigint\") {\n return val;\n }\n\n if (typeof val === \"number\") {\n return BigInt(val || 0);\n }\n\n return BigInt(+val || 0);\n}`;\nffiWrappers[FFIType.uint64_t] = `{\n if (typeof val === \"bigint\") {\n return val;\n }\n\n if (typeof val === \"number\") {\n return val <= 0 \? BigInt(0) : BigInt(val || 0);\n }\n\n return BigInt(+val || 0);\n}`;\nffiWrappers[FFIType.u64_fast] = `{\n if (typeof val === \"bigint\") {\n if (val <= BigInt(Number.MAX_SAFE_INTEGER) && val >= BigInt(0)) return Number(val);\n return val;\n }\n\n return typeof val === \"number\" \? (val <= 0 \? 0 : +val || 0) : +val || 0;\n}`;\nffiWrappers[FFIType.uint16_t] = `{\n const ret = (typeof val === \"bigint\" \? Number(val) : val) | 0;\n return ret <= 0 \? 0 : ret > 0xffff \? 0xffff : ret;\n}`;\nffiWrappers[FFIType.double] = `{\n if (typeof val === \"bigint\") {\n if (val.valueOf() < BigInt(Number.MAX_VALUE)) {\n return Math.abs(Number(val).valueOf()) + 0.00000000000001 - 0.00000000000001;\n }\n }\n\n if (!val) {\n return 0 + 0.00000000000001 - 0.00000000000001;\n }\n\n return val + 0.00000000000001 - 0.00000000000001;\n}`;\nffiWrappers[FFIType.float] = ffiWrappers[10] = `{\n return Math.fround(val);\n}`;\nffiWrappers[FFIType.bool] = `{\n return !!val;\n}`;\nObject.defineProperty(globalThis, \"__GlobalBunFFIPtrFunctionForWrapper\", {\n value: ptr,\n enumerable: !1,\n configurable: !0\n});\nffiWrappers[FFIType.cstring] = ffiWrappers[FFIType.pointer] = `{\n if (typeof val === \"number\") return val;\n if (!val) {\n return null;\n }\n\n if (ArrayBuffer.isView(val) || val instanceof ArrayBuffer) {\n return __GlobalBunFFIPtrFunctionForWrapper(val);\n }\n\n if (typeof val === \"string\") {\n throw new TypeError(\"To convert a string to a pointer, encode it as a buffer\");\n }\n\n throw new TypeError(\\`Unable to convert \\${ val } to a pointer\\`);\n}`;\nffiWrappers[FFIType.function] = `{\n if (typeof val === \"number\") {\n return val;\n }\n\n if (typeof val === \"bigint\") {\n return Number(val);\n }\n\n var ptr = val && val.ptr;\n\n if (!ptr) {\n throw new TypeError(\"Expected function to be a JSCallback or a number\");\n }\n\n return ptr;\n}`;\nvar native = {\n dlopen: nativeDLOpen,\n callback: () => {\n throw new Error(\"Deprecated. Use new JSCallback(options, fn) instead\");\n }\n}, cFunctionI = 0, cFunctionRegistry, read = ffi.read;\n$ = {\n CFunction,\n CString,\n FFIType,\n JSCallback,\n dlopen,\n linkSymbols,\n native,\n ptr,\n read,\n suffix: \"dylib\",\n toArrayBuffer,\n toBuffer,\n viewSource\n};\nreturn $})\n"_s;
//
//
@@ -247,7 +247,7 @@ static constexpr ASCIILiteral ThirdpartyWSCode = "(function (){\"use strict\";//
#elif _WIN32
//
-static constexpr ASCIILiteral BunFFICode = "(function (){\"use strict\";// src/js/out/tmp/bun/ffi.ts\nvar FFIBuilder = function(params, returnType, functionToCall, name) {\n const hasReturnType = typeof FFIType[returnType] === \"number\" && FFIType[returnType] !== FFIType.void;\n var paramNames = new @Array(params.length), args = new @Array(params.length);\n for (let i = 0;i < params.length; i++) {\n paramNames[i] = `p${i}`;\n const wrapper = ffiWrappers[FFIType[params[i]]];\n if (wrapper)\n args[i] = `(val=>${wrapper})(p${i})`;\n else\n @throwTypeError(`Unsupported type ${params[i]}. Must be one of: ${Object.keys(FFIType).sort().join(\", \")}`);\n }\n var code = `functionToCall(${args.join(\", \")})`;\n if (hasReturnType)\n if (FFIType[returnType] === FFIType.cstring)\n code = `return new __GlobalBunCString(${code})`;\n else\n code = `return ${code}`;\n var func = new Function(\"functionToCall\", ...paramNames, code);\n Object.defineProperty(func, \"name\", {\n value: name\n });\n var wrap;\n switch (paramNames.length) {\n case 0:\n wrap = () => func(functionToCall);\n break;\n case 1:\n wrap = (arg1) => func(functionToCall, arg1);\n break;\n case 2:\n wrap = (arg1, arg2) => func(functionToCall, arg1, arg2);\n break;\n case 3:\n wrap = (arg1, arg2, arg3) => func(functionToCall, arg1, arg2, arg3);\n break;\n case 4:\n wrap = (arg1, arg2, arg3, arg4) => func(functionToCall, arg1, arg2, arg3, arg4);\n break;\n case 5:\n wrap = (arg1, arg2, arg3, arg4, arg5) => func(functionToCall, arg1, arg2, arg3, arg4, arg5);\n break;\n case 6:\n wrap = (arg1, arg2, arg3, arg4, arg5, arg6) => func(functionToCall, arg1, arg2, arg3, arg4, arg5, arg6);\n break;\n case 7:\n wrap = (arg1, arg2, arg3, arg4, arg5, arg6, arg7) => func(functionToCall, arg1, arg2, arg3, arg4, arg5, arg6, arg7);\n break;\n case 8:\n wrap = (arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) => func(functionToCall, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);\n break;\n case 9:\n wrap = (arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) => func(functionToCall, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9);\n break;\n default: {\n wrap = (...args2) => func(functionToCall, ...args2);\n break;\n }\n }\n return wrap.native = functionToCall, wrap.ptr = functionToCall.ptr, wrap;\n}, dlopen = function(path, options) {\n const result = nativeDLOpen(path, options);\n for (let key in result.symbols) {\n var symbol = result.symbols[key];\n if (options[key]\?.args\?.length || FFIType[options[key]\?.returns] === FFIType.cstring)\n result.symbols[key] = FFIBuilder(options[key].args \?\? [], options[key].returns \?\? FFIType.void, symbol, path.includes(\"/\") \? `${key} (${path.split(\"/\").pop()})` : `${key} (${path})`);\n else\n result.symbols[key].native = result.symbols[key];\n }\n return result.close = result.close.bind(result), result;\n}, linkSymbols = function(options) {\n const result = nativeLinkSymbols(options);\n for (let key in result.symbols) {\n var symbol = result.symbols[key];\n if (options[key]\?.args\?.length || FFIType[options[key]\?.returns] === FFIType.cstring)\n result.symbols[key] = FFIBuilder(options[key].args \?\? [], options[key].returns \?\? FFIType.void, symbol, key);\n else\n result.symbols[key].native = result.symbols[key];\n }\n return result;\n}, onCloseCFunction = function(close) {\n close();\n}, CFunction = function(options) {\n const identifier = `CFunction${cFunctionI++}`;\n var result = linkSymbols({\n [identifier]: options\n }), hasClosed = !1, close = result.close.bind(result);\n return result.symbols[identifier].close = () => {\n if (hasClosed || !close)\n return;\n hasClosed = !0, close(), close = @undefined;\n }, cFunctionRegistry ||= new FinalizationRegistry(onCloseCFunction), cFunctionRegistry.register(result.symbols[identifier], result.symbols[identifier].close), result.symbols[identifier];\n}, $, FFIType = {\n \"0\": 0,\n \"1\": 1,\n \"2\": 2,\n \"3\": 3,\n \"4\": 4,\n \"5\": 5,\n \"6\": 6,\n \"7\": 7,\n \"8\": 8,\n \"9\": 9,\n \"10\": 10,\n \"11\": 11,\n \"12\": 12,\n \"13\": 13,\n \"14\": 14,\n \"15\": 15,\n \"16\": 16,\n \"17\": 17,\n bool: 11,\n c_int: 5,\n c_uint: 6,\n char: 0,\n \"char*\": 12,\n double: 9,\n f32: 10,\n f64: 9,\n float: 10,\n i16: 3,\n i32: 5,\n i64: 7,\n i8: 1,\n int: 5,\n int16_t: 3,\n int32_t: 5,\n int64_t: 7,\n int8_t: 1,\n isize: 7,\n u16: 4,\n u32: 6,\n u64: 8,\n u8: 2,\n uint16_t: 4,\n uint32_t: 6,\n uint64_t: 8,\n uint8_t: 2,\n usize: 8,\n \"void*\": 12,\n ptr: 12,\n pointer: 12,\n void: 13,\n cstring: 14,\n i64_fast: 15,\n u64_fast: 16,\n function: 17,\n callback: 17,\n fn: 17\n};\nvar ffi = globalThis.Bun.FFI, ptr = (arg1, arg2) => typeof arg2 === \"undefined\" \? ffi.ptr(arg1) : ffi.ptr(arg1, arg2), toBuffer = ffi.toBuffer, toArrayBuffer = ffi.toArrayBuffer, viewSource = ffi.viewSource, BunCString = ffi.CString, nativeLinkSymbols = ffi.linkSymbols, nativeDLOpen = ffi.dlopen, nativeCallback = ffi.callback, closeCallback = ffi.closeCallback;\ndelete ffi.callback;\ndelete ffi.closeCallback;\n\nclass JSCallback {\n constructor(cb, options) {\n const { ctx, ptr: ptr2 } = nativeCallback(options, cb);\n this.#ctx = ctx, this.ptr = ptr2, this.#threadsafe = !!options\?.threadsafe;\n }\n ptr;\n #ctx;\n #threadsafe;\n get threadsafe() {\n return this.#threadsafe;\n }\n [Symbol.toPrimitive]() {\n const { ptr: ptr2 } = this;\n return typeof ptr2 === \"number\" \? ptr2 : 0;\n }\n close() {\n const ctx = this.#ctx;\n if (this.ptr = null, this.#ctx = null, ctx)\n closeCallback(ctx);\n }\n}\n\nclass CString extends @String {\n constructor(ptr2, byteOffset, byteLength) {\n super(ptr2 \? typeof byteLength === \"number\" && Number.isSafeInteger(byteLength) \? BunCString(ptr2, byteOffset || 0, byteLength) : BunCString(ptr2) : \"\");\n if (this.ptr = typeof ptr2 === \"number\" \? ptr2 : 0, typeof byteOffset !== \"undefined\")\n this.byteOffset = byteOffset;\n if (typeof byteLength !== \"undefined\")\n this.byteLength = byteLength;\n }\n ptr;\n byteOffset;\n byteLength;\n #cachedArrayBuffer;\n get arrayBuffer() {\n if (this.#cachedArrayBuffer)\n return this.#cachedArrayBuffer;\n if (!this.ptr)\n return this.#cachedArrayBuffer = new @ArrayBuffer(0);\n return this.#cachedArrayBuffer = toArrayBuffer(this.ptr, this.byteOffset, this.byteLength);\n }\n}\nObject.defineProperty(globalThis, \"__GlobalBunCString\", {\n value: CString,\n enumerable: !1,\n configurable: !1\n});\nvar ffiWrappers = new @Array(18), char = \"val|0\";\nffiWrappers.fill(char);\nffiWrappers[FFIType.uint8_t] = \"val<0\?0:val>=255\?255:val|0\";\nffiWrappers[FFIType.int16_t] = \"val<=-32768\?-32768:val>=32768\?32768:val|0\";\nffiWrappers[FFIType.uint16_t] = \"val<=0\?0:val>=65536\?65536:val|0\";\nffiWrappers[FFIType.int32_t] = \"val|0\";\nffiWrappers[FFIType.uint32_t] = \"val<=0\?0:val>=0xffffffff\?0xffffffff:+val||0\";\nffiWrappers[FFIType.i64_fast] = `{\n if (typeof val === \"bigint\") {\n if (val <= BigInt(Number.MAX_SAFE_INTEGER) && val >= BigInt(-Number.MAX_SAFE_INTEGER)) {\n return Number(val).valueOf() || 0;\n }\n\n return val;\n }\n\n return !val \? 0 : +val || 0;\n}`;\nffiWrappers[FFIType.i64_fast] = `{\n if (typeof val === \"bigint\") {\n if (val <= BigInt(Number.MAX_SAFE_INTEGER) && val >= BigInt(-Number.MAX_SAFE_INTEGER)) {\n return Number(val).valueOf() || 0;\n }\n\n return val;\n }\n\n return !val \? 0 : +val || 0;\n}`;\nffiWrappers[FFIType.u64_fast] = `{\n if (typeof val === \"bigint\") {\n if (val <= BigInt(Number.MAX_SAFE_INTEGER) && val >= 0) {\n return Number(val).valueOf() || 0;\n }\n\n return val;\n }\n\n return !val \? 0 : +val || 0;\n}`;\nffiWrappers[FFIType.int64_t] = `{\n if (typeof val === \"bigint\") {\n return val;\n }\n\n if (typeof val === \"number\") {\n return BigInt(val || 0);\n }\n\n return BigInt(+val || 0);\n}`;\nffiWrappers[FFIType.uint64_t] = `{\n if (typeof val === \"bigint\") {\n return val;\n }\n\n if (typeof val === \"number\") {\n return val <= 0 \? BigInt(0) : BigInt(val || 0);\n }\n\n return BigInt(+val || 0);\n}`;\nffiWrappers[FFIType.u64_fast] = `{\n if (typeof val === \"bigint\") {\n if (val <= BigInt(Number.MAX_SAFE_INTEGER) && val >= BigInt(0)) return Number(val);\n return val;\n }\n\n return typeof val === \"number\" \? (val <= 0 \? 0 : +val || 0) : +val || 0;\n}`;\nffiWrappers[FFIType.uint16_t] = `{\n const ret = (typeof val === \"bigint\" \? Number(val) : val) | 0;\n return ret <= 0 \? 0 : ret > 0xffff \? 0xffff : ret;\n}`;\nffiWrappers[FFIType.double] = `{\n if (typeof val === \"bigint\") {\n if (val.valueOf() < BigInt(Number.MAX_VALUE)) {\n return Math.abs(Number(val).valueOf()) + 0.00000000000001 - 0.00000000000001;\n }\n }\n\n if (!val) {\n return 0 + 0.00000000000001 - 0.00000000000001;\n }\n\n return val + 0.00000000000001 - 0.00000000000001;\n}`;\nffiWrappers[FFIType.float] = ffiWrappers[10] = `{\n return Math.fround(val);\n}`;\nffiWrappers[FFIType.bool] = `{\n return !!val;\n}`;\nObject.defineProperty(globalThis, \"__GlobalBunFFIPtrFunctionForWrapper\", {\n value: ptr,\n enumerable: !1,\n configurable: !0\n});\nffiWrappers[FFIType.cstring] = ffiWrappers[FFIType.pointer] = `{\n if (typeof val === \"number\") return val;\n if (!val) {\n return null;\n }\n\n if (ArrayBuffer.isView(val) || val instanceof ArrayBuffer) {\n return __GlobalBunFFIPtrFunctionForWrapper(val);\n }\n\n if (typeof val === \"string\") {\n throw new TypeError(\"To convert a string to a pointer, encode it as a buffer\");\n }\n\n throw new TypeError(\\`Unable to convert \\${ val } to a pointer\\`);\n}`;\nffiWrappers[FFIType.function] = `{\n if (typeof val === \"number\") {\n return val;\n }\n\n if (typeof val === \"bigint\") {\n return Number(val);\n }\n\n var ptr = val && val.ptr;\n\n if (!ptr) {\n throw new TypeError(\"Expected function to be a JSCallback or a number\");\n }\n\n return ptr;\n}`;\nvar native = {\n dlopen: nativeDLOpen,\n callback: () => {\n throw new Error(\"Deprecated. Use new JSCallback(options, fn) instead\");\n }\n}, cFunctionI = 0, cFunctionRegistry, read = ffi.read;\n$ = {\n CFunction,\n CString,\n FFIType,\n JSCallback,\n dlopen,\n linkSymbols,\n native,\n ptr,\n read,\n suffix: \"dll\",\n toArrayBuffer,\n toBuffer,\n viewSource\n};\nreturn $})\n"_s;
+static constexpr ASCIILiteral BunFFICode = "(function (){\"use strict\";// src/js/out/tmp/bun/ffi.ts\nvar FFIBuilder = function(params, returnType, functionToCall, name) {\n const hasReturnType = typeof FFIType[returnType] === \"number\" && FFIType[returnType] !== FFIType.void;\n var paramNames = new @Array(params.length), args = new @Array(params.length);\n for (let i = 0;i < params.length; i++) {\n paramNames[i] = `p${i}`;\n const wrapper = ffiWrappers[FFIType[params[i]]];\n if (wrapper)\n args[i] = `(val=>${wrapper})(p${i})`;\n else\n @throwTypeError(`Unsupported type ${params[i]}. Must be one of: ${Object.keys(FFIType).sort().join(\", \")}`);\n }\n var code = `functionToCall(${args.join(\", \")})`;\n if (hasReturnType)\n if (FFIType[returnType] === FFIType.cstring)\n code = `return new __GlobalBunCString(${code})`;\n else\n code = `return ${code}`;\n var func = new Function(\"functionToCall\", ...paramNames, code);\n Object.defineProperty(func, \"name\", {\n value: name\n });\n var wrap;\n switch (paramNames.length) {\n case 0:\n wrap = () => func(functionToCall);\n break;\n case 1:\n wrap = (arg1) => func(functionToCall, arg1);\n break;\n case 2:\n wrap = (arg1, arg2) => func(functionToCall, arg1, arg2);\n break;\n case 3:\n wrap = (arg1, arg2, arg3) => func(functionToCall, arg1, arg2, arg3);\n break;\n case 4:\n wrap = (arg1, arg2, arg3, arg4) => func(functionToCall, arg1, arg2, arg3, arg4);\n break;\n case 5:\n wrap = (arg1, arg2, arg3, arg4, arg5) => func(functionToCall, arg1, arg2, arg3, arg4, arg5);\n break;\n case 6:\n wrap = (arg1, arg2, arg3, arg4, arg5, arg6) => func(functionToCall, arg1, arg2, arg3, arg4, arg5, arg6);\n break;\n case 7:\n wrap = (arg1, arg2, arg3, arg4, arg5, arg6, arg7) => func(functionToCall, arg1, arg2, arg3, arg4, arg5, arg6, arg7);\n break;\n case 8:\n wrap = (arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) => func(functionToCall, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);\n break;\n case 9:\n wrap = (arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) => func(functionToCall, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9);\n break;\n default: {\n wrap = (...args2) => func(functionToCall, ...args2);\n break;\n }\n }\n return wrap.native = functionToCall, wrap.ptr = functionToCall.ptr, wrap;\n}, dlopen = function(path, options) {\n const result = nativeDLOpen(path, options);\n if (result instanceof Error)\n throw result;\n for (let key in result.symbols) {\n var symbol = result.symbols[key];\n if (options[key]\?.args\?.length || FFIType[options[key]\?.returns] === FFIType.cstring)\n result.symbols[key] = FFIBuilder(options[key].args \?\? [], options[key].returns \?\? FFIType.void, symbol, path.includes(\"/\") \? `${key} (${path.split(\"/\").pop()})` : `${key} (${path})`);\n else\n result.symbols[key].native = result.symbols[key];\n }\n return result.close = result.close.bind(result), result;\n}, linkSymbols = function(options) {\n const result = nativeLinkSymbols(options);\n for (let key in result.symbols) {\n var symbol = result.symbols[key];\n if (options[key]\?.args\?.length || FFIType[options[key]\?.returns] === FFIType.cstring)\n result.symbols[key] = FFIBuilder(options[key].args \?\? [], options[key].returns \?\? FFIType.void, symbol, key);\n else\n result.symbols[key].native = result.symbols[key];\n }\n return result;\n}, onCloseCFunction = function(close) {\n close();\n}, CFunction = function(options) {\n const identifier = `CFunction${cFunctionI++}`;\n var result = linkSymbols({\n [identifier]: options\n }), hasClosed = !1, close = result.close.bind(result);\n return result.symbols[identifier].close = () => {\n if (hasClosed || !close)\n return;\n hasClosed = !0, close(), close = @undefined;\n }, cFunctionRegistry ||= new FinalizationRegistry(onCloseCFunction), cFunctionRegistry.register(result.symbols[identifier], result.symbols[identifier].close), result.symbols[identifier];\n}, $, FFIType = {\n \"0\": 0,\n \"1\": 1,\n \"2\": 2,\n \"3\": 3,\n \"4\": 4,\n \"5\": 5,\n \"6\": 6,\n \"7\": 7,\n \"8\": 8,\n \"9\": 9,\n \"10\": 10,\n \"11\": 11,\n \"12\": 12,\n \"13\": 13,\n \"14\": 14,\n \"15\": 15,\n \"16\": 16,\n \"17\": 17,\n bool: 11,\n c_int: 5,\n c_uint: 6,\n char: 0,\n \"char*\": 12,\n double: 9,\n f32: 10,\n f64: 9,\n float: 10,\n i16: 3,\n i32: 5,\n i64: 7,\n i8: 1,\n int: 5,\n int16_t: 3,\n int32_t: 5,\n int64_t: 7,\n int8_t: 1,\n isize: 7,\n u16: 4,\n u32: 6,\n u64: 8,\n u8: 2,\n uint16_t: 4,\n uint32_t: 6,\n uint64_t: 8,\n uint8_t: 2,\n usize: 8,\n \"void*\": 12,\n ptr: 12,\n pointer: 12,\n void: 13,\n cstring: 14,\n i64_fast: 15,\n u64_fast: 16,\n function: 17,\n callback: 17,\n fn: 17\n};\nvar ffi = globalThis.Bun.FFI, ptr = (arg1, arg2) => typeof arg2 === \"undefined\" \? ffi.ptr(arg1) : ffi.ptr(arg1, arg2), toBuffer = ffi.toBuffer, toArrayBuffer = ffi.toArrayBuffer, viewSource = ffi.viewSource, BunCString = ffi.CString, nativeLinkSymbols = ffi.linkSymbols, nativeDLOpen = ffi.dlopen, nativeCallback = ffi.callback, closeCallback = ffi.closeCallback;\ndelete ffi.callback;\ndelete ffi.closeCallback;\n\nclass JSCallback {\n constructor(cb, options) {\n const { ctx, ptr: ptr2 } = nativeCallback(options, cb);\n this.#ctx = ctx, this.ptr = ptr2, this.#threadsafe = !!options\?.threadsafe;\n }\n ptr;\n #ctx;\n #threadsafe;\n get threadsafe() {\n return this.#threadsafe;\n }\n [Symbol.toPrimitive]() {\n const { ptr: ptr2 } = this;\n return typeof ptr2 === \"number\" \? ptr2 : 0;\n }\n close() {\n const ctx = this.#ctx;\n if (this.ptr = null, this.#ctx = null, ctx)\n closeCallback(ctx);\n }\n}\n\nclass CString extends @String {\n constructor(ptr2, byteOffset, byteLength) {\n super(ptr2 \? typeof byteLength === \"number\" && Number.isSafeInteger(byteLength) \? BunCString(ptr2, byteOffset || 0, byteLength) : BunCString(ptr2) : \"\");\n if (this.ptr = typeof ptr2 === \"number\" \? ptr2 : 0, typeof byteOffset !== \"undefined\")\n this.byteOffset = byteOffset;\n if (typeof byteLength !== \"undefined\")\n this.byteLength = byteLength;\n }\n ptr;\n byteOffset;\n byteLength;\n #cachedArrayBuffer;\n get arrayBuffer() {\n if (this.#cachedArrayBuffer)\n return this.#cachedArrayBuffer;\n if (!this.ptr)\n return this.#cachedArrayBuffer = new @ArrayBuffer(0);\n return this.#cachedArrayBuffer = toArrayBuffer(this.ptr, this.byteOffset, this.byteLength);\n }\n}\nObject.defineProperty(globalThis, \"__GlobalBunCString\", {\n value: CString,\n enumerable: !1,\n configurable: !1\n});\nvar ffiWrappers = new @Array(18), char = \"val|0\";\nffiWrappers.fill(char);\nffiWrappers[FFIType.uint8_t] = \"val<0\?0:val>=255\?255:val|0\";\nffiWrappers[FFIType.int16_t] = \"val<=-32768\?-32768:val>=32768\?32768:val|0\";\nffiWrappers[FFIType.uint16_t] = \"val<=0\?0:val>=65536\?65536:val|0\";\nffiWrappers[FFIType.int32_t] = \"val|0\";\nffiWrappers[FFIType.uint32_t] = \"val<=0\?0:val>=0xffffffff\?0xffffffff:+val||0\";\nffiWrappers[FFIType.i64_fast] = `{\n if (typeof val === \"bigint\") {\n if (val <= BigInt(Number.MAX_SAFE_INTEGER) && val >= BigInt(-Number.MAX_SAFE_INTEGER)) {\n return Number(val).valueOf() || 0;\n }\n\n return val;\n }\n\n return !val \? 0 : +val || 0;\n}`;\nffiWrappers[FFIType.i64_fast] = `{\n if (typeof val === \"bigint\") {\n if (val <= BigInt(Number.MAX_SAFE_INTEGER) && val >= BigInt(-Number.MAX_SAFE_INTEGER)) {\n return Number(val).valueOf() || 0;\n }\n\n return val;\n }\n\n return !val \? 0 : +val || 0;\n}`;\nffiWrappers[FFIType.u64_fast] = `{\n if (typeof val === \"bigint\") {\n if (val <= BigInt(Number.MAX_SAFE_INTEGER) && val >= 0) {\n return Number(val).valueOf() || 0;\n }\n\n return val;\n }\n\n return !val \? 0 : +val || 0;\n}`;\nffiWrappers[FFIType.int64_t] = `{\n if (typeof val === \"bigint\") {\n return val;\n }\n\n if (typeof val === \"number\") {\n return BigInt(val || 0);\n }\n\n return BigInt(+val || 0);\n}`;\nffiWrappers[FFIType.uint64_t] = `{\n if (typeof val === \"bigint\") {\n return val;\n }\n\n if (typeof val === \"number\") {\n return val <= 0 \? BigInt(0) : BigInt(val || 0);\n }\n\n return BigInt(+val || 0);\n}`;\nffiWrappers[FFIType.u64_fast] = `{\n if (typeof val === \"bigint\") {\n if (val <= BigInt(Number.MAX_SAFE_INTEGER) && val >= BigInt(0)) return Number(val);\n return val;\n }\n\n return typeof val === \"number\" \? (val <= 0 \? 0 : +val || 0) : +val || 0;\n}`;\nffiWrappers[FFIType.uint16_t] = `{\n const ret = (typeof val === \"bigint\" \? Number(val) : val) | 0;\n return ret <= 0 \? 0 : ret > 0xffff \? 0xffff : ret;\n}`;\nffiWrappers[FFIType.double] = `{\n if (typeof val === \"bigint\") {\n if (val.valueOf() < BigInt(Number.MAX_VALUE)) {\n return Math.abs(Number(val).valueOf()) + 0.00000000000001 - 0.00000000000001;\n }\n }\n\n if (!val) {\n return 0 + 0.00000000000001 - 0.00000000000001;\n }\n\n return val + 0.00000000000001 - 0.00000000000001;\n}`;\nffiWrappers[FFIType.float] = ffiWrappers[10] = `{\n return Math.fround(val);\n}`;\nffiWrappers[FFIType.bool] = `{\n return !!val;\n}`;\nObject.defineProperty(globalThis, \"__GlobalBunFFIPtrFunctionForWrapper\", {\n value: ptr,\n enumerable: !1,\n configurable: !0\n});\nffiWrappers[FFIType.cstring] = ffiWrappers[FFIType.pointer] = `{\n if (typeof val === \"number\") return val;\n if (!val) {\n return null;\n }\n\n if (ArrayBuffer.isView(val) || val instanceof ArrayBuffer) {\n return __GlobalBunFFIPtrFunctionForWrapper(val);\n }\n\n if (typeof val === \"string\") {\n throw new TypeError(\"To convert a string to a pointer, encode it as a buffer\");\n }\n\n throw new TypeError(\\`Unable to convert \\${ val } to a pointer\\`);\n}`;\nffiWrappers[FFIType.function] = `{\n if (typeof val === \"number\") {\n return val;\n }\n\n if (typeof val === \"bigint\") {\n return Number(val);\n }\n\n var ptr = val && val.ptr;\n\n if (!ptr) {\n throw new TypeError(\"Expected function to be a JSCallback or a number\");\n }\n\n return ptr;\n}`;\nvar native = {\n dlopen: nativeDLOpen,\n callback: () => {\n throw new Error(\"Deprecated. Use new JSCallback(options, fn) instead\");\n }\n}, cFunctionI = 0, cFunctionRegistry, read = ffi.read;\n$ = {\n CFunction,\n CString,\n FFIType,\n JSCallback,\n dlopen,\n linkSymbols,\n native,\n ptr,\n read,\n suffix: \"dll\",\n toArrayBuffer,\n toBuffer,\n viewSource\n};\nreturn $})\n"_s;
//
//
@@ -489,7 +489,7 @@ static constexpr ASCIILiteral ThirdpartyWSCode = "(function (){\"use strict\";//
#else
// Not 100% accurate, but basically inlining linux on non-windows non-mac platforms.
//
-static constexpr ASCIILiteral BunFFICode = "(function (){\"use strict\";// src/js/out/tmp/bun/ffi.ts\nvar FFIBuilder = function(params, returnType, functionToCall, name) {\n const hasReturnType = typeof FFIType[returnType] === \"number\" && FFIType[returnType] !== FFIType.void;\n var paramNames = new @Array(params.length), args = new @Array(params.length);\n for (let i = 0;i < params.length; i++) {\n paramNames[i] = `p${i}`;\n const wrapper = ffiWrappers[FFIType[params[i]]];\n if (wrapper)\n args[i] = `(val=>${wrapper})(p${i})`;\n else\n @throwTypeError(`Unsupported type ${params[i]}. Must be one of: ${Object.keys(FFIType).sort().join(\", \")}`);\n }\n var code = `functionToCall(${args.join(\", \")})`;\n if (hasReturnType)\n if (FFIType[returnType] === FFIType.cstring)\n code = `return new __GlobalBunCString(${code})`;\n else\n code = `return ${code}`;\n var func = new Function(\"functionToCall\", ...paramNames, code);\n Object.defineProperty(func, \"name\", {\n value: name\n });\n var wrap;\n switch (paramNames.length) {\n case 0:\n wrap = () => func(functionToCall);\n break;\n case 1:\n wrap = (arg1) => func(functionToCall, arg1);\n break;\n case 2:\n wrap = (arg1, arg2) => func(functionToCall, arg1, arg2);\n break;\n case 3:\n wrap = (arg1, arg2, arg3) => func(functionToCall, arg1, arg2, arg3);\n break;\n case 4:\n wrap = (arg1, arg2, arg3, arg4) => func(functionToCall, arg1, arg2, arg3, arg4);\n break;\n case 5:\n wrap = (arg1, arg2, arg3, arg4, arg5) => func(functionToCall, arg1, arg2, arg3, arg4, arg5);\n break;\n case 6:\n wrap = (arg1, arg2, arg3, arg4, arg5, arg6) => func(functionToCall, arg1, arg2, arg3, arg4, arg5, arg6);\n break;\n case 7:\n wrap = (arg1, arg2, arg3, arg4, arg5, arg6, arg7) => func(functionToCall, arg1, arg2, arg3, arg4, arg5, arg6, arg7);\n break;\n case 8:\n wrap = (arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) => func(functionToCall, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);\n break;\n case 9:\n wrap = (arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) => func(functionToCall, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9);\n break;\n default: {\n wrap = (...args2) => func(functionToCall, ...args2);\n break;\n }\n }\n return wrap.native = functionToCall, wrap.ptr = functionToCall.ptr, wrap;\n}, dlopen = function(path, options) {\n const result = nativeDLOpen(path, options);\n for (let key in result.symbols) {\n var symbol = result.symbols[key];\n if (options[key]\?.args\?.length || FFIType[options[key]\?.returns] === FFIType.cstring)\n result.symbols[key] = FFIBuilder(options[key].args \?\? [], options[key].returns \?\? FFIType.void, symbol, path.includes(\"/\") \? `${key} (${path.split(\"/\").pop()})` : `${key} (${path})`);\n else\n result.symbols[key].native = result.symbols[key];\n }\n return result.close = result.close.bind(result), result;\n}, linkSymbols = function(options) {\n const result = nativeLinkSymbols(options);\n for (let key in result.symbols) {\n var symbol = result.symbols[key];\n if (options[key]\?.args\?.length || FFIType[options[key]\?.returns] === FFIType.cstring)\n result.symbols[key] = FFIBuilder(options[key].args \?\? [], options[key].returns \?\? FFIType.void, symbol, key);\n else\n result.symbols[key].native = result.symbols[key];\n }\n return result;\n}, onCloseCFunction = function(close) {\n close();\n}, CFunction = function(options) {\n const identifier = `CFunction${cFunctionI++}`;\n var result = linkSymbols({\n [identifier]: options\n }), hasClosed = !1, close = result.close.bind(result);\n return result.symbols[identifier].close = () => {\n if (hasClosed || !close)\n return;\n hasClosed = !0, close(), close = @undefined;\n }, cFunctionRegistry ||= new FinalizationRegistry(onCloseCFunction), cFunctionRegistry.register(result.symbols[identifier], result.symbols[identifier].close), result.symbols[identifier];\n}, $, FFIType = {\n \"0\": 0,\n \"1\": 1,\n \"2\": 2,\n \"3\": 3,\n \"4\": 4,\n \"5\": 5,\n \"6\": 6,\n \"7\": 7,\n \"8\": 8,\n \"9\": 9,\n \"10\": 10,\n \"11\": 11,\n \"12\": 12,\n \"13\": 13,\n \"14\": 14,\n \"15\": 15,\n \"16\": 16,\n \"17\": 17,\n bool: 11,\n c_int: 5,\n c_uint: 6,\n char: 0,\n \"char*\": 12,\n double: 9,\n f32: 10,\n f64: 9,\n float: 10,\n i16: 3,\n i32: 5,\n i64: 7,\n i8: 1,\n int: 5,\n int16_t: 3,\n int32_t: 5,\n int64_t: 7,\n int8_t: 1,\n isize: 7,\n u16: 4,\n u32: 6,\n u64: 8,\n u8: 2,\n uint16_t: 4,\n uint32_t: 6,\n uint64_t: 8,\n uint8_t: 2,\n usize: 8,\n \"void*\": 12,\n ptr: 12,\n pointer: 12,\n void: 13,\n cstring: 14,\n i64_fast: 15,\n u64_fast: 16,\n function: 17,\n callback: 17,\n fn: 17\n};\nvar ffi = globalThis.Bun.FFI, ptr = (arg1, arg2) => typeof arg2 === \"undefined\" \? ffi.ptr(arg1) : ffi.ptr(arg1, arg2), toBuffer = ffi.toBuffer, toArrayBuffer = ffi.toArrayBuffer, viewSource = ffi.viewSource, BunCString = ffi.CString, nativeLinkSymbols = ffi.linkSymbols, nativeDLOpen = ffi.dlopen, nativeCallback = ffi.callback, closeCallback = ffi.closeCallback;\ndelete ffi.callback;\ndelete ffi.closeCallback;\n\nclass JSCallback {\n constructor(cb, options) {\n const { ctx, ptr: ptr2 } = nativeCallback(options, cb);\n this.#ctx = ctx, this.ptr = ptr2, this.#threadsafe = !!options\?.threadsafe;\n }\n ptr;\n #ctx;\n #threadsafe;\n get threadsafe() {\n return this.#threadsafe;\n }\n [Symbol.toPrimitive]() {\n const { ptr: ptr2 } = this;\n return typeof ptr2 === \"number\" \? ptr2 : 0;\n }\n close() {\n const ctx = this.#ctx;\n if (this.ptr = null, this.#ctx = null, ctx)\n closeCallback(ctx);\n }\n}\n\nclass CString extends @String {\n constructor(ptr2, byteOffset, byteLength) {\n super(ptr2 \? typeof byteLength === \"number\" && Number.isSafeInteger(byteLength) \? BunCString(ptr2, byteOffset || 0, byteLength) : BunCString(ptr2) : \"\");\n if (this.ptr = typeof ptr2 === \"number\" \? ptr2 : 0, typeof byteOffset !== \"undefined\")\n this.byteOffset = byteOffset;\n if (typeof byteLength !== \"undefined\")\n this.byteLength = byteLength;\n }\n ptr;\n byteOffset;\n byteLength;\n #cachedArrayBuffer;\n get arrayBuffer() {\n if (this.#cachedArrayBuffer)\n return this.#cachedArrayBuffer;\n if (!this.ptr)\n return this.#cachedArrayBuffer = new @ArrayBuffer(0);\n return this.#cachedArrayBuffer = toArrayBuffer(this.ptr, this.byteOffset, this.byteLength);\n }\n}\nObject.defineProperty(globalThis, \"__GlobalBunCString\", {\n value: CString,\n enumerable: !1,\n configurable: !1\n});\nvar ffiWrappers = new @Array(18), char = \"val|0\";\nffiWrappers.fill(char);\nffiWrappers[FFIType.uint8_t] = \"val<0\?0:val>=255\?255:val|0\";\nffiWrappers[FFIType.int16_t] = \"val<=-32768\?-32768:val>=32768\?32768:val|0\";\nffiWrappers[FFIType.uint16_t] = \"val<=0\?0:val>=65536\?65536:val|0\";\nffiWrappers[FFIType.int32_t] = \"val|0\";\nffiWrappers[FFIType.uint32_t] = \"val<=0\?0:val>=0xffffffff\?0xffffffff:+val||0\";\nffiWrappers[FFIType.i64_fast] = `{\n if (typeof val === \"bigint\") {\n if (val <= BigInt(Number.MAX_SAFE_INTEGER) && val >= BigInt(-Number.MAX_SAFE_INTEGER)) {\n return Number(val).valueOf() || 0;\n }\n\n return val;\n }\n\n return !val \? 0 : +val || 0;\n}`;\nffiWrappers[FFIType.i64_fast] = `{\n if (typeof val === \"bigint\") {\n if (val <= BigInt(Number.MAX_SAFE_INTEGER) && val >= BigInt(-Number.MAX_SAFE_INTEGER)) {\n return Number(val).valueOf() || 0;\n }\n\n return val;\n }\n\n return !val \? 0 : +val || 0;\n}`;\nffiWrappers[FFIType.u64_fast] = `{\n if (typeof val === \"bigint\") {\n if (val <= BigInt(Number.MAX_SAFE_INTEGER) && val >= 0) {\n return Number(val).valueOf() || 0;\n }\n\n return val;\n }\n\n return !val \? 0 : +val || 0;\n}`;\nffiWrappers[FFIType.int64_t] = `{\n if (typeof val === \"bigint\") {\n return val;\n }\n\n if (typeof val === \"number\") {\n return BigInt(val || 0);\n }\n\n return BigInt(+val || 0);\n}`;\nffiWrappers[FFIType.uint64_t] = `{\n if (typeof val === \"bigint\") {\n return val;\n }\n\n if (typeof val === \"number\") {\n return val <= 0 \? BigInt(0) : BigInt(val || 0);\n }\n\n return BigInt(+val || 0);\n}`;\nffiWrappers[FFIType.u64_fast] = `{\n if (typeof val === \"bigint\") {\n if (val <= BigInt(Number.MAX_SAFE_INTEGER) && val >= BigInt(0)) return Number(val);\n return val;\n }\n\n return typeof val === \"number\" \? (val <= 0 \? 0 : +val || 0) : +val || 0;\n}`;\nffiWrappers[FFIType.uint16_t] = `{\n const ret = (typeof val === \"bigint\" \? Number(val) : val) | 0;\n return ret <= 0 \? 0 : ret > 0xffff \? 0xffff : ret;\n}`;\nffiWrappers[FFIType.double] = `{\n if (typeof val === \"bigint\") {\n if (val.valueOf() < BigInt(Number.MAX_VALUE)) {\n return Math.abs(Number(val).valueOf()) + 0.00000000000001 - 0.00000000000001;\n }\n }\n\n if (!val) {\n return 0 + 0.00000000000001 - 0.00000000000001;\n }\n\n return val + 0.00000000000001 - 0.00000000000001;\n}`;\nffiWrappers[FFIType.float] = ffiWrappers[10] = `{\n return Math.fround(val);\n}`;\nffiWrappers[FFIType.bool] = `{\n return !!val;\n}`;\nObject.defineProperty(globalThis, \"__GlobalBunFFIPtrFunctionForWrapper\", {\n value: ptr,\n enumerable: !1,\n configurable: !0\n});\nffiWrappers[FFIType.cstring] = ffiWrappers[FFIType.pointer] = `{\n if (typeof val === \"number\") return val;\n if (!val) {\n return null;\n }\n\n if (ArrayBuffer.isView(val) || val instanceof ArrayBuffer) {\n return __GlobalBunFFIPtrFunctionForWrapper(val);\n }\n\n if (typeof val === \"string\") {\n throw new TypeError(\"To convert a string to a pointer, encode it as a buffer\");\n }\n\n throw new TypeError(\\`Unable to convert \\${ val } to a pointer\\`);\n}`;\nffiWrappers[FFIType.function] = `{\n if (typeof val === \"number\") {\n return val;\n }\n\n if (typeof val === \"bigint\") {\n return Number(val);\n }\n\n var ptr = val && val.ptr;\n\n if (!ptr) {\n throw new TypeError(\"Expected function to be a JSCallback or a number\");\n }\n\n return ptr;\n}`;\nvar native = {\n dlopen: nativeDLOpen,\n callback: () => {\n throw new Error(\"Deprecated. Use new JSCallback(options, fn) instead\");\n }\n}, cFunctionI = 0, cFunctionRegistry, read = ffi.read;\n$ = {\n CFunction,\n CString,\n FFIType,\n JSCallback,\n dlopen,\n linkSymbols,\n native,\n ptr,\n read,\n suffix: \"so\",\n toArrayBuffer,\n toBuffer,\n viewSource\n};\nreturn $})\n"_s;
+static constexpr ASCIILiteral BunFFICode = "(function (){\"use strict\";// src/js/out/tmp/bun/ffi.ts\nvar FFIBuilder = function(params, returnType, functionToCall, name) {\n const hasReturnType = typeof FFIType[returnType] === \"number\" && FFIType[returnType] !== FFIType.void;\n var paramNames = new @Array(params.length), args = new @Array(params.length);\n for (let i = 0;i < params.length; i++) {\n paramNames[i] = `p${i}`;\n const wrapper = ffiWrappers[FFIType[params[i]]];\n if (wrapper)\n args[i] = `(val=>${wrapper})(p${i})`;\n else\n @throwTypeError(`Unsupported type ${params[i]}. Must be one of: ${Object.keys(FFIType).sort().join(\", \")}`);\n }\n var code = `functionToCall(${args.join(\", \")})`;\n if (hasReturnType)\n if (FFIType[returnType] === FFIType.cstring)\n code = `return new __GlobalBunCString(${code})`;\n else\n code = `return ${code}`;\n var func = new Function(\"functionToCall\", ...paramNames, code);\n Object.defineProperty(func, \"name\", {\n value: name\n });\n var wrap;\n switch (paramNames.length) {\n case 0:\n wrap = () => func(functionToCall);\n break;\n case 1:\n wrap = (arg1) => func(functionToCall, arg1);\n break;\n case 2:\n wrap = (arg1, arg2) => func(functionToCall, arg1, arg2);\n break;\n case 3:\n wrap = (arg1, arg2, arg3) => func(functionToCall, arg1, arg2, arg3);\n break;\n case 4:\n wrap = (arg1, arg2, arg3, arg4) => func(functionToCall, arg1, arg2, arg3, arg4);\n break;\n case 5:\n wrap = (arg1, arg2, arg3, arg4, arg5) => func(functionToCall, arg1, arg2, arg3, arg4, arg5);\n break;\n case 6:\n wrap = (arg1, arg2, arg3, arg4, arg5, arg6) => func(functionToCall, arg1, arg2, arg3, arg4, arg5, arg6);\n break;\n case 7:\n wrap = (arg1, arg2, arg3, arg4, arg5, arg6, arg7) => func(functionToCall, arg1, arg2, arg3, arg4, arg5, arg6, arg7);\n break;\n case 8:\n wrap = (arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) => func(functionToCall, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);\n break;\n case 9:\n wrap = (arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) => func(functionToCall, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9);\n break;\n default: {\n wrap = (...args2) => func(functionToCall, ...args2);\n break;\n }\n }\n return wrap.native = functionToCall, wrap.ptr = functionToCall.ptr, wrap;\n}, dlopen = function(path, options) {\n const result = nativeDLOpen(path, options);\n if (result instanceof Error)\n throw result;\n for (let key in result.symbols) {\n var symbol = result.symbols[key];\n if (options[key]\?.args\?.length || FFIType[options[key]\?.returns] === FFIType.cstring)\n result.symbols[key] = FFIBuilder(options[key].args \?\? [], options[key].returns \?\? FFIType.void, symbol, path.includes(\"/\") \? `${key} (${path.split(\"/\").pop()})` : `${key} (${path})`);\n else\n result.symbols[key].native = result.symbols[key];\n }\n return result.close = result.close.bind(result), result;\n}, linkSymbols = function(options) {\n const result = nativeLinkSymbols(options);\n for (let key in result.symbols) {\n var symbol = result.symbols[key];\n if (options[key]\?.args\?.length || FFIType[options[key]\?.returns] === FFIType.cstring)\n result.symbols[key] = FFIBuilder(options[key].args \?\? [], options[key].returns \?\? FFIType.void, symbol, key);\n else\n result.symbols[key].native = result.symbols[key];\n }\n return result;\n}, onCloseCFunction = function(close) {\n close();\n}, CFunction = function(options) {\n const identifier = `CFunction${cFunctionI++}`;\n var result = linkSymbols({\n [identifier]: options\n }), hasClosed = !1, close = result.close.bind(result);\n return result.symbols[identifier].close = () => {\n if (hasClosed || !close)\n return;\n hasClosed = !0, close(), close = @undefined;\n }, cFunctionRegistry ||= new FinalizationRegistry(onCloseCFunction), cFunctionRegistry.register(result.symbols[identifier], result.symbols[identifier].close), result.symbols[identifier];\n}, $, FFIType = {\n \"0\": 0,\n \"1\": 1,\n \"2\": 2,\n \"3\": 3,\n \"4\": 4,\n \"5\": 5,\n \"6\": 6,\n \"7\": 7,\n \"8\": 8,\n \"9\": 9,\n \"10\": 10,\n \"11\": 11,\n \"12\": 12,\n \"13\": 13,\n \"14\": 14,\n \"15\": 15,\n \"16\": 16,\n \"17\": 17,\n bool: 11,\n c_int: 5,\n c_uint: 6,\n char: 0,\n \"char*\": 12,\n double: 9,\n f32: 10,\n f64: 9,\n float: 10,\n i16: 3,\n i32: 5,\n i64: 7,\n i8: 1,\n int: 5,\n int16_t: 3,\n int32_t: 5,\n int64_t: 7,\n int8_t: 1,\n isize: 7,\n u16: 4,\n u32: 6,\n u64: 8,\n u8: 2,\n uint16_t: 4,\n uint32_t: 6,\n uint64_t: 8,\n uint8_t: 2,\n usize: 8,\n \"void*\": 12,\n ptr: 12,\n pointer: 12,\n void: 13,\n cstring: 14,\n i64_fast: 15,\n u64_fast: 16,\n function: 17,\n callback: 17,\n fn: 17\n};\nvar ffi = globalThis.Bun.FFI, ptr = (arg1, arg2) => typeof arg2 === \"undefined\" \? ffi.ptr(arg1) : ffi.ptr(arg1, arg2), toBuffer = ffi.toBuffer, toArrayBuffer = ffi.toArrayBuffer, viewSource = ffi.viewSource, BunCString = ffi.CString, nativeLinkSymbols = ffi.linkSymbols, nativeDLOpen = ffi.dlopen, nativeCallback = ffi.callback, closeCallback = ffi.closeCallback;\ndelete ffi.callback;\ndelete ffi.closeCallback;\n\nclass JSCallback {\n constructor(cb, options) {\n const { ctx, ptr: ptr2 } = nativeCallback(options, cb);\n this.#ctx = ctx, this.ptr = ptr2, this.#threadsafe = !!options\?.threadsafe;\n }\n ptr;\n #ctx;\n #threadsafe;\n get threadsafe() {\n return this.#threadsafe;\n }\n [Symbol.toPrimitive]() {\n const { ptr: ptr2 } = this;\n return typeof ptr2 === \"number\" \? ptr2 : 0;\n }\n close() {\n const ctx = this.#ctx;\n if (this.ptr = null, this.#ctx = null, ctx)\n closeCallback(ctx);\n }\n}\n\nclass CString extends @String {\n constructor(ptr2, byteOffset, byteLength) {\n super(ptr2 \? typeof byteLength === \"number\" && Number.isSafeInteger(byteLength) \? BunCString(ptr2, byteOffset || 0, byteLength) : BunCString(ptr2) : \"\");\n if (this.ptr = typeof ptr2 === \"number\" \? ptr2 : 0, typeof byteOffset !== \"undefined\")\n this.byteOffset = byteOffset;\n if (typeof byteLength !== \"undefined\")\n this.byteLength = byteLength;\n }\n ptr;\n byteOffset;\n byteLength;\n #cachedArrayBuffer;\n get arrayBuffer() {\n if (this.#cachedArrayBuffer)\n return this.#cachedArrayBuffer;\n if (!this.ptr)\n return this.#cachedArrayBuffer = new @ArrayBuffer(0);\n return this.#cachedArrayBuffer = toArrayBuffer(this.ptr, this.byteOffset, this.byteLength);\n }\n}\nObject.defineProperty(globalThis, \"__GlobalBunCString\", {\n value: CString,\n enumerable: !1,\n configurable: !1\n});\nvar ffiWrappers = new @Array(18), char = \"val|0\";\nffiWrappers.fill(char);\nffiWrappers[FFIType.uint8_t] = \"val<0\?0:val>=255\?255:val|0\";\nffiWrappers[FFIType.int16_t] = \"val<=-32768\?-32768:val>=32768\?32768:val|0\";\nffiWrappers[FFIType.uint16_t] = \"val<=0\?0:val>=65536\?65536:val|0\";\nffiWrappers[FFIType.int32_t] = \"val|0\";\nffiWrappers[FFIType.uint32_t] = \"val<=0\?0:val>=0xffffffff\?0xffffffff:+val||0\";\nffiWrappers[FFIType.i64_fast] = `{\n if (typeof val === \"bigint\") {\n if (val <= BigInt(Number.MAX_SAFE_INTEGER) && val >= BigInt(-Number.MAX_SAFE_INTEGER)) {\n return Number(val).valueOf() || 0;\n }\n\n return val;\n }\n\n return !val \? 0 : +val || 0;\n}`;\nffiWrappers[FFIType.i64_fast] = `{\n if (typeof val === \"bigint\") {\n if (val <= BigInt(Number.MAX_SAFE_INTEGER) && val >= BigInt(-Number.MAX_SAFE_INTEGER)) {\n return Number(val).valueOf() || 0;\n }\n\n return val;\n }\n\n return !val \? 0 : +val || 0;\n}`;\nffiWrappers[FFIType.u64_fast] = `{\n if (typeof val === \"bigint\") {\n if (val <= BigInt(Number.MAX_SAFE_INTEGER) && val >= 0) {\n return Number(val).valueOf() || 0;\n }\n\n return val;\n }\n\n return !val \? 0 : +val || 0;\n}`;\nffiWrappers[FFIType.int64_t] = `{\n if (typeof val === \"bigint\") {\n return val;\n }\n\n if (typeof val === \"number\") {\n return BigInt(val || 0);\n }\n\n return BigInt(+val || 0);\n}`;\nffiWrappers[FFIType.uint64_t] = `{\n if (typeof val === \"bigint\") {\n return val;\n }\n\n if (typeof val === \"number\") {\n return val <= 0 \? BigInt(0) : BigInt(val || 0);\n }\n\n return BigInt(+val || 0);\n}`;\nffiWrappers[FFIType.u64_fast] = `{\n if (typeof val === \"bigint\") {\n if (val <= BigInt(Number.MAX_SAFE_INTEGER) && val >= BigInt(0)) return Number(val);\n return val;\n }\n\n return typeof val === \"number\" \? (val <= 0 \? 0 : +val || 0) : +val || 0;\n}`;\nffiWrappers[FFIType.uint16_t] = `{\n const ret = (typeof val === \"bigint\" \? Number(val) : val) | 0;\n return ret <= 0 \? 0 : ret > 0xffff \? 0xffff : ret;\n}`;\nffiWrappers[FFIType.double] = `{\n if (typeof val === \"bigint\") {\n if (val.valueOf() < BigInt(Number.MAX_VALUE)) {\n return Math.abs(Number(val).valueOf()) + 0.00000000000001 - 0.00000000000001;\n }\n }\n\n if (!val) {\n return 0 + 0.00000000000001 - 0.00000000000001;\n }\n\n return val + 0.00000000000001 - 0.00000000000001;\n}`;\nffiWrappers[FFIType.float] = ffiWrappers[10] = `{\n return Math.fround(val);\n}`;\nffiWrappers[FFIType.bool] = `{\n return !!val;\n}`;\nObject.defineProperty(globalThis, \"__GlobalBunFFIPtrFunctionForWrapper\", {\n value: ptr,\n enumerable: !1,\n configurable: !0\n});\nffiWrappers[FFIType.cstring] = ffiWrappers[FFIType.pointer] = `{\n if (typeof val === \"number\") return val;\n if (!val) {\n return null;\n }\n\n if (ArrayBuffer.isView(val) || val instanceof ArrayBuffer) {\n return __GlobalBunFFIPtrFunctionForWrapper(val);\n }\n\n if (typeof val === \"string\") {\n throw new TypeError(\"To convert a string to a pointer, encode it as a buffer\");\n }\n\n throw new TypeError(\\`Unable to convert \\${ val } to a pointer\\`);\n}`;\nffiWrappers[FFIType.function] = `{\n if (typeof val === \"number\") {\n return val;\n }\n\n if (typeof val === \"bigint\") {\n return Number(val);\n }\n\n var ptr = val && val.ptr;\n\n if (!ptr) {\n throw new TypeError(\"Expected function to be a JSCallback or a number\");\n }\n\n return ptr;\n}`;\nvar native = {\n dlopen: nativeDLOpen,\n callback: () => {\n throw new Error(\"Deprecated. Use new JSCallback(options, fn) instead\");\n }\n}, cFunctionI = 0, cFunctionRegistry, read = ffi.read;\n$ = {\n CFunction,\n CString,\n FFIType,\n JSCallback,\n dlopen,\n linkSymbols,\n native,\n ptr,\n read,\n suffix: \"so\",\n toArrayBuffer,\n toBuffer,\n viewSource\n};\nreturn $})\n"_s;
//
//