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.
Files changed (70) hide show
  1. package/.eslintrc.json +14 -0
  2. package/dist/src/assets.d.ts +2 -2
  3. package/dist/src/assets.d.ts.map +1 -1
  4. package/dist/src/assets.js +20 -26
  5. package/dist/src/assets.js.map +1 -1
  6. package/dist/src/client.d.ts +1 -1
  7. package/dist/src/client.d.ts.map +1 -1
  8. package/dist/src/client.js +24 -27
  9. package/dist/src/client.js.map +1 -1
  10. package/dist/src/cluster.d.ts +1 -1
  11. package/dist/src/cluster.d.ts.map +1 -1
  12. package/dist/src/cluster.js +8 -14
  13. package/dist/src/cluster.js.map +1 -1
  14. package/dist/src/ex.d.ts +3 -3
  15. package/dist/src/ex.d.ts.map +1 -1
  16. package/dist/src/ex.js +22 -27
  17. package/dist/src/ex.js.map +1 -1
  18. package/dist/src/executions.d.ts +4 -4
  19. package/dist/src/executions.d.ts.map +1 -1
  20. package/dist/src/executions.js +13 -19
  21. package/dist/src/executions.js.map +1 -1
  22. package/dist/src/index.d.ts +8 -8
  23. package/dist/src/index.d.ts.map +1 -1
  24. package/dist/src/index.js +18 -39
  25. package/dist/src/index.js.map +1 -1
  26. package/dist/src/interfaces.js +1 -2
  27. package/dist/src/job.d.ts +6 -6
  28. package/dist/src/job.d.ts.map +1 -1
  29. package/dist/src/job.js +23 -28
  30. package/dist/src/job.js.map +1 -1
  31. package/dist/src/jobs.d.ts +5 -5
  32. package/dist/src/jobs.d.ts.map +1 -1
  33. package/dist/src/jobs.js +9 -15
  34. package/dist/src/jobs.js.map +1 -1
  35. package/dist/test/assets-spec.js +13 -16
  36. package/dist/test/assets-spec.js.map +1 -1
  37. package/dist/test/client-spec.js +10 -15
  38. package/dist/test/client-spec.js.map +1 -1
  39. package/dist/test/cluster-spec.js +6 -11
  40. package/dist/test/cluster-spec.js.map +1 -1
  41. package/dist/test/ex-spec.js +60 -65
  42. package/dist/test/ex-spec.js.map +1 -1
  43. package/dist/test/executions-spec.js +8 -13
  44. package/dist/test/executions-spec.js.map +1 -1
  45. package/dist/test/job-spec.js +82 -87
  46. package/dist/test/job-spec.js.map +1 -1
  47. package/dist/test/jobs-spec.js +14 -19
  48. package/dist/test/jobs-spec.js.map +1 -1
  49. package/dist/tsconfig.tsbuildinfo +1 -1
  50. package/examples/cluster.js +5 -5
  51. package/examples/list.js +8 -9
  52. package/examples/submit.js +15 -15
  53. package/jest.config.js +43 -2
  54. package/package.json +5 -4
  55. package/src/assets.ts +3 -3
  56. package/src/client.ts +3 -3
  57. package/src/cluster.ts +2 -2
  58. package/src/ex.ts +3 -3
  59. package/src/executions.ts +4 -4
  60. package/src/index.ts +8 -8
  61. package/src/job.ts +9 -9
  62. package/src/jobs.ts +5 -5
  63. package/test/assets-spec.ts +7 -4
  64. package/test/client-spec.ts +2 -2
  65. package/test/cluster-spec.ts +1 -1
  66. package/test/ex-spec.ts +1 -1
  67. package/test/executions-spec.ts +2 -2
  68. package/test/job-spec.ts +4 -4
  69. package/test/jobs-spec.ts +3 -3
  70. package/tsconfig.json +7 -1
