tigerbeetle-node 0.14.157 → 0.14.159
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/benchmark.js +2 -120
- package/dist/benchmark.js.map +1 -1
- package/dist/bin/aarch64-linux-gnu/client.node +0 -0
- package/dist/bin/aarch64-linux-musl/client.node +0 -0
- package/dist/bin/aarch64-macos/client.node +0 -0
- package/dist/bin/x86_64-linux-gnu/client.node +0 -0
- package/dist/bin/x86_64-linux-musl/client.node +0 -0
- package/dist/bin/x86_64-macos/client.node +0 -0
- package/dist/bin/x86_64-windows/client.node +0 -0
- package/dist/index.d.ts +8 -10
- package/dist/index.js +26 -135
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/benchmark.ts +2 -162
- package/src/index.ts +40 -177
- package/src/node.zig +387 -694
- package/src/translate.zig +30 -134
- package/package-lock.json +0 -26
package/src/translate.zig
CHANGED
|
@@ -29,23 +29,39 @@ pub fn throw(env: c.napi_env, comptime message: [:0]const u8) TranslationError {
|
|
|
29
29
|
return TranslationError.ExceptionThrown;
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
-
pub fn
|
|
32
|
+
pub fn capture_null(env: c.napi_env) !c.napi_value {
|
|
33
33
|
var result: c.napi_value = undefined;
|
|
34
|
-
if (c.
|
|
35
|
-
return throw(env, "Failed to capture the value of \"
|
|
34
|
+
if (c.napi_get_null(env, &result) != c.napi_ok) {
|
|
35
|
+
return throw(env, "Failed to capture the value of \"null\".");
|
|
36
36
|
}
|
|
37
37
|
|
|
38
38
|
return result;
|
|
39
39
|
}
|
|
40
40
|
|
|
41
|
-
pub fn
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
41
|
+
pub fn extract_args(env: c.napi_env, info: c.napi_callback_info, comptime args: struct {
|
|
42
|
+
count: usize,
|
|
43
|
+
function: []const u8,
|
|
44
|
+
}) ![args.count]c.napi_value {
|
|
45
|
+
var argc = args.count;
|
|
46
|
+
var argv: [args.count]c.napi_value = undefined;
|
|
47
|
+
if (c.napi_get_cb_info(env, info, &argc, &argv, null, null) != c.napi_ok) {
|
|
48
|
+
return throw(
|
|
49
|
+
env,
|
|
50
|
+
std.fmt.comptimePrint("Failed to get args for {s}()\x00", .{args.function}),
|
|
51
|
+
);
|
|
48
52
|
}
|
|
53
|
+
|
|
54
|
+
if (argc != args.count) {
|
|
55
|
+
return throw(
|
|
56
|
+
env,
|
|
57
|
+
std.fmt.comptimePrint("Function {s}() requires exactly {} arguments.\x00", .{
|
|
58
|
+
args.function,
|
|
59
|
+
args.count,
|
|
60
|
+
}),
|
|
61
|
+
);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
return argv;
|
|
49
65
|
}
|
|
50
66
|
|
|
51
67
|
pub fn create_external(env: c.napi_env, context: *anyopaque) !c.napi_value {
|
|
@@ -70,40 +86,6 @@ pub fn value_external(
|
|
|
70
86
|
return result;
|
|
71
87
|
}
|
|
72
88
|
|
|
73
|
-
pub const UserData = extern struct {
|
|
74
|
-
env: c.napi_env,
|
|
75
|
-
callback_reference: c.napi_ref,
|
|
76
|
-
};
|
|
77
|
-
|
|
78
|
-
/// This will create a reference in V8 with a ref_count of 1.
|
|
79
|
-
/// This reference will be destroyed when we return the server response to JS.
|
|
80
|
-
pub fn user_data_from_value(env: c.napi_env, value: c.napi_value) !UserData {
|
|
81
|
-
var callback_type: c.napi_valuetype = undefined;
|
|
82
|
-
if (c.napi_typeof(env, value, &callback_type) != c.napi_ok) {
|
|
83
|
-
return throw(env, "Failed to check callback type.");
|
|
84
|
-
}
|
|
85
|
-
if (callback_type != c.napi_function) return throw(env, "Callback must be a Function.");
|
|
86
|
-
|
|
87
|
-
var callback_reference: c.napi_ref = undefined;
|
|
88
|
-
if (c.napi_create_reference(env, value, 1, &callback_reference) != c.napi_ok) {
|
|
89
|
-
return throw(env, "Failed to create reference to callback.");
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
return UserData{
|
|
93
|
-
.env = env,
|
|
94
|
-
.callback_reference = callback_reference,
|
|
95
|
-
};
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
pub fn globals(env: c.napi_env) !?*anyopaque {
|
|
99
|
-
var data: ?*anyopaque = null;
|
|
100
|
-
if (c.napi_get_instance_data(env, &data) != c.napi_ok) {
|
|
101
|
-
return throw(env, "Failed to decode globals.");
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
return data;
|
|
105
|
-
}
|
|
106
|
-
|
|
107
89
|
pub fn slice_from_object(
|
|
108
90
|
env: c.napi_env,
|
|
109
91
|
object: c.napi_value,
|
|
@@ -136,49 +118,6 @@ pub fn slice_from_value(
|
|
|
136
118
|
return @as([*]u8, @ptrCast(data.?))[0..data_length];
|
|
137
119
|
}
|
|
138
120
|
|
|
139
|
-
pub fn bytes_from_object(
|
|
140
|
-
env: c.napi_env,
|
|
141
|
-
object: c.napi_value,
|
|
142
|
-
comptime length: u8,
|
|
143
|
-
comptime key: [:0]const u8,
|
|
144
|
-
) ![length]u8 {
|
|
145
|
-
var property: c.napi_value = undefined;
|
|
146
|
-
if (c.napi_get_named_property(env, object, @as([*c]const u8, @ptrCast(key)), &property) != c.napi_ok) {
|
|
147
|
-
return throw(env, key ++ " must be defined");
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
const data = try slice_from_value(env, property, key);
|
|
151
|
-
if (data.len != length) {
|
|
152
|
-
return throw(env, key ++ " has incorrect length.");
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
// Copy this out of V8 as the underlying data lifetime is not guaranteed.
|
|
156
|
-
var result: [length]u8 = undefined;
|
|
157
|
-
std.mem.copy(u8, result[0..], data[0..]);
|
|
158
|
-
|
|
159
|
-
return result;
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
pub fn bytes_from_buffer(
|
|
163
|
-
env: c.napi_env,
|
|
164
|
-
buffer: c.napi_value,
|
|
165
|
-
output: []u8,
|
|
166
|
-
comptime key: [:0]const u8,
|
|
167
|
-
) !usize {
|
|
168
|
-
const data = try slice_from_value(env, buffer, key);
|
|
169
|
-
if (data.len < 1) {
|
|
170
|
-
return throw(env, key ++ " must not be empty.");
|
|
171
|
-
}
|
|
172
|
-
if (data.len > output.len) {
|
|
173
|
-
return throw(env, key ++ " exceeds max message size.");
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
// Copy this out of V8 as the underlying data lifetime is not guaranteed.
|
|
177
|
-
std.mem.copy(u8, output[0..], data[0..]);
|
|
178
|
-
|
|
179
|
-
return data.len;
|
|
180
|
-
}
|
|
181
|
-
|
|
182
121
|
pub fn u128_from_object(env: c.napi_env, object: c.napi_value, comptime key: [:0]const u8) !u128 {
|
|
183
122
|
var property: c.napi_value = undefined;
|
|
184
123
|
if (c.napi_get_named_property(env, object, @as([*c]const u8, @ptrCast(key)), &property) != c.napi_ok) {
|
|
@@ -261,24 +200,6 @@ pub fn u32_from_value(env: c.napi_env, value: c.napi_value, comptime name: [:0]c
|
|
|
261
200
|
return result;
|
|
262
201
|
}
|
|
263
202
|
|
|
264
|
-
pub fn byte_slice_into_object(
|
|
265
|
-
env: c.napi_env,
|
|
266
|
-
object: c.napi_value,
|
|
267
|
-
comptime key: [:0]const u8,
|
|
268
|
-
value: []const u8,
|
|
269
|
-
comptime error_message: [:0]const u8,
|
|
270
|
-
) !void {
|
|
271
|
-
var result: c.napi_value = undefined;
|
|
272
|
-
// create a copy that is managed by V8.
|
|
273
|
-
if (c.napi_create_buffer_copy(env, value.len, value.ptr, null, &result) != c.napi_ok) {
|
|
274
|
-
return throw(env, error_message ++ " Failed to allocate Buffer in V8.");
|
|
275
|
-
}
|
|
276
|
-
|
|
277
|
-
if (c.napi_set_named_property(env, object, @as([*c]const u8, @ptrCast(key)), result) != c.napi_ok) {
|
|
278
|
-
return throw(env, error_message);
|
|
279
|
-
}
|
|
280
|
-
}
|
|
281
|
-
|
|
282
203
|
pub fn u128_into_object(
|
|
283
204
|
env: c.napi_env,
|
|
284
205
|
object: c.napi_value,
|
|
@@ -359,22 +280,6 @@ pub fn create_object(env: c.napi_env, comptime error_message: [:0]const u8) !c.n
|
|
|
359
280
|
return result;
|
|
360
281
|
}
|
|
361
282
|
|
|
362
|
-
fn create_buffer(
|
|
363
|
-
env: c.napi_env,
|
|
364
|
-
value: []const u8,
|
|
365
|
-
comptime error_message: [:0]const u8,
|
|
366
|
-
) !c.napi_value {
|
|
367
|
-
var data: ?*anyopaque = undefined;
|
|
368
|
-
var result: c.napi_value = undefined;
|
|
369
|
-
if (c.napi_create_buffer(env, value.len, &data, &result) != c.napi_ok) {
|
|
370
|
-
return throw(env, error_message);
|
|
371
|
-
}
|
|
372
|
-
|
|
373
|
-
std.mem.copy(u8, @as([*]u8, @ptrCast(data.?))[0..value.len], value[0..value.len]);
|
|
374
|
-
|
|
375
|
-
return result;
|
|
376
|
-
}
|
|
377
|
-
|
|
378
283
|
pub fn create_array(
|
|
379
284
|
env: c.napi_env,
|
|
380
285
|
length: u32,
|
|
@@ -430,25 +335,16 @@ pub fn call_function(
|
|
|
430
335
|
env: c.napi_env,
|
|
431
336
|
this: c.napi_value,
|
|
432
337
|
callback: c.napi_value,
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
switch (result) {
|
|
338
|
+
args: []c.napi_value,
|
|
339
|
+
) !c.napi_value {
|
|
340
|
+
var result: c.napi_value = undefined;
|
|
341
|
+
switch (c.napi_call_function(env, this, callback, args.len, args.ptr, &result)) {
|
|
438
342
|
c.napi_ok => {},
|
|
439
343
|
// the user's callback may throw a JS exception or call other functions that do so. We
|
|
440
344
|
// therefore don't throw another error.
|
|
441
345
|
c.napi_pending_exception => {},
|
|
442
346
|
else => return throw(env, "Failed to invoke results callback."),
|
|
443
347
|
}
|
|
444
|
-
}
|
|
445
|
-
|
|
446
|
-
pub fn scope(env: c.napi_env, comptime error_message: [:0]const u8) !c.napi_value {
|
|
447
|
-
var result: c.napi_value = undefined;
|
|
448
|
-
if (c.napi_get_global(env, &result) != c.napi_ok) {
|
|
449
|
-
return throw(env, error_message);
|
|
450
|
-
}
|
|
451
|
-
|
|
452
348
|
return result;
|
|
453
349
|
}
|
|
454
350
|
|
package/package-lock.json
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "tigerbeetle-node",
|
|
3
|
-
"version": "0.14.157",
|
|
4
|
-
"lockfileVersion": 1,
|
|
5
|
-
"requires": true,
|
|
6
|
-
"dependencies": {
|
|
7
|
-
"@types/node": {
|
|
8
|
-
"version": "14.18.10",
|
|
9
|
-
"resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.10.tgz",
|
|
10
|
-
"integrity": "sha512-6iihJ/Pp5fsFJ/aEDGyvT4pHGmCpq7ToQ/yf4bl5SbVAvwpspYJ+v3jO7n8UyjhQVHTy+KNszOozDdv+O6sovQ==",
|
|
11
|
-
"dev": true
|
|
12
|
-
},
|
|
13
|
-
"node-api-headers": {
|
|
14
|
-
"version": "0.0.2",
|
|
15
|
-
"resolved": "https://registry.npmjs.org/node-api-headers/-/node-api-headers-0.0.2.tgz",
|
|
16
|
-
"integrity": "sha512-YsjmaKGPDkmhoNKIpkChtCsPVaRE0a274IdERKnuc/E8K1UJdBZ4/mvI006OijlQZHCfpRNOH3dfHQs92se8gg==",
|
|
17
|
-
"dev": true
|
|
18
|
-
},
|
|
19
|
-
"typescript": {
|
|
20
|
-
"version": "4.5.5",
|
|
21
|
-
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.5.tgz",
|
|
22
|
-
"integrity": "sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==",
|
|
23
|
-
"dev": true
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
}
|