teraslice-client-js 1.0.1 → 1.2.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.
- package/dist/src/assets.d.ts +5 -5
- package/dist/src/assets.d.ts.map +1 -1
- package/dist/src/assets.js.map +1 -1
- package/dist/src/client.d.ts +4 -4
- package/dist/src/client.d.ts.map +1 -1
- package/dist/src/client.js +5 -3
- package/dist/src/client.js.map +1 -1
- package/dist/src/ex.d.ts +5 -5
- package/dist/src/ex.d.ts.map +1 -1
- package/dist/src/ex.js +6 -2
- package/dist/src/ex.js.map +1 -1
- package/dist/src/executions.d.ts.map +1 -1
- package/dist/src/executions.js.map +1 -1
- package/dist/src/interfaces.d.ts +3 -4
- package/dist/src/interfaces.d.ts.map +1 -1
- package/dist/src/job.d.ts +8 -7
- package/dist/src/job.d.ts.map +1 -1
- package/dist/src/job.js +9 -2
- package/dist/src/job.js.map +1 -1
- package/dist/src/jobs.d.ts +2 -2
- package/dist/src/jobs.d.ts.map +1 -1
- package/dist/src/jobs.js +2 -11
- package/dist/src/jobs.js.map +1 -1
- package/dist/test/assets-spec.js +1 -1
- package/dist/test/assets-spec.js.map +1 -1
- package/dist/test/client-spec.js +3 -6
- package/dist/test/client-spec.js.map +1 -1
- package/dist/test/executions-spec.js +1 -1
- package/dist/test/executions-spec.js.map +1 -1
- package/dist/test/job-spec.js +15 -2
- package/dist/test/job-spec.js.map +1 -1
- package/dist/test/jobs-spec.js +2 -15
- package/dist/test/jobs-spec.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +5 -5
- package/src/assets.ts +5 -5
- package/src/client.ts +13 -11
- package/src/ex.ts +12 -8
- package/src/executions.ts +4 -4
- package/src/interfaces.ts +2 -5
- package/src/job.ts +17 -13
- package/src/jobs.ts +4 -12
- package/test/assets-spec.ts +1 -1
- package/test/client-spec.ts +3 -9
- package/test/executions-spec.ts +1 -1
- package/test/job-spec.ts +17 -2
- package/test/jobs-spec.ts +2 -16
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "teraslice-client-js",
|
|
3
3
|
"displayName": "Teraslice Client (JavaScript)",
|
|
4
|
-
"version": "1.0
|
|
4
|
+
"version": "1.2.0",
|
|
5
5
|
"description": "A Node.js client for teraslice jobs, assets, and cluster references.",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"elasticsearch",
|
|
@@ -32,10 +32,10 @@
|
|
|
32
32
|
"test:watch": "ts-scripts test --watch . --"
|
|
33
33
|
},
|
|
34
34
|
"dependencies": {
|
|
35
|
-
"@terascope/types": "^1.0
|
|
36
|
-
"@terascope/utils": "^1.0
|
|
37
|
-
"auto-bind": "^
|
|
38
|
-
"got": "^
|
|
35
|
+
"@terascope/types": "^1.1.0",
|
|
36
|
+
"@terascope/utils": "^1.2.0",
|
|
37
|
+
"auto-bind": "^5.0.1",
|
|
38
|
+
"got": "^13.0.0"
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
41
41
|
"nock": "^13.5.5"
|
package/src/assets.ts
CHANGED
|
@@ -3,7 +3,7 @@ import { Teraslice } from '@terascope/types';
|
|
|
3
3
|
import path from 'node:path';
|
|
4
4
|
import autoBind from 'auto-bind';
|
|
5
5
|
import Client from './client.js';
|
|
6
|
-
import { PostData,
|
|
6
|
+
import { PostData, RequestOptions, ClientConfig } from './interfaces.js';
|
|
7
7
|
|
|
8
8
|
export default class Assets extends Client {
|
|
9
9
|
constructor(config: ClientConfig) {
|
|
@@ -30,7 +30,7 @@ export default class Assets extends Client {
|
|
|
30
30
|
|
|
31
31
|
async remove(
|
|
32
32
|
id: string,
|
|
33
|
-
searchOptions:
|
|
33
|
+
searchOptions: RequestOptions = {}
|
|
34
34
|
): Promise<Teraslice.AssetIDResponse> {
|
|
35
35
|
if (isEmpty(id)) {
|
|
36
36
|
throw new TSError('Asset delete requires a ID', {
|
|
@@ -44,7 +44,7 @@ export default class Assets extends Client {
|
|
|
44
44
|
|
|
45
45
|
async list(
|
|
46
46
|
query: Teraslice.SearchQuery = {},
|
|
47
|
-
searchOptions:
|
|
47
|
+
searchOptions: RequestOptions = {}
|
|
48
48
|
): Promise<Teraslice.AssetRecord[]> {
|
|
49
49
|
const options = { ...searchOptions, searchParams: query };
|
|
50
50
|
return this.get('/assets', options);
|
|
@@ -53,7 +53,7 @@ export default class Assets extends Client {
|
|
|
53
53
|
async getAsset(
|
|
54
54
|
name: string,
|
|
55
55
|
version = '',
|
|
56
|
-
searchOptions:
|
|
56
|
+
searchOptions: RequestOptions = {}
|
|
57
57
|
): Promise<Teraslice.AssetRecord[]> {
|
|
58
58
|
if (!name || !isString(name)) {
|
|
59
59
|
throw new TSError('Name is required, and must be of type string', {
|
|
@@ -75,7 +75,7 @@ export default class Assets extends Client {
|
|
|
75
75
|
name = '',
|
|
76
76
|
version = '',
|
|
77
77
|
query: Teraslice.TxtSearchParams = {},
|
|
78
|
-
searchOptions:
|
|
78
|
+
searchOptions: RequestOptions = {}
|
|
79
79
|
): Promise<string> {
|
|
80
80
|
if (name && !isString(name)) {
|
|
81
81
|
throw new TSError('Name must be of type string', {
|
package/src/client.ts
CHANGED
|
@@ -5,8 +5,8 @@ import {
|
|
|
5
5
|
} from '@terascope/utils';
|
|
6
6
|
import { STATUS_CODES } from 'node:http';
|
|
7
7
|
import { URL } from 'node:url';
|
|
8
|
-
import got, { Got } from 'got';
|
|
9
|
-
import { ClientConfig,
|
|
8
|
+
import got, { type Got, HTTPError } from 'got';
|
|
9
|
+
import { ClientConfig, RequestOptions } from './interfaces.js';
|
|
10
10
|
|
|
11
11
|
export default class Client {
|
|
12
12
|
private readonly _apiVersion: string;
|
|
@@ -32,12 +32,14 @@ export default class Client {
|
|
|
32
32
|
limit: isTest ? 0 : 3,
|
|
33
33
|
maxRetryAfter: 15000 // 15 seconds
|
|
34
34
|
},
|
|
35
|
-
timeout:
|
|
35
|
+
timeout: {
|
|
36
|
+
request: config.timeout
|
|
37
|
+
},
|
|
36
38
|
responseType: 'json'
|
|
37
39
|
});
|
|
38
40
|
}
|
|
39
41
|
|
|
40
|
-
async get<T = any>(endpoint: string, options?:
|
|
42
|
+
async get<T = any>(endpoint: string, options?: RequestOptions): Promise<T> {
|
|
41
43
|
return this._makeRequest<T>('get', endpoint, options);
|
|
42
44
|
}
|
|
43
45
|
|
|
@@ -49,14 +51,14 @@ export default class Client {
|
|
|
49
51
|
return this._makeRequest<T>('put', endpoint, options, data);
|
|
50
52
|
}
|
|
51
53
|
|
|
52
|
-
async delete<T = any>(endpoint: string, options?:
|
|
54
|
+
async delete<T = any>(endpoint: string, options?: RequestOptions): Promise<T> {
|
|
53
55
|
return this._makeRequest<T>('delete', endpoint, options);
|
|
54
56
|
}
|
|
55
57
|
|
|
56
58
|
private async _makeRequest<T = any>(
|
|
57
|
-
method: 'get'|'post'|'put'|'delete',
|
|
59
|
+
method: 'get' | 'post' | 'put' | 'delete',
|
|
58
60
|
endpoint: string,
|
|
59
|
-
searchOptions?: RequestOptions
|
|
61
|
+
searchOptions?: RequestOptions,
|
|
60
62
|
data?: any
|
|
61
63
|
): Promise<T> {
|
|
62
64
|
const errorMsg = validateRequestOptions(endpoint, searchOptions);
|
|
@@ -93,7 +95,7 @@ export default class Client {
|
|
|
93
95
|
...options,
|
|
94
96
|
} as any) as any as T;
|
|
95
97
|
} catch (err) {
|
|
96
|
-
if (err instanceof
|
|
98
|
+
if (err instanceof HTTPError) {
|
|
97
99
|
throw makeErrorFromResponse(err.response);
|
|
98
100
|
}
|
|
99
101
|
|
|
@@ -106,7 +108,7 @@ export default class Client {
|
|
|
106
108
|
}
|
|
107
109
|
|
|
108
110
|
protected makeOptions(
|
|
109
|
-
searchParams: Record<string, any
|
|
111
|
+
searchParams: Record<string, any> | undefined, options: RequestOptions
|
|
110
112
|
): RequestOptions {
|
|
111
113
|
return { ...options, searchParams };
|
|
112
114
|
}
|
|
@@ -175,7 +177,7 @@ function makeErrorFromResponse(response: any): OldErrorOutput {
|
|
|
175
177
|
}
|
|
176
178
|
|
|
177
179
|
// TODO: do more validations
|
|
178
|
-
function validateRequestOptions(endpoint: string, _options?: RequestOptions
|
|
180
|
+
function validateRequestOptions(endpoint: string, _options?: RequestOptions) {
|
|
179
181
|
if (!endpoint) {
|
|
180
182
|
return 'endpoint must not be empty';
|
|
181
183
|
}
|
|
@@ -186,7 +188,7 @@ function validateRequestOptions(endpoint: string, _options?: RequestOptions|Sear
|
|
|
186
188
|
}
|
|
187
189
|
|
|
188
190
|
function getRequestOptionsWithData(
|
|
189
|
-
data: any, options: RequestOptions
|
|
191
|
+
data: any, options: RequestOptions
|
|
190
192
|
): RequestOptions {
|
|
191
193
|
if (isPlainObject(data) || Array.isArray(data)) {
|
|
192
194
|
return { ...options, json: data };
|
package/src/ex.ts
CHANGED
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
import { Teraslice } from '@terascope/types';
|
|
6
6
|
import autoBind from 'auto-bind';
|
|
7
7
|
import Client from './client.js';
|
|
8
|
-
import { ClientConfig,
|
|
8
|
+
import { ClientConfig, RequestOptions } from './interfaces.js';
|
|
9
9
|
|
|
10
10
|
export default class Ex extends Client {
|
|
11
11
|
private readonly _exId: string;
|
|
@@ -19,11 +19,13 @@ export default class Ex extends Client {
|
|
|
19
19
|
this._exId = exId;
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
-
id(): string {
|
|
22
|
+
id(): string {
|
|
23
|
+
return this._exId;
|
|
24
|
+
}
|
|
23
25
|
|
|
24
26
|
async stop(
|
|
25
27
|
query?: Teraslice.StopQuery,
|
|
26
|
-
searchOptions:
|
|
28
|
+
searchOptions: RequestOptions = {}
|
|
27
29
|
): Promise<Teraslice.ApiStoppedResponse> {
|
|
28
30
|
const options = this.makeOptions(query, searchOptions);
|
|
29
31
|
return this.post(`/ex/${this._exId}/_stop`, null, options);
|
|
@@ -31,7 +33,7 @@ export default class Ex extends Client {
|
|
|
31
33
|
|
|
32
34
|
async pause(
|
|
33
35
|
query?: Teraslice.SearchQuery,
|
|
34
|
-
searchOptions:
|
|
36
|
+
searchOptions: RequestOptions = {}
|
|
35
37
|
): Promise<Teraslice.ApiPausedResponse> {
|
|
36
38
|
const options = this.makeOptions(query, searchOptions);
|
|
37
39
|
return this.post(`/ex/${this._exId}/_pause`, null, options);
|
|
@@ -39,7 +41,7 @@ export default class Ex extends Client {
|
|
|
39
41
|
|
|
40
42
|
async resume(
|
|
41
43
|
query?: Teraslice.SearchQuery,
|
|
42
|
-
searchOptions:
|
|
44
|
+
searchOptions: RequestOptions = {}
|
|
43
45
|
): Promise<Teraslice.ApiResumeResponse> {
|
|
44
46
|
const options = this.makeOptions(query, searchOptions);
|
|
45
47
|
return this.post(`/ex/${this._exId}/_resume`, null, options);
|
|
@@ -47,7 +49,7 @@ export default class Ex extends Client {
|
|
|
47
49
|
|
|
48
50
|
async recover(
|
|
49
51
|
query: Teraslice.RecoverQuery = {},
|
|
50
|
-
searchOptions:
|
|
52
|
+
searchOptions: RequestOptions = {}
|
|
51
53
|
): Promise<Ex> {
|
|
52
54
|
const options = this.makeOptions(query, searchOptions);
|
|
53
55
|
const result: Teraslice.ApiJobCreateResponse = await this.post(`/ex/${this._exId}/_recover`, null, options);
|
|
@@ -86,7 +88,7 @@ export default class Ex extends Client {
|
|
|
86
88
|
async errors(options?: Teraslice.SearchQuery): Promise<Teraslice.ErrorRecord[]> {
|
|
87
89
|
return this.get(`/ex/${this._exId}/errors`, {
|
|
88
90
|
searchParams: options,
|
|
89
|
-
}
|
|
91
|
+
});
|
|
90
92
|
}
|
|
91
93
|
|
|
92
94
|
async changeWorkers(
|
|
@@ -139,7 +141,9 @@ export default class Ex extends Client {
|
|
|
139
141
|
const startTime = Date.now();
|
|
140
142
|
const options = Object.assign({}, {
|
|
141
143
|
responseType: 'json',
|
|
142
|
-
timeout:
|
|
144
|
+
timeout: {
|
|
145
|
+
request: intervalMs < 1000 ? 1000 : intervalMs
|
|
146
|
+
},
|
|
143
147
|
}, requestOptions);
|
|
144
148
|
|
|
145
149
|
const checkStatus = async (): Promise<Teraslice.ExecutionStatus> => {
|
package/src/executions.ts
CHANGED
|
@@ -6,7 +6,7 @@ import autoBind from 'auto-bind';
|
|
|
6
6
|
import Client from './client.js';
|
|
7
7
|
import Ex from './ex.js';
|
|
8
8
|
|
|
9
|
-
import { ClientConfig,
|
|
9
|
+
import { ClientConfig, RequestOptions } from './interfaces';
|
|
10
10
|
|
|
11
11
|
type ListOptions = undefined | string | Teraslice.SearchQuery;
|
|
12
12
|
|
|
@@ -39,7 +39,7 @@ export default class Executions extends Client {
|
|
|
39
39
|
|
|
40
40
|
async list(options?: ListOptions): Promise<Teraslice.ExecutionConfig[]> {
|
|
41
41
|
const query = _parseListOptions(options);
|
|
42
|
-
return this.get('/ex', { searchParams: query } as
|
|
42
|
+
return this.get('/ex', { searchParams: query } as RequestOptions);
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
async errors(
|
|
@@ -52,14 +52,14 @@ export default class Executions extends Client {
|
|
|
52
52
|
options.searchParams = opts;
|
|
53
53
|
}
|
|
54
54
|
|
|
55
|
-
return this.get(`/ex/${exId}/errors`, options as
|
|
55
|
+
return this.get(`/ex/${exId}/errors`, options as RequestOptions);
|
|
56
56
|
}
|
|
57
57
|
|
|
58
58
|
if (isPlainObject(exId)) {
|
|
59
59
|
options.searchParams = exId;
|
|
60
60
|
}
|
|
61
61
|
|
|
62
|
-
return this.get('/ex/errors', options as
|
|
62
|
+
return this.get('/ex/errors', options as RequestOptions);
|
|
63
63
|
}
|
|
64
64
|
|
|
65
65
|
/**
|
package/src/interfaces.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import * as got from 'got';
|
|
1
|
+
import { Options } from 'got';
|
|
3
2
|
|
|
4
3
|
export interface ClientConfig {
|
|
5
4
|
host?: string;
|
|
@@ -8,8 +7,6 @@ export interface ClientConfig {
|
|
|
8
7
|
timeout?: number;
|
|
9
8
|
}
|
|
10
9
|
|
|
11
|
-
export type RequestOptions =
|
|
12
|
-
|
|
13
|
-
export type SearchOptions = Omit<got.Options, 'searchParams'>;
|
|
10
|
+
export type RequestOptions = Partial<Options>;
|
|
14
11
|
|
|
15
12
|
export type PostData = string | NodeJS.ReadableStream | Buffer;
|
package/src/job.ts
CHANGED
|
@@ -5,11 +5,7 @@ import {
|
|
|
5
5
|
TSError, toHumanTime,
|
|
6
6
|
} from '@terascope/utils';
|
|
7
7
|
import { Teraslice } from '@terascope/types';
|
|
8
|
-
import {
|
|
9
|
-
ClientConfig,
|
|
10
|
-
SearchOptions,
|
|
11
|
-
RequestOptions
|
|
12
|
-
} from './interfaces.js';
|
|
8
|
+
import { ClientConfig, RequestOptions } from './interfaces.js';
|
|
13
9
|
import Client from './client.js';
|
|
14
10
|
|
|
15
11
|
/*
|
|
@@ -39,7 +35,9 @@ export default class Job extends Client {
|
|
|
39
35
|
autoBind(this);
|
|
40
36
|
}
|
|
41
37
|
|
|
42
|
-
id(): string {
|
|
38
|
+
id(): string {
|
|
39
|
+
return this._jobId;
|
|
40
|
+
}
|
|
43
41
|
|
|
44
42
|
async slicer(requestOptions: RequestOptions = {}): Promise<Teraslice.ExecutionList> {
|
|
45
43
|
return this.get(`/jobs/${this._jobId}/slicer`, requestOptions);
|
|
@@ -51,7 +49,7 @@ export default class Job extends Client {
|
|
|
51
49
|
|
|
52
50
|
async start(
|
|
53
51
|
query?: Teraslice.SearchQuery,
|
|
54
|
-
searchOptions:
|
|
52
|
+
searchOptions: RequestOptions = {}
|
|
55
53
|
): Promise<Teraslice.ApiJobCreateResponse> {
|
|
56
54
|
const options = this.makeOptions(query, searchOptions);
|
|
57
55
|
return this.post(`/jobs/${this._jobId}/_start`, null, options);
|
|
@@ -59,7 +57,7 @@ export default class Job extends Client {
|
|
|
59
57
|
|
|
60
58
|
async stop(
|
|
61
59
|
query?: Teraslice.StopQuery,
|
|
62
|
-
searchOptions:
|
|
60
|
+
searchOptions: RequestOptions = {}
|
|
63
61
|
): Promise<Teraslice.ApiStoppedResponse> {
|
|
64
62
|
const options = this.makeOptions(query, searchOptions);
|
|
65
63
|
return this.post(`/jobs/${this._jobId}/_stop`, null, options);
|
|
@@ -67,7 +65,7 @@ export default class Job extends Client {
|
|
|
67
65
|
|
|
68
66
|
async pause(
|
|
69
67
|
query?: Teraslice.SearchQuery,
|
|
70
|
-
searchOptions:
|
|
68
|
+
searchOptions: RequestOptions = {}
|
|
71
69
|
): Promise<Teraslice.ApiPausedResponse> {
|
|
72
70
|
const options = this.makeOptions(query, searchOptions);
|
|
73
71
|
return this.post(`/jobs/${this._jobId}/_pause`, null, options);
|
|
@@ -75,7 +73,7 @@ export default class Job extends Client {
|
|
|
75
73
|
|
|
76
74
|
async resume(
|
|
77
75
|
query?: Teraslice.SearchQuery,
|
|
78
|
-
searchOptions:
|
|
76
|
+
searchOptions: RequestOptions = {}
|
|
79
77
|
): Promise<Teraslice.ApiResumeResponse> {
|
|
80
78
|
const options = this.makeOptions(query, searchOptions);
|
|
81
79
|
return this.post(`/jobs/${this._jobId}/_resume`, null, options);
|
|
@@ -83,7 +81,7 @@ export default class Job extends Client {
|
|
|
83
81
|
|
|
84
82
|
async recover(
|
|
85
83
|
query: Teraslice.RecoverQuery = {},
|
|
86
|
-
searchOptions:
|
|
84
|
+
searchOptions: RequestOptions = {}
|
|
87
85
|
): Promise<Teraslice.ApiJobCreateResponse> {
|
|
88
86
|
const options = this.makeOptions(query, searchOptions);
|
|
89
87
|
return this.post(`/jobs/${this._jobId}/_recover`, null, options);
|
|
@@ -101,6 +99,10 @@ export default class Job extends Client {
|
|
|
101
99
|
return this.update(body);
|
|
102
100
|
}
|
|
103
101
|
|
|
102
|
+
async deleteJob(): Promise<Teraslice.JobConfig> {
|
|
103
|
+
return this.delete(`/jobs/${this._jobId}`);
|
|
104
|
+
}
|
|
105
|
+
|
|
104
106
|
async execution(requestOptions: RequestOptions = {}): Promise<Teraslice.ExecutionConfig> {
|
|
105
107
|
return this.get(`/jobs/${this._jobId}/ex`, requestOptions);
|
|
106
108
|
}
|
|
@@ -132,7 +134,9 @@ export default class Job extends Client {
|
|
|
132
134
|
const startTime = Date.now();
|
|
133
135
|
const options = Object.assign({}, {
|
|
134
136
|
responseType: 'json',
|
|
135
|
-
timeout:
|
|
137
|
+
timeout: {
|
|
138
|
+
request: intervalMs < 1000 ? 1000 : intervalMs
|
|
139
|
+
},
|
|
136
140
|
}, requestOptions);
|
|
137
141
|
let exId: string;
|
|
138
142
|
|
|
@@ -188,7 +192,7 @@ export default class Job extends Client {
|
|
|
188
192
|
|
|
189
193
|
async errors(
|
|
190
194
|
query: Teraslice.SearchQuery = {},
|
|
191
|
-
searchOptions:
|
|
195
|
+
searchOptions: RequestOptions = {}
|
|
192
196
|
): Promise<Teraslice.ErrorRecord[]> {
|
|
193
197
|
return this.get(`/jobs/${this._jobId}/errors`, this.makeOptions(query, searchOptions));
|
|
194
198
|
}
|
package/src/jobs.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { TSError } from '@terascope/utils';
|
|
2
2
|
import { Teraslice } from '@terascope/types';
|
|
3
3
|
import autoBind from 'auto-bind';
|
|
4
4
|
import Client from './client.js';
|
|
5
5
|
import Job from './job.js';
|
|
6
|
-
import {
|
|
6
|
+
import { RequestOptions, ClientConfig } from './interfaces.js';
|
|
7
7
|
|
|
8
8
|
export default class Jobs extends Client {
|
|
9
9
|
constructor(config: ClientConfig) {
|
|
@@ -26,10 +26,9 @@ export default class Jobs extends Client {
|
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
async list(
|
|
29
|
-
|
|
30
|
-
searchOptions:
|
|
29
|
+
query?: Teraslice.JobSearchParams,
|
|
30
|
+
searchOptions: RequestOptions = {}
|
|
31
31
|
): Promise<Teraslice.JobConfig[]> {
|
|
32
|
-
const query = _parseListOptions(status);
|
|
33
32
|
return this.get('/jobs', this.makeOptions(query, searchOptions));
|
|
34
33
|
}
|
|
35
34
|
|
|
@@ -41,10 +40,3 @@ export default class Jobs extends Client {
|
|
|
41
40
|
return new Job(this._config, jobId);
|
|
42
41
|
}
|
|
43
42
|
}
|
|
44
|
-
|
|
45
|
-
function _parseListOptions(options?: Teraslice.JobListStatusQuery): Teraslice.JobSearchParams {
|
|
46
|
-
// support legacy
|
|
47
|
-
if (!options) return { status: '*' };
|
|
48
|
-
if (isString(options)) return { status: options };
|
|
49
|
-
return options;
|
|
50
|
-
}
|
package/test/assets-spec.ts
CHANGED
|
@@ -73,7 +73,7 @@ describe('Teraslice Assets', () => {
|
|
|
73
73
|
// See issue: https://github.com/nock/nock/issues/2595
|
|
74
74
|
// teraslice/e2e/test/cases/assets/simple-spec.ts covers this test case
|
|
75
75
|
// eslint-disable-next-line jest/no-disabled-tests
|
|
76
|
-
|
|
76
|
+
describe.skip('when called with a stream', () => {
|
|
77
77
|
const testFilePath = path.join(dirname, 'fixtures', 'test.txt');
|
|
78
78
|
const contents = fs.readFileSync(testFilePath, 'utf-8');
|
|
79
79
|
const idResponse: AssetIDResponse = { _id: 'some-asset-id' };
|
package/test/client-spec.ts
CHANGED
|
@@ -84,9 +84,7 @@ describe('Teraslice Client', () => {
|
|
|
84
84
|
it('should resolve with the response from the server', async () => {
|
|
85
85
|
const results = await client.get('/hello', {
|
|
86
86
|
headers: { 'Some-Header': 'yes' },
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
query: { hello: true }
|
|
87
|
+
searchParams: { hello: 'true' }
|
|
90
88
|
});
|
|
91
89
|
expect(results).toEqual({ example: 'hello' });
|
|
92
90
|
});
|
|
@@ -100,9 +98,7 @@ describe('Teraslice Client', () => {
|
|
|
100
98
|
});
|
|
101
99
|
|
|
102
100
|
it('should resolve with the response from the server', async () => {
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
const results = await client.get('/hello', { query: { hello: true } });
|
|
101
|
+
const results = await client.get('/hello', { searchParams: { hello: 'true' } });
|
|
106
102
|
expect(results).toEqual({ example: 'hello' });
|
|
107
103
|
});
|
|
108
104
|
});
|
|
@@ -411,9 +407,7 @@ describe('Teraslice Client', () => {
|
|
|
411
407
|
});
|
|
412
408
|
|
|
413
409
|
it('should resolve with the response from the server', async () => {
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
const results = await client.delete('/hello', { query: { hello: true } });
|
|
410
|
+
const results = await client.delete('/hello', { searchParams: { hello: 'true' } });
|
|
417
411
|
expect(results).toEqual(response);
|
|
418
412
|
});
|
|
419
413
|
});
|
package/test/executions-spec.ts
CHANGED
|
@@ -252,7 +252,7 @@ describe('Teraslice Executions', () => {
|
|
|
252
252
|
});
|
|
253
253
|
|
|
254
254
|
it('should resolve json results from Teraslice', async () => {
|
|
255
|
-
const results = await executions.errors('foo', { from: 10
|
|
255
|
+
const results = await executions.errors('foo', { from: 10 });
|
|
256
256
|
expect(results).toEqual(errors);
|
|
257
257
|
});
|
|
258
258
|
});
|
package/test/job-spec.ts
CHANGED
|
@@ -325,7 +325,7 @@ describe('Teraslice Job', () => {
|
|
|
325
325
|
_context: 'job',
|
|
326
326
|
job_id: 'some-job-id',
|
|
327
327
|
_created: 'hello',
|
|
328
|
-
_updated: 'hello'
|
|
328
|
+
_updated: 'hello'
|
|
329
329
|
};
|
|
330
330
|
|
|
331
331
|
beforeEach(() => {
|
|
@@ -360,7 +360,7 @@ describe('Teraslice Job', () => {
|
|
|
360
360
|
_context: 'job',
|
|
361
361
|
job_id: 'some-job-id',
|
|
362
362
|
_created: 'hello',
|
|
363
|
-
_updated: 'hello'
|
|
363
|
+
_updated: 'hello'
|
|
364
364
|
};
|
|
365
365
|
|
|
366
366
|
const expected = {
|
|
@@ -383,6 +383,21 @@ describe('Teraslice Job', () => {
|
|
|
383
383
|
});
|
|
384
384
|
});
|
|
385
385
|
|
|
386
|
+
describe('->deleteJob', () => {
|
|
387
|
+
describe('when called', () => {
|
|
388
|
+
beforeEach(() => {
|
|
389
|
+
scope.delete('/jobs/some-other-job-id')
|
|
390
|
+
.reply(200, { job_id: 'some-other-job-id', _deleted: true });
|
|
391
|
+
});
|
|
392
|
+
|
|
393
|
+
it('should resolve json results from Teraslice', async () => {
|
|
394
|
+
const job = new Job({ baseUrl }, 'some-other-job-id');
|
|
395
|
+
const results = await job.deleteJob();
|
|
396
|
+
expect(results).toEqual({ job_id: 'some-other-job-id', _deleted: true });
|
|
397
|
+
});
|
|
398
|
+
});
|
|
399
|
+
});
|
|
400
|
+
|
|
386
401
|
describe('->exId', () => {
|
|
387
402
|
describe('when called with nothing', () => {
|
|
388
403
|
beforeEach(() => {
|
package/test/jobs-spec.ts
CHANGED
|
@@ -170,7 +170,6 @@ describe('Teraslice Jobs', () => {
|
|
|
170
170
|
describe('when called with nothing', () => {
|
|
171
171
|
beforeEach(() => {
|
|
172
172
|
scope.get('/jobs')
|
|
173
|
-
.query({ status: '*' })
|
|
174
173
|
.reply(200, list);
|
|
175
174
|
});
|
|
176
175
|
|
|
@@ -180,22 +179,9 @@ describe('Teraslice Jobs', () => {
|
|
|
180
179
|
});
|
|
181
180
|
});
|
|
182
181
|
|
|
183
|
-
describe('when called with a
|
|
184
|
-
beforeEach(() => {
|
|
185
|
-
scope.get('/jobs')
|
|
186
|
-
.query({ status: Teraslice.ExecutionStatusEnum.running })
|
|
187
|
-
.reply(200, list);
|
|
188
|
-
});
|
|
189
|
-
|
|
190
|
-
it('should resolve json result from Teraslice', async () => {
|
|
191
|
-
const results = await jobs.list(Teraslice.ExecutionStatusEnum.running);
|
|
192
|
-
expect(results).toEqual(list);
|
|
193
|
-
});
|
|
194
|
-
});
|
|
195
|
-
|
|
196
|
-
describe('when called with an object', () => {
|
|
182
|
+
describe('when called with a query and search objects', () => {
|
|
197
183
|
const searchOptions = { headers: { 'Some-Header': 'yes' } };
|
|
198
|
-
const queryOptions = {
|
|
184
|
+
const queryOptions = { active: true, size: 10 };
|
|
199
185
|
|
|
200
186
|
beforeEach(() => {
|
|
201
187
|
scope.get('/jobs')
|