elasticio-sailor-nodejs 2.7.1-dev3 → 2.7.1-dev5
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/.eslintrc.js +150 -150
- package/.github/CODEOWNERS +8 -8
- package/.nsprc +18 -18
- package/CHANGELOG.md +144 -144
- package/README.md +247 -247
- package/lib/amqp.js +584 -584
- package/lib/component_reader.js +109 -109
- package/lib/emitter.js +198 -198
- package/lib/encryptor.js +114 -114
- package/lib/executor.js +74 -74
- package/lib/hooksData.js +68 -68
- package/lib/ipc.js +13 -13
- package/lib/logging.js +97 -97
- package/lib/sailor.js +669 -665
- package/lib/service.js +294 -294
- package/lib/settings.js +126 -126
- package/package.json +53 -53
- package/postpublish.js +24 -24
- package/run.js +139 -139
- package/runService.js +19 -19
- package/test.json +51 -0
- package/testOk.json +51 -0
- package/testOk1.json +51 -0
package/lib/settings.js
CHANGED
|
@@ -1,126 +1,126 @@
|
|
|
1
|
-
const _ = require('lodash');
|
|
2
|
-
|
|
3
|
-
const PREFIX = 'ELASTICIO_';
|
|
4
|
-
|
|
5
|
-
function getOptionalEnvVars(envVars) {
|
|
6
|
-
const optional = {
|
|
7
|
-
REBOUND_INITIAL_EXPIRATION: 15000,
|
|
8
|
-
REBOUND_LIMIT: 20,
|
|
9
|
-
COMPONENT_PATH: '',
|
|
10
|
-
RABBITMQ_PREFETCH_SAILOR: 1,
|
|
11
|
-
STARTUP_REQUIRED: false,
|
|
12
|
-
HOOK_SHUTDOWN: false,
|
|
13
|
-
API_REQUEST_RETRY_ATTEMPTS: 3,
|
|
14
|
-
API_REQUEST_RETRY_DELAY: 100,
|
|
15
|
-
DATA_RATE_LIMIT: 10, // 10 data events every 100ms
|
|
16
|
-
ERROR_RATE_LIMIT: 2, // 2 errors every 100ms
|
|
17
|
-
SNAPSHOT_RATE_LIMIT: 2, // 2 Snapshots every 100ms
|
|
18
|
-
RATE_INTERVAL: 100, // 100ms
|
|
19
|
-
PROCESS_AMQP_DRAIN: true,
|
|
20
|
-
AMQP_PUBLISH_RETRY_DELAY: 100, // 100ms
|
|
21
|
-
AMQP_PUBLISH_RETRY_ATTEMPTS: Infinity,
|
|
22
|
-
AMQP_PUBLISH_MAX_RETRY_DELAY: 5 * 60 * 1000, // 5 mins
|
|
23
|
-
AMQP_PERSISTENT_MESSAGES: false,
|
|
24
|
-
OUTGOING_MESSAGE_SIZE_LIMIT: 10485760,
|
|
25
|
-
NO_SELF_PASSTRHOUGH: false,
|
|
26
|
-
PROTOCOL_VERSION: 1,
|
|
27
|
-
NO_ERROR_REPLIES: false,
|
|
28
|
-
INPUT_FORMAT: 'default',
|
|
29
|
-
OBJECT_STORAGE_URI: null,
|
|
30
|
-
OBJECT_STORAGE_TOKEN: null,
|
|
31
|
-
OBJECT_STORAGE_SIZE_THRESHOLD: 1048576,
|
|
32
|
-
EMIT_LIGHTWEIGHT_MESSAGE: false,
|
|
33
|
-
AMQP_RECONNECT_ATTEMPTS: 3,
|
|
34
|
-
AMQP_RECONNECT_TIMEOUT: 100,
|
|
35
|
-
WAIT_MESSAGES_TIMEOUT: 50
|
|
36
|
-
};
|
|
37
|
-
|
|
38
|
-
const result = {};
|
|
39
|
-
_.forEach(optional, function readOptional(defaultValue, key) {
|
|
40
|
-
const envVarName = PREFIX + key;
|
|
41
|
-
if (typeof defaultValue === 'number' && envVars[envVarName]) {
|
|
42
|
-
result[key] = parseInt(envVars[envVarName]) || defaultValue;
|
|
43
|
-
} else if (typeof defaultValue === 'boolean') {
|
|
44
|
-
if (envVars[envVarName] === undefined) {
|
|
45
|
-
result[key] = defaultValue;
|
|
46
|
-
} else {
|
|
47
|
-
result[key] = (!envVars[envVarName] || envVars[envVarName] === 'false') ? false : true;
|
|
48
|
-
}
|
|
49
|
-
} else {
|
|
50
|
-
result[key] = envVars[envVarName] || defaultValue;
|
|
51
|
-
}
|
|
52
|
-
});
|
|
53
|
-
return result;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
function getAdditionalVars(envVars) {
|
|
57
|
-
if (envVars.ELASTICIO_ADDITIONAL_VARS_FOR_HEADERS) {
|
|
58
|
-
const vars = {};
|
|
59
|
-
envVars.ELASTICIO_ADDITIONAL_VARS_FOR_HEADERS
|
|
60
|
-
.split(',')
|
|
61
|
-
.map(env => env.trim())
|
|
62
|
-
.forEach(env => {
|
|
63
|
-
const key = env.indexOf(PREFIX) === 0 ? env.slice(PREFIX.length) : env;
|
|
64
|
-
vars[key] = envVars[env];
|
|
65
|
-
});
|
|
66
|
-
|
|
67
|
-
return vars;
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
function getMandatoryEnvVars(envVars) {
|
|
72
|
-
// required settings
|
|
73
|
-
const requiredAlways = [
|
|
74
|
-
'FLOW_ID',
|
|
75
|
-
'EXEC_ID',
|
|
76
|
-
'STEP_ID',
|
|
77
|
-
'CONTAINER_ID',
|
|
78
|
-
'WORKSPACE_ID',
|
|
79
|
-
|
|
80
|
-
'USER_ID',
|
|
81
|
-
'COMP_ID',
|
|
82
|
-
'FUNCTION',
|
|
83
|
-
|
|
84
|
-
'API_URI',
|
|
85
|
-
'API_USERNAME',
|
|
86
|
-
'API_KEY'
|
|
87
|
-
];
|
|
88
|
-
|
|
89
|
-
const requiredForMessageProcessing = [
|
|
90
|
-
'AMQP_URI',
|
|
91
|
-
'LISTEN_MESSAGES_ON',
|
|
92
|
-
'PUBLISH_MESSAGES_TO',
|
|
93
|
-
|
|
94
|
-
'DATA_ROUTING_KEY',
|
|
95
|
-
'ERROR_ROUTING_KEY',
|
|
96
|
-
'REBOUND_ROUTING_KEY',
|
|
97
|
-
'SNAPSHOT_ROUTING_KEY',
|
|
98
|
-
'MESSAGE_CRYPTO_IV',
|
|
99
|
-
'MESSAGE_CRYPTO_PASSWORD'
|
|
100
|
-
];
|
|
101
|
-
|
|
102
|
-
const envVarsList = requiredAlways.slice(0);
|
|
103
|
-
|
|
104
|
-
if (!envVars.ELASTICIO_HOOK_SHUTDOWN) {
|
|
105
|
-
envVarsList.push(...requiredForMessageProcessing);
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
return envVarsList.reduce((result, key) => {
|
|
109
|
-
const envVarName = PREFIX + key;
|
|
110
|
-
if (!envVars[envVarName]) {
|
|
111
|
-
throw new Error(`${envVarName} is missing`);
|
|
112
|
-
}
|
|
113
|
-
result[key] = envVars[envVarName];
|
|
114
|
-
return result;
|
|
115
|
-
}, {});
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
function readFrom(envVars) {
|
|
119
|
-
return {
|
|
120
|
-
...getMandatoryEnvVars(envVars),
|
|
121
|
-
...getOptionalEnvVars(envVars),
|
|
122
|
-
additionalVars: getAdditionalVars(envVars)
|
|
123
|
-
};
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
exports.readFrom = readFrom;
|
|
1
|
+
const _ = require('lodash');
|
|
2
|
+
|
|
3
|
+
const PREFIX = 'ELASTICIO_';
|
|
4
|
+
|
|
5
|
+
function getOptionalEnvVars(envVars) {
|
|
6
|
+
const optional = {
|
|
7
|
+
REBOUND_INITIAL_EXPIRATION: 15000,
|
|
8
|
+
REBOUND_LIMIT: 20,
|
|
9
|
+
COMPONENT_PATH: '',
|
|
10
|
+
RABBITMQ_PREFETCH_SAILOR: 1,
|
|
11
|
+
STARTUP_REQUIRED: false,
|
|
12
|
+
HOOK_SHUTDOWN: false,
|
|
13
|
+
API_REQUEST_RETRY_ATTEMPTS: 3,
|
|
14
|
+
API_REQUEST_RETRY_DELAY: 100,
|
|
15
|
+
DATA_RATE_LIMIT: 10, // 10 data events every 100ms
|
|
16
|
+
ERROR_RATE_LIMIT: 2, // 2 errors every 100ms
|
|
17
|
+
SNAPSHOT_RATE_LIMIT: 2, // 2 Snapshots every 100ms
|
|
18
|
+
RATE_INTERVAL: 100, // 100ms
|
|
19
|
+
PROCESS_AMQP_DRAIN: true,
|
|
20
|
+
AMQP_PUBLISH_RETRY_DELAY: 100, // 100ms
|
|
21
|
+
AMQP_PUBLISH_RETRY_ATTEMPTS: Infinity,
|
|
22
|
+
AMQP_PUBLISH_MAX_RETRY_DELAY: 5 * 60 * 1000, // 5 mins
|
|
23
|
+
AMQP_PERSISTENT_MESSAGES: false,
|
|
24
|
+
OUTGOING_MESSAGE_SIZE_LIMIT: 10485760,
|
|
25
|
+
NO_SELF_PASSTRHOUGH: false,
|
|
26
|
+
PROTOCOL_VERSION: 1,
|
|
27
|
+
NO_ERROR_REPLIES: false,
|
|
28
|
+
INPUT_FORMAT: 'default',
|
|
29
|
+
OBJECT_STORAGE_URI: null,
|
|
30
|
+
OBJECT_STORAGE_TOKEN: null,
|
|
31
|
+
OBJECT_STORAGE_SIZE_THRESHOLD: 1048576,
|
|
32
|
+
EMIT_LIGHTWEIGHT_MESSAGE: false,
|
|
33
|
+
AMQP_RECONNECT_ATTEMPTS: 3,
|
|
34
|
+
AMQP_RECONNECT_TIMEOUT: 100,
|
|
35
|
+
WAIT_MESSAGES_TIMEOUT: 50
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
const result = {};
|
|
39
|
+
_.forEach(optional, function readOptional(defaultValue, key) {
|
|
40
|
+
const envVarName = PREFIX + key;
|
|
41
|
+
if (typeof defaultValue === 'number' && envVars[envVarName]) {
|
|
42
|
+
result[key] = parseInt(envVars[envVarName]) || defaultValue;
|
|
43
|
+
} else if (typeof defaultValue === 'boolean') {
|
|
44
|
+
if (envVars[envVarName] === undefined) {
|
|
45
|
+
result[key] = defaultValue;
|
|
46
|
+
} else {
|
|
47
|
+
result[key] = (!envVars[envVarName] || envVars[envVarName] === 'false') ? false : true;
|
|
48
|
+
}
|
|
49
|
+
} else {
|
|
50
|
+
result[key] = envVars[envVarName] || defaultValue;
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
return result;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
function getAdditionalVars(envVars) {
|
|
57
|
+
if (envVars.ELASTICIO_ADDITIONAL_VARS_FOR_HEADERS) {
|
|
58
|
+
const vars = {};
|
|
59
|
+
envVars.ELASTICIO_ADDITIONAL_VARS_FOR_HEADERS
|
|
60
|
+
.split(',')
|
|
61
|
+
.map(env => env.trim())
|
|
62
|
+
.forEach(env => {
|
|
63
|
+
const key = env.indexOf(PREFIX) === 0 ? env.slice(PREFIX.length) : env;
|
|
64
|
+
vars[key] = envVars[env];
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
return vars;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
function getMandatoryEnvVars(envVars) {
|
|
72
|
+
// required settings
|
|
73
|
+
const requiredAlways = [
|
|
74
|
+
'FLOW_ID',
|
|
75
|
+
'EXEC_ID',
|
|
76
|
+
'STEP_ID',
|
|
77
|
+
'CONTAINER_ID',
|
|
78
|
+
'WORKSPACE_ID',
|
|
79
|
+
|
|
80
|
+
'USER_ID',
|
|
81
|
+
'COMP_ID',
|
|
82
|
+
'FUNCTION',
|
|
83
|
+
|
|
84
|
+
'API_URI',
|
|
85
|
+
'API_USERNAME',
|
|
86
|
+
'API_KEY'
|
|
87
|
+
];
|
|
88
|
+
|
|
89
|
+
const requiredForMessageProcessing = [
|
|
90
|
+
'AMQP_URI',
|
|
91
|
+
'LISTEN_MESSAGES_ON',
|
|
92
|
+
'PUBLISH_MESSAGES_TO',
|
|
93
|
+
|
|
94
|
+
'DATA_ROUTING_KEY',
|
|
95
|
+
'ERROR_ROUTING_KEY',
|
|
96
|
+
'REBOUND_ROUTING_KEY',
|
|
97
|
+
'SNAPSHOT_ROUTING_KEY',
|
|
98
|
+
'MESSAGE_CRYPTO_IV',
|
|
99
|
+
'MESSAGE_CRYPTO_PASSWORD'
|
|
100
|
+
];
|
|
101
|
+
|
|
102
|
+
const envVarsList = requiredAlways.slice(0);
|
|
103
|
+
|
|
104
|
+
if (!envVars.ELASTICIO_HOOK_SHUTDOWN) {
|
|
105
|
+
envVarsList.push(...requiredForMessageProcessing);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
return envVarsList.reduce((result, key) => {
|
|
109
|
+
const envVarName = PREFIX + key;
|
|
110
|
+
if (!envVars[envVarName]) {
|
|
111
|
+
throw new Error(`${envVarName} is missing`);
|
|
112
|
+
}
|
|
113
|
+
result[key] = envVars[envVarName];
|
|
114
|
+
return result;
|
|
115
|
+
}, {});
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
function readFrom(envVars) {
|
|
119
|
+
return {
|
|
120
|
+
...getMandatoryEnvVars(envVars),
|
|
121
|
+
...getOptionalEnvVars(envVars),
|
|
122
|
+
additionalVars: getAdditionalVars(envVars)
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
exports.readFrom = readFrom;
|
package/package.json
CHANGED
|
@@ -1,53 +1,53 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "elasticio-sailor-nodejs",
|
|
3
|
-
"description": "The official elastic.io library for bootstrapping and executing for Node.js connectors",
|
|
4
|
-
"version": "2.7.1-
|
|
5
|
-
"main": "run.js",
|
|
6
|
-
"scripts": {
|
|
7
|
-
"audit": "better-npm-audit audit --level high --production",
|
|
8
|
-
"lint": "./node_modules/.bin/eslint lib spec mocha_spec lib run.js runService.js",
|
|
9
|
-
"pretest": "npm run lint",
|
|
10
|
-
"test": "npm run test:jasmine && npm run test:mocha",
|
|
11
|
-
"test:jasmine": "NODE_ENV=test jasmine-node spec",
|
|
12
|
-
"test:mocha": "NODE_ENV=test node_modules/.bin/mocha --recursive mocha_spec",
|
|
13
|
-
"postpublish": "./postpublish.js"
|
|
14
|
-
},
|
|
15
|
-
"engines": {
|
|
16
|
-
"node": ">=12.13.0"
|
|
17
|
-
},
|
|
18
|
-
"dependencies": {
|
|
19
|
-
"@elastic.io/maester-client": "4.0.3",
|
|
20
|
-
"amqplib": "0.8.0",
|
|
21
|
-
"bunyan": "1.8.10",
|
|
22
|
-
"co": "4.6.0",
|
|
23
|
-
"debug": "3.1.0",
|
|
24
|
-
"elasticio-rest-node": "1.2.7",
|
|
25
|
-
"event-to-promise": "0.8.0",
|
|
26
|
-
"lodash": "4.17.21",
|
|
27
|
-
"p-throttle": "2.1.0",
|
|
28
|
-
"q": "1.5.1",
|
|
29
|
-
"request-promise-native": "1.0.5",
|
|
30
|
-
"requestretry": "7.0.2",
|
|
31
|
-
"uuid": "3.0.1"
|
|
32
|
-
},
|
|
33
|
-
"devDependencies": {
|
|
34
|
-
"better-npm-audit": "3.7.3",
|
|
35
|
-
"chai": "4.2.0",
|
|
36
|
-
"del": "2.2.2",
|
|
37
|
-
"eslint": "4.19.1",
|
|
38
|
-
"eslint-plugin-mocha": "4.12.1",
|
|
39
|
-
"express": "4.16.4",
|
|
40
|
-
"gulp": "3.9.1",
|
|
41
|
-
"gulp-istanbul": "1.1.3",
|
|
42
|
-
"gulp-jasmine": "0.2.0",
|
|
43
|
-
"jasmine-node": "3.0.0",
|
|
44
|
-
"mocha": "7.1.2",
|
|
45
|
-
"nock": "12.0.3",
|
|
46
|
-
"rabbitmq-stats": "1.2.4",
|
|
47
|
-
"request": "2.88.0",
|
|
48
|
-
"sinon": "9.0.2",
|
|
49
|
-
"sinon-chai": "3.5.0"
|
|
50
|
-
},
|
|
51
|
-
"repository": "elasticio/sailor-nodejs",
|
|
52
|
-
"license": "Apache-2.0"
|
|
53
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "elasticio-sailor-nodejs",
|
|
3
|
+
"description": "The official elastic.io library for bootstrapping and executing for Node.js connectors",
|
|
4
|
+
"version": "2.7.1-dev5",
|
|
5
|
+
"main": "run.js",
|
|
6
|
+
"scripts": {
|
|
7
|
+
"audit": "better-npm-audit audit --level high --production",
|
|
8
|
+
"lint": "./node_modules/.bin/eslint lib spec mocha_spec lib run.js runService.js",
|
|
9
|
+
"pretest": "npm run lint",
|
|
10
|
+
"test": "npm run test:jasmine && npm run test:mocha",
|
|
11
|
+
"test:jasmine": "NODE_ENV=test jasmine-node spec",
|
|
12
|
+
"test:mocha": "NODE_ENV=test node_modules/.bin/mocha --recursive mocha_spec",
|
|
13
|
+
"postpublish": "./postpublish.js"
|
|
14
|
+
},
|
|
15
|
+
"engines": {
|
|
16
|
+
"node": ">=12.13.0"
|
|
17
|
+
},
|
|
18
|
+
"dependencies": {
|
|
19
|
+
"@elastic.io/maester-client": "4.0.3",
|
|
20
|
+
"amqplib": "0.8.0",
|
|
21
|
+
"bunyan": "1.8.10",
|
|
22
|
+
"co": "4.6.0",
|
|
23
|
+
"debug": "3.1.0",
|
|
24
|
+
"elasticio-rest-node": "1.2.7",
|
|
25
|
+
"event-to-promise": "0.8.0",
|
|
26
|
+
"lodash": "4.17.21",
|
|
27
|
+
"p-throttle": "2.1.0",
|
|
28
|
+
"q": "1.5.1",
|
|
29
|
+
"request-promise-native": "1.0.5",
|
|
30
|
+
"requestretry": "7.0.2",
|
|
31
|
+
"uuid": "3.0.1"
|
|
32
|
+
},
|
|
33
|
+
"devDependencies": {
|
|
34
|
+
"better-npm-audit": "3.7.3",
|
|
35
|
+
"chai": "4.2.0",
|
|
36
|
+
"del": "2.2.2",
|
|
37
|
+
"eslint": "4.19.1",
|
|
38
|
+
"eslint-plugin-mocha": "4.12.1",
|
|
39
|
+
"express": "4.16.4",
|
|
40
|
+
"gulp": "3.9.1",
|
|
41
|
+
"gulp-istanbul": "1.1.3",
|
|
42
|
+
"gulp-jasmine": "0.2.0",
|
|
43
|
+
"jasmine-node": "3.0.0",
|
|
44
|
+
"mocha": "7.1.2",
|
|
45
|
+
"nock": "12.0.3",
|
|
46
|
+
"rabbitmq-stats": "1.2.4",
|
|
47
|
+
"request": "2.88.0",
|
|
48
|
+
"sinon": "9.0.2",
|
|
49
|
+
"sinon-chai": "3.5.0"
|
|
50
|
+
},
|
|
51
|
+
"repository": "elasticio/sailor-nodejs",
|
|
52
|
+
"license": "Apache-2.0"
|
|
53
|
+
}
|
package/postpublish.js
CHANGED
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
#! /usr/bin/env node
|
|
2
|
-
'use strict';
|
|
3
|
-
|
|
4
|
-
var execSync = require('child_process').execSync;
|
|
5
|
-
var version = require('./package.json').version;
|
|
6
|
-
|
|
7
|
-
if (!version) {
|
|
8
|
-
console.error('Can not determine current version');
|
|
9
|
-
process.exit(0);
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
var tag = 'v' + version;
|
|
13
|
-
try {
|
|
14
|
-
// if grep not found anything, it's exit code isn't zero, so execSync raises an Error
|
|
15
|
-
execSync('git tag | grep "' + tag + '"');
|
|
16
|
-
// it seems tag is found, do nothing
|
|
17
|
-
process.exit(0);
|
|
18
|
-
} catch (e) {
|
|
19
|
-
// grep found nothing, so le'ts create new tag
|
|
20
|
-
console.info('creating a new tag: ', tag);
|
|
21
|
-
execSync('git tag ' + tag);
|
|
22
|
-
console.info('pushing tag to origin: ', tag);
|
|
23
|
-
execSync('git push origin ' + tag);
|
|
24
|
-
}
|
|
1
|
+
#! /usr/bin/env node
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
var execSync = require('child_process').execSync;
|
|
5
|
+
var version = require('./package.json').version;
|
|
6
|
+
|
|
7
|
+
if (!version) {
|
|
8
|
+
console.error('Can not determine current version');
|
|
9
|
+
process.exit(0);
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
var tag = 'v' + version;
|
|
13
|
+
try {
|
|
14
|
+
// if grep not found anything, it's exit code isn't zero, so execSync raises an Error
|
|
15
|
+
execSync('git tag | grep "' + tag + '"');
|
|
16
|
+
// it seems tag is found, do nothing
|
|
17
|
+
process.exit(0);
|
|
18
|
+
} catch (e) {
|
|
19
|
+
// grep found nothing, so le'ts create new tag
|
|
20
|
+
console.info('creating a new tag: ', tag);
|
|
21
|
+
execSync('git tag ' + tag);
|
|
22
|
+
console.info('pushing tag to origin: ', tag);
|
|
23
|
+
execSync('git push origin ' + tag);
|
|
24
|
+
}
|