@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.
Files changed (209) hide show
  1. package/bin/VERSION +1 -1
  2. package/bin/linux/contrast-service +0 -0
  3. package/bin/mac/contrast-service +0 -0
  4. package/bin/windows/contrast-service.exe +0 -0
  5. package/lib/assess/membrane/deserialization-membrane.js +4 -5
  6. package/lib/assess/membrane/source-membrane.js +16 -33
  7. package/lib/assess/models/call-context.js +1 -1
  8. package/lib/assess/policy/propagators.json +19 -21
  9. package/lib/assess/policy/rules.json +7 -2
  10. package/lib/assess/policy/signatures.json +42 -0
  11. package/lib/assess/policy/util.js +2 -1
  12. package/lib/assess/propagators/JSON/parse.js +1 -1
  13. package/lib/assess/propagators/JSON/stringify.js +3 -3
  14. package/lib/assess/propagators/array-prototype-join.js +7 -8
  15. package/lib/assess/propagators/common.js +7 -5
  16. package/lib/assess/propagators/dustjs/escape-html.js +22 -0
  17. package/lib/assess/propagators/dustjs/escape-js.js +22 -0
  18. package/lib/assess/propagators/encode-uri/encode-uri-component.js +22 -0
  19. package/lib/assess/propagators/encode-uri/encode-uri.js +22 -0
  20. package/lib/assess/propagators/handlebars-escape-expresssion.js +1 -1
  21. package/lib/assess/propagators/index.js +0 -2
  22. package/lib/assess/propagators/joi/boolean.js +1 -1
  23. package/lib/assess/propagators/joi/expression.js +1 -1
  24. package/lib/assess/propagators/joi/number.js +1 -1
  25. package/lib/assess/propagators/joi/string-base.js +1 -1
  26. package/lib/assess/propagators/joi/string-schema.js +12 -13
  27. package/lib/assess/propagators/joi/values.js +37 -22
  28. package/lib/assess/propagators/manager.js +12 -10
  29. package/lib/assess/propagators/mongoose/helpers.js +20 -0
  30. package/lib/assess/propagators/mongoose/index.js +18 -0
  31. package/lib/assess/propagators/mongoose/map.js +74 -0
  32. package/lib/assess/propagators/mongoose/string.js +104 -0
  33. package/lib/assess/propagators/mustache/escape.js +22 -0
  34. package/lib/assess/propagators/number.js +54 -0
  35. package/lib/assess/propagators/object.js +6 -7
  36. package/lib/assess/propagators/path/basename.js +14 -13
  37. package/lib/assess/propagators/path/common.js +156 -47
  38. package/lib/assess/propagators/path/dirname.js +14 -13
  39. package/lib/assess/propagators/path/extname.js +14 -13
  40. package/lib/assess/propagators/path/join.js +5 -1
  41. package/lib/assess/propagators/path/normalize.js +1 -2
  42. package/lib/assess/propagators/path/parse.js +1 -1
  43. package/lib/assess/propagators/path/relative.js +7 -5
  44. package/lib/assess/propagators/path/resolve.js +11 -2
  45. package/lib/assess/propagators/querystring/escape.js +20 -18
  46. package/lib/assess/propagators/querystring/parse.js +7 -5
  47. package/lib/assess/propagators/querystring/stringify.js +25 -24
  48. package/lib/assess/propagators/querystring/unescape.js +20 -18
  49. package/lib/assess/propagators/sequelize/sql-string-escape.js +1 -1
  50. package/lib/assess/propagators/sequelize/sql-string-format-named-parameters.js +1 -1
  51. package/lib/assess/propagators/sequelize/sql-string-format.js +3 -3
  52. package/lib/assess/propagators/sequelize/utils.js +2 -2
  53. package/lib/assess/propagators/string-prototype-replace.js +30 -28
  54. package/lib/assess/propagators/string-prototype-split.js +36 -36
  55. package/lib/assess/propagators/string-prototype-trim.js +15 -17
  56. package/lib/assess/propagators/string.js +12 -16
  57. package/lib/assess/propagators/template-escape.js +87 -0
  58. package/lib/assess/propagators/templates.js +10 -11
  59. package/lib/assess/propagators/url/url-prototype-parse.js +5 -6
  60. package/lib/assess/propagators/url/url-url.js +51 -43
  61. package/lib/assess/propagators/util/format.js +1 -1
  62. package/lib/assess/propagators/v8/init-hooks.js +3 -3
  63. package/lib/assess/propagators/validator/init-hooks.js +22 -22
  64. package/lib/assess/sinks/common.js +10 -5
  65. package/lib/assess/sinks/dustjs-linkedin-xss.js +131 -0
  66. package/lib/assess/sinks/libxmljs-xxe.js +1 -1
  67. package/lib/assess/sinks/mongodb.js +2 -1
  68. package/lib/assess/sinks/ssrf-url.js +1 -1
  69. package/lib/constants.js +4 -1
  70. package/lib/core/arch-components/dynamodb.js +1 -2
  71. package/lib/core/arch-components/dynamodbv3.js +44 -0
  72. package/lib/core/arch-components/index.js +1 -0
  73. package/lib/core/arch-components/rethinkdb.js +53 -0
  74. package/lib/core/config/options.js +3 -2
  75. package/lib/core/rewrite/injections.js +8 -0
  76. package/lib/core/stacktrace.js +2 -1
  77. package/lib/feature-set.js +1 -1
  78. package/lib/hooks/frameworks/base.js +8 -2
  79. package/lib/hooks/frameworks/http.js +23 -16
  80. package/lib/hooks/frameworks/http2.js +73 -0
  81. package/lib/hooks/frameworks/index.js +8 -3
  82. package/lib/hooks/http.js +112 -128
  83. package/lib/hooks/object-to-primitive.js +6 -7
  84. package/lib/hooks/patcher.js +75 -44
  85. package/lib/hooks/require.js +16 -22
  86. package/lib/instrumentation.js +0 -3
  87. package/lib/protect/rules/nosqli/nosql-injection-rule.js +228 -0
  88. package/lib/protect/rules/rule-factory.js +2 -2
  89. package/lib/protect/service.js +23 -11
  90. package/lib/protect/sinks/mongodb.js +56 -55
  91. package/lib/reporter/translations/to-protobuf/dtm/index.js +1 -1
  92. package/lib/reporter/translations/to-protobuf/dtm/ip-denylist-details.js +1 -1
  93. package/lib/reporter/translations/to-protobuf/dtm/rasp-rule-sample.js +1 -1
  94. package/lib/reporter/translations/to-protobuf/settings/defend-features.js +8 -6
  95. package/lib/reporter/translations/to-protobuf/settings/exclusions.js +5 -4
  96. package/lib/tracker.js +13 -65
  97. package/lib/util/some.js +27 -0
  98. package/lib/util/source-map.js +1 -1
  99. package/package.json +15 -16
  100. package/lib/hooks/frameworks/https.js +0 -42
  101. package/lib/protect/rules/nosqli/no-sql-injection-rule.js +0 -109
  102. package/node_modules/bindings/LICENSE.md +0 -22
  103. package/node_modules/bindings/README.md +0 -98
  104. package/node_modules/bindings/bindings.js +0 -221
  105. package/node_modules/bindings/package.json +0 -32
  106. package/node_modules/file-uri-to-path/.npmignore +0 -1
  107. package/node_modules/file-uri-to-path/.travis.yml +0 -30
  108. package/node_modules/file-uri-to-path/History.md +0 -21
  109. package/node_modules/file-uri-to-path/LICENSE +0 -20
  110. package/node_modules/file-uri-to-path/README.md +0 -74
  111. package/node_modules/file-uri-to-path/index.d.ts +0 -2
  112. package/node_modules/file-uri-to-path/index.js +0 -66
  113. package/node_modules/file-uri-to-path/package.json +0 -36
  114. package/node_modules/file-uri-to-path/test/test.js +0 -24
  115. package/node_modules/file-uri-to-path/test/tests.json +0 -13
  116. package/node_modules/glossy/LICENSE +0 -19
  117. package/node_modules/glossy/README.md +0 -129
  118. package/node_modules/glossy/index.js +0 -12
  119. package/node_modules/glossy/lib/glossy/parse.js +0 -520
  120. package/node_modules/glossy/lib/glossy/produce.js +0 -459
  121. package/node_modules/glossy/package.json +0 -47
  122. package/node_modules/glossy/test/decide.js +0 -7
  123. package/node_modules/glossy/test/decode_pri.js +0 -24
  124. package/node_modules/glossy/test/parse_3164.js +0 -104
  125. package/node_modules/glossy/test/parse_5424.js +0 -106
  126. package/node_modules/glossy/test/parse_5848.js +0 -40
  127. package/node_modules/glossy/test/parse_8601.js +0 -14
  128. package/node_modules/glossy/test/parse_rfc3339.js +0 -9
  129. package/node_modules/glossy/test/produce.js +0 -162
  130. package/node_modules/glossy/test/runner.js +0 -40
  131. package/node_modules/glossy/test/structure_data.js +0 -24
  132. package/node_modules/nan/CHANGELOG.md +0 -537
  133. package/node_modules/nan/LICENSE.md +0 -13
  134. package/node_modules/nan/README.md +0 -455
  135. package/node_modules/nan/doc/asyncworker.md +0 -146
  136. package/node_modules/nan/doc/buffers.md +0 -54
  137. package/node_modules/nan/doc/callback.md +0 -76
  138. package/node_modules/nan/doc/converters.md +0 -41
  139. package/node_modules/nan/doc/errors.md +0 -226
  140. package/node_modules/nan/doc/json.md +0 -62
  141. package/node_modules/nan/doc/maybe_types.md +0 -583
  142. package/node_modules/nan/doc/methods.md +0 -664
  143. package/node_modules/nan/doc/new.md +0 -147
  144. package/node_modules/nan/doc/node_misc.md +0 -123
  145. package/node_modules/nan/doc/object_wrappers.md +0 -263
  146. package/node_modules/nan/doc/persistent.md +0 -296
  147. package/node_modules/nan/doc/scopes.md +0 -73
  148. package/node_modules/nan/doc/script.md +0 -38
  149. package/node_modules/nan/doc/string_bytes.md +0 -62
  150. package/node_modules/nan/doc/v8_internals.md +0 -199
  151. package/node_modules/nan/doc/v8_misc.md +0 -85
  152. package/node_modules/nan/include_dirs.js +0 -1
  153. package/node_modules/nan/nan.h +0 -2898
  154. package/node_modules/nan/nan_callbacks.h +0 -88
  155. package/node_modules/nan/nan_callbacks_12_inl.h +0 -514
  156. package/node_modules/nan/nan_callbacks_pre_12_inl.h +0 -520
  157. package/node_modules/nan/nan_converters.h +0 -72
  158. package/node_modules/nan/nan_converters_43_inl.h +0 -68
  159. package/node_modules/nan/nan_converters_pre_43_inl.h +0 -42
  160. package/node_modules/nan/nan_define_own_property_helper.h +0 -29
  161. package/node_modules/nan/nan_implementation_12_inl.h +0 -430
  162. package/node_modules/nan/nan_implementation_pre_12_inl.h +0 -263
  163. package/node_modules/nan/nan_json.h +0 -166
  164. package/node_modules/nan/nan_maybe_43_inl.h +0 -356
  165. package/node_modules/nan/nan_maybe_pre_43_inl.h +0 -268
  166. package/node_modules/nan/nan_new.h +0 -340
  167. package/node_modules/nan/nan_object_wrap.h +0 -156
  168. package/node_modules/nan/nan_persistent_12_inl.h +0 -132
  169. package/node_modules/nan/nan_persistent_pre_12_inl.h +0 -242
  170. package/node_modules/nan/nan_private.h +0 -73
  171. package/node_modules/nan/nan_string_bytes.h +0 -305
  172. package/node_modules/nan/nan_typedarray_contents.h +0 -96
  173. package/node_modules/nan/nan_weak.h +0 -437
  174. package/node_modules/nan/package.json +0 -41
  175. package/node_modules/nan/tools/1to2.js +0 -412
  176. package/node_modules/nan/tools/README.md +0 -14
  177. package/node_modules/nan/tools/package.json +0 -19
  178. package/node_modules/unix-dgram/LICENSE +0 -13
  179. package/node_modules/unix-dgram/README.md +0 -107
  180. package/node_modules/unix-dgram/binding.gyp +0 -20
  181. package/node_modules/unix-dgram/build/Makefile +0 -324
  182. package/node_modules/unix-dgram/build/Release/.deps/Release/obj.target/unix_dgram/src/unix_dgram.o.d +0 -58
  183. package/node_modules/unix-dgram/build/Release/.deps/Release/obj.target/unix_dgram.node.d +0 -1
  184. package/node_modules/unix-dgram/build/Release/.deps/Release/unix_dgram.node.d +0 -1
  185. package/node_modules/unix-dgram/build/Release/obj.target/unix_dgram/src/unix_dgram.o +0 -0
  186. package/node_modules/unix-dgram/build/Release/obj.target/unix_dgram.node +0 -0
  187. package/node_modules/unix-dgram/build/Release/unix_dgram.node +0 -0
  188. package/node_modules/unix-dgram/build/binding.Makefile +0 -6
  189. package/node_modules/unix-dgram/build/config.gypi +0 -213
  190. package/node_modules/unix-dgram/build/unix_dgram.target.mk +0 -159
  191. package/node_modules/unix-dgram/lib/unix_dgram.js +0 -168
  192. package/node_modules/unix-dgram/package.json +0 -36
  193. package/node_modules/unix-dgram/src/unix_dgram.cc +0 -404
  194. package/node_modules/unix-dgram/src/win_dummy.cc +0 -7
  195. package/node_modules/unix-dgram/test/test-connect-callback.js +0 -68
  196. package/node_modules/unix-dgram/test/test-connect.js +0 -53
  197. package/node_modules/unix-dgram/test/test-dgram-unix.js +0 -58
  198. package/node_modules/unix-dgram/test/test-send-error.js +0 -26
  199. package/node_modules/winston-syslog/.eslintrc +0 -7
  200. package/node_modules/winston-syslog/.travis.yml +0 -14
  201. package/node_modules/winston-syslog/CHANGELOG.md +0 -9
  202. package/node_modules/winston-syslog/LICENSE +0 -20
  203. package/node_modules/winston-syslog/README.md +0 -135
  204. package/node_modules/winston-syslog/lib/utils.js +0 -26
  205. package/node_modules/winston-syslog/lib/winston-syslog.js +0 -385
  206. package/node_modules/winston-syslog/package.json +0 -56
  207. package/node_modules/winston-syslog/test/format-test.js +0 -122
  208. package/node_modules/winston-syslog/test/syslog-test.js +0 -95
  209. package/node_modules/winston-syslog/test/unix-connect-test.js +0 -133
