@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,29 +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_DEFINE_OWN_PROPERTY_HELPER_H_
10
- #define NAN_DEFINE_OWN_PROPERTY_HELPER_H_
11
-
12
- namespace imp {
13
-
14
- inline Maybe<bool> DefineOwnPropertyHelper(
15
- v8::PropertyAttribute current
16
- , v8::Handle<v8::Object> obj
17
- , v8::Handle<v8::String> key
18
- , v8::Handle<v8::Value> value
19
- , v8::PropertyAttribute attribs = v8::None) {
20
- return !(current & v8::DontDelete) || // configurable OR
21
- (!(current & v8::ReadOnly) && // writable AND
22
- !((attribs ^ current) & ~v8::ReadOnly)) // same excluding RO
23
- ? Just<bool>(obj->ForceSet(key, value, attribs))
24
- : Nothing<bool>();
25
- }
26
-
27
- } // end of namespace imp
28
-
29
- #endif // NAN_DEFINE_OWN_PROPERTY_HELPER_H_
@@ -1,430 +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_IMPLEMENTATION_12_INL_H_
10
- #define NAN_IMPLEMENTATION_12_INL_H_
11
- //==============================================================================
12
- // node v0.11 implementation
13
- //==============================================================================
14
-
15
- namespace imp {
16
-
17
- //=== Array ====================================================================
18
-
19
- Factory<v8::Array>::return_t
20
- Factory<v8::Array>::New() {
21
- return v8::Array::New(v8::Isolate::GetCurrent());
22
- }
23
-
24
- Factory<v8::Array>::return_t
25
- Factory<v8::Array>::New(int length) {
26
- return v8::Array::New(v8::Isolate::GetCurrent(), length);
27
- }
28
-
29
- //=== Boolean ==================================================================
30
-
31
- Factory<v8::Boolean>::return_t
32
- Factory<v8::Boolean>::New(bool value) {
33
- return v8::Boolean::New(v8::Isolate::GetCurrent(), value);
34
- }
35
-
36
- //=== Boolean Object ===========================================================
37
-
38
- Factory<v8::BooleanObject>::return_t
39
- Factory<v8::BooleanObject>::New(bool value) {
40
- #if (NODE_MODULE_VERSION >= NODE_6_0_MODULE_VERSION)
41
- return v8::BooleanObject::New(
42
- v8::Isolate::GetCurrent(), value).As<v8::BooleanObject>();
43
- #else
44
- return v8::BooleanObject::New(value).As<v8::BooleanObject>();
45
- #endif
46
- }
47
-
48
- //=== Context ==================================================================
49
-
50
- Factory<v8::Context>::return_t
51
- Factory<v8::Context>::New( v8::ExtensionConfiguration* extensions
52
- , v8::Local<v8::ObjectTemplate> tmpl
53
- , v8::Local<v8::Value> obj) {
54
- return v8::Context::New(v8::Isolate::GetCurrent(), extensions, tmpl, obj);
55
- }
56
-
57
- //=== Date =====================================================================
58
-
59
- #if defined(V8_MAJOR_VERSION) && (V8_MAJOR_VERSION > 4 || \
60
- (V8_MAJOR_VERSION == 4 && defined(V8_MINOR_VERSION) && V8_MINOR_VERSION >= 3))
61
- Factory<v8::Date>::return_t
62
- Factory<v8::Date>::New(double value) {
63
- v8::Isolate *isolate = v8::Isolate::GetCurrent();
64
- v8::EscapableHandleScope scope(isolate);
65
- return scope.Escape(v8::Date::New(isolate->GetCurrentContext(), value)
66
- .FromMaybe(v8::Local<v8::Value>()).As<v8::Date>());
67
- }
68
- #else
69
- Factory<v8::Date>::return_t
70
- Factory<v8::Date>::New(double value) {
71
- return v8::Date::New(v8::Isolate::GetCurrent(), value).As<v8::Date>();
72
- }
73
- #endif
74
-
75
- //=== External =================================================================
76
-
77
- Factory<v8::External>::return_t
78
- Factory<v8::External>::New(void * value) {
79
- return v8::External::New(v8::Isolate::GetCurrent(), value);
80
- }
81
-
82
- //=== Function =================================================================
83
-
84
- Factory<v8::Function>::return_t
85
- Factory<v8::Function>::New( FunctionCallback callback
86
- , v8::Local<v8::Value> data) {
87
- v8::Isolate *isolate = v8::Isolate::GetCurrent();
88
- v8::EscapableHandleScope scope(isolate);
89
- v8::Local<v8::ObjectTemplate> tpl = v8::ObjectTemplate::New(isolate);
90
- tpl->SetInternalFieldCount(imp::kFunctionFieldCount);
91
- v8::Local<v8::Object> obj = NewInstance(tpl).ToLocalChecked();
92
-
93
- obj->SetInternalField(
94
- imp::kFunctionIndex
95
- , v8::External::New(isolate, reinterpret_cast<void *>(callback)));
96
-
97
- v8::Local<v8::Value> val = v8::Local<v8::Value>::New(isolate, data);
98
-
99
- if (!val.IsEmpty()) {
100
- obj->SetInternalField(imp::kDataIndex, val);
101
- }
102
-
103
- #if NODE_MAJOR_VERSION >= 10
104
- v8::Local<v8::Context> context = isolate->GetCurrentContext();
105
- v8::Local<v8::Function> function =
106
- v8::Function::New(context, imp::FunctionCallbackWrapper, obj)
107
- .ToLocalChecked();
108
- #else
109
- v8::Local<v8::Function> function =
110
- v8::Function::New(isolate, imp::FunctionCallbackWrapper, obj);
111
- #endif
112
-
113
- return scope.Escape(function);
114
- }
115
-
116
- //=== Function Template ========================================================
117
-
118
- Factory<v8::FunctionTemplate>::return_t
119
- Factory<v8::FunctionTemplate>::New( FunctionCallback callback
120
- , v8::Local<v8::Value> data
121
- , v8::Local<v8::Signature> signature) {
122
- v8::Isolate *isolate = v8::Isolate::GetCurrent();
123
- if (callback) {
124
- v8::EscapableHandleScope scope(isolate);
125
- v8::Local<v8::ObjectTemplate> tpl = v8::ObjectTemplate::New(isolate);
126
- tpl->SetInternalFieldCount(imp::kFunctionFieldCount);
127
- v8::Local<v8::Object> obj = NewInstance(tpl).ToLocalChecked();
128
-
129
- obj->SetInternalField(
130
- imp::kFunctionIndex
131
- , v8::External::New(isolate, reinterpret_cast<void *>(callback)));
132
- v8::Local<v8::Value> val = v8::Local<v8::Value>::New(isolate, data);
133
-
134
- if (!val.IsEmpty()) {
135
- obj->SetInternalField(imp::kDataIndex, val);
136
- }
137
-
138
- return scope.Escape(v8::FunctionTemplate::New( isolate
139
- , imp::FunctionCallbackWrapper
140
- , obj
141
- , signature));
142
- } else {
143
- return v8::FunctionTemplate::New(isolate, 0, data, signature);
144
- }
145
- }
146
-
147
- //=== Number ===================================================================
148
-
149
- Factory<v8::Number>::return_t
150
- Factory<v8::Number>::New(double value) {
151
- return v8::Number::New(v8::Isolate::GetCurrent(), value);
152
- }
153
-
154
- //=== Number Object ============================================================
155
-
156
- Factory<v8::NumberObject>::return_t
157
- Factory<v8::NumberObject>::New(double value) {
158
- return v8::NumberObject::New( v8::Isolate::GetCurrent()
159
- , value).As<v8::NumberObject>();
160
- }
161
-
162
- //=== Integer, Int32 and Uint32 ================================================
163
-
164
- template <typename T>
165
- typename IntegerFactory<T>::return_t
166
- IntegerFactory<T>::New(int32_t value) {
167
- return To<T>(T::New(v8::Isolate::GetCurrent(), value));
168
- }
169
-
170
- template <typename T>
171
- typename IntegerFactory<T>::return_t
172
- IntegerFactory<T>::New(uint32_t value) {
173
- return To<T>(T::NewFromUnsigned(v8::Isolate::GetCurrent(), value));
174
- }
175
-
176
- Factory<v8::Uint32>::return_t
177
- Factory<v8::Uint32>::New(int32_t value) {
178
- return To<v8::Uint32>(
179
- v8::Uint32::NewFromUnsigned(v8::Isolate::GetCurrent(), value));
180
- }
181
-
182
- Factory<v8::Uint32>::return_t
183
- Factory<v8::Uint32>::New(uint32_t value) {
184
- return To<v8::Uint32>(
185
- v8::Uint32::NewFromUnsigned(v8::Isolate::GetCurrent(), value));
186
- }
187
-
188
- //=== Object ===================================================================
189
-
190
- Factory<v8::Object>::return_t
191
- Factory<v8::Object>::New() {
192
- return v8::Object::New(v8::Isolate::GetCurrent());
193
- }
194
-
195
- //=== Object Template ==========================================================
196
-
197
- Factory<v8::ObjectTemplate>::return_t
198
- Factory<v8::ObjectTemplate>::New() {
199
- return v8::ObjectTemplate::New(v8::Isolate::GetCurrent());
200
- }
201
-
202
- //=== RegExp ===================================================================
203
-
204
- #if defined(V8_MAJOR_VERSION) && (V8_MAJOR_VERSION > 4 || \
205
- (V8_MAJOR_VERSION == 4 && defined(V8_MINOR_VERSION) && V8_MINOR_VERSION >= 3))
206
- Factory<v8::RegExp>::return_t
207
- Factory<v8::RegExp>::New(
208
- v8::Local<v8::String> pattern
209
- , v8::RegExp::Flags flags) {
210
- v8::Isolate *isolate = v8::Isolate::GetCurrent();
211
- v8::EscapableHandleScope scope(isolate);
212
- return scope.Escape(
213
- v8::RegExp::New(isolate->GetCurrentContext(), pattern, flags)
214
- .FromMaybe(v8::Local<v8::RegExp>()));
215
- }
216
- #else
217
- Factory<v8::RegExp>::return_t
218
- Factory<v8::RegExp>::New(
219
- v8::Local<v8::String> pattern
220
- , v8::RegExp::Flags flags) {
221
- return v8::RegExp::New(pattern, flags);
222
- }
223
- #endif
224
-
225
- //=== Script ===================================================================
226
-
227
- #if defined(V8_MAJOR_VERSION) && (V8_MAJOR_VERSION > 4 || \
228
- (V8_MAJOR_VERSION == 4 && defined(V8_MINOR_VERSION) && V8_MINOR_VERSION >= 3))
229
- Factory<v8::Script>::return_t
230
- Factory<v8::Script>::New( v8::Local<v8::String> source) {
231
- v8::Isolate *isolate = v8::Isolate::GetCurrent();
232
- v8::EscapableHandleScope scope(isolate);
233
- v8::ScriptCompiler::Source src(source);
234
- return scope.Escape(
235
- v8::ScriptCompiler::Compile(isolate->GetCurrentContext(), &src)
236
- .FromMaybe(v8::Local<v8::Script>()));
237
- }
238
-
239
- Factory<v8::Script>::return_t
240
- Factory<v8::Script>::New( v8::Local<v8::String> source
241
- , v8::ScriptOrigin const& origin) {
242
- v8::Isolate *isolate = v8::Isolate::GetCurrent();
243
- v8::EscapableHandleScope scope(isolate);
244
- v8::ScriptCompiler::Source src(source, origin);
245
- return scope.Escape(
246
- v8::ScriptCompiler::Compile(isolate->GetCurrentContext(), &src)
247
- .FromMaybe(v8::Local<v8::Script>()));
248
- }
249
- #else
250
- Factory<v8::Script>::return_t
251
- Factory<v8::Script>::New( v8::Local<v8::String> source) {
252
- v8::ScriptCompiler::Source src(source);
253
- return v8::ScriptCompiler::Compile(v8::Isolate::GetCurrent(), &src);
254
- }
255
-
256
- Factory<v8::Script>::return_t
257
- Factory<v8::Script>::New( v8::Local<v8::String> source
258
- , v8::ScriptOrigin const& origin) {
259
- v8::ScriptCompiler::Source src(source, origin);
260
- return v8::ScriptCompiler::Compile(v8::Isolate::GetCurrent(), &src);
261
- }
262
- #endif
263
-
264
- //=== Signature ================================================================
265
-
266
- Factory<v8::Signature>::return_t
267
- Factory<v8::Signature>::New(Factory<v8::Signature>::FTH receiver) {
268
- return v8::Signature::New(v8::Isolate::GetCurrent(), receiver);
269
- }
270
-
271
- //=== String ===================================================================
272
-
273
- Factory<v8::String>::return_t
274
- Factory<v8::String>::New() {
275
- return v8::String::Empty(v8::Isolate::GetCurrent());
276
- }
277
-
278
- #if defined(V8_MAJOR_VERSION) && (V8_MAJOR_VERSION > 4 || \
279
- (V8_MAJOR_VERSION == 4 && defined(V8_MINOR_VERSION) && V8_MINOR_VERSION >= 3))
280
- Factory<v8::String>::return_t
281
- Factory<v8::String>::New(const char * value, int length) {
282
- return v8::String::NewFromUtf8(
283
- v8::Isolate::GetCurrent(), value, v8::NewStringType::kNormal, length);
284
- }
285
-
286
- Factory<v8::String>::return_t
287
- Factory<v8::String>::New(std::string const& value) {
288
- assert(value.size() <= INT_MAX && "string too long");
289
- return v8::String::NewFromUtf8(v8::Isolate::GetCurrent(),
290
- value.data(), v8::NewStringType::kNormal, static_cast<int>(value.size()));
291
- }
292
-
293
- Factory<v8::String>::return_t
294
- Factory<v8::String>::New(const uint16_t * value, int length) {
295
- return v8::String::NewFromTwoByte(v8::Isolate::GetCurrent(), value,
296
- v8::NewStringType::kNormal, length);
297
- }
298
-
299
- Factory<v8::String>::return_t
300
- Factory<v8::String>::New(v8::String::ExternalStringResource * value) {
301
- return v8::String::NewExternalTwoByte(v8::Isolate::GetCurrent(), value);
302
- }
303
-
304
- Factory<v8::String>::return_t
305
- Factory<v8::String>::New(ExternalOneByteStringResource * value) {
306
- return v8::String::NewExternalOneByte(v8::Isolate::GetCurrent(), value);
307
- }
308
- #else
309
- Factory<v8::String>::return_t
310
- Factory<v8::String>::New(const char * value, int length) {
311
- return v8::String::NewFromUtf8(v8::Isolate::GetCurrent(), value,
312
- v8::String::kNormalString, length);
313
- }
314
-
315
- Factory<v8::String>::return_t
316
- Factory<v8::String>::New(
317
- std::string const& value) /* NOLINT(build/include_what_you_use) */ {
318
- assert(value.size() <= INT_MAX && "string too long");
319
- return v8::String::NewFromUtf8(v8::Isolate::GetCurrent(), value.data(),
320
- v8::String::kNormalString,
321
- static_cast<int>(value.size()));
322
- }
323
-
324
- Factory<v8::String>::return_t
325
- Factory<v8::String>::New(const uint16_t * value, int length) {
326
- return v8::String::NewFromTwoByte(v8::Isolate::GetCurrent(), value,
327
- v8::String::kNormalString, length);
328
- }
329
-
330
- Factory<v8::String>::return_t
331
- Factory<v8::String>::New(v8::String::ExternalStringResource * value) {
332
- return v8::String::NewExternal(v8::Isolate::GetCurrent(), value);
333
- }
334
-
335
- Factory<v8::String>::return_t
336
- Factory<v8::String>::New(ExternalOneByteStringResource * value) {
337
- return v8::String::NewExternal(v8::Isolate::GetCurrent(), value);
338
- }
339
- #endif
340
-
341
- //=== String Object ============================================================
342
-
343
- // See https://github.com/nodejs/nan/pull/811#discussion_r224594980.
344
- // Disable the warning as there is no way around it.
345
- // TODO(bnoordhuis) Use isolate-based version in Node.js v12.
346
- Factory<v8::StringObject>::return_t
347
- Factory<v8::StringObject>::New(v8::Local<v8::String> value) {
348
- // V8 > 7.0
349
- #if V8_MAJOR_VERSION > 7 || (V8_MAJOR_VERSION == 7 && V8_MINOR_VERSION > 0)
350
- return v8::StringObject::New(v8::Isolate::GetCurrent(), value)
351
- .As<v8::StringObject>();
352
- #else
353
- #ifdef _MSC_VER
354
- #pragma warning(push)
355
- #pragma warning(disable : 4996)
356
- #endif
357
- #ifdef __GNUC__
358
- #pragma GCC diagnostic push
359
- #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
360
- #endif
361
- return v8::StringObject::New(value).As<v8::StringObject>();
362
- #ifdef __GNUC__
363
- #pragma GCC diagnostic pop
364
- #endif
365
- #ifdef _MSC_VER
366
- #pragma warning(pop)
367
- #endif
368
- #endif
369
- }
370
-
371
- //=== Unbound Script ===========================================================
372
-
373
- #if defined(V8_MAJOR_VERSION) && (V8_MAJOR_VERSION > 4 || \
374
- (V8_MAJOR_VERSION == 4 && defined(V8_MINOR_VERSION) && V8_MINOR_VERSION >= 3))
375
- Factory<v8::UnboundScript>::return_t
376
- Factory<v8::UnboundScript>::New(v8::Local<v8::String> source) {
377
- v8::ScriptCompiler::Source src(source);
378
- return v8::ScriptCompiler::CompileUnboundScript(
379
- v8::Isolate::GetCurrent(), &src);
380
- }
381
-
382
- Factory<v8::UnboundScript>::return_t
383
- Factory<v8::UnboundScript>::New( v8::Local<v8::String> source
384
- , v8::ScriptOrigin const& origin) {
385
- v8::ScriptCompiler::Source src(source, origin);
386
- return v8::ScriptCompiler::CompileUnboundScript(
387
- v8::Isolate::GetCurrent(), &src);
388
- }
389
- #else
390
- Factory<v8::UnboundScript>::return_t
391
- Factory<v8::UnboundScript>::New(v8::Local<v8::String> source) {
392
- v8::ScriptCompiler::Source src(source);
393
- return v8::ScriptCompiler::CompileUnbound(v8::Isolate::GetCurrent(), &src);
394
- }
395
-
396
- Factory<v8::UnboundScript>::return_t
397
- Factory<v8::UnboundScript>::New( v8::Local<v8::String> source
398
- , v8::ScriptOrigin const& origin) {
399
- v8::ScriptCompiler::Source src(source, origin);
400
- return v8::ScriptCompiler::CompileUnbound(v8::Isolate::GetCurrent(), &src);
401
- }
402
- #endif
403
-
404
- } // end of namespace imp
405
-
406
- //=== Presistents and Handles ==================================================
407
-
408
- #if NODE_MODULE_VERSION < IOJS_3_0_MODULE_VERSION
409
- template <typename T>
410
- inline v8::Local<T> New(v8::Handle<T> h) {
411
- return v8::Local<T>::New(v8::Isolate::GetCurrent(), h);
412
- }
413
- #endif
414
-
415
- template <typename T, typename M>
416
- inline v8::Local<T> New(v8::Persistent<T, M> const& p) {
417
- return v8::Local<T>::New(v8::Isolate::GetCurrent(), p);
418
- }
419
-
420
- template <typename T, typename M>
421
- inline v8::Local<T> New(Persistent<T, M> const& p) {
422
- return v8::Local<T>::New(v8::Isolate::GetCurrent(), p);
423
- }
424
-
425
- template <typename T>
426
- inline v8::Local<T> New(Global<T> const& p) {
427
- return v8::Local<T>::New(v8::Isolate::GetCurrent(), p);
428
- }
429
-
430
- #endif // NAN_IMPLEMENTATION_12_INL_H_