teraslice-client-js 0.60.1 → 0.60.3
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.json +14 -0
- package/dist/src/assets.d.ts +2 -2
- package/dist/src/assets.d.ts.map +1 -1
- package/dist/src/assets.js +20 -26
- package/dist/src/assets.js.map +1 -1
- package/dist/src/client.d.ts +1 -1
- package/dist/src/client.d.ts.map +1 -1
- package/dist/src/client.js +24 -27
- package/dist/src/client.js.map +1 -1
- package/dist/src/cluster.d.ts +1 -1
- package/dist/src/cluster.d.ts.map +1 -1
- package/dist/src/cluster.js +8 -14
- package/dist/src/cluster.js.map +1 -1
- package/dist/src/ex.d.ts +3 -3
- package/dist/src/ex.d.ts.map +1 -1
- package/dist/src/ex.js +22 -27
- package/dist/src/ex.js.map +1 -1
- package/dist/src/executions.d.ts +4 -4
- package/dist/src/executions.d.ts.map +1 -1
- package/dist/src/executions.js +13 -19
- package/dist/src/executions.js.map +1 -1
- package/dist/src/index.d.ts +8 -8
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +18 -39
- package/dist/src/index.js.map +1 -1
- package/dist/src/interfaces.js +1 -2
- package/dist/src/job.d.ts +6 -6
- package/dist/src/job.d.ts.map +1 -1
- package/dist/src/job.js +23 -28
- package/dist/src/job.js.map +1 -1
- package/dist/src/jobs.d.ts +5 -5
- package/dist/src/jobs.d.ts.map +1 -1
- package/dist/src/jobs.js +9 -15
- package/dist/src/jobs.js.map +1 -1
- package/dist/test/assets-spec.js +13 -16
- package/dist/test/assets-spec.js.map +1 -1
- package/dist/test/client-spec.js +10 -15
- package/dist/test/client-spec.js.map +1 -1
- package/dist/test/cluster-spec.js +6 -11
- package/dist/test/cluster-spec.js.map +1 -1
- package/dist/test/ex-spec.js +60 -65
- package/dist/test/ex-spec.js.map +1 -1
- package/dist/test/executions-spec.js +8 -13
- package/dist/test/executions-spec.js.map +1 -1
- package/dist/test/job-spec.js +82 -87
- package/dist/test/job-spec.js.map +1 -1
- package/dist/test/jobs-spec.js +14 -19
- package/dist/test/jobs-spec.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/examples/cluster.js +5 -5
- package/examples/list.js +8 -9
- package/examples/submit.js +15 -15
- package/jest.config.js +43 -2
- package/package.json +5 -4
- package/src/assets.ts +3 -3
- package/src/client.ts +3 -3
- package/src/cluster.ts +2 -2
- package/src/ex.ts +3 -3
- package/src/executions.ts +4 -4
- package/src/index.ts +8 -8
- package/src/job.ts +9 -9
- package/src/jobs.ts +5 -5
- package/test/assets-spec.ts +7 -4
- package/test/client-spec.ts +2 -2
- package/test/cluster-spec.ts +1 -1
- package/test/ex-spec.ts +1 -1
- package/test/executions-spec.ts +2 -2
- package/test/job-spec.ts +4 -4
- package/test/jobs-spec.ts +3 -3
- package/tsconfig.json +7 -1
package/.eslintrc.json
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"extends": "@terascope",
|
|
3
|
+
"parserOptions": {
|
|
4
|
+
"ecmaVersion": "latest",
|
|
5
|
+
"sourceType": "module"
|
|
6
|
+
},
|
|
7
|
+
"rules": {
|
|
8
|
+
"@typescript-eslint/naming-convention": "off",
|
|
9
|
+
"@typescript-eslint/no-duplicate-enum-values": "warn",
|
|
10
|
+
"import/extensions": "off",
|
|
11
|
+
"import/no-import-module-exports": "off"
|
|
12
|
+
},
|
|
13
|
+
"ignorePatterns":[]
|
|
14
|
+
}
|
package/dist/src/assets.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Teraslice } from '@terascope/types';
|
|
2
|
-
import Client from './client';
|
|
3
|
-
import { PostData, SearchOptions, ClientConfig } from './interfaces';
|
|
2
|
+
import Client from './client.js';
|
|
3
|
+
import { PostData, SearchOptions, ClientConfig } from './interfaces.js';
|
|
4
4
|
export default class Assets extends Client {
|
|
5
5
|
constructor(config: ClientConfig);
|
|
6
6
|
upload(data: PostData, query?: Teraslice.AssetUploadQuery): Promise<Teraslice.AssetIDResponse>;
|
package/dist/src/assets.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assets.d.ts","sourceRoot":"","sources":["../../src/assets.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAG7C,OAAO,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"assets.d.ts","sourceRoot":"","sources":["../../src/assets.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAG7C,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAExE,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,MAAM;gBAC1B,MAAM,EAAE,YAAY;IAK1B,MAAM,CACR,IAAI,EAAE,QAAQ,EACd,KAAK,GAAE,SAAS,CAAC,gBAAqB,GACvC,OAAO,CAAC,SAAS,CAAC,eAAe,CAAC;IAc/B,MAAM,CACR,EAAE,EAAE,MAAM,EACV,aAAa,GAAE,aAAkB,GAClC,OAAO,CAAC,SAAS,CAAC,eAAe,CAAC;IAW/B,IAAI,CACN,KAAK,GAAE,SAAS,CAAC,WAAgB,EACjC,aAAa,GAAE,aAAkB,GAClC,OAAO,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;IAK7B,QAAQ,CACV,IAAI,EAAE,MAAM,EACZ,OAAO,SAAK,EACZ,aAAa,GAAE,aAAkB,GAClC,OAAO,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;IAiB7B,GAAG,CACL,IAAI,SAAK,EACT,OAAO,SAAK,EACZ,KAAK,GAAE,SAAS,CAAC,eAAoB,EACrC,aAAa,GAAE,aAAkB,GAClC,OAAO,CAAC,MAAM,CAAC;CAmBrB"}
|
package/dist/src/assets.js
CHANGED
|
@@ -1,20 +1,15 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const utils_1 = require("@terascope/utils");
|
|
7
|
-
const path_1 = __importDefault(require("path"));
|
|
8
|
-
const auto_bind_1 = __importDefault(require("auto-bind"));
|
|
9
|
-
const client_1 = __importDefault(require("./client"));
|
|
10
|
-
class Assets extends client_1.default {
|
|
1
|
+
import { TSError, isEmpty, isString } from '@terascope/utils';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import autoBind from 'auto-bind';
|
|
4
|
+
import Client from './client.js';
|
|
5
|
+
export default class Assets extends Client {
|
|
11
6
|
constructor(config) {
|
|
12
7
|
super(config);
|
|
13
|
-
(
|
|
8
|
+
autoBind(this);
|
|
14
9
|
}
|
|
15
10
|
async upload(data, query = {}) {
|
|
16
|
-
if (
|
|
17
|
-
throw new
|
|
11
|
+
if (isEmpty(data)) {
|
|
12
|
+
throw new TSError('Asset stream must not be empty', {
|
|
18
13
|
statusCode: 400
|
|
19
14
|
});
|
|
20
15
|
}
|
|
@@ -24,8 +19,8 @@ class Assets extends client_1.default {
|
|
|
24
19
|
return this.parse(results);
|
|
25
20
|
}
|
|
26
21
|
async remove(id, searchOptions = {}) {
|
|
27
|
-
if (
|
|
28
|
-
throw new
|
|
22
|
+
if (isEmpty(id)) {
|
|
23
|
+
throw new TSError('Asset delete requires a ID', {
|
|
29
24
|
statusCode: 400
|
|
30
25
|
});
|
|
31
26
|
}
|
|
@@ -37,36 +32,35 @@ class Assets extends client_1.default {
|
|
|
37
32
|
return this.get('/assets', options);
|
|
38
33
|
}
|
|
39
34
|
async getAsset(name, version = '', searchOptions = {}) {
|
|
40
|
-
if (!name || !
|
|
41
|
-
throw new
|
|
35
|
+
if (!name || !isString(name)) {
|
|
36
|
+
throw new TSError('Name is required, and must be of type string', {
|
|
42
37
|
statusCode: 400
|
|
43
38
|
});
|
|
44
39
|
}
|
|
45
|
-
if (version && !
|
|
46
|
-
throw new
|
|
40
|
+
if (version && !isString(version)) {
|
|
41
|
+
throw new TSError('Version if provided must be of type string', {
|
|
47
42
|
statusCode: 400
|
|
48
43
|
});
|
|
49
44
|
}
|
|
50
|
-
const assetUrl =
|
|
45
|
+
const assetUrl = path.join('/assets', name, version);
|
|
51
46
|
return this.get(assetUrl, searchOptions);
|
|
52
47
|
}
|
|
53
48
|
async txt(name = '', version = '', query = {}, searchOptions = {}) {
|
|
54
|
-
if (name && !
|
|
55
|
-
throw new
|
|
49
|
+
if (name && !isString(name)) {
|
|
50
|
+
throw new TSError('Name must be of type string', {
|
|
56
51
|
statusCode: 400
|
|
57
52
|
});
|
|
58
53
|
}
|
|
59
|
-
if (version && !
|
|
60
|
-
throw new
|
|
54
|
+
if (version && !isString(version)) {
|
|
55
|
+
throw new TSError('Version must be of type string', {
|
|
61
56
|
statusCode: 400
|
|
62
57
|
});
|
|
63
58
|
}
|
|
64
59
|
const options = Object.assign({ responseType: 'text' }, searchOptions, {
|
|
65
60
|
searchParams: query
|
|
66
61
|
});
|
|
67
|
-
const pathing =
|
|
62
|
+
const pathing = path.join('/txt/assets', name, version);
|
|
68
63
|
return super.get(pathing, options);
|
|
69
64
|
}
|
|
70
65
|
}
|
|
71
|
-
exports.default = Assets;
|
|
72
66
|
//# sourceMappingURL=assets.js.map
|
package/dist/src/assets.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assets.js","sourceRoot":"","sources":["../../src/assets.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"assets.js","sourceRoot":"","sources":["../../src/assets.ts"],"names":[],"mappings":"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"}
|
package/dist/src/client.d.ts
CHANGED
package/dist/src/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAE9E,MAAM,CAAC,OAAO,OAAO,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAM;IAC/B,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;gBAE7B,MAAM,GAAE,YAAiB;IAwB/B,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,CAAC,CAAC;IAInE,IAAI,CAAC,CAAC,GAAG,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC;IAIrF,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC;IAInF,MAAM,CAAC,CAAC,GAAG,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,CAAC,CAAC;YAI9D,YAAY;IAgD1B,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,GAAG,GAAG;IAItC,SAAS,CAAC,WAAW,CACjB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAC,SAAS,EAAE,OAAO,EAAE,cAAc,GAAG,aAAa,GACrF,cAAc;CAGpB"}
|
package/dist/src/client.js
CHANGED
|
@@ -1,29 +1,27 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
const got_1 = __importDefault(require("got"));
|
|
10
|
-
class Client {
|
|
1
|
+
import { isString, TSError, isPlainObject, isTest, trimStart, tryParseJSON, withoutNil, } from '@terascope/utils';
|
|
2
|
+
import { STATUS_CODES } from 'node:http';
|
|
3
|
+
import { URL } from 'node:url';
|
|
4
|
+
import got from 'got';
|
|
5
|
+
export default class Client {
|
|
6
|
+
_apiVersion;
|
|
7
|
+
_request;
|
|
8
|
+
_config;
|
|
11
9
|
constructor(config = {}) {
|
|
12
|
-
const configUrl = new
|
|
10
|
+
const configUrl = new URL(config.host || config.baseUrl || 'http://localhost:5678');
|
|
13
11
|
configUrl.pathname = '';
|
|
14
12
|
configUrl.hash = '';
|
|
15
13
|
const prefixUrl = configUrl.toString();
|
|
16
14
|
const { apiVersion = '/v1' } = config;
|
|
17
15
|
this._config = config;
|
|
18
16
|
this._apiVersion = apiVersion;
|
|
19
|
-
this._request =
|
|
17
|
+
this._request = got.extend({
|
|
20
18
|
prefixUrl,
|
|
21
19
|
headers: {
|
|
22
20
|
'User-Agent': 'Teraslice Client',
|
|
23
21
|
Accept: 'application/json',
|
|
24
22
|
},
|
|
25
23
|
retry: {
|
|
26
|
-
limit:
|
|
24
|
+
limit: isTest ? 0 : 3,
|
|
27
25
|
maxRetryAfter: 15000 // 15 seconds
|
|
28
26
|
},
|
|
29
27
|
timeout: config.timeout,
|
|
@@ -45,13 +43,13 @@ class Client {
|
|
|
45
43
|
async _makeRequest(method, endpoint, searchOptions, data) {
|
|
46
44
|
const errorMsg = validateRequestOptions(endpoint, searchOptions);
|
|
47
45
|
if (errorMsg) {
|
|
48
|
-
return Promise.reject(new
|
|
46
|
+
return Promise.reject(new TSError(errorMsg, {
|
|
49
47
|
statusCode: 422
|
|
50
48
|
}));
|
|
51
49
|
}
|
|
52
50
|
let options;
|
|
53
51
|
if (data != null && method.toLowerCase() !== 'get') {
|
|
54
|
-
options = getRequestOptionsWithData(data, searchOptions
|
|
52
|
+
options = getRequestOptionsWithData(data, searchOptions ?? {});
|
|
55
53
|
}
|
|
56
54
|
else {
|
|
57
55
|
options = { ...searchOptions };
|
|
@@ -63,8 +61,8 @@ class Client {
|
|
|
63
61
|
}
|
|
64
62
|
// got doesn't like `undefined` values in the search params
|
|
65
63
|
// so we need to remove them
|
|
66
|
-
if (
|
|
67
|
-
options.searchParams =
|
|
64
|
+
if (isPlainObject(options.searchParams)) {
|
|
65
|
+
options.searchParams = withoutNil(options.searchParams);
|
|
68
66
|
}
|
|
69
67
|
const newEndpoint = getAPIEndpoint(endpoint, this._apiVersion);
|
|
70
68
|
try {
|
|
@@ -75,20 +73,19 @@ class Client {
|
|
|
75
73
|
});
|
|
76
74
|
}
|
|
77
75
|
catch (err) {
|
|
78
|
-
if (err instanceof
|
|
76
|
+
if (err instanceof got.HTTPError) {
|
|
79
77
|
throw makeErrorFromResponse(err.response);
|
|
80
78
|
}
|
|
81
79
|
throw err;
|
|
82
80
|
}
|
|
83
81
|
}
|
|
84
82
|
parse(results) {
|
|
85
|
-
return
|
|
83
|
+
return tryParseJSON(results);
|
|
86
84
|
}
|
|
87
85
|
makeOptions(searchParams, options) {
|
|
88
86
|
return { ...options, searchParams };
|
|
89
87
|
}
|
|
90
88
|
}
|
|
91
|
-
exports.default = Client;
|
|
92
89
|
function getAPIEndpoint(uri, apiVersion) {
|
|
93
90
|
// remove start and ending slash
|
|
94
91
|
const endpoint = uri ? uri.trim().replace(/(^\/)|(\/$)/, '') : '';
|
|
@@ -98,14 +95,14 @@ function getAPIEndpoint(uri, apiVersion) {
|
|
|
98
95
|
const isTxt = txtIndex < 2 && txtIndex > -1;
|
|
99
96
|
if (isTxt)
|
|
100
97
|
return endpoint;
|
|
101
|
-
const versionPrefix =
|
|
98
|
+
const versionPrefix = trimStart(apiVersion, '/');
|
|
102
99
|
if (endpoint.startsWith(versionPrefix))
|
|
103
100
|
return endpoint;
|
|
104
101
|
return `${versionPrefix}/${endpoint}`;
|
|
105
102
|
}
|
|
106
103
|
function getErrorFromResponse(response) {
|
|
107
104
|
let { body } = response;
|
|
108
|
-
if (body &&
|
|
105
|
+
if (body && isString(body)) {
|
|
109
106
|
try {
|
|
110
107
|
body = JSON.parse(body);
|
|
111
108
|
}
|
|
@@ -113,8 +110,8 @@ function getErrorFromResponse(response) {
|
|
|
113
110
|
return { message: body };
|
|
114
111
|
}
|
|
115
112
|
}
|
|
116
|
-
if (body &&
|
|
117
|
-
if (
|
|
113
|
+
if (body && isPlainObject(body)) {
|
|
114
|
+
if (isString(body.error)) {
|
|
118
115
|
return {
|
|
119
116
|
message: body.error
|
|
120
117
|
};
|
|
@@ -129,7 +126,7 @@ function getErrorFromResponse(response) {
|
|
|
129
126
|
function makeErrorFromResponse(response) {
|
|
130
127
|
const { statusCode } = response;
|
|
131
128
|
const parsedError = getErrorFromResponse(response);
|
|
132
|
-
const { message =
|
|
129
|
+
const { message = STATUS_CODES[statusCode], code = statusCode } = parsedError;
|
|
133
130
|
const error = new Error(message);
|
|
134
131
|
error.error = code; // for legacy support
|
|
135
132
|
error.code = code;
|
|
@@ -141,13 +138,13 @@ function validateRequestOptions(endpoint, _options) {
|
|
|
141
138
|
if (!endpoint) {
|
|
142
139
|
return 'endpoint must not be empty';
|
|
143
140
|
}
|
|
144
|
-
if (!
|
|
141
|
+
if (!isString(endpoint)) {
|
|
145
142
|
return 'endpoint must be a string';
|
|
146
143
|
}
|
|
147
144
|
return null;
|
|
148
145
|
}
|
|
149
146
|
function getRequestOptionsWithData(data, options) {
|
|
150
|
-
if (
|
|
147
|
+
if (isPlainObject(data) || Array.isArray(data)) {
|
|
151
148
|
return { ...options, json: data };
|
|
152
149
|
}
|
|
153
150
|
return { ...options, body: data };
|
package/dist/src/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/src/cluster.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cluster.d.ts","sourceRoot":"","sources":["../../src/cluster.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAG7C,OAAO,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"cluster.d.ts","sourceRoot":"","sources":["../../src/cluster.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAG7C,OAAO,MAAM,MAAM,aAAa,CAAC;AAOjC,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,MAAM;gBAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAMjC,IAAI,IAAI,OAAO,CAAC,SAAS,CAAC,eAAe,CAAC;IAI1C,KAAK,IAAI,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC;IAIxC,KAAK,IAAI,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC;IAIxC,OAAO,IAAI,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC;IAI3C,WAAW,IAAI,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC;IAI/C,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAS3C"}
|
package/dist/src/cluster.js
CHANGED
|
@@ -1,21 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const utils_1 = require("@terascope/utils");
|
|
7
|
-
const util_1 = __importDefault(require("util"));
|
|
8
|
-
const auto_bind_1 = __importDefault(require("auto-bind"));
|
|
9
|
-
const client_1 = __importDefault(require("./client"));
|
|
1
|
+
import { startsWith } from '@terascope/utils';
|
|
2
|
+
import util from 'node:util';
|
|
3
|
+
import autoBind from 'auto-bind';
|
|
4
|
+
import Client from './client.js';
|
|
10
5
|
function _deprecateSlicerName(fn) {
|
|
11
6
|
const msg = 'api endpoints with /slicers are being deprecated in favor of the semantically correct term of /controllers';
|
|
12
|
-
return
|
|
7
|
+
return util.deprecate(fn, msg);
|
|
13
8
|
}
|
|
14
|
-
class Cluster extends
|
|
9
|
+
export default class Cluster extends Client {
|
|
15
10
|
constructor(config) {
|
|
16
11
|
super(config);
|
|
17
12
|
this.slicers = _deprecateSlicerName(this.slicers);
|
|
18
|
-
(
|
|
13
|
+
autoBind(this);
|
|
19
14
|
}
|
|
20
15
|
async info() {
|
|
21
16
|
return this.get('/');
|
|
@@ -34,7 +29,7 @@ class Cluster extends client_1.default {
|
|
|
34
29
|
}
|
|
35
30
|
async txt(type) {
|
|
36
31
|
const validTypes = ['assets', 'slicers', 'ex', 'jobs', 'nodes', 'workers'];
|
|
37
|
-
const isValid = validTypes.some((validType) =>
|
|
32
|
+
const isValid = validTypes.some((validType) => startsWith(type, validType));
|
|
38
33
|
if (!isValid) {
|
|
39
34
|
const error = new Error(`"${type}" is not a valid type. Must be one of ${JSON.stringify(validTypes)}`);
|
|
40
35
|
return Promise.reject(error);
|
|
@@ -42,5 +37,4 @@ class Cluster extends client_1.default {
|
|
|
42
37
|
return this.get(`/txt/${type}`, { responseType: 'text' });
|
|
43
38
|
}
|
|
44
39
|
}
|
|
45
|
-
exports.default = Cluster;
|
|
46
40
|
//# sourceMappingURL=cluster.js.map
|
package/dist/src/cluster.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cluster.js","sourceRoot":"","sources":["../../src/cluster.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cluster.js","sourceRoot":"","sources":["../../src/cluster.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,QAAQ,MAAM,WAAW,CAAC;AACjC,OAAO,MAAM,MAAM,aAAa,CAAC;AAEjC,SAAS,oBAAoB,CAAC,EAA0C;IACpE,MAAM,GAAG,GAAG,4GAA4G,CAAC;IACzH,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,MAAM;IACvC,YAAY,MAA2B;QACnC,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,IAAI,CAAC,OAAO,GAAG,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAClD,QAAQ,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,IAAI;QACN,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,KAAK;QACP,OAAO,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,KAAK;QACP,OAAO,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,OAAO;QACT,OAAO,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,WAAW;QACb,OAAO,IAAI,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,IAAY;QAClB,MAAM,UAAU,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;QAC3E,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;QAC5E,IAAI,CAAC,OAAO,EAAE;YACV,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,IAAI,yCAAyC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YACvG,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SAChC;QACD,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC;IAC9D,CAAC;CACJ"}
|
package/dist/src/ex.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Teraslice } from '@terascope/types';
|
|
2
|
-
import Client from './client';
|
|
3
|
-
import { ClientConfig, SearchOptions, RequestOptions } from './interfaces';
|
|
2
|
+
import Client from './client.js';
|
|
3
|
+
import { ClientConfig, SearchOptions, RequestOptions } from './interfaces.js';
|
|
4
4
|
export default class Ex extends Client {
|
|
5
5
|
private readonly _exId;
|
|
6
6
|
constructor(config: ClientConfig, exId: string);
|
|
@@ -12,7 +12,7 @@ export default class Ex extends Client {
|
|
|
12
12
|
status(requestOptions?: RequestOptions): Promise<Teraslice.ExecutionStatus>;
|
|
13
13
|
slicer(requestOptions?: RequestOptions): Promise<Teraslice.ExecutionList>;
|
|
14
14
|
controller(requestOptions?: RequestOptions): Promise<Teraslice.ExecutionList>;
|
|
15
|
-
config(requestOptions?: RequestOptions): Promise<Teraslice.
|
|
15
|
+
config(requestOptions?: RequestOptions): Promise<Teraslice.ExecutionConfig>;
|
|
16
16
|
workers(requestOptions?: RequestOptions): Promise<Teraslice.WorkerNode[]>;
|
|
17
17
|
errors(options?: Teraslice.SearchQuery): Promise<Teraslice.ErrorRecord[]>;
|
|
18
18
|
changeWorkers(action: Teraslice.ChangeWorkerQueryParams, workerNum: number, requestOptions?: RequestOptions): Promise<Teraslice.ChangeWorkerResponse | string>;
|
package/dist/src/ex.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ex.d.ts","sourceRoot":"","sources":["../../src/ex.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,OAAO,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"ex.d.ts","sourceRoot":"","sources":["../../src/ex.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAE9E,MAAM,CAAC,OAAO,OAAO,EAAG,SAAQ,MAAM;IAClC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;gBAEnB,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM;IAS9C,EAAE,IAAI,MAAM;IAEN,IAAI,CACN,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,EAC3B,aAAa,GAAE,aAAkB,GAClC,OAAO,CAAC,SAAS,CAAC,kBAAkB,CAAC;IAKlC,KAAK,CACP,KAAK,CAAC,EAAE,SAAS,CAAC,WAAW,EAC7B,aAAa,GAAE,aAAkB,GAClC,OAAO,CAAC,SAAS,CAAC,iBAAiB,CAAC;IAKjC,MAAM,CACR,KAAK,CAAC,EAAE,SAAS,CAAC,WAAW,EAC7B,aAAa,GAAE,aAAkB,GAClC,OAAO,CAAC,SAAS,CAAC,iBAAiB,CAAC;IAKjC,OAAO,CACT,KAAK,GAAE,SAAS,CAAC,YAAiB,EAClC,aAAa,GAAE,aAAkB,GAClC,OAAO,CAAC,EAAE,CAAC;IAaR,MAAM,CAAC,cAAc,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC,eAAe,CAAC;IAK3E,MAAM,CAAC,cAAc,GAAE,cAAmB,GAAG,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC;IAI7E,UAAU,CAAC,cAAc,GAAE,cAAmB,GAAG,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC;IAIjF,MAAM,CAAC,cAAc,GAAE,cAAmB,GAAG,OAAO,CAAC,SAAS,CAAC,eAAe,CAAC;IAI/E,OAAO,CAAC,cAAc,GAAE,cAAmB,GAAG,OAAO,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;IAK7E,MAAM,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;IAMzE,aAAa,CACf,MAAM,EAAE,SAAS,CAAC,uBAAuB,EACzC,SAAS,EAAE,MAAM,EACjB,cAAc,GAAE,cAAmB,GACpC,OAAO,CAAC,SAAS,CAAC,oBAAoB,GAAG,MAAM,CAAC;IA6B7C,aAAa,CACf,MAAM,EAAE,SAAS,CAAC,eAAe,EACjC,UAAU,SAAO,EACjB,SAAS,SAAI,EACb,cAAc,GAAE,cAAmB,GACpC,OAAO,CAAC,SAAS,CAAC,eAAe,CAAC;CAuDxC"}
|
package/dist/src/ex.js
CHANGED
|
@@ -1,17 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const types_1 = require("@terascope/types");
|
|
8
|
-
const auto_bind_1 = __importDefault(require("auto-bind"));
|
|
9
|
-
const client_1 = __importDefault(require("./client"));
|
|
10
|
-
class Ex extends client_1.default {
|
|
1
|
+
import { isString, TSError, toString, pDelay, toHumanTime } from '@terascope/utils';
|
|
2
|
+
import { Teraslice } from '@terascope/types';
|
|
3
|
+
import autoBind from 'auto-bind';
|
|
4
|
+
import Client from './client.js';
|
|
5
|
+
export default class Ex extends Client {
|
|
6
|
+
_exId;
|
|
11
7
|
constructor(config, exId) {
|
|
12
8
|
validateExId(exId);
|
|
13
9
|
super(config);
|
|
14
|
-
(
|
|
10
|
+
autoBind(this);
|
|
15
11
|
this._exId = exId;
|
|
16
12
|
}
|
|
17
13
|
id() { return this._exId; }
|
|
@@ -61,12 +57,12 @@ class Ex extends client_1.default {
|
|
|
61
57
|
}
|
|
62
58
|
async changeWorkers(action, workerNum, requestOptions = {}) {
|
|
63
59
|
if (action == null || workerNum == null) {
|
|
64
|
-
throw new
|
|
60
|
+
throw new TSError('Change workers requires action and count', {
|
|
65
61
|
statusCode: 400
|
|
66
62
|
});
|
|
67
63
|
}
|
|
68
64
|
if (!['add', 'remove', 'total'].includes(action)) {
|
|
69
|
-
throw new
|
|
65
|
+
throw new TSError('Change workers requires action to be one of add, remove, or total', {
|
|
70
66
|
statusCode: 400
|
|
71
67
|
});
|
|
72
68
|
}
|
|
@@ -87,11 +83,11 @@ class Ex extends client_1.default {
|
|
|
87
83
|
}
|
|
88
84
|
async waitForStatus(target, intervalMs = 1000, timeoutMs = 0, requestOptions = {}) {
|
|
89
85
|
const terminal = {
|
|
90
|
-
[
|
|
91
|
-
[
|
|
92
|
-
[
|
|
93
|
-
[
|
|
94
|
-
[
|
|
86
|
+
[Teraslice.ExecutionStatusEnum.terminated]: true,
|
|
87
|
+
[Teraslice.ExecutionStatusEnum.failed]: true,
|
|
88
|
+
[Teraslice.ExecutionStatusEnum.rejected]: true,
|
|
89
|
+
[Teraslice.ExecutionStatusEnum.completed]: true,
|
|
90
|
+
[Teraslice.ExecutionStatusEnum.stopped]: true,
|
|
95
91
|
};
|
|
96
92
|
const startTime = Date.now();
|
|
97
93
|
const options = Object.assign({}, {
|
|
@@ -104,8 +100,8 @@ class Ex extends client_1.default {
|
|
|
104
100
|
result = await this.status(options);
|
|
105
101
|
}
|
|
106
102
|
catch (err) {
|
|
107
|
-
if (/(timeout|timedout)/i.test(
|
|
108
|
-
await
|
|
103
|
+
if (/(timeout|timedout)/i.test(toString(err))) {
|
|
104
|
+
await pDelay(intervalMs);
|
|
109
105
|
return checkStatus();
|
|
110
106
|
}
|
|
111
107
|
throw err;
|
|
@@ -117,27 +113,26 @@ class Ex extends client_1.default {
|
|
|
117
113
|
// watching for these then we need to stop waiting as the job
|
|
118
114
|
// status won't change further.
|
|
119
115
|
if (terminal[result]) {
|
|
120
|
-
throw new
|
|
116
|
+
throw new TSError(`Execution cannot reach the target status, "${target}", because it is in the terminal state, "${result}"`, { context: { lastStatus: result } });
|
|
121
117
|
}
|
|
122
118
|
const elapsed = Date.now() - startTime;
|
|
123
119
|
if (timeoutMs > 0 && elapsed >= timeoutMs) {
|
|
124
|
-
throw new
|
|
120
|
+
throw new TSError(`Execution status failed to change from status "${result}" to "${target}" within ${toHumanTime(timeoutMs)}`, { context: { lastStatus: result } });
|
|
125
121
|
}
|
|
126
|
-
await
|
|
122
|
+
await pDelay(intervalMs);
|
|
127
123
|
return checkStatus();
|
|
128
124
|
};
|
|
129
125
|
return checkStatus();
|
|
130
126
|
}
|
|
131
127
|
}
|
|
132
|
-
exports.default = Ex;
|
|
133
128
|
function validateExId(exId) {
|
|
134
129
|
if (!exId) {
|
|
135
|
-
throw new
|
|
130
|
+
throw new TSError('Ex requires exId', {
|
|
136
131
|
statusCode: 400
|
|
137
132
|
});
|
|
138
133
|
}
|
|
139
|
-
if (!
|
|
140
|
-
throw new
|
|
134
|
+
if (!isString(exId)) {
|
|
135
|
+
throw new TSError('Ex requires exId to be a string', {
|
|
141
136
|
statusCode: 400
|
|
142
137
|
});
|
|
143
138
|
}
|
package/dist/src/ex.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ex.js","sourceRoot":"","sources":["../../src/ex.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ex.js","sourceRoot":"","sources":["../../src/ex.ts"],"names":[],"mappings":"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"}
|
package/dist/src/executions.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Teraslice } from '@terascope/types';
|
|
2
|
-
import Client from './client';
|
|
3
|
-
import Ex from './ex';
|
|
2
|
+
import Client from './client.js';
|
|
3
|
+
import Ex from './ex.js';
|
|
4
4
|
import { ClientConfig } from './interfaces';
|
|
5
5
|
type ListOptions = undefined | string | Teraslice.SearchQuery;
|
|
6
6
|
export default class Executions extends Client {
|
|
@@ -8,8 +8,8 @@ export default class Executions extends Client {
|
|
|
8
8
|
/**
|
|
9
9
|
* Similar to jobs.submit but returns an instance of Ex not a Job
|
|
10
10
|
*/
|
|
11
|
-
submit(jobSpec: Teraslice.
|
|
12
|
-
list(options?: ListOptions): Promise<Teraslice.
|
|
11
|
+
submit(jobSpec: Teraslice.JobConfigParams, shouldNotStart?: boolean): Promise<Ex>;
|
|
12
|
+
list(options?: ListOptions): Promise<Teraslice.ExecutionConfig[]>;
|
|
13
13
|
errors(exId?: string | Teraslice.SearchQuery, opts?: Teraslice.SearchQuery): Promise<Teraslice.ErrorRecord[]>;
|
|
14
14
|
/**
|
|
15
15
|
* Wraps the execution id with convenience functions for accessing
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executions.d.ts","sourceRoot":"","sources":["../../src/executions.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,OAAO,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"executions.d.ts","sourceRoot":"","sources":["../../src/executions.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,MAAM,SAAS,CAAC;AAEzB,OAAO,EAAE,YAAY,EAAiB,MAAM,cAAc,CAAC;AAE3D,KAAK,WAAW,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAAC,WAAW,CAAC;AAE9D,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,MAAM;gBAC9B,MAAM,EAAE,YAAY;IAKhC;;MAEE;IACI,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,eAAe,EAAE,cAAc,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,EAAE,CAAC;IAkBjF,IAAI,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC;IAKjE,MAAM,CACR,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC,WAAW,EACrC,IAAI,CAAC,EAAE,SAAS,CAAC,WAAW,GAC7B,OAAO,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;IAiBnC;;;MAGE;IACF,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,EAAE;CAGzB"}
|