@@ -1,8 +1,5 @@
1
- 'use strict';
2
-
3
1
  /* eslint-disable no-console */
4
-
5
- const { TerasliceClient } = require('teraslice-client-js');
2
+ import { TerasliceClient } from 'teraslice-client-js';
6
3
 
7
4
  const client = new TerasliceClient({
8
5
  host: 'http://localhost:5678'
@@ -27,16 +24,19 @@ const exampleJob = {
27
24
  ]
28
25
  };
29
26
 
30
- client.jobs.submit(exampleJob)
31
- .then((job) => {
32
- console.log(job.id());
27
+ async function main() {
28
+ const job = await client.jobs.submit(exampleJob);
29
+
30
+ console.log(job.id());
31
+
32
+ const job2 = client.jobs.wrap(job.id());
33
+ const status = await job2.status();
34
+
35
+ console.log(status);
33
36
 
34
- const job2 = client.jobs.wrap(job.id());
35
- job2.status().then(console.log);
37
+ console.log('Waiting for the job to finish.');
38
+ await job2.waitForStatus('completed');
39
+ console.log('Job completed');
40
+ }
36
41
 
37
- console.log('Waiting for the job to finish.');
38
- job2.waitForStatus('completed')
39
- .then(() => {
40
- console.log('Job completed');
41
- });
42
- });
42
+ main();
package/jest.config.js CHANGED
@@ -1,3 +1,44 @@
1
- 'use strict';
1
+ import { fileURLToPath } from 'node:url';
2
+ import path from 'node:path';
2
3
 
3
- module.exports = require('../../jest.config.base')(__dirname);
4
+ const dirPath = fileURLToPath(new URL('.', import.meta.url));
5
+ const configModulePath = path.join(dirPath, '../../jest.config.base.js');
6
+
7
+ const module = await import(configModulePath);
8
+
9
+ const config = module.default(dirPath);
10
+
11
+ config.extensionsToTreatAsEsm = ['.ts'];
12
+ config.moduleNameMapper = {
13
+ '^(\\.{1,2}/.*)\\.js$': '$1',
14
+ };
15
+ config.testTimeout = 60 * 1000;
16
+
17
+ // using swc for some reason throws rust file not found errors,
18
+ // seems like a bug on their end, hope to change back later
19
+ config.transform = {};
20
+ config.transform['^.+\\.(t|j)sx?$'] = ['@swc/jest', {
21
+ jsc: {
22
+ loose: true,
23
+ parser: {
24
+ syntax: 'typescript',
25
+ tsx: false,
26
+ decorators: true
27
+ },
28
+ transform: {
29
+ legacyDecorator: true,
30
+ decoratorMetadata: true
31
+ },
32
+ target: 'esnext'
33
+ },
34
+ module: {
35
+ type: 'es6',
36
+ strictMode: false,
37
+ noInterop: false,
38
+ ignoreDynamic: true
39
+ }
40
+ }];
41
+
42
+ config.transformIgnorePatterns = [];
43
+ config.preset = '';
44
+ export default config;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "teraslice-client-js",
3
3
  "displayName": "Teraslice Client (JavaScript)",
4
- "version": "0.60.1",
4
+ "version": "0.60.3",
5
5
  "description": "A Node.js client for teraslice jobs, assets, and cluster references.",
6
6
  "keywords": [
7
7
  "elasticsearch",
@@ -17,6 +17,7 @@
17
17
  "license": "MIT",
18
18
  "author": "Terascope, LLC <info@terascope.io>",
19
19
  "sideEffects": false,
20
+ "type": "module",
20
21
  "main": "dist/src/index.js",
21
22
  "typings": "dist/src/index.d.ts",
22
23
  "directories": {
@@ -31,8 +32,8 @@
31
32
  "test:watch": "ts-scripts test --watch . --"
32
33
  },
33
34
  "dependencies": {
34
- "@terascope/types": "^0.17.1",
35
- "@terascope/utils": "^0.59.1",
35
+ "@terascope/types": "^0.17.3",
36
+ "@terascope/utils": "^0.59.3",
36
37
  "auto-bind": "^4.0.0",
37
38
  "got": "^11.8.3"
38
39
  },
@@ -50,6 +51,6 @@
50
51
  "srcMain": "src/index.ts",
51
52
  "terascope": {
52
53
  "enableTypedoc": true,
53
- "testSuite": "unit"
54
+ "testSuite": "unit-esm"
54
55
  }
55
56
  }
package/src/assets.ts CHANGED
@@ -1,9 +1,9 @@
1
1
  import { TSError, isEmpty, isString } from '@terascope/utils';
2
2
  import { Teraslice } from '@terascope/types';
3
- import path from 'path';
3
+ import path from 'node:path';
4
4
  import autoBind from 'auto-bind';
5
- import Client from './client';
6
- import { PostData, SearchOptions, ClientConfig } from './interfaces';
5
+ import Client from './client.js';
6
+ import { PostData, SearchOptions, ClientConfig } from './interfaces.js';
7
7
 
8
8
  export default class Assets extends Client {
9
9
  constructor(config: ClientConfig) {
package/src/client.ts CHANGED
@@ -3,10 +3,10 @@ import {
3
3
  isTest, trimStart, tryParseJSON,
4
4
  withoutNil,
5
5
  } from '@terascope/utils';
6
- import { STATUS_CODES } from 'http';
7
- import { URL } from 'url';
6
+ import { STATUS_CODES } from 'node:http';
7
+ import { URL } from 'node:url';
8
8
  import got, { Got } from 'got';
9
- import { ClientConfig, SearchOptions, RequestOptions } from './interfaces';
9
+ import { ClientConfig, SearchOptions, RequestOptions } from './interfaces.js';
10
10
 
11
11
  export default class Client {
12
12
  private readonly _apiVersion: string;
package/src/cluster.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  import { startsWith } from '@terascope/utils';
2
2
  import { Teraslice } from '@terascope/types';
3
- import util from 'util';
3
+ import util from 'node:util';
4
4
  import autoBind from 'auto-bind';
5
- import Client from './client';
5
+ import Client from './client.js';
6
6
 
7
7
  function _deprecateSlicerName(fn: () => Promise<Teraslice.ExecutionList>) {
8
8
  const msg = 'api endpoints with /slicers are being deprecated in favor of the semantically correct term of /controllers';
package/src/ex.ts CHANGED
@@ -4,8 +4,8 @@ import {
4
4
  } from '@terascope/utils';
5
5
  import { Teraslice } from '@terascope/types';
6
6
  import autoBind from 'auto-bind';
7
- import Client from './client';
8
- import { ClientConfig, SearchOptions, RequestOptions } from './interfaces';
7
+ import Client from './client.js';
8
+ import { ClientConfig, SearchOptions, RequestOptions } from './interfaces.js';
9
9
 
10
10
  export default class Ex extends Client {
11
11
  private readonly _exId: string;
@@ -74,7 +74,7 @@ export default class Ex extends Client {
74
74
  return this.get(`/ex/${this._exId}/controller`, requestOptions);
75
75
  }
76
76
 
77
- async config(requestOptions: RequestOptions = {}): Promise<Teraslice.ExecutionRecord> {
77
+ async config(requestOptions: RequestOptions = {}): Promise<Teraslice.ExecutionConfig> {
78
78
  return this.get(`/ex/${this._exId}`, requestOptions);
79
79
  }
80
80
 
package/src/executions.ts CHANGED
@@ -3,8 +3,8 @@ import {
3
3
  } from '@terascope/utils';
4
4
  import { Teraslice } from '@terascope/types';
5
5
  import autoBind from 'auto-bind';
6
- import Client from './client';
7
- import Ex from './ex';
6
+ import Client from './client.js';
7
+ import Ex from './ex.js';
8
8
 
9
9
  import { ClientConfig, SearchOptions } from './interfaces';
10
10
 
@@ -19,7 +19,7 @@ export default class Executions extends Client {
19
19
  /**
20
20
  * Similar to jobs.submit but returns an instance of Ex not a Job
21
21
  */
22
- async submit(jobSpec: Teraslice.JobConfig, shouldNotStart?: boolean): Promise<Ex> {
22
+ async submit(jobSpec: Teraslice.JobConfigParams, shouldNotStart?: boolean): Promise<Ex> {
23
23
  if (!jobSpec) {
24
24
  throw new TSError('Submit requires a jobSpec', {
25
25
  statusCode: 400
@@ -37,7 +37,7 @@ export default class Executions extends Client {
37
37
  return this.wrap(job.ex_id);
38
38
  }
39
39
 
40
- async list(options?: ListOptions): Promise<Teraslice.ExecutionRecord[]> {
40
+ async list(options?: ListOptions): Promise<Teraslice.ExecutionConfig[]> {
41
41
  const query = _parseListOptions(options);
42
42
  return this.get('/ex', { searchParams: query } as SearchOptions);
43
43
  }
package/src/index.ts CHANGED
@@ -1,11 +1,11 @@
1
- import Assets from './assets';
2
- import Cluster from './cluster';
3
- import Ex from './ex';
4
- import Executions from './executions';
5
- import Job from './job';
6
- import Jobs from './jobs';
1
+ import Assets from './assets.js';
2
+ import Cluster from './cluster.js';
3
+ import Ex from './ex.js';
4
+ import Executions from './executions.js';
5
+ import Job from './job.js';
6
+ import Jobs from './jobs.js';
7
7
 
8
- import * as i from './interfaces';
8
+ import * as i from './interfaces.js';
9
9
 
10
10
  class TerasliceClient {
11
11
  config?: i.ClientConfig;
@@ -27,7 +27,7 @@ class TerasliceClient {
27
27
  }
28
28
  }
29
29
 
30
- export * from './interfaces';
30
+ export * from './interfaces.js';
31
31
  export {
32
32
  TerasliceClient,
33
33
  Assets,
package/src/job.ts CHANGED
@@ -1,4 +1,4 @@
1
- import util from 'util';
1
+ import util from 'node:util';
2
2
  import autoBind from 'auto-bind';
3
3
  import {
4
4
  pDelay, isString, toString,
@@ -9,8 +9,8 @@ import {
9
9
  ClientConfig,
10
10
  SearchOptions,
11
11
  RequestOptions
12
- } from './interfaces';
13
- import Client from './client';
12
+ } from './interfaces.js';
13
+ import Client from './client.js';
14
14
 
15
15
  /*
16
16
  * This is basically a wrapper around the job_id that acts as a proxy
@@ -89,19 +89,19 @@ export default class Job extends Client {
89
89
  return this.post(`/jobs/${this._jobId}/_recover`, null, options);
90
90
  }
91
91
 
92
- async update(jobSpec: Teraslice.JobRecord): Promise<Teraslice.JobRecord> {
92
+ async update(jobSpec: Teraslice.JobConfig): Promise<Teraslice.JobConfig> {
93
93
  return this.put(`/jobs/${this._jobId}`, jobSpec);
94
94
  }
95
95
 
96
96
  async updatePartial(
97
- jobSpec: Partial<Teraslice.JobRecord>
98
- ): Promise<Teraslice.JobRecord> {
97
+ jobSpec: Partial<Teraslice.JobConfig>
98
+ ): Promise<Teraslice.JobConfig> {
99
99
  const current = await this.config();
100
- const body: Teraslice.JobRecord = Object.assign({}, current, jobSpec);
100
+ const body: Teraslice.JobConfig = Object.assign({}, current, jobSpec);
101
101
  return this.update(body);
102
102
  }
103
103
 
104
- async execution(requestOptions: RequestOptions = {}): Promise<Teraslice.ExecutionRecord> {
104
+ async execution(requestOptions: RequestOptions = {}): Promise<Teraslice.ExecutionConfig> {
105
105
  return this.get(`/jobs/${this._jobId}/ex`, requestOptions);
106
106
  }
107
107
 
@@ -182,7 +182,7 @@ export default class Job extends Client {
182
182
  return checkStatus();
183
183
  }
184
184
 
185
- async config(requestOptions: RequestOptions = {}): Promise<Teraslice.JobRecord> {
185
+ async config(requestOptions: RequestOptions = {}): Promise<Teraslice.JobConfig> {
186
186
  return this.get(`/jobs/${this._jobId}`, requestOptions);
187
187
  }
188
188
 
package/src/jobs.ts CHANGED
@@ -1,9 +1,9 @@
1
1
  import { isString, TSError } from '@terascope/utils';
2
2
  import { Teraslice } from '@terascope/types';
3
3
  import autoBind from 'auto-bind';
4
- import Client from './client';
5
- import Job from './job';
6
- import { SearchOptions, ClientConfig } from './interfaces';
4
+ import Client from './client.js';
5
+ import Job from './job.js';
6
+ import { SearchOptions, ClientConfig } from './interfaces.js';
7
7
 
8
8
  export default class Jobs extends Client {
9
9
  constructor(config: ClientConfig) {
@@ -11,7 +11,7 @@ export default class Jobs extends Client {
11
11
  autoBind(this);
12
12
  }
13
13
 
14
- async submit(jobSpec: Teraslice.JobConfig, shouldNotStart?: boolean): Promise<Job> {
14
+ async submit(jobSpec: Teraslice.JobConfigParams, shouldNotStart?: boolean): Promise<Job> {
15
15
  if (!jobSpec) {
16
16
  throw new TSError('Submit requires a jobSpec', {
17
17
  statusCode: 400
@@ -28,7 +28,7 @@ export default class Jobs extends Client {
28
28
  async list(
29
29
  status?: Teraslice.JobListStatusQuery,
30
30
  searchOptions: SearchOptions = {}
31
- ): Promise<Teraslice.JobRecord[]> {
31
+ ): Promise<Teraslice.JobConfig[]> {
32
32
  const query = _parseListOptions(status);
33
33
  return this.get('/jobs', this.makeOptions(query, searchOptions));
34
34
  }
@@ -1,8 +1,11 @@
1
1
  import nock from 'nock';
2
- import path from 'path';
3
- import fs from 'fs';
2
+ import path from 'node:path';
3
+ import { fileURLToPath } from 'node:url';
4
+ import fs from 'node:fs';
4
5
  import { AssetRecord, AssetIDResponse } from '@terascope/types';
5
- import Assets from '../src/assets';
6
+ import Assets from '../src/assets.js';
7
+
8
+ const dirname = path.dirname(fileURLToPath(import.meta.url));
6
9
 
7
10
  describe('Teraslice Assets', () => {
8
11
  let assets: Assets;
@@ -71,7 +74,7 @@ describe('Teraslice Assets', () => {
71
74
  // teraslice/e2e/test/cases/assets/simple-spec.ts covers this test case
72
75
  // eslint-disable-next-line jest/no-disabled-tests
73
76
  xdescribe('when called with a stream', () => {
74
- const testFilePath = path.join(__dirname, 'fixtures', 'test.txt');
77
+ const testFilePath = path.join(dirname, 'fixtures', 'test.txt');
75
78
  const contents = fs.readFileSync(testFilePath, 'utf-8');
76
79
  const idResponse: AssetIDResponse = { _id: 'some-asset-id' };
77
80
 
@@ -1,6 +1,6 @@
1
1
  import nock from 'nock';
2
- import TerasliceClient from '../src';
3
- import Client from '../src/client';
2
+ import TerasliceClient from '../src/index.js';
3
+ import Client from '../src/client.js';
4
4
 
5
5
  describe('Teraslice Client', () => {
6
6
  describe('when using the main export function', () => {
@@ -1,5 +1,5 @@
1
1
  import nock from 'nock';
2
- import Cluster from '../src/cluster';
2
+ import Cluster from '../src/cluster.js';
3
3
 
4
4
  describe('Teraslice Cluster', () => {
5
5
  let cluster: Cluster;
package/test/ex-spec.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import nock from 'nock';
2
2
  import { Teraslice } from '@terascope/types';
3
- import Ex from '../src/ex';
3
+ import Ex from '../src/ex.js';
4
4
 
5
5
  describe('Teraslice Ex', () => {
6
6
  let scope: nock.Scope;
@@ -1,6 +1,6 @@
1
1
  import nock from 'nock';
2
- import Ex from '../src/ex';
3
- import Executions from '../src/executions';
2
+ import Ex from '../src/ex.js';
3
+ import Executions from '../src/executions.js';
4
4
 
5
5
  describe('Teraslice Executions', () => {
6
6
  let executions: Executions;
package/test/job-spec.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import nock from 'nock';
2
2
  import { Teraslice } from '@terascope/types';
3
- import Job from '../src/job';
3
+ import Job from '../src/job.js';
4
4
 
5
5
  describe('Teraslice Job', () => {
6
6
  let scope: nock.Scope;
@@ -76,7 +76,7 @@ describe('Teraslice Job', () => {
76
76
  };
77
77
  const date = new Date().toISOString();
78
78
 
79
- const executionResults: Teraslice.ExecutionRecord[] = [
79
+ const executionResults: Teraslice.ExecutionConfig[] = [
80
80
  {
81
81
  active: true,
82
82
  analytics: false,
@@ -308,7 +308,7 @@ describe('Teraslice Job', () => {
308
308
 
309
309
  describe('->update', () => {
310
310
  describe('when updating the whole config', () => {
311
- const body: Teraslice.JobRecord = {
311
+ const body: Teraslice.JobConfig = {
312
312
  name: 'hello',
313
313
  apis: [],
314
314
  operations: [],
@@ -343,7 +343,7 @@ describe('Teraslice Job', () => {
343
343
 
344
344
  describe('->updatePartial', () => {
345
345
  describe('when updating a partial config', () => {
346
- const body: Teraslice.JobRecord = {
346
+ const body: Teraslice.JobConfig = {
347
347
  name: 'hello',
348
348
  apis: [],
349
349
  operations: [],
package/test/jobs-spec.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  import 'jest-extended';
2
2
  import nock from 'nock';
3
3
  import { Teraslice } from '@terascope/types';
4
- import Job from '../src/job';
5
- import Jobs from '../src/jobs';
4
+ import Job from '../src/job.js';
5
+ import Jobs from '../src/jobs.js';
6
6
 
7
7
  describe('Teraslice Jobs', () => {
8
8
  let jobs: Jobs;
@@ -22,7 +22,7 @@ describe('Teraslice Jobs', () => {
22
22
 
23
23
  const date = new Date().toISOString();
24
24
 
25
- const list: Teraslice.JobRecord[] = [
25
+ const list: Teraslice.JobConfig[] = [
26
26
  {
27
27
  job_id: 'some-random-job-id',
28
28
  active: true,
package/tsconfig.json CHANGED
@@ -1,8 +1,14 @@
1
1
  {
2
2
  "extends": "../../tsconfig",
3
3
  "compilerOptions": {
4
+ "target": "ESNext",
5
+ "module": "ESNext",
4
6
  "outDir": "dist",
5
7
  "rootDir": "."
6
8
  },
7
- "include": ["src", "test"]
9
+ "include": [
10
+ "src",
11
+ "test",
12
+ "test/fixtures/test.txt"
13
+ ]
8
14
  }