bare-buffer 3.1.4 → 3.3.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/CMakeLists.txt +1 -1
- package/binding.c +386 -199
- package/index.js +3 -1
- package/lib/base64.js +15 -2
- package/lib/base64url.js +27 -0
- 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/CMakeLists.txt
CHANGED
|
@@ -6,7 +6,7 @@ find_package(cmake-fetch REQUIRED PATHS node_modules/cmake-fetch)
|
|
|
6
6
|
project(bare_buffer C)
|
|
7
7
|
|
|
8
8
|
fetch_package("github:holepunchto/libutf#9509b28")
|
|
9
|
-
fetch_package("github:holepunchto/libbase64#
|
|
9
|
+
fetch_package("github:holepunchto/libbase64#86afd29")
|
|
10
10
|
fetch_package("github:holepunchto/libhex#1dfad95")
|
|
11
11
|
|
|
12
12
|
add_bare_module(bare_buffer)
|
package/binding.c
CHANGED
|
@@ -21,7 +21,7 @@ bare_buffer__memcmp(void *a, size_t a_len, void *b, size_t b_len) {
|
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
static void
|
|
24
|
-
|
|
24
|
+
bare_buffer__on_finalize_string(js_env_t *env, void *data, void *finalize_hint) {
|
|
25
25
|
free(data);
|
|
26
26
|
}
|
|
27
27
|
|
|
@@ -37,8 +37,8 @@ bare_buffer_alloc(js_env_t *env, js_callback_info_t *info) {
|
|
|
37
37
|
|
|
38
38
|
assert(argc == 1);
|
|
39
39
|
|
|
40
|
-
|
|
41
|
-
err =
|
|
40
|
+
int64_t len;
|
|
41
|
+
err = js_get_value_int64(env, argv[0], &len);
|
|
42
42
|
assert(err == 0);
|
|
43
43
|
|
|
44
44
|
js_value_t *result;
|
|
@@ -60,8 +60,8 @@ bare_buffer_alloc_unsafe(js_env_t *env, js_callback_info_t *info) {
|
|
|
60
60
|
|
|
61
61
|
assert(argc == 1);
|
|
62
62
|
|
|
63
|
-
|
|
64
|
-
err =
|
|
63
|
+
int64_t len;
|
|
64
|
+
err = js_get_value_int64(env, argv[0], &len);
|
|
65
65
|
assert(err == 0);
|
|
66
66
|
|
|
67
67
|
js_value_t *result;
|
|
@@ -71,7 +71,7 @@ bare_buffer_alloc_unsafe(js_env_t *env, js_callback_info_t *info) {
|
|
|
71
71
|
return result;
|
|
72
72
|
}
|
|
73
73
|
|
|
74
|
-
static
|
|
74
|
+
static int64_t
|
|
75
75
|
bare_buffer_typed_byte_length_utf8(js_value_t *receiver, js_value_t *str, js_typed_callback_info_t *info) {
|
|
76
76
|
int err;
|
|
77
77
|
|
|
@@ -83,7 +83,7 @@ bare_buffer_typed_byte_length_utf8(js_value_t *receiver, js_value_t *str, js_typ
|
|
|
83
83
|
err = js_get_value_string_utf8(env, str, NULL, 0, &str_len);
|
|
84
84
|
assert(err == 0);
|
|
85
85
|
|
|
86
|
-
return
|
|
86
|
+
return str_len;
|
|
87
87
|
}
|
|
88
88
|
|
|
89
89
|
static js_value_t *
|
|
@@ -103,7 +103,7 @@ bare_buffer_byte_length_utf8(js_env_t *env, js_callback_info_t *info) {
|
|
|
103
103
|
assert(err == 0);
|
|
104
104
|
|
|
105
105
|
js_value_t *result;
|
|
106
|
-
err =
|
|
106
|
+
err = js_create_int64(env, str_len, &result);
|
|
107
107
|
assert(err == 0);
|
|
108
108
|
|
|
109
109
|
return result;
|
|
@@ -113,76 +113,89 @@ static js_value_t *
|
|
|
113
113
|
bare_buffer_to_string_utf8(js_env_t *env, js_callback_info_t *info) {
|
|
114
114
|
int err;
|
|
115
115
|
|
|
116
|
-
size_t argc =
|
|
117
|
-
js_value_t *argv[
|
|
116
|
+
size_t argc = 3;
|
|
117
|
+
js_value_t *argv[3];
|
|
118
118
|
|
|
119
119
|
err = js_get_callback_info(env, info, &argc, argv, NULL, NULL);
|
|
120
120
|
assert(err == 0);
|
|
121
121
|
|
|
122
|
-
assert(argc ==
|
|
122
|
+
assert(argc == 3);
|
|
123
123
|
|
|
124
124
|
utf8_t *buf;
|
|
125
|
-
|
|
126
|
-
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);
|
|
127
134
|
assert(err == 0);
|
|
128
135
|
|
|
129
136
|
js_value_t *result;
|
|
130
|
-
err = js_create_string_utf8(env, buf,
|
|
137
|
+
err = js_create_string_utf8(env, &buf[offset], len, &result);
|
|
131
138
|
assert(err == 0);
|
|
132
139
|
|
|
133
140
|
return result;
|
|
134
141
|
}
|
|
135
142
|
|
|
136
|
-
static
|
|
137
|
-
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
|
+
) {
|
|
138
152
|
int err;
|
|
139
153
|
|
|
140
154
|
js_env_t *env;
|
|
141
155
|
err = js_get_typed_callback_info(info, &env, NULL);
|
|
142
156
|
assert(err == 0);
|
|
143
157
|
|
|
144
|
-
|
|
145
|
-
err =
|
|
146
|
-
assert(err == 0);
|
|
147
|
-
|
|
148
|
-
void *buf;
|
|
149
|
-
size_t buf_len;
|
|
150
|
-
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);
|
|
151
160
|
assert(err == 0);
|
|
152
161
|
|
|
153
162
|
size_t str_len;
|
|
154
|
-
err = js_get_value_string_utf8(env, string, buf,
|
|
155
|
-
assert(err == 0);
|
|
156
|
-
|
|
157
|
-
err = js_close_handle_scope(env, scope);
|
|
163
|
+
err = js_get_value_string_utf8(env, string, &buf[offset], len, &str_len);
|
|
158
164
|
assert(err == 0);
|
|
159
165
|
|
|
160
|
-
return
|
|
166
|
+
return str_len;
|
|
161
167
|
}
|
|
162
168
|
|
|
163
169
|
static js_value_t *
|
|
164
170
|
bare_buffer_write_utf8(js_env_t *env, js_callback_info_t *info) {
|
|
165
171
|
int err;
|
|
166
172
|
|
|
167
|
-
size_t argc =
|
|
168
|
-
js_value_t *argv[
|
|
173
|
+
size_t argc = 4;
|
|
174
|
+
js_value_t *argv[4];
|
|
169
175
|
|
|
170
176
|
err = js_get_callback_info(env, info, &argc, argv, NULL, NULL);
|
|
171
177
|
assert(err == 0);
|
|
172
178
|
|
|
173
|
-
assert(argc ==
|
|
179
|
+
assert(argc == 4);
|
|
174
180
|
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
err
|
|
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);
|
|
188
|
+
|
|
189
|
+
int64_t len;
|
|
190
|
+
err = js_get_value_int64(env, argv[2], &len);
|
|
178
191
|
assert(err == 0);
|
|
179
192
|
|
|
180
193
|
size_t str_len;
|
|
181
|
-
err = js_get_value_string_utf8(env, argv[
|
|
194
|
+
err = js_get_value_string_utf8(env, argv[3], &buf[offset], len, &str_len);
|
|
182
195
|
assert(err == 0);
|
|
183
196
|
|
|
184
197
|
js_value_t *result;
|
|
185
|
-
err =
|
|
198
|
+
err = js_create_int64(env, str_len, &result);
|
|
186
199
|
assert(err == 0);
|
|
187
200
|
|
|
188
201
|
return result;
|
|
@@ -192,86 +205,102 @@ static js_value_t *
|
|
|
192
205
|
bare_buffer_to_string_utf16le(js_env_t *env, js_callback_info_t *info) {
|
|
193
206
|
int err;
|
|
194
207
|
|
|
195
|
-
size_t argc =
|
|
196
|
-
js_value_t *argv[
|
|
208
|
+
size_t argc = 3;
|
|
209
|
+
js_value_t *argv[3];
|
|
197
210
|
|
|
198
211
|
err = js_get_callback_info(env, info, &argc, argv, NULL, NULL);
|
|
199
212
|
assert(err == 0);
|
|
200
213
|
|
|
201
|
-
assert(argc ==
|
|
214
|
+
assert(argc == 3);
|
|
202
215
|
|
|
203
216
|
utf16_t *buf;
|
|
204
|
-
|
|
205
|
-
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);
|
|
206
222
|
assert(err == 0);
|
|
207
223
|
|
|
208
|
-
|
|
224
|
+
int64_t len;
|
|
225
|
+
err = js_get_value_int64(env, argv[2], &len);
|
|
226
|
+
assert(err == 0);
|
|
227
|
+
|
|
228
|
+
offset /= sizeof(utf16_t);
|
|
229
|
+
len /= sizeof(utf16_t);
|
|
209
230
|
|
|
210
231
|
js_value_t *result;
|
|
211
|
-
err = js_create_string_utf16le(env, buf,
|
|
232
|
+
err = js_create_string_utf16le(env, &buf[offset], len, &result);
|
|
212
233
|
assert(err == 0);
|
|
213
234
|
|
|
214
235
|
return result;
|
|
215
236
|
}
|
|
216
237
|
|
|
217
|
-
static
|
|
218
|
-
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
|
+
) {
|
|
219
247
|
int err;
|
|
220
248
|
|
|
221
249
|
js_env_t *env;
|
|
222
250
|
err = js_get_typed_callback_info(info, &env, NULL);
|
|
223
251
|
assert(err == 0);
|
|
224
252
|
|
|
225
|
-
|
|
226
|
-
err =
|
|
227
|
-
assert(err == 0);
|
|
228
|
-
|
|
229
|
-
void *buf;
|
|
230
|
-
size_t buf_len;
|
|
231
|
-
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);
|
|
232
255
|
assert(err == 0);
|
|
233
256
|
|
|
234
|
-
|
|
257
|
+
offset /= sizeof(utf16_t);
|
|
258
|
+
len /= sizeof(utf16_t);
|
|
235
259
|
|
|
236
260
|
size_t str_len;
|
|
237
|
-
err = js_get_value_string_utf16le(env, string, buf,
|
|
261
|
+
err = js_get_value_string_utf16le(env, string, &buf[offset], len, &str_len);
|
|
238
262
|
assert(err == 0);
|
|
239
263
|
|
|
240
264
|
str_len *= sizeof(utf16_t);
|
|
241
265
|
|
|
242
|
-
|
|
243
|
-
assert(err == 0);
|
|
244
|
-
|
|
245
|
-
return (uint32_t) str_len;
|
|
266
|
+
return str_len;
|
|
246
267
|
}
|
|
247
268
|
|
|
248
269
|
static js_value_t *
|
|
249
270
|
bare_buffer_write_utf16le(js_env_t *env, js_callback_info_t *info) {
|
|
250
271
|
int err;
|
|
251
272
|
|
|
252
|
-
size_t argc =
|
|
253
|
-
js_value_t *argv[
|
|
273
|
+
size_t argc = 4;
|
|
274
|
+
js_value_t *argv[4];
|
|
254
275
|
|
|
255
276
|
err = js_get_callback_info(env, info, &argc, argv, NULL, NULL);
|
|
256
277
|
assert(err == 0);
|
|
257
278
|
|
|
258
|
-
assert(argc ==
|
|
279
|
+
assert(argc == 4);
|
|
280
|
+
|
|
281
|
+
utf16_t *buf;
|
|
282
|
+
err = js_get_arraybuffer_info(env, argv[0], (void **) &buf, NULL);
|
|
283
|
+
assert(err == 0);
|
|
259
284
|
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
err = js_get_typedarray_info(env, argv[0], NULL, &buf, &buf_len, NULL, NULL);
|
|
285
|
+
int64_t offset;
|
|
286
|
+
err = js_get_value_int64(env, argv[1], &offset);
|
|
263
287
|
assert(err == 0);
|
|
264
288
|
|
|
265
|
-
|
|
289
|
+
int64_t len;
|
|
290
|
+
err = js_get_value_int64(env, argv[2], &len);
|
|
291
|
+
assert(err == 0);
|
|
292
|
+
|
|
293
|
+
offset /= sizeof(utf16_t);
|
|
294
|
+
len /= sizeof(utf16_t);
|
|
266
295
|
|
|
267
296
|
size_t str_len;
|
|
268
|
-
err = js_get_value_string_utf16le(env, argv[
|
|
297
|
+
err = js_get_value_string_utf16le(env, argv[3], &buf[offset], len, &str_len);
|
|
269
298
|
assert(err == 0);
|
|
270
299
|
|
|
271
300
|
str_len *= sizeof(utf16_t);
|
|
272
301
|
|
|
273
302
|
js_value_t *result;
|
|
274
|
-
err =
|
|
303
|
+
err = js_create_int64(env, str_len, &result);
|
|
275
304
|
assert(err == 0);
|
|
276
305
|
|
|
277
306
|
return result;
|
|
@@ -281,128 +310,189 @@ static js_value_t *
|
|
|
281
310
|
bare_buffer_to_string_latin1(js_env_t *env, js_callback_info_t *info) {
|
|
282
311
|
int err;
|
|
283
312
|
|
|
284
|
-
size_t argc =
|
|
285
|
-
js_value_t *argv[
|
|
313
|
+
size_t argc = 3;
|
|
314
|
+
js_value_t *argv[3];
|
|
286
315
|
|
|
287
316
|
err = js_get_callback_info(env, info, &argc, argv, NULL, NULL);
|
|
288
317
|
assert(err == 0);
|
|
289
318
|
|
|
290
|
-
assert(argc ==
|
|
319
|
+
assert(argc == 3);
|
|
291
320
|
|
|
292
321
|
latin1_t *buf;
|
|
293
|
-
|
|
294
|
-
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);
|
|
295
331
|
assert(err == 0);
|
|
296
332
|
|
|
297
333
|
js_value_t *result;
|
|
298
|
-
err = js_create_string_latin1(env, buf,
|
|
334
|
+
err = js_create_string_latin1(env, &buf[offset], len, &result);
|
|
299
335
|
assert(err == 0);
|
|
300
336
|
|
|
301
337
|
return result;
|
|
302
338
|
}
|
|
303
339
|
|
|
304
|
-
static
|
|
305
|
-
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
|
+
) {
|
|
306
349
|
int err;
|
|
307
350
|
|
|
308
351
|
js_env_t *env;
|
|
309
352
|
err = js_get_typed_callback_info(info, &env, NULL);
|
|
310
353
|
assert(err == 0);
|
|
311
354
|
|
|
312
|
-
|
|
313
|
-
err =
|
|
355
|
+
latin1_t *buf;
|
|
356
|
+
err = js_get_arraybuffer_info(env, handle, (void **) &buf, NULL);
|
|
357
|
+
assert(err == 0);
|
|
358
|
+
|
|
359
|
+
size_t str_len;
|
|
360
|
+
err = js_get_value_string_latin1(env, string, &buf[offset], len, &str_len);
|
|
361
|
+
assert(err == 0);
|
|
362
|
+
|
|
363
|
+
return str_len;
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
static js_value_t *
|
|
367
|
+
bare_buffer_write_latin1(js_env_t *env, js_callback_info_t *info) {
|
|
368
|
+
int err;
|
|
369
|
+
|
|
370
|
+
size_t argc = 4;
|
|
371
|
+
js_value_t *argv[4];
|
|
372
|
+
|
|
373
|
+
err = js_get_callback_info(env, info, &argc, argv, NULL, NULL);
|
|
374
|
+
assert(err == 0);
|
|
375
|
+
|
|
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);
|
|
381
|
+
|
|
382
|
+
int64_t offset;
|
|
383
|
+
err = js_get_value_int64(env, argv[1], &offset);
|
|
314
384
|
assert(err == 0);
|
|
315
385
|
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
err = js_get_typedarray_info(env, typedarray, NULL, &buf, &buf_len, NULL, NULL);
|
|
386
|
+
int64_t len;
|
|
387
|
+
err = js_get_value_int64(env, argv[2], &len);
|
|
319
388
|
assert(err == 0);
|
|
320
389
|
|
|
321
390
|
size_t str_len;
|
|
322
|
-
err = js_get_value_string_latin1(env,
|
|
391
|
+
err = js_get_value_string_latin1(env, argv[3], &buf[offset], len, &str_len);
|
|
323
392
|
assert(err == 0);
|
|
324
393
|
|
|
325
|
-
|
|
394
|
+
js_value_t *result;
|
|
395
|
+
err = js_create_int64(env, str_len, &result);
|
|
326
396
|
assert(err == 0);
|
|
327
397
|
|
|
328
|
-
return
|
|
398
|
+
return result;
|
|
329
399
|
}
|
|
330
400
|
|
|
331
401
|
static js_value_t *
|
|
332
|
-
|
|
402
|
+
bare_buffer_to_string_base64(js_env_t *env, js_callback_info_t *info) {
|
|
333
403
|
int err;
|
|
334
404
|
|
|
335
|
-
size_t argc =
|
|
336
|
-
js_value_t *argv[
|
|
405
|
+
size_t argc = 3;
|
|
406
|
+
js_value_t *argv[3];
|
|
337
407
|
|
|
338
408
|
err = js_get_callback_info(env, info, &argc, argv, NULL, NULL);
|
|
339
409
|
assert(err == 0);
|
|
340
410
|
|
|
341
|
-
assert(argc ==
|
|
411
|
+
assert(argc == 3);
|
|
412
|
+
|
|
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);
|
|
342
420
|
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
err = js_get_typedarray_info(env, argv[0], NULL, &buf, &buf_len, NULL, NULL);
|
|
421
|
+
int64_t len;
|
|
422
|
+
err = js_get_value_int64(env, argv[2], &len);
|
|
346
423
|
assert(err == 0);
|
|
347
424
|
|
|
348
425
|
size_t str_len;
|
|
349
|
-
err =
|
|
426
|
+
err = base64_encode_utf8(&buf[offset], len, NULL, &str_len);
|
|
427
|
+
assert(err == 0);
|
|
428
|
+
|
|
429
|
+
utf8_t *str = malloc(str_len);
|
|
430
|
+
err = base64_encode_utf8(&buf[offset], len, str, &str_len);
|
|
350
431
|
assert(err == 0);
|
|
351
432
|
|
|
352
433
|
js_value_t *result;
|
|
353
|
-
err =
|
|
434
|
+
err = js_create_external_string_latin1(env, str, str_len, bare_buffer__on_finalize_string, NULL, &result, NULL);
|
|
354
435
|
assert(err == 0);
|
|
355
436
|
|
|
356
437
|
return result;
|
|
357
438
|
}
|
|
358
439
|
|
|
359
440
|
static js_value_t *
|
|
360
|
-
|
|
441
|
+
bare_buffer_to_string_base64url(js_env_t *env, js_callback_info_t *info) {
|
|
361
442
|
int err;
|
|
362
443
|
|
|
363
|
-
size_t argc =
|
|
364
|
-
js_value_t *argv[
|
|
444
|
+
size_t argc = 3;
|
|
445
|
+
js_value_t *argv[3];
|
|
365
446
|
|
|
366
447
|
err = js_get_callback_info(env, info, &argc, argv, NULL, NULL);
|
|
367
448
|
assert(err == 0);
|
|
368
449
|
|
|
369
|
-
assert(argc ==
|
|
450
|
+
assert(argc == 3);
|
|
451
|
+
|
|
452
|
+
utf8_t *buf;
|
|
453
|
+
err = js_get_arraybuffer_info(env, argv[0], (void **) &buf, NULL);
|
|
454
|
+
assert(err == 0);
|
|
455
|
+
|
|
456
|
+
int64_t offset;
|
|
457
|
+
err = js_get_value_int64(env, argv[1], &offset);
|
|
458
|
+
assert(err == 0);
|
|
370
459
|
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
err = js_get_typedarray_info(env, argv[0], NULL, &buf, &buf_len, NULL, NULL);
|
|
460
|
+
int64_t len;
|
|
461
|
+
err = js_get_value_int64(env, argv[2], &len);
|
|
374
462
|
assert(err == 0);
|
|
375
463
|
|
|
376
464
|
size_t str_len;
|
|
377
|
-
err =
|
|
465
|
+
err = base64url_encode_utf8(&buf[offset], len, NULL, &str_len);
|
|
378
466
|
assert(err == 0);
|
|
379
467
|
|
|
380
468
|
utf8_t *str = malloc(str_len);
|
|
381
|
-
err =
|
|
469
|
+
err = base64url_encode_utf8(&buf[offset], len, str, &str_len);
|
|
382
470
|
assert(err == 0);
|
|
383
471
|
|
|
384
472
|
js_value_t *result;
|
|
385
|
-
err = js_create_external_string_latin1(env, str, str_len,
|
|
473
|
+
err = js_create_external_string_latin1(env, str, str_len, bare_buffer__on_finalize_string, NULL, &result, NULL);
|
|
386
474
|
assert(err == 0);
|
|
387
475
|
|
|
388
476
|
return result;
|
|
389
477
|
}
|
|
390
478
|
|
|
391
|
-
static
|
|
392
|
-
bare_buffer_typed_write_base64(
|
|
479
|
+
static int64_t
|
|
480
|
+
bare_buffer_typed_write_base64(
|
|
481
|
+
js_value_t *receiver,
|
|
482
|
+
js_value_t *handle,
|
|
483
|
+
int64_t offset,
|
|
484
|
+
int64_t len,
|
|
485
|
+
js_value_t *string,
|
|
486
|
+
js_typed_callback_info_t *info
|
|
487
|
+
) {
|
|
393
488
|
int err;
|
|
394
489
|
|
|
395
490
|
js_env_t *env;
|
|
396
491
|
err = js_get_typed_callback_info(info, &env, NULL);
|
|
397
492
|
assert(err == 0);
|
|
398
493
|
|
|
399
|
-
|
|
400
|
-
err =
|
|
401
|
-
assert(err == 0);
|
|
402
|
-
|
|
403
|
-
void *buf;
|
|
404
|
-
size_t buf_len;
|
|
405
|
-
err = js_get_typedarray_info(env, typedarray, NULL, &buf, &buf_len, NULL, NULL);
|
|
494
|
+
utf8_t *buf;
|
|
495
|
+
err = js_get_arraybuffer_info(env, handle, (void **) &buf, NULL);
|
|
406
496
|
assert(err == 0);
|
|
407
497
|
|
|
408
498
|
js_string_encoding_t encoding;
|
|
@@ -413,38 +503,52 @@ bare_buffer_typed_write_base64(js_value_t *receiver, js_value_t *typedarray, js_
|
|
|
413
503
|
err = js_get_string_view(env, string, &encoding, &str, &str_len, &str_view);
|
|
414
504
|
assert(err == 0);
|
|
415
505
|
|
|
506
|
+
size_t written = len;
|
|
507
|
+
|
|
416
508
|
if (encoding == js_utf16le) {
|
|
417
|
-
err = base64_decode_utf16le(str, str_len, buf, &
|
|
418
|
-
assert(err == 0);
|
|
509
|
+
err = base64_decode_utf16le(str, str_len, &buf[offset], &written);
|
|
419
510
|
} else {
|
|
420
|
-
err = base64_decode_utf8(str, str_len, buf, &
|
|
511
|
+
err = base64_decode_utf8(str, str_len, &buf[offset], &written);
|
|
512
|
+
}
|
|
513
|
+
|
|
514
|
+
if (err != 0) {
|
|
515
|
+
err = js_throw_error(env, NULL, "Invalid input");
|
|
516
|
+
assert(err == 0);
|
|
517
|
+
|
|
518
|
+
err = js_release_string_view(env, str_view);
|
|
421
519
|
assert(err == 0);
|
|
520
|
+
|
|
521
|
+
return 0;
|
|
422
522
|
}
|
|
423
523
|
|
|
424
524
|
err = js_release_string_view(env, str_view);
|
|
425
525
|
assert(err == 0);
|
|
426
526
|
|
|
427
|
-
|
|
428
|
-
assert(err == 0);
|
|
429
|
-
|
|
430
|
-
return buf_len;
|
|
527
|
+
return written;
|
|
431
528
|
}
|
|
432
529
|
|
|
433
530
|
static js_value_t *
|
|
434
531
|
bare_buffer_write_base64(js_env_t *env, js_callback_info_t *info) {
|
|
435
532
|
int err;
|
|
436
533
|
|
|
437
|
-
size_t argc =
|
|
438
|
-
js_value_t *argv[
|
|
534
|
+
size_t argc = 4;
|
|
535
|
+
js_value_t *argv[4];
|
|
439
536
|
|
|
440
537
|
err = js_get_callback_info(env, info, &argc, argv, NULL, NULL);
|
|
441
538
|
assert(err == 0);
|
|
442
539
|
|
|
443
|
-
assert(argc ==
|
|
540
|
+
assert(argc == 4);
|
|
541
|
+
|
|
542
|
+
utf8_t *buf;
|
|
543
|
+
err = js_get_arraybuffer_info(env, argv[0], (void **) &buf, NULL);
|
|
544
|
+
assert(err == 0);
|
|
545
|
+
|
|
546
|
+
int64_t offset;
|
|
547
|
+
err = js_get_value_int64(env, argv[1], &offset);
|
|
548
|
+
assert(err == 0);
|
|
444
549
|
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
err = js_get_typedarray_info(env, argv[0], NULL, &buf, &buf_len, NULL, NULL);
|
|
550
|
+
int64_t len;
|
|
551
|
+
err = js_get_value_int64(env, argv[2], &len);
|
|
448
552
|
assert(err == 0);
|
|
449
553
|
|
|
450
554
|
js_string_encoding_t encoding;
|
|
@@ -452,22 +556,32 @@ bare_buffer_write_base64(js_env_t *env, js_callback_info_t *info) {
|
|
|
452
556
|
size_t str_len;
|
|
453
557
|
|
|
454
558
|
js_string_view_t *str_view;
|
|
455
|
-
err = js_get_string_view(env, argv[
|
|
559
|
+
err = js_get_string_view(env, argv[3], &encoding, &str, &str_len, &str_view);
|
|
456
560
|
assert(err == 0);
|
|
457
561
|
|
|
562
|
+
size_t written = len;
|
|
563
|
+
|
|
458
564
|
if (encoding == js_utf16le) {
|
|
459
|
-
err = base64_decode_utf16le(str, str_len, buf, &
|
|
460
|
-
assert(err == 0);
|
|
565
|
+
err = base64_decode_utf16le(str, str_len, &buf[offset], &written);
|
|
461
566
|
} else {
|
|
462
|
-
err = base64_decode_utf8(str, str_len, buf, &
|
|
567
|
+
err = base64_decode_utf8(str, str_len, &buf[offset], &written);
|
|
568
|
+
}
|
|
569
|
+
|
|
570
|
+
if (err != 0) {
|
|
571
|
+
err = js_throw_error(env, NULL, "Invalid input");
|
|
463
572
|
assert(err == 0);
|
|
573
|
+
|
|
574
|
+
err = js_release_string_view(env, str_view);
|
|
575
|
+
assert(err == 0);
|
|
576
|
+
|
|
577
|
+
return NULL;
|
|
464
578
|
}
|
|
465
579
|
|
|
466
580
|
err = js_release_string_view(env, str_view);
|
|
467
581
|
assert(err == 0);
|
|
468
582
|
|
|
469
583
|
js_value_t *result;
|
|
470
|
-
err =
|
|
584
|
+
err = js_create_int64(env, written, &result);
|
|
471
585
|
assert(err == 0);
|
|
472
586
|
|
|
473
587
|
return result;
|
|
@@ -477,49 +591,58 @@ static js_value_t *
|
|
|
477
591
|
bare_buffer_to_string_hex(js_env_t *env, js_callback_info_t *info) {
|
|
478
592
|
int err;
|
|
479
593
|
|
|
480
|
-
size_t argc =
|
|
481
|
-
js_value_t *argv[
|
|
594
|
+
size_t argc = 3;
|
|
595
|
+
js_value_t *argv[3];
|
|
482
596
|
|
|
483
597
|
err = js_get_callback_info(env, info, &argc, argv, NULL, NULL);
|
|
484
598
|
assert(err == 0);
|
|
485
599
|
|
|
486
|
-
assert(argc ==
|
|
600
|
+
assert(argc == 3);
|
|
601
|
+
|
|
602
|
+
utf8_t *buf;
|
|
603
|
+
err = js_get_arraybuffer_info(env, argv[0], (void **) &buf, NULL);
|
|
604
|
+
assert(err == 0);
|
|
605
|
+
|
|
606
|
+
int64_t offset;
|
|
607
|
+
err = js_get_value_int64(env, argv[1], &offset);
|
|
608
|
+
assert(err == 0);
|
|
487
609
|
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
err = js_get_typedarray_info(env, argv[0], NULL, &buf, &buf_len, NULL, NULL);
|
|
610
|
+
int64_t len;
|
|
611
|
+
err = js_get_value_int64(env, argv[2], &len);
|
|
491
612
|
assert(err == 0);
|
|
492
613
|
|
|
493
614
|
size_t str_len;
|
|
494
|
-
err = hex_encode_utf8(buf,
|
|
615
|
+
err = hex_encode_utf8(&buf[offset], len, NULL, &str_len);
|
|
495
616
|
assert(err == 0);
|
|
496
617
|
|
|
497
618
|
utf8_t *str = malloc(str_len);
|
|
498
|
-
err = hex_encode_utf8(buf,
|
|
619
|
+
err = hex_encode_utf8(&buf[offset], len, str, &str_len);
|
|
499
620
|
assert(err == 0);
|
|
500
621
|
|
|
501
622
|
js_value_t *result;
|
|
502
|
-
err = js_create_external_string_latin1(env, str, str_len,
|
|
623
|
+
err = js_create_external_string_latin1(env, str, str_len, bare_buffer__on_finalize_string, NULL, &result, NULL);
|
|
503
624
|
assert(err == 0);
|
|
504
625
|
|
|
505
626
|
return result;
|
|
506
627
|
}
|
|
507
628
|
|
|
508
|
-
static
|
|
509
|
-
bare_buffer_typed_write_hex(
|
|
629
|
+
static int64_t
|
|
630
|
+
bare_buffer_typed_write_hex(
|
|
631
|
+
js_value_t *receiver,
|
|
632
|
+
js_value_t *handle,
|
|
633
|
+
int64_t offset,
|
|
634
|
+
int64_t len,
|
|
635
|
+
js_value_t *string,
|
|
636
|
+
js_typed_callback_info_t *info
|
|
637
|
+
) {
|
|
510
638
|
int err;
|
|
511
639
|
|
|
512
640
|
js_env_t *env;
|
|
513
641
|
err = js_get_typed_callback_info(info, &env, NULL);
|
|
514
642
|
assert(err == 0);
|
|
515
643
|
|
|
516
|
-
|
|
517
|
-
err =
|
|
518
|
-
assert(err == 0);
|
|
519
|
-
|
|
520
|
-
void *buf;
|
|
521
|
-
size_t buf_len;
|
|
522
|
-
err = js_get_typedarray_info(env, typedarray, NULL, &buf, &buf_len, NULL, NULL);
|
|
644
|
+
utf8_t *buf;
|
|
645
|
+
err = js_get_arraybuffer_info(env, handle, (void **) &buf, NULL);
|
|
523
646
|
assert(err == 0);
|
|
524
647
|
|
|
525
648
|
js_string_encoding_t encoding;
|
|
@@ -530,38 +653,52 @@ bare_buffer_typed_write_hex(js_value_t *receiver, js_value_t *typedarray, js_val
|
|
|
530
653
|
err = js_get_string_view(env, string, &encoding, &str, &str_len, &str_view);
|
|
531
654
|
assert(err == 0);
|
|
532
655
|
|
|
656
|
+
size_t written = len;
|
|
657
|
+
|
|
533
658
|
if (encoding == js_utf16le) {
|
|
534
|
-
err = hex_decode_utf16le(str, str_len, buf, &
|
|
535
|
-
assert(err == 0);
|
|
659
|
+
err = hex_decode_utf16le(str, str_len, &buf[offset], &written);
|
|
536
660
|
} else {
|
|
537
|
-
err = hex_decode_utf8(str, str_len, buf, &
|
|
661
|
+
err = hex_decode_utf8(str, str_len, &buf[offset], &written);
|
|
662
|
+
}
|
|
663
|
+
|
|
664
|
+
if (err != 0) {
|
|
665
|
+
err = js_throw_error(env, NULL, "Invalid input");
|
|
538
666
|
assert(err == 0);
|
|
667
|
+
|
|
668
|
+
err = js_release_string_view(env, str_view);
|
|
669
|
+
assert(err == 0);
|
|
670
|
+
|
|
671
|
+
return 0;
|
|
539
672
|
}
|
|
540
673
|
|
|
541
674
|
err = js_release_string_view(env, str_view);
|
|
542
675
|
assert(err == 0);
|
|
543
676
|
|
|
544
|
-
|
|
545
|
-
assert(err == 0);
|
|
546
|
-
|
|
547
|
-
return buf_len;
|
|
677
|
+
return written;
|
|
548
678
|
}
|
|
549
679
|
|
|
550
680
|
static js_value_t *
|
|
551
681
|
bare_buffer_write_hex(js_env_t *env, js_callback_info_t *info) {
|
|
552
682
|
int err;
|
|
553
683
|
|
|
554
|
-
size_t argc =
|
|
555
|
-
js_value_t *argv[
|
|
684
|
+
size_t argc = 4;
|
|
685
|
+
js_value_t *argv[4];
|
|
556
686
|
|
|
557
687
|
err = js_get_callback_info(env, info, &argc, argv, NULL, NULL);
|
|
558
688
|
assert(err == 0);
|
|
559
689
|
|
|
560
|
-
assert(argc ==
|
|
690
|
+
assert(argc == 4);
|
|
561
691
|
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
err
|
|
692
|
+
utf8_t *buf;
|
|
693
|
+
err = js_get_arraybuffer_info(env, argv[0], (void **) &buf, NULL);
|
|
694
|
+
assert(err == 0);
|
|
695
|
+
|
|
696
|
+
int64_t offset;
|
|
697
|
+
err = js_get_value_int64(env, argv[1], &offset);
|
|
698
|
+
assert(err == 0);
|
|
699
|
+
|
|
700
|
+
int64_t len;
|
|
701
|
+
err = js_get_value_int64(env, argv[2], &len);
|
|
565
702
|
assert(err == 0);
|
|
566
703
|
|
|
567
704
|
js_string_encoding_t encoding;
|
|
@@ -569,22 +706,32 @@ bare_buffer_write_hex(js_env_t *env, js_callback_info_t *info) {
|
|
|
569
706
|
size_t str_len;
|
|
570
707
|
|
|
571
708
|
js_string_view_t *str_view;
|
|
572
|
-
err = js_get_string_view(env, argv[
|
|
709
|
+
err = js_get_string_view(env, argv[3], &encoding, &str, &str_len, &str_view);
|
|
573
710
|
assert(err == 0);
|
|
574
711
|
|
|
712
|
+
size_t written = len;
|
|
713
|
+
|
|
575
714
|
if (encoding == js_utf16le) {
|
|
576
|
-
err = hex_decode_utf16le(str, str_len, buf, &
|
|
577
|
-
assert(err == 0);
|
|
715
|
+
err = hex_decode_utf16le(str, str_len, &buf[offset], &written);
|
|
578
716
|
} else {
|
|
579
|
-
err = hex_decode_utf8(str, str_len, buf, &
|
|
717
|
+
err = hex_decode_utf8(str, str_len, &buf[offset], &written);
|
|
718
|
+
}
|
|
719
|
+
|
|
720
|
+
if (err != 0) {
|
|
721
|
+
err = js_throw_error(env, NULL, "Invalid input");
|
|
722
|
+
assert(err == 0);
|
|
723
|
+
|
|
724
|
+
err = js_release_string_view(env, str_view);
|
|
580
725
|
assert(err == 0);
|
|
726
|
+
|
|
727
|
+
return NULL;
|
|
581
728
|
}
|
|
582
729
|
|
|
583
730
|
err = js_release_string_view(env, str_view);
|
|
584
731
|
assert(err == 0);
|
|
585
732
|
|
|
586
733
|
js_value_t *result;
|
|
587
|
-
err =
|
|
734
|
+
err = js_create_int64(env, written, &result);
|
|
588
735
|
assert(err == 0);
|
|
589
736
|
|
|
590
737
|
return result;
|
|
@@ -594,11 +741,11 @@ static int32_t
|
|
|
594
741
|
bare_buffer_typed_compare(
|
|
595
742
|
js_value_t *receiver,
|
|
596
743
|
js_value_t *a_handle,
|
|
597
|
-
|
|
598
|
-
|
|
744
|
+
int64_t a_offset,
|
|
745
|
+
int64_t a_len,
|
|
599
746
|
js_value_t *b_handle,
|
|
600
|
-
|
|
601
|
-
|
|
747
|
+
int64_t b_offset,
|
|
748
|
+
int64_t b_len,
|
|
602
749
|
js_typed_callback_info_t *info
|
|
603
750
|
) {
|
|
604
751
|
int err;
|
|
@@ -607,12 +754,12 @@ bare_buffer_typed_compare(
|
|
|
607
754
|
err = js_get_typed_callback_info(info, &env, NULL);
|
|
608
755
|
assert(err == 0);
|
|
609
756
|
|
|
610
|
-
|
|
611
|
-
err = js_get_arraybuffer_info(env, a_handle, &a, NULL);
|
|
757
|
+
uint8_t *a;
|
|
758
|
+
err = js_get_arraybuffer_info(env, a_handle, (void **) &a, NULL);
|
|
612
759
|
assert(err == 0);
|
|
613
760
|
|
|
614
|
-
|
|
615
|
-
err = js_get_arraybuffer_info(env, b_handle, &b, NULL);
|
|
761
|
+
uint8_t *b;
|
|
762
|
+
err = js_get_arraybuffer_info(env, b_handle, (void **) &b, NULL);
|
|
616
763
|
assert(err == 0);
|
|
617
764
|
|
|
618
765
|
return bare_buffer__memcmp(&a[a_offset], a_len, &b[b_offset], b_len);
|
|
@@ -630,28 +777,28 @@ bare_buffer_compare(js_env_t *env, js_callback_info_t *info) {
|
|
|
630
777
|
|
|
631
778
|
assert(argc == 6);
|
|
632
779
|
|
|
633
|
-
|
|
634
|
-
err = js_get_arraybuffer_info(env, argv[0], &a, NULL);
|
|
780
|
+
uint8_t *a;
|
|
781
|
+
err = js_get_arraybuffer_info(env, argv[0], (void **) &a, NULL);
|
|
635
782
|
assert(err == 0);
|
|
636
783
|
|
|
637
|
-
|
|
638
|
-
err =
|
|
784
|
+
int64_t a_offset;
|
|
785
|
+
err = js_get_value_int64(env, argv[1], &a_offset);
|
|
639
786
|
assert(err == 0);
|
|
640
787
|
|
|
641
|
-
|
|
642
|
-
err =
|
|
788
|
+
int64_t a_len;
|
|
789
|
+
err = js_get_value_int64(env, argv[2], &a_len);
|
|
643
790
|
assert(err == 0);
|
|
644
791
|
|
|
645
|
-
|
|
646
|
-
err = js_get_arraybuffer_info(env, argv[3], &b, NULL);
|
|
792
|
+
uint8_t *b;
|
|
793
|
+
err = js_get_arraybuffer_info(env, argv[3], (void **) &b, NULL);
|
|
647
794
|
assert(err == 0);
|
|
648
795
|
|
|
649
|
-
|
|
650
|
-
err =
|
|
796
|
+
int64_t b_offset;
|
|
797
|
+
err = js_get_value_int64(env, argv[4], &b_offset);
|
|
651
798
|
assert(err == 0);
|
|
652
799
|
|
|
653
|
-
|
|
654
|
-
err =
|
|
800
|
+
int64_t b_len;
|
|
801
|
+
err = js_get_value_int64(env, argv[5], &b_len);
|
|
655
802
|
assert(err == 0);
|
|
656
803
|
|
|
657
804
|
js_value_t *result;
|
|
@@ -665,6 +812,37 @@ static js_value_t *
|
|
|
665
812
|
bare_buffer_exports(js_env_t *env, js_value_t *exports) {
|
|
666
813
|
int err;
|
|
667
814
|
|
|
815
|
+
js_value_t *constants;
|
|
816
|
+
err = js_create_object(env, &constants);
|
|
817
|
+
assert(err == 0);
|
|
818
|
+
|
|
819
|
+
err = js_set_named_property(env, exports, "constants", constants);
|
|
820
|
+
assert(err == 0);
|
|
821
|
+
|
|
822
|
+
js_platform_t *platform;
|
|
823
|
+
err = js_get_env_platform(env, &platform);
|
|
824
|
+
assert(err == 0);
|
|
825
|
+
|
|
826
|
+
js_platform_limits_t limits = {
|
|
827
|
+
.version = 0,
|
|
828
|
+
};
|
|
829
|
+
|
|
830
|
+
err = js_get_platform_limits(platform, &limits);
|
|
831
|
+
assert(err == 0);
|
|
832
|
+
|
|
833
|
+
#define V(name, value) \
|
|
834
|
+
{ \
|
|
835
|
+
js_value_t *val; \
|
|
836
|
+
err = js_create_int64(env, value, &val); \
|
|
837
|
+
assert(err == 0); \
|
|
838
|
+
err = js_set_named_property(env, constants, name, val); \
|
|
839
|
+
assert(err == 0); \
|
|
840
|
+
}
|
|
841
|
+
|
|
842
|
+
V("MAX_LENGTH", limits.arraybuffer_length);
|
|
843
|
+
V("MAX_STRING_LENGTH", limits.string_length);
|
|
844
|
+
#undef V
|
|
845
|
+
|
|
668
846
|
#define V(name, untyped, signature, typed) \
|
|
669
847
|
{ \
|
|
670
848
|
js_value_t *val; \
|
|
@@ -688,7 +866,7 @@ bare_buffer_exports(js_env_t *env, js_value_t *exports) {
|
|
|
688
866
|
bare_buffer_byte_length_utf8,
|
|
689
867
|
&((js_callback_signature_t) {
|
|
690
868
|
.version = 0,
|
|
691
|
-
.result =
|
|
869
|
+
.result = js_int64,
|
|
692
870
|
.args_len = 2,
|
|
693
871
|
.args = (int[]) {
|
|
694
872
|
js_object,
|
|
@@ -705,11 +883,13 @@ bare_buffer_exports(js_env_t *env, js_value_t *exports) {
|
|
|
705
883
|
bare_buffer_write_utf8,
|
|
706
884
|
&((js_callback_signature_t) {
|
|
707
885
|
.version = 0,
|
|
708
|
-
.result =
|
|
709
|
-
.args_len =
|
|
886
|
+
.result = js_int64,
|
|
887
|
+
.args_len = 5,
|
|
710
888
|
.args = (int[]) {
|
|
711
889
|
js_object,
|
|
712
890
|
js_object,
|
|
891
|
+
js_int64,
|
|
892
|
+
js_int64,
|
|
713
893
|
js_string,
|
|
714
894
|
}
|
|
715
895
|
}),
|
|
@@ -723,7 +903,7 @@ bare_buffer_exports(js_env_t *env, js_value_t *exports) {
|
|
|
723
903
|
bare_buffer_write_utf16le,
|
|
724
904
|
&((js_callback_signature_t) {
|
|
725
905
|
.version = 0,
|
|
726
|
-
.result =
|
|
906
|
+
.result = js_int64,
|
|
727
907
|
.args_len = 3,
|
|
728
908
|
.args = (int[]) {
|
|
729
909
|
js_object,
|
|
@@ -741,11 +921,13 @@ bare_buffer_exports(js_env_t *env, js_value_t *exports) {
|
|
|
741
921
|
bare_buffer_write_latin1,
|
|
742
922
|
&((js_callback_signature_t) {
|
|
743
923
|
.version = 0,
|
|
744
|
-
.result =
|
|
745
|
-
.args_len =
|
|
924
|
+
.result = js_int64,
|
|
925
|
+
.args_len = 5,
|
|
746
926
|
.args = (int[]) {
|
|
747
927
|
js_object,
|
|
748
928
|
js_object,
|
|
929
|
+
js_int64,
|
|
930
|
+
js_int64,
|
|
749
931
|
js_string,
|
|
750
932
|
}
|
|
751
933
|
}),
|
|
@@ -753,17 +935,20 @@ bare_buffer_exports(js_env_t *env, js_value_t *exports) {
|
|
|
753
935
|
);
|
|
754
936
|
|
|
755
937
|
V("toStringBase64", bare_buffer_to_string_base64, NULL, NULL);
|
|
938
|
+
V("toStringBase64URL", bare_buffer_to_string_base64url, NULL, NULL);
|
|
756
939
|
|
|
757
940
|
V(
|
|
758
941
|
"writeBase64",
|
|
759
942
|
bare_buffer_write_base64,
|
|
760
943
|
&((js_callback_signature_t) {
|
|
761
944
|
.version = 0,
|
|
762
|
-
.result =
|
|
763
|
-
.args_len =
|
|
945
|
+
.result = js_int64,
|
|
946
|
+
.args_len = 5,
|
|
764
947
|
.args = (int[]) {
|
|
765
948
|
js_object,
|
|
766
949
|
js_object,
|
|
950
|
+
js_int64,
|
|
951
|
+
js_int64,
|
|
767
952
|
js_string,
|
|
768
953
|
}
|
|
769
954
|
}),
|
|
@@ -777,11 +962,13 @@ bare_buffer_exports(js_env_t *env, js_value_t *exports) {
|
|
|
777
962
|
bare_buffer_write_hex,
|
|
778
963
|
&((js_callback_signature_t) {
|
|
779
964
|
.version = 0,
|
|
780
|
-
.result =
|
|
781
|
-
.args_len =
|
|
965
|
+
.result = js_int64,
|
|
966
|
+
.args_len = 5,
|
|
782
967
|
.args = (int[]) {
|
|
783
968
|
js_object,
|
|
784
969
|
js_object,
|
|
970
|
+
js_int64,
|
|
971
|
+
js_int64,
|
|
785
972
|
js_string,
|
|
786
973
|
}
|
|
787
974
|
}),
|
|
@@ -798,11 +985,11 @@ bare_buffer_exports(js_env_t *env, js_value_t *exports) {
|
|
|
798
985
|
.args = (int[]) {
|
|
799
986
|
js_object,
|
|
800
987
|
js_object,
|
|
801
|
-
|
|
802
|
-
|
|
988
|
+
js_int64,
|
|
989
|
+
js_int64,
|
|
803
990
|
js_object,
|
|
804
|
-
|
|
805
|
-
|
|
991
|
+
js_int64,
|
|
992
|
+
js_int64,
|
|
806
993
|
}
|
|
807
994
|
}),
|
|
808
995
|
bare_buffer_typed_compare
|
package/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
const constants = require('./lib/constants')
|
|
2
2
|
const ascii = require('./lib/ascii')
|
|
3
3
|
const base64 = require('./lib/base64')
|
|
4
|
+
const base64url = require('./lib/base64url')
|
|
4
5
|
const hex = require('./lib/hex')
|
|
5
6
|
const utf8 = require('./lib/utf8')
|
|
6
7
|
const utf16le = require('./lib/utf16le')
|
|
@@ -536,6 +537,7 @@ const codecs = Object.create(null)
|
|
|
536
537
|
|
|
537
538
|
codecs.ascii = ascii
|
|
538
539
|
codecs.base64 = base64
|
|
540
|
+
codecs.base64url = base64url
|
|
539
541
|
codecs.hex = hex
|
|
540
542
|
codecs.utf8 = codecs['utf-8'] = utf8
|
|
541
543
|
codecs.utf16le = codecs.ucs2 = codecs['utf-16le'] = codecs['ucs-2'] = utf16le
|
|
@@ -548,7 +550,7 @@ function codecFor(encoding = 'utf8') {
|
|
|
548
550
|
|
|
549
551
|
if (encoding in codecs) return codecs[encoding]
|
|
550
552
|
|
|
551
|
-
throw new Error(`Unknown encoding
|
|
553
|
+
throw new Error(`Unknown encoding '${encoding}'`)
|
|
552
554
|
}
|
|
553
555
|
|
|
554
556
|
const views = new WeakMap()
|
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/base64url.js
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
const binding = require('../binding')
|
|
2
|
+
|
|
3
|
+
exports.byteLength = function byteLength(string) {
|
|
4
|
+
let len = string.length
|
|
5
|
+
|
|
6
|
+
if (string.charCodeAt(len - 1) === 0x3d) len--
|
|
7
|
+
if (len > 1 && string.charCodeAt(len - 1) === 0x3d) len--
|
|
8
|
+
|
|
9
|
+
return (len * 3) >>> 2
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
exports.toString = function toString(buffer) {
|
|
13
|
+
return binding.toStringBase64URL(
|
|
14
|
+
buffer.buffer,
|
|
15
|
+
buffer.byteOffset,
|
|
16
|
+
buffer.byteLength
|
|
17
|
+
)
|
|
18
|
+
}
|
|
19
|
+
|
|
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.3.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
|