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