@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,412 +0,0 @@
1
- #!/usr/bin/env node
2
- /*********************************************************************
3
- * NAN - Native Abstractions for Node.js
4
- *
5
- * Copyright (c) 2018 NAN contributors
6
- *
7
- * MIT License <https://github.com/nodejs/nan/blob/master/LICENSE.md>
8
- ********************************************************************/
9
-
10
- var commander = require('commander'),
11
- fs = require('fs'),
12
- glob = require('glob'),
13
- groups = [],
14
- total = 0,
15
- warning1 = '/* ERROR: Rewrite using Buffer */\n',
16
- warning2 = '\\/\\* ERROR\\: Rewrite using Buffer \\*\\/\\n',
17
- length,
18
- i;
19
-
20
- fs.readFile(__dirname + '/package.json', 'utf8', function (err, data) {
21
- if (err) {
22
- throw err;
23
- }
24
-
25
- commander
26
- .version(JSON.parse(data).version)
27
- .usage('[options] <file ...>')
28
- .parse(process.argv);
29
-
30
- if (!process.argv.slice(2).length) {
31
- commander.outputHelp();
32
- }
33
- });
34
-
35
- /* construct strings representing regular expressions
36
- each expression contains a unique group allowing for identification of the match
37
- the index of this key group, relative to the regular expression in question,
38
- is indicated by the first array member */
39
-
40
- /* simple substistutions, key group is the entire match, 0 */
41
- groups.push([0, [
42
- '_NAN_',
43
- 'NODE_SET_METHOD',
44
- 'NODE_SET_PROTOTYPE_METHOD',
45
- 'NanAsciiString',
46
- 'NanEscapeScope',
47
- 'NanReturnValue',
48
- 'NanUcs2String'].join('|')]);
49
-
50
- /* substitutions of parameterless macros, key group is 1 */
51
- groups.push([1, ['(', [
52
- 'NanEscapableScope',
53
- 'NanReturnNull',
54
- 'NanReturnUndefined',
55
- 'NanScope'].join('|'), ')\\(\\)'].join('')]);
56
-
57
- /* replace TryCatch with NanTryCatch once, gobbling possible namespace, key group 2 */
58
- groups.push([2, '(?:(?:v8\\:\\:)?|(Nan)?)(TryCatch)']);
59
-
60
- /* NanNew("string") will likely not fail a ToLocalChecked(), key group 1 */
61
- groups.push([1, ['(NanNew)', '(\\("[^\\"]*"[^\\)]*\\))(?!\\.ToLocalChecked\\(\\))'].join('')]);
62
-
63
- /* Removed v8 APIs, warn that the code needs rewriting using node::Buffer, key group 2 */
64
- groups.push([2, ['(', warning2, ')?', '^.*?(', [
65
- 'GetIndexedPropertiesExternalArrayDataLength',
66
- 'GetIndexedPropertiesExternalArrayData',
67
- 'GetIndexedPropertiesExternalArrayDataType',
68
- 'GetIndexedPropertiesPixelData',
69
- 'GetIndexedPropertiesPixelDataLength',
70
- 'HasIndexedPropertiesInExternalArrayData',
71
- 'HasIndexedPropertiesInPixelData',
72
- 'SetIndexedPropertiesToExternalArrayData',
73
- 'SetIndexedPropertiesToPixelData'].join('|'), ')'].join('')]);
74
-
75
- /* No need for NanScope in V8-exposed methods, key group 2 */
76
- groups.push([2, ['((', [
77
- 'NAN_METHOD',
78
- 'NAN_GETTER',
79
- 'NAN_SETTER',
80
- 'NAN_PROPERTY_GETTER',
81
- 'NAN_PROPERTY_SETTER',
82
- 'NAN_PROPERTY_ENUMERATOR',
83
- 'NAN_PROPERTY_DELETER',
84
- 'NAN_PROPERTY_QUERY',
85
- 'NAN_INDEX_GETTER',
86
- 'NAN_INDEX_SETTER',
87
- 'NAN_INDEX_ENUMERATOR',
88
- 'NAN_INDEX_DELETER',
89
- 'NAN_INDEX_QUERY'].join('|'), ')\\([^\\)]*\\)\\s*\\{)\\s*NanScope\\(\\)\\s*;'].join('')]);
90
-
91
- /* v8::Value::ToXXXXXXX returns v8::MaybeLocal<T>, key group 3 */
92
- groups.push([3, ['([\\s\\(\\)])([^\\s\\(\\)]+)->(', [
93
- 'Boolean',
94
- 'Number',
95
- 'String',
96
- 'Object',
97
- 'Integer',
98
- 'Uint32',
99
- 'Int32'].join('|'), ')\\('].join('')]);
100
-
101
- /* v8::Value::XXXXXXXValue returns v8::Maybe<T>, key group 3 */
102
- groups.push([3, ['([\\s\\(\\)])([^\\s\\(\\)]+)->((?:', [
103
- 'Boolean',
104
- 'Number',
105
- 'Integer',
106
- 'Uint32',
107
- 'Int32'].join('|'), ')Value)\\('].join('')]);
108
-
109
- /* NAN_WEAK_CALLBACK macro was removed, write out callback definition, key group 1 */
110
- groups.push([1, '(NAN_WEAK_CALLBACK)\\(([^\\s\\)]+)\\)']);
111
-
112
- /* node::ObjectWrap and v8::Persistent have been replaced with Nan implementations, key group 1 */
113
- groups.push([1, ['(', [
114
- 'NanDisposePersistent',
115
- 'NanObjectWrapHandle'].join('|'), ')\\s*\\(\\s*([^\\s\\)]+)'].join('')]);
116
-
117
- /* Since NanPersistent there is no need for NanMakeWeakPersistent, key group 1 */
118
- groups.push([1, '(NanMakeWeakPersistent)\\s*\\(\\s*([^\\s,]+)\\s*,\\s*']);
119
-
120
- /* Many methods of v8::Object and others now return v8::MaybeLocal<T>, key group 3 */
121
- groups.push([3, ['([\\s])([^\\s]+)->(', [
122
- 'GetEndColumn',
123
- 'GetFunction',
124
- 'GetLineNumber',
125
- 'NewInstance',
126
- 'GetPropertyNames',
127
- 'GetOwnPropertyNames',
128
- 'GetSourceLine',
129
- 'GetStartColumn',
130
- 'ObjectProtoToString',
131
- 'ToArrayIndex',
132
- 'ToDetailString',
133
- 'CallAsConstructor',
134
- 'CallAsFunction',
135
- 'CloneElementAt',
136
- 'Delete',
137
- 'ForceSet',
138
- 'Get',
139
- 'GetPropertyAttributes',
140
- 'GetRealNamedProperty',
141
- 'GetRealNamedPropertyInPrototypeChain',
142
- 'Has',
143
- 'HasOwnProperty',
144
- 'HasRealIndexedProperty',
145
- 'HasRealNamedCallbackProperty',
146
- 'HasRealNamedProperty',
147
- 'Set',
148
- 'SetAccessor',
149
- 'SetIndexedPropertyHandler',
150
- 'SetNamedPropertyHandler',
151
- 'SetPrototype'].join('|'), ')\\('].join('')]);
152
-
153
- /* You should get an error if any of these fail anyways,
154
- or handle the error better, it is indicated either way, key group 2 */
155
- groups.push([2, ['NanNew(<(?:v8\\:\\:)?(', ['Date', 'String', 'RegExp'].join('|'), ')>)(\\([^\\)]*\\))(?!\\.ToLocalChecked\\(\\))'].join('')]);
156
-
157
- /* v8::Value::Equals now returns a v8::Maybe, key group 3 */
158
- groups.push([3, '([\\s\\(\\)])([^\\s\\(\\)]+)->(Equals)\\(([^\\s\\)]+)']);
159
-
160
- /* NanPersistent makes this unnecessary, key group 1 */
161
- groups.push([1, '(NanAssignPersistent)(?:<v8\\:\\:[^>]+>)?\\(([^,]+),\\s*']);
162
-
163
- /* args has been renamed to info, key group 2 */
164
- groups.push([2, '(\\W)(args)(\\W)'])
165
-
166
- /* node::ObjectWrap was replaced with NanObjectWrap, key group 2 */
167
- groups.push([2, '(\\W)(?:node\\:\\:)?(ObjectWrap)(\\W)']);
168
-
169
- /* v8::Persistent was replaced with NanPersistent, key group 2 */
170
- groups.push([2, '(\\W)(?:v8\\:\\:)?(Persistent)(\\W)']);
171
-
172
- /* counts the number of capturing groups in a well-formed regular expression,
173
- ignoring non-capturing groups and escaped parentheses */
174
- function groupcount(s) {
175
- var positive = s.match(/\((?!\?)/g),
176
- negative = s.match(/\\\(/g);
177
- return (positive ? positive.length : 0) - (negative ? negative.length : 0);
178
- }
179
-
180
- /* compute the absolute position of each key group in the joined master RegExp */
181
- for (i = 1, length = groups.length; i < length; i++) {
182
- total += groupcount(groups[i - 1][1]);
183
- groups[i][0] += total;
184
- }
185
-
186
- /* create the master RegExp, whis is the union of all the groups' expressions */
187
- master = new RegExp(groups.map(function (a) { return a[1]; }).join('|'), 'gm');
188
-
189
- /* replacement function for String.replace, receives 21 arguments */
190
- function replace() {
191
- /* simple expressions */
192
- switch (arguments[groups[0][0]]) {
193
- case '_NAN_':
194
- return 'NAN_';
195
- case 'NODE_SET_METHOD':
196
- return 'NanSetMethod';
197
- case 'NODE_SET_PROTOTYPE_METHOD':
198
- return 'NanSetPrototypeMethod';
199
- case 'NanAsciiString':
200
- return 'NanUtf8String';
201
- case 'NanEscapeScope':
202
- return 'scope.Escape';
203
- case 'NanReturnNull':
204
- return 'info.GetReturnValue().SetNull';
205
- case 'NanReturnValue':
206
- return 'info.GetReturnValue().Set';
207
- case 'NanUcs2String':
208
- return 'v8::String::Value';
209
- default:
210
- }
211
-
212
- /* macros without arguments */
213
- switch (arguments[groups[1][0]]) {
214
- case 'NanEscapableScope':
215
- return 'NanEscapableScope scope'
216
- case 'NanReturnUndefined':
217
- return 'return';
218
- case 'NanScope':
219
- return 'NanScope scope';
220
- default:
221
- }
222
-
223
- /* TryCatch, emulate negative backref */
224
- if (arguments[groups[2][0]] === 'TryCatch') {
225
- return arguments[groups[2][0] - 1] ? arguments[0] : 'NanTryCatch';
226
- }
227
-
228
- /* NanNew("foo") --> NanNew("foo").ToLocalChecked() */
229
- if (arguments[groups[3][0]] === 'NanNew') {
230
- return [arguments[0], '.ToLocalChecked()'].join('');
231
- }
232
-
233
- /* insert warning for removed functions as comment on new line above */
234
- switch (arguments[groups[4][0]]) {
235
- case 'GetIndexedPropertiesExternalArrayData':
236
- case 'GetIndexedPropertiesExternalArrayDataLength':
237
- case 'GetIndexedPropertiesExternalArrayDataType':
238
- case 'GetIndexedPropertiesPixelData':
239
- case 'GetIndexedPropertiesPixelDataLength':
240
- case 'HasIndexedPropertiesInExternalArrayData':
241
- case 'HasIndexedPropertiesInPixelData':
242
- case 'SetIndexedPropertiesToExternalArrayData':
243
- case 'SetIndexedPropertiesToPixelData':
244
- return arguments[groups[4][0] - 1] ? arguments[0] : [warning1, arguments[0]].join('');
245
- default:
246
- }
247
-
248
- /* remove unnecessary NanScope() */
249
- switch (arguments[groups[5][0]]) {
250
- case 'NAN_GETTER':
251
- case 'NAN_METHOD':
252
- case 'NAN_SETTER':
253
- case 'NAN_INDEX_DELETER':
254
- case 'NAN_INDEX_ENUMERATOR':
255
- case 'NAN_INDEX_GETTER':
256
- case 'NAN_INDEX_QUERY':
257
- case 'NAN_INDEX_SETTER':
258
- case 'NAN_PROPERTY_DELETER':
259
- case 'NAN_PROPERTY_ENUMERATOR':
260
- case 'NAN_PROPERTY_GETTER':
261
- case 'NAN_PROPERTY_QUERY':
262
- case 'NAN_PROPERTY_SETTER':
263
- return arguments[groups[5][0] - 1];
264
- default:
265
- }
266
-
267
- /* Value conversion */
268
- switch (arguments[groups[6][0]]) {
269
- case 'Boolean':
270
- case 'Int32':
271
- case 'Integer':
272
- case 'Number':
273
- case 'Object':
274
- case 'String':
275
- case 'Uint32':
276
- return [arguments[groups[6][0] - 2], 'NanTo<v8::', arguments[groups[6][0]], '>(', arguments[groups[6][0] - 1]].join('');
277
- default:
278
- }
279
-
280
- /* other value conversion */
281
- switch (arguments[groups[7][0]]) {
282
- case 'BooleanValue':
283
- return [arguments[groups[7][0] - 2], 'NanTo<bool>(', arguments[groups[7][0] - 1]].join('');
284
- case 'Int32Value':
285
- return [arguments[groups[7][0] - 2], 'NanTo<int32_t>(', arguments[groups[7][0] - 1]].join('');
286
- case 'IntegerValue':
287
- return [arguments[groups[7][0] - 2], 'NanTo<int64_t>(', arguments[groups[7][0] - 1]].join('');
288
- case 'Uint32Value':
289
- return [arguments[groups[7][0] - 2], 'NanTo<uint32_t>(', arguments[groups[7][0] - 1]].join('');
290
- default:
291
- }
292
-
293
- /* NAN_WEAK_CALLBACK */
294
- if (arguments[groups[8][0]] === 'NAN_WEAK_CALLBACK') {
295
- return ['template<typename T>\nvoid ',
296
- arguments[groups[8][0] + 1], '(const NanWeakCallbackInfo<T> &data)'].join('');
297
- }
298
-
299
- /* use methods on NAN classes instead */
300
- switch (arguments[groups[9][0]]) {
301
- case 'NanDisposePersistent':
302
- return [arguments[groups[9][0] + 1], '.Reset('].join('');
303
- case 'NanObjectWrapHandle':
304
- return [arguments[groups[9][0] + 1], '->handle('].join('');
305
- default:
306
- }
307
-
308
- /* use method on NanPersistent instead */
309
- if (arguments[groups[10][0]] === 'NanMakeWeakPersistent') {
310
- return arguments[groups[10][0] + 1] + '.SetWeak(';
311
- }
312
-
313
- /* These return Maybes, the upper ones take no arguments */
314
- switch (arguments[groups[11][0]]) {
315
- case 'GetEndColumn':
316
- case 'GetFunction':
317
- case 'GetLineNumber':
318
- case 'GetOwnPropertyNames':
319
- case 'GetPropertyNames':
320
- case 'GetSourceLine':
321
- case 'GetStartColumn':
322
- case 'NewInstance':
323
- case 'ObjectProtoToString':
324
- case 'ToArrayIndex':
325
- case 'ToDetailString':
326
- return [arguments[groups[11][0] - 2], 'Nan', arguments[groups[11][0]], '(', arguments[groups[11][0] - 1]].join('');
327
- case 'CallAsConstructor':
328
- case 'CallAsFunction':
329
- case 'CloneElementAt':
330
- case 'Delete':
331
- case 'ForceSet':
332
- case 'Get':
333
- case 'GetPropertyAttributes':
334
- case 'GetRealNamedProperty':
335
- case 'GetRealNamedPropertyInPrototypeChain':
336
- case 'Has':
337
- case 'HasOwnProperty':
338
- case 'HasRealIndexedProperty':
339
- case 'HasRealNamedCallbackProperty':
340
- case 'HasRealNamedProperty':
341
- case 'Set':
342
- case 'SetAccessor':
343
- case 'SetIndexedPropertyHandler':
344
- case 'SetNamedPropertyHandler':
345
- case 'SetPrototype':
346
- return [arguments[groups[11][0] - 2], 'Nan', arguments[groups[11][0]], '(', arguments[groups[11][0] - 1], ', '].join('');
347
- default:
348
- }
349
-
350
- /* Automatic ToLocalChecked(), take it or leave it */
351
- switch (arguments[groups[12][0]]) {
352
- case 'Date':
353
- case 'String':
354
- case 'RegExp':
355
- return ['NanNew', arguments[groups[12][0] - 1], arguments[groups[12][0] + 1], '.ToLocalChecked()'].join('');
356
- default:
357
- }
358
-
359
- /* NanEquals is now required for uniformity */
360
- if (arguments[groups[13][0]] === 'Equals') {
361
- return [arguments[groups[13][0] - 1], 'NanEquals(', arguments[groups[13][0] - 1], ', ', arguments[groups[13][0] + 1]].join('');
362
- }
363
-
364
- /* use method on replacement class instead */
365
- if (arguments[groups[14][0]] === 'NanAssignPersistent') {
366
- return [arguments[groups[14][0] + 1], '.Reset('].join('');
367
- }
368
-
369
- /* args --> info */
370
- if (arguments[groups[15][0]] === 'args') {
371
- return [arguments[groups[15][0] - 1], 'info', arguments[groups[15][0] + 1]].join('');
372
- }
373
-
374
- /* ObjectWrap --> NanObjectWrap */
375
- if (arguments[groups[16][0]] === 'ObjectWrap') {
376
- return [arguments[groups[16][0] - 1], 'NanObjectWrap', arguments[groups[16][0] + 1]].join('');
377
- }
378
-
379
- /* Persistent --> NanPersistent */
380
- if (arguments[groups[17][0]] === 'Persistent') {
381
- return [arguments[groups[17][0] - 1], 'NanPersistent', arguments[groups[17][0] + 1]].join('');
382
- }
383
-
384
- /* This should not happen. A switch is probably missing a case if it does. */
385
- throw 'Unhandled match: ' + arguments[0];
386
- }
387
-
388
- /* reads a file, runs replacement and writes it back */
389
- function processFile(file) {
390
- fs.readFile(file, {encoding: 'utf8'}, function (err, data) {
391
- if (err) {
392
- throw err;
393
- }
394
-
395
- /* run replacement twice, might need more runs */
396
- fs.writeFile(file, data.replace(master, replace).replace(master, replace), function (err) {
397
- if (err) {
398
- throw err;
399
- }
400
- });
401
- });
402
- }
403
-
404
- /* process file names from command line and process the identified files */
405
- for (i = 2, length = process.argv.length; i < length; i++) {
406
- glob(process.argv[i], function (err, matches) {
407
- if (err) {
408
- throw err;
409
- }
410
- matches.forEach(processFile);
411
- });
412
- }
@@ -1,14 +0,0 @@
1
- 1to2 naively converts source code files from NAN 1 to NAN 2. There will be erroneous conversions,
2
- false positives and missed opportunities. The input files are rewritten in place. Make sure that
3
- you have backups. You will have to manually review the changes afterwards and do some touchups.
4
-
5
- ```sh
6
- $ tools/1to2.js
7
-
8
- Usage: 1to2 [options] <file ...>
9
-
10
- Options:
11
-
12
- -h, --help output usage information
13
- -V, --version output the version number
14
- ```
@@ -1,19 +0,0 @@
1
- {
2
- "name": "1to2",
3
- "version": "1.0.0",
4
- "description": "NAN 1 -> 2 Migration Script",
5
- "main": "1to2.js",
6
- "repository": {
7
- "type": "git",
8
- "url": "git://github.com/nodejs/nan.git"
9
- },
10
- "contributors": [
11
- "Benjamin Byholm <bbyholm@abo.fi> (https://github.com/kkoopa/)",
12
- "Mathias Küsel (https://github.com/mathiask88/)"
13
- ],
14
- "dependencies": {
15
- "glob": "~5.0.10",
16
- "commander": "~2.8.1"
17
- },
18
- "license": "MIT"
19
- }
@@ -1,13 +0,0 @@
1
- Copyright (c) 2011, Ben Noordhuis <info@bnoordhuis.nl>
2
-
3
- Permission to use, copy, modify, and/or distribute this software for any
4
- purpose with or without fee is hereby granted, provided that the above
5
- copyright notice and this permission notice appear in all copies.
6
-
7
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
8
- WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
9
- MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
10
- ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
11
- WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
12
- ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
13
- OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
@@ -1,107 +0,0 @@
1
- # node-unix-dgram
2
-
3
- Communicate over UNIX datagram sockets.
4
-
5
- ## Usage
6
-
7
- Server:
8
-
9
- // One-shot server. Note that the server cannot send a reply;
10
- // UNIX datagram sockets are unconnected and the client is not addressable.
11
- var unix = require('unix-dgram');
12
- var server = unix.createSocket('unix_dgram', function(buf) {
13
- console.log('received ' + buf);
14
- server.close();
15
- });
16
- server.bind('/path/to/socket');
17
-
18
- Client:
19
-
20
- // Send a single message to the server.
21
- var message = Buffer('ping');
22
- var client = unix.createSocket('unix_dgram');
23
- client.on('error', console.error);
24
- client.send(message, 0, message.length, '/path/to/socket');
25
- client.close();
26
-
27
-
28
- ## API
29
-
30
- Caveat emptor: events and callbacks are synchronous for efficiency reasons.
31
-
32
- ### unix.createSocket(type, [listener])
33
-
34
- Returns a new unix.Socket object. `type` should be `'unix_dgram'`.
35
- Throws an exception if the `socket(2)` system call fails.
36
-
37
- The optional `listener` argument is added as a listener for the `'message'`
38
- event. The event listener receives the message as a `Buffer` object as its
39
- first argument.
40
-
41
- ### socket.bind(path)
42
-
43
- Create a server at `path`. Emits a `'listening'` event on success or
44
- an `'error'` event if the `bind(2)` system call fails.
45
-
46
- ### socket.connect(remote_path)
47
-
48
- Associate a socket with a remote path so you can send a message without setting
49
- the remote path. Once the socket is **connected** it emits a `'connect'` event.
50
- It also allows to perform some kind of congestion control as it emits a
51
- `'congestion'` event when the receiving buffer is full, and a `'writable'` event
52
- when it stops being full.
53
-
54
- ### socket.send(buf, [callback])
55
-
56
- Only to be used with **connected** sockets. It sends a message to the remote
57
- path associated with the socket
58
-
59
- Example:
60
-
61
- var unix = require('unix-dgram');
62
-
63
- var client = unix.createSocket('unix_dgram');
64
-
65
- client.on('error', function(err) {
66
- console.error(err);
67
- });
68
-
69
- client.on('connect', function() {
70
- console.log('connected');
71
- client.on('congestion', function() {
72
- console.log('congestion');
73
- /* The server is not accepting data */
74
- });
75
-
76
- client.on('writable', function() {
77
- console.log('writable');
78
- /* The server can accept data */
79
- });
80
-
81
- var message = new Buffer('PING');
82
- client.send(message);
83
- });
84
-
85
- client.connect('/tmp/server');
86
-
87
-
88
- ### socket.send_to(buf, offset, length, path, [callback]);
89
-
90
- Send a message to the server listening at `path`.
91
-
92
- `buf` is a `Buffer` object containing the message to send, `offset` is
93
- the offset into the buffer and `length` is the length of the message.
94
-
95
- For backwards compatibility, you can still use the `socket.send` function with
96
- this same signature.
97
-
98
- Example:
99
-
100
- var buf = new Buffer('foobarbaz');
101
- socket.send(buf, 3, 4, '/path/to/socket'); // Sends 'barb'.
102
-
103
- ### socket.close()
104
-
105
- Close the socket. If the socket was bound to a path with `socket.bind()`,
106
- then you will no longer receive new messages. The file system entity
107
- (the socket file) is not automatically unlinked.
@@ -1,20 +0,0 @@
1
- {
2
- 'conditions': [
3
- [ 'OS!="win"', {
4
- 'targets': [ {
5
- 'target_name': 'unix_dgram',
6
- 'sources': [ 'src/unix_dgram.cc' ],
7
- 'include_dirs': [
8
- '<!(node -e "require(\'nan\')")'
9
- ]
10
- } ]
11
- }
12
- ],
13
- [ 'OS=="win"', {
14
- 'targets': [ {
15
- 'target_name': 'unix_dgram',
16
- 'sources': [ 'src/win_dummy.cc' ],
17
- } ]
18
- } ]
19
- ]
20
- }