@contrast/agent 4.4.1 → 4.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (156) 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/hapi/route-coverage.js +3 -3
  6. package/lib/assess/membrane/index.js +2 -8
  7. package/lib/assess/membrane/source-membrane.js +3 -4
  8. package/lib/assess/models/base-event.js +2 -2
  9. package/lib/assess/models/call-context.js +0 -3
  10. package/lib/assess/policy/propagators.json +20 -0
  11. package/lib/assess/policy/signatures.json +103 -0
  12. package/lib/assess/propagators/path/common.js +165 -36
  13. package/lib/assess/propagators/path/join.js +5 -1
  14. package/lib/assess/propagators/path/normalize.js +5 -1
  15. package/lib/assess/propagators/path/resolve.js +11 -2
  16. package/lib/assess/response-scanning/autocomplete-missing.js +0 -2
  17. package/lib/assess/response-scanning/parameter-pollution.js +0 -2
  18. package/lib/core/arch-components/dynamodb.js +1 -2
  19. package/lib/core/arch-components/dynamodbv3.js +44 -0
  20. package/lib/core/arch-components/index.js +1 -0
  21. package/lib/core/async-storage/hooks/bluebird.js +20 -0
  22. package/lib/core/config/options.js +3 -2
  23. package/lib/core/express/utils.js +1 -1
  24. package/lib/core/logger/debug-logger.js +15 -17
  25. package/lib/core/stacktrace.js +3 -4
  26. package/lib/feature-set.js +2 -1
  27. package/lib/hooks/encoding.js +1 -1
  28. package/lib/hooks/frameworks/base.js +8 -2
  29. package/lib/hooks/frameworks/http.js +23 -16
  30. package/lib/hooks/frameworks/http2.js +73 -0
  31. package/lib/hooks/frameworks/index.js +8 -3
  32. package/lib/hooks/http.js +112 -128
  33. package/lib/hooks/patcher.js +10 -12
  34. package/lib/hooks/require.js +16 -22
  35. package/lib/instrumentation.js +0 -3
  36. package/lib/protect/analysis/aho-corasick.js +13 -30
  37. package/lib/protect/rules/cmd-injection-command-backdoors/backdoor-detector.js +3 -3
  38. package/lib/protect/rules/signatures/reflected-xss/helpers/function-call.js +1 -1
  39. package/lib/protect/rules/xss/helpers/function-call.js +1 -1
  40. package/lib/util/clean-stack.js +1 -1
  41. package/lib/util/clean-string/brackets.js +3 -3
  42. package/lib/util/clean-string/concatenations.js +1 -1
  43. package/lib/util/clean-string/util.js +1 -2
  44. package/lib/util/ip-analyzer.js +1 -1
  45. package/lib/util/some.js +27 -0
  46. package/lib/util/xml-analyzer/external-entity-finder.js +1 -1
  47. package/package.json +14 -15
  48. package/lib/hooks/frameworks/https.js +0 -42
  49. package/node_modules/bindings/LICENSE.md +0 -22
  50. package/node_modules/bindings/README.md +0 -98
  51. package/node_modules/bindings/bindings.js +0 -221
  52. package/node_modules/bindings/package.json +0 -32
  53. package/node_modules/file-uri-to-path/.npmignore +0 -1
  54. package/node_modules/file-uri-to-path/.travis.yml +0 -30
  55. package/node_modules/file-uri-to-path/History.md +0 -21
  56. package/node_modules/file-uri-to-path/LICENSE +0 -20
  57. package/node_modules/file-uri-to-path/README.md +0 -74
  58. package/node_modules/file-uri-to-path/index.d.ts +0 -2
  59. package/node_modules/file-uri-to-path/index.js +0 -66
  60. package/node_modules/file-uri-to-path/package.json +0 -36
  61. package/node_modules/file-uri-to-path/test/test.js +0 -24
  62. package/node_modules/file-uri-to-path/test/tests.json +0 -13
  63. package/node_modules/glossy/LICENSE +0 -19
  64. package/node_modules/glossy/README.md +0 -129
  65. package/node_modules/glossy/index.js +0 -12
  66. package/node_modules/glossy/lib/glossy/parse.js +0 -520
  67. package/node_modules/glossy/lib/glossy/produce.js +0 -459
  68. package/node_modules/glossy/package.json +0 -47
  69. package/node_modules/glossy/test/decide.js +0 -7
  70. package/node_modules/glossy/test/decode_pri.js +0 -24
  71. package/node_modules/glossy/test/parse_3164.js +0 -104
  72. package/node_modules/glossy/test/parse_5424.js +0 -106
  73. package/node_modules/glossy/test/parse_5848.js +0 -40
  74. package/node_modules/glossy/test/parse_8601.js +0 -14
  75. package/node_modules/glossy/test/parse_rfc3339.js +0 -9
  76. package/node_modules/glossy/test/produce.js +0 -162
  77. package/node_modules/glossy/test/runner.js +0 -40
  78. package/node_modules/glossy/test/structure_data.js +0 -24
  79. package/node_modules/nan/CHANGELOG.md +0 -537
  80. package/node_modules/nan/LICENSE.md +0 -13
  81. package/node_modules/nan/README.md +0 -455
  82. package/node_modules/nan/doc/asyncworker.md +0 -146
  83. package/node_modules/nan/doc/buffers.md +0 -54
  84. package/node_modules/nan/doc/callback.md +0 -76
  85. package/node_modules/nan/doc/converters.md +0 -41
  86. package/node_modules/nan/doc/errors.md +0 -226
  87. package/node_modules/nan/doc/json.md +0 -62
  88. package/node_modules/nan/doc/maybe_types.md +0 -583
  89. package/node_modules/nan/doc/methods.md +0 -664
  90. package/node_modules/nan/doc/new.md +0 -147
  91. package/node_modules/nan/doc/node_misc.md +0 -123
  92. package/node_modules/nan/doc/object_wrappers.md +0 -263
  93. package/node_modules/nan/doc/persistent.md +0 -296
  94. package/node_modules/nan/doc/scopes.md +0 -73
  95. package/node_modules/nan/doc/script.md +0 -38
  96. package/node_modules/nan/doc/string_bytes.md +0 -62
  97. package/node_modules/nan/doc/v8_internals.md +0 -199
  98. package/node_modules/nan/doc/v8_misc.md +0 -85
  99. package/node_modules/nan/include_dirs.js +0 -1
  100. package/node_modules/nan/nan.h +0 -2898
  101. package/node_modules/nan/nan_callbacks.h +0 -88
  102. package/node_modules/nan/nan_callbacks_12_inl.h +0 -514
  103. package/node_modules/nan/nan_callbacks_pre_12_inl.h +0 -520
  104. package/node_modules/nan/nan_converters.h +0 -72
  105. package/node_modules/nan/nan_converters_43_inl.h +0 -68
  106. package/node_modules/nan/nan_converters_pre_43_inl.h +0 -42
  107. package/node_modules/nan/nan_define_own_property_helper.h +0 -29
  108. package/node_modules/nan/nan_implementation_12_inl.h +0 -430
  109. package/node_modules/nan/nan_implementation_pre_12_inl.h +0 -263
  110. package/node_modules/nan/nan_json.h +0 -166
  111. package/node_modules/nan/nan_maybe_43_inl.h +0 -356
  112. package/node_modules/nan/nan_maybe_pre_43_inl.h +0 -268
  113. package/node_modules/nan/nan_new.h +0 -340
  114. package/node_modules/nan/nan_object_wrap.h +0 -156
  115. package/node_modules/nan/nan_persistent_12_inl.h +0 -132
  116. package/node_modules/nan/nan_persistent_pre_12_inl.h +0 -242
  117. package/node_modules/nan/nan_private.h +0 -73
  118. package/node_modules/nan/nan_string_bytes.h +0 -305
  119. package/node_modules/nan/nan_typedarray_contents.h +0 -96
  120. package/node_modules/nan/nan_weak.h +0 -437
  121. package/node_modules/nan/package.json +0 -41
  122. package/node_modules/nan/tools/1to2.js +0 -412
  123. package/node_modules/nan/tools/README.md +0 -14
  124. package/node_modules/nan/tools/package.json +0 -19
  125. package/node_modules/unix-dgram/LICENSE +0 -13
  126. package/node_modules/unix-dgram/README.md +0 -107
  127. package/node_modules/unix-dgram/binding.gyp +0 -20
  128. package/node_modules/unix-dgram/build/Makefile +0 -324
  129. package/node_modules/unix-dgram/build/Release/.deps/Release/obj.target/unix_dgram/src/unix_dgram.o.d +0 -58
  130. package/node_modules/unix-dgram/build/Release/.deps/Release/obj.target/unix_dgram.node.d +0 -1
  131. package/node_modules/unix-dgram/build/Release/.deps/Release/unix_dgram.node.d +0 -1
  132. package/node_modules/unix-dgram/build/Release/obj.target/unix_dgram/src/unix_dgram.o +0 -0
  133. package/node_modules/unix-dgram/build/Release/obj.target/unix_dgram.node +0 -0
  134. package/node_modules/unix-dgram/build/Release/unix_dgram.node +0 -0
  135. package/node_modules/unix-dgram/build/binding.Makefile +0 -6
  136. package/node_modules/unix-dgram/build/config.gypi +0 -213
  137. package/node_modules/unix-dgram/build/unix_dgram.target.mk +0 -159
  138. package/node_modules/unix-dgram/lib/unix_dgram.js +0 -168
  139. package/node_modules/unix-dgram/package.json +0 -36
  140. package/node_modules/unix-dgram/src/unix_dgram.cc +0 -404
  141. package/node_modules/unix-dgram/src/win_dummy.cc +0 -7
  142. package/node_modules/unix-dgram/test/test-connect-callback.js +0 -68
  143. package/node_modules/unix-dgram/test/test-connect.js +0 -53
  144. package/node_modules/unix-dgram/test/test-dgram-unix.js +0 -58
  145. package/node_modules/unix-dgram/test/test-send-error.js +0 -26
  146. package/node_modules/winston-syslog/.eslintrc +0 -7
  147. package/node_modules/winston-syslog/.travis.yml +0 -14
  148. package/node_modules/winston-syslog/CHANGELOG.md +0 -9
  149. package/node_modules/winston-syslog/LICENSE +0 -20
  150. package/node_modules/winston-syslog/README.md +0 -135
  151. package/node_modules/winston-syslog/lib/utils.js +0 -26
  152. package/node_modules/winston-syslog/lib/winston-syslog.js +0 -385
  153. package/node_modules/winston-syslog/package.json +0 -56
  154. package/node_modules/winston-syslog/test/format-test.js +0 -122
  155. package/node_modules/winston-syslog/test/syslog-test.js +0 -95
  156. 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_