@contrast/agent 4.5.1 → 4.7.1
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/bin/VERSION +1 -1
- package/bin/linux/contrast-service +0 -0
- package/bin/mac/contrast-service +0 -0
- package/bin/windows/contrast-service.exe +0 -0
- package/lib/assess/membrane/deserialization-membrane.js +4 -5
- package/lib/assess/membrane/source-membrane.js +16 -33
- package/lib/assess/models/call-context.js +1 -1
- package/lib/assess/policy/propagators.json +19 -21
- package/lib/assess/policy/rules.json +7 -2
- package/lib/assess/policy/signatures.json +42 -0
- package/lib/assess/policy/util.js +2 -1
- package/lib/assess/propagators/JSON/parse.js +1 -1
- package/lib/assess/propagators/JSON/stringify.js +3 -3
- package/lib/assess/propagators/array-prototype-join.js +7 -8
- package/lib/assess/propagators/common.js +7 -5
- package/lib/assess/propagators/dustjs/escape-html.js +22 -0
- package/lib/assess/propagators/dustjs/escape-js.js +22 -0
- package/lib/assess/propagators/encode-uri/encode-uri-component.js +22 -0
- package/lib/assess/propagators/encode-uri/encode-uri.js +22 -0
- package/lib/assess/propagators/handlebars-escape-expresssion.js +1 -1
- package/lib/assess/propagators/index.js +0 -2
- package/lib/assess/propagators/joi/boolean.js +1 -1
- package/lib/assess/propagators/joi/expression.js +1 -1
- package/lib/assess/propagators/joi/number.js +1 -1
- package/lib/assess/propagators/joi/string-base.js +1 -1
- package/lib/assess/propagators/joi/string-schema.js +12 -13
- package/lib/assess/propagators/joi/values.js +37 -22
- package/lib/assess/propagators/manager.js +12 -10
- package/lib/assess/propagators/mongoose/helpers.js +20 -0
- package/lib/assess/propagators/mongoose/index.js +18 -0
- package/lib/assess/propagators/mongoose/map.js +74 -0
- package/lib/assess/propagators/mongoose/string.js +104 -0
- package/lib/assess/propagators/mustache/escape.js +22 -0
- package/lib/assess/propagators/number.js +54 -0
- package/lib/assess/propagators/object.js +6 -7
- package/lib/assess/propagators/path/basename.js +14 -13
- package/lib/assess/propagators/path/common.js +156 -47
- package/lib/assess/propagators/path/dirname.js +14 -13
- package/lib/assess/propagators/path/extname.js +14 -13
- package/lib/assess/propagators/path/join.js +5 -1
- package/lib/assess/propagators/path/normalize.js +1 -2
- package/lib/assess/propagators/path/parse.js +1 -1
- package/lib/assess/propagators/path/relative.js +7 -5
- package/lib/assess/propagators/path/resolve.js +11 -2
- package/lib/assess/propagators/querystring/escape.js +20 -18
- package/lib/assess/propagators/querystring/parse.js +7 -5
- package/lib/assess/propagators/querystring/stringify.js +25 -24
- package/lib/assess/propagators/querystring/unescape.js +20 -18
- package/lib/assess/propagators/sequelize/sql-string-escape.js +1 -1
- package/lib/assess/propagators/sequelize/sql-string-format-named-parameters.js +1 -1
- package/lib/assess/propagators/sequelize/sql-string-format.js +3 -3
- package/lib/assess/propagators/sequelize/utils.js +2 -2
- package/lib/assess/propagators/string-prototype-replace.js +30 -28
- package/lib/assess/propagators/string-prototype-split.js +36 -36
- package/lib/assess/propagators/string-prototype-trim.js +15 -17
- package/lib/assess/propagators/string.js +12 -16
- package/lib/assess/propagators/template-escape.js +87 -0
- package/lib/assess/propagators/templates.js +10 -11
- package/lib/assess/propagators/url/url-prototype-parse.js +5 -6
- package/lib/assess/propagators/url/url-url.js +51 -43
- package/lib/assess/propagators/util/format.js +1 -1
- package/lib/assess/propagators/v8/init-hooks.js +3 -3
- package/lib/assess/propagators/validator/init-hooks.js +22 -22
- package/lib/assess/sinks/common.js +10 -5
- package/lib/assess/sinks/dustjs-linkedin-xss.js +131 -0
- package/lib/assess/sinks/libxmljs-xxe.js +1 -1
- package/lib/assess/sinks/mongodb.js +2 -1
- package/lib/assess/sinks/ssrf-url.js +1 -1
- package/lib/constants.js +4 -1
- package/lib/core/arch-components/dynamodb.js +1 -2
- package/lib/core/arch-components/dynamodbv3.js +44 -0
- package/lib/core/arch-components/index.js +1 -0
- package/lib/core/arch-components/rethinkdb.js +53 -0
- package/lib/core/config/options.js +3 -2
- package/lib/core/rewrite/injections.js +8 -0
- package/lib/core/stacktrace.js +2 -1
- package/lib/feature-set.js +1 -1
- package/lib/hooks/frameworks/base.js +8 -2
- package/lib/hooks/frameworks/http.js +23 -16
- package/lib/hooks/frameworks/http2.js +73 -0
- package/lib/hooks/frameworks/index.js +8 -3
- package/lib/hooks/http.js +112 -128
- package/lib/hooks/object-to-primitive.js +6 -7
- package/lib/hooks/patcher.js +75 -44
- package/lib/hooks/require.js +16 -22
- package/lib/instrumentation.js +0 -3
- package/lib/protect/rules/nosqli/nosql-injection-rule.js +228 -0
- package/lib/protect/rules/rule-factory.js +2 -2
- package/lib/protect/service.js +23 -11
- package/lib/protect/sinks/mongodb.js +56 -55
- package/lib/reporter/translations/to-protobuf/dtm/index.js +1 -1
- package/lib/reporter/translations/to-protobuf/dtm/ip-denylist-details.js +1 -1
- package/lib/reporter/translations/to-protobuf/dtm/rasp-rule-sample.js +1 -1
- package/lib/reporter/translations/to-protobuf/settings/defend-features.js +8 -6
- package/lib/reporter/translations/to-protobuf/settings/exclusions.js +5 -4
- package/lib/tracker.js +13 -65
- package/lib/util/some.js +27 -0
- package/lib/util/source-map.js +1 -1
- package/package.json +15 -16
- package/lib/hooks/frameworks/https.js +0 -42
- package/lib/protect/rules/nosqli/no-sql-injection-rule.js +0 -109
- package/node_modules/bindings/LICENSE.md +0 -22
- package/node_modules/bindings/README.md +0 -98
- package/node_modules/bindings/bindings.js +0 -221
- package/node_modules/bindings/package.json +0 -32
- package/node_modules/file-uri-to-path/.npmignore +0 -1
- package/node_modules/file-uri-to-path/.travis.yml +0 -30
- package/node_modules/file-uri-to-path/History.md +0 -21
- package/node_modules/file-uri-to-path/LICENSE +0 -20
- package/node_modules/file-uri-to-path/README.md +0 -74
- package/node_modules/file-uri-to-path/index.d.ts +0 -2
- package/node_modules/file-uri-to-path/index.js +0 -66
- package/node_modules/file-uri-to-path/package.json +0 -36
- package/node_modules/file-uri-to-path/test/test.js +0 -24
- package/node_modules/file-uri-to-path/test/tests.json +0 -13
- package/node_modules/glossy/LICENSE +0 -19
- package/node_modules/glossy/README.md +0 -129
- package/node_modules/glossy/index.js +0 -12
- package/node_modules/glossy/lib/glossy/parse.js +0 -520
- package/node_modules/glossy/lib/glossy/produce.js +0 -459
- package/node_modules/glossy/package.json +0 -47
- package/node_modules/glossy/test/decide.js +0 -7
- package/node_modules/glossy/test/decode_pri.js +0 -24
- package/node_modules/glossy/test/parse_3164.js +0 -104
- package/node_modules/glossy/test/parse_5424.js +0 -106
- package/node_modules/glossy/test/parse_5848.js +0 -40
- package/node_modules/glossy/test/parse_8601.js +0 -14
- package/node_modules/glossy/test/parse_rfc3339.js +0 -9
- package/node_modules/glossy/test/produce.js +0 -162
- package/node_modules/glossy/test/runner.js +0 -40
- package/node_modules/glossy/test/structure_data.js +0 -24
- package/node_modules/nan/CHANGELOG.md +0 -537
- package/node_modules/nan/LICENSE.md +0 -13
- package/node_modules/nan/README.md +0 -455
- package/node_modules/nan/doc/asyncworker.md +0 -146
- package/node_modules/nan/doc/buffers.md +0 -54
- package/node_modules/nan/doc/callback.md +0 -76
- package/node_modules/nan/doc/converters.md +0 -41
- package/node_modules/nan/doc/errors.md +0 -226
- package/node_modules/nan/doc/json.md +0 -62
- package/node_modules/nan/doc/maybe_types.md +0 -583
- package/node_modules/nan/doc/methods.md +0 -664
- package/node_modules/nan/doc/new.md +0 -147
- package/node_modules/nan/doc/node_misc.md +0 -123
- package/node_modules/nan/doc/object_wrappers.md +0 -263
- package/node_modules/nan/doc/persistent.md +0 -296
- package/node_modules/nan/doc/scopes.md +0 -73
- package/node_modules/nan/doc/script.md +0 -38
- package/node_modules/nan/doc/string_bytes.md +0 -62
- package/node_modules/nan/doc/v8_internals.md +0 -199
- package/node_modules/nan/doc/v8_misc.md +0 -85
- package/node_modules/nan/include_dirs.js +0 -1
- package/node_modules/nan/nan.h +0 -2898
- package/node_modules/nan/nan_callbacks.h +0 -88
- package/node_modules/nan/nan_callbacks_12_inl.h +0 -514
- package/node_modules/nan/nan_callbacks_pre_12_inl.h +0 -520
- package/node_modules/nan/nan_converters.h +0 -72
- package/node_modules/nan/nan_converters_43_inl.h +0 -68
- package/node_modules/nan/nan_converters_pre_43_inl.h +0 -42
- package/node_modules/nan/nan_define_own_property_helper.h +0 -29
- package/node_modules/nan/nan_implementation_12_inl.h +0 -430
- package/node_modules/nan/nan_implementation_pre_12_inl.h +0 -263
- package/node_modules/nan/nan_json.h +0 -166
- package/node_modules/nan/nan_maybe_43_inl.h +0 -356
- package/node_modules/nan/nan_maybe_pre_43_inl.h +0 -268
- package/node_modules/nan/nan_new.h +0 -340
- package/node_modules/nan/nan_object_wrap.h +0 -156
- package/node_modules/nan/nan_persistent_12_inl.h +0 -132
- package/node_modules/nan/nan_persistent_pre_12_inl.h +0 -242
- package/node_modules/nan/nan_private.h +0 -73
- package/node_modules/nan/nan_string_bytes.h +0 -305
- package/node_modules/nan/nan_typedarray_contents.h +0 -96
- package/node_modules/nan/nan_weak.h +0 -437
- package/node_modules/nan/package.json +0 -41
- package/node_modules/nan/tools/1to2.js +0 -412
- package/node_modules/nan/tools/README.md +0 -14
- package/node_modules/nan/tools/package.json +0 -19
- package/node_modules/unix-dgram/LICENSE +0 -13
- package/node_modules/unix-dgram/README.md +0 -107
- package/node_modules/unix-dgram/binding.gyp +0 -20
- package/node_modules/unix-dgram/build/Makefile +0 -324
- package/node_modules/unix-dgram/build/Release/.deps/Release/obj.target/unix_dgram/src/unix_dgram.o.d +0 -58
- package/node_modules/unix-dgram/build/Release/.deps/Release/obj.target/unix_dgram.node.d +0 -1
- package/node_modules/unix-dgram/build/Release/.deps/Release/unix_dgram.node.d +0 -1
- package/node_modules/unix-dgram/build/Release/obj.target/unix_dgram/src/unix_dgram.o +0 -0
- package/node_modules/unix-dgram/build/Release/obj.target/unix_dgram.node +0 -0
- package/node_modules/unix-dgram/build/Release/unix_dgram.node +0 -0
- package/node_modules/unix-dgram/build/binding.Makefile +0 -6
- package/node_modules/unix-dgram/build/config.gypi +0 -213
- package/node_modules/unix-dgram/build/unix_dgram.target.mk +0 -159
- package/node_modules/unix-dgram/lib/unix_dgram.js +0 -168
- package/node_modules/unix-dgram/package.json +0 -36
- package/node_modules/unix-dgram/src/unix_dgram.cc +0 -404
- package/node_modules/unix-dgram/src/win_dummy.cc +0 -7
- package/node_modules/unix-dgram/test/test-connect-callback.js +0 -68
- package/node_modules/unix-dgram/test/test-connect.js +0 -53
- package/node_modules/unix-dgram/test/test-dgram-unix.js +0 -58
- package/node_modules/unix-dgram/test/test-send-error.js +0 -26
- package/node_modules/winston-syslog/.eslintrc +0 -7
- package/node_modules/winston-syslog/.travis.yml +0 -14
- package/node_modules/winston-syslog/CHANGELOG.md +0 -9
- package/node_modules/winston-syslog/LICENSE +0 -20
- package/node_modules/winston-syslog/README.md +0 -135
- package/node_modules/winston-syslog/lib/utils.js +0 -26
- package/node_modules/winston-syslog/lib/winston-syslog.js +0 -385
- package/node_modules/winston-syslog/package.json +0 -56
- package/node_modules/winston-syslog/test/format-test.js +0 -122
- package/node_modules/winston-syslog/test/syslog-test.js +0 -95
- package/node_modules/winston-syslog/test/unix-connect-test.js +0 -133
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
## Buffers
|
|
2
|
-
|
|
3
|
-
NAN's `node::Buffer` helpers exist as the API has changed across supported Node versions. Use these methods to ensure compatibility.
|
|
4
|
-
|
|
5
|
-
- <a href="#api_nan_new_buffer"><b><code>Nan::NewBuffer()</code></b></a>
|
|
6
|
-
- <a href="#api_nan_copy_buffer"><b><code>Nan::CopyBuffer()</code></b></a>
|
|
7
|
-
- <a href="#api_nan_free_callback"><b><code>Nan::FreeCallback()</code></b></a>
|
|
8
|
-
|
|
9
|
-
<a name="api_nan_new_buffer"></a>
|
|
10
|
-
### Nan::NewBuffer()
|
|
11
|
-
|
|
12
|
-
Allocate a new `node::Buffer` object with the specified size and optional data. Calls `node::Buffer::New()`.
|
|
13
|
-
|
|
14
|
-
Note that when creating a `Buffer` using `Nan::NewBuffer()` and an existing `char*`, it is assumed that the ownership of the pointer is being transferred to the new `Buffer` for management.
|
|
15
|
-
When a `node::Buffer` instance is garbage collected and a `FreeCallback` has not been specified, `data` will be disposed of via a call to `free()`.
|
|
16
|
-
You _must not_ free the memory space manually once you have created a `Buffer` in this way.
|
|
17
|
-
|
|
18
|
-
Signature:
|
|
19
|
-
|
|
20
|
-
```c++
|
|
21
|
-
Nan::MaybeLocal<v8::Object> Nan::NewBuffer(uint32_t size)
|
|
22
|
-
Nan::MaybeLocal<v8::Object> Nan::NewBuffer(char* data, uint32_t size)
|
|
23
|
-
Nan::MaybeLocal<v8::Object> Nan::NewBuffer(char *data,
|
|
24
|
-
size_t length,
|
|
25
|
-
Nan::FreeCallback callback,
|
|
26
|
-
void *hint)
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
<a name="api_nan_copy_buffer"></a>
|
|
31
|
-
### Nan::CopyBuffer()
|
|
32
|
-
|
|
33
|
-
Similar to [`Nan::NewBuffer()`](#api_nan_new_buffer) except that an implicit memcpy will occur within Node. Calls `node::Buffer::Copy()`.
|
|
34
|
-
|
|
35
|
-
Management of the `char*` is left to the user, you should manually free the memory space if necessary as the new `Buffer` will have its own copy.
|
|
36
|
-
|
|
37
|
-
Signature:
|
|
38
|
-
|
|
39
|
-
```c++
|
|
40
|
-
Nan::MaybeLocal<v8::Object> Nan::CopyBuffer(const char *data, uint32_t size)
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
<a name="api_nan_free_callback"></a>
|
|
45
|
-
### Nan::FreeCallback()
|
|
46
|
-
|
|
47
|
-
A free callback that can be provided to [`Nan::NewBuffer()`](#api_nan_new_buffer).
|
|
48
|
-
The supplied callback will be invoked when the `Buffer` undergoes garbage collection.
|
|
49
|
-
|
|
50
|
-
Signature:
|
|
51
|
-
|
|
52
|
-
```c++
|
|
53
|
-
typedef void (*FreeCallback)(char *data, void *hint);
|
|
54
|
-
```
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
## Nan::Callback
|
|
2
|
-
|
|
3
|
-
`Nan::Callback` makes it easier to use `v8::Function` handles as callbacks. A class that wraps a `v8::Function` handle, protecting it from garbage collection and making it particularly useful for storage and use across asynchronous execution.
|
|
4
|
-
|
|
5
|
-
- <a href="#api_nan_callback"><b><code>Nan::Callback</code></b></a>
|
|
6
|
-
|
|
7
|
-
<a name="api_nan_callback"></a>
|
|
8
|
-
### Nan::Callback
|
|
9
|
-
|
|
10
|
-
```c++
|
|
11
|
-
class Callback {
|
|
12
|
-
public:
|
|
13
|
-
Callback();
|
|
14
|
-
|
|
15
|
-
explicit Callback(const v8::Local<v8::Function> &fn);
|
|
16
|
-
|
|
17
|
-
~Callback();
|
|
18
|
-
|
|
19
|
-
bool operator==(const Callback &other) const;
|
|
20
|
-
|
|
21
|
-
bool operator!=(const Callback &other) const;
|
|
22
|
-
|
|
23
|
-
v8::Local<v8::Function> operator*() const;
|
|
24
|
-
|
|
25
|
-
MaybeLocal<v8::Value> operator()(AsyncResource* async_resource,
|
|
26
|
-
v8::Local<v8::Object> target,
|
|
27
|
-
int argc = 0,
|
|
28
|
-
v8::Local<v8::Value> argv[] = 0) const;
|
|
29
|
-
|
|
30
|
-
MaybeLocal<v8::Value> operator()(AsyncResource* async_resource,
|
|
31
|
-
int argc = 0,
|
|
32
|
-
v8::Local<v8::Value> argv[] = 0) const;
|
|
33
|
-
|
|
34
|
-
void SetFunction(const v8::Local<v8::Function> &fn);
|
|
35
|
-
|
|
36
|
-
v8::Local<v8::Function> GetFunction() const;
|
|
37
|
-
|
|
38
|
-
bool IsEmpty() const;
|
|
39
|
-
|
|
40
|
-
void Reset(const v8::Local<v8::Function> &fn);
|
|
41
|
-
|
|
42
|
-
void Reset();
|
|
43
|
-
|
|
44
|
-
MaybeLocal<v8::Value> Call(v8::Local<v8::Object> target,
|
|
45
|
-
int argc,
|
|
46
|
-
v8::Local<v8::Value> argv[],
|
|
47
|
-
AsyncResource* async_resource) const;
|
|
48
|
-
MaybeLocal<v8::Value> Call(int argc,
|
|
49
|
-
v8::Local<v8::Value> argv[],
|
|
50
|
-
AsyncResource* async_resource) const;
|
|
51
|
-
|
|
52
|
-
// Deprecated versions. Use the versions that accept an async_resource instead
|
|
53
|
-
// as they run the callback in the correct async context as specified by the
|
|
54
|
-
// resource. If you want to call a synchronous JS function (i.e. on a
|
|
55
|
-
// non-empty JS stack), you can use Nan::Call instead.
|
|
56
|
-
v8::Local<v8::Value> operator()(v8::Local<v8::Object> target,
|
|
57
|
-
int argc = 0,
|
|
58
|
-
v8::Local<v8::Value> argv[] = 0) const;
|
|
59
|
-
|
|
60
|
-
v8::Local<v8::Value> operator()(int argc = 0,
|
|
61
|
-
v8::Local<v8::Value> argv[] = 0) const;
|
|
62
|
-
v8::Local<v8::Value> Call(v8::Local<v8::Object> target,
|
|
63
|
-
int argc,
|
|
64
|
-
v8::Local<v8::Value> argv[]) const;
|
|
65
|
-
|
|
66
|
-
v8::Local<v8::Value> Call(int argc, v8::Local<v8::Value> argv[]) const;
|
|
67
|
-
};
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
Example usage:
|
|
71
|
-
|
|
72
|
-
```c++
|
|
73
|
-
v8::Local<v8::Function> function;
|
|
74
|
-
Nan::Callback callback(function);
|
|
75
|
-
callback.Call(0, 0);
|
|
76
|
-
```
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
## Converters
|
|
2
|
-
|
|
3
|
-
NAN contains functions that convert `v8::Value`s to other `v8::Value` types and native types. Since type conversion is not guaranteed to succeed, they return `Nan::Maybe` types. These converters can be used in place of `value->ToX()` and `value->XValue()` (where `X` is one of the types, e.g. `Boolean`) in a way that provides a consistent interface across V8 versions. Newer versions of V8 use the new `v8::Maybe` and `v8::MaybeLocal` types for these conversions, older versions don't have this functionality so it is provided by NAN.
|
|
4
|
-
|
|
5
|
-
- <a href="#api_nan_to"><b><code>Nan::To()</code></b></a>
|
|
6
|
-
|
|
7
|
-
<a name="api_nan_to"></a>
|
|
8
|
-
### Nan::To()
|
|
9
|
-
|
|
10
|
-
Converts a `v8::Local<v8::Value>` to a different subtype of `v8::Value` or to a native data type. Returns a `Nan::MaybeLocal<>` or a `Nan::Maybe<>` accordingly.
|
|
11
|
-
|
|
12
|
-
See [maybe_types.md](./maybe_types.md) for more information on `Nan::Maybe` types.
|
|
13
|
-
|
|
14
|
-
Signatures:
|
|
15
|
-
|
|
16
|
-
```c++
|
|
17
|
-
// V8 types
|
|
18
|
-
Nan::MaybeLocal<v8::Boolean> Nan::To<v8::Boolean>(v8::Local<v8::Value> val);
|
|
19
|
-
Nan::MaybeLocal<v8::Int32> Nan::To<v8::Int32>(v8::Local<v8::Value> val);
|
|
20
|
-
Nan::MaybeLocal<v8::Integer> Nan::To<v8::Integer>(v8::Local<v8::Value> val);
|
|
21
|
-
Nan::MaybeLocal<v8::Object> Nan::To<v8::Object>(v8::Local<v8::Value> val);
|
|
22
|
-
Nan::MaybeLocal<v8::Number> Nan::To<v8::Number>(v8::Local<v8::Value> val);
|
|
23
|
-
Nan::MaybeLocal<v8::String> Nan::To<v8::String>(v8::Local<v8::Value> val);
|
|
24
|
-
Nan::MaybeLocal<v8::Uint32> Nan::To<v8::Uint32>(v8::Local<v8::Value> val);
|
|
25
|
-
|
|
26
|
-
// Native types
|
|
27
|
-
Nan::Maybe<bool> Nan::To<bool>(v8::Local<v8::Value> val);
|
|
28
|
-
Nan::Maybe<double> Nan::To<double>(v8::Local<v8::Value> val);
|
|
29
|
-
Nan::Maybe<int32_t> Nan::To<int32_t>(v8::Local<v8::Value> val);
|
|
30
|
-
Nan::Maybe<int64_t> Nan::To<int64_t>(v8::Local<v8::Value> val);
|
|
31
|
-
Nan::Maybe<uint32_t> Nan::To<uint32_t>(v8::Local<v8::Value> val);
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
### Example
|
|
35
|
-
|
|
36
|
-
```c++
|
|
37
|
-
v8::Local<v8::Value> val;
|
|
38
|
-
Nan::MaybeLocal<v8::String> str = Nan::To<v8::String>(val);
|
|
39
|
-
Nan::Maybe<double> d = Nan::To<double>(val);
|
|
40
|
-
```
|
|
41
|
-
|
|
@@ -1,226 +0,0 @@
|
|
|
1
|
-
## Errors
|
|
2
|
-
|
|
3
|
-
NAN includes helpers for creating, throwing and catching Errors as much of this functionality varies across the supported versions of V8 and must be abstracted.
|
|
4
|
-
|
|
5
|
-
Note that an Error object is simply a specialized form of `v8::Value`.
|
|
6
|
-
|
|
7
|
-
Also consult the V8 Embedders Guide section on [Exceptions](https://developers.google.com/v8/embed#exceptions) for more information.
|
|
8
|
-
|
|
9
|
-
- <a href="#api_nan_error"><b><code>Nan::Error()</code></b></a>
|
|
10
|
-
- <a href="#api_nan_range_error"><b><code>Nan::RangeError()</code></b></a>
|
|
11
|
-
- <a href="#api_nan_reference_error"><b><code>Nan::ReferenceError()</code></b></a>
|
|
12
|
-
- <a href="#api_nan_syntax_error"><b><code>Nan::SyntaxError()</code></b></a>
|
|
13
|
-
- <a href="#api_nan_type_error"><b><code>Nan::TypeError()</code></b></a>
|
|
14
|
-
- <a href="#api_nan_throw_error"><b><code>Nan::ThrowError()</code></b></a>
|
|
15
|
-
- <a href="#api_nan_throw_range_error"><b><code>Nan::ThrowRangeError()</code></b></a>
|
|
16
|
-
- <a href="#api_nan_throw_reference_error"><b><code>Nan::ThrowReferenceError()</code></b></a>
|
|
17
|
-
- <a href="#api_nan_throw_syntax_error"><b><code>Nan::ThrowSyntaxError()</code></b></a>
|
|
18
|
-
- <a href="#api_nan_throw_type_error"><b><code>Nan::ThrowTypeError()</code></b></a>
|
|
19
|
-
- <a href="#api_nan_fatal_exception"><b><code>Nan::FatalException()</code></b></a>
|
|
20
|
-
- <a href="#api_nan_errno_exception"><b><code>Nan::ErrnoException()</code></b></a>
|
|
21
|
-
- <a href="#api_nan_try_catch"><b><code>Nan::TryCatch</code></b></a>
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
<a name="api_nan_error"></a>
|
|
25
|
-
### Nan::Error()
|
|
26
|
-
|
|
27
|
-
Create a new Error object using the [v8::Exception](https://v8docs.nodesource.com/node-8.16/da/d6a/classv8_1_1_exception.html) class in a way that is compatible across the supported versions of V8.
|
|
28
|
-
|
|
29
|
-
Note that an Error object is simply a specialized form of `v8::Value`.
|
|
30
|
-
|
|
31
|
-
Signature:
|
|
32
|
-
|
|
33
|
-
```c++
|
|
34
|
-
v8::Local<v8::Value> Nan::Error(const char *msg);
|
|
35
|
-
v8::Local<v8::Value> Nan::Error(v8::Local<v8::String> msg);
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
<a name="api_nan_range_error"></a>
|
|
40
|
-
### Nan::RangeError()
|
|
41
|
-
|
|
42
|
-
Create a new RangeError object using the [v8::Exception](https://v8docs.nodesource.com/node-8.16/da/d6a/classv8_1_1_exception.html) class in a way that is compatible across the supported versions of V8.
|
|
43
|
-
|
|
44
|
-
Note that an RangeError object is simply a specialized form of `v8::Value`.
|
|
45
|
-
|
|
46
|
-
Signature:
|
|
47
|
-
|
|
48
|
-
```c++
|
|
49
|
-
v8::Local<v8::Value> Nan::RangeError(const char *msg);
|
|
50
|
-
v8::Local<v8::Value> Nan::RangeError(v8::Local<v8::String> msg);
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
<a name="api_nan_reference_error"></a>
|
|
55
|
-
### Nan::ReferenceError()
|
|
56
|
-
|
|
57
|
-
Create a new ReferenceError object using the [v8::Exception](https://v8docs.nodesource.com/node-8.16/da/d6a/classv8_1_1_exception.html) class in a way that is compatible across the supported versions of V8.
|
|
58
|
-
|
|
59
|
-
Note that an ReferenceError object is simply a specialized form of `v8::Value`.
|
|
60
|
-
|
|
61
|
-
Signature:
|
|
62
|
-
|
|
63
|
-
```c++
|
|
64
|
-
v8::Local<v8::Value> Nan::ReferenceError(const char *msg);
|
|
65
|
-
v8::Local<v8::Value> Nan::ReferenceError(v8::Local<v8::String> msg);
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
<a name="api_nan_syntax_error"></a>
|
|
70
|
-
### Nan::SyntaxError()
|
|
71
|
-
|
|
72
|
-
Create a new SyntaxError object using the [v8::Exception](https://v8docs.nodesource.com/node-8.16/da/d6a/classv8_1_1_exception.html) class in a way that is compatible across the supported versions of V8.
|
|
73
|
-
|
|
74
|
-
Note that an SyntaxError object is simply a specialized form of `v8::Value`.
|
|
75
|
-
|
|
76
|
-
Signature:
|
|
77
|
-
|
|
78
|
-
```c++
|
|
79
|
-
v8::Local<v8::Value> Nan::SyntaxError(const char *msg);
|
|
80
|
-
v8::Local<v8::Value> Nan::SyntaxError(v8::Local<v8::String> msg);
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
<a name="api_nan_type_error"></a>
|
|
85
|
-
### Nan::TypeError()
|
|
86
|
-
|
|
87
|
-
Create a new TypeError object using the [v8::Exception](https://v8docs.nodesource.com/node-8.16/da/d6a/classv8_1_1_exception.html) class in a way that is compatible across the supported versions of V8.
|
|
88
|
-
|
|
89
|
-
Note that an TypeError object is simply a specialized form of `v8::Value`.
|
|
90
|
-
|
|
91
|
-
Signature:
|
|
92
|
-
|
|
93
|
-
```c++
|
|
94
|
-
v8::Local<v8::Value> Nan::TypeError(const char *msg);
|
|
95
|
-
v8::Local<v8::Value> Nan::TypeError(v8::Local<v8::String> msg);
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
<a name="api_nan_throw_error"></a>
|
|
100
|
-
### Nan::ThrowError()
|
|
101
|
-
|
|
102
|
-
Throw an Error object (a specialized `v8::Value` as above) in the current context. If a `msg` is provided, a new Error object will be created.
|
|
103
|
-
|
|
104
|
-
Signature:
|
|
105
|
-
|
|
106
|
-
```c++
|
|
107
|
-
void Nan::ThrowError(const char *msg);
|
|
108
|
-
void Nan::ThrowError(v8::Local<v8::String> msg);
|
|
109
|
-
void Nan::ThrowError(v8::Local<v8::Value> error);
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
<a name="api_nan_throw_range_error"></a>
|
|
114
|
-
### Nan::ThrowRangeError()
|
|
115
|
-
|
|
116
|
-
Throw an RangeError object (a specialized `v8::Value` as above) in the current context. If a `msg` is provided, a new RangeError object will be created.
|
|
117
|
-
|
|
118
|
-
Signature:
|
|
119
|
-
|
|
120
|
-
```c++
|
|
121
|
-
void Nan::ThrowRangeError(const char *msg);
|
|
122
|
-
void Nan::ThrowRangeError(v8::Local<v8::String> msg);
|
|
123
|
-
void Nan::ThrowRangeError(v8::Local<v8::Value> error);
|
|
124
|
-
```
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
<a name="api_nan_throw_reference_error"></a>
|
|
128
|
-
### Nan::ThrowReferenceError()
|
|
129
|
-
|
|
130
|
-
Throw an ReferenceError object (a specialized `v8::Value` as above) in the current context. If a `msg` is provided, a new ReferenceError object will be created.
|
|
131
|
-
|
|
132
|
-
Signature:
|
|
133
|
-
|
|
134
|
-
```c++
|
|
135
|
-
void Nan::ThrowReferenceError(const char *msg);
|
|
136
|
-
void Nan::ThrowReferenceError(v8::Local<v8::String> msg);
|
|
137
|
-
void Nan::ThrowReferenceError(v8::Local<v8::Value> error);
|
|
138
|
-
```
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
<a name="api_nan_throw_syntax_error"></a>
|
|
142
|
-
### Nan::ThrowSyntaxError()
|
|
143
|
-
|
|
144
|
-
Throw an SyntaxError object (a specialized `v8::Value` as above) in the current context. If a `msg` is provided, a new SyntaxError object will be created.
|
|
145
|
-
|
|
146
|
-
Signature:
|
|
147
|
-
|
|
148
|
-
```c++
|
|
149
|
-
void Nan::ThrowSyntaxError(const char *msg);
|
|
150
|
-
void Nan::ThrowSyntaxError(v8::Local<v8::String> msg);
|
|
151
|
-
void Nan::ThrowSyntaxError(v8::Local<v8::Value> error);
|
|
152
|
-
```
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
<a name="api_nan_throw_type_error"></a>
|
|
156
|
-
### Nan::ThrowTypeError()
|
|
157
|
-
|
|
158
|
-
Throw an TypeError object (a specialized `v8::Value` as above) in the current context. If a `msg` is provided, a new TypeError object will be created.
|
|
159
|
-
|
|
160
|
-
Signature:
|
|
161
|
-
|
|
162
|
-
```c++
|
|
163
|
-
void Nan::ThrowTypeError(const char *msg);
|
|
164
|
-
void Nan::ThrowTypeError(v8::Local<v8::String> msg);
|
|
165
|
-
void Nan::ThrowTypeError(v8::Local<v8::Value> error);
|
|
166
|
-
```
|
|
167
|
-
|
|
168
|
-
<a name="api_nan_fatal_exception"></a>
|
|
169
|
-
### Nan::FatalException()
|
|
170
|
-
|
|
171
|
-
Replaces `node::FatalException()` which has a different API across supported versions of Node. For use with [`Nan::TryCatch`](#api_nan_try_catch).
|
|
172
|
-
|
|
173
|
-
Signature:
|
|
174
|
-
|
|
175
|
-
```c++
|
|
176
|
-
void Nan::FatalException(const Nan::TryCatch& try_catch);
|
|
177
|
-
```
|
|
178
|
-
|
|
179
|
-
<a name="api_nan_errno_exception"></a>
|
|
180
|
-
### Nan::ErrnoException()
|
|
181
|
-
|
|
182
|
-
Replaces `node::ErrnoException()` which has a different API across supported versions of Node.
|
|
183
|
-
|
|
184
|
-
Signature:
|
|
185
|
-
|
|
186
|
-
```c++
|
|
187
|
-
v8::Local<v8::Value> Nan::ErrnoException(int errorno,
|
|
188
|
-
const char* syscall = NULL,
|
|
189
|
-
const char* message = NULL,
|
|
190
|
-
const char* path = NULL);
|
|
191
|
-
```
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
<a name="api_nan_try_catch"></a>
|
|
195
|
-
### Nan::TryCatch
|
|
196
|
-
|
|
197
|
-
A simple wrapper around [`v8::TryCatch`](https://v8docs.nodesource.com/node-8.16/d4/dc6/classv8_1_1_try_catch.html) compatible with all supported versions of V8. Can be used as a direct replacement in most cases. See also [`Nan::FatalException()`](#api_nan_fatal_exception) for an internal use compatible with `node::FatalException`.
|
|
198
|
-
|
|
199
|
-
Signature:
|
|
200
|
-
|
|
201
|
-
```c++
|
|
202
|
-
class Nan::TryCatch {
|
|
203
|
-
public:
|
|
204
|
-
Nan::TryCatch();
|
|
205
|
-
|
|
206
|
-
bool HasCaught() const;
|
|
207
|
-
|
|
208
|
-
bool CanContinue() const;
|
|
209
|
-
|
|
210
|
-
v8::Local<v8::Value> ReThrow();
|
|
211
|
-
|
|
212
|
-
v8::Local<v8::Value> Exception() const;
|
|
213
|
-
|
|
214
|
-
// Nan::MaybeLocal for older versions of V8
|
|
215
|
-
v8::MaybeLocal<v8::Value> StackTrace() const;
|
|
216
|
-
|
|
217
|
-
v8::Local<v8::Message> Message() const;
|
|
218
|
-
|
|
219
|
-
void Reset();
|
|
220
|
-
|
|
221
|
-
void SetVerbose(bool value);
|
|
222
|
-
|
|
223
|
-
void SetCaptureMessage(bool value);
|
|
224
|
-
};
|
|
225
|
-
```
|
|
226
|
-
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
## JSON
|
|
2
|
-
|
|
3
|
-
The _JSON_ object provides the c++ versions of the methods offered by the `JSON` object in javascript. V8 exposes these methods via the `v8::JSON` object.
|
|
4
|
-
|
|
5
|
-
- <a href="#api_nan_json_parse"><b><code>Nan::JSON.Parse</code></b></a>
|
|
6
|
-
- <a href="#api_nan_json_stringify"><b><code>Nan::JSON.Stringify</code></b></a>
|
|
7
|
-
|
|
8
|
-
Refer to the V8 JSON object in the [V8 documentation](https://v8docs.nodesource.com/node-8.16/da/d6f/classv8_1_1_j_s_o_n.html) for more information about these methods and their arguments.
|
|
9
|
-
|
|
10
|
-
<a name="api_nan_json_parse"></a>
|
|
11
|
-
|
|
12
|
-
### Nan::JSON.Parse
|
|
13
|
-
|
|
14
|
-
A simple wrapper around [`v8::JSON::Parse`](https://v8docs.nodesource.com/node-8.16/da/d6f/classv8_1_1_j_s_o_n.html#a936310d2540fb630ed37d3ee3ffe4504).
|
|
15
|
-
|
|
16
|
-
Definition:
|
|
17
|
-
|
|
18
|
-
```c++
|
|
19
|
-
Nan::MaybeLocal<v8::Value> Nan::JSON::Parse(v8::Local<v8::String> json_string);
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
Use `JSON.Parse(json_string)` to parse a string into a `v8::Value`.
|
|
23
|
-
|
|
24
|
-
Example:
|
|
25
|
-
|
|
26
|
-
```c++
|
|
27
|
-
v8::Local<v8::String> json_string = Nan::New("{ \"JSON\": \"object\" }").ToLocalChecked();
|
|
28
|
-
|
|
29
|
-
Nan::JSON NanJSON;
|
|
30
|
-
Nan::MaybeLocal<v8::Value> result = NanJSON.Parse(json_string);
|
|
31
|
-
if (!result.IsEmpty()) {
|
|
32
|
-
v8::Local<v8::Value> val = result.ToLocalChecked();
|
|
33
|
-
}
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
<a name="api_nan_json_stringify"></a>
|
|
37
|
-
|
|
38
|
-
### Nan::JSON.Stringify
|
|
39
|
-
|
|
40
|
-
A simple wrapper around [`v8::JSON::Stringify`](https://v8docs.nodesource.com/node-8.16/da/d6f/classv8_1_1_j_s_o_n.html#a44b255c3531489ce43f6110209138860).
|
|
41
|
-
|
|
42
|
-
Definition:
|
|
43
|
-
|
|
44
|
-
```c++
|
|
45
|
-
Nan::MaybeLocal<v8::String> Nan::JSON::Stringify(v8::Local<v8::Object> json_object, v8::Local<v8::String> gap = v8::Local<v8::String>());
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
Use `JSON.Stringify(value)` to stringify a `v8::Object`.
|
|
49
|
-
|
|
50
|
-
Example:
|
|
51
|
-
|
|
52
|
-
```c++
|
|
53
|
-
// using `v8::Local<v8::Value> val` from the `JSON::Parse` example
|
|
54
|
-
v8::Local<v8::Object> obj = Nan::To<v8::Object>(val).ToLocalChecked();
|
|
55
|
-
|
|
56
|
-
Nan::JSON NanJSON;
|
|
57
|
-
Nan::MaybeLocal<v8::String> result = NanJSON.Stringify(obj);
|
|
58
|
-
if (!result.IsEmpty()) {
|
|
59
|
-
v8::Local<v8::String> stringified = result.ToLocalChecked();
|
|
60
|
-
}
|
|
61
|
-
```
|
|
62
|
-
|