@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.
- package/bin/VERSION +1 -1
- package/bin/linux/contrast-service +0 -0
- package/bin/mac/contrast-service +0 -0
- package/bin/windows/contrast-service.exe +0 -0
- package/lib/assess/membrane/deserialization-membrane.js +4 -5
- package/lib/assess/membrane/source-membrane.js +16 -33
- package/lib/assess/models/call-context.js +1 -1
- package/lib/assess/policy/propagators.json +19 -21
- package/lib/assess/policy/rules.json +7 -2
- package/lib/assess/policy/signatures.json +42 -0
- package/lib/assess/policy/util.js +2 -1
- package/lib/assess/propagators/JSON/parse.js +1 -1
- package/lib/assess/propagators/JSON/stringify.js +3 -3
- package/lib/assess/propagators/array-prototype-join.js +7 -8
- package/lib/assess/propagators/common.js +7 -5
- package/lib/assess/propagators/dustjs/escape-html.js +22 -0
- package/lib/assess/propagators/dustjs/escape-js.js +22 -0
- package/lib/assess/propagators/encode-uri/encode-uri-component.js +22 -0
- package/lib/assess/propagators/encode-uri/encode-uri.js +22 -0
- package/lib/assess/propagators/handlebars-escape-expresssion.js +1 -1
- package/lib/assess/propagators/index.js +0 -2
- package/lib/assess/propagators/joi/boolean.js +1 -1
- package/lib/assess/propagators/joi/expression.js +1 -1
- package/lib/assess/propagators/joi/number.js +1 -1
- package/lib/assess/propagators/joi/string-base.js +1 -1
- package/lib/assess/propagators/joi/string-schema.js +12 -13
- package/lib/assess/propagators/joi/values.js +37 -22
- package/lib/assess/propagators/manager.js +12 -10
- package/lib/assess/propagators/mongoose/helpers.js +20 -0
- package/lib/assess/propagators/mongoose/index.js +18 -0
- package/lib/assess/propagators/mongoose/map.js +74 -0
- package/lib/assess/propagators/mongoose/string.js +104 -0
- package/lib/assess/propagators/mustache/escape.js +22 -0
- package/lib/assess/propagators/number.js +54 -0
- package/lib/assess/propagators/object.js +6 -7
- package/lib/assess/propagators/path/basename.js +14 -13
- package/lib/assess/propagators/path/common.js +156 -47
- package/lib/assess/propagators/path/dirname.js +14 -13
- package/lib/assess/propagators/path/extname.js +14 -13
- package/lib/assess/propagators/path/join.js +5 -1
- package/lib/assess/propagators/path/normalize.js +1 -2
- package/lib/assess/propagators/path/parse.js +1 -1
- package/lib/assess/propagators/path/relative.js +7 -5
- package/lib/assess/propagators/path/resolve.js +11 -2
- package/lib/assess/propagators/querystring/escape.js +20 -18
- package/lib/assess/propagators/querystring/parse.js +7 -5
- package/lib/assess/propagators/querystring/stringify.js +25 -24
- package/lib/assess/propagators/querystring/unescape.js +20 -18
- package/lib/assess/propagators/sequelize/sql-string-escape.js +1 -1
- package/lib/assess/propagators/sequelize/sql-string-format-named-parameters.js +1 -1
- package/lib/assess/propagators/sequelize/sql-string-format.js +3 -3
- package/lib/assess/propagators/sequelize/utils.js +2 -2
- package/lib/assess/propagators/string-prototype-replace.js +30 -28
- package/lib/assess/propagators/string-prototype-split.js +36 -36
- package/lib/assess/propagators/string-prototype-trim.js +15 -17
- package/lib/assess/propagators/string.js +12 -16
- package/lib/assess/propagators/template-escape.js +87 -0
- package/lib/assess/propagators/templates.js +10 -11
- package/lib/assess/propagators/url/url-prototype-parse.js +5 -6
- package/lib/assess/propagators/url/url-url.js +51 -43
- package/lib/assess/propagators/util/format.js +1 -1
- package/lib/assess/propagators/v8/init-hooks.js +3 -3
- package/lib/assess/propagators/validator/init-hooks.js +22 -22
- package/lib/assess/sinks/common.js +10 -5
- package/lib/assess/sinks/dustjs-linkedin-xss.js +131 -0
- package/lib/assess/sinks/libxmljs-xxe.js +1 -1
- package/lib/assess/sinks/mongodb.js +2 -1
- package/lib/assess/sinks/ssrf-url.js +1 -1
- package/lib/constants.js +4 -1
- package/lib/core/arch-components/dynamodb.js +1 -2
- package/lib/core/arch-components/dynamodbv3.js +44 -0
- package/lib/core/arch-components/index.js +1 -0
- package/lib/core/arch-components/rethinkdb.js +53 -0
- package/lib/core/config/options.js +3 -2
- package/lib/core/rewrite/injections.js +8 -0
- package/lib/core/stacktrace.js +2 -1
- package/lib/feature-set.js +1 -1
- package/lib/hooks/frameworks/base.js +8 -2
- package/lib/hooks/frameworks/http.js +23 -16
- package/lib/hooks/frameworks/http2.js +73 -0
- package/lib/hooks/frameworks/index.js +8 -3
- package/lib/hooks/http.js +112 -128
- package/lib/hooks/object-to-primitive.js +6 -7
- package/lib/hooks/patcher.js +75 -44
- package/lib/hooks/require.js +16 -22
- package/lib/instrumentation.js +0 -3
- package/lib/protect/rules/nosqli/nosql-injection-rule.js +228 -0
- package/lib/protect/rules/rule-factory.js +2 -2
- package/lib/protect/service.js +23 -11
- package/lib/protect/sinks/mongodb.js +56 -55
- package/lib/reporter/translations/to-protobuf/dtm/index.js +1 -1
- package/lib/reporter/translations/to-protobuf/dtm/ip-denylist-details.js +1 -1
- package/lib/reporter/translations/to-protobuf/dtm/rasp-rule-sample.js +1 -1
- package/lib/reporter/translations/to-protobuf/settings/defend-features.js +8 -6
- package/lib/reporter/translations/to-protobuf/settings/exclusions.js +5 -4
- package/lib/tracker.js +13 -65
- package/lib/util/some.js +27 -0
- package/lib/util/source-map.js +1 -1
- package/package.json +15 -16
- package/lib/hooks/frameworks/https.js +0 -42
- package/lib/protect/rules/nosqli/no-sql-injection-rule.js +0 -109
- package/node_modules/bindings/LICENSE.md +0 -22
- package/node_modules/bindings/README.md +0 -98
- package/node_modules/bindings/bindings.js +0 -221
- package/node_modules/bindings/package.json +0 -32
- package/node_modules/file-uri-to-path/.npmignore +0 -1
- package/node_modules/file-uri-to-path/.travis.yml +0 -30
- package/node_modules/file-uri-to-path/History.md +0 -21
- package/node_modules/file-uri-to-path/LICENSE +0 -20
- package/node_modules/file-uri-to-path/README.md +0 -74
- package/node_modules/file-uri-to-path/index.d.ts +0 -2
- package/node_modules/file-uri-to-path/index.js +0 -66
- package/node_modules/file-uri-to-path/package.json +0 -36
- package/node_modules/file-uri-to-path/test/test.js +0 -24
- package/node_modules/file-uri-to-path/test/tests.json +0 -13
- package/node_modules/glossy/LICENSE +0 -19
- package/node_modules/glossy/README.md +0 -129
- package/node_modules/glossy/index.js +0 -12
- package/node_modules/glossy/lib/glossy/parse.js +0 -520
- package/node_modules/glossy/lib/glossy/produce.js +0 -459
- package/node_modules/glossy/package.json +0 -47
- package/node_modules/glossy/test/decide.js +0 -7
- package/node_modules/glossy/test/decode_pri.js +0 -24
- package/node_modules/glossy/test/parse_3164.js +0 -104
- package/node_modules/glossy/test/parse_5424.js +0 -106
- package/node_modules/glossy/test/parse_5848.js +0 -40
- package/node_modules/glossy/test/parse_8601.js +0 -14
- package/node_modules/glossy/test/parse_rfc3339.js +0 -9
- package/node_modules/glossy/test/produce.js +0 -162
- package/node_modules/glossy/test/runner.js +0 -40
- package/node_modules/glossy/test/structure_data.js +0 -24
- package/node_modules/nan/CHANGELOG.md +0 -537
- package/node_modules/nan/LICENSE.md +0 -13
- package/node_modules/nan/README.md +0 -455
- package/node_modules/nan/doc/asyncworker.md +0 -146
- package/node_modules/nan/doc/buffers.md +0 -54
- package/node_modules/nan/doc/callback.md +0 -76
- package/node_modules/nan/doc/converters.md +0 -41
- package/node_modules/nan/doc/errors.md +0 -226
- package/node_modules/nan/doc/json.md +0 -62
- package/node_modules/nan/doc/maybe_types.md +0 -583
- package/node_modules/nan/doc/methods.md +0 -664
- package/node_modules/nan/doc/new.md +0 -147
- package/node_modules/nan/doc/node_misc.md +0 -123
- package/node_modules/nan/doc/object_wrappers.md +0 -263
- package/node_modules/nan/doc/persistent.md +0 -296
- package/node_modules/nan/doc/scopes.md +0 -73
- package/node_modules/nan/doc/script.md +0 -38
- package/node_modules/nan/doc/string_bytes.md +0 -62
- package/node_modules/nan/doc/v8_internals.md +0 -199
- package/node_modules/nan/doc/v8_misc.md +0 -85
- package/node_modules/nan/include_dirs.js +0 -1
- package/node_modules/nan/nan.h +0 -2898
- package/node_modules/nan/nan_callbacks.h +0 -88
- package/node_modules/nan/nan_callbacks_12_inl.h +0 -514
- package/node_modules/nan/nan_callbacks_pre_12_inl.h +0 -520
- package/node_modules/nan/nan_converters.h +0 -72
- package/node_modules/nan/nan_converters_43_inl.h +0 -68
- package/node_modules/nan/nan_converters_pre_43_inl.h +0 -42
- package/node_modules/nan/nan_define_own_property_helper.h +0 -29
- package/node_modules/nan/nan_implementation_12_inl.h +0 -430
- package/node_modules/nan/nan_implementation_pre_12_inl.h +0 -263
- package/node_modules/nan/nan_json.h +0 -166
- package/node_modules/nan/nan_maybe_43_inl.h +0 -356
- package/node_modules/nan/nan_maybe_pre_43_inl.h +0 -268
- package/node_modules/nan/nan_new.h +0 -340
- package/node_modules/nan/nan_object_wrap.h +0 -156
- package/node_modules/nan/nan_persistent_12_inl.h +0 -132
- package/node_modules/nan/nan_persistent_pre_12_inl.h +0 -242
- package/node_modules/nan/nan_private.h +0 -73
- package/node_modules/nan/nan_string_bytes.h +0 -305
- package/node_modules/nan/nan_typedarray_contents.h +0 -96
- package/node_modules/nan/nan_weak.h +0 -437
- package/node_modules/nan/package.json +0 -41
- package/node_modules/nan/tools/1to2.js +0 -412
- package/node_modules/nan/tools/README.md +0 -14
- package/node_modules/nan/tools/package.json +0 -19
- package/node_modules/unix-dgram/LICENSE +0 -13
- package/node_modules/unix-dgram/README.md +0 -107
- package/node_modules/unix-dgram/binding.gyp +0 -20
- package/node_modules/unix-dgram/build/Makefile +0 -324
- package/node_modules/unix-dgram/build/Release/.deps/Release/obj.target/unix_dgram/src/unix_dgram.o.d +0 -58
- package/node_modules/unix-dgram/build/Release/.deps/Release/obj.target/unix_dgram.node.d +0 -1
- package/node_modules/unix-dgram/build/Release/.deps/Release/unix_dgram.node.d +0 -1
- package/node_modules/unix-dgram/build/Release/obj.target/unix_dgram/src/unix_dgram.o +0 -0
- package/node_modules/unix-dgram/build/Release/obj.target/unix_dgram.node +0 -0
- package/node_modules/unix-dgram/build/Release/unix_dgram.node +0 -0
- package/node_modules/unix-dgram/build/binding.Makefile +0 -6
- package/node_modules/unix-dgram/build/config.gypi +0 -213
- package/node_modules/unix-dgram/build/unix_dgram.target.mk +0 -159
- package/node_modules/unix-dgram/lib/unix_dgram.js +0 -168
- package/node_modules/unix-dgram/package.json +0 -36
- package/node_modules/unix-dgram/src/unix_dgram.cc +0 -404
- package/node_modules/unix-dgram/src/win_dummy.cc +0 -7
- package/node_modules/unix-dgram/test/test-connect-callback.js +0 -68
- package/node_modules/unix-dgram/test/test-connect.js +0 -53
- package/node_modules/unix-dgram/test/test-dgram-unix.js +0 -58
- package/node_modules/unix-dgram/test/test-send-error.js +0 -26
- package/node_modules/winston-syslog/.eslintrc +0 -7
- package/node_modules/winston-syslog/.travis.yml +0 -14
- package/node_modules/winston-syslog/CHANGELOG.md +0 -9
- package/node_modules/winston-syslog/LICENSE +0 -20
- package/node_modules/winston-syslog/README.md +0 -135
- package/node_modules/winston-syslog/lib/utils.js +0 -26
- package/node_modules/winston-syslog/lib/winston-syslog.js +0 -385
- package/node_modules/winston-syslog/package.json +0 -56
- package/node_modules/winston-syslog/test/format-test.js +0 -122
- package/node_modules/winston-syslog/test/syslog-test.js +0 -95
- 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
|
-
}
|