aboutsummaryrefslogtreecommitdiff
path: root/src/js/out/InternalModuleRegistryConstants.h
diff options
context:
space:
mode:
authorGravatar dave caruso <me@paperdave.net> 2023-08-04 16:08:50 -0700
committerGravatar GitHub <noreply@github.com> 2023-08-04 16:08:50 -0700
commitd196aa2de6074affd2ec8b4524302f214161fb37 (patch)
tree8285ce8ac9acfd8c850d4af2f079ddb113410790 /src/js/out/InternalModuleRegistryConstants.h
parentbdbc21ff7bc0bb1d2215a0a5bd892eaade41e76f (diff)
downloadbun-d196aa2de6074affd2ec8b4524302f214161fb37.tar.gz
bun-d196aa2de6074affd2ec8b4524302f214161fb37.tar.zst
bun-d196aa2de6074affd2ec8b4524302f214161fb37.zip
FFI typo (#3973)
* FFI typo * add tests * it was a newline
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 28ce510ac..02c00f62c 100644
--- a/src/js/out/InternalModuleRegistryConstants.h
+++ b/src/js/out/InternalModuleRegistryConstants.h
@@ -5,7 +5,7 @@
#if __APPLE__
//
-static constexpr ASCIILiteral BunFFICode = "(function (){\"use strict\";const FFIType={\"0\":0,\"1\":1,\"2\":2,\"3\":3,\"4\":4,\"5\":5,\"6\":6,\"7\":7,\"8\":8,\"9\":9,\"10\":10,\"11\":11,\"12\":12,\"13\":13,\"14\":14,\"15\":15,\"16\":16,\"17\":17,bool:11,c_int:5,c_uint:6,char:0,\"char*\":12,double:9,f32:10,f64:9,float:10,i16:3,i32:5,i64:7,i8:1,int:5,int16_t:3,int32_t:5,int64_t:7,int8_t:1,isize:7,u16:4,u32:6,u64:8,u8:2,uint16_t:4,uint32_t:6,uint64_t:8,uint8_t:2,usize:8,\"void*\":12,ptr:12,pointer:12,void:13,cstring:14,i64_fast:15,u64_fast:16,function:17,callback:17,fn:17};var ffi=globalThis.Bun.FFI;const 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;delete ffi.callback,delete ffi.closeCallback;class JSCallback{constructor(cb,options){const{ctx,ptr:ptr2}=nativeCallback(options,cb);this.#ctx=ctx,this.ptr=ptr2,this.#threadsafe=!!options\?.threadsafe}ptr;#ctx;#threadsafe;get threadsafe(){return this.#threadsafe}[Symbol.toPrimitive](){const{ptr:ptr2}=this;return typeof ptr2===\"number\"\?ptr2:0}close(){const ctx=this.#ctx;if(this.ptr=null,this.#ctx=null,ctx)closeCallback(ctx)}}class CString extends String{constructor(ptr2,byteOffset,byteLength){super(ptr2\?typeof byteLength===\"number\"&&Number.isSafeInteger(byteLength)\?new BunCString(ptr2,byteOffset||0,byteLength):new BunCString(ptr2):\"\");if(this.ptr=typeof ptr2===\"number\"\?ptr2:0,typeof byteOffset!==\"undefined\")this.byteOffset=byteOffset;if(typeof byteLength!==\"undefined\")this.byteLength=byteLength}ptr;byteOffset;byteLength;#cachedArrayBuffer;get arrayBuffer(){if(this.#cachedArrayBuffer)return this.#cachedArrayBuffer;if(!this.ptr)return this.#cachedArrayBuffer=new ArrayBuffer(0);return this.#cachedArrayBuffer=toArrayBuffer(this.ptr,this.byteOffset,this.byteLength)}}Object.defineProperty(globalThis,\"__GlobalBunCString\",{value:CString,enumerable:!1,configurable:!1});const ffiWrappers=new Array(18);var char=\"val|0\";ffiWrappers.fill(char),ffiWrappers[FFIType.uint8_t]=\"val<0\?0:val>=255\?255:val|0\",ffiWrappers[FFIType.int16_t]=\"val<=-32768\?-32768:val>=32768\?32768:val|0\",ffiWrappers[FFIType.uint16_t]=\"val<=0\?0:val>=65536\?65536:val|0\",ffiWrappers[FFIType.int32_t]=\"val|0\",ffiWrappers[FFIType.uint32_t]=\"val<=0\?0:val>=0xffffffff\?0xffffffff:+val||0\",ffiWrappers[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}`,ffiWrappers[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}`,ffiWrappers[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}`,ffiWrappers[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}`,ffiWrappers[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}`,ffiWrappers[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}`,ffiWrappers[FFIType.uint16_t]=`{\n const ret = (typeof val === \"bigint\" \? Number(val) : val) | 0;\n return ret <= 0 \? 0 : ret > 0xffff \? 0xffff : ret;\n}`,ffiWrappers[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}`,ffiWrappers[FFIType.float]=ffiWrappers[10]=`{\n return Math.fround(val);\n}`,ffiWrappers[FFIType.bool]=`{\n return !!val;\n}`,Object.defineProperty(globalThis,\"__GlobalBunFFIPtrFunctionForWrapper\",{value:ptr,enumerable:!1,configurable:!0}),ffiWrappers[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}`,ffiWrappers[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}`;function FFIBuilder(params,returnType,functionToCall,name){const hasReturnType=typeof FFIType[returnType]===\"number\"&&FFIType[returnType]!==FFIType.void;var paramNames=new Array(params.length),args=new Array(params.length);for(let i=0;i<params.length;i++){paramNames[i]=`p${i}`;const wrapper=ffiWrappers[FFIType[params[i]]];if(wrapper)args[i]=`(val=>${wrapper})(p${i})`;else @throwTypeError(`Unsupported type ${params[i]}. Must be one of: ${Object.keys(FFIType).sort().join(\", \")}`)}var code=`functionToCall(${args.join(\", \")})`;if(hasReturnType)if(FFIType[returnType]===FFIType.cstring)code=`return new __GlobalBunCString(${code})`;else code=`return ${code}`;var func=new Function(\"functionToCall\",...paramNames,code);Object.defineProperty(func,\"name\",{value:name});var wrap;switch(paramNames.length){case 0:wrap=()=>func(functionToCall);break;case 1:wrap=(arg1)=>func(functionToCall,arg1);break;case 2:wrap=(arg1,arg2)=>func(functionToCall,arg1,arg2);break;case 3:wrap=(arg1,arg2,arg3)=>func(functionToCall,arg1,arg2,arg3);break;case 4:wrap=(arg1,arg2,arg3,arg4)=>func(functionToCall,arg1,arg2,arg3,arg4);break;case 5:wrap=(arg1,arg2,arg3,arg4,arg5)=>func(functionToCall,arg1,arg2,arg3,arg4,arg5);break;case 6:wrap=(arg1,arg2,arg3,arg4,arg5,arg6)=>func(functionToCall,arg1,arg2,arg3,arg4,arg5,arg6);break;case 7:wrap=(arg1,arg2,arg3,arg4,arg5,arg6,arg7)=>func(functionToCall,arg1,arg2,arg3,arg4,arg5,arg6,arg7);break;case 8:wrap=(arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8)=>func(functionToCall,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8);break;case 9:wrap=(arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9)=>func(functionToCall,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9);break;default:{wrap=(...args2)=>func(functionToCall,...args2);break}}return wrap.native=functionToCall,wrap.ptr=functionToCall.ptr,wrap}const native={dlopen:nativeDLOpen,callback:()=>{throw new Error(\"Deprecated. Use new JSCallback(options, fn) instead\")}};function dlopen(path,options){const result=nativeDLOpen(path,options);for(let key in result.symbols){var symbol=result.symbols[key];if(options[key]\?.args\?.length||FFIType[options[key]\?.returns]===FFIType.cstring)result.symbols[key]=FFIBuilder(options[key].args\?\?[],options[key].returns\?\?FFIType.void,symbol,path.includes(\"/\")\?`${key} (${path.split(\"/\").pop()})`:`${key} (${path})`);else result.symbols[key].native=result.symbols[key]}return result}function linkSymbols(options){const result=nativeLinkSymbols(options);for(let key in result.symbols){var symbol=result.symbols[key];if(options[key]\?.args\?.length||FFIType[options[key]\?.returns]===FFIType.cstring)result.symbols[key]=FFIBuilder(options[key].args\?\?[],options[key].returns\?\?FFIType.void,symbol,key);else result.symbols[key].native=result.symbols[key]}return result}var cFunctionI=0,cFunctionRegistry;function onCloseCFunction(close){close()}function CFunction(options){const identifier=`CFunction${cFunctionI++}`;var result=linkSymbols({[identifier]:options}),hasClosed=!1,close=result.close;return result.symbols[identifier].close=()=>{if(hasClosed||!close)return;hasClosed=!0,close(),close=void 0},cFunctionRegistry||=new FinalizationRegistry(onCloseCFunction),cFunctionRegistry.register(result.symbols[identifier],result.symbols[identifier].close),result.symbols[identifier]}const read=ffi.read;return{CFunction,CString,FFIType,JSCallback,dlopen,linkSymbols,native,ptr,read,suffix:\".dylib\",toArrayBuffer,toBuffer,viewSource}})\n"_s;
+static constexpr ASCIILiteral BunFFICode = "(function (){\"use strict\";const FFIType={\"0\":0,\"1\":1,\"2\":2,\"3\":3,\"4\":4,\"5\":5,\"6\":6,\"7\":7,\"8\":8,\"9\":9,\"10\":10,\"11\":11,\"12\":12,\"13\":13,\"14\":14,\"15\":15,\"16\":16,\"17\":17,bool:11,c_int:5,c_uint:6,char:0,\"char*\":12,double:9,f32:10,f64:9,float:10,i16:3,i32:5,i64:7,i8:1,int:5,int16_t:3,int32_t:5,int64_t:7,int8_t:1,isize:7,u16:4,u32:6,u64:8,u8:2,uint16_t:4,uint32_t:6,uint64_t:8,uint8_t:2,usize:8,\"void*\":12,ptr:12,pointer:12,void:13,cstring:14,i64_fast:15,u64_fast:16,function:17,callback:17,fn:17};var ffi=globalThis.Bun.FFI;const 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;delete ffi.callback,delete ffi.closeCallback;class JSCallback{constructor(cb,options){const{ctx,ptr:ptr2}=nativeCallback(options,cb);this.#ctx=ctx,this.ptr=ptr2,this.#threadsafe=!!options\?.threadsafe}ptr;#ctx;#threadsafe;get threadsafe(){return this.#threadsafe}[Symbol.toPrimitive](){const{ptr:ptr2}=this;return typeof ptr2===\"number\"\?ptr2:0}close(){const ctx=this.#ctx;if(this.ptr=null,this.#ctx=null,ctx)closeCallback(ctx)}}class CString extends String{constructor(ptr2,byteOffset,byteLength){super(ptr2\?typeof byteLength===\"number\"&&Number.isSafeInteger(byteLength)\?new BunCString(ptr2,byteOffset||0,byteLength):new BunCString(ptr2):\"\");if(this.ptr=typeof ptr2===\"number\"\?ptr2:0,typeof byteOffset!==\"undefined\")this.byteOffset=byteOffset;if(typeof byteLength!==\"undefined\")this.byteLength=byteLength}ptr;byteOffset;byteLength;#cachedArrayBuffer;get arrayBuffer(){if(this.#cachedArrayBuffer)return this.#cachedArrayBuffer;if(!this.ptr)return this.#cachedArrayBuffer=new ArrayBuffer(0);return this.#cachedArrayBuffer=toArrayBuffer(this.ptr,this.byteOffset,this.byteLength)}}Object.defineProperty(globalThis,\"__GlobalBunCString\",{value:CString,enumerable:!1,configurable:!1});const ffiWrappers=new Array(18);var char=\"val|0\";ffiWrappers.fill(char),ffiWrappers[FFIType.uint8_t]=\"val<0\?0:val>=255\?255:val|0\",ffiWrappers[FFIType.int16_t]=\"val<=-32768\?-32768:val>=32768\?32768:val|0\",ffiWrappers[FFIType.uint16_t]=\"val<=0\?0:val>=65536\?65536:val|0\",ffiWrappers[FFIType.int32_t]=\"val|0\",ffiWrappers[FFIType.uint32_t]=\"val<=0\?0:val>=0xffffffff\?0xffffffff:+val||0\",ffiWrappers[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}`,ffiWrappers[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}`,ffiWrappers[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}`,ffiWrappers[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}`,ffiWrappers[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}`,ffiWrappers[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}`,ffiWrappers[FFIType.uint16_t]=`{\n const ret = (typeof val === \"bigint\" \? Number(val) : val) | 0;\n return ret <= 0 \? 0 : ret > 0xffff \? 0xffff : ret;\n}`,ffiWrappers[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}`,ffiWrappers[FFIType.float]=ffiWrappers[10]=`{\n return Math.fround(val);\n}`,ffiWrappers[FFIType.bool]=`{\n return !!val;\n}`,Object.defineProperty(globalThis,\"__GlobalBunFFIPtrFunctionForWrapper\",{value:ptr,enumerable:!1,configurable:!0}),ffiWrappers[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}`,ffiWrappers[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}`;function FFIBuilder(params,returnType,functionToCall,name){const hasReturnType=typeof FFIType[returnType]===\"number\"&&FFIType[returnType]!==FFIType.void;var paramNames=new Array(params.length),args=new Array(params.length);for(let i=0;i<params.length;i++){paramNames[i]=`p${i}`;const wrapper=ffiWrappers[FFIType[params[i]]];if(wrapper)args[i]=`(val=>${wrapper})(p${i})`;else @throwTypeError(`Unsupported type ${params[i]}. Must be one of: ${Object.keys(FFIType).sort().join(\", \")}`)}var code=`functionToCall(${args.join(\", \")})`;if(hasReturnType)if(FFIType[returnType]===FFIType.cstring)code=`return new __GlobalBunCString(${code})`;else code=`return ${code}`;var func=new Function(\"functionToCall\",...paramNames,code);Object.defineProperty(func,\"name\",{value:name});var wrap;switch(paramNames.length){case 0:wrap=()=>func(functionToCall);break;case 1:wrap=(arg1)=>func(functionToCall,arg1);break;case 2:wrap=(arg1,arg2)=>func(functionToCall,arg1,arg2);break;case 3:wrap=(arg1,arg2,arg3)=>func(functionToCall,arg1,arg2,arg3);break;case 4:wrap=(arg1,arg2,arg3,arg4)=>func(functionToCall,arg1,arg2,arg3,arg4);break;case 5:wrap=(arg1,arg2,arg3,arg4,arg5)=>func(functionToCall,arg1,arg2,arg3,arg4,arg5);break;case 6:wrap=(arg1,arg2,arg3,arg4,arg5,arg6)=>func(functionToCall,arg1,arg2,arg3,arg4,arg5,arg6);break;case 7:wrap=(arg1,arg2,arg3,arg4,arg5,arg6,arg7)=>func(functionToCall,arg1,arg2,arg3,arg4,arg5,arg6,arg7);break;case 8:wrap=(arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8)=>func(functionToCall,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8);break;case 9:wrap=(arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9)=>func(functionToCall,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9);break;default:{wrap=(...args2)=>func(functionToCall,...args2);break}}return wrap.native=functionToCall,wrap.ptr=functionToCall.ptr,wrap}const native={dlopen:nativeDLOpen,callback:()=>{throw new Error(\"Deprecated. Use new JSCallback(options, fn) instead\")}};function dlopen(path,options){const result=nativeDLOpen(path,options);for(let key in result.symbols){var symbol=result.symbols[key];if(options[key]\?.args\?.length||FFIType[options[key]\?.returns]===FFIType.cstring)result.symbols[key]=FFIBuilder(options[key].args\?\?[],options[key].returns\?\?FFIType.void,symbol,path.includes(\"/\")\?`${key} (${path.split(\"/\").pop()})`:`${key} (${path})`);else result.symbols[key].native=result.symbols[key]}return result}function linkSymbols(options){const result=nativeLinkSymbols(options);for(let key in result.symbols){var symbol=result.symbols[key];if(options[key]\?.args\?.length||FFIType[options[key]\?.returns]===FFIType.cstring)result.symbols[key]=FFIBuilder(options[key].args\?\?[],options[key].returns\?\?FFIType.void,symbol,key);else result.symbols[key].native=result.symbols[key]}return result}var cFunctionI=0,cFunctionRegistry;function onCloseCFunction(close){close()}function CFunction(options){const identifier=`CFunction${cFunctionI++}`;var result=linkSymbols({[identifier]:options}),hasClosed=!1,close=result.close;return result.symbols[identifier].close=()=>{if(hasClosed||!close)return;hasClosed=!0,close(),close=void 0},cFunctionRegistry||=new FinalizationRegistry(onCloseCFunction),cFunctionRegistry.register(result.symbols[identifier],result.symbols[identifier].close),result.symbols[identifier]}const read=ffi.read;return{CFunction,CString,FFIType,JSCallback,dlopen,linkSymbols,native,ptr,read,suffix:\"dylib\",toArrayBuffer,toBuffer,viewSource}})\n"_s;
//
//
@@ -230,7 +230,7 @@ static constexpr ASCIILiteral ThirdpartyWSCode = "(function (){\"use strict\";co
#elif _WIN32
//
-static constexpr ASCIILiteral BunFFICode = "(function (){\"use strict\";const FFIType={\"0\":0,\"1\":1,\"2\":2,\"3\":3,\"4\":4,\"5\":5,\"6\":6,\"7\":7,\"8\":8,\"9\":9,\"10\":10,\"11\":11,\"12\":12,\"13\":13,\"14\":14,\"15\":15,\"16\":16,\"17\":17,bool:11,c_int:5,c_uint:6,char:0,\"char*\":12,double:9,f32:10,f64:9,float:10,i16:3,i32:5,i64:7,i8:1,int:5,int16_t:3,int32_t:5,int64_t:7,int8_t:1,isize:7,u16:4,u32:6,u64:8,u8:2,uint16_t:4,uint32_t:6,uint64_t:8,uint8_t:2,usize:8,\"void*\":12,ptr:12,pointer:12,void:13,cstring:14,i64_fast:15,u64_fast:16,function:17,callback:17,fn:17};var ffi=globalThis.Bun.FFI;const 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;delete ffi.callback,delete ffi.closeCallback;class JSCallback{constructor(cb,options){const{ctx,ptr:ptr2}=nativeCallback(options,cb);this.#ctx=ctx,this.ptr=ptr2,this.#threadsafe=!!options\?.threadsafe}ptr;#ctx;#threadsafe;get threadsafe(){return this.#threadsafe}[Symbol.toPrimitive](){const{ptr:ptr2}=this;return typeof ptr2===\"number\"\?ptr2:0}close(){const ctx=this.#ctx;if(this.ptr=null,this.#ctx=null,ctx)closeCallback(ctx)}}class CString extends String{constructor(ptr2,byteOffset,byteLength){super(ptr2\?typeof byteLength===\"number\"&&Number.isSafeInteger(byteLength)\?new BunCString(ptr2,byteOffset||0,byteLength):new BunCString(ptr2):\"\");if(this.ptr=typeof ptr2===\"number\"\?ptr2:0,typeof byteOffset!==\"undefined\")this.byteOffset=byteOffset;if(typeof byteLength!==\"undefined\")this.byteLength=byteLength}ptr;byteOffset;byteLength;#cachedArrayBuffer;get arrayBuffer(){if(this.#cachedArrayBuffer)return this.#cachedArrayBuffer;if(!this.ptr)return this.#cachedArrayBuffer=new ArrayBuffer(0);return this.#cachedArrayBuffer=toArrayBuffer(this.ptr,this.byteOffset,this.byteLength)}}Object.defineProperty(globalThis,\"__GlobalBunCString\",{value:CString,enumerable:!1,configurable:!1});const ffiWrappers=new Array(18);var char=\"val|0\";ffiWrappers.fill(char),ffiWrappers[FFIType.uint8_t]=\"val<0\?0:val>=255\?255:val|0\",ffiWrappers[FFIType.int16_t]=\"val<=-32768\?-32768:val>=32768\?32768:val|0\",ffiWrappers[FFIType.uint16_t]=\"val<=0\?0:val>=65536\?65536:val|0\",ffiWrappers[FFIType.int32_t]=\"val|0\",ffiWrappers[FFIType.uint32_t]=\"val<=0\?0:val>=0xffffffff\?0xffffffff:+val||0\",ffiWrappers[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}`,ffiWrappers[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}`,ffiWrappers[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}`,ffiWrappers[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}`,ffiWrappers[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}`,ffiWrappers[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}`,ffiWrappers[FFIType.uint16_t]=`{\n const ret = (typeof val === \"bigint\" \? Number(val) : val) | 0;\n return ret <= 0 \? 0 : ret > 0xffff \? 0xffff : ret;\n}`,ffiWrappers[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}`,ffiWrappers[FFIType.float]=ffiWrappers[10]=`{\n return Math.fround(val);\n}`,ffiWrappers[FFIType.bool]=`{\n return !!val;\n}`,Object.defineProperty(globalThis,\"__GlobalBunFFIPtrFunctionForWrapper\",{value:ptr,enumerable:!1,configurable:!0}),ffiWrappers[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}`,ffiWrappers[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}`;function FFIBuilder(params,returnType,functionToCall,name){const hasReturnType=typeof FFIType[returnType]===\"number\"&&FFIType[returnType]!==FFIType.void;var paramNames=new Array(params.length),args=new Array(params.length);for(let i=0;i<params.length;i++){paramNames[i]=`p${i}`;const wrapper=ffiWrappers[FFIType[params[i]]];if(wrapper)args[i]=`(val=>${wrapper})(p${i})`;else @throwTypeError(`Unsupported type ${params[i]}. Must be one of: ${Object.keys(FFIType).sort().join(\", \")}`)}var code=`functionToCall(${args.join(\", \")})`;if(hasReturnType)if(FFIType[returnType]===FFIType.cstring)code=`return new __GlobalBunCString(${code})`;else code=`return ${code}`;var func=new Function(\"functionToCall\",...paramNames,code);Object.defineProperty(func,\"name\",{value:name});var wrap;switch(paramNames.length){case 0:wrap=()=>func(functionToCall);break;case 1:wrap=(arg1)=>func(functionToCall,arg1);break;case 2:wrap=(arg1,arg2)=>func(functionToCall,arg1,arg2);break;case 3:wrap=(arg1,arg2,arg3)=>func(functionToCall,arg1,arg2,arg3);break;case 4:wrap=(arg1,arg2,arg3,arg4)=>func(functionToCall,arg1,arg2,arg3,arg4);break;case 5:wrap=(arg1,arg2,arg3,arg4,arg5)=>func(functionToCall,arg1,arg2,arg3,arg4,arg5);break;case 6:wrap=(arg1,arg2,arg3,arg4,arg5,arg6)=>func(functionToCall,arg1,arg2,arg3,arg4,arg5,arg6);break;case 7:wrap=(arg1,arg2,arg3,arg4,arg5,arg6,arg7)=>func(functionToCall,arg1,arg2,arg3,arg4,arg5,arg6,arg7);break;case 8:wrap=(arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8)=>func(functionToCall,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8);break;case 9:wrap=(arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9)=>func(functionToCall,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9);break;default:{wrap=(...args2)=>func(functionToCall,...args2);break}}return wrap.native=functionToCall,wrap.ptr=functionToCall.ptr,wrap}const native={dlopen:nativeDLOpen,callback:()=>{throw new Error(\"Deprecated. Use new JSCallback(options, fn) instead\")}};function dlopen(path,options){const result=nativeDLOpen(path,options);for(let key in result.symbols){var symbol=result.symbols[key];if(options[key]\?.args\?.length||FFIType[options[key]\?.returns]===FFIType.cstring)result.symbols[key]=FFIBuilder(options[key].args\?\?[],options[key].returns\?\?FFIType.void,symbol,path.includes(\"/\")\?`${key} (${path.split(\"/\").pop()})`:`${key} (${path})`);else result.symbols[key].native=result.symbols[key]}return result}function linkSymbols(options){const result=nativeLinkSymbols(options);for(let key in result.symbols){var symbol=result.symbols[key];if(options[key]\?.args\?.length||FFIType[options[key]\?.returns]===FFIType.cstring)result.symbols[key]=FFIBuilder(options[key].args\?\?[],options[key].returns\?\?FFIType.void,symbol,key);else result.symbols[key].native=result.symbols[key]}return result}var cFunctionI=0,cFunctionRegistry;function onCloseCFunction(close){close()}function CFunction(options){const identifier=`CFunction${cFunctionI++}`;var result=linkSymbols({[identifier]:options}),hasClosed=!1,close=result.close;return result.symbols[identifier].close=()=>{if(hasClosed||!close)return;hasClosed=!0,close(),close=void 0},cFunctionRegistry||=new FinalizationRegistry(onCloseCFunction),cFunctionRegistry.register(result.symbols[identifier],result.symbols[identifier].close),result.symbols[identifier]}const read=ffi.read;return{CFunction,CString,FFIType,JSCallback,dlopen,linkSymbols,native,ptr,read,suffix:\".dll\",toArrayBuffer,toBuffer,viewSource}})\n"_s;
+static constexpr ASCIILiteral BunFFICode = "(function (){\"use strict\";const FFIType={\"0\":0,\"1\":1,\"2\":2,\"3\":3,\"4\":4,\"5\":5,\"6\":6,\"7\":7,\"8\":8,\"9\":9,\"10\":10,\"11\":11,\"12\":12,\"13\":13,\"14\":14,\"15\":15,\"16\":16,\"17\":17,bool:11,c_int:5,c_uint:6,char:0,\"char*\":12,double:9,f32:10,f64:9,float:10,i16:3,i32:5,i64:7,i8:1,int:5,int16_t:3,int32_t:5,int64_t:7,int8_t:1,isize:7,u16:4,u32:6,u64:8,u8:2,uint16_t:4,uint32_t:6,uint64_t:8,uint8_t:2,usize:8,\"void*\":12,ptr:12,pointer:12,void:13,cstring:14,i64_fast:15,u64_fast:16,function:17,callback:17,fn:17};var ffi=globalThis.Bun.FFI;const 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;delete ffi.callback,delete ffi.closeCallback;class JSCallback{constructor(cb,options){const{ctx,ptr:ptr2}=nativeCallback(options,cb);this.#ctx=ctx,this.ptr=ptr2,this.#threadsafe=!!options\?.threadsafe}ptr;#ctx;#threadsafe;get threadsafe(){return this.#threadsafe}[Symbol.toPrimitive](){const{ptr:ptr2}=this;return typeof ptr2===\"number\"\?ptr2:0}close(){const ctx=this.#ctx;if(this.ptr=null,this.#ctx=null,ctx)closeCallback(ctx)}}class CString extends String{constructor(ptr2,byteOffset,byteLength){super(ptr2\?typeof byteLength===\"number\"&&Number.isSafeInteger(byteLength)\?new BunCString(ptr2,byteOffset||0,byteLength):new BunCString(ptr2):\"\");if(this.ptr=typeof ptr2===\"number\"\?ptr2:0,typeof byteOffset!==\"undefined\")this.byteOffset=byteOffset;if(typeof byteLength!==\"undefined\")this.byteLength=byteLength}ptr;byteOffset;byteLength;#cachedArrayBuffer;get arrayBuffer(){if(this.#cachedArrayBuffer)return this.#cachedArrayBuffer;if(!this.ptr)return this.#cachedArrayBuffer=new ArrayBuffer(0);return this.#cachedArrayBuffer=toArrayBuffer(this.ptr,this.byteOffset,this.byteLength)}}Object.defineProperty(globalThis,\"__GlobalBunCString\",{value:CString,enumerable:!1,configurable:!1});const ffiWrappers=new Array(18);var char=\"val|0\";ffiWrappers.fill(char),ffiWrappers[FFIType.uint8_t]=\"val<0\?0:val>=255\?255:val|0\",ffiWrappers[FFIType.int16_t]=\"val<=-32768\?-32768:val>=32768\?32768:val|0\",ffiWrappers[FFIType.uint16_t]=\"val<=0\?0:val>=65536\?65536:val|0\",ffiWrappers[FFIType.int32_t]=\"val|0\",ffiWrappers[FFIType.uint32_t]=\"val<=0\?0:val>=0xffffffff\?0xffffffff:+val||0\",ffiWrappers[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}`,ffiWrappers[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}`,ffiWrappers[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}`,ffiWrappers[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}`,ffiWrappers[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}`,ffiWrappers[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}`,ffiWrappers[FFIType.uint16_t]=`{\n const ret = (typeof val === \"bigint\" \? Number(val) : val) | 0;\n return ret <= 0 \? 0 : ret > 0xffff \? 0xffff : ret;\n}`,ffiWrappers[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}`,ffiWrappers[FFIType.float]=ffiWrappers[10]=`{\n return Math.fround(val);\n}`,ffiWrappers[FFIType.bool]=`{\n return !!val;\n}`,Object.defineProperty(globalThis,\"__GlobalBunFFIPtrFunctionForWrapper\",{value:ptr,enumerable:!1,configurable:!0}),ffiWrappers[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}`,ffiWrappers[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}`;function FFIBuilder(params,returnType,functionToCall,name){const hasReturnType=typeof FFIType[returnType]===\"number\"&&FFIType[returnType]!==FFIType.void;var paramNames=new Array(params.length),args=new Array(params.length);for(let i=0;i<params.length;i++){paramNames[i]=`p${i}`;const wrapper=ffiWrappers[FFIType[params[i]]];if(wrapper)args[i]=`(val=>${wrapper})(p${i})`;else @throwTypeError(`Unsupported type ${params[i]}. Must be one of: ${Object.keys(FFIType).sort().join(\", \")}`)}var code=`functionToCall(${args.join(\", \")})`;if(hasReturnType)if(FFIType[returnType]===FFIType.cstring)code=`return new __GlobalBunCString(${code})`;else code=`return ${code}`;var func=new Function(\"functionToCall\",...paramNames,code);Object.defineProperty(func,\"name\",{value:name});var wrap;switch(paramNames.length){case 0:wrap=()=>func(functionToCall);break;case 1:wrap=(arg1)=>func(functionToCall,arg1);break;case 2:wrap=(arg1,arg2)=>func(functionToCall,arg1,arg2);break;case 3:wrap=(arg1,arg2,arg3)=>func(functionToCall,arg1,arg2,arg3);break;case 4:wrap=(arg1,arg2,arg3,arg4)=>func(functionToCall,arg1,arg2,arg3,arg4);break;case 5:wrap=(arg1,arg2,arg3,arg4,arg5)=>func(functionToCall,arg1,arg2,arg3,arg4,arg5);break;case 6:wrap=(arg1,arg2,arg3,arg4,arg5,arg6)=>func(functionToCall,arg1,arg2,arg3,arg4,arg5,arg6);break;case 7:wrap=(arg1,arg2,arg3,arg4,arg5,arg6,arg7)=>func(functionToCall,arg1,arg2,arg3,arg4,arg5,arg6,arg7);break;case 8:wrap=(arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8)=>func(functionToCall,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8);break;case 9:wrap=(arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9)=>func(functionToCall,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9);break;default:{wrap=(...args2)=>func(functionToCall,...args2);break}}return wrap.native=functionToCall,wrap.ptr=functionToCall.ptr,wrap}const native={dlopen:nativeDLOpen,callback:()=>{throw new Error(\"Deprecated. Use new JSCallback(options, fn) instead\")}};function dlopen(path,options){const result=nativeDLOpen(path,options);for(let key in result.symbols){var symbol=result.symbols[key];if(options[key]\?.args\?.length||FFIType[options[key]\?.returns]===FFIType.cstring)result.symbols[key]=FFIBuilder(options[key].args\?\?[],options[key].returns\?\?FFIType.void,symbol,path.includes(\"/\")\?`${key} (${path.split(\"/\").pop()})`:`${key} (${path})`);else result.symbols[key].native=result.symbols[key]}return result}function linkSymbols(options){const result=nativeLinkSymbols(options);for(let key in result.symbols){var symbol=result.symbols[key];if(options[key]\?.args\?.length||FFIType[options[key]\?.returns]===FFIType.cstring)result.symbols[key]=FFIBuilder(options[key].args\?\?[],options[key].returns\?\?FFIType.void,symbol,key);else result.symbols[key].native=result.symbols[key]}return result}var cFunctionI=0,cFunctionRegistry;function onCloseCFunction(close){close()}function CFunction(options){const identifier=`CFunction${cFunctionI++}`;var result=linkSymbols({[identifier]:options}),hasClosed=!1,close=result.close;return result.symbols[identifier].close=()=>{if(hasClosed||!close)return;hasClosed=!0,close(),close=void 0},cFunctionRegistry||=new FinalizationRegistry(onCloseCFunction),cFunctionRegistry.register(result.symbols[identifier],result.symbols[identifier].close),result.symbols[identifier]}const read=ffi.read;return{CFunction,CString,FFIType,JSCallback,dlopen,linkSymbols,native,ptr,read,suffix:\"dll\",toArrayBuffer,toBuffer,viewSource}})\n"_s;
//
//
@@ -456,7 +456,7 @@ static constexpr ASCIILiteral ThirdpartyWSCode = "(function (){\"use strict\";co
#else
// Not 100% accurate, but basically inlining linux on non-windows non-mac platforms.
//
-static constexpr ASCIILiteral BunFFICode = "(function (){\"use strict\";const FFIType={\"0\":0,\"1\":1,\"2\":2,\"3\":3,\"4\":4,\"5\":5,\"6\":6,\"7\":7,\"8\":8,\"9\":9,\"10\":10,\"11\":11,\"12\":12,\"13\":13,\"14\":14,\"15\":15,\"16\":16,\"17\":17,bool:11,c_int:5,c_uint:6,char:0,\"char*\":12,double:9,f32:10,f64:9,float:10,i16:3,i32:5,i64:7,i8:1,int:5,int16_t:3,int32_t:5,int64_t:7,int8_t:1,isize:7,u16:4,u32:6,u64:8,u8:2,uint16_t:4,uint32_t:6,uint64_t:8,uint8_t:2,usize:8,\"void*\":12,ptr:12,pointer:12,void:13,cstring:14,i64_fast:15,u64_fast:16,function:17,callback:17,fn:17};var ffi=globalThis.Bun.FFI;const 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;delete ffi.callback,delete ffi.closeCallback;class JSCallback{constructor(cb,options){const{ctx,ptr:ptr2}=nativeCallback(options,cb);this.#ctx=ctx,this.ptr=ptr2,this.#threadsafe=!!options\?.threadsafe}ptr;#ctx;#threadsafe;get threadsafe(){return this.#threadsafe}[Symbol.toPrimitive](){const{ptr:ptr2}=this;return typeof ptr2===\"number\"\?ptr2:0}close(){const ctx=this.#ctx;if(this.ptr=null,this.#ctx=null,ctx)closeCallback(ctx)}}class CString extends String{constructor(ptr2,byteOffset,byteLength){super(ptr2\?typeof byteLength===\"number\"&&Number.isSafeInteger(byteLength)\?new BunCString(ptr2,byteOffset||0,byteLength):new BunCString(ptr2):\"\");if(this.ptr=typeof ptr2===\"number\"\?ptr2:0,typeof byteOffset!==\"undefined\")this.byteOffset=byteOffset;if(typeof byteLength!==\"undefined\")this.byteLength=byteLength}ptr;byteOffset;byteLength;#cachedArrayBuffer;get arrayBuffer(){if(this.#cachedArrayBuffer)return this.#cachedArrayBuffer;if(!this.ptr)return this.#cachedArrayBuffer=new ArrayBuffer(0);return this.#cachedArrayBuffer=toArrayBuffer(this.ptr,this.byteOffset,this.byteLength)}}Object.defineProperty(globalThis,\"__GlobalBunCString\",{value:CString,enumerable:!1,configurable:!1});const ffiWrappers=new Array(18);var char=\"val|0\";ffiWrappers.fill(char),ffiWrappers[FFIType.uint8_t]=\"val<0\?0:val>=255\?255:val|0\",ffiWrappers[FFIType.int16_t]=\"val<=-32768\?-32768:val>=32768\?32768:val|0\",ffiWrappers[FFIType.uint16_t]=\"val<=0\?0:val>=65536\?65536:val|0\",ffiWrappers[FFIType.int32_t]=\"val|0\",ffiWrappers[FFIType.uint32_t]=\"val<=0\?0:val>=0xffffffff\?0xffffffff:+val||0\",ffiWrappers[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}`,ffiWrappers[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}`,ffiWrappers[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}`,ffiWrappers[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}`,ffiWrappers[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}`,ffiWrappers[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}`,ffiWrappers[FFIType.uint16_t]=`{\n const ret = (typeof val === \"bigint\" \? Number(val) : val) | 0;\n return ret <= 0 \? 0 : ret > 0xffff \? 0xffff : ret;\n}`,ffiWrappers[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}`,ffiWrappers[FFIType.float]=ffiWrappers[10]=`{\n return Math.fround(val);\n}`,ffiWrappers[FFIType.bool]=`{\n return !!val;\n}`,Object.defineProperty(globalThis,\"__GlobalBunFFIPtrFunctionForWrapper\",{value:ptr,enumerable:!1,configurable:!0}),ffiWrappers[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}`,ffiWrappers[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}`;function FFIBuilder(params,returnType,functionToCall,name){const hasReturnType=typeof FFIType[returnType]===\"number\"&&FFIType[returnType]!==FFIType.void;var paramNames=new Array(params.length),args=new Array(params.length);for(let i=0;i<params.length;i++){paramNames[i]=`p${i}`;const wrapper=ffiWrappers[FFIType[params[i]]];if(wrapper)args[i]=`(val=>${wrapper})(p${i})`;else @throwTypeError(`Unsupported type ${params[i]}. Must be one of: ${Object.keys(FFIType).sort().join(\", \")}`)}var code=`functionToCall(${args.join(\", \")})`;if(hasReturnType)if(FFIType[returnType]===FFIType.cstring)code=`return new __GlobalBunCString(${code})`;else code=`return ${code}`;var func=new Function(\"functionToCall\",...paramNames,code);Object.defineProperty(func,\"name\",{value:name});var wrap;switch(paramNames.length){case 0:wrap=()=>func(functionToCall);break;case 1:wrap=(arg1)=>func(functionToCall,arg1);break;case 2:wrap=(arg1,arg2)=>func(functionToCall,arg1,arg2);break;case 3:wrap=(arg1,arg2,arg3)=>func(functionToCall,arg1,arg2,arg3);break;case 4:wrap=(arg1,arg2,arg3,arg4)=>func(functionToCall,arg1,arg2,arg3,arg4);break;case 5:wrap=(arg1,arg2,arg3,arg4,arg5)=>func(functionToCall,arg1,arg2,arg3,arg4,arg5);break;case 6:wrap=(arg1,arg2,arg3,arg4,arg5,arg6)=>func(functionToCall,arg1,arg2,arg3,arg4,arg5,arg6);break;case 7:wrap=(arg1,arg2,arg3,arg4,arg5,arg6,arg7)=>func(functionToCall,arg1,arg2,arg3,arg4,arg5,arg6,arg7);break;case 8:wrap=(arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8)=>func(functionToCall,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8);break;case 9:wrap=(arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9)=>func(functionToCall,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9);break;default:{wrap=(...args2)=>func(functionToCall,...args2);break}}return wrap.native=functionToCall,wrap.ptr=functionToCall.ptr,wrap}const native={dlopen:nativeDLOpen,callback:()=>{throw new Error(\"Deprecated. Use new JSCallback(options, fn) instead\")}};function dlopen(path,options){const result=nativeDLOpen(path,options);for(let key in result.symbols){var symbol=result.symbols[key];if(options[key]\?.args\?.length||FFIType[options[key]\?.returns]===FFIType.cstring)result.symbols[key]=FFIBuilder(options[key].args\?\?[],options[key].returns\?\?FFIType.void,symbol,path.includes(\"/\")\?`${key} (${path.split(\"/\").pop()})`:`${key} (${path})`);else result.symbols[key].native=result.symbols[key]}return result}function linkSymbols(options){const result=nativeLinkSymbols(options);for(let key in result.symbols){var symbol=result.symbols[key];if(options[key]\?.args\?.length||FFIType[options[key]\?.returns]===FFIType.cstring)result.symbols[key]=FFIBuilder(options[key].args\?\?[],options[key].returns\?\?FFIType.void,symbol,key);else result.symbols[key].native=result.symbols[key]}return result}var cFunctionI=0,cFunctionRegistry;function onCloseCFunction(close){close()}function CFunction(options){const identifier=`CFunction${cFunctionI++}`;var result=linkSymbols({[identifier]:options}),hasClosed=!1,close=result.close;return result.symbols[identifier].close=()=>{if(hasClosed||!close)return;hasClosed=!0,close(),close=void 0},cFunctionRegistry||=new FinalizationRegistry(onCloseCFunction),cFunctionRegistry.register(result.symbols[identifier],result.symbols[identifier].close),result.symbols[identifier]}const read=ffi.read;return{CFunction,CString,FFIType,JSCallback,dlopen,linkSymbols,native,ptr,read,suffix:\".so\",toArrayBuffer,toBuffer,viewSource}})\n"_s;
+static constexpr ASCIILiteral BunFFICode = "(function (){\"use strict\";const FFIType={\"0\":0,\"1\":1,\"2\":2,\"3\":3,\"4\":4,\"5\":5,\"6\":6,\"7\":7,\"8\":8,\"9\":9,\"10\":10,\"11\":11,\"12\":12,\"13\":13,\"14\":14,\"15\":15,\"16\":16,\"17\":17,bool:11,c_int:5,c_uint:6,char:0,\"char*\":12,double:9,f32:10,f64:9,float:10,i16:3,i32:5,i64:7,i8:1,int:5,int16_t:3,int32_t:5,int64_t:7,int8_t:1,isize:7,u16:4,u32:6,u64:8,u8:2,uint16_t:4,uint32_t:6,uint64_t:8,uint8_t:2,usize:8,\"void*\":12,ptr:12,pointer:12,void:13,cstring:14,i64_fast:15,u64_fast:16,function:17,callback:17,fn:17};var ffi=globalThis.Bun.FFI;const 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;delete ffi.callback,delete ffi.closeCallback;class JSCallback{constructor(cb,options){const{ctx,ptr:ptr2}=nativeCallback(options,cb);this.#ctx=ctx,this.ptr=ptr2,this.#threadsafe=!!options\?.threadsafe}ptr;#ctx;#threadsafe;get threadsafe(){return this.#threadsafe}[Symbol.toPrimitive](){const{ptr:ptr2}=this;return typeof ptr2===\"number\"\?ptr2:0}close(){const ctx=this.#ctx;if(this.ptr=null,this.#ctx=null,ctx)closeCallback(ctx)}}class CString extends String{constructor(ptr2,byteOffset,byteLength){super(ptr2\?typeof byteLength===\"number\"&&Number.isSafeInteger(byteLength)\?new BunCString(ptr2,byteOffset||0,byteLength):new BunCString(ptr2):\"\");if(this.ptr=typeof ptr2===\"number\"\?ptr2:0,typeof byteOffset!==\"undefined\")this.byteOffset=byteOffset;if(typeof byteLength!==\"undefined\")this.byteLength=byteLength}ptr;byteOffset;byteLength;#cachedArrayBuffer;get arrayBuffer(){if(this.#cachedArrayBuffer)return this.#cachedArrayBuffer;if(!this.ptr)return this.#cachedArrayBuffer=new ArrayBuffer(0);return this.#cachedArrayBuffer=toArrayBuffer(this.ptr,this.byteOffset,this.byteLength)}}Object.defineProperty(globalThis,\"__GlobalBunCString\",{value:CString,enumerable:!1,configurable:!1});const ffiWrappers=new Array(18);var char=\"val|0\";ffiWrappers.fill(char),ffiWrappers[FFIType.uint8_t]=\"val<0\?0:val>=255\?255:val|0\",ffiWrappers[FFIType.int16_t]=\"val<=-32768\?-32768:val>=32768\?32768:val|0\",ffiWrappers[FFIType.uint16_t]=\"val<=0\?0:val>=65536\?65536:val|0\",ffiWrappers[FFIType.int32_t]=\"val|0\",ffiWrappers[FFIType.uint32_t]=\"val<=0\?0:val>=0xffffffff\?0xffffffff:+val||0\",ffiWrappers[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}`,ffiWrappers[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}`,ffiWrappers[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}`,ffiWrappers[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}`,ffiWrappers[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}`,ffiWrappers[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}`,ffiWrappers[FFIType.uint16_t]=`{\n const ret = (typeof val === \"bigint\" \? Number(val) : val) | 0;\n return ret <= 0 \? 0 : ret > 0xffff \? 0xffff : ret;\n}`,ffiWrappers[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}`,ffiWrappers[FFIType.float]=ffiWrappers[10]=`{\n return Math.fround(val);\n}`,ffiWrappers[FFIType.bool]=`{\n return !!val;\n}`,Object.defineProperty(globalThis,\"__GlobalBunFFIPtrFunctionForWrapper\",{value:ptr,enumerable:!1,configurable:!0}),ffiWrappers[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}`,ffiWrappers[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}`;function FFIBuilder(params,returnType,functionToCall,name){const hasReturnType=typeof FFIType[returnType]===\"number\"&&FFIType[returnType]!==FFIType.void;var paramNames=new Array(params.length),args=new Array(params.length);for(let i=0;i<params.length;i++){paramNames[i]=`p${i}`;const wrapper=ffiWrappers[FFIType[params[i]]];if(wrapper)args[i]=`(val=>${wrapper})(p${i})`;else @throwTypeError(`Unsupported type ${params[i]}. Must be one of: ${Object.keys(FFIType).sort().join(\", \")}`)}var code=`functionToCall(${args.join(\", \")})`;if(hasReturnType)if(FFIType[returnType]===FFIType.cstring)code=`return new __GlobalBunCString(${code})`;else code=`return ${code}`;var func=new Function(\"functionToCall\",...paramNames,code);Object.defineProperty(func,\"name\",{value:name});var wrap;switch(paramNames.length){case 0:wrap=()=>func(functionToCall);break;case 1:wrap=(arg1)=>func(functionToCall,arg1);break;case 2:wrap=(arg1,arg2)=>func(functionToCall,arg1,arg2);break;case 3:wrap=(arg1,arg2,arg3)=>func(functionToCall,arg1,arg2,arg3);break;case 4:wrap=(arg1,arg2,arg3,arg4)=>func(functionToCall,arg1,arg2,arg3,arg4);break;case 5:wrap=(arg1,arg2,arg3,arg4,arg5)=>func(functionToCall,arg1,arg2,arg3,arg4,arg5);break;case 6:wrap=(arg1,arg2,arg3,arg4,arg5,arg6)=>func(functionToCall,arg1,arg2,arg3,arg4,arg5,arg6);break;case 7:wrap=(arg1,arg2,arg3,arg4,arg5,arg6,arg7)=>func(functionToCall,arg1,arg2,arg3,arg4,arg5,arg6,arg7);break;case 8:wrap=(arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8)=>func(functionToCall,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8);break;case 9:wrap=(arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9)=>func(functionToCall,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9);break;default:{wrap=(...args2)=>func(functionToCall,...args2);break}}return wrap.native=functionToCall,wrap.ptr=functionToCall.ptr,wrap}const native={dlopen:nativeDLOpen,callback:()=>{throw new Error(\"Deprecated. Use new JSCallback(options, fn) instead\")}};function dlopen(path,options){const result=nativeDLOpen(path,options);for(let key in result.symbols){var symbol=result.symbols[key];if(options[key]\?.args\?.length||FFIType[options[key]\?.returns]===FFIType.cstring)result.symbols[key]=FFIBuilder(options[key].args\?\?[],options[key].returns\?\?FFIType.void,symbol,path.includes(\"/\")\?`${key} (${path.split(\"/\").pop()})`:`${key} (${path})`);else result.symbols[key].native=result.symbols[key]}return result}function linkSymbols(options){const result=nativeLinkSymbols(options);for(let key in result.symbols){var symbol=result.symbols[key];if(options[key]\?.args\?.length||FFIType[options[key]\?.returns]===FFIType.cstring)result.symbols[key]=FFIBuilder(options[key].args\?\?[],options[key].returns\?\?FFIType.void,symbol,key);else result.symbols[key].native=result.symbols[key]}return result}var cFunctionI=0,cFunctionRegistry;function onCloseCFunction(close){close()}function CFunction(options){const identifier=`CFunction${cFunctionI++}`;var result=linkSymbols({[identifier]:options}),hasClosed=!1,close=result.close;return result.symbols[identifier].close=()=>{if(hasClosed||!close)return;hasClosed=!0,close(),close=void 0},cFunctionRegistry||=new FinalizationRegistry(onCloseCFunction),cFunctionRegistry.register(result.symbols[identifier],result.symbols[identifier].close),result.symbols[identifier]}const read=ffi.read;return{CFunction,CString,FFIType,JSCallback,dlopen,linkSymbols,native,ptr,read,suffix:\"so\",toArrayBuffer,toBuffer,viewSource}})\n"_s;
//
//