koffi 1.0.3 → 1.1.0-beta.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/README.md +48 -22
- package/build/qemu/1.1.0-beta.0/koffi_darwin_x64.tar.gz +0 -0
- package/build/qemu/1.1.0-beta.0/koffi_freebsd_arm64.tar.gz +0 -0
- package/build/qemu/1.1.0-beta.0/koffi_freebsd_ia32.tar.gz +0 -0
- package/build/qemu/1.1.0-beta.0/koffi_freebsd_x64.tar.gz +0 -0
- package/build/qemu/1.1.0-beta.0/koffi_linux_arm.tar.gz +0 -0
- package/build/qemu/1.1.0-beta.0/koffi_linux_arm64.tar.gz +0 -0
- package/build/qemu/1.1.0-beta.0/koffi_linux_ia32.tar.gz +0 -0
- package/build/qemu/1.1.0-beta.0/koffi_linux_x64.tar.gz +0 -0
- package/build/qemu/1.1.0-beta.0/koffi_win32_ia32.tar.gz +0 -0
- package/build/qemu/1.1.0-beta.0/koffi_win32_x64.tar.gz +0 -0
- package/package.json +1 -1
- package/qemu/qemu.js +11 -5
- package/qemu/registry/machines.json +20 -10
- package/src/abi_arm32.cc +130 -215
- package/src/abi_arm64.cc +103 -117
- package/src/abi_x64_sysv.cc +117 -135
- package/src/abi_x64_win.cc +89 -98
- package/src/abi_x86.cc +91 -99
- package/src/call.cc +164 -40
- package/src/call.hh +53 -31
- package/src/ffi.cc +163 -19
- package/src/ffi.hh +30 -22
- package/src/util.cc +0 -127
- package/src/util.hh +0 -16
- package/test/misc.c +68 -2
- package/vendor/libcc/libcc.hh +1 -1
- package/build/qemu/1.0.3/koffi_darwin_x64.tar.gz +0 -0
- package/build/qemu/1.0.3/koffi_freebsd_arm64.tar.gz +0 -0
- package/build/qemu/1.0.3/koffi_freebsd_ia32.tar.gz +0 -0
- package/build/qemu/1.0.3/koffi_freebsd_x64.tar.gz +0 -0
- package/build/qemu/1.0.3/koffi_linux_arm.tar.gz +0 -0
- package/build/qemu/1.0.3/koffi_linux_arm64.tar.gz +0 -0
- package/build/qemu/1.0.3/koffi_linux_ia32.tar.gz +0 -0
- package/build/qemu/1.0.3/koffi_linux_x64.tar.gz +0 -0
- package/build/qemu/1.0.3/koffi_win32_ia32.tar.gz +0 -0
- package/build/qemu/1.0.3/koffi_win32_x64.tar.gz +0 -0
- package/test/misc.js +0 -180
- package/vendor/node-addon-api/CODE_OF_CONDUCT.md +0 -4
- package/vendor/node-addon-api/CONTRIBUTING.md +0 -93
- package/vendor/node-addon-api/appveyor.yml +0 -37
- package/vendor/node-addon-api/benchmark/README.md +0 -47
- package/vendor/node-addon-api/benchmark/binding.gyp +0 -25
- package/vendor/node-addon-api/benchmark/function_args.cc +0 -217
- package/vendor/node-addon-api/benchmark/function_args.js +0 -60
- package/vendor/node-addon-api/benchmark/index.js +0 -34
- package/vendor/node-addon-api/benchmark/property_descriptor.cc +0 -91
- package/vendor/node-addon-api/benchmark/property_descriptor.js +0 -37
- package/vendor/node-addon-api/doc/addon.md +0 -163
- package/vendor/node-addon-api/doc/array.md +0 -81
- package/vendor/node-addon-api/doc/array_buffer.md +0 -155
- package/vendor/node-addon-api/doc/async_context.md +0 -86
- package/vendor/node-addon-api/doc/async_operations.md +0 -31
- package/vendor/node-addon-api/doc/async_worker.md +0 -427
- package/vendor/node-addon-api/doc/async_worker_variants.md +0 -557
- package/vendor/node-addon-api/doc/bigint.md +0 -97
- package/vendor/node-addon-api/doc/boolean.md +0 -68
- package/vendor/node-addon-api/doc/buffer.md +0 -150
- package/vendor/node-addon-api/doc/callback_scope.md +0 -54
- package/vendor/node-addon-api/doc/callbackinfo.md +0 -97
- package/vendor/node-addon-api/doc/checker-tool.md +0 -32
- package/vendor/node-addon-api/doc/class_property_descriptor.md +0 -123
- package/vendor/node-addon-api/doc/cmake-js.md +0 -68
- package/vendor/node-addon-api/doc/conversion-tool.md +0 -28
- package/vendor/node-addon-api/doc/creating_a_release.md +0 -62
- package/vendor/node-addon-api/doc/dataview.md +0 -248
- package/vendor/node-addon-api/doc/date.md +0 -68
- package/vendor/node-addon-api/doc/env.md +0 -196
- package/vendor/node-addon-api/doc/error.md +0 -120
- package/vendor/node-addon-api/doc/error_handling.md +0 -254
- package/vendor/node-addon-api/doc/escapable_handle_scope.md +0 -80
- package/vendor/node-addon-api/doc/external.md +0 -63
- package/vendor/node-addon-api/doc/function.md +0 -402
- package/vendor/node-addon-api/doc/function_reference.md +0 -238
- package/vendor/node-addon-api/doc/generator.md +0 -13
- package/vendor/node-addon-api/doc/handle_scope.md +0 -63
- package/vendor/node-addon-api/doc/hierarchy.md +0 -91
- package/vendor/node-addon-api/doc/instance_wrap.md +0 -408
- package/vendor/node-addon-api/doc/maybe.md +0 -76
- package/vendor/node-addon-api/doc/memory_management.md +0 -27
- package/vendor/node-addon-api/doc/name.md +0 -29
- package/vendor/node-addon-api/doc/node-gyp.md +0 -82
- package/vendor/node-addon-api/doc/number.md +0 -163
- package/vendor/node-addon-api/doc/object.md +0 -411
- package/vendor/node-addon-api/doc/object_lifetime_management.md +0 -83
- package/vendor/node-addon-api/doc/object_reference.md +0 -117
- package/vendor/node-addon-api/doc/object_wrap.md +0 -588
- package/vendor/node-addon-api/doc/prebuild_tools.md +0 -16
- package/vendor/node-addon-api/doc/promises.md +0 -79
- package/vendor/node-addon-api/doc/property_descriptor.md +0 -286
- package/vendor/node-addon-api/doc/propertylvalue.md +0 -50
- package/vendor/node-addon-api/doc/range_error.md +0 -59
- package/vendor/node-addon-api/doc/reference.md +0 -113
- package/vendor/node-addon-api/doc/setup.md +0 -110
- package/vendor/node-addon-api/doc/string.md +0 -93
- package/vendor/node-addon-api/doc/symbol.md +0 -61
- package/vendor/node-addon-api/doc/threadsafe.md +0 -121
- package/vendor/node-addon-api/doc/threadsafe_function.md +0 -290
- package/vendor/node-addon-api/doc/type_error.md +0 -59
- package/vendor/node-addon-api/doc/typed_array.md +0 -78
- package/vendor/node-addon-api/doc/typed_array_of.md +0 -137
- package/vendor/node-addon-api/doc/typed_threadsafe_function.md +0 -306
- package/vendor/node-addon-api/doc/value.md +0 -340
- package/vendor/node-addon-api/doc/version_management.md +0 -43
- package/vendor/node-addon-api/package.json +0 -415
- package/vendor/node-addon-api/test/README.md +0 -91
- package/vendor/node-addon-api/test/addon.cc +0 -36
- package/vendor/node-addon-api/test/addon.js +0 -11
- package/vendor/node-addon-api/test/addon_build/index.js +0 -49
- package/vendor/node-addon-api/test/addon_build/tpl/addon.cc +0 -17
- package/vendor/node-addon-api/test/addon_build/tpl/binding.gyp +0 -62
- package/vendor/node-addon-api/test/addon_build/tpl/index.js +0 -9
- package/vendor/node-addon-api/test/addon_build/tpl/package.json +0 -11
- package/vendor/node-addon-api/test/addon_data.cc +0 -99
- package/vendor/node-addon-api/test/addon_data.js +0 -46
- package/vendor/node-addon-api/test/array_buffer.cc +0 -243
- package/vendor/node-addon-api/test/array_buffer.js +0 -69
- package/vendor/node-addon-api/test/async_context.cc +0 -36
- package/vendor/node-addon-api/test/async_context.js +0 -122
- package/vendor/node-addon-api/test/async_progress_queue_worker.cc +0 -83
- package/vendor/node-addon-api/test/async_progress_queue_worker.js +0 -46
- package/vendor/node-addon-api/test/async_progress_worker.cc +0 -134
- package/vendor/node-addon-api/test/async_progress_worker.js +0 -61
- package/vendor/node-addon-api/test/async_worker.cc +0 -106
- package/vendor/node-addon-api/test/async_worker.js +0 -179
- package/vendor/node-addon-api/test/async_worker_nocallback.js +0 -13
- package/vendor/node-addon-api/test/async_worker_persistent.cc +0 -63
- package/vendor/node-addon-api/test/async_worker_persistent.js +0 -24
- package/vendor/node-addon-api/test/basic_types/array.cc +0 -40
- package/vendor/node-addon-api/test/basic_types/array.js +0 -35
- package/vendor/node-addon-api/test/basic_types/boolean.cc +0 -38
- package/vendor/node-addon-api/test/basic_types/boolean.js +0 -35
- package/vendor/node-addon-api/test/basic_types/number.cc +0 -99
- package/vendor/node-addon-api/test/basic_types/number.js +0 -114
- package/vendor/node-addon-api/test/basic_types/value.cc +0 -120
- package/vendor/node-addon-api/test/basic_types/value.js +0 -133
- package/vendor/node-addon-api/test/bigint.cc +0 -91
- package/vendor/node-addon-api/test/bigint.js +0 -53
- package/vendor/node-addon-api/test/binding-swallowexcept.cc +0 -12
- package/vendor/node-addon-api/test/binding.cc +0 -173
- package/vendor/node-addon-api/test/binding.gyp +0 -124
- package/vendor/node-addon-api/test/buffer.cc +0 -183
- package/vendor/node-addon-api/test/buffer.js +0 -69
- package/vendor/node-addon-api/test/callbackscope.cc +0 -22
- package/vendor/node-addon-api/test/callbackscope.js +0 -49
- package/vendor/node-addon-api/test/common/index.js +0 -114
- package/vendor/node-addon-api/test/common/test_helper.h +0 -71
- package/vendor/node-addon-api/test/dataview/dataview.cc +0 -48
- package/vendor/node-addon-api/test/dataview/dataview.js +0 -35
- package/vendor/node-addon-api/test/dataview/dataview_read_write.cc +0 -115
- package/vendor/node-addon-api/test/dataview/dataview_read_write.js +0 -90
- package/vendor/node-addon-api/test/date.cc +0 -44
- package/vendor/node-addon-api/test/date.js +0 -18
- package/vendor/node-addon-api/test/env_cleanup.cc +0 -88
- package/vendor/node-addon-api/test/env_cleanup.js +0 -56
- package/vendor/node-addon-api/test/error.cc +0 -287
- package/vendor/node-addon-api/test/error.js +0 -81
- package/vendor/node-addon-api/test/error_handling_for_primitives.cc +0 -13
- package/vendor/node-addon-api/test/error_handling_for_primitives.js +0 -29
- package/vendor/node-addon-api/test/error_terminating_environment.js +0 -95
- package/vendor/node-addon-api/test/external.cc +0 -81
- package/vendor/node-addon-api/test/external.js +0 -88
- package/vendor/node-addon-api/test/function.cc +0 -324
- package/vendor/node-addon-api/test/function.js +0 -133
- package/vendor/node-addon-api/test/function_reference.cc +0 -202
- package/vendor/node-addon-api/test/function_reference.js +0 -157
- package/vendor/node-addon-api/test/globalObject/global_object.cc +0 -61
- package/vendor/node-addon-api/test/globalObject/global_object_delete_property.cc +0 -31
- package/vendor/node-addon-api/test/globalObject/global_object_delete_property.js +0 -61
- package/vendor/node-addon-api/test/globalObject/global_object_get_property.cc +0 -40
- package/vendor/node-addon-api/test/globalObject/global_object_get_property.js +0 -57
- package/vendor/node-addon-api/test/globalObject/global_object_has_own_property.cc +0 -28
- package/vendor/node-addon-api/test/globalObject/global_object_has_own_property.js +0 -48
- package/vendor/node-addon-api/test/globalObject/global_object_set_property.cc +0 -31
- package/vendor/node-addon-api/test/globalObject/global_object_set_property.js +0 -58
- package/vendor/node-addon-api/test/handlescope.cc +0 -60
- package/vendor/node-addon-api/test/handlescope.js +0 -14
- package/vendor/node-addon-api/test/index.js +0 -159
- package/vendor/node-addon-api/test/maybe/check.cc +0 -23
- package/vendor/node-addon-api/test/maybe/index.js +0 -38
- package/vendor/node-addon-api/test/memory_management.cc +0 -17
- package/vendor/node-addon-api/test/memory_management.js +0 -9
- package/vendor/node-addon-api/test/movable_callbacks.cc +0 -23
- package/vendor/node-addon-api/test/movable_callbacks.js +0 -21
- package/vendor/node-addon-api/test/name.cc +0 -108
- package/vendor/node-addon-api/test/name.js +0 -59
- package/vendor/node-addon-api/test/napi_child.js +0 -14
- package/vendor/node-addon-api/test/object/delete_property.cc +0 -38
- package/vendor/node-addon-api/test/object/delete_property.js +0 -41
- package/vendor/node-addon-api/test/object/finalizer.cc +0 -29
- package/vendor/node-addon-api/test/object/finalizer.js +0 -28
- package/vendor/node-addon-api/test/object/get_property.cc +0 -34
- package/vendor/node-addon-api/test/object/get_property.js +0 -40
- package/vendor/node-addon-api/test/object/has_own_property.cc +0 -34
- package/vendor/node-addon-api/test/object/has_own_property.js +0 -34
- package/vendor/node-addon-api/test/object/has_property.cc +0 -38
- package/vendor/node-addon-api/test/object/has_property.js +0 -37
- package/vendor/node-addon-api/test/object/object.cc +0 -350
- package/vendor/node-addon-api/test/object/object.js +0 -217
- package/vendor/node-addon-api/test/object/object_deprecated.cc +0 -66
- package/vendor/node-addon-api/test/object/object_deprecated.js +0 -47
- package/vendor/node-addon-api/test/object/object_freeze_seal.cc +0 -25
- package/vendor/node-addon-api/test/object/object_freeze_seal.js +0 -61
- package/vendor/node-addon-api/test/object/set_property.cc +0 -45
- package/vendor/node-addon-api/test/object/set_property.js +0 -30
- package/vendor/node-addon-api/test/object/subscript_operator.cc +0 -58
- package/vendor/node-addon-api/test/object/subscript_operator.js +0 -17
- package/vendor/node-addon-api/test/object_reference.cc +0 -219
- package/vendor/node-addon-api/test/object_reference.js +0 -259
- package/vendor/node-addon-api/test/objectwrap.cc +0 -268
- package/vendor/node-addon-api/test/objectwrap.js +0 -284
- package/vendor/node-addon-api/test/objectwrap_constructor_exception.cc +0 -26
- package/vendor/node-addon-api/test/objectwrap_constructor_exception.js +0 -18
- package/vendor/node-addon-api/test/objectwrap_function.cc +0 -45
- package/vendor/node-addon-api/test/objectwrap_function.js +0 -22
- package/vendor/node-addon-api/test/objectwrap_multiple_inheritance.cc +0 -30
- package/vendor/node-addon-api/test/objectwrap_multiple_inheritance.js +0 -13
- package/vendor/node-addon-api/test/objectwrap_removewrap.cc +0 -45
- package/vendor/node-addon-api/test/objectwrap_removewrap.js +0 -40
- package/vendor/node-addon-api/test/objectwrap_worker_thread.js +0 -19
- package/vendor/node-addon-api/test/promise.cc +0 -29
- package/vendor/node-addon-api/test/promise.js +0 -18
- package/vendor/node-addon-api/test/reference.cc +0 -24
- package/vendor/node-addon-api/test/reference.js +0 -14
- package/vendor/node-addon-api/test/run_script.cc +0 -56
- package/vendor/node-addon-api/test/run_script.js +0 -45
- package/vendor/node-addon-api/test/symbol.cc +0 -79
- package/vendor/node-addon-api/test/symbol.js +0 -73
- package/vendor/node-addon-api/test/testUtil.js +0 -54
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function.cc +0 -195
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function.js +0 -188
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ctx.cc +0 -63
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ctx.js +0 -12
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_existing_tsfn.cc +0 -115
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_existing_tsfn.js +0 -14
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ptr.cc +0 -26
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ptr.js +0 -7
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_sum.cc +0 -225
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_sum.js +0 -59
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_unref.cc +0 -42
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_unref.js +0 -53
- package/vendor/node-addon-api/test/thunking_manual.cc +0 -140
- package/vendor/node-addon-api/test/thunking_manual.js +0 -17
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function.cc +0 -215
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function.js +0 -188
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ctx.cc +0 -68
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ctx.js +0 -12
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_existing_tsfn.cc +0 -127
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_existing_tsfn.js +0 -14
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ptr.cc +0 -28
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ptr.js +0 -7
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_sum.cc +0 -237
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_sum.js +0 -59
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_unref.cc +0 -53
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_unref.js +0 -53
- package/vendor/node-addon-api/test/typedarray-bigint.js +0 -58
- package/vendor/node-addon-api/test/typedarray.cc +0 -216
- package/vendor/node-addon-api/test/typedarray.js +0 -69
- package/vendor/node-addon-api/test/version_management.cc +0 -27
- package/vendor/node-addon-api/test/version_management.js +0 -31
- package/vendor/node-addon-api/unit-test/README.md +0 -28
- package/vendor/node-addon-api/unit-test/binding-file-template.js +0 -39
- package/vendor/node-addon-api/unit-test/binding.gyp +0 -72
- package/vendor/node-addon-api/unit-test/exceptions.js +0 -32
- package/vendor/node-addon-api/unit-test/generate-binding-cc.js +0 -61
- package/vendor/node-addon-api/unit-test/injectTestParams.js +0 -101
- package/vendor/node-addon-api/unit-test/listOfTestModules.js +0 -88
- package/vendor/node-addon-api/unit-test/matchModules.js +0 -65
- package/vendor/node-addon-api/unit-test/setup.js +0 -13
- package/vendor/node-addon-api/unit-test/spawnTask.js +0 -26
- package/vendor/node-addon-api/unit-test/test.js +0 -30
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
#include "napi.h"
|
|
2
|
-
|
|
3
|
-
using namespace Napi;
|
|
4
|
-
|
|
5
|
-
void SetPropertyWithCStyleStringAsKey(const CallbackInfo& info) {
|
|
6
|
-
Object globalObject = info.Env().Global();
|
|
7
|
-
String key = info[0].As<String>();
|
|
8
|
-
Value value = info[1];
|
|
9
|
-
globalObject.Set(key.Utf8Value().c_str(), value);
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
void SetPropertyWithCppStyleStringAsKey(const CallbackInfo& info) {
|
|
13
|
-
Object globalObject = info.Env().Global();
|
|
14
|
-
String key = info[0].As<String>();
|
|
15
|
-
Value value = info[1];
|
|
16
|
-
globalObject.Set(key.Utf8Value(), value);
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
void SetPropertyWithInt32AsKey(const CallbackInfo& info) {
|
|
20
|
-
Object globalObject = info.Env().Global();
|
|
21
|
-
Number key = info[0].As<Number>();
|
|
22
|
-
Value value = info[1];
|
|
23
|
-
globalObject.Set(key.Uint32Value(), value);
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
void SetPropertyWithNapiValueAsKey(const CallbackInfo& info) {
|
|
27
|
-
Object globalObject = info.Env().Global();
|
|
28
|
-
Name key = info[0].As<Name>();
|
|
29
|
-
Value value = info[1];
|
|
30
|
-
globalObject.Set(key, value);
|
|
31
|
-
}
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const assert = require('assert');
|
|
4
|
-
|
|
5
|
-
module.exports = require('../common').runTest(test);
|
|
6
|
-
|
|
7
|
-
function test(binding) {
|
|
8
|
-
const KEY_TYPE = {
|
|
9
|
-
C_STR: 'KEY_AS_C_STRING',
|
|
10
|
-
CPP_STR: 'KEY_AS_CPP_STRING',
|
|
11
|
-
NAPI: 'KEY_AS_NAPI_VALUES',
|
|
12
|
-
INT_32: 'KEY_AS_INT_32_NUM'
|
|
13
|
-
};
|
|
14
|
-
|
|
15
|
-
function setGlobalObjectKeyValue(key, value, keyType) {
|
|
16
|
-
switch(keyType)
|
|
17
|
-
{
|
|
18
|
-
case KEY_TYPE.CPP_STR:
|
|
19
|
-
binding.globalObject.setPropertyWithCppStyleString(key,value);
|
|
20
|
-
break;
|
|
21
|
-
|
|
22
|
-
case KEY_TYPE.C_STR:
|
|
23
|
-
binding.globalObject.setPropertyWithCStyleString(key,value);
|
|
24
|
-
break;
|
|
25
|
-
|
|
26
|
-
case KEY_TYPE.INT_32:
|
|
27
|
-
binding.globalObject.setPropertyWithInt32(key,value);
|
|
28
|
-
break;
|
|
29
|
-
|
|
30
|
-
case KEY_TYPE.NAPI:
|
|
31
|
-
binding.globalObject.setPropertyWithNapiValue(key,value);
|
|
32
|
-
break;
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
function assertErrMessageIsThrown(nativeObjectSetFunction, errMsg) {
|
|
37
|
-
assert.throws(() => {
|
|
38
|
-
nativeObjectSetFunction(undefined, 1);
|
|
39
|
-
}, errMsg);
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
setGlobalObjectKeyValue("cKey","cValue",KEY_TYPE.CPP_STR);
|
|
44
|
-
setGlobalObjectKeyValue(1,10,KEY_TYPE.INT_32);
|
|
45
|
-
setGlobalObjectKeyValue("napi_key","napi_value",KEY_TYPE.NAPI);
|
|
46
|
-
setGlobalObjectKeyValue("cppKey","cppValue",KEY_TYPE.CPP_STR);
|
|
47
|
-
setGlobalObjectKeyValue("circular",global,KEY_TYPE.NAPI);
|
|
48
|
-
|
|
49
|
-
assert.deepStrictEqual(global["circular"], global);
|
|
50
|
-
assert.deepStrictEqual(global["cppKey"],"cppValue");
|
|
51
|
-
assert.deepStrictEqual(global["napi_key"],"napi_value");
|
|
52
|
-
assert.deepStrictEqual(global[1],10);
|
|
53
|
-
assert.deepStrictEqual(global["cKey"],"cValue");
|
|
54
|
-
|
|
55
|
-
assertErrMessageIsThrown(binding.globalObject.setPropertyWithCppStyleString, 'Error: A string was expected');
|
|
56
|
-
assertErrMessageIsThrown(binding.globalObject.setPropertyWithCStyleString, 'Error: A string was expected');
|
|
57
|
-
assertErrMessageIsThrown(binding.globalObject.setPropertyWithInt32, 'Error: A number was expected');
|
|
58
|
-
}
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
#include "napi.h"
|
|
2
|
-
#include "string.h"
|
|
3
|
-
#include <stdio.h>
|
|
4
|
-
#include <stdlib.h>
|
|
5
|
-
|
|
6
|
-
using namespace Napi;
|
|
7
|
-
|
|
8
|
-
Value createScope(const CallbackInfo& info) {
|
|
9
|
-
{
|
|
10
|
-
HandleScope scope(info.Env());
|
|
11
|
-
String::New(info.Env(), "inner-scope");
|
|
12
|
-
}
|
|
13
|
-
return String::New(info.Env(), "scope");
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
Value escapeFromScope(const CallbackInfo& info) {
|
|
17
|
-
Value result;
|
|
18
|
-
{
|
|
19
|
-
EscapableHandleScope scope(info.Env());
|
|
20
|
-
result = scope.Escape(String::New(info.Env(), "inner-scope"));
|
|
21
|
-
}
|
|
22
|
-
return result;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
#define LOOP_MAX 1000000
|
|
26
|
-
Value stressEscapeFromScope(const CallbackInfo& info) {
|
|
27
|
-
Value result;
|
|
28
|
-
for (int i = 0; i < LOOP_MAX; i++) {
|
|
29
|
-
EscapableHandleScope scope(info.Env());
|
|
30
|
-
char buffer[128];
|
|
31
|
-
snprintf(buffer, 128, "%d", i);
|
|
32
|
-
std::string name = std::string("inner-scope") + std::string(buffer);
|
|
33
|
-
Value newValue = String::New(info.Env(), name.c_str());
|
|
34
|
-
if (i == (LOOP_MAX -1)) {
|
|
35
|
-
result = scope.Escape(newValue);
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
return result;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
Value doubleEscapeFromScope(const CallbackInfo& info) {
|
|
42
|
-
Value result;
|
|
43
|
-
{
|
|
44
|
-
EscapableHandleScope scope(info.Env());
|
|
45
|
-
result = scope.Escape(String::New(info.Env(), "inner-scope"));
|
|
46
|
-
result = scope.Escape(String::New(info.Env(), "inner-scope"));
|
|
47
|
-
}
|
|
48
|
-
return result;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
Object InitHandleScope(Env env) {
|
|
52
|
-
Object exports = Object::New(env);
|
|
53
|
-
|
|
54
|
-
exports["createScope"] = Function::New(env, createScope);
|
|
55
|
-
exports["escapeFromScope"] = Function::New(env, escapeFromScope);
|
|
56
|
-
exports["stressEscapeFromScope"] = Function::New(env, stressEscapeFromScope);
|
|
57
|
-
exports["doubleEscapeFromScope"] = Function::New(env, doubleEscapeFromScope);
|
|
58
|
-
|
|
59
|
-
return exports;
|
|
60
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const assert = require('assert');
|
|
4
|
-
|
|
5
|
-
module.exports = require('./common').runTest(test);
|
|
6
|
-
|
|
7
|
-
function test(binding) {
|
|
8
|
-
assert.strictEqual(binding.handlescope.createScope(), 'scope');
|
|
9
|
-
assert.strictEqual(binding.handlescope.escapeFromScope(), 'inner-scope');
|
|
10
|
-
assert.strictEqual(binding.handlescope.stressEscapeFromScope(), 'inner-scope999999');
|
|
11
|
-
assert.throws(() => binding.handlescope.doubleEscapeFromScope(),
|
|
12
|
-
Error,
|
|
13
|
-
' napi_escape_handle already called on scope');
|
|
14
|
-
}
|
|
@@ -1,159 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const majorNodeVersion = process.versions.node.split('.')[0];
|
|
4
|
-
|
|
5
|
-
if (typeof global.gc !== 'function') {
|
|
6
|
-
// Construct the correct (version-dependent) command-line args.
|
|
7
|
-
const args = ['--expose-gc'];
|
|
8
|
-
const majorV8Version = process.versions.v8.split('.')[0];
|
|
9
|
-
if (majorV8Version < 9) {
|
|
10
|
-
args.push('--no-concurrent-array-buffer-freeing');
|
|
11
|
-
}
|
|
12
|
-
if (majorNodeVersion >= 14) {
|
|
13
|
-
args.push('--no-concurrent-array-buffer-sweeping');
|
|
14
|
-
}
|
|
15
|
-
args.push(__filename);
|
|
16
|
-
|
|
17
|
-
const child = require('./napi_child').spawnSync(process.argv[0], args, {
|
|
18
|
-
stdio: 'inherit'
|
|
19
|
-
});
|
|
20
|
-
|
|
21
|
-
if (child.signal) {
|
|
22
|
-
console.error(`Tests aborted with ${child.signal}`);
|
|
23
|
-
process.exitCode = 1;
|
|
24
|
-
} else {
|
|
25
|
-
process.exitCode = child.status;
|
|
26
|
-
}
|
|
27
|
-
process.exit(process.exitCode);
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
const testModules = [];
|
|
31
|
-
|
|
32
|
-
const fs = require('fs');
|
|
33
|
-
const path = require('path');
|
|
34
|
-
|
|
35
|
-
let filterCondition = process.env.npm_config_filter || '';
|
|
36
|
-
let filterConditionFiles = [];
|
|
37
|
-
|
|
38
|
-
if (filterCondition !== '') {
|
|
39
|
-
filterCondition = require('../unit-test/matchModules').matchWildCards(process.env.npm_config_filter);
|
|
40
|
-
filterConditionFiles = filterCondition.split(' ').length > 0 ? filterCondition.split(' ') : [filterCondition];
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
const filterConditionsProvided = filterConditionFiles.length > 0;
|
|
44
|
-
|
|
45
|
-
function checkFilterCondition (fileName, parsedFilepath) {
|
|
46
|
-
let result = false;
|
|
47
|
-
|
|
48
|
-
if (!filterConditionsProvided) return true;
|
|
49
|
-
if (filterConditionFiles.includes(parsedFilepath)) result = true;
|
|
50
|
-
if (filterConditionFiles.includes(fileName)) result = true;
|
|
51
|
-
return result;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
// TODO(RaisinTen): Update this when the test filenames
|
|
55
|
-
// are changed into test_*.js.
|
|
56
|
-
function loadTestModules (currentDirectory = __dirname, pre = '') {
|
|
57
|
-
fs.readdirSync(currentDirectory).forEach((file) => {
|
|
58
|
-
if (currentDirectory === __dirname && (
|
|
59
|
-
file === 'binding.cc' ||
|
|
60
|
-
file === 'binding.gyp' ||
|
|
61
|
-
file === 'build' ||
|
|
62
|
-
file === 'common' ||
|
|
63
|
-
file === 'napi_child.js' ||
|
|
64
|
-
file === 'testUtil.js' ||
|
|
65
|
-
file === 'thunking_manual.cc' ||
|
|
66
|
-
file === 'thunking_manual.js' ||
|
|
67
|
-
file === 'index.js' ||
|
|
68
|
-
file[0] === '.')) {
|
|
69
|
-
return;
|
|
70
|
-
}
|
|
71
|
-
const absoluteFilepath = path.join(currentDirectory, file);
|
|
72
|
-
const parsedFilepath = path.parse(file);
|
|
73
|
-
const parsedPath = path.parse(currentDirectory);
|
|
74
|
-
|
|
75
|
-
if (fs.statSync(absoluteFilepath).isDirectory()) {
|
|
76
|
-
if (fs.existsSync(absoluteFilepath + '/index.js')) {
|
|
77
|
-
if (checkFilterCondition(parsedFilepath.name, parsedPath.base)) {
|
|
78
|
-
testModules.push(pre + file);
|
|
79
|
-
}
|
|
80
|
-
} else {
|
|
81
|
-
loadTestModules(absoluteFilepath, pre + file + '/');
|
|
82
|
-
}
|
|
83
|
-
} else {
|
|
84
|
-
if (parsedFilepath.ext === '.js' && checkFilterCondition(parsedFilepath.name, parsedPath.base)) {
|
|
85
|
-
testModules.push(pre + parsedFilepath.name);
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
});
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
loadTestModules();
|
|
92
|
-
|
|
93
|
-
process.config.target_defaults.default_configuration =
|
|
94
|
-
fs
|
|
95
|
-
.readdirSync(path.join(__dirname, process.env.REL_BUILD_PATH || '', 'build'))
|
|
96
|
-
.filter((item) => (item === 'Debug' || item === 'Release'))[0];
|
|
97
|
-
|
|
98
|
-
let napiVersion = Number(process.versions.napi);
|
|
99
|
-
if (process.env.NAPI_VERSION) {
|
|
100
|
-
// we need this so that we don't try run tests that rely
|
|
101
|
-
// on methods that are not available in the NAPI_VERSION
|
|
102
|
-
// specified
|
|
103
|
-
napiVersion = process.env.NAPI_VERSION;
|
|
104
|
-
}
|
|
105
|
-
console.log('napiVersion:' + napiVersion);
|
|
106
|
-
|
|
107
|
-
if (napiVersion < 3) {
|
|
108
|
-
testModules.splice(testModules.indexOf('env_cleanup'), 1);
|
|
109
|
-
testModules.splice(testModules.indexOf('callbackscope'), 1);
|
|
110
|
-
testModules.splice(testModules.indexOf('version_management'), 1);
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
if (napiVersion < 4 && !filterConditionsProvided) {
|
|
114
|
-
testModules.splice(testModules.indexOf('asyncprogressqueueworker'), 1);
|
|
115
|
-
testModules.splice(testModules.indexOf('asyncprogressworker'), 1);
|
|
116
|
-
testModules.splice(testModules.indexOf('threadsafe_function/threadsafe_function_ctx'), 1);
|
|
117
|
-
testModules.splice(testModules.indexOf('threadsafe_function/threadsafe_function_existing_tsfn'), 1);
|
|
118
|
-
testModules.splice(testModules.indexOf('threadsafe_function/threadsafe_function_ptr'), 1);
|
|
119
|
-
testModules.splice(testModules.indexOf('threadsafe_function/threadsafe_function_sum'), 1);
|
|
120
|
-
testModules.splice(testModules.indexOf('threadsafe_function/threadsafe_function_unref'), 1);
|
|
121
|
-
testModules.splice(testModules.indexOf('threadsafe_function/threadsafe_function'), 1);
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
if (napiVersion < 5 && !filterConditionsProvided) {
|
|
125
|
-
testModules.splice(testModules.indexOf('date'), 1);
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
if (napiVersion < 6 && !filterConditionsProvided) {
|
|
129
|
-
testModules.splice(testModules.indexOf('addon'), 1);
|
|
130
|
-
testModules.splice(testModules.indexOf('addon_data'), 1);
|
|
131
|
-
testModules.splice(testModules.indexOf('bigint'), 1);
|
|
132
|
-
testModules.splice(testModules.indexOf('typedarray-bigint'), 1);
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
if (majorNodeVersion < 12 && !filterConditionsProvided) {
|
|
136
|
-
testModules.splice(testModules.indexOf('objectwrap_worker_thread'), 1);
|
|
137
|
-
testModules.splice(testModules.indexOf('error_terminating_environment'), 1);
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
if (napiVersion < 8 && !filterConditionsProvided) {
|
|
141
|
-
testModules.splice(testModules.indexOf('object/object_freeze_seal'), 1);
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
(async function () {
|
|
145
|
-
console.log(`Testing with Node-API Version '${napiVersion}'.`);
|
|
146
|
-
|
|
147
|
-
if (filterConditionsProvided) { console.log('Starting test suite\n', testModules); } else { console.log('Starting test suite\n'); }
|
|
148
|
-
|
|
149
|
-
// Requiring each module runs tests in the module.
|
|
150
|
-
for (const name of testModules) {
|
|
151
|
-
console.log(`Running test '${name}'`);
|
|
152
|
-
await require('./' + name);
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
console.log('\nAll tests passed!');
|
|
156
|
-
})().catch((error) => {
|
|
157
|
-
console.log(error);
|
|
158
|
-
process.exit(1);
|
|
159
|
-
});
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
#include "napi.h"
|
|
2
|
-
#if defined(NODE_ADDON_API_ENABLE_MAYBE)
|
|
3
|
-
|
|
4
|
-
using namespace Napi;
|
|
5
|
-
|
|
6
|
-
namespace {
|
|
7
|
-
|
|
8
|
-
void VoidCallback(const CallbackInfo& info) {
|
|
9
|
-
Function fn = info[0].As<Function>();
|
|
10
|
-
|
|
11
|
-
Maybe<Value> it = fn.Call({});
|
|
12
|
-
|
|
13
|
-
it.Check();
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
} // end anonymous namespace
|
|
17
|
-
|
|
18
|
-
Object InitMaybeCheck(Env env) {
|
|
19
|
-
Object exports = Object::New(env);
|
|
20
|
-
exports.Set("voidCallback", Function::New(env, VoidCallback));
|
|
21
|
-
return exports;
|
|
22
|
-
}
|
|
23
|
-
#endif
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const buildType = process.config.target_defaults.default_configuration;
|
|
4
|
-
const assert = require('assert');
|
|
5
|
-
const os = require('os');
|
|
6
|
-
|
|
7
|
-
const napiChild = require('../napi_child');
|
|
8
|
-
|
|
9
|
-
module.exports = test(require(`../build/${buildType}/binding_noexcept_maybe.node`).maybe_check);
|
|
10
|
-
|
|
11
|
-
function test(binding) {
|
|
12
|
-
if (process.argv.includes('child')) {
|
|
13
|
-
child(binding);
|
|
14
|
-
return;
|
|
15
|
-
}
|
|
16
|
-
const cp = napiChild.spawn(process.execPath, [__filename, 'child'], {
|
|
17
|
-
stdio: ['ignore', 'inherit', 'pipe'],
|
|
18
|
-
});
|
|
19
|
-
cp.stderr.setEncoding('utf8');
|
|
20
|
-
let stderr = '';
|
|
21
|
-
cp.stderr.on('data', chunk => {
|
|
22
|
-
stderr += chunk;
|
|
23
|
-
});
|
|
24
|
-
cp.on('exit', (code, signal) => {
|
|
25
|
-
if (process.platform === 'win32') {
|
|
26
|
-
assert.strictEqual(code, 128 + 6 /* SIGABRT */);
|
|
27
|
-
} else {
|
|
28
|
-
assert.strictEqual(signal, 'SIGABRT');
|
|
29
|
-
}
|
|
30
|
-
assert.ok(stderr.match(/FATAL ERROR: Napi::Maybe::Check Maybe value is Nothing./));
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
function child(binding) {
|
|
35
|
-
binding.voidCallback(() => {
|
|
36
|
-
throw new Error('foobar');
|
|
37
|
-
})
|
|
38
|
-
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
#include "napi.h"
|
|
2
|
-
|
|
3
|
-
using namespace Napi;
|
|
4
|
-
|
|
5
|
-
Value externalAllocatedMemory(const CallbackInfo& info) {
|
|
6
|
-
int64_t kSize = 1024 * 1024;
|
|
7
|
-
int64_t baseline = MemoryManagement::AdjustExternalMemory(info.Env(), 0);
|
|
8
|
-
int64_t tmp = MemoryManagement::AdjustExternalMemory(info.Env(), kSize);
|
|
9
|
-
tmp = MemoryManagement::AdjustExternalMemory(info.Env(), -kSize);
|
|
10
|
-
return Boolean::New(info.Env(), tmp == baseline);
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
Object InitMemoryManagement(Env env) {
|
|
14
|
-
Object exports = Object::New(env);
|
|
15
|
-
exports["externalAllocatedMemory"] = Function::New(env, externalAllocatedMemory);
|
|
16
|
-
return exports;
|
|
17
|
-
}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
#include "napi.h"
|
|
2
|
-
|
|
3
|
-
using namespace Napi;
|
|
4
|
-
|
|
5
|
-
Value createExternal(const CallbackInfo& info) {
|
|
6
|
-
FunctionReference ref = Reference<Function>::New(info[0].As<Function>(), 1);
|
|
7
|
-
auto ret = External<char>::New(
|
|
8
|
-
info.Env(),
|
|
9
|
-
nullptr,
|
|
10
|
-
[ref = std::move(ref)](Napi::Env /*env*/, char* /*data*/) {
|
|
11
|
-
ref.Call({});
|
|
12
|
-
});
|
|
13
|
-
|
|
14
|
-
return ret;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
Object InitMovableCallbacks(Env env) {
|
|
18
|
-
Object exports = Object::New(env);
|
|
19
|
-
|
|
20
|
-
exports["createExternal"] = Function::New(env, createExternal);
|
|
21
|
-
|
|
22
|
-
return exports;
|
|
23
|
-
}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const common = require('./common');
|
|
4
|
-
const testUtil = require('./testUtil');
|
|
5
|
-
|
|
6
|
-
module.exports = require('./common').runTest(binding => test(binding.movable_callbacks));
|
|
7
|
-
|
|
8
|
-
async function test(binding) {
|
|
9
|
-
await testUtil.runGCTests([
|
|
10
|
-
'External',
|
|
11
|
-
() => {
|
|
12
|
-
const fn = common.mustCall(() => {
|
|
13
|
-
// noop
|
|
14
|
-
}, 1);
|
|
15
|
-
const external = binding.createExternal(fn);
|
|
16
|
-
},
|
|
17
|
-
() => {
|
|
18
|
-
// noop, wait for gc
|
|
19
|
-
}
|
|
20
|
-
]);
|
|
21
|
-
}
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
#include "napi.h"
|
|
2
|
-
|
|
3
|
-
using namespace Napi;
|
|
4
|
-
|
|
5
|
-
const char* testValueUtf8 = "123456789";
|
|
6
|
-
const char16_t* testValueUtf16 = NAPI_WIDE_TEXT("123456789");
|
|
7
|
-
|
|
8
|
-
Value EchoString(const CallbackInfo& info) {
|
|
9
|
-
String value = info[0].As<String>();
|
|
10
|
-
String encoding = info[1].As<String>();
|
|
11
|
-
|
|
12
|
-
if (encoding.Utf8Value() == "utf8") {
|
|
13
|
-
return String::New(info.Env(), value.Utf8Value().c_str());
|
|
14
|
-
} else if (encoding.Utf8Value() == "utf16") {
|
|
15
|
-
return String::New(info.Env(), value.Utf16Value().c_str());
|
|
16
|
-
} else {
|
|
17
|
-
Error::New(info.Env(), "Invalid encoding.").ThrowAsJavaScriptException();
|
|
18
|
-
return Value();
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
Value CreateString(const CallbackInfo& info) {
|
|
23
|
-
String encoding = info[0].As<String>();
|
|
24
|
-
Number length = info[1].As<Number>();
|
|
25
|
-
|
|
26
|
-
if (encoding.Utf8Value() == "utf8") {
|
|
27
|
-
if (length.IsUndefined()) {
|
|
28
|
-
return String::New(info.Env(), testValueUtf8);
|
|
29
|
-
} else {
|
|
30
|
-
return String::New(info.Env(), testValueUtf8, length.Uint32Value());
|
|
31
|
-
}
|
|
32
|
-
} else if (encoding.Utf8Value() == "utf16") {
|
|
33
|
-
if (length.IsUndefined()) {
|
|
34
|
-
return String::New(info.Env(), testValueUtf16);
|
|
35
|
-
} else {
|
|
36
|
-
return String::New(info.Env(), testValueUtf16, length.Uint32Value());
|
|
37
|
-
}
|
|
38
|
-
} else {
|
|
39
|
-
Error::New(info.Env(), "Invalid encoding.").ThrowAsJavaScriptException();
|
|
40
|
-
return Value();
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
Value CheckString(const CallbackInfo& info) {
|
|
45
|
-
String value = info[0].As<String>();
|
|
46
|
-
String encoding = info[1].As<String>();
|
|
47
|
-
Number length = info[2].As<Number>();
|
|
48
|
-
|
|
49
|
-
if (encoding.Utf8Value() == "utf8") {
|
|
50
|
-
std::string testValue = testValueUtf8;
|
|
51
|
-
if (!length.IsUndefined()) {
|
|
52
|
-
testValue = testValue.substr(0, length.Uint32Value());
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
std::string stringValue = value;
|
|
56
|
-
return Boolean::New(info.Env(), stringValue == testValue);
|
|
57
|
-
} else if (encoding.Utf8Value() == "utf16") {
|
|
58
|
-
std::u16string testValue = testValueUtf16;
|
|
59
|
-
if (!length.IsUndefined()) {
|
|
60
|
-
testValue = testValue.substr(0, length.Uint32Value());
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
std::u16string stringValue = value;
|
|
64
|
-
return Boolean::New(info.Env(), stringValue == testValue);
|
|
65
|
-
} else {
|
|
66
|
-
Error::New(info.Env(), "Invalid encoding.").ThrowAsJavaScriptException();
|
|
67
|
-
return Value();
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
Value CreateSymbol(const CallbackInfo& info) {
|
|
72
|
-
String description = info[0].As<String>();
|
|
73
|
-
|
|
74
|
-
if (!description.IsUndefined()) {
|
|
75
|
-
return Symbol::New(info.Env(), description);
|
|
76
|
-
} else {
|
|
77
|
-
return Symbol::New(info.Env());
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
Value CheckSymbol(const CallbackInfo& info) {
|
|
82
|
-
return Boolean::New(info.Env(), info[0].Type() == napi_symbol);
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
void NullStringShouldThrow(const CallbackInfo& info) {
|
|
86
|
-
const char* nullStr = nullptr;
|
|
87
|
-
String::New(info.Env(), nullStr);
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
void NullString16ShouldThrow(const CallbackInfo& info) {
|
|
91
|
-
const char16_t* nullStr = nullptr;
|
|
92
|
-
String::New(info.Env(), nullStr);
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
Object InitName(Env env) {
|
|
96
|
-
Object exports = Object::New(env);
|
|
97
|
-
|
|
98
|
-
exports["echoString"] = Function::New(env, EchoString);
|
|
99
|
-
exports["createString"] = Function::New(env, CreateString);
|
|
100
|
-
exports["nullStringShouldThrow"] = Function::New(env, NullStringShouldThrow);
|
|
101
|
-
exports["nullString16ShouldThrow"] =
|
|
102
|
-
Function::New(env, NullString16ShouldThrow);
|
|
103
|
-
exports["checkString"] = Function::New(env, CheckString);
|
|
104
|
-
exports["createSymbol"] = Function::New(env, CreateSymbol);
|
|
105
|
-
exports["checkSymbol"] = Function::New(env, CheckSymbol);
|
|
106
|
-
|
|
107
|
-
return exports;
|
|
108
|
-
}
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const assert = require('assert');
|
|
4
|
-
|
|
5
|
-
module.exports = require('./common').runTest(test);
|
|
6
|
-
|
|
7
|
-
function test(binding) {
|
|
8
|
-
const expected = '123456789';
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
assert.throws(binding.name.nullStringShouldThrow, {
|
|
12
|
-
name: 'Error',
|
|
13
|
-
message: 'Error in native callback',
|
|
14
|
-
});
|
|
15
|
-
assert.ok(binding.name.checkString(expected, 'utf8'));
|
|
16
|
-
assert.ok(binding.name.checkString(expected, 'utf16'));
|
|
17
|
-
assert.ok(binding.name.checkString(expected.substr(0, 3), 'utf8', 3));
|
|
18
|
-
assert.ok(binding.name.checkString(expected.substr(0, 3), 'utf16', 3));
|
|
19
|
-
|
|
20
|
-
const str1 = binding.name.createString('utf8');
|
|
21
|
-
assert.strictEqual(str1, expected);
|
|
22
|
-
assert.ok(binding.name.checkString(str1, 'utf8'));
|
|
23
|
-
assert.ok(binding.name.checkString(str1, 'utf16'));
|
|
24
|
-
|
|
25
|
-
const substr1 = binding.name.createString('utf8', 3);
|
|
26
|
-
assert.strictEqual(substr1, expected.substr(0, 3));
|
|
27
|
-
assert.ok(binding.name.checkString(substr1, 'utf8', 3));
|
|
28
|
-
assert.ok(binding.name.checkString(substr1, 'utf16', 3));
|
|
29
|
-
|
|
30
|
-
const str2 = binding.name.createString('utf16');
|
|
31
|
-
assert.strictEqual(str1, expected);
|
|
32
|
-
assert.ok(binding.name.checkString(str2, 'utf8'));
|
|
33
|
-
assert.ok(binding.name.checkString(str2, 'utf16'));
|
|
34
|
-
|
|
35
|
-
const substr2 = binding.name.createString('utf16', 3);
|
|
36
|
-
assert.strictEqual(substr1, expected.substr(0, 3));
|
|
37
|
-
assert.ok(binding.name.checkString(substr2, 'utf8', 3));
|
|
38
|
-
assert.ok(binding.name.checkString(substr2, 'utf16', 3));
|
|
39
|
-
|
|
40
|
-
assert.ok(binding.name.checkSymbol(Symbol()));
|
|
41
|
-
assert.ok(binding.name.checkSymbol(Symbol('test')));
|
|
42
|
-
|
|
43
|
-
const sym1 = binding.name.createSymbol();
|
|
44
|
-
assert.strictEqual(typeof sym1, 'symbol');
|
|
45
|
-
assert.ok(binding.name.checkSymbol(sym1));
|
|
46
|
-
|
|
47
|
-
const sym2 = binding.name.createSymbol('test');
|
|
48
|
-
assert.strictEqual(typeof sym2, 'symbol');
|
|
49
|
-
assert.ok(binding.name.checkSymbol(sym1));
|
|
50
|
-
|
|
51
|
-
// Check for off-by-one errors which might only appear for strings of certain sizes,
|
|
52
|
-
// due to how std::string increments its capacity in chunks.
|
|
53
|
-
const longString = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
|
|
54
|
-
for (let i = 10; i <= longString.length; i++) {
|
|
55
|
-
const str = longString.substr(0, i);
|
|
56
|
-
assert.strictEqual(binding.name.echoString(str, 'utf8'), str);
|
|
57
|
-
assert.strictEqual(binding.name.echoString(str, 'utf16'), str);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
// Makes sure that child processes are spawned appropriately.
|
|
2
|
-
exports.spawnSync = function(command, args, options) {
|
|
3
|
-
if (require('../index').needsFlag) {
|
|
4
|
-
args.splice(0, 0, '--napi-modules');
|
|
5
|
-
}
|
|
6
|
-
return require('child_process').spawnSync(command, args, options);
|
|
7
|
-
};
|
|
8
|
-
|
|
9
|
-
exports.spawn = function(command, args, options) {
|
|
10
|
-
if (require('../index').needsFlag) {
|
|
11
|
-
args.splice(0, 0, '--napi-modules');
|
|
12
|
-
}
|
|
13
|
-
return require('child_process').spawn(command, args, options);
|
|
14
|
-
};
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
#include "napi.h"
|
|
2
|
-
#include "test_helper.h"
|
|
3
|
-
|
|
4
|
-
using namespace Napi;
|
|
5
|
-
|
|
6
|
-
Value DeletePropertyWithUint32(const CallbackInfo& info) {
|
|
7
|
-
Object obj = info[0].As<Object>();
|
|
8
|
-
Number key = info[1].As<Number>();
|
|
9
|
-
return Boolean::New(info.Env(), MaybeUnwrap(obj.Delete(key.Uint32Value())));
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
Value DeletePropertyWithNapiValue(const CallbackInfo& info) {
|
|
13
|
-
Object obj = info[0].As<Object>();
|
|
14
|
-
Name key = info[1].As<Name>();
|
|
15
|
-
return Boolean::New(
|
|
16
|
-
info.Env(),
|
|
17
|
-
MaybeUnwrapOr(obj.Delete(static_cast<napi_value>(key)), false));
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
Value DeletePropertyWithNapiWrapperValue(const CallbackInfo& info) {
|
|
21
|
-
Object obj = info[0].As<Object>();
|
|
22
|
-
Name key = info[1].As<Name>();
|
|
23
|
-
return Boolean::New(info.Env(), MaybeUnwrapOr(obj.Delete(key), false));
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
Value DeletePropertyWithCStyleString(const CallbackInfo& info) {
|
|
27
|
-
Object obj = info[0].As<Object>();
|
|
28
|
-
String jsKey = info[1].As<String>();
|
|
29
|
-
return Boolean::New(
|
|
30
|
-
info.Env(), MaybeUnwrapOr(obj.Delete(jsKey.Utf8Value().c_str()), false));
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
Value DeletePropertyWithCppStyleString(const CallbackInfo& info) {
|
|
34
|
-
Object obj = info[0].As<Object>();
|
|
35
|
-
String jsKey = info[1].As<String>();
|
|
36
|
-
return Boolean::New(info.Env(),
|
|
37
|
-
MaybeUnwrapOr(obj.Delete(jsKey.Utf8Value()), false));
|
|
38
|
-
}
|