bare-buffer 3.1.3 → 3.2.0
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/binding.c +302 -234
- package/index.js +9 -14
- package/lib/base64.js +15 -2
- package/lib/constants.js +3 -4
- package/lib/hex.js +15 -2
- package/lib/latin1.js +15 -2
- package/lib/utf16le.js +15 -2
- package/lib/utf8.js +18 -3
- package/package.json +2 -2
- package/prebuilds/android-arm/bare-buffer.bare +0 -0
- package/prebuilds/android-arm64/bare-buffer.bare +0 -0
- package/prebuilds/android-ia32/bare-buffer.bare +0 -0
- package/prebuilds/android-x64/bare-buffer.bare +0 -0
- package/prebuilds/darwin-arm64/bare-buffer.bare +0 -0
- package/prebuilds/darwin-x64/bare-buffer.bare +0 -0
- package/prebuilds/ios-arm64/bare-buffer.bare +0 -0
- package/prebuilds/ios-arm64-simulator/bare-buffer.bare +0 -0
- package/prebuilds/ios-x64-simulator/bare-buffer.bare +0 -0
- package/prebuilds/linux-arm64/bare-buffer.bare +0 -0
- package/prebuilds/linux-x64/bare-buffer.bare +0 -0
- package/prebuilds/win32-arm64/bare-buffer.bare +0 -0
- package/prebuilds/win32-x64/bare-buffer.bare +0 -0
package/binding.c
CHANGED
|
@@ -7,8 +7,6 @@
|
|
|
7
7
|
#include <string.h>
|
|
8
8
|
#include <utf.h>
|
|
9
9
|
|
|
10
|
-
static js_type_tag_t bare_buffer__tag = {0xfea3e944b70b0812, 0xe53bb5c343c040b6};
|
|
11
|
-
|
|
12
10
|
static inline int
|
|
13
11
|
bare_buffer__memcmp(void *a, size_t a_len, void *b, size_t b_len) {
|
|
14
12
|
int r = memcmp(a, b, a_len < b_len ? a_len : b_len);
|
|
@@ -23,7 +21,7 @@ bare_buffer__memcmp(void *a, size_t a_len, void *b, size_t b_len) {
|
|
|
23
21
|
}
|
|
24
22
|
|
|
25
23
|
static void
|
|
26
|
-
|
|
24
|
+
bare_buffer__on_finalize_string(js_env_t *env, void *data, void *finalize_hint) {
|
|
27
25
|
free(data);
|
|
28
26
|
}
|
|
29
27
|
|
|
@@ -39,8 +37,8 @@ bare_buffer_alloc(js_env_t *env, js_callback_info_t *info) {
|
|
|
39
37
|
|
|
40
38
|
assert(argc == 1);
|
|
41
39
|
|
|
42
|
-
|
|
43
|
-
err =
|
|
40
|
+
int64_t len;
|
|
41
|
+
err = js_get_value_int64(env, argv[0], &len);
|
|
44
42
|
assert(err == 0);
|
|
45
43
|
|
|
46
44
|
js_value_t *result;
|
|
@@ -62,8 +60,8 @@ bare_buffer_alloc_unsafe(js_env_t *env, js_callback_info_t *info) {
|
|
|
62
60
|
|
|
63
61
|
assert(argc == 1);
|
|
64
62
|
|
|
65
|
-
|
|
66
|
-
err =
|
|
63
|
+
int64_t len;
|
|
64
|
+
err = js_get_value_int64(env, argv[0], &len);
|
|
67
65
|
assert(err == 0);
|
|
68
66
|
|
|
69
67
|
js_value_t *result;
|
|
@@ -73,7 +71,7 @@ bare_buffer_alloc_unsafe(js_env_t *env, js_callback_info_t *info) {
|
|
|
73
71
|
return result;
|
|
74
72
|
}
|
|
75
73
|
|
|
76
|
-
static
|
|
74
|
+
static int64_t
|
|
77
75
|
bare_buffer_typed_byte_length_utf8(js_value_t *receiver, js_value_t *str, js_typed_callback_info_t *info) {
|
|
78
76
|
int err;
|
|
79
77
|
|
|
@@ -85,7 +83,7 @@ bare_buffer_typed_byte_length_utf8(js_value_t *receiver, js_value_t *str, js_typ
|
|
|
85
83
|
err = js_get_value_string_utf8(env, str, NULL, 0, &str_len);
|
|
86
84
|
assert(err == 0);
|
|
87
85
|
|
|
88
|
-
return
|
|
86
|
+
return str_len;
|
|
89
87
|
}
|
|
90
88
|
|
|
91
89
|
static js_value_t *
|
|
@@ -105,7 +103,7 @@ bare_buffer_byte_length_utf8(js_env_t *env, js_callback_info_t *info) {
|
|
|
105
103
|
assert(err == 0);
|
|
106
104
|
|
|
107
105
|
js_value_t *result;
|
|
108
|
-
err =
|
|
106
|
+
err = js_create_int64(env, str_len, &result);
|
|
109
107
|
assert(err == 0);
|
|
110
108
|
|
|
111
109
|
return result;
|
|
@@ -115,76 +113,89 @@ static js_value_t *
|
|
|
115
113
|
bare_buffer_to_string_utf8(js_env_t *env, js_callback_info_t *info) {
|
|
116
114
|
int err;
|
|
117
115
|
|
|
118
|
-
size_t argc =
|
|
119
|
-
js_value_t *argv[
|
|
116
|
+
size_t argc = 3;
|
|
117
|
+
js_value_t *argv[3];
|
|
120
118
|
|
|
121
119
|
err = js_get_callback_info(env, info, &argc, argv, NULL, NULL);
|
|
122
120
|
assert(err == 0);
|
|
123
121
|
|
|
124
|
-
assert(argc ==
|
|
122
|
+
assert(argc == 3);
|
|
125
123
|
|
|
126
124
|
utf8_t *buf;
|
|
127
|
-
|
|
128
|
-
err
|
|
125
|
+
err = js_get_arraybuffer_info(env, argv[0], (void **) &buf, NULL);
|
|
126
|
+
assert(err == 0);
|
|
127
|
+
|
|
128
|
+
int64_t offset;
|
|
129
|
+
err = js_get_value_int64(env, argv[1], &offset);
|
|
130
|
+
assert(err == 0);
|
|
131
|
+
|
|
132
|
+
int64_t len;
|
|
133
|
+
err = js_get_value_int64(env, argv[2], &len);
|
|
129
134
|
assert(err == 0);
|
|
130
135
|
|
|
131
136
|
js_value_t *result;
|
|
132
|
-
err = js_create_string_utf8(env, buf,
|
|
137
|
+
err = js_create_string_utf8(env, &buf[offset], len, &result);
|
|
133
138
|
assert(err == 0);
|
|
134
139
|
|
|
135
140
|
return result;
|
|
136
141
|
}
|
|
137
142
|
|
|
138
|
-
static
|
|
139
|
-
bare_buffer_typed_write_utf8(
|
|
143
|
+
static int64_t
|
|
144
|
+
bare_buffer_typed_write_utf8(
|
|
145
|
+
js_value_t *receiver,
|
|
146
|
+
js_value_t *handle,
|
|
147
|
+
int64_t offset,
|
|
148
|
+
int64_t len,
|
|
149
|
+
js_value_t *string,
|
|
150
|
+
js_typed_callback_info_t *info
|
|
151
|
+
) {
|
|
140
152
|
int err;
|
|
141
153
|
|
|
142
154
|
js_env_t *env;
|
|
143
155
|
err = js_get_typed_callback_info(info, &env, NULL);
|
|
144
156
|
assert(err == 0);
|
|
145
157
|
|
|
146
|
-
|
|
147
|
-
err =
|
|
148
|
-
assert(err == 0);
|
|
149
|
-
|
|
150
|
-
void *buf;
|
|
151
|
-
size_t buf_len;
|
|
152
|
-
err = js_get_typedarray_info(env, typedarray, NULL, &buf, &buf_len, NULL, NULL);
|
|
158
|
+
utf8_t *buf;
|
|
159
|
+
err = js_get_arraybuffer_info(env, handle, (void **) &buf, NULL);
|
|
153
160
|
assert(err == 0);
|
|
154
161
|
|
|
155
162
|
size_t str_len;
|
|
156
|
-
err = js_get_value_string_utf8(env, string, buf,
|
|
163
|
+
err = js_get_value_string_utf8(env, string, &buf[offset], len, &str_len);
|
|
157
164
|
assert(err == 0);
|
|
158
165
|
|
|
159
|
-
|
|
160
|
-
assert(err == 0);
|
|
161
|
-
|
|
162
|
-
return (uint32_t) str_len;
|
|
166
|
+
return str_len;
|
|
163
167
|
}
|
|
164
168
|
|
|
165
169
|
static js_value_t *
|
|
166
170
|
bare_buffer_write_utf8(js_env_t *env, js_callback_info_t *info) {
|
|
167
171
|
int err;
|
|
168
172
|
|
|
169
|
-
size_t argc =
|
|
170
|
-
js_value_t *argv[
|
|
173
|
+
size_t argc = 4;
|
|
174
|
+
js_value_t *argv[4];
|
|
171
175
|
|
|
172
176
|
err = js_get_callback_info(env, info, &argc, argv, NULL, NULL);
|
|
173
177
|
assert(err == 0);
|
|
174
178
|
|
|
175
|
-
assert(argc ==
|
|
179
|
+
assert(argc == 4);
|
|
180
|
+
|
|
181
|
+
utf8_t *buf;
|
|
182
|
+
err = js_get_arraybuffer_info(env, argv[0], (void **) &buf, NULL);
|
|
183
|
+
assert(err == 0);
|
|
184
|
+
|
|
185
|
+
int64_t offset;
|
|
186
|
+
err = js_get_value_int64(env, argv[1], &offset);
|
|
187
|
+
assert(err == 0);
|
|
176
188
|
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
err = js_get_typedarray_info(env, argv[0], NULL, &buf, &buf_len, NULL, NULL);
|
|
189
|
+
int64_t len;
|
|
190
|
+
err = js_get_value_int64(env, argv[2], &len);
|
|
180
191
|
assert(err == 0);
|
|
181
192
|
|
|
182
193
|
size_t str_len;
|
|
183
|
-
err = js_get_value_string_utf8(env, argv[
|
|
194
|
+
err = js_get_value_string_utf8(env, argv[3], &buf[offset], len, &str_len);
|
|
184
195
|
assert(err == 0);
|
|
185
196
|
|
|
186
197
|
js_value_t *result;
|
|
187
|
-
err =
|
|
198
|
+
err = js_create_int64(env, str_len, &result);
|
|
188
199
|
assert(err == 0);
|
|
189
200
|
|
|
190
201
|
return result;
|
|
@@ -194,86 +205,102 @@ static js_value_t *
|
|
|
194
205
|
bare_buffer_to_string_utf16le(js_env_t *env, js_callback_info_t *info) {
|
|
195
206
|
int err;
|
|
196
207
|
|
|
197
|
-
size_t argc =
|
|
198
|
-
js_value_t *argv[
|
|
208
|
+
size_t argc = 3;
|
|
209
|
+
js_value_t *argv[3];
|
|
199
210
|
|
|
200
211
|
err = js_get_callback_info(env, info, &argc, argv, NULL, NULL);
|
|
201
212
|
assert(err == 0);
|
|
202
213
|
|
|
203
|
-
assert(argc ==
|
|
214
|
+
assert(argc == 3);
|
|
204
215
|
|
|
205
216
|
utf16_t *buf;
|
|
206
|
-
|
|
207
|
-
err
|
|
217
|
+
err = js_get_arraybuffer_info(env, argv[0], (void **) &buf, NULL);
|
|
218
|
+
assert(err == 0);
|
|
219
|
+
|
|
220
|
+
int64_t offset;
|
|
221
|
+
err = js_get_value_int64(env, argv[1], &offset);
|
|
222
|
+
assert(err == 0);
|
|
223
|
+
|
|
224
|
+
int64_t len;
|
|
225
|
+
err = js_get_value_int64(env, argv[2], &len);
|
|
208
226
|
assert(err == 0);
|
|
209
227
|
|
|
210
|
-
|
|
228
|
+
offset /= sizeof(utf16_t);
|
|
229
|
+
len /= sizeof(utf16_t);
|
|
211
230
|
|
|
212
231
|
js_value_t *result;
|
|
213
|
-
err = js_create_string_utf16le(env, buf,
|
|
232
|
+
err = js_create_string_utf16le(env, &buf[offset], len, &result);
|
|
214
233
|
assert(err == 0);
|
|
215
234
|
|
|
216
235
|
return result;
|
|
217
236
|
}
|
|
218
237
|
|
|
219
|
-
static
|
|
220
|
-
bare_buffer_typed_write_utf16le(
|
|
238
|
+
static int64_t
|
|
239
|
+
bare_buffer_typed_write_utf16le(
|
|
240
|
+
js_value_t *receiver,
|
|
241
|
+
js_value_t *handle,
|
|
242
|
+
int64_t offset,
|
|
243
|
+
int64_t len,
|
|
244
|
+
js_value_t *string,
|
|
245
|
+
js_typed_callback_info_t *info
|
|
246
|
+
) {
|
|
221
247
|
int err;
|
|
222
248
|
|
|
223
249
|
js_env_t *env;
|
|
224
250
|
err = js_get_typed_callback_info(info, &env, NULL);
|
|
225
251
|
assert(err == 0);
|
|
226
252
|
|
|
227
|
-
|
|
228
|
-
err =
|
|
229
|
-
assert(err == 0);
|
|
230
|
-
|
|
231
|
-
void *buf;
|
|
232
|
-
size_t buf_len;
|
|
233
|
-
err = js_get_typedarray_info(env, typedarray, NULL, &buf, &buf_len, NULL, NULL);
|
|
253
|
+
utf16_t *buf;
|
|
254
|
+
err = js_get_arraybuffer_info(env, handle, (void **) &buf, NULL);
|
|
234
255
|
assert(err == 0);
|
|
235
256
|
|
|
236
|
-
|
|
257
|
+
offset /= sizeof(utf16_t);
|
|
258
|
+
len /= sizeof(utf16_t);
|
|
237
259
|
|
|
238
260
|
size_t str_len;
|
|
239
|
-
err = js_get_value_string_utf16le(env, string, buf,
|
|
261
|
+
err = js_get_value_string_utf16le(env, string, &buf[offset], len, &str_len);
|
|
240
262
|
assert(err == 0);
|
|
241
263
|
|
|
242
264
|
str_len *= sizeof(utf16_t);
|
|
243
265
|
|
|
244
|
-
|
|
245
|
-
assert(err == 0);
|
|
246
|
-
|
|
247
|
-
return (uint32_t) str_len;
|
|
266
|
+
return str_len;
|
|
248
267
|
}
|
|
249
268
|
|
|
250
269
|
static js_value_t *
|
|
251
270
|
bare_buffer_write_utf16le(js_env_t *env, js_callback_info_t *info) {
|
|
252
271
|
int err;
|
|
253
272
|
|
|
254
|
-
size_t argc =
|
|
255
|
-
js_value_t *argv[
|
|
273
|
+
size_t argc = 4;
|
|
274
|
+
js_value_t *argv[4];
|
|
256
275
|
|
|
257
276
|
err = js_get_callback_info(env, info, &argc, argv, NULL, NULL);
|
|
258
277
|
assert(err == 0);
|
|
259
278
|
|
|
260
|
-
assert(argc ==
|
|
279
|
+
assert(argc == 4);
|
|
261
280
|
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
err
|
|
281
|
+
utf16_t *buf;
|
|
282
|
+
err = js_get_arraybuffer_info(env, argv[0], (void **) &buf, NULL);
|
|
283
|
+
assert(err == 0);
|
|
284
|
+
|
|
285
|
+
int64_t offset;
|
|
286
|
+
err = js_get_value_int64(env, argv[1], &offset);
|
|
287
|
+
assert(err == 0);
|
|
288
|
+
|
|
289
|
+
int64_t len;
|
|
290
|
+
err = js_get_value_int64(env, argv[2], &len);
|
|
265
291
|
assert(err == 0);
|
|
266
292
|
|
|
267
|
-
|
|
293
|
+
offset /= sizeof(utf16_t);
|
|
294
|
+
len /= sizeof(utf16_t);
|
|
268
295
|
|
|
269
296
|
size_t str_len;
|
|
270
|
-
err = js_get_value_string_utf16le(env, argv[
|
|
297
|
+
err = js_get_value_string_utf16le(env, argv[3], &buf[offset], len, &str_len);
|
|
271
298
|
assert(err == 0);
|
|
272
299
|
|
|
273
300
|
str_len *= sizeof(utf16_t);
|
|
274
301
|
|
|
275
302
|
js_value_t *result;
|
|
276
|
-
err =
|
|
303
|
+
err = js_create_int64(env, str_len, &result);
|
|
277
304
|
assert(err == 0);
|
|
278
305
|
|
|
279
306
|
return result;
|
|
@@ -283,76 +310,89 @@ static js_value_t *
|
|
|
283
310
|
bare_buffer_to_string_latin1(js_env_t *env, js_callback_info_t *info) {
|
|
284
311
|
int err;
|
|
285
312
|
|
|
286
|
-
size_t argc =
|
|
287
|
-
js_value_t *argv[
|
|
313
|
+
size_t argc = 3;
|
|
314
|
+
js_value_t *argv[3];
|
|
288
315
|
|
|
289
316
|
err = js_get_callback_info(env, info, &argc, argv, NULL, NULL);
|
|
290
317
|
assert(err == 0);
|
|
291
318
|
|
|
292
|
-
assert(argc ==
|
|
319
|
+
assert(argc == 3);
|
|
293
320
|
|
|
294
321
|
latin1_t *buf;
|
|
295
|
-
|
|
296
|
-
err
|
|
322
|
+
err = js_get_arraybuffer_info(env, argv[0], (void **) &buf, NULL);
|
|
323
|
+
assert(err == 0);
|
|
324
|
+
|
|
325
|
+
int64_t offset;
|
|
326
|
+
err = js_get_value_int64(env, argv[1], &offset);
|
|
327
|
+
assert(err == 0);
|
|
328
|
+
|
|
329
|
+
int64_t len;
|
|
330
|
+
err = js_get_value_int64(env, argv[2], &len);
|
|
297
331
|
assert(err == 0);
|
|
298
332
|
|
|
299
333
|
js_value_t *result;
|
|
300
|
-
err = js_create_string_latin1(env, buf,
|
|
334
|
+
err = js_create_string_latin1(env, &buf[offset], len, &result);
|
|
301
335
|
assert(err == 0);
|
|
302
336
|
|
|
303
337
|
return result;
|
|
304
338
|
}
|
|
305
339
|
|
|
306
|
-
static
|
|
307
|
-
bare_buffer_typed_write_latin1(
|
|
340
|
+
static int64_t
|
|
341
|
+
bare_buffer_typed_write_latin1(
|
|
342
|
+
js_value_t *receiver,
|
|
343
|
+
js_value_t *handle,
|
|
344
|
+
int64_t offset,
|
|
345
|
+
int64_t len,
|
|
346
|
+
js_value_t *string,
|
|
347
|
+
js_typed_callback_info_t *info
|
|
348
|
+
) {
|
|
308
349
|
int err;
|
|
309
350
|
|
|
310
351
|
js_env_t *env;
|
|
311
352
|
err = js_get_typed_callback_info(info, &env, NULL);
|
|
312
353
|
assert(err == 0);
|
|
313
354
|
|
|
314
|
-
|
|
315
|
-
err =
|
|
316
|
-
assert(err == 0);
|
|
317
|
-
|
|
318
|
-
void *buf;
|
|
319
|
-
size_t buf_len;
|
|
320
|
-
err = js_get_typedarray_info(env, typedarray, NULL, &buf, &buf_len, NULL, NULL);
|
|
355
|
+
latin1_t *buf;
|
|
356
|
+
err = js_get_arraybuffer_info(env, handle, (void **) &buf, NULL);
|
|
321
357
|
assert(err == 0);
|
|
322
358
|
|
|
323
359
|
size_t str_len;
|
|
324
|
-
err = js_get_value_string_latin1(env, string, buf,
|
|
360
|
+
err = js_get_value_string_latin1(env, string, &buf[offset], len, &str_len);
|
|
325
361
|
assert(err == 0);
|
|
326
362
|
|
|
327
|
-
|
|
328
|
-
assert(err == 0);
|
|
329
|
-
|
|
330
|
-
return (uint32_t) str_len;
|
|
363
|
+
return str_len;
|
|
331
364
|
}
|
|
332
365
|
|
|
333
366
|
static js_value_t *
|
|
334
367
|
bare_buffer_write_latin1(js_env_t *env, js_callback_info_t *info) {
|
|
335
368
|
int err;
|
|
336
369
|
|
|
337
|
-
size_t argc =
|
|
338
|
-
js_value_t *argv[
|
|
370
|
+
size_t argc = 4;
|
|
371
|
+
js_value_t *argv[4];
|
|
339
372
|
|
|
340
373
|
err = js_get_callback_info(env, info, &argc, argv, NULL, NULL);
|
|
341
374
|
assert(err == 0);
|
|
342
375
|
|
|
343
|
-
assert(argc ==
|
|
376
|
+
assert(argc == 4);
|
|
377
|
+
|
|
378
|
+
latin1_t *buf;
|
|
379
|
+
err = js_get_arraybuffer_info(env, argv[0], (void **) &buf, NULL);
|
|
380
|
+
assert(err == 0);
|
|
344
381
|
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
err
|
|
382
|
+
int64_t offset;
|
|
383
|
+
err = js_get_value_int64(env, argv[1], &offset);
|
|
384
|
+
assert(err == 0);
|
|
385
|
+
|
|
386
|
+
int64_t len;
|
|
387
|
+
err = js_get_value_int64(env, argv[2], &len);
|
|
348
388
|
assert(err == 0);
|
|
349
389
|
|
|
350
390
|
size_t str_len;
|
|
351
|
-
err = js_get_value_string_latin1(env, argv[
|
|
391
|
+
err = js_get_value_string_latin1(env, argv[3], &buf[offset], len, &str_len);
|
|
352
392
|
assert(err == 0);
|
|
353
393
|
|
|
354
394
|
js_value_t *result;
|
|
355
|
-
err =
|
|
395
|
+
err = js_create_int64(env, str_len, &result);
|
|
356
396
|
assert(err == 0);
|
|
357
397
|
|
|
358
398
|
return result;
|
|
@@ -362,49 +402,58 @@ static js_value_t *
|
|
|
362
402
|
bare_buffer_to_string_base64(js_env_t *env, js_callback_info_t *info) {
|
|
363
403
|
int err;
|
|
364
404
|
|
|
365
|
-
size_t argc =
|
|
366
|
-
js_value_t *argv[
|
|
405
|
+
size_t argc = 3;
|
|
406
|
+
js_value_t *argv[3];
|
|
367
407
|
|
|
368
408
|
err = js_get_callback_info(env, info, &argc, argv, NULL, NULL);
|
|
369
409
|
assert(err == 0);
|
|
370
410
|
|
|
371
|
-
assert(argc ==
|
|
411
|
+
assert(argc == 3);
|
|
372
412
|
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
err
|
|
413
|
+
utf8_t *buf;
|
|
414
|
+
err = js_get_arraybuffer_info(env, argv[0], (void **) &buf, NULL);
|
|
415
|
+
assert(err == 0);
|
|
416
|
+
|
|
417
|
+
int64_t offset;
|
|
418
|
+
err = js_get_value_int64(env, argv[1], &offset);
|
|
419
|
+
assert(err == 0);
|
|
420
|
+
|
|
421
|
+
int64_t len;
|
|
422
|
+
err = js_get_value_int64(env, argv[2], &len);
|
|
376
423
|
assert(err == 0);
|
|
377
424
|
|
|
378
425
|
size_t str_len;
|
|
379
|
-
err = base64_encode_utf8(buf,
|
|
426
|
+
err = base64_encode_utf8(&buf[offset], len, NULL, &str_len);
|
|
380
427
|
assert(err == 0);
|
|
381
428
|
|
|
382
429
|
utf8_t *str = malloc(str_len);
|
|
383
|
-
err = base64_encode_utf8(buf,
|
|
430
|
+
err = base64_encode_utf8(&buf[offset], len, str, &str_len);
|
|
384
431
|
assert(err == 0);
|
|
385
432
|
|
|
386
433
|
js_value_t *result;
|
|
387
|
-
err = js_create_external_string_latin1(env, str, str_len,
|
|
434
|
+
err = js_create_external_string_latin1(env, str, str_len, bare_buffer__on_finalize_string, NULL, &result, NULL);
|
|
388
435
|
assert(err == 0);
|
|
389
436
|
|
|
390
437
|
return result;
|
|
391
438
|
}
|
|
392
439
|
|
|
393
|
-
static
|
|
394
|
-
bare_buffer_typed_write_base64(
|
|
440
|
+
static int64_t
|
|
441
|
+
bare_buffer_typed_write_base64(
|
|
442
|
+
js_value_t *receiver,
|
|
443
|
+
js_value_t *handle,
|
|
444
|
+
int64_t offset,
|
|
445
|
+
int64_t len,
|
|
446
|
+
js_value_t *string,
|
|
447
|
+
js_typed_callback_info_t *info
|
|
448
|
+
) {
|
|
395
449
|
int err;
|
|
396
450
|
|
|
397
451
|
js_env_t *env;
|
|
398
452
|
err = js_get_typed_callback_info(info, &env, NULL);
|
|
399
453
|
assert(err == 0);
|
|
400
454
|
|
|
401
|
-
|
|
402
|
-
err =
|
|
403
|
-
assert(err == 0);
|
|
404
|
-
|
|
405
|
-
void *buf;
|
|
406
|
-
size_t buf_len;
|
|
407
|
-
err = js_get_typedarray_info(env, typedarray, NULL, &buf, &buf_len, NULL, NULL);
|
|
455
|
+
utf8_t *buf;
|
|
456
|
+
err = js_get_arraybuffer_info(env, handle, (void **) &buf, NULL);
|
|
408
457
|
assert(err == 0);
|
|
409
458
|
|
|
410
459
|
js_string_encoding_t encoding;
|
|
@@ -415,38 +464,44 @@ bare_buffer_typed_write_base64(js_value_t *receiver, js_value_t *typedarray, js_
|
|
|
415
464
|
err = js_get_string_view(env, string, &encoding, &str, &str_len, &str_view);
|
|
416
465
|
assert(err == 0);
|
|
417
466
|
|
|
467
|
+
size_t written = len;
|
|
468
|
+
|
|
418
469
|
if (encoding == js_utf16le) {
|
|
419
|
-
err = base64_decode_utf16le(str, str_len, buf, &
|
|
470
|
+
err = base64_decode_utf16le(str, str_len, &buf[offset], &written);
|
|
420
471
|
assert(err == 0);
|
|
421
472
|
} else {
|
|
422
|
-
err = base64_decode_utf8(str, str_len, buf, &
|
|
473
|
+
err = base64_decode_utf8(str, str_len, &buf[offset], &written);
|
|
423
474
|
assert(err == 0);
|
|
424
475
|
}
|
|
425
476
|
|
|
426
477
|
err = js_release_string_view(env, str_view);
|
|
427
478
|
assert(err == 0);
|
|
428
479
|
|
|
429
|
-
|
|
430
|
-
assert(err == 0);
|
|
431
|
-
|
|
432
|
-
return buf_len;
|
|
480
|
+
return written;
|
|
433
481
|
}
|
|
434
482
|
|
|
435
483
|
static js_value_t *
|
|
436
484
|
bare_buffer_write_base64(js_env_t *env, js_callback_info_t *info) {
|
|
437
485
|
int err;
|
|
438
486
|
|
|
439
|
-
size_t argc =
|
|
440
|
-
js_value_t *argv[
|
|
487
|
+
size_t argc = 4;
|
|
488
|
+
js_value_t *argv[4];
|
|
441
489
|
|
|
442
490
|
err = js_get_callback_info(env, info, &argc, argv, NULL, NULL);
|
|
443
491
|
assert(err == 0);
|
|
444
492
|
|
|
445
|
-
assert(argc ==
|
|
493
|
+
assert(argc == 4);
|
|
494
|
+
|
|
495
|
+
utf8_t *buf;
|
|
496
|
+
err = js_get_arraybuffer_info(env, argv[0], (void **) &buf, NULL);
|
|
497
|
+
assert(err == 0);
|
|
498
|
+
|
|
499
|
+
int64_t offset;
|
|
500
|
+
err = js_get_value_int64(env, argv[1], &offset);
|
|
501
|
+
assert(err == 0);
|
|
446
502
|
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
err = js_get_typedarray_info(env, argv[0], NULL, &buf, &buf_len, NULL, NULL);
|
|
503
|
+
int64_t len;
|
|
504
|
+
err = js_get_value_int64(env, argv[2], &len);
|
|
450
505
|
assert(err == 0);
|
|
451
506
|
|
|
452
507
|
js_string_encoding_t encoding;
|
|
@@ -454,14 +509,16 @@ bare_buffer_write_base64(js_env_t *env, js_callback_info_t *info) {
|
|
|
454
509
|
size_t str_len;
|
|
455
510
|
|
|
456
511
|
js_string_view_t *str_view;
|
|
457
|
-
err = js_get_string_view(env, argv[
|
|
512
|
+
err = js_get_string_view(env, argv[3], &encoding, &str, &str_len, &str_view);
|
|
458
513
|
assert(err == 0);
|
|
459
514
|
|
|
515
|
+
size_t written = len;
|
|
516
|
+
|
|
460
517
|
if (encoding == js_utf16le) {
|
|
461
|
-
err = base64_decode_utf16le(str, str_len, buf, &
|
|
518
|
+
err = base64_decode_utf16le(str, str_len, &buf[offset], &written);
|
|
462
519
|
assert(err == 0);
|
|
463
520
|
} else {
|
|
464
|
-
err = base64_decode_utf8(str, str_len, buf, &
|
|
521
|
+
err = base64_decode_utf8(str, str_len, &buf[offset], &written);
|
|
465
522
|
assert(err == 0);
|
|
466
523
|
}
|
|
467
524
|
|
|
@@ -469,7 +526,7 @@ bare_buffer_write_base64(js_env_t *env, js_callback_info_t *info) {
|
|
|
469
526
|
assert(err == 0);
|
|
470
527
|
|
|
471
528
|
js_value_t *result;
|
|
472
|
-
err =
|
|
529
|
+
err = js_create_int64(env, written, &result);
|
|
473
530
|
assert(err == 0);
|
|
474
531
|
|
|
475
532
|
return result;
|
|
@@ -479,49 +536,58 @@ static js_value_t *
|
|
|
479
536
|
bare_buffer_to_string_hex(js_env_t *env, js_callback_info_t *info) {
|
|
480
537
|
int err;
|
|
481
538
|
|
|
482
|
-
size_t argc =
|
|
483
|
-
js_value_t *argv[
|
|
539
|
+
size_t argc = 3;
|
|
540
|
+
js_value_t *argv[3];
|
|
484
541
|
|
|
485
542
|
err = js_get_callback_info(env, info, &argc, argv, NULL, NULL);
|
|
486
543
|
assert(err == 0);
|
|
487
544
|
|
|
488
|
-
assert(argc ==
|
|
545
|
+
assert(argc == 3);
|
|
546
|
+
|
|
547
|
+
utf8_t *buf;
|
|
548
|
+
err = js_get_arraybuffer_info(env, argv[0], (void **) &buf, NULL);
|
|
549
|
+
assert(err == 0);
|
|
489
550
|
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
err
|
|
551
|
+
int64_t offset;
|
|
552
|
+
err = js_get_value_int64(env, argv[1], &offset);
|
|
553
|
+
assert(err == 0);
|
|
554
|
+
|
|
555
|
+
int64_t len;
|
|
556
|
+
err = js_get_value_int64(env, argv[2], &len);
|
|
493
557
|
assert(err == 0);
|
|
494
558
|
|
|
495
559
|
size_t str_len;
|
|
496
|
-
err = hex_encode_utf8(buf,
|
|
560
|
+
err = hex_encode_utf8(&buf[offset], len, NULL, &str_len);
|
|
497
561
|
assert(err == 0);
|
|
498
562
|
|
|
499
563
|
utf8_t *str = malloc(str_len);
|
|
500
|
-
err = hex_encode_utf8(buf,
|
|
564
|
+
err = hex_encode_utf8(&buf[offset], len, str, &str_len);
|
|
501
565
|
assert(err == 0);
|
|
502
566
|
|
|
503
567
|
js_value_t *result;
|
|
504
|
-
err = js_create_external_string_latin1(env, str, str_len,
|
|
568
|
+
err = js_create_external_string_latin1(env, str, str_len, bare_buffer__on_finalize_string, NULL, &result, NULL);
|
|
505
569
|
assert(err == 0);
|
|
506
570
|
|
|
507
571
|
return result;
|
|
508
572
|
}
|
|
509
573
|
|
|
510
|
-
static
|
|
511
|
-
bare_buffer_typed_write_hex(
|
|
574
|
+
static int64_t
|
|
575
|
+
bare_buffer_typed_write_hex(
|
|
576
|
+
js_value_t *receiver,
|
|
577
|
+
js_value_t *handle,
|
|
578
|
+
int64_t offset,
|
|
579
|
+
int64_t len,
|
|
580
|
+
js_value_t *string,
|
|
581
|
+
js_typed_callback_info_t *info
|
|
582
|
+
) {
|
|
512
583
|
int err;
|
|
513
584
|
|
|
514
585
|
js_env_t *env;
|
|
515
586
|
err = js_get_typed_callback_info(info, &env, NULL);
|
|
516
587
|
assert(err == 0);
|
|
517
588
|
|
|
518
|
-
|
|
519
|
-
err =
|
|
520
|
-
assert(err == 0);
|
|
521
|
-
|
|
522
|
-
void *buf;
|
|
523
|
-
size_t buf_len;
|
|
524
|
-
err = js_get_typedarray_info(env, typedarray, NULL, &buf, &buf_len, NULL, NULL);
|
|
589
|
+
utf8_t *buf;
|
|
590
|
+
err = js_get_arraybuffer_info(env, handle, (void **) &buf, NULL);
|
|
525
591
|
assert(err == 0);
|
|
526
592
|
|
|
527
593
|
js_string_encoding_t encoding;
|
|
@@ -532,38 +598,44 @@ bare_buffer_typed_write_hex(js_value_t *receiver, js_value_t *typedarray, js_val
|
|
|
532
598
|
err = js_get_string_view(env, string, &encoding, &str, &str_len, &str_view);
|
|
533
599
|
assert(err == 0);
|
|
534
600
|
|
|
601
|
+
size_t written = len;
|
|
602
|
+
|
|
535
603
|
if (encoding == js_utf16le) {
|
|
536
|
-
err = hex_decode_utf16le(str, str_len, buf, &
|
|
604
|
+
err = hex_decode_utf16le(str, str_len, &buf[offset], &written);
|
|
537
605
|
assert(err == 0);
|
|
538
606
|
} else {
|
|
539
|
-
err = hex_decode_utf8(str, str_len, buf, &
|
|
607
|
+
err = hex_decode_utf8(str, str_len, &buf[offset], &written);
|
|
540
608
|
assert(err == 0);
|
|
541
609
|
}
|
|
542
610
|
|
|
543
611
|
err = js_release_string_view(env, str_view);
|
|
544
612
|
assert(err == 0);
|
|
545
613
|
|
|
546
|
-
|
|
547
|
-
assert(err == 0);
|
|
548
|
-
|
|
549
|
-
return buf_len;
|
|
614
|
+
return written;
|
|
550
615
|
}
|
|
551
616
|
|
|
552
617
|
static js_value_t *
|
|
553
618
|
bare_buffer_write_hex(js_env_t *env, js_callback_info_t *info) {
|
|
554
619
|
int err;
|
|
555
620
|
|
|
556
|
-
size_t argc =
|
|
557
|
-
js_value_t *argv[
|
|
621
|
+
size_t argc = 4;
|
|
622
|
+
js_value_t *argv[4];
|
|
558
623
|
|
|
559
624
|
err = js_get_callback_info(env, info, &argc, argv, NULL, NULL);
|
|
560
625
|
assert(err == 0);
|
|
561
626
|
|
|
562
|
-
assert(argc ==
|
|
627
|
+
assert(argc == 4);
|
|
628
|
+
|
|
629
|
+
utf8_t *buf;
|
|
630
|
+
err = js_get_arraybuffer_info(env, argv[0], (void **) &buf, NULL);
|
|
631
|
+
assert(err == 0);
|
|
563
632
|
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
err
|
|
633
|
+
int64_t offset;
|
|
634
|
+
err = js_get_value_int64(env, argv[1], &offset);
|
|
635
|
+
assert(err == 0);
|
|
636
|
+
|
|
637
|
+
int64_t len;
|
|
638
|
+
err = js_get_value_int64(env, argv[2], &len);
|
|
567
639
|
assert(err == 0);
|
|
568
640
|
|
|
569
641
|
js_string_encoding_t encoding;
|
|
@@ -571,14 +643,16 @@ bare_buffer_write_hex(js_env_t *env, js_callback_info_t *info) {
|
|
|
571
643
|
size_t str_len;
|
|
572
644
|
|
|
573
645
|
js_string_view_t *str_view;
|
|
574
|
-
err = js_get_string_view(env, argv[
|
|
646
|
+
err = js_get_string_view(env, argv[3], &encoding, &str, &str_len, &str_view);
|
|
575
647
|
assert(err == 0);
|
|
576
648
|
|
|
649
|
+
size_t written = len;
|
|
650
|
+
|
|
577
651
|
if (encoding == js_utf16le) {
|
|
578
|
-
err = hex_decode_utf16le(str, str_len, buf, &
|
|
652
|
+
err = hex_decode_utf16le(str, str_len, &buf[offset], &written);
|
|
579
653
|
assert(err == 0);
|
|
580
654
|
} else {
|
|
581
|
-
err = hex_decode_utf8(str, str_len, buf, &
|
|
655
|
+
err = hex_decode_utf8(str, str_len, &buf[offset], &written);
|
|
582
656
|
assert(err == 0);
|
|
583
657
|
}
|
|
584
658
|
|
|
@@ -586,7 +660,7 @@ bare_buffer_write_hex(js_env_t *env, js_callback_info_t *info) {
|
|
|
586
660
|
assert(err == 0);
|
|
587
661
|
|
|
588
662
|
js_value_t *result;
|
|
589
|
-
err =
|
|
663
|
+
err = js_create_int64(env, written, &result);
|
|
590
664
|
assert(err == 0);
|
|
591
665
|
|
|
592
666
|
return result;
|
|
@@ -596,11 +670,11 @@ static int32_t
|
|
|
596
670
|
bare_buffer_typed_compare(
|
|
597
671
|
js_value_t *receiver,
|
|
598
672
|
js_value_t *a_handle,
|
|
599
|
-
|
|
600
|
-
|
|
673
|
+
int64_t a_offset,
|
|
674
|
+
int64_t a_len,
|
|
601
675
|
js_value_t *b_handle,
|
|
602
|
-
|
|
603
|
-
|
|
676
|
+
int64_t b_offset,
|
|
677
|
+
int64_t b_len,
|
|
604
678
|
js_typed_callback_info_t *info
|
|
605
679
|
) {
|
|
606
680
|
int err;
|
|
@@ -609,12 +683,12 @@ bare_buffer_typed_compare(
|
|
|
609
683
|
err = js_get_typed_callback_info(info, &env, NULL);
|
|
610
684
|
assert(err == 0);
|
|
611
685
|
|
|
612
|
-
|
|
613
|
-
err = js_get_arraybuffer_info(env, a_handle, &a, NULL);
|
|
686
|
+
uint8_t *a;
|
|
687
|
+
err = js_get_arraybuffer_info(env, a_handle, (void **) &a, NULL);
|
|
614
688
|
assert(err == 0);
|
|
615
689
|
|
|
616
|
-
|
|
617
|
-
err = js_get_arraybuffer_info(env, b_handle, &b, NULL);
|
|
690
|
+
uint8_t *b;
|
|
691
|
+
err = js_get_arraybuffer_info(env, b_handle, (void **) &b, NULL);
|
|
618
692
|
assert(err == 0);
|
|
619
693
|
|
|
620
694
|
return bare_buffer__memcmp(&a[a_offset], a_len, &b[b_offset], b_len);
|
|
@@ -632,28 +706,28 @@ bare_buffer_compare(js_env_t *env, js_callback_info_t *info) {
|
|
|
632
706
|
|
|
633
707
|
assert(argc == 6);
|
|
634
708
|
|
|
635
|
-
|
|
636
|
-
err = js_get_arraybuffer_info(env, argv[0], &a, NULL);
|
|
709
|
+
uint8_t *a;
|
|
710
|
+
err = js_get_arraybuffer_info(env, argv[0], (void **) &a, NULL);
|
|
637
711
|
assert(err == 0);
|
|
638
712
|
|
|
639
|
-
|
|
640
|
-
err =
|
|
713
|
+
int64_t a_offset;
|
|
714
|
+
err = js_get_value_int64(env, argv[1], &a_offset);
|
|
641
715
|
assert(err == 0);
|
|
642
716
|
|
|
643
|
-
|
|
644
|
-
err =
|
|
717
|
+
int64_t a_len;
|
|
718
|
+
err = js_get_value_int64(env, argv[2], &a_len);
|
|
645
719
|
assert(err == 0);
|
|
646
720
|
|
|
647
|
-
|
|
648
|
-
err = js_get_arraybuffer_info(env, argv[3], &b, NULL);
|
|
721
|
+
uint8_t *b;
|
|
722
|
+
err = js_get_arraybuffer_info(env, argv[3], (void **) &b, NULL);
|
|
649
723
|
assert(err == 0);
|
|
650
724
|
|
|
651
|
-
|
|
652
|
-
err =
|
|
725
|
+
int64_t b_offset;
|
|
726
|
+
err = js_get_value_int64(env, argv[4], &b_offset);
|
|
653
727
|
assert(err == 0);
|
|
654
728
|
|
|
655
|
-
|
|
656
|
-
err =
|
|
729
|
+
int64_t b_len;
|
|
730
|
+
err = js_get_value_int64(env, argv[5], &b_len);
|
|
657
731
|
assert(err == 0);
|
|
658
732
|
|
|
659
733
|
js_value_t *result;
|
|
@@ -664,49 +738,39 @@ bare_buffer_compare(js_env_t *env, js_callback_info_t *info) {
|
|
|
664
738
|
}
|
|
665
739
|
|
|
666
740
|
static js_value_t *
|
|
667
|
-
|
|
741
|
+
bare_buffer_exports(js_env_t *env, js_value_t *exports) {
|
|
668
742
|
int err;
|
|
669
743
|
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
err = js_get_callback_info(env, info, &argc, argv, NULL, NULL);
|
|
744
|
+
js_value_t *constants;
|
|
745
|
+
err = js_create_object(env, &constants);
|
|
674
746
|
assert(err == 0);
|
|
675
747
|
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
err = js_add_type_tag(env, argv[0], &bare_buffer__tag);
|
|
748
|
+
err = js_set_named_property(env, exports, "constants", constants);
|
|
679
749
|
assert(err == 0);
|
|
680
750
|
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
static js_value_t *
|
|
685
|
-
bare_buffer_is_tagged(js_env_t *env, js_callback_info_t *info) {
|
|
686
|
-
int err;
|
|
687
|
-
|
|
688
|
-
size_t argc = 1;
|
|
689
|
-
js_value_t *argv[1];
|
|
690
|
-
|
|
691
|
-
err = js_get_callback_info(env, info, &argc, argv, NULL, NULL);
|
|
751
|
+
js_platform_t *platform;
|
|
752
|
+
err = js_get_env_platform(env, &platform);
|
|
692
753
|
assert(err == 0);
|
|
693
754
|
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
err = js_check_type_tag(env, argv[0], &bare_buffer__tag, &is_tagged);
|
|
698
|
-
assert(err == 0);
|
|
755
|
+
js_platform_limits_t limits = {
|
|
756
|
+
.version = 0,
|
|
757
|
+
};
|
|
699
758
|
|
|
700
|
-
|
|
701
|
-
err = js_get_boolean(env, is_tagged, &result);
|
|
759
|
+
err = js_get_platform_limits(platform, &limits);
|
|
702
760
|
assert(err == 0);
|
|
703
761
|
|
|
704
|
-
|
|
705
|
-
|
|
762
|
+
#define V(name, value) \
|
|
763
|
+
{ \
|
|
764
|
+
js_value_t *val; \
|
|
765
|
+
err = js_create_int64(env, value, &val); \
|
|
766
|
+
assert(err == 0); \
|
|
767
|
+
err = js_set_named_property(env, constants, name, val); \
|
|
768
|
+
assert(err == 0); \
|
|
769
|
+
}
|
|
706
770
|
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
771
|
+
V("MAX_LENGTH", limits.arraybuffer_length);
|
|
772
|
+
V("MAX_STRING_LENGTH", limits.string_length);
|
|
773
|
+
#undef V
|
|
710
774
|
|
|
711
775
|
#define V(name, untyped, signature, typed) \
|
|
712
776
|
{ \
|
|
@@ -731,7 +795,7 @@ bare_buffer_exports(js_env_t *env, js_value_t *exports) {
|
|
|
731
795
|
bare_buffer_byte_length_utf8,
|
|
732
796
|
&((js_callback_signature_t) {
|
|
733
797
|
.version = 0,
|
|
734
|
-
.result =
|
|
798
|
+
.result = js_int64,
|
|
735
799
|
.args_len = 2,
|
|
736
800
|
.args = (int[]) {
|
|
737
801
|
js_object,
|
|
@@ -748,11 +812,13 @@ bare_buffer_exports(js_env_t *env, js_value_t *exports) {
|
|
|
748
812
|
bare_buffer_write_utf8,
|
|
749
813
|
&((js_callback_signature_t) {
|
|
750
814
|
.version = 0,
|
|
751
|
-
.result =
|
|
752
|
-
.args_len =
|
|
815
|
+
.result = js_int64,
|
|
816
|
+
.args_len = 5,
|
|
753
817
|
.args = (int[]) {
|
|
754
818
|
js_object,
|
|
755
819
|
js_object,
|
|
820
|
+
js_int64,
|
|
821
|
+
js_int64,
|
|
756
822
|
js_string,
|
|
757
823
|
}
|
|
758
824
|
}),
|
|
@@ -766,7 +832,7 @@ bare_buffer_exports(js_env_t *env, js_value_t *exports) {
|
|
|
766
832
|
bare_buffer_write_utf16le,
|
|
767
833
|
&((js_callback_signature_t) {
|
|
768
834
|
.version = 0,
|
|
769
|
-
.result =
|
|
835
|
+
.result = js_int64,
|
|
770
836
|
.args_len = 3,
|
|
771
837
|
.args = (int[]) {
|
|
772
838
|
js_object,
|
|
@@ -784,11 +850,13 @@ bare_buffer_exports(js_env_t *env, js_value_t *exports) {
|
|
|
784
850
|
bare_buffer_write_latin1,
|
|
785
851
|
&((js_callback_signature_t) {
|
|
786
852
|
.version = 0,
|
|
787
|
-
.result =
|
|
788
|
-
.args_len =
|
|
853
|
+
.result = js_int64,
|
|
854
|
+
.args_len = 5,
|
|
789
855
|
.args = (int[]) {
|
|
790
856
|
js_object,
|
|
791
857
|
js_object,
|
|
858
|
+
js_int64,
|
|
859
|
+
js_int64,
|
|
792
860
|
js_string,
|
|
793
861
|
}
|
|
794
862
|
}),
|
|
@@ -802,11 +870,13 @@ bare_buffer_exports(js_env_t *env, js_value_t *exports) {
|
|
|
802
870
|
bare_buffer_write_base64,
|
|
803
871
|
&((js_callback_signature_t) {
|
|
804
872
|
.version = 0,
|
|
805
|
-
.result =
|
|
806
|
-
.args_len =
|
|
873
|
+
.result = js_int64,
|
|
874
|
+
.args_len = 5,
|
|
807
875
|
.args = (int[]) {
|
|
808
876
|
js_object,
|
|
809
877
|
js_object,
|
|
878
|
+
js_int64,
|
|
879
|
+
js_int64,
|
|
810
880
|
js_string,
|
|
811
881
|
}
|
|
812
882
|
}),
|
|
@@ -820,11 +890,13 @@ bare_buffer_exports(js_env_t *env, js_value_t *exports) {
|
|
|
820
890
|
bare_buffer_write_hex,
|
|
821
891
|
&((js_callback_signature_t) {
|
|
822
892
|
.version = 0,
|
|
823
|
-
.result =
|
|
824
|
-
.args_len =
|
|
893
|
+
.result = js_int64,
|
|
894
|
+
.args_len = 5,
|
|
825
895
|
.args = (int[]) {
|
|
826
896
|
js_object,
|
|
827
897
|
js_object,
|
|
898
|
+
js_int64,
|
|
899
|
+
js_int64,
|
|
828
900
|
js_string,
|
|
829
901
|
}
|
|
830
902
|
}),
|
|
@@ -841,19 +913,15 @@ bare_buffer_exports(js_env_t *env, js_value_t *exports) {
|
|
|
841
913
|
.args = (int[]) {
|
|
842
914
|
js_object,
|
|
843
915
|
js_object,
|
|
844
|
-
|
|
845
|
-
|
|
916
|
+
js_int64,
|
|
917
|
+
js_int64,
|
|
846
918
|
js_object,
|
|
847
|
-
|
|
848
|
-
|
|
919
|
+
js_int64,
|
|
920
|
+
js_int64,
|
|
849
921
|
}
|
|
850
922
|
}),
|
|
851
923
|
bare_buffer_typed_compare
|
|
852
924
|
);
|
|
853
|
-
|
|
854
|
-
V("tag", bare_buffer_tag, NULL, NULL);
|
|
855
|
-
|
|
856
|
-
V("isTagged", bare_buffer_is_tagged, NULL, NULL);
|
|
857
925
|
#undef V
|
|
858
926
|
|
|
859
927
|
return exports;
|
package/index.js
CHANGED
|
@@ -7,11 +7,13 @@ const utf16le = require('./lib/utf16le')
|
|
|
7
7
|
const latin1 = require('./lib/latin1')
|
|
8
8
|
const binding = require('./binding')
|
|
9
9
|
|
|
10
|
+
const kind = Symbol.for('bare.buffer.kind')
|
|
11
|
+
|
|
10
12
|
let poolSize = 0
|
|
11
13
|
|
|
12
14
|
module.exports = exports = class Buffer extends Uint8Array {
|
|
13
|
-
static {
|
|
14
|
-
|
|
15
|
+
static get [kind]() {
|
|
16
|
+
return 0 // Compatibility version
|
|
15
17
|
}
|
|
16
18
|
|
|
17
19
|
static get poolSize() {
|
|
@@ -60,8 +62,8 @@ module.exports = exports = class Buffer extends Uint8Array {
|
|
|
60
62
|
super(arrayBuffer, offset, length)
|
|
61
63
|
}
|
|
62
64
|
|
|
63
|
-
[
|
|
64
|
-
return Buffer
|
|
65
|
+
get [kind]() {
|
|
66
|
+
return Buffer[kind]
|
|
65
67
|
}
|
|
66
68
|
|
|
67
69
|
copy(target, targetStart = 0, sourceStart = 0, sourceEnd = this.byteLength) {
|
|
@@ -562,17 +564,10 @@ function viewOf(buffer) {
|
|
|
562
564
|
|
|
563
565
|
exports.isBuffer = function isBuffer(value) {
|
|
564
566
|
if (value instanceof Buffer) return true
|
|
565
|
-
if (typeof value !== 'object' || value === null) return false
|
|
566
|
-
|
|
567
|
-
let constructor = value.constructor
|
|
568
|
-
|
|
569
|
-
while (typeof constructor === 'function') {
|
|
570
|
-
if (binding.isTagged(constructor)) return true
|
|
571
567
|
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
return false
|
|
568
|
+
return (
|
|
569
|
+
typeof value === 'object' && value !== null && value[kind] === Buffer[kind]
|
|
570
|
+
)
|
|
576
571
|
}
|
|
577
572
|
|
|
578
573
|
exports.isEncoding = function isEncoding(encoding) {
|
package/lib/base64.js
CHANGED
|
@@ -9,6 +9,19 @@ exports.byteLength = function byteLength(string) {
|
|
|
9
9
|
return (len * 3) >>> 2
|
|
10
10
|
}
|
|
11
11
|
|
|
12
|
-
exports.toString =
|
|
12
|
+
exports.toString = function toString(buffer) {
|
|
13
|
+
return binding.toStringBase64(
|
|
14
|
+
buffer.buffer,
|
|
15
|
+
buffer.byteOffset,
|
|
16
|
+
buffer.byteLength
|
|
17
|
+
)
|
|
18
|
+
}
|
|
13
19
|
|
|
14
|
-
exports.write =
|
|
20
|
+
exports.write = function write(buffer, string) {
|
|
21
|
+
return binding.writeBase64(
|
|
22
|
+
buffer.buffer,
|
|
23
|
+
buffer.byteOffset,
|
|
24
|
+
buffer.byteLength,
|
|
25
|
+
string
|
|
26
|
+
)
|
|
27
|
+
}
|
package/lib/constants.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
}
|
|
1
|
+
const binding = require('../binding')
|
|
2
|
+
|
|
3
|
+
module.exports = binding.constants
|
package/lib/hex.js
CHANGED
|
@@ -4,6 +4,19 @@ exports.byteLength = function byteLength(string) {
|
|
|
4
4
|
return string.length >>> 1
|
|
5
5
|
}
|
|
6
6
|
|
|
7
|
-
exports.toString =
|
|
7
|
+
exports.toString = function toString(buffer) {
|
|
8
|
+
return binding.toStringHex(
|
|
9
|
+
buffer.buffer,
|
|
10
|
+
buffer.byteOffset,
|
|
11
|
+
buffer.byteLength
|
|
12
|
+
)
|
|
13
|
+
}
|
|
8
14
|
|
|
9
|
-
exports.write =
|
|
15
|
+
exports.write = function write(buffer, string) {
|
|
16
|
+
return binding.writeHex(
|
|
17
|
+
buffer.buffer,
|
|
18
|
+
buffer.byteOffset,
|
|
19
|
+
buffer.byteLength,
|
|
20
|
+
string
|
|
21
|
+
)
|
|
22
|
+
}
|
package/lib/latin1.js
CHANGED
|
@@ -4,6 +4,19 @@ exports.byteLength = function byteLength(string) {
|
|
|
4
4
|
return string.length
|
|
5
5
|
}
|
|
6
6
|
|
|
7
|
-
exports.toString =
|
|
7
|
+
exports.toString = function toString(buffer) {
|
|
8
|
+
return binding.toStringLatin1(
|
|
9
|
+
buffer.buffer,
|
|
10
|
+
buffer.byteOffset,
|
|
11
|
+
buffer.byteLength
|
|
12
|
+
)
|
|
13
|
+
}
|
|
8
14
|
|
|
9
|
-
exports.write =
|
|
15
|
+
exports.write = function write(buffer, string) {
|
|
16
|
+
return binding.writeLatin1(
|
|
17
|
+
buffer.buffer,
|
|
18
|
+
buffer.byteOffset,
|
|
19
|
+
buffer.byteLength,
|
|
20
|
+
string
|
|
21
|
+
)
|
|
22
|
+
}
|
package/lib/utf16le.js
CHANGED
|
@@ -4,6 +4,19 @@ exports.byteLength = function byteLength(string) {
|
|
|
4
4
|
return string.length * 2
|
|
5
5
|
}
|
|
6
6
|
|
|
7
|
-
exports.toString =
|
|
7
|
+
exports.toString = function toString(buffer) {
|
|
8
|
+
return binding.toStringUTF16LE(
|
|
9
|
+
buffer.buffer,
|
|
10
|
+
buffer.byteOffset,
|
|
11
|
+
buffer.byteLength
|
|
12
|
+
)
|
|
13
|
+
}
|
|
8
14
|
|
|
9
|
-
exports.write =
|
|
15
|
+
exports.write = function write(buffer, string) {
|
|
16
|
+
return binding.writeUTF16LE(
|
|
17
|
+
buffer.buffer,
|
|
18
|
+
buffer.byteOffset,
|
|
19
|
+
buffer.byteLength,
|
|
20
|
+
string
|
|
21
|
+
)
|
|
22
|
+
}
|
package/lib/utf8.js
CHANGED
|
@@ -1,7 +1,22 @@
|
|
|
1
1
|
const binding = require('../binding')
|
|
2
2
|
|
|
3
|
-
exports.byteLength =
|
|
3
|
+
exports.byteLength = function byteLength(string) {
|
|
4
|
+
return binding.byteLengthUTF8(string)
|
|
5
|
+
}
|
|
4
6
|
|
|
5
|
-
exports.toString =
|
|
7
|
+
exports.toString = function toString(buffer) {
|
|
8
|
+
return binding.toStringUTF8(
|
|
9
|
+
buffer.buffer,
|
|
10
|
+
buffer.byteOffset,
|
|
11
|
+
buffer.byteLength
|
|
12
|
+
)
|
|
13
|
+
}
|
|
6
14
|
|
|
7
|
-
exports.write =
|
|
15
|
+
exports.write = function write(buffer, string) {
|
|
16
|
+
return binding.writeUTF8(
|
|
17
|
+
buffer.buffer,
|
|
18
|
+
buffer.byteOffset,
|
|
19
|
+
buffer.byteLength,
|
|
20
|
+
string
|
|
21
|
+
)
|
|
22
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "bare-buffer",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.2.0",
|
|
4
4
|
"description": "Native buffers for JavaScript",
|
|
5
5
|
"exports": {
|
|
6
6
|
"./package": "./package.json",
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
},
|
|
44
44
|
"homepage": "https://github.com/holepunchto/bare-buffer#readme",
|
|
45
45
|
"engines": {
|
|
46
|
-
"bare": ">=1.
|
|
46
|
+
"bare": ">=1.20.0"
|
|
47
47
|
},
|
|
48
48
|
"devDependencies": {
|
|
49
49
|
"brittle": "^3.1.1",
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|