@@ -1,437 +0,0 @@
1
- /*********************************************************************
2
- * NAN - Native Abstractions for Node.js
3
- *
4
- * Copyright (c) 2018 NAN contributors
5
- *
6
- * MIT License <https://github.com/nodejs/nan/blob/master/LICENSE.md>
7
- ********************************************************************/
8
-
9
- #ifndef NAN_WEAK_H_
10
- #define NAN_WEAK_H_
11
-
12
- static const int kInternalFieldsInWeakCallback = 2;
13
- static const int kNoInternalFieldIndex = -1;
14
-
15
- #if defined(V8_MAJOR_VERSION) && (V8_MAJOR_VERSION > 4 || \
16
- (V8_MAJOR_VERSION == 4 && defined(V8_MINOR_VERSION) && V8_MINOR_VERSION >= 3))
17
- # define NAN_WEAK_PARAMETER_CALLBACK_DATA_TYPE_ \
18
- v8::WeakCallbackInfo<WeakCallbackInfo<T> > const&
19
- # define NAN_WEAK_TWOFIELD_CALLBACK_DATA_TYPE_ \
20
- NAN_WEAK_PARAMETER_CALLBACK_DATA_TYPE_
21
- # define NAN_WEAK_PARAMETER_CALLBACK_SIG_ NAN_WEAK_PARAMETER_CALLBACK_DATA_TYPE_
22
- # define NAN_WEAK_TWOFIELD_CALLBACK_SIG_ NAN_WEAK_TWOFIELD_CALLBACK_DATA_TYPE_
23
- #elif NODE_MODULE_VERSION > IOJS_1_1_MODULE_VERSION
24
- # define NAN_WEAK_PARAMETER_CALLBACK_DATA_TYPE_ \
25
- v8::PhantomCallbackData<WeakCallbackInfo<T> > const&
26
- # define NAN_WEAK_TWOFIELD_CALLBACK_DATA_TYPE_ \
27
- NAN_WEAK_PARAMETER_CALLBACK_DATA_TYPE_
28
- # define NAN_WEAK_PARAMETER_CALLBACK_SIG_ NAN_WEAK_PARAMETER_CALLBACK_DATA_TYPE_
29
- # define NAN_WEAK_TWOFIELD_CALLBACK_SIG_ NAN_WEAK_TWOFIELD_CALLBACK_DATA_TYPE_
30
- #elif NODE_MODULE_VERSION > NODE_0_12_MODULE_VERSION
31
- # define NAN_WEAK_PARAMETER_CALLBACK_DATA_TYPE_ \
32
- v8::PhantomCallbackData<WeakCallbackInfo<T> > const&
33
- # define NAN_WEAK_TWOFIELD_CALLBACK_DATA_TYPE_ \
34
- v8::InternalFieldsCallbackData<WeakCallbackInfo<T>, void> const&
35
- # define NAN_WEAK_PARAMETER_CALLBACK_SIG_ NAN_WEAK_PARAMETER_CALLBACK_DATA_TYPE_
36
- # define NAN_WEAK_TWOFIELD_CALLBACK_SIG_ NAN_WEAK_TWOFIELD_CALLBACK_DATA_TYPE_
37
- #elif NODE_MODULE_VERSION > NODE_0_10_MODULE_VERSION
38
- # define NAN_WEAK_CALLBACK_DATA_TYPE_ \
39
- v8::WeakCallbackData<S, WeakCallbackInfo<T> > const&
40
- # define NAN_WEAK_CALLBACK_SIG_ NAN_WEAK_CALLBACK_DATA_TYPE_
41
- #else
42
- # define NAN_WEAK_CALLBACK_DATA_TYPE_ void *
43
- # define NAN_WEAK_CALLBACK_SIG_ \
44
- v8::Persistent<v8::Value>, NAN_WEAK_CALLBACK_DATA_TYPE_
45
- #endif
46
-
47
- template<typename T>
48
- class WeakCallbackInfo {
49
- public:
50
- typedef void (*Callback)(const WeakCallbackInfo<T>& data);
51
- WeakCallbackInfo(
52
- Persistent<v8::Value> *persistent
53
- , Callback callback
54
- , void *parameter
55
- , void *field1 = 0
56
- , void *field2 = 0) :
57
- callback_(callback), isolate_(0), parameter_(parameter) {
58
- std::memcpy(&persistent_, persistent, sizeof (v8::Persistent<v8::Value>));
59
- internal_fields_[0] = field1;
60
- internal_fields_[1] = field2;
61
- }
62
- inline v8::Isolate *GetIsolate() const { return isolate_; }
63
- inline T *GetParameter() const { return static_cast<T*>(parameter_); }
64
- inline void *GetInternalField(int index) const {
65
- assert((index == 0 || index == 1) && "internal field index out of bounds");
66
- if (index == 0) {
67
- return internal_fields_[0];
68
- } else {
69
- return internal_fields_[1];
70
- }
71
- }
72
-
73
- private:
74
- NAN_DISALLOW_ASSIGN_COPY_MOVE(WeakCallbackInfo)
75
- Callback callback_;
76
- v8::Isolate *isolate_;
77
- void *parameter_;
78
- void *internal_fields_[kInternalFieldsInWeakCallback];
79
- v8::Persistent<v8::Value> persistent_;
80
- template<typename S, typename M> friend class Persistent;
81
- template<typename S> friend class PersistentBase;
82
- #if NODE_MODULE_VERSION <= NODE_0_12_MODULE_VERSION
83
- # if NODE_MODULE_VERSION > NODE_0_10_MODULE_VERSION
84
- template<typename S>
85
- static void invoke(NAN_WEAK_CALLBACK_SIG_ data);
86
- template<typename S>
87
- static WeakCallbackInfo *unwrap(NAN_WEAK_CALLBACK_DATA_TYPE_ data);
88
- # else
89
- static void invoke(NAN_WEAK_CALLBACK_SIG_ data);
90
- static WeakCallbackInfo *unwrap(NAN_WEAK_CALLBACK_DATA_TYPE_ data);
91
- # endif
92
- #else
93
- # if defined(V8_MAJOR_VERSION) && (V8_MAJOR_VERSION > 4 || \
94
- (V8_MAJOR_VERSION == 4 && defined(V8_MINOR_VERSION) && V8_MINOR_VERSION >= 3))
95
- template<bool isFirstPass>
96
- static void invokeparameter(NAN_WEAK_PARAMETER_CALLBACK_SIG_ data);
97
- template<bool isFirstPass>
98
- static void invoketwofield(NAN_WEAK_TWOFIELD_CALLBACK_SIG_ data);
99
- # else
100
- static void invokeparameter(NAN_WEAK_PARAMETER_CALLBACK_SIG_ data);
101
- static void invoketwofield(NAN_WEAK_TWOFIELD_CALLBACK_SIG_ data);
102
- # endif
103
- static WeakCallbackInfo *unwrapparameter(
104
- NAN_WEAK_PARAMETER_CALLBACK_DATA_TYPE_ data);
105
- static WeakCallbackInfo *unwraptwofield(
106
- NAN_WEAK_TWOFIELD_CALLBACK_DATA_TYPE_ data);
107
- #endif
108
- };
109
-
110
-
111
- #if defined(V8_MAJOR_VERSION) && (V8_MAJOR_VERSION > 4 || \
112
- (V8_MAJOR_VERSION == 4 && defined(V8_MINOR_VERSION) && V8_MINOR_VERSION >= 3))
113
-
114
- template<typename T>
115
- template<bool isFirstPass>
116
- void
117
- WeakCallbackInfo<T>::invokeparameter(NAN_WEAK_PARAMETER_CALLBACK_SIG_ data) {
118
- WeakCallbackInfo<T> *cbinfo = unwrapparameter(data);
119
- if (isFirstPass) {
120
- cbinfo->persistent_.Reset();
121
- data.SetSecondPassCallback(invokeparameter<false>);
122
- } else {
123
- cbinfo->callback_(*cbinfo);
124
- delete cbinfo;
125
- }
126
- }
127
-
128
- template<typename T>
129
- template<bool isFirstPass>
130
- void
131
- WeakCallbackInfo<T>::invoketwofield(NAN_WEAK_TWOFIELD_CALLBACK_SIG_ data) {
132
- WeakCallbackInfo<T> *cbinfo = unwraptwofield(data);
133
- if (isFirstPass) {
134
- cbinfo->persistent_.Reset();
135
- data.SetSecondPassCallback(invoketwofield<false>);
136
- } else {
137
- cbinfo->callback_(*cbinfo);
138
- delete cbinfo;
139
- }
140
- }
141
-
142
- template<typename T>
143
- WeakCallbackInfo<T> *WeakCallbackInfo<T>::unwrapparameter(
144
- NAN_WEAK_PARAMETER_CALLBACK_DATA_TYPE_ data) {
145
- WeakCallbackInfo<T> *cbinfo =
146
- static_cast<WeakCallbackInfo<T>*>(data.GetParameter());
147
- cbinfo->isolate_ = data.GetIsolate();
148
- return cbinfo;
149
- }
150
-
151
- template<typename T>
152
- WeakCallbackInfo<T> *WeakCallbackInfo<T>::unwraptwofield(
153
- NAN_WEAK_TWOFIELD_CALLBACK_DATA_TYPE_ data) {
154
- WeakCallbackInfo<T> *cbinfo =
155
- static_cast<WeakCallbackInfo<T>*>(data.GetInternalField(0));
156
- cbinfo->isolate_ = data.GetIsolate();
157
- return cbinfo;
158
- }
159
-
160
- #undef NAN_WEAK_PARAMETER_CALLBACK_SIG_
161
- #undef NAN_WEAK_TWOFIELD_CALLBACK_SIG_
162
- #undef NAN_WEAK_PARAMETER_CALLBACK_DATA_TYPE_
163
- #undef NAN_WEAK_TWOFIELD_CALLBACK_DATA_TYPE_
164
- # elif NODE_MODULE_VERSION > NODE_0_12_MODULE_VERSION
165
-
166
- template<typename T>
167
- void
168
- WeakCallbackInfo<T>::invokeparameter(NAN_WEAK_PARAMETER_CALLBACK_SIG_ data) {
169
- WeakCallbackInfo<T> *cbinfo = unwrapparameter(data);
170
- cbinfo->persistent_.Reset();
171
- cbinfo->callback_(*cbinfo);
172
- delete cbinfo;
173
- }
174
-
175
- template<typename T>
176
- void
177
- WeakCallbackInfo<T>::invoketwofield(NAN_WEAK_TWOFIELD_CALLBACK_SIG_ data) {
178
- WeakCallbackInfo<T> *cbinfo = unwraptwofield(data);
179
- cbinfo->persistent_.Reset();
180
- cbinfo->callback_(*cbinfo);
181
- delete cbinfo;
182
- }
183
-
184
- template<typename T>
185
- WeakCallbackInfo<T> *WeakCallbackInfo<T>::unwrapparameter(
186
- NAN_WEAK_PARAMETER_CALLBACK_DATA_TYPE_ data) {
187
- WeakCallbackInfo<T> *cbinfo =
188
- static_cast<WeakCallbackInfo<T>*>(data.GetParameter());
189
- cbinfo->isolate_ = data.GetIsolate();
190
- return cbinfo;
191
- }
192
-
193
- template<typename T>
194
- WeakCallbackInfo<T> *WeakCallbackInfo<T>::unwraptwofield(
195
- NAN_WEAK_TWOFIELD_CALLBACK_DATA_TYPE_ data) {
196
- WeakCallbackInfo<T> *cbinfo =
197
- static_cast<WeakCallbackInfo<T>*>(data.GetInternalField1());
198
- cbinfo->isolate_ = data.GetIsolate();
199
- return cbinfo;
200
- }
201
-
202
- #undef NAN_WEAK_PARAMETER_CALLBACK_SIG_
203
- #undef NAN_WEAK_TWOFIELD_CALLBACK_SIG_
204
- #undef NAN_WEAK_PARAMETER_CALLBACK_DATA_TYPE_
205
- #undef NAN_WEAK_TWOFIELD_CALLBACK_DATA_TYPE_
206
- #elif NODE_MODULE_VERSION > NODE_0_10_MODULE_VERSION
207
-
208
- template<typename T>
209
- template<typename S>
210
- void WeakCallbackInfo<T>::invoke(NAN_WEAK_CALLBACK_SIG_ data) {
211
- WeakCallbackInfo<T> *cbinfo = unwrap(data);
212
- cbinfo->persistent_.Reset();
213
- cbinfo->callback_(*cbinfo);
214
- delete cbinfo;
215
- }
216
-
217
- template<typename T>
218
- template<typename S>
219
- WeakCallbackInfo<T> *WeakCallbackInfo<T>::unwrap(
220
- NAN_WEAK_CALLBACK_DATA_TYPE_ data) {
221
- void *parameter = data.GetParameter();
222
- WeakCallbackInfo<T> *cbinfo =
223
- static_cast<WeakCallbackInfo<T>*>(parameter);
224
- cbinfo->isolate_ = data.GetIsolate();
225
- return cbinfo;
226
- }
227
-
228
- #undef NAN_WEAK_CALLBACK_SIG_
229
- #undef NAN_WEAK_CALLBACK_DATA_TYPE_
230
- #else
231
-
232
- template<typename T>
233
- void WeakCallbackInfo<T>::invoke(NAN_WEAK_CALLBACK_SIG_ data) {
234
- WeakCallbackInfo<T> *cbinfo = unwrap(data);
235
- cbinfo->persistent_.Dispose();
236
- cbinfo->persistent_.Clear();
237
- cbinfo->callback_(*cbinfo);
238
- delete cbinfo;
239
- }
240
-
241
- template<typename T>
242
- WeakCallbackInfo<T> *WeakCallbackInfo<T>::unwrap(
243
- NAN_WEAK_CALLBACK_DATA_TYPE_ data) {
244
- WeakCallbackInfo<T> *cbinfo =
245
- static_cast<WeakCallbackInfo<T>*>(data);
246
- cbinfo->isolate_ = v8::Isolate::GetCurrent();
247
- return cbinfo;
248
- }
249
-
250
- #undef NAN_WEAK_CALLBACK_SIG_
251
- #undef NAN_WEAK_CALLBACK_DATA_TYPE_
252
- #endif
253
-
254
- #if defined(V8_MAJOR_VERSION) && (V8_MAJOR_VERSION > 4 || \
255
- (V8_MAJOR_VERSION == 4 && defined(V8_MINOR_VERSION) && V8_MINOR_VERSION >= 3))
256
- template<typename T, typename M>
257
- template<typename P>
258
- inline void Persistent<T, M>::SetWeak(
259
- P *parameter
260
- , typename WeakCallbackInfo<P>::Callback callback
261
- , WeakCallbackType type) {
262
- WeakCallbackInfo<P> *wcbd;
263
- if (type == WeakCallbackType::kParameter) {
264
- wcbd = new WeakCallbackInfo<P>(
265
- reinterpret_cast<Persistent<v8::Value>*>(this)
266
- , callback
267
- , parameter);
268
- v8::PersistentBase<T>::SetWeak(
269
- wcbd
270
- , WeakCallbackInfo<P>::template invokeparameter<true>
271
- , type);
272
- } else {
273
- v8::Local<v8::Value>* self_v(reinterpret_cast<v8::Local<v8::Value>*>(this));
274
- assert((*self_v)->IsObject());
275
- v8::Local<v8::Object> self((*self_v).As<v8::Object>());
276
- int count = self->InternalFieldCount();
277
- void *internal_fields[kInternalFieldsInWeakCallback] = {0, 0};
278
- for (int i = 0; i < count && i < kInternalFieldsInWeakCallback; i++) {
279
- internal_fields[i] = self->GetAlignedPointerFromInternalField(i);
280
- }
281
- wcbd = new WeakCallbackInfo<P>(
282
- reinterpret_cast<Persistent<v8::Value>*>(this)
283
- , callback
284
- , 0
285
- , internal_fields[0]
286
- , internal_fields[1]);
287
- self->SetAlignedPointerInInternalField(0, wcbd);
288
- v8::PersistentBase<T>::SetWeak(
289
- static_cast<WeakCallbackInfo<P>*>(0)
290
- , WeakCallbackInfo<P>::template invoketwofield<true>
291
- , type);
292
- }
293
- }
294
- #elif NODE_MODULE_VERSION > IOJS_1_1_MODULE_VERSION
295
- template<typename T, typename M>
296
- template<typename P>
297
- inline void Persistent<T, M>::SetWeak(
298
- P *parameter
299
- , typename WeakCallbackInfo<P>::Callback callback
300
- , WeakCallbackType type) {
301
- WeakCallbackInfo<P> *wcbd;
302
- if (type == WeakCallbackType::kParameter) {
303
- wcbd = new WeakCallbackInfo<P>(
304
- reinterpret_cast<Persistent<v8::Value>*>(this)
305
- , callback
306
- , parameter);
307
- v8::PersistentBase<T>::SetPhantom(
308
- wcbd
309
- , WeakCallbackInfo<P>::invokeparameter);
310
- } else {
311
- v8::Local<v8::Value>* self_v(reinterpret_cast<v8::Local<v8::Value>*>(this));
312
- assert((*self_v)->IsObject());
313
- v8::Local<v8::Object> self((*self_v).As<v8::Object>());
314
- int count = self->InternalFieldCount();
315
- void *internal_fields[kInternalFieldsInWeakCallback] = {0, 0};
316
- for (int i = 0; i < count && i < kInternalFieldsInWeakCallback; i++) {
317
- internal_fields[i] = self->GetAlignedPointerFromInternalField(i);
318
- }
319
- wcbd = new WeakCallbackInfo<P>(
320
- reinterpret_cast<Persistent<v8::Value>*>(this)
321
- , callback
322
- , 0
323
- , internal_fields[0]
324
- , internal_fields[1]);
325
- self->SetAlignedPointerInInternalField(0, wcbd);
326
- v8::PersistentBase<T>::SetPhantom(
327
- static_cast<WeakCallbackInfo<P>*>(0)
328
- , WeakCallbackInfo<P>::invoketwofield
329
- , 0
330
- , count > 1 ? 1 : kNoInternalFieldIndex);
331
- }
332
- }
333
- #elif NODE_MODULE_VERSION > NODE_0_12_MODULE_VERSION
334
- template<typename T, typename M>
335
- template<typename P>
336
- inline void Persistent<T, M>::SetWeak(
337
- P *parameter
338
- , typename WeakCallbackInfo<P>::Callback callback
339
- , WeakCallbackType type) {
340
- WeakCallbackInfo<P> *wcbd;
341
- if (type == WeakCallbackType::kParameter) {
342
- wcbd = new WeakCallbackInfo<P>(
343
- reinterpret_cast<Persistent<v8::Value>*>(this)
344
- , callback
345
- , parameter);
346
- v8::PersistentBase<T>::SetPhantom(
347
- wcbd
348
- , WeakCallbackInfo<P>::invokeparameter);
349
- } else {
350
- v8::Local<v8::Value>* self_v(reinterpret_cast<v8::Local<v8::Value>*>(this));
351
- assert((*self_v)->IsObject());
352
- v8::Local<v8::Object> self((*self_v).As<v8::Object>());
353
- int count = self->InternalFieldCount();
354
- void *internal_fields[kInternalFieldsInWeakCallback] = {0, 0};
355
- for (int i = 0; i < count && i < kInternalFieldsInWeakCallback; i++) {
356
- internal_fields[i] = self->GetAlignedPointerFromInternalField(i);
357
- }
358
- wcbd = new WeakCallbackInfo<P>(
359
- reinterpret_cast<Persistent<v8::Value>*>(this)
360
- , callback
361
- , 0
362
- , internal_fields[0]
363
- , internal_fields[1]);
364
- self->SetAlignedPointerInInternalField(0, wcbd);
365
- v8::PersistentBase<T>::SetPhantom(
366
- WeakCallbackInfo<P>::invoketwofield
367
- , 0
368
- , count > 1 ? 1 : kNoInternalFieldIndex);
369
- }
370
- }
371
- #elif NODE_MODULE_VERSION > NODE_0_10_MODULE_VERSION
372
- template<typename T, typename M>
373
- template<typename P>
374
- inline void Persistent<T, M>::SetWeak(
375
- P *parameter
376
- , typename WeakCallbackInfo<P>::Callback callback
377
- , WeakCallbackType type) {
378
- WeakCallbackInfo<P> *wcbd;
379
- if (type == WeakCallbackType::kParameter) {
380
- wcbd = new WeakCallbackInfo<P>(
381
- reinterpret_cast<Persistent<v8::Value>*>(this)
382
- , callback
383
- , parameter);
384
- v8::PersistentBase<T>::SetWeak(wcbd, WeakCallbackInfo<P>::invoke);
385
- } else {
386
- v8::Local<v8::Value>* self_v(reinterpret_cast<v8::Local<v8::Value>*>(this));
387
- assert((*self_v)->IsObject());
388
- v8::Local<v8::Object> self((*self_v).As<v8::Object>());
389
- int count = self->InternalFieldCount();
390
- void *internal_fields[kInternalFieldsInWeakCallback] = {0, 0};
391
- for (int i = 0; i < count && i < kInternalFieldsInWeakCallback; i++) {
392
- internal_fields[i] = self->GetAlignedPointerFromInternalField(i);
393
- }
394
- wcbd = new WeakCallbackInfo<P>(
395
- reinterpret_cast<Persistent<v8::Value>*>(this)
396
- , callback
397
- , 0
398
- , internal_fields[0]
399
- , internal_fields[1]);
400
- v8::PersistentBase<T>::SetWeak(wcbd, WeakCallbackInfo<P>::invoke);
401
- }
402
- }
403
- #else
404
- template<typename T>
405
- template<typename P>
406
- inline void PersistentBase<T>::SetWeak(
407
- P *parameter
408
- , typename WeakCallbackInfo<P>::Callback callback
409
- , WeakCallbackType type) {
410
- WeakCallbackInfo<P> *wcbd;
411
- if (type == WeakCallbackType::kParameter) {
412
- wcbd = new WeakCallbackInfo<P>(
413
- reinterpret_cast<Persistent<v8::Value>*>(this)
414
- , callback
415
- , parameter);
416
- persistent.MakeWeak(wcbd, WeakCallbackInfo<P>::invoke);
417
- } else {
418
- v8::Local<v8::Value>* self_v(reinterpret_cast<v8::Local<v8::Value>*>(this));
419
- assert((*self_v)->IsObject());
420
- v8::Local<v8::Object> self((*self_v).As<v8::Object>());
421
- int count = self->InternalFieldCount();
422
- void *internal_fields[kInternalFieldsInWeakCallback] = {0, 0};
423
- for (int i = 0; i < count && i < kInternalFieldsInWeakCallback; i++) {
424
- internal_fields[i] = self->GetPointerFromInternalField(i);
425
- }
426
- wcbd = new WeakCallbackInfo<P>(
427
- reinterpret_cast<Persistent<v8::Value>*>(this)
428
- , callback
429
- , 0
430
- , internal_fields[0]
431
- , internal_fields[1]);
432
- persistent.MakeWeak(wcbd, WeakCallbackInfo<P>::invoke);
433
- }
434
- }
435
- #endif
436
-
437
- #endif // NAN_WEAK_H_
@@ -1,41 +0,0 @@
1
- {
2
- "name": "nan",
3
- "version": "2.14.2",
4
- "description": "Native Abstractions for Node.js: C++ header for Node 0.8 -> 14 compatibility",
5
- "main": "include_dirs.js",
6
- "repository": {
7
- "type": "git",
8
- "url": "git://github.com/nodejs/nan.git"
9
- },
10
- "scripts": {
11
- "test": "tap --gc --stderr test/js/*-test.js",
12
- "test:worker": "node --experimental-worker test/tap-as-worker.js --gc --stderr test/js/*-test.js",
13
- "rebuild-tests": "node-gyp rebuild --msvs_version=2015 --directory test",
14
- "docs": "doc/.build.sh"
15
- },
16
- "contributors": [
17
- "Rod Vagg <r@va.gg> (https://github.com/rvagg)",
18
- "Benjamin Byholm <bbyholm@abo.fi> (https://github.com/kkoopa/)",
19
- "Trevor Norris <trev.norris@gmail.com> (https://github.com/trevnorris)",
20
- "Nathan Rajlich <nathan@tootallnate.net> (https://github.com/TooTallNate)",
21
- "Brett Lawson <brett19@gmail.com> (https://github.com/brett19)",
22
- "Ben Noordhuis <info@bnoordhuis.nl> (https://github.com/bnoordhuis)",
23
- "David Siegel <david@artcom.de> (https://github.com/agnat)",
24
- "Michael Ira Krufky <mkrufky@gmail.com> (https://github.com/mkrufky)"
25
- ],
26
- "devDependencies": {
27
- "bindings": "~1.2.1",
28
- "commander": "^2.8.1",
29
- "glob": "^5.0.14",
30
- "request": "=2.81.0",
31
- "node-gyp": "~3.6.2",
32
- "readable-stream": "^2.1.4",
33
- "tap": "~0.7.1",
34
- "xtend": "~4.0.0"
35
- },
36
- "license": "MIT"
37
-
38
- ,"_resolved": "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz"
39
- ,"_integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ=="
40
- ,"_from": "nan@2.14.2"
41
- }