diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/__global.zig | 6 | ||||
-rw-r--r-- | src/napi/napi.zig | 17 |
2 files changed, 21 insertions, 2 deletions
diff --git a/src/__global.zig b/src/__global.zig index 389b2c203..17cce91cb 100644 --- a/src/__global.zig +++ b/src/__global.zig @@ -33,6 +33,12 @@ pub inline fn getStartTime() i128 { return @import("root").start_time; } +pub const version: @import("./install/semver.zig").Version = .{ + .major = 0, + .minor = 0, + .patch = @truncate(u32, build_id), +}; + pub fn setThreadName(name: StringTypes.stringZ) void { if (Environment.isLinux) { _ = std.os.prctl(.SET_NAME, .{@ptrToInt(name.ptr)}) catch 0; diff --git a/src/napi/napi.zig b/src/napi/napi.zig index 41b1ba225..f080f58b6 100644 --- a/src/napi/napi.zig +++ b/src/napi/napi.zig @@ -1,6 +1,7 @@ const std = @import("std"); const JSC = @import("javascript_core"); const strings = @import("strings"); +const bun = @import("../global.zig"); const JSValue = JSC.JSValue; const ZigString = JSC.ZigString; const TODO_EXCEPTION: JSC.C.ExceptionRef = null; @@ -633,7 +634,12 @@ pub export fn napi_is_dataview(_: napi_env, value: napi_value, result: *bool) na return .ok; } pub extern fn napi_get_dataview_info(env: napi_env, dataview: napi_value, bytelength: [*c]usize, data: [*]*anyopaque, arraybuffer: *napi_value, byte_offset: [*c]usize) napi_status; -pub extern fn napi_get_version(env: napi_env, result: [*c]u32) napi_status; +pub export fn napi_get_version(_: napi_env, result: [*]u32) napi_status { + result[0] = bun.Global.version.major; + result[1] = bun.Global.version.minor; + result[2] = bun.Global.version.patch; + return .ok; +} pub extern fn napi_create_promise(env: napi_env, deferred: [*c]napi_deferred, promise: *napi_value) napi_status; pub extern fn napi_resolve_deferred(env: napi_env, deferred: napi_deferred, resolution: napi_value) napi_status; pub extern fn napi_reject_deferred(env: napi_env, deferred: napi_deferred, rejection: napi_value) napi_status; @@ -724,7 +730,14 @@ pub extern fn napi_fatal_error(location: [*c]const u8, location_len: usize, mess pub extern fn napi_async_init(env: napi_env, async_resource: napi_value, async_resource_name: napi_value, result: [*c]napi_async_context) napi_status; pub extern fn napi_async_destroy(env: napi_env, async_context: napi_async_context) napi_status; pub extern fn napi_make_callback(env: napi_env, async_context: napi_async_context, recv: napi_value, func: napi_value, argc: usize, argv: [*c]const napi_value, result: *napi_value) napi_status; -pub extern fn napi_create_buffer(env: napi_env, length: usize, data: [*]*anyopaque, result: *napi_value) napi_status; +pub export fn napi_create_buffer(env: napi_env, length: usize, data: [*]*anyopaque, result: *napi_value) napi_status { + var buf = JSC.ExternalBuffer.create(null, @ptrCast([*]u8, data.?)[0..length], env, null, JSC.VirtualMachine.vm.allocator) catch { + return .generic_failure; + }; + + result.* = buf.toJS(env); + return .ok; +} pub export fn napi_create_external_buffer(env: napi_env, length: usize, data: ?*anyopaque, finalize_cb: napi_finalize, finalize_hint: ?*anyopaque, result: *napi_value) napi_status { var buf = JSC.ExternalBuffer.create(finalize_hint, @ptrCast([*]u8, data.?)[0..length], env, finalize_cb, JSC.VirtualMachine.vm.allocator) catch { return .generic_failure